Received: (at 80740) by debbugs.gnu.org; 9 May 2026 03:33:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 08 23:33:22 2026 Received: from localhost ([127.0.0.1]:47542 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wLYRM-0004Nt-Km for submit <at> debbugs.gnu.org; Fri, 08 May 2026 23:33:21 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]:61677) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>) id 1wLYRI-0004LO-Bo for 80740 <at> debbugs.gnu.org; Fri, 08 May 2026 23:33:17 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-36608b2f2dcso1717429a91.2 for <80740 <at> debbugs.gnu.org>; Fri, 08 May 2026 20:33:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778297595; cv=none; d=google.com; s=arc-20240605; b=HtOAtyYj44gT6CQyPB7nKhK8UhobPwZM7tR9mkkaXTFWL4d0GE+wzSs8tz0T8dRUly u2xxUUnFc/c4wAWKCs+ChoLvVqFl9fpjKNxfmKPoV92QnXTEq9mIppaO+75lojQxQLaM lh9CaG2iVggG3qWQHsRInEpTy7J7xsZ4Lkqt/dhzYWMAKZLVQrXasmi/2K0mZvmdeJWv WZ5ZWCKgxw5OZgzUIanbCXyiM1Q2lEMIJHPV2IGxbhUVhnPdwNBO7sKZbD7sideHCNXG 0Kg26MY1CL1In/PGiB//drmS29o0ZclWjBWqrA+fGC6Jasjq0ITVfyLRCtn8AQAu20Im dUag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=7MFLC/Sh1wHhKPAhP/+GmPln3lqFqT4IhS3JdpK41Kg=; fh=ipaQtRmGUg6syV2TpH2pZBHuJumMUV5trNobw1qzXGg=; b=Q77wOlXI01VkThVzppdRGybmiV9/wMYuKciVzrklE+XLAvtumApAocqqvpYKxhv6ce nY+8kIZLyN9a5WXlj9NwMEEuWFKqCVyYTprU2Us+1nxvTcR2XuTmgZWiDvc6kX1AxOaC QEd1WGNkwTe18h69T2zRMX7i2arI5wdjfdP5aVhsvCT3BdZx0mAkYKWVGNvwjjlxdgh0 o60OR8WWYQy5F21t36nhoDXD346trhfvihgg1ghtZGlVDcnbAwQE1QdACFIEfS1MHl8p 2q96pu6FuYVGMWjMUXDWPzelvXHvrnuccf/rBE4XPkj02PGMylga+c5Po+ygF7G1sF1R LpCQ==; 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=1778297595; x=1778902395; darn=debbugs.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=7MFLC/Sh1wHhKPAhP/+GmPln3lqFqT4IhS3JdpK41Kg=; b=HeOWPhhH5ZX61XQrmW0IuptxAHKDLSvxdM1KIdmeuHUyd/Q63LoGUpObpTFOKSoj7I RYBAvn6e0FX3Ts9NBVcheno6kTb/DMuZAxYQSWsXobWZB64FMujti2qcv9l5dggkX0tV 4+7/oCNgtmEsxeoj7GfuMCrb73D0LAzWhgms1CNeBl/5OQcZpduknw+VxyYbOS8/EmkU WMwp5DN27dOrFgC4zBNLz/8XBOG/2F5niWV994PW0apYWQVASyfZuawGJZIXNGLmFS57 1IIkNXvQwzGdXlf8L/BoGZaGpFZ/fUCmoHPB7NWaWkxcbrxjULAkUFNIW27Drr3qjEm0 sMhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778297595; x=1778902395; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7MFLC/Sh1wHhKPAhP/+GmPln3lqFqT4IhS3JdpK41Kg=; b=Z1vJHHdr0gCbHyYSNFlei4OiFgBtlKtmWbuIxpeJyex93x5t0Repx3XiDIYCNpkzW5 Qz+8eOw+xWzPxw/mkyPCif2Vd2gNb1qeLItgYWbTpfj9JaCPqDUtWS3G3Pv+6ATAsHQS CqjpU3qnTZsI5EfurlAxmL2WyzSUkEtIfnand9anihYNNPtbTol8bnsg2Ee1wezADWBX Yge/TgRJyWSxlPj9Zv4UOY/qfAczngho5jBzQ9l8BnpT1cSkfTa6fWzNXdVAFogvnIEa WpPt1CIJidlpfD8Mqz4WGmQI6k0H6wWXOoEPVDZ2AygVufSU8pbDulSa7RdKvufLaobB N3Wg== X-Gm-Message-State: AOJu0Yz6EHdVXY7ZEbDW/IZ/ZP7+u9hcWshD9Bg7FhYBQu1FUOszjYsi o1ZtQs+Hy4M9i2g8FUTuzIUiMS60DTc8SmSYTZ51sfwiUY3ju+klbUlJzp4gxPBY7elQcoScRuk x04q0rUy/rUcPAn94mzi5AZyZ3QA/0Bt0ATK/8gM= X-Gm-Gg: Acq92OEZ/IIdOWxDJGBgdMBXI0c243FDrfwax/mSHYVSdygyllz7OSb++q4qOsgf56/ rNHv2xCWF/Sc8tJ3YBqqNR1vG+Tc/zKF/asxxzPJXrwvyOuSc9Rab95nPU2wwnPA5Lxt2tpmbVJ QQFJgsUrBSblqtrQ/phAmh5kLGUOHOIzPDa04sz3Gm1xAwGS4TeN4AxBCPopoayoLca759m7LTI KQq4VJfKn90LpYTTYWQPNxoIeFAtf4xQJdj8X0+fwWJoDU4qSHnze9gG3dvVZqoDPbLVsgAlzyq 2r/2W7dpzOtP02NtS295t9dUJrAq9S8hf5S9s8oe X-Received: by 2002:a17:90b:4ccd:b0:367:bb54:8768 with SMTP id 98e67ed59e1d1-367bb548ed5mr3214981a91.4.1778297594097; Fri, 08 May 2026 20:33:14 -0700 (PDT) MIME-Version: 1.0 From: Rahul Juliato <rahuljuliato@HIDDEN> Date: Sat, 9 May 2026 00:32:58 -0300 X-Gm-Features: AVHnY4JDQsBQj3KBDy-1ZrVNXSlUVsMKfFj1pC_DSIzk08vLnqzdmUmGf1-K2w8 Message-ID: <CACah_w1ncXLbSDPWVhHxQ5tx5r3ir5yow-X4Z+cswtr+54XGvg@HIDDEN> Subject: Error To: 80740 <at> debbugs.gnu.org Content-Type: multipart/alternative; boundary="00000000000066b60606515a2c7f" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80740 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 (/) --00000000000066b60606515a2c7f Content-Type: text/plain; charset="UTF-8" Please ignore my last email to this bug report. It should remain closed. That message was meant for another bug (#80991). --00000000000066b60606515a2c7f Content-Type: text/html; charset="UTF-8" <div dir="ltr"><p class="gmail-isSelectedEnd">Please ignore my last email to this bug report. It should remain closed.</p><p>That message was meant for another bug (#80991).</p></div> --00000000000066b60606515a2c7f--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 9 May 2026 03:27:12 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 08 23:27:11 2026 Received: from localhost ([127.0.0.1]:47474 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wLYLM-0001dI-6e for submit <at> debbugs.gnu.org; Fri, 08 May 2026 23:27:11 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]:58618) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>) id 1wLYLF-0001bv-Lv for 80740 <at> debbugs.gnu.org; Fri, 08 May 2026 23:27:04 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-c70c112cb61so1903886a12.0 for <80740 <at> debbugs.gnu.org>; Fri, 08 May 2026 20:27:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778297220; cv=none; d=google.com; s=arc-20240605; b=YQirmt7cA8kQDQbl7a/0kvKdQukXkR0pGl8ymTyOHWyiQKeuJfSRuxektcvJzREe2v Zq+Bc1pqNGthvtYJRdgT8KZqs418phj6zYNCFZ/aIZmC2WjOLtE78ttB50MnQIm+xU66 hQfGNjMYkH963sGzhNynFIbYP1PHlxMpggqtc2+QXMX7Ik/CcrRxRZff5Dz/8ra6dl2k nn1x1oH9DyO1qG+iwWziNqwBuw/alF6XNCK+l5jsuouKzzF7uq9q2GDfQKtpDekxVmxk H1cV76l6ICiinxtfZ0L0n9ri79euPx8onVS63Bua9Lxcp7RjoKUtLtCqbkMkDUa1/19t BVDA== 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=Y/aUvuqqv/2TAqfXaT30AfGcJSAt/eaQOGfVRsoLNmA=; fh=BWNjBx3a0orPnq9MSt2l1gPc3nD9yAn84Upj6qgG3lY=; b=EkYoxcoD8MemnSNnmt86SpIhcNfey0vz96AOqRL0PCmaTKJdO+A5xVrK8NC5eik+v8 V04h98rtqzue/TNh39+UR2xdiVI7VdkOyV5AkBm0ibH5vk29srQqQi7MngpjTmgCRkfV nKEUG+rtMAuis25YwkI4B72/rB16dKYUD4Z3KNc1m551LvpttznNsXrjaa/AUpsml2gM yjFjUg0tI1xMLmP30ghnpu2l3eP4b3q+43m9HWjv30eVVfMK8Afe6/YzcWJApWK3Q16f jHuVocjxKYY30fR64GqwxVb1aqXT+PC0xZJf3DHborWUbJYyBj5mRQQE7BGcq+FS3Fxv L4Pg==; 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=1778297220; x=1778902020; 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=Y/aUvuqqv/2TAqfXaT30AfGcJSAt/eaQOGfVRsoLNmA=; b=Z9C3HEJM5OPBzmuZ3rzJUvRkBw1pVzmE07v7JkWCXTQf+w348XJ/46K60z252WiwhT LGOa5AG739V2Mu/H+yLNk3tEg2TSjEgeRWqLgBIiOEOznFYEoBwxRtn0xkFeq89PH6DJ SfmyGw7LhLpKzMU9Uf1JaTnFVrAqID7JnWDvu1XetQUXPxRcJOeAYxsUjmD5aeN43tUp AWsQyjeYNynAzi1AagjD0Hp3DIBOxQFaaOPk41Ouj3cR044bdtwxGSAHvxLKXT9QzVuL iu/iEWoxW81QsbF4izo6TWLvgH9Ng5Gk10JLGEwnJswZxuy1CBiOWa6WB6d9OBQd2D3a vODw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778297220; x=1778902020; 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=Y/aUvuqqv/2TAqfXaT30AfGcJSAt/eaQOGfVRsoLNmA=; b=gnRdrthwKeLPPCfMhpQYh9CHeDSWDm8rHvGeTwgQ6txISsSRKWB8qOu9QBLhyHd5/9 i6LKKPrw0lXwCLeexwzKL69ofHy3dpczajCxL45ogplBAd/wCEyDn5S+RohHje5Dt/dx GXEA5YsVZn4NF0v/igbMMoTA4K+zr2pScQw/tPx+jUiBXX1YFo2sxX9j80tZbGM2wHXV UaEI7yaFqfYIHeb+Oo5vmUiOphfnb5OGQlxE9+yYkdORUlzdyaB8d+3VNy+H2IyIeDA1 nVF56ZkzCMdt3XQwhOliVWTO3AfvJrzws1xvz2zr+cFR1nlJbAMR5dAtNO9fcjHGYVKw Ooiw== X-Gm-Message-State: AOJu0Yym8dPoCop++VP9mNJovqw2LSPrdzRti3/Wsh1zU8vzm9+SrPsL baGLvwdmSfH7865SgbemJB9K1wZjvwknx9Wff3S4P31QOrdvXgwTnYbZi51Ly9zjzW5OZONbOTZ ElVT3yjLmoohP+dRbRPOTnFeYwxOMgXqZzV2/s5pVTQ== X-Gm-Gg: AeBDieueq8LGhssDQKi1ITeWakN9SLI0dFfHToLhjuOwd1juc3bntAK2J7vdcETRBmR GL6Zn0yKLHJzLxNAcb4TUxbG8GJr3rkxqbbEcaVlsky5/66olmRdRHbFUbHvvh6TRq7/0EJqkNZ /40fVYXAddQfjvmlM2z3UB5MXzDg5+uK0WxrXb8ZaA2IFHi1WX8bOSMKQFTYHjnt9MW7jLgxxdW qoNeSeDQOuA43GgRsJz2R2Vf10IhiCco3Vtb1iQTIoUroGDs4fbbiJX8VDaLDR6nNEIz9QYhMZq RLYqL25iH5kdkUZBXcNQ4+ywB9Hflwil/whUIazI X-Received: by 2002:a05:6a21:6d84:b0:398:7d6e:27f4 with SMTP id adf61e73a8af0-3aa5a8319dcmr17078349637.1.1778297219522; Fri, 08 May 2026 20:26:59 -0700 (PDT) MIME-Version: 1.0 References: <877bpe135w.fsf@HIDDEN> <CAN+1HbpDnyUncPGejy39B2u-ZwZD_TjFOVw63YVN2jDGKsc7TQ@HIDDEN> <87v7cyyp1u.fsf@HIDDEN> <CAN+1HbpDtKad7XDyepcLABh=x+7Z2Je2o6t3ytMD5LMghCRrMQ@HIDDEN> <CAN+1HbrS3C68HouGgo4GDM=yuM4wpNX=eezW8BNfwfnUyGjviw@HIDDEN> <CAN+1Hbo=y11rLYRikbjRKUj604vbaNePvDzKgZs6HDuzUvA9vg@HIDDEN> <m2h5ohil7d.fsf@HIDDEN> In-Reply-To: <m2h5ohil7d.fsf@HIDDEN> From: Rahul Juliato <rahuljuliato@HIDDEN> Date: Sat, 9 May 2026 00:26:41 -0300 X-Gm-Features: AVHnY4I-kxlarljEt-S99qKCJmQFkLF-qyGF9VF1vokvtwlzHKvoCM8Bvcj9YyU Message-ID: <CACah_w1=a+ZB2oQ-QiR7DNgYfw_79L60qVhATyT_CMy0Md2KuQ@HIDDEN> Subject: Re: bug#80991: 31.0.50; markdown-ts-mode highlighting problems To: 80740 <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="00000000000013415906515a1665" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80740 Cc: Yuan Fu <casouri@HIDDEN>, Eshel Yaron <me@HIDDEN>, =?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: 0.0 (/) --00000000000013415906515a1665 Content-Type: multipart/alternative; boundary="00000000000013415806515a1663" --00000000000013415806515a1663 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Re-sending since I forgot to add the debbugs: St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > I'm volunteering Rahul to prepare patches for everything once his flu has flown. > > Hi everyone, Thanks, St=C3=A9phane! Please find attached the patch containing the extracted fix from the full file you sent. It's a nice workaround while we wait for the grammar to be fixed upstream. This patch should be applied *after* bug#80978 and bug#80979, in that order. To be clear, the order is: * bug#80978 * bug#80979 * bug#80991 (this patch) --=20 Rahul Martim Juliato --00000000000013415806515a1663 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>Re-sending since I forgot to add the debbugs:</div><d= iv><br></div><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"l= tr" class=3D"gmail_attr">St=C3=A9phane Marks <<a href=3D"mailto:shipmint= s@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<br><br>&= gt;<br>>=C2=A0 I'm volunteering Rahul to prepare patches for everyth= ing once his flu has flown.<br>><br>><br><br>Hi everyone,<br><br>Than= ks, St=C3=A9phane!<br><br>Please find attached the patch containing the ext= racted fix from the<br>full file you sent. It's a nice workaround while= we wait for the grammar<br>to be fixed upstream.<br><br>This patch should = be applied *after* bug#80978 and bug#80979, in that<br>order.<br><br>To be = clear, the order is:<br><br>* bug#80978<br>* bug#80979<br>* bug#80991 (this= patch)<br><br>--=C2=A0<br>Rahul Martim Juliato</div></div></div> --00000000000013415806515a1663-- --00000000000013415906515a1665 Content-Type: application/x-patch; name="0001-Fix-strikethrough-in-markdown-ts-mode.patch" Content-Disposition: attachment; filename="0001-Fix-strikethrough-in-markdown-ts-mode.patch" Content-Transfer-Encoding: base64 Content-ID: <19e0ac56a7a21b741772> X-Attachment-Id: 19e0ac56a7a21b741772 RnJvbSAzYTU3N2QyMzQwZmU1YzY1MmExMWQ4ZDM4N2EyMTc2OGQ5NmY5NDNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn bWFpbC5jb20+CkRhdGU6IEZyaSwgOCBNYXkgMjAyNiAxOToyMzowNyAtMDMwMApTdWJqZWN0OiBb UEFUQ0hdIEZpeCBzdHJpa2V0aHJvdWdoIGluICdtYXJrZG93bi10cy1tb2RlJyAoYnVnIzgwOTkx KQoKKiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsCihtYXJrZG93bi10cy0tdHJl ZXNpdC1zZXR0aW5ncyk6IEFkZCBhIG5ldyBmb250LWxvY2sgYmxvY2sgZm9yCidwYXJhZ3JhcGgt aW5saW5lJyB0aGF0IGhhbmRsZXMgc3RyaWtldGhyb3VnaCBub2RlcyBtb3JlCmNhcmVmdWxseS4K LS0tCiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsIHwgMzMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUu ZWwgYi9saXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsCmluZGV4IDhjMTg2ODMzZTJm Li43NDE0ZjM0ZWRiYyAxMDA2NDQKLS0tIGEvbGlzcC90ZXh0bW9kZXMvbWFya2Rvd24tdHMtbW9k ZS5lbAorKysgYi9saXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsCkBAIC0xNTQsNiAr MTU0LDE3IEBACiA7OyAgIGNvbnRlbnQuICBMb3dlcmNhc2UgYDwhZG9jdHlwZSBodG1sPicgd29y a3MgYXMgYSB3b3JrYXJvdW5kLgogOzsgICBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNp dHRlci1ncmFtbWFycy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMvMjMzPi4KIDs7Cis7OyAt IFRoZSBncmFtbWFyIHBhcnNlcyBzb2xvIHRpbGRlcywgaW5jb3JyZWN0bHkgYXBwbHlpbmcgc3Ry aWtldGhyb3VnaC4KKzs7ICAgRm9yIGV4YW1wbGUsIHdyaXRpbmc6Cis7OworOzsgICAgIEkgc2Vl IH5hcHByb3hpbWF0ZWx5IGZvdXIgbGlnaHRzLgorOzsgICAgIEkgZG8gbm90IHNlZSB+YXBwcm94 aW1hdGVseSBmaXZlIGxpZ2h0cy4KKzs7Cis7OyAgIFJlc3VsdHMgaW4gc3RyaWtldGhyb3VnaCBp bmNvcnJlY3RseSBzdGFydGluZyBhdCB0aGUgZmlyc3QKKzs7ICAgfmFwcHJveGltYXRlbHkgYW5k IGV4dGVuZGluZyB0aWxsIHRoZSB0aWxkZSBhdCB0aGUgc2Vjb25kCis7OyAgIH5hcHByb3hpbWF0 ZWx5LgorOzsgICBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90 cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMvMjM2Pi4KKzs7CiA7OyAtIFN1cGVyc2NyaXB0IChg XnRleHReJykgYW5kIHN1YnNjcmlwdCAoYH50ZXh0ficpIHN5bnRheCBpcyBub3QKIDs7ICAgc3Vw cG9ydGVkIGJ5IHRoZSBncmFtbWFyLiAgTm8gRVhURU5TSU9OXyBidWlsZCBmbGFnIGV4aXN0cyBm b3IKIDs7ICAgdGhpcy4gIFRoaXMgaXMgUGFuZG9jIC8gUEhQIE1hcmtkb3duIEV4dHJhIHN5bnRh eCwgbm90IENvbW1vbk1hcmsKQEAgLTE3MDMsMTMgKzE3MTQsMzMgQEAgbWFya2Rvd24tdHMtLXRy ZWVzaXQtc2V0dGluZ3MKICAgICcoKChjb2RlX3NwYW4pIEBtYXJrZG93bi10cy1jb2RlLXNwYW4p CiAgICAgICgoY29kZV9zcGFuX2RlbGltaXRlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGlt aXRlcikpCiAKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24taW5saW5lCisgICA6b3ZlcnJpZGUgJ2Fw cGVuZAorICAgOmZlYXR1cmUgJ3BhcmFncmFwaC1pbmxpbmUKKyAgIDs7IE9yZGVyIG1hdHRlcnM6 IG1vc3Qgc3BlY2lmaWMgdG8gbGVhc3Qgc3BlY2lmaWMuCisgICAnKDs7IH4geCB+IChzdHJpa2V0 aHJvdWdoIChlbXBoYXNpc19kZWxpbWl0ZXIpICkgOiAoIChlbXBoYXNpc19kZWxpbWl0ZXIpKQor ICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl4KKyAg ICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lIHRl eHQgbmVlZHMgdG8gYmUgaWdub3JlZAorICAgICAoKHN0cmlrZXRocm91Z2ggKChlbXBoYXNpc19k ZWxpbWl0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgOmFuY2hvcgorICAgICAgICAgICAgICAg ICAgICAgIF8gQGZvbworICAgICAgICAgICAgICAgICAgICAgIChlbXBoYXNpc19kZWxpbWl0ZXIp KQorICAgICAgICAgICAgICAgICAgICAgKDptYXRjaCAiXFxgW35bOnByaW50Ol1dXFwnIiBAZm9v KQorICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgQGRlZmF1bHQpCisgICAgIDs7IH5+eH5+ IChzdHJpa2V0aHJvdWdoIChlbXBoYXNpc19kZWxpbWl0ZXIpIChzdHJpa2V0aHJvdWdoIChlbXBo YXNpc19kZWxpbWl0ZXIpIChlbXBoYXNpc19kZWxpbWl0ZXIpKSAoZW1waGFzaXNfZGVsaW1pdGVy KSkKKyAgICAgKChzdHJpa2V0aHJvdWdoIChlbXBoYXNpc19kZWxpbWl0ZXIpIChzdHJpa2V0aHJv dWdoIChlbXBoYXNpc19kZWxpbWl0ZXIpIChlbXBoYXNpc19kZWxpbWl0ZXIpKSAoZW1waGFzaXNf ZGVsaW1pdGVyKSkKKyAgICAgIEBtYXJrZG93bi10cy1zdHJpa2V0aHJvdWdoKQorICAgICA7OyAg fnh+ICAoc3RyaWtldGhyb3VnaCAoZW1waGFzaXNfZGVsaW1pdGVyKSAoZW1waGFzaXNfZGVsaW1p dGVyKSkKKyAgICAgKChzdHJpa2V0aHJvdWdoIChlbXBoYXNpc19kZWxpbWl0ZXIpIChlbXBoYXNp c19kZWxpbWl0ZXIpKQorICAgICAgQG1hcmtkb3duLXRzLXN0cmlrZXRocm91Z2gpKQorCiAgICA6 bGFuZ3VhZ2UgJ21hcmtkb3duLWlubGluZQogICAgOm92ZXJyaWRlICdhcHBlbmQKICAgIDpmZWF0 dXJlICdwYXJhZ3JhcGgtaW5saW5lCiAgICAnKCgobGlua19kZXN0aW5hdGlvbikgQG1hcmtkb3du LXRzLS1mb250aWZ5LWxpbmstZGVzdGluYXRpb24pCiAgICAgICgoZW1waGFzaXMpIEBtYXJrZG93 bi10cy1lbXBoYXNpcykKICAgICAgKChzdHJvbmdfZW1waGFzaXMpIEBtYXJrZG93bi10cy1ib2xk KQotICAgICAoKHN0cmlrZXRocm91Z2gpIEBtYXJrZG93bi10cy1zdHJpa2V0aHJvdWdoKQogICAg ICAoaW5saW5lX2xpbmsgKGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9k ZSkKICAgICAgKGZ1bGxfcmVmZXJlbmNlX2xpbmsgKGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1m b250aWZ5LWxpbmstbm9kZSkKICAgICAgKGZ1bGxfcmVmZXJlbmNlX2xpbmsgKGxpbmtfbGFiZWwp IEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCi0tIAoyLjU0LjAKCg== --00000000000013415906515a1665--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 5 May 2026 09:07:30 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue May 05 05:07:29 2026 Received: from localhost ([127.0.0.1]:55220 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wKBkU-000091-PI for submit <at> debbugs.gnu.org; Tue, 05 May 2026 05:07:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34772) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wKBkR-00007V-D7 for 80740 <at> debbugs.gnu.org; Tue, 05 May 2026 05:07:24 -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 1wKBkL-0007oN-Ii; Tue, 05 May 2026 05:07:17 -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=+nUmf69lyxWV8ZjbqOqT0WWOaKhFoiFYSjHX2IAHd+0=; b=Pup5cL+npOF7ZwCrqO/C nuIQKaQ/9glvhWjqZb0RppZ6/PRzzcrCdbzMot9HYOHcZas+XJZvgwfeg02HQBcgtRm7wDTkyefYM TFuEzhW9af6xT50tqDAc5riPtbC+NpbdUicMw9P/lG4A7zczfRMVkPShR6Gt0rvuUsgCdmvlNl/4Y IkF2oXMNK2WBUEmV2t6ivsqhhJ7U83Xlkg1AQXkSLRKfHN7gV9OnXJG3m+9rTI2Slc+p5v+lG43Ye LZFng5OtNieFePRdN8+8pXUr/tgndsRNx1ZTKRoorFdhJExUYToWsPZD0Vl4J747Ij9UJu/FLAWY2 qtAFUD9he6AiCQ==; Date: Tue, 05 May 2026 12:07:13 +0300 Message-Id: <86a4ueb4xq.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Yuan Fu <casouri@HIDDEN> In-Reply-To: <62D0E018-29BC-45B8-98A4-5AAA50F4B6E6@HIDDEN> (message from Yuan Fu on Tue, 5 May 2026 00:25:37 -0700) Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN> <m2ik982h8d.fsf@HIDDEN> <871pfvtso9.fsf@HIDDEN> <m2lde3i4t8.fsf@HIDDEN> <CAN+1HbpfowV03Cyej3Do0pv+UOAZUPFXwR2jicBaUCGjy5oZ_Q@HIDDEN> <87cxzfkocq.fsf@HIDDEN> <CAN+1HboiDuZVrFPmmPa8W0GsO8ePy+P-d3EvQHtmFyGmP6wP9g@HIDDEN> <m2mryi7jcx.fsf@HIDDEN> <87fr48mqdn.fsf@HIDDEN> <CAN+1HbpNjycEqwALJkLyLOiYokP7CzJmW3sU8LOm5VzrmKkFfQ@HIDDEN> <m27bpk19pl.fsf@HIDDEN> <62D0E018-29BC-45B8-98A4-5AAA50F4B6E6@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: public@HIDDEN, me@HIDDEN, 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> X-Spam-Score: -3.3 (---) > From: Yuan Fu <casouri@HIDDEN> > Date: Tue, 5 May 2026 00:25:37 -0700 > Cc: Stéphane Marks <shipmints@HIDDEN>, > Thanos Apollo <public@HIDDEN>, > 80740 <at> debbugs.gnu.org, > Eli Zaretskii <eliz@HIDDEN>, > Eshel Yaron <me@HIDDEN> > > > > > On May 3, 2026, at 2:09 PM, Rahul Martim Juliato <rahuljuliato@HIDDEN> wrote: > > > > Thanks all for the input. > > > > Thanos: thanks for being an early user and putting it through real use. > > Glad to hear it's been a smooth ride so far. The ^L-between-blank-lines > > separator is a good recipe for batch fontification and worth recording. > > > > Stéphane: agreed, grammar-level matter. NUL isn't in the grammar's > > extras, so it surfaces as UNEXPECTED and inline state bleeds during > > error recovery (so yeah, grammar's fault). > > > > > > I've added a short "Batch Fontification" section to the commentary in > > markdown-ts-mode.el documenting this and recommending the ^L separator. > > > > > > Yuan: while in there, I added a bullet under "Tree Sitter Bugs" pointing > > at your scanner serialize() overflow report (#243) so users may have a > > breadcrumb to the upstream issue. > > > > Updated patch attached (only comments added). > > > > -- > > Rahul Martim Juliato > > > > <0001-Improve-markdown-ts-mode.patch> > > Cool. I merge this patch to master. Hopefully this is the final final version :) Thanks, but as always, please test the new TS-related code in a build without tree-sitter, because that always reveals byte-compiler warnings about unknown functions. I fixed this in this case.
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 5 May 2026 07:25:57 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue May 05 03:25:56 2026 Received: from localhost ([127.0.0.1]:54625 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wKAAF-0006ev-1g for submit <at> debbugs.gnu.org; Tue, 05 May 2026 03:25:56 -0400 Received: from mail-dy1-x132c.google.com ([2607:f8b0:4864:20::132c]:50422) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <casouri@HIDDEN>) id 1wKAAA-0006dh-BT for 80740 <at> debbugs.gnu.org; Tue, 05 May 2026 03:25:52 -0400 Received: by mail-dy1-x132c.google.com with SMTP id 5a478bee46e88-2f03d6cf77bso2988063eec.0 for <80740 <at> debbugs.gnu.org>; Tue, 05 May 2026 00:25:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777965949; x=1778570749; 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=9NP6NdhzpVJDC+MTY3pYuXC4KG55F0GpJkzOXXyDYic=; b=AC6ojdsp7fCmapiOt9U2Kpekf54+U31sIf0hqmWjzeqFunBrNaFHNfMWg5iSvqy23a 3IEpKY7d5YJ8T/CMAV1RsyPbMSAT4A2gQVVvI5KZq7xMISZK8g5ryPTxFb/0S5dRYryL rVnGHfj+ZMX1pVuOsZP1YJIVjfsWDU3cUE681nyIHW3rlyvdKoticxKoMtz7DzUYLDEC 6kkOltcyj0u5iJk2LkfcL44b/eLaLEJLXkgCMvsiEx1YsuXg5RMASYNhkbrIBv/y80yY I6mou5/Uh0ljNT+I1/FL/j4CkyIpFh7febc3R97JedOcNb76sGf+rcMV6pk306Sgopzs giIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777965949; x=1778570749; 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=9NP6NdhzpVJDC+MTY3pYuXC4KG55F0GpJkzOXXyDYic=; b=m+UXAyG1QQWJw/bzHYrEET1fYrGibQMhI23C79aiZxS+G5OCquZAlonTQXax3GxZv8 9vEyl8wj64/tzgiFu9x+c0sdISFCaj70Y7sbnAgG7in967apno27grxePSnRcQoAyZnn n4RkN6DKb9BZpDYdejPHw5Wf92E5Rzktm43VW/L5Gp/HUEEsrZJrlIi+EwkYlT+SdDxV SxpQ/Uj0JlgLSTmOGluKWAlqRkolUMTGqgaMVZjj8C3giT+Vzhsu9FIfY2W6X0ot79Zs 5xDJ69G+f7j7c7/Ml8m3ovI2VD5BXWfclV34DQ/mjoLxgVDHwzRVaMo9cwvNygtg+r2c XokQ== X-Forwarded-Encrypted: i=1; AFNElJ9TePdcs4pF8uxSYmU4l7KXLUiDo9DfRZOC3jTSv1DObe2Z3h+kV2sm0nIrGvoetrucG+Gptg==@debbugs.gnu.org X-Gm-Message-State: AOJu0YyBKGg2J9XMQgOMNe3if1JxkAq3JrXKNF0D/n1TGnw3pxqRjG0R J7mttBB4VgBRKjm5xrLJWyD5txVZplN4GDB9UAUdVVLRrvIGiEdUtKWn X-Gm-Gg: AeBDievqweP+XSQBVuA7WL3kNg+oEXlRwI55dnrluy2W+COXCB+LWpfrVaoDqOnbuJE 6+D3YEV9kbxhxPlzmnvGml42/zJc+NUjvKg+ZC9Si8hw+8h7VdpifF6T/cuEgBtaxliWB7pYDDL wrKTrjuIK0MG/UJietwPO3eFzdimqIXwUoItHuKw3cNJbVsBLvyoximCdyrXLhLW97z6UsoX65y M/TS/N/oJnYNfJRbVZaBUftN56hntfmWoiLnkfegBNNOpeTVD+CiIjpdRxqfwwuR7oGp+Fmpo0t hXMdDRMgSOee+rGAJ8AUBN2ezqC1k1sk9O7micYSlt3ErKWrIDLxK2E0xWOwZx+SNZsD/fnZf70 qX9DZ6sd9SMdRGw9W2wr81ibpDFjb3AlwuyocqYuzEmqU8wrOS42TS86yfxDXjcefgXu0lA9iCL D9UlicFrF2fwqvARLSSlXYVRGm/DziIbAM8mZwPv8PiA150v5kTJGCaw== X-Received: by 2002:a05:7301:9f06:b0:2c1:3f85:747 with SMTP id 5a478bee46e88-2f4097d35f9mr859991eec.21.1777965948768; Tue, 05 May 2026 00:25:48 -0700 (PDT) Received: from smtpclient.apple ([2601:645:c686:b320:71f8:6422:87:31e3]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee38e71cedsm23061027eec.9.2026.05.05.00.25.47 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 May 2026 00:25:48 -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: <m27bpk19pl.fsf@HIDDEN> Date: Tue, 5 May 2026 00:25:37 -0700 Content-Transfer-Encoding: quoted-printable Message-Id: <62D0E018-29BC-45B8-98A4-5AAA50F4B6E6@HIDDEN> References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN> <m2ik982h8d.fsf@HIDDEN> <871pfvtso9.fsf@HIDDEN> <m2lde3i4t8.fsf@HIDDEN> <CAN+1HbpfowV03Cyej3Do0pv+UOAZUPFXwR2jicBaUCGjy5oZ_Q@HIDDEN> <87cxzfkocq.fsf@HIDDEN> <CAN+1HboiDuZVrFPmmPa8W0GsO8ePy+P-d3EvQHtmFyGmP6wP9g@HIDDEN> <m2mryi7jcx.fsf@HIDDEN> <87fr48mqdn.fsf@HIDDEN> <CAN+1HbpNjycEqwALJkLyLOiYokP7CzJmW3sU8LOm5VzrmKkFfQ@HIDDEN> <m27bpk19pl.fsf@HIDDEN> To: Rahul Martim Juliato <rahuljuliato@HIDDEN> X-Mailer: Apple Mail (2.3826.700.81) X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80740 Cc: Thanos Apollo <public@HIDDEN>, Eshel Yaron <me@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>, 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: 0.0 (/) > On May 3, 2026, at 2:09=E2=80=AFPM, Rahul Martim Juliato = <rahuljuliato@HIDDEN> wrote: >=20 > Thanks all for the input. >=20 > Thanos: thanks for being an early user and putting it through real = use. > Glad to hear it's been a smooth ride so far. The = ^L-between-blank-lines > separator is a good recipe for batch fontification and worth = recording. >=20 > St=C3=A9phane: agreed, grammar-level matter. NUL isn't in the = grammar's > extras, so it surfaces as UNEXPECTED and inline state bleeds during > error recovery (so yeah, grammar's fault). >=20 >=20 > I've added a short "Batch Fontification" section to the commentary in > markdown-ts-mode.el documenting this and recommending the ^L = separator. >=20 >=20 > Yuan: while in there, I added a bullet under "Tree Sitter Bugs" = pointing > at your scanner serialize() overflow report (#243) so users may have a > breadcrumb to the upstream issue. >=20 > Updated patch attached (only comments added). >=20 > --=20 > Rahul Martim Juliato >=20 > <0001-Improve-markdown-ts-mode.patch> Cool. I merge this patch to master. Hopefully this is the final final = version :) Yuan=
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 3 May 2026 21:09:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 03 17:09:53 2026 Received: from localhost ([127.0.0.1]:59367 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wJe4X-0003UJ-OM for submit <at> debbugs.gnu.org; Sun, 03 May 2026 17:09:53 -0400 Received: from mail-dy1-x132e.google.com ([2607:f8b0:4864:20::132e]:58787) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>) id 1wJe4U-0003U2-Bs for 80740 <at> debbugs.gnu.org; Sun, 03 May 2026 17:09:50 -0400 Received: by mail-dy1-x132e.google.com with SMTP id 5a478bee46e88-2ecf9e398f4so7814347eec.1 for <80740 <at> debbugs.gnu.org>; Sun, 03 May 2026 14:09:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777842589; x=1778447389; 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=0vlUfN/IWtoClg+wFjbpq0OzQl+mKGfteEC+x8UHha8=; b=gKW5wKe0YI2ANDuACZjDXuUsYl0zohHeGMFNtc9c0itioi+rwSxPj3jt4ILOGSE4QE bDXxFarkylE+I2mhT6CYDd1+nA0MM1vzz2SdKPHjthk9c49/ZbUURCQTj6ixiRGob3LF iRdLavn6FTTMm7ZXh25ofHC38hCnYmR7V5qRQyn7koUcGVKg5dB/rmt1i3Cvb+uYurnZ QzutFn5J4i1x1SBoYk0oMAA5Zy0iyoizNqlXnksiVoAmMjuqmo0hc8r1q8sQ/qHt9Czm lmoZqE+PAcuPbVqaMyxvBTstU/mJosqsMu8jQ5k7oXoAPw58zzNh/dnLFh7g3UDDK8RT xaxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777842589; x=1778447389; 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=0vlUfN/IWtoClg+wFjbpq0OzQl+mKGfteEC+x8UHha8=; b=ZFqP0Ke3OzxRvtjPoIS9XdhbfGzFRQgvZtw3NFZPzvKKQGaRU+9Kblk6Ypv/2oqF07 i+2IeaQ8U0uvjiX6aZn7smEZlMzCV6PHnHvWCkCJhuWdiSxMg2bfEgmhnOlSI7z18GO2 Kwjs1i511YgxUrraK7Qmc7nd1XyZPG2ChqBLrOv5Zkt/1gSi7MrtHfXsP0XrcfvhRPCr Hp6qBLy4qJUIhjB8gnWeqjMkJr7yfgYT87UN7xYPmRXSFgTOvIS1nJF5P4cG9+NsSmPC y08lT0xdeCYLgKFUa26xuPIe9hDqLk4BUqGM+FpDp5pVXopifVzezZwfn+dHwqrqbjVi ApeQ== X-Forwarded-Encrypted: i=1; AFNElJ/ECyq3xJCMkMcBPUecG6r2C4bHCxcfRFtWgYgDdl/jn0Z73rTF3Toph0FVpT+FB9WhUYdiFQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwqfwWa5u3cySiYKs1hhbi+B02c83QfcpzJC12I8NrET9CK97yO 9ghtfvIqmFzmKCMDf5dO0LeWvYnhg1hiARmIH/WhgKXe/SmQ4cuvZOCx X-Gm-Gg: AeBDiev43RJz2nu866vhTTpEhIYIO9AXFajortrRNfFoPo1ozpcgUvx9ckGv8+ALSpK 8ZTVqdFIfsp3x556m7mfvK4ad/Cb/NrEYXYYlnqgidIwK3Og5n8LuwHEWxdeV45xeXAOXyhnc2M s+UQPN6uTQgAdNNZUCCEf7kyAmYxkkg/h4l8nVHSm1TH7qXme+11QOM2gb20A6V5u0b4kU+vHjd nb1cToM7OHrCzweTGRvwaCzJzZcjdx+l9Ncv8kJejCN2C9SbG6L4rwiPECZCzVGfmcmiupDB2tJ 1uv3gPlRfAb6Fqq7j1sUTcy4Ogyv0UTgxXKw4Z+jLgDjY+3e27V4qu2tbM0t4YVuYgsMP4pdJ2z irDJPmilAxNvCkKxrQ6vC12OEsblaLcjoF1+eOLfrUhGhxGrN6lhml58+LrX5ld1yxHx1d6LXA8 XemuWw7nkglBbsKYuuwBKGWxvEa4J/AlGTevbrVvGtgNk6vSyxxeh8i2N3wKCcomn0WcISFdzrx 8WmfvCbfCH2pPrgy8IMdxHAYPlusD6S4XaPMzrKJyPq0xLW29jKRi9bjMXPD3QrhmI= X-Received: by 2002:a05:7300:2316:b0:2de:c5ca:c1f3 with SMTP id 5a478bee46e88-2efb7ad86b0mr3132278eec.4.1777842588514; Sun, 03 May 2026 14:09:48 -0700 (PDT) Received: from MacBook-Pro.local (201-93-59-75.dial-up.telesp.net.br. [201.93.59.75]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3b878317sm13925139eec.23.2026.05.03.14.09.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 May 2026 14:09:47 -0700 (PDT) From: Rahul Martim Juliato <rahuljuliato@HIDDEN> X-Google-Original-From: Rahul Martim Juliato <rahul.juliato@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' In-Reply-To: <CAN+1HbpNjycEqwALJkLyLOiYokP7CzJmW3sU8LOm5VzrmKkFfQ@HIDDEN> References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN> <m2ik982h8d.fsf@HIDDEN> <871pfvtso9.fsf@HIDDEN> <m2lde3i4t8.fsf@HIDDEN> <CAN+1HbpfowV03Cyej3Do0pv+UOAZUPFXwR2jicBaUCGjy5oZ_Q@HIDDEN> <87cxzfkocq.fsf@HIDDEN> <CAN+1HboiDuZVrFPmmPa8W0GsO8ePy+P-d3EvQHtmFyGmP6wP9g@HIDDEN> <m2mryi7jcx.fsf@HIDDEN> <87fr48mqdn.fsf@HIDDEN> <CAN+1HbpNjycEqwALJkLyLOiYokP7CzJmW3sU8LOm5VzrmKkFfQ@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: Sun, 03 May 2026 18:09:42 -0300 Message-ID: <m27bpk19pl.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: Rahul Martim Juliato <rahuljuliato@HIDDEN>, Thanos Apollo <public@HIDDEN>, Eshel Yaron <me@HIDDEN>, =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>, Eli Zaretskii <eliz@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 Thanks all for the input. Thanos: thanks for being an early user and putting it through real use. Glad to hear it's been a smooth ride so far. The ^L-between-blank-lines separator is a good recipe for batch fontification and worth recording. St=C3=A9phane: agreed, grammar-level matter. NUL isn't in the grammar's extras, so it surfaces as UNEXPECTED and inline state bleeds during error recovery (so yeah, grammar's fault). I've added a short "Batch Fontification" section to the commentary in markdown-ts-mode.el documenting this and recommending the ^L separator. Yuan: while in there, I added a bullet under "Tree Sitter Bugs" pointing at your scanner serialize() overflow report (#243) so users may have a breadcrumb to the upstream issue. Updated patch attached (only comments added). --=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 RnJvbSA0MTcwMGViMmEzZjE1NzEwMzVkOTIzZmFjODUwMDRlNzFjN2FkZDMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn bWFpbC5jb20+CkRhdGU6IEZyaSwgMyBBcHIgMjAyNiAyMzo0MTo0NyAtMDMwMApTdWJqZWN0OiBb UEFUQ0hdIEltcHJvdmUgJ21hcmtkb3duLXRzLW1vZGUnCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k aW5nOiA4Yml0CgpPdmVyaGF1bCAnbWFya2Rvd24tdHMtbW9kZScgd2l0aCBjb21wcmVoZW5zaXZl IGZvbnRpZmljYXRpb24sCmNvZGUgYmxvY2sgaGFuZGxpbmcsIGVkaXRpbmcgY29tbWFuZHMsIGZp bGwtcGFyYWdyYXBoIHN1cHBvcnQsCmlubGluZSBpbWFnZSBwcmV2aWV3cywgYSBtb2RlIG1lbnUs IGFuZCB0YWJsZSBlZGl0aW5nLiAgQWRkCidtYXJrZG93bi10cy1tb2RlLXguZWwnIHdpdGggY29u dmVyc2lvbi9leHBvcnQgYW5kIFRPQyBzdXBwb3J0LgoKKiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93 bi10cy1tb2RlLmVsOiBBZGQgVmVyc2lvbiwKUGFja2FnZS1SZXF1aXJlcywgYW5kIEtleXdvcmRz IGhlYWRlciBmaWVsZHMuICBFeHBhbmQgQ29tbWVudGFyeQp3aXRoIGRvY3VtZW50YXRpb24gZm9y IGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMsIGNvZGUgYmxvY2sKY29tbWFuZHMsIGJpZGlyZWN0 aW9uYWwgdGV4dCwgYW5kIGtub3duIHRyZWUtc2l0dGVyIGdyYW1tYXIKYnVncy4KKHJlcXVpcmUg J2dvdG8tYWRkciwgeHJlZiwgaWNvbnMpOiBOZXcgcmVxdWlyZW1lbnRzLgoobWFya2Rvd24tdHMp OiBOZXcgY3VzdG9taXphdGlvbiBncm91cCB3aXRoIDp2ZXJzaW9uIGFuZAo6cGFja2FnZS12ZXJz aW9uIHRhZ3MuCihtYXJrZG93bi10cy1oaWRlLW1hcmt1cCk6IEFkZCA6dmVyc2lvbiBhbmQgOnBh Y2thZ2UtdmVyc2lvbi4KKG1hcmtkb3duLXRzLWVsbGlwc2lzKTogTmV3IG9wdGlvbiBmb3IgZm9s ZGVkIGhlYWRpbmcgZWxsaXBzaXMuCihtYXJrZG93bi10cy1tZW51LWJhci1zaG93KTogTmV3IG9w dGlvbiB0byB0b2dnbGUgbW9kZSBtZW51LgoobWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nKTog TmV3IG9wdGlvbiBmb3IgZGVmYXVsdCBmb2xkCmxldmVsLgoobWFya2Rvd24tdHMtaW5saW5lLWlt YWdlcyk6IE5ldyBvcHRpb24gdG8gZGlzcGxheSBpbmxpbmUKaW1hZ2VzLgoobWFya2Rvd24tdHMt aW1hZ2UtbWF4LXdpZHRoKTogTmV3IG9wdGlvbiBmb3IgaW1hZ2UgbWF4IHdpZHRoLgoobWFya2Rv d24tdHMtZGlzcGxheS1yZW1vdGUtaW5saW5lLWltYWdlcyk6IE5ldyBvcHRpb24gZm9yCnJlbW90 ZSBpbWFnZSBoYW5kbGluZy4KKG1hcmtkb3duLXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUpOiBO ZXcgaGVscGVyIHRvIHJlc29sdmUKZGlzcGxheSB2YWx1ZXMgdXNpbmcgY2hhci1kaXNwbGF5YWJs ZS1wLgoobWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveCk6IE5ldyBvcHRpb24gZm9yIGNoZWNr ZWQgY2hlY2tib3gKZGlzcGxheSBzdHJpbmcgb3IgaWNvbi4KKG1hcmtkb3duLXRzLWNoZWNrZWQt Y2hlY2tib3gtaWNvbik6IE5ldyBpY29ucy5lbCBpY29uIGZvciB0aGUKY2hlY2tlZCB2YXJpYW50 LgoobWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94KTogTmV3IG9wdGlvbiBmb3IgdW5jaGVj a2VkCmNoZWNrYm94IGRpc3BsYXkgc3RyaW5nIG9yIGljb24uCihtYXJrZG93bi10cy11bmNoZWNr ZWQtY2hlY2tib3gtaWNvbik6IE5ldyBpY29ucy5lbCBpY29uIGZvciB0aGUKdW5jaGVja2VkIHZh cmlhbnQuCihtYXJrZG93bi10cy10aGVtYXRpYy1icmVhay1jaGFyYWN0ZXIpOiBOZXcgb3B0aW9u IGZvciB0aGVtYXRpYwpicmVhayBkaXNwbGF5IGNoYXJhY3Rlci4KKG1hcmtkb3duLXRzLWhhcmQt bGluZS1icmVhay1iYWNrc2xhc2gpOiBOZXcgb3B0aW9uIGZvciB0aGUKZ2x5cGggc2hvd24gaW4g cGxhY2Ugb2YgYSB0cmFpbGluZy1iYWNrc2xhc2ggaGFyZCBsaW5lIGJyZWFrCndoZW4gbWFya3Vw IGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZSk6IE5ldyBvcHRp b24gZm9yIHRoZSBnbHlwaApzaG93biBpbiBwbGFjZSBvZiBhIHRyYWlsaW5nLXNwYWNlcyBoYXJk IGxpbmUgYnJlYWsgd2hlbiBtYXJrdXAKaXMgaGlkZGVuLgoobWFya2Rvd24tdHMtY29kZS1ibG9j ay1pbi1jb250ZXh0LW1vZGUtbGlnaHRlcik6IE5ldyBvcHRpb24gZm9yCmNvZGUgYmxvY2sgY29u dGV4dCBtb2RlIGxpZ2h0ZXIgc3RyaW5nLgoobWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2Nr LW1vZGUtd2FybmluZ3MpOiBOZXcgb3B0aW9uIHRvCmluaGliaXQgY29kZS1ibG9jayBtYWpvci1t b2RlIG1lc3NhZ2VzIGFuZCB3YXJuaW5ncy4KKG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1bHQtY29s dW1uLXdpZHRoKTogTmV3IG9wdGlvbiBmb3IgZGVmYXVsdAp0YWJsZSBjb2x1bW4gd2lkdGguCiht YXJrZG93bi10cy1lbmFibGUtdGFibGUtbW9kZSk6IE5ldyBvcHRpb24gdG8gZW5hYmxlIHRhYmxl Cm1vZGUuCihtYXJrZG93bi10cy10YWJsZS1hdXRvLWFsaWduKTogTmV3IG9wdGlvbiBmb3IgdHJp Z2dlcnMgdGhhdApjYXVzZSBhdXRvbWF0aWMgdGFibGUgYWxpZ25tZW50LgoobWFya2Rvd24tdHMt dGFibGUtYWxpZ24tZmVhdHVyZXMpOiBOZXcgb3B0aW9uIGZvciB0YWJsZSBhbGlnbgpmZWF0dXJl cy4KKG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbGlnaHRlcik6IE5ldyBvcHRpb24gZm9yCm1h cmtkb3duLXRzLWluLXRhYmxlLW1vZGUgbGlnaHRlciBzdHJpbmcuCihtYXJrZG93bi10cy1lbXBo YXNpcywgbWFya2Rvd24tdHMtYm9sZCkKKG1hcmtkb3duLXRzLXN0cmlrZXRocm91Z2gsIG1hcmtk b3duLXRzLWxpbmspCihtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9uLCBtYXJrZG93bi10cy1j b2RlLXNwYW4pCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLCBtYXJrZG93bi10cy1jb2RlLWJsb2Nr LW1hcmt1cC1oaWRkZW4pCihtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2NrLCBtYXJrZG93 bi10cy1odG1sLXRhZykKKG1hcmtkb3duLXRzLWh0bWwtYmxvY2ssIG1hcmtkb3duLXRzLXRoZW1h dGljLWJyZWFrKQoobWFya2Rvd24tdHMtZW50aXR5LXJlZmVyZW5jZSkKKG1hcmtkb3duLXRzLW51 bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSwgbWFya2Rvd24tdHMtbGF0ZXgpCihtYXJrZG93bi10 cy10YWJsZS1oZWFkZXIsIG1hcmtkb3duLXRzLXRhYmxlLWNlbGwpCihtYXJrZG93bi10cy10YWJs ZS1kZWxpbWl0ZXItY2VsbCwgbWFya2Rvd24tdHMtdGFzay11bmNoZWNrZWQpCihtYXJrZG93bi10 cy10YXNrLWNoZWNrZWQpOiBOZXcgZmFjZXMuCihtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWst YmFja3NsYXNoKQoobWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaC1oaWRkZW4p CihtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UpCihtYXJrZG93bi10cy1oYXJkLWxp bmUtYnJlYWstc3BhY2UtaGlkZGVuKTogTmV3IGZhY2VzIGZvciB0aGUKdHdvIGhhcmQtbGluZS1i cmVhayB2YXJpYW50cywgd2l0aCBkaXN0aW5jdCBzaG93bi9oaWRkZW4KYXBwZWFyYW5jZXMuCiht YXJrZG93bi10cy1pbi1jb2RlLWJsb2NrKTogTmV3IGZhY2UgZm9yIHdoZW4gcG9pbnQgaXMgaW5z aWRlIGEKZmVuY2VkIGNvZGUgYmxvY2suCihtYXJrZG93bi10cy10YWJsZSk6IE5ldyBmYWNlIGZv ciBNYXJrZG93biBwaXBlIHRhYmxlCmJhY2tncm91bmQuCihtYXJrZG93bi10cy1pbi10YWJsZSk6 IE5ldyBmYWNlIGZvciBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlCndoZW4gcG9pbnQgaXMgaW4g YSB0YWJsZS4KKG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lKTogTmV3IHZhcmlhYmxlIGZvciBs aWdodHdlaWdodCBzZXR1cAppbiBlbWJlZGRlZCBpbmxpbmUgbWFya2Rvd24tdHMtbW9kZSBidWZm ZXJzIHVzZWQgYnkgY29kZSBibG9jawpjb21tYW5kcy4KKG1hcmtkb3duLXRzLWRlZmF1bHQtY29k ZS1ibG9jay1tb2RlKTogTmV3IHZhcmlhYmxlIHRvIGRlZmluZQpkZWZhdWx0IG1vZGUgZm9yIGFu b255bW91cyBjb2RlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLWZvbnRpZnktY29kZS1ibG9ja3MtbmF0 aXZlbHkpOiBOZXcgb3B0aW9uIHRvCmVuYWJsZS9kaXNhYmxlIG5hdGl2ZSBmb250aWZpY2F0aW9u IG9mIGZlbmNlZCBjb2RlIGJsb2NrCmNvbnRlbnRzLgoobWFya2Rvd24tdHMtZW5hYmxlLWNvZGUt YmxvY2stY29udGV4dC1tb2RlKTogTmV3IG9wdGlvbiB0bwplbmFibGUvZGlzYWJsZSBjb2RlIGJs b2NrIGNvbnRleHQgaW50ZWdyYXRpb24uCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKTog TmV3IHZhcmlhYmxlIHJlcGxhY2luZwptYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1t YXAgYW5kCm1hcmtkb3duLXRzLWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwIHdpdGggdW5pZmll ZCBsYW5ndWFnZSB0bwptb2RlIG1hcHBpbmcgaW5jbHVkaW5nIGhldXJpc3RpYyBsb29rdXAuCiht YXJrZG93bi10cy1jb2RlLWJsb2NrLWZvcmNlLWNvbnZlbnRpb25hbC1tb2Rlcyk6IE5ldyB2YXJp YWJsZQpsaXN0aW5nIHRyZWUtc2l0dGVyIG1vZGVzIHdob3NlIGZvbnRpZmljYXRpb24gb2YgY29k ZSBibG9jawpjb250ZW50IHNob3VsZCBiZSBoYXJ2ZXN0ZWQgdmlhIGEgdGVtcG9yYXJ5IGJ1ZmZl ci4KKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC1idWZmZXIpOiBOZXcgY29uc3RhbnQgZm9yIHRh YmxlIGV4cG9ydApvdXRwdXQgYnVmZmVyIG5hbWUuCihtYXJrZG93bi10cy0tdGFibGUtcm93LXR5 cGVzLCBtYXJrZG93bi10cy0tdGFibGUtY2VsbC10eXBlcykKKG1hcmtkb3duLXRzLS10YWJsZS1k ZWxpbWl0ZXItY2VsbC10eXBlcykKKG1hcmtkb3duLXRzLS10YWJsZS1kZWxpbWl0ZXItY2VsbC1z dWJ0eXBlcyk6IE5ldyBjb25zdGFudHMgZm9yCnBpcGUgdGFibGUgbm9kZSB0eXBlIGNsYXNzaWZp Y2F0aW9uLgoobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24pOiBOZXcgZnVuY3Rpb24gdG8g Y3JlYXRlCmNsaWNrYWJsZSBsaW5rIGJ1dHRvbnMgd2l0aCBtYWlsdG8sIGJyb3dzZS11cmwsIGFu ZCBmaW5kLWZpbGUKZGlzcGF0Y2guCihtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0 aW9uKTogTmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGxpbmsgZGVzdGluYXRpb25zIHdoZW4gbWFy a3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZSwgbWFya2Rvd24tdHMt LWxpbmstcmVmLWNhY2hlLXRpY2spCihtYXJrZG93bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMp CihtYXJrZG93bi10cy0tcmVzb2x2ZS1saW5rLXJlZik6IE5ldyBsaW5rIHJlZmVyZW5jZSBkZWZp bml0aW9uCmNhY2hlIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZyBwZXIgQ29tbW9uTWFy ayBzcGVjLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKTogTmV3IGZvbnRpZmllciBm b3IgaW5saW5lLApyZWZlcmVuY2UsIHNob3J0Y3V0LCBhbmQgY29sbGFwc2VkIGxpbmtzIGFzIGNs aWNrYWJsZSBidXR0b25zLgoobWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmspOiBOZXcgZm9u dGlmaWVyIGZvciBVUkkgYW5kIGVtYWlsCmF1dG9saW5rcyB3aXRoIGFuZ2xlIGJyYWNrZXQgaGlk aW5nLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1yZWYtbGFiZWwpCihtYXJrZG93bi10cy0t Zm9udGlmeS1saW5rLXJlZi1kZXN0aW5hdGlvbik6IE5ldyBmb250aWZpZXJzIGZvcgpsaW5rIHJl ZmVyZW5jZSBkZWZpbml0aW9ucy4KKG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1Yi1zdHJpcC1yZSwg bWFya2Rvd24tdHMtLXNsdWctZ2l0aHViKQoobWFya2Rvd24tdHMtLXNsdWctcGFuZG9jLCBtYXJr ZG93bi10cy0tZXhwbGljaXQtaWQtcmUpCihtYXJrZG93bi10cy0taGVhZGluZy10ZXh0LWFuZC1p ZCkKKG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkLWNhY2hlKQoobWFya2Rvd24tdHMtLWhlYWRpbmct aWQtY2FjaGUtdGljaykKKG1hcmtkb3duLXRzLS1idWlsZC1oZWFkaW5nLWlkcywgbWFya2Rvd24t dHMtLWhlYWRpbmctaWRzKQoobWFya2Rvd24tdHMtLWZvbGxvdy1mcmFnbWVudCk6IE5ldyBmcmFn bWVudCBsaW5rIHN1cHBvcnQgd2l0aApHaXRIdWIgYW5kIFBhbmRvYyBzbHVnIGFsZ29yaXRobXMu CihtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCkKKG1hcmtkb3duLXRzLS1mb250aWZ5 LWxhdGV4LWJsb2NrKTogTmV3IExhVGVYL21hdGggZm9udGlmaWVyCndpdGggY3Jvc3MtcGFyYWdy YXBoIHZhbGlkYXRpb24uCihtYXJrZG93bi10cy0tZm9udGlmeS1iYWNrc2xhc2gtZXNjYXBlKTog TmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGJhY2tzbGFzaCBpbiBlc2NhcGVzIGV4Y2VwdCBpbnNp ZGUgTGFUZVggYmxvY2tzLgoobWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHksIG1hcmtkb3duLXRz LS1mb250aWZ5LWVudGl0eSk6IE5ldwpIVE1MIGVudGl0eSBkZWNvZGVyIGFuZCBmb250aWZpZXIg dXNpbmcgb3JnLWVudGl0aWVzIGFuZApzZ21sLWNoYXItbmFtZXMgd2l0aCBkaXNwbGF5IHByb3Bl cnR5IGZvciBkZWNvZGVkIHZhbHVlcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94KTog TmV3IGZvbnRpZmllciBzaG93aW5nIHRoZQpjb25maWd1cmVkIGNoZWNrYm94IGdseXBoIHdoZW4g bWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWhhcmQtbGluZS1icmVhayk6 IE5ldyBmb250aWZpZXIgZm9yCidoYXJkX2xpbmVfYnJlYWsnIG5vZGVzLgoobWFya2Rvd24tdHMt LWZvbnRpZnktaGVhZGluZyk6IE5ldyBmb250aWZpZXIgZm9yIEFUWCBhbmQgU2V0ZXh0CmhlYWRp bmdzLgoobWFya2Rvd24tdHMtLWZvbnRpZnktdGhlbWF0aWMtYnJlYWspOiBOZXcgZm9udGlmaWVy IHNob3dpbmcKaG9yaXpvbnRhbCBsaW5lIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3du LXRzLS1mb250aWZ5LWNvZGUtYmxvY2spOiBOZXcgZm9udGlmaWVyIGFwcGx5aW5nCmJhY2tncm91 bmQgb3ZlcmxheSB0byBjb2RlIGJsb2NrcyB3aXRoIGxhbmd1YWdlIGFuZCBtb2RlCnByb3BlcnRp ZXMuCihtYXJrZG93bi10cy1hdC1jb2RlLWJsb2NrLXApCihtYXJrZG93bi10cy1jb2RlLWJsb2Nr LWxhbmd1YWdlLWF0KQoobWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLWF0KTogTmV3IGFjY2Vz c29ycyBmb3IgY29kZSBibG9jawpvdmVybGF5IHByb3BlcnRpZXMuCihtYXJrZG93bi10cy0taW1l bnUtY29kZS1ibG9jay1ub2RlLXApOiBOZXcgaGVscGVyIGZvciBpbWVudQpjb2RlIGJsb2NrIGRl dGVjdGlvbi4KKG1hcmtkb3duLXRzLS1pbWFnZS1hbG9uZS1vbi1saW5lLXApCihtYXJrZG93bi10 cy0tZm9udGlmeS1pbWFnZSk6IE5ldyBpbmxpbmUgaW1hZ2UgZGlzcGxheSB3aXRoCnN0YW5kYWxv bmUgYW5kIGlubGluZSBwb3NpdGlvbmluZy4KKG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHAp CihtYXJrZG93bi10cy0tYmFyZS1lbWFpbC11cmktcmVnZXhwKQoobWFya2Rvd24tdHMtLWZvbnRp ZnktYmFyZS11cmkpOiBOZXcgYmFyZSBVUkwvZW1haWwKZm9udGlmaWNhdGlvbiB2aWEgaml0LWxv Y2sgdXNpbmcgZ290by1hZGRyIHJlZ2V4cHMuCihtYXJrZG93bi10cy0tdHJlZXNpdC1zZXR0aW5n cyk6IFJld3JpdGUgd2l0aCBkZWRpY2F0ZWQgZmFjZXMsCmN1c3RvbSBmb250aWZpZXJzLCBhbmQg bmV3IGZvbnQtbG9jayBmZWF0dXJlcyBmb3IgYWxsIGlubGluZSBhbmQKYmxvY2sgZWxlbWVudHMu ICBBbHNvIGFkZCBhIG5ldyAnZXJyb3InIGZvbnQtbG9jayBmZWF0dXJlCmhpZ2hsaWdodGluZyB0 cmVlLXNpdHRlciBFUlJPUiBub2Rlcy4KKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdl cykKKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2Rlcyk6IE5ldyBidWZmZXItbG9j YWwgYWxpc3RzCmZvciBjb2RlIGJsb2NrIGxhbmd1YWdlIHRyYWNraW5nLgoobWFya2Rvd24tdHMt LWhhcnZlc3QtbW9kZS10cmVlc2l0LWNvbmZpZ3VyYXRpb24pOiBSZW5hbWUgZnJvbQptYXJrZG93 bi10cy0taGFydmVzdC10cmVlc2l0LWNvbmZpZ3Mgd2l0aCBkZWxheS1tb2RlLWhvb2tzLgoobWFy a2Rvd24tdHMtLWNvbmZpZ3VyZS1jdXJyZW50LWJ1ZmZlcik6IFJlbmFtZSBmcm9tCm1hcmtkb3du LXRzLS1hZGQtY29uZmlnLWZvci1tb2RlLgoobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUp OiBOZXcgaGVscGVyIGV4dHJhY3RpbmcgbGFuZ3VhZ2UKc3ltYm9sIGZyb20gY29kZV9mZW5jZV9j b250ZW50IG5vZGUuCihtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpOiBOZXcgYnVm ZmVyLWxvY2FsIGhhc2ggdGFibGUKY2FjaGluZyBmb250aWZpY2F0aW9uIHJlc3VsdHMgZm9yIG5v bi10cmVlLXNpdHRlciBjb2RlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1j b2xsZWN0LWZhY2VzKTogTmV3IGZ1bmN0aW9uCmhhcnZlc3RpbmcgZmFjZSBwcm9wZXJ0aWVzIGZy b20gYSBtb2RlIGluIGFuIGluZGlyZWN0IG9yCnRlbXBvcmFyeSBidWZmZXIuCihtYXJrZG93bi10 cy0tZm9udGlmeS1ub24tdHMtY29kZS1ibG9jayk6IE5ldyBmb250aWZpZXIgZm9yCm5vbi10cmVl LXNpdHRlciBtb2RlcyB2aWEgdGVtcG9yYXJ5IGJ1ZmZlciBmb250LWxvY2suCihtYXJrZG93bi10 cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2RlKTogTmV3IGZ1bmN0aW9uIHdpdGgKaGV1cmlzdGlj IG1vZGUgbmFtZSBwcm9iaW5nLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2Up OiBSZW5hbWUgZnJvbQptYXJrZG93bi10cy0tY29udmVydC1jb2RlLWJsb2NrLWxhbmd1YWdlIHdp dGggc3VwcG9ydCBmb3Igbm9uLXRzCm1vZGVzIGFuZCByZWN1cnNpdmUgbWFya2Rvd24gaGFuZGxp bmcuCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzKQoobWFya2Rvd24tdHMtY29kZS1i bG9jay10aGluZy1jb21tYW5kcykKKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stcmVnaW9uLWNvbW1h bmRzKTogTmV3IGNvbW1hbmQgbGlzdHMgZm9yCmNvZGUtYmxvY2sgY29udGV4dCBleGVjdXRpb24u CihtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlKQoobWFya2Rv d24tdHMtLW1heWJlLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2spCihtYXJrZG93bi10cy0tY29k ZS1ibG9jay14cmVmLWZpbmQtZGVmaW5pdGlvbnMpCihtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQt aW4tY29kZS1ibG9jayk6IE5ldyBjb2RlIGJsb2NrIG1pbm9yCm1vZGUgd2l0aCB0ZW1wLWJ1ZmZl ciBjb21tYW5kIGRpc3BhdGNoLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZSk6IE5l dyBjb21tYW5kIGZvciBuZXdsaW5lCmluc2lkZSBjb2RlIGJsb2NrcywgZGlzcGF0Y2hpbmcgdG8g dGhlIGJsb2NrJ3MgbW9kZS4KKG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncyk6IFVwZGF0ZSBy YW5nZSBjb25maWd1cmF0aW9uOwpyZW1vdmUgOnJhbmdlLWZuIHRyZWVzaXQtcmFuZ2UtZm4tZXhj bHVkZS1jaGlsZHJlbi4KKG1hcmtkb3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMpCihtYXJr ZG93bi10cy0tb3V0bGluZS12aWV3LWNoYW5nZSk6IE5ldyBoZWxwZXJzIGZvciBpbWFnZQpvdmVy bGF5IG1hbmFnZW1lbnQgZHVyaW5nIG91dGxpbmUgZm9sZC91bmZvbGQuCihtYXJrZG93bi10cy0t b3V0bGluZS1pbnZpc2libGUtcCk6IE5ldyBoZWxwZXIgdGVzdGluZyB3aGV0aGVyIGEKcG9zaXRp b24gaXMgaW5zaWRlIGFuIG91dGxpbmUtZm9sZGVkIHJlZ2lvbi4KKG1hcmtkb3duLXRzLS1ob3N0 LXJhbmdlcy1ub3RpZmllcik6IE5ldyBmdW5jdGlvbiBwcnVuaW5nIHN0YWxlCmNvZGUgYmxvY2sg b3ZlcmxheXMgd2hlbiB0aGUgaG9zdCBwYXJzZSB0cmVlIGNoYW5nZXMuCihtYXJrZG93bi10cy0t YmFyZi1pZi1ub3QtbW9kZSk6IE5ldyBoZWxwZXIgc2lnbmFsaW5nIGEKdXNlci1lcnJvciB3aGVu IHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBub3QgZGVyaXZlZCBmcm9tCm1hcmtkb3duLXRzLW1vZGUu CihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZSk6IE5ldyBtaW5vciBtb2Rl IGVuYWJsZWQKd2hlbiBwb2ludCBpcyB3aXRoaW4gYSBmZW5jZWQgY29kZSBibG9jaywgYWN0aXZh dGluZwptYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1tYXAgc28gZWxpZ2li bGUgY29tbWFuZHMKZGlzcGF0Y2ggdG8gdGhlIGJsb2NrJ3MgbWFqb3IgbW9kZS4KKG1hcmtkb3du LXRzLS1zZXQtaGlkZS1tYXJrdXApOiBDbGVhciBpbWFnZSBvdmVybGF5cyB3aGVuCnRvZ2dsaW5n IG1hcmt1cCB2aXNpYmlsaXR5LgoobWFya2Rvd24tdHMtLXNldC1pbmxpbmUtaW1hZ2VzKQoobWFy a2Rvd24tdHMtdG9nZ2xlLWlubGluZS1pbWFnZXMpOiBOZXcgZnVuY3Rpb25zIGZvciB0b2dnbGlu ZwppbmxpbmUgaW1hZ2UgZGlzcGxheS4KKG1hcmtkb3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgt bGV2ZWwpOiBOZXcgY29uc3RhbnQuCihtYXJrZG93bi10cy0taGVhZGluZy1hdC1wb2ludCwgbWFy a2Rvd24tdHMtLWhlYWRpbmctbGV2ZWwpCihtYXJrZG93bi10cy0tc2VjdGlvbi1hdC1wb2ludCk6 IE5ldyBoZWFkaW5nIG5hdmlnYXRpb24gaGVscGVycy4KKG1hcmtkb3duLXRzLXByb21vdGUsIG1h cmtkb3duLXRzLWRlbW90ZSk6IE5ldyBjb21tYW5kcyBmb3IKaGVhZGluZyBhbmQgbGlzdCBpdGVt IHByb21vdGlvbi9kZW1vdGlvbiB3aXRoIHJlZ2lvbiBzdXBwb3J0LgoobWFya2Rvd24tdHMtLXBy b21vdGUtb3ItZGVtb3RlKQoobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lvbik6 IE5ldyBoZWFkaW5nIGxldmVsCmFkanVzdG1lbnQgZnVuY3Rpb25zLgoobWFya2Rvd24tdHMtbW92 ZS1zdWJ0cmVlLXVwLCBtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtZG93bik6Ck5ldyBjb21tYW5k cyBmb3IgbW92aW5nIHNlY3Rpb25zIGFuZCBsaXN0IGl0ZW1zLgoobWFya2Rvd24tdHMtLXNlY3Rp b24tZm9sZGVkLXApCihtYXJrZG93bi10cy0tbW92ZS1zdWJ0cmVlLXVwLW9yLWRvd24pOiBOZXcg c3VidHJlZSBtb3ZlIHdpdGgKZm9sZGluZyBzdGF0ZSBwcmVzZXJ2YXRpb24uCihtYXJrZG93bi10 cy10b2dnbGUtY2hlY2tib3gpOiBOZXcgY29tbWFuZCB0byB0b2dnbGUgdGFzayBsaXN0CmNoZWNr Ym94ZXMuCihtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KTogTmV3IGhlbHBlciB3aXRo IGJsb2NrIHF1b3RlCm1hcmtlciBoYW5kbGluZy4KKG1hcmtkb3duLXRzLS1saXN0LW1hcmtlci13 aWR0aCwgbWFya2Rvd24tdHMtLWxpc3QtaXRlbS1yZWdpb24pCihtYXJrZG93bi10cy0tbGlzdC1v cmRlcmVkLWl0ZW0tcCk6IE5ldyBsaXN0IGl0ZW0gaGVscGVycy4KKG1hcmtkb3duLXRzLS1saXN0 LXByb21vdGUtb3ItZGVtb3RlKTogTmV3IGZ1bmN0aW9uIHdpdGggb3JkZXJlZApsaXN0IG5lc3Rp bmcgZ3VhcmQuCihtYXJrZG93bi10cy0tbGlzdC1ub2RlLWJvbCwgbWFya2Rvd24tdHMtLWxpc3Qt bW92ZSk6IE5ldyBsaXN0Cml0ZW0gbW92ZW1lbnQgZnVuY3Rpb25zLgoobWFya2Rvd24tdHMtcmVu dW1iZXItbGlzdCk6IE5ldyBjb21tYW5kIGZvciBzZXF1ZW50aWFsIGxpc3QKcmVudW1iZXJpbmcg d2l0aCBwcmVmaXggYXJndW1lbnQgc3VwcG9ydC4KKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3 LW1hcmtlcikKKG1hcmtkb3duLXRzLS1uZXctbWFya2VyLWZvci1saW5lKTogTmV3IG1hcmtlciBz dHJpbmcgZ2VuZXJhdG9ycwpmb3IgbGlzdCBpdGVtIGluc2VydGlvbi4KKG1hcmtkb3duLXRzLS1s aW5lLWJsb2NrLXF1b3RlLWRlcHRoKTogTmV3IGhlbHBlciBjb3VudGluZyBibG9jawpxdW90ZSBk ZXB0aC4KKG1hcmtkb3duLXRzLW5ld2xpbmUpOiBOZXcgUkVUIGNvbW1hbmQgZm9yIGNvbnRleHQt YXdhcmUKbmV3bGluZS4KKG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0pOiBOZXcgTS1SRVQg Y29tbWFuZCB0aGF0IGNyZWF0ZXMgYQpuZXcgbGlzdCBpdGVtLgoobWFya2Rvd24tdHMtLWZpbGwt dW5maWxsYWJsZS1ibG9jay1xdWVyeSk6IE5ldyB0cmVlLXNpdHRlcgpxdWVyeSBmb3IgdW5maWxs YWJsZSBibG9ja3MuCihtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uKTogTmV3IGhl bHBlciBmb3IgbGlzdCBpdGVtCnRleHQgYWxpZ25tZW50LgoobWFya2Rvd24tdHMtLWZpbGwtbGlz dC1pdGVtKTogTmV3IGZ1bmN0aW9uIGZpbGxpbmcgd2l0aGluIGxpc3QKaXRlbXMgd2l0aG91dCBt ZXJnaW5nIGFkamFjZW50IGl0ZW1zLgoobWFya2Rvd24tdHMtLWFkYXB0aXZlLWZpbGwpOiBOZXcg YWRhcHRpdmUgZmlsbCBmdW5jdGlvbiBmb3IKbGlzdCBpdGVtIGNvbnRpbnVhdGlvbi4KKG1hcmtk b3duLXRzLS1maWxsLWZvcndhcmQtcGFyYWdyYXBoKTogTmV3IHBhcmFncmFwaCBtb3Rpb24KcmVz cGVjdGluZyBsaXN0IGl0ZW1zIGFuZCB1bmZpbGxhYmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLWZp bGwtcGFyYWdyYXBoKTogTmV3IGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uIHdpdGgKY29uZCogZGlz cGF0Y2ggZm9yIGxpc3RzLCBibG9jayBxdW90ZXMsIEhUTUwgY29tbWVudHMsIGFuZAp1bmZpbGxh YmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1maWxsLWh0bWwtY29tbWVudCk6IE5ldyBIVE1MIGNv bW1lbnQgZmlsbGVyIHdpdGgKY29udGludWF0aW9uIGFsaWdubWVudC4KKG1hcmtkb3duLXRzLS1i bG9jay1xdW90ZS1wcmVmaXgpOiBOZXcgaGVscGVyIHByZXNlcnZpbmcKZXhpc3RpbmcgYmxvY2sg cXVvdGUgbWFya2VyIHN0eWxlLgoobWFya2Rvd24tdHMtLWZpbGwtYmxvY2stcXVvdGUpOiBOZXcg YmxvY2sgcXVvdGUgZmlsbGVyIHdpdGgKbGlzdCBpdGVtIHRleHQgY29sdW1uIGFsaWdubWVudC4K KG1hcmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0KTogTmV3IGFsaXN0IG9mIGVtcGhhc2lzIG1hcmtl cnMuCihtYXJrZG93bi10cy0tZW1waGFzaXMtbm9kZS1hdC1wb2ludCk6IE5ldyB0cmVlLXNpdHRl ciBiYXNlZAplbXBoYXNpcyBkZXRlY3Rpb24uCihtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMp OiBOZXcgY29tbWFuZCByZW1vdmluZyBlbXBoYXNpcyBhdApwb2ludCBvciByZWdpb24uCihtYXJr ZG93bi10cy1lbXBoYXNpemUpOiBOZXcgaW50ZXJhY3RpdmUgZW1waGFzaXMgaW5zZXJ0aW9uIHdp dGgKcmVnaW9uIHdyYXBwaW5nIGFuZCB3b3JkLWF0LXBvaW50IHN1cHBvcnQuCihtYXJrZG93bi10 cy1pbnNlcnQtc3RydWN0dXJlKTogTmV3IGNvbW1hbmQgZm9yIGluc2VydGluZyBjb2RlCmJsb2Nr cywgYmxvY2sgcXVvdGVzLCBhbmQgZGl2aWRlcnMuCihtYXJrZG93bi10cy0taW5zZXJ0LWNvZGUt YmxvY2spOiBOZXcgZnVuY3Rpb24gd2l0aCBsYW5ndWFnZQpjb21wbGV0aW9uIGZyb20ga25vd24g bW9kZXMuCihtYXJrZG93bi10cy0taW5zZXJ0LWJsb2NrLXF1b3RlKTogTmV3IGZ1bmN0aW9uIHdp dGggcmVnaW9uCndyYXBwaW5nLgoobWFya2Rvd24tdHMtLWluc2VydC1kaXZpZGVyKTogTmV3IGZ1 bmN0aW9uIGZvciBob3Jpem9udGFsCnJ1bGVzLgoobWFya2Rvd24tdHMtLWFwcGx5LWVsbGlwc2lz KTogTmV3IGZ1bmN0aW9uIGFwcGx5aW5nIGN1c3RvbQplbGxpcHNpcyB2aWEgZGlzcGxheSB0YWJs ZS4KKG1hcmtkb3duLXRzLS1zZXQtdXApOiBSZW5hbWUgZnJvbSBtYXJrZG93bi10cy1zZXR1cC4K KG1hcmtkb3duLXRzLW91dGxpbmUtY3ljbGUpOiBOZXcgVEFCIGNvbW1hbmQgY3ljbGluZyBvdXRs aW5lCnZpc2liaWxpdHkgb24gaGVhZGluZ3MuCihtYXJrZG93bi10cy1tb2RlLW1hcCk6IE5ldyBr ZXltYXAgZm9yIGNvZGUgYmxvY2sgbmF2aWdhdGlvbiwKYmluZGluZ3MgZm9yIGhlYWRpbmcgbmF2 aWdhdGlvbiwgc3RydWN0dXJlIGVkaXRpbmcsIGVtcGhhc2lzLAphbmQgbGlzdCBvcGVyYXRpb25z LgoobWFya2Rvd24tdHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtbWFwKTogTmV3IGtleW1h cCBmb3IKY29kZSBibG9jayBjb250ZXh0LgoobWFya2Rvd24tdHMtbW9kZS1tZW51KTogTmV3IG1l bnUgYmFyIHdpdGggU2hvdy9IaWRlLCBOYXZpZ2F0ZQpIZWFkaW5ncywgRWRpdCBTdHJ1Y3R1cmUs IGFuZCBFZGl0aW5nIHNlY3Rpb25zLgoobWFya2Rvd24tdHMtbW9kZSk6IEFkZCBvdXRsaW5lLW1p bm9yLW1vZGUsIGVsbGlwc2lzLCBmb2xkaW5nLApmaWxsLXBhcmFncmFwaCBpbnRlZ3JhdGlvbiwg Y29kZS1ibG9jay1jb250ZXh0LW1vZGUgaG9va3MsCmNvbW1lbnQgc2V0dGluZ3MsIGFuZCBvdXRs aW5lLXZpZXctY2hhbmdlLWhvb2suICBVc2UKbWFya2Rvd24tdHMtbW9kZSBkaXJlY3RseSBpbiBh dXRvLW1vZGUtYWxpc3QgaW5zdGVhZCBvZgptYXJrZG93bi10cy1tb2RlLW1heWJlLgoobWFya2Rv d24tdHMtbW9kZS1pbnN0YWxsLXBhcnNlcnMpOiBOZXcgY29tbWFuZCBmb3IgaW5zdGFsbGluZwpy ZXF1aXJlZCBhbmQgb3B0aW9uYWwgdHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgZ3JhbW1hcnMuCihtYXJr ZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZSk6IE5ldyBtaW5vciBtb2RlIGZvciBjb2Rl CmJsb2NrIGNvbnRleHQuCihtYXJrZG93bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlcikK KG1hcmtkb3duLXRzLS1maW5kLW5leHQtY29kZS1ibG9jay1kZWxpbWl0ZXIpOiBOZXcgaGVscGVy cyBmb3IKbG9jYXRpbmcgZmVuY2VkIGNvZGUgYmxvY2sgZGVsaW1pdGVyIG5vZGVzLgoobWFya2Rv d24tdHMtbW92ZS10by1uZXh0LWNvZGUtYmxvY2spCihtYXJrZG93bi10cy1tb3ZlLXRvLXByZXZp b3VzLWNvZGUtYmxvY2spOiBOZXcgY29tbWFuZHMgZm9yCm5hdmlnYXRpbmcgYmV0d2VlbiBmZW5j ZWQgY29kZSBibG9ja3MuCihtYXJrZG93bi10cy0tdGFibGUtYWJ1dHRpbmctcG9zLCBtYXJrZG93 bi10cy0tdGFibGUtbm9kZS1jZWxsKQoobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93LCBtYXJr ZG93bi10cy0tdGFibGUtcGFyc2UtZXJyb3ItcCk6Ck5ldyBwaXBlIHRhYmxlIG5vZGUgaGVscGVy cy4KKG1hcmtkb3duLXRzLWF0LXRhYmxlLXApOiBOZXcgcHJlZGljYXRlIHJldHVybmluZyBub24t bmlsIHdoZW4KcG9pbnQgaXMgYXQgb3Igd2l0aGluIGEgcGlwZSB0YWJsZS4KKG1hcmtkb3duLXRz LS1lbmFibGUtaW4tdGFibGUtbW9kZSk6IE5ldyBoZWxwZXIgZW5hYmxpbmcKbWFya2Rvd24tdHMt aW4tdGFibGUtbW9kZSBmcm9tIHBvc3QtY29tbWFuZC1ob29rLgoobWFya2Rvd24tdHMtLXRhYmxl LWJvZHktcm93LW5lYXItcG9zKTogTmV3IGhlbHBlciBsb2NhdGluZyB0aGUKbmVhcmVzdCBib2R5 IHJvdyB0byBhIHBvc2l0aW9uLgoobWFya2Rvd24tdHMtLXRhYmxlLWNvbXB1dGUtbm9kZS1jb2x1 bW4pCihtYXJrZG93bi10cy10YWJsZS0tZ290by1jb2x1bW4pOiBOZXcgaGVscGVycyBmb3IgY29s dW1uLWJhc2VkCnRhYmxlIG5hdmlnYXRpb24uCihtYXJrZG93bi10cy0tdGFibGUtYWxpZ25lcnMs IG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIpCihtYXJrZG93bi10cy0tdGFibGUtYWxp Z24tY2VsbCk6IE5ldyB0YWJsZSBjZWxsIGFsaWdubWVudApoZWxwZXJzLgoobWFya2Rvd24tdHMt dGFibGUtaW5zZXJ0LXRhYmxlKTogTmV3IGNvbW1hbmQgdG8gaW5zZXJ0IGEgcGlwZQp0YWJsZSB3 aXRoIGNvbmZpZ3VyYWJsZSByb3dzIGFuZCBjb2x1bW5zLgoobWFya2Rvd24tdHMtdGFibGUtZGVs ZXRlLXRhYmxlKTogTmV3IGNvbW1hbmQgdG8gZGVsZXRlIHRoZSBwaXBlCnRhYmxlIGF0IHBvaW50 LgoobWFya2Rvd24tdHMtdGFibGUtcHJldmlvdXMtcm93LCBtYXJrZG93bi10cy10YWJsZS1uZXh0 LXJvdykKKG1hcmtkb3duLXRzLXRhYmxlLXByZXZpb3VzLWNlbGwsIG1hcmtkb3duLXRzLXRhYmxl LW5leHQtY2VsbCk6Ck5ldyBjb21tYW5kcyBmb3IgbmF2aWdhdGluZyB0YWJsZSByb3dzIGFuZCBj ZWxscy4KKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYmVsb3cpCihtYXJrZG93bi10cy10 YWJsZS1pbnNlcnQtcm93LWFib3ZlKQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWJlbG93 KQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWFib3ZlKQoobWFya2Rvd24tdHMtdGFibGUt aW5zZXJ0LXJvdyk6IE5ldyBjb21tYW5kcyBmb3IgaW5zZXJ0aW5nIGFuZApjbG9uaW5nIHRhYmxl IHJvd3MuCihtYXJrZG93bi10cy10YWJsZS1kZWxldGUtcm93LCBtYXJrZG93bi10cy10YWJsZS1t b3ZlLXJvdy11cCkKKG1hcmtkb3duLXRzLXRhYmxlLW1vdmUtcm93LWRvd24sIG1hcmtkb3duLXRz LXRhYmxlLW1vdmUtcm93KToKTmV3IGNvbW1hbmRzIGZvciBkZWxldGluZyBhbmQgbW92aW5nIHRh YmxlIHJvd3MuCihtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQpCihtYXJrZG93 bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLXJpZ2h0KQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUt Y29sdW1uLWxlZnQpCihtYXJrZG93bi10cy10YWJsZS1jbG9uZS1jb2x1bW4tcmlnaHQpCihtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uKTogTmV3IGNvbW1hbmRzIGZvciBpbnNlcnRpbmcK YW5kIGNsb25pbmcgdGFibGUgY29sdW1ucy4KKG1hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1jb2x1 bW4pCihtYXJrZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbi1sZWZ0KQoobWFya2Rvd24tdHMtdGFi bGUtbW92ZS1jb2x1bW4tcmlnaHQpCihtYXJrZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbik6IE5l dyBjb21tYW5kcyBmb3IgZGVsZXRpbmcgYW5kCm1vdmluZyB0YWJsZSBjb2x1bW5zLgoobWFya2Rv d24tdHMtdGFibGUtYWxpZ24tY29sdW1uLWxlZnQpCihtYXJrZG93bi10cy10YWJsZS1hbGlnbi1j b2x1bW4tY2VudGVyKQoobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uLXJpZ2h0KQoobWFy a2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uKTogTmV3IGNvbW1hbmRzIGZvciBzZXR0aW5nCmNv bHVtbiBhbGlnbm1lbnQuCihtYXJrZG93bi10cy10YWJsZS1hbGlnbi10YWJsZSk6IE5ldyBjb21t YW5kIHRvIGFsaWduIGFsbApjb2x1bW5zIGluIHRoZSB0YWJsZSBhdCBwb2ludC4KKG1hcmtkb3du LXRzLXRhYmxlLXRyYW5zcG9zZS10YWJsZSk6IE5ldyBjb21tYW5kIHRvIHRyYW5zcG9zZQp0aGUg dGFibGUgYXQgcG9pbnQuCihtYXJrZG93bi10cy10YWJsZS1jb252ZXJ0LWNzdi1yZWdpb24pCiht YXJrZG93bi10cy10YWJsZS1jb252ZXJ0LXRzdi1yZWdpb24pCihtYXJrZG93bi10cy10YWJsZS1j b252ZXJ0LXJlZ2lvbik6IE5ldyBjb21tYW5kcyB0byBjb252ZXJ0CmRlbGltaXRlZCB0ZXh0IHJl Z2lvbnMgdG8gcGlwZSB0YWJsZXMuCihtYXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUtY3N2 KQoobWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlLXRzdikKKG1hcmtkb3duLXRzLXRhYmxl LWV4cG9ydC10YWJsZSk6IE5ldyBjb21tYW5kcyB0byBleHBvcnQgdGhlCnBpcGUgdGFibGUgYXQg cG9pbnQgdG8gQ1NWIG9yIFRTViBmb3JtYXQuCihtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlLW1h cCk6IE5ldyBrZXltYXAgZm9yCm1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUuCihtYXJrZG93bi10 cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YpOiBOZXcgYnVmZmVyLWxvY2FsCnZhcmlh YmxlIGZvciBjb2RlIGJsb2NrIGNvbnRleHQgb3ZlcmxheS4KKG1hcmtkb3duLXRzLS1jb2RlLWJs b2NrLWluLWNvbnRleHQtbW9kZS11cGRhdGUtb3YpOiBOZXcKZnVuY3Rpb24gdXBkYXRpbmcgdGhl IGNvZGUgYmxvY2sgY29udGV4dCBvdmVybGF5LgoobWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZSk6 IE5ldyBtaW5vciBtb2RlIGVuYWJsZWQgd2hlbiBwb2ludAppcyB3aXRoaW4gYSBwaXBlIHRhYmxl LCBhY3RpdmF0aW5nIG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbWFwLgoobWFya2Rvd24tdHMt LWluLXRhYmxlLW1vZGUtb3YpCihtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1nZXQtb3YpCiht YXJrZG93bi10cy0tdGFibGUtdGljay11cGRhdGUpCihtYXJrZG93bi10cy0tdGFibGUtdGljay1z dGFsZS1wKQoobWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtdXBkYXRlLW92KTogTmV3IGhlbHBl cnMgc3VwcG9ydGluZwptYXJrZG93bi10cy1pbi10YWJsZS1tb2RlIG92ZXJsYXkgbWFuYWdlbWVu dC4KKG1hcmtkb3duLXRzLXRhYmxlLW1vZGUpOiBOZXcgbWlub3IgbW9kZSBwcm92aWRpbmcgdGFi bGUgZWRpdGluZwpjb21tYW5kcyBhbmQgYXV0by1hbGlnbm1lbnQuCihtYXJrZG93bi10cy1tb2Rl LW1heWJlKTogUmVtb3ZlOyBhdXRvLW1vZGUtYWxpc3Qgbm93IHVzZXMKbWFya2Rvd24tdHMtbW9k ZSBkaXJlY3RseS4KQXV0by1tb2RlLWFsaXN0OiBBZGQgLm1hcmtkb3duIGFuZCAubWR4IGV4dGVu c2lvbnMuCgoqIGxpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbDogTmV3IGZpbGUg cHJvdmlkaW5nIGV4dHJhCmZlYXR1cmVzIGZvciBtYXJrZG93bi10cy1tb2RlLgoobWFya2Rvd24t dHMtY29tbW9ubWFyay1zcGVjLXVybCwgbWFya2Rvd24tdHMtZ2ZtLXNwZWMtdXJsKTogTmV3CmNv bnN0YW50cyBmb3IgQ29tbW9uTWFyayBhbmQgR0ZNIHNwZWNpZmljYXRpb24gVVJMcy4KKG1hcmtk b3duLXRzLWJyb3dzZS1jb21tb25tYXJrLXNwZWMpCihtYXJrZG93bi10cy1icm93c2UtZ2ZtLXNw ZWMpOiBOZXcgY29tbWFuZHMgdG8gYnJvd3NlIHRoZQpDb21tb25NYXJrIGFuZCBHRk0gc3BlY2lm aWNhdGlvbnMuCihtYXJrZG93bi10cy1jb252ZXJ0KTogTmV3IGN1c3RvbWl6YXRpb24gZ3JvdXAg Zm9yIE1hcmtkb3duCmNvbnZlcnNpb24vZXhwb3J0IGZlYXR1cmVzLgoobWFya2Rvd24tdHMtZGVm YXVsdC1jb252ZXJ0ZXIpOiBOZXcgb3B0aW9uIHRvIHNldCB0aGUgZGVmYXVsdApmb3JtYXQgYW5k IGNvbnZlcnRlciBmb3IgTWFya2Rvd24gZXhwb3J0LgoobWFya2Rvd24tdHMtY29udmVydC1kaXNw bGF5LWZ1bmN0aW9uKTogTmV3IG9wdGlvbiBzcGVjaWZ5aW5nCnRoZSBmdW5jdGlvbiB1c2VkIHRv IGRpc3BsYXkgY29udmVydGVkIG91dHB1dC4KKG1hcmtkb3duLXRzLWNvbnZlcnRlcnMpOiBOZXcg dmFyaWFibGUgbGlzdGluZyBmb3JtYXQvY29udmVydGVyCmNvbmZpZ3VyYXRpb25zIGZvciBwYW5k b2MsIGNtYXJrLCBjbWFyay1nZm0sIG1hcmtkb3duLCBhbmQKbWFya2Rvd24ucGwuCihtYXJrZG93 bi10cy1jb252ZXJ0LWZpbGUsIG1hcmtkb3duLXRzLWNvbnZlcnQpOiBOZXcgY29tbWFuZHMgdG8K Y29udmVydCBNYXJrZG93biBidWZmZXJzIG9yIGZpbGVzIHRvIEhUTUwsIFBERiwgYW5kIG90aGVy CmZvcm1hdHMgdmlhIGV4dGVybmFsIGNvbnZlcnRlcnMuCihtYXJrZG93bi10cy10b2MpOiBOZXcg Y3VzdG9taXphdGlvbiBncm91cCBmb3IgdGFibGUgb2YgY29udGVudHMKZmVhdHVyZXMuCihtYXJr ZG93bi10cy10b2MtZ2VuZXJhdGUtd2Fybi1pZi1ub25lKTogTmV3IG9wdGlvbiBjb250cm9sbGlu ZwpiZWhhdmlvciB3aGVuIG5vIFRPQyBpcyBmb3VuZCBkdXJpbmcgZ2VuZXJhdGlvbi4KKG1hcmtk b3duLXRzLXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZS1saWdodGVyKTogTmV3IG9wdGlvbgpm b3IgdGhlIGJlZm9yZS1zYXZlIFRPQyB1cGRhdGUgbWlub3IgbW9kZSBsaWdodGVyIHN0cmluZy4K KG1hcmtkb3duLXRzLXRvYy1zbHVnLWZ1bmN0aW9uKTogTmV3IG9wdGlvbiB0byBzZWxlY3QgdGhl IHNsdWcKYWxnb3JpdGhtIHVzZWQgZm9yIFRPQyBoZWFkaW5nIGFuY2hvcnMuCihtYXJrZG93bi10 cy0tdG9jLWhhbmRsZXMsIG1hcmtkb3duLXRzLS10b2MtaGFuZGxlLWNsYXNzZXMpOiBOZXcKdmFy aWFibGVzIGRlZmluaW5nIFRPQyBoYW5kbGUgdHlwZXMgYW5kIGNsYXNzZXMuCihtYXJrZG93bi10 cy0tdG9jLWV4cGFuZC1jYW5kaWRhdGUtaGFuZGxlcywgbWFya2Rvd24tdHMtLXRvY3MpCihtYXJr ZG93bi10cy0tdG9jcy1zYW5pdHktY2hlY2spCihtYXJrZG93bi10cy0tdG9jLWNvbGxlY3QtY2Fu ZGlkYXRlcykKKG1hcmtkb3duLXRzLS10b2MtbGlzdC1pdGVtLWRlcHRoKQoobWFya2Rvd24tdHMt LXRvYy1hdHhfaGVhZGVyLW5vcm1hbGl6ZSkKKG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxp emVycykKKG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxpemUpOiBOZXcgaW50ZXJuYWwgaGVs cGVycyBmb3IgVE9DCnBhcnNpbmcgYW5kIHRleHQgbm9ybWFsaXphdGlvbi4KKG1hcmtkb3duLXRz LXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZSk6IE5ldyBtaW5vciBtb2RlIHRoYXQKcmVnZW5l cmF0ZXMgdGFibGVzIG9mIGNvbnRlbnRzIGJlZm9yZSBzYXZpbmcuCihtYXJrZG93bi10cy10b2Mt Y2xlYXItYW5kLXJlbW92ZSwgbWFya2Rvd24tdHMtdG9jLWNsZWFyKTogTmV3CmNvbW1hbmRzIHRv IHJlbW92ZSBvciBjbGVhciBUT0MgYm9kaWVzLgoobWFya2Rvd24tdHMtdG9jLWluc2VydC10ZW1w bGF0ZSk6IE5ldyBjb21tYW5kIHRvIGluc2VydCBhIFRPQwp0ZW1wbGF0ZSBhdCBwb2ludC4KKG1h cmtkb3duLXRzLXRvYy1nZW5lcmF0ZSk6IE5ldyBjb21tYW5kIHRvIGdlbmVyYXRlIHRhYmxlcyBv Zgpjb250ZW50cyBpbiB0aGUgY3VycmVudCBidWZmZXIuCgpJbmNsdWRlcyBmaXhlcyBmb3I6IChi dWcjODA2MTMpIChidWcjODA2MjUpIChidWcjODA2OTApCgpDby1hdXRob3JlZC1ieTogU3TDqXBo YW5lIE1hcmtzIDxzaGlwbWludHNAZ21haWwuY29tPgotLS0KIGxpc3AvdGV4dG1vZGVzL21hcmtk b3duLXRzLW1vZGUteC5lbCB8IDExMzQgKysrKysrCiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10 cy1tb2RlLmVsICAgfCA1NDUxICsrKysrKysrKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNo YW5nZWQsIDYzMDAgaW5zZXJ0aW9ucygrKSwgMjg1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGxpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbAoKZGlmZiAtLWdpdCBh L2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbCBiL2xpc3AvdGV4dG1vZGVzL21h cmtkb3duLXRzLW1vZGUteC5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNzQwNTA3OGFiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3RleHRtb2Rlcy9tYXJrZG93 bi10cy1tb2RlLXguZWwKQEAgLTAsMCArMSwxMTM0IEBACis7OzsgbWFya2Rvd24tdHMtbW9kZS14 LmVsIC0tLSBtYXJrZG93bi10cy1tb2RlIGV4dHJhcyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0OyAt Ki0KKworOzsgQ29weXJpZ2h0IChDKSAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorCis7OyBBdXRob3IgICAgICAgICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1 bGlhdG9AZ21haWwuY29tPgorOzsgICAgICAgICAgICAgICAgICA6IFN0w6lwaGFuZSBNYXJrcyA8 c2hpcG1pbnRzQGdtYWlsLmNvbT4KKzs7IE1haW50YWluZXIgICAgICAgOiBSYWh1bCBNYXJ0aW0g SnVsaWF0byA8cmFodWwuanVsaWF0b0BnbWFpbC5jb20+Cis7OyBDcmVhdGVkICAgICAgICAgIDog QXByaWwgMjAyNgorOzsgVmVyc2lvbiAgICAgICAgICA6IDEuMAorOzsgUGFja2FnZS1SZXF1aXJl cyA6ICgoZW1hY3MgIjMxLjEiKSkKKzs7IEtleXdvcmRzICAgICAgICAgOiBtYXJrZG93biBtZCB0 ZXh0IGVkaXQgbGFuZ3VhZ2VzIHRyZWUtc2l0dGVyCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdOVSBFbWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor OzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNzIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUg PGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1lbnRhcnk6CisKKzs7 OyBDb2RlOgorCisocmVxdWlyZSAnbWFya2Rvd24tdHMtbW9kZSkKKworOzs7IENvbnZlbmllbmNl OgorCisoZGVmY29uc3QgbWFya2Rvd24tdHMtY29tbW9ubWFyay1zcGVjLXVybAorICAiaHR0cHM6 Ly9zcGVjLmNvbW1vbm1hcmsub3JnL2N1cnJlbnQvIikKKworKGRlZmNvbnN0IG1hcmtkb3duLXRz LWdmbS1zcGVjLXVybAorICAiaHR0cHM6Ly9naXRodWIuZ2l0aHViLmNvbS9nZm0vIikKKworKGRl ZnVuIG1hcmtkb3duLXRzLWJyb3dzZS1jb21tb25tYXJrLXNwZWMgKCkKKyAgIkJyb3dzZSB0aGUg Q29tbW9uTWFyayBNYXJrZG93biBzcGVjIGluIGEgd2ViIGJyb3dzZXIuIgorICAoaW50ZXJhY3Rp dmUpCisgIChicm93c2UtdXJsIG1hcmtkb3duLXRzLWNvbW1vbm1hcmstc3BlYy11cmwpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtYnJvd3NlLWdmbS1zcGVjICgpCisgICJCcm93c2UgdGhlIEdpdEh1 YiBGbGF2b3JlZCBNYXJrZG93biBzcGVjIGluIGEgd2ViIGJyb3dzZXIuIgorICAoaW50ZXJhY3Rp dmUpCisgIChicm93c2UtdXJsIG1hcmtkb3duLXRzLWdmbS1zcGVjLXVybCkpCisKKzs7OyBFeHBv cnQgYW5kIHByZXZpZXc6CisKKyhkZWZncm91cCBtYXJrZG93bi10cy1jb252ZXJ0IG5pbAorICAi Q29udmVydCBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycyBvciBmaWxlcy4iCisgIDpwcmVmaXgg Im1hcmtkb3duLXRzLWNvbnZlcnQtIgorICA6Z3JvdXAgJ3RleHQKKyAgOmdyb3VwICdlZGl0aW5n CisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1kZWZhdWx0LWNv bnZlcnRlciBuaWwKKyAgIkRlZmF1bHQgTWFya2Rvd24gZm9ybWF0IGFuZCBjb252ZXJ0ZXIuCitJ ZiBuaWwsIHlvdSB3aWxsIGJlIHByb21wdGVkIGZvciBhIGZvcm1hdCBhbmQgYSBjb252ZXJ0ZXIu CitTZWUgYG1hcmtkb3duLXRzLWNvbnZlcnRlcnMnLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0 IDp0YWcgIlByb21wdCBmb3IgZm9ybWF0IGFuZCBjb252ZXJ0ZXIiIG5pbCkKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIlBERiB2aWEgUGFuZG9jIiAocGRmIC4gcGFuZG9jKSkKKyAgICAg ICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkhUTUwgdmlhIFBhbmRvYyIgKGh0bWwgLiBwYW5kb2Mp KQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgY21hcmsiIChodG1sIC4g Y21hcmspKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgY21hcmstZ2Zt IChHaXRIdWIgYmVsbHMgYW5kIHdoaXN0bGVzKSIgKGh0bWwgLiBjbWFyay1nZm0pKQorICAgICAg ICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgbWFya2Rvd24iIChodG1sIC4gbWFya2Rv d24pKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgbWFya2Rvd24ucGwi IChodG1sIC4gbWFya2Rvd24ucGwpKQorICAgICAgICAgICAgICAgICAoY29ucyAgOnRhZyAiRm9y bWF0IGFuZCBDb252ZXJ0ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sIDp0YWcg IkZvcm1hdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sIDp0YWcgIkNvbnZlcnRl ciIpKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhk ZWZjdXN0b20gbWFya2Rvd24tdHMtY29udmVydC1kaXNwbGF5LWZ1bmN0aW9uICMnZXd3LW9wZW4t ZmlsZQorICAiRnVuY3Rpb24gdG8gZGlzcGxheSBjb252ZXJ0ZWQgTWFya2Rvd24gdGhlIG91dHB1 dCBmaWxlLgorVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudCwgdGhlIGZp bGUgbmFtZS4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJEaXNwbGF5IHVzaW5nIGBl d3cnIiBld3ctb3Blbi1maWxlKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxh eSBpbiBhIGJyb3dzZXIiIGJyb3dzZS11cmwtb2YtZmlsZSkKKyAgICAgICAgICAgICAgICAgKGNv bnN0IDp0YWcgIkRpc3BsYXkgb3V0cHV0IGZpbGUgaW4gYSBidWZmZXIiIGZpbmQtZmlsZS1vdGhl ci13aW5kb3cpCisgICAgICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJPdGhlciBmdW5jdGlv biIpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRl ZmNvbnN0IG1hcmtkb3duLXRzLS1jb252ZXJ0LWVycm9yLWJ1ZmZlcgorICAiKm1hcmtkb3duLXRz LWNvbnZlcnQgZXJyb3JzKiIpCisKKyhkZWZjb25zdCBtYXJrZG93bi10cy0tY29udmVydC1vdXRw dXQtYnVmZmVyCisgICIqbWFya2Rvd24tdHMtY29udmVydCBvdXRwdXQqIikKKworKGRlZnZhciBt YXJrZG93bi10cy1jb252ZXJ0ZXJzCisgIChsaXN0CisgICAoY29ucyAnaHRtbAorICAgICAgICAg KGxpc3QKKyAgICAgICAgICAoY29ucyAncGFuZG9jCisgICAgICAgICAgICAgICAgKGxpc3QgOmNv bW1hbmQgInBhbmRvYyIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5wdXQgJyhmaWxlIHN0ZGlu KQorICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhmaWxlKQorICAgICAgICAgICAgICAg ICAgICAgIDphcmd1bWVudHMtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRh IChpbnB1dC1maWxlIG91dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVu ZCAobGlzdCAiLWYiICJnZm0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICItdCIgImh0bWw1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1z dGFuZGFsb25lIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW8iIG91 dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBpbnB1dC1m aWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkp KSkpKQorICAgICAgICAgIChjb25zICdjbWFyaworICAgICAgICAgICAgICAgIChsaXN0IDpjb21t YW5kICJjbWFyayIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5wdXQgJyhmaWxlIHN0ZGluKQor ICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhzdGRvdXQpCisgICAgICAgICAgICAgICAg ICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEg KGlucHV0LWZpbGUgX291dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVu ZCAobGlzdCAiLXQiICJodG1sIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdo ZW4gaW5wdXQtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGlu cHV0LWZpbGUpKSkpKSkKKyAgICAgICAgICAoY29ucyAnY21hcmstZ2ZtCisgICAgICAgICAgICAg ICAgKGxpc3QgOmNvbW1hbmQgImNtYXJrLWdmbSIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5w dXQgJyhmaWxlIHN0ZGluKQorICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhzdGRvdXQp CisgICAgICAgICAgICAgICAgICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAgICAgICAgICAg ICAgICAgICAgIChsYW1iZGEgKGlucHV0LWZpbGUgX291dHB1dC1maWxlKQorICAgICAgICAgICAg ICAgICAgICAgICAgKGFwcGVuZCAobGlzdCAiLXQiICJodG1sIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBVc2UgR2l0SHViLXN0eWxlIDxwcmUgbGFuZz4gZm9yIGNv ZGUgYmxvY2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWdpdGh1 Yi1wcmUtbGFuZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSW5j bHVkZSByZW1haW5kZXIgb2YgY29kZSBibG9jayBpbmZvCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IHN0cmluZyBpbiBhIHNlcGFyYXRlIGF0dHJpYnV0ZS4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZnVsbC1pbmZvLXN0cmluZyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgVXNlIHN0eWxlIGF0dHJpYnV0 ZXMgdG8gYWxpZ24gdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgY2VsbHMgaW5zdGVhZCBvZiBhbGlnbiBhdHRyaWJ1dGVzLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLS10YWJsZS1wcmVmZXItc3R5bGUtYXR0cmlidXRlcyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5zaW9uIiAiZm9vdG5v dGVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1leHRlbnNpb24i ICJ0YWJsZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5z aW9uIiAic3RyaWtldGhyb3VnaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIi0tZXh0ZW5zaW9uIiAiYXV0b2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICItLWV4dGVuc2lvbiIgInRhZ2ZpbHRlciIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5zaW9uIiAidGFza2xpc3QiKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2hlbiBpbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkpKQorICAgICAgICAgIDs7ICdtYXJr ZG93bi5wbCBpcyB0aGUgc2FtZSBhcyAnbWFya2Rvd24gd2l0aCBhbm90aGVyIGNvbW1vbiBmaWxl CisgICAgICAgICAgOzsgbmFtZS4KKyAgICAgICAgICAoY29ucyAnbWFya2Rvd24ucGwKKyAgICAg ICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAibWFya2Rvd24ucGwiCisgICAgICAgICAgICAgICAg ICAgICAgOmlucHV0ICcoZmlsZSBzdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICA6b3V0cHV0 ICcoc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgIDphcmd1bWVudHMtZnVuY3Rpb24KKyAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmlsZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKGxpc3QgIi0taHRtbDR0YWdzIikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gaW5wdXQtZmlsZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICItLSIgaW5wdXQtZmlsZSkpKSkpKQorICAgICAg ICAgIDs7ICdtYXJrZG93biBpcyB0aGUgc2FtZSBhcyAnbWFya2Rvd24ucGwgd2l0aCBhbm90aGVy IGNvbW1vbiBmaWxlCisgICAgICAgICAgOzsgbmFtZS4KKyAgICAgICAgICAoY29ucyAnbWFya2Rv d24KKyAgICAgICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAibWFya2Rvd24iCisgICAgICAgICAg ICAgICAgICAgICAgOmlucHV0ICcoZmlsZSBzdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICA6 b3V0cHV0ICcoc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgIDphcmd1bWVudHMtZnVuY3Rp b24KKyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmls ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKGxpc3QgIi0taHRtbDR0YWdzIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gaW5wdXQtZmlsZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICItLSIgaW5wdXQtZmlsZSkpKSkpKSkp CisgICAoY29ucyAncGRmCisgICAgICAgICAobGlzdAorICAgICAgICAgIChjb25zICdwYW5kb2MK KyAgICAgICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAicGFuZG9jIgorICAgICAgICAgICAgICAg ICAgICAgIDppbnB1dCAnKGZpbGUgc3RkaW4pCisgICAgICAgICAgICAgICAgICAgICAgOm91dHB1 dCAnKGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAg ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGlucHV0LWZpbGUgb3V0cHV0LWZpbGUpCisgICAg ICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIChsaXN0ICItZiIgImdmbSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi10IiAicGRmIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLW8iIG91dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hlbiBpbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkpKSkpKQorICAiQW4gYWxpc3Qgb2YgZm9ybWF0 L2NvbnZlcnRlciBjb25maWd1cmF0aW9ucy4KK0l0IGlzIGEgdHdvIGxldmVsIGFsaXN0IHdpdGgg dGhlIGZpcnN0IGxldmVsIGJlaW5nIGZvcm1hdCwgZm9yIGV4YW1wbGUKK2BodG1sJyBvciBgcGRm JywgYW5kIHRoZSBzZWNvbmQgYmVpbmcgdGhlIGNvbnZlcnRlciBuYW1lLCBmb3IgZXhhbXBsZQor YHBhbmRvYycuICBBIGNvbnZlcnRlciBjb25maWd1cmF0aW9uIGVudHJ5IGlzIGEgcGxpc3Qgb2Yg dGhlIGZvcm06CisKKyAgXFw9Jyg6Y29tbWFuZCBcImNvbW1hbmQgbmFtZVwiCisgICAgOmlucHV0 IChmaWxlIHN0ZGluKSA7IGFjY2VwdHMgZmlsZSBuYW1lIG9yIHN0ZGluCisgICAgOm91dHB1dCAo c3Rkb3V0KSAgICA7IHByb2R1Y2VzIHN0ZG91dCBvbmx5CisgICAgOmFyZ3VtZW50cy1mdW5jdGlv biA7IGZ1bmN0aW9uOyBlLmcuLAorICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmls ZSkKKyAgICAgICAoYXBwZW5kIChsaXN0IFwiLXRcIiBcImh0bWxcIikKKyAgICAgICAgICAgICAg ICh3aGVuIGlucHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkp CisKK2Bhcmd1bWVudHMtZnVuY3Rpb24nIGlzIHBhc3NlZCB0d28gYXJndW1lbnRzLCBJTlBVVC1G SUxFIGFuZAorT1VUUFVULUZJTEUuICBJZiBJTlBVVC1GSUxFIGlzIG5pbCwgYXNzdW1lIHN0ZGlu LCBvciBpdCBpcyBhCitmdWxseS1xdWFsaWZpZWQgZmlsZSBuYW1lLiAgSWYgT1VUUFVULUZJTEUg aXMgbmlsLCBhc3N1bWUgc3Rkb3V0LCBvciBpdAoraXMgYSBmdWxseS1xdWFsaWZpZWQgZmlsZSBu YW1lLiAgSXQgc2hvdWxkIHJldHVybiBhIGxpc3Qgb2YKK2FyZ3VtZW50cyBzdWl0YWJsZSBmb3Ig YGNhbGwtcHJvY2VzcycuIikKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBtYXJrZG93bi10cy1j b252ZXJ0LWZpbGUgKGlucHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlzcGxheSBvdmVyd3JpdGUgcXVpZXQpCisgICJDb252ZXJ0IE1h cmtkb3duIElOUFVULUZJTEUgdG8gRk9STUFULgorSWYgb3B0aW9uYWwgRElTUExBWSBpcyBub24t bmlsLCBzaG93IHRoZSBvdXRwdXQgZmlsZSBpbiBhIGJ1ZmZlciwgaWYKK3Bvc3NpYmxlLCB1c2lu ZyB0aGUgZnVuY3Rpb24gYG1hcmtkb3duLXRzLWNvbnZlcnQtZGlzcGxheS1mdW5jdGlvbicuCisK K1dpdGggYSBwcmVmaXggYXJndW1lbnQsIERJU1BMQVkgd2lsbCBiZSBub24tbmlsLgorCitPcHRp b25hbCBGT1JNQVQgaXMgYSBmb3JtYXQvY29udmVydGVyIHBhaXIgc3BlY2lmaWVkIGFzIGEgY29u cworXFw9Jyhmb3JtYXQgLiBjb252ZXJ0ZXIpIGZvciBleGFtcGxlIFxcPScoaHRtbCAuIHBhbmRv YykuICBTZWUKK2BtYXJrZG93bi10cy1jb252ZXJ0ZXJzJy4gIElmIG5pbCwgcHJvbXB0IGZvciB0 aGUgZm9ybWF0IGFuZCBjb252ZXJ0ZXIuCisKK0lmIG9wdGlvbmFsIE9WRVJXUklURSBpcyBub24t bmlsLCBzaWxlbnRseSBvdmVyd3JpdGUgT1VUUFVULUZJTEUgaWYgaXQKK2V4aXN0cy4KKworSWYg UVVJRVQgaXMgbm9uLW5pbCwgaW5oaWJpdCBzaG93aW5nIGNvbnZlcnNpb24gd2FybmluZ3Mgb3Ig ZXJyb3JzLgorCitUaGUgZXh0ZXJuYWwgZXhlY3V0YWJsZSBzcGVjaWZpZWQgYnkgYSBjb252ZXJ0 ZXIgbXVzdCBiZSBpbnN0YWxsZWQgYW5kCitmb3VuZDsgc2VlIHRoZSB2YXJpYWJsZSBgZXhlYy1w YXRoJy4iCisgIChpbnRlcmFjdGl2ZSAiZkNvbnZlcnQgTWFya2Rvd24gZmlsZTogIikKKyAgKG1h cmtkb3duLXRzLWNvbnZlcnQgaW5wdXQtZmlsZSBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGRpc3BsYXkgY3VycmVu dC1wcmVmaXgtYXJnKQorICAgICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdGUKKyAgICAgICAg ICAgICAgICAgICAgICAgcXVpZXQpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIG1hcmtkb3du LXRzLWNvbnZlcnQgKCZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0 LWZpbGUgb3V0cHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgZGlz cGxheSBvdmVyd3JpdGUgcXVpZXQpCisgICJDb252ZXJ0IGEgYG1hcmtkb3duLXRzLW1vZGUnIGJ1 ZmZlciBvciBmaWxlIHRvIEZPUk1BVC4KK0NvbnZlcnQgSU5QVVQtRklMRSB0byBPVVRQVVQtRklM RS4KKworSWYgSU5QVVQtRklMRSBpcyBuaWwsIHVzZSB0aGUgY3VycmVudCBidWZmZXIuCisKK0lm IE9VVFBVVC1GSUxFIGlzIG5pbCwgcHJvbXB0IGZvciBhbiBvdXRwdXQgZmlsZS4KKworT3B0aW9u YWwgRk9STUFUIGlzIGEgZm9ybWF0L2NvbnZlcnRlciBwYWlyIHNwZWNpZmllZCBhcyBhIGNvbnMK K1xcPScoZm9ybWF0IC4gY29udmVydGVyKSBmb3IgZXhhbXBsZSBcXD0nKGh0bWwgLiBwYW5kb2Mp LiAgU2VlCitgbWFya2Rvd24tdHMtY29udmVydGVycycuICBJZiBuaWwsIHByb21wdCBmb3IgdGhl IGZvcm1hdCBhbmQgY29udmVydGVyLgorCitJZiBvcHRpb25hbCBESVNQTEFZIGlzIG5vbi1uaWws IHNob3cgdGhlIG91dHB1dCBmaWxlIGluIGEgYnVmZmVyLCBpZgorcG9zc2libGUsIHVzaW5nIHRo ZSBmdW5jdGlvbiBgbWFya2Rvd24tdHMtY29udmVydC1kaXNwbGF5LWZ1bmN0aW9uJy4KKworV2l0 aCBhIHByZWZpeCBhcmd1bWVudCwgRElTUExBWSB3aWxsIGJlIG5vbi1uaWwuCisKK0lmIG9wdGlv bmFsIE9WRVJXUklURSBpcyBub24tbmlsLCBzaWxlbnRseSBvdmVyd3JpdGUgT1VUUFVULUZJTEUg aWYgaXQKK2V4aXN0cy4KKworSWYgUVVJRVQgaXMgbm9uLW5pbCwgaW5oaWJpdCBzaG93aW5nIGNv bnZlcnNpb24gd2FybmluZ3Mgb3IgZXJyb3JzLgorCitUaGUgZXh0ZXJuYWwgZXhlY3V0YWJsZSBz cGVjaWZpZWQgYnkgYSBjb252ZXJ0ZXIgbXVzdCBiZSBpbnN0YWxsZWQgYW5kCitmb3VuZDsgc2Vl IHRoZSB2YXJpYWJsZSBgZXhlYy1wYXRoJy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHdoZW4gKGFu ZCBpbnB1dC1maWxlCisgICAgICAgICAgICAgKGVxdWFsIGJ1ZmZlci1maWxlLW5hbWUgKGV4cGFu ZC1maWxlLW5hbWUgaW5wdXQtZmlsZSkpCisgICAgICAgICAgICAgKGJ1ZmZlci1tb2RpZmllZC1w KSkKKyAgICAod2hlbiAoeWVzLW9yLW5vLXAgIlNhdmUgbW9kaWZpZWQgYnVmZmVyIGJlZm9yZSBj b252ZXJ0aW5nPyAiKQorICAgICAgKHNhdmUtYnVmZmVyKSkpCisgICh1bmxlc3MgaW5wdXQtZmls ZQorICAgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtY29udmVy dCkpCisKKyAgKHNldHEgZGlzcGxheSAob3IgZGlzcGxheSBjdXJyZW50LXByZWZpeC1hcmcpKQor CisgIChsZXQqICgoY29udmVydGVyLWZvcm1hdAorICAgICAgICAgIChvciAoY2FyIGZvcm1hdCkK KyAgICAgICAgICAgICAgKGNhciBtYXJrZG93bi10cy1kZWZhdWx0LWNvbnZlcnRlcikKKyAgICAg ICAgICAgICAgKGludGVybgorICAgICAgICAgICAgICAgKGNvbXBsZXRpbmctcmVhZAorICAgICAg ICAgICAgICAgICJTZWxlY3QgYW4gb3V0cHV0IGZvcm1hdDogIgorICAgICAgICAgICAgICAgICht YXBjYXIgKGxhbWJkYSAoZWx0KSAoc3ltYm9sLW5hbWUgKGNhciBlbHQpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWNvbnZlcnRlcnMpCisgICAgICAgICAgICAgICAgbmls CisgICAgICAgICAgICAgICAgdAorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAg ICdtYXJrZG93bi10cy1jb252ZXJ0ZXItZm9ybWF0KSkpKQorICAgICAgICAgKGNvbnZlcnRlcgor ICAgICAgICAgIChvciAoY2RyIGZvcm1hdCkKKyAgICAgICAgICAgICAgKGNkciBtYXJrZG93bi10 cy1kZWZhdWx0LWNvbnZlcnRlcikKKyAgICAgICAgICAgICAgKGludGVybgorICAgICAgICAgICAg ICAgKGNvbXBsZXRpbmctcmVhZAorICAgICAgICAgICAgICAgICJTZWxlY3QgYSBjb252ZXJ0ZXI6 ICIKKyAgICAgICAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKHN5bWJvbC1uYW1lIChj YXIgZWx0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoYWxpc3QtZ2V0IGNvbnZlcnRlci1m b3JtYXQgbWFya2Rvd24tdHMtY29udmVydGVycykpCisgICAgICAgICAgICAgICAgbmlsCisgICAg ICAgICAgICAgICAgdAorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICdtYXJr ZG93bi10cy1jb252ZXJ0ZXIpKSkpCisgICAgICAgICAoY29uZmlnIChhbGlzdC1nZXQgY29udmVy dGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsaXN0LWdldCBjb252ZXJ0ZXItZm9y bWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1j b252ZXJ0ZXJzKSkpCisgICAgICAgICAoY29tbWFuZCAocGxpc3QtZ2V0IGNvbmZpZyA6Y29tbWFu ZCkpCisgICAgICAgICAoY29tbWFuZC1pbnB1dCAocGxpc3QtZ2V0IGNvbmZpZyA6aW5wdXQpKQor ICAgICAgICAgKGNvbW1hbmQtb3V0cHV0IChwbGlzdC1nZXQgY29uZmlnIDpvdXRwdXQpKQorICAg ICAgICAgKHN0ZGluLW9ubHkgKGVxdWFsIGNvbW1hbmQtaW5wdXQgJyhzdGRpbikpKQorICAgICAg ICAgKHN0ZG91dC1vbmx5IChlcXVhbCBjb21tYW5kLW91dHB1dCAnKHN0ZG91dCkpKSkKKyAgICAo dW5sZXNzIG91dHB1dC1maWxlCisgICAgICAoc2V0cSBvdXRwdXQtZmlsZQorICAgICAgICAgICAg KHJlYWQtZmlsZS1uYW1lICJPdXRwdXQgZmlsZSBuYW1lOiAiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNh dCAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZpbGUtcmVsYXRpdmUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAob3IgaW5wdXQtZmlsZSBidWZmZXItZmlsZS1uYW1lKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzeW1ib2wtbmFtZSBjb252ZXJ0ZXItZm9ybWF0KSkpKQorICAgICAgKHVubGVz cyBvdXRwdXQtZmlsZQorICAgICAgICAodXNlci1lcnJvciAiT3V0cHV0IGZpbGUgbmFtZSBpcyBy ZXF1aXJlZCIpKSkKKyAgICAod2hlbiBvdXRwdXQtZmlsZQorICAgICAgKHdoZW4gKGFuZCAobm90 IG92ZXJ3cml0ZSkKKyAgICAgICAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgb3V0cHV0LWZpbGUp CisgICAgICAgICAgICAgICAgIChub3QgKHllcy1vci1uby1wIChmb3JtYXQgIiVzIGV4aXN0czsg b3ZlcndyaXRlPyIgb3V0cHV0LWZpbGUpKSkpCisgICAgICAgICh1c2VyLWVycm9yICJOb3Qgb3Zl cndyaXRpbmcgZXhpc3RpbmcgZmlsZTogJXMiIG91dHB1dC1maWxlKSkKKyAgICAgIChzZXRxIG91 dHB1dC1maWxlIChleHBhbmQtZmlsZS1uYW1lIG91dHB1dC1maWxlKSkpCisKKworICAgIChsZXQg KChjb21tYW5kLWFyZ3MgKGZ1bmNhbGwgKHBsaXN0LWdldCBjb25maWcgOmFyZ3VtZW50cy1mdW5j dGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIGlucHV0LWZpbGUg KGV4cGFuZC1maWxlLW5hbWUgaW5wdXQtZmlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdXRwdXQtZmlsZSkpKQorICAgICAgKHVubGVzcyAoZXhlY3V0YWJsZS1maW5kIGNv bW1hbmQpCisgICAgICAgICh1c2VyLWVycm9yICJgJXMnIGV4ZWN1dGFibGUgbm90IGZvdW5kIiBj b21tYW5kKSkKKyAgICAgIChsZXQgKChlcnJvci1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tY29udmVydC1lcnJvci1idWZm ZXIpKQorICAgICAgICAgICAgKGVycm9yLXRlbXAtZmlsZSAobWFrZS10ZW1wLWZpbGUgIm1hcmtk b3duLXRzLWNvbnZlcnQtc3RkZXJyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmlsICIubG9nIikpCisgICAgICAgICAgICAoc3Rkb3V0LWJ1ZmZlciAod2hl biBzdGRvdXQtb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0LWJ1ZmZlci1j cmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1jb252ZXJ0 LW91dHB1dC1idWZmZXIpKSkpCisgICAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgICAg KGxldCAoZXhpdC1zdGF0dXMpCisgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGVy cm9yLWJ1ZmZlcgorICAgICAgICAgICAgICAgIChzcGVjaWFsLW1vZGUpCisgICAgICAgICAgICAg ICAgKHNldHEgYnVmZmVyLXJlYWQtb25seSBuaWwpCisgICAgICAgICAgICAgICAgKHdpZGVuKQor ICAgICAgICAgICAgICAgIChlcmFzZS1idWZmZXIpKQorICAgICAgICAgICAgICAod2hlbiBzdGRv dXQtYnVmZmVyCisgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3Rkb3V0LWJ1 ZmZlcgorICAgICAgICAgICAgICAgICAgKHNwZWNpYWwtbW9kZSkKKyAgICAgICAgICAgICAgICAg IChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgbmlsKQorICAgICAgICAgICAgICAgICAgKHdpZGVuKQor ICAgICAgICAgICAgICAgICAgKGVyYXNlLWJ1ZmZlcikpKQorICAgICAgICAgICAgICAoY29uZAor ICAgICAgICAgICAgICAgKChhbmQgaW5wdXQtZmlsZSAobm90IHN0ZGluLW9ubHkpKQorICAgICAg ICAgICAgICAgIChzZXRxIGV4aXQtc3RhdHVzCisgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5 ICMnY2FsbC1wcm9jZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsaXN0IHN0ZG91dC1idWZmZXIgZXJyb3ItdGVtcC1maWxlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC1h cmdzKSkpCisgICAgICAgICAgICAgICAoKGFuZCBpbnB1dC1maWxlIHN0ZGluLW9ubHkpCisgICAg ICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQt ZmlsZS1jb250ZW50cyBpbnB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgKHNldHEgZXhpdC1z dGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2NhbGwtcHJvY2Vzcy1yZWdp b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpc3Qgc3Rkb3V0LWJ1ZmZlciBlcnJvci10ZW1wLWZpbGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tbWFuZC1hcmdzKSkpKQorICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAo d2l0aG91dC1yZXN0cmljdGlvbgorICAgICAgICAgICAgICAgICAgKHNldHEgZXhpdC1zdGF0dXMK KyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2NhbGwtcHJvY2Vzcy1yZWdpb24KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpc3Qgc3Rkb3V0LWJ1ZmZlciBlcnJvci10ZW1wLWZpbGUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t bWFuZC1hcmdzKSkpKSkKKyAgICAgICAgICAgICAgKGxldCAoKGVycm9yLXNpemUgKGZpbGUtYXR0 cmlidXRlLXNpemUgKGZpbGUtYXR0cmlidXRlcyBlcnJvci10ZW1wLWZpbGUpKSkpCisgICAgICAg ICAgICAgICAgKHdoZW4gKGFuZCBlcnJvci1zaXplICg+IGVycm9yLXNpemUgMCkpCisgICAgICAg ICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBlcnJvci1idWZmZXIKKyAgICAgICAgICAg ICAgICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGVycm9yLXRlbXAtZmlsZSkKKyAgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkpKSkKKyAgICAgICAgICAgICAgKGNv bmQgKChlcSAwIGV4aXQtc3RhdHVzKSA7IEludGVnZXIgb3Igc3RyaW5nLgorICAgICAgICAgICAg ICAgICAgICAgKHdoZW4gc3Rkb3V0LWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAod2l0 aC1jdXJyZW50LWJ1ZmZlciBzdGRvdXQtYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAg KHdyaXRlLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSBvdXRwdXQtZmlsZSkpKQorICAg ICAgICAgICAgICAgICAgICAgKHdoZW4gZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAgICAo ZnVuY2FsbCBtYXJrZG93bi10cy1jb252ZXJ0LWRpc3BsYXktZnVuY3Rpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LWZpbGUpKQorICAgICAgICAgICAgICAgICAgICAg KHdoZW4gKGFuZCAobm90IHF1aWV0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bm90ICh6ZXJvcCAoYnVmZmVyLXNpemUgZXJyb3ItYnVmZmVyKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh5ZXMtb3Itbm8tcAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGZvcm1hdC1tZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IkNvbnZlcnNpb24gZmlsZSBgJXMnIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIHdpdGggd2FybmluZ3M7 IGRpc3BsYXkgdGhlbT8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0 LWZpbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXktYnVmZmVyIGVycm9yLWJ1 ZmZlcikpCisgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiQ29udmVyc2lvbiBmaWxlIHN1 Y2Nlc3NmdWxseSBjcmVhdGVkIGAlcyclcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG91dHB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHplcm9wIChi dWZmZXItc2l6ZSBlcnJvci1idWZmZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiB3aXRoIHdh cm5pbmdzOyBzZWUgYnVmZmVyIGAlcyciIGVycm9yLWJ1ZmZlcikpKSkKKyAgICAgICAgICAgICAg ICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgIChpZiBxdWlldAorICAgICAgICAgICAgICAg ICAgICAgICAgIChlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udmVydGVyIGFi b3J0ZWQgd2l0aCBleGl0IGNvZGUgJVM7IHNlZSBidWZmZXIgYCVzJyBmb3IgZXJyb3JzIgorICAg ICAgICAgICAgICAgICAgICAgICAgICBleGl0LXN0YXR1cworICAgICAgICAgICAgICAgICAgICAg ICAgICBtYXJrZG93bi10cy0tY29udmVydC1lcnJvci1idWZmZXIpCisgICAgICAgICAgICAgICAg ICAgICAgICh3aGVuICh5ZXMtb3Itbm8tcCAoZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkNvbnZlcnRlciBhYm9ydGVkIHdpdGggZXhpdCBjb2RlICVT OyBkaXNwbGF5IGVycm9ycz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXhpdC1zdGF0dXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5LWJ1 ZmZlciBlcnJvci1idWZmZXIpKSkpKSkKKyAgICAgICAgICAoZGVsZXRlLWZpbGUgZXJyb3ItdGVt cC1maWxlKSkpKSkpCisKKzs7OyBUYWJsZSBvZiBjb250ZW50czoKKworKGRlZmdyb3VwIG1hcmtk b3duLXRzLXRvYyBuaWwKKyAgIlRhYmxlIG9mIGNvbnRlbnRzIGZvciBgbWFya2Rvd24tdHMtbW9k ZScgYnVmZmVycy4iCisgIDpwcmVmaXggIm1hcmtkb3duLXRzLXRvYy0iCisgIDpncm91cCAndGV4 dAorICA6Z3JvdXAgJ2VkaXRpbmcKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9tIG1h cmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUgJ2luc2VydC10ZW1wbGF0ZQorICAi V2FybiBpZiBubyB0YWJsZXMgd2VyZSBwcm9jZXNzZWQgd2hlbiBjYWxsaW5nIGBtYXJrZG93bi10 cy10b2MtZ2VuZXJhdGUnLgorSWYgbmlsLCBkbyBub3RoaW5nLiAgSWYgdGhlIHN5bWJvbCBgaW5z ZXJ0LXRlbXBsYXRlJyBhbmQKK2BtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUnIHdhcyBjYWxsZWQg aW50ZXJhY3RpdmVseSwgb2ZmZXIgdG8gaW5zZXJ0IGEKK3RlbXBsYXRlIGlmIHRoZXJlIGFyZSBu b25lLiAgSWYgYG5vLXRhYmxlcycsIHdhcm4gd2hlbiB0aGVyZSBhcmUgbm8KK3RhYmxlcyBpbiB0 aGUgYnVmZmVyLiAgYG5vLWFjdGl2ZS10YWJsZXMnLCBpcyB0aGUgc2FtZSBhcyBgbm8tdGFibGVz Jword2l0aCB0aGUgYWRkaXRpb24gb2YgYSB3YXJuaW5nIGlmIHRoZXJlIGFyZSB0YWJsZXMsIGJ1 dCBub25lIGFyZSBhY3RpdmUuIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiTm8gd2Fy bmluZ3MiIG5pbCkKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkluc2VydCBhIHRhYmxl IHRlbXBsYXRlIChpZiBpbnRlcmFjdGl2ZSkiIGluc2VydC10ZW1wbGF0ZSkKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIldhcm4gaWYgbm8gdGFibGVzIHdlcmUgcHJvY2Vzc2VkIiBuby10 YWJsZXMpCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJXYXJuIGlmIG5vIGFjdGl2ZSB0 YWJsZXMgd2VyZSBwcm9jZXNzZWQiIG5vLWFjdGl2ZS10YWJsZXMpKQorICA6dmVyc2lvbiAiMzEu MSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy10 b2MtdXBkYXRlLWJlZm9yZS1zYXZlLW1vZGUtbGlnaHRlciAiIFt0b2Mgb24gc2F2ZV0iCisgICJN aW5vci1tb2RlIFwibGlnaHRlclwiIGZvciBgbWFya2Rvd24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUt c2F2ZS1tb2RlJy4KK05vdGUgdGhlIHNpbmdsZSBzcGFjZSBwcmVmaXguIgorICA6dHlwZSAnKGNo b2ljZSAoY29uc3QgOnRhZyAiRGVmYXVsdCIgIiBbdG9jIG9uIHNhdmVdIikKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIk5vbmUiIG5pbCkKKyAgICAgICAgICAgICAgICAgKHN0cmluZyA6 dGFnICJPdGhlciBzdHJpbmciKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNp b24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtdG9jLXNsdWctZnVuY3Rpb24gIydt YXJrZG93bi10cy0tc2x1Zy1naXRodWIKKyAgIkZ1bmN0aW9uIHRvIGdlbmVyYXRlIE1hcmtkb3du IGhlYWRpbmcgXCJzbHVnc1wiIGluIHRhYmxlcyBvZiBjb250ZW50cy4iCisgIDp0eXBlICcoY2hv aWNlIChjb25zdCA6dGFnICJHaXRIdWIgc2x1ZyIgbWFya2Rvd24tdHMtLXNsdWctZ2l0aHViKQor ICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiUGFuZG9jIHNsdWciIG1hcmtkb3duLXRzLS1z bHVnLXBhbmRvYykKKyAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIDp0YWcgIk90aGVyIGZ1bmN0 aW9uIikpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCiso ZGVmdmFyIG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcworICAnKChoZWFkaW5nIC4gKGgxIGgyIGgz IGg0IGg1IGg2KSkKKyAgICAoc2V0ZXh0IC4gKHNoMSBzaDIpKQorICAgIChpdGVtIC4gKG1pbnVz IHBsdXMgc3RhcikpCisgICAgKG51bWJlcmVkLWl0ZW0gLiAoZG90IHBhcmVuKSkKKyAgICAoY29k ZSAuIChjb2RlKSkpCisgICJNYXAgaGlnaCBsZXZlbCBub2RlIGhhbmRsZXMgdG8gdGhlaXIgYmFz ZSBjb25zdGl0dWVudHMuCitUaGUgc3BlY2lhbCBzeW1ib2wgYGFsbCcgbWVhbnMgYWxsIGhhbmRs ZXMuIikKKworKGRlZnZhciBtYXJrZG93bi10cy0tdG9jLWhhbmRsZS1jbGFzc2VzCisgIChsZXQg KCh4KSkKKyAgICAoZG9saXN0IChlbHQgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzKQorICAgICAg KGRvbGlzdCAodmFsIChjZHIgZWx0KSkKKyAgICAgICAgKHB1c2ggYCgsdmFsIC4gLChjYXIgZWx0 KSkgeCkpKQorICAgIHgpCisiSW52ZXJzZSBvZiBgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzJy4i KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRvYy1leHBhbmQtY2FuZGlkYXRlLWhhbmRsZXMgKGhh bmRsZXMpCisgICJFeHBhbmQgY2FuZGlkYXRlIEhBTkRMRVMgYW5kIGtlZXAgb25seSBiYXNlIGhh bmRsZXMuCitTZWUgYG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcycuIgorICAobGV0ICgoZXhwYW5k ZWQgKG1ha2UtaGFzaC10YWJsZSkpCisgICAgICAgIChyZXMpKQorICAgICh1bmxlc3MgKGxpc3Rw IGhhbmRsZXMpCisgICAgICAoc2V0cSBoYW5kbGVzIChsaXN0IGhhbmRsZXMpKSkKKyAgICAod2hl biAoZXF1YWwgaGFuZGxlcyAnKGFsbCkpCisgICAgICAoc2V0cSBoYW5kbGVzIChtYXBjYXIgIydj YXIgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzKSkpCisgICAgKGRvbGlzdCAoZWx0IGhhbmRsZXMp CisgICAgICAoc2V0cSBlbHQgKGFsaXN0LWdldCBlbHQgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVz IGVsdCkpCisgICAgICAoY29uZCAoKGNvbnNwIGVsdCkKKyAgICAgICAgICAgICAoZG9saXN0IChr IGVsdCkgKHB1dGhhc2ggayB0IGV4cGFuZGVkKSkpCisgICAgICAgICAgICAodCAocHV0aGFzaCBl bHQgdCBleHBhbmRlZCkpKSkKKyAgICAobWFwaGFzaCAobGFtYmRhIChrIF92KSAocHVzaCBrIHJl cykpIGV4cGFuZGVkKQorICAgIHJlcykpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdG9jcyAoJm9w dGlvbmFsIGJlZyBlbmQpCisgICJTY2FuIHRoZSBjdXJyZW50IGJ1ZmZlciBmb3IgdG9jIGVudHJp ZXMgZnJvbSBCRUcgdG8gRU5ELgorSWYgQkVHIGlzIG5pbCwgdXNlIGBwb2ludC1taW4nLiAgSWYg RU5EIGlzIG5pbCwgdXNlIGBwb2ludC1tYXgnLgorCitSZXR1cm4gYW4gYWxpc3Qgb2YgdGhlIGZv cm06CisgIFxcPScoKGtleXdvcmQgKG5vZGUgYmVnIGVuZCB2YXJzKSkpCisKK1ZhcnMgYXJlIGV4 cGFuZGVkIHZpYSBgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lJy4KKworUmV0dXJuIHRo ZSBsaXN0IGluIHRoZSBvcmRlciBvZiBhcHBlYXJhbmNlIGluIHRoZSBidWZmZXIuIgorICA7OyBO T1RFOiBUaGlzIHNjYW5zIGFsbCBtYXRjaGluZyBub2RlcyBiZWxvdyBCRUcgd2l0aCBubyBtYXhp bXVtIGNvdW50CisgIDs7IGV2ZW4gd2hlbiB3ZSB3YW50IG9ubHkgYSBzaW5nbGUgbmV4dCBtYXRj aGluZyBpdGVtLiAgUGVyaGFwcworICA7OyBgdHJlZXNpdC1xdWVyeS1jYXB0dXJlJyBjb3VsZCBi ZSBpbXByb3ZlZCB0byBhY2NlcHQgYSBtYXgtY291bnQKKyAgOzsgYXJndW1lbnQuCisgIDs7Cisg IDs7IE1hdGNoICJtYXJrZG93bi10cy10b2M6IiwgIm1hcmtkb3duLXRzLXRvYy1hYmMxMjM6IiBi dXQgbm90CisgIDs7ICJtYXJrZG93bi10cy10b2N4eHg6Ii4KKyAgKGxldCAoKHJlcykpCisgICAg KGRvbGlzdCAobm9kZQorICAgICAgICAgICAgICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAg ICAgICAgICAgJ21hcmtkb3duCisgICAgICAgICAgICAgICcoKCgoaHRtbF9ibG9jaykgQG1hcmtk b3duLXRzLXRvYykKKyAgICAgICAgICAgICAgICAgKDptYXRjaCAiPCEtLVtbOmJsYW5rOl1dKm1h cmtkb3duLXRzLXRvY1xcKC1bWzphbG51bTpdXStcXCkqOiIgQG1hcmtkb3duLXRzLXRvYykpKQor ICAgICAgICAgICAgICAob3IgYmVnIChwb2ludC1taW4pKQorICAgICAgICAgICAgICAob3IgZW5k IChwb2ludC1tYXgpKQorICAgICAgICAgICAgICAnbm9kZS1vbmx5KSkKKyAgICAgIChsZXQqICgo cyAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSAnbm8tcHJvcGVydHkpKQorICAgICAgICAgICAgICht YXRjaCAoc3RyaW5nLW1hdGNoICJcXChtYXJrZG93bi10cy10b2NcXCgtW1s6YWxudW06XV0rXFwp KlxcKTouKiIgcykpCisgICAgICAgICAgICAgKGtleXdvcmQgKHdoZW4gbWF0Y2ggKG1hdGNoLXN0 cmluZyAxIHMpKSkpCisgICAgICAgIChsZXQgKCh2YXJzKSkKKyAgICAgICAgICAod2l0aC13b3Jr LWJ1ZmZlcgorICAgICAgICAgICAgKGluc2VydCBzKQorICAgICAgICAgICAgKHNldHEgdmFycyAo aGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lKSkpCisgICAgICAgICAgKHB1c2gKKyAgICAg ICAgICAgYCgsa2V5d29yZAorICAgICAgICAgICAgIChub2RlIC4gLG5vZGUpCisgICAgICAgICAg ICAgKGJlZyAuICwodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgIChlbmQg LiAsKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAgICAgKHZhcnMgLiAsdmFycykp CisgICAgICAgICAgIHJlcykpKSkKKyAgICAobnJldmVyc2UgcmVzKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tdG9jcy1zYW5pdHktY2hlY2sgKHRvY3MpCisgICJTYW5pdHkgY2hlY2sgVE9DUyBm b3IgcGFpcmVkIG1hcmtkb3duLXRzLXRvYzogbWFya2Rvd24tdHMtdG9jLWVuZDogbm9kZXMuCitT aWduYWwgYW4gZXJyb3IgaWYgVE9DUyBhcmUgaW5zYW5lLgorU2VlIGBtYXJrZG93bi10cy0tdG9j cycuIgorICAoc2VxLW1hcC1pbmRleGVkCisgICAobGFtYmRhIChlbHQgaWR4KQorICAgICAod2hl biAoZXF1YWwgIm1hcmtkb3duLXRzLXRvYyIgKGNhciBlbHQpKQorICAgICAgICh1bmxlc3MgKGVx dWFsICJtYXJrZG93bi10cy10b2MtZW5kIiAoY2FyIChudGggKDErIGlkeCkgdG9jcykpKQorICAg ICAgICAgKHVzZXItZXJyb3IKKyAgICAgICAgICAiXCJtYXJrZG93bi10cy10b2NcIiBhdCBwb3Np dGlvbiAlZCBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgbWF0Y2hpbmcgXCJtYXJrZG93bi10cy10b2Mt ZW5kXCIiCisgICAgICAgICAgKGFsaXN0LWdldCAnYmVnIGVsdCkpKSkpCisgICB0b2NzKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLS10b2MtY29sbGVjdC1jYW5kaWRhdGVzICh0b2Mtc3RhcnQtbm9k ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2MtZW5kLW5v ZGUgaGFuZGxlcyBmcm9tKQorICAiUmV0dXJuIGFuIGFsaXN0IG9mIHRvYyBlbnRyeSBjYW5kaWRh dGVzIGZyb20gdGhlIGN1cnJlbnQgYnVmZmVyLgorSEFORExFUyBpcyBhIGxpc3Qgb2YgYmFzZSBo YW5kbGVzOyBzZWUgYG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcycuCisKK1RPQy1TVEFSVC1OT0RF IGlzIHRoZSBcIm1hcmtkb3duLXRzLXRvYy1zdGFydFwiIG5vZGUuCitUT0MtRU5ELU5PREUgaXMg dGhlIFwibWFya2Rvd24tdHMtdG9jLWVuZFwiIG5vZGUuCisKK0lmIEZST00gaXMgdGhlIHN5bWJv bCBgYWJvdmUnLCBzb3VyY2UgY2FuZGlkYXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKK3RoZSBi dWZmZXIgdW50aWwgdGhlIHRvYyBzdGFydCBub2RlLiAgSWYgYGJlbG93Jywgc291cmNlIGNhbmRp ZGF0ZXMgZnJvbQordG9jIHN0YXJ0IG5vZGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAg SWYgYGFsbCcsIHVzZSB0aGUgd2hvbGUKK2J1ZmZlci4KKworUmVtb3ZlIGlnbm9yZWQgY2FuZGlk YXRlcyBjb250YWluaW5nIFwiPCEtLSBtYXJrZG93bi10cy1pZ25vcmU6IC0tPlwiLgorCitTb3J0 IHRoZSBsaXN0IGJ5IHRoZSBzdGFydGluZyBjaGFyYWN0ZXIgcG9zaXRpb25zIG9mIG5vZGVzLgor CitUaGUgYWxpc3QgaXMgb2YgdGhlIGZvcm06CisgIFxcPScoKGhhbmRsZSAuIG5vZGUpKSIKKyAg KGxldCAoY2FuZGlkYXRlcyBiZWcgZW5kKQorICAgIChwY2FzZSBmcm9tCisgICAgICAoJ2Fib3Zl CisgICAgICAgKHNldHEgYmVnIChwb2ludC1taW4pKQorICAgICAgIChzZXRxIGVuZCAodHJlZXNp dC1ub2RlLXN0YXJ0IHRvYy1zdGFydC1ub2RlKSkpCisgICAgICAoJ2JlbG93CisgICAgICAgKHNl dHEgYmVnICh0cmVlc2l0LW5vZGUtZW5kIHRvYy1lbmQtbm9kZSkpCisgICAgICAgKHNldHEgZW5k IChwb2ludC1tYXgpKSkKKyAgICAgICgnYWxsCisgICAgICAgKHNldHEgYmVnIChwb2ludC1taW4p KQorICAgICAgIChzZXRxIGVuZCAocG9pbnQtbWF4KSkpKQorCisgICAgOzsgSXQgbG9va3MgbGlr ZSB3ZSBjYW5ub3QgZ2V0IHRoZW0gaW4gb25lIGZlbGwgc3dvb3AuCisgICAgKGRvbGlzdCAoZWx0 IGhhbmRsZXMpCisgICAgICAoc2V0cQorICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAoYXBwZW5k CisgICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAgKHBjYXNlIGVsdAorICAgICAgICAgICgnaDEg KHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChhdHhf aGVhZGluZyAoYXR4X2gxX21hcmtlcikgKGlubGluZSkgQGgxKSkgYmVnIGVuZCkpCisgICAgICAg ICAgKCdoMiAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisgICAgICAgICAgICAgICAgJ21hcmtkb3du ICcoKGF0eF9oZWFkaW5nIChhdHhfaDJfbWFya2VyKSAoaW5saW5lKSBAaDIpKSBiZWcgZW5kKSkK KyAgICAgICAgICAoJ2gzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAn bWFya2Rvd24gJygoYXR4X2hlYWRpbmcgKGF0eF9oM19tYXJrZXIpIChpbmxpbmUpIEBoMykpIGJl ZyBlbmQpKQorICAgICAgICAgICgnaDQgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAg ICAgICAgICdtYXJrZG93biAnKChhdHhfaGVhZGluZyAoYXR4X2g0X21hcmtlcikgKGlubGluZSkg QGg0KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdoNSAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisg ICAgICAgICAgICAgICAgJ21hcmtkb3duICcoKGF0eF9oZWFkaW5nIChhdHhfaDVfbWFya2VyKSAo aW5saW5lKSBAaDUpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ2g2ICh0cmVlc2l0LXF1ZXJ5LWNh cHR1cmUKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygoYXR4X2hlYWRpbmcgKGF0eF9oNl9t YXJrZXIpIChpbmxpbmUpIEBoNikpIGJlZyBlbmQpKQorICAgICAgICAgICgnc2gxICh0cmVlc2l0 LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgJ21hcmtkb3duICcoKHNldGV4dF9oZWFk aW5nIGhlYWRpbmdfY29udGVudDogKF8pIEBzaDEgKHNldGV4dF9oMV91bmRlcmxpbmUpKSkgYmVn IGVuZCkpCisgICAgICAgICAgKCdzaDIgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAg ICAgICAgICAnbWFya2Rvd24gJygoc2V0ZXh0X2hlYWRpbmcgaGVhZGluZ19jb250ZW50OiAoXykg QHNoMiAoc2V0ZXh0X2gyX3VuZGVybGluZSkpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ21pbnVz ICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygo bGlzdF9pdGVtIChsaXN0X21hcmtlcl9taW51cykgKHBhcmFncmFwaCAoaW5saW5lKSBAbWludXMp KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdwbHVzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAg ICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BsdXMp IChwYXJhZ3JhcGggKGlubGluZSkgQHBsdXMpKSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdzdGFy ICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChs aXN0X2l0ZW0gKGxpc3RfbWFya2VyX3N0YXIpIChwYXJhZ3JhcGggKGlubGluZSkgQHN0YXIpKSkg YmVnIGVuZCkpCisgICAgICAgICAgKCdkb3QgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAg ICAgICAgICAgICAnbWFya2Rvd24gJygobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3QpIChwYXJh Z3JhcGggKGlubGluZSkgQGRvdCkpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ3BhcmVuICh0cmVl c2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygobGlzdF9p dGVtIChsaXN0X21hcmtlcl9wYXJlbnRoZXNpcykgKHBhcmFncmFwaCAoaW5saW5lKSBAcGFyZW4p KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdjb2RlICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAg ICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChmZW5jZWRfY29kZV9ibG9jayAoaW5mb19zdHJp bmcgKGxhbmd1YWdlKSkgQGNvZGUpKSBiZWcgZW5kKSkpKSkpCisgICAgKHNvcnQKKyAgICAgKHNl cS1yZW1vdmUKKyAgICAgIChsYW1iZGEgKGVsdCkKKyAgICAgICAgKHN0cmluZy1tYXRjaC1wICI8 IS0tW1s6Ymxhbms6XV0qbWFya2Rvd24tdHMtaWdub3JlOltbOmJsYW5rOl1dKi0tPiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCAoY2RyIGVsdCkgdCkpKQorICAg ICAgY2FuZGlkYXRlcykKKyAgICAgOmtleSAobGFtYmRhIChlbHQpCisgICAgICAgICAgICAodHJl ZXNpdC1ub2RlLXN0YXJ0IChjZHIgZWx0KSkpCisgICAgIDpsZXNzcCAjJzwKKyAgICAgOmluLXBs YWNlIHQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10b2MtbGlzdC1pdGVtLWRlcHRoIChub2Rl KQorICAiUmV0dXJuIE5PREUncyBpdGVtIGRlcHRoIHJlbGF0aXZlIHRvIGl0cyBwcmVkZWNlc3Nv cnMuCitJZiBOT0RFIGlzIG5vdCBwYXJ0IG9mIGEgbGlzdCwgcmV0dXJuIG5pbC4iCisgICAgKGxl dCAoKGRlcHRoIG5pbCkgKG4gKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpKQorICAgICAgKHdo aWxlIG4KKyAgICAgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAibGlzdCIp CisgICAgICAgICAgKHNldHEgZGVwdGggKDErIChvciBkZXB0aCAwKSkpKQorICAgICAgICAoc2V0 cSBuICh0cmVlc2l0LW5vZGUtcGFyZW50IG4pKSkKKyAgICAgIGRlcHRoKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUgKHRleHQpCisgICJSZW1vdmUgdHJh aWxpbmcgIyBmcm9tIFRFWFQgdW5sZXNzIHRoZXkgYXJlIGJhY2tzbGFzaCBlc2NhcGVkLgorRmly c3QgcmVtb3ZlIEhUTUwgY29tbWVudHMuIgorICAoaWYgKHN0cmluZy1tYXRjaC1wICJbWzpibGFu azpdXSpcXFxcKyMrW1s6Ymxhbms6XV0qXG4qXFwnIiB0ZXh0KQorICAgICAgdGV4dAorICAgIChy ZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIltbOmJsYW5rOl1dKiMrW1s6Ymxhbms6XV0qXG4qXFwn IiAiIiB0ZXh0KSkpCisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtLXRvYy10ZXh0LW5vcm1hbGl6ZXJz CisgIGAoKGhlYWRpbmcgLiBtYXJrZG93bi10cy0tdG9jLWF0eF9oZWFkZXItbm9ybWFsaXplKQor ICAgIChoMSAuIG1hcmtkb3duLXRzLS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUpCisgICAgKGgy IC4gbWFya2Rvd24tdHMtLXRvYy1hdHhfaGVhZGVyLW5vcm1hbGl6ZSkKKyAgICAoaDMgLiBtYXJr ZG93bi10cy0tdG9jLWF0eF9oZWFkZXItbm9ybWFsaXplKQorICAgIChoNCAuIG1hcmtkb3duLXRz LS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUpCisgICAgKGg1IC4gbWFya2Rvd24tdHMtLXRvYy1h dHhfaGVhZGVyLW5vcm1hbGl6ZSkKKyAgICAoaDYgLiBtYXJrZG93bi10cy0tdG9jLWF0eF9oZWFk ZXItbm9ybWFsaXplKSkKKyAgIk1hcCBub2RlIHR5cGUgaGFuZGxlcyB0byBmdW5jdGlvbnMgdGhh dCBub3JtYWxpemUgaXRzIHRleHQuCitTZWUgYG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxp emUnLgorRWFjaCBmdW5jdGlvbiBhY2NlcHRzIG9uZSBhcmd1bWVudCwgdGhlIHN0cmluZyBURVhU LCBhbmQgcmV0dXJucyBhIHN0cmluZy4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRvYy10ZXh0 LW5vcm1hbGl6ZSAoaGFuZGxlIG5vZGUgJm9wdGlvbmFsIHRleHQpCisgICJOb3JtYWxpemUgTk9E RSdzIFRFWFQgYWNjb3JkaW5nIHRvIGl0cyBIQU5ETEUuCitURVhUIHNob3VsZCBoYXZlIG5vIHRl eHQgcHJvcGVydGllcy4gIElmIFRFWFQgaXMgbmlsLCB1c2UgdGhlIE5PREUncwordGV4dC4gIFRo aXMgaXMgbm90IGFsd2F5cyBjb3JyZWN0IHNvIGl0J3MgYmVzdCB0byBwYXNzIFRFWFQgaWYgeW91 IGtub3cKK2l0IGluIHRoZSBjYWxsaW5nIGNvbnRleHQuCisKK0lmIG5vIG5vcm1hbGl6ZXIgaXMg Zm91bmQsIHJldHVybiBURVhULgorCitPbmUgZXhhbXBsZSBub3JtYWxpemF0aW9uIGlzIGF0eF9o ZWFkaW5nIHRleHQgdGhhdCBlbmRzIGluIHRyYWlsaW5nIGhhc2gKK3NpZ25zIHdoaWNoIGFyZSBp bnRlbmRlZCB0byBiZSBlbGlkZWQgc28gXCJIZWFkaW5nIFRleHQgIyNcIiBpcwordHJhbnNmb3Jt ZWQgaW50byBcIkhlYWRpbmcgVGV4dFwiLiIKKyAgKHNldHEgdGV4dCAob3IgdGV4dCAodHJlZXNp dC1ub2RlLXRleHQgbm9kZSAnbm8tcHJvcGVydHkpKSkKKyAgKGlmLWxldCogKChmaXhlciAoYWxp c3QtZ2V0IGhhbmRsZSBtYXJrZG93bi10cy0tdG9jLXRleHQtbm9ybWFsaXplcnMpKSkKKyAgICAg IChmdW5jYWxsIGZpeGVyIHRleHQpCisgICAgdGV4dCkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVm aW5lLW1pbm9yLW1vZGUgbWFya2Rvd24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUtc2F2ZS1tb2RlCisg ICJJZiBlbmFibGVkLCB1cGRhdGUgYG1hcmtkb3duLXRzLW1vZGUnIHRhYmxlcyBvZiBjb250ZW50 cyBiZWZvcmUgc2F2aW5nLiIKKyAgOmluaXQtdmFsdWUgbmlsCisgIDpnbG9iYWwgbmlsCisgIDps aWdodGVyIG1hcmtkb3duLXRzLXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZS1saWdodGVyCisg IChpZiAoZGVyaXZlZC1tb2RlLXAgJ21hcmtkb3duLXRzLW1vZGUpCisgICAgICAoaWYgbWFya2Rv d24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUtc2F2ZS1tb2RlCisgICAgICAgICAgKGFkZC1ob29rICdi ZWZvcmUtc2F2ZS1ob29rICMnbWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlIG5pbCAnbG9jYWwpCisg ICAgICAgIChyZW1vdmUtaG9vayAnYmVmb3JlLXNhdmUtaG9vayAjJ21hcmtkb3duLXRzLXRvYy1n ZW5lcmF0ZSAnbG9jYWwpKQorICAgIChzZXRxIG1hcmtkb3duLXRzLXRvYy11cGRhdGUtYmVmb3Jl LXNhdmUtbW9kZSBuaWwpCisgICAgKGx3YXJuICdtYXJrZG93bi10cy10b2MtdXBkYXRlLWJlZm9y ZS1zYXZlLW1vZGUKKyAgICAgICAgICAgOndhcm5pbmcKKyAgICAgICAgICAgIk1pbm9yIG1vZGUg dmFsaWQgb25seSBpbiBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycy4iKSkpCisKKzs7OyMjI2F1 dG9sb2FkCisoZGVmdW4gbWFya2Rvd24tdHMtdG9jLWNsZWFyLWFuZC1yZW1vdmUgKCZvcHRpb25h bCBiZWcgZW5kKQorICAiUmVtb3ZlIGBtYXJrZG93bi10cy1tb2RlJyB0YWJsZSBvZiBjb250ZW50 cyBib2RpZXMgYW5kIHRlbXBsYXRlcy4KK09wZXJhdGUgb24gdGhlIGFjdGl2ZSByZWdpb24gQkVH IHRvIEVORCwgb3RoZXJ3aXNlIG9wZXJhdGUgb24gdGhlCitidWZmZXIsIHdoaWNoIG1heSBiZSBu YXJyb3dlZC4iCisgIChpbnRlcmFjdGl2ZSAiUiIpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1u b3QtbW9kZSAnbWFya2Rvd24tdHMtdG9jLWNsZWFyLWFuZC1yZW1vdmUpCisgIChtYXJrZG93bi10 cy10b2MtY2xlYXIgYmVnIGVuZCAncmVtb3ZlKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBt YXJrZG93bi10cy10b2MtY2xlYXIgKCZvcHRpb25hbCBiZWcgZW5kIHJlbW92ZSkKKyAgIkNsZWFy IGBtYXJrZG93bi10cy1tb2RlJyB0YWJsZSBvZiBjb250ZW50cyBib2RpZXMuCitPcGVyYXRlIG9u IHRoZSBhY3RpdmUgcmVnaW9uIEJFRyB0byBFTkQsIG90aGVyd2lzZSBvcGVyYXRlIG9uIHRoZQor YnVmZmVyLCB3aGljaCBtYXkgYmUgbmFycm93ZWQuCitJZiBvcHRpb25hbCBSRU1PVkUgaXMgbm9u LW5pbCwgcmVtb3ZlIHRhYmxlcyBpbmNsdWRpbmcgdGhlaXIgdGVtcGxhdGVzLiIKKyAgKGludGVy YWN0aXZlICJSIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10 cy10b2MtY2xlYXIpCisgIChzZXRxIGJlZyAob3IgYmVnIChwb2ludC1taW4pKSkKKyAgKHNldHEg ZW5kIChvciBlbmQgKHBvaW50LW1heCkpKQorICAodW5sZXNzIChlcSBiZWcgZW5kKQorICAgIDs7 IENvbnZlcnQgbWFya2VycyB0byBhYnNvbHV0ZSBwb3NpdGlvbnMuCisgICAgKHNldHEgYmVnIChp ZiAobWFya2VycCBiZWcpIChtYXJrZXItcG9zaXRpb24gYmVnKSBiZWcpKQorICAgIChzZXRxIGVu ZCAoaWYgKG1hcmtlcnAgZW5kKSAobWFya2VyLXBvc2l0aW9uIGVuZCkgZW5kKSkKKyAgICA7OyBO T1RFOiBPcGVyYXRlIG9uIHRoZSB3aWRlbmVkIGJ1ZmZlciB0byBhdm9pZCB0cmVlc2l0ZXIgY3Jh c2ggaXNzdWVzLgorICAgICh3aXRob3V0LXJlc3RyaWN0aW9uCisgICAgICAobGV0ICgodG9jcykK KyAgICAgICAgICAgIChiZWctcG9zIGJlZykKKyAgICAgICAgICAgIChlbmQtcG9zIGVuZCkpCisg ICAgICAgIDs7IFdlIHNjYW4gZWFjaCBwYXNzIGJlY2F1c2UgdGhlaXIgcG9zaXRpb25zIGNoYW5n ZS4KKyAgICAgICAgKHdoaWxlIChhbmQgKDwgYmVnLXBvcyBlbmQtcG9zKQorICAgICAgICAgICAg ICAgICAgICAoc2V0cSB0b2NzIChtYXJrZG93bi10cy0tdG9jcyBiZWctcG9zIGVuZC1wb3MpKSkK KyAgICAgICAgICAobWFya2Rvd24tdHMtLXRvY3Mtc2FuaXR5LWNoZWNrIHRvY3MpCisgICAgICAg ICAgOzsgQWZ0ZXIgc2FuaXR5IGNoZWNraW5nLCB3ZSBrbm93IHRoZSBzZWNvbmQgZWxlbWVudCBp cyBhCisgICAgICAgICAgOzsgdG9jLWVuZC4KKyAgICAgICAgICAobGV0KiAoKHRvYyAobnRoIDAg dG9jcykpCisgICAgICAgICAgICAgICAgICh0b2MtZW5kIChudGggMSB0b2NzKSkKKyAgICAgICAg ICAgICAgICAgKHJlZy1iZWcgKGlmIHJlbW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGFsaXN0LWdldCAnYmVnIHRvYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxp c3QtZ2V0ICdlbmQgdG9jKSkpCisgICAgICAgICAgICAgICAgIChyZWctZW5kIChpZiByZW1vdmUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC1nZXQgJ2VuZCB0b2MtZW5kKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC1nZXQgJ2JlZyB0b2MtZW5kKSkpCisg ICAgICAgICAgICAgICAgIChyZWctc2l6ZSAoLSByZWctZW5kIHJlZy1iZWcpKSkKKyAgICAgICAg ICAgIChkZWxldGUtcmVnaW9uIHJlZy1iZWcgcmVnLWVuZCkKKyAgICAgICAgICAgIDs7IFN0YXJ0 IHRoZSBuZXh0IHBhc3MgYWZ0ZXIgdGhpcyB0b2MtZW5kLiAgQWRqdXN0IGZvciB0aGUKKyAgICAg ICAgICAgIDs7IGRlbGV0ZWQgcmVnaW9uLgorICAgICAgICAgICAgKHNldHEgYmVnLXBvcyAoLSAo YWxpc3QtZ2V0ICdlbmQgdG9jLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn LXNpemUpKQorICAgICAgICAgICAgKHNldHEgZW5kLXBvcyAobWluIChwb2ludC1tYXgpICgtIGVu ZC1wb3MgcmVnLXNpemUpKSkpKSkpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBtYXJrZG93 bi10cy10b2MtaW5zZXJ0LXRlbXBsYXRlICgmb3B0aW9uYWwgY2hhcikKKyAgIkluc2VydCBhIGBt YXJrZG93bi10cy1tb2RlYCB0YWJsZSBvZiBjb250ZW50cyB0ZW1wbGF0ZSBhdCBwb2ludC4KKwor Q0hBUiBpcyB0aGUgdGVtcGxhdGUgdHlwZSBcImJcIiBmb3IgYmFzaWMsIFwiY1wiIGZvciBjb21w bGV0ZS4gIElmIENIQVIKK2lzIG5pbCBhbmQgdGhlIGNvbW1hbmQgaXMgcnVuIGludGVyYWN0aXZl bHksIHByb21wdCBmb3IgYSB0ZW1wbGF0ZS4KKworVGhlIGJhc2ljIHRlbXBsYXRlIHVzZXMgYWxs IGRlZmF1bHRzIGFuZCBpcyBsaWtlbHkgdGhlIGJlc3QgY2hvaWNlIGZvcgorbW9zdCB1c2VzLiAg VGhlIGNvbXBsZXRlIHRlbXBsYXRlIGlsbHVzdHJhdGVzIGFsbCBwYXJhbWV0ZXJzIHNldCB0bwor dGhlaXIgZGVmYXVsdHMgYW5kIGlzIHVzZWZ1bCBhcyBhIHN0YXJ0aW5nIHBvaW50IHRvIGN1c3Rv bWl6ZSBhIHRhYmxlLiIKKyAgKGludGVyYWN0aXZlICJjVGVtcGxhdGUgW2JdYXNpYyBbY11vbXBs ZXRlOiIpCisgIChwY2FzZSBjaGFyCisgICAgKD9iCisgICAgIChpbnNlcnQgIjwhLS0gbWFya2Rv d24tdHMtdG9jOiAtLT5cbiIKKyAgICAgICAgICAgICAiPCEtLSBtYXJrZG93bi10cy10b2MtZW5k OiAtLT5cbiIpKQorICAgICg/YworICAgICAoaW5zZXJ0ICI8IS0tIG1hcmtkb3duLXRzLXRvYzog LSotICIKKyAgICAgICAgICAgICAibWluLWRlcHRoOiAxOyAiCisgICAgICAgICAgICAgIm1heC1k ZXB0aDogbmlsOyAiCisgICAgICAgICAgICAgImNhbmRpZGF0ZXM6IChoZWFkaW5nKTsgIgorICAg ICAgICAgICAgICJmcm9tOiBiZWxvdzsgIgorICAgICAgICAgICAgICJzdHlsZTogaXRlbTsgIgor ICAgICAgICAgICAgICJpbmRlbnQ6IDE7ICIKKyAgICAgICAgICAgICAibm8tbGluazogbmlsOyAi CisgICAgICAgICAgICAgInJlbGF0aXZlLWRlcHRoOiBuaWw7ICIKKyAgICAgICAgICAgICAiaWdu b3JlOiBuaWw7ICIKKyAgICAgICAgICAgICAiLSotIC0tPlxuIgorICAgICAgICAgICAgICI8IS0t IG1hcmtkb3duLXRzLXRvYy1lbmQ6IC0tPlxuIikpCisgICAgKF8gKHVzZXItZXJyb3IgIk5vIHN1 Y2ggdGVtcGxhdGUgdHlwZTogJWMiIGNoYXIpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4g bWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlICgmb3B0aW9uYWwgaW50ZXJhY3RpdmUgYmVnIGVuZCkK KyAgIkdlbmVyYXRlIHRhYmxlcyBvZiBjb250ZW50cyBpbiB0aGUgY3VycmVudCBidWZmZXIuCitg bWFya2Rvd24tdHMtbW9kZScgdXNlcyBNYXJrZG93biBIVE1MIGNvbW1lbnQgZWxlbWVudHMgdG8g aWRlbnRpZnkgdGFibGUKK29mIGNvbnRlbnRzIChha2EgdG9jKSBpbnNlcnRpb24gYm91bmRhcmll cyBhbmQgdGhlIHBhcmFtZXRlcnMgZm9yIGVhY2gKK3RhYmxlLiAgRGVyaXZlIHRhYmxlIGNvbnRl bnQgZnJvbSB0aGUgTWFya2Rvd24gZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQKK2J1ZmZlciB3aGlj aCBhcmUgdXN1YWxseSBoZWFkaW5ncyBidXQgY2FuIGFsc28gYmUgbGlzdCBpdGVtcywgc2V0ZXh0 CitoZWFkZXJzLCBuYW1lZCBjb2RlIGJsb2Nrcy4KKworT3BlcmF0ZSBvbiB0aGUgYWN0aXZlIHJl Z2lvbiBCRUcgdG8gRU5ELCBvdGhlcndpc2Ugb3BlcmF0ZSBvbiB0aGUKK2J1ZmZlciwgd2hpY2gg bWF5IGJlIG5hcnJvd2VkLgorCitFYWNoIHRpbWUgeW91IHJ1biB0aGlzIGNvbW1hbmQsIGV4aXN0 aW5nIHRhYmxlcyBvZiBjb250ZW50cyBhcmUgY2xlYXJlZAorYW5kIHJlZnJlc2hlZCB3aXRoIG5l dyBjb250ZW50LiAgU28gZG9uJ3QgcGxhY2UgdG9jIGVsZW1lbnRzIGFyb3VuZAoraW1wb3J0YW50 IHRleHQuCisKK1RoZSBidWZmZXIgY2FuIGhhdmUgb25lIG9yIG1vcmUgdG9jcy4gIEJ5IGRlZmF1 bHQsIHBvcHVsYXRlIGVhY2ggdG9jCit3aXRoIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBi dWZmZXIgYmVsb3cgdGhlIHRvYy4gIFRoZXJlZm9yZSwgdGhlCitlYXNpZXN0IHdheSB0byBpbnNl cnQgYSBjb21wbGV0ZSB0YWJsZSBvZiBjb250ZW50cywgaXMgdG8gcHV0IHRoZSB0b2MKK3RlbXBs YXRlIG5lYXIgdGhlIHRvcCBvZiB5b3VyIGJ1ZmZlci4KKworQSBiYXNpYyBlbXB0eSB0b2MgdGVt cGxhdGUgbG9va3MgbGlrZSB0aGlzOgorCitIZWFkZXIgdGV4dCB5b3Ugd2FudCBoZXJlLgorCis8 IS0tIG1hcmtkb3duLXRzLXRvYzogLS0+CitDb250ZW50cyBpbnNlcnRlZCBiZXR3ZWVuIHRoZXNl IGVsZW1lbnRzLgorPCEtLSBtYXJrZG93bi10cy10b2MtZW5kOiAtLT4KKworRm9vdGVyIHRleHQg eW91IHdhbnQgaGVyZS4KKworVXNlIHRoZSBjb21tYW5kIGBtYXJrZG93bi10cy10b2MtaW5zZXJ0 LXRlbXBsYXRlJyB0byBpbnNlcnQgYSB0YWJsZSBvZgorY29udGVudHMgdGVtcGxhdGUuCisKK1Vz ZSB0aGUgY29tbWFuZCBgbWFya2Rvd24tdHMtdG9jLWNsZWFyJyB0byBjbGVhciB0YWJsZSBjb250 ZW50LCBhbmQgdGhlCitjb21tYW5kIGBtYXJrZG93bi10cy10b2MtY2xlYXItYW5kLXJlbW92ZScg dG8gYm90aCBjbGVhciBhbmQgcmVtb3ZlCit0YWJsZSBjb250ZW50IGFuZCB0ZW1wbGF0ZXMuCisK K0J5IGRlZmF1bHQsIGEgdG9jIGluY2x1ZGVzIGhlYWRlcnMgYXQgYWxsIGxldmVscyBiZWxvdyB0 aGUgdG9jIHdoaWNoIGFyZQorcHJlc2VudGVkIGFzIGxpc3QgaXRlbXMgd2l0aCBsaW5rcy4KKwor VG8gaWdub3JlIGEgTWFya2Rvd24gZWxlbWVudCB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBpbmNs dWRlZCBpbiB0aGUKK3RvYywgYWRkIGEgdG9jIGlnbm9yZSBlbGVtZW50OgorCisjIyBJZ25vcmUg TWUgPCEtLSBtYXJrZG93bi10cy10b2MtaWdub3JlOiAtLT4KKworVGhlIHN0YXJ0aW5nIHRvYyBl bGVtZW50IGFjY2VwdHMgcGFyYW1ldGVycyBpbiB0aGUgc3ludGF4IG9mIEVtYWNzIGZpbGUKK3Zh cmlhYmxlcy4KKworRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGdlbmVyYXRlIGEgdGFibGUg b2YgY29udGVudHMgbGltaXRlZCB0bworaGVhZGluZ3MgdHdvIGxldmVscyBkZWVwOgorCis8IS0t IG1hcmtkb3duLXRzLXRvYzogLSotIG1heC1kZXB0aDogMjsgLSotIC0tPgorPCEtLSBtYXJrZG93 bi10cy10b2MtZW5kOiAtLT4KKworT3IgdXNlIG9ubHkgaGVhZGluZ3MgdHdvIGFuZCB0aHJlZSBs ZXZlbHMgZGVlcC4KKworPCEtLSBtYXJrZG93bi10cy10b2M6IC0qLSBtaW4tZGVwdGg6IDI7IG1h eC1kZXB0aDogMzsgLSotIC0tPgorPCEtLSBtYXJrZG93bi10cy10b2MtZW5kOiAtLT4KKworVGhl c2UgYXJlIHRoZSBzdXBwb3J0ZWQgcGFyYW1ldGVycyB3aGljaCBhcmUgb3B0aW9uYWwuICBUaGV5 IGVhY2ggbGlzdAordGhlaXIgZGVmYXVsdHMuCisKKyAgbWluLWRlcHRoOiAxICAgICAgICAgIDsg YW4gaW50ZWdlcgorICBtYXgtZGVwdGg6IG5pbCAgICAgICAgOyBhbiBpbnRlZ2VyCisgIGNhbmRp ZGF0ZXM6IChoZWFkaW5nKSA7IGEgbGlzdAorICBmcm9tOiBiZWxvdyAgICAgICAgICAgOyBhIHN5 bWJvbAorICBzdHlsZTogaXRlbSAgICAgICAgICAgOyBhIHN5bWJvbAorICBpbmRlbnQ6IDEgICAg ICAgICAgICAgOyBhIG51bWJlcgorICBuby1saW5rOiBuaWwgICAgICAgICAgOyBhIGJvb2xlYW4K KyAgcmVsYXRpdmUtZGVwdGg6IG5pbCAgIDsgYSBib29sZWFuCisgIGlnbm9yZTogbmlsICAgICAg ICAgICA7IGEgYm9vbGVhbgorCitgbWluLWRlcHRoJyBhbmQgYG1heC1kZXB0aCcgYm90aCBkZWZh dWx0IHRvIHVzaW5nIGFsbCBjYW5kaWRhdGVzIGF0CitldmVyeSBsZXZlbC4gIFVzZSBgbWluLWRl cHRoJyB0byBpZ25vcmUgbGV2ZWwgMSBoZWFkaW5ncyBsaWtlIFwiIworSGVhZGluZ1wiLCBieSB1 c2luZyAyLiAgVXNlIGBtYXgtZGVwdGgnIHRvIGNvbnRyb2wgaG93IGRlZXAgaW50byB0aGUKK2hl YWRpbmcgaGllcmFyY2h5IHlvdSBuZWVkIHlvdXIgdG9jIHRvIGdvLiAgVXNlIDMgdG8gc3RvcCBh dCBsZXZlbCB0aHJlZQoraGVhZGluZ3MuCisKK0hlYWRpbmdzIGRpY3RhdGUgdGhlIGxldmVsIG9m IHRoZWlyIGNoaWxkcmVuIGV2ZW4gaWYgaGVhZGluZ3MgYXJlCitleGNsdWRlZCBmcm9tIGNhbmRp ZGF0ZXMuICBPdGhlciBlbGVtZW50IHR5cGVzIGluaGVyaXQgdGhlIGxldmVsIG9mCit0aGVpciBw cmVjZWRpbmcgaGVhZGluZy4KKworYGNhbmRpZGF0ZXMnIGlzIGEgbGlzdCBhbmQgY2FuIGNvbnRh aW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgTWFya2Rvd24KK2VsZW1lbnQgc2hvcnRjdXQgbmFtZXMu ICBZb3UgY2FuIG1peCBoaWdoZXItbGV2ZWwgZ3JvdXBpbmcgc3ltYm9scyBhbmQKK2xvd2VyIGxl dmVsIHN5bWJvbHMuCisKKyAgYWxsIChpbmNsdWRlcyBldmVyeXRoaW5nKQorICBoZWFkaW5nIChp bmNsdWRlcyB0aGUgYmVsb3cpCisgICAgaDEgaDIgaDMgaDQgaDUgaDYKKyAgc2V0ZXh0IChpbmNs dWRlcyB0aGUgYmVsb3cpCisgICAgc2gxIHNoMgorICBpdGVtIChpbmNsdWRlcyB0aGUgYmVsb3cp CisgICAgbWludXMgcGx1cyBzdGFyCisgIG51bWJlcmVkLWl0ZW0gKGluY2x1ZGVzIHRoZSBiZWxv dykKKyAgICBkb3QgcGFyZW4KKyAgY29kZSAobmFtZWQgY29kZSBibG9ja3MpCisKK2Bmcm9tJyBj b250cm9scyB0aGUgZGlyZWN0aW9uIGFuZCBzY29wZSBmcm9tIHdoaWNoIGNhbmRpZGF0ZXMgYXJl CitzZWxlY3RlZC4gIFR5cGljYWxseSwgYSB0b2MgaXMgcGxhY2VkIGF0IHRoZSBiZWdpbm5pbmcg b2YgYSBidWZmZXIgYW5kCitgZnJvbScgaXMgYGJlbG93JyB0byBjYXB0dXJlIGVudHJ5IGNhbmRp ZGF0ZXMgYWZ0ZXIgdGhlIHRvYy4gIElmIHlvdSBzZXQKK2Bmcm9tJyB0byBgYWJvdmUnLCBjYW5k aWRhdGVzIGFyZSBzZWxlY3RlZCBmcm9tIGFib3ZlIHRoZSB0b2MuICBVc2UKK2BhbGwnIHRvIGNh cHR1cmUgZXZlcnkgZW50cnkgY2FuZGlkYXRlLiAgVGhpcyBpcyB1c2VmdWwgdG8gY3JlYXRlIGEK K2NvbXBsZXRlIHRvYyBhdCB0aGUgZW5kIG9mIHlvdXIgYnVmZmVyLgorCitUaGUgYHN0eWxlJyBw YXJhbWV0ZXIgY2FuIGJlIG5pbCwgYGl0ZW0nLCBgbnVtYmVyJyBvciBgbnVtYmVyLicuICBVbmRl cgorbmlsLCBlbnRyaWVzIGhhdmUgbm8gZGVjb3JhdGlvbnMuICBJZiBgaXRlbScsIGVudHJpZXMg YXJlIHByZWZpeGVkIHdpdGgKK1wiLVwiLiAgSWYgYGJ1bGxldCcsIHByZWZpeCB3aXRoIFwiKlwi LiAgSWYgYG51bWJlcicsIG51bWVyaWMgcHJlZml4ZXMKK2FyZSBnZW5lcmF0ZWQsIGZvciBleGFt cGxlIDEsIDEuMSwgMiwgMi4xLCAyLjEuMSwgMi4xLjIuICBVc2UgYG51bWJlci4nCit0byBhZGQg YSBwZXJpb2QgdG8gZWFjaCBlbnRyeSdzIG51bWJlci4KKworYGluZGVudCcgaXMgYW4gaW50ZWdl ciBiZXR3ZWVuIDAgYW5kIDEwLiAgMCBtZWFucyBub3RoaW5nIHNob3VsZCBiZQoraW5kZW50ZWQu ICBPdGhlcndpc2UsIGVhY2ggZW50cnkgaXMgaW5kZW50ZWQgYnkgdGhlIG51bWJlciBvZiBzcGFj ZXMgb2YKK2l0cyBNYXJrZG93biBsZXZlbCBtdWx0aXBsaWVkIGJ5IHRoaXMgdmFsdWUuICBDYW5k aWRhdGVzIHRoYXQgaGF2ZSBubworbmF0aXZlIGxldmVsIHN1Y2ggYXMgbGlzdCBpdGVtcyBpbmhl cml0IHRoZSBiYXNlIGluZGVudGF0aW9uIGxldmVsIG9mCitpdHMgcHJlY2VkaW5nIGhlYWRlci4g IExpc3QgaXRlbSBoaWVyYXJjaGllcyBhbmQgY29kZSBibG9ja3MgaW5kZW50Cit1bmRlciB0aGF0 IGJhc2UuCisKK1NldCBgbm8tbGluaycgdG8gdCBpZiB5b3UgZG8gbm90IHdhbnQgeW91ciBlbnRy aWVzIHRvIGhhdmUgaGVhZGVyIGxpbmtzLgorQnkgZGVmYXVsdCwgZWFjaCBlbnRyeSBkZXJpdmVk IGZyb20gYSBoZWFkaW5nIGlzIHByZXNlbnRlZCBhcyBhIGxpbmsgdG8KK2l0cyBzb3VyY2UgaGVh ZGluZy4gIE5PVEU6IFRoZSBlbGVtZW50cyByZXByZXNlbnRlZCBieSBgc2V0ZXh0JywgYGl0ZW0n LAorYG51bWJlcmVkLWl0ZW0nLCBgY29kZScgZG8gbm90IHN1cHBvcnQgbGlua3MuCisKK1VzZSBg cmVsYXRpdmUtZGVwdGgnIHRvIGNyZWF0ZSBhIHRvYyB1bmRlcm5lYXRoIGEgaGVhZGluZywgbGlt aXRpbmcgdGhlCit0b2MgdG8gaGVhZGluZyBkZXB0aHMgdW5kZXJuZWF0aCB0aGUgcHJlY2VkaW5n IGhlYWRlciBhbmQgc3BlY2lmeSB0aGUKK2xldmVscyByZWxhdGl2ZSB0byB0aGF0IGhlYWRlci4g IE1vcmUgY29uY3JldGVseSwgaWYgdGhlIHByZWNlZGluZworaGVhZGVyIGlzIGEgbGV2ZWwgMSBc IiNcIiBoZWFkZXIsIGBtaW4tZGVwdGgnIDEgYW5kIGBtYXgtZGVwdGgnIDIgd2lsbAorYmUgaW50 ZXJwcmV0ZWQgdG8gYmUgMiBhbmQgMy4gIElmIHlvdSBkZW1vdGUgdGhlIGhlYWRlciB0byBsZXZl bCAyCitcIiMjXCIgdGhleSB3aWxsIGJlIGludGVycHJldGVkIGFzIDMgYW5kIDQuICBUaGlzIGlz IHVzZWZ1bCB0byBhdm9pZAorZnVzc2luZyB3aXRoIHRvYyBjb25maWd1cmF0aW9ucyB1bmRlciBo ZWFkZXJzIHdoZW4geW91IGNoYW5nZSB0aGVpcgorbGV2ZWxzLgorCitGb3IgZXhhbXBsZToKKwor PCEtLSBtYXJrZG93bi10cy10b2M6IC0qLSByZWxhdGl2ZS1kZXB0aDogdDsgbWluLWRlcHRoOiAx OyBtYXgtZGVwdGg6IDI7IC0qLSAtLT4KKzwhLS0gbWFya2Rvd24tdHMtdG9jLWVuZDogLS0+CisK K0ZpbmFsbHksIGlmIGBpZ25vcmUnIGlzIHQsIHlvdSBjYW4ga2VlcCBhIHRvYyBlbGVtZW50IGlu IHBsYWNlIGFuZCBza2lwCitpdC4KKworSU5URVJBQ1RJVkUgd2lsbCBiZSBub24tbmlsIGlmIHRo aXMgY29tbWFuZCB3YXMgaW52b2tlZCBpbnRlcmFjdGl2ZWx5LgorCitTZWUgYG1hcmtkb3duLXRz LXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUnIHRvIGNvbmZpZ3VyZSB3YXJuaW5ncyBhYm91dAor dGFibGVzIG5vdCBiZWluZyBwcm9jZXNzZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4i CisgIChpbnRlcmFjdGl2ZSAicFxuUiIpCisgIDs7IE5PVEU6IElmIHBhcmFtZXRlcnMgb3IgdGhl aXIgZGVmYXVsdHMgY2hhbmdlLCBiZSBzdXJlIHRvIG1pcnJvcgorICA7OyB0aGVtIGluIGBtYXJr ZG93bi10cy10b2MtaW5zZXJ0LXRlbXBsYXRlJy4KKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5v dC1tb2RlICdtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUpCisgIChzZXRxIGJlZyAob3IgYmVnIChw b2ludC1taW4pKSkKKyAgKHNldHEgZW5kIChvciBlbmQgKHBvaW50LW1heCkpKQorICAodW5sZXNz IChlcSBiZWcgZW5kKQorICAgIDs7IENvbnZlcnQgbWFya2VycyB0byBhYnNvbHV0ZSBwb3NpdGlv bnMuCisgICAgKHNldHEgYmVnIChpZiAobWFya2VycCBiZWcpIChtYXJrZXItcG9zaXRpb24gYmVn KSBiZWcpKQorICAgIChzZXRxIGVuZCAoaWYgKG1hcmtlcnAgZW5kKSAobWFya2VyLXBvc2l0aW9u IGVuZCkgZW5kKSkKKyAgICA7OyBOT1RFOiBPcGVyYXRlIG9uIHRoZSB3aWRlbmVkIGJ1ZmZlciB0 byBhdm9pZCB0cmVlc2l0ZXIgY3Jhc2ggaXNzdWVzLgorICAgICh3aXRob3V0LXJlc3RyaWN0aW9u CisgICAgICAobGV0ICgodG9jcyAobWFya2Rvd24tdHMtLXRvY3MgYmVnIGVuZCkpKQorICAgICAg ICAodW5sZXNzIHRvY3MKKyAgICAgICAgICAoaWYgKGFuZCBpbnRlcmFjdGl2ZQorICAgICAgICAg ICAgICAgICAgIChlcSAnaW5zZXJ0LXRlbXBsYXRlIG1hcmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13 YXJuLWlmLW5vbmUpKQorICAgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAobWFy a2Rvd24tdHMtdG9jLWluc2VydC10ZW1wbGF0ZSkKKyAgICAgICAgICAgICAgICA7OyBJZiB0aGUg dXNlciBkaWRuJ3QgcXVpdCB0aGUgcHJvbXB0LCBhIHRlbXBsYXRlIG1heSBoYXZlCisgICAgICAg ICAgICAgICAgOzsgYmVlbiBhZGRlZCwgc28gcmVzY2FuIHRoZSBidWZmZXIuCisgICAgICAgICAg ICAgICAgKHNldHEgdG9jcyAobWFya2Rvd24tdHMtLXRvY3MpKSkKKyAgICAgICAgICAgICh3aGVu IChlcSAnbm8tdGFibGVzIG1hcmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUpCisg ICAgICAgICAgICAgIChsd2FybiAnbWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlCisgICAgICAgICAg ICAgICAgICAgICA6d2FybmluZworICAgICAgICAgICAgICAgICAgICAgIk5vIHRhYmxlcyBvZiBj b250ZW50cyBmb3VuZCBpbiAlcy4iCisgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLW5hbWUg KGN1cnJlbnQtYnVmZmVyKSkpKSkpCisgICAgICAgIChtYXJrZG93bi10cy0tdG9jcy1zYW5pdHkt Y2hlY2sgdG9jcykKKworICAgICAgICA7OyBTdHJhdGVneSBpcyBwcm9jZXNzIG9uZSB0b2MgYXQg YSB0aW1lIGZyb20gdGhlIHRvcCB0byB0aGUKKyAgICAgICAgOzsgYm90dG9tIG9mIHRoZSByYW5n ZSBCRUcgRU5ELiAgU3Vic2VxdWVudCB0b2MgYW5kIGVudHJ5CisgICAgICAgIDs7IGNhbmRpZGF0 ZSBub2RlIHBvc2l0aW9ucyBjaGFuZ2UgYXMgd2UgdXBkYXRlIGVhY2ggdG9jIHRleHQgc28KKyAg ICAgICAgOzsgd2UgaGF2ZSB0byByZXRyaWV2ZSB0aGVtIGZyZXNoIGZyb20gdGhlIGVuZCBvZiB0 aGUgbW9zdCByZWNlbnQKKyAgICAgICAgOzsgdG9jLgorICAgICAgICAobGV0ICgodG9jcykKKyAg ICAgICAgICAgICAgKG51bS10b2NzLXByb2Nlc3NlZCAwKQorICAgICAgICAgICAgICAodG9jKQor ICAgICAgICAgICAgICAodG9jLWVuZCkKKyAgICAgICAgICAgICAgKHRvYy1zaXplKQorICAgICAg ICAgICAgICA7OyBUaGVzZSBhcmUgYWRqdXN0ZWQgYnkgdGhlIHNpemUgb2YgaW5zZXJ0ZWQgdGV4 dCBlYWNoIHBhc3MuCisgICAgICAgICAgICAgIChiZWctcG9zIGJlZykKKyAgICAgICAgICAgICAg KGVuZC1wb3MgZW5kKQorICAgICAgICAgICAgICAoc291cmNlLWJ1ZmZlciAoY3VycmVudC1idWZm ZXIpKSkKKyAgICAgICAgICA7OyBGaW5kIGVhY2ggIm1hcmtkb3duLXRzLXRvYyIgaW4gc3VjY2Vz c2lvbiBzdGFydGluZyBhdCB0aGUgZW5kCisgICAgICAgICAgOzsgb2YgZWFjaCBwcmV2aW91cyBv bmUgd2UgZmluZCB3aXRoaW4gdGhlIHJlcXVlc3RlZCByZWdpb24uCisgICAgICAgICAgKHdoaWxl IChhbmQgKDwgYmVnLXBvcyBlbmQtcG9zKQorICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRv Y3MgKG1hcmtkb3duLXRzLS10b2NzIGJlZy1wb3MgZW5kLXBvcykpKQorICAgICAgICAgICAgKHNl dHEgdG9jIChjYXIgdG9jcykpCisgICAgICAgICAgICAoc2V0cSB0b2Mtc2l6ZSAwKQorCisgICAg ICAgICAgICAod2hlbiAoZXF1YWwgIm1hcmtkb3duLXRzLXRvYyIgKGNhciB0b2MpKQorICAgICAg ICAgICAgICA7OyBBZnRlciBzYW5pdHkgY2hlY2tpbmcsIHdlIGtub3cgdGhlIHNlY29uZCBlbGVt ZW50IGlzIGEKKyAgICAgICAgICAgICAgOzsgdG9jLWVuZC4KKyAgICAgICAgICAgICAgKHNldHEg dG9jLWVuZCAobnRoIDEgdG9jcykpCisgICAgICAgICAgICAgIChsZXQqICgodG9jLW5vZGUgKGFs aXN0LWdldCAnbm9kZSB0b2MpKQorICAgICAgICAgICAgICAgICAgICAgKHRvYy12YXJzIChhbGlz dC1nZXQgJ3ZhcnMgdG9jKSkKKyAgICAgICAgICAgICAgICAgICAgICh0b2MtaWdub3JlIChhbGlz dC1nZXQgJ2lnbm9yZSB0b2MtdmFycykpKQorICAgICAgICAgICAgICAgICh1bmxlc3MgdG9jLWln bm9yZQorICAgICAgICAgICAgICAgICAgOzsgQnVpbGQgdGhlIHRvYyBvbmUgY2FuZGlkYXRlIGF0 IGEgdGltZSwgdHJhY2tpbmcKKyAgICAgICAgICAgICAgICAgIDs7IGluZGVudGF0aW9uIGFuZCBj cmVhdGluZyBsaW5rcyBpZiBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAobGV0KiAoKHRvYy1l bmQtbm9kZSAoYWxpc3QtZ2V0ICdub2RlIHRvYy1lbmQpKQorICAgICAgICAgICAgICAgICAgICAg ICAgIChyZWctYmVnICh0cmVlc2l0LW5vZGUtZW5kIHRvYy1ub2RlKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAocmVnLWVuZCAodHJlZXNpdC1ub2RlLXN0YXJ0IHRvYy1lbmQtbm9kZSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1oYW5kbGVzIChtYXJrZG93bi10cy0tdG9jLWV4 cGFuZC1jYW5kaWRhdGUtaGFuZGxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG9yIChjZHItc2FmZSAoYXNzcSAnY2FuZGlkYXRlcyB0b2MtdmFycykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRpbmcpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBOb3cgYWRkIGhlYWRpbmdzIHRvIGFsd2F5cyByZXRyaWV2ZSBh bmQgZGVyaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgOzsgbGV2ZWxzIGV2ZW4gaWYgdGhl eSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgdG9jLgorICAgICAgICAgICAgICAgICAgICAgICAgIChz ZWVkLWhhbmRsZXMgKGNvcHktdHJlZSB0b2MtaGFuZGxlcykpCisgICAgICAgICAgICAgICAgICAg ICAgICAgKF8gKGRvbGlzdCAoZWx0IChhbGlzdC1nZXQgJ2hlYWRpbmcgbWFya2Rvd24tdHMtLXRv Yy1oYW5kbGVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1wdXNobmV3IGVs dCBzZWVkLWhhbmRsZXMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodG9jLWZyb20gKG9y IChjZHItc2FmZSAoYXNzcSAnZnJvbSB0b2MtdmFycykpICdiZWxvdykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKHRvYy1zdHlsZSAob3IgKGNkci1zYWZlIChhc3NxICdzdHlsZSB0b2MtdmFy cykpICdpdGVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodG9jLW5vLWxpbmsgKGFsaXN0 LWdldCAnbm8tbGluayB0b2MtdmFycykpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1p bmRlbnQgKG1pbiAxMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1heCAwIChvciAoY2RyLXNhZmUgKGFzc3EgJ2luZGVudCB0b2MtdmFycykpIDEpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKHRvYy1taW4tZGVwdGggKG1heCAxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGNkci1zYWZlIChhc3NxICdtaW4t ZGVwdGggdG9jLXZhcnMpKSAxKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1tYXgt ZGVwdGggKG1heCB0b2MtbWluLWRlcHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAob3IgKGNkci1zYWZlIChhc3NxICdtYXgtZGVwdGggdG9jLXZhcnMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vc3QtcG9z aXRpdmUtZml4bnVtKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1yZWxhdGl2ZS1k ZXB0aCAoY2RyLXNhZmUgKGFzc3EgJ3JlbGF0aXZlLWRlcHRoIHRvYy12YXJzKSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgKHRvYy1jYW5kaWRhdGVzIChtYXJrZG93bi10cy0tdG9jLWNvbGxl Y3QtY2FuZGlkYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dG9jLW5vZGUgdG9jLWVuZC1ub2RlIHNlZWQtaGFuZGxlcyB0b2MtZnJvbSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgKHRvYy1yZWxhdGl2ZS1oZWFkaW5nLWRlcHRoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICgxKyAob3IgKHNlcS1wb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnKCJhdHhfaDFfbWFya2VyIiAiYXR4X2gyX21hcmtlciIgImF0eF9oM19t YXJrZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0eF9oNF9tYXJr ZXIiICJhdHhfaDVfbWFya2VyIiAiYXR4X2g2X21hcmtlciIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdHlwZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRvYy1ub2RlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJhdHhfaGVhZGluZyIgJ2JhY2t3YXJkKSAwICduYW1lZCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnZXF1YWwpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLTEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2x1Zy10by1w b3MgKG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkcykpCisgICAgICAgICAgICAgICAgICAgICAgICAg KHBvcy10by1zbHVnCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChodCAobWFrZS1o YXNoLXRhYmxlIDpzaXplIChoYXNoLXRhYmxlLWNvdW50IHNsdWctdG8tcG9zKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dGVzdCAjJ2VxdWFs KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGhhc2ggKGxhbWJkYSAoayB2KSAo cHV0aGFzaCB2IGsgaHQpKSBzbHVnLXRvLXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBodCkpKQorCisgICAgICAgICAgICAgICAgICAgICh3aXRoLXdvcmstYnVmZmVyCisgICAgICAg ICAgICAgICAgICAgICAgKGluc2VydCAiPCEtLSBOT1RFOiBtYXJrZG93bi10cy10b2MgZ2VuZXJh dGVkIHRleHQgc2VjdGlvbiBtYXkgYmUgb3ZlcndyaXR0ZW4uIC0tPlxuIikKKyAgICAgICAgICAg ICAgICAgICAgICAobGV0ICgoaGFuZGxlKSAoaGFuZGxlLWNsYXNzKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmRlbnQg MCkgKGxldmVsIDEpIChsZXZlbC1wcmV2IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgSGVhZGluZyBsZXZlbCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgaXRlbXMgdW5kZXIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBpdC4gIElmIHRoZXJlIGFyZSBubyBoZWFkaW5ncywg aXQgd2lsbCByZW1haW4gMS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV2ZWwtaGVh ZGluZyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IEFkanVzdCBmb3Igbm9uIGhl YWRpbmdzIHVuZGVyIGhlYWRpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudW1i ZXItc3RhY2spKQorCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBDYW5kaWRhdGVzIHNob3Vs ZCBiZSBpbiBidWZmZXIgb3JkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAoZG9saXN0IChj YW5kaWRhdGUgdG9jLWNhbmRpZGF0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQg KChzbHVnLXBvcykgKHRleHQpIChsaW5rLXRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxldmVsLWFkaiAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBoYW5kbGUgKGNhciBjYW5kaWRhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGFuZGxlLWNsYXNzIChhbGlzdC1nZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhhbmRsZSBtYXJrZG93bi10cy0tdG9jLWhhbmRsZS1jbGFzc2Vz KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBub2RlIChjZHIgY2FuZGlkYXRl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzbHVnLXBvcyBuaWwpCisKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTdHJpcCB0cmFpbGluZyBuZXdsaW5lcy4gIEFk ZCB0aGVtIGNvbnNpc3RlbnRseSBiZWxvdy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c2V0cSB0ZXh0IChzdHJpbmctdHJpbS1yaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXJrZG93bi10cy0tdG9jLXRleHQtbm9ybWFsaXplCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSBub2RlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlICduby1w cm9wZXJ0eSkpKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IENhbmRpZGF0ZSBu b2RlIHR5cGUgbG9naWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlIGhhbmRs ZS1jbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdoZWFkaW5nCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHggKHNlcS1wb3NpdGlvbiAnKGgxIGgyIGgz IGg0IGg1IGg2KSBoYW5kbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXRxIHNsdWctcG9zICh0cmVlc2l0LW5vZGUtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1zZWFyY2gtZm9yd2FyZCBub2RlICJh dHhfaGVhZGluZyIgJ2JhY2t3YXJkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBsZXZlbCAoc2V0cSBsZXZlbC1oZWFkaW5nICgxKyB4KSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbC1hZGogMCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGluZGVudCAoMS0gbGV2ZWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGluay10YXJnZXQgdGV4dCkpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCdzZXRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobGV0ICgoeCAoc2VxLXBvc2l0aW9uICcoc2gxIHNoMikgaGFuZGxlKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbCAoMSsgeCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbC1hZGogMCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGluZGVudCAoMS0gbGV2ZWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGluay10YXJnZXQgbmlsKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKG9yICdpdGVtICdudW1iZXJlZC1pdGVtKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIGxldmVsIGxldmVsLWhlYWRpbmcpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwtYWRqIChtYXJrZG93bi10cy0tdG9jLWxp c3QtaXRlbS1kZXB0aCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBpbmRlbnQgKDEtICAoKyBsZXZlbCBsZXZlbC1hZGopKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0cSBsaW5rLXRhcmdldCBuaWwpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCdjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSW5oZXJp dCB0aGUgYW1iaWVudCBsZXZlbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBsZXZlbC1hZGogMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBpbmRl bnQgKDEtICAoKyBsZXZlbCBsZXZlbC1hZGopKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBsaW5rLXRhcmdldCBuaWwpKSkKKworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IEZpbHRlciBkZXNpcmVkIGhhbmRsZXMgYW5kIGxldmVscy4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hlbiAoYW5kIChtZW1xIGhhbmRsZSB0b2MtaGFuZGxlcykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg+PSBsZXZlbCAoKyB0b2MtbWluLWRl cHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIHRvYy1yZWxhdGl2ZS1kZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0b2MtcmVsYXRpdmUtaGVhZGluZy1kZXB0aCAwKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPD0gbGV2ZWwgKCsgdG9jLW1h eC1kZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiB0b2MtcmVsYXRpdmUtZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9jLXJlbGF0aXZlLWhlYWRpbmctZGVwdGggMCkp KSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQ3JlYXRlIHRoZSBlbnRyeSB3 aXRoIGluZGVudCwgaXRlbS9udW1iZXIgcHJlZml4LCBsaW5rLgorCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBDb3JuZXIgY2FzZTogaW5pdGlhbCBsZXZlbCBoaWdoZXIgdGhhbiAx LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoPiBsZXZlbCAxKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgbGV2ZWwtcHJldiAw KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwgMSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIChub3QgdG9jLW5vLWxpbmspIGxp bmstdGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTYW5pdGl6ZSB0 aGUgaWQgdG8gY29uZm9ybSB0byBDU1MgaWRlbnQgc3ludGF4LgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2V0cSB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChmb3JtYXQgIlslc10oIyVzKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmLWxldCogKChzbHVnIChnZXRoYXNoIHNsdWctcG9zIHBvcy10by1zbHVn KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs dWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5j YWxsIG1hcmtkb3duLXRzLXRvYy1zbHVnLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLXRhcmdldCkpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyAoKiAoMS0gKG1h eCBpbmRlbnQgMSkpIHRvYy1pbmRlbnQpID9ccykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBjYXNlIHRvYy1zdHlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgnaXRlbSAiLSAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgnYnVsbGV0ICIqICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKChvciAnbnVtYmVyICdudW1iZXIuKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobGV0ICgobGV2ZWwgKCsgbGV2ZWwgbGV2ZWwtYWRqKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChvciAobm90IG51 bWJlci1zdGFjaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICg+IGxldmVsIChjYWFyIG51bWJlci1zdGFjaykpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBgKCxsZXZlbCAuIDApIG51 bWJlci1zdGFjaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChhbmQgbnVtYmVyLXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKDwgbGV2ZWwgKGNhYXIgbnVtYmVyLXN0YWNrKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGlsZSAo YW5kIG51bWJlci1zdGFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoPCBsZXZlbCAoY2FhciBudW1iZXItc3RhY2spKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9wIG51 bWJlci1zdGFjaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1bmxlc3MgbnVtYmVyLXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggYCgsbGV2ZWwgLiAwKSBudW1iZXItc3RhY2sp KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0Y2RyIChj YXIgbnVtYmVyLXN0YWNrKSAoMSsgKGNkYXIgbnVtYmVyLXN0YWNrKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChzKSAobiAobGVuZ3RoIG51bWJlci1z dGFjaykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEt bWFwLWluZGV4ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGxhbWJkYSAoZWx0IGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbmNhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChmb3JtYXQgIiVkIiAoY2RyIGVsdCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgKDErIGlkeCkgbikg IiIgIi4iKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cmV2ZXJzZSBudW1iZXItc3RhY2spKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjb25jYXQgcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHdoZW4gKGVxIHRvYy1zdHlsZSAnbnVtYmVyLikgIi4iKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgIikpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfICIiKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBBZGQgYSBoYXJkIGxpbmUgYnJlYWsuICBCYWNrc2xhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgc2VlbXMgbGVzcyB3ZWxsIHN1cHBv cnRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyByZW5kZXJl cnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXN0cmluZyAy ID9ccykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwtcHJldiBsZXZlbCkpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAoc2V0cSB0b2Mtc2l6ZSAoYnVmZmVyLXNpemUpKQorICAgICAgICAg ICAgICAgICAgICAgIChsZXQgKCh0ZW1wLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHNvdXJjZS1idWZmZXIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIHJlZy1iZWcg cmVnLWVuZCB0ZW1wLWJ1ZmZlcikpKSkpCisgICAgICAgICAgICAgICAgICAoc2V0cSBudW0tdG9j cy1wcm9jZXNzZWQgKDErIG51bS10b2NzLXByb2Nlc3NlZCkpKSkpCisgICAgICAgICAgICA7OyBT dGFydCB0aGUgbmV4dCBwYXNzIGFmdGVyIHRoaXMgdG9jLWVuZC4gIEFkanVzdCBmb3IgdGhlCisg ICAgICAgICAgICA7OyBpbnNlcnRlZCB0ZXh0IHNpemUuCisgICAgICAgICAgICAoc2V0cSBiZWct cG9zICgrIChhbGlzdC1nZXQgJ2VuZCB0b2MtZW5kKSB0b2Mtc2l6ZSkpCisgICAgICAgICAgICAo c2V0cSBlbmQtcG9zIChtaW4gKHBvaW50LW1heCkgKCsgZW5kLXBvcyB0b2Mtc2l6ZSkpKSkKKyAg ICAgICAgICAod2hlbiAoYW5kIChlcSBudW0tdG9jcy1wcm9jZXNzZWQgMCkKKyAgICAgICAgICAg ICAgICAgICAgIChlcSAnbm8tYWN0aXZlLXRhYmxlcyBtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUt d2Fybi1pZi1ub25lKSkKKyAgICAgICAgICAgIChsd2FybiAnbWFya2Rvd24tdHMtdG9jLWdlbmVy YXRlCisgICAgICAgICAgICAgICAgICAgOndhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAiTm8g dGFibGVzIG9mIGNvbnRlbnRzIGdlbmVyYXRlZCBpbiAlcy4iCisgICAgICAgICAgICAgICAgICAg KGJ1ZmZlci1uYW1lIChjdXJyZW50LWJ1ZmZlcikpKSkpKSkpKQorCisocHJvdmlkZSAnbWFya2Rv d24tdHMtbW9kZS14KQorOzs7IG1hcmtkb3duLXRzLW1vZGUteC5lbCBlbmRzIGhlcmUKZGlmZiAt LWdpdCBhL2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUuZWwgYi9saXNwL3RleHRtb2Rl cy9tYXJrZG93bi10cy1tb2RlLmVsCmluZGV4IDY1N2Q2YmM0NjZkLi4wNWYwMTZhYjM3NyAxMDA2 NDQKLS0tIGEvbGlzcC90ZXh0bW9kZXMvbWFya2Rvd24tdHMtbW9kZS5lbAorKysgYi9saXNwL3Rl eHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsCkBAIC0xLDExICsxLDE0IEBACi07OzsgbWFya2Rv d24tdHMtbW9kZS5lbCAtLS0gdHJlZSBzaXR0ZXIgc3VwcG9ydCBmb3IgTWFya2Rvd24gIC0qLSBs ZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQorOzs7IG1hcmtkb3duLXRzLW1vZGUuZWwgLS0tIHRyZWUg c2l0dGVyIHN1cHBvcnQgZm9yIE1hcmtkb3duIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQog CiA7OyBDb3B5cmlnaHQgKEMpIDIwMjQtMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KIAotOzsgQXV0aG9yICAgICA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRv QGdtYWlsLmNvbT4KLTs7IE1haW50YWluZXIgOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwu anVsaWF0b0BnbWFpbC5jb20+Ci07OyBDcmVhdGVkICAgIDogQXByaWwgMjAyNAotOzsgS2V5d29y ZHMgICA6IG1hcmtkb3duIG1kIGxhbmd1YWdlcyB0cmVlLXNpdHRlcgorOzsgQXV0aG9yICAgICAg ICAgICA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRvQGdtYWlsLmNvbT4KKzs7 ICAgICAgICAgICAgICAgICAgOiBTdMOpcGhhbmUgTWFya3MgPHNoaXBtaW50c0BnbWFpbC5jb20+ Cis7OyBNYWludGFpbmVyICAgICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1bGlh dG9AZ21haWwuY29tPgorOzsgQ3JlYXRlZCAgICAgICAgICA6IEFwcmlsIDIwMjQKKzs7IFZlcnNp b24gICAgICAgICAgOiAxLjAKKzs7IFBhY2thZ2UtUmVxdWlyZXMgOiAoKGVtYWNzICIzMS4xIikp Cis7OyBLZXl3b3JkcyAgICAgICAgIDogbWFya2Rvd24gbWQgdGV4dCBlZGl0IGxhbmd1YWdlcyB0 cmVlLXNpdHRlcgogCiA7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCiAKQEAgLTIy LDEzOCArMjUsNzYxIEBACiA7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCi07OzsgVHJlZS1z aXR0ZXIgbGFuZ3VhZ2UgdmVyc2lvbnMKKzs7OyBDb21tZW50YXJ5OgorCis7Ozs7IFRyZWUtc2l0 dGVyIExhbmd1YWdlIFZlcnNpb25zCiA7OwogOzsgbWFya2Rvd24tdHMtbW9kZSBoYXMgYmVlbiB0 ZXN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGdyYW1tYXJzIGFuZCB2ZXJzaW9uOgogOzsgLSB0cmVl LXNpdHRlci1tYXJrZG93bjogdjAuNC4xCiA7OyAtIHRyZWUtc2l0dGVyLW1hcmtkb3duLWlubGlu ZTogdjAuNC4xCiA7OwotOzsgV2UgdHJ5IG91ciBiZXN0IHRvIG1ha2UgYnVpbHRpbiBtb2RlcyB3 b3JrIHdpdGggbGF0ZXN0IGdyYW1tYXIKLTs7IHZlcnNpb25zLCBzbyBhIG1vcmUgcmVjZW50IGdy YW1tYXIgaGFzIGEgZ29vZCBjaGFuY2UgdG8gd29yayB0b28uCi07OyBTZW5kIHVzIGEgYnVnIHJl cG9ydCBpZiBpdCBkb2Vzbid0LgotCi07OzsgQ29tbWVudGFyeToKKzs7IFdlIHRyeSBvdXIgYmVz dCB0byBtYWtlIGJ1aWx0LWluIG1vZGVzIHdvcmsgd2l0aCBsYXRlc3QgZ3JhbW1hcgorOzsgdmVy c2lvbnMsIHNvIGEgbW9yZSByZWNlbnQgZ3JhbW1hciBoYXMgYSBnb29kIGNoYW5jZSB0byB3b3Jr LiAgU2VuZAorOzsgdXMgYSBidWcgcmVwb3J0IGlmIGl0IGRvZXNuJ3QuCis7OworOzsgQmlkaXJl Y3Rpb25hbCBUZXh0IENvbnNpZGVyYXRpb25zCis7OworOzsgVGV4dCB3aXRoIG1hcmt1cCBtYXkg bmVlZCBhbiBleHRyYSBuZXdsaW5lIGJlZm9yZSBiaWRpcmVjdGlvbmFsIHRleHQKKzs7IGZvciBp dCB0byBzaG93IGNvcnJlY3RseS4gIFRoaXMgaXMgYSBsaW1pdGF0aW9uIGluIHRoZSBFbWFjcyBk aXNwbGF5Cis7OyBlbmdpbmUuCis7OworOzsgQ29kZSBCbG9jayBMYW5ndWFnZSBNb2RlIENvbnNp ZGVyYXRpb25zCis7OworOzsgRmVuY2VkIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMgYXJlIGRl cml2ZWQgZnJvbSB0aGUgdGFibGUKKzs7IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzJyBh bmQgaGV1cmlzdGljcyBhZGRpbmcgIi10cy1tb2RlIiBhbmQKKzs7ICItbW9kZSIgdG8gdGhlIGxh bmd1YWdlIG5hbWUuICBJZiB5b3VyIGxhbmd1YWdlJ3MgbW9kZSBpcyBub3QKKzs7IHByb3Blcmx5 IHJlY29nbml6ZWQsIGFkZCBpdCB0byBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcycsIHdo aWNoCis7OyBzZWUuCis7OworOzsgRWFjaCBsYW5ndWFnZSdzIG1ham9yIG1vZGUgaXMgZW5hYmxl ZCBvbmNlIHBlciBgbWFya2Rvd24tdHMtbW9kZScKKzs7IGJ1ZmZlciBpbiBhIHRlbXBvcmFyeSBi dWZmZXIgdG8gZXh0cmFjdCBpdHMgZGVmYXVsdCBmb250LWxvY2sgYW5kCis7OyB0cmVlLXNpdHRl ciBzZXR0aW5ncy4gIEluIGNvbnZlbnRpb25hbCBub24tdHJlZXNpdCBjb2RlIGJsb2NrcywgdGhl Cis7OyBtYWpvciBtb2RlIGlzIGVuYWJsZWQgZWFjaCB0aW1lIHRoZSBibG9jayBpcyBmb250aWZp ZWQuCis7OworOzsgTk9URTogTWFqb3IgbW9kZSBob29rcyBhcmUgbm90IHJ1biBhbmQgZm9udC1s b2NrLCB0cmVlc2l0LCBpbmRlbnQsCis7OyBjb21tZW50IHJlY29nbml0aW9uLCBldGMuIGN1c3Rv bWl6YXRpb25zIHRoYXQgeW91IG1pZ2h0IGhhdmUgaW4geW91cgorOzsgaG9va3MgYXJlIG5vdCBh cHBsaWVkLiAgQXMgYSByZXN1bHQsIHlvdXIgY29kZSBibG9ja3MgbWlnaHQgYXBwZWFyCis7OyBk aWZmZXJlbnQgaW4gYG1hcmtkb3duLXRzLW1vZGUnIG1vZGUgdGhhbiBpbiBuYXRpdmUgbWFqb3Ig bW9kZQorOzsgYnVmZmVycy4gIE5vdCBydW5uaW5nIGhvb2tzIGF2b2lkcyB0aGUgY29zdCBvZiBl YWNoIG1vZGUgaG9vayBhbmQKKzs7IGF2b2lkcyBwb3RlbnRpYWwgcmVjdXJzaXZlIHRyZWVzaXQg Y2FsbGJhY2sgaXNzdWVzLgorOzsKKzs7OzsgQ29kZSBCbG9jayBDb21tYW5kcworOzsKKzs7IFNv bWUgY29tbW9uIGNvbW1hbmRzIHdpbGwgb3BlcmF0ZSB3aXRoaW4gYSBjb2RlIGJsb2NrIGFuZCBp biBpdHMKKzs7IG1vZGUuICBUaGVzZSBvcGVyYXRlIGluIGFuIGluZGlyZWN0IGJ1ZmZlciBhbmQg c29tZSBjb21tYW5kcyBtYXkKKzs7IG9wZXJhdGUgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdG8gdGhl IHNhbWUgY29tbWFuZHMgaW52b2tlZCBpbiBhIG5hdGl2ZQorOzsgbW9kZSBidWZmZXIuICBgaW5k ZW50LWZvci10YWItY29tbWFuZCcgbWF5IGludm9rZQorOzsgYGNvbXBsZXRpb24tYXQtcG9pbnQn IHVuZGVyIHRoZSBjb3ZlcnMgYW5kIG1heSByZXR1cm4gcmVzdWx0cyBmcm9tCis7OyB0aGUgc3Vy cm91bmRpbmcgTWFya2Rvd24gYnVmZmVyIGluc3RlYWQgb2YgdGhlIGNvZGUgYmxvY2sncyBjb250 ZXh0LgorOzsgWW91IGNhbiBpbnZva2UgYGNvbXBsZXRpb24tYXQtcG9pbnQnIGRpcmVjdGx5IGJ5 IHVzaW5nIGl0cyBrZXkKKzs7IGJpbmRpbmcsIGBDLU0taWAuCis7OworOzs7OyBQaXBlIFRhYmxl cworOzsKKzs7IFRoZXNlIGFyZSBhIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biAoR0ZNKSBleHRl bnNpb24gYW5kIGFyZSBhIGRlCis7OyBmYWN0byBzdGFuZGFyZCBnaXZlbiB0aGVpciBwb3B1bGFy aXR5IGFuZCBpbXBsZW1lbnRhdGlvbnMgYWNyb3NzCis7OyBwcm9kdWN0cy4gIFRoZXkgbWlnaHQg YXMgd2VsbCBiZSBmb2xkZWQgaW50byB0aGUgQ29tbW9uTWFyayBzdGFuZGFyZC4KKzs7Cis7OyBB IHBpcGUgdGFibGUgaXMgYSByZWN0YW5nbGUgb2YgdGV4dCBzdXJyb3VuZGVkIHRvIHRoZSBlYXN0 IGFuZCB3ZXN0Cis7OyBieSBwaXBlIHN5bWJvbHMgYW5kIHdoZXJlIHBpcGVzIHNlcGFyYXRlIGNv bHVtbnMuICBJdCBoYXMgYSBoZWFkZXIKKzs7IHJvdyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBo ZWFkZXIgYWxpZ25tZW50IHJvdywgYm90aCBvZiB3aGljaCBtdXN0Cis7OyBjb250YWluIHRoZSBz YW1lIG51bWJlciBvZiBjZWxscy4gIEJvZHkgcm93cyBhcmUgb3B0aW9uYWwuICBBIHRhYmxlCis7 OyBlbmRzIHdpdGggYSBibGFuayBsaW5lIG9yIGF0IHRoZSBzdGFydCBvZiBhIG5ldyBNYXJrZG93 biBibG9jaworOzsgZWxlbWVudC4KKzs7Cis7OyBUaGUgaGVhZGVyIGFsaWdubWVudCByb3cgY29s dW1uIG11c3QgaGF2ZSBhIG1pbmltdW0gb2YgdGhyZWUgaHlwaGVucworOzsgd2hpY2ggaW5kaWNh dGVzIGRlZmF1bHQgYWxpZ25tZW50IChpLmUuLCB3aGF0ZXZlciBhIHJlbmRlcmVyCis7OyBjaG9v c2VzKS4gIFRvIGluZGljYXRlIGxlZnQgYWxpZ25tZW50LCBwcmVmaXggdGhlIGh5cGhlbiBzdHJp bmcgd2l0aAorOzsgYSBjb2xvbiBsaWtlIHRoaXMgOi0tLS4gIEZvciBjZW50ZXIgYWxpZ25tZW50 LCBwcmVmaXggYW5kIHN1ZmZpeCB3aXRoCis7OyBjb2xvbnMgbGlrZSB0aGlzIDotLS06LiAgRm9y IHJpZ2h0IGFsaWdubWVudCwgc3VmZml4IHdpdGggYSBjb2xvbgorOzsgbGlrZSB0aGlzIC0tLTou Cis7OworOzsgRWFjaCB0YWJsZSBoZWFkZXIgb3IgYm9keSBjZWxsIGNhbiBjb250YWluIHRoZSB1 c3VhbCBNYXJrZG93biBpbmxpbmUKKzs7IHN0eWxlIGluZGljYXRvcnMuICBBIGNlbGwgY2Fubm90 IGNvbnRhaW4gYSBibG9jayBlbGVtZW50IHN1Y2ggYXMgYQorOzsgaGVhZGluZ3MsIHRoZW1hdGlj IGJyZWFrcywgYmxvY2sgcXVvdGVzLCBmZW5jZWQgY29kZSBibG9ja3MuCis7OworOzsgVGFibGUg Y2VsbHMgZG8gbm90IG5lZWQgdG8gYWxpZ24gdmlzdWFsbHk7IGkuZS4sIHRoZSBwaXBlIHN5bWJv bHMgZG8KKzs7IG5vdCBuZWVkIHRvIGxpbmUgdXAgdmVydGljYWxseS4gIFRoZSB0cmVlLXNpdHRl ciBwYXJzZXIgYW5kIHJlbmRlcmVycworOzsgZGV0ZWN0IGNlbGwgYm91bmRhcmllcyB1c2luZyBw aXBlIHN5bWJvbHMsIG5vdCB0aGVpciByZWxhdGl2ZSBhbGlnbm1lbnQuCis7OworOzsgSWYgeW91 IHdhbnQgdG8gaW5jbHVkZSB3aGF0IGxvb2tzIGxpa2UgY29kZSwgeW91IGNhbiB1c2UgYmFja3Rp Y2tzIHRvCis7OyB3cmFwIHN1Y2ggdGV4dCBhbGEgYHRoaXMgaXMgY29kZWAuICBUaGlzIG1vZGUg d2lsbCBub3QgZm9udGlmeSBzdWNoCis7OyBjb2RlLgorOzsKKzs7IElmIHlvdSB3YW50IHRvIGlu Y2x1ZGUgYSBwaXBlIHN5bWJvbCBpbiBhIGNlbGwsIGVzY2FwZSBpdCB0aHVzbHkgXHwuCis7Owor OzsgVGVjaG5pY2FsbHksIGJvZHkgcm93cyBkbyBub3QgbmVlZCB0byBjb250YWluIHRoZSBzYW1l IG51bWJlciBvZgorOzsgY2VsbHMgYXMgdGhlIGhlYWRlciBoYXMgY29sdW1ucyBhbmQgcm93cyBk byBub3QgbmVlZCB0byBzaGFyZSB0aGUKKzs7IHNhbWUgbnVtYmVyIG9mIGNlbGxzIGFtb25nIHRo ZW1zZWx2ZXMuICBOb3RlOiBNYW55IHJlbmRlcmVycyBnZXQKKzs7IGNvbmZ1c2VkIGlmIHRoZSB0 YWJsZSBpcyAicmFnZ2VkIiB3aXRoIGFuIHVuZXZlbiBudW1iZXIgb2YgY29sdW1ucworOzsgYW1v bmcgcm93cy4gIFNvbWUgcmVuZGVyZXJzIHdpbGwgaW5zZXJ0IGVtcHR5IGNlbGxzIG9uIGEgcm93 IHRoYXQKKzs7IGNvbnRhaW5zIGZld2VyIGNlbGxzIHRoYW4gdGhlIGhlYWRlciBoYXMgY29sdW1u cy4gIFNvbWUgZWxpZGUgY2VsbHMKKzs7IHRoYXQgZXhjZWVkIHRoZSBudW1iZXIgb2YgY29sdW1u cyBpbiB0aGUgaGVhZGVyLgorOzsKKzs7OzsgUGlwZSBUYWJsZSBSZWNvbW1lbmRhdGlvbnMKKzs7 Cis7OyAtIEFsd2F5cyB1c2UgcGlwZSBzeW1ib2xzIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIGVh Y2ggdGFibGUgbGluZS4KKzs7IC0gVXNlIGEgdW5pZm9ybSBudW1iZXIgb2YgY29sdW1ucyBzcGFu bmluZyB0aGUgdGFibGUuCis7OyAtIElmIHlvdSBkZXRlY3QgYSBwYXJzaW5nIGVycm9yIHdoaWNo IHByZXNlbnRzIGFzIGRpZmZlcmVudAorOzsgICBmb250aWZpY2F0aW9uIGFuZCB3aGljaCBpcyBv ZnRlbiBjYXVzZWQgYnkgYW4gZW1wdHkgZmlyc3QgY2VsbCBvbiB0aGUKKzs7ICAgZmluYWwgcm93 LCB0cnkgcHV0dGluZyBzb21lIGNoYXJhY3RlcnMgaW4gdGhhdCBjZWxsLgorOzsgLSBSZW5kZXJl cnMgb2Z0ZW4gZXhjbHVkZSBjZXJ0YWluIGVtcHR5IGNlbGxzIHN1Y2ggYXMgYW4gImVtcHR5IiBm aW5hbAorOzsgICBjZWxsIGluIGEgdGFibGUuICBGb2xsb3cgdGhlIG5leHQgaXRlbSB0byBhdm9p ZCB0aGlzLgorOzsgLSBJZiB5b3UgbmVlZCB0aGF0IGNlbGwgdG8gYXBwZWFyIGJsYW5rIGFuZCBh cmUgY29udmVydGluZyB0byBIVE1MLAorOzsgICB0cnkgdXNpbmcgYSBub24tcHJpbnRpbmcgSFRN TCBlbnRpdHksIHN1Y2ggYXMgYSBub24tYnJlYWtpbmcgc3BhY2UKKzs7ICAgIiZuYnNwOyIsIHdo aWNoIHBhcnNlIGFzIGNvbmNyZXRlIGNoYXJhY3RlcnMgeWV0IHJlbmRlciBhcyBibGFuay4KKzs7 IC0gSFRNTCBjb21tZW50cyA8IS0tIC0tPiBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgbm9uLWJsYW5r IGNoYXJhY3RlcgorOzsgICBzdHJpbmcgdGhhdCBkb2VzIG5vdCBnZXQgcmVuZGVyZWQuICBUaGVz ZSBhcmUgY29uc2lkZXJlZCBjZWxsIHRleHQKKzs7ICAgYW5kIHdoZW4gcGxhY2VkIGF0IHRoZSBl bmQgb2YgYSByb3csIHRoYXQgcm93J3MgbnVtYmVyIG9mIGNvbHVtbnMgaXMKKzs7ICAgaW5jcmVh c2VkIGFuZCBtaWdodCBleGNlZWQgdGhlIG51bWJlciBvZiBoZWFkZXIgY29sdW1ucy4KKzs7IC0g VGhlcmUgYXJlIHRyZWUtc2l0dGVyIHBhcnNlciBxdWlya3MuICBDb21tYW5kcyBzdWNoIGFzCis7 OyAgIGBtYXJrZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uJyBhbmQgYG1hcmtkb3duLXRzLXRh YmxlLW1vdmUtY29sdW1uJworOzsgICBmb2xsb3cgdGhlIHBhcnNlciB0cmVlIGFuZCBjYW4gbGVh ZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMgc28gZm9sbG93Cis7OyAgIHRoZXNlIHJlY29tbWVuZGF0 aW9ucyBhbmQgdGFibGUgb3BlcmF0aW9ucyBzaG91bGQgYmUgYXMgZXhwZWN0ZWQuCis7OworOzs7 OyBUcmVlIFNpdHRlciBCdWdzCis7OworOzsgYG1hcmtkb3duLXRzLW1vZGUnIHJlbGllcyBvbiB0 aGUgdW5kZXJseWluZyB0cmVlLXNpdHRlciBsaWJyYXJ5IGluCis7OyBFbWFjcyAoY2hvc2VuIGF0 IGl0cyBidWlsZCB0aW1lKSwgYW5kIGxhbmd1YWdlIGdyYW1tYXJzIHlvdSBoYXZlCis7OyBpbnN0 YWxsZWQuICBUaGVyZSBhcmUga25vd24gYW5kIHJlcG9ydGVkIGJ1Z3Mgd2hpY2ggbmVnYXRpdmVs eSBhZmZlY3QKKzs7IGNlcnRhaW4gZmVhdHVyZXMuICBUaGlzIG1vZGUgc2hvdWxkIGJlbmVmaXQg YXMgdGhlc2UgYnVncyBhcmUgZml4ZWQKKzs7IG9yIHdvcmtlZCBhcm91bmQuCis7OworOzsgLSBU aGUgTWFya2Rvd24gZ3JhbW1hciBpbnNlcnRzIGJsb2NrX2NvbnRpbnVhdGlvbiBub2RlcyBhcyBj aGlsZHJlbgorOzsgICBvZiBjb2RlX2ZlbmNlX2NvbnRlbnQsIHdoaWNoIGNvbmZ1c2VzIGJvdGgg dGhlIGluc3BlY3RvciBhbmQgdGhlCis7OyAgIGVtYmVkZGVkIHBhcnNlci4gIFRoaXMgYWZmZWN0 cyBjb2RlIGJsb2NrcyBpbnNpZGUgYmxvY2sgcXVvdGVzLgorOzsKKzs7IC0gSFRNTCBibG9jayB0 eXBlIDQgKGA8IScgZm9sbG93ZWQgYnkgYW4gdXBwZXJjYXNlIGxldHRlciwgZS5nLiwKKzs7ICAg YDwhRE9DVFlQRSBodG1sPicpIGNhdXNlcyB0aGUgcGFyc2VyIHRvIGNvbnN1bWUgYWxsIHN1YnNl cXVlbnQKKzs7ICAgY29udGVudC4gIExvd2VyY2FzZSBgPCFkb2N0eXBlIGh0bWw+JyB3b3JrcyBh cyBhIHdvcmthcm91bmQuCis7OyAgIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVy LWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3duL2lzc3Vlcy8yMzM+LgorOzsKKzs7IC0gU3Vw ZXJzY3JpcHQgKGBedGV4dF4nKSBhbmQgc3Vic2NyaXB0IChgfnRleHR+Jykgc3ludGF4IGlzIG5v dAorOzsgICBzdXBwb3J0ZWQgYnkgdGhlIGdyYW1tYXIuICBObyBFWFRFTlNJT05fIGJ1aWxkIGZs YWcgZXhpc3RzIGZvcgorOzsgICB0aGlzLiAgVGhpcyBpcyBQYW5kb2MgLyBQSFAgTWFya2Rvd24g RXh0cmEgc3ludGF4LCBub3QgQ29tbW9uTWFyaworOzsgICBvciBHRk0uCis7OworOzsgLSBPcmRl cmVkIChudW1iZXJlZCkgbGlzdHMgZG8gbm90IG5lc3QgYnkgaW5kZW50YXRpb24uICBJbmRlbnRp bmcKKzs7ICAgYSBgMS4nIGl0ZW0gdW5kZXIgYW5vdGhlciBvcmRlcmVkIGl0ZW0gZG9lcyBub3Qg cHJvZHVjZSBhIG5lc3RlZAorOzsgICBsaXN0IG5vZGU7IHRoZSBwYXJzZXIgZWl0aGVyIHRyZWF0 cyBpdCBhcyBhIGZsYXQgc2libGluZyBvcgorOzsgICBhYnNvcmJzIGl0IGludG8gdGhlIHBhcmVu dCBpdGVtJ3MgcGFyYWdyYXBoIGFzIGEKKzs7ICAgYmxvY2tfY29udGludWF0aW9uLiAgVW5vcmRl cmVkIChgLScsIGAqJywgYCsnKSBsaXN0cyBuZXN0Cis7OyAgIGNvcnJlY3RseS4gIERlbW90ZS9w cm9tb3RlIG9mIG9yZGVyZWQgbGlzdCBpdGVtcyBpcyB0aGVyZWZvcmUKKzs7ICAgZGlzYWJsZWQu Cis7OworOzsgLSBSZW51bWJlcmluZyBvcmRlcmVkIGxpc3RzIChgbWFya2Rvd24tdHMtcmVudW1i ZXItbGlzdCcpIG1heSBvbmx5Cis7OyAgIGFmZmVjdCBpdGVtcyBmcm9tIHBvaW50IGRvd253YXJk IGlmIHRoZSBwYXJzZXIgc3BsaXRzIGEgc2luZ2xlCis7OyAgIGxpc3QgaW50byBzZXBhcmF0ZSBg bGlzdCcgbm9kZXMsIG9yIG1heSBjb250aW51ZSBudW1iZXJpbmcgYWNyb3NzCis7OyAgIHR3byBz ZXBhcmF0ZSBsaXN0cyBpZiB0aGUgcGFyc2VyIG1lcmdlcyB0aGVtIGludG8gb25lIG5vZGUuCis7 OworOzsgLSBFbXB0eSBsaW5lcyBmb2xsb3dpbmcgYW4gYGluZGVudGVkX2NvZGVfYmxvY2snIG1h eSBiZSBjbGFpbWVkIGJ5Cis7OyAgIHRoZSBwYXJzZXIgYXMgY29udGludWF0aW9uIGxpbmVzIG9m IHRoYXQgYmxvY2ssIHJhdGhlciB0aGFuIGJlaW5nCis7OyAgIHRyZWF0ZWQgYXMgYmxhbmsgc2Vw YXJhdG9ycy4KIDs7Cis7OyAtIFBpcGUgdGFibGVzIGFyZSBpbmNvbnNpc3RlbnRseSBwYXJzZWQu ICBXaGl0ZXNwYWNlIGlzIGNvcnJlY3RseQorOzsgICB0cmltbWVkIGF0IHRoZSBzdGFydCBvZiBh IGNlbGwgY29udGVudCBidXQgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcworOzsgICBpbmNvcnJlY3Rs eSBpbmNsdWRlZC4gIEVtcHR5IGNlbGxzIGNhbiBjb250YWluIHVuZXZlbiAicmFnZ2VkIiByb3cK Kzs7ICAgY29sdW1uIGNvbmZpZ3VyYXRpb25zIHRoYXQgY2FuIGNvbmZ1c2UgdGhlIHBhcnNlci4K Kzs7Cis7OyAgIE1hcmtkb3duIHBpcGUgdGFibGVzIHdpdGggcGFyc2luZyBpc3N1ZXM6Cis7Owor OzsgICB8Q29sdW1uIDF8Q29sdW1uIDJ8Q29sdW1uIDN8Cis7OyAgIHwtLS0tLS0tLXwtLS0tLS0t LXwtLS0tLS0tLXwKKzs7ICAgfCAgICAgICAgfCAgICAgICAgfCAgICAgICAgfAorOzsgICB8ICAg ICAgICB8ICAgICAgICB8ICAgICAgICB8IDwtLSBwYXJzZSBlcnJvcgorOzsKKzs7ICAgfENvbHVt biAxfENvbHVtbiAyfENvbHVtbiAzfAorOzsgICB8LS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS18 Cis7OyAgIHwgICAgICAgIHwgICAgICAgIHwgICAgICAgIHwKKzs7ICAgfCB4eHggICAgfCAgICAg ICAgfCAgICAgICAgfCA8LS0gcGFyc2VkIGNvcnJlY3RseQorOzsKKzs7ICAgfENvbHVtbiAxfENv bHVtbiAyfCA8LS0gMiBjb2x1bW5zIGNvcnJlY3QKKzs7ICAgfC0tLS0tLS0tfC0tLS0tLS0tfCA8 LS0gMiBjb2x1bW5zIGNvcnJlY3QKKzs7ICAgICAgICAgICAgfCAgICAgICAgfCA8LS0gMSBjb2x1 bW4gaW5jb3JyZWN0Cis7OyAgICAgICAgICAgIHwgICAgICAgIHwgPC0tIHBhcnNlIGVycm9yCis7 OyAgIHwgICAgICAgIHwgICAgICAgIHwgPC0tIG5vdCBhIHJvdyBhZnRlciB0aGUgZXJyb3IsIGFi b3ZlCis7OworOzsgICBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFy cy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMvMjQxPgorOzsgICAgICAgPGh0dHBzOi8vZ2l0 aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMv MjQyPgorOzsKKzs7IC0gVGhlIGdyYW1tYXIncyBleHRlcm5hbCBzY2FubmVyIGhhcyBhIGJ1ZmZl ciBvdmVyZmxvdyBpbiBpdHMKKzs7ICAgYHNlcmlhbGl6ZScgZnVuY3Rpb246IHdoZW4gdGhlIHBh cnNlciBzdGF0ZSBleGNlZWRzIHRoZQorOzsgICBzZXJpYWxpemF0aW9uIGJ1ZmZlciBwcm92aWRl ZCBieSB0cmVlLXNpdHRlciwgYG1lbWNweScgd3JpdGVzIHBhc3QKKzs7ICAgdGhlIGVuZCBhbmQg Y2FuIGNvcnJ1cHQgdGhlIHN0YWNrLiAgVHJpZ2dlcmVkIGluIHByYWN0aWNlIHdoaWxlCis7OyAg IHBhcnNpbmcgTWFya2Rvd24gaW4gRW1hY3MuCis7OyAgIFNlZSA8aHR0cHM6Ly9naXRodWIuY29t L3RyZWUtc2l0dGVyLWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3duL2lzc3Vlcy8yNDM+Lgor OzsKKzs7OzsgQmF0Y2ggRm9udGlmaWNhdGlvbgorOzsKKzs7IFNvbWUgZG93bnN0cmVhbSBwYWNr YWdlcyBmb250aWZ5IG11bHRpcGxlIHVucmVsYXRlZCBNYXJrZG93bgorOzsgZnJhZ21lbnRzIGJ5 IGpvaW5pbmcgdGhlbSBpbiBhIHNpbmdsZSBidWZmZXIgd2l0aCBhIHNlcGFyYXRvciBhbmQKKzs7 IHJ1bm5pbmcgYG1hcmtkb3duLXRzLW1vZGUnIG92ZXIgdGhlIHdob2xlIHRoaW5nLiAgQ2hvaWNl IG9mIHNlcGFyYXRvcgorOzsgbWF0dGVyczogdGhlIHRyZWUtc2l0dGVyLW1hcmtkb3duIGdyYW1t YXIgZG9lcyBub3QgbGlzdCB0aGUgTlVMIGJ5dGUKKzs7IChgXDAnKSBhcyBleHRyYS93aGl0ZXNw YWNlLCBzbyBhIE5VTCBzZXBhcmF0b3IgeWllbGRzIGFuIEVSUk9SIG5vZGUKKzs7IGFuZCB0aGUg cGFyc2VyIGVudGVycyBlcnJvciByZWNvdmVyeSwgd2hpY2ggY2FuIGxlYWsgaW5saW5lIGZhY2Vz Cis7OyAoZS5nLiwgc3RyaWtldGhyb3VnaCkgYWNyb3NzIGZyYWdtZW50IGJvdW5kYXJpZXMuICBS ZWdleC1iYXNlZCBtb2RlcworOzsgdG9sZXJhdGUgTlVMIHNpbGVudGx5IGJlY2F1c2UgdGhleSBk byBub3QgcGFyc2Ugc3RydWN0dXJlOyB0aGlzIGlzIGEKKzs7IGJlaGF2aW9yYWwgZGlmZmVyZW5j ZSwgbm90IGEgcmVncmVzc2lvbi4KKzs7Cis7OyBBIGZvcm0gZmVlZCAoYF5MJywgYFxmJykgZmxh bmtlZCBieSBibGFuayBsaW5lcyB3b3JrcyBhcyBhIGNsZWFuCis7OyBkcm9wLWluIHNlcGFyYXRv cjogdGhlIHBhcnNlciB0cmVhdHMgaXQgYXMgYSBwYXJhZ3JhcGggYnJlYWsgYW5kCis7OyBpbmxp bmUgc3RhdGUgZG9lcyBub3QgYmxlZWQgYWNyb3NzIGZyYWdtZW50cy4KIAogOzs7IENvZGU6CiAK IChyZXF1aXJlICd0cmVlc2l0KQogKHJlcXVpcmUgJ3N1YnIteCkKLShyZXF1aXJlICdvdXRsaW5l KQogKHJlcXVpcmUgJ3NlcSkKKyhyZXF1aXJlICdvdXRsaW5lKQorKHJlcXVpcmUgJ2dvdG8tYWRk cikKKyhyZXF1aXJlICd4cmVmKQorKHJlcXVpcmUgJ2ljb25zKQogCi0odHJlZXNpdC1kZWNsYXJl LXVuYXZhaWxhYmxlLWZ1bmN0aW9ucykKKzs7OyBDdXN0b21pemF0aW9uczoKIAotKGFkZC10by1s aXN0Ci0gJ3RyZWVzaXQtbGFuZ3VhZ2Utc291cmNlLWFsaXN0Ci0gJyhtYXJrZG93bgotICAgImh0 dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRlci1tYXJrZG93 biIKLSAgIDpjb21taXQgIjQxMzI4NTIzMWNlOGZhOGIxMWU3MDc0YmJlMjY1YjQ4YWE3Mjc3Zjki Ci0gICA6c291cmNlLWRpciAidHJlZS1zaXR0ZXItbWFya2Rvd24vc3JjIikKLSB0KQotKGFkZC10 by1saXN0Ci0gJ3RyZWVzaXQtbGFuZ3VhZ2Utc291cmNlLWFsaXN0Ci0gJyhtYXJrZG93bi1pbmxp bmUKLSAgICJodHRwczovL2dpdGh1Yi5jb20vdHJlZS1zaXR0ZXItZ3JhbW1hcnMvdHJlZS1zaXR0 ZXItbWFya2Rvd24iCi0gICA6Y29tbWl0ICI0MTMyODUyMzFjZThmYThiMTFlNzA3NGJiZTI2NWI0 OGFhNzI3N2Y5IgotICAgOnNvdXJjZS1kaXIgInRyZWUtc2l0dGVyLW1hcmtkb3duLWlubGluZS9z cmMiKQotIHQpCi0KLTs7OyBIZWxwZXIgZnVuY3Rpb25zCi0KLShkZWZ2YXIgbWFya2Rvd24tdHMt LWNvZGUtYmxvY2stbGFuZ3VhZ2UtbWFwCi0gICcoKCJjKysiIC4gY3BwKQotICAgICgiYyMiIC4g Yy1zaGFycCkKLSAgICAoInNoIiAuIGJhc2gpKQotICAiQWxpc3QgbWFwcGluZyBjb2RlIGJsb2Nr IGxhbmd1YWdlIG5hbWVzIHRvIHRyZWUtc2l0dGVyIGxhbmd1YWdlcy4KLQotS2V5cyBzaG91bGQg YmUgc3RyaW5ncywgYW5kIHZhbHVlcyBzaG91bGQgYmUgbGFuZ3VhZ2Ugc3ltYm9scy4KLQotRm9y IGV4YW1wbGUsIFwiYysrXCIgaW4KLQotICAgIGBgYGMrKwotICAgIGludCBtYWluKCkgewotICAg ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgYGBgCi0KLW1hcHMgdG8gdHJlZS1zaXR0ZXIgbGFu Z3VhZ2UgYGNwcCcuIikKLQotKGRlZnZhciBtYXJrZG93bi10cy1jb2RlLWJsb2NrLXNvdXJjZS1t b2RlLW1hcAotICAnKChiYXNoIC4gYmFzaC10cy1tb2RlKQotICAgIChjIC4gYy10cy1tb2RlKQot ICAgIChjLXNoYXJwIC4gY3NoYXJwLXRzLW1vZGUpCi0gICAgKGNtYWtlIC4gY21ha2UtdHMtbW9k ZSkKLSAgICAoY3BwIC4gYysrLXRzLW1vZGUpCi0gICAgKGNzcyAuIGNzcy10cy1tb2RlKQotICAg IChkb2NrZXJmaWxlIC4gZG9ja2VyZmlsZS10cy1tb2RlKQotICAgIChlbGl4aXIgLiBlbGl4aXIt dHMtbW9kZSkKLSAgICAoZ28gLiBnby10cy1tb2RlKQotICAgIChnb21vZCAuIGdvLW1vZC10cy1t b2RlKQotICAgIChnb3dvcmsgLiBnby13b3JrLXRzLW1vZGUpCi0gICAgKGhlZXggLiBoZWV4LXRz LW1vZGUpCi0gICAgKGh0bWwgLiBodG1sLXRzLW1vZGUpCi0gICAgKGphdmEgLiBqYXZhLXRzLW1v ZGUpCi0gICAgKGphdmFzY3JpcHQgLiBqcy10cy1tb2RlKQotICAgIChqc29uIC4ganNvbi10cy1t b2RlKQotICAgIChsdWEgLiBsdWEtdHMtbW9kZSkKLSAgICAocGhwIC4gcGhwLXRzLW1vZGUpCi0g ICAgKHB5dGhvbiAuIHB5dGhvbi10cy1tb2RlKQotICAgIChydWJ5IC4gcnVieS10cy1tb2RlKQot ICAgIChydXN0IC4gcnVzdC10cy1tb2RlKQotICAgICh0b21sIC4gdG9tbC10cy1tb2RlKQotICAg ICh0c3ggLiB0c3gtdHMtbW9kZSkKLSAgICAodHlwZXNjcmlwdCAuIHR5cGVzY3JpcHQtdHMtbW9k ZSkKLSAgICAoeWFtbCAuIHlhbWwtdHMtbW9kZSkpCi0gICJBbiBhbGlzdCBvZiBzdXBwb3J0ZWQg Y29kZSBibG9jayBsYW5ndWFnZXMgYW5kIHRoZWlyIG1ham9yIG1vZGUuIikKKyhkZWZncm91cCBt YXJrZG93bi10cyBuaWwKKyAgIk1ham9yIG1vZGUgZm9yIHZpZXdpbmcgYW5kIGVkaXRpbmcgTWFy a2Rvd24gYnVmZmVycy4iCisgIDpwcmVmaXggIm1hcmtkb3duLXRzLSIKKyAgOmdyb3VwICd0ZXh0 CisgIDpncm91cCAnZWRpdGluZworICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZjdXN0b20gbWFy a2Rvd24tdHMtaGlkZS1tYXJrdXAgbmlsCiAgICJOb24tbmlsIG1lYW5zIGhpZGUgTWFya2Rvd24g bWFya3VwIGRlbGltaXRlcnMgaW4gdGhpcyBidWZmZXIuIgogICA6dHlwZSAnYm9vbGVhbgorICA6 bG9jYWwgdAogICA6c2FmZSAjJ2Jvb2xlYW5wCi0gIDpncm91cCAnbWFya2Rvd24tdHMpCisgIDp2 ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQogCi07OzsgRmFjZXMKKyhk ZWZjdXN0b20gbWFya2Rvd24tdHMtZWxsaXBzaXMgbmlsCisgICJUaGUgZWxsaXBzaXMgdG8gdXNl IGluIGZvbGRlZCBoZWFkaW5ncy4KK1doZW4gbmlsLCB1c2UgdGhlIHN0YW5kYXJkIHRocmVlIGRv dHMuICBXaGVuIGEgbm9uLWVtcHR5IHN0cmluZywKK3VzZSB0aGF0IHN0cmluZyBpbnN0ZWFkLiIK KyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0ICA6dGFnICJEZWZhdWx0ICguLi4pIiBuaWwpCisgICAg ICAgICAgICAgICAgIChzdHJpbmcgOnRhZyAiU3RyaW5nIiA6dmFsdWUgIiDijIQiKSkKKyAgOnZl cnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFy a2Rvd24tdHMtbWVudS1iYXItc2hvdyB0CisgICJOb24tbmlsIG1lYW5zIHNob3cgdGhlIE1hcmtk b3duIG1lbnUgaW4gdGhlIG1lbnUgYmFyLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOnZlcnNpb24g IjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24t dHMtZGVmYXVsdC1mb2xkaW5nICdzaG93LWFsbAorICAiRGVmYXVsdCBoZWFkaW5nIGZvbGRpbmcg bGV2ZWwuIgorICA6dHlwZSAnKGNob2ljZQorICAgICAgICAgIChjb25zdCA6dGFnICJTaG93IGV2 ZXJ5dGhpbmciIHNob3ctYWxsKQorICAgICAgICAgIChjb25zdCA6dGFnICJGb2xkIGV2ZXJ5dGhp bmcsIHNob3dpbmcgdG9wLWxldmVsIGhlYWRpbmdzIiBmb2xkLWFsbCkKKyAgICAgICAgICAoY29u c3QgOnRhZyAiRm9sZCBoZWFkaW5ncywgc2hvd2luZyBhbGwgaGVhZGluZyBsZXZlbHMiIGZvbGQt aGVhZGluZ3MpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikK KworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzIG5pbAorICAiTm9uLW5pbCBt ZWFucyBkaXNwbGF5IGlubGluZSBpbWFnZXMgYmVsb3cgaW1hZ2UgbGlua3MuIgorICA6dHlwZSAn Ym9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKwor KGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbWFnZS1tYXgtd2lkdGggJ3dpbmRvdworICAiTWF4aW11 bSB3aWR0aCBvZiBpbmxpbmUgaW1hZ2VzIGluIHBpeGVscy4KK1doZW4gYHdpbmRvdycsIHVzZSB0 aGUgd2luZG93IGJvZHkgd2lkdGguICBXaGVuIGEgbnVtYmVyLCB1c2UKK3RoYXQgYXMgdGhlIG1h eGltdW0gcGl4ZWwgd2lkdGguIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgIDp0YWcgIldpbmRv dyB3aWR0aCIgd2luZG93KQorICAgICAgICAgICAgICAgICAobmF0bnVtIDp0YWcgIlBpeGVsIHdp ZHRoIikpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCiso ZGVmY3VzdG9tIG1hcmtkb3duLXRzLWRpc3BsYXktcmVtb3RlLWlubGluZS1pbWFnZXMgbmlsCisg ICJIb3cgdG8gZGlzcGxheSByZW1vdGUgaW5saW5lIGltYWdlcy4KK1doZW4gbmlsLCBkbyBub3Qg ZGlzcGxheSByZW1vdGUgaW1hZ2VzLiAgV2hlbiBgZG93bmxvYWQnLCBmZXRjaCB0aGUKK2ltYWdl IGludG8gYSB0ZW1wb3JhcnkgYnVmZmVyIGFuZCBkaXNwbGF5IGl0LgorCitSZW1vdGUgaW1hZ2Vz IGFyZSBza2lwcGVkIGJ5IGRlZmF1bHQgZm9yIHNlY3VyaXR5LiIKKyAgOnR5cGUgJyhjaG9pY2Ug KGNvbnN0IDp0YWcgIlNraXAgcmVtb3RlIGltYWdlcyIgbmlsKQorICAgICAgICAgICAgICAgICAo Y29uc3QgOnRhZyAiRG93bmxvYWQgcmVtb3RlIGltYWdlcyIgZG93bmxvYWQpKQorICA6dmVyc2lv biAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93 bi10cy1jaGVja2VkLWNoZWNrYm94ICcoIuKYkSIgLiAiKyIpCisgICJJZiBtYXJrdXAgaXMgaGlk ZGVuLCBkaXNwbGF5IHRoaXMgZm9yIGEgY2hlY2tlZCB0YXNrIGxpc3QgbWFya2VyLgorVmFsdWUg Zm9ybXM6CisgLSBjb25zIChQUkVGRVJSRUQgLiBGQUxMQkFDSyk6IFBSRUZFUlJFRCBpcyB1c2Vk IGlmIGl0cyBmaXJzdCBjaGFyYWN0ZXIKKyAgIHBhc3NlcyBgY2hhci1kaXNwbGF5YWJsZS1wJywg b3RoZXJ3aXNlIEZBTExCQUNLLgorIC0gc3ltYm9sIGBpY29uJzogZGVmZXIgdG8gdGhlIGljb25z LmVsIGljb24KKyAgIGBtYXJrZG93bi10cy1jaGVja2VkLWNoZWNrYm94LWljb24nOyBjdXN0b21p emUgdmlhCisgICBcXFtjdXN0b21pemUtaWNvbl0uCisgLSBuaWw6IGRpc3BsYXkgdGhlIHJhdyBt YXJrdXAuIgorICA6dHlwZSAnKGNob2ljZSAoY29ucyAoc3RyaW5nIDp0YWcgIlByZWZlcnJlZCAo R1VJKSIpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRhZyAiRmFsbGJhY2sgKFRU WSkiKSkKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIlVzZSBpY29ucy5lbCBpY29uIiBp Y29uKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxheSBvcmlnaW5hbCBtYXJr dXAiIG5pbCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQor CisoZGVmaW5lLWljb24gbWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveC1pY29uIG5pbAorICAn KChpbWFnZSAiY2hlY2tlZC5zdmciIDpoZWlnaHQgbGluZSA6YXNjZW50IGNlbnRlcikKKyAgICAo c3ltYm9sICLimJEiKQorICAgICh0ZXh0ICIrIikpCisgICJJY29uIHVzZWQgZm9yIGEgY2hlY2tl ZCB0YXNrIGxpc3QgbWFya2VyIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK0NvbnN1bHRlZCBvbmx5 IHdoZW4gYG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3gnIGlzIHRoZSBzeW1ib2wKK2BpY29u Jy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy11bmNoZWNr ZWQtY2hlY2tib3ggJygi4piQIiAuICItIikKKyAgIklmIG1hcmt1cCBpcyBoaWRkZW4sIGRpc3Bs YXkgdGhpcyBmb3IgYW4gdW5jaGVja2VkIHRhc2sgbGlzdCBtYXJrZXIuCitWYWx1ZSBmb3JtczoK KyAtIGNvbnMgKFBSRUZFUlJFRCAuIEZBTExCQUNLKTogUFJFRkVSUkVEIGlzIHVzZWQgaWYgaXRz IGZpcnN0IGNoYXJhY3RlcgorICAgcGFzc2VzIGBjaGFyLWRpc3BsYXlhYmxlLXAnLCBvdGhlcndp c2UgRkFMTEJBQ0suCisgLSBzeW1ib2wgYGljb24nOiBkZWZlciB0byB0aGUgaWNvbnMuZWwgaWNv bgorICAgYG1hcmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveC1pY29uJzsgY3VzdG9taXplIHZp YQorICAgXFxbY3VzdG9taXplLWljb25dLgorIC0gbmlsOiBkaXNwbGF5IHRoZSByYXcgbWFya3Vw LiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnMgKHN0cmluZyA6dGFnICJQcmVmZXJyZWQgKEdVSSki KQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nIDp0YWcgIkZhbGxiYWNrIChUVFkpIikp CisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJVc2UgaWNvbnMuZWwgaWNvbiIgaWNvbikK KyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkRpc3BsYXkgb3JpZ2luYWwgbWFya3VwIiBu aWwpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRl ZmluZS1pY29uIG1hcmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveC1pY29uIG5pbAorICAnKChp bWFnZSAidW5jaGVja2VkLnN2ZyIgOmhlaWdodCBsaW5lIDphc2NlbnQgY2VudGVyKQorICAgIChz eW1ib2wgIuKYkCIpCisgICAgKHRleHQgIi0iKSkKKyAgIkljb24gdXNlZCBmb3IgYW4gdW5jaGVj a2VkIHRhc2sgbGlzdCBtYXJrZXIgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorQ29uc3VsdGVkIG9u bHkgd2hlbiBgbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94JyBpcyB0aGUgc3ltYm9sCitg aWNvbicuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtdGhl bWF0aWMtYnJlYWstY2hhcmFjdGVyICcoP+KUgCAuID8tKQorICAiSWYgbWFya3VwIGlzIGhpZGRl biwgZGlzcGxheSB0aGlzIGNoYXJhY3RlciBmb3IgdGhlbWF0aWMgYnJlYWtzLgorSXQgaXMgcmVw ZWF0ZWQgdG8gZmlsbCB0aGUgd2luZG93IHdpZHRoLgorVGhlIHZhbHVlIGlzIGEgY29ucyAoUFJF RkVSUkVEIC4gRkFMTEJBQ0spOiBQUkVGRVJSRUQgaXMgdXNlZCBpZiBpdCBwYXNzZXMKK2BjaGFy LWRpc3BsYXlhYmxlLXAnLCBvdGhlcndpc2UgRkFMTEJBQ0sgaXMgdXNlZC4KK25pbCBkaXNwbGF5 cyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zIChjaGFyYWN0ZXIgOnRh ZyAiUHJlZmVycmVkIChHVUkpIikKKyAgICAgICAgICAgICAgICAgICAgICAgKGNoYXJhY3RlciA6 dGFnICJGYWxsYmFjayAoVFRZKSIpKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlz cGxheSBvcmlnaW5hbCBtYXJrdXAiIG5pbCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2Fn ZS12ZXJzaW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVh ay1iYWNrc2xhc2ggJyg/wrYgLiA/fCkKKyAgIklmIG1hcmt1cCBpcyBoaWRkZW4sIGRpc3BsYXkg dGhpcyBjaGFyYWN0ZXIgZm9yIGEgYmFja3NsYXNoIGhhcmQgbGluZSBicmVhay4KK1RoZSB2YWx1 ZSBpcyBhIGNvbnMgKFBSRUZFUlJFRCAuIEZBTExCQUNLKTogUFJFRkVSUkVEIGlzIHVzZWQgaWYg aXQgcGFzc2VzCitgY2hhci1kaXNwbGF5YWJsZS1wJywgb3RoZXJ3aXNlIEZBTExCQUNLIGlzIHVz ZWQuCituaWwga2VlcHMgdGhlIHJhdyBtYXJrdXAuIgorICA6dHlwZSAnKGNob2ljZSAoY29ucyAo Y2hhcmFjdGVyIDp0YWcgIlByZWZlcnJlZCAoR1VJKSIpCisgICAgICAgICAgICAgICAgICAgICAg IChjaGFyYWN0ZXIgOnRhZyAiRmFsbGJhY2sgKFRUWSkiKSkKKyAgICAgICAgICAgICAgICAgKGNv bnN0IDp0YWcgIkRpc3BsYXkgb3JpZ2luYWwgbWFya3VwIiBuaWwpKQorICA6dmVyc2lvbiAiMzEu MSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1o YXJkLWxpbmUtYnJlYWstc3BhY2UKKyAgKGxhbWJkYSAobikKKyAgICAobGV0KiAoKHZhbCAobWFy a2Rvd24tdHMtLXJlc29sdmUtZGlzcGxheS12YWx1ZQorICAgICAgICAgICAgICAgICBtYXJrZG93 bi10cy1oYXJkLWxpbmUtYnJlYWstYmFja3NsYXNoKSkKKyAgICAgICAgICAgKGNoIChpZiAoY2hh cmFjdGVycCB2YWwpIHZhbCA/fCkpKQorICAgICAgKG1ha2Utc3RyaW5nIG4gY2gpKSkKKyAgIklm IG1hcmt1cCBpcyBoaWRkZW4sIGRpc3BsYXkgdGhpcyBmb3IgYSB0cmFpbGluZy1zcGFjZXMgaGFy ZCBsaW5lIGJyZWFrLgorVGhlIHZhbHVlIGNhbiBiZToKKy0gYSBjaGFyYWN0ZXIgb3Igc3RyaW5n OiBzaG93biBvbmNlIGF0IHRoZSBzdGFydCBvZiB0aGUgdHJhaWxpbmcgc3BhY2VzLAorICB3aXRo IG5vIHJlcGV0aXRpb24gKHRoZSByZW1haW5pbmcgc3BhY2VzIHN0YXkgaW52aXNpYmxlKTsKKy0g YSBmdW5jdGlvbjogY2FsbGVkIHdpdGggb25lIGFyZ3VtZW50LCB0aGUgbnVtYmVyIG9mIHRyYWls aW5nIHNwYWNlcywKKyAgYW5kIG11c3QgcmV0dXJuIHRoZSBzdHJpbmcgdG8gZGlzcGxheSBpbiBw bGFjZSBvZiB0aGUgcnVuOworLSBuaWw6IGtlZXAgdGhlIHJhdyBtYXJrdXAuIgorICA6dHlwZSAn KGNob2ljZSAoY2hhcmFjdGVyIDp0YWcgIkRpc3BsYXkgc3BlY2lmaWVkIGNoYXJhY3RlciAobm8g cmVwZXRpdGlvbikiKQorICAgICAgICAgICAgICAgICAoc3RyaW5nIDp0YWcgIkRpc3BsYXkgc3Bl Y2lmaWVkIHN0cmluZyAobm8gcmVwZXRpdGlvbikiKQorICAgICAgICAgICAgICAgICAoZnVuY3Rp b24gOnRhZyAiRnVuY3Rpb24gZnJvbSBjb3VudCB0byBkaXNwbGF5IHN0cmluZyIpCisgICAgICAg ICAgICAgICAgIChjb25zdCA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAg OnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20g bWFya2Rvd24tdHMtZm9udGlmeS1jb2RlLWJsb2Nrcy1uYXRpdmVseSB0CisgICJOb24tbmlsIG1l YW5zIGZvbnRpZnkgY29kZSBibG9jayBjb250ZW50cyB1c2luZyB0aGUgbGFuZ3VhZ2UncyBtb2Rl LgorV2hlbiBub24tbmlsLCBmZW5jZWQgY29kZSBibG9ja3MgYXJlIGhpZ2hsaWdodGVkIHdpdGgg c3ludGF4IG9mIHRoZQorZW1iZWRkZWQgbGFuZ3VhZ2UgKHZpYSB0cmVlLXNpdHRlciBmb3IgbGFu Z3VhZ2VzIHdpdGggYSB0cmVlLXNpdHRlcgorbW9kZSwgb3IgdmlhIGNvbnZlbnRpb25hbCBmb250 LWxvY2sgZm9yIHRoZSByZXN0KS4gIFdoZW4gbmlsLCBjb2RlCitibG9ja3Mga2VlcCBvbmx5IHRo ZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jaycgYmFja2dyb3VuZCBmYWNlLiAgVG9nZ2xpbmcKK2Zv ciB0aGUgdHMtZW1iZWRkZWQgcGF0aCB0YWtlcyBlZmZlY3QgYWZ0ZXIgcmVzdGFydGluZworYG1h cmtkb3duLXRzLW1vZGUnIGluIHRoZSBidWZmZXIuIgorICA6dHlwZSAnYm9vbGVhbgorICA6dmVy c2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJr ZG93bi10cy1lbmFibGUtY29kZS1ibG9jay1jb250ZXh0LW1vZGUgdAorICAiTm9uLW5pbCBhdXRv bWF0aWNhbGx5IGVuYWJsZXMgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29udGV4dC1tb2RlJy4K K0lmIG5vbi1uaWwgYW5kIGBwb2ludCcgaXMgaW4gYSBmZW5jZWQgY29kZSBibG9jaywgdGhpcyBy dW5zCitgaW5kZW50LWZvci10YWItY29tbWFuZCcsIGBuZXdsaW5lJywgZXQuYWwuLCBpbiB0aGUg bW9kZSBvZiB0aGUgY29kZQorYmxvY2suIgorICA6dHlwZSAnYm9vbGVhbgorICA6dmVyc2lvbiAi MzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10 cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1saWdodGVyICIgW2NvZGVdIgorICAiTWlub3Ig bW9kZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1jb250ZXh0LW1vZGUnIGxpZ2h0ZXIgc3RyaW5n LgorU2V0IHRvIG5pbCB0byBkaXNhYmxlIHRoZSBsaWdodGVyLiIKKyAgOnR5cGUgJ3N0cmluZwor ICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3Rv bSBtYXJrZG93bi10cy1pbmhpYml0LWNvZGUtYmxvY2stbW9kZS13YXJuaW5ncyB0CisgICJJZiBu b24tbmlsLCBpbmhpYml0IGNvZGUtYmxvY2sgbWFqb3ItbW9kZSBtZXNzYWdlcyBhbmQgd2Fybmlu Z3MuCitTb21lIGZlbmNlZCBjb2RlLWJsb2NrIG1ham9yIG1vZGVzIHByb2R1Y2UgbWVzc2FnZXMg b3Igd2FybmluZ3Mgd2hpY2gKK2hhdmUgbGl0dGxlIHJlbGV2YW5jZSB0byBNYXJrZG93biBidWZm ZXJzLiAgVXNlIHRoaXMgb3B0aW9uIHRvIGluaGliaXQKK3RoZW0uICBNYWpvciBtb2RlcyBtYXkg YmUgZW5hYmxlZCBmb3IgZm9udGlmaWNhdGlvbiBvciBlZGl0aW5nIGluIHRoZQorbW9kZSdzIGNv bnRleHQuIgorICA6dHlwZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2Ut dmVyc2lvbiAiMS4wIikKKworKGRlZnZhciB3YXJuaW5nLW1pbmltdW0tbGV2ZWwpCisKKyhkZWZt YWNybyBtYXJrZG93bi10cy0taW5oaWJpdC1tZXNzYWdlcy1hbmQtd2FybmluZ3MgKHZhciAmcmVz dCBib2R5KQorICAiRXhlY3V0ZSBCT0RZIHdpdGggbWVzc2FnZXMgYW5kIHdhcm5pbmdzIGluaGli aXRlZC4KK1ZBUiBpcyBhIHZhcmlhYmxlJ3Mgc3ltYm9sOyBlLmcuLAorXFw9J21hcmtkb3duLXRz LWluaGliaXQtY29kZS1ibG9jay1tb2RlLXdhcm5pbmdzLiAgSWYgdGhlIHN5bWJvbCdzIHZhbHVl CitpcyBub24tbmlsLCBkbyB3aGF0IGl0IHNheXMgb24gdGhlIHRpbi4KK0luaGliaXQgbWVzc2Fn ZXMgaW4gdGhlIGVjaG8gYXJlYS4KK0luaGliaXQgbWVzc2FnZXMgaW4gdGhlIGxvZy4KK0luaGli aXQgd2FybmluZ3Mgd2l0aCBsZXZlbCA8IDplcnJvci4iCisgIChkZWNsYXJlIChpbmRlbnQgZGVm dW4pKQorICBgKGxldCogKCh2YWwgKHN5bWJvbC12YWx1ZSAsdmFyKSkKKyAgICAgICAgICAoaW5o aWJpdC1tZXNzYWdlIHZhbCkKKyAgICAgICAgIDs7IEFsc28gaW5oaWJpdCBsb2dnaW5nIHRvICpN ZXNzYWdlcyoKKyAgICAgICAgIChtZXNzYWdlLWxvZy1tYXggKGlmIHZhbCBuaWwgbWVzc2FnZS1s b2ctbWF4KSkKKyAgICAgICAgICh3YXJuaW5nLW1pbmltdW0tbGV2ZWwKKyAgICAgICAgICAoaWYg dmFsIDplcnJvciB3YXJuaW5nLW1pbmltdW0tbGV2ZWwpKSkKKyAgICAgKHByb2duICxAYm9keSkp KQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWRlZmF1bHQtY29kZS1ibG9jay1tb2RlICd0ZXh0 LW1vZGUKKyAgIkRlZmF1bHQgbW9kZSBmb3IgYW5vbnltb3VzIGNvZGUgYmxvY2tzLiIKKyAgOnR5 cGUgJyhjaG9pY2UKKyAgICAgICAgICAoY29uc3QgIDp0YWcgIlRleHQgbW9kZSIgdGV4dC1tb2Rl KQorICAgICAgICAgIChjb25zdCAgOnRhZyAiRnVuZGFtZW50YWwgbW9kZSIgZnVuZGFtZW50YWwt bW9kZSkKKyAgICAgICAgICAoc3ltYm9sIDp0YWcgIk90aGVyIG1vZGUgc3ltYm9sIgorICAgICAg ICAgICAgICAgICAgOnZhbGlkYXRlIChsYW1iZGEgKHdpZCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsZXQgKCh2YWwgKHdpZGdldC12YWx1ZSB3aWQpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHVubGVzcyAoYW5kIHZhbCAoZXEgJ3N5bWJvbCAodHlwZS1vZiB2 YWwpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2lkZ2V0LXB1dCB3aWQg OmVycm9yICJNdXN0IGJlIGEgbm9uLW5pbCBzeW1ib2wiKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHdpZCkpKSkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJz aW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1bHQtY29sdW1u LXdpZHRoIDUKKyAgIkNvbHVtbiB3aWR0aCBmb3IgbmV3IGNvbHVtbnMuCitZb3UgbWF5IG1ha2Ug dGhpcyB3aWRlciwgYnV0IHNtYWxsZXIgdGhhbiA1IGlzIG5vdCByZWNvbW1lbmRlZC4iCisgIDp0 eXBlICdpbnRlZ2VyCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAi KQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWVuYWJsZS10YWJsZS1tb2RlIHQKKyAgIk5vbi1u aWwgYXV0b21hdGljYWxseSBlbmFibGVzIGBtYXJrZG93bi10cy10YWJsZS1tb2RlJy4KK0lmIG5v bi1uaWwsIGVuYWJsZSBgbWFya2Rvd24tdHMtdGFibGUtbW9kZScgaWYgYHBvaW50JyBpcyBpbiBh IE1hcmtkb3duCit0YWJsZS4iCisgIDp0eXBlICdib29sZWFuCisgIDp2ZXJzaW9uICIzMS4xIgor ICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLXRhYmxl LWF1dG8tYWxpZ24gJyhjZWxsLW5hdmlnYXRpb24gdHJhbnNwb3NlKQorICAiQXV0b21hdGljYWxs eSBhbGlnbiB0aGUgdGFibGUgYXQgcG9pbnQgZHVyaW5nIHRoZXNlIG9wZXJhdGlvbnMuCitJZiB0 LCB0cmlnZ2VyIG9uIGFsbCBzdXBwb3J0ZWQgb3BlcmF0aW9ucy4KK0lmIG5pbCwgZG8gbm90IGF1 dG8gYWxpZ24uCitPdGhlcndpc2UsIGl0IGlzIGEgbGlzdCBvZiBzeW1ib2xzIHJlcHJlc2VudGlu ZyB0YWJsZSBvcGVyYXRpb25zLiIKKyAgOnR5cGUgJyhjaG9pY2UKKyAgICAgICAgICAoY29uc3Qg OnRhZyAiRG8gbm90IGF1dG9tYXRpY2FsbHkgYWxpZ24iIG5pbCkKKyAgICAgICAgICAoY29uc3Qg OnRhZyAiQWx3YXlzIGF1dG9tYXRpY2FsbHkgYWxpZ24iIHQpCisgICAgICAgICAgKHNldAorICAg ICAgICAgICAoY29uc3QgOnRhZyAiQ2VsbCBuYXZpZ2F0aW9uIiBjZWxsLW5hdmlnYXRpb24pCisg ICAgICAgICAgIChjb25zdCA6dGFnICJUcmFuc3Bvc2UiIHRyYW5zcG9zZSkpKQorICA6dmVyc2lv biAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93 bi10cy10YWJsZS1hbGlnbi1mZWF0dXJlcyAnKGp1c3RpZnktY2VsbHMpCisgICJVc2UgdGhlc2Ug b3B0aW9uYWwgZmVhdHVyZXMgd2hlbiBhbGlnbmluZyBhIHRhYmxlLgorQWxpZ25pbmcgYSB0YWJs ZSBhbGlnbnMgZWFjaCBjb2x1bW4gdG8gdGhlIHdpZHRoIG9mIGl0cyB3aWRlc3QgY2VsbC4gIEl0 CitjYW4gYWxzbyBqdXN0aWZ5IGVhY2ggY2VsbCBhY2NvcmRpbmcgdG8gdGhlIHRhYmxlJ3MgZGVs aW1pdGVyIGxpbmUgbGVmdCwKK2NlbnRlciwgb3IgcmlnaHQtaGFuZCBqdXN0aWZpY2F0aW9uIHJ1 bGVzLgorCitDdXN0b21pemluZyB0aGlzIHVzZXIgb3B0aW9uIGlzIG1vc3QgdXNlZnVsIHdoZW4g dGhlIHVzZXIgb3B0aW9uCitgbWFya2Rvd24tdHMtdGFibGUtYXV0by1hbGlnbicgaXMgZW5hYmxl ZCBhbmQgdG8gYXZvaWQgaGF2aW5nIHRvIHVzZSBhCitwcmVmaXggYXJndW1lbnQgYmVmb3JlIGV2 ZXJ5IGF1dG8tYWxpZ25tZW50IG9wZXJhdGlvbi4KKworSWYgdCwgZW5hYmxlIGFsbCBvcHRpb25h bCBhbGlnbm1lbnQgb3BlcmF0aW9ucy4KK0lmIG5pbCwgb3BlcmF0aW9ucyBhcmUgZW5hYmxlZCBi ZXlvbmQgYmFzaWMgY29sdW1uIGFsaWdubWVudC4KK090aGVyd2lzZSwgaXQgaXMgYSBsaXN0IG9m IHN5bWJvbHMuIgorICA6dHlwZSAnKGNob2ljZQorICAgICAgICAgIChjb25zdCA6dGFnICJObyBv cHRpb25hbCBmZWF0dXJlcyIgbmlsKQorICAgICAgICAgIChjb25zdCA6dGFnICJBbGwgb3B0aW9u YWwgZmVhdHVyZXMiIHQpCisgICAgICAgICAgKHNldAorICAgICAgICAgICAoY29uc3QgOnRhZyAi SnVzdGlmeSBjZWxscyIganVzdGlmeS1jZWxscykpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBh Y2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbi10YWJsZS1t b2RlLWxpZ2h0ZXIgIiBbdGFibGVdIgorICAiTWlub3IgbW9kZSBgbWFya2Rvd24tdHMtaW4tdGFi bGUtbW9kZScgbGlnaHRlciBzdHJpbmcuCitTZXQgdG8gbmlsIHRvIGRpc2FibGUgdGhlIGxpZ2h0 ZXIuIgorICA6dHlwZSAnc3RyaW5nCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJz aW9uICIxLjAiKQorCis7OzsgRmFjZXM6CiAKIChkZWZncm91cCBtYXJrZG93bi10cy1mYWNlcyBu aWwKLSAgIkZhY2VzIHVzZWQgaW4gTWFya2Rvd24gVFMgTW9kZS4iCisgICJGYWNlcyB1c2VkIGJ5 IE1hcmtkb3duLVRTLiIKICAgOmdyb3VwICdtYXJrZG93bi10cy1mYWNlcwogICA6Z3JvdXAgJ2Zh Y2VzKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1kZWxpbWl0ZXIgJygodCAoOmluaGVyaXQgc2hh ZG93KSkpCi0gICJGYWNlIGZvciB0aGUgIyBiZWZvcmUgTWFya2Rvd24gaGVhZGluZ3MuIikKKyAg IkZhY2UgZm9yIHRoZSAjIGJlZm9yZSBNYXJrZG93biBoZWFkaW5ncy4iCisgIDp2ZXJzaW9uICIz MS4xIikKIAogKGRlZmZhY2UgbWFya2Rvd24tdHMtaGVhZGluZy0xICcoKHQgKDppbmhlcml0IG91 dGxpbmUtMSkpKQotICAiRmFjZSBmb3IgZmlyc3QgbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIikK KyAgIkZhY2UgZm9yIGZpcnN0IGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24g IjMxLjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1zZXRleHQtaGVhZGluZyAnKCh0ICg6aW5o ZXJpdCBtYXJrZG93bi10cy1oZWFkaW5nLTEpKSkKLSAgIkZhY2UgZm9yIHNldGV4dCBNYXJrZG93 biBoZWFkaW5ncyAoaGVhZGluZ3MgdW5kZXJsaW5lZCBieSA9PT0gb3IgLS0tKS4iKQorICAiRmFj ZSBmb3Igc2V0ZXh0IE1hcmtkb3duIGhlYWRpbmdzIChoZWFkaW5ncyB1bmRlcmxpbmVkIGJ5ID09 PSBvciAtLS0pLiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1o ZWFkaW5nLTIgJygodCAoOmluaGVyaXQgb3V0bGluZS0yKSkpCi0gICJGYWNlIGZvciBzZWNvbmQg bGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIikKKyAgIkZhY2UgZm9yIHNlY29uZCBsZXZlbCBNYXJr ZG93biBoZWFkaW5ncy4iCisgIDp2ZXJzaW9uICIzMS4xIikKIAogKGRlZmZhY2UgbWFya2Rvd24t dHMtaGVhZGluZy0zICcoKHQgKDppbmhlcml0IG91dGxpbmUtMykpKQotICAiRmFjZSBmb3IgdGhp cmQgbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIikKKyAgIkZhY2UgZm9yIHRoaXJkIGxldmVsIE1h cmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBtYXJrZG93 bi10cy1oZWFkaW5nLTQgJygodCAoOmluaGVyaXQgb3V0bGluZS00KSkpCi0gICJGYWNlIGZvciBm b3VydGggbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIikKKyAgIkZhY2UgZm9yIGZvdXJ0aCBsZXZl bCBNYXJrZG93biBoZWFkaW5ncy4iCisgIDp2ZXJzaW9uICIzMS4xIikKIAogKGRlZmZhY2UgbWFy a2Rvd24tdHMtaGVhZGluZy01ICcoKHQgKDppbmhlcml0IG91dGxpbmUtNSkpKQotICAiRmFjZSBm b3IgZmlmdGggbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIikKKyAgIkZhY2UgZm9yIGZpZnRoIGxl dmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBt YXJrZG93bi10cy1oZWFkaW5nLTYgJygodCAoOmluaGVyaXQgb3V0bGluZS02KSkpCi0gICJGYWNl IGZvciBzaXh0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3Igc2l4dGgg bGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKLShkZWZmYWNl IG1hcmtkb3duLXRzLWxpc3QtbWFya2VyICcoKHQgKDppbmhlcml0IHNoYWRvdykpKQotICAiRmFj ZSBmb3IgTWFya2Rvd24gbGlzdCBtYXJrZXJzIGxpa2UgLSBhbmQgKi4iKQorKGRlZmZhY2UgbWFy a2Rvd24tdHMtZW1waGFzaXMgJygodCAoOmluaGVyaXQgaXRhbGljKSkpCisgICJGYWNlIGZvciBN YXJrZG93biBlbXBoYXNpcyAoaXRhbGljKSB0ZXh0LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCiso ZGVmZmFjZSBtYXJrZG93bi10cy1ib2xkICcoKHQgKDppbmhlcml0IGJvbGQpKSkKKyAgIkZhY2Ug Zm9yIE1hcmtkb3duIHN0cm9uZyBlbXBoYXNpcyAoYm9sZCkgdGV4dC4iCisgIDp2ZXJzaW9uICIz MS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtc3RyaWtldGhyb3VnaCAnKCh0ICg6c3RyaWtl LXRocm91Z2ggdCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gc3RyaWtldGhyb3VnaCB0ZXh0LiIK KyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1ibG9jay1xdW90ZSAn KCh0ICg6aW5oZXJpdCBpdGFsaWMpKSkKLSAgIkZhY2UgZm9yIE1hcmtkb3duIGJsb2NrIHF1b3Rl cy4iKQorICAiRmFjZSBmb3IgTWFya2Rvd24gYmxvY2sgcXVvdGVzLiIKKyAgOnZlcnNpb24gIjMx LjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1saW5rICcoKHQgKDppbmhlcml0IGxpbmspKSkK KyAgIkZhY2UgZm9yIE1hcmtkb3duIGxpbmsgdGV4dCBhbmQgaW1hZ2UgZGVzY3JpcHRpb25zLiIK KyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0 aW9uICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1zdHJpbmctZmFjZSkpKQorICAiRmFjZSBmb3Ig TWFya2Rvd24gbGluayBkZXN0aW5hdGlvbnMgKFVSTHMpLiIKKyAgOnZlcnNpb24gIjMxLjEiKQor CisoZGVmZmFjZSBtYXJrZG93bi10cy1jb2RlLXNwYW4gJygodCAoOmluaGVyaXQgZm9udC1sb2Nr LXN0cmluZy1mYWNlKSkpCisgICJGYWNlIGZvciBNYXJrZG93biBpbmxpbmUgY29kZSBzcGFucy4i CisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtY29kZS1ibG9jayAn KCh0ICg6ZXh0ZW5kIHQpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGZlbmNlZCBjb2RlIGJsb2Nr IGNvbnRlbnQuCitBbHRlciB0aGlzIGZhY2UgdG8gYWRkIGEgYDpiYWNrZ3JvdW5kJyBmb3IgYSB2 aXN1YWxseSBkaXN0aW5jdAorY29kZSBibG9jayByZWdpb24sIGUuZy46CisgIChzZXQtZmFjZS1h dHRyaWJ1dGUgXFw9J21hcmtkb3duLXRzLWNvZGUtYmxvY2sgbmlsIDpiYWNrZ3JvdW5kIFwiZ3Jh eTk1XCIpIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWluLWNv ZGUtYmxvY2sgJygodCAoOmV4dGVuZCB0KSkpCisgICJGYWNlIGZvciB3aGVuIHBvaW50IGlzIGlu IGEgTWFya2Rvd24gY29kZSBibG9jay4KK1NlZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1pbi1j b250ZXh0LW1vZGUnLgorQWx0ZXIgdGhpcyBmYWNlIHRvIGFkZCBhIGA6YmFja2dyb3VuZCcgZm9y IGEgdmlzdWFsbHkgZGlzdGluY3QgdGFibGUKK3JlZ2lvbiwgZS5nLjoKKyAgKHNldC1mYWNlLWF0 dHJpYnV0ZSBcXD0nbWFya2Rvd24tdHMtaW4tY29kZS1ibG9jayA6YmFja2dyb3VuZCBcImdyYXk5 NVwiKSIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1jb2RlLWJs b2NrLW1hcmt1cC1oaWRkZW4KKyAgJygoKChiYWNrZ3JvdW5kIGxpZ2h0KSkgKDpiYWNrZ3JvdW5k ICJncmF5OTUiIDpleHRlbmQgdCkpCisgICAgKCgoYmFja2dyb3VuZCBkYXJrKSkgICg6YmFja2dy b3VuZCAiZ3JheTE1IiA6ZXh0ZW5kIHQpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGZlbmNlZCBj b2RlIGJsb2NrIGNvbnRlbnQgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorVXNlZCBpbnN0ZWFkIG9m IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrJyB3aGVuIGBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCcK K2lzIG5vbi1uaWwuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRz LWluZGVudGVkLWNvZGUtYmxvY2sgJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1mYWNl KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBpbmRlbnRlZCBjb2RlIGJsb2Nrcy4iCisgIDp2ZXJz aW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtaHRtbC10YWcgJygodCAoOmluaGVy aXQgZm9udC1sb2NrLWRvYy1tYXJrdXAtZmFjZSkpKQorICAiRmFjZSBmb3IgaW5saW5lIEhUTUwg dGFncyBpbiBNYXJrZG93bi4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rv d24tdHMtaHRtbC1ibG9jayAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLW1hcmt1cC1mYWNl KSkpCisgICJGYWNlIGZvciBIVE1MIGJsb2NrcyBpbiBNYXJrZG93bi4iCisgIDp2ZXJzaW9uICIz MS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtdGhlbWF0aWMtYnJlYWsgJygodCAoOmluaGVy aXQgc2hhZG93IDpleHRlbmQgdCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gdGhlbWF0aWMgYnJl YWtzIChob3Jpem9udGFsIHJ1bGVzKS4KK0N1c3RvbWl6ZSB0aGlzIGZhY2UgdG8gYWRkIGEgOmJh Y2tncm91bmQgZm9yIGEgZnVsbC13aWR0aCB2aXN1YWwgcnVsZS4iCisgIDp2ZXJzaW9uICIzMS4x IikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtZW50aXR5LXJlZmVyZW5jZSAnKCh0ICg6aW5oZXJp dCBmb250LWxvY2stYnVpbHRpbi1mYWNlKSkpCisgICJGYWNlIGZvciBuYW1lZCBIVE1MIGVudGl0 eSByZWZlcmVuY2VzIGxpa2UgJmFtcDsgYW5kICZjb3B5Oy4iCisgIDp2ZXJzaW9uICIzMS4xIikK KworKGRlZmZhY2UgbWFya2Rvd24tdHMtbnVtZXJpYy1jaGFyYWN0ZXItcmVmZXJlbmNlCisgICco KHQgKDppbmhlcml0IGZvbnQtbG9jay1lc2NhcGUtZmFjZSkpKQorICAiRmFjZSBmb3IgbnVtZXJp YyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBsaWtlICYjNjU7IGFuZCAmI3g0MTsuIgorICA6dmVyc2lv biAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWxhdGV4ICcoKHQgKDppbmhlcml0IGZv bnQtbG9jay1zdHJpbmctZmFjZSkpKQorICAiRmFjZSBmb3IgTGFUZVggLyBtYXRoIGNvbnRlbnQg aW4gTWFya2Rvd24gKCQuLi4kIGFuZCAkJC4uLiQkKS4iCisgIDp2ZXJzaW9uICIzMS4xIikKKwor KGRlZmZhY2UgbWFya2Rvd24tdHMtdGFibGUtaGVhZGVyICcoKHQgKDppbmhlcml0IChib2xkIGZv bnQtbG9jay1kb2MtZmFjZSkpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIHBpcGUgdGFibGUgaGVh ZGVyIGNlbGxzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10 YWJsZS1jZWxsICcoKHQgKDppbmhlcml0IGRlZmF1bHQpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3du IHBpcGUgdGFibGUgZGF0YSBjZWxscy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2Ug bWFya2Rvd24tdHMtdGFibGUtZGVsaW1pdGVyLWNlbGwgJygodCAoOmluaGVyaXQgZm9udC1sb2Nr LWRvYy1mYWNlKSkpCisgICJGYWNlIGZvciBNYXJrZG93biBwaXBlIHRhYmxlIGRlbGltaXRlciBj ZWxscyAoLS0tIHNlcGFyYXRvcnMpLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBt YXJrZG93bi10cy10YWJsZSAnKCh0ICg6ZXh0ZW5kIHQpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3du IHRhYmxlLgorQWx0ZXIgdGhpcyBmYWNlIHRvIGFkZCBhIGA6YmFja2dyb3VuZCcgZm9yIGEgdmlz dWFsbHkgZGlzdGluY3QgdGFibGUKK3JlZ2lvbiwgZS5nLjoKKyAgKHNldC1mYWNlLWF0dHJpYnV0 ZSBcXD0nbWFya2Rvd24tdHMtdGFibGUgbmlsIDpiYWNrZ3JvdW5kIFwiZ3JheTk1XCIpIgorICA6 dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWluLXRhYmxlICcoKHQgKDpl eHRlbmQgdCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gYG1hcmtkb3duLXRzLWluLXRhYmxlLW1v ZGUnIHdoZW4gcG9pbnQgaXMgaW4gYSB0YWJsZS4KK0FsdGVyIHRoaXMgZmFjZSB0byBhZGQgYSBg OmJhY2tncm91bmQnIGZvciBhIHZpc3VhbGx5IGRpc3RpbmN0IHRhYmxlCityZWdpb24sIGUuZy46 CisgIChzZXQtZmFjZS1hdHRyaWJ1dGUgXFw9J21hcmtkb3duLXRzLWluLXRhYmxlIG5pbCA6YmFj a2dyb3VuZCBcImdyYXk5NVwiKSIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBtYXJr ZG93bi10cy1sYW5ndWFnZS1rZXl3b3JkICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1rZXl3b3Jk LWZhY2UpKSkKLSAgIkZhY2UgZm9yIHRoZSBsYW5ndWFnZSBrZXl3b3JkIGZvciBNYXJrZG93biBj b2RlIGJsb2Nrcy4iKQorICAiRmFjZSBmb3IgdGhlIGxhbmd1YWdlIGtleXdvcmQgZm9yIE1hcmtk b3duIGNvZGUgYmxvY2tzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93 bi10cy1saXN0LW1hcmtlciAnKCh0ICg6aW5oZXJpdCBzaGFkb3cpKSkKKyAgIkZhY2UgZm9yIE1h cmtkb3duIGxpc3QgbWFya2VycyBsaWtlIC0gYW5kICouIgorICA6dmVyc2lvbiAiMzEuMSIpCisK KyhkZWZmYWNlIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gKKyAgJygodCAo OmluaGVyaXQgb3V0bGluZS00IDp3ZWlnaHQgYm9sZCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24g aGFyZCBsaW5lIGJyZWFrcyBpbnRyb2R1Y2VkIGJ5IGEgdHJhaWxpbmcgYmFja3NsYXNoLiIKKyAg OnZlcnNpb24gIjMxLjEiKQogCi07OzsgRm9udC1sb2NrCisoZGVmZmFjZSBtYXJrZG93bi10cy1o YXJkLWxpbmUtYnJlYWstYmFja3NsYXNoLWhpZGRlbgorICAnKCh0ICg6aW5oZXJpdCBvdXRsaW5l LTQgOndlaWdodCBib2xkKSkpCisgICJGYWNlIGZvciB0cmFpbGluZy1iYWNrc2xhc2ggaGFyZCBs aW5lIGJyZWFrIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4iCisgIDp2ZXJzaW9uICIzMS4xIikKKwor KGRlZmZhY2UgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLXNwYWNlCisgICcoKCgoYmFja2dy b3VuZCBsaWdodCkpICg6YmFja2dyb3VuZCAiZ3JheTcwIiA6d2VpZ2h0IGJvbGQpKQorICAgICgo KGJhY2tncm91bmQgZGFyaykpICAoOmJhY2tncm91bmQgImdyYXk0MCIgOndlaWdodCBib2xkKSkp CisgICJGYWNlIGZvciBNYXJrZG93biBoYXJkIGxpbmUgYnJlYWtzIGludHJvZHVjZWQgYnkgdHdv IHRyYWlsaW5nIHNwYWNlcy4KK1RoZSB0cmFpbGluZyBzcGFjZXMgYXJlIG90aGVyd2lzZSBpbnZp c2libGUsIHNvIHRoZXkgYXJlIHNob3duIGFzIGEKK3NoYWRvdy1jb2xvcmVkIGJsb2NrLiIKKyAg OnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWst c3BhY2UtaGlkZGVuCisgICcoKHQgKDppbmhlcml0IG91dGxpbmUtNCA6d2VpZ2h0IGJvbGQpKSkK KyAgIkZhY2UgZm9yIHRyYWlsaW5nLXNwYWNlcyBoYXJkIGxpbmUgYnJlYWsgd2hlbiBtYXJrdXAg aXMgaGlkZGVuLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10 YXNrLXVuY2hlY2tlZCAnKCh0ICg6aW5oZXJpdCBtYXJrZG93bi10cy1saXN0LW1hcmtlcikpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gdW5jaGVja2VkIHRhc2sgbGlzdCBtYXJrZXJzLiIKKyAgOnZl cnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YXNrLWNoZWNrZWQgJygodCAo OmluaGVyaXQgbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3du IGNoZWNrZWQgdGFzayBsaXN0IG1hcmtlcnMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyh0cmVl c2l0LWRlY2xhcmUtdW5hdmFpbGFibGUtZnVuY3Rpb25zKQorCisoYWRkLXRvLWxpc3QKKyAndHJl ZXNpdC1sYW5ndWFnZS1zb3VyY2UtYWxpc3QKKyAnKG1hcmtkb3duCisgICAiaHR0cHM6Ly9naXRo dWIuY29tL3RyZWUtc2l0dGVyLWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3duIgorICAgOmNv bW1pdCAiNDEzMjg1MjMxY2U4ZmE4YjExZTcwNzRiYmUyNjViNDhhYTcyNzdmOSIKKyAgIDpzb3Vy Y2UtZGlyICJ0cmVlLXNpdHRlci1tYXJrZG93bi9zcmMiKQorIHQpCisKKyhhZGQtdG8tbGlzdAor ICd0cmVlc2l0LWxhbmd1YWdlLXNvdXJjZS1hbGlzdAorICcobWFya2Rvd24taW5saW5lCisgICAi aHR0cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVyLWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtk b3duIgorICAgOmNvbW1pdCAiNDEzMjg1MjMxY2U4ZmE4YjExZTcwNzRiYmUyNjViNDhhYTcyNzdm OSIKKyAgIDpzb3VyY2UtZGlyICJ0cmVlLXNpdHRlci1tYXJrZG93bi1pbmxpbmUvc3JjIikKKyB0 KQorCis7OzsgVmFyaWFibGVzOgorCisoZGVmdmFyIG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5l IG5pbAorICAiTGV0IGJpbmQgdGhpcyB0byBub24tbmlsIGZvciBpbmxpbmUgYG1hcmtkb3duLXRz LW1vZGUnIGJ1ZmZlcnMuIikKKworKGRlZnZhciBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVz CisgIGAoKHNoIGJhc2gtdHMtbW9kZSkKKyAgICAoc2hlbGwgYmFzaC10cy1tb2RlKQorICAgICgs KGludGVybiAiYyMiKSBjc2hhcnAtdHMtbW9kZSkKKyAgICAoY3BwIGMrKy10cy1tb2RlKQorICAg IChlbCBlbWFjcy1saXNwLW1vZGUpCisgICAgKGVsaXNwIGVtYWNzLWxpc3AtbW9kZSkKKyAgICAo Z29sYW5nIGdvLXRzLW1vZGUpCisgICAgKGdvbW9kIGdvLW1vZC10cy1tb2RlKQorICAgIChnb3dv cmsgZ28td29yay10cy1tb2RlKQorICAgIChqYXZhc2NyaXB0IGpzLXRzLW1vZGUpCisgICAgKG1k IG1hcmtkb3duLXRzLW1vZGUpCisgICAgKHB5IHB5dGhvbi10cy1tb2RlKQorICAgIChyYiBydWJ5 LXRzLW1vZGUpCisgICAgKHJzIHJ1c3QtdHMtbW9kZSkKKyAgICAodGV4IGxhdGV4LW1vZGUpCisg ICAgKHRzIHR5cGVzY3JpcHQtdHMtbW9kZSkKKyAgICAoeW1sIHlhbWwtdHMtbW9kZSkpCisgICJF eHRyYSBtYXBwaW5ncyBmcm9tIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgdGFncyB0byBtYWpvciBtb2Rl cy4KKworRW50cmllcyBoZXJlIGFyZSBvbmx5IG5lZWRlZCB3aGVuIHRoZSBsYW5ndWFnZSB0YWcg aW4gYSBmZW5jZWQgY29kZQorYmxvY2sgZG9lcyBOT1QgbWF0Y2ggdGhlIGNvbnZlbnRpb25hbCBt b2RlIG5hbWUgZGVyaXZhdGlvbiwgZS5nLiB0aGUKK3VzZXIgd3JpdGVzIFxcPWBcXD1gXFw9YHRz IGluc3RlYWQgb2YgXFw9YFxcPWBcXD1gdHlwZXNjcmlwdCwgb3IKK1xcPWBcXD1gXFw9YHB5IGlu c3RlYWQgb2YgXFw9YFxcPWBcXD1gcHl0aG9uLiAgRm9yIHRhZ3MgdGhhdCBhbHJlYWR5CityZXNv bHZlIHZpYSB0aGUgc3RhbmRhcmQgXCItdHMtbW9kZVwiL1wiLW1vZGVcIiBoZXVyaXN0aWNzIHRo ZXJlIGlzIG5vCituZWVkIHRvIGFkZCBhbiBlbnRyeS4KKworVGhlIGFsaXN0IGlzIG9mIHRoZSBm b3JtIChMQU5HVUFHRSBNQUpPUi1NT0RFKS4gTUFKT1ItTU9ERSBjYW4gYmUgYQordHJlZS1zaXR0 ZXIgb3IgYSBjb252ZW50aW9uYWwgbW9kZS4KKworSWYgeW91IHByZWZlciBhIGNvbnZlbnRpb25h bCBtb2RlIG92ZXIgaXRzIHRyZWUtc2l0dGVyIHZhcmlhbnQsIGFkZCBvcgorcmVwbGFjZSByZWxl dmFudCBlbnRyaWVzLiAgRm9yIGV4YW1wbGU6CisKKyAgICAoYWRkLXRvLWxpc3QgXFw9J21hcmtk b3duLXRzLWNvZGUtYmxvY2stbW9kZXMKKyAgICAgIFxcPScocHl0aG9uIHB5dGhvbi1tb2RlKSkK KyAgICAoc2V0ZiAoYWxpc3QtZ2V0IFxcPSdweSBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVz KQorICAgICAgICAgIFxcPScocHl0aG9uLW1vZGUpKQorCitDb2RlIGJsb2NrcyBmb3IgdGhhdCBu b24gdHJlZS1zaXR0ZXIgbW9kZXMgd2lsbCBiZSBmb250aWZpZWQgdXNpbmcgdGhlCittb2RlJ3Mg Y29udmVudGlvbmFsIGZvbnQtbG9jayBydWxlcy4iKQorCisoZGVmdmFyIG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stZm9yY2UtY29udmVudGlvbmFsLW1vZGVzCisgICcobWFya2Rvd24tdHMtbW9kZQor ICAgIHBocC10cy1tb2RlKQorICAiVHJlYXQgdGhlc2UgY29kZSBibG9jayB0cmVlLXNpdHRlciBt b2RlcyBhcyBjb252ZW50aW9uYWwuCitTb21lIG1vZGVzIHRoYXQgZW1iZWQgbXVsdGlwbGUgYHRy ZWVzaXQnIHBhcnNlcnMgbmVlZCB0byBiZSB0cmVhdGVkIHdpdGgKK2NvbnZlbnRpb25hbCBmb250 LWxvY2suICBgbWFya2Rvd24tdHMtbW9kZScgaXRzZWxmIGlzIG9uZSBvZiB0aGVtLiIpCisKKzs7 OyBGb250LWxvY2s6CiAKIChkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIgKG5v ZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0IF8pCiAgICJGb250aWZ5IGRlbGltaXRlciBOT0RF IGFuZCBvcHRpb25hbGx5IGhpZGUgaXRzIG1hcmt1cC4KQEAgLTE2OCwyMyArNzk0LDgzNyBAQCBt YXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAocHV0LXRleHQtcHJvcGVydHkgKHRy ZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKQogICAgICAgICAg ICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93bi10cy0tbWFya3VwKSkpCiAKKyhkZWZ2 YXIgdXJsLW1haWwtY29tbWFuZCkgOyB1cmwvdXJsLXZhcnMuZWwKKworKGRlZnVuIG1hcmtkb3du LXRzLS1tYWtlLWxpbmstYnV0dG9uIChiZWcgZW5kIHVybCkKKyAgIk1ha2UgdGhlIHJlZ2lvbiBm cm9tIEJFRyB0byBFTkQgYSBjbGlja2FibGUgYnV0dG9uIGZvciBVUkwuCitGb3IgbWFpbHRvOiBV UklzLCB1c2UgYHVybC1tYWlsLWNvbW1hbmQnLiAgRm9yIG90aGVyIHNjaGVtZXMKK1woZS5nLiwg aHR0cCwgZnRwKSwgb3BlbiB3aXRoIGBicm93c2UtdXJsJy4gIE90aGVyd2lzZSwgdHJlYXQgYXMK K2EgcmVsYXRpdmUgZmlsZSBwYXRoIGFuZCBvcGVuIHdpdGggYGZpbmQtZmlsZScuCisKK0RvIG5v dCBwYXNzIGBmYWNlJyB0byBgbWFrZS10ZXh0LWJ1dHRvbic6IHRoZSBsaW5rIGZhY2UgaXMgYWxy ZWFkeQorYXBwbGllZCBieSBgbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlJyB2aWEKK2B0 cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScgKHdpdGggYDpvdmVycmlkZSBhcHBlbmQnKSwg YW5kCitgYWRkLXRleHQtcHJvcGVydGllcycgd291bGQgb3RoZXJ3aXNlIHJlcGxhY2UgdGhlIGFw cGVuZGVkIGZhY2UKK2xpc3Qgd2l0aCBhIHNpbmdsZSBgbWFya2Rvd24tdHMtbGluaycsIGNsb2Ji ZXJpbmcgYW4gZW5jbG9zaW5nCitoZWFkaW5nIGZhY2UuIgorICA7OyBOT1RFOiBVUkkgc2NoZW1l IGFuZCBob3N0IG5hbWUgYXJlIGNhc2UtaW5zZW5zaXRpdmUgcGVyIFJGQyAzOTg2CisgIDs7IGFu ZCBSRkMgNzIzMC4KKyAgKGxldCAoKGNhc2UtZm9sZC1zZWFyY2ggbmlsKSkKKyAgICAobWFrZS10 ZXh0LWJ1dHRvbiBiZWcgZW5kCisgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbiAobGFtYmRh IChfYnV0dG9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmctcHJlZml4LXAgIiMiIHVybCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZvbGxvdy1mcmFn bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Vic3RyaW5nIHVybCAx KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaC1wICJc XGBtYWlsdG86IiB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNh bGwgdXJsLW1haWwtY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIlxcYG1haWx0bzoiICIiIHVybCkpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmctbWF0Y2gtcCAiXFxgW2Etel0rOiIgdXJsKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChicm93c2UtdXJsIHVybCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCAoZmluZC1maWxlIHVybCkpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAnaGVscC1lY2hvIHVybCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt LWZvbnRpZnktbGluay1kZXN0aW5hdGlvbiAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3Qg XykKKyAgIkZvbnRpZnkgbGluayBkZXN0aW5hdGlvbiBOT0RFIGFuZCBoaWRlIGl0IHdoZW4gbWFy a3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91 Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAodHJlZXNpdC1mb250 aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQt bm9kZS1lbmQgbm9kZSkKKyAgICdtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9uIG92ZXJyaWRl IHN0YXJ0IGVuZCkKKyAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAocHV0LXRl eHQtcHJvcGVydHkgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBu b2RlKQorICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93bi10cy0tbWFy a3VwKSkpCisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlIG5pbAor ICAiQ2FjaGVkIGFsaXN0IG9mIChMQUJFTCAuIFVSTCkgZnJvbSBsaW5rIHJlZmVyZW5jZSBkZWZp bml0aW9ucy4KK0VhY2ggZW50cnkgaXMgYSBjb25zIGNlbGwgbWFwcGluZyBhIGRvd25jYXNlZCBs YWJlbCBzdHJpbmcgdG8gaXRzCitkZXN0aW5hdGlvbiBVUkwuIikKKworKGRlZnZhci1sb2NhbCBt YXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUtdGljayBuaWwKKyAgIlZhbHVlIG9mIGBidWZmZXIt Y2hhcnMtbW9kaWZpZWQtdGljaycgd2hlbiB0aGUgY2FjaGUgd2FzIGJ1aWx0LiIpCisKKyhkZWZ1 biBtYXJrZG93bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMgKCkKKyAgIlJldHVybiBhbiBhbGlz dCBvZiAoTEFCRUwgLiBVUkwpIGZyb20gbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbnMuCitMQUJF TCBpcyBkb3duY2FzZWQgZm9yIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcuICBSZXN1bHRzIGFy ZQorY2FjaGVkIGFuZCByZWJ1aWx0IG9ubHkgd2hlbiB0aGUgYnVmZmVyIGNoYW5nZXMuIgorICAo bGV0ICgodGljayAoYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2spKSkKKyAgICAodW5sZXNzIChl cSB0aWNrIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZS10aWNrKQorICAgICAgKGxldCogKChy b290ICh0cmVlc2l0LWJ1ZmZlci1yb290LW5vZGUgJ21hcmtkb3duKSkKKyAgICAgICAgICAgICAo bWF0Y2hlcyAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisgICAgICAgICAgICAgICAgICAgICAgIHJv b3QKKyAgICAgICAgICAgICAgICAgICAgICAgJygobGlua19yZWZlcmVuY2VfZGVmaW5pdGlvbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAobGlua19sYWJlbCkgQGxhYmVsCisgICAgICAgICAg ICAgICAgICAgICAgICAgIChsaW5rX2Rlc3RpbmF0aW9uKSBAZGVzdCkpKSkKKyAgICAgICAgICAg ICBkZWZzKQorICAgICAgICAod2hpbGUgbWF0Y2hlcworICAgICAgICAgIChsZXQqICgobGFiZWwt cGFpciAocG9wIG1hdGNoZXMpKQorICAgICAgICAgICAgICAgICAoZGVzdC1wYWlyIChwb3AgbWF0 Y2hlcykpCisgICAgICAgICAgICAgICAgIChsYmwtdGV4dCAoc3RyaW5nLXRyaW0gKHRyZWVzaXQt bm9kZS10ZXh0IChjZHIgbGFiZWwtcGFpcikgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiXFxbIiAiXFxdIikpKQorICAgICAgICAgICAgKHB1c2ggKGNvbnMgKGRv d25jYXNlIGxibC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10 ZXh0IChjZHIgZGVzdC1wYWlyKSB0KSkKKyAgICAgICAgICAgICAgICAgIGRlZnMpKSkKKyAgICAg ICAgKHNldHEgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlIChucmV2ZXJzZSBkZWZzKQorICAg ICAgICAgICAgICBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUtdGljayB0aWNrKSkpCisgICAg bWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1yZXNv bHZlLWxpbmstcmVmIChsYWJlbCkKKyAgIlJlc29sdmUgTEFCRUwgdG8gYSBVUkwgdmlhIGxpbmsg cmVmZXJlbmNlIGRlZmluaXRpb25zLgorTEFCRUwgc2hvdWxkIGJlIHRoZSB0ZXh0IHdpdGhvdXQg YnJhY2tldHMuICBNYXRjaGluZyBpcworY2FzZS1pbnNlbnNpdGl2ZSBwZXIgQ29tbW9uTWFyayBz cGVjIHNlY3Rpb24gNC43LiIKKyAgKGFsaXN0LWdldCAoZG93bmNhc2UgbGFiZWwpIChtYXJrZG93 bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMpCisgICAgICAgICAgICAgbmlsIG5pbCAjJ2VxdWFs KSkKKworOzs7IEZyYWdtZW50IGxpbmtzOgorCisoZGVmY29uc3QgbWFya2Rvd24tdHMtLXNsdWct Z2l0aHViLXN0cmlwLXJlCisgICJbXVshXCIjJCUmJygpKissLi86Ozw9Pj9AXFxeYHt8fX5dIgor ICAiUHVuY3R1YXRpb24gc3RyaXBwZWQgYnkgR2l0SHViJ3MgZ2gtc2x1Z2dlciBiZWZvcmUgaHlw aGVuYXRpb24uIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1YiAodGV4dCkKKyAg IlJldHVybiB0aGUgR2l0SHViLWZsYXZvciBzbHVnIGZvciBoZWFkaW5nIFRFWFQuCitNaXJyb3Jz IHRoZSBnaC1zbHVnZ2VyIGFsZ29yaXRobTogbG93ZXJjYXNlLCBzdHJpcCBhIGZpeGVkCitwdW5j dHVhdGlvbiBzZXQsIHJlcGxhY2Ugc3BhY2VzIHdpdGggaHlwaGVucy4iCisgIChsZXQqICgobGMg KGRvd25jYXNlIHRleHQpKQorICAgICAgICAgKHN0cmlwcGVkIChyZXBsYWNlLXJlZ2V4cC1pbi1z dHJpbmcKKyAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLXNsdWctZ2l0aHViLXN0cmlw LXJlICIiIGxjKSkpCisgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiW1s6Ymxhbms6XV0i ICItIiBzdHJpcHBlZCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXNsdWctcGFuZG9jICh0ZXh0 KQorICAiUmV0dXJuIHRoZSBQYW5kb2MtZmxhdm9yIGF1dG8taWQgc2x1ZyBmb3IgaGVhZGluZyBU RVhULgorTWlycm9ycyBQYW5kb2MncyBhbGdvcml0aG06IGRyb3AgZXZlcnl0aGluZyBiZWZvcmUg dGhlIGZpcnN0CitsZXR0ZXIsIGtlZXAgYWxwaGFudW1lcmljcyBhbmQgYF8tLicsIGNvbGxhcHNl IHdoaXRlc3BhY2UgcnVucyB0bworaHlwaGVucywgbG93ZXJjYXNlLiAgRmFsbHMgYmFjayB0byBc InNlY3Rpb25cIiBpZiBlbXB0eS4iCisgIChsZXQqICgobGMgKGRvd25jYXNlIHRleHQpKQorICAg ICAgICAgKGZyb20tbGV0dGVyIChpZiAoc3RyaW5nLW1hdGNoICJbWzphbHBoYTpdXSIgbGMpCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmcgbGMgKG1hdGNoLWJlZ2lubmluZyAw KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICIiKSkKKyAgICAgICAgIChrZXB0IChyZXBsYWNl LXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAgICAiW15bOmFsbnVtOl1fLlxuXHRbOmJs YW5rOl0tXSIgIiIgZnJvbS1sZXR0ZXIpKQorICAgICAgICAgKGh5cGhlbmF0ZWQgKHJlcGxhY2Ut cmVnZXhwLWluLXN0cmluZyAiW1s6Ymxhbms6XVx0XG5dKyIgIi0iIGtlcHQpKQorICAgICAgICAg KHRyaW1tZWQgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiLStcXCciICIiIGh5cGhlbmF0ZWQp KSkKKyAgICAoaWYgKHN0cmluZy1lbXB0eS1wIHRyaW1tZWQpICJzZWN0aW9uIiB0cmltbWVkKSkp CisKKyhkZWZjb25zdCBtYXJrZG93bi10cy0tZXhwbGljaXQtaWQtcmUKKyAgIlsgXHRdKntbIFx0 XSojXFwoW159IFx0XStcXClbIFx0XSp9WyBcdF0qXFwnIgorICAiTWF0Y2ggYSBQYW5kb2Mtc3R5 bGUgdHJhaWxpbmcgYHsjaWR9JyBvbiBhIGhlYWRpbmcgbGluZS4KK0NhcHR1cmUgZ3JvdXAgMSBp cyB0aGUgZXhwbGljaXQgaWQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1oZWFkaW5nLXRleHQt YW5kLWlkIChyYXcpCisgICJTcGxpdCBSQVcgaGVhZGluZyB0ZXh0IGludG8gKFZJU0lCTEUgLiBF WFBMSUNJVC1JRCkuCitFWFBMSUNJVC1JRCBpcyBub24tbmlsIGlmIFJBVyBlbmRzIHdpdGggYSBQ YW5kb2Mtc3R5bGUgYHsjaWR9JywKK2luIHdoaWNoIGNhc2UgVklTSUJMRSBpcyBSQVcgd2l0aCB0 aGF0IHN1ZmZpeCByZW1vdmVkLiIKKyAgKGlmIChzdHJpbmctbWF0Y2ggbWFya2Rvd24tdHMtLWV4 cGxpY2l0LWlkLXJlIHJhdykKKyAgICAgIChjb25zIChzdWJzdHJpbmcgcmF3IDAgKG1hdGNoLWJl Z2lubmluZyAwKSkKKyAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMSByYXcpKQorICAgIChjb25z IHJhdyBuaWwpKSkKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0taGVhZGluZy1pZC1jYWNo ZSBuaWwKKyAgIkNhY2hlZCBoYXNoIHRhYmxlIG1hcHBpbmcgaGVhZGluZyBzbHVnIHN0cmluZ3Mg dG8gYnVmZmVyIHBvc2l0aW9ucy4KK0VhY2ggdmFsdWUgaXMgdGhlIGJ1ZmZlciBwb3NpdGlvbiBv ZiB0aGUgc3RhcnQgb2YgdGhlIG1hdGNoaW5nCitgYXR4X2hlYWRpbmcnIG9yIGBzZXRleHRfaGVh ZGluZycgbm9kZS4gIEJ1aWx0IGxhemlseSBieQorYG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkcycs IGludmFsaWRhdGVkIGJ5IGJ1ZmZlci10aWNrIGNoYW5nZS4iKQorCisoZGVmdmFyLWxvY2FsIG1h cmtkb3duLXRzLS1oZWFkaW5nLWlkLWNhY2hlLXRpY2sgbmlsCisgICJWYWx1ZSBvZiBgYnVmZmVy LWNoYXJzLW1vZGlmaWVkLXRpY2snIHdoZW4gdGhlIGhlYWRpbmctaWQgY2FjaGUgd2FzIGJ1aWx0 LiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tYnVpbGQtaGVhZGluZy1pZHMgKCkKKyAgIldhbGsg YWxsIGhlYWRpbmdzIGluIHRoZSBidWZmZXIgYW5kIHJldHVybiBhIGhhc2ggdGFibGUuCitXaGlj aCBtYXBzIGVhY2ggc2x1ZyB0byB0aGUgYnVmZmVyIHBvc2l0aW9uIG9mIGl0cyBoZWFkaW5nLiAg RWFjaAoraGVhZGluZyBjb250cmlidXRlcyBpdHMgR2l0SHViIHNsdWcsIGl0cyBQYW5kb2Mgc2x1 ZywgYW5kIGl0cyBleHBsaWNpdAorYHsjaWR9JyBpZiBwcmVzZW50LiAgQm90aCBzbHVnIGFsZ29y aXRobXMgYXJlIHN0b3JlZCBpbiB0aGUgc2FtZSBidWZmZXIKK2JlY2F1c2UgYSBtYXJrZG93biBm aWxlIGlzIG9mdGVuIHByZXZpZXdlZCBieSBzZXZlcmFsIHJlbmRlcmVycyAoR2l0SHViCit3ZWIg VUksIFBhbmRvYywgbWRCb29rLCBIdWdvLCBhbmQgc28gb24pIGFuZCB0aGUgc2FtZSBzb3VyY2Ug c2hvdWxkCityZXNvbHZlIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggb25lIHRoZSBhdXRob3Igd3JvdGUg dGhlIGxpbmsgZm9yLiAgRm9yIG1vc3QKK2hlYWRpbmdzIHRoZSB0d28gYWxnb3JpdGhtcyBwcm9k dWNlIHRoZSBzYW1lIHNsdWcgYW55d2F5LgorRHVwbGljYXRlIHNsdWdzICh3aXRoaW4gb25lIGFs Z29yaXRobSkgYXJlIGRpc2FtYmlndWF0ZWQgYnkgYXBwZW5kaW5nCitgLTEnLCBgLTInLCBhbmQg c28gb24sIGluIGRvY3VtZW50IG9yZGVyLCBtYXRjaGluZyBHaXRIdWIncyBiZWhhdmlvci4KK1do ZW4gdHdvIGRpc3RpbmN0IGhlYWRpbmdzIHdvdWxkIG90aGVyd2lzZSBzaGFyZSBhIHNsdWcsIHRo ZSBmaXJzdAorb2NjdXJyZW5jZSBpbiBkb2N1bWVudCBvcmRlciB3aW5zLiIKKyAgKGxldCAoKHRh YmxlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVhbCkpCisgICAgICAgIDs7IFBlci1hbGdv cml0aG0gZGVkdXBlIGNvdW50ZXJzOiBob3cgbWFueSB0aW1lcyB0aGlzIGJhc2Ugc2x1ZworICAg ICAgICA7OyBoYXMgYmVlbiBzZWVuIHNvIGZhciBpbiBkb2N1bWVudCBvcmRlci4KKyAgICAgICAg KGdoLWNvdW50cyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXF1YWwpKQorICAgICAgICAocGQt Y291bnRzIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVhbCkpCisgICAgICAgIChyb290ICh0 cmVlc2l0LWJ1ZmZlci1yb290LW5vZGUgJ21hcmtkb3duKSkpCisgICAgKGRvbGlzdCAoY2FwICh0 cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgIHJvb3QKKyAgICAgICAgICAg ICAgICAgICcoKChhdHhfaGVhZGluZykgQGgpCisgICAgICAgICAgICAgICAgICAgICgoc2V0ZXh0 X2hlYWRpbmcpIEBoKSkpKQorICAgICAgKGxldCogKChub2RlIChjZHIgY2FwKSkKKyAgICAgICAg ICAgICAocG9zICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAgICAgKHJhdyAo c3RyaW5nLXRyaW0gKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUgdCkpKQorICAgICAgICAgICAgIDs7 IFN0cmlwIHRoZSBsZWFkaW5nIG1hcmtlciAoIyMjIG9yID09PT0vLS0tLSkuCisgICAgICAgICAg ICAgOzsgRm9yIGF0eCwgZHJvcCBsZWFkaW5nICMncyBhbmQgZm9sbG93aW5nIHNwYWNlLgorICAg ICAgICAgICAgIDs7IEZvciBzZXRleHQsIGRyb3AgdGhlIHRyYWlsaW5nIHVuZGVybGluZSBsaW5l LgorICAgICAgICAgICAgICh0ZXh0IChjb25kCisgICAgICAgICAgICAgICAgICAgICgoc3RyaW5n LW1hdGNoICJcXGAjK1sgXHRdKlxcKC4qP1xcKVsgXHRdKiMqWyBcdF0qXFwnIiByYXcpCisgICAg ICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDEgcmF3KSkKKyAgICAgICAgICAgICAgICAg ICAgKChzdHJpbmctbWF0Y2ggIlxcYFxcKC4qP1xcKVxuWz0tXStbIFx0XSpcXCciIHJhdykKKyAg ICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMSByYXcpKQorICAgICAgICAgICAgICAg ICAgICAodCByYXcpKSkKKyAgICAgICAgICAgICAoc3BsaXQgKG1hcmtkb3duLXRzLS1oZWFkaW5n LXRleHQtYW5kLWlkIHRleHQpKQorICAgICAgICAgICAgICh2aXNpYmxlIChjYXIgc3BsaXQpKQor ICAgICAgICAgICAgIChleHBsaWNpdCAoY2RyIHNwbGl0KSkpCisgICAgICAgIDs7IEV4cGxpY2l0 IHsjaWR9IHdpbnMgb3V0cmlnaHQ7IGZpcnN0IG9jY3VycmVuY2Uga2VlcHMgaXQuCisgICAgICAg ICh3aGVuIChhbmQgZXhwbGljaXQgKG5vdCAoZ2V0aGFzaCBleHBsaWNpdCB0YWJsZSkpKQorICAg ICAgICAgIChwdXRoYXNoIGV4cGxpY2l0IHBvcyB0YWJsZSkpCisgICAgICAgIDs7IEF1dG8gc2x1 Z3MgKEdpdEh1YiArIFBhbmRvYyksIGRlZHVwZWQgcGVyIGFsZ29yaXRobS4KKyAgICAgICAgKGxl dCogKChnaC1iYXNlIChtYXJrZG93bi10cy0tc2x1Zy1naXRodWIgdmlzaWJsZSkpCisgICAgICAg ICAgICAgICAocGQtYmFzZSAobWFya2Rvd24tdHMtLXNsdWctcGFuZG9jIHZpc2libGUpKQorICAg ICAgICAgICAgICAgKGdoLW4gKGdldGhhc2ggZ2gtYmFzZSBnaC1jb3VudHMgMCkpCisgICAgICAg ICAgICAgICAocGQtbiAoZ2V0aGFzaCBwZC1iYXNlIHBkLWNvdW50cyAwKSkKKyAgICAgICAgICAg ICAgIChnaC1pZCAoaWYgKHplcm9wIGdoLW4pIGdoLWJhc2UKKyAgICAgICAgICAgICAgICAgICAg ICAgIChmb3JtYXQgIiVzLSVkIiBnaC1iYXNlIGdoLW4pKSkKKyAgICAgICAgICAgICAgIChwZC1p ZCAoaWYgKHplcm9wIHBkLW4pIHBkLWJhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIChmb3Jt YXQgIiVzLSVkIiBwZC1iYXNlIHBkLW4pKSkpCisgICAgICAgICAgKHB1dGhhc2ggZ2gtYmFzZSAo MSsgZ2gtbikgZ2gtY291bnRzKQorICAgICAgICAgIChwdXRoYXNoIHBkLWJhc2UgKDErIHBkLW4p IHBkLWNvdW50cykKKyAgICAgICAgICA7OyBGaXJzdC13cml0ZXItd2lucyBzbyBkb2N1bWVudCBv cmRlciB0aWVicmVha3MgY29sbGlzaW9ucy4KKyAgICAgICAgICAodW5sZXNzIChnZXRoYXNoIGdo LWlkIHRhYmxlKSAocHV0aGFzaCBnaC1pZCBwb3MgdGFibGUpKQorICAgICAgICAgICh1bmxlc3Mg KGdldGhhc2ggcGQtaWQgdGFibGUpIChwdXRoYXNoIHBkLWlkIHBvcyB0YWJsZSkpKSkpCisgICAg dGFibGUpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWhlYWRpbmctaWRzICgpCisgICJSZXR1cm4g dGhlIGhlYWRpbmctaWQgaGFzaCB0YWJsZSBmb3IgdGhlIGN1cnJlbnQgYnVmZmVyLgorQ2FjaGUg aXMgcmVidWlsdCBvbmx5IHdoZW4gYGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrJyBoYXMgYWR2 YW5jZWQKK3NpbmNlIHRoZSBsYXN0IGNhbGwgKG1pcnJvcnMgYG1hcmtkb3duLXRzLS1saW5rLXJl Zi1jYWNoZScpLiIKKyAgKGxldCAoKHRpY2sgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrKSkp CisgICAgKHVubGVzcyAoZXEgdGljayBtYXJrZG93bi10cy0taGVhZGluZy1pZC1jYWNoZS10aWNr KQorICAgICAgKHNldHEgbWFya2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUgKG1hcmtkb3duLXRz LS1idWlsZC1oZWFkaW5nLWlkcykKKyAgICAgICAgICAgIG1hcmtkb3duLXRzLS1oZWFkaW5nLWlk LWNhY2hlLXRpY2sgdGljaykpCisgICAgbWFya2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbGxvdy1mcmFnbWVudCAoaWQpCisgICJKdW1wIHRvIHRo ZSBoZWFkaW5nIHdob3NlIHNsdWcgbWF0Y2hlcyBJRCAod2l0aG91dCBsZWFkaW5nIGAjJykuCitQ dXNoZXMgdGhlIG1hcmsgYmVmb3JlIG1vdmluZyBzbyBgQy11IEMtU1BDJyByZXR1cm5zLiAgU2ln bmFscworYHVzZXItZXJyb3InIGlmIG5vIGhlYWRpbmcgbWF0Y2hlcy4iCisgIChpZi1sZXQqICgo cG9zIChnZXRoYXNoIGlkIChtYXJrZG93bi10cy0taGVhZGluZy1pZHMpKSkpCisgICAgICAocHJv Z24KKyAgICAgICAgKHB1c2gtbWFyaykKKyAgICAgICAgKGdvdG8tY2hhciBwb3MpCisgICAgICAg IChyZWNlbnRlcikpCisgICAgKHVzZXItZXJyb3IgIk5vIGhlYWRpbmcgZm9yIGZyYWdtZW50OiAj JXMiIGlkKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1oZWFkaW5nIChub2RlIF9v dmVycmlkZSBfc3RhcnQgX2VuZCAmcmVzdCBfKQorICAiQXBwbHkgdGhlIGhlYWRpbmcgZmFjZSBh Y3Jvc3MgTk9ERS4KK0xheWVyIHRoZSBmYWNlIG9uIHRvcCBvZiBjaGlsZCBzdWItbm9kZXMgKGUu Zy4gYW4gaW5saW5lIGxpbmspIHNvCit0aGVpciBvd24gZmFjZXMgYXJlIHByZXNlcnZlZC4gIFN0 cmlwIGFueSBwcmlvciBjb3B5IG9mIHRoZSBmYWNlCitmaXJzdCBzbyBpdCBkb2VzIG5vdCBhY2N1 bXVsYXRlIHdoZW4gdGhlIGhlYWRpbmcgaXMgcmVmb250aWZpZWQgb3IKK2l0cyBsZXZlbC90eXBl IGNoYW5nZXMgZHVyaW5nIGVkaXRpbmcuCisKK0ZvciBBVFggaGVhZGluZ3MsIGFsc28gZm9udGlm eSBhbnkgb3B0aW9uYWwgdHJhaWxpbmcgY2xvc2luZy1gIycKK3NlcXVlbmNlIGFzIGEgZGVsaW1p dGVyLiAgVGhlIHRyZWUtc2l0dGVyIGdyYW1tYXIgZG9lcyBub3QgcHJvZHVjZSBhCitzZXBhcmF0 ZSBub2RlIGZvciB0aGVzZTsgcGVyIENvbW1vbk1hcmsgdGhleSBhcmUgZGVjb3JhdGl2ZSBhbmQK K211c3QgYmUgcHJlY2VkZWQgYnkgYSBzcGFjZSBvciB0YWIuIgorICAobGV0KiAoKHR5cGUgKHRy ZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAgICAgICAgKG4tc3RhcnQgKHRyZWVzaXQtbm9kZS1z dGFydCBub2RlKSkKKyAgICAgICAgIChuLWVuZCAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQor ICAgICAgICAgKGZhY2UgKGNvbmQKKyAgICAgICAgICAgICAgICAoKGVxdWFsIHR5cGUgInNldGV4 dF9oZWFkaW5nIikKKyAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLXNldGV4dC1oZWFkaW5n KQorICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAgIChsZXQgKChtYXJrZXIgKHRy ZWVzaXQtbm9kZS1jaGlsZCBub2RlIDApKSkKKyAgICAgICAgICAgICAgICAgICAoaW50ZXJuIChm b3JtYXQgIm1hcmtkb3duLXRzLWhlYWRpbmctJWQiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsZW5ndGggKHRyZWVzaXQtbm9kZS10ZXh0IG1hcmtlciB0KSkpKSkpKSkpCisg ICAgKGZvbnQtbG9jay0tcmVtb3ZlLWZhY2UtZnJvbS10ZXh0LXByb3BlcnR5IG4tc3RhcnQgbi1l bmQgJ2ZhY2UgZmFjZSkKKyAgICAoZm9udC1sb2NrLWFwcGVuZC10ZXh0LXByb3BlcnR5IG4tc3Rh cnQgbi1lbmQgJ2ZhY2UgZmFjZSkKKyAgICAod2hlbiAoc3RyaW5nLXByZWZpeC1wICJhdHhfIiB0 eXBlKQorICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgIChnb3RvLWNoYXIgbi1lbmQpCisg ICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHRcbiIgbi1zdGFydCkKKyAgICAgICAgKGxl dCAoKGxpbmUtZW5kIChwb2ludCkpKQorICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIg XHQiIG4tc3RhcnQpCisgICAgICAgICAgKGxldCAoKHRyYWlsaW5nLWVuZCAocG9pbnQpKSkKKyAg ICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIjIiBuLXN0YXJ0KQorICAgICAgICAgICAg KGxldCAoKHRyYWlsaW5nLXN0YXJ0IChwb2ludCkpKQorICAgICAgICAgICAgICAod2hlbiAoYW5k ICg8IHRyYWlsaW5nLXN0YXJ0IHRyYWlsaW5nLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAoPiB0cmFpbGluZy1zdGFydCBuLXN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICht ZW1xIChjaGFyLWJlZm9yZSB0cmFpbGluZy1zdGFydCkgJyg/XHMgP1x0KSkpCisgICAgICAgICAg ICAgICAgKGZvbnQtbG9jay0tcmVtb3ZlLWZhY2UtZnJvbS10ZXh0LXByb3BlcnR5CisgICAgICAg ICAgICAgICAgIHRyYWlsaW5nLXN0YXJ0IHRyYWlsaW5nLWVuZAorICAgICAgICAgICAgICAgICAn ZmFjZSAnbWFya2Rvd24tdHMtZGVsaW1pdGVyKQorICAgICAgICAgICAgICAgIChmb250LWxvY2st 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 ZXJlbmNlIGRlc3RpbmF0aW9uIE5PREUgYW5kIGhpZGUgd2hlbiBtYXJrdXAgaGlkZGVuLgorT1ZF UlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9u dGlmeS13aXRoLW92ZXJyaWRlJy4iCisgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQor ICAgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKQorICAg J21hcmtkb3duLXRzLWxpbmstZGVzdGluYXRpb24gb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAod2hl biBtYXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAodHJlZXNp dC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICAgICAgICAg ICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLS1sYXRleC1ibG9jay12YWxpZC1wIChub2RlKQorICAiUmV0dXJuIG5vbi1uaWwg aWYgbGF0ZXggYmxvY2sgTk9ERSBpcyB3aXRoaW4gYSBzaW5nbGUgaW5saW5lIHNjb3BlLgorVGhl IGdsb2JhbCBpbmxpbmUgcGFyc2VyIGNhbiBjcmVhdGUgZmFsc2UgYGxhdGV4X2Jsb2NrJyBtYXRj aGVzCitzcGFubmluZyBhY3Jvc3MgcGFyYWdyYXBoIGJvdW5kYXJpZXMuICBDaGVjayB0aGF0IHRo ZSBvcGVuaW5nIGFuZAorY2xvc2luZyBkZWxpbWl0ZXJzIHNoYXJlIHRoZSBzYW1lIG1hcmtkb3du IGBpbmxpbmUnIGFuY2VzdG9yLiIKKyAgKGxldCAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1z dGFydCBub2RlKSkKKyAgICAgICAgKG5vZGUtZW5kICgxLSAodHJlZXNpdC1ub2RlLWVuZCBub2Rl KSkpKQorICAgICh3aGVuLWxldCogKChtZC1zdGFydCAodHJlZXNpdC1ub2RlLWF0IG5vZGUtc3Rh cnQgJ21hcmtkb3duKSkKKyAgICAgICAgICAgICAgICAobWQtZW5kICh0cmVlc2l0LW5vZGUtYXQg bm9kZS1lbmQgJ21hcmtkb3duKSkKKyAgICAgICAgICAgICAgICAoaW5saW5lLXN0YXJ0ICh0cmVl c2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1kLXN0YXJ0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAobikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImlubGlu ZSIpKSkpCisgICAgICAgICAgICAgICAgKGlubGluZS1lbmQgKHRyZWVzaXQtcGFyZW50LXVudGls CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1kLWVuZAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChl cXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImlubGluZSIpKSkpKQorICAgICAgKGVxICh0cmVl c2l0LW5vZGUtc3RhcnQgaW5saW5lLXN0YXJ0KQorICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3Rh cnQgaW5saW5lLWVuZCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1sYXRleC1i bG9jayAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgbGF0ZXgg YmxvY2sgTk9ERSBhbmQgaGlkZSBpdHMgZGVsaW1pdGVycyB3aGVuIG1hcmt1cCBpcyBoaWRkZW4u CitTa2lwIGZvbnRpZmljYXRpb24gZm9yIGZhbHNlIG1hdGNoZXMgdGhhdCBzcGFuIGFjcm9zcyBw YXJhZ3JhcGggYm91bmRhcmllcy4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2Vk IHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAod2hlbiAo bWFya2Rvd24tdHMtLWxhdGV4LWJsb2NrLXZhbGlkLXAgbm9kZSkKKyAgICAodHJlZXNpdC1mb250 aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJlZXNp dC1ub2RlLWVuZCBub2RlKQorICAgICAnbWFya2Rvd24tdHMtbGF0ZXggb3ZlcnJpZGUgc3RhcnQg ZW5kKQorICAgICh3aGVuIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgICAoZG90aW1lcyAo aSAodHJlZXNpdC1ub2RlLWNoaWxkLWNvdW50IG5vZGUpKQorICAgICAgICAobGV0ICgoY2hpbGQg KHRyZWVzaXQtbm9kZS1jaGlsZCBub2RlIGkpKSkKKyAgICAgICAgICAod2hlbiAoZXF1YWwgKHRy ZWVzaXQtbm9kZS10eXBlIGNoaWxkKSAibGF0ZXhfc3Bhbl9kZWxpbWl0ZXIiKQorICAgICAgICAg ICAgKHB1dC10ZXh0LXByb3BlcnR5ICh0cmVlc2l0LW5vZGUtc3RhcnQgY2hpbGQpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgY2hpbGQpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rvd24tdHMtLW1hcmt1cCkp KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWJhY2tzbGFzaC1lc2NhcGUgKG5v ZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0IF8pCisgICJGb250aWZ5IGJhY2tzbGFzaCBlc2Nh cGUgTk9ERSwgaGlkaW5nIHRoZSBiYWNrc2xhc2ggd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorU2tp cCBoaWRpbmcgaW5zaWRlIGBsYXRleF9ibG9jaycgd2hlcmUgYmFja3NsYXNoZXMgYXJlIExhVGVY IHN5bnRheC4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8K K2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0ICgobm9kZS1zdGFydCAo dHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAoaW4tbGF0ZXggKGVxdWFsICh0cmVl c2l0LW5vZGUtdHlwZSAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAibGF0ZXhfYmxvY2siKSkpCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92 ZXJyaWRlCisgICAgIG5vZGUtc3RhcnQgKDErIG5vZGUtc3RhcnQpCisgICAgICdtYXJrZG93bi10 cy1kZWxpbWl0ZXIgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgICh3aGVuIChhbmQgbWFya2Rvd24t dHMtaGlkZS1tYXJrdXAgKG5vdCBpbi1sYXRleCkpCisgICAgICAocHV0LXRleHQtcHJvcGVydHkg bm9kZS1zdGFydCAoMSsgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaW52 aXNpYmxlICdtYXJrZG93bi10cy0tbWFya3VwKSkpKQorCisoZGVmdmFyIHNnbWwtY2hhci1uYW1l cykKKyhkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbnRpdHktZ2V0ICJvcmcvb3JnLWVudGl0aWVzLmVs IikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1kZWNvZGUtZW50aXR5ICh0ZXh0KQorICAiRGVjb2Rl IEhUTUwgZW50aXR5IFRFWFQgKGUuZy4sIFwiJmFtcDtcIikgdG8gaXRzIGNoYXJhY3RlciBzdHJp bmcuCitSZXR1cm4gdGhlIGRlY29kZWQgc3RyaW5nLCBvciBuaWwgaWYgdGhlIGVudGl0eSBpcyB1 bmtub3duLiIKKyAgKGNvbmQKKyAgIDs7IE51bWVyaWMgaGV4ICYjeDFGNEE5OworICAgKChzdHJp bmctbWF0Y2ggIlxcYCYjeFxcKFtbOnhkaWdpdDpdXStcXCk7XFwnIiB0ZXh0KQorICAgIChjaGFy LXRvLXN0cmluZyAoc3RyaW5nLXRvLW51bWJlciAobWF0Y2gtc3RyaW5nIDEgdGV4dCkgMTYpKSkK KyAgIDs7IE51bWVyaWMgZGVjaW1hbCAmIzEyMzsKKyAgICgoc3RyaW5nLW1hdGNoICJcXGAmI1xc KFtbOmRpZ2l0Ol1dK1xcKTtcXCciIHRleHQpCisgICAgKGNoYXItdG8tc3RyaW5nIChzdHJpbmct dG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMSB0ZXh0KSkpKQorICAgOzsgTmFtZWQgJmFtcDsgJmNv cHk7IHZpYSBvcmctZW50aXRpZXMsIGZhbGwgYmFjayB0byBzZ21sLWNoYXItbmFtZXMKKyAgICgo c3RyaW5nLW1hdGNoICJcXGAmXFwoW1s6YWxudW06XV0rXFwpO1xcJyIgdGV4dCkKKyAgICAobGV0 ICgobmFtZSAobWF0Y2gtc3RyaW5nIDEgdGV4dCkpKQorICAgICAgKHJlcXVpcmUgJ29yZy1lbnRp dGllcykKKyAgICAgIChpZi1sZXQqICgoZW50cnkgKG9yZy1lbnRpdHktZ2V0IG5hbWUpKQorICAg ICAgICAgICAgICAgICh1dGY4IChudGggNiBlbnRyeSkpKQorICAgICAgICAgIHV0ZjgKKyAgICAg ICAgKHJlcXVpcmUgJ3NnbWwtbW9kZSkKKyAgICAgICAgKHdoZW4tbGV0KiAoKGNvZGUgKHNlcS1w b3NpdGlvbiBzZ21sLWNoYXItbmFtZXMgbmFtZSAjJ2VxdWFsKSkpCisgICAgICAgICAgKGNoYXIt dG8tc3RyaW5nIGNvZGUpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1lbnRp dHkgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0IF8pCisgICJGb250aWZ5IGVudGl0eSBO T0RFIGFuZCBzaG93IGl0cyBkZWNvZGVkIHZhbHVlIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK09W RVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZv bnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0ICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2Rl LXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkp CisgICAgICAgIChmYWNlIChpZiAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpICJlbnRp dHlfcmVmZXJlbmNlIikKKyAgICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1lbnRpdHktcmVm ZXJlbmNlCisgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLW51bWVyaWMtY2hhcmFjdGVyLXJl ZmVyZW5jZSkpKQorICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZSBub2RlLXN0YXJ0 IG5vZGUtZW5kIGZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJp ZGUgc3RhcnQgZW5kKQorICAgIChpZiBtYXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAgICAgICAo d2hlbi1sZXQqICgoZGVjb2RlZCAobWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlIHQpKSkKKyAgICAg ICAgICAgICAgICAgICAgKChjaGFyLWRpc3BsYXlhYmxlLXAgKGFyZWYgZGVjb2RlZCAwKSkpKQor ICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0IG5vZGUtZW5kICdkaXNwbGF5 IGRlY29kZWQpKQorICAgICAgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgbm9kZS1zdGFydCBub2Rl LWVuZCAnKGRpc3BsYXkgbmlsKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1yZXNvbHZlLWRp c3BsYXktdmFsdWUgKHZhbCkKKyAgIlJlc29sdmUgVkFMLCBhIGNvbnMgKFBSRUZFUlJFRCAuIEZB TExCQUNLKSwgdG8gYSBkaXNwbGF5YWJsZSB2YWx1ZS4KK1JldHVybiBQUkVGRVJSRUQgaWYgaXRz IGZpcnN0IGNoYXJhY3RlciBwYXNzZXMgYGNoYXItZGlzcGxheWFibGUtcCcsCitvdGhlcndpc2Ug cmV0dXJuIEZBTExCQUNLLiAgUmV0dXJuIG5pbCBpZiBWQUwgaXMgbmlsLiIKKyAgKHdoZW4gdmFs CisgICAgKGxldCogKChwcmVmZXJyZWQgKGNhciB2YWwpKQorICAgICAgICAgICAoY2ggKGlmIChj aGFyYWN0ZXJwIHByZWZlcnJlZCkgcHJlZmVycmVkIChhcmVmIHByZWZlcnJlZCAwKSkpKQorICAg ICAgKGlmIChjaGFyLWRpc3BsYXlhYmxlLXAgY2gpIChjYXIgdmFsKSAoY2RyIHZhbCkpKSkpCisK KyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1jaGVja2JveCAobm9kZSBvdmVycmlkZSBzdGFy dCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgdGFzayBsaXN0IGNoZWNrYm94IE5PREUsIHNob3cg YSBVbmljb2RlIHN5bWJvbCB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQs IGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3Zl cnJpZGUnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkp CisgICAgICAgICAobm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAo Y2hlY2tlZCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpICJ0YXNrX2xpc3RfbWFya2Vy X2NoZWNrZWQiKSkKKyAgICAgICAgIChmYWNlIChpZiBjaGVja2VkICdtYXJrZG93bi10cy10YXNr LWNoZWNrZWQKKyAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLXRhc2stdW5jaGVja2VkKSkK KyAgICAgICAgICh2YWx1ZSAoaWYgY2hlY2tlZAorICAgICAgICAgICAgICAgICAgICBtYXJrZG93 bi10cy1jaGVja2VkLWNoZWNrYm94CisgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy11bmNo ZWNrZWQtY2hlY2tib3gpKQorICAgICAgICAgKHJlcGxhY2VtZW50CisgICAgICAgICAgKGNvbmQg KChlcSB2YWx1ZSAnaWNvbikKKyAgICAgICAgICAgICAgICAgKGljb24tc3RyaW5nIChpZiBjaGVj a2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWNoZWNr ZWQtY2hlY2tib3gtaWNvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFya2Rv d24tdHMtdW5jaGVja2VkLWNoZWNrYm94LWljb24pKSkKKyAgICAgICAgICAgICAgICAodCAobWFy a2Rvd24tdHMtLXJlc29sdmUtZGlzcGxheS12YWx1ZSB2YWx1ZSkpKSkKKyAgICAgICAgIDs7IElm IGBpY29uLXN0cmluZycgcmV0dXJuZWQgYW4gaW1hZ2UsIGl0cyBgZGlzcGxheScgcHJvcGVydHkK KyAgICAgICAgIDs7IG9uIGNoYXIgMCBob2xkcyB0aGUgYWN0dWFsIGltYWdlIHNwZWM7IG5lc3Rl ZCBgZGlzcGxheScKKyAgICAgICAgIDs7IHByb3BzIGFyZSBub3QgaG9ub3JlZCB3aGVuIGEgc3Ry aW5nIGlzIHRoZSB2YWx1ZSBvZiBhCisgICAgICAgICA7OyBgZGlzcGxheScgdGV4dC1wcm9wZXJ0 eSwgc28gYXBwbHkgdGhlIHNwZWMgZGlyZWN0bHkuCisgICAgICAgICAoZGlzcGxheS1zcGVjCisg ICAgICAgICAgKG9yIChhbmQgKGVxIHZhbHVlICdpY29uKSByZXBsYWNlbWVudAorICAgICAgICAg ICAgICAgICAgIChnZXQtdGV4dC1wcm9wZXJ0eSAwICdkaXNwbGF5IHJlcGxhY2VtZW50KSkKKyAg ICAgICAgICAgICAgcmVwbGFjZW1lbnQpKSkKKyAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3Zl cnJpZGUgbm9kZS1zdGFydCBub2RlLWVuZCBmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG92ZXJyaWRlIHN0YXJ0IGVuZCkKKyAgICAoaWYgKGFuZCBtYXJrZG93bi10cy1o aWRlLW1hcmt1cCByZXBsYWNlbWVudAorICAgICAgICAgICAgIChvciAoZXEgdmFsdWUgJ2ljb24p CisgICAgICAgICAgICAgICAgIChjaGFyLWRpc3BsYXlhYmxlLXAgKGFyZWYgcmVwbGFjZW1lbnQg MCkpKSkKKyAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3RhcnQgbm9kZS1lbmQgJ2Rp c3BsYXkgZGlzcGxheS1zcGVjKQorICAgICAgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgbm9kZS1z dGFydCBub2RlLWVuZCAnKGRpc3BsYXkgbmlsKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWhhcmQtbGluZS1icmVhayAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykK KyAgIkZvbnRpZnkgaGFyZCBsaW5lIGJyZWFrIE5PREU7IHNob3cgYSBVbmljb2RlIHN5bWJvbCB3 aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitBIGJhY2tzbGFzaCBicmVhayBnZXRzIGBtYXJrZG93bi10 cy1oYXJkLWxpbmUtYnJlYWstYmFja3NsYXNoJyAob3IgaXRzCitgLWhpZGRlbicgdmFyaWFudCB3 aGVuIG1hcmt1cCBpcyBoaWRkZW4pOyBhIHRyYWlsaW5nLXNwYWNlcyBicmVhayBnZXRzCitgbWFy a2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLXNwYWNlJyAob3IgYC1oaWRkZW4nKS4gIFdoZW4gaGlk ZGVuLCBhCitiYWNrc2xhc2ggYnJlYWsgaXMgcmVwbGFjZWQgYnkgYSBzaW5nbGUgYG1hcmtkb3du LXRzLWhhcmQtbGluZS1icmVhaycKK2dseXBoOyBhIHRyYWlsaW5nLXNwYWNlcyBicmVhayByZXBs YWNlcyBlYWNoIHNwYWNlIHdpdGggdGhlIGdseXBoLCBzbyB0aGUgcnVuCitvZiBwaWxjcm93cyBm aWxscyB0aGUgbGluZSB1cCB0byB0aGUgbmV3bGluZS4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVO RCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScu IgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAg ICAgIChub2RlLWVuZCAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQorICAgICAgICAgKHRleHQg ICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUgdCkpCisgICAgICAgICAoYmFja3NsYXNoICAo YW5kICg+IChsZW5ndGggdGV4dCkgMCkgKGVxIChhcmVmIHRleHQgMCkgP1xcKSkpCisgICAgICAg ICA7OyBEZXRlcm1pbmUgdGhlIGFjdHVhbCByYW5nZSB0byBmb250aWZ5IGFuZCByZXBsYWNlLiAg VGhlCisgICAgICAgICA7OyBoYXJkX2xpbmVfYnJlYWsgbm9kZSBtYXkgbm90IGNvdmVyIHRoZSBm dWxsIHJ1biBvZiB0cmFpbGluZworICAgICAgICAgOzsgc3BhY2VzLCBzbyB3YWxrIGJhY2sgZnJv bSBlbmQtb2YtbGluZSBvdXJzZWx2ZXMgZm9yIHRoZQorICAgICAgICAgOzsgc3BhY2VzIHZhcmlh bnQuCisgICAgICAgICAocmVnaW9uICAgICAoaWYgYmFja3NsYXNoCisgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbnMgbm9kZS1zdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChpZiAoYW5kICg+IG5vZGUtZW5kIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVxIChjaGFyLWJlZm9yZSBub2RlLWVuZCkgP1xuKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEtIG5vZGUtZW5kKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbm9kZS1lbmQpKQorICAgICAgICAgICAgICAgICAgICAgICAo c2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG5vZGUt c3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGVvbCAobGluZS1lbmQtcG9z aXRpb24pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIChzYXZlLWV4Y3Vyc2lv bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGVvbCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIiAobGluZS1iZWdpbm5pbmctcG9z aXRpb24pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW9sKSkpKSkKKyAgICAgICAgIChyZWdpb24t c3RhcnQgKGNhciByZWdpb24pKQorICAgICAgICAgKHJlZ2lvbi1lbmQgICAoY2RyIHJlZ2lvbikp CisgICAgICAgICAoZmFjZSAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICgoYW5k IGJhY2tzbGFzaCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkKKyAgICAgICAgICAgICAgICAgICAg ICAgJ21hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gtaGlkZGVuKQorICAgICAg ICAgICAgICAgICAgICAgIChiYWNrc2xhc2ggJ21hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1i YWNrc2xhc2gpCisgICAgICAgICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLWhpZGUtbWFya3Vw CisgICAgICAgICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3Bh Y2UtaGlkZGVuKQorICAgICAgICAgICAgICAgICAgICAgICh0ICdtYXJrZG93bi10cy1oYXJkLWxp bmUtYnJlYWstc3BhY2UpKSkpCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlIHJl Z2lvbi1zdGFydCByZWdpb24tZW5kIGZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIDs7IEFsd2F5cyBzdGFydCBieSBjbGVhcmlu ZyBhbnkgc3RhbGUgYGRpc3BsYXknIHByb3BlcnR5LiAgV2UgbmV2ZXIKKyAgICA7OyBzcGFuIHRo ZSB0cmFpbGluZyBuZXdsaW5lIHdpdGggYGRpc3BsYXknIChpdCBjb25mdXNlcworICAgIDs7IHJl ZGlzcGxheSdzIGN1cnNvciBwbGFjZW1lbnQpLCBhbmQgd2Ugb25seSBwYWludCBhIHNpbmdsZQor ICAgIDs7IGNvbWJpbmVkIHN0cmluZyBvbnRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHJ1 biwgbGVhdmluZworICAgIDs7IHRoZSByZXN0IG9mIHRoZSBtYXJrdXAgYWxvbmUuCisgICAgKHJl bW92ZS10ZXh0LXByb3BlcnRpZXMgcmVnaW9uLXN0YXJ0IHJlZ2lvbi1lbmQgJyhkaXNwbGF5IG5p bCkpCisgICAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgIChsZXQqICgoc3Bl YyAoaWYgYmFja3NsYXNoCisgICAgICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0tcmVz b2x2ZS1kaXNwbGF5LXZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1o YXJkLWxpbmUtYnJlYWstYmFja3NsYXNoKQorICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24t dHMtaGFyZC1saW5lLWJyZWFrLXNwYWNlKSkKKyAgICAgICAgICAgICAoc3RyIChjb25kCisgICAg ICAgICAgICAgICAgICAgKChudWxsIHNwZWMpIG5pbCkKKyAgICAgICAgICAgICAgICAgICAoKGNo YXJhY3RlcnAgc3BlYykgKGNoYXItdG8tc3RyaW5nIHNwZWMpKQorICAgICAgICAgICAgICAgICAg ICgoc3RyaW5ncCBzcGVjKSBzcGVjKQorICAgICAgICAgICAgICAgICAgICgoZnVuY3Rpb25wIHNw ZWMpCisgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHNwZWMgKC0gcmVnaW9uLWVuZCByZWdp b24tc3RhcnQpKSkpKSkKKyAgICAgICAgKHdoZW4gKGFuZCAoc3RyaW5ncCBzdHIpCisgICAgICAg ICAgICAgICAgICAgKD4gKGxlbmd0aCBzdHIpIDApCisgICAgICAgICAgICAgICAgICAgKGNoYXIt ZGlzcGxheWFibGUtcCAoYXJlZiBzdHIgMCkpKQorICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0 eSByZWdpb24tc3RhcnQgKDErIHJlZ2lvbi1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2Rpc3BsYXkgc3RyKQorICAgICAgICAgIDs7IEZvciB0aGUgdHJhaWxpbmctc3BhY2Vz IHZhcmlhbnQsIGhpZGUgdGhlIHJlbWFpbmluZworICAgICAgICAgIDs7IHNwYWNlcyBpbiB0aGUg cnVuIHNvIHRoZSBsaW5lIGRvZXNuJ3QgZW5kIHdpdGggbGVmdG92ZXIKKyAgICAgICAgICA7OyB3 aGl0ZXNwYWNlIGFmdGVyIHRoZSBzdWJzdGl0dXRlZCBnbHlwaC4gIEVhY2ggcG9zaXRpb24KKyAg ICAgICAgICA7OyBnZXRzIGl0cyBvd24gZW1wdHktc3RyaW5nIGBkaXNwbGF5JyBzbyBjdXJzb3Ig cGxhY2VtZW50CisgICAgICAgICAgOzsgc3RheXMgdW5hbWJpZ3VvdXMuCisgICAgICAgICAgKHVu bGVzcyBiYWNrc2xhc2gKKyAgICAgICAgICAgIChsZXQgKChpICgxKyByZWdpb24tc3RhcnQpKSkK KyAgICAgICAgICAgICAgKHdoaWxlICg8IGkgcmVnaW9uLWVuZCkKKyAgICAgICAgICAgICAgICAo cHV0LXRleHQtcHJvcGVydHkgaSAoMSsgaSkgJ2Rpc3BsYXkgIiIpCisgICAgICAgICAgICAgICAg KHNldHEgaSAoMSsgaSkpKSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LXRo ZW1hdGljLWJyZWFrIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlm eSB0aGVtYXRpYyBicmVhayBOT0RFIGFuZCBzaG93IGEgbGluZSB3aGVuIG1hcmt1cCBpcyBoaWRk ZW4uCitPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJl ZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKGxldCAoKG5vZGUtc3RhcnQgKHRyZWVz aXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5k IG5vZGUpKSkKKyAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUgbm9kZS1zdGFydCBu b2RlLWVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMt dGhlbWF0aWMtYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJp ZGUgc3RhcnQgZW5kKQorICAgIChsZXQgKChjaGFyIChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNw bGF5LXZhbHVlCisgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLXRoZW1hdGljLWJyZWFrLWNo YXJhY3RlcikpKQorICAgICAgKGlmIChhbmQgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAgY2hhciAo Y2hhci1kaXNwbGF5YWJsZS1wIGNoYXIpKQorICAgICAgICAgIChsZXQqICgoY29sIChzYXZlLWV4 Y3Vyc2lvbiAoZ290by1jaGFyIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpKQorICAgICAgICAgICAgICAgICA7OyBTcGFu IGlmIHRoZSBmYWNlIGhhcyBub24tbmlsIDpleHRlbmQuCisgICAgICAgICAgICAgICAgIChzcGFu LWxlbmd0aCAoaWYgKGZhY2UtYXR0cmlidXRlICdtYXJrZG93bi10cy10aGVtYXRpYy1icmVhawor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZXh0ZW5k IG5pbCAnZGVmYXVsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLSAod2lu ZG93LWJvZHktd2lkdGgpIGNvbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIp KSkKKyAgICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0IG5vZGUtZW5kCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoY29uY2F0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICht YWtlLXN0cmluZyBzcGFuLWxlbmd0aCBjaGFyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiXG4iKSkpCisgICAgICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIG5vZGUtc3RhcnQg bm9kZS1lbmQgJyhkaXNwbGF5IG5pbCkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRp ZnktY29kZS1ibG9jayAobm9kZSBfb3ZlcnJpZGUgX3N0YXJ0IF9lbmQgJnJlc3QgXykKKyAgIkZv bnRpZnkgY29kZSBibG9jayBjb250ZW50IE5PREUgd2l0aCBhIGJhY2tncm91bmQgb3ZlcmxheS4K K1VzZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tYXJrdXAtaGlkZGVuJyB3aGVuIG1hcmt1cCBp cyBoaWRkZW4sCitgbWFya2Rvd24tdHMtY29kZS1ibG9jaycgb3RoZXJ3aXNlLiAgVXNlIGFuIG92 ZXJsYXkgc28gdGhlCitiYWNrZ3JvdW5kIGxheWVycyBpdHNlbGYgYmVoaW5kIGxhbmd1YWdlLXNw ZWNpZmljIGZvbnRpZmljYXRpb24uCitUaGUgb3ZlcmxheSBhbHNvIHN0b3JlcyB0aGUgY29kZSBi bG9jayBsYW5ndWFnZSBhbmQgbW9kZSBhcworcHJvcGVydGllcyBgbWFya2Rvd24tdHMtY29kZS1i bG9jay1sYW5ndWFnZScgYW5kCitgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlJywgYWNjZXNz aWJsZSB2aWEKK2BtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlLWF0Jy4iCisgIChsZXQq ICgobm9kZS1zdGFydCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgKGdv dG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAgICAgICAg ICAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSkKKyAgICAgICAgIChub2RlLWVuZCAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1l bmQgbm9kZSkpCisgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0 IikKKyAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQorICAgICAgICAgKGZhY2UgKGlmIG1h cmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWNv ZGUtYmxvY2stbWFya3VwLWhpZGRlbgorICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtY29k ZS1ibG9jaykpCisgICAgICAgICAobGFuZyAobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUg bm9kZSkpCisgICAgICAgICAobW9kZSAod2hlbiBsYW5nCisgICAgICAgICAgICAgICAgIChtYXJr ZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2RlIGxhbmcpKSkKKyAgICAgICAgIChleGlz dGluZyAoc2VxLWZpbmQgKGxhbWJkYSAob3YpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG92ZXJsYXktZ2V0IG92ICdtYXJrZG93bi10cy1jb2RlLWJsb2NrKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKG92ZXJsYXlzLWF0IG5vZGUtc3RhcnQpKSkpCisgICAgKGlmIGV4 aXN0aW5nCisgICAgICAgIChwcm9nbgorICAgICAgICAgIChtb3ZlLW92ZXJsYXkgZXhpc3Rpbmcg bm9kZS1zdGFydCBub2RlLWVuZCkKKyAgICAgICAgICAob3ZlcmxheS1wdXQgZXhpc3RpbmcgJ2Zh Y2UgZmFjZSkKKyAgICAgICAgICAob3ZlcmxheS1wdXQgZXhpc3RpbmcgJ21hcmtkb3duLXRzLWNv ZGUtYmxvY2stbGFuZ3VhZ2UgbGFuZykKKyAgICAgICAgICAob3ZlcmxheS1wdXQgZXhpc3Rpbmcg J21hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZSBtb2RlKSkKKyAgICAgIChsZXQgKChvdiAobWFr ZS1vdmVybGF5IG5vZGUtc3RhcnQgbm9kZS1lbmQgbmlsIHQgbmlsKSkpCisgICAgICAgIDs7IE1h cmtlcnMgbmVlZCB0byBiZSBzZXQgb25seSBvbmNlLgorICAgICAgICAob3ZlcmxheS1wdXQgb3Yg J21hcmtkb3duLXRzLWNvZGUtYmVnLW1hcmtlciAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5vZGUtc3RhcnQpKQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRz LWNvZGUtZW5kLW1hcmtlciAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt ZW5kKSkKKyAgICAgICAgKG92ZXJsYXktcHV0IG92ICdtYXJrZG93bi10cy1jb2RlLWJsb2NrIHQp CisgICAgICAgIChvdmVybGF5LXB1dCBvdiAnZmFjZSBmYWNlKQorICAgICAgICAob3ZlcmxheS1w dXQgb3YgJ3ByaW9yaXR5ICcobmlsIC4gMTApKQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21h cmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2UgbGFuZykKKyAgICAgICAgKG92ZXJsYXktcHV0 IG92ICdtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUgbW9kZSkKKyAgICAgICAgKG92ZXJsYXkt cHV0IG92ICdldmFwb3JhdGUgdCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1hdC1jb2RlLWJs b2NrLXAgKCZvcHRpb25hbCBwb3MpCisgICJSZXR1cm4gbm9uIG5pbCBpZiBwb2ludCBpcyBpbiBh IGNvZGUgYmxvY2suCitJZiBQT1MgaXMgbmlsLCB1c2UgcG9pbnQuIgorICAoZ2V0LWNoYXItcHJv cGVydHkgKG9yIHBvcyAocG9pbnQpKSAnbWFya2Rvd24tdHMtY29kZS1ibG9jaykpCisKKyhkZWZ1 biBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlLWF0ICgmb3B0aW9uYWwgcG9zKQorICAi UmV0dXJuIHRoZSBsYW5ndWFnZSBzeW1ib2wgb2YgdGhlIGNvZGUgYmxvY2sgYXQgUE9TLgorSWYg UE9TIGlzIG5pbCwgdXNlIHBvaW50LiAgUmV0dXJucyBuaWwgaWYgUE9TIGlzIG5vdCBpbnNpZGUg YSBmZW5jZWQKK2NvZGUgYmxvY2suICBUaGlzIHdvcmtzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBh IGd1ZXN0IHRyZWUtc2l0dGVyIHBhcnNlcgoraXMgYWN0aXZlLCBzaW5jZSB0aGUgbGFuZ3VhZ2Ug aXMgc3RvcmVkIG9uIHRoZSBjb2RlIGJsb2NrIG92ZXJsYXkgYnkgdGhlCitob3N0IHBhcnNlcidz IGZvbnRpZmljYXRpb24uIgorICAoZ2V0LWNoYXItcHJvcGVydHkgKG9yIHBvcyAocG9pbnQpKSAn bWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1j b2RlLWJsb2NrLW1vZGUtYXQgKCZvcHRpb25hbCBwb3MpCisgICJSZXR1cm4gdGhlIG1ham9yIG1v ZGUgZm9yIHRoZSBjb2RlIGJsb2NrIGF0IFBPUy4KK0lmIFBPUyBpcyBuaWwsIHVzZSBwb2ludC4g IFJldHVybnMgbmlsIGlmIFBPUyBpcyBub3QgaW5zaWRlIGEgZmVuY2VkCitjb2RlIGJsb2NrIG9y IGlmIHRoZSBsYW5ndWFnZSBoYXMgbm8gcmVjb2duaXplZCBtb2RlLiIKKyAgKHdoZW4gKG1hcmtk b3duLXRzLWF0LWNvZGUtYmxvY2stcCBwb3MpCisgICAgKG9yIChnZXQtY2hhci1wcm9wZXJ0eSAo b3IgcG9zIChwb2ludCkpICdtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUpCisgICAgICAgIG1h cmtkb3duLXRzLWRlZmF1bHQtY29kZS1ibG9jay1tb2RlKSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy0taG9zdC1yYW5nZXMtbm90aWZpZXIgKHJhbmdlcyBfcGFyc2VyKQorICAiUHJ1bmUgc3RhbGUg Y29kZSBibG9jayBvdmVybGF5cyBhZnRlciB0aGUgaG9zdCBwYXJzZXIgcmVwYXJzZXMuCitSQU5H RVMgaXMgYSBsaXN0IG9mIChTVEFSVCAuIEVORCkgY29ucyBjZWxscyBtYXJraW5nIHJlZ2lvbnMg d2hlcmUKK3RoZSBtYXJrZG93biBwYXJzZSB0cmVlIGNoYW5nZWQuICBGb3IgZWFjaCBgbWFya2Rv d24tdHMtY29kZS1ibG9jaycKK292ZXJsYXkgaW50ZXJzZWN0aW5nIGEgY2hhbmdlZCByYW5nZSwg dmVyaWZ5IHRoYXQgYSBjb250YWluaW5nCitgZmVuY2VkX2NvZGVfYmxvY2snIG5vZGUgc3RpbGwg ZXhpc3RzIGluIHRoZSBob3N0IHRyZWUuICBJZiBub3QsCit0aGUgZmVuY2VzIHdlcmUgZGVsZXRl ZCwgc28gZGVsZXRlIHRoZSBvdmVybGF5IHRvIGF2b2lkIHJ1bm5pbmcKK2NvbW1hbmRzIGluIGEg c3RhbGUgYmxvY2sgY29udGV4dC4iCisgIChkb2xpc3QgKHJhbmdlIHJhbmdlcykKKyAgICAobGV0 ICgoYmVnIChjYXIgcmFuZ2UpKQorICAgICAgICAgIChlbmQgKGNkciByYW5nZSkpKQorICAgICAg KGRvbGlzdCAob3YgKG92ZXJsYXlzLWluIGJlZyBlbmQpKQorICAgICAgICAod2hlbiAob3Zlcmxh eS1nZXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2spCisgICAgICAgICAgKGxldCogKChvdi1z dGFydCAob3ZlcmxheS1zdGFydCBvdikpCisgICAgICAgICAgICAgICAgIChub2RlIChhbmQgb3Yt c3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWF0IG92LXN0 YXJ0ICdtYXJrZG93bikpKSkKKyAgICAgICAgICAgICh1bmxlc3MgKGFuZCBub2RlCisgICAgICAg ICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIG5vZGUgIlxcYGZlbmNlZF9jb2RlX2Jsb2NrXFwnIiB0KSkKKyAgICAgICAgICAg ICAgKGRlbGV0ZS1vdmVybGF5IG92KSkpKSkpKSkKKworOzs7IEltYWdlIGhhbmRsaW5nOgorCiso ZGVmdW4gbWFya2Rvd24tdHMtLWltYWdlLWFsb25lLW9uLWxpbmUtcCAobm9kZSkKKyAgIlJldHVy biBub24tbmlsIGlmIGltYWdlIE5PREUgaXMgdGhlIG9ubHkgY29udGVudCBvbiBpdHMgbGluZS4K K1doaXRlc3BhY2UsIGJsb2NrIHF1b3RlIG1hcmtlcnMgKGA+JyksIGFuZCBsaXN0IG1hcmtlcnMK K1woYC0nLCBgKicsIGArJywgYDEuJykgYmVmb3JlIHRoZSBpbWFnZSBhcmUgaWdub3JlZC4iCisg IChsZXQgKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChu b2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkpCisgICAgKHNhdmUtZXhjdXJzaW9uCisg ICAgICAoZ290by1jaGFyIG5vZGUtc3RhcnQpCisgICAgICAobGV0ICgoYm9sIChsaW5lLWJlZ2lu bmluZy1wb3NpdGlvbikpCisgICAgICAgICAgICAoZW9sIChsaW5lLWVuZC1wb3NpdGlvbikpKQor ICAgICAgICA7OyBCZWZvcmUgdGhlIGltYWdlOiBvbmx5IGJsb2NrIHF1b3RlIG1hcmtlcnMsIHdo aXRlc3BhY2UsCisgICAgICAgIDs7IGFuZCBhbiBvcHRpb25hbCBsaXN0IG1hcmtlciBhcmUgYWxs b3dlZC4KKyAgICAgICAgKGFuZCAoc3RyaW5nLW1hdGNoLXAKKyAgICAgICAgICAgICAgKHJ4IGJv cworICAgICAgICAgICAgICAgICAgKHplcm8tb3ItbW9yZSAoYW55ICI+IFx0IikpCisgICAgICAg ICAgICAgICAgICAob3B0aW9uYWwgKG9yIChzZXEgKGFueSAiLSorIikgIiAiKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2VxIChvbmUtb3ItbW9yZSBkaWdpdCkgKGFueSAiLiki ICkgIiAiKSkpCisgICAgICAgICAgICAgICAgICBlb3MpCisgICAgICAgICAgICAgIChidWZmZXIt c3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgYm9sIG5vZGUtc3RhcnQpKQorICAgICAgICAgICAgIDs7 IEFmdGVyIHRoZSBpbWFnZTogb25seSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFsbG93ZWQuCisgICAg ICAgICAgICAgKHN0cmluZy1tYXRjaC1wCisgICAgICAgICAgICAgIChyeCBib3MgKHplcm8tb3It bW9yZSAoYW55ICIgXHQiKSkgZW9zKQorICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1u by1wcm9wZXJ0aWVzIG5vZGUtZW5kIGVvbCkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWltYWdlIChub2RlIF9vdmVycmlkZSBfc3RhcnQgX2VuZCAmcmVzdCBfKQorICAiU2hv dyBhbiBpbmxpbmUgaW1hZ2UgYXQgTk9ERS4KK1doZW4gYG1hcmtkb3duLXRzLWlubGluZS1pbWFn ZXMnIGlzIG5vbi1uaWwsIGRpc3BsYXkgdGhlIGltYWdlLgorSWYgdGhlIGltYWdlIGxpbmsgaXMg dGhlIG9ubHkgY29udGVudCBvbiBpdHMgbGluZSwgZGlzcGxheSB0aGUKK2ltYWdlIGJlbG93IHRo ZSBsaW5rLiAgSWYgdGhlIGltYWdlIGlzIGlubGluZSB3aXRoaW4gYSBwYXJhZ3JhcGgsCitkaXNw bGF5IGl0IHJpZ2h0IGFmdGVyIHRoZSBsaW5rIHRleHQuCitSZW1vdGUgaW1hZ2VzIGFyZSBjb250 cm9sbGVkIGJ5CitgbWFya2Rvd24tdHMtZGlzcGxheS1yZW1vdGUtaW5saW5lLWltYWdlcycuIgor ICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAg IChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgIChlb2wgKHNhdmUt ZXhjdXJzaW9uIChnb3RvLWNoYXIgbm9kZS1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobGluZS1lbmQtcG9zaXRpb24pKSkKKyAgICAgICAgIChzZWFyY2gtZW5kIChtaW4gKDEr IGVvbCkgKHBvaW50LW1heCkpKSkKKyAgICA7OyBBbHdheXMgY2xlYXIgc3RhbGUgb3ZlcmxheXMg Zm9yIHRoaXMgbm9kZSdzIHJhbmdlLgorICAgIChkb2xpc3QgKG92IChvdmVybGF5cy1pbiBub2Rl LXN0YXJ0IHNlYXJjaC1lbmQpKQorICAgICAgKHdoZW4gKGFuZCAob3ZlcmxheS1nZXQgb3YgJ21h cmtkb3duLXRzLWltYWdlKQorICAgICAgICAgICAgICAgICAoPj0gKG92ZXJsYXktc3RhcnQgb3Yp IG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICg8PSAob3ZlcmxheS1lbmQgb3YpIHNlYXJj aC1lbmQpKQorICAgICAgICAoZGVsZXRlLW92ZXJsYXkgb3YpKSkKKyAgICAod2hlbiAoYW5kIG1h cmtkb3duLXRzLWlubGluZS1pbWFnZXMKKyAgICAgICAgICAgICAgIDs7IERvbid0IGNyZWF0ZSBp bWFnZSBvdmVybGF5cyBmb3Igbm9kZXMgaW5zaWRlCisgICAgICAgICAgICAgICA7OyBmb2xkZWQg KG91dGxpbmUtaW52aXNpYmxlKSBoZWFkaW5ncywgc2luY2UgdGhlCisgICAgICAgICAgICAgICA7 OyBpbWFnZXMgd291bGRuJ3QgYmUgdmlzaWJsZSBhbmQgY291bGQgaW50ZXJmZXJlCisgICAgICAg ICAgICAgICA7OyB3aXRoIHRoZSBmb2xkZWQgZGlzcGxheS4KKyAgICAgICAgICAgICAgIChub3Qg KG1hcmtkb3duLXRzLS1vdXRsaW5lLWludmlzaWJsZS1wIG5vZGUtc3RhcnQpKSkKKyAgICAgIChs ZXQqICgoZGVzdCAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBub2RlICJcXGBsaW5rX2Rlc3RpbmF0 aW9uXFwnIikpCisgICAgICAgICAgICAgKHVybCAoYW5kIGRlc3QgKHRyZWVzaXQtbm9kZS10ZXh0 IGRlc3QgdCkpKQorICAgICAgICAgICAgIChyZW1vdGVwIChhbmQgdXJsIChzdHJpbmctbWF0Y2gt cCAiXFxgaHR0cHM/Oi8vIiB1cmwpKSkKKyAgICAgICAgICAgICAoZGlzcGxheWFibGUKKyAgICAg ICAgICAgICAgKHdoZW4gdXJsCisgICAgICAgICAgICAgICAgKGlmIHJlbW90ZXAKKyAgICAgICAg ICAgICAgICAgICAgKHdoZW4gKGVxIG1hcmtkb3duLXRzLWRpc3BsYXktcmVtb3RlLWlubGluZS1p bWFnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3dubG9hZCkKKyAgICAgICAg ICAgICAgICAgICAgICAoaWdub3JlLWVycm9ycworICAgICAgICAgICAgICAgICAgICAgICAgKHJl cXVpcmUgJ3VybC1oYW5kbGVycykKKyAgICAgICAgICAgICAgICAgICAgICAgICh3aXRoLXdvcmst YnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtYnVmZmVyLW11bHRpYnl0ZSBu aWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmwtaW5zZXJ0LWZpbGUtY29udGVudHMg dXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN0cmluZykpKSkKKyAgICAg ICAgICAgICAgICAgIChsZXQgKChmaWxlIChleHBhbmQtZmlsZS1uYW1lIHVybCkpKQorICAgICAg ICAgICAgICAgICAgICAoYW5kIChub3QgKGZpbGUtcmVtb3RlLXAgZmlsZSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgZmlsZSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoaW1hZ2Utc3VwcG9ydGVkLWZpbGUtcCBmaWxlKQorICAgICAgICAgICAgICAgICAgICAg ICAgIGZpbGUpKSkpKQorICAgICAgICAgICAgIChtYXgtdyAoYW5kIGRpc3BsYXlhYmxlCisgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIChlcSBtYXJrZG93bi10cy1pbWFnZS1tYXgtd2lkdGgg J3dpbmRvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1ib2R5LXdpZHRo IG5pbCB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtaW1hZ2UtbWF4 LXdpZHRoKSkpCisgICAgICAgICAgICAgKGltZyAoYW5kIG1heC13CisgICAgICAgICAgICAgICAg ICAgICAgIChjcmVhdGUtaW1hZ2UgZGlzcGxheWFibGUgbmlsIHJlbW90ZXAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4LXdpZHRoIG1heC13CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOnNjYWxlIDEpKSkpCisgICAgICAgICh3aGVuIGltZwor ICAgICAgICAgIChsZXQqICgoYWxvbmUgKG1hcmtkb3duLXRzLS1pbWFnZS1hbG9uZS1vbi1saW5l LXAgbm9kZSkpCisgICAgICAgICAgICAgICAgIChzdHIgKGlmIGFsb25lCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25jYXQgIlxuIiAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkgaW1nKSkK KyAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplICIgIiAnZGlzcGxheSBpbWcpKSkK KyAgICAgICAgICAgICAgICAgKG92IChtYWtlLW92ZXJsYXkgKDEtIG5vZGUtZW5kKSBub2RlLWVu ZCBuaWwgdCBuaWwpKSkKKyAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdiAnbWFya2Rvd24tdHMt aW1hZ2UgdCkKKyAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdiAnYWZ0ZXItc3RyaW5nIHN0cikK KyAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdiAnZXZhcG9yYXRlIHQpKSkpKSkpCisKKzs7OyBV UkwvVVJJIGhhbmRsaW5nOgorCisoZGVmdmFyIG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHAg Z290by1hZGRyZXNzLXVybC1yZWdleHAKKyAgIlJlZ2V4cCBtYXRjaGluZyBiYXJlIFVSTHMgbm90 IHdyYXBwZWQgaW4gYW5nbGUgYnJhY2tldHMgb3IgbGluayBzeW50YXguIikKKworKGRlZnZhciBt YXJrZG93bi10cy0tYmFyZS1lbWFpbC11cmktcmVnZXhwIGdvdG8tYWRkcmVzcy1tYWlsLXJlZ2V4 cAorICAiUmVnZXhwIG1hdGNoaW5nIGJhcmUgZW1haWwgYWRkcmVzc2VzIG5vdCB3cmFwcGVkIGlu IGFuZ2xlIGJyYWNrZXRzLiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1iYXJlLXVy aSAoc3RhcnQgZW5kKQorICAiRm9udGlmeSBiYXJlIFVSTCBvciBlbWFpbCBVUkkgYmV0d2VlbiBT VEFSVCBhbmQgRU5ELgorU2tpcCBtYXRjaGVzIGFscmVhZHkgaW5zaWRlIHRyZWUtc2l0dGVyIGxp bmsgb3IgYXV0b2xpbmsgbm9kZXMuIgorICAoZG9saXN0IChyZSAobGlzdCBtYXJrZG93bi10cy0t YmFyZS11cmwtcmVnZXhwCisgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1iYXJlLWVt YWlsLXVyaS1yZWdleHApKQorICAgIChnb3RvLWNoYXIgc3RhcnQpCisgICAgKHdoaWxlIChyZS1z ZWFyY2gtZm9yd2FyZCByZSBlbmQgdCkKKyAgICAgIChsZXQqICgodXJpLXN0YXJ0IChtYXRjaC1i ZWdpbm5pbmcgMCkpCisgICAgICAgICAgICAgKHVyaS1lbmQgKG1hdGNoLWVuZCAwKSkKKyAgICAg ICAgICAgICAodXJpIChtYXRjaC1zdHJpbmcgMCkpCisgICAgICAgICAgICAgKG5vZGUgKHRyZWVz aXQtbm9kZS1hdCB1cmktc3RhcnQgJ21hcmtkb3duLWlubGluZSkpCisgICAgICAgICAgICAgKHBh cmVudCAoYW5kIG5vZGUgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpKQorICAgICAgICAgICAg IChwYXJlbnQtdHlwZSAoYW5kIHBhcmVudCAodHJlZXNpdC1ub2RlLXR5cGUgcGFyZW50KSkpKQor ICAgICAgICAodW5sZXNzIChvciAobWVtYmVyIHBhcmVudC10eXBlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJygiaW5saW5lX2xpbmsiICJmdWxsX3JlZmVyZW5jZV9saW5rIgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImNvbGxhcHNlZF9yZWZlcmVuY2VfbGluayIgInNob3J0 Y3V0X2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1hZ2UiICJ1cmlfYXV0 b2xpbmsiICJlbWFpbF9hdXRvbGluayIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJs aW5rX2Rlc3RpbmF0aW9uIikpCisgICAgICAgICAgICAgICAgICAgIChtZW1iZXIgKGFuZCBub2Rl ICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn KCJ1cmlfYXV0b2xpbmsiICJlbWFpbF9hdXRvbGluayIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJsaW5rX2Rlc3RpbmF0aW9uIiAiY29kZV9zcGFuIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImNvZGVfZmVuY2VfY29udGVudCIgImluZm9fc3RyaW5nIikpCisgICAgICAg ICAgICAgICAgICAgIChnZXQtdGV4dC1wcm9wZXJ0eSB1cmktc3RhcnQgJ2J1dHRvbikpCisgICAg ICAgICAgKG1hcmtkb3duLXRzLS1tYWtlLWxpbmstYnV0dG9uCisgICAgICAgICAgIHVyaS1zdGFy dCB1cmktZW5kCisgICAgICAgICAgIChpZiAoZXEgdXJpLXN0YXJ0IDApCisgICAgICAgICAgICAg ICB1cmkKKyAgICAgICAgICAgICAoY29uY2F0ICJtYWlsdG86IiB1cmkpKSkpKSkpKQorCis7Ozsg dHJlZXNpdCBzZXR0aW5nczoKKwogKGRlZnZhciBtYXJrZG93bi10cy0tdHJlZXNpdC1zZXR0aW5n cwogICAodHJlZXNpdC1mb250LWxvY2stcnVsZXMKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24KKyAg IDpmZWF0dXJlICdlcnJvcgorICAgOm92ZXJyaWRlIHQKKyAgICcoKEVSUk9SKSBAZm9udC1sb2Nr LXdhcm5pbmctZmFjZSkKKwogICAgOmxhbmd1YWdlICdtYXJrZG93bi1pbmxpbmUKICAgIDpvdmVy cmlkZSB0CiAgICA6ZmVhdHVyZSAnZGVsaW1pdGVyCi0gICAnKChpbmxpbmVfbGluayBbICJbIiAi XSIgIigiICIpIiBdIEBzaGFkb3cpCi0gICAgIChpbWFnZSBbICIhIiAiWyIgIl0iICIoIiAiKSIg XSBAc2hhZG93KSkKKyAgICcoKGlubGluZV9saW5rIFsgIlsiICJdIiAiKCIgIikiIF0gQG1hcmtk b3duLXRzLS1mb250aWZ5LWRlbGltaXRlcikKKyAgICAgKGZ1bGxfcmVmZXJlbmNlX2xpbmsgWyAi WyIgIl0iIF0gQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcikKKyAgICAgKGNvbGxhcHNl ZF9yZWZlcmVuY2VfbGluayBbICJbIiAiXSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1p dGVyKQorICAgICAoc2hvcnRjdXRfbGluayBbICJbIiAiXSIgXSBAbWFya2Rvd24tdHMtLWZvbnRp ZnktZGVsaW1pdGVyKQorICAgICAoaW1hZ2UgWyAiISIgIlsiICJdIiAiKCIgIikiIF0gQG1hcmtk b3duLXRzLS1mb250aWZ5LWRlbGltaXRlcikpCiAKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24KICAg IDpmZWF0dXJlICdoZWFkaW5nCi0gICAnKChhdHhfaGVhZGluZyAoYXR4X2gxX21hcmtlcikpIEBt YXJrZG93bi10cy1oZWFkaW5nLTEKLSAgICAgKGF0eF9oZWFkaW5nIChhdHhfaDJfbWFya2VyKSkg QG1hcmtkb3duLXRzLWhlYWRpbmctMgotICAgICAoYXR4X2hlYWRpbmcgKGF0eF9oM19tYXJrZXIp KSBAbWFya2Rvd24tdHMtaGVhZGluZy0zCi0gICAgIChhdHhfaGVhZGluZyAoYXR4X2g0X21hcmtl cikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTQKLSAgICAgKGF0eF9oZWFkaW5nIChhdHhfaDVfbWFy a2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctNQotICAgICAoYXR4X2hlYWRpbmcgKGF0eF9oNl9t YXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy02Ci0gICAgIChzZXRleHRfaGVhZGluZykgQG1h cmtkb3duLXRzLXNldGV4dC1oZWFkaW5nKQorICAgJygoKGF0eF9oZWFkaW5nKSAgICBAbWFya2Rv d24tdHMtLWZvbnRpZnktaGVhZGluZykKKyAgICAgKChzZXRleHRfaGVhZGluZykgQG1hcmtkb3du LXRzLS1mb250aWZ5LWhlYWRpbmcpKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCiAgICA6ZmVh dHVyZSAnaGVhZGluZwpAQCAtMTk0LDE2ICsxNjM0LDQwIEBAIG1hcmtkb3duLXRzLS10cmVlc2l0 LXNldHRpbmdzCiAgICAgIChhdHhfaDNfbWFya2VyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVs aW1pdGVyCiAgICAgIChhdHhfaDRfbWFya2VyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1p dGVyCiAgICAgIChhdHhfaDVfbWFya2VyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVy Ci0gICAgIChhdHhfaDZfbWFya2VyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQor ICAgICAoYXR4X2g2X21hcmtlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcgorICAg ICAoc2V0ZXh0X2gxX3VuZGVybGluZSkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcgor ICAgICAoc2V0ZXh0X2gyX3VuZGVybGluZSkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRl cikKIAogICAgOmxhbmd1YWdlICdtYXJrZG93bgogICAgOmZlYXR1cmUgJ3BhcmFncmFwaAotICAg JygoKHRoZW1hdGljX2JyZWFrKSBAbWFya2Rvd24tdHMtZGVsaW1pdGVyKQotICAgICAoKGluZGVu dGVkX2NvZGVfYmxvY2spIEBmb250LWxvY2stc3RyaW5nLWZhY2UpCisgICAnKCgodGhlbWF0aWNf YnJlYWspIEBtYXJrZG93bi10cy0tZm9udGlmeS10aGVtYXRpYy1icmVhaykKKyAgICAgKChodG1s X2Jsb2NrKSBAbWFya2Rvd24tdHMtaHRtbC1ibG9jaykKKyAgICAgKChpbmRlbnRlZF9jb2RlX2Js b2NrKSBAbWFya2Rvd24tdHMtaW5kZW50ZWQtY29kZS1ibG9jaykKICAgICAgKGxpc3RfaXRlbSAo bGlzdF9tYXJrZXJfc3RhcikgQG1hcmtkb3duLXRzLWxpc3QtbWFya2VyKQogICAgICAobGlzdF9p dGVtIChsaXN0X21hcmtlcl9wbHVzKSBAbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIpCiAgICAgIChs aXN0X2l0ZW0gKGxpc3RfbWFya2VyX21pbnVzKSBAbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIpCi0g ICAgIChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX2RvdCkgQG1hcmtkb3duLXRzLWxpc3QtbWFya2Vy KSkKKyAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfZG90KSBAbWFya2Rvd24tdHMtbGlzdC1t YXJrZXIpCisgICAgIChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BhcmVudGhlc2lzKSBAbWFya2Rv d24tdHMtbGlzdC1tYXJrZXIpCisgICAgIChsaXN0X2l0ZW0gKHRhc2tfbGlzdF9tYXJrZXJfdW5j aGVja2VkKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktY2hlY2tib3gpCisgICAgIChsaXN0X2l0ZW0g KHRhc2tfbGlzdF9tYXJrZXJfY2hlY2tlZCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94 KQorICAgICAobGlua19yZWZlcmVuY2VfZGVmaW5pdGlvbgorICAgICAgKGxpbmtfbGFiZWwpIEBt YXJrZG93bi10cy0tZm9udGlmeS1saW5rLXJlZi1sYWJlbCkKKyAgICAgKGxpbmtfcmVmZXJlbmNl X2RlZmluaXRpb24KKyAgICAgIChsaW5rX2Rlc3RpbmF0aW9uKSBAbWFya2Rvd24tdHMtLWZvbnRp ZnktbGluay1yZWYtZGVzdGluYXRpb24pCisgICAgIChsaW5rX3JlZmVyZW5jZV9kZWZpbml0aW9u CisgICAgICAobGlua190aXRsZSkgQG1hcmtkb3duLXRzLWxpbmstZGVzdGluYXRpb24pKQorCisg ICA6bGFuZ3VhZ2UgJ21hcmtkb3duCisgICA6ZmVhdHVyZSAncGFyYWdyYXBoCisgICA6b3ZlcnJp ZGUgJ3ByZXBlbmQKKyAgICcoKHBpcGVfdGFibGVfaGVhZGVyICJ8IiBAbWFya2Rvd24tdHMtdGFi bGUtaGVhZGVyKQorICAgICAocGlwZV90YWJsZV9oZWFkZXIgKHBpcGVfdGFibGVfY2VsbCkgQG1h cmtkb3duLXRzLXRhYmxlLWhlYWRlcikKKyAgICAgKHBpcGVfdGFibGVfcm93ICJ8IiBAbWFya2Rv d24tdHMtdGFibGUtZGVsaW1pdGVyLWNlbGwpCisgICAgIChwaXBlX3RhYmxlX3JvdyAocGlwZV90 YWJsZV9jZWxsKSBAbWFya2Rvd24tdHMtdGFibGUtY2VsbCkKKyAgICAgKHBpcGVfdGFibGVfZGVs aW1pdGVyX3JvdyAifCIgQG1hcmtkb3duLXRzLXRhYmxlLWRlbGltaXRlci1jZWxsKQorICAgICAo KHBpcGVfdGFibGUpIEBtYXJrZG93bi10cy10YWJsZSkKKyAgICAgKHBpcGVfdGFibGVfZGVsaW1p dGVyX3JvdyAocGlwZV90YWJsZV9kZWxpbWl0ZXJfY2VsbCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBAbWFya2Rvd24tdHMtdGFibGUtZGVsaW1pdGVyLWNlbGwpKQogCiAgICA6bGFu Z3VhZ2UgJ21hcmtkb3duCiAgICA6ZmVhdHVyZSAncGFyYWdyYXBoCkBAIC0yMTIsODkgKzE2NzYs OTk5IEBAIG1hcmtkb3duLXRzLS10cmVlc2l0LXNldHRpbmdzCiAgICAgIChibG9ja19xdW90ZV9t YXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGZlbmNlZF9jb2Rl X2Jsb2NrX2RlbGltaXRlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAgICAo ZmVuY2VkX2NvZGVfYmxvY2sKLSAgICAgIChpbmZvX3N0cmluZyAobGFuZ3VhZ2UpIEBtYXJrZG93 bi10cy1sYW5ndWFnZS1rZXl3b3JkKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQor ICAgICAgKGluZm9fc3RyaW5nIChsYW5ndWFnZSkgQG1hcmtkb3duLXRzLWxhbmd1YWdlLWtleXdv cmQpCisgICAgICBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQogICAgICAoYmxvY2tf cXVvdGUKICAgICAgIChibG9ja19xdW90ZV9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1k ZWxpbWl0ZXIKICAgICAgIChwYXJhZ3JhcGggKGlubGluZSAoYmxvY2tfY29udGludWF0aW9uKSBA bWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKSkpKQogCisgICA6bGFuZ3VhZ2UgJ21hcmtk b3duCisgICA6ZmVhdHVyZSAncGFyYWdyYXBoCisgICA6b3ZlcnJpZGUgJ2FwcGVuZAorICAgJygo ZmVuY2VkX2NvZGVfYmxvY2sKKyAgICAgIChpbmZvX3N0cmluZyAobGFuZ3VhZ2UpKQorICAgICAg KGNvZGVfZmVuY2VfY29udGVudCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1jb2RlLWJs b2NrKSkKKworICAgOmxhbmd1YWdlICdtYXJrZG93bgorICAgOmZlYXR1cmUgJ3BhcmFncmFwaAor ICAgOm92ZXJyaWRlICdhcHBlbmQKKyAgICcoKGZlbmNlZF9jb2RlX2Jsb2NrIChjb2RlX2ZlbmNl X2NvbnRlbnQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1jb2RlLWJsb2NrKSkKKwogICAgOmxhbmd1 YWdlICdtYXJrZG93bi1pbmxpbmUKICAgIDpvdmVycmlkZSAnYXBwZW5kCiAgICA6ZmVhdHVyZSAn cGFyYWdyYXBoLWlubGluZQotICAgJygoKGltYWdlX2Rlc2NyaXB0aW9uKSBAbGluaykKLSAgICAg KChsaW5rX2Rlc3RpbmF0aW9uKSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQotICAgICAoKGNvZGVf c3BhbikgQGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAgICcoKChsaW5rX2Rlc3RpbmF0aW9uKSBA bWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1kZXN0aW5hdGlvbikKKyAgICAgKChjb2RlX3NwYW4p IEBtYXJrZG93bi10cy1jb2RlLXNwYW4pCiAgICAgICgoY29kZV9zcGFuX2RlbGltaXRlcikgQG1h cmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcikKLSAgICAgKChlbXBoYXNpcykgQGl0YWxpYykK LSAgICAgKChzdHJvbmdfZW1waGFzaXMpIEBib2xkKQotICAgICAoaW5saW5lX2xpbmsgKGxpbmtf dGV4dCkgQGxpbmspCi0gICAgIChpbmxpbmVfbGluayAobGlua19kZXN0aW5hdGlvbikgQGZvbnQt bG9jay1zdHJpbmctZmFjZSkKLSAgICAgKHNob3J0Y3V0X2xpbmsgKGxpbmtfdGV4dCkgQGxpbmsp KQorICAgICAoKGVtcGhhc2lzKSBAbWFya2Rvd24tdHMtZW1waGFzaXMpCisgICAgICgoc3Ryb25n X2VtcGhhc2lzKSBAbWFya2Rvd24tdHMtYm9sZCkKKyAgICAgKChzdHJpa2V0aHJvdWdoKSBAbWFy a2Rvd24tdHMtc3RyaWtldGhyb3VnaCkKKyAgICAgKGlubGluZV9saW5rIChsaW5rX3RleHQpIEBt YXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgIChmdWxsX3JlZmVyZW5jZV9saW5r IChsaW5rX3RleHQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgIChmdWxs X3JlZmVyZW5jZV9saW5rIChsaW5rX2xhYmVsKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1u b2RlKQorICAgICAoY29sbGFwc2VkX3JlZmVyZW5jZV9saW5rIChsaW5rX3RleHQpIEBtYXJrZG93 bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgIChzaG9ydGN1dF9saW5rIChsaW5rX3RleHQp IEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgIChpbWFnZSAoaW1hZ2VfZGVz Y3JpcHRpb24pIEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgICgodXJpX2F1 dG9saW5rKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmspCisgICAgICgoZW1haWxfYXV0 b2xpbmspIEBtYXJrZG93bi10cy0tZm9udGlmeS1hdXRvbGluaykKKyAgICAgKGlubGluZV9saW5r IChsaW5rX3RpdGxlKSBAbWFya2Rvd24tdHMtbGluay1kZXN0aW5hdGlvbikKKyAgICAgKChiYWNr c2xhc2hfZXNjYXBlKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktYmFja3NsYXNoLWVzY2FwZSkKKyAg ICAgKChlbnRpdHlfcmVmZXJlbmNlKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZW50aXR5KQorICAg ICAoKG51bWVyaWNfY2hhcmFjdGVyX3JlZmVyZW5jZSkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWVu dGl0eSkKKyAgICAgKChodG1sX3RhZykgQG1hcmtkb3duLXRzLWh0bWwtdGFnKQorICAgICAoKGhh cmRfbGluZV9icmVhaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LWhhcmQtbGluZS1icmVhaykKKyAg ICAgKChsYXRleF9ibG9jaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxhdGV4LWJsb2NrKSkKIAog ICAgOmxhbmd1YWdlICdtYXJrZG93bi1pbmxpbmUKICAgIDpmZWF0dXJlICdwYXJhZ3JhcGgtaW5s aW5lCiAgICA6b3ZlcnJpZGUgJ2FwcGVuZAogICAgJygoZW1waGFzaXNfZGVsaW1pdGVyKSBAbWFy a2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQotICAgKSkKIAotOzs7IEltZW51CisgICA6bGFu Z3VhZ2UgJ21hcmtkb3duLWlubGluZQorICAgOmZlYXR1cmUgJ2ltYWdlLXByZXZpZXcKKyAgIDpv dmVycmlkZSAnYXBwZW5kCisgICAnKChpbWFnZSkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWltYWdl KSkpCisKKzs7OyBJbWVudToKIAotKGRlZnVuIG1hcmtkb3duLXRzLWltZW51LW5vZGUtcCAobm9k ZSkKKyhkZWZ1biBtYXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1ub2RlLXAgKG5vZGUpCiAgICJD aGVjayBpZiBOT0RFIGlzIGEgdmFsaWQgZW50cnkgdG8gaW1lbnUuIgotICAoZXF1YWwgKHRyZWVz aXQtbm9kZS10eXBlICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKQotICAgICAgICAgImF0eF9o ZWFkaW5nIikpCisgIChhbmQgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAiaW5saW5l IikKKyAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlICh0cmVlc2l0LW5vZGUtcGFyZW50 IG5vZGUpKQorICAgICAgICAgICAgICAiYXR4X2hlYWRpbmciKSkpCiAKLShkZWZ1biBtYXJrZG93 bi10cy1pbWVudS1uYW1lLWZ1bmN0aW9uIChub2RlKQorKGRlZnVuIG1hcmtkb3duLXRzLS1pbWVu dS1oZWFkaW5nLW5hbWUtZnVuY3Rpb24gKG5vZGUpCiAgICJSZXR1cm4gYW4gaW1lbnUgZW50cnkg aWYgTk9ERSBpcyBhIHZhbGlkIGhlYWRlci4iCiAgIChsZXQgKChuYW1lICh0cmVlc2l0LW5vZGUt dGV4dCBub2RlKSkpCi0gICAgKGlmIChtYXJrZG93bi10cy1pbWVudS1ub2RlLXAgbm9kZSkKLQko dGhyZWFkLWZpcnN0ICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpICh0cmVlc2l0LW5vZGUtdGV4 dCkpCisgICAgKGlmIChtYXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1ub2RlLXAgbm9kZSkKKyAg ICAgICAgKGNhciAoc3BsaXQtc3RyaW5nICh0cmVlc2l0LW5vZGUtdGV4dAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICJcbiIgdCAiICIpKQogICAgICAgbmFtZSkpKQogCi0oZGVmdW4gbWFya2Rv d24tdHMtb3V0bGluZS1wcmVkaWNhdGUgKG5vZGUpCi0gICJNYXRjaCBhIGhpZXJhcmNoaWNhbCBz ZWN0aW9uIHRoYXQgaGFzIGEgaGVhZGluZy4iCisoZGVmdW4gbWFya2Rvd24tdHMtLWltZW51LWNv ZGUtYmxvY2stbm9kZS1wIChub2RlKQorICAiQ2hlY2sgaWYgTk9ERSBpcyBhbiBpbmZvX3N0cmlu ZyB3aXRoIGRlc2NyaXB0aXZlIHRleHQgYWZ0ZXIgdGhlIGxhbmd1YWdlLiIKKyAgKGFuZCAoZXF1 YWwgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpICJpbmZvX3N0cmluZyIpCisgICAgICAgKHdoZW4t bGV0KiAoKGxhbmctbm9kZSAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBub2RlICJsYW5ndWFnZSIp KQorICAgICAgICAgICAgICAgICAgICgoPCAodHJlZXNpdC1ub2RlLWVuZCBsYW5nLW5vZGUpCisg ICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkpCisgICAgICAg ICAobm90IChzdHJpbmctYmxhbmstcAorICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmct bm8tcHJvcGVydGllcworICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIGxhbmctbm9k ZSkKKyAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkpKSkpKQorCisoZGVm dW4gbWFya2Rvd24tdHMtLWltZW51LWNvZGUtYmxvY2stbmFtZS1mdW5jdGlvbiAobm9kZSkKKyAg IlJldHVybiBhbiBpbWVudSBlbnRyeSBuYW1lIGZvciBhIGNvZGUgYmxvY2sgaW5mb19zdHJpbmcg Tk9ERS4KK1VzZXMgdGhlIGRlc2NyaXB0aXZlIHRleHQgYWZ0ZXIgdGhlIGxhbmd1YWdlIG5hbWUu IgorICAod2hlbi1sZXQqICgobGFuZy1ub2RlICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIG5vZGUg Imxhbmd1YWdlIikpCisgICAgICAgICAgICAgIChkZXNjIChzdHJpbmctdHJpbQorICAgICAgICAg ICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcworICAgICAgICAgICAg ICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIGxhbmctbm9kZSkKKyAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkpKSkKKyAgICAoZm9ybWF0ICIlczogJXMiICh0 cmVlc2l0LW5vZGUtdGV4dCBsYW5nLW5vZGUpIGRlc2MpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1vdXRsaW5lLXByZWRpY2F0ZSAobm9kZSkKKyAgIk1hdGNoIE5PREUgaWYgaXQgaXMgYSBoaWVy YXJjaGljYWwgc2VjdGlvbiB0aGF0IGhhcyBhIGhlYWRpbmcuIgogICAoYW5kIChlcXVhbCAodHJl ZXNpdC1ub2RlLXR5cGUgbm9kZSkgInNlY3Rpb24iKQogICAgICAgICh3aGVuLWxldCogKChjaGls ZCAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgMCkpKQogICAgICAgICAgKGVxdWFsICh0cmVlc2l0 LW5vZGUtdHlwZSBjaGlsZCkgImF0eF9oZWFkaW5nIikpKSkKIAotOzs7IENvZGUgYmxvY2tzCis7 OzsgSGVhZGluZyBtYW5pcHVsYXRpb246CisKKyhkZWZjb25zdCBtYXJrZG93bi10cy0tcGFyc2Vy LWhlYWRpbmctbWF4LWxldmVsIDYKKyAgIk1heGltdW0gQVRYIGhlYWRpbmcgbGV2ZWwgaW4gTWFy a2Rvd24gKGgxLWg2KS4KK0RlZmluZWQgYnkgdGhlIENvbW1vbk1hcmsgc3BlYyBhbmQgdGhlIHRy ZWUtc2l0dGVyIGdyYW1tYXIuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1oZWFkaW5nLWF0LXBv aW50ICgpCisgICJSZXR1cm4gdGhlIGF0eF9oZWFkaW5nIG5vZGUgYXQgb3IgYmVmb3JlIHBvaW50 LCBvciBuaWwuIgorICAod2hlbi1sZXQqICgobm9kZSAodHJlZXNpdC1ub2RlLWF0IChwb2ludCkg J21hcmtkb3duKSkpCisgICAgKGlmIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImF0 eF9oZWFkaW5nIikKKyAgICAgICAgbm9kZQorICAgICAgKHRyZWVzaXQtcGFyZW50LXVudGlsCisg ICAgICAgbm9kZSAobGFtYmRhIChuKSAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4pICJhdHhf aGVhZGluZyIpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1oZWFkaW5nLWxldmVsIChoZWFk aW5nKQorICAiUmV0dXJuIEhFQURJTkcgbGV2ZWwgKHJhbmdlIDEgdG8gYG1hcmtkb3duLXRzLS1w YXJzZXItaGVhZGluZy1tYXgtbGV2ZWwnKS4iCisgIChsZXQgKChtYXJrZXIgKHRyZWVzaXQtbm9k ZS1jaGlsZCBoZWFkaW5nIDApKSkKKyAgICAobGVuZ3RoICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJr ZXIgdCkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1zZWN0aW9uLWF0LXBvaW50ICgpCisgICJS ZXR1cm4gdGhlIHNlY3Rpb24gbm9kZSBjb250YWluaW5nIHBvaW50LiIKKyAgKHdoZW4tbGV0KiAo KG5vZGUgKHRyZWVzaXQtbm9kZS1hdCAocG9pbnQpICdtYXJrZG93bikpKQorICAgICh0cmVlc2l0 LXBhcmVudC11bnRpbAorICAgICBub2RlIChsYW1iZGEgKG4pIChlcXVhbCAodHJlZXNpdC1ub2Rl LXR5cGUgbikgInNlY3Rpb24iKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXByb21vdGUgKCkK KyAgIlByb21vdGUgdGhlIGhlYWRpbmcgb3IgbGlzdCBpdGVtIGF0IHBvaW50LgorRm9yIGhlYWRp bmdzLCBkZWNyZWFzZSB0aGUgbGV2ZWwgKGUuZy4sICMjIHRvICMpLgorRm9yIGxpc3QgaXRlbXMs IGRlY3JlYXNlIG5lc3RpbmcgKGRlZGVudCkuCitXaXRoIGB0cmFuc2llbnQtbWFyay1tb2RlJyBv biBhbmQgbWFyayBhY3RpdmUsIHByb21vdGUgYWxsCitoZWFkaW5ncyBpbiB0aGUgcmVnaW9uLiIK KyAgKGludGVyYWN0aXZlKQorICAoY29uZAorICAgKChhbmQgdHJhbnNpZW50LW1hcmstbW9kZSBt YXJrLWFjdGl2ZSkKKyAgICAobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lvbiAt MSkpCisgICAoKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpCisgICAgKG1hcmtkb3du LXRzLS1saXN0LXByb21vdGUtb3ItZGVtb3RlIG5pbCkpCisgICAodCAobWFya2Rvd24tdHMtLXBy b21vdGUtb3ItZGVtb3RlIC0xKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtZGVtb3RlICgpCisg ICJEZW1vdGUgdGhlIGhlYWRpbmcgb3IgbGlzdCBpdGVtIGF0IHBvaW50LgorRm9yIGhlYWRpbmdz LCBpbmNyZWFzZSB0aGUgbGV2ZWwgKGUuZy4sICMgdG8gIyMpLgorRm9yIGxpc3QgaXRlbXMsIGlu Y3JlYXNlIG5lc3RpbmcgKGluZGVudCkuCitXaXRoIGB0cmFuc2llbnQtbWFyay1tb2RlJyBvbiBh bmQgbWFyayBhY3RpdmUsIGRlbW90ZSBhbGwgaGVhZGluZ3MKK2luIHRoZSByZWdpb24uIgorICAo aW50ZXJhY3RpdmUpCisgIChjb25kCisgICAoKGFuZCB0cmFuc2llbnQtbWFyay1tb2RlIG1hcmst YWN0aXZlKQorICAgIChtYXJrZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUtcmVnaW9uIDEpKQor ICAgKChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KQorICAgIChtYXJrZG93bi10cy0t bGlzdC1wcm9tb3RlLW9yLWRlbW90ZSB0KSkKKyAgICh0IChtYXJrZG93bi10cy0tcHJvbW90ZS1v ci1kZW1vdGUgMSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZSAo ZGVsdGEpCisgICJDaGFuZ2UgdGhlIGhlYWRpbmcgYXQgcG9pbnQgYnkgREVMVEEgbGV2ZWxzLgor TmVnYXRpdmUgREVMVEEgcHJvbW90ZXMgKGZld2VyICMpLCBwb3NpdGl2ZSBkZW1vdGVzIChtb3Jl ICMpLgorSWYgdGhlIGhlYWRpbmcgaGFzIGFuIG9wdGlvbmFsIHRyYWlsaW5nIGNsb3NpbmctYCMn IHNlcXVlbmNlLCB0aGF0CitzZXF1ZW5jZSBpcyByZXNpemVkIHRvIG1hdGNoIHRoZSBuZXcgbGV2 ZWwuIgorICAod2hlbi1sZXQqICgoaGVhZGluZyAobWFya2Rvd24tdHMtLWhlYWRpbmctYXQtcG9p bnQpKQorICAgICAgICAgICAgICAobWFya2VyICh0cmVlc2l0LW5vZGUtY2hpbGQgaGVhZGluZyAw KSkKKyAgICAgICAgICAgICAgKGxldmVsIChsZW5ndGggKHRyZWVzaXQtbm9kZS10ZXh0IG1hcmtl ciB0KSkpCisgICAgICAgICAgICAgIChuZXctbGV2ZWwgKCsgbGV2ZWwgZGVsdGEpKSkKKyAgICAo d2hlbiAoYW5kICg+PSBuZXctbGV2ZWwgMSkKKyAgICAgICAgICAgICAgICg8PSBuZXctbGV2ZWwg bWFya2Rvd24tdHMtLXBhcnNlci1oZWFkaW5nLW1heC1sZXZlbCkpCisgICAgICAobGV0KiAoKG9w ZW5lci1iZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBtYXJrZXIpKQorICAgICAgICAgICAgIChvcGVu ZXItZW5kICh0cmVlc2l0LW5vZGUtZW5kIG1hcmtlcikpCisgICAgICAgICAgICAgKGxpbmUtZW5k IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgb3Bl bmVyLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobGluZS1lbmQtcG9zaXRpb24pKSkK KyAgICAgICAgICAgICA7OyBEZXRlY3QgYSBDb21tb25NYXJrIGNsb3NpbmctYCMnIHNlcXVlbmNl OiBvcHRpb25hbAorICAgICAgICAgICAgIDs7IHRyYWlsaW5nIHdoaXRlc3BhY2UsIGEgcnVuIG9m IGAjJywgYW5kIGF0IGxlYXN0IG9uZQorICAgICAgICAgICAgIDs7IHNwYWNlL3RhYiBiZXR3ZWVu IGl0IGFuZCB0aGUgaGVhZGluZyB0ZXh0LgorICAgICAgICAgICAgIChjbG9zZXIgKHNhdmUtZXhj dXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgbGluZS1lbmQpCisgICAg ICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiIG9wZW5lci1lbmQp CisgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChlbmQgKHBvaW50KSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiMiIG9wZW5lci1lbmQpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGJlZyAocG9pbnQpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICh3aGVuIChhbmQgKDwgYmVnIGVuZCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKD4gYmVnIG9wZW5lci1lbmQpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtZW1xIChjaGFyLWJlZm9yZSBiZWcpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoP1xzID9cdCkpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY29ucyBiZWcgZW5kKSkpKSkpKQorICAgICAgICAoc2F2ZS1leGN1 cnNpb24KKyAgICAgICAgICA7OyBSZXNpemUgdGhlIGNsb3NlciBmaXJzdCBzbyBpdCBkb2Vzbid0 IHNoaWZ0IHRoZSBvcGVuZXIuCisgICAgICAgICAgKHdoZW4gY2xvc2VyCisgICAgICAgICAgICAo ZGVsZXRlLXJlZ2lvbiAoY2FyIGNsb3NlcikgKGNkciBjbG9zZXIpKQorICAgICAgICAgICAgKGdv dG8tY2hhciAoY2FyIGNsb3NlcikpCisgICAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyBu ZXctbGV2ZWwgPyMpKSkKKyAgICAgICAgICAoZGVsZXRlLXJlZ2lvbiBvcGVuZXItYmVnIG9wZW5l ci1lbmQpCisgICAgICAgICAgKGdvdG8tY2hhciBvcGVuZXItYmVnKQorICAgICAgICAgIChpbnNl cnQgKG1ha2Utc3RyaW5nIG5ldy1sZXZlbCA/IykpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1wcm9tb3RlLW9yLWRlbW90ZS1yZWdpb24gKGRlbHRhKQorICAiQ2hhbmdlIGFsbCBoZWFkaW5n cyBpbiB0aGUgYWN0aXZlIHJlZ2lvbiBieSBERUxUQSBsZXZlbHMuCitOZWdhdGl2ZSBERUxUQSBw cm9tb3RlcyAoZmV3ZXIgIyksIHBvc2l0aXZlIGRlbW90ZXMgKG1vcmUgIykuIgorICAobGV0ICgo YmVnIChyZWdpb24tYmVnaW5uaW5nKSkKKyAgICAgICAgKGVuZCAocmVnaW9uLWVuZCkpKQorICAg IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAod2hpbGUgKDwg KHBvaW50KSBlbmQpCisgICAgICAgICh3aGVuIChtYXJrZG93bi10cy0taGVhZGluZy1hdC1wb2lu dCkKKyAgICAgICAgICAobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlIGRlbHRhKSkKKyAg ICAgICAgKGZvcndhcmQtbGluZSAxKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLW1vdmUtc3Vi dHJlZS11cCAoKQorICAiTW92ZSB0aGUgY3VycmVudCBzZWN0aW9uIG9yIGxpc3QgaXRlbSB1cCBw YXN0IHRoZSBwcmV2aW91cyBzaWJsaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAoaWYgKG1hcmtk b3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpCisgICAgICAobWFya2Rvd24tdHMtLWxpc3QtbW92 ZSB0KQorICAgIChtYXJrZG93bi10cy0tbW92ZS1zdWJ0cmVlLXVwLW9yLWRvd24gdCkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLWRvd24gKCkKKyAgIk1vdmUgdGhlIGN1cnJl bnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gZG93biBwYXN0IHRoZSBuZXh0IHNpYmxpbmcuIgorICAo aW50ZXJhY3RpdmUpCisgIChpZiAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkKKyAg ICAgIChtYXJrZG93bi10cy0tbGlzdC1tb3ZlIG5pbCkKKyAgICAobWFya2Rvd24tdHMtLW1vdmUt c3VidHJlZS11cC1vci1kb3duIG5pbCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXNlY3Rpb24t Zm9sZGVkLXAgKHNlY3Rpb24pCisgICJSZXR1cm4gbm9uLW5pbCBpZiBTRUNUSU9OJ3MgaGVhZGlu ZyBpcyBmb2xkZWQuCitDaGVja3Mgd2hldGhlciB0aGUgZW5kIG9mIHRoZSBoZWFkaW5nIGxpbmUg aGFzIGFuIG91dGxpbmUKK2ludmlzaWJsZSBvdmVybGF5LiIKKyAgKGxldCAoKGhlYWRpbmcgKHRy ZWVzaXQtbm9kZS1jaGlsZCBzZWN0aW9uIDApKSkKKyAgICAod2hlbiAoYW5kIGhlYWRpbmcKKyAg ICAgICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgaGVhZGluZykgImF0eF9oZWFk aW5nIikpCisgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgKGdvdG8tY2hhciAodHJlZXNp dC1ub2RlLXN0YXJ0IGhlYWRpbmcpKQorICAgICAgICAob3V0bGluZS1pbnZpc2libGUtcCAocG9z LWVvbCkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLW1vdmUtc3VidHJlZS11cC1vci1kb3du ICh1cCkKKyAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBzdWJ0cmVlLgorSWYgVVAgaXMgbm9u LW5pbCwgbW92ZSBwYXN0IHRoZSBwcmV2aW91cyBzaWJsaW5nOyBvdGhlcndpc2UgbW92ZSBkb3du LgorUHJlc2VydmVzIHRoZSBmb2xkaW5nIHN0YXRlIG9mIGJvdGggc2VjdGlvbnMuIgorICAod2hl bi1sZXQqICgoc2VjdGlvbiAobWFya2Rvd24tdHMtLXNlY3Rpb24tYXQtcG9pbnQpKQorICAgICAg ICAgICAgICAoc2libGluZyAoaWYgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVl c2l0LW5vZGUtcHJldi1zaWJsaW5nIHNlY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAg KHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcgc2VjdGlvbikpKSkKKyAgICAod2hlbiAoZXF1YWwg KHRyZWVzaXQtbm9kZS10eXBlIHNpYmxpbmcpICJzZWN0aW9uIikKKyAgICAgIChsZXQqICgoZmly c3QgKGlmIHVwIHNpYmxpbmcgc2VjdGlvbikpCisgICAgICAgICAgICAgKHNlY29uZCAoaWYgdXAg c2VjdGlvbiBzaWJsaW5nKSkKKyAgICAgICAgICAgICAoZmlyc3QtZm9sZGVkIChtYXJrZG93bi10 cy0tc2VjdGlvbi1mb2xkZWQtcCBmaXJzdCkpCisgICAgICAgICAgICAgKHNlY29uZC1mb2xkZWQg KG1hcmtkb3duLXRzLS1zZWN0aW9uLWZvbGRlZC1wIHNlY29uZCkpCisgICAgICAgICAgICAgKGZp cnN0LXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgZmlyc3QpKQorICAgICAgICAgICAgIChzZWNv bmQtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBzZWNvbmQpKQorICAgICAgICAgICAgIChzZWNv bmQtZW5kICh0cmVlc2l0LW5vZGUtZW5kIHNlY29uZCkpCisgICAgICAgICAgICAgOzsgRXh0cmFj dCBzZXBhcmF0b3IgYmV0d2VlbiBpdGVtcyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAgICAg ICAgICAgICAoZmlyc3QtcmF3IChidWZmZXItc3Vic3RyaW5nIGZpcnN0LXN0YXJ0IHNlY29uZC1z dGFydCkpCisgICAgICAgICAgICAgKGZpcnN0LXRleHQgKHN0cmluZy10cmltLXJpZ2h0IGZpcnN0 LXJhdykpCisgICAgICAgICAgICAgKHNlcGFyYXRvciAoc3Vic3RyaW5nIGZpcnN0LXJhdyAobGVu Z3RoIGZpcnN0LXRleHQpKSkKKyAgICAgICAgICAgICAoc2Vjb25kLXJhdyAoYnVmZmVyLXN1YnN0 cmluZyBzZWNvbmQtc3RhcnQgc2Vjb25kLWVuZCkpCisgICAgICAgICAgICAgKHNlY29uZC10ZXh0 IChzdHJpbmctdHJpbS1yaWdodCBzZWNvbmQtcmF3KSkKKyAgICAgICAgICAgICAodHJhaWxpbmcg KHN1YnN0cmluZyBzZWNvbmQtcmF3IChsZW5ndGggc2Vjb25kLXRleHQpKSkKKyAgICAgICAgICAg ICAobGluZS1vZmZzZXQgKC0gKGxpbmUtbnVtYmVyLWF0LXBvcyAocG9pbnQpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGluZS1udW1iZXItYXQtcG9zICh0cmVlc2l0LW5vZGUtc3Rh cnQgc2VjdGlvbikpKSkpCisgICAgICAgIChkZWxldGUtcmVnaW9uIGZpcnN0LXN0YXJ0IHNlY29u ZC1lbmQpCisgICAgICAgIChnb3RvLWNoYXIgZmlyc3Qtc3RhcnQpCisgICAgICAgIChpbnNlcnQg c2Vjb25kLXRleHQgc2VwYXJhdG9yIGZpcnN0LXRleHQgdHJhaWxpbmcpCisgICAgICAgIDs7IFJl c3RvcmUgZm9sZGluZyBzdGF0ZQorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAo Z290by1jaGFyIGZpcnN0LXN0YXJ0KQorICAgICAgICAgICh3aGVuIChvdXRsaW5lLW9uLWhlYWRp bmctcCkKKyAgICAgICAgICAgIChpZiBzZWNvbmQtZm9sZGVkCisgICAgICAgICAgICAgICAgKG91 dGxpbmUtaGlkZS1zdWJ0cmVlKQorICAgICAgICAgICAgICAob3V0bGluZS1zaG93LXN1YnRyZWUp KSkKKyAgICAgICAgICAob3V0bGluZS1uZXh0LWhlYWRpbmcpCisgICAgICAgICAgKHdoZW4gKG91 dGxpbmUtb24taGVhZGluZy1wKQorICAgICAgICAgICAgKGlmIGZpcnN0LWZvbGRlZAorICAgICAg ICAgICAgICAgIChvdXRsaW5lLWhpZGUtc3VidHJlZSkKKyAgICAgICAgICAgICAgKG91dGxpbmUt c2hvdy1zdWJ0cmVlKSkpKQorICAgICAgICAoZ290by1jaGFyIChpZiB1cAorICAgICAgICAgICAg ICAgICAgICAgICBmaXJzdC1zdGFydAorICAgICAgICAgICAgICAgICAgICAgKCsgZmlyc3Qtc3Rh cnQgKGxlbmd0aCBzZWNvbmQtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGgg c2VwYXJhdG9yKSkpKQorICAgICAgICAod2l0aC1zdXBwcmVzc2VkLXdhcm5pbmdzICgoaW50ZXJh Y3RpdmUtb25seSBuZXh0LWxpbmUpKQorICAgICAgICAgIChuZXh0LWxpbmUgbGluZS1vZmZzZXQp KSkpKSkKKworOzs7IExpc3QgbWFuaXB1bGF0aW9uOgorCisoZGVmdW4gbWFya2Rvd24tdHMtdG9n Z2xlLWNoZWNrYm94ICgpCisgICJUb2dnbGUgdGhlIHRhc2sgbGlzdCBjaGVja2JveCBvbiB0aGUg Y3VycmVudCBsaW5lLgorU3dpdGNoZXMgYmV0d2VlbiBgWyBdJyBhbmQgYFt4XScuIgorICAoaW50 ZXJhY3RpdmUpCisgICh3aGVuLWxldCogKChwb3MgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWlu ZGVudGF0aW9uKSAocG9pbnQpKSkKKyAgICAgICAgICAgICAgKG5vZGUgKHRyZWVzaXQtbm9kZS1h dCBwb3MgJ21hcmtkb3duKSkKKyAgICAgICAgICAgICAgKGl0ZW0gKHRyZWVzaXQtcGFyZW50LXVu dGlsCisgICAgICAgICAgICAgICAgICAgICBub2RlIChsYW1iZGEgKG4pCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAibGlzdF9pdGVtIikp KSkpCisgICAgKHdoZW4tbGV0KiAoKG1hcmtlciAoc2VxLWZpbmQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhIChjaGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1i ZXIgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnKCJ0YXNrX2xpc3RfbWFya2VyX2NoZWNrZWQiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInRhc2tfbGlzdF9tYXJrZXJfdW5jaGVja2VkIikpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gaXRlbSkpKSkKKyAgICAg IChsZXQgKChiZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBtYXJrZXIpKQorICAgICAgICAgICAgKGVu ZCAodHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIpKQorICAgICAgICAgICAgKGNoZWNrZWQgKGVxdWFs ICh0cmVlc2l0LW5vZGUtdHlwZSBtYXJrZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg InRhc2tfbGlzdF9tYXJrZXJfY2hlY2tlZCIpKSkKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisg ICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVnIGVu ZCkKKyAgICAgICAgICAoaW5zZXJ0IChpZiBjaGVja2VkICJbIF0iICJbeF0iKSkpKSkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCAoKQorICAiUmV0dXJuIHRoZSBp bm5lcm1vc3QgbGlzdF9pdGVtIG5vZGUgY29udGFpbmluZyBwb2ludCwgb3IgbmlsLgorVXNlcyB0 aGUgcG9zaXRpb24gYWZ0ZXIgYGJhY2stdG8taW5kZW50YXRpb24nIHNvIHRoYXQgcG9pbnQgaW4K K2EgbGluZSdzIGxlYWRpbmcgd2hpdGVzcGFjZSByZXNvbHZlcyB0byB0aGUgaXRlbSBvbiB0aGF0 IGxpbmUsCitub3QgdG8gYSBwcmVjZWRpbmcgaXRlbSB3aG9zZSBub2RlIHNwYW5zIHRoZSB3aGl0 ZXNwYWNlLgorSW5zaWRlIGJsb2NrIHF1b3RlcywgYWxzbyB0cnkgZnJvbSB0aGUgY29udGVudCBw b3NpdGlvbiBwYXN0Cit0aGUgYD4nIG1hcmtlcnMuIgorICAod2hlbi1sZXQqICgocG9zIChzYXZl LWV4Y3Vyc2lvbiAoYmFjay10by1pbmRlbnRhdGlvbikgKHBvaW50KSkpCisgICAgICAgICAgICAg IChub2RlICh0cmVlc2l0LW5vZGUtYXQgcG9zICdtYXJrZG93bikpCisgICAgICAgICAgICAgIChi b2wgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgKGVvbCAobGluZS1l bmQtcG9zaXRpb24pKSkKKyAgICAob3IgKGxldCAoKGl0ZW0gKHRyZWVzaXQtcGFyZW50LXVudGls CisgICAgICAgICAgICAgICAgICAgICBub2RlIChsYW1iZGEgKG4pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAibGlzdF9pdGVtIikpKSkp CisgICAgICAgICAgOzsgVmVyaWZ5IHRoZSBjdXJyZW50IGxpbmUgaXMgd2l0aGluIHRoZSBpdGVt J3MgcmFuZ2UuCisgICAgICAgICAgOzsgYHRyZWVzaXQtbm9kZS1hdCcgY2FuIHJldHVybiBhIG5v ZGUgaW5zaWRlIGEgbGlzdF9pdGVtCisgICAgICAgICAgOzsgZXZlbiB3aGVuIHBvaW50IGlzIG9u IGEgcHJlY2VkaW5nIGxpbmUuCisgICAgICAgICAgKHdoZW4gKGFuZCBpdGVtCisgICAgICAgICAg ICAgICAgICAgICAoPD0gKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSBlb2wpCisgICAgICAgICAg ICAgICAgICAgICAoPj0gKHRyZWVzaXQtbm9kZS1lbmQgaXRlbSkgYm9sKSkKKyAgICAgICAgICAg IGl0ZW0pKQorICAgICAgICA7OyBXaGVuIGJhY2stdG8taW5kZW50YXRpb24gbGFuZHMgb24gYmxv Y2sgcXVvdGUgbWFya2VycywKKyAgICAgICAgOzsgc2tpcCBwYXN0IHRoZW0gYW5kIHRyeSBmcm9t IHRoZSBjb250ZW50IHBvc2l0aW9uLgorICAgICAgICAobGV0ICgoY29udGVudC1wb3MgKHNhdmUt ZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGlu ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiPiBc dCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKSkKKyAgICAgICAgICAo d2hlbiAoPiBjb250ZW50LXBvcyBwb3MpCisgICAgICAgICAgICAod2hlbi1sZXQqICgoY25vZGUg KHRyZWVzaXQtbm9kZS1hdCBjb250ZW50LXBvcyAnbWFya2Rvd24pKSkKKyAgICAgICAgICAgICAg KGxldCAoKGl0ZW0gKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBjbm9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAobikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAibGlz dF9pdGVtIikpKSkpCisgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCBpdGVtCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAoPD0gKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSBlb2wpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAoPj0gKHRyZWVzaXQtbm9kZS1lbmQgaXRlbSkgYm9sKSkK KyAgICAgICAgICAgICAgICAgIGl0ZW0pKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxp c3QtbWFya2VyLXdpZHRoIChpdGVtKQorICAiUmV0dXJuIHRoZSB3aWR0aCBvZiBJVEVNJ3MgbGlz dCBtYXJrZXIgaW5jbHVkaW5nIHRyYWlsaW5nIHNwYWNlLiIKKyAgKGxldCAoKG1hcmtlciAodHJl ZXNpdC1ub2RlLWNoaWxkIGl0ZW0gMCkpKQorICAgICgtICh0cmVlc2l0LW5vZGUtZW5kIG1hcmtl cikgKHRyZWVzaXQtbm9kZS1zdGFydCBtYXJrZXIpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t bGlzdC1pdGVtLXJlZ2lvbiAoaXRlbSkKKyAgIlJldHVybiB0aGUgKEJFRyAuIEVORCkgcmVnaW9u IGZvciBJVEVNLCBjbGFtcGVkIHRvIGZ1bGwgbGluZXMuCitCRUcgc3RhcnRzIGF0IHRoZSBiZWdp bm5pbmcgb2YgdGhlIGxpbmUgY29udGFpbmluZyB0aGUgaXRlbS4KK0VORCBpcyBjbGFtcGVkIHNv IGl0IGRvZXMgbm90IGV4dGVuZCBpbnRvIHRoZSBuZXh0IGxpbmUncworaW5kZW50YXRpb24sIHdo aWNoIHRyZWUtc2l0dGVyIG1heSBpbmNsdWRlIGluIHRoZSBub2RlLiIKKyAgKGxldCAoKGJlZyAo c2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1z dGFydCBpdGVtKSkKKyAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKQor ICAgICAgICAoZW5kIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo dHJlZXNpdC1ub2RlLWVuZCBpdGVtKSkKKyAgICAgICAgICAgICAgIChpZiAoYm9scCkgKHBvaW50 KSAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSkpKQorICAgIChjb25zIGJlZyBlbmQpKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LW9yZGVyZWQtaXRlbS1wIChpdGVtKQorICAiUmV0dXJu IG5vbi1uaWwgaWYgSVRFTSBpcyBhbiBvcmRlcmVkIChudW1iZXJlZCkgbGlzdCBpdGVtLiIKKyAg KGxldCAoKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGl0ZW0gMCkpKQorICAgIChlcXVhbCAo dHJlZXNpdC1ub2RlLXR5cGUgbWFya2VyKSAibGlzdF9tYXJrZXJfZG90IikpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWxpc3QtcHJvbW90ZS1vci1kZW1vdGUgKGRlbW90ZSkKKyAgIkNoYW5nZSBu ZXN0aW5nIG9mIHRoZSBsaXN0IGl0ZW0gYXQgcG9pbnQuCitJZiBERU1PVEUgaXMgbm9uLW5pbCwg ZGVtb3RlIChpbmRlbnQpOyBvdGhlcndpc2UgcHJvbW90ZSAoZGVkZW50KS4KK09yZGVyZWQgKG51 bWJlcmVkKSBsaXN0IGl0ZW1zIGFyZSBza2lwcGVkIGJlY2F1c2UgdGhlIGdyYW1tYXIgZG9lcwor bm90IHN1cHBvcnQgbmVzdGluZyB0aGVtIGJ5IGluZGVudGF0aW9uLiIKKyAgKHdoZW4tbGV0KiAo KGl0ZW0gKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpKQorICAgICAgICAgICAgICAo cmVnaW9uIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXJlZ2lvbiBpdGVtKSkKKyAgICAgICAgICAg ICAgKGJlZyAoY2FyIHJlZ2lvbikpCisgICAgICAgICAgICAgIChlbmQgKGNkciByZWdpb24pKSkK KyAgICAod2hlbiAobWFya2Rvd24tdHMtLWxpc3Qtb3JkZXJlZC1pdGVtLXAgaXRlbSkKKyAgICAg ICh1c2VyLWVycm9yICJPcmRlcmVkIGxpc3QgaXRlbXMgY2Fubm90IGJlIG5lc3RlZCAoZ3JhbW1h ciBsaW1pdGF0aW9uKSIpKQorICAgIChpZiBkZW1vdGUKKyAgICAgICAgOzsgRGVtb3RlOiBpbmRl bnQgYnkgbWFya2VyIHdpZHRoLCBvbmx5IGlmIHRoZXJlIGlzIGEgcHJldmlvdXMKKyAgICAgICAg Ozsgc2libGluZyB0byBuZXN0IHVuZGVyIChsaWtlIG9yZy1tb2RlKS4KKyAgICAgICAgKHdoZW4g KHRyZWVzaXQtbm9kZS1wcmV2LXNpYmxpbmcgaXRlbSkKKyAgICAgICAgICAoaW5kZW50LXJpZ2lk bHkgYmVnIGVuZCAobWFya2Rvd24tdHMtLWxpc3QtbWFya2VyLXdpZHRoIGl0ZW0pKSkKKyAgICAg IDs7IFByb21vdGU6IGRlZGVudCB0byBncmFuZHBhcmVudCBsZXZlbC4KKyAgICAgIChsZXQqICgo cGFyZW50LWxpc3QgKHRyZWVzaXQtbm9kZS1wYXJlbnQgaXRlbSkpCisgICAgICAgICAgICAgKGdy YW5kcGFyZW50IChhbmQgcGFyZW50LWxpc3QgKHRyZWVzaXQtbm9kZS1wYXJlbnQgcGFyZW50LWxp c3QpKSkKKyAgICAgICAgICAgICAoaXRlbS1jb2wgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAg ICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpIChjdXJyZW50LWluZGVudGF0aW9uKSkpKQor ICAgICAgICAod2hlbiAoYW5kIGdyYW5kcGFyZW50CisgICAgICAgICAgICAgICAgICAgKGVxdWFs ICh0cmVlc2l0LW5vZGUtdHlwZSBncmFuZHBhcmVudCkgImxpc3RfaXRlbSIpCisgICAgICAgICAg ICAgICAgICAgKD4gaXRlbS1jb2wgMCkpCisgICAgICAgICAgKGxldCAoKGdwLWNvbCAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1u b2RlLXN0YXJ0IGdyYW5kcGFyZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJl bnQtaW5kZW50YXRpb24pKSkpCisgICAgICAgICAgICAoaW5kZW50LXJpZ2lkbHkgYmVnIGVuZCAo LSBncC1jb2wgaXRlbS1jb2wpKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxpc3Qtbm9k ZS1ib2wgKG5vZGUpCisgICJSZXR1cm4gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSBjb250YWlu aW5nIE5PREUncyBzdGFydC4iCisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChnb3RvLWNoYXIgKHRy ZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSkK KworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LW1vdmUgKHVwKQorICAiTW92ZSB0aGUgbGlzdCBp dGVtIGF0IHBvaW50LgorSWYgVVAgaXMgbm9uLW5pbCwgbW92ZSBwYXN0IHRoZSBwcmV2aW91cyBz aWJsaW5nOyBvdGhlcndpc2UgbW92ZSBkb3duLiIKKyAgKHdoZW4tbGV0KiAoKGl0ZW0gKG1hcmtk b3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpKQorICAgICAgICAgICAgICAoc2libGluZyAoaWYg dXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5n IGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxp bmcgaXRlbSkpKSkKKyAgICAod2hlbiAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIHNpYmxpbmcp ICJsaXN0X2l0ZW0iKQorICAgICAgKGxldCogKChmaXJzdCAoaWYgdXAgc2libGluZyBpdGVtKSkK KyAgICAgICAgICAgICAoc2Vjb25kIChpZiB1cCBpdGVtIHNpYmxpbmcpKQorICAgICAgICAgICAg IChmaXJzdC1zdGFydCAobWFya2Rvd24tdHMtLWxpc3Qtbm9kZS1ib2wgZmlyc3QpKQorICAgICAg ICAgICAgIChzZWNvbmQtc3RhcnQgKG1hcmtkb3duLXRzLS1saXN0LW5vZGUtYm9sIHNlY29uZCkp CisgICAgICAgICAgICAgKHNlY29uZC1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgc2Vjb25kKSkKKyAg ICAgICAgICAgICA7OyBFeHRyYWN0IHNlcGFyYXRvciBiZXR3ZWVuIGl0ZW1zIGFuZCB0cmFpbGlu ZyB3aGl0ZXNwYWNlLgorICAgICAgICAgICAgIChmaXJzdC1yYXcgKGJ1ZmZlci1zdWJzdHJpbmcg Zmlyc3Qtc3RhcnQgc2Vjb25kLXN0YXJ0KSkKKyAgICAgICAgICAgICAoZmlyc3QtdGV4dCAoc3Ry aW5nLXRyaW0tcmlnaHQgZmlyc3QtcmF3KSkKKyAgICAgICAgICAgICAoc2VwYXJhdG9yIChzdWJz dHJpbmcgZmlyc3QtcmF3IChsZW5ndGggZmlyc3QtdGV4dCkpKQorICAgICAgICAgICAgIChzZWNv bmQtcmF3IChidWZmZXItc3Vic3RyaW5nIHNlY29uZC1zdGFydCBzZWNvbmQtZW5kKSkKKyAgICAg ICAgICAgICAoc2Vjb25kLXRleHQgKHN0cmluZy10cmltLXJpZ2h0IHNlY29uZC1yYXcpKQorICAg ICAgICAgICAgICh0cmFpbGluZyAoc3Vic3RyaW5nIHNlY29uZC1yYXcgKGxlbmd0aCBzZWNvbmQt dGV4dCkpKQorICAgICAgICAgICAgIChsaW5lLW9mZnNldCAoLSAobGluZS1udW1iZXItYXQtcG9z IChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLW51bWJlci1hdC1w b3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgaXRl bSkpKSkpCisgICAgICAgIChkZWxldGUtcmVnaW9uIGZpcnN0LXN0YXJ0IHNlY29uZC1lbmQpCisg ICAgICAgIChnb3RvLWNoYXIgZmlyc3Qtc3RhcnQpCisgICAgICAgIChpbnNlcnQgc2Vjb25kLXRl eHQgc2VwYXJhdG9yIGZpcnN0LXRleHQgdHJhaWxpbmcpCisgICAgICAgIChnb3RvLWNoYXIgKGlm IHVwCisgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LXN0YXJ0CisgICAgICAgICAgICAgICAg ICAgICAoKyBmaXJzdC1zdGFydCAobGVuZ3RoIHNlY29uZC10ZXh0KQorICAgICAgICAgICAgICAg ICAgICAgICAgKGxlbmd0aCBzZXBhcmF0b3IpKSkpCisgICAgICAgICh3aXRoLXN1cHByZXNzZWQt d2FybmluZ3MgKChpbnRlcmFjdGl2ZS1vbmx5IG5leHQtbGluZSkpCisgICAgICAgICAgKG5leHQt bGluZSBsaW5lLW9mZnNldCkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtcmVudW1iZXItbGlz dCAoJm9wdGlvbmFsIHN0YXJ0KQorICAiUmVudW1iZXIgdGhlIG9yZGVyZWQgbGlzdCBhdCBwb2lu dC4KK051bWJlcnMgYXJlIGFzc2lnbmVkIHNlcXVlbnRpYWxseSBzdGFydGluZyBmcm9tIHRoZSBm aXJzdCBpdGVtJ3MKK251bWJlci4gIFdpdGggYSBwcmVmaXggYXJndW1lbnQgU1RBUlQsIHN0YXJ0 IG51bWJlcmluZyBmcm9tIHRoYXQKK3ZhbHVlIGluc3RlYWQuICBEb2VzIG5vdGhpbmcgZm9yIHVu b3JkZXJlZCBsaXN0cy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCogKChpdGVt IChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAgKGxpc3Qt bm9kZSAodHJlZXNpdC1ub2RlLXBhcmVudCBpdGVtKSkpCisgICAgKHdoZW4gKGVxdWFsICh0cmVl c2l0LW5vZGUtdHlwZSBsaXN0LW5vZGUpICJsaXN0IikKKyAgICAgIChsZXQqICgoY2hpbGRyZW4g KHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBsaXN0LW5vZGUpKQorICAgICAgICAgICAgIChpdGVtcyAo c2VxLWZpbHRlciAobGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImxpc3RfaXRlbSIpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbikpCisgICAgICAgICAgICAgKGZpcnN0LW1hcmtl ciAodHJlZXNpdC1ub2RlLWNoaWxkIChjYXIgaXRlbXMpIDApKQorICAgICAgICAgICAgIChtYXJr ZXItdHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgZmlyc3QtbWFya2VyKSkpCisgICAgICAgICh3aGVu IChtZW1iZXIgbWFya2VyLXR5cGUgJygibGlzdF9tYXJrZXJfZG90IiAibGlzdF9tYXJrZXJfcGFy ZW50aGVzaXMiKSkKKyAgICAgICAgICAobGV0KiAoKGJhc2UgKGlmIHN0YXJ0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAocHJlZml4LW51bWVyaWMtdmFsdWUgc3RhcnQpCisgICAgICAgICAg ICAgICAgICAgICAgICAgKHN0cmluZy10by1udW1iZXIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKHRyZWVzaXQtbm9kZS10ZXh0IGZpcnN0LW1hcmtlciB0KSkpKQorICAgICAgICAgICAgICAg ICAoY291bnQgKGxlbmd0aCBpdGVtcykpCisgICAgICAgICAgICAgICAgIDs7IFN0YXJ0IGZyb20g dGhlIGxhc3QgbnVtYmVyIGFuZCB3b3JrIGJhY2t3YXJkcyBzbworICAgICAgICAgICAgICAgICA7 OyB0aGF0IGVhcmxpZXIgYnVmZmVyIHBvc2l0aW9ucyByZW1haW4gdmFsaWQuCisgICAgICAgICAg ICAgICAgIChudW0gKCsgYmFzZSBjb3VudCAtMSkpKQorICAgICAgICAgICAgKGRvbGlzdCAoaXQg KHJldmVyc2UgaXRlbXMpKQorICAgICAgICAgICAgICAobGV0KiAoKG1hcmtlciAodHJlZXNpdC1u b2RlLWNoaWxkIGl0IDApKQorICAgICAgICAgICAgICAgICAgICAgKG1hcmtlci1lbmQgKHRyZWVz aXQtbm9kZS1lbmQgbWFya2VyKSkKKyAgICAgICAgICAgICAgICAgICAgIChib2wgKHNhdmUtZXhj dXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1u b2RlLXN0YXJ0IG1hcmtlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVn aW5uaW5nLXBvc2l0aW9uKSkpCisgICAgICAgICAgICAgICAgICAgICA7OyBGdWxsIHRleHQgZnJv bSBib2wgdG8gZW5kIG9mIG1hcmtlciBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICAgOzsg YW55IGxlYWRpbmcgd2hpdGVzcGFjZSwgdGhlIG51bWJlciwgYW5kIHRoZQorICAgICAgICAgICAg ICAgICAgICAgOzsgc2VwYXJhdG9yIChlLmcuLCAiLiAiIG9yICIuXHQiKS4KKyAgICAgICAgICAg ICAgICAgICAgIChmdWxsLXRleHQgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9sIG1hcmtlci1lbmQpKQorICAgICAgICAg ICAgICAgICAgICAgKGluZGVudC1zdHIKKyAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmlu Zy1tYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYFxcKFtbOmJsYW5rOl1dKlxc KVswLTldIiBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJp bmcgMSBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAiIikpCisgICAgICAgICAg ICAgICAgICAgICAoc3VmZml4LXN0cgorICAgICAgICAgICAgICAgICAgICAgIChpZiAoc3RyaW5n LW1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgW1s6Ymxhbms6XV0qWzAtOV0r XFwoLipcXClcXCciIGZ1bGwtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNo LXN0cmluZyAxIGZ1bGwtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICIuICIpKQorICAg ICAgICAgICAgICAgICAgICAgKG5ldy10ZXh0IChjb25jYXQgaW5kZW50LXN0cgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bWJlci10by1zdHJpbmcgbnVtKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4LXN0cikpKQorICAgICAg ICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdp b24gYm9sIG1hcmtlci1lbmQpCisgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGJvbCkKKyAg ICAgICAgICAgICAgICAgIChpbnNlcnQgbmV3LXRleHQpKSkKKyAgICAgICAgICAgICAgKGNsLWRl Y2YgbnVtKSkKKyAgICAgICAgICAgIChtZXNzYWdlICJSZW51bWJlcmVkICVkIGl0ZW1zIiBjb3Vu dCkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3LW1hcmtlciAoaXRl bSkKKyAgIlJldHVybiB0aGUgbWFya2VyIHN0cmluZyBmb3IgYSBuZXcgaXRlbSBmb2xsb3dpbmcg SVRFTS4KK0ZvciB1bm9yZGVyZWQgaXRlbXMsIHJldXNlIHRoZSBzYW1lIG1hcmtlciBjaGFyYWN0 ZXIuCitGb3Igb3JkZXJlZCBpdGVtcywgaW5jcmVtZW50IHRoZSBudW1iZXIuIgorICAobGV0KiAo KG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGl0ZW0gMCkpCisgICAgICAgICAodHlwZSAodHJl ZXNpdC1ub2RlLXR5cGUgbWFya2VyKSkKKyAgICAgICAgIChpbmRlbnQgKHNhdmUtZXhjdXJzaW9u CisgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0p KQorICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWluZGVudGF0aW9uKSkpCisgICAgICAgICAo cHJlZml4IChtYWtlLXN0cmluZyBpbmRlbnQgP1xzKSkpCisgICAgKHBjYXNlIHR5cGUKKyAgICAg ICgibGlzdF9tYXJrZXJfbWludXMiIChjb25jYXQgcHJlZml4ICItICIpKQorICAgICAgKCJsaXN0 X21hcmtlcl9wbHVzIiAgKGNvbmNhdCBwcmVmaXggIisgIikpCisgICAgICAoImxpc3RfbWFya2Vy X3N0YXIiICAoY29uY2F0IHByZWZpeCAiKiAiKSkKKyAgICAgICgibGlzdF9tYXJrZXJfZG90Igor ICAgICAgIChsZXQgKChudW0gKHN0cmluZy10by1udW1iZXIgKHRyZWVzaXQtbm9kZS10ZXh0IG1h cmtlciB0KSkpKQorICAgICAgICAgKGNvbmNhdCBwcmVmaXggKG51bWJlci10by1zdHJpbmcgKDEr IG51bSkpICIuICIpKSkKKyAgICAgICgibGlzdF9tYXJrZXJfcGFyZW50aGVzaXMiCisgICAgICAg KGxldCAoKG51bSAoc3RyaW5nLXRvLW51bWJlciAodHJlZXNpdC1ub2RlLXRleHQgbWFya2VyIHQp KSkpCisgICAgICAgICAoY29uY2F0IHByZWZpeCAobnVtYmVyLXRvLXN0cmluZyAoMSsgbnVtKSkg IikgIikpKQorICAgICAgKF8gKGNvbmNhdCBwcmVmaXggIi0gIikpKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tbmV3LW1hcmtlci1mb3ItbGluZSAoaXRlbSkKKyAgIlJldHVybiB0aGUgbWFya2Vy IHN0cmluZyBmb3IgYSBuZXcgaXRlbSBmb2xsb3dpbmcgSVRFTS4KK1doZW4gdGhlIGN1cnJlbnQg bGluZSBoYXMgYSBsaXN0IG1hcmtlciBwYXR0ZXJuIGF0IGEgZGlmZmVyZW50CitpbmRlbnRhdGlv biB0aGFuIElURU0gKGUuZy4sIGEgbmVzdGVkIG1hcmtlciB0aGF0IHRoZSBncmFtbWFyIGRpZAor bm90IHJlY29nbml6ZSBhcyBhIGxpc3RfaXRlbSksIHVzZSB0aGUgY3VycmVudCBsaW5lJ3MgbWFy a2VyLgorT3RoZXJ3aXNlLCBmYWxsIGJhY2sgdG8gYG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3 LW1hcmtlcicuIgorICAobGV0ICgobWFya2VyLW5vZGUgKHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVt IDApKSkKKyAgICAoaWYgKD0gKGxpbmUtbnVtYmVyLWF0LXBvcykKKyAgICAgICAgICAgIChsaW5l LW51bWJlci1hdC1wb3MgKHRyZWVzaXQtbm9kZS1zdGFydCBtYXJrZXItbm9kZSkpKQorICAgICAg ICA7OyBJdGVtJ3MgbWFya2VyIGlzIG9uIHRoZSBjdXJyZW50IGxpbmU6IHVzZSBpdCBub3JtYWxs eS4KKyAgICAgICAgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3LW1hcmtlciBpdGVtKQorICAg ICAgOzsgSXRlbSdzIG1hcmtlciBpcyBvbiBhIGRpZmZlcmVudCBsaW5lLiAgVGhlIHBhcnNlciBt YXkgaGF2ZQorICAgICAgOzsgZmFpbGVkIHRvIHJlY29nbml6ZSBhIG5lc3RlZCBtYXJrZXIgKGUu Zy4sIGEgbG9uZSBgICAtICcKKyAgICAgIDs7IHBhcnNlZCBhcyBhIHNldGV4dCBoZWFkaW5nKS4g IFJlYWQgdGhlIGN1cnJlbnQgbGluZS4KKyAgICAgIChsZXQgKChsaW5lIChidWZmZXItc3Vic3Ry aW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgICAobGluZS1iZWdpbm5pbmctcG9z aXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikpKSkKKyAgICAgICAgKGlmIChzdHJpbmctbWF0Y2gK KyAgICAgICAgICAgICAiXFxgXFwoW1s6Ymxhbms6XV0qXFwpXFwoWy0qK10gXFx8XFwoWzAtOV0r XFwpXFwoWy4pXSBcXClcXCkiCisgICAgICAgICAgICAgbGluZSkKKyAgICAgICAgICAgIChsZXQg KChpbmRlbnQgKG1hdGNoLXN0cmluZyAxIGxpbmUpKQorICAgICAgICAgICAgICAgICAgKG51bSAo bWF0Y2gtc3RyaW5nIDMgbGluZSkpCisgICAgICAgICAgICAgICAgICAoc3VmZml4IChtYXRjaC1z dHJpbmcgNCBsaW5lKSkKKyAgICAgICAgICAgICAgICAgICh1bm9yZGVyZWQgKG1hdGNoLXN0cmlu ZyAyIGxpbmUpKSkKKyAgICAgICAgICAgICAgKGlmIG51bQorICAgICAgICAgICAgICAgICAgKGNv bmNhdCBpbmRlbnQgKG51bWJlci10by1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoMSsgKHN0cmluZy10by1udW1iZXIgbnVtKSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHN1ZmZpeCkKKyAgICAgICAgICAgICAgICAoY29uY2F0IGluZGVudCB1bm9yZGVyZWQp KSkKKyAgICAgICAgICA7OyBObyBtYXJrZXIgcGF0dGVybiBvbiBjdXJyZW50IGxpbmU6IHVzZSBp dGVtJ3MgbWFya2VyLgorICAgICAgICAgIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJr ZXIgaXRlbSkpKSkpKQogCi0oZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1jb25maWd1cmVkLWxh bmd1YWdlcyBuaWwKLSAgIkEgbGlzdCBvZiBsYW5ndWFnZXMgdGhhdCBoYXZlIGJlZW4gc2V0dXAg aW4gdGhpcyBidWZmZXIuCisoZGVmdW4gbWFya2Rvd24tdHMtLWxpbmUtYmxvY2stcXVvdGUtZGVw dGggKCZvcHRpb25hbCBwb3MpCisgICJDb3VudCB0aGUgbnVtYmVyIG9mIGA+JyBibG9jayBxdW90 ZSBtYXJrZXJzIG9uIHRoZSBsaW5lIGF0IFBPUy4iCisgIChzYXZlLWV4Y3Vyc2lvbgorICAgICh3 aGVuIHBvcyAoZ290by1jaGFyIHBvcykpCisgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgIChs ZXQgKChjb3VudCAwKSkKKyAgICAgICh3aGlsZSAoYW5kIChub3QgKGVvbHApKQorICAgICAgICAg ICAgICAgICAgKG1lbXEgKGNoYXItYWZ0ZXIpICcoPz4gP1xzID9cdCkpKQorICAgICAgICAod2hl biAoZXEgKGNoYXItYWZ0ZXIpID8+KQorICAgICAgICAgIChzZXRxIGNvdW50ICgxKyBjb3VudCkp KQorICAgICAgICAoZm9yd2FyZC1jaGFyIDEpKQorICAgICAgY291bnQpKSkKIAotV2hlbiBhIGNv ZGUgYmxvY2sgb2YgYSBsYW5ndWFnZSBhcHBlYXJzLCBgbWFya2Rvd24tdHMtbW9kZScgbG9hZHMK LWxhbmd1YWdlIHNldHVwcyBsaWtlIGZvbnQtbG9jayBhbmQgaW5kZW50YXRpb24gZm9yIHRoYXQg bGFuZ3VhZ2UsIGFuZAotYWRkcyB0aGF0IGxhbmd1YWdlIHRvIHRoaXMgbGlzdC4iKQorKGRlZnVu IG1hcmtkb3duLXRzLW5ld2xpbmUgKCkKKyAgIkluc2VydCBhIG5ld2xpbmUsIGNvbnRpbnVpbmcg dGhlIGN1cnJlbnQgY29udGV4dC4KK0luc2lkZSBhIGxpc3QgaXRlbSwgdGhlIG5ldyBsaW5lIGlz IGluZGVudGVkIHRvIHRoZSBpdGVtJ3MgdGV4dAorY29sdW1uIHNvIHRoZSBwYXJhZ3JhcGggY29u dGludWVzLiAgQSBzZWNvbmQgUkVUIG9uIGEgYmxhbmsKK2NvbnRpbnVhdGlvbiBsaW5lIHJlbW92 ZXMgdGhlIGluZGVudGF0aW9uLCBkcm9wcGluZyBwb2ludCB0bworY29sdW1uIDAgc28gdGhlIHRy ZWUtc2l0dGVyIGdyYW1tYXIgZW5kcyB0aGUgbGlzdC4KK0luc2lkZSBhIGJsb2NrIHF1b3RlLCB0 aGUgbmV3IGxpbmUgaW5jbHVkZXMgdGhlIHF1b3RlIHByZWZpeC4KK090aGVyd2lzZSwgaW5zZXJ0 IGEgcGxhaW4gbmV3bGluZS4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGxldCogKChub2RlICh0cmVl c2l0LW5vZGUtYXQKKyAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24gKGJhY2stdG8taW5k ZW50YXRpb24pIChwb2ludCkpCisgICAgICAgICAgICAgICAgJ21hcmtkb3duKSkKKyAgICAgICAg IDs7IFRyZWUtc2l0dGVyIG1heSByZXBvcnQgYSBub2RlIGluc2lkZSBhIGJsb2NrX3F1b3RlIGV2 ZW4KKyAgICAgICAgIDs7IHdoZW4gcG9pbnQgaXMgb24gYSBibGFuayBsaW5lIHBhc3QgdGhlIHF1 b3RlICh0aGUgbm9kZQorICAgICAgICAgOzsgc3BhbiBjYW4gZXh0ZW5kIGJleW9uZCB0aGUgYD4n IGxpbmVzKS4gIE9ubHkgdHJlYXQgdGhlCisgICAgICAgICA7OyBsaW5lIGFzIGluc2lkZSBhIGJs b2NrIHF1b3RlIGlmIGl0IGFjdHVhbGx5IHN0YXJ0cyB3aXRoCisgICAgICAgICA7OyBhIGA+JyBt YXJrZXIuCisgICAgICAgICAoaW4tYnEgKGFuZCAodHJlZXNpdC1wYXJlbnQtdW50aWwgbm9kZSAi XFxgYmxvY2tfcXVvdGVcXCciKQorICAgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9u CisgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgKGxvb2tpbmctYXQtcCAiWyBcdF0qPiIpKSkpCisgICAgICAgICAoaXRlbSAo bWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpKQorICAgIChjb25kCisgICAgIChpdGVt CisgICAgICAobGV0KiAoKGNvbCAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS10ZXh0LWNvbHVtbiBp dGVtKSkKKyAgICAgICAgICAgICAoYnEtcHJlZml4ICh3aGVuIGluLWJxIChtYXJrZG93bi10cy0t YmxvY2stcXVvdGUtcHJlZml4KSkpCisgICAgICAgICAgICAgOzsgYGNvbCcgaXMgdGhlIGFic29s dXRlIGNvbHVtbiBvZiB0aGUgaXRlbSdzIHRleHQsCisgICAgICAgICAgICAgOzsgd2hpY2ggaW5z aWRlIGEgYmxvY2sgcXVvdGUgaW5jbHVkZXMgdGhlICI+ICIgcHJlZml4CisgICAgICAgICAgICAg Ozsgd2lkdGguICBTaW5jZSB3ZSBpbnNlcnQgYGJxLXByZWZpeCcgc2VwYXJhdGVseSwgd2UKKyAg ICAgICAgICAgICA7OyBtdXN0IHN1YnRyYWN0IGl0cyBsZW5ndGggdG8gYXZvaWQgZG91Ymxpbmcg aXQuCisgICAgICAgICAgICAgKGluZGVudCAoLSBjb2wgKGxlbmd0aCAob3IgYnEtcHJlZml4ICIi KSkpKQorICAgICAgICAgICAgIDs7IFRoZSBjdXJyZW50IGxpbmUgaXMgImJsYW5rIiBpZiBpdCBj b250YWlucyBvbmx5CisgICAgICAgICAgICAgOzsgd2hpdGVzcGFjZSAob3IgcXVvdGUgcHJlZml4 ICsgd2hpdGVzcGFjZSkgYW5kIG5vCisgICAgICAgICAgICAgOzsgYWN0dWFsIHRleHQgZnJvbSBh IHByZXZpb3VzIFJFVCdzIGNvbnRpbnVhdGlvbiBpbmRlbnQuCisgICAgICAgICAgICAgKGJsYW5r LWxpbmUtcCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJl Z2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9va2luZy1h dC1wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXls+IFx0XSokIikpKQorICAgICAg ICAgICAgIDs7IFBvaW50IGlzIGJlZm9yZSB0aGUgaXRlbSdzIHRleHQgKGF0IG9yIGJlZm9yZSB0 aGUKKyAgICAgICAgICAgICA7OyBtYXJrZXIpLiAgQSBwbGFpbiBuZXdsaW5lIGlzIGFwcHJvcHJp YXRlIGhlcmUsIGFkZGluZworICAgICAgICAgICAgIDs7IGNvbnRpbnVhdGlvbiBpbmRlbnQgd291 bGQgc2hpZnQgdGhlIGV4aXN0aW5nIGNvbnRlbnQKKyAgICAgICAgICAgICA7OyB0byB0aGUgcmln aHQuCisgICAgICAgICAgICAgKGJlZm9yZS10ZXh0LXAgKDw9IChjdXJyZW50LWNvbHVtbikgY29s KSkpCisgICAgICAgIChjb25kCisgICAgICAgICAoYmxhbmstbGluZS1wCisgICAgICAgICAgOzsg VGhlIHVzZXIgcHJlc3NlZCBSRVQgb24gYW4gYWxyZWFkeS1ibGFuayBjb250aW51YXRpb24KKyAg ICAgICAgICA7OyBsaW5lLiAgSW5zdGVhZCBvZiBhZGRpbmcgeWV0IGFub3RoZXIgaW5kZW50ZWQg YmxhbmsKKyAgICAgICAgICA7OyBsaW5lLCByZW1vdmUgdGhlIGluZGVudGF0aW9uIGFuZCBpbnNl cnQgYSBwbGFpbgorICAgICAgICAgIDs7IG5ld2xpbmUuICBUaGlzIGRyb3BzIHBvaW50IHRvIGNv bHVtbiAwLCB3aGljaCBpcyB0aGUKKyAgICAgICAgICA7OyBvbmx5IHdheSB0aGUgdHJlZS1zaXR0 ZXIgbWFya2Rvd24gZ3JhbW1hciBlbmRzIGEgbGlzdDoKKyAgICAgICAgICA7OyBibGFuayBsaW5l cyBhbG9uZSBkbyBOT1QgZW5kIGEgbGlzdCwgb25seQorICAgICAgICAgIDs7IG5vbi1pbmRlbnRl ZCBjb250ZW50IGRvZXMuICBTbyB0aGlzIGdpdmVzIHRoZSB1c2VyIGEKKyAgICAgICAgICA7OyBu YXR1cmFsICJSRVQgUkVUIHRvIGV4aXQgdGhlIGxpc3QiIHdvcmtmbG93LgorICAgICAgICAgIChk ZWxldGUtcmVnaW9uIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxpbmUtZW5kLXBvc2l0aW9u KSkKKyAgICAgICAgICAobmV3bGluZSkpCisgICAgICAgICAoYmVmb3JlLXRleHQtcAorICAgICAg ICAgIDs7IFBvaW50IGlzIG9uIG9yIGJlZm9yZSB0aGUgbGlzdCBtYXJrZXI7IGp1c3QgaW5zZXJ0 IGEKKyAgICAgICAgICA7OyBwbGFpbiBuZXdsaW5lIHNvIHRoZSBpdGVtIGlzIHB1c2hlZCBkb3du IHVuY2hhbmdlZC4KKyAgICAgICAgICAobmV3bGluZSkpCisgICAgICAgICAodAorICAgICAgICAg IChkZWxldGUtaG9yaXpvbnRhbC1zcGFjZSkKKyAgICAgICAgICAobmV3bGluZSkKKyAgICAgICAg ICAod2hlbiBicS1wcmVmaXggKGluc2VydCBicS1wcmVmaXgpKQorICAgICAgICAgIChpbnNlcnQg KG1ha2Utc3RyaW5nIGluZGVudCA/XHMpKSkpKSkKKyAgICAgKGluLWJxCisgICAgICAobGV0ICgo YnEtcHJlZml4IChtYXJrZG93bi10cy0tYmxvY2stcXVvdGUtcHJlZml4KSkKKyAgICAgICAgICAg IDs7IEEgbGluZSB3aXRoIG9ubHkgcXVvdGUgbWFya2VycyBhbmQgd2hpdGVzcGFjZSAoZS5nLiwK KyAgICAgICAgICAgIDs7ICI+ICIpIGlzICJibGFuayIgaW5zaWRlIHRoZSBxdW90ZS4gIFJFVCBo ZXJlIGV4aXRzIHRoZQorICAgICAgICAgICAgOzsgcXVvdGUsIHNhbWUgYXMgUkVUIG9uIGEgYmxh bmsgY29udGludWF0aW9uIGxpbmUgZXhpdHMgYQorICAgICAgICAgICAgOzsgbGlzdDogcmVtb3Zl IHRoZSBwcmVmaXggYW5kIGRyb3AgdG8gY29sdW1uIDAuCisgICAgICAgICAgICAoYmxhbmstbGlu ZS1wIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5p bmctb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9va2luZy1hdC1wICJe Wz4gXHRdKiQiKSkpKQorICAgICAgICAoaWYgYmxhbmstbGluZS1wCisgICAgICAgICAgICAocHJv Z24KKyAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9u KSAobGluZS1lbmQtcG9zaXRpb24pKQorICAgICAgICAgICAgICAobmV3bGluZSkpCisgICAgICAg ICAgKGRlbGV0ZS1ob3Jpem9udGFsLXNwYWNlKQorICAgICAgICAgIChuZXdsaW5lKQorICAgICAg ICAgIChpbnNlcnQgYnEtcHJlZml4KSkpKQorICAgICA7OyBEZWZhdWx0OiBwbGFpbiBuZXdsaW5l LiAgVGhpcyBhbHNvIGhhbmRsZXMgZW1wdHkgbGlzdCBtYXJrZXJzCisgICAgIDs7IChlLmcuLCAi LSAiIHdpdGggbm8gdGV4dCkgdGhhdCB0aGUgZ3JhbW1hciBwYXJzZXMgYXMgRVJST1IKKyAgICAg Ozsgbm9kZXMgcmF0aGVyIHRoYW4gbGlzdF9pdGVtIG5vZGVzLgorICAgICA7OworICAgICA7OyBX aGVuIHRoZSBjdXJyZW50IGxpbmUgaXMgYmxhbmsgKHdoaXRlc3BhY2Ugb25seSksIGl0IGlzIGEK KyAgICAgOzsgY29udGludWF0aW9uLWluZGVudCBsaW5lIGxlZnQgYnkgYSBwcmV2aW91cyBSRVQg dGhhdAorICAgICA7OyB0cmVlLXNpdHRlciBubyBsb25nZXIgY29uc2lkZXJzIHBhcnQgb2YgYSBs aXN0X2l0ZW0uICBDbGVhcgorICAgICA7OyB0aGUgd2hpdGVzcGFjZSBzbyBubyB0cmFpbGluZyBz cGFjZXMgcmVtYWluLCBhbmQgaW5zZXJ0IGEKKyAgICAgOzsgcGxhaW4gbmV3bGluZSBhdCBjb2x1 bW4gMCB0byBleGl0IHRoZSBsaXN0IGNvbnRleHQuCisgICAgICh0CisgICAgICAod2hlbiAoc2F2 ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAg ICAgICAobG9va2luZy1hdC1wICJeWyBcdF0rJCIpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiAo bGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgKG5l d2xpbmUpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtaW5zZXJ0LWxpc3QtaXRlbSAoKQorICAi SW5zZXJ0IGEgbmV3IGxpc3QgaXRlbSwgc3BsaXR0aW5nIHRleHQgYXQgcG9pbnQuCitUZXh0IGFm dGVyIHBvaW50IG1vdmVzIHRvIHRoZSBuZXcgaXRlbS4gIEF0IHRoZSBiZWdpbm5pbmcgb2YgYSBs aW5lLAorYW4gZW1wdHkgaXRlbSBpcyBpbnNlcnRlZCBhYm92ZSBhbmQgdGhlIGN1cnJlbnQgY29u dGVudCBpcyBwdXNoZWQgZG93bi4KK0luc2lkZSBhIGJsb2NrIHF1b3RlLCB0aGUgbmV3IGxpbmUg aW5jbHVkZXMgdGhlIHF1b3RlIHByZWZpeC4KK0ZvciBvcmRlcmVkIGxpc3RzLCB0aGUgbnVtYmVy IGlzIGluY3JlbWVudGVkLgorV2hlbiBub3QgaW5zaWRlIGEgbGlzdCwgZmFsbCBiYWNrIHRvIGBt YXJrZG93bi10cy1uZXdsaW5lJy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGxldCogKChub2RlICh0 cmVlc2l0LW5vZGUtYXQKKyAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24gKGJhY2stdG8t aW5kZW50YXRpb24pIChwb2ludCkpCisgICAgICAgICAgICAgICAgJ21hcmtkb3duKSkKKyAgICAg ICAgIChpbi1icSAoYW5kICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBibG9ja19xdW90 ZVxcJyIpCisgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAo bG9va2luZy1hdC1wICJbIFx0XSo+IikpKSkKKyAgICAgICAgIChicS1wcmVmaXggKHdoZW4gaW4t YnEgKG1hcmtkb3duLXRzLS1ibG9jay1xdW90ZS1wcmVmaXgpKSkKKyAgICAgICAgIChpdGVtICht YXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KSkpCisgICAgKGNvbmQKKyAgICAgKChhbmQg aXRlbQorICAgICAgICAgICAob3IgKG5vdCBpbi1icSkKKyAgICAgICAgICAgICAgICg+PSAobWFy a2Rvd24tdHMtLWxpbmUtYmxvY2stcXVvdGUtZGVwdGgpCisgICAgICAgICAgICAgICAgICAgKG1h cmtkb3duLXRzLS1saW5lLWJsb2NrLXF1b3RlLWRlcHRoCisgICAgICAgICAgICAgICAgICAgICh0 cmVlc2l0LW5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKSkpKSkKKyAgICAg IChsZXQqICgobmV3LW1hcmtlciAobWFya2Rvd24tdHMtLW5ldy1tYXJrZXItZm9yLWxpbmUgaXRl bSkpCisgICAgICAgICAgICAgKGF0LWJvbCAoPD0gKGN1cnJlbnQtY29sdW1uKQorICAgICAgICAg ICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGJhY2stdG8taW5kZW50YXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3Vy cmVudC1jb2x1bW4pKSkpCisgICAgICAgICAgICAgKHRhaWwgKHdoZW4gKGFuZCAobm90IGF0LWJv bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGxvb2tpbmctYXQtcCAiWyBc dF0qJCIpKSkKKyAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtYW5kLWV4dHJhY3QtcmVnaW9u CisgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSAobGluZS1lbmQtcG9zaXRpb24pKSkpKQor ICAgICAgICAoaWYgYXQtYm9sCisgICAgICAgICAgICA7OyBBdCBCT0w6IGluc2VydCBlbXB0eSBp dGVtIGFib3ZlLCBwdXNoIGN1cnJlbnQgbGluZSBkb3duLgorICAgICAgICAgICAgKHByb2duCisg ICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgKHdoZW4gYnEt cHJlZml4IChpbnNlcnQgYnEtcHJlZml4KSkKKyAgICAgICAgICAgICAgKGluc2VydCBuZXctbWFy a2VyICJcbiIpCisgICAgICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0aW9uKSkKKyAgICAgICAg ICA7OyBNaWQtbGluZSBvciBFT0w6IG5ldyBpdGVtIGJlbG93IHdpdGggdGFpbCB0ZXh0LgorICAg ICAgICAgIChkZWxldGUtaG9yaXpvbnRhbC1zcGFjZSkKKyAgICAgICAgICAobmV3bGluZSkKKyAg ICAgICAgICAod2hlbiBicS1wcmVmaXggKGluc2VydCBicS1wcmVmaXgpKQorICAgICAgICAgIChp bnNlcnQgbmV3LW1hcmtlcikKKyAgICAgICAgICAod2hlbiB0YWlsIChzYXZlLWV4Y3Vyc2lvbiAo aW5zZXJ0IChzdHJpbmctdHJpbS1sZWZ0IHRhaWwpKSkpKSkpCisKKyAgICAgOzsgTm90IGluIGEg bGlzdDogZmFsbCBiYWNrIHRvIG5ld2xpbmUgYmVoYXZpb3IuCisgICAgICh0IChtYXJrZG93bi10 cy1uZXdsaW5lKSkpKSkKKworOzs7IEZpbGxpbmc6CisKKzs7IFRPRE86IFJlbW92ZSB0aGUgcGlw ZV90YWJsZSBibG9jayBpZiB3ZSBpbXBsZW1lbnQgcGlwZV90YWJsZSBmaWxsLgorKGRlZmNvbnN0 IG1hcmtkb3duLXRzLS1maWxsLXVuZmlsbGFibGUtYmxvY2stcXVlcnkKKyAgJyhbKGZlbmNlZF9j b2RlX2Jsb2NrKSAoaW5kZW50ZWRfY29kZV9ibG9jaykgKHBpcGVfdGFibGUpXSBAYmxvY2spCisg ICJUcmVlLXNpdHRlciBxdWVyeSBtYXRjaGluZyBibG9ja3Mgd2hlcmUgZmlsbGluZyBpcyBpbmhp Yml0ZWQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4gKGl0 ZW0pCisgICJSZXR1cm4gdGhlIGNvbHVtbiB3aGVyZSB0aGUgdGV4dCBvZiBsaXN0IElURU0gc3Rh cnRzLgorVGhpcyBpcyB0aGUgY29sdW1uIG9mIHRoZSBmaXJzdCBwYXJhZ3JhcGggbm9kZSBpbnNp ZGUgSVRFTSwgb3IKK3RoZSB3aWR0aCBvZiB0aGUgbGlzdCBtYXJrZXIgaWYgbm8gcGFyYWdyYXBo IGlzIGZvdW5kLiIKKyAgKGxldCAoKHBhcmFncmFwaCAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBp dGVtICJcXGBwYXJhZ3JhcGhcXCciKSkpCisgICAgKGlmIHBhcmFncmFwaAorICAgICAgICAoc2F2 ZS1leGN1cnNpb24KKyAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgcGFy YWdyYXBoKSkKKyAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKQorICAgICAgKGxldCAoKG1hcmtl ciAodHJlZXNpdC1ub2RlLWNoaWxkIGl0ZW0gMCkpKQorICAgICAgICAoLSAodHJlZXNpdC1ub2Rl LWVuZCBtYXJrZXIpCisgICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyKSkpKSkp CisKKyhkZWZ1biBtYXJrZG93bi10cy0tZmlsbC1saXN0LWl0ZW0gKGl0ZW0ganVzdGlmeSkKKyAg IkZpbGwgdGhlIGNvbnRlbnRzIG9mIGxpc3QgSVRFTSwgcHJlc2VydmluZyBpdHMgaW5kZW50YXRp b24uCitOYXJyb3dzIHRvIElURU0ncyBvd24gcGFyYWdyYXBoIGNvbnRlbnQgKGV4Y2x1ZGluZyBu ZXN0ZWQgbGlzdHMpCithbmQgc2V0cyBgZmlsbC1wcmVmaXgnIHRvIGFsaWduIGNvbnRpbnVhdGlv biBsaW5lcyB3aXRoIHRoZSBzdGFydAorb2YgdGhlIGl0ZW0ncyB0ZXh0LiAgSlVTVElGWSBpcyBh cyBpbiBgZmlsbC1wYXJhZ3JhcGgnLiIKKyAgKGxldCogKChmaWxsLXByZWZpeCAobWFrZS1zdHJp bmcgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4gaXRlbSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgP1xzKSkKKyAgICAgICAgIDs7IEZpbmQgdGhlIGl0ZW0n cyBvd24gcGFyYWdyYXBoIChmaXJzdCBwYXJhZ3JhcGggY2hpbGQpLgorICAgICAgICAgOzsgSWYg dGhlIGl0ZW0gaGFzIG5lc3RlZCBsaXN0cywgbmFycm93IHRvIGp1c3QgdGhlCisgICAgICAgICA7 OyBwYXJhZ3JhcGggc28gd2UgZG9uJ3QgbWVyZ2UgbmVzdGVkIGl0ZW1zLgorICAgICAgICAgKHBh cmEgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgaXRlbSAiXFxgcGFyYWdyYXBoXFwnIiBuaWwgbmls IDEpKQorICAgICAgICAgKGJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pKQorICAgICAgICAg KGVuZCAoaWYgcGFyYQorICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgcGFyYSkK KyAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBpdGVtKSkpCisgICAgICAgICA7OyBV c2UgZGVmYXVsdCBwYXJhZ3JhcGggbW90aW9uIGluc2lkZSB0aGUgbmFycm93ZWQgcmVnaW9uCisg ICAgICAgICA7OyBzbyB0aGF0IHRoZSBpbm5lciBgZmlsbC1wYXJhZ3JhcGgnIGRvZXMgbm90IHJl LWVudGVyIG91cgorICAgICAgICAgOzsgY3VzdG9tIHBhcmFncmFwaC1maW5kaW5nIGxvZ2ljLgor ICAgICAgICAgKGZpbGwtZm9yd2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24gIydmb3J3YXJkLXBhcmFn cmFwaCkpCisgICAgKHNhdmUtcmVzdHJpY3Rpb24KKyAgICAgIChuYXJyb3ctdG8tcmVnaW9uIGJl ZyBlbmQpCisgICAgICAoZmlsbC1wYXJhZ3JhcGgganVzdGlmeSkpCisgICAgOzsgUmV0dXJuIG5v bi1uaWwgdG8gc2lnbmFsIHRoYXQgZmlsbGluZyBoYXMgYmVlbiBoYW5kbGVkLAorICAgIDs7IGFz IHBlciB0aGUgY29udHJhY3Qgb2YgYGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uJy4KKyAgICB0KSkK KworKGRlZnVuIG1hcmtkb3duLXRzLS1hZGFwdGl2ZS1maWxsICgpCisgICJSZXR1cm4gdGhlIGZp bGwgcHJlZml4IGZvciB0aGUgY3VycmVudCBsaW5lIGluIE1hcmtkb3duLgorV2hlbiBpbnNpZGUg YSBsaXN0IGl0ZW0sIHJldHVybiBzcGFjZXMgbWF0Y2hpbmcgdGhlIGNvbHVtbiB3aGVyZQordGhl IGl0ZW0ncyB0ZXh0IHN0YXJ0cy4iCisgIChhbmQtbGV0KiAoKG5vZGUgKHRyZWVzaXQtbm9kZS1h dAorICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24gKGJhY2stdG8taW5kZW50YXRp b24pIChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICdtYXJrZG93bikpCisgICAgICAgICAg ICAgKGl0ZW0gKHRyZWVzaXQtcGFyZW50LXVudGlsIG5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkK KyAgICAobWFrZS1zdHJpbmcgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4gaXRl bSkgP1xzKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZmlsbC1mb3J3YXJkLXBhcmFncmFwaCAo YXJnKQorICAiTW92ZSBmb3J3YXJkIGJ5IEFSRyBwYXJhZ3JhcGhzLCByZXNwZWN0aW5nIE1hcmtk b3duIHN0cnVjdHVyZS4KK0xpc3QgaXRlbXMgYXJlIHRyZWF0ZWQgYXMgaW5kaXZpZHVhbCBwYXJh Z3JhcGhzLiAgQmxvY2tzIG1hdGNoZWQKK2J5IGBtYXJrZG93bi10cy0tZmlsbC11bmZpbGxhYmxl LWJsb2NrLXF1ZXJ5JyBhcmUgc2tpcHBlZDogYm90aAorZm9yd2FyZCBhbmQgYmFja3dhcmQgbW90 aW9uIG1vdmUgdG8gdGhlIGVuZCBvZiB0aGUgYmxvY2ssIHNvCitgZmlsbC1yZWdpb24nIHNlZXMg YSB6ZXJvLWxlbmd0aCByZWdpb24gYW5kIGxlYXZlcyB0aGUgYmxvY2sKK3VuZmlsbGVkLiIKKyAg KGxldCAoKGRpcmVjdGlvbiAoaWYgKD4gYXJnIDApIDEgLTEpKQorICAgICAgICAoY291bnQgKGFi cyBhcmcpKQorICAgICAgICAobW92ZWQgMCkpCisgICAgKGRvdGltZXMgKF8gY291bnQpCisgICAg ICA7OyBGb3IgYmFja3dhcmQgbW90aW9uLCBza2lwIGJhY2sgb3ZlciB3aGl0ZXNwYWNlIHRvIGZp bmQKKyAgICAgIDs7IHRoZSBpdGVtIHdlIGFyZSBsZWF2aW5nLCBub3QgdGhlIG5leHQgb25lLgor ICAgICAgKGxldCogKChwb3MgKGlmICg8IGRpcmVjdGlvbiAwKQorICAgICAgICAgICAgICAgICAg ICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMt YmFja3dhcmQgIiBcdFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgIChtYXggKHBvaW50LW1p bikgKDEtIChwb2ludCkpKSkKKyAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAg ICAgICAgKGJsb2NrIChjYXIgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAodHJlZXNpdC1idWZmZXItcm9vdC1ub2RlICdtYXJrZG93bikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1xdWVy eQorICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKDErIHBvcykpKSkKKyAgICAgICAgICAg ICAoaW5kZW50ZWQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZ290by1jaGFyIHBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhY2st dG8taW5kZW50YXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQor ICAgICAgICAgICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQgaW5kZW50ZWQtcG9zICdtYXJrZG93 bikpCisgICAgICAgICAgICAgKGl0ZW0gKHRyZWVzaXQtcGFyZW50LXVudGlsIG5vZGUgIlxcYGxp c3RfaXRlbVxcJyIpKSkKKyAgICAgICAgOzsgV2hlbiBtb3ZpbmcgZm9yd2FyZCBmcm9tIHdoaXRl c3BhY2UgYmV0d2VlbiBsaXN0IGl0ZW1zLAorICAgICAgICA7OyBza2lwIHRvIHRoZSBuZXh0IG5v bi1ibGFuayBwb3NpdGlvbiBhbmQgY2hlY2sgYWdhaW4uCisgICAgICAgICh3aGVuIChhbmQgKG5v dCBpdGVtKSAobm90IGJsb2NrKSAoPiBkaXJlY3Rpb24gMCkpCisgICAgICAgICAgKGxldCAoKG5l eHQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lw LWNoYXJzLWZvcndhcmQgIiBcdFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9p bnQpKSkpCisgICAgICAgICAgICAoc2V0cSBub2RlICh0cmVlc2l0LW5vZGUtYXQgbmV4dC1wb3Mg J21hcmtkb3duKSkKKyAgICAgICAgICAgIChzZXRxIGl0ZW0gKHRyZWVzaXQtcGFyZW50LXVudGls IG5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkpCisgICAgICAgIChjb25kCisgICAgICAgICA7OyBJ bnNpZGUgYW4gdW5maWxsYWJsZSBibG9jazogc2tpcCBvdmVyIGl0IGVudGlyZWx5LgorICAgICAg ICAgKGJsb2NrCisgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCAoY2RyIGJs b2NrKSkpCisgICAgICAgICAgKHNldHEgbW92ZWQgKDErIG1vdmVkKSkpCisgICAgICAgICA7OyBJ bnNpZGUgYSBsaXN0IGl0ZW06IHRyZWF0IGFzIHBhcmFncmFwaCBib3VuZGFyeS4KKyAgICAgICAg IChpdGVtCisgICAgICAgICAgKGlmICg+IGRpcmVjdGlvbiAwKQorICAgICAgICAgICAgICAoZ290 by1jaGFyICh0cmVlc2l0LW5vZGUtZW5kIGl0ZW0pKQorICAgICAgICAgICAgKGdvdG8tY2hhciAo dHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pKSkKKyAgICAgICAgICAoc2V0cSBtb3ZlZCAoMSsgbW92 ZWQpKSkKKyAgICAgICAgIDs7IERlZmF1bHQ6IHVzZSBzdGFuZGFyZCBwYXJhZ3JhcGggbW90aW9u LgorICAgICAgICAgKHQKKyAgICAgICAgICAoZm9yd2FyZC1wYXJhZ3JhcGggZGlyZWN0aW9uKQor ICAgICAgICAgIChzZXRxIG1vdmVkICgxKyBtb3ZlZCkpKSkpKQorICAgIDs7IFJldHVybiB0aGUg bnVtYmVyIG9mIHBhcmFncmFwaHMgbGVmdCB0byBtb3ZlICgwID0gYWxsIGRvbmUpLgorICAgICgt IGNvdW50IG1vdmVkKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZmlsbC1wYXJhZ3JhcGggKCZv cHRpb25hbCBqdXN0aWZ5KQorICAiRmlsbCB0aGUgY3VycmVudCBwYXJhZ3JhcGgsIHJlc3BlY3Rp bmcgTWFya2Rvd24gYmxvY2sgc3RydWN0dXJlLgorVGhpcyBmdW5jdGlvbiBwcmV2ZW50cyBmaWxs aW5nIGluc2lkZSBibG9ja3MgbWF0Y2hlZCBieQorYG1hcmtkb3duLXRzLS1maWxsLXVuZmlsbGFi bGUtYmxvY2stcXVlcnknLCBhbmQgZmlsbHMgd2l0aGluIGxpc3QKK2l0ZW1zIHdpdGhvdXQgbWVy Z2luZyBhZGphY2VudCBpdGVtcy4gIEpVU1RJRlkgaXMgYXMgaW4KK2BmaWxsLXBhcmFncmFwaCcu IgorICAoY29uZCoKKyAgIDs7IERvbid0IGZpbGwgaW5zaWRlIHVuZmlsbGFibGUgYmxvY2tzLiAg VXNlIGEgcXVlcnkgYWdhaW5zdCB0aGUKKyAgIDs7IHJvb3Qgbm9kZSBiZWNhdXNlIGB0cmVlc2l0 LW5vZGUtYXQnIG1heSBub3QgcmV0dXJuIGEgbm9kZQorICAgOzsgaW5zaWRlIHRoZSBibG9jayB3 aGVuIHBvaW50IGlzIG9uIGFub255bW91cyAodW5uYW1lZCkgdGV4dC4KKyAgICgodHJlZXNpdC1x dWVyeS1jYXB0dXJlCisgICAgICh0cmVlc2l0LWJ1ZmZlci1yb290LW5vZGUgJ21hcmtkb3duKQor ICAgICBtYXJrZG93bi10cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5CisgICAgIChwb2lu dCkgKG1pbiAoMSsgKHBvaW50KSkgKHBvaW50LW1heCkpKQorICAgIHQpCisgICA7OyBGaWxsIHdp dGhpbiB0aGUgZW5jbG9zaW5nIGxpc3QgaXRlbS4gIFVzZQorICAgOzsgYG1hcmtkb3duLXRzLS1s aXN0LWl0ZW0tYXQtcG9pbnQnIHdoaWNoIGhhbmRsZXMgYmxvY2sgcXVvdGUKKyAgIDs7IG1hcmtl cnMuICBXaGVuIHRoZSBsaXN0IGl0ZW0gaXMgaW5zaWRlIGEgYmxvY2sgcXVvdGUsIGRlbGVnYXRl CisgICA7OyB0byB0aGUgYmxvY2sgcXVvdGUgZmlsbGVyIHdoaWNoIGhhbmRsZXMgYD4gJyBwcmVm aXhlcyBjb3JyZWN0bHkuCisgICAoKGJpbmQtYW5kKiAoaXRlbSAobWFya2Rvd24tdHMtLWxpc3Qt aXRlbS1hdC1wb2ludCkpKQorICAgIChpZiAodHJlZXNpdC1wYXJlbnQtdW50aWwgaXRlbSAiXFxg YmxvY2tfcXVvdGVcXCciKQorICAgICAgICAobWFya2Rvd24tdHMtLWZpbGwtYmxvY2stcXVvdGUg anVzdGlmeSkKKyAgICAgIChtYXJrZG93bi10cy0tZmlsbC1saXN0LWl0ZW0gaXRlbSBqdXN0aWZ5 KSkpCisgICA7OyBQb2ludCBpcyBvbiBhIGJsYW5rIGxpbmUgYmVmb3JlIGEgbGlzdC4gIElmIHRo ZSBuZXh0CisgICA7OyBub24td2hpdGVzcGFjZSBwb3NpdGlvbiBmYWxscyBpbnNpZGUgYSBsaXN0 IGl0ZW0sIGZpbGwgdGhhdCBpdGVtLgorICAgKChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKGJlZ2lu bmluZy1vZi1saW5lKQorICAgICAgKGxvb2tpbmctYXQtcCAiWyBcdF0qJCIpKQorICAgIChhbmQt bGV0KiAoKG5leHQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0XG4iKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHBvaW50KSkpCisgICAgICAgICAgICAgICAobmV4dC1ub2RlICh0cmVlc2l0LW5vZGUtYXQg bmV4dC1wb3MgJ21hcmtkb3duKSkKKyAgICAgICAgICAgICAgIChpdGVtICh0cmVlc2l0LXBhcmVu dC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgIG5leHQtbm9kZSAiXFxgbGlzdF9pdGVtXFwn IikpKQorICAgICAgKG1hcmtkb3duLXRzLS1maWxsLWxpc3QtaXRlbSBpdGVtIGp1c3RpZnkpKSkK KyAgIDs7IEZpbGwgd2l0aGluIGEgYmxvY2sgcXVvdGUuICBOYXJyb3cgdG8gdGhlIHBhcmFncmFw aCBub2RlIGF0CisgICA7OyBwb2ludCdzIG5lc3RpbmcgbGV2ZWwgc28gbGluZXMgd2l0aCBkaWZm ZXJlbnQgYD4gJyBkZXB0aHMKKyAgIDs7IGFyZSBub3QgbWVyZ2VkLgorICAgKCh0cmVlc2l0LXBh cmVudC11bnRpbAorICAgICAodHJlZXNpdC1ub2RlLWF0CisgICAgICAoc2F2ZS1leGN1cnNpb24g KGJhY2stdG8taW5kZW50YXRpb24pIChwb2ludCkpCisgICAgICAnbWFya2Rvd24pCisgICAgICJc XGBibG9ja19xdW90ZVxcJyIpCisgICAgKG1hcmtkb3duLXRzLS1maWxsLWJsb2NrLXF1b3RlIGp1 c3RpZnkpKQorICAgOzsgRmlsbCB3aXRoaW4gYW4gSFRNTCBjb21tZW50LiAgVGhlIG5vZGUgdHlw ZSBpcyAiaHRtbF9ibG9jayIKKyAgIDs7IGluIGdyYW1tYXIgdjAuNC54IGFuZCAiY29tbWVudCIg aW4gc29tZSBvdGhlciB2ZXJzaW9ucy4KKyAgICgoYmluZC1hbmQqIChibG9jayAobGV0ICgobiAo dHJlZXNpdC1ub2RlLWF0IChwb2ludCkgJ21hcmtkb3duKSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAob3IgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG4gIlxcYFxcKD86aHRtbF9ibG9ja1xcfGNvbW1lbnRcXClcXCciKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChhbmQgKG1lbWJlciAodHJlZXNpdC1ub2RlLXR5cGUgbikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygiaHRtbF9ibG9jayIgImNvbW1l bnQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4pKSkpKQorICAgIChtYXJr ZG93bi10cy0tZmlsbC1odG1sLWNvbW1lbnQgYmxvY2sganVzdGlmeSkpCisgICA7OyBEZWZhdWx0 OiBsZXQgZmlsbC1wYXJhZ3JhcGggaGFuZGxlIGl0LgorICAgKHQgbmlsKSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy0tZmlsbC1odG1sLWNvbW1lbnQgKG5vZGUganVzdGlmeSkKKyAgIkZpbGwgSFRN TCBjb21tZW50IE5PREUsIGFsaWduaW5nIGNvbnRpbnVhdGlvbiBsaW5lcy4KK1JldHVybiB0IGlm IE5PREUgaXMgYSBjb21tZW50IGFuZCB3YXMgZmlsbGVkLCBuaWwgb3RoZXJ3aXNlLgorSlVTVElG WSBpcyBhcyBpbiBgZmlsbC1wYXJhZ3JhcGgnLiIKKyAgKHdoZW4gKHNhdmUtZXhjdXJzaW9uCisg ICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAg IChsb29raW5nLWF0LXAgIjwhLS0iKSkKKyAgICAobGV0ICgoZmlsbC1wcmVmaXggKHNhdmUtZXhj dXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2Rl LXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXN0cmluZyAoKyAo Y3VycmVudC1jb2x1bW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChsZW5ndGggIjwhLS0gIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ID9ccykpKQorICAgICAgICAgIChhZGFwdGl2ZS1maWxsLWZ1bmN0aW9uIG5pbCkKKyAgICAgICAg ICAoZmlsbC1mb3J3YXJkLXBhcmFncmFwaC1mdW5jdGlvbiAjJ2ZvcndhcmQtcGFyYWdyYXBoKQor ICAgICAgICAgIChmaWxsLXBhcmFncmFwaC1mdW5jdGlvbiBuaWwpKQorICAgICAgKHNhdmUtcmVz dHJpY3Rpb24KKyAgICAgICAgKG5hcnJvdy10by1yZWdpb24gKHRyZWVzaXQtbm9kZS1zdGFydCBu b2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkK KyAgICAgICAgKGZpbGwtcGFyYWdyYXBoIGp1c3RpZnkpKQorICAgICAgdCkpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWJsb2NrLXF1b3RlLXByZWZpeCAoKQorICAiUmV0dXJuIHRoZSBibG9jayBx dW90ZSBwcmVmaXggc3RyaW5nIGZyb20gdGhlIGN1cnJlbnQgbGluZS4KK1JlYWQgdGhlIGFjdHVh bCBgPicgbWFya2VycyAod2l0aCB3aGF0ZXZlciBzcGFjaW5nIHRoZSB1c2VyIHdyb3RlKQorZnJv bSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIHNvIHRoYXQgZmlsbCBwcmVzZXJ2ZXMgdGhlIGV4 aXN0aW5nCitzdHlsZSAoZS5nLiwgYD4+PiAnIHN0YXlzIGA+Pj4gJywgYD4gPiA+ICcgc3RheXMg YD4gPiA+ICcpLiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGJlZ2lubmluZy1vZi1saW5lKQor ICAgIChpZiAobG9va2luZy1hdCAiXFwoWz4gXHRdKj5cXClbIFx0XSoiKQorICAgICAgICAoY29u Y2F0IChtYXRjaC1zdHJpbmcgMCkpCisgICAgICAiPiAiKSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy0tZmlsbC1ibG9jay1xdW90ZSAoanVzdGlmeSkKKyAgIkZpbGwgdGhlIHBhcmFncmFwaCBhdCBw b2ludCBpbnNpZGUgYSBibG9jayBxdW90ZS4KK0ZpbmQgdGhlIHBhcmFncmFwaCBub2RlIGF0IHBv aW50IHdpdGhpbiB0aGUgYmxvY2sgcXVvdGUgYW5kIGZpbGwKK29ubHkgdGhhdCBwYXJhZ3JhcGgs IHByZXNlcnZpbmcgdGhlIGA+ICcgcHJlZml4LiAgV2hlbiB0aGUKK3BhcmFncmFwaCBpcyBpbnNp ZGUgYSBsaXN0IGl0ZW0sIGFsaWduIGNvbnRpbnVhdGlvbiBsaW5lcyB3aXRoCit0aGUgaXRlbSdz IHRleHQgY29sdW1uLiAgSlVTVElGWSBpcyBhcyBpbiBgZmlsbC1wYXJhZ3JhcGgnLiIKKyAgOzsg U2tpcCBwYXN0IGA+ICcgbWFya2VycyBhbmQgYW55IGxpc3QgbWFya2VyIHRvIGxhbmQgaW5zaWRl IHRoZQorICA7OyBjb250ZW50LCB3aGVyZSB0aGUgcGFyYWdyYXBoIG5vZGUgbGl2ZXMuCisgIChs ZXQqICgoY29udGVudC1wb3MgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAg ICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFy cy1mb3J3YXJkICI+IFx0IikKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IElmIHdlIGxhbmQg b24gYSBsaXN0IG1hcmtlciwgc2tpcCBwYXN0IGl0LgorICAgICAgICAgICAgICAgICAgICAgICAg KHdoZW4gKGxvb2tpbmctYXQgIlstKitdIFxcfFswLTldK1suKV1ccyIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAobWluICgxKyAocG9pbnQpKSAocG9pbnQtbWF4KSkpKQorICAgICAgICAgKG5vZGUg KHRyZWVzaXQtbm9kZS1hdCBjb250ZW50LXBvcyAnbWFya2Rvd24pKQorICAgICAgICAgKHBhcmEg KHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAgbm9kZSAobGFtYmRhIChuKQor ICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4pICJwYXJh Z3JhcGgiKSkpKSkKKyAgICAod2hlbiBwYXJhCisgICAgICA7OyBUaGUgZ3JhbW1hciBtYXkgaW5j bHVkZSB0cmFpbGluZyBibG9ja19jb250aW51YXRpb24gbm9kZXMKKyAgICAgIDs7IChibGFuayBg PiA+JyBsaW5lcykgYXMgY2hpbGRyZW4gb2YgdGhlIHBhcmFncmFwaC4gIFVzZSB0aGUKKyAgICAg IDs7IGVuZCBvZiB0aGUgbGFzdCBpbmxpbmUgY2hpbGQgc28gZmlsbCBkb2VzIG5vdCBtZXJnZSBh Y3Jvc3MKKyAgICAgIDs7IHdoYXQgc2hvdWxkIGJlIGEgcGFyYWdyYXBoIGJvdW5kYXJ5LgorICAg ICAgKGxldCogKChsYXN0LWlubGluZQorICAgICAgICAgICAgICAoc2VxLWZpbmQgKGxhbWJkYSAo Y2hpbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5 cGUgY2hpbGQpICJpbmxpbmUiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChyZXZlcnNlICh0 cmVlc2l0LW5vZGUtY2hpbGRyZW4gcGFyYSkpKSkKKyAgICAgICAgICAgICAocGFyYS1lbmQgKGlm IGxhc3QtaW5saW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVu ZCBsYXN0LWlubGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVu ZCBwYXJhKSkpCisgICAgICAgICAgICAgKGJxLXByZWZpeCAobWFya2Rvd24tdHMtLWJsb2NrLXF1 b3RlLXByZWZpeCkpCisgICAgICAgICAgICAgOzsgV2hlbiBpbnNpZGUgYSBsaXN0IGl0ZW0sIGV4 dGVuZCB0aGUgcHJlZml4IHdpdGggc3BhY2VzCisgICAgICAgICAgICAgOzsgc28gY29udGludWF0 aW9uIGxpbmVzIGFsaWduIHdpdGggdGhlIGl0ZW0ncyB0ZXh0LgorICAgICAgICAgICAgIChsaXN0 LWl0ZW0gKHRyZWVzaXQtcGFyZW50LXVudGlsIHBhcmEgIlxcYGxpc3RfaXRlbVxcJyIpKQorICAg ICAgICAgICAgIChwcmVmaXggKGlmIGxpc3QtaXRlbQorICAgICAgICAgICAgICAgICAgICAgICAg IChsZXQqICgodGV4dC1jb2wgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LWl0ZW0pKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXh0cmEgKG1heCAwICgtIHRleHQtY29sIChs ZW5ndGggYnEtcHJlZml4KSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQg YnEtcHJlZml4IChtYWtlLXN0cmluZyBleHRyYSA/XHMpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgYnEtcHJlZml4KSkKKyAgICAgICAgICAgICAoYWRhcHRpdmUtZmlsbC1mdW5jdGlvbiBuaWwp CisgICAgICAgICAgICAgKGZpbGwtZm9yd2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24gIydmb3J3YXJk LXBhcmFncmFwaCkKKyAgICAgICAgICAgICAoZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24gbmlsKSkK KyAgICAgICAgKHNhdmUtcmVzdHJpY3Rpb24KKyAgICAgICAgICA7OyBOYXJyb3cgdG8gdGhlIGZ1 bGwgbGluZXMgb2YgdGhlIHBhcmFncmFwaCBzbyB0aGF0IHRoZQorICAgICAgICAgIDs7IGA+ICcg bWFya2VycyBhcmUgaW5jbHVkZWQgaW4gdGhlIGZpbGwgcmVnaW9uLgorICAgICAgICAgIChuYXJy b3ctdG8tcmVnaW9uCisgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgIChn b3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBwYXJhKSkKKyAgICAgICAgICAgICAoYmVnaW5u aW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgKHBvaW50KSkKKyAgICAgICAgICAgcGFyYS1lbmQp CisgICAgICAgICAgKGxldCAoKGZpbGwtcHJlZml4IHByZWZpeCkpCisgICAgICAgICAgICAoZmls bC1wYXJhZ3JhcGgganVzdGlmeSkpKSkpKQorICB0KQorCis7OzsgQ29kZSBibG9ja3M6CisKKyhk ZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2VzIG5pbAorICAiQWxp c3QgbWFwcGluZyBsYW5ndWFnZSBub2RlIG5hbWVzIHRvIHRzIGxhbmd1YWdlLgorSWYgYSBsYW5n dWFnZSBpcyBub3QgYSB0cyBsYW5ndWFnZSBvciBpcyBub3QgbWFwcGVkIHRvIG9uZSwgaXQgd2ls bCBiZQoraW4gYG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2RlcycuIikKIAotKGRl ZnVuIG1hcmtkb3duLXRzLS1oYXJ2ZXN0LXRyZWVzaXQtY29uZmlncyAobW9kZSkKLSAgIkhhcnZl c3QgdHJlZS1zaXR0ZXIgY29uZmlncyBmcm9tIE1PREUuCi1SZXR1cm4gYSBwbGlzdCB3aXRoIHRo ZSBmb2xsb3dpbmcga2V5cyBhbmQgdmFsdWU6CisoZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1j b2RlLWJsb2NrLW5vbi10cy1tb2RlcyBuaWwKKyAgIkFsaXN0IG1hcHBpbmcgbGFuZ3VhZ2VzIHRv IG5vbi10cmVlLXNpdHRlciBtb2RlcyBmb3IgY29kZSBibG9ja3MuCitQb3B1bGF0ZWQgYnkgYG1h cmtkb3duLXRzLS1jb2RlLWJsb2NrLXRzLWxhbmd1YWdlJyB0byBpZGVudGlmeSBhCitjb2RlLWJs b2NrIGxhbmd1YWdlIG1vZGUgd2hpY2ggaXMgbm90IGEgdHJlZS1zaXR0ZXIgbW9kZSBvciBmb3Ig d2hpY2gKK3RoZSB0cmVlLXNpdHRlciBncmFtbWFyIGlzIHVuYXZhaWxhYmxlLiIpCisKKyhkZWZ1 biBtYXJrZG93bi10cy0taGFydmVzdC1tb2RlLXRyZWVzaXQtY29uZmlndXJhdGlvbiAobW9kZSkK KyAgIkhhcnZlc3QgdHJlZS1zaXR0ZXIgY29uZmlndXJhdGlvbiBmcm9tIE1PREUuCitSZXR1cm4g YSBwbGlzdCB3aXRoIHRoZSBmb2xsb3dpbmcga2V5cyBhbmQgdmFsdWVzOgogCiAgICAgOmZvbnQt bG9jayAoZnJvbSBgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MnKQogICAgIDpzaW1wbGUtaW5k ZW50IChmcm9tIGB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMnKQogICAgIDpyYW5nZSAoZnJv bSBgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncycpIgotICAod2l0aC10ZW1wLWJ1ZmZlcgotICAgIChm dW5jYWxsIG1vZGUpCi0gICAgKGxpc3QgOmZvbnQtbG9jayB0cmVlc2l0LWZvbnQtbG9jay1zZXR0 aW5ncworICAod2l0aC13b3JrLWJ1ZmZlcgorICAgIChtYXJrZG93bi10cy0taW5oaWJpdC1tZXNz YWdlcy1hbmQtd2FybmluZ3MKKyAgICAgICdtYXJrZG93bi10cy1pbmhpYml0LWNvZGUtYmxvY2st bW9kZS13YXJuaW5ncworICAgICAgKGRlbGF5LW1vZGUtaG9va3MgKGZ1bmNhbGwgbW9kZSkpKQor ICAgIChsaXN0IDpsYW5ndWFnZSAodHJlZXNpdC1sYW5ndWFnZS1hdCAocG9pbnQtbWluKSkKKyAg ICAgICAgICA6Zm9udC1sb2NrIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCiAgICAgICAgICAg OnNpbXBsZS1pbmRlbnQgdHJlZXNpdC1zaW1wbGUtaW5kZW50LXJ1bGVzCiAgICAgICAgICAgOnJh bmdlIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MpKSkKIAotKGRlZnVuIG1hcmtkb3duLXRzLS1hZGQt Y29uZmlnLWZvci1tb2RlIChsYW5ndWFnZSBtb2RlKQotICAiQWRkIGNvbmZpZ3VyYXRpb25zIGZv ciBMQU5HVUFHRSBmcm9tIE1PREUgdG8gY3VycmVudCBidWZmZXIuCi0KLUNvbmZpZ3VyYXRpb24g aW5jbHVkZXMgZm9udC1sb2NrIGFuZCBpbmRlbnQuICBGb3IgZm9udC1sb2NrIHJ1bGVzLCB1c2UK LXRoZSBzYW1lIGZlYXR1cmVzIGVuYWJsZWQgaW4gTU9ERS4iCi0gIChsZXQgKChjb25maWdzICht YXJrZG93bi10cy0taGFydmVzdC10cmVlc2l0LWNvbmZpZ3MgbW9kZSkpKQotICAgIChpZ25vcmUg bGFuZ3VhZ2UpIDsgV2UgbWlnaHQgbWFrZSB1c2Ugb2YgdGhpcyBsYXRlci4KLSAgICAoc2V0cSB0 cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250 LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgIDs7IEdldCBhbGwgdGhlIGZvbnQtbG9j ayBzZXR0aW5ncywgaW5jbHVkaW5nIG9uZXMgdGhhdAotICAgICAgICAgICAgICAgICAgOzsgZG9u J3QgcGVydGFpbiB0byBMQU5HVUFHRS4gIFRoaXMgd2F5IHdlIGdldCBqc2RvYwotICAgICAgICAg ICAgICAgICAgOzsgZnJvbSBqcy10cy1tb2RlLCBmb3IgZXhhbXBsZS4KLSAgICAgICAgICAgICAg ICAgIChwbGlzdC1nZXQgY29uZmlncyA6Zm9udC1sb2NrKSkpCi0gICAgKHNldHEgdHJlZXNpdC1z aW1wbGUtaW5kZW50LXJ1bGVzCi0gICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXNpbXBsZS1pbmRl bnQtcnVsZXMKLSAgICAgICAgICAgICAgICAgIDs7IFNpbWlsYXJseSwgZ2V0IGFsbCBpbmRlbnQg cnVsZXMuCi0gICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3MgOnNpbXBsZS1pbmRl bnQpKSkKKyhkZWZ1biBtYXJrZG93bi10cy0tY29uZmlndXJlLWN1cnJlbnQtYnVmZmVyIChjb25m aWd1cmF0aW9uKQorICAiQWRkIENPTkZJR1VSQVRJT04gdG8gdGhlIGN1cnJlbnQgYnVmZmVyLgor Q09ORklHVVJBVElPTiBpbmNsdWRlcyBmb250LWxvY2sgYW5kIGluZGVudCBydWxlcy4gIEZvciBm b250LWxvY2sgcnVsZXMsCit1c2UgdGhlIHNhbWUgZmVhdHVyZXMgZW5hYmxlZCBpbiBNT0RFLiIK KyAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAgICAgKGFwcGVuZCB0cmVl c2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAgIDs7IEdldCBhbGwgdGhlIGZv bnQtbG9jayBzZXR0aW5ncywgaW5jbHVkaW5nIG9uZXMgdGhhdAorICAgICAgICAgICAgICAgIDs7 IGRvbid0IHBlcnRhaW4gdG8gTU9ERS4gIFRoaXMgd2F5LCB3ZSBnZXQganNkb2MKKyAgICAgICAg ICAgICAgICA7OyBmcm9tIGpzLXRzLW1vZGUsIGZvciBleGFtcGxlLgorICAgICAgICAgICAgICAg IChwbGlzdC1nZXQgY29uZmlndXJhdGlvbiA6Zm9udC1sb2NrKSkpCisgIChzZXRxIHRyZWVzaXQt c2ltcGxlLWluZGVudC1ydWxlcworICAgICAgICAoYXBwZW5kIHRyZWVzaXQtc2ltcGxlLWluZGVu dC1ydWxlcworICAgICAgICAgICAgICAgIDs7IFNpbWlsYXJseSwgZ2V0IGFsbCBpbmRlbnQgcnVs ZXMuCisgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWd1cmF0aW9uIDpzaW1wbGUtaW5k ZW50KSkpCiAgICAgKHNldHEgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwogICAgICAgICAgIChhcHBl bmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwogICAgICAgICAgICAgICAgICAgOzsgRmlsdGVyIG91 dCBmdW5jdGlvbiBxdWVyaWVzLCBiZWNhdXNlIHRoZXkgYXJlCkBAIC0zMDIsNDUgKzI2NzYsMTk0 NiBAQCBtYXJrZG93bi10cy0tYWRkLWNvbmZpZy1mb3ItbW9kZQogICAgICAgICAgICAgICAgICAg OzsgQ2FzZSBpbiBwb2ludDogYy10cy1tb2RlJ3MgcmFuZ2Ugc2V0dGluZy4KICAgICAgICAgICAg ICAgICAgIChzZXEtZmlsdGVyIChsYW1iZGEgKHNldHRpbmcpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChub3QgKGZ1bmN0aW9ucCAoY2FyIHNldHRpbmcpKSkpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3MgOnJhbmdlKSkpKQotICAgIChz ZXRxLWxvY2FsIGluZGVudC1saW5lLWZ1bmN0aW9uICMndHJlZXNpdC1pbmRlbnQpCi0gICAgKHNl dHEtbG9jYWwgaW5kZW50LXJlZ2lvbi1mdW5jdGlvbiAjJ3RyZWVzaXQtaW5kZW50LXJlZ2lvbikp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWd1cmF0aW9u IDpyYW5nZSkpKSkKKyAgKHNldHEtbG9jYWwgaW5kZW50LWxpbmUtZnVuY3Rpb24gIyd0cmVlc2l0 LWluZGVudCkKKyAgKHNldHEtbG9jYWwgaW5kZW50LXJlZ2lvbi1mdW5jdGlvbiAjJ3RyZWVzaXQt aW5kZW50LXJlZ2lvbikpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGFuZ3VhZ2UtYXQtbm9kZSAo bm9kZSkKKyAgIlJldHVybiB0aGUgbGFuZ3VhZ2Ugc3ltYm9sIGZvciBjb2RlX2ZlbmNlX2NvbnRl bnQgTk9ERS4iCisgICh3aGVuLWxldCogKChwYXJlbnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9k ZSkpCisgICAgICAgICAgICAgIChsYW5nLW5vZGUgKHdoZW4gcGFyZW50CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBwYXJlbnQgIlxcYGxhbmd1YWdl XFwnIikpKSkKKyAgICAoaW50ZXJuICh0cmVlc2l0LW5vZGUtdGV4dCBsYW5nLW5vZGUgdCkpKSkK KworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUgKG1ha2Ut aGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFsKQorICAiQ2FjaGUgZm9yIG5vbi10cmVlLXNpdHRlciBj b2RlIGJsb2NrIGZvbnRpZmljYXRpb24uCitLZXlzIGFyZSAoTEFORyAuIENPTlRFTlQtSEFTSCkg Y29ucyBjZWxscywgdmFsdWVzIGFyZSBsaXN0cyBvZgorXChPRkZTRVQtU1RBUlQgT0ZGU0VULUVO RCBGQUNFKSB0cmlwbGVzLiIpCisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLW5vbi10cy1m b250aWZ5LWNhY2hlLXRpY2sgbmlsCisgICJGb3IgYmx1bnQgYGJ1ZmZlci1jaGFycy1tb2RpZmll ZC10aWNrJyBjYWNoZSBpbnZhbGlkYXRpb24uIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250 aWZ5LW5vbi10cy1jb2RlLWJsb2NrIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQor ICAiRm9udGlmeSBjb2RlX2ZlbmNlX2NvbnRlbnQgTk9ERSB1c2luZyBhIG5vbi10cmVlLXNpdHRl ciBtb2RlLgorQXBwbHkgdGhlIGNvZGUtYmxvY2sgbW9kZSdzIGNvbnZlbnRpb25hbCBmb250LWxv Y2sgaW4gYSB0ZW1wb3JhcnkKK2J1ZmZlci4gIE9WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUg cGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuCisKK0Nh Y2hlIHJlc3VsdHMgdG8gYXZvaWQgZm9udGlmaWNhdGlvbiBvZiB1bmNoYW5nZWQgY29kZSBibG9j a3MuCisKK05PREUgc2hvdWxkIGFscmVhZHkgaGF2ZSBwYXNzZWQgdGhyb3VnaAorYG1hcmtkb3du LXRzLS1jb2RlLWJsb2NrLXRzLWxhbmd1YWdlJyB3aGljaCBtYXkgaGF2ZSBjbGFzc2lmaWVkIHRo aXMKK25vZGUgYXMgYSBub24tdHMgbW9kZS4iCisgICh3aGVuLWxldCogKChfIG1hcmtkb3duLXRz LWZvbnRpZnktY29kZS1ibG9ja3MtbmF0aXZlbHkpCisgICAgICAgICAgICAgIChsYW5nIChtYXJr ZG93bi10cy0tbGFuZ3VhZ2UtYXQtbm9kZSBub2RlKSkKKyAgICAgICAgICAgICAgKG1vZGUgKGFs aXN0LWdldCBsYW5nIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2RlcykpCisgICAg ICAgICAgICAgICh0aWNrIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaykpCisgICAgICAgICAg ICAgIChibG9jay1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAg ICA7OyBDYW5ub3QgdXNlIG1hcmtlcnMgJ21hcmtkb3duLXRzLWNvZGUtYmVnLW1hcmtlcgorICAg ICAgICAgICAgICA7OyAnbWFya2Rvd24tdHMtY29kZS1lbmQtbWFya2VyIHRoZXkgYXJlIHNldCBh ZnRlciB0aGlzCisgICAgICAgICAgICAgIDs7IGZ1bmN0aW9uIHJ1bnMuCisgICAgICAgICAgICAg IChub2RlLXN0YXJ0IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSkKKyAgICAgICAgICAgICAgKG5v ZGUtZW5kIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1j aGFyICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAo c2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHBv aW50KSkpKQorICAgICh3aGVuICg+IG5vZGUtZW5kIG5vZGUtc3RhcnQpCisgICAgICAodW5sZXNz IChlcSB0aWNrIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZS10aWNrKQorICAgICAg ICAoY2xyaGFzaCBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpKQorICAgICAgKGxl dCogKChjYWNoZS1rZXkgKGNvbnMgbGFuZyAoc2VjdXJlLWhhc2gKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdzaGEyNTYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjdXJyZW50LWJ1ZmZlcikgbm9kZS1zdGFydCBub2RlLWVuZCkpKQorICAgICAgICAg ICAgIChwcm9wcworICAgICAgICAgICAgICAob3IgKGdldGhhc2ggY2FjaGUta2V5CisgICAgICAg ICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpCisg ICAgICAgICAgICAgICAgICAobGV0ICgocmVzdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAg KG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1jb2xsZWN0LWZhY2VzCisgICAgICAgICAgICAg ICAgICAgICAgICAgIG1vZGUgbm9kZS1zdGFydCBub2RlLWVuZCkpKQorICAgICAgICAgICAgICAg ICAgICAocHV0aGFzaCBjYWNoZS1rZXkgcmVzdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZSkKKyAgICAgICAgICAgICAgICAg ICAgKHNldHEgbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5LWNhY2hlLXRpY2sgdGljaykKKyAg ICAgICAgICAgICAgICAgICAgcmVzdWx0KSkpKQorICAgICAgICAoZG9saXN0IChyYW5nZSBwcm9w cykKKyAgICAgICAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgICAgICAg KG50aCAwIHJhbmdlKQorICAgICAgICAgICAobnRoIDEgcmFuZ2UpCisgICAgICAgICAgIChudGgg MiByYW5nZSkKKyAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKSkpKSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy0tZm9udGlmeS1ub24tdHMtY29sbGVjdC1mYWNlcyAobW9kZSBiZWcgZW5kKQor ICAiUnVuIE1PREUgb24gdGhlIEJFRy4uRU5EIHJlZ2lvbidzIHRleHQgYW5kIGhhcnZlc3QgZmFj ZSBwcm9wZXJ0aWVzLgorUmV0dXJuIGEgbGlzdCBvZiAoQlVGLUJFRyBCVUYtRU5EIEZBQ0UpIHRy aXBsZXMgaW4gYmFzZS1idWZmZXIKK2Nvb3JkaW5hdGVzLgogCi0oZGVmdW4gbWFya2Rvd24tdHMt LWNvbnZlcnQtY29kZS1ibG9jay1sYW5ndWFnZSAobm9kZSkKK0ZvciBub24tdHJlZS1zaXR0ZXIg bW9kZXMgdXNlIGFuIGluZGlyZWN0IGJ1ZmZlciBuYXJyb3dlZCB0byBCRUcuLkVORDoKK3JlZ2V4 L3N5bnRhY3RpYyBmb250LWxvY2sgaG9ub3JzIG5hcnJvd2luZyBhbmQgdGhlIGluZGlyZWN0IGJ1 ZmZlcgorc2hhcmVzIHRleHQgd2l0aCB0aGUgYmFzZSwgc28gdGhpcyBpcyBsZXNzIGV4cGVuc2l2 ZSBhbmQgY29weS1mcmVlLgorCitGb3IgdHMgbW9kZXMgaW4gYG1hcmtkb3duLXRzLWNvZGUtYmxv Y2stZm9yY2UtY29udmVudGlvbmFsLW1vZGVzJywgZmFsbAorYmFjayB0byBhIHRlbXAgYnVmZmVy LiAgQSBwYXJzZXIgY3JlYXRlZCBpbiB0aGUgc291cmNlIGJ1ZmZlciBkb2VzIG5vdAorcmVhY3Qg dG8gbmFycm93aW5nIGluIGFuIGluZGlyZWN0IGJ1ZmZlciBkZXJpdmVkIGZyb20gaXQgKG9ubHkg cGFyc2VycworY3JlYXRlZCBpbiB0aGF0IGluZGlyZWN0IGJ1ZmZlciB3b3VsZCBob25vciBpdHMg bmFycm93aW5nKSwgc28gcmV1c2luZwordGhlIGhvc3QgcGFyc2VyIHZpYSBhbiBpbmRpcmVjdCBi dWZmZXIgaXMgbm90IGFuIG9wdGlvbiBoZXJlLiAgQW5kIGluCit0aGUgaG9zdCBidWZmZXIgaXRz ZWxmLCB0aGUgaW5uZXIgY29udGVudCBvZiBhIGZlbmNlZCBjb2RlIGJsb2NrIGlzCitqdXN0IG9w YXF1ZSB0ZXh0IGluc2lkZSBhIGBjb2RlX2ZlbmNlX2NvbnRlbnQnIG5vZGUsIG5ldmVyIHJlLXBh cnNlZAorYXMgYSBmcmVzaCBkb2N1bWVudC4gIEEgdGVtcCBidWZmZXIgd2l0aCBhIGZyZXNoIHBh cnNlciBzZWVzIHRoZSBpbm5lcgorY29udGVudCBhcyBhIHN0YW5kYWxvbmUgbWFya2Rvd24gZG9j dW1lbnQsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4iCisgIChjb25kICgobWVtcSBtb2RlIG1hcmtk b3duLXRzLWNvZGUtYmxvY2stZm9yY2UtY29udmVudGlvbmFsLW1vZGVzKQorICAgICAgICAgKGxl dCAoKGNvbnRlbnQgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkKKyAg ICAgICAgICAgICAgIHJlcykKKyAgICAgICAgICAgKHdpdGgtd29yay1idWZmZXIKKyAgICAgICAg ICAgICAoaW5zZXJ0IGNvbnRlbnQpCisgICAgICAgICAgICAgKG1hcmtkb3duLXRzLS1pbmhpYml0 LW1lc3NhZ2VzLWFuZC13YXJuaW5ncworICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWluaGli aXQtY29kZS1ibG9jay1tb2RlLXdhcm5pbmdzCisgICAgICAgICAgICAgICAoZGVsYXktbW9kZS1o b29rcworICAgICAgICAgICAgICAgICAobGV0ICgobWFya2Rvd24tdHMtLXNldC11cC1pbmxpbmUg dCkpCisgICAgICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLW1vZGUpKSkpCisgICAgICAgICAg ICAgKGZvbnQtbG9jay1lbnN1cmUpCisgICAgICAgICAgICAgKGxldCAoKHBvcyAocG9pbnQtbWlu KSkpCisgICAgICAgICAgICAgICAod2hpbGUgKDwgcG9zIChwb2ludC1tYXgpKQorICAgICAgICAg ICAgICAgICAobGV0ICgobmV4dCAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hhbmdlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwb3MgJ2ZhY2UgbmlsIChwb2ludC1tYXgpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgKGZhY2UgKGdldC10ZXh0LXByb3BlcnR5IHBvcyAnZmFjZSkpKQor ICAgICAgICAgICAgICAgICAgICh3aGVuIGZhY2UKKyAgICAgICAgICAgICAgICAgICAgIDs7IFRy YW5zbGF0ZSB0ZW1wLWJ1ZmZlciBvZmZzZXRzIGJhY2sgdG8gYmFzZS1idWZmZXIKKyAgICAgICAg ICAgICAgICAgICAgIDs7IHBvc2l0aW9uczogdGVtcCBgcG9pbnQtbWluJyBjb3JyZXNwb25kcyB0 byBCRUcuCisgICAgICAgICAgICAgICAgICAgICAocHVzaCAobGlzdCAoKyBiZWcgKDEtIHBvcykp ICgrIGJlZyAoMS0gbmV4dCkpIGZhY2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMp KQorICAgICAgICAgICAgICAgICAgIChzZXRxIHBvcyBuZXh0KSkpKSkKKyAgICAgICAgICAgKG5y ZXZlcnNlIHJlcykpKQorICAgICAgICAodAorICAgICAgICAgKGxldCAoKGluZGlyZWN0LWJ1ZmZl ciAobWFrZS1pbmRpcmVjdC1idWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChjdXJyZW50LWJ1ZmZlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZW5l cmF0ZS1uZXctYnVmZmVyLW5hbWUgKGJ1ZmZlci1uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5pbCAnaW5oaWJpdC1idWZmZXItaG9va3MpKQorICAgICAgICAgICAgICAg cmVzKQorICAgICAgICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgICAgICAgICh3aXRoLWN1 cnJlbnQtYnVmZmVyIGluZGlyZWN0LWJ1ZmZlcgorICAgICAgICAgICAgICAgICAobWFya2Rvd24t dHMtLWluaGliaXQtbWVzc2FnZXMtYW5kLXdhcm5pbmdzCisgICAgICAgICAgICAgICAgICAgJ21h cmtkb3duLXRzLWluaGliaXQtY29kZS1ibG9jay1tb2RlLXdhcm5pbmdzCisgICAgICAgICAgICAg ICAgICAgKGRlbGF5LW1vZGUtaG9va3MgKGZ1bmNhbGwgbW9kZSkpKQorICAgICAgICAgICAgICAg ICAobmFycm93LXRvLXJlZ2lvbiBiZWcgZW5kKQorICAgICAgICAgICAgICAgICAoZm9udC1sb2Nr LWVuc3VyZSkKKyAgICAgICAgICAgICAgICAgKGxldCAoKHBvcyAocG9pbnQtbWluKSkpCisgICAg ICAgICAgICAgICAgICAgKHdoaWxlICg8IHBvcyAocG9pbnQtbWF4KSkKKyAgICAgICAgICAgICAg ICAgICAgIChsZXQgKChuZXh0IChuZXh0LXNpbmdsZS1wcm9wZXJ0eS1jaGFuZ2UKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgJ2ZhY2UgbmlsIChwb2ludC1tYXgpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIChmYWNlIChnZXQtdGV4dC1wcm9wZXJ0eSBwb3MgJ2Zh Y2UpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gZmFjZQorICAgICAgICAgICAgICAg ICAgICAgICAgIChwdXNoIChsaXN0IHBvcyBuZXh0IGZhY2UpIHJlcykpCisgICAgICAgICAgICAg ICAgICAgICAgIChzZXRxIHBvcyBuZXh0KSkpKSkKKyAgICAgICAgICAgICAoa2lsbC1idWZmZXIg aW5kaXJlY3QtYnVmZmVyKSkKKyAgICAgICAgICAgKG5yZXZlcnNlIHJlcykpKSkpCisKKyhkZWZ1 biBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2RlIChsYW5nKQorICAiQ29tcHV0 ZSBhbmQgY2FjaGUgYSBtb2RlIHN5bWJvbCBmcm9tIExBTkcsIGEgc3ltYm9sLgorQ29uc3VsdCB0 aGUgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMnIGNhY2hlLCBvciBjb25zdWx0CitgdHJl ZXNpdC1tYWpvci1tb2RlLXJlbWFwLWFsaXN0JyBhbmQgYG1ham9yLW1vZGUtcmVtYXAtYWxpc3Qn LCBvciBicnV0ZQorZm9yY2UgbW9kZSBwcm9iZS4gIFJldHVybiBhIHZhbGlkIG1vZGUgc3ltYm9s IG9yIG5pbC4iCisgIChpZi1sZXQqICgobWFwcGVkLW1vZGUgKGNhciAoYWxpc3QtZ2V0IGxhbmcg bWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcykpKSkKKyAgICAgIG1hcHBlZC1tb2RlCisgICAg KGxldCogKChsYW5nLXN0cmluZyAoc3ltYm9sLW5hbWUgbGFuZykpCisgICAgICAgICAgIChsYW5n LW1vZGUgKGNvbmNhdCBsYW5nLXN0cmluZyAiLW1vZGUiKSkKKyAgICAgICAgICAgKG1vZGUpKQor ICAgICAgKGlmIChzZXRxIG1vZGUgKGFsaXN0LWdldCBsYW5nLW1vZGUgdHJlZXNpdC1tYWpvci1t b2RlLXJlbWFwLWFsaXN0KSkKKyAgICAgICAgICBtb2RlCisgICAgICAgIChpZiAoc2V0cSBtb2Rl IChhbGlzdC1nZXQgbGFuZy1tb2RlIG1ham9yLW1vZGUtcmVtYXAtYWxpc3QpKQorICAgICAgICAg ICAgbW9kZQorICAgICAgICAgIChjYXRjaCA6bW9kZQorICAgICAgICAgICAgKGRvbGlzdCAobW9k ZQorICAgICAgICAgICAgICAgICAgICAgKGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICA7OyBU cnkgYSB0cmVlc2l0IG1vZGUgdXNpbmcgdGhlIHJhdyBzdHJpbmcuCisgICAgICAgICAgICAgICAg ICAgICAgKGNvbmNhdCBsYW5nLXN0cmluZyAiLXRzLW1vZGUiKQorICAgICAgICAgICAgICAgICAg ICAgIDs7IFRyeSBhIGNvbnZlbnRpb25hbCBtb2RlIHVzaW5nIHRoZSByYXcgc3RyaW5nLgorICAg ICAgICAgICAgICAgICAgICAgIGxhbmctbW9kZQorICAgICAgICAgICAgICAgICAgICAgIDs7IFRy eSBhIHRyZWVzaXQgbW9kZSB1c2luZyB0aGUgZG93bmNhc2VkIHN0cmluZy4KKyAgICAgICAgICAg ICAgICAgICAgICAoY29uY2F0IChkb3duY2FzZSBsYW5nLXN0cmluZykgIi10cy1tb2RlIikKKyAg ICAgICAgICAgICAgICAgICAgICA7OyBUcnkgYSBjb252ZW50aW9uYWwgbW9kZSB1c2luZyB0aGUg ZG93bmNhc2VkIHN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IChkb3duY2Fz ZSBsYW5nLXN0cmluZykgIi1tb2RlIikpKQorICAgICAgICAgICAgICAoc2V0cSBtb2RlIChpbnRl cm4gbW9kZSkpCisgICAgICAgICAgICAgICh3aGVuIChmYm91bmRwIG1vZGUpCisgICAgICAgICAg ICAgICAgKHB1c2ggKGxpc3QgbGFuZyBtb2RlKSBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVz KQorICAgICAgICAgICAgICAgICh0aHJvdyA6bW9kZSBtb2RlKSkpKSkpKSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy0tY29kZS1ibG9jay10cy1sYW5ndWFnZSAobm9kZSkKICAgIkNvbnZlcnQgTk9E RSB0byBhIGxhbmd1YWdlIGZvciB0aGUgY29kZSBibG9jay4iCi0gIChsZXQqICgobGFuZy1zdHJp bmcgKGFsaXN0LWdldCAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1hcAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUpIG5p bCAjJ2VxdWFsKSkKLSAgICAgICAgIChsYW5nIChpZiAoc3ltYm9scCBsYW5nLXN0cmluZykKLSAg ICAgICAgICAgICAgICAgICBsYW5nLXN0cmluZwotICAgICAgICAgICAgICAgICAoaW50ZXJuIChk b3duY2FzZSBsYW5nLXN0cmluZykpKSkpCi0gICAgOzsgRklYTUU6IEtpbmQgb2YgYSBoYWNrIGhl cmU6IHdlIHVzZSB0aGlzIGZ1bmN0aW9uIGFzIGEgaG9vayBmb3IKLSAgICA7OyBsb2FkaW5nIHVw IGNvbmZpZ3MgZm9yIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvZGUgYmxvY2sgb24tZGVtYW5kLgot ICAgIChsZXQgKChtb2RlIChhbGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy1jb2RlLWJsb2NrLXNv dXJjZS1tb2RlLW1hcCkpKQotICAgICAgOzsgSWYgdGhlcmUncyBubyBzdXBwb3J0ZWQgbW9kZSBm b3IgdGhlIGxhbmd1YWdlLCByZXR1cm4gbmlsLAotICAgICAgOzsgd2hpY2ggbWFrZXMgRW1hY3Mg c2tpcCB0aGUgY29kZSBibG9jay4KLSAgICAgIChpZiAobm90IChhbmQgbW9kZSAoZmJvdW5kcCBt b2RlKSkpCi0gICAgICAgICAgbmlsCi0gICAgICAgIDs7IElmIHRoZXJlJ3MgYSBtYWpvciBtb2Rl IGZvciB0aGUgbGFuZ3VhZ2UsIHNldCB1cCB0aGUgY29uZmlnCi0gICAgICAgIDs7IGFuZCByZXR1 cm4gdGhlIGxhbmd1YWdlLgotICAgICAgICAod2hlbiAobm90IChtZW1xIGxhbmcgbWFya2Rvd24t dHMtLWNvbmZpZ3VyZWQtbGFuZ3VhZ2VzKSkKLSAgICAgICAgICAobWFya2Rvd24tdHMtLWFkZC1j b25maWctZm9yLW1vZGUgbGFuZyBtb2RlKQotICAgICAgICAgIChwdXNoIGxhbmcgbWFya2Rvd24t dHMtLWNvbmZpZ3VyZWQtbGFuZ3VhZ2VzKSkKLSAgICAgICAgbGFuZykpKSkKKyAgKGxldCogKChs YW5nIChpbnRlcm4gKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUpKSkKKyAgICAgICAgIChtb2RlICht YXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2RlIGxhbmcpKQorICAgICAgICAgKHRz LWxhbmd1YWdlIChhbGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFn ZXMpKQorICAgICAgICAgKG5vbi10cy1sYW5ndWFnZSAoYWxpc3QtZ2V0IGxhbmcgbWFya2Rvd24t dHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKSkpCisgICAgKGNvbmQKKyAgICAgKChmYm91bmRw IG1vZGUpCisgICAgICAoY29uZAorICAgICAgIDs7IFJldHVybiBrbm93biB0cmVlc2l0IGxhbmd1 YWdlLgorICAgICAgICh0cy1sYW5ndWFnZSB0cy1sYW5ndWFnZSkKKyAgICAgICA7OyBSZXR1cm4g bmlsIGZvciBrbm93biBub24tdHJlZXNpdCBsYW5ndWFnZSBmb3IgZm9udC1sb2NrLgorICAgICAg IChub24tdHMtbGFuZ3VhZ2UgbmlsKQorICAgICAgIDs7IE1hcmtkb3duIGl0c2VsZiBuZWVkcyB0 d28gcGFyc2VycyAobWFya2Rvd24gKworICAgICAgIDs7IG1hcmtkb3duLWlubGluZSksIHNvIHRy ZWVzaXQgZW1iZWRkaW5nICh3aGljaCBjcmVhdGVzIG9ubHkKKyAgICAgICA7OyBvbmUpIGNhbm5v dCBmdWxseSBmb250aWZ5IGl0LiAgUm91dGUgdGhyb3VnaCB0aGUgbm9uLXRzCisgICAgICAgOzsg cGF0aCBzbyB0aGUgdGVtcCBidWZmZXIgcnVucyB0aGUgZnVsbCBtb2RlIHdpdGggYm90aAorICAg ICAgIDs7IHBhcnNlcnMuCisgICAgICAgKChwcm92aWRlZC1tb2RlLWRlcml2ZWQtcCBtb2RlICdt YXJrZG93bi10cy1tb2RlKQorICAgICAgICAodW5sZXNzIChhc3NxIGxhbmcgbWFya2Rvd24tdHMt LWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKQorICAgICAgICAgIChwdXNoIChjb25zIGxhbmcgbW9k ZSkgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKSkKKyAgICAgICAgbmlsKQor ICAgICAgICh0CisgICAgICAgIChsZXQqICgoY29uZmlndXJhdGlvbiAobWFya2Rvd24tdHMtLWhh cnZlc3QtbW9kZS10cmVlc2l0LWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtb2RlKSkKKyAgICAgICAgICAgICAgICh0cy1sYW5ndWFnZSAocGxpc3QtZ2V0IGNv bmZpZ3VyYXRpb24gOmxhbmd1YWdlKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgKChh bmQgdHMtbGFuZ3VhZ2UKKyAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWd1cmF0aW9u IDpmb250LWxvY2spKQorICAgICAgICAgICAgKG1hcmtkb3duLXRzLS1jb25maWd1cmUtY3VycmVu dC1idWZmZXIgY29uZmlndXJhdGlvbikKKyAgICAgICAgICAgICh1bmxlc3MgKGFzc3EgbGFuZyBt YXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZXMpCisgICAgICAgICAgICAgIChwdXNoIChj b25zIGxhbmcgdHMtbGFuZ3VhZ2UpIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcykp CisgICAgICAgICAgICB0cy1sYW5ndWFnZSkKKyAgICAgICAgICAgOzsgT3RoZXJ3aXNlLCBjbGFz c2lmeSBtb2RlIGFzIG5vbi10cmVlLXNpdHRlci4KKyAgICAgICAgICAgKHQKKyAgICAgICAgICAg ICh1bmxlc3MgKGFzc3EgbGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMp CisgICAgICAgICAgICAgIChwdXNoIChjb25zIGxhbmcgbW9kZSkgbWFya2Rvd24tdHMtLWNvZGUt YmxvY2stbm9uLXRzLW1vZGVzKSkKKyAgICAgICAgICAgIG5pbCkpKSkpKQorICAgICAodCBuaWwp KSkpCisKKzs7OyBDb2RlIGJsb2NrIG1pbm9yIG1vZGUgc3VwcG9ydCBhbmQgY29kZS1ibG9jayBj b250ZXh0IGNvbW1hbmRzOgorCisoZGVmdmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFu ZHMgJyhpbmRlbnQtZm9yLXRhYi1jb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbGVjdHJpYy1uZXdsaW5lLWFuZC1tYXliZS1pbmRlbnQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb24tYXQtcG9pbnQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQtZHdpbQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudC1saW5lCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LW9yLXVuY29tbWVudC1yZWdp b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRz LS1jb2RlLWJsb2NrLWZpbGwtcGFyYWdyYXBoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwcm9nLWZpbGwtcmVpbmRlbnQtZGVmdW4pCisgICJDb21tYW5kcyB0byBl eGVjdXRlIGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorU2VlIGBtYXJrZG93bi10cy0tcnVuLWNv bW1hbmQtaW4tY29kZS1ibG9jaycuIikKKworKGRlZnZhciBtYXJrZG93bi10cy1jb2RlLWJsb2Nr LXRoaW5nLWNvbW1hbmRzICcoeHJlZi1maW5kLWRlZmluaXRpb25zKQorICAiQ29tbWFuZHMgdGhh dCBuZWVkIGEgXCJ0aGluZ1wiIGF0IHBvaW50IGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorU2Vl IGBtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jaycuIikKKworKGRlZnZhciBt YXJrZG93bi10cy1jb2RlLWJsb2NrLXJlZ2lvbi1jb21tYW5kcyAnKGNvbW1lbnQtb3ItdW5jb21t ZW50LXJlZ2lvbikKKyAgIkNvbW1hbmRzIHRoYXQgbmVlZCBhIHJlZ2lvbiBpbiBhIGNvZGUtYmxv Y2sgY29udGV4dC4KK1NlZSBgbWFya2Rvd24tdHMtLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2sn LiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2staW4tY29udGV4dC1t b2RlICgpCisgICJFbmFibGUgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2Rl JyBpZiBpbiBhIGZlbmNlZCBjb2RlIGJsb2NrLiIKKyAgKG1hcmtkb3duLXRzLWNvZGUtYmxvY2st aW4tY29udGV4dC1tb2RlCisgICAoaWYgKG1hcmtkb3duLXRzLWF0LWNvZGUtYmxvY2stcCkgMSAt MSkpKQorCis7OyBOT1RFOiBEbyBub3QgYWRkIHRoaXMgY29tbWFuZCB0byBgbWFya2Rvd24tdHMt Y29kZS1ibG9jay1jb21tYW5kcycuCisoZGVmdW4gbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3 bGluZSAoJm9wdGlvbmFsIGFyZyBpbnRlcmFjdGl2ZSkKKyAgIkluc2VydCBhIG5ld2xpbmUsIGFu ZCBtb3ZlIHRvIGxlZnQgbWFyZ2luIG9mIHRoZSBuZXcgbGluZS4KK1dpdGggcHJlZml4IGFyZ3Vt ZW50IEFSRywgaW5zZXJ0IHRoYXQgbWFueSBuZXdsaW5lcy4KKworSWYgYGVsZWN0cmljLWluZGVu dC1tb2RlJyBpcyBlbmFibGVkLCB0aGlzIGluZGVudHMgdGhlIGZpbmFsIG5ldyBsaW5lCit0aGF0 IGl0IGFkZHMsIGFuZCByZWluZGVudHMgdGhlIHByZWNlZGluZyBsaW5lLiAgVG8ganVzdCBpbnNl cnQKK2EgbmV3bGluZSwgdXNlIFxcW2VsZWN0cmljLWluZGVudC1qdXN0LW5ld2xpbmVdLgorCitJ ZiBgYXV0by1maWxsLW1vZGUnIGlzIGVuYWJsZWQsIHRoaXMgbWF5IGNhdXNlIGF1dG9tYXRpYyBs aW5lCiticmVha2luZyBvZiB0aGUgcHJlY2VkaW5nIGxpbmUuICBBIG5vbi1uaWwgQVJHIGluaGli aXRzIHRoaXMuCisKK0lmIHZhcmlhYmxlIGB1c2UtaGFyZC1uZXdsaW5lcycgaXMgZW5hYmxlZCwg dGhlIG5ld2xpbmUgaXMgbWFya2VkIHdpdGgKK3RoZSB0ZXh0LXByb3BlcnR5IGBoYXJkJy4KKwor QSBub24tbmlsIElOVEVSQUNUSVZFIGFyZ3VtZW50IG1lYW5zIHRvIHJ1biB0aGUgYHBvc3Qtc2Vs Zi1pbnNlcnQtaG9vaycuIgorICAoaW50ZXJhY3RpdmUgIipQXG5wIikKKyAgKGlmLWxldCogKChi bG9jay1tb2RlIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtYXQpKQorICAgICAgICAgICAg KChmYm91bmRwIGJsb2NrLW1vZGUpKSkKKyAgICAgIChtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQt aW4tY29kZS1ibG9jayBibG9jay1tb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyduZXdsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYXJnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50ZXJhY3RpdmUpCisgICAgKGZ1bmNhbGwtaW50ZXJhY3RpdmVseSAjJ25ld2xp bmUgYXJnIGludGVyYWN0aXZlKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9jay1m aWxsLXBhcmFncmFwaCAoJm9wdGlvbmFsIGp1c3RpZnkpCisgICJSZWZpbGwgb3IgcmVpbmRlbnQg dGhlIG1hcmtkb3duIGNvbnRlbnQgdGhhdCBjb250YWlucyBwb2ludC4KK0lmIHRoZSBwb2ludCBp cyBpbiBhIHN0cmluZyBvciBhIGNvbW1lbnQsIGZpbGwgdGhlIHBhcmFncmFwaCB0aGF0Citjb250 YWlucyBwb2ludCBvciBmb2xsb3dzIHBvaW50LgorCitPdGhlcndpc2UsIHJlaW5kZW50IHRoZSBm dW5jdGlvbiBkZWZpbml0aW9uIHRoYXQgY29udGFpbnMgcG9pbnQgb3IKK2ZvbGxvd3MgcG9pbnQu CisKK0lmIEpVU1RJRlkgaXMgbm9uLW5pbCAoaW50ZXJhY3RpdmVseSwgd2l0aCBwcmVmaXggYXJn dW1lbnQpLCBqdXN0aWZ5IGFzCit3ZWxsLiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKGNvbmQg KChkZXJpdmVkLW1vZGUtcCAncHJvZy1tb2RlKQorICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVs eSAjJ3Byb2ctZmlsbC1yZWluZGVudC1kZWZ1biBqdXN0aWZ5KSkKKyAgICAgICAgKHQKKyAgICAg ICAgIChjYWxsLWludGVyYWN0aXZlbHkgIydmaWxsLXBhcmFncmFwaCBqdXN0aWZ5KSkpKQorCis7 OyBOT1RFOiBEbyBub3QgYWRkIHRoaXMgY29tbWFuZCB0byBgbWFya2Rvd24tdHMtY29kZS1ibG9j ay1jb21tYW5kcycuCisoZGVmdW4gbWFya2Rvd24tdHMtLWNvZGUtYmxvY2steHJlZi1maW5kLWRl ZmluaXRpb25zICgmcmVzdCBhcmdzKQorICAiSGVscGVyIGNvbW1hbmQgZm9yIGB4cmVmLWZpbmQt ZGVmaW5pdGlvbnMnIGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorRmluZCB0aGluZyBhdCBwb2lu dC4KK0FkanVzdCB0aGUgcmVmZXJlbmNlcyBvbiB0aGUgeHJlZiBzdGFjayB0byB0aGUgYmFzZSBi dWZmZXIuCitQYXNzIHRocm91Z2ggQVJHUyBpZiBub3QgaW4gYSBjb2RlIGJsb2NrIHdpdGggYW4g YXZhaWxhYmxlIG1vZGUuIgorICAoaW50ZXJhY3RpdmUpCisgIChpZi1sZXQqICgoYmxvY2stbW9k ZSAobWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLWF0KSkKKyAgICAgICAgICAgICgoZmJvdW5k cCBibG9jay1tb2RlKSkpCisgICAgICAoY29uZGl0aW9uLWNhc2UgZXJyCisgICAgICAgICAgKHVu d2luZC1wcm90ZWN0CisgICAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgICAgIDs7IFJl Y29yZCBhIHBsYWNlaG9sZGVyIHhyZWYgbWFya2VyIGluIHRoZSBiYXNlIGJ1ZmZlci4gIFRoaXMK KyAgICAgICAgICAgICAgICA7OyB3aWxsIGJlIHJldGFpbmVkIGlmIHRoZSBjb21tYW5kIHN1Y2Nl ZWRzIHRvIHB1c2ggYSBtYXJrZXIgaW4KKyAgICAgICAgICAgICAgICA7OyB0aGUgY29kZS1ibG9j ayBidWZmZXIgd2hpY2ggd2Ugd2lsbCBwb3AuCisgICAgICAgICAgICAgICAgKHhyZWYtcHVzaC1t YXJrZXItc3RhY2spCisgICAgICAgICAgICAgICAgOzsgYHhyZWYtZmluZC1kZWZpbml0aW9ucycg aXMgYSB0aGluZyBjb21tYW5kIGluCisgICAgICAgICAgICAgICAgOzsgYG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stdGhpbmctY29tbWFuZHMnLgorICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0t cnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jayBibG9jay1tb2RlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMneHJlZi1maW5kLWRlZmluaXRp b25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFyZ3MpKQorICAgICAgICAgICAgOzsgUG9wIHRoZSB0b3AgeHJlZiBtYXJrZXIuICBJZiB0 aGUgY29tbWFuZCBzdWNjZWVkZWQsIHRoZQorICAgICAgICAgICAgOzsgdG9wIG1hcmtlciB3aWxs IGJlIHRoZSBjb2RlLWJsb2NrIGJ1ZmZlciBtYXJrZXIuICBJZiBpdAorICAgICAgICAgICAgOzsg ZmFpbGVkLCB3ZSdsbCBwb3AgdGhlIHBsYWNlaG9sZGVyIHdoaWNoIGlzIG5vdyBvZiBubworICAg ICAgICAgICAgOzsgdmFsdWUuCisgICAgICAgICAgICA7OyBUT0RPOiBQcm9wb3NlIGFuIGB4cmVm JyBwb3AgZnVuY3Rpb24gdGhhdCBkb2Vzbid0ICJnbworICAgICAgICAgICAgOzsgYmFjayIuCisg ICAgICAgICAgICAobGV0ICgoaGlzdG9yeSAoeHJlZi0tZ2V0LWhpc3RvcnkpKSkKKyAgICAgICAg ICAgICAgKHVubGVzcyAobnVsbCAoY2FyIGhpc3RvcnkpKQorICAgICAgICAgICAgICAgIChwb3Ag KGNhciBoaXN0b3J5KSkpKSkKKyAgICAgICAgKGVycm9yCisgICAgICAgICA7OyBQcm9wYWdhdGUg dGhlIHNpZ25hbC4KKyAgICAgICAgIChzaWduYWwgKGNhciBlcnIpIChjZHIgZXJyKSkpKQorICAg IDs7IE5vdCBpbiBhIGNvZGUgYmxvY2sgY29udGV4dC4gIFRoaXMgc2hvdWxkIHJlYWxseSBuZXZl ciBoYXBwZW4uCisgICAgKGZ1bmNhbGwtaW50ZXJhY3RpdmVseSAjJ3hyZWYtZmluZC1kZWZpbml0 aW9ucyBhcmdzKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbWF5YmUtcnVuLWNvbW1hbmQtaW4t Y29kZS1ibG9jayAoKQorICAiSGVscGVyIGZ1bmN0aW9uIHRvIHdyYXAgYSBjb21tYW5kIGZvciBh IGNvZGUtYmxvY2sgY29udGV4dC4KK0lmIGB0aGlzLWNvbW1hbmQnIGlzIGEgbWVtYmVyIG9mIGBt YXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzJyBhbmQKK3BvaW50IGlzIHdpdGhpbiBhIGNv ZGUgYmxvY2sgd2l0aCBhbiBhdmFpbGFibGUgbW9kZSwgaXQgd2lsbCBydW4gaW4gdGhhdAorY29k ZSBibG9jaydzIG1vZGUgaW4gYSBidWZmZXIgbmFycm93ZWQgdG8gaXRzIGNvbnRlbnQuICBPdGhl cndpc2UsIHRoZQorY29tbWFuZCB3aWxsIHJ1biBpbiB0aGUgY29udGV4dCBvZiB0aGUgYG1hcmtk b3duLXRzLW1vZGUnIGJ1ZmZlci4iCisgICh3aGVuIChtZW1xIHRoaXMtY29tbWFuZCBtYXJrZG93 bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzKQorICAgICh3aGVuLWxldCogKChjb21tYW5kIHRoaXMt Y29tbWFuZCkKKyAgICAgICAgICAgICAgICAoYmxvY2stbW9kZSAobWFya2Rvd24tdHMtY29kZS1i bG9jay1tb2RlLWF0KSkKKyAgICAgICAgICAgICAgICAoKGZib3VuZHAgYmxvY2stbW9kZSkpKQor ICAgICAgKHNldHEgdGhpcy1jb21tYW5kIChsYW1iZGEgKCZyZXN0IGFyZ3MpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaW50ZXJhY3RpdmUpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYXBwbHkgIydtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jaworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLW1vZGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYXJncykpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXJ1bi1jb21tYW5kLWluLWNvZGUt YmxvY2sgKGJsb2NrLW1vZGUgY29tbWFuZCAmcmVzdCBhcmdzKQorICAiUnVuIENPTU1BTkQgaW4g QkxPQ0stTU9ERS4KK0FSR1MgYXJlIGNhcHR1cmVkIGJ5IGBtYXJrZG93bi10cy0tbWF5YmUtcnVu LWNvbW1hbmQtaW4tY29kZS1ibG9jaycuIgorICAod2hlbi1sZXQqICgoYmVnIChnZXQtY2hhci1w cm9wZXJ0eSAocG9pbnQpICdtYXJrZG93bi10cy1jb2RlLWJlZy1tYXJrZXIpKQorICAgICAgICAg ICAgICAoZW5kIChnZXQtY2hhci1wcm9wZXJ0eSAocG9pbnQpICdtYXJrZG93bi10cy1jb2RlLWVu ZC1tYXJrZXIpKQorICAgICAgICAgICAgICAoc3RyIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3Bl cnRpZXMgYmVnIGVuZCkpKQorICAgIDs7IFVzZSBhIHRlbXAgKG9yIHdvcmspIGJ1ZmZlciBiZWNh dXNlIHRyZWVzaXQgY3VycmVudGx5IGNvbmZ1c2VzCisgICAgOzsgbm9kZXMgaW4gYW4gaW5kaXJl Y3QgYnVmZmVyIGV2ZW4gaWYgdGhlIGluZGlyZWN0IGJ1ZmZlciBpcyBub3QKKyAgICA7OyBuYXJy b3dlZC4KKyAgICAobGV0KiAoKHRlbXAtZGVhY3RpdmF0ZS1tYXJrKQorICAgICAgICAgICAob3Jp Zy1wb2ludCAocG9pbnQpKQorICAgICAgICAgICAob3JpZy1tYXJrIChtYXJrIHQpKQorICAgICAg ICAgICAob3JpZy1tYXJrLWFjdGl2ZSBtYXJrLWFjdGl2ZSkKKyAgICAgICAgICAgKHJlZ2lvbi1i ZWcgKHVzZS1yZWdpb24tYmVnaW5uaW5nKSkKKyAgICAgICAgICAgKHJlZ2lvbi1lbmQgKHVzZS1y ZWdpb24tZW5kKSkKKyAgICAgICAgICAgKGFkai1wb2ludCAoMSsgKC0gb3JpZy1wb2ludCBiZWcp KSkKKyAgICAgICAgICAgKGFkai1tYXJrICh3aGVuIG9yaWctbWFyayAoMSsgKC0gb3JpZy1tYXJr IGJlZykpKSkKKyAgICAgICAgICAgKGFkai1yZWdpb24tYmVnICh3aGVuIHJlZ2lvbi1iZWcgKDEr ICgtIG9yaWctcG9pbnQgcmVnaW9uLWJlZykpKSkKKyAgICAgICAgICAgKGFkai1yZWdpb24tZW5k ICh3aGVuIHJlZ2lvbi1lbmQgKDErICgtIG9yaWctcG9pbnQgcmVnaW9uLWVuZCkpKSkKKyAgICAg ICAgICAgKHBvaW50LWRlbHRhIDApCisgICAgICAgICAgIChzb3VyY2UtYnVmZmVyIChjdXJyZW50 LWJ1ZmZlcikpKQorICAgICAgKHdpdGgtd29yay1idWZmZXIKKyAgICAgICAgKGluc2VydCBzdHIp CisgICAgICAgIChnb3RvLWNoYXIgYWRqLXBvaW50KQorICAgICAgICA7OyBQcm9wYWdhdGUgbWFy ayAoYW5kIHJlZ2lvbikuCisgICAgICAgICh3aGVuIG9yaWctbWFyay1hY3RpdmUKKyAgICAgICAg ICAoc2V0LW1hcmsgYWRqLW1hcmspKQorICAgICAgICAobWFya2Rvd24tdHMtLWluaGliaXQtbWVz c2FnZXMtYW5kLXdhcm5pbmdzCisgICAgICAgICAgJ21hcmtkb3duLXRzLWluaGliaXQtY29kZS1i bG9jay1tb2RlLXdhcm5pbmdzCisgICAgICAgICAgKGRlbGF5LW1vZGUtaG9va3MKKyAgICAgICAg ICAgIChsZXQgKChtYXJrZG93bi10cy0tc2V0LXVwLWlubGluZQorICAgICAgICAgICAgICAgICAg IChwcm92aWRlZC1tb2RlLWRlcml2ZWQtcCBibG9jay1tb2RlICdtYXJrZG93bi10cy1tb2RlKSkp CisgICAgICAgICAgICAgIChmdW5jYWxsIGJsb2NrLW1vZGUpKSkpCisgICAgICAgIChsZXQgKChw b2ludCAocG9pbnQpKQorICAgICAgICAgICAgICAoYXJpdHkgKGNkciAoZnVuYy1hcml0eSBjb21t YW5kKSkpKQorICAgICAgICAgIChjb25kCisgICAgICAgICAgICgobWVtcSBjb21tYW5kIG1hcmtk b3duLXRzLWNvZGUtYmxvY2stdGhpbmctY29tbWFuZHMpCisgICAgICAgICAgICAod2hlbi1sZXQq ICgodGhpbmcgKHRoaW5nLWF0LXBvaW50ICdzeW1ib2wpKSkKKyAgICAgICAgICAgICAgKGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kIHRoaW5nKSkpCisgICAgICAgICAgICgobWVtcSBjb21t YW5kIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stcmVnaW9uLWNvbW1hbmRzKQorICAgICAgICAgICAg KHdoZW4gKGFuZCBhZGotcmVnaW9uLWJlZyBhZGotcmVnaW9uLWVuZCkKKyAgICAgICAgICAgICAg KGFwcGx5ICMnZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAg ICAgIGFkai1yZWdpb24tYmVnIGFkai1yZWdpb24tZW5kIGFyZ3MpKSkKKyAgICAgICAgICAgKCh6 ZXJvcCBhcml0eSkKKyAgICAgICAgICAgIChmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZCkp CisgICAgICAgICAgICgoZXEgMSBhcml0eSkKKyAgICAgICAgICAgIChmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZCAoY2FyIGFyZ3MpKSkKKyAgICAgICAgICAgKHQKKyAgICAgICAgICAgIChh cHBseSAjJ2Z1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kIGFyZ3MpKSkKKyAgICAgICAgICAo c2V0cSBzdHIgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQtbWluKSAocG9p bnQtbWF4KSkpCisgICAgICAgICAgKHNldHEgdGVtcC1kZWFjdGl2YXRlLW1hcmsgZGVhY3RpdmF0 ZS1tYXJrKQorICAgICAgICAgIChzZXRxIHBvaW50LWRlbHRhICgtIChwb2ludCkgcG9pbnQpKSkK KyAgICAgICAgKGxldCAoKHdvcmstYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKQorICAgICAgICAg ICh3aXRoLWN1cnJlbnQtYnVmZmVyIHNvdXJjZS1idWZmZXIKKyAgICAgICAgICAgIChyZXBsYWNl LXJlZ2lvbi1jb250ZW50cyBiZWcgZW5kIHdvcmstYnVmZmVyKQorICAgICAgICAgICAgOzsgUHJv cGFnYXRlIG1hcmsgZGVhY3RpdmF0aW9uIHRvIHRoZSBzb3VyY2UgYnVmZmVyLgorICAgICAgICAg ICAgKHNldHEgZGVhY3RpdmF0ZS1tYXJrIHRlbXAtZGVhY3RpdmF0ZS1tYXJrKQorICAgICAgICAg ICAgOzsgTW92ZSBwb2ludCBpZiBpdCBtb3ZlZCBpbiB0aGUgdGVtcCBidWZmZXIuCisgICAgICAg ICAgICAoZ290by1jaGFyICgrIG9yaWctcG9pbnQgcG9pbnQtZGVsdGEpKQorICAgICAgICAgICAg OzsgUmVjb3JkIHRoZSBvcmlnaW5hbCBjb21tYW5kLgorICAgICAgICAgICAgKHNldHEgdGhpcy1j b21tYW5kIGNvbW1hbmQpCisgICAgICAgICAgICA7OyBUaGlzIGhlbHBzIG1haW50YWluIGRpc2Ny ZXRlIGNvbW1hbmQgYWN0aW9ucy4KKyAgICAgICAgICAgICh1bmRvLWJvdW5kYXJ5KQorICAgICAg ICAgICAgOzsgTWFrZSBzdXJlIHRoZSBvcmlnaW5hdGluZyByZWdpb24gaXMgcmVmb250aWZpZWQu CisgICAgICAgICAgICAoZm9udC1sb2NrLWZsdXNoIGJlZyBlbmQpKSkpKSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlciAocG9zICZvcHRpb25hbCBiYWNr d2FyZCkKKyAgIlJldHVybiB0aGUgbmV4dCBvciBwcmV2aW91cyBmZW5jZWRfY29kZV9ibG9ja19k ZWxpbWl0ZXIgbm9kZSwgb3IgbmlsLgorU2VhcmNoIHN0YXJ0aW5nIGF0IFBPUy4KK1NlYXJjaCBi YWNrd2FyZCBpZiBCQUNLV0FSRCBpcyBub24tbmlsLiIKKyAgKHRyZWVzaXQtc2VhcmNoLWZvcndh cmQgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3duKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAobGFtYmRhIChub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9 ICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJmZW5jZWRfY29kZV9ibG9ja19kZWxpbWl0ZXIiKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgYmFja3dhcmQpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbmQtbmV4dC1jb2Rl LWJsb2NrLWRlbGltaXRlciAoJm9wdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcG9zIGJhY2t3YXJkIHJlbWFpbikKKyAgIlJldHVybiB0 aGUgbmV4dCBvciBwcmV2aW91cyBmZW5jZWRfY29kZV9ibG9ja19kZWxpbWl0ZXIgbm9kZSwgb3Ig bmlsLgorU2VhcmNoIHN0YXJ0aW5nIGF0IFBPUyBvciBgcG9pbnQnLCBpZiBQT1MgaXMgbmlsLgor U2VhcmNoIGJhY2t3YXJkIGlmIEJBQ0tXQVJEIGlzIG5vbi1uaWwuCitJZiBSRU1BSU4gaXMgbm9u LW5pbCwgbW92ZSB0byB0aGUgdG9wIG9yIGJvdHRvbSBvZiB0aGUgY3VycmVudCBjb2RlCitibG9j aywgaWYgaW4gb25lLiIKKyAgKHNldHEgcG9zIChvciBwb3MgKHBvaW50KSkpCisgIChhbmQtbGV0 KiAoKG5vZGUgKG1hcmtkb3duLXRzLS1maW5kLWNvZGUtYmxvY2stZGVsaW1pdGVyIHBvcyBiYWNr d2FyZCkpKQorICAgIChsZXQgKChpbi1ibG9jayAobWFya2Rvd24tdHMtYXQtY29kZS1ibG9jay1w IHBvcykpKQorICAgICAgKGNvbmQKKyAgICAgICAoKGFuZCByZW1haW4gaW4tYmxvY2spCisgICAg ICAgIG5vZGUpCisgICAgICAgKHJlbWFpbgorICAgICAgICBuaWwpCisgICAgICAgKHQKKyAgICAg ICAgKHdoaWxlIChhbmQgbm9kZQorICAgICAgICAgICAgICAgICAgICA7OyBJZiBiYWNrd2FyZCwg c2tpcCB0aGUgY3VycmVudCBibG9jaydzCisgICAgICAgICAgICAgICAgICAgIDs7IHN0YXJ0aW5n IGRlbGltaXRlci4KKyAgICAgICAgICAgICAgICAgICAgKG9yIChhbmQgYmFja3dhcmQgaW4tYmxv Y2sgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcgbm9kZSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAobm90ICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIG5vZGUpKSkpCisgICAgICAgICAg KHNldHEgaW4tYmxvY2sgKG1hcmtkb3duLXRzLWF0LWNvZGUtYmxvY2stcCBwb3MpKQorICAgICAg ICAgIChzZXRxIHBvcyAoaWYgYmFja3dhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICh0cmVl c2l0LW5vZGUtc3RhcnQgbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LWVuZCBub2RlKSkpCisgICAgICAgICAgKHNldHEgbm9kZSAobWFya2Rvd24tdHMtLWZpbmQtY29k ZS1ibG9jay1kZWxpbWl0ZXIgcG9zIGJhY2t3YXJkKSkpCisgICAgICAgIG5vZGUpKSkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtbW92ZS10by1uZXh0LWNvZGUtYmxvY2sgKGFyZykKKyAgIk1vdmUg cG9pbnQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGNvZGUgYmxvY2suCitXaXRoIHRoZSBwcmVm aXggYXJndW1lbnQgQVJHLCByZW1haW4gd2l0aGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2suIgor ICAoaW50ZXJhY3RpdmUgIlAiKQorICAod2hlbi1sZXQqICgobm9kZQorICAgICAgICAgICAgICAg KG1hcmtkb3duLXRzLS1maW5kLW5leHQtY29kZS1ibG9jay1kZWxpbWl0ZXIgbmlsIG5pbCBhcmcp KSkKKyAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLW1vdmUtdG8tcHJldmlvdXMtY29kZS1ibG9jayAoYXJnKQorICAiTW92ZSBw b2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIHByZXZpb3VzIGNvZGUgYmxvY2suCitXaXRoIHRoZSBw cmVmaXggYXJndW1lbnQgQVJHLCByZW1haW4gd2l0aGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2su IgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAod2hlbi1sZXQqICgobm9kZQorICAgICAgICAgICAg ICAgKG1hcmtkb3duLXRzLS1maW5kLW5leHQtY29kZS1ibG9jay1kZWxpbWl0ZXIgbmlsICdiYWNr d2FyZCBhcmcpKSkKKyAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpKSkK KworOzs7IFRhYmxlcyBha2EgcGlwZSB0YWJsZXM6CisKKzs7OzsgVXRpbGl0aWVzOgorCisoZGVm Y29uc3QgbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LWJ1ZmZlcgorICAiKm1hcmtkb3duLXRzLXRh YmxlLWV4cG9ydCoiKQorCis7OyBJbiBmcmVxdWVuY3kgbWF0Y2hpbmcgb3JkZXIuCisoZGVmY29u c3QgbWFya2Rvd24tdHMtLXRhYmxlLXJvdy10eXBlcworICAnKCJwaXBlX3RhYmxlX3JvdyIKKyAg ICAicGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93IgorICAgICJwaXBlX3RhYmxlX2hlYWRlciIpKQor Cis7OyBJbiBmcmVxdWVuY3kgbWF0Y2hpbmcgb3JkZXIuCisoZGVmY29uc3QgbWFya2Rvd24tdHMt LXRhYmxlLWNlbGwtdHlwZXMKKyAgJygicGlwZV90YWJsZV9jZWxsIgorICAgICJwaXBlX3RhYmxl X2RlbGltaXRlcl9jZWxsIikpCisKKyhkZWZjb25zdCBtYXJrZG93bi10cy0tdGFibGUtZGVsaW1p dGVyLWNlbGwtdHlwZXMKKyAgJygicGlwZV90YWJsZV9kZWxpbWl0ZXJfY2VsbCIKKyAgICAicGlw ZV90YWJsZV9hbGlnbl9sZWZ0IgorICAgICJwaXBlX3RhYmxlX2FsaWduX3JpZ2h0IikpCisKKyhk ZWZjb25zdCBtYXJrZG93bi10cy0tdGFibGUtZGVsaW1pdGVyLWNlbGwtc3VidHlwZXMKKyAgJygi cGlwZV90YWJsZV9hbGlnbl9sZWZ0IgorICAgICJwaXBlX3RhYmxlX2FsaWduX3JpZ2h0IikpCisK KyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtYWJ1dHRpbmctcG9zIChwb3MpCisgICJBZGp1c3Qg UE9TIHRvIGFidXQgaXRzIGNsb3Nlc3QgdGV4dC4KK1JldHVybiBwb3MgYWRqdXN0ZWQgdG8gdGhl IHBvc2l0aW9uIG9mIHRoZSBuZWFyZXN0IG5vbi1ibGFuayBjaGFyYWN0ZXIuCitPdGhlcndpc2Us IHJldHVybiBuaWwsIGZvciBleGFtcGxlLCBpZiB0aGUgbGluZSBpcyBlbXB0eS4iCisgIChzYXZl LWV4Y3Vyc2lvbgorICAgIChnb3RvLWNoYXIgcG9zKQorICAgIChza2lwLWNoYXJzLWZvcndhcmQg IltbOmJsYW5rOl1dIiAocG9zLWVvbCkpCisgICAgKGlmIChlcSBwb3MgKHBvcy1lb2wpKQorICAg ICAgICAocHJvZ24KKyAgICAgICAgICAoZ290by1jaGFyIHBvcykKKyAgICAgICAgICAoc2tpcC1j aGFycy1iYWNrd2FyZCAiW1s6Ymxhbms6XV0iIChwb3MtYm9sKSkKKyAgICAgICAgICAodW5sZXNz IChlcSBwb3MgKHBvcy1ib2wpKQorICAgICAgICAgICAgKG1heCAocG9pbnQtbWluKSAoMS0gKHBv aW50KSkpKSkKKyAgICAgIChtaW4gKHBvaW50LW1heCkgKDErIChwb2ludCkpKSkpKQorCisoZGVm dW4gbWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtY2VsbCAoJm9wdGlvbmFsIG5vZGUgcG9zIGFidXR0 aW5nKQorICAiQ29tcHV0ZSB0YWJsZSBjZWxsIGZyb20gbmFtZWQgTk9ERSBhdCBQT1MuCitJZiBO T0RFIGlzIG5pbCwgdXNlIHRoZSBub2RlIGF0IFBPUy4KK0lmIFBPUyBpcyBuaWwsIHVzZSBgcG9p bnQnLgorSWYgTk9ERSBpcyBhIGNlbGwgdHlwZSwgcmV0dXJuIGl0LgorSWYgTk9ERSBpcyBhIHN1 YnR5cGUsIHByb21vdGUgaXQuCitJZiBBQlVUVElORyBpcyBub24tbmlsLCBhZGp1c3QgUE9TIHRv IHRoZSBuZWFyZXN0IG5vbi1ibGFuayBjaGFyYWN0ZXIuCitPdGhlcndpc2UsIHJldHVybiBuaWwu IgorICA7OyBXZSBjb3VsZCBzYW5pdHkgY2hlY2sgdmlhIGB0cmVlc2l0LW5vZGUtbmFtZWQnIGFu ZCBlcnJvciBpZiBub3QuCisgIChzZXRxIHBvcyAob3IgcG9zIChwb2ludCkpKQorICAod2hlbiBh YnV0dGluZworICAgIChzZXRxIHBvcyAob3IgKG1hcmtkb3duLXRzLS10YWJsZS1hYnV0dGluZy1w b3MgcG9zKSBwb3MpKSkKKyAgKHdoZW4tbGV0KiAoKG5vZGUgKG9yIG5vZGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtYXQgcG9zICdtYXJrZG93biAnbmFtZWQpKSkKKyAg ICAgICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKSkKKyAgICAoY29uZCAo KG1lbWJlciB0eXBlIG1hcmtkb3duLXRzLS10YWJsZS1jZWxsLXR5cGVzKQorICAgICAgICAgICBu b2RlKQorICAgICAgICAgICgobWVtYmVyIHR5cGUgbWFya2Rvd24tdHMtLXRhYmxlLWRlbGltaXRl ci1jZWxsLXN1YnR5cGVzKQorICAgICAgICAgICAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkK KyAgICAgICAgICAoKG1lbWJlciB0eXBlIG1hcmtkb3duLXRzLS10YWJsZS1yb3ctdHlwZXMpCisg ICAgICAgICAgIChjb25kICgoZXEgYWJ1dHRpbmcgJ2xlZnQpCisgICAgICAgICAgICAgICAgICAo dHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgMCAnbmFtZWQpKQorICAgICAgICAgICAgICAgICA7OyBB Y2NvdW50IGZvciAncmlnaHQgb3IgdC4KKyAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAg ICAgICAgICh0cmVlc2l0LW5vZGUtY2hpbGQgbm9kZSAtMSAnbmFtZWQpKSkpKSkpCisKKyhkZWZ1 biBtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgKCZvcHRpb25hbCBub2RlIHBvcykKKyAgIkNv bXB1dGUgdGFibGUgcm93IGZyb20gbmFtZWQgTk9ERSBhdCBQT1MuCitJZiBOT0RFIGlzIG5pbCwg dXNlIHRoZSBub2RlIGF0IFBPUy4KK0lmIFBPUyBpcyBuaWwsIHVzZSBgcG9pbnQnLgorSWYgTk9E RSBpcyBhIHJvdyB0eXBlLCByZXR1cm4gaXQuCitJZiBOT0RFIGlzIGEgdGFibGUgY2VsbCB0eXBl LCByZXR1cm4gaXRzIHJvdy4KK090aGVyd2lzZSwgcmV0dXJuIG5pbC4iCisgIDs7IFdlIGNvdWxk IHNhbml0eSBjaGVjayB2aWEgYHRyZWVzaXQtbm9kZS1uYW1lZCcgYW5kIGVycm9yIGlmIG5vdC4K KyAgKHdoZW4tbGV0KiAoKG5vZGUgKG9yIG5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICh0 cmVlc2l0LW5vZGUtYXQgKG9yIHBvcyAocG9pbnQpKSAnbWFya2Rvd24gJ25hbWVkKSkpCisgICAg ICAgICAgICAgICh0eXBlICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSkpCisgICAgKGlmIChtZW1i ZXIgdHlwZSBtYXJrZG93bi10cy0tdGFibGUtcm93LXR5cGVzKQorICAgICAgICBub2RlCisgICAg ICAgKHRyZWVzaXQtbm9kZS1wYXJlbnQgKG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLWNlbGwgbm9k ZSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtcGFyc2UtZXJyb3ItcCAoJm9wdGlv bmFsIG5vZGUgcG9zKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgbmFtZWQgTk9ERSBhdCBQT1MgaXMg aW4gYW4gXCJFUlJPUlwiIHN1YnRyZWUuCitOT0RFIG11c3QgYmUgYSB0YWJsZSBlbGVtZW50OyBp LmUuLCBpdHMgdHlwZSBwcmVmaXggaXMgXCJwaXBlX3RhYmxlXCIuCitJZiBOT0RFIGlzIGEgdGFi bGUsIHJldHVybiBuaWwgKGl0IHNob3VsZG4ndCBiZSBpbiBFUlJPUikuCitJZiBOT0RFIGlzIG5v dCBhIHRhYmxlIGVsZW1lbnQsIHJldHVybiBuaWwuCitJZiBOT0RFJ3MgbmVhcmJ5IGFuY2VzdG9y IGlzIGFuIFwiRVJST1JcIiBub2RlLCByZXR1cm4gdC4KK090aGVyd2lzZSwgcmV0dXJuIG5pbC4i CisgIDs7IFdlIGNvdWxkIHNhbml0eSBjaGVjayB2aWEgYHRyZWVzaXQtbm9kZS1uYW1lZCcgYW5k IGVycm9yIGlmIG5vdC4KKyAgKHdoZW4tbGV0KiAoKHJvdyAobWFya2Rvd24tdHMtLXRhYmxlLW5v ZGUtcm93IG5vZGUgcG9zKSkKKyAgICAgICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBl IHJvdykpCisgICAgICAgICAgICAgIChwYXJlbnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQgcm93KSkK KyAgICAgICAgICAgICAgKHBhcmVudC10eXBlICh0cmVlc2l0LW5vZGUtdHlwZSBwYXJlbnQpKSkK KyAgICAoY29uZCAoKGVxdWFsIHR5cGUgInBpcGVfdGFibGUiKQorICAgICAgICAgICBuaWwpCisg ICAgICAgICAgKChlcXVhbCBwYXJlbnQtdHlwZSAicGlwZV90YWJsZSIpCisgICAgICAgICAgIG5p bCkKKyAgICAgICAgICAoKGVxdWFsIHBhcmVudC10eXBlICJFUlJPUiIpCisgICAgICAgICAgIHQp CisgICAgICAgICAgKHQKKyAgICAgICAgICAgKGVycm9yICJTaG91bGQgbmV2ZXIgaGFwcGVuIikp KSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1hdC10YWJsZS1wICgmb3B0aW9uYWwgcG9zIGFidXR0 aW5nKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgUE9TIGlzIGF0IG9yIGluIGEgcGlwZSB0YWJsZS4K K0lmIFBPUyBpcyBuaWwsIHVzZSBwb2ludC4KK1JldHVybiBjb25zIChwb3MgLiB0YWJsZS1ub2Rl KSBpZiBQT1MgaXMgd2l0aGluIGEgdGFibGUsIG90aGVyd2lzZQorcmV0dXJuIG5pbC4KK2lmIFBP UyBpcyB3aXRoaW4gYSB0YWJsZSBidXQgd2l0aCBwYXJzZSBlcnJvcnMsIHNpZ25hbCBhbiBlcnJv ci4KK0lmIEFCVVRUSU5HIGlzIG5vbi1uaWwsIGFkanVzdCBQT1MgdG8gdGhlIG5lYXJlc3Qgbm9u LWJsYW5rIGNoYXJhY3Rlci4KK0lmIHRoZSBwYXJzZWQgdGFibGUgaXMgaW4gRVJST1IsIHJldHVy biBuaWwuIgorICAoc2V0cSBwb3MgKG9yIHBvcyAocG9pbnQpKSkKKyAgKHNhdmUtZXhjdXJzaW9u CisgICAgKGdvdG8tY2hhciBwb3MpCisgICAgOzsgSWYgcG9pbnQgaXMgb24gYW4gZW1wdHkgbGlu ZSwgaXQgaXMgbmV2ZXIgYSB0YWJsZS4KKyAgICAodW5sZXNzIChhbmQgKGVvbHApIChib2xwKSkK KyAgICAgIDs7IElmIHBvaW50IGlzIGJvbCBvciBlb2wgaXQgbWlnaHQgYmUgYWJ1dHRpbmcgYSBw aXBlIHN5bWJvbCBzbworICAgICAgOzsgbG9vayBmb3J3YXJkcyBvciBiYWNrd2FyZHMgb25lIGNo YXJhY3RlciB0byB0ZXN0IGlmIHRoYXQgcG9zCisgICAgICA7OyBpcyBhIHRhYmxlLgorICAgICAg KHdoZW4gYWJ1dHRpbmcKKyAgICAgICAgKHNldHEgcG9zIChvciAobWFya2Rvd24tdHMtLXRhYmxl LWFidXR0aW5nLXBvcyBwb3MpIHBvcykpKQorICAgICAgKHdoZW4tbGV0KiAoKHJvdyAobWFya2Rv d24tdHMtLXRhYmxlLW5vZGUtcm93IG5pbCBwb3MpKSkKKyAgICAgICAgKGlmIChtYXJrZG93bi10 cy0tdGFibGUtcGFyc2UtZXJyb3ItcCByb3cpCisgICAgICAgICAgICA7OyBEbyBub3QgdXNlIGVy cm9yIG9yIHdhcm5pbmcgaGVyZS4gIEVycm9ycyBpbnRlcmZlcmUgd2l0aAorICAgICAgICAgICAg OzsgdGhlIGNvbW1hbmQgbG9vcC4gIFdhcm5pbmdzIGFyZSBhbm5veWluZy4KKyAgICAgICAgICAg IChwcm9nbgorICAgICAgICAgICAgICAobWVzc2FnZSAiSW5jb3JyZWN0bHkgZm9ybWF0dGVkIE1h cmtkb3duIHRhYmxlIChwYXJzZXIgZXJyb3IpIikKKyAgICAgICAgICAgICAgbmlsKQorICAgICAg ICAgIChjb25zIHBvcyAodHJlZXNpdC1zZWFyY2gtZm9yd2FyZAorICAgICAgICAgICAgICAgICAg ICAgcm93CisgICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZVxcJyIgJ2JhY2t3YXJk KSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWVuYWJsZS1pbi10YWJsZS1tb2RlICgpCisg ICJFbmFibGUgYG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUnIGlmIGluIGEgdGFibGUuCitBIHRh YmxlIHdpdGggYSBwYXJzZXIgRVJST1IgaXMgaW5lbGlnaWJsZS4iCisgIChtYXJrZG93bi10cy1p bi10YWJsZS1tb2RlCisgICAoaWYgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpIDEgLTEp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcyAoJm9wdGlv bmFsIHBvcyBhYnV0dGluZykKKyAgIlJldHVybiB0aGUgcm93IG5lYXIgUE9TLgorUmV0dXJuIG5p bCBpZiBub3QgYXQgYSB0YWJsZSBvciB0aGVyZSBpcyBubyByb3cuCitPdGhlcndpc2UgcmV0dXJu IGNvbnMgKHJvdyAuIGluLWhlYWRlcikgd2hlcmUgaW4taGVhZGVyIGlzIG5pbCBvciB0LgorVGhp cyBpcyB1c2VmdWwgdG8gaW5zZXJ0IGEgbmV3IHJvdyBqdXN0IGJlbG93IHRoZSBoZWFkZXIgaW5z dGVhZCBvZiBqdXN0CitiZWxvdyB0aGUgZmlyc3Qgcm93LgorSWYgUE9TIGlzIG5pbCB1c2UgYHBv aW50Jy4KK0lmIEFCVVRUSU5HIGlzIG5vbi1uaWwsIHVzZSAoMS0gUE9TKSBpZiBQT1MgaXMgaW1t ZWRpYXRlbHkgYWZ0ZXIgYSBwaXBlCitzeW1ib2wuIgorICAoc2V0cSBwb3MgKG9yIHBvcyAocG9p bnQpKSkKKyAgKGxldCAoaW4taGVhZGVyKQorICAgICh3aGVuLWxldCogKChhdC10YWJsZSAobWFy a2Rvd24tdHMtYXQtdGFibGUtcCBwb3MgYWJ1dHRpbmcpKQorICAgICAgICAgICAgICAgIChwb3Mg KGNhciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQor ICAgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsIG5pbCBw b3MgYWJ1dHRpbmcpKQorICAgICAgICAgICAgICAgIChjZWxsLXR5cGUgKHRyZWVzaXQtbm9kZS10 eXBlIGNlbGwpKQorICAgICAgICAgICAgICAgIChwYXJlbnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQg Y2VsbCkpCisgICAgICAgICAgICAgICAgKHBhcmVudC10eXBlICh0cmVlc2l0LW5vZGUtdHlwZSBw YXJlbnQpKQorICAgICAgICAgICAgICAgIChsaW5lYWdlIChsaXN0IGNlbGwtdHlwZSBwYXJlbnQt dHlwZSkpCisgICAgICAgICAgICAgICAgOzsgRmluZCB0aGUgZmlyc3Qgcm93IGFmdGVyIHRoZSBo ZWFkZXIgb3IgdGhlIHJvdyBhdCBQT1MgaXMKKyAgICAgICAgICAgICAgICA7OyBvbiBhbmQgaW4g dGhlIHNhbWUgdGFibGUuCisgICAgICAgICAgICAgICAgKHJvdyAoY29uZCAoKG9yIChtZW1iZXIg InBpcGVfdGFibGVfaGVhZGVyIiBsaW5lYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobWVtYmVyICJwaXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciIGxpbmVhZ2UpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGluLWhlYWRlciB0KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkIGNlbGwgIlxcYHBpcGVfdGFibGVf cm93XFwnIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxdWFsIGNlbGwtdHlwZSAi cGlwZV90YWJsZV9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKGVxdWFsIHBhcmVudC10eXBlICJwaXBlX3RhYmxlX3Jv dyIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50KSkpKQorICAgICAgKHdoZW4g KHRyZWVzaXQtbm9kZS1lcSB0YWJsZSAodHJlZXNpdC1zZWFyY2gtZm9yd2FyZAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiXFxgcGlwZV90YWJsZVxcJyIgJ2JhY2t3YXJkKSkKKyAgICAgICAgKGNvbnMg cm93IGluLWhlYWRlcikpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtY29tcHV0ZS1u b2RlLWNvbHVtbiAocm93IG5vZGUpCisgICJDb21wdXRlIE5PREUncyBjb2x1bW4gaW4gUk9XLgor UmV0dXJuIG5pbCBpZiBOT0RFIGlzIG5vdCBpbiBST1cgKHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4p LgorTk9ERSBtdXN0IGJlIGEgbm9kZSBpbiBST1cuCitST1cgbXVzdCBiZSBhIHBpcGVfdGFibGVf aGVhZGVyLCBwaXBlX3RhYmxlX2RlbGltaXRlcl9yb3csIG9yCitwaXBlX3RhYmxlX3Jvdy4iCisg IChjYXRjaCA6Y29sdW1uCisgICAgKGxldCAoKGNvdW50IDApKQorICAgICAgKGRvbGlzdCAoY2Vs bCAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHJvdyAnbmFtZWQpKQorICAgICAgICAod2hlbiAodHJl ZXNpdC1ub2RlLWVxIG5vZGUgY2VsbCkKKyAgICAgICAgICAodGhyb3cgOmNvbHVtbiBjb3VudCkp CisgICAgICAgIChzZXRxIGNvdW50ICgxKyBjb3VudCkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtdGFibGUtLWdvdG8tY29sdW1uIChjb2x1bW4gJm9wdGlvbmFsIG5vLWVycm9yKQorICAiTW92 ZSBwb2ludCBvbiB0aGUgY3VycmVudCByb3cgdG8gQ09MVU1OLgorQ09MVU1OIGlzIGEgMC1iYXNl ZCBpbmRleC4KK1JldHVybiBub24tbmlsIGlmIHN1Y2Nlc3NmdWwuCitJZiBOTy1FUlJPUiBpcyBu b24tbmlsLCByZXR1cm4gbmlsIGlmIHRoZSBjdXJyZW50IHJvdyBkb2VzIG5vdCBleHRlbmQgdG8K K0NPTFVNTiwgb3RoZXJ3aXNlIHNpZ25hbCBhbiBlcnJvci4KK1NpZ25hbCBhbiBlcnJvciBpZiBw b2ludCBpcyBub3QgYXQgYSB0YWJsZS4iCisgIChpZi1sZXQqICgoY2VsbCAobWFya2Rvd24tdHMt LXRhYmxlLW5vZGUtY2VsbCBuaWwgbmlsIHQpKQorICAgICAgICAgICAgKHJvdyAobWFya2Rvd24t dHMtLXRhYmxlLW5vZGUtcm93IGNlbGwpKQorICAgICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9k ZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkpCisgICAgICAoaWYtbGV0KiAoKHRhcmdldC1jZWxsIChu dGggY29sdW1uIGNvbHMpKSkKKyAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3Rh cnQgdGFyZ2V0LWNlbGwpKQorICAgICAgICAodW5sZXNzIG5vLWVycm9yCisgICAgICAgICAgKGVy cm9yICJDb2x1bW4gJVMgbm90IGZvdW5kIiBjb2x1bW4pKSkKKyAgICAoZXJyb3IgIk5vdCBhdCBh IHRhYmxlIikpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLWFsaWduZXJzICh0YWJsZSkK KyAgIkV4dHJhY3QgdGhlIGhlYWRlciBsaW5lIGFsaWduZXJzIGZyb20gbm9kZSBUQUJMRS4KK1Jl dHVybiBhIGxpc3Qgb2YgbGlzdHMgb2YgdGhlIGZvcm06CisgICg6YmVnIHh4eCA6ZW5kIHh4eCA6 YWxpZ24gbGVmdCkKKzphbGlnbiBpcyBvbmUgb2YgYGxlZnQnIGBjZW50ZXInIGByaWdodCcgYHVu c3BlY2lmaWVkJy4iCisgIChsZXQqICgoZGVsaW1pdGVyLXJvdyAodHJlZXNpdC1zZWFyY2gtc3Vi dHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlCisgICAgICAgICAgICAgICAgICAg ICAgICAgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgKGFsaWdu ZXJzCisgICAgICAgICAgKGxldCAocmVzKQorICAgICAgICAgICAgKGRvbGlzdCAoZWx0ICh0cmVl c2l0LW5vZGUtY2hpbGRyZW4gZGVsaW1pdGVyLXJvdyAnbmFtZWQpKQorICAgICAgICAgICAgICAo bGV0ICgoYWxpZ24tYmVnICh0cmVlc2l0LW5vZGUtdHlwZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodHJlZXNpdC1ub2RlLWNoaWxkIGVsdCAwICduYW1lKSkpCisgICAgICAgICAg ICAgICAgICAgIChhbGlnbi1lbmQgKHRyZWVzaXQtbm9kZS10eXBlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtY2hpbGQgZWx0IC0xICduYW1lKSkpKQorICAg ICAgICAgICAgICAgIChwdXNoIChsaXN0CisgICAgICAgICAgICAgICAgICAgICAgIDpiZWcgKHRy ZWVzaXQtbm9kZS1zdGFydCBlbHQpCisgICAgICAgICAgICAgICAgICAgICAgIDplbmQgKHRyZWVz aXQtbm9kZS1lbmQgZWx0KQorICAgICAgICAgICAgICAgICAgICAgICA6YWxpZ24KKyAgICAgICAg ICAgICAgICAgICAgICAgKGNvbmQgKChhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZXF1YWwgYWxpZ24tYmVnICJwaXBlX3RhYmxlX2FsaWduX2xlZnQiKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChlcXVhbCBhbGlnbi1lbmQgInBpcGVfdGFibGVfYWxpZ25fbGVm dCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZnQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgoYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVx dWFsIGFsaWduLWJlZyAicGlwZV90YWJsZV9hbGlnbl9sZWZ0IikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZXF1YWwgYWxpZ24tZW5kICJwaXBlX3RhYmxlX2FsaWduX3JpZ2h0Iikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2VudGVyKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVh bCBhbGlnbi1iZWcgInBpcGVfdGFibGVfYWxpZ25fcmlnaHQiKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlcXVhbCBhbGlnbi1lbmQgInBpcGVfdGFibGVfYWxpZ25fcmlnaHQiKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyaWdodCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHQgJ3Vuc3BlY2lmaWVkKSkpCisgICAgICAgICAgICAgICAgICAgICAgcmVz KSkpCisgICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpKQorICAgIGFsaWduZXJzKSkKKworKGRl ZnVuIG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIgKHdpZHRoIGFsaWduKQorICAiTWFr ZSBhIE1hcmtkb3duIGNvbHVtbiBhbGlnbmVyLgorV0lEVEggaXMgdGhlIGNvbHVtbiB3aWR0aC4K K0FMSUdOIGlzIG9uZSBvZiBgbGVmdCcgYGNlbnRlcicgYHJpZ2h0JyBgdW5zcGVjaWZpZWQnLiIK KyAgKHBjYXNlIGFsaWduCisgICAgKCdsZWZ0CisgICAgIChjb25jYXQgIjoiIChtYWtlLXN0cmlu ZyAoMS0gd2lkdGgpID8tKSkpCisgICAgKCdjZW50ZXIKKyAgICAgKGNvbmNhdCAiOiIgKG1ha2Ut c3RyaW5nICgtIHdpZHRoIDIpID8tKSAiOiIpKQorICAgICgncmlnaHQKKyAgICAgKGNvbmNhdCAo bWFrZS1zdHJpbmcgKDEtIHdpZHRoKSA/LSkgIjoiKSkKKyAgICAoXworICAgICAoY29uY2F0ICht YWtlLXN0cmluZyB3aWR0aCA/LSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtYWxp Z24tY2VsbCAodGV4dCB3aWR0aCBhbGlnbikKKyAgIlJldHVybiBURVhUIHBhZGRlZCB0byBXSURU SCBhbGlnbmVkIHVzaW5nIEFMSUdOLgorVHJ1bmNhdGUgVEVYVCB3aWRlciB0aGFuIFdJRFRILiAg SXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvCitlbnN1cmUgdGV4dCB3aWxsIGZp dC4KK0FMSUdOIGlzIG9uZSBvZiBgbGVmdCcgYGNlbnRlcicgYHJpZ2h0JyBgdW5zcGVjaWZpZWQn LiIKKyAgKGxldCogKChzdHJsZW4gKGxlbmd0aCB0ZXh0KSkKKyAgICAgICAgIChzdHJsZW4wICht aW4gd2lkdGggc3RybGVuKSkKKyAgICAgICAgICh0ZXh0MCAoc3Vic3RyaW5nIHRleHQgMCBzdHJs ZW4wKSkKKyAgICAgICAgIChwYWQgKC0gd2lkdGggc3RybGVuMCkpKQorICAgIChwY2FzZSBhbGln bgorICAgICAgKCdjZW50ZXIKKyAgICAgICAobGV0KiAoKGhhbGYtcGFkIChtYWtlLXN0cmluZyAo Zmxvb3IgKC8gcGFkIDIpKSA/XHMpKQorICAgICAgICAgICAgICAocyAoY29uY2F0CisgICAgICAg ICAgICAgICAgICBoYWxmLXBhZAorICAgICAgICAgICAgICAgICAgdGV4dDAKKyAgICAgICAgICAg ICAgICAgIGhhbGYtcGFkKSkpCisgICAgICAgICAoc3RyaW5nLXBhZAorICAgICAgICAgIChzdWJz dHJpbmcgcyAwIChtaW4gKGxlbmd0aCBzKSB3aWR0aCkpCisgICAgICAgICAgd2lkdGgpKSkKKyAg ICAgICgncmlnaHQKKyAgICAgICAoc3RyaW5nLXBhZCB0ZXh0IHdpZHRoIG5pbCAnc3RhcnQpKQor ICAgICAgKF8KKyAgICAgICAoc3RyaW5nLXBhZCB0ZXh0IHdpZHRoKSkpKSkKKworOzs7OyBDb21t YW5kczoKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC10YWJsZSAoJm9wdGlvbmFs IG5yb3dzIG5jb2xzIGhlYWRpbmdzIGJvZHkpCisgICJJbnNlcnQgYSBNYXJrZG93biBwaXBlIHRh YmxlLgorTlJPV1MgaXMgdGhlIG51bWJlciBvZiByb3dzIGluIHRoZSBuZXcgdGFibGUgYW5kIGRl ZmF1bHRzIHRvIDMuCisKK05DT0xTIGlzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBhbmQgZGVmYXVs dHMgdG8gMy4KKworSEVBRElOR1MgaXMgYSBsaXN0IG9mIGhlYWRpbmdzIGFuZCBkZWZhdWx0cyB0 byBsZWZ0LWFsaWduZWQgc3ludGhlc2l6ZWQKK2NvbHVtbiBuYW1lcy4gIElmIE5DT0xTIGlzIG5p bCwgdXNlIEhFQURJTkdTIGxlbmd0aC4gIElmIGJvdGggTkNPTFMgYW5kCitIRUFESU5HUyBhcmUg bm9uLW5pbCwgdXNlIHVwIHRvIE5DT0xTIGhlYWRpbmdzLCBzeW50aGVzaXppbmcgdGhlCityZW1h aW5kZXIuCisKK0VhY2ggaGVhZGluZyBpbiB0aGUgbGlzdCBjYW4gYmUgYSBzdHJpbmcgY29sdW1u IG5hbWUgb3IgYSBjb25zIG9mIHRoZQorZm9ybSAobmFtZSAuIGFsaWdubWVudCkgd2hlcmUgYWxp Z25tZW50IGlzIG9uZSBvZiB0aGUgc3ltYm9scyBgbGVmdCcsCitgcmlnaHQnLCBvciBgY2VudGVy Jy4gIElmIGEgc3RyaW5nLCBkZWZhdWx0IGFsaWdubWVudCBpcyB1bnNwZWNpZmllZC4KKworSWYg Qk9EWSBpcyBub24tbmlsLCBpdCBpcyBhIGxpc3Qgb2YgTlJPV1Mgcm93cyB3aGVyZSBlYWNoIHJv dyBpcyBhIGxpc3QKK29mIE5DT0xTIGJvZHkgY2VsbHMuCisKK0ZvciBjb252ZW5pZW5jZSBhbmQg YWVzdGhldGljcywgcGFkIGVhY2ggYm9keSBjZWxsIHRvIHRoZSB3aWR0aCBvZiBpdHMKK2NvbHVt bidzIGhlYWRlciwgYW5kIGFjY29tbW9kYXRlIGFsaWdubWVudCBpbmRpY2F0b3JzLiAgSWYgYSBC T0RZIGNlbGwKK2lzIGxvbmdlciB0aGFuIGl0cyBjb2x1bW4gaGVhZGVyLCBpbnNlcnQgaXQgdW5j aGFuZ2VkLgorCitOb3RlOiBBIGJsYW5rIGxpbmUgaXMgbmVlZGVkIGJlZm9yZSB0aGUgdGFibGUg Zm9yIGl0IHRvIHByb3Blcmx5IHJlbmRlci4KK0lmIHRoZSBsaW5lIHByZWNlZGluZyBgcG9pbnQn IGlzIG5vdCBibGFuaywgaW5zZXJ0IG9uZS4KKworTm90ZTogRHVlIHRvIGFuIGlzc3VlIHdpdGgg dGhlIHRyZWUtc2l0dGVyIE1hcmtkb3duIGdyYW1tYXIsIGEgcm93IG9mCitlbXB0eSBjZWxscyBj YXVzZXMgYSBwYXJzaW5nIGVycm9yLiAgVG8gYXZvaWQgdGhpcywgYW4gZW1wdHkgcm93IHdpbGwK K2NvbnRhaW4gYSBzaW5nbGUgcGVyaW9kIGluIGl0cyBmaXJzdCBjZWxsLiIKKyAgKGludGVyYWN0 aXZlKQorICAoc2V0cSBucm93cyAob3IgbnJvd3MgMykpCisgIChzZXRxIG5jb2xzIChvciBuY29s cyAoYW5kIGhlYWRpbmdzIChsZW5ndGggaGVhZGluZ3MpKSAzKSkKKyAgKHNldHEgaGVhZGluZ3MK KyAgICAgICAgKGxldCAocmVzKQorICAgICAgICAgIChkb3RpbWVzICh4IG5jb2xzKQorICAgICAg ICAgICAgKHB1c2ggKG9yIChudGggeCBoZWFkaW5ncykKKyAgICAgICAgICAgICAgICAgICAgICAo Zm9ybWF0ICJDb2x1bW4gJWQiICgxKyB4KSkpCisgICAgICAgICAgICAgICAgICByZXMpKQorICAg ICAgICAgIChucmV2ZXJzZSByZXMpKSkKKyAgKGxldCAoKGhlYWRpbmctd2lkdGhzCisgICAgICAg ICAobGV0IChyZXMpCisgICAgICAgICAgIChkb2xpc3QgKGVsdCBoZWFkaW5ncykKKyAgICAgICAg ICAgICAobGV0ICgoc3RyIChpZiAoY29uc3AgZWx0KSAoY2FyIGVsdCkgZWx0KSkpCisgICAgICAg ICAgICAgICAocHVzaCAobWF4IG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1bHQtY29sdW1uLXdpZHRo CisgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggc3RyKSkKKyAgICAgICAgICAgICAg ICAgICAgIHJlcykpKQorICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpKQorICAgIDs7IElmIHBv aW50IGlzIG5vdCBhdCBib2wsIGluc2VydCBhIG5ld2xpbmUuCisgICAgKHVubGVzcyAoZXEgKHBv aW50KSAocG9zLWJvbCkpCisgICAgICAoaW5zZXJ0ICJcbiIpKQorICAgIDs7IEluc2VydCBhbiBl bXB0eSBsaW5lIGlmIG5lZWRlZC4KKyAgICAodW5sZXNzIChzYXZlLWV4Y3Vyc2lvbgorICAgICAg ICAgICAgICAoZm9yd2FyZC1saW5lIC0xKQorICAgICAgICAgICAgICAoZXEgKHBvcy1ib2wpIChw b3MtZW9sKSkpCisgICAgICAoaW5zZXJ0ICJcbiIpKQorICAgIDs7IEluc2VydCBwYWRkZWQgaGVh ZGluZyB0ZXh0LgorICAgIChpbnNlcnQgInwiKQorICAgIChkb3RpbWVzICh4IG5jb2xzKQorICAg ICAgKGxldCogKChlbHQgKG50aCB4IGhlYWRpbmdzKSkKKyAgICAgICAgICAgICAoc3RyIChpZiAo Y29uc3AgZWx0KSAoY2FyIGVsdCkgZWx0KSkKKyAgICAgICAgICAgICAod2lkdGggKG1heCAzIChu dGggeCBoZWFkaW5nLXdpZHRocykpKQorICAgICAgICAgICAgIChwYWQtd2lkdGggKC0gd2lkdGgg KGxlbmd0aCBzdHIpKSkpCisgICAgICAgIChpbnNlcnQgc3RyIChtYWtlLXN0cmluZyBwYWQtd2lk dGggP1xzKSAifCIpKSkKKyAgICAoaW5zZXJ0ICJcbiIpCisgICAgOzsgSW5zZXJ0IHBhZGRlZCBo ZWFkaW5nIGFsaWduZXJzLgorICAgIChpbnNlcnQgInwiKQorICAgIChkb3RpbWVzICh4IG5jb2xz KQorICAgICAgKGxldCogKChlbHQgKG50aCB4IGhlYWRpbmdzKSkKKyAgICAgICAgICAgICAoYWxp Z24gKGlmIChjb25zcCBlbHQpIChjZHIgZWx0KSAndW5zcGVjaWZpZWQpKQorICAgICAgICAgICAg ICh3aWR0aCAobWF4IDMgKG50aCB4IGhlYWRpbmctd2lkdGhzKSkpKQorICAgICAgICAoaW5zZXJ0 IChtYXJrZG93bi10cy0tdGFibGUtbWFrZS1hbGlnbmVyIHdpZHRoIGFsaWduKSkpCisgICAgICAo aW5zZXJ0ICJ8IikpCisgICAgKGluc2VydCAiXG4iKQorICAgIDs7IEluc2VydCBCT0RZIGNlbGxz IG9yIGVtcHR5IGNlbGxzLgorICAgIChkb3RpbWVzICh5IG5yb3dzKQorICAgICAgKGluc2VydCAi fCIpCisgICAgICAobGV0ICgocm93IChudGggeSBib2R5KSkpCisgICAgICAgIChkb3RpbWVzICh4 IG5jb2xzKQorICAgICAgICAgIDs7IFRPRE86IFJlbW92ZSB0aGUgcGxhY2Vob2xkZXIgY2hhcmFj dGVyIGlmIHRoZSB0cmVlLXNpdHRlcgorICAgICAgICAgIDs7IGdyYW1tYXIgaXMgcmVwYWlyZWQu CisgICAgICAgICAgKGxldCogKChzdHIgKG9yIChudGggeCByb3cpIChhbmQgKGVxIHggMCkgIi4i KSAiIikpCisgICAgICAgICAgICAgICAgIChzdHJsZW4gKGxlbmd0aCBzdHIpKQorICAgICAgICAg ICAgICAgICAod2lkdGggKG50aCB4IGhlYWRpbmctd2lkdGhzKSkKKyAgICAgICAgICAgICAgICAg KHBhZC13aWR0aCAobWF4IDAgKC0gd2lkdGggc3RybGVuKSkpKQorICAgICAgICAgICAgKGluc2Vy dCBzdHIKKyAgICAgICAgICAgICAgICAgICAgKG1ha2Utc3RyaW5nIHBhZC13aWR0aCA/XHMpCisg ICAgICAgICAgICAgICAgICAgICJ8IikpKQorICAgICAgICAoaW5zZXJ0ICJcbiIpKSkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLXRhYmxlICgpCisgICJSZW1vdmUgdGhlIE1h cmtkb3duIHRhYmxlIGF0IHBvaW50LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5v dGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9k ZSAnbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLXRhYmxlKQorICAod2hlbi1sZXQqICgoYXQtdGFi bGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAodGFibGUg KGNkciBhdC10YWJsZSkpKQorICAgIDs7IFRPRE86IFJlbW92ZSBhZnRlciBidWcjMjM5MDMgVW5k byBhZnRlciBrYiBkaWZmZXJzIGZyb20gYWZ0ZXIgTS14CisgICAgKHB1c2ggKHBvaW50KSBidWZm ZXItdW5kby1saXN0KQorICAgIChkZWxldGUtcmVnaW9uICh0cmVlc2l0LW5vZGUtc3RhcnQgdGFi bGUpICh0cmVlc2l0LW5vZGUtZW5kIHRhYmxlKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFi bGUtcHJldmlvdXMtcm93ICgpCisgICJNb3ZlIHRvIHRoZSBwcmV2aW91cyByb3cgaW4gdGhlIHRh YmxlLgorSWYgbm90IGluIGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisg IChtYXJrZG93bi10cy10YWJsZS1uZXh0LXJvdyAtMSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10 YWJsZS1uZXh0LXJvdyAoJm9wdGlvbmFsIG4pCisgICJNb3ZlIHRvIHRoZSBuZXh0IHJvdyBpbiB0 aGUgdGFibGUuCitJZiBOIGlzIG5lZ2F0aXZlLCBtb3ZlIHRvIHRoZSBwcmV2aW91cyByb3cuCitJ ZiBwb2ludCBpcyBvbiB0aGUgbGFzdCByb3cgb2YgdGhlIHRhYmxlLCBpbnNlcnQgYSBuZXcgcm93 IGJlbG93IGFuZAorbW92ZSBpbnRvIGl0LiAgV2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xvbmUg dGhlIGZpbmFsIHJvdyBpbnRvIHRoZSBuZXcKK29uZS4KK0lmIG5vdCBpbiBhIHRhYmxlLCBkbyBu b3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24tdHMtLWJhcmYtaWYtbm90LW1v ZGUgJ21hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93KQorICAobGV0ICgoYmFja3dhcmRzIChhbmQg biAoPCBuIDApKSkpCisgICAgOzsgRG9uJ3QgdXNlIGBtYXJrZG93bi10cy0tdGFibGUtYm9keS1y b3ctbmVhci1wb3MnIGJlY2F1c2Ugd2Ugd2FudAorICAgIDs7IHRvIG9wZXJhdGUgaW4gdGhlIGhl YWRlci4KKyAgICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAg bmlsIHQpKQorICAgICAgICAgICAgICAgIChwb3MgKGNhciBhdC10YWJsZSkpCisgICAgICAgICAg ICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAgIChyb3cgKG1hcmtk b3duLXRzLS10YWJsZS1ub2RlLXJvdyBuaWwgcG9zKSkpCisgICAgICA7OyBJZiBubyBuZXh0IG9y IHByZXYgc2libGluZywgd2UncmUgb24gdGhlIGxhc3QvZmlyc3Qgcm93LgorICAgICAgKGxldCAo KGN1cnJlbnQtY29sdW1uIChjdXJyZW50LWNvbHVtbikpCisgICAgICAgICAgICAobmV4dC1yb3cg KGlmIGJhY2t3YXJkcworICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXBy ZXYtc2libGluZyByb3cgJ25hbWVkKQorICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQt bm9kZS1uZXh0LXNpYmxpbmcgcm93ICduYW1lZCkpKSkKKyAgICAgICAgKGlmIG5leHQtcm93Cisg ICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbmV4dC1yb3cpKQorICAg ICAgICAgICh1bmxlc3MgYmFja3dhcmRzCisgICAgICAgICAgICAobWFya2Rvd24tdHMtdGFibGUt aW5zZXJ0LXJvdy1iZWxvdyBjdXJyZW50LXByZWZpeC1hcmcpKSkKKyAgICAgICAgKG1vdmUtdG8t Y29sdW1uIGN1cnJlbnQtY29sdW1uKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLXBy ZXZpb3VzLWNlbGwgKCkKKyAgIk1vdmUgdG8gdGhlIHByZXZpb3VzIGNlbGwgaW4gdGhlIHRhYmxl LgorSWYgbm90IGluIGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgICht YXJrZG93bi10cy10YWJsZS1uZXh0LWNlbGwgLTEpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFi bGUtbmV4dC1jZWxsICgmb3B0aW9uYWwgbikKKyAgIk1vdmUgdG8gdGhlIG5leHQgY2VsbCBpbiB0 aGUgdGFibGUuCitJZiBOIGlzIG5lZ2F0aXZlLCBtb3ZlIHRvIHRoZSBwcmV2aW91cyBjZWxsLgor SWYgbm90IGluIGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJr ZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtbmV4dC1jZWxsKQor ICAobGV0ICgoYmFja3dhcmRzIChhbmQgbiAoPCBuIDApKSkpCisgICAgKHdoZW4tbGV0KiAoKGF0 LXRhYmxlIChtYXJrZG93bi10cy1hdC10YWJsZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgICAo cG9zIChjYXIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAgICh0YWJsZSAoY2RyIGF0LXRhYmxl KSkKKyAgICAgICAgICAgICAgICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24g J25hbWVkKSkKKyAgICAgICAgICAgICAgICAoY2VsbCAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUt Y2VsbCBub2RlKSkKKyAgICAgICAgICAgICAgICAoY2VsbC10eXBlICh0cmVlc2l0LW5vZGUtdHlw ZSBub2RlKSkKKyAgICAgICAgICAgICAgICAocm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1y b3cgY2VsbCkpCisgICAgICAgICAgICAgICAgKHJvdy10eXBlICh0cmVlc2l0LW5vZGUtdHlwZSBy b3cpKQorICAgICAgICAgICAgICAgIChuZXh0LWNlbGwKKyAgICAgICAgICAgICAgICAgKGNvbmQK KyAgICAgICAgICAgICAgICAgIDs7IElmIGluIGEgcGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93IGFu ZCBub3QgdGhlIGZpcnN0CisgICAgICAgICAgICAgICAgICA7OyBvciBmaW5hbCBjZWxsIGluIHRo ZSByb3csIHN0YXkgd2l0aGluIHRoZSByb3cKKyAgICAgICAgICAgICAgICAgIDs7IG90aGVyd2lz ZSwgdGhlIGRlZmF1bHQgY29uZGl0aW9uIHNob3VsZCBtYXRjaC4KKyAgICAgICAgICAgICAgICAg ICgoYW5kIChlcXVhbCByb3ctdHlwZSAicGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93IikKKyAgICAg ICAgICAgICAgICAgICAgICAgIChpZiBiYWNrd2FyZHMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLXByZXYtc2libGluZyBjZWxsICduYW1lZCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcgY2VsbCAnbmFtZWQpKSkK KyAgICAgICAgICAgICAgICAgICAoaWYgYmFja3dhcmRzCisgICAgICAgICAgICAgICAgICAgICAg ICh0cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5nIGNlbGwgJ25hbWVkKQorICAgICAgICAgICAgICAg ICAgICAgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcgY2VsbCAnbmFtZWQpKSkKKyAgICAgICAg ICAgICAgICAgIDs7IElmIG9uIHRoZSBmaXJzdCBwaXBlX3RhYmxlX3JvdydzIGZpcnN0IGNlbGwg bW92aW5nCisgICAgICAgICAgICAgICAgICA7OyBiYWNrd2FyZHMsIG1vdmUgaW50byB0aGUgZmlu YWwKKyAgICAgICAgICAgICAgICAgIDs7IHBpcGVfdGFibGVfZGVsaW1pdGVyX2NlbGwuCisgICAg ICAgICAgICAgICAgICAoKGFuZCAoZXF1YWwgY2VsbC10eXBlICJwaXBlX3RhYmxlX2NlbGwiKQor ICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXByZXYtc2libGluZyByb3cg J25hbWVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGlwZV90YWJsZV9kZWxp bWl0ZXJfcm93IikKKyAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKHRyZWVzaXQtbm9kZS1w cmV2LXNpYmxpbmcgY2VsbCAnbmFtZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgYmFja3dh cmRzKQorICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkCisgICAgICAg ICAgICAgICAgICAgIGNlbGwKKyAgICAgICAgICAgICAgICAgICAgIlxcYHBpcGVfdGFibGVfZGVs aW1pdGVyX2NlbGxcXCciIGJhY2t3YXJkcykpCisgICAgICAgICAgICAgICAgICA7OyBJZiBvbiB0 aGUgZmlyc3QgcGlwZV90YWJsZV9oZWFkZXIncyBmaW5hbCBjZWxsCisgICAgICAgICAgICAgICAg ICA7OyBtb3ZpbmcgZm9yd2FyZHMsIG1vdmUgaW50byB0aGUgZmlyc3QKKyAgICAgICAgICAgICAg ICAgIDs7IHBpcGVfdGFibGVfZGVsaW1pdGVyX2NlbGwuCisgICAgICAgICAgICAgICAgICAoKGFu ZCAoZXF1YWwgY2VsbC10eXBlICJwaXBlX3RhYmxlX2NlbGwiKQorICAgICAgICAgICAgICAgICAg ICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyByb3cgJ25hbWVkKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAicGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93IikKKyAgICAg ICAgICAgICAgICAgICAgICAgIChub3QgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcgY2VsbCAn bmFtZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCBiYWNrd2FyZHMpKQorICAgICAg ICAgICAgICAgICAgICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkCisgICAgICAgICAgICAgICAgICAg IGNlbGwKKyAgICAgICAgICAgICAgICAgICAgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX2NlbGxc XCciIGJhY2t3YXJkcykpCisgICAgICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAg ICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkCisgICAgICAgICAgICAgICAgICAgIGNlbGwKKyAgICAg ICAgICAgICAgICAgICAgIlxcYHBpcGVfdGFibGVfY2VsbFxcJyIgYmFja3dhcmRzKSkpKSkKKyAg ICAgIDs7IEtlZXAgcG9pbnQgd2l0aGluIHRoZSBjdXJyZW50IHRhYmxlLgorICAgICAgKHdoZW4g KHRyZWVzaXQtbm9kZS1lcSB0YWJsZSAodHJlZXNpdC1zZWFyY2gtZm9yd2FyZAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC1jZWxsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZVxcJyIgJ2JhY2t3YXJkKSkKKyAgICAgICAg KGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IG5leHQtY2VsbCkpKQorICAgICAgKHdoZW4g KG9yIChlcSBtYXJrZG93bi10cy10YWJsZS1hdXRvLWFsaWduIHQpCisgICAgICAgICAgICAgICAg KG1lbXEgJ2NlbGwtbmF2aWdhdGlvbiBtYXJrZG93bi10cy10YWJsZS1hdXRvLWFsaWduKSkKKyAg ICAgICAgKG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLXRhYmxlKSkpKSkKKworKGRlZnVuIG1hcmtk b3duLXRzLXRhYmxlLWluc2VydC1yb3ctYmVsb3cgKCZvcHRpb25hbCBjbG9uZSkKKyAgIkluc2Vy dCBhIHRhYmxlIHJvdyBiZWxvdyBwb2ludC4KK0lmIHBvaW50IGlzIGluIHRoZSBoZWFkZXIsIGlu c2VydCBiZWxvdyB0aGUgZmlyc3Qgcm93IG9mIHRoZSB0YWJsZS4KK0lmIENMT05FIGlzIG5vbi1u aWwsIG9yIHdpdGggYSBwcmVmaXggYXJndW1lbnQsIGNsb25lIHRoZSBjdXJyZW50IHJvdy4KK0lm IHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlICJQ IikKKyAgKHNldHEgY2xvbmUgKG9yIGNsb25lIGN1cnJlbnQtcHJlZml4LWFyZykpCisgICAgKG1h cmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3cgJ2JlbG93IGNsb25lKSkKKworKGRlZnVuIG1hcmtk b3duLXRzLXRhYmxlLWluc2VydC1yb3ctYWJvdmUgKCZvcHRpb25hbCBjbG9uZSkKKyAgIkluc2Vy dCBhIHRhYmxlIHJvdyBhYm92ZSBwb2ludC4KK0lmIHBvaW50IGlzIGluIHRoZSBoZWFkZXIsIGlu c2VydCBhYm92ZSB0aGUgZmlyc3Qgcm93IG9mIHRoZSB0YWJsZS4KK0lmIENMT05FIGlzIG5vbi1u aWwsIG9yIHdpdGggYSBwcmVmaXggYXJndW1lbnQsIGNsb25lIHRoZSBjdXJyZW50IHJvdy4KK0lm IHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlICJQ IikKKyAgKHNldHEgY2xvbmUgKG9yIGNsb25lIGN1cnJlbnQtcHJlZml4LWFyZykpCisgICAgKG1h cmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3cgJ2Fib3ZlIGNsb25lKSkKKworKGRlZnVuIG1hcmtk b3duLXRzLXRhYmxlLWNsb25lLXJvdy1iZWxvdyAoKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGJl bG93IHBvaW50LgorSWYgcG9pbnQgaXMgaW4gdGhlIGhlYWRlciwgaW5zZXJ0IGJlbG93IHRoZSBm aXJzdCByb3cgb2YgdGhlIHRhYmxlLgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5v dGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtcm93 LWJlbG93ICdjbG9uZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1jbG9uZS1yb3ctYWJv dmUgKCkKKyAgIkluc2VydCBhIHRhYmxlIHJvdyBhYm92ZSBwb2ludC4KK0lmIHBvaW50IGlzIGlu IHRoZSBoZWFkZXIsIGluc2VydCBhYm92ZSB0aGUgZmlyc3Qgcm93IG9mIHRoZSB0YWJsZS4KK0lm IHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQor ICAobWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdy1hYm92ZSAnY2xvbmUpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdyAoJm9wdGlvbmFsIGFib3ZlIGNsb25lKQorICAi SW5zZXJ0IGEgdGFibGUgcm93IGJlbG93IHBvaW50LgorSWYgcG9pbnQgaXMgaW4gdGhlIGhlYWRl ciwgaW5zZXJ0IGJlbG93IHRoZSBmaXJzdCByb3cgb2YgdGhlIHRhYmxlLgorSWYgQUJPVkUgaXMg bm9uLW5pbCBhbmQgaXMgbm90IGBiZWxvdycsIG9yIHdpdGggYSBwcmVmaXggYXJndW1lbnQsCitp bnNlcnQgdGhlIHJvdyBhYm92ZSBwb2ludC4KK0lmIENMT05FIGlzIG5vbi1uaWwsIGNsb25lIHRo ZSBjdXJyZW50IHJvdywgb3RoZXJ3aXNlIGluc2VydCBlbXB0eQorY2VsbHMuCitJZiBwb2ludCBp cyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICht YXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJv dykKKyAgKHNldHEgYWJvdmUgKGNvbmQgKChlcSBhYm92ZSAnYmVsb3cpIG5pbCkKKyAgICAgICAg ICAgICAgICAgICAgKGFib3ZlIGFib3ZlKQorICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1w cmVmaXgtYXJnIHQpKSkKKyAgKHdoZW4tbGV0KiAoKGF0LXRhYmxlIChtYXJrZG93bi10cy1hdC10 YWJsZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxlKSkKKyAgICAg ICAgICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAoZGVsaW1pdGVy LXJvdyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxlX2Rl bGltaXRlcl9yb3dcXCciKSkKKyAgICAgICAgICAgICAgKG5jb2xzICh0cmVlc2l0LW5vZGUtY2hp bGQtY291bnQgZGVsaW1pdGVyLXJvdyAnbmFtZWQpKQorICAgICAgICAgICAgICAoaGVhZGluZy13 aWR0aHMKKyAgICAgICAgICAgICAgIChsZXQgKHJlcykKKyAgICAgICAgICAgICAgICAgKGRvbGlz dCAoZWx0ICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gZGVsaW1pdGVyLXJvdyAnbmFtZWQpKQorICAg ICAgICAgICAgICAgICAgIChwdXNoIChsZW5ndGggKHRyZWVzaXQtbm9kZS10ZXh0IGVsdCkpIHJl cykpCisgICAgICAgICAgICAgICAgIChucmV2ZXJzZSByZXMpKSkpCisgICAgKGxldCogKChuZWFy IChtYXJrZG93bi10cy0tdGFibGUtYm9keS1yb3ctbmVhci1wb3MgcG9zKSkKKyAgICAgICAgICAg KHJvdyAoY2FyIG5lYXIpKQorICAgICAgICAgICAoY3VycmVudC1jb2x1bW4gKGN1cnJlbnQtY29s dW1uKSkpCisgICAgICA7OyBJZiByb3cgaXMgbmlsLCB0aGVyZSBhcmUgemVybyByb3dzIHNvIGFk ZCBvbmUgYmVsb3cgdGhlCisgICAgICA7OyBkZWxpbWl0ZXItcm93LgorICAgICAgKHVubGVzcyBy b3cKKyAgICAgICAgKHNldHEgY2xvbmUgbmlsKQorICAgICAgICAoc2V0cSByb3cgZGVsaW1pdGVy LXJvdykKKyAgICAgICAgKHNldHEgYWJvdmUgbmlsKSkKKyAgICAgIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAoY29uZCAoYWJvdmUKKyAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQt bm9kZS1zdGFydCByb3cpKSkKKyAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgcm93KSkKKyAgICAgICAgICAgICAgIChpbnNlcnQgIlxu IikpKQorICAgICAgICAoY29uZCAoY2xvbmUKKyAgICAgICAgICAgICAgIDs7IFRoZSBjbG9uZSBz dHJhdGVneSBpcyBXWVNJV1lHLiAgSnVzdCBjb3B5IHRoZSB0ZXh0CisgICAgICAgICAgICAgICA7 OyBhbmQgZG9uJ3QgZnVzcyB3aXRoIGNlbGwgY29udGVudCBhbmQgcGlwZSBzeW1ib2xzLgorICAg ICAgICAgICAgICAgOzsgVGhlIGdyYW1tYXIgaW5jbHVkZXMgdGhlIGZpbmFsIG5ld2xpbmUgKGFu ZAorICAgICAgICAgICAgICAgOzsgc29tZXRpbWVzIG5vdCkuCisgICAgICAgICAgICAgICAoaW5z ZXJ0IChzdHJpbmctdHJpbS1yaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQt bm9kZS10ZXh0IHJvdyAnbm8tcHJvcGVydHkpICJcbiIpKSkKKyAgICAgICAgICAgICAgKHQKKyAg ICAgICAgICAgICAgIChpbnNlcnQgInwiKQorICAgICAgICAgICAgICAgKGRvdGltZXMgKHggbmNv bHMpCisgICAgICAgICAgICAgICAgIChsZXQgKChwYWQtd2lkdGggKG50aCB4IGhlYWRpbmctd2lk dGhzKSkpCisgICAgICAgICAgICAgICAgICAgOzsgVE9ETzogUmVtb3ZlIHRoZSBwbGFjZWhvbGRl ciBjaGFyYWN0ZXIgaWYgdGhlCisgICAgICAgICAgICAgICAgICAgOzsgdHJlZS1zaXR0ZXIgZ3Jh bW1hciBpcyByZXBhaXJlZC4KKyAgICAgICAgICAgICAgICAgICAoaW5zZXJ0IChpZiAoZXEgeCAw KSAiLiIgIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgKC0gcGFk LXdpZHRoIChpZiAoZXEgeCAwKSAxIDApKSA/XHMpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAifCIpKSkpKQorICAgICAgICAod2hlbiBhYm92ZQorICAgICAgICAgIChpbnNlcnQgIlxuIikp KQorICAgICAgKGNvbmQgKGFib3ZlCisgICAgICAgICAgICAgKHdoZW4gKD4gY3VycmVudC1jb2x1 bW4gMCkKKyAgICAgICAgICAgICAgICh3aXRoLXN1cHByZXNzZWQtd2FybmluZ3MgKChpbnRlcmFj dGl2ZS1vbmx5IHByZXZpb3VzLWxpbmUpKQorICAgICAgICAgICAgICAgICAocHJldmlvdXMtbGlu ZSkpKSkKKyAgICAgICAgICAgICh0ICh3aXRoLXN1cHByZXNzZWQtd2FybmluZ3MgKChpbnRlcmFj dGl2ZS1vbmx5IG5leHQtbGluZSkpCisgICAgICAgICAgICAgICAgIChuZXh0LWxpbmUpKSkpKSkp CisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1kZWxldGUtcm93ICgpCisgICJEZWxldGUgdGhl IHRhYmxlIHJvdyBhdCBwb2ludC4KK0lmIHBvaW50IGlzIG9uIHRoZSBoZWFkZXIgb3IgZGVsaW1p dGVyIHJvdywgZG8gbm90aGluZy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3Ro aW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24tdHMtLWJhcmYtaWYtbm90LW1vZGUg J21hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1yb3cpCisgICh3aGVuLWxldCogKChuZWFyIChtYXJr ZG93bi10cy0tdGFibGUtYm9keS1yb3ctbmVhci1wb3MgbmlsIHQpKQorICAgICAgICAgICAgICA7 OyBCYWlsIGlmIHBvaW50IGlzIG9uIHRoZSBoZWFkZXIgb3IgZGVsaW1pdGVyIHJvdyDigJQgZG8K KyAgICAgICAgICAgICAgOzsgbm90IHNpbGVudGx5IGRlbGV0ZSBhIGJvZHkgcm93IHRoZSB1c2Vy IGRpZCBub3Qgc2VsZWN0LgorICAgICAgICAgICAgICAoKG5vdCAoY2RyIG5lYXIpKSkKKyAgICAg ICAgICAgICAgKHJvdyAoY2FyIG5lYXIpKSkKKyAgICAobGV0ICgoY3VycmVudC1jb2x1bW4gKGN1 cnJlbnQtY29sdW1uKSkpCisgICAgICAoZGVsZXRlLXJlZ2lvbiAodHJlZXNpdC1ub2RlLXN0YXJ0 IHJvdykKKyAgICAgICAgICAgICAgICAgICAgIChtaW4gKDErICh0cmVlc2l0LW5vZGUtZW5kIHJv dykpIChwb2ludC1tYXgpKSkKKyAgICAgIChtb3ZlLXRvLWNvbHVtbiBjdXJyZW50LWNvbHVtbikp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLW1vdmUtcm93LXVwICgpCisgICJNb3ZlIHRo ZSByb3cgYXQgcG9pbnQgdXAgb25lIGxpbmUuCitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwg ZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLW1vdmUt cm93KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLW1vdmUtcm93LWRvd24gKCkKKyAgIk1v dmUgdGhlIHJvdyBhdCBwb2ludCBkb3duIG9uZSBsaW5lLgorSWYgcG9pbnQgaXMgbm90IGF0IGEg dGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy10YWJs ZS1tb3ZlLXJvdyAnZG93bikpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1tb3ZlLXJvdyAo Jm9wdGlvbmFsIGRvd24pCisgICJNb3ZlIHRoZSByb3cgYXQgcG9pbnQgdXAgb25lIGxpbmUuCitJ ZiBET1dOIGlzIG5vbi1uaWwsIG9yIHdpdGggYSBwcmVmaXggYXJndW1lbnQsIG1vdmUgdGhlIHJv dyBkb3duIG9uZQorbGluZS4KK0lmIHBvaW50IGlzIG9uIHRoZSBoZWFkZXIgb3IgZGVsaW1pdGVy IHJvdywgZG8gbm90aGluZy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5n LiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24tdHMtLWJhcmYtaWYtbm90LW1vZGUgJ21h cmtkb3duLXRzLXRhYmxlLW1vdmUtcm93KQorICAoc2V0cSBkb3duIChvciBkb3duIGN1cnJlbnQt cHJlZml4LWFyZykpCisgICh3aGVuLWxldCogKChhdC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFi bGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgIChwb3MgKGNhciBhdC10YWJsZSkpCisgICAgICAg ICAgICAgICh0YWJsZSAoY2RyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKG5lYXIgKG1hcmtk b3duLXRzLS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcyBwb3MpKQorICAgICAgICAgICAgICA7OyBC YWlsIGlmIHBvaW50IGlzIG9uIHRoZSBoZWFkZXIgb3IgZGVsaW1pdGVyIHJvdyDigJQgZG8KKyAg ICAgICAgICAgICAgOzsgbm90IHNpbGVudGx5IG1vdmUgYSBib2R5IHJvdyB0aGUgdXNlciBkaWQg bm90IHNlbGVjdC4KKyAgICAgICAgICAgICAgKChub3QgKGNkciBuZWFyKSkpCisgICAgICAgICAg ICAgIChyb3cgKGNhciBuZWFyKSkpCisgICAgOzsgRG8gbm90IG1vdmUgYWJvdmUgdGhlIHBpcGVf dGFibGVfZGVsaW1pdGVyX3Jvdy4KKyAgICA7OyBEbyBub3QgbW92ZSBiZWxvdyB0aGUgYm90dG9t IG9mIHRoZSB0YWJsZS4KKyAgICAodW5sZXNzIChvciAoYW5kIChub3QgZG93bikKKyAgICAgICAg ICAgICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1wcmV2LXNpYmxpbmcgcm93ICduYW1lZCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInBpcGVfdGFibGVfZGVsaW1pdGVyX3JvdyIpKQorICAg ICAgICAgICAgICAgIChhbmQgZG93bgorICAgICAgICAgICAgICAgICAgICAgKG5vdCAodHJlZXNp dC1ub2RlLW5leHQtc2libGluZyByb3cgJ25hbWVkKSkpKQorICAgICAgKGxldCAoKHJvdzIgKGlm IGRvd24KKyAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBy b3cgJ25hbWVkKQorICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXByZXYtc2libGlu ZyByb3cgJ25hbWVkKSkpCisgICAgICAgICAgICAocm93LWVuZCAodHJlZXNpdC1ub2RlLWVuZCBy b3cpKSkKKyAgICAgICAgOzsgVE9ETzogUmVtb3ZlIGFmdGVyIGJ1ZyMyMzkwMyBVbmRvIGFmdGVy IGtiIGRpZmZlcnMgZnJvbSBhZnRlciBNLXgKKyAgICAgICAgKHB1c2ggKHBvaW50KSBidWZmZXIt dW5kby1saXN0KQorICAgICAgICA7OyBJZiByb3cgcG9pbnQgaXMgb3V0c2lkZSBpdHMgc291cmNl IHJlZ2lvbiwgZS5nLiwgYXQgZW9sLCBtb3ZlCisgICAgICAgIDs7IGl0IGluc2lkZSB0aGUgcmVn aW9uIGZvciBzdGFiaWxpdHkuCisgICAgICAgICh3aGVuICg+PSAocG9pbnQpIHJvdy1lbmQpCisg ICAgICAgICAgKGdvdG8tY2hhciAobWF4IChwb2ludC1taW4pICgxLSByb3ctZW5kKSkpKQorICAg ICAgICAodHJhbnNwb3NlLXJlZ2lvbnMgKHRyZWVzaXQtbm9kZS1zdGFydCByb3cpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCByb3cpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IHJvdzIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCByb3cyKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93 bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQgKCZvcHRpb25hbCBjbG9uZSkKKyAgIkluc2Vy dCBhIHRhYmxlIGNvbHVtbiB0byB0aGUgbGVmdCBvZiBwb2ludCdzIGNvbHVtbi4KK0lmIENMT05F IGlzIG5vbi1uaWwsIG9yIHdpdGggYSBwcmVmaXggYXJndW1lbnQsIGNsb25lIHRoZSBjdXJyZW50 Citjb2x1bW4sIG90aGVyd2lzZSBpbnNlcnQgZW1wdHkgY2VsbHMuCitQb2ludCBjYW4gYmUgaW4g dGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRv IG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAobWFya2Rvd24tdHMtdGFibGUtaW5z ZXJ0LWNvbHVtbiAnbGVmdCBjbG9uZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1pbnNl cnQtY29sdW1uLXJpZ2h0ICgmb3B0aW9uYWwgY2xvbmUpCisgICJJbnNlcnQgYSB0YWJsZSBjb2x1 bW4gdG8gdGhlIHJpZ2h0IG9mIHBvaW50J3MgY29sdW1uLgorSWYgQ0xPTkUgaXMgbm9uLW5pbCwg b3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xvbmUgdGhlIGN1cnJlbnQKK2NvbHVtbiwgb3Ro ZXJ3aXNlIGluc2VydCBlbXB0eSBjZWxscy4KK1BvaW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVh ZGVyIG9yIGJvZHkuCitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisg IChpbnRlcmFjdGl2ZSAiUCIpCisgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uICdy aWdodCBjbG9uZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1jbG9uZS1jb2x1bW4tbGVm dCAoKQorICAiQ2xvbmUgdGhlIGN1cnJlbnQgY29sdW1uIHRvIGl0cyBsZWZ0LgorUG9pbnQgY2Fu IGJlIGluIHRoZSB0YWJsZSBoZWFkZXIgb3IgYm9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRh YmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24tdHMtdGFibGUt aW5zZXJ0LWNvbHVtbi1sZWZ0ICdjbG9uZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1j bG9uZS1jb2x1bW4tcmlnaHQgKCkKKyAgIkNsb25lIHRoZSBjdXJyZW50IGNvbHVtbiB0byBpdHMg cmlnaHQuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9p bnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgICht YXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLXJpZ2h0ICdjbG9uZSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uICgmb3B0aW9uYWwgbGVmdCBjbG9uZSkKKyAg Ikluc2VydCBhIHRhYmxlIGNvbHVtbiBhZnRlciBwb2ludCdzIGN1cnJlbnQgY29sdW1uLgorSWYg TEVGVCBpcyBub24tbmlsIGFuZCBpcyBub3QgYHJpZ2h0Jywgb3Igd2l0aCBhIHByZWZpeCBhcmd1 bWVudCwKK2luc2VydCB0aGUgY29sdW1uIHRvIHRoZSBsZWZ0IG9mIHRoZSBjdXJyZW50IGNvbHVt bi4KK0lmIENMT05FIGlzIG5vbi1uaWwsIGNsb25lIHRoZSBjdXJyZW50IGNvbHVtbiwgb3RoZXJ3 aXNlIGluc2VydCBlbXB0eQorY2VsbHMuCitJZiBDTE9ORSBpcyBhIGxpc3QsIGl0cyBmaXJzdCBl bGVtZW50IGlzIHRhcmdldC1jb2x1bW4tbnVtYmVyLiAgSXQgaXMKK3RoZSBjYWxsZXIncyByZXNw b25zaWJpbGl0eSB0aGF0IHRoaXMgdmFsdWUgaXMgdmFsaWQgZm9yIHRoZSB0YWJsZSwKK3Rob3Vn aCBpdCBtYXkgYmUgaW52YWxpZCBmb3IgYSBub24tdW5pZm9ybSByYWdnZWQgcm93LgorUG9pbnQg Y2FuIGJlIGluIHRoZSB0YWJsZSBoZWFkZXIgb3IgYm9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBh IHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24tdHMtLWJh cmYtaWYtbm90LW1vZGUgJ21hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4pCisgIChzZXRx IGxlZnQgKGNvbmQgKChlcSBsZWZ0ICdyaWdodCkgbmlsKQorICAgICAgICAgICAgICAgICAgIChs ZWZ0IGxlZnQpCisgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtcHJlZml4LWFyZyB0KSkpCisg ICh3aGVuLWxldCogKChhdC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisg ICAgICAgICAgICAgIChwb3MgKGNhciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICh0YWJsZSAo Y2RyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKGRlbGltaXRlci1yb3cgKHRyZWVzaXQtc2Vh cmNoLXN1YnRyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlICJcXGBwaXBl X3RhYmxlX2RlbGltaXRlcl9yb3dcXCciKSkKKyAgICAgICAgICAgICAgOzsgQ29sdW1uIHBvcyBm b3IgaW5zZXJ0aW5nIG1pc3NpbmcgbGVhZGluZyBwaXBlcy4KKyAgICAgICAgICAgICAgKGRlbGlt MC1waXBlLWNvbAorICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAg ICAgIChsZXQqICgoZGVsaW0tY2VsbCAodHJlZXNpdC1ub2RlLWNoaWxkCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGVsaW1pdGVyLXJvdyAwICduYW1lZCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAoYmVnICh0cmVlc2l0LW5vZGUtc3RhcnQgZGVsaW0tY2VsbCkpKQor ICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgICAgICAgICAgIChn b3RvLWNoYXIgKHBvcy1ib2wpKQorICAgICAgICAgICAgICAgICAgIChpZiAoc2VhcmNoLWZvcndh cmQgInwiIGJlZyB0KQorICAgICAgICAgICAgICAgICAgICAgICAoMS0gKGN1cnJlbnQtY29sdW1u KSkKKyAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgICAgICAg ICAgICAgKGN1cnJlbnQtY29sdW1uKSkpKSkKKyAgICAgICAgICAgICAgKG5vZGUgKHRyZWVzaXQt bm9kZS1hdCBwb3MgJ21hcmtkb3duICduYW1lZCkpCisgICAgICAgICAgICAgIChjZWxsIChtYXJr ZG93bi10cy0tdGFibGUtbm9kZS1jZWxsIG5vZGUpKQorICAgICAgICAgICAgICAocG9pbnQtcm93 IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgY2VsbCkpKQorICAgIChsZXQgKCh0YWJsZS1j b2x1bW4gKG1hcmtkb3duLXRzLS10YWJsZS1jb21wdXRlLW5vZGUtY29sdW1uIHBvaW50LXJvdyBj ZWxsKSkpCisgICAgICAodW5sZXNzIHRhYmxlLWNvbHVtbgorICAgICAgICAoZXJyb3IgIkNvdWxk IG5vdCBjb21wdXRlIHRoZSB0YWJsZSBjb2x1bW4iKSkKKyAgICAgIDs7IE5PVEU6IEdGTSB0YWJs ZXMgYWxsb3cgbm9uLXVuaWZvcm0gdGFibGUgcm93cy4gIFRoZSBjdXJyZW50IHJvdworICAgICAg OzsgY291bGQgaGF2ZSBhIGRpZmZlcmluZyBudW1iZXIgb2YgY29sdW1ucyBmcm9tIG90aGVyIHJv d3MuICBXZQorICAgICAgOzsgc2lsZW50bHkgZG8gbm90aGluZyB0byBhIHJvdyB0aGF0IGRvZXMg bm90IGV4dGVuZCB0byB0aGUKKyAgICAgIDs7IGNvbXB1dGVkIGNvbHVtbi4KKyAgICAgIDs7Cisg ICAgICA7OyBOT1RFOiBUaGUgZ3JhbW1hciBhbm5veWluZ2x5IGlnbm9yZXMgY2VsbCBsZWFkaW5n IHdoaXRlc3BhY2UKKyAgICAgIDs7IGJ1dCBpbmNsdWRlcyB0cmFpbGluZyB3aGl0ZXNwYWNlLCBz byBjZWxscyBhcmUgYm91bmRlZCBieSB0aGUKKyAgICAgIDs7IGZpcnN0IGdyYXBoIGNoYXJhY3Rl ciB1cCB0byB0aGUgbGFzdCBjaGFyYWN0ZXIganVzdCBiZWZvcmUgdGhlCisgICAgICA7OyBwaXBl IHN5bWJvbCwgaW5jbHVkaW5nIHdoaXRlc3BhY2UuICBUaGUgcmVzdWx0IGlzIHRoZSByYW5nZQor ICAgICAgOzsgZG9lcyBub3Qgc3RhcnQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG9wdGlvbmFsIGxl YWRpbmcgcGlwZQorICAgICAgOzsgc3ltYm9sIHlldCBpbmNvbnNpc3RlbnRseSBjb250aW51ZXMg dW50aWwganVzdCBiZWZvcmUgdGhlCisgICAgICA7OyB0cmFpbGluZyBwaXBlLgorICAgICAgKGxl dCogKChhZGogMCkgOyBBZGp1c3Qgbm9kZSBwb3NpdGlvbiBvZmZzZXRzIGJ5IGluc2VydGVkIHRl eHQuCisgICAgICAgICAgICAgKHdpZHRoIG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1bHQtY29sdW1u LXdpZHRoKQorICAgICAgICAgICAgIChlbXB0eSAobWFrZS1zdHJpbmcgd2lkdGggP1xzKSkKKyAg ICAgICAgICAgICA7OyBUT0RPOiBSZW1vdmUgdGhlIHBsYWNlaG9sZGVyIGNoYXJhY3RlciBpZiB0 aGUgdHJlZS1zaXR0ZXIKKyAgICAgICAgICAgICA7OyBncmFtbWFyIGlzIHJlcGFpcmVkLgorICAg ICAgICAgICAgIChwbGFjZWhvbGRlciAoY29uY2F0ICIuIiAobWFrZS1zdHJpbmcgKDEtIHdpZHRo KSA/XHMpKSkKKyAgICAgICAgICAgICAoZGVsaW0gKG1ha2Utc3RyaW5nIHdpZHRoID8tKSkKKyAg ICAgICAgICAgICAocm93cyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHRhYmxlICduYW1lZCkpCisg ICAgICAgICAgICAgKG5yb3dzIChsZW5ndGggcm93cykpCisgICAgICAgICAgICAgKHRhcmdldC1j b2x1bW4tbnVtYmVyIChhbmQgKGxpc3RwIGNsb25lKSAoY2FyIGNsb25lKSkpCisgICAgICAgICAg ICAgOzsgUG9zaXRpb24gdG8gbW92ZSBwb2ludCB0byBhZnRlciBhbGwgcm93cyBoYXZlIGJlZW4K KyAgICAgICAgICAgICA7OyB1cGRhdGVkLiAgRGV0ZXJtaW5pc3RpYyBwbGFjZW1lbnQgYXZvaWRz IGRlcGVuZGluZyBvbgorICAgICAgICAgICAgIDs7IHRyZWUtc2l0dGVyIG5hdmlnYXRpb24gdGhy b3VnaCBmcmVzaGx5LWluc2VydGVkIGVtcHR5CisgICAgICAgICAgICAgOzsgY2VsbHMsIHdoaWNo IHRoZSBncmFtbWFyIGRvZXMgbm90IGFsd2F5cyByZXBhcnNlIGFzCisgICAgICAgICAgICAgOzsg cGlwZV90YWJsZV9jZWxsIG5vZGVzLgorICAgICAgICAgICAgICh0YXJnZXQtcG9zKSkKKyAgICAg ICAgOzsgVE9ETzogUmVtb3ZlIGFmdGVyIGJ1ZyMyMzkwMyBVbmRvIGFmdGVyIGtiIGRpZmZlcnMg ZnJvbSBhZnRlciBNLXgKKyAgICAgICAgKHB1c2ggKHBvaW50KSBidWZmZXItdW5kby1saXN0KQor ICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAod2l0aG91dC1yZXN0cmljdGlvbgor ICAgICAgICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgICAgICAgICh3aGVuLWxldCog KChyb3cgKG50aCB4IHJvd3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAocm93LXR5cGUg KHRyZWVzaXQtbm9kZS10eXBlIHJvdykpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2xz ICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIChuY29scyAobGVuZ3RoIGNvbHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICA7 OyBzb3VyY2UtY2VsbCB3aWxsIGJlIG5pbCBpZiB0YWJsZS1jb2x1bW4gaXMgYmV5b25kIHRoaXMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgcm93J3MgY29sdW1uIHNldCBhbmQgdGhhdCBy b3cgd2lsbCBiZSBza2lwcGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAoc291cmNlLWNl bGwgKG50aCB0YWJsZS1jb2x1bW4gY29scykpCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7 IElmIGNsb25pbmcgd2l0aCBhIHNwZWNpZmllZCB0YXJnZXQtY29sdW1uLW51bWJlciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgOzsgdGFyZ2V0LWNlbGwgd2lsbCBiZSBuaWwgYW5kIHRoZSBy b3cgd2lsbCBiZSBza2lwcGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0LWNl bGwgKGlmIHRhcmdldC1jb2x1bW4tbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobnRoIHRhcmdldC1jb2x1bW4tbnVtYmVyIGNvbHMpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLWNlbGwpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBDb21wdXRlIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICAgICAg ICAgICAgICAgICAgICAgIChiZWcgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgSWYgY2xvbmluZyB0byBhIHNwZWNpZmllZCB0YXJnZXQsIHVzZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyB0YXJnZXQtY2VsbCdzIGVuZC4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHRhcmdldC1jb2x1bW4tbnVtYmVyCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKyBhZGoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh0cmVlc2l0LW5vZGUtZW5kIHRhcmdldC1jZWxsKSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IElmIGluc2VydGluZyB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3QKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgY29sdW1uLCB1c2Ugc291cmNlIGNlbGwn cyBzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBhZGp1c3RlZCBmb3Ig aXRzIG9wdGlvbmFsIHBpcGUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsg Y2FwdHVyZSBpdHMgd2hpdGVzcGFjZS4gIElmIHRoZXJlIGlzCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IG5vIHBpcGUsIHVzZSBib2wuCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgoYW5kIGxlZnQgKGVxIHRhYmxlLWNvbHVtbiAwKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsZXQgKChwICgrIGFkagorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBzb3VyY2UtY2VsbCkp KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBwKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIChwb3MtYm9sKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzZWFyY2gtZm9yd2FyZCAifCIg cCB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgcCAoMS0g KHBvaW50KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgcCAo cG9zLWJvbCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgaW5zZXJ0aW5nIGxlZnQgYW5kIGFueSBv dGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBjb2x1bW4sIHVzZSB0aGUg ZW5kIG9mIHRoZSBwcmlvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBjZWxs LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVmdAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCsgYWRqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoMSsgKHRyZWVzaXQtbm9kZS1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG50aCAoMS0gdGFibGUtY29sdW1uKSBjb2xzKSkpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOzsgSWYgaW5zZXJ0aW5nIHJpZ2h0LCB1c2UgdGhlIGVuZCBv ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0aGUgY3VycmVudCBjZWxsLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKCsgYWRqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dHJlZXNpdC1ub2RlLWVuZCBzb3VyY2UtY2VsbCkpKSkpKQorICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgYmVnKQorICAgICAgICAgICAgICAgIChsZXQqICgob3JpZy1wb2ludCAocG9pbnQpKQor ICAgICAgICAgICAgICAgICAgICAgICAobWlzc2luZy1sZWFkaW5nLXBpcGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICh3aGVuIChlcSB0YWJsZS1jb2x1bW4gMCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdv dG8tY2hhciAocG9zLWJvbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVubGVzcyAo c2VhcmNoLWZvcndhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifCIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGogKHRyZWVzaXQtbm9k ZS1zdGFydCBzb3VyY2UtY2VsbCkpIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi fCIpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICh0ZXh0IChjb25kCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBJZiBjbG9uaW5nLCByZXRyaWV2ZSB0aGUgc291cmNlIGNlbGwg dGV4dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9uZSAoYnVmZmVyLXN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IEJhY2sgdXAgdG8gYm9sIG9yIHRoZSBwaXBlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IHRvIGNhcHR1cmUgdGhlIHdoaXRlc3BhY2UKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOzsgdGhlIGdyYW1tYXIgbGVhdmVzIG91dC4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhcgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGoKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBzb3VyY2UtY2VsbCkp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWJh Y2t3YXJkICJbWzpibGFuazpdXSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocG9zLWJvbCkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKCsgYWRqICh0cmVlc2l0LW5vZGUtZW5kIHNvdXJjZS1jZWxsKSkpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgbmV3IGNvbHVtbiwgYW5kIHRoaXMgaXMg dGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBkZWxpbWl0ZXIgcm93LCBpbnNl cnQgYSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBkZWxpbWl0ZXIu CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxdWFsIHJvdy10eXBlICJwaXBlX3Rh YmxlX2RlbGltaXRlcl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGlt KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgbmV3IGNvbHVtbiwgYW5kIHRo aXMgaXMgdGhlIGEgaGVhZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBvciBi b2R5IHJvdywgaW5zZXJ0IGEgZGVmYXVsdCBlbXB0eQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOzsgc3RyaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eSkpKSkKKyAgICAgICAgICAgICAgICAgIChj b25kCisgICAgICAgICAgICAgICAgICAgKGNsb25lCisgICAgICAgICAgICAgICAgICAgIChjb25k CisgICAgICAgICAgICAgICAgICAgIDs7IENsb25lIHRoZSBmaXJzdCBjb2x1bW4gdG8gdGhlIGxl ZnQuICBJZiB0aGVyZSBpcworICAgICAgICAgICAgICAgICAgICA7OyBubyBwaXBlIGJlZm9yZSB0 aGUgY2VsbCBjb250ZW50LCBpbnNlcnQgb25lLgorICAgICAgICAgICAgICAgICAgICAgKChhbmQg bGVmdCAoZXEgdGFibGUtY29sdW1uIDApKQorICAgICAgICAgICAgICAgICAgICAgICAgKGluc2Vy dCAifCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAob3IgbWlzc2luZy1sZWFkaW5nLXBpcGUgIiIpKSkKKyAgICAg ICAgICAgICAgICAgICAgOzsgQ2xvbmUgdGhlIGZpcnN0IGNvbHVtbiB0byB0aGUgcmlnaHQuCisg ICAgICAgICAgICAgICAgICAgICAoKGFuZCAobm90IGxlZnQpIChlcSB0YWJsZS1jb2x1bW4gMCkp CisgICAgICAgICAgICAgICAgICAgICAgKGluc2VydCAifCIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRleHQpCisgICAgICAgICAgICAgICAgICAgICAgOzsgRm9yIGEgcG9zaXRpdmUg dXNlciBleHBlcmllbmNlIGdpdmVuIGdyYW1tYXIKKyAgICAgICAgICAgICAgICAgICAgICA7OyBi dWdzLCBhZGQgYSBtaXNzaW5nIGxlYWRpbmcgcGlwZSB0byB0aGUgZmlyc3QKKyAgICAgICAgICAg ICAgICAgICAgICA7OyBjZWxsIGF0IGEgcGxlYXNpbmcgcG9zaXRpb24gYWZ0ZXIgY2xvbmluZy4K KyAgICAgICAgICAgICAgICAgICAgICAod2hlbiBtaXNzaW5nLWxlYWRpbmctcGlwZQorICAgICAg ICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAg ICAgIChtb3ZlLXRvLWNvbHVtbiBkZWxpbTAtcGlwZS1jb2wpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIChpbnNlcnQgInwiKSkpKQorICAgICAgICAgICAgICAgICAgICA7OyBDbG9uZSB0aGUg ZmluYWwgY29sdW1uIHRvIHRoZSBsZWZ0LgorICAgICAgICAgICAgICAgICAgICAgKChhbmQgbGVm dCAoZXEgdGFibGUtY29sdW1uICgxLSBuY29scykpKQorICAgICAgICAgICAgICAgICAgICAgIChp bnNlcnQgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInwiKSkKKyAgICAgICAg ICAgICAgICAgICAgIDs7IENsb25lIGEgbWlkZGxlIGNvbHVtbiB0byB0aGUgbGVmdC4KKyAgICAg ICAgICAgICAgICAgICAgIChsZWZ0CisgICAgICAgICAgICAgICAgICAgICAgKGluc2VydCB0ZXh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifCIpKQorICAgICAgICAgICAgICAgICAg ICAgOzsgQ2xvbmUgYSBtaWRkbGUgb3IgZmluYWwgY29sdW1uIHRvIHRoZSByaWdodC4KKyAgICAg ICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAgICAgICAgKGluc2VydCAifCIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQpKSkpCisKKyAgICAgICAgICAgICAgICAg ICA7OyBOb3QgY2xvbmluZywgaW5zZXJ0IGEgbmV3IGNvbHVtbi4KKyAgICAgICAgICAgICAgICAg ICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gMCkgKGVxIHggKDEtIG5yb3dzKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAobm90IChlcXVhbCByb3ctdHlwZSAicGlwZV90YWJsZV9kZWxp bWl0ZXJfcm93IikpKQorICAgICAgICAgICAgICAgICAgIDs7IFRPRE86IHJlbW92ZSBwbGFjZWhv bGRlciBsb2dpYy4KKyAgICAgICAgICAgICAgICAgICAgKGluc2VydAorICAgICAgICAgICAgICAg ICAgICAgInwiCisgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcgorICAgICAgICAgICAg ICAgICAgICAgKG9yIG1pc3NpbmctbGVhZGluZy1waXBlICIiKSkpCisgICAgICAgICAgICAgICAg ICAgKChhbmQgbGVmdCAoZXEgdGFibGUtY29sdW1uIDApKQorICAgICAgICAgICAgICAgICAgICAg IChpbnNlcnQKKyAgICAgICAgICAgICAgICAgICAgICAgInwiCisgICAgICAgICAgICAgICAgICAg ICAgIHRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIG1pc3NpbmctbGVhZGluZy1waXBl ICIiKSkpCisgICAgICAgICAgICAgICAgICAgKGxlZnQKKyAgICAgICAgICAgICAgICAgICAgKGlu c2VydAorICAgICAgICAgICAgICAgICAgICAgdGV4dAorICAgICAgICAgICAgICAgICAgICAgInwi KSkKKyAgICAgICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0Cisg ICAgICAgICAgICAgICAgICAgICAifCIKKyAgICAgICAgICAgICAgICAgICAgIHRleHQpKSkKKwor ICAgICAgICAgICAgICAgICAgOzsgQ2FwdHVyZSB0aGUgc3RhcnQgb2YgdGhlIG5ldyBjZWxsJ3Mg Y29udGVudCBpbgorICAgICAgICAgICAgICAgICAgOzsgdGhlIHJvdyB0aGF0IG9yaWdpbmFsbHkg Y29udGFpbmVkIHBvaW50LgorICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAobm90IHRhcmdl dC1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZXEgcm93 IHBvaW50LXJvdykpCisgICAgICAgICAgICAgICAgICAgIChzZXRxIHRhcmdldC1wb3MKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0 YXJnZXQtY29sdW1uLW51bWJlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0 LW5vZGUtc3RhcnQgdGFyZ2V0LWNlbGwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGFuZCBsZWZ0IChub3QgKGVxIHRhYmxl LWNvbHVtbiAwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7ICJ0ZXh0IHwi IGluc2VydGVkIGF0IGJlZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZy1w b2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQWxsIG90aGVyIGJyYW5jaGVz IGluc2VydCAifCIgZmlyc3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSsgb3Jp Zy1wb2ludCkpKSkpKQorCisgICAgICAgICAgICAgICAgICA7OyBBZGp1c3Qgb2Zmc2V0IGZvciBk ZWxldGVkIHRleHQuCisgICAgICAgICAgICAgICAgICAoc2V0cSBhZGogKCsgYWRqICgtIChwb2lu dCkgb3JpZy1wb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnLXBvaW50IChwb2lu dCkpKSkpKSkKKyAgICAgICAgKHdoZW4gdGFyZ2V0LXBvcworICAgICAgICAgIChnb3RvLWNoYXIg dGFyZ2V0LXBvcykpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLWNvbHVt biAoKQorICAiRGVsZXRlIHRoZSB0YWJsZSBjb2x1bW4gYXQgcG9pbnQuCitQb2ludCBjYW4gYmUg aW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUs IGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1u b3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLWNvbHVtbikKKyAgKHdoZW4tbGV0KiAo KGF0LXRhYmxlIChtYXJrZG93bi10cy1hdC10YWJsZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAg KHBvcyAoY2FyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUp KQorICAgICAgICAgICAgICAoY2VsbCAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtY2VsbCBuaWwg cG9zKSkKKyAgICAgICAgICAgICAgKHJvdyAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93IGNl bGwpKQorICAgICAgICAgICAgICAoY29scyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHJvdyAnbmFt ZWQpKQorICAgICAgICAgICAgICAobmNvbHMgKGxlbmd0aCBjb2xzKSkpCisgICAgKGxldCAoKHRh YmxlLWNvbHVtbiAobWFya2Rvd24tdHMtLXRhYmxlLWNvbXB1dGUtbm9kZS1jb2x1bW4gcm93IGNl bGwpKSkKKyAgICAgICh1bmxlc3MgdGFibGUtY29sdW1uCisgICAgICAgIChlcnJvciAiQ291bGQg bm90IGNvbXB1dGUgdGhlIHRhYmxlIGNvbHVtbiIpKQorICAgICAgOzsgTk9URTogR0ZNIHRhYmxl cyBhbGxvdyBub24tdW5pZm9ybSB0YWJsZSByb3dzLiAgVGhlIGN1cnJlbnQgcm93CisgICAgICA7 OyBjb3VsZCBoYXZlIGEgZGlmZmVyaW5nIG51bWJlciBvZiBjb2x1bW5zIGZyb20gb3RoZXIgcm93 cy4gIFdlCisgICAgICA7OyBzaWxlbnRseSBkbyBub3RoaW5nIHRvIGEgcm93IHRoYXQgZG9lcyBu b3QgZXh0ZW5kIHRvIHRoZQorICAgICAgOzsgY29tcHV0ZWQgY29sdW1uLgorICAgICAgOzsKKyAg ICAgIDs7IE5PVEU6IFRoZSBncmFtbWFyIGFubm95aW5nbHkgaWdub3JlcyBjZWxsIGxlYWRpbmcg d2hpdGVzcGFjZQorICAgICAgOzsgYnV0IGRvZXMgaW5jbHVkZSB0cmFpbGluZyB3aGl0ZXNwYWNl IHNvIGNlbGxzIGFyZSBib3VuZGVkIGJ5CisgICAgICA7OyB0aGUgZmlyc3QgZ3JhcGggY2hhcmFj dGVyIHVwIHRvIHRoZSBsYXN0IGNoYXJhY3RlciBqdXN0IGJlZm9yZQorICAgICAgOzsgdGhlIHBp cGUgc3ltYm9sLCBpbmNsdWRpbmcgd2hpdGVzcGFjZS4KKyAgICAgIDs7CisgICAgICA7OyBUaGUg Z3JhbW1hciBhbHNvIGNvbnNpZGVycyB0aGUgdHJhaWxpbmcgcGlwZSBzeW1ib2wgdG8gYmUgYQor ICAgICAgOzsgcGFydCBvZiBpdHMgcHJlY2VkaW5nIGNlbGwgc28gdGhhdCdzIHdoYXQgd2UgZGVs ZXRlIHdoZW4gd2UKKyAgICAgIDs7IGRlbGV0ZSBhIGNvbHVtbidzIGNlbGw7IGkuZS4sIGlmIHRo ZXJlIGlzIGEgcGlwZSBiZWZvcmUgdGhlCisgICAgICA7OyBmaXJzdCBjb2x1bW4sIHdlIGRlbGV0 ZSBpdC4KKyAgICAgIChsZXQqICgoYWRqIDApIDsgQWRqdXN0IG5vZGUgcG9zaXRpb24gb2Zmc2V0 cyBieSBkZWxldGVkIHRleHQuCisgICAgICAgICAgICAgKHJvd3MgKHRyZWVzaXQtbm9kZS1jaGls ZHJlbiB0YWJsZSAnbmFtZWQpKQorICAgICAgICAgICAgIChucm93cyAobGVuZ3RoIHJvd3MpKSkK KyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKHdpdGhvdXQtcmVzdHJpY3Rpb24K KyAgICAgICAgICAgIChkb3RpbWVzICh4IG5yb3dzKQorICAgICAgICAgICAgICA7OyBJZiBjZWxs IGlzIG5pbCwgaXQgaXMgYmV5b25kIHRoZSB0YWJsZS1jb2x1bW4gYW5kIGl0cworICAgICAgICAg ICAgICA7OyByb3cgaXMgaWdub3JlZC4KKyAgICAgICAgICAgICAgKHdoZW4tbGV0KiAoKHJvdyAo bnRoIHggcm93cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2xzICh0cmVlc2l0LW5v ZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChuY29s cyAobGVuZ3RoIGNvbHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY2VsbCAobnRoIHRh YmxlLWNvbHVtbiBjb2xzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNlbGwtYmVnICh0 cmVlc2l0LW5vZGUtc3RhcnQgY2VsbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjZWxs LWVuZCAodHJlZXNpdC1ub2RlLWVuZCBjZWxsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgQWRqdXN0IGJlZyB0byB0cmltIHRoZSBncmFtbWFyCisgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IHVuYWNjb3VudGVkLWZvciBsZWFkaW5nIHdoaXRlc3BhY2UuCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChiZWcgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgSWYgdGhpcyBpcyB0aGUgc29sZSBjb2x1bW4sIGRlbGV0ZSBmcm9tIGJvbC4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKChlcSBuY29scyAxKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGdvdG8tY2hhciAoLSBjZWxsLWJlZyBhZGopKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHBvcy1ib2wpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7OyBJZiB0aGlzIGlzIHRoZSBmaXJzdCBjb2x1bW4sIGRlbGV0ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBmcm9tIHRoZSBwaXBlLCBpZiB0aGVyZSBpcyBvbmUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IG90aGVyd2lzZSBjZWxsLWJlZy4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChlcSB0YWJsZS1jb2x1bW4gMCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChwICgtIGNlbGwtYmVnIGFkaikp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHApCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvcy1ib2wpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHNlYXJjaC1mb3J3YXJkICJ8IiBw IHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS0gKHBvaW50KSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDs7IElmIHRoaXMgaXMgdGhlIGZpbmFsIGNvbHVtbiwgZGVsZXRl IGZyb20gdGhlIHByaW9yIHBpcGUgc3ltYm9sLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoKGVxIHRhYmxlLWNvbHVtbiAoMS0gbmNvbHMpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxldCAoKHAgKC0gKHRyZWVzaXQtbm9kZS1lbmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoICgxLSB0YWJsZS1jb2x1bW4pIGNv bHMpKSBhZGopKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hh ciBwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHNlYXJjaC1mb3J3 YXJkICJ8IiAoLSBjZWxsLWJlZyBhZGopIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAocG9pbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBPdGhlcndpc2UsIHN0YXJ0 IGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHBy aW9yIGNlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoLSAodHJlZXNpdC1ub2RlLWVuZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoICgxLSB0YWJsZS1jb2x1bW4pIGNvbHMp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqKSkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBBZGp1c3QgZW5kIHRvIHRyaW0gdGhlIHRyYWlsaW5nIHBpcGUg c3ltYm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGNvbnNpZGVyZWQgYnkgdGhlIGdy YW1tYXIgdG8gYmUgcGFydCBvZiBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgcHJl Y2VkaW5nIGNlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmQgKGNvbmQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgdGhpcyBpcyB0aGUgc29sZSBjb2x1bW4s IGRlbGV0ZSB1bnRpbCBlb2wuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXEg bmNvbHMgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKC0g Y2VsbC1iZWcgYWRqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3MtZW9s KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgdGhpcyBpcyB0aGUgZmlu YWwgY29sdW1uLCBkZWxldGUgdW50aWwgZW9sLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoKGVxIHRhYmxlLWNvbHVtbiAoMS0gbmNvbHMpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciAoLSBjZWxsLWVuZCBhZGopKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHBvcy1lb2wpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7OyBPdGhlcndpc2UsIGxvb2sgZm9yd2FyZCBmcm9tIGNlbGwtZW5kCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDs7ICh3aGljaCBpbmNsdWRlcyB0aGUgY2VsbCdzIHRyYWls aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHdoaXRlc3BhY2UpIGZvciBh IHBpcGUgc3ltYm9sLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAoLSBjZWxsLWVuZCBhZGopKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChyZS1zZWFyY2gtZm9yd2FyZCAi fCs/IiAocG9zLWVvbCkgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo MS0gKHBvaW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC1lbmQp KSkpKQorICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZyBlbmQpCisgICAgICAgICAg ICAgICAgKHNldHEgYWRqICgrIGFkaiAoLSBlbmQgYmVnKSkpKSkpKSkpKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLXRhYmxlLW1vdmUtY29sdW1uLWxlZnQgKCkKKyAgIk1vdmUgdGhlIHRhYmxlIGNv bHVtbiBhdCBwb2ludCB0byBpdHMgbGVmdC4KK1BvaW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVh ZGVyIG9yIGJvZHkuCitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisg IChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLW1vdmUtY29sdW1uICdsZWZ0KSkK KworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLW1vdmUtY29sdW1uLXJpZ2h0ICgpCisgICJNb3Zl IHRoZSB0YWJsZSBjb2x1bW4gYXQgcG9pbnQgdG8gaXRzIHJpZ2h0LgorUG9pbnQgY2FuIGJlIGlu IHRoZSB0YWJsZSBoZWFkZXIgb3IgYm9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBk byBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24tdHMtdGFibGUtbW92ZS1j b2x1bW4gJ3JpZ2h0KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLW1vdmUtY29sdW1uICgm b3B0aW9uYWwgbGVmdCkKKyAgIk1vdmUgdGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludCByaWdodCBv ciBsZWZ0LgorSWYgTEVGVCBpcyBub24tbmlsIGFuZCBpcyBub3QgYHJpZ2h0Jywgb3Igd2l0aCBh IHByZWZpeCBhcmd1bWVudCwKK21vdmUgdGhlIGNvbHVtbiB0byBpdHMgbGVmdC4KK0RvIG5vdGhp bmcgaWYgYSByb3cgYmVpbmcgbW92ZWQgaXMgbm90IHdpdGhpbiB0aGUgY29sdW1ucyBvZiB0aGUg aGVhZGVyLgorRG8gbm90aGluZyBpZiBtb3ZpbmcgbGVmdCBhbmQgdGhlIGN1cnJlbnQgY29sdW1u IGlzIHRoZSBmaXJzdCBjb2x1bW4gb2YKK3RoZSBjdXJyZW50IHJvdy4KK0RvIG5vdGhpbmcgaWYg bW92aW5nIHJpZ2h0IGFuZCB0aGUgY3VycmVudCBjb2x1bW4gaXMgdGhlIGZpbmFsIGNvbHVtbiBv ZgordGhlIGN1cnJlbnQgcm93LgorUG9pbnQgY2FuIGJlIGluIHRoZSB0YWJsZSBoZWFkZXIgb3Ig Ym9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVy YWN0aXZlKQorICAobWFya2Rvd24tdHMtLWJhcmYtaWYtbm90LW1vZGUgJ21hcmtkb3duLXRzLXRh YmxlLW1vdmUtY29sdW1uKQorICAoc2V0cSBsZWZ0IChjb25kICgoZXEgbGVmdCAncmlnaHQpIG5p bCkKKyAgICAgICAgICAgICAgICAgICAobGVmdCBsZWZ0KQorICAgICAgICAgICAgICAgICAgIChj dXJyZW50LXByZWZpeC1hcmcgdCkpKQorICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3du LXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAocG9zIChjYXIgYXQtdGFibGUp KQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAgIChu b2RlICh0cmVlc2l0LW5vZGUtYXQgcG9zICdtYXJrZG93biAnbmFtZWQpKQorICAgICAgICAgICAg ICAoY2VsbCAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtY2VsbCBub2RlKSkKKyAgICAgICAgICAg ICAgKHJvdyAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93IG5vZGUpKQorICAgICAgICAgICAg ICAoaGVhZGVyLXJvdyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBl X3RhYmxlX2hlYWRlclxcJyIpKQorICAgICAgICAgICAgICAobmhlYWRlcnMgKGxlbmd0aCAodHJl ZXNpdC1ub2RlLWNoaWxkcmVuIGhlYWRlci1yb3cgJ25hbWVkKSkpCisgICAgICAgICAgICAgIChj b2xzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpCisgICAgICAgICAgICAgIChu Y29scyAobGVuZ3RoIGNvbHMpKSkKKyAgICAobGV0ICgodGFibGUtY29sdW1uIChtYXJrZG93bi10 cy0tdGFibGUtY29tcHV0ZS1ub2RlLWNvbHVtbiByb3cgY2VsbCkpKQorICAgICAgKHVubGVzcyB0 YWJsZS1jb2x1bW4KKyAgICAgICAgKGVycm9yICJDb3VsZCBub3QgY29tcHV0ZSB0aGUgdGFibGUg Y29sdW1uIikpCisgICAgICAoaWYgKD49IHRhYmxlLWNvbHVtbiBuaGVhZGVycykKKyAgICAgICAg ICAobWVzc2FnZSAiUmFnZ2VkL3VuZXZlbiBjb2x1bW4gY2Fubm90IGJlIG1vdmVkIikKKyAgICAg ICAgOzsgQSBCIEMgRCAtPiBCIEEgQyBECisgICAgICAgIDs7IE1vdmUgQSBsZWZ0OiBkbyBub3Ro aW5nCisgICAgICAgIDs7IE1vdmUgRCByaWdodDogZG8gbm90aGluZworICAgICAgICA7OyBNb3Zl IGN1cnJlbnQgY29sdW1uIGxlZnQ6CisgICAgICAgIDs7ICAgc291cmNlIGNvbHVtbiA9IHQgLSAx CisgICAgICAgIDs7IE1vdmUgY3VycmVudCBjb2x1bW4gcmlnaHQ6CisgICAgICAgIDs7ICAgY2xv bmUgdCB0byB0KzEgaWYgdGhlIGZpbmFsIGNvbHVtbiwgb3RoZXJ3aXNlIHQrMgorICAgICAgICA7 OyAgIGRlbGV0ZSB0CisgICAgICAgIChjb25kICgoYW5kIGxlZnQgKGVxIHRhYmxlLWNvbHVtbiAw KSkKKyAgICAgICAgICAgICAgIChtZXNzYWdlICJMZWZ0bW9zdCBjb2x1bW4gY2Fubm90IGJlIG1v dmVkIGxlZnQiKQorICAgICAgICAgICAgICAgbmlsKQorICAgICAgICAgICAgICAoKGFuZCAobm90 IGxlZnQpIChlcSB0YWJsZS1jb2x1bW4gKDEtIG5jb2xzKSkpCisgICAgICAgICAgICAgICAobWVz c2FnZSAiUmlnaHRtb3N0IGNvbHVtbiBjYW5ub3QgYmUgbW92ZWQgcmlnaHQiKQorICAgICAgICAg ICAgICAgbmlsKQorICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgKGxldCAoKHNvdXJj ZS1jb2x1bW4gKGlmIGxlZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoMS0gdGFibGUtY29sdW1uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0YWJsZS1jb2x1bW4pKQorICAgICAgICAgICAgICAgICAgICAgKHRhcmdldC1jb2x1bW4gKGlm IGxlZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS1jb2x1 bW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDErIHRhYmxlLWNvbHVt bikpKSkKKyAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAg ICAgKG1hcmtkb3duLXRzLXRhYmxlLS1nb3RvLWNvbHVtbiBzb3VyY2UtY29sdW1uKQorICAgICAg ICAgICAgICAgICAgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uCisgICAgICAgICAg ICAgICAgICAgICdyaWdodCAobGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl dC1jb2x1bW4pKSkKKyAgICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLXRhYmxlLS1nb3RvLWNv bHVtbiBzb3VyY2UtY29sdW1uKQorICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtdGFibGUt ZGVsZXRlLWNvbHVtbikKKyAgICAgICAgICAgICAgICAgOzsgRW1wdHkgY2VsbHMgY2FuIGNvbmZ1 c2UgdGhlIGdyYW1tYXIsIHNvIG5vLWVycm9yIGhlcmUuCisgICAgICAgICAgICAgICAgIChpZiBs ZWZ0CisgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtLWdvdG8tY29sdW1u CisgICAgICAgICAgICAgICAgICAgICAgc291cmNlLWNvbHVtbiAnbm8tZXJyb3IpCisgICAgICAg ICAgICAgICAgICAgKG1hcmtkb3duLXRzLXRhYmxlLS1nb3RvLWNvbHVtbgorICAgICAgICAgICAg ICAgICAgICB0YXJnZXQtY29sdW1uICduby1lcnJvcikpKSkpKSkpKQorCisoZGVmdW4gbWFya2Rv d24tdHMtdGFibGUtYWxpZ24tY29sdW1uLWxlZnQgKCkKKyAgIkFsaWduIHRoZSB0YWJsZSBjb2x1 bW4gYXQgcG9pbnQgdG8gdGhlIGxlZnQuCitEbyB0aGUgd29yayB3aXRoIGBtYXJrZG93bi10cy10 YWJsZS1hbGlnbi1jb2x1bW4nLCB3aGljaCBzZWUgZm9yIG1vcmUKK2RldGFpbHMuIgorICAoaW50 ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4gJ2xlZnQpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uLWNlbnRlciAoKQorICAiQWxpZ24g dGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludCB0byB0aGUgY2VudGVyLgorRG8gdGhlIHdvcmsgd2l0 aCBgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uJywgd2hpY2ggc2VlIGZvciBtb3JlCitk ZXRhaWxzLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29s dW1uICdjZW50ZXIpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uLXJp Z2h0ICgpCisgICJBbGlnbiB0aGUgdGFibGUgY29sdW1uIGF0IHBvaW50IHRvIHRoZSByaWdodC4K K0RvIHRoZSB3b3JrIHdpdGggYG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWNvbHVtbicsIHdoaWNo IHNlZSBmb3IgbW9yZQorZGV0YWlscy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRz LXRhYmxlLWFsaWduLWNvbHVtbiAncmlnaHQpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUt YWxpZ24tY29sdW1uICgmb3B0aW9uYWwgYWxpZ24pCisgICJBbHRlciB0aGUgdGFibGUgY29sdW1u IGFsaWdubWVudCBhdCBwb2ludC4KK0FsdGVyIHRoZSBjb2x1bW4gcG9pbnQgaXMgaW4uCisKK05v dGU6IFRvIGNvbXB1dGUgdGhlIGNvbHVtbiwgcG9pbnQgbXVzdCBiZSB3aXRoaW4gdGhlIGNvbHVt biBhbmQgY2Fubm90CitiZSBvbiB0aGUgbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIG9y IG9uIGEgY29sdW1uIGRlbGltaXRlci4KKworQUxJR04gY2FuIGJlIG9uZSBvZiB0aGUgc3ltYm9s cyBgbGVmdCcsIGBjZW50ZXInLCBgcmlnaHQnIG9yIG5pbCBmb3IKK3Vuc3BlY2lmaWVkIG9yIHRo ZSBjaGFyYWN0ZXJzIGwsIGMsIG9yIHIuCisKK0lmIEFMSUdOIGlzIG5pbCwgYXNzdW1lIHVuc3Bl Y2lmaWVkLiAgTWFrZSB0aGUgYWxpZ25tZW50IHN0cmluZyBhCittaW5pbXVtIG9mIDUgY2hhcmFj dGVycyB0byBhY2NvbW1vZGF0ZSBNYXJrZG93biBjb252ZW50aW9ucy4KKworSWYgcG9pbnQgaXMg bm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUgImNBbGlnbiBjb2x1 bW4gW2xdZWZ0IFtjXWVudGVyIFtyXWlnaHQgW3VdbnNwZWNpZmllZDoiKQorICAobWFya2Rvd24t dHMtLWJhcmYtaWYtbm90LW1vZGUgJ21hcmtkb3duLXRzLXRhYmxlLWFsaWduLWNvbHVtbikKKyAg KHNldHEgYWxpZ24gKGlmIChjaGFyYWN0ZXJwIGFsaWduKQorICAgICAgICAgICAgICAgICAgKHBj YXNlIGFsaWduICg/bCAnbGVmdCkgKD9jICdjZW50ZXIpICg/ciAncmlnaHQpKQorICAgICAgICAg ICAgICAgIGFsaWduKSkKKyAgKHdoZW4tbGV0KiAoKGF0LXRhYmxlIChtYXJrZG93bi10cy1hdC10 YWJsZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxlKSkKKyAgICAg ICAgICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAobm9kZSAodHJl ZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24gJ25hbWVkKSkKKyAgICAgICAgICAgICAgKGNlbGwg KG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLWNlbGwgbm9kZSkpCisgICAgICAgICAgICAgIChyb3cg KG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLXJvdyBjZWxsKSkKKyAgICAgICAgICAgICAgKGFsaWdu ZXJzIChtYXJrZG93bi10cy0tdGFibGUtYWxpZ25lcnMgdGFibGUpKSkKKyAgICAobGV0ICgodGFi bGUtY29sdW1uIChtYXJrZG93bi10cy0tdGFibGUtY29tcHV0ZS1ub2RlLWNvbHVtbiByb3cgY2Vs bCkpKQorICAgICAgKHVubGVzcyB0YWJsZS1jb2x1bW4KKyAgICAgICAgKGVycm9yICJDb3VsZCBu b3QgY29tcHV0ZSB0aGUgdGFibGUgY29sdW1uIikpCisgICAgICA7OyBOT1RFOiBHRk0gdGFibGVz IGFsbG93IG5vbi11bmlmb3JtIHRhYmxlIHJvd3MuICBUaGUgY3VycmVudCByb3cKKyAgICAgIDs7 IGNvdWxkIGhhdmUgYSBkaWZmZXJpbmcgbnVtYmVyIG9mIGNvbHVtbnMgZnJvbSB0aGUgaGVhZGVy LiAgV2UKKyAgICAgIDs7IHNpbGVudGx5IGRvIG5vdGhpbmcgaWYgd2UgY2FuJ3QgZmluZCBhIG1h dGNoaW5nIGhlYWRlciBjb2x1bW4uCisgICAgICAod2hlbi1sZXQqICgoYWxpZ25lciAobnRoIHRh YmxlLWNvbHVtbiBhbGlnbmVycykpCisgICAgICAgICAgICAgICAgICAoYmVnIChwbGlzdC1nZXQg YWxpZ25lciA6YmVnKSkKKyAgICAgICAgICAgICAgICAgIChlbmQgKHBsaXN0LWdldCBhbGlnbmVy IDplbmQpKQorICAgICAgICAgICAgICAgICAgKHN0ciAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9w ZXJ0aWVzIGJlZyBlbmQpKQorICAgICAgICAgICAgICAgICAgKHN0cmxlbiAobWF4IDUgKGxlbmd0 aCBzdHIpKSkpCisgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZyBlbmQpCisgICAgICAgIChzYXZl LWV4Y3Vyc2lvbgorICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgIChpbnNlcnQg KG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIgc3RybGVuIGFsaWduKSkpKSkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tdGFibGUgKCZvcHRpb25hbCBhbGlnbi1jZWxs cykKKyAgIkFsaWduIHRoZSBNYXJrZG93biB0YWJsZSBhdCBwb2ludC4KK0FkanVzdCBlYWNoIGNv bHVtbidzIHdpZHRoIHRvIGFjY29tbW9kYXRlIGl0cyB3aWRlc3QgY29uc3RpdHVlbnQgY2VsbC4K K0lmIEFMSUdOLUNFTExTIGlzIG5vbi1uaWwsIG9yIHdpdGggYSBwcmVmaXggYXJndW1lbnQsIGFw cGx5IHRoZQorZGVsaW1pdGVyIHJvdydzIGFsaWdubWVudCB0byBjZWxsIGNvbnRlbnQuICBBTElH Ti1DRUxMUyBpcyBub24tbmlsIGlmCit0aGUgdXNlciBvcHRpb24gYG1hcmtkb3duLXRzLXRhYmxl LWFsaWduLWZlYXR1cmVzJyBpbmNsdWRlcworYGp1c3RpZnktY2VsbHMnLgorQW5jaG9yIHRoZSBj b2x1bW5zIHRvIHRoZSBkZWxpbWl0ZXIgcm93LiAgSWdub3JlIHJvd3MgdGhhdCBjb250YWluCitj b2x1bW5zIGJleW9uZCB0aGUgZGVsaW1pdGVyIHJvdy4KK0lmIG5vdCBpbiBhIHRhYmxlLCBkbyBu b3RoaW5nLiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5v dC1tb2RlICdtYXJrZG93bi10cy10YWJsZS1hbGlnbi10YWJsZSkKKyAgKHdoZW4tbGV0KiAoKGF0 LXRhYmxlIChtYXJrZG93bi10cy1hdC10YWJsZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgKHRh YmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAoYmVnICh0cmVlc2l0LW5vZGUtc3Rh cnQgdGFibGUpKQorICAgICAgICAgICAgICAoZW5kICh0cmVlc2l0LW5vZGUtZW5kIHRhYmxlKSkK KyAgICAgICAgICAgICAgKF8gKG1hcmtkb3duLXRzLS10YWJsZS10aWNrLXN0YWxlLXAgYmVnKSkK KyAgICAgICAgICAgICAgKHJvd3MgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiB0YWJsZSAnbmFtZWQp KQorICAgICAgICAgICAgICAobnJvd3MgKGxlbmd0aCByb3dzKSkKKyAgICAgICAgICAgICAgKGRl bGltaXRlci1yb3cgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUKKyAgICAgICAgICAgICAgICAgICAg ICAgICB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxlX2RlbGlt aXRlcl9yb3dcXCciKSkKKyAgICAgICAgICAgICAgKGFsaWduZXJzIChtYXJrZG93bi10cy0tdGFi bGUtYWxpZ25lcnMgdGFibGUpKQorICAgICAgICAgICAgICAoY29scyAodHJlZXNpdC1ub2RlLWNo aWxkcmVuIGRlbGltaXRlci1yb3cgJ25hbWVkKSkKKyAgICAgICAgICAgICAgKG5jb2xzIChsZW5n dGggY29scykpCisgICAgICAgICAgICAgIChjb2wtd2lkdGhzIChtYWtlLWhhc2gtdGFibGUgOnNp emUgbmNvbHMgOnRlc3QgJ2VxdWFsKSkKKyAgICAgICAgICAgICAgKGNlbGwtdGV4dCAobWFrZS1o YXNoLXRhYmxlIDpzaXplICgqIG5yb3dzIG5jb2xzKSA6dGVzdCAnZXF1YWwpKSkKKyAgICAoc2V0 cSBhbGlnbi1jZWxscyAob3IgYWxpZ24tY2VsbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg Y3VycmVudC1wcmVmaXgtYXJnCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1xICdqdXN0 aWZ5LWNlbGxzIG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWZlYXR1cmVzKSkpCisgICAgKHdpdGhv dXQtcmVzdHJpY3Rpb24KKyAgICAgIDs7IENvbGxlY3QgY2VsbCB0ZXh0IGFuZCBjb21wdXRlIG1h eCBjb2x1bW4gd2lkdGhzLgorICAgICAgOzsgRG8gbm90IHVzZSB0aGUgZGVsaW1pdGVyIHJvdyBm b3Igd2lkdGggY29tcHV0YXRpb24uCisgICAgICAoZG90aW1lcyAoeCBucm93cykKKyAgICAgICAg KGxldCogKChyb3cgKG50aCB4IHJvd3MpKQorICAgICAgICAgICAgICAgKGNlbGxzICh0cmVlc2l0 LW5vZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpKQorICAgICAgICAgIChkb3RpbWVzICh5IG5jb2xz KQorICAgICAgICAgICAgOzsgU2tpcCBuaWwgY2VsbHMtLXRoZSBwYXJzZXIgZ290IGNvbmZ1c2Vk LgorICAgICAgICAgICAgKHdoZW4tbGV0KiAoKGNlbGwgKG50aCB5IGNlbGxzKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICh0ZXh0IChzdHJpbmctdHJpbS1yaWdodAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCBjZWxsICduby1wcm9wZXJ0eSkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgKHcgKGxlbmd0aCB0ZXh0KSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICh3MCAob3IgKGdldGhhc2ggeSBjb2wtd2lkdGhzKSAwKSkpCisgICAgICAgICAg ICAgIDs7IEVsaWRlIGRlbGltaXRlciB3aWR0aHMuCisgICAgICAgICAgICAgICh1bmxlc3MgKGVx IHggMSkKKyAgICAgICAgICAgICAgICAod2hlbiAoPiB3IHcwKQorICAgICAgICAgICAgICAgICAg KHB1dGhhc2ggeSB3IGNvbC13aWR0aHMpKSkKKyAgICAgICAgICAgICAgKHB1dGhhc2ggKGNvbnMg eCB5KSB0ZXh0IGNlbGwtdGV4dCkpKSkpCisKKyAgICAgIChsZXQgKChzb3VyY2UtYnVmZmVyIChj dXJyZW50LWJ1ZmZlcikpKQorICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgICAgIChk b3RpbWVzICh4IG5yb3dzKQorICAgICAgICAgICAgKGRvdGltZXMgKHkgbmNvbHMpCisgICAgICAg ICAgICAgIChsZXQqICgod2lkdGggKG9yIChnZXRoYXNoIHkgY29sLXdpZHRocykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtdGFibGUtZGVmYXVsdC1jb2x1bW4t d2lkdGgpKQorICAgICAgICAgICAgICAgICAgICAgKGFsaWduIChvciAocGxpc3QtZ2V0IChudGgg eSBhbGlnbmVycykgOmFsaWduKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5z cGVjaWZpZWQpKQorICAgICAgICAgICAgICAgICAgICAgOzsgQ29uZnVzZWQgY2VsbHMgaGF2ZSBu aWwgdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgICh0ZXh0IChvciAoZ2V0aGFzaCAoY29ucyB4 IHkpIGNlbGwtdGV4dCkgIiIpKQorICAgICAgICAgICAgICAgICAgICAgKHRleHQwIChtYXJrZG93 bi10cy0tdGFibGUtYWxpZ24tY2VsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0 IHdpZHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBhbGlnbi1jZWxscworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAndW5zcGVjaWZpZWQpKSkpCisgICAgICAgICAgICAgICAgKGNvbmQKKyAgICAg ICAgICAgICAgICAgOzsgSGVhZGVyIHJvdy4KKyAgICAgICAgICAgICAgICAgKChlcSB4IDApCisg ICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJ8IiB0ZXh0MCkpCisgICAgICAgICAgICAgICAgIDs7 IERlbGltaXRlciByb3cuICBVc2UgdW5hbGlnbmVkIHRleHQuCisgICAgICAgICAgICAgICAgICgo ZXEgeCAxKQorICAgICAgICAgICAgICAgICAgKGluc2VydCAifCIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIgd2lkdGggYWxpZ24pKSkK KyAgICAgICAgICAgICAgICAgOzsgQm9keSByb3cuCisgICAgICAgICAgICAgICAgICh0CisgICAg ICAgICAgICAgICAgICAoaW5zZXJ0ICJ8IiB0ZXh0MCkpKSkpCisgICAgICAgICAgICAoaW5zZXJ0 ICJ8IiAiXG4iKSkKKyAgICAgICAgICAobGV0ICgodGVtcC1idWZmZXIgKGN1cnJlbnQtYnVmZmVy KSkpCisgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBzb3VyY2UtYnVmZmVyCisgICAg ICAgICAgICAgIChyZXBsYWNlLXJlZ2lvbi1jb250ZW50cyBiZWcgZW5kIHRlbXAtYnVmZmVyKSkp KSkpCisgICAgKG1hcmtkb3duLXRzLS10YWJsZS10aWNrLXVwZGF0ZSBiZWcpKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLXRhYmxlLXRyYW5zcG9zZS10YWJsZSAoKQorICAiVHJhbnNwb3NlIHRoZSBy b3dzIGFuZCBjb2x1bW5zIG9mIHRoZSBNYXJrZG93biB0YWJsZSBhdCBwb2ludC4KK1VzZSB1bnNw ZWNpZmllZCBjb2x1bW4gYWxpZ25tZW50IGluIHRoZSB0cmFuc3Bvc2VkIHRhYmxlLgorSWYgdGFi bGUncyByb3dzIGFyZSBub3QgdW5pZm9ybSB3aXRoIHRob3NlIG9uIHRoZSBkZWxpbWl0ZXIgcm93 LCBzaWduYWwKK2FuIGVycm9yLgorSWYgbm90IGluIGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAo aW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24t dHMtdGFibGUtdHJhbnNwb3NlLXRhYmxlKQorICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtk b3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10 YWJsZSkpCisgICAgICAgICAgICAgIChiZWcgKHRyZWVzaXQtbm9kZS1zdGFydCB0YWJsZSkpCisg ICAgICAgICAgICAgIChlbmQgKHRyZWVzaXQtbm9kZS1lbmQgdGFibGUpKQorICAgICAgICAgICAg ICAocm93cyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHRhYmxlICduYW1lZCkpCisgICAgICAgICAg ICAgIChucm93cyAobGVuZ3RoIHJvd3MpKQorICAgICAgICAgICAgICAoZGVsaW1pdGVyLXJvdyAo dHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlCisg ICAgICAgICAgICAgICAgICAgICAgICAgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIp KQorICAgICAgICAgICAgICAoYWxpZ25lcnMgKG1hcmtkb3duLXRzLS10YWJsZS1hbGlnbmVycyB0 YWJsZSkpCisgICAgICAgICAgICAgIChjb2xzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gZGVsaW1p dGVyLXJvdyAnbmFtZWQpKQorICAgICAgICAgICAgICAobmNvbHMgKGxlbmd0aCBjb2xzKSkKKyAg ICAgICAgICAgICAgKGNlbGwtdGV4dCAobWFrZS1oYXNoLXRhYmxlIDpzaXplICgqIG5yb3dzIG5j b2xzKSA6dGVzdCAnZXF1YWwpKSkKKyAgICAod2l0aG91dC1yZXN0cmljdGlvbgorICAgICAgOzsg Q29sbGVjdCBjZWxsIHRleHQgYW5kIGludmVydCBjb29yZGluYXRlcy4KKyAgICAgIChkb3RpbWVz ICh4IG5yb3dzKQorICAgICAgICAobGV0KiAoKHJvdyAobnRoIHggcm93cykpCisgICAgICAgICAg ICAgICAoY2VsbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkpCisgICAgICAg ICAgKGRvdGltZXMgKHkgbmNvbHMpCisgICAgICAgICAgICA7OyBTa2lwIG5pbCBjZWxscy0tdGhl IHBhcnNlciBnb3QgY29uZnVzZWQuCisgICAgICAgICAgICAod2hlbi1sZXQqICgoY2VsbCAobnRo IHkgY2VsbHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHRleHQgKHN0cmluZy10cmltLXJp Z2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IGNl bGwgJ25vLXByb3BlcnR5KSkpKQorICAgICAgICAgICAgICAocHV0aGFzaCAoY29ucyB5IHgpIHRl eHQgY2VsbC10ZXh0KSkpKSkKKworICAgICAgKGxldCAoKHNvdXJjZS1idWZmZXIgKGN1cnJlbnQt YnVmZmVyKSkpCisgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCisgICAgICAgICAgKGRvdGltZXMg KHggbmNvbHMpCisgICAgICAgICAgICA7OyBTeW50aGVzaXplIGEgZGVsaW1pdGVyIHJvdy4KKyAg ICAgICAgICAgICh3aGVuIChlcSB4IDEpCisgICAgICAgICAgICAgIChkb3RpbWVzIChfeSAoMS0g bnJvd3MpKQorICAgICAgICAgICAgICAgIChpbnNlcnQgInwiCisgICAgICAgICAgICAgICAgICAg ICAgICAobWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lcgorICAgICAgICAgICAgICAgICAg ICAgICAgIChtYXggNSBtYXJrZG93bi10cy10YWJsZS1kZWZhdWx0LWNvbHVtbi13aWR0aCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAndW5zcGVjaWZpZWQpKSkKKyAgICAgICAgICAgICAgKGlu c2VydCAifCIgIlxuIikpCisgICAgICAgICAgICAoZG90aW1lcyAoeSBucm93cykKKyAgICAgICAg ICAgICAgOzsgU2tpcCB0aGUgb3JpZ2luYWwgZGVsaW1pdGVyIHJvdy4KKyAgICAgICAgICAgICAg KHVubGVzcyAoZXEgeSAxKQorICAgICAgICAgICAgICAgIDs7IENvbmZ1c2VkIGNlbGxzIGhhdmUg bmlsIHRleHQuCisgICAgICAgICAgICAgICAgKGxldCAoKHRleHQgKG9yIChnZXRoYXNoIChjb25z IHggeSkgY2VsbC10ZXh0KSAiIikpKQorICAgICAgICAgICAgICAgICAgKGluc2VydCAifCIgdGV4 dCkpKSkKKyAgICAgICAgICAgIChpbnNlcnQgInwiICJcbiIpKQorICAgICAgICAgIChsZXQgKCh0 ZW1wLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgICAgICh3aXRoLWN1cnJlbnQt YnVmZmVyIHNvdXJjZS1idWZmZXIKKyAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRl bnRzIGJlZyBlbmQgdGVtcC1idWZmZXIpKSkpKSkKKyAgICAod2hlbiAob3IgKGVxIG1hcmtkb3du LXRzLXRhYmxlLWF1dG8tYWxpZ24gdCkKKyAgICAgICAgICAgICAgKG1lbXEgJ3RyYW5zcG9zZSBt YXJrZG93bi10cy10YWJsZS1hdXRvLWFsaWduKSkKKyAgICAgIChtYXJrZG93bi10cy10YWJsZS1h bGlnbi10YWJsZSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWNvbnZlcnQtY3N2LXJl Z2lvbiAoIGJlZyBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmb3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBoZWFkZXItbGluZSByZXBsYWNlKQorICAiQ29udmVydCB0aGUgY29tbWEtc2VwYXJhdGVk IHJlZ2lvbiBCRUcgdG8gRU5EIHRvIGEgTWFya2Rvd24gdGFibGUuCitJZiBIRUFERVItTElORSBp cyBub24tbmlsLCB1c2UgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHJlZ2lvbiBhcyB0aGUgdGFibGUK K2NvbHVtbiBoZWFkZXIuICBJZiBuaWwsIGluZmVyIHRoZSBudW1iZXIgb2YgY29sdW1ucyBhbmQg c3ludGhlc2l6ZQorY29sdW1uIG5hbWVzIGZyb20gdGhlIGZpcnN0IGxpbmUuCisKK05vdGU6IEJv ZHkgY29sdW1ucyBiZXlvbmQgdGhlIHByb3ZpZGVkIG9yIGluZmVycmVkIG51bWJlciBvZiBjb2x1 bW5zIGFyZQorZHJvcHBlZC4KKworSWYgUkVQTEFDRSBpcyBub24tbmlsLCBvdmVyd3JpdGUgdGhl IHJlZ2lvbiBCRUcgRU5EIHdpdGggdGhlIE1hcmtkb3duCit0YWJsZSwgb3RoZXJ3aXNlIGluc2Vy dCB0aGUgdGFibGUgYWZ0ZXIgRU5ELgorCitXaXRoIGEgc2luZ2xlIHByZWZpeCBhcmd1bWVudCwg SEVBREVSLUxJTkUgaXMgbm9uLW5pbC4KK1dpdGggYSBkb3VibGUgcHJlZml4IGFyZ3VtZW50LCBS RVBMQUNFIGlzIG5vbi1uaWwuCitXaXRoIGEgdHJpcGxlIHByZWZpeCBhcmd1bWVudCwgYm90aCBh cmUgbm9uLW5pbC4iCisgIChpbnRlcmFjdGl2ZSAiUiIpCisgIChtYXJrZG93bi10cy10YWJsZS1j b252ZXJ0LXJlZ2lvbiBiZWcgZW5kIGhlYWRlci1saW5lIHJlcGxhY2UgJ2NzdikpCisKKyhkZWZ1 biBtYXJrZG93bi10cy10YWJsZS1jb252ZXJ0LXRzdi1yZWdpb24gKCBiZWcgZW5kCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLWxpbmUgcmVwbGFj ZSkKKyAgIkNvbnZlcnQgdGhlIHRhYi1zZXBhcmF0ZWQgcmVnaW9uIEJFRyB0byBFTkQgdG8gYSBN YXJrZG93biB0YWJsZS4KK0lmIEhFQURFUi1MSU5FIGlzIG5vbi1uaWwsIHVzZSB0aGUgZmlyc3Qg bGluZSBvZiB0aGUgcmVnaW9uIGFzIHRoZSB0YWJsZQorY29sdW1uIGhlYWRlci4gIElmIG5pbCwg aW5mZXIgdGhlIG51bWJlciBvZiBjb2x1bW5zIGFuZCBzeW50aGVzaXplCitjb2x1bW4gbmFtZXMg ZnJvbSB0aGUgZmlyc3QgbGluZS4KKworTm90ZTogQm9keSBjb2x1bW5zIGJleW9uZCB0aGUgcHJv dmlkZWQgb3IgaW5mZXJyZWQgbnVtYmVyIG9mIGNvbHVtbnMgYXJlCitkcm9wcGVkLgorCitJZiBS RVBMQUNFIGlzIG5vbi1uaWwsIG92ZXJ3cml0ZSB0aGUgcmVnaW9uIEJFRyBFTkQgd2l0aCB0aGUg TWFya2Rvd24KK3RhYmxlLCBvdGhlcndpc2UgaW5zZXJ0IHRoZSB0YWJsZSBhZnRlciBFTkQuCisK K1dpdGggYSBzaW5nbGUgcHJlZml4IGFyZ3VtZW50LCBIRUFERVItTElORSBpcyBub24tbmlsLgor V2l0aCBhIGRvdWJsZSBwcmVmaXggYXJndW1lbnQsIFJFUExBQ0UgaXMgbm9uLW5pbC4KK1dpdGgg YSB0cmlwbGUgcHJlZml4IGFyZ3VtZW50LCBib3RoIGFyZSBub24tbmlsLiIKKyAgKGludGVyYWN0 aXZlICJSIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWNvbnZlcnQtcmVnaW9uIGJlZyBlbmQgaGVh ZGVyLWxpbmUgcmVwbGFjZSAndHN2KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWNvbnZl cnQtcmVnaW9uICggYmVnIGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJm9wdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoZWFkZXItbGluZSByZXBsYWNlIGZvcm1hdCkKKyAgIkNvbnZlcnQgdGhlIGNvbW1hLXNlcGFy YXRlZCByZWdpb24gQkVHIHRvIEVORCB0byBhIE1hcmtkb3duIHRhYmxlLgorSWYgSEVBREVSLUxJ TkUgaXMgbm9uLW5pbCwgdXNlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSByZWdpb24gYXMgdGhlIHRh YmxlCitjb2x1bW4gaGVhZGVyLiAgSWYgbmlsLCBpbmZlciB0aGUgbnVtYmVyIG9mIGNvbHVtbnMg YW5kIHN5bnRoZXNpemUKK2NvbHVtbiBuYW1lcyBmcm9tIHRoZSBmaXJzdCBsaW5lLgorCitOb3Rl OiBCb2R5IGNvbHVtbnMgYmV5b25kIHRoZSBwcm92aWRlZCBvciBpbmZlcnJlZCBudW1iZXIgb2Yg Y29sdW1ucyBhcmUKK2Ryb3BwZWQuCisKK0lmIFJFUExBQ0UgaXMgbm9uLW5pbCwgb3ZlcndyaXRl IHRoZSByZWdpb24gQkVHIEVORCB3aXRoIHRoZSBNYXJrZG93bgordGFibGUsIG90aGVyd2lzZSBp bnNlcnQgdGhlIHRhYmxlIGFmdGVyIEVORC4KKworRk9STUFUIGlzIG9uZSBvZiB0aGUgc3ltYm9s cyBgY3N2JyBmb3IgY29tbWEtc2VwYXJhdGVkIHZhbHVlcywgb3IgYHRzdicKK2ZvciB0YWItc2Vw YXJhdGVkIHZhbHVlcy4gIElmIGFueSBvdGhlciB2YWx1ZSwgdXNlIGBjc3YnLgorCitXaXRoIGEg c2luZ2xlIHByZWZpeCBhcmd1bWVudCwgSEVBREVSLUxJTkUgaXMgbm9uLW5pbC4KK1dpdGggYSBk b3VibGUgcHJlZml4IGFyZ3VtZW50LCBSRVBMQUNFIGlzIG5vbi1uaWwuCitXaXRoIGEgdHJpcGxl IHByZWZpeCBhcmd1bWVudCwgYm90aCBhcmUgbm9uLW5pbC4iCisgIChpbnRlcmFjdGl2ZSAiUiIp CisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtY29u dmVydC1yZWdpb24pCisKKyAgKGNvbmQgKChlcXVhbCBjdXJyZW50LXByZWZpeC1hcmcgJyg0KSkK KyAgICAgICAgIChzZXRxIGhlYWRlci1saW5lIHQpKQorICAgICAgICAoKGVxdWFsIGN1cnJlbnQt cHJlZml4LWFyZyAnKDE2KSkKKyAgICAgICAgIChzZXRxIHJlcGxhY2UgdCkpCisgICAgICAgICgo ZXF1YWwgY3VycmVudC1wcmVmaXgtYXJnICcoNjQpKQorICAgICAgICAgKHNldHEgaGVhZGVyLWxp bmUgdAorICAgICAgICAgICAgICAgcmVwbGFjZSB0KSkpCisgIChsZXQgKHJvd3MpCisgICAgKHNh dmUtcmVzdHJpY3Rpb24KKyAgICAgIChuYXJyb3ctdG8tcmVnaW9uIGJlZyBlbmQpCisgICAgICAo Z290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgKHdoaWxlICg8IChwb2ludCkgKHBvaW50LW1h eCkpCisgICAgICAgIChwY2FzZSBmb3JtYXQKKyAgICAgICAgICAoJ3RzdgorICAgICAgICAgICAg IChwdXNoCisgICAgICAgICAgICAgIChzcGxpdC1zdHJpbmcKKyAgICAgICAgICAgICAgIChidWZm ZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKHBvaW50KSAocG9zLWVvbCkpICJcdCIpCisgICAg ICAgICAgICAgIHJvd3MpKQorICAgICAgICAgICAoXworICAgICAgICAgICAgKGxldCAocm93KQor ICAgICAgICAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkCisgICAgICAgICAgICAgICAg ICAgICAgIlwiXFwoPzpbXlwiXVxcfFwiXCJcXCkqXCJcXHxbXixdK1xcfFwiXCIiCisgICAgICAg ICAgICAgICAgICAgICAgKHBvcy1lb2wpIHQpCisgICAgICAgICAgICAgICAgKHB1c2gKKyAgICAg ICAgICAgICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICAg IlwiXCIiICJcIiIKKyAgICAgICAgICAgICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcK KyAgICAgICAgICAgICAgICAgICAiXFxgXCJcXChcLipcXClcIlxcJyIKKyAgICAgICAgICAgICAg ICAgICAiXFwxIgorICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmctbm8tcHJvcGVydGllcyAo bWF0Y2gtc3RyaW5nIDApKSkpCisgICAgICAgICAgICAgICAgIHJvdykpCisgICAgICAgICAgICAg IChwdXNoIChucmV2ZXJzZSByb3cpIHJvd3MpKSkpCisgICAgICAgIChmb3J3YXJkLWxpbmUgMSkp CisgICAgICAgIChzZXRxIHJvd3MgKG5yZXZlcnNlIHJvd3MpKQorICAgICAgICAoY29uZCAocmVw bGFjZSAoZGVsZXRlLXJlZ2lvbiBiZWcgZW5kKSkKKyAgICAgICAgICAgICAgKHQgKGdvdG8tY2hh ciBlbmQpKSkKKyAgICAgICAgKGlmIGhlYWRlci1saW5lCisgICAgICAgICAgICAobWFya2Rvd24t dHMtdGFibGUtaW5zZXJ0LXRhYmxlICgxLSAobGVuZ3RoIHJvd3MpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoIChjYXIgcm93cykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgcm93cykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciByb3dzKSkKKyAgICAgICAg ICAobWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXRhYmxlIChsZW5ndGggcm93cykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggKGNhciByb3dzKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cykpKSkpCisKKyhkZWZ1biBtYXJrZG93 bi10cy10YWJsZS1leHBvcnQtdGFibGUtY3N2ICgmb3B0aW9uYWwgZGlzcGxheSkKKyAgIkV4cG9y dCB0aGUgTWFya2Rvd24gdGFibGUgYXQgcG9pbnQgdG8gY29tbWEtc2VwYXJhdGVkIGluIGEgYnVm ZmVyLgorSWYgRElTUExBWSBpcyBub24tbmlsLCBvciB3aXRoIGEgcHJlZml4IGFyZ3VtZW50LCBk aXNwbGF5IHRoZSBleHBvcnQKK2J1ZmZlciBhZnRlciBleHBvcnRpbmcuCitJZiBwb2ludCBpcyBu b3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgIChtYXJr ZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUgZGlzcGxheSAnY3N2KSkKKworKGRlZnVuIG1hcmtk b3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZS10c3YgKCZvcHRpb25hbCBkaXNwbGF5KQorICAiRXhw b3J0IHRoZSBNYXJrZG93biB0YWJsZSBhdCBwb2ludCB0byB0YWItc2VwYXJhdGVkIGluIGEgYnVm ZmVyLgorSWYgRElTUExBWSBpcyBub24tbmlsLCBvciB3aXRoIGEgcHJlZml4IGFyZ3VtZW50LCBk aXNwbGF5IHRoZSBleHBvcnQKK2J1ZmZlciBhZnRlciBleHBvcnRpbmcuCitJZiBwb2ludCBpcyBu b3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgIChtYXJr ZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUgZGlzcGxheSAndHN2KSkKKworKGRlZnVuIG1hcmtk b3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZSAoJm9wdGlvbmFsIGRpc3BsYXkgZm9ybWF0KQorICAi RXhwb3J0IHRoZSBNYXJrZG93biB0YWJsZSBhdCBwb2ludCB0byBDU1YgaW4gYSBidWZmZXIuCitJ ZiBESVNQTEFZIGlzIG5vbi1uaWwsIG9yIHdpdGggYSBwcmVmaXggYXJndW1lbnQsIGRpc3BsYXkg dGhlIGV4cG9ydAorYnVmZmVyIGFmdGVyIGV4cG9ydGluZy4KK0ZPUk1BVCBpcyBvbmUgb2YgdGhl IHN5bWJvbHMgYGNzdicgZm9yIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXMgYWthIENTViwKK29yIGB0 c3YnIGZvciB0YWItc2VwYXJhdGVkIHZhbHVlcyBha2EgVFNWLiAgSWYgYW55IG90aGVyIHZhbHVl LCB1c2UKK2Bjc3YnLiAgSWYgVFNWLCByZXBsYWNlIGFueSB0YWJzIHdpdGhpbiBhIGZpZWxkIHdp dGggYSBzcGFjZS4KK0RvIG5vdCBleHBvcnQgdGhlIHRhYmxlJ3MgaGVhZGVyIGRlbGltaXRlciBy b3cuCitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFj dGl2ZSAiUCIpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMt dGFibGUtZXhwb3J0LXRhYmxlKQorICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRz LWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkp CisgICAgICAgICAgICAgIChyb3dzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gdGFibGUgJ25hbWVk KSkKKyAgICAgICAgICAgICAgKGhlYWRlciAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSB0YWJsZSAi XFxgcGlwZV90YWJsZV9oZWFkZXJcXCciKSkKKyAgICAgICAgICAgICAgKGRlbGltaXRlci1yb3cg KHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh YmxlICJcXGBwaXBlX3RhYmxlX2RlbGltaXRlcl9yb3dcXCciKSkKKyAgICAgICAgICAgICAgKGV4 cG9ydC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtYXJrZG93bi10cy10YWJsZS1leHBvcnQtYnVmZmVyKSkpCisgICAgKHdpdGgtY3VycmVu dC1idWZmZXIgZXhwb3J0LWJ1ZmZlcgorICAgICAgKHNwZWNpYWwtbW9kZSkKKyAgICAgIChsZXQg KChpbmhpYml0LXJlYWQtb25seSB0KSkKKyAgICAgICAgKHdpZGVuKQorICAgICAgICAoZXJhc2Ut YnVmZmVyKQorICAgICAgICAoZG9saXN0IChyb3cgcm93cykKKyAgICAgICAgICAodW5sZXNzIChl cXVhbCByb3cgZGVsaW1pdGVyLXJvdykKKyAgICAgICAgICAgIChsZXQqICgoZWx0cyAodHJlZXNp dC1ub2RlLWNoaWxkcmVuIHJvdyAnbmFtZWQpKQorICAgICAgICAgICAgICAgICAgIChsZW4gKGxl bmd0aCBlbHRzKSkpCisgICAgICAgICAgICAgIChkb3RpbWVzICh4IGxlbikKKyAgICAgICAgICAg ICAgICAobGV0ICgocyAoc3RyaW5nLXRyaW0gKHRyZWVzaXQtbm9kZS10ZXh0IChudGggeCBlbHRz KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ25vLXByb3BlcnR5KSkpKQorICAgICAgICAgICAgICAgICAgKHBjYXNlIGZvcm1hdAorICAg ICAgICAgICAgICAgICAgICAoJ3RzdgorICAgICAgICAgICAgICAgICAgICAgKGluc2VydCAocmVw bGFjZS1yZWdleHAtaW4tc3RyaW5nICJcdCIgIlxzIiBzKSkKKyAgICAgICAgICAgICAgICAgICAg ICh3aGVuICg8IHggKDEtIGxlbikpCisgICAgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgIlx0 IikpKQorICAgICAgICAgICAgICAgICAgICAoXworICAgICAgICAgICAgICAgICAgICAgKGluc2Vy dAorICAgICAgICAgICAgICAgICAgICAgIChpZiAoc3RyaW5nLW1hdGNoICJbXCIsXSIgcykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiXCIiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG1hcGNvbmNhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnaWRlbnRpdHkgKHNwbGl0LXN0cmluZyBzICJcIiIpICJcIlwiIikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiXCIiKQorICAgICAgICAgICAgICAgICAgICAgICAgcykp CisgICAgICAgICAgICAgICAgICAgICAod2hlbiAoPCB4ICgxLSBsZW4pKQorICAgICAgICAgICAg ICAgICAgICAgICAoaW5zZXJ0ICIsIikpKSkpKQorICAgICAgICAgICAgICAoaW5zZXJ0ICJcbiIp KSkpCisgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpKSkKKyAgICAod2hlbiBkaXNwbGF5 CisgICAgICAoZGlzcGxheS1idWZmZXIgZXhwb3J0LWJ1ZmZlcikpKSkKKworOzs7IEhlbHBlcnM6 CisKKyhkZWZ1biBtYXJrZG93bi10cy0tb3V0bGluZS1pbnZpc2libGUtcCAocG9zKQorICAiUmV0 dXJuIG5vbi1uaWwgaWYgUE9TIGlzIGluc2lkZSBhbiBvdXRsaW5lLWZvbGRlZCByZWdpb24uIgor ICAoY2wtc29tZSAobGFtYmRhIChvdikgKGVxIChvdmVybGF5LWdldCBvdiAnaW52aXNpYmxlKSAn b3V0bGluZSkpCisgICAgICAgICAgIChvdmVybGF5cy1hdCBwb3MpKSkKIAogKGRlZnVuIG1hcmtk b3duLXRzLS1yYW5nZS1zZXR0aW5ncyAoKQogICAiUmV0dXJuIHJhbmdlIHNldHRpbmdzIGZvciBg bWFya2Rvd24tdHMtbW9kZScuIgotICAodHJlZXNpdC1yYW5nZS1ydWxlcwotICAgOmVtYmVkICdt YXJrZG93bi1pbmxpbmUKLSAgIDpob3N0ICdtYXJrZG93bgotICAgOnJhbmdlLWZuICMndHJlZXNp dC1yYW5nZS1mbi1leGNsdWRlLWNoaWxkcmVuCi0gICAnKChpbmxpbmUpIEBtYXJrZG93bi1pbmxp bmUpCi0KLSAgIDplbWJlZCAjJ21hcmtkb3duLXRzLS1jb252ZXJ0LWNvZGUtYmxvY2stbGFuZ3Vh Z2UKLSAgIDpob3N0ICdtYXJrZG93bgotICAgOmxvY2FsIHQKLSAgICcoKGZlbmNlZF9jb2RlX2Js b2NrIChpbmZvX3N0cmluZyAobGFuZ3VhZ2UpIEBsYW5ndWFnZSkKLSAgICAgICAgICAgICAgICAg ICAgICAgIChjb2RlX2ZlbmNlX2NvbnRlbnQpIEBjb250ZW50KSkpKQorICAoYXBwbHkKKyAgICMn dHJlZXNpdC1yYW5nZS1ydWxlcworICAgYCg6ZW1iZWQgbWFya2Rvd24taW5saW5lCisgICAgIDpo b3N0IG1hcmtkb3duCisgICAgICgoaW5saW5lKSBAbWFya2Rvd24taW5saW5lKQorICAgICAsQCh3 aGVuIG1hcmtkb3duLXRzLWZvbnRpZnktY29kZS1ibG9ja3MtbmF0aXZlbHkKKyAgICAgICAgICco OmVtYmVkIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLXRzLWxhbmd1YWdlCisgICAgICAgICAgIDpo b3N0IG1hcmtkb3duCisgICAgICAgICAgIDpsb2NhbCB0CisgICAgICAgICAgICgoZmVuY2VkX2Nv ZGVfYmxvY2sgKGluZm9fc3RyaW5nIChsYW5ndWFnZSkgQGxhbmd1YWdlKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjb2RlX2ZlbmNlX2NvbnRlbnQpIEBjb250ZW50KSkpKSkpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cyAoKQorICAiUmVtb3Zl IGFsbCBpbmxpbmUgaW1hZ2Ugb3ZlcmxheXMgZnJvbSB0aGUgY3VycmVudCBidWZmZXIuIgorICAo ZG9saXN0IChvdiAob3ZlcmxheXMtaW4gKHBvaW50LW1pbikgKHBvaW50LW1heCkpKQorICAgICh3 aGVuIChvdmVybGF5LWdldCBvdiAnbWFya2Rvd24tdHMtaW1hZ2UpCisgICAgICAoZGVsZXRlLW92 ZXJsYXkgb3YpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tb3V0bGluZS12aWV3LWNoYW5nZSAo KQorICAiVXBkYXRlIGltYWdlIG92ZXJsYXlzIGFmdGVyIG91dGxpbmUgZm9sZC91bmZvbGQuCitS ZW1vdmVzIGltYWdlIG92ZXJsYXlzIGluIGZvbGRlZCByZWdpb25zIGFuZCB0cmlnZ2VycworcmVm b250aWZpY2F0aW9uIHNvIHRoYXQgaW1hZ2VzIGluIHVuZm9sZGVkIHJlZ2lvbnMgYXJlIHJlY3Jl YXRlZC4iCisgICh3aGVuIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMKKyAgICAobWFya2Rvd24t dHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cykKKyAgICAoZm9udC1sb2NrLWZsdXNoKSkpCiAKIChk ZWZ1biBtYXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwICh2YWx1ZSkKICAgIlNldCBoaWRpbmcg b2YgTWFya2Rvd24gbWFya3VwIGRlbGltaXRlcnMgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLgpAQCAt MzQ4LDYgKzQ2MjMsOCBAQCBtYXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwCiAgIChpZiB2YWx1 ZQogICAgICAgKGFkZC10by1pbnZpc2liaWxpdHktc3BlYyAnbWFya2Rvd24tdHMtLW1hcmt1cCkK ICAgICAocmVtb3ZlLWZyb20taW52aXNpYmlsaXR5LXNwZWMgJ21hcmtkb3duLXRzLS1tYXJrdXAp KQorICAod2hlbiBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzCisgICAgKG1hcmtkb3duLXRzLS1y ZW1vdmUtaW1hZ2Utb3ZlcmxheXMpKQogICAoZm9udC1sb2NrLWZsdXNoKSkKIAogKGRlZnVuIG1h cmtkb3duLXRzLXRvZ2dsZS1oaWRlLW1hcmt1cCAoKQpAQCAtMzU2LDEyMiArNDYzMyw3MjYgQEAg bWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUtbWFya3VwCiAgIChzZXRxIG1hcmtkb3duLXRzLWhpZGUt bWFya3VwIChub3QgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApKQogICAobWFya2Rvd24tdHMtLXNl dC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkpCiAKKyhkZWZ1biBtYXJrZG93 bi10cy0tc2V0LWlubGluZS1pbWFnZXMgKHZhbHVlKQorICAiU2V0IGRpc3BsYXkgb2YgaW5saW5l IGltYWdlcyBpbiB0aGUgY3VycmVudCBidWZmZXIuCitWQUxVRSBub24tbmlsIGRpc3BsYXlzIGlt YWdlcywgbmlsIHJlbW92ZXMgdGhlbS4iCisgIChpZiB2YWx1ZQorICAgICAgKHRyZWVzaXQtZm9u dC1sb2NrLXJlY29tcHV0ZS1mZWF0dXJlcyAnKGltYWdlLXByZXZpZXcpKQorICAgICh0cmVlc2l0 LWZvbnQtbG9jay1yZWNvbXB1dGUtZmVhdHVyZXMgbmlsICcoaW1hZ2UtcHJldmlldykpKQorICAo bWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cykKKyAgKGZvbnQtbG9jay1mbHVzaCkp CisKKyhkZWZ1biBtYXJrZG93bi10cy10b2dnbGUtaW5saW5lLWltYWdlcyAoKQorICAiVG9nZ2xl IGRpc3BsYXkgb2YgaW5saW5lIGltYWdlcyBpbiB0aGUgY3VycmVudCBidWZmZXIuIgorICAoaW50 ZXJhY3RpdmUpCisgIChzZXRxIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMgKG5vdCBtYXJrZG93 bi10cy1pbmxpbmUtaW1hZ2VzKSkKKyAgKG1hcmtkb3duLXRzLS1zZXQtaW5saW5lLWltYWdlcyBt YXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzKQorICAobWVzc2FnZSAiSW5saW5lIGltYWdlcyAlcyIg KGlmIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiZW5hYmxlZCIgImRpc2FibGVkIikpKQorCis7OzsgRW1waGFzaXM6CisKKyhkZWZ2 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 ICAgIChjbC1sb29wIGZvciAoX2tleSAuIG0pIGluIChzb3J0IChjb3B5LXNlcXVlbmNlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1lbXBoYXNp cy1hbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJk YSAoYSBiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg+IChs ZW5ndGggKGNkciBhKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobGVuZ3RoIChjZHIgYikpKSkpCisgICAgICAgICAgICAgICAgIGZvciByZSA9IChjb25j YXQgIlxcYCIgKHJlZ2V4cC1xdW90ZSBtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJcXChcXCg/Oi5cXHxcblxcKSpcXCkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHJlZ2V4cC1xdW90ZSBtKSAiXFwnIikKKyAgICAgICAgICAgICAgICAgd2hlbiAoc3Ry aW5nLW1hdGNoIHJlIHRleHQpCisgICAgICAgICAgICAgICAgIGRvIChzZXRxIHN0cmlwcGVkICht YXRjaC1zdHJpbmcgMSB0ZXh0KSkKKyAgICAgICAgICAgICAgICAgYW5kIHJldHVybiBuaWwpCisg ICAgICAgICh3aGVuIHN0cmlwcGVkCisgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVnIGVuZCkK KyAgICAgICAgICAoaW5zZXJ0IHN0cmlwcGVkKSkpCisgICAgOzsgRmluZCB0aGUgb3V0ZXJtb3N0 IGVtcGhhc2lzIG5vZGUgYXQgcG9pbnQuCisgICAgKHdoZW4tbGV0KiAoKGlubmVyIChtYXJrZG93 bi10cy0tZW1waGFzaXMtbm9kZS1hdC1wb2ludCkpCisgICAgICAgICAgICAgICAgKG5vZGUgKGxl dCAoKG4gaW5uZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHdoaWxlIChsZXQgKChwYXJl bnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHdoZW4gKGFuZCBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1lbWJlciAodHJlZXNpdC1ub2RlLXR5cGUgcGFyZW50KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoImVtcGhhc2lzIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0 cm9uZ19lbXBoYXNpcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJzdHJpa2V0aHJvdWdoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvZGVfc3BhbiIpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgbiBwYXJlbnQpKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICBuKSkKKyAgICAgICAgICAgICAgICAoc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBu b2RlKSkKKyAgICAgICAgICAgICAgICAoZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQorICAg ICAgICAgICAgICAgICh0ZXh0ICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlIHQpKQorICAgICAgICAg ICAgICAgICh0eXBlICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSkKKyAgICAgICAgICAgICAgICAo bWxlbiAocGNhc2UgdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgKCJzdHJvbmdfZW1waGFz aXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctcHJlZml4LXAgIl8iIHRl eHQpIDIgMikpCisgICAgICAgICAgICAgICAgICAgICAgICAoImVtcGhhc2lzIgorICAgICAgICAg ICAgICAgICAgICAgICAgIChpZiAoc3RyaW5nLXByZWZpeC1wICJfIiB0ZXh0KSAxIDEpKQorICAg ICAgICAgICAgICAgICAgICAgICAgKCJzdHJpa2V0aHJvdWdoIiAyKQorICAgICAgICAgICAgICAg ICAgICAgICAgKCJjb2RlX3NwYW4iIDEpKSkKKyAgICAgICAgICAgICAgICAoaW5uZXItdGV4dCAo c3Vic3RyaW5nIHRleHQgbWxlbiAoLSAobGVuZ3RoIHRleHQpIG1sZW4pKSkpCisgICAgICAobGV0 ICgob2Zmc2V0ICgtIChwb2ludCkgc3RhcnQgbWxlbikpKQorICAgICAgICAoZGVsZXRlLXJlZ2lv biBzdGFydCBlbmQpCisgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCisgICAgICAgIChpbnNlcnQg aW5uZXItdGV4dCkKKyAgICAgICAgKGdvdG8tY2hhciAoKyBzdGFydCAobWF4IDAgb2Zmc2V0KSkp KSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtZW1waGFzaXplICgmb3B0aW9uYWwgY2hhcikKKyAg Ikluc2VydCBvciBjaGFuZ2UgZW1waGFzaXMgb24gdGV4dC4KK0lmIHRoZXJlIGlzIGFuIGFjdGl2 ZSByZWdpb24sIHdyYXAgaXQgd2l0aCBlbXBoYXNpcyBtYXJrZXJzLgorSWYgdGhlcmUgaXMgbm8g cmVnaW9uLCBpbnNlcnQgbWFya2VyIHBhaXJzIGFuZCBwbGFjZSBwb2ludCBiZXR3ZWVuCit0aGVt LiAgQ0hBUiBzZWxlY3RzIHRoZSBlbXBoYXNpcyB0eXBlOgorCisgIGIgICAqKmJvbGQqKiAgICAg ICBCICBfX2JvbGRfXworICBpICAgKml0YWxpYyogICAgICAgSSAgX2l0YWxpY18KKyAgYSAgICoq KmJvbGQraXRhbGljKioqCisgIHMgICB+fnN0cmlrZXRocm91Z2h+fgorICBjICAgYGNvZGVgCisg IFNQQyByZW1vdmUgZW1waGFzaXMgYXQgcG9pbnQgb3IgcmVnaW9uIgorICAoaW50ZXJhY3RpdmUK KyAgICJjRW1waGFzaXMgW2Jdb2xkIFtCXW9sZF8gW2lddGFsaWMgW0lddGFsaWNfIFthXWxsIFtz XXRyaWtlIFtjXW9kZSBTUEMgcmVtb3ZlOiIpCisgIChpZiAoZXEgY2hhciA/XHMpCisgICAgICAo bWFya2Rvd24tdHMtcmVtb3ZlLWVtcGhhc2lzKQorICAgIChpZi1sZXQqICgobWFya2VyIChjZHIg KGFzc3EgY2hhciBtYXJrZG93bi10cy1lbXBoYXNpcy1hbGlzdCkpKSkKKyAgICAgICAgKGlmICh1 c2UtcmVnaW9uLXApCisgICAgICAgICAgICAobGV0ICgoYmVnIChyZWdpb24tYmVnaW5uaW5nKSkK KyAgICAgICAgICAgICAgICAgIChlbmQgKGNvcHktbWFya2VyIChyZWdpb24tZW5kKSkpKQorICAg ICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAoZ290by1jaGFyIGVu ZCkKKyAgICAgICAgICAgICAgICAoaW5zZXJ0IG1hcmtlcikKKyAgICAgICAgICAgICAgICAoZ290 by1jaGFyIGJlZykKKyAgICAgICAgICAgICAgICAoaW5zZXJ0IG1hcmtlcikpKQorICAgICAgICAg IChpZi1sZXQqICgoYm91bmRzIChib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQgJ3dvcmQpKSkKKyAg ICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo Y2RyIGJvdW5kcykpCisgICAgICAgICAgICAgICAgKGluc2VydCBtYXJrZXIpCisgICAgICAgICAg ICAgICAgKGdvdG8tY2hhciAoY2FyIGJvdW5kcykpCisgICAgICAgICAgICAgICAgKGluc2VydCBt YXJrZXIpKQorICAgICAgICAgICAgKGluc2VydCBtYXJrZXIgbWFya2VyKQorICAgICAgICAgICAg KGJhY2t3YXJkLWNoYXIgKGxlbmd0aCBtYXJrZXIpKSkpCisgICAgICAodXNlci1lcnJvciAiTm8g c3VjaCBlbXBoYXNpcyBtYXJrZXI6ICVjIiBjaGFyKSkpKQorCis7OzsgQmxvY2sgc3RydWN0dXJl OgorCisoZGVmdW4gbWFya2Rvd24tdHMtaW5zZXJ0LXN0cnVjdHVyZSAoJm9wdGlvbmFsIGNoYXIp CisgICJJbnNlcnQgYSBibG9jayBzdHJ1Y3R1cmUuCitJZiB0aGVyZSBpcyBhbiBhY3RpdmUgcmVn aW9uLCB3cmFwIGl0LiAgT3RoZXJ3aXNlLCBpbnNlcnQgYW4gZW1wdHkKK2Jsb2NrIGFuZCBwbGFj ZSBwb2ludCBpbnNpZGUuICBDSEFSIHNlbGVjdHMgdGhlIHN0cnVjdHVyZSB0eXBlOgorCisgIGAg IGZlbmNlZCBjb2RlIGJsb2NrIChgYGApCisgIH4gIHRpbGRlIGZlbmNlZCBjb2RlIGJsb2NrICh+ fn4pCisgIHEgIGJsb2NrIHF1b3RlICg+ICkKKyAgZCAgaG9yaXpvbnRhbCBkaXZpZGVyL3J1bGUg KC0tLSkKKyAgdCAgdGFibGUiCisgIChpbnRlcmFjdGl2ZQorICAgImNTdHJ1Y3R1cmUgW2BdYmFj ay10aWNrIGNvZGUgYmxvY2sgW35ddGlsZGUgY29kZSBibG9jayBbcV11b3RlIFtkXWl2aWRlciBb dF1hYmxlOiIpCisgIChwY2FzZSBjaGFyCisgICAgKD9gIChtYXJrZG93bi10cy0taW5zZXJ0LWNv ZGUtYmxvY2sgP2ApKQorICAgICg/fiAobWFya2Rvd24tdHMtLWluc2VydC1jb2RlLWJsb2NrID9+ KSkKKyAgICAoP3EgKG1hcmtkb3duLXRzLS1pbnNlcnQtYmxvY2stcXVvdGUpKQorICAgICg/ZCAo bWFya2Rvd24tdHMtLWluc2VydC1kaXZpZGVyKSkKKyAgICAoP3QgKG1hcmtkb3duLXRzLXRhYmxl LWluc2VydC10YWJsZSkpCisgICAgKF8gKHVzZXItZXJyb3IgIk5vIHN1Y2ggc3RydWN0dXJlOiAl YyIgY2hhcikpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbnNlcnQtY29kZS1ibG9jayAoY2hh ciAmb3B0aW9uYWwgbGFuZ3VhZ2UpCisgICJJbnNlcnQgYSBmZW5jZWQgY29kZSBibG9jayB1c2lu ZyBhIENIQVIgc2VxdWVuY2UuCitDSEFSIHNob3VsZCBiZSBvbmUgb2YgYSBiYWNrdGljayBvciBh IHRpbGRlLgorTEFOR1VBR0UgaXMgYSB3aGl0ZXNwYWNlIGZyZWUgbGFuZ3VhZ2Ugc3RyaW5nLiIK KyAgKHNldHEgbGFuZ3VhZ2UKKyAgICAgICAgKG9yIGxhbmd1YWdlCisgICAgICAgICAgICAocmVw bGFjZS1yZWdleHAtaW4tc3RyaW5nCisgICAgICAgICAgICAgIltbOmJsYW5rOl1dIiAiIgorICAg ICAgICAgICAgIChsZXQgKChjb21wbGV0aW9uLWlnbm9yZS1jYXNlIG5pbCkKKyAgICAgICAgICAg ICAgICAgICAoY2FuZGlkYXRlcworICAgICAgICAgICAgICAgICAgICAoc2VxLW1hcAorICAgICAg ICAgICAgICAgICAgICAgIydzeW1ib2wtbmFtZQorICAgICAgICAgICAgICAgICAgICAgKHNlcS11 bmlxCisgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCAobWFwY2FyICMnY2FyIG1hcmtkb3du LXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtYXBjYXIgIydjYXIgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAjJ2NhciBtYXJrZG93bi10cy1jb2Rl LWJsb2NrLW1vZGVzKSkpKSkpCisgICAgICAgICAgICAgICAoY29tcGxldGluZy1yZWFkCisgICAg ICAgICAgICAgICAgIkNvZGUgYmxvY2sgbGFuZ3VhZ2U6ICIKKyAgICAgICAgICAgICAgICBjYW5k aWRhdGVzCisgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgJ2NvbmZpcm0gOyBQ cm9tcHQgaWYgdGhlIGxhbmd1YWdlIGlzIG5vdCBvbiBvdXIgbGlzdC4KKyAgICAgICAgICAgICAg ICBuaWwKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtbGFuZ3VhZ2UtaGlzdG9yeSkpKSkp CisgIChsZXQgKChmZW5jZS1zdHJpbmcgKG1ha2Utc3RyaW5nIDMgY2hhcikpKQorICAgIChpZiAo dXNlLXJlZ2lvbi1wKQorICAgICAgICAobGV0ICgoYmVnIChyZWdpb24tYmVnaW5uaW5nKSkKKyAg ICAgICAgICAgICAgKGVuZCAocmVnaW9uLWVuZCkpKQorICAgICAgICAgIChzYXZlLWV4Y3Vyc2lv bgorICAgICAgICAgICAgKGdvdG8tY2hhciBlbmQpCisgICAgICAgICAgICAodW5sZXNzIChib2xw KSAoaW5zZXJ0ICJcbiIpKQorICAgICAgICAgICAgKGluc2VydCBmZW5jZS1zdHJpbmcgIlxuIikK KyAgICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgICAgKGluc2VydCBmZW5jZS1z dHJpbmcgbGFuZ3VhZ2UgIlxuIikpKQorICAgICAgKGluc2VydCBmZW5jZS1zdHJpbmcgbGFuZ3Vh Z2UgIlxuXG4iIGZlbmNlLXN0cmluZykKKyAgICAgIChmb3J3YXJkLWxpbmUgLTEpKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy0taW5zZXJ0LWJsb2NrLXF1b3RlICgpCisgICJJbnNlcnQgYSBibG9j ayBxdW90ZS4iCisgIChpZiAodXNlLXJlZ2lvbi1wKQorICAgICAgKGxldCAoKGJlZyAocmVnaW9u LWJlZ2lubmluZykpCisgICAgICAgICAgICAoZW5kIChjb3B5LW1hcmtlciAocmVnaW9uLWVuZCkp KSkKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisg ICAgICAgICAgKHdoaWxlICg8IChwb2ludCkgZW5kKQorICAgICAgICAgICAgKGluc2VydCAiPiAi KQorICAgICAgICAgICAgKGZvcndhcmQtbGluZSAxKSkpKQorICAgIChpbnNlcnQgIj4gIikpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtLWluc2VydC1kaXZpZGVyICgpCisgICJJbnNlcnQgYSBob3Jp em9udGFsIHJ1bGUuIgorICAodW5sZXNzIChib2xwKSAoaW5zZXJ0ICJcbiIpKQorICAoaW5zZXJ0 ICJcbi0tLVxuXG4iKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1hcHBseS1lbGxpcHNpcyAoKQor ICAiQXBwbHkgYG1hcmtkb3duLXRzLWVsbGlwc2lzJyB0byB0aGUgY3VycmVudCBidWZmZXIncyBk aXNwbGF5IHRhYmxlLiIKKyAgKGlmIChhbmQgKHN0cmluZ3AgbWFya2Rvd24tdHMtZWxsaXBzaXMp CisgICAgICAgICAgIChub3QgKHN0cmluZy1lbXB0eS1wIG1hcmtkb3duLXRzLWVsbGlwc2lzKSkp CisgICAgICAobGV0ICgodGFibGUgKG9yIGJ1ZmZlci1kaXNwbGF5LXRhYmxlCisgICAgICAgICAg ICAgICAgICAgICAgIChtYWtlLWRpc3BsYXktdGFibGUpKSkpCisgICAgICAgIChzZXQtZGlzcGxh eS10YWJsZS1zbG90CisgICAgICAgICB0YWJsZSA0CisgICAgICAgICAodmNvbmNhdCAobWFwY2Fy IChsYW1iZGEgKGMpIChtYWtlLWdseXBoLWNvZGUgYyAnc2hhZG93KSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgbWFya2Rvd24tdHMtZWxsaXBzaXMpKSkKKyAgICAgICAgKHNldHEgYnVmZmVy LWRpc3BsYXktdGFibGUgdGFibGUpKQorICAgICh3aGVuIGJ1ZmZlci1kaXNwbGF5LXRhYmxlCisg ICAgICAoc2V0LWRpc3BsYXktdGFibGUtc2xvdCBidWZmZXItZGlzcGxheS10YWJsZSA0IG5pbCkp KSkKKworOzs7IE1ham9yIG1vZGU6CisKKyhkZWZ1biBtYXJrZG93bi10cy1vdXRsaW5lLWN5Y2xl ICgpCisgICJDeWNsZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWFkaW5nIGF0IHBvaW50LgorT24gYSBo ZWFkaW5nLCBjYWxsIGBvdXRsaW5lLWN5Y2xlJy4gIE90aGVyd2lzZSBkbyBub3RoaW5nLiIKKyAg KGludGVyYWN0aXZlKQorICAod2hlbiAob3V0bGluZS1vbi1oZWFkaW5nLXApCisgICAgKG91dGxp bmUtY3ljbGUpKSkKKworKGRlZnZhci1rZXltYXAgbWFya2Rvd24tdHMtbW9kZS1tYXAKKyAgOmRv YyAiS2V5bWFwIGZvciBgbWFya2Rvd24tdHMtbW9kZScuIgorICAiTS08bGVmdD4iICAgICMnbWFy a2Rvd24tdHMtcHJvbW90ZQorICAiTS08cmlnaHQ+IiAgICMnbWFya2Rvd24tdHMtZGVtb3RlCisg ICJNLTx1cD4iICAgICAgIydtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtdXAKKyAgIk0tPGRvd24+ IiAgICAjJ21hcmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duCisgICJDLWMgQy1uIiAgICAgIydv dXRsaW5lLW5leHQtaGVhZGluZworICAiQy1jIEMtcCIgICAgICMnb3V0bGluZS1wcmV2aW91cy1o ZWFkaW5nCisgICJDLWMgQy11IiAgICAgIydvdXRsaW5lLXVwLWhlYWRpbmcKKyAgIkMtYyBDLWYi ICAgICAjJ291dGxpbmUtZm9yd2FyZC1zYW1lLWxldmVsCisgICJDLWMgQy1iIiAgICAgIydvdXRs aW5lLWJhY2t3YXJkLXNhbWUtbGV2ZWwKKyAgIkMtYyBDLXggQy1mIiAjJ21hcmtkb3duLXRzLWVt cGhhc2l6ZQorICAiQy1jIEMteCBDLW0iICMnbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUtbWFya3Vw CisgICJDLWMgQy14IEMtdiIgIydtYXJrZG93bi10cy10b2dnbGUtaW5saW5lLWltYWdlcworICAi Qy1jIEMtYyIgICAgICMnbWFya2Rvd24tdHMtdG9nZ2xlLWNoZWNrYm94CisgICJDLWMgQy1yIiAg ICAgIydtYXJrZG93bi10cy1yZW51bWJlci1saXN0CisgICJDLWMgQy0sIiAgICAgIydtYXJrZG93 bi10cy1pbnNlcnQtc3RydWN0dXJlCisgICJDLWMgQy12IG4iICAgIydtYXJrZG93bi10cy1tb3Zl LXRvLW5leHQtY29kZS1ibG9jaworICAiQy1jIEMtdiBwIiAgICMnbWFya2Rvd24tdHMtbW92ZS10 by1wcmV2aW91cy1jb2RlLWJsb2NrCisgICJSRVQiICAgICAgICAgIydtYXJrZG93bi10cy1uZXds aW5lCisgICJNLVJFVCIgICAgICAgIydtYXJrZG93bi10cy1pbnNlcnQtbGlzdC1pdGVtCisgICJU QUIiICAgICAgICAgIydtYXJrZG93bi10cy1vdXRsaW5lLWN5Y2xlKQorCisoZGVmdmFyLWtleW1h cCBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1tYXAKKyAgOmRvYyAiS2V5 bWFwIGZvciBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUnLgorVGhlc2Ug b3ZlcnJpZGUga2V5cyBpbiBgbWFya2Rvd24tdHMtbW9kZS1tYXAnIHRvIHN1cHBvcnQgZXhlY3V0 aW5nIHRoZWlyCitjb21tYW5kcyBpbiBhIGNvZGUtYmxvY2sgY29udGV4dC4iCisgIDpwYXJlbnQg bWFya2Rvd24tdHMtbW9kZS1tYXAKKyAgOm1lbnUgbmlsCisgICJNLS4iICAgICAgICAgIydtYXJr ZG93bi10cy0tY29kZS1ibG9jay14cmVmLWZpbmQtZGVmaW5pdGlvbnMKKyAgIlRBQiIgICAgICAg ICAjJ2luZGVudC1mb3ItdGFiLWNvbW1hbmQKKyAgIlJFVCIgICAgICAgICAjJ21hcmtkb3duLXRz LS1jb2RlLWJsb2NrLW5ld2xpbmUKKyAgIkMtaiIgICAgICAgICAjJ21hcmtkb3duLXRzLS1jb2Rl LWJsb2NrLW5ld2xpbmUKKyAgIk0tUkVUIiAgICAgICAjJ21hcmtkb3duLXRzLS1jb2RlLWJsb2Nr LW5ld2xpbmUKKyAgIk0tcSIgICAgICAgICAjJ21hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWZpbGwt cGFyYWdyYXBoKQorCisoZGVmdmFyLWtleW1hcCBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlLW1h cAorICA6ZG9jICJLZXltYXAgZm9yIGBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlJy4KK1RoZXNl IG92ZXJyaWRlIGtleXMgaW4gYG1hcmtkb3duLXRzLW1vZGUtbWFwJyB0byBzdXBwb3J0IGV4ZWN1 dGluZyB0aGVpcgorY29tbWFuZHMgaW4gYSB0YWJsZSBjb250ZXh0LiIKKyAgOnBhcmVudCBtYXJr ZG93bi10cy1tb2RlLW1hcAorICA6bWVudSBuaWwKKyAgIjxyZXR1cm4+IiAgICAjJ21hcmtkb3du LXRzLXRhYmxlLW5leHQtcm93CisgICJTLTxyZXR1cm4+IiAgIydtYXJrZG93bi10cy10YWJsZS1w cmV2aW91cy1yb3cKKyAgIjx0YWI+IiAgICAgICAjJ21hcmtkb3duLXRzLXRhYmxlLW5leHQtY2Vs bAorICAiPGJhY2t0YWI+IiAgICMnbWFya2Rvd24tdHMtdGFibGUtcHJldmlvdXMtY2VsbAorICAi TS08dXA+IiAgICAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3ctdXAKKyAgIk0tPGRvd24+ IiAgICAjJ21hcmtkb3duLXRzLXRhYmxlLW1vdmUtcm93LWRvd24KKyAgIk0tPGxlZnQ+IiAgICAj J21hcmtkb3duLXRzLXRhYmxlLW1vdmUtY29sdW1uLWxlZnQKKyAgIk0tPHJpZ2h0PiIgICAjJ21h cmtkb3duLXRzLXRhYmxlLW1vdmUtY29sdW1uLXJpZ2h0CisgICJNLVMtPHVwPiIgICAgIydtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtcm93LWFib3ZlCisgICJNLVMtPGRvd24+IiAgIydtYXJrZG93 bi10cy10YWJsZS1kZWxldGUtcm93CisgICJNLVMtPHJpZ2h0PiIgIydtYXJrZG93bi10cy10YWJs ZS1pbnNlcnQtY29sdW1uLWxlZnQKKyAgIk0tUy08bGVmdD4iICAjJ21hcmtkb3duLXRzLXRhYmxl LWRlbGV0ZS1jb2x1bW4KKyAgIkMtYyBDLXQgYSIgICAjJ21hcmtkb3duLXRzLXRhYmxlLWFsaWdu LWNvbHVtbgorICAiQy1jIEMtYyIgICAgICMnbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tdGFibGUK KyAgIkMtYyBDLXQgdCIgICAjJ21hcmtkb3duLXRzLXRhYmxlLXRyYW5zcG9zZS10YWJsZSkKKwor KGVhc3ktbWVudS1kZWZpbmUgbWFya2Rvd24tdHMtbW9kZS1tZW51IG1hcmtkb3duLXRzLW1vZGUt bWFwCisgICJgbWFya2Rvd24tdHMtbW9kZScgbWVudS4iCisgICcoIk1hcmtkb3duIiA6dmlzaWJs ZSBtYXJrZG93bi10cy1tZW51LWJhci1zaG93CisgICAgIi0tIgorICAgIFsiQ3ljbGUgT3V0bGlu ZSBWaXNpYmlsaXR5IiAgbWFya2Rvd24tdHMtb3V0bGluZS1jeWNsZSAgICAgICAgICAgICAgOmhl bHAgIkN5Y2xlIGhlYWRpbmcgdmlzaWJpbGl0eSBmcm9tIHBvaW50Il0KKyAgICBbIlRvZ2dsZSBI aWRlIE1hcmt1cCIgICAgICAgIG1hcmtkb3duLXRzLXRvZ2dsZS1oaWRlLW1hcmt1cCAgICAgICAg IDpoZWxwICJUb2dnbGUgZGlzcGxheSBvZiBtYXJrdXAgY2hhcmFjdGVycyIgOnN0eWxlIHRvZ2ds ZSA6c2VsZWN0ZWQgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXBdCisgICAgWyJUb2dnbGUgSW5saW5l IEltYWdlcyIgICAgICBtYXJrZG93bi10cy10b2dnbGUtaW5saW5lLWltYWdlcyAgICAgICA6aGVs cCAiVG9nZ2xlIGRpc3BsYXkgb2YgaW5saW5lIGltYWdlcyBiZWxvdyBsaW5rcyIgOnN0eWxlIHRv Z2dsZSA6c2VsZWN0ZWQgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlc10KKyAgICAiLS0iCisgICAg WyJVcCIgICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lLXVwLWhlYWRpbmcgICAgICAgICAg ICAgICAgICAgICA6aGVscCAiTW92ZSB0byB0aGUgcGFyZW50IGhlYWRpbmciXQorICAgIFsiTmV4 dCIgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZS1uZXh0LWhlYWRpbmcgICAgICAgICAgICAg ICAgICAgOmhlbHAgIk1vdmUgdG8gdGhlIG5leHQgaGVhZGluZyJdCisgICAgWyJQcmV2aW91cyIg ICAgICAgICAgICAgICAgICBvdXRsaW5lLXByZXZpb3VzLWhlYWRpbmcgICAgICAgICAgICAgICA6 aGVscCAiTW92ZSB0byB0aGUgcHJldmlvdXMgaGVhZGluZyJdCisgICAgWyJOZXh0IFNhbWUgTGV2 ZWwiICAgICAgICAgICBvdXRsaW5lLWZvcndhcmQtc2FtZS1sZXZlbCAgICAgICAgICAgICA6aGVs cCAiTW92ZSB0byB0aGUgbmV4dCBoZWFkaW5nIGF0IHRoZSBzYW1lIGxldmVsIl0KKyAgICBbIlBy ZXZpb3VzIFNhbWUgTGV2ZWwiICAgICAgIG91dGxpbmUtYmFja3dhcmQtc2FtZS1sZXZlbCAgICAg ICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwcmV2aW91cyBoZWFkaW5nIGF0IHRoZSBzYW1lIGxl dmVsIl0KKyAgICAiLS0iCisgICAgWyJKdW1wIiAgICAgICAgICAgICAgICAgICAgICBpbWVudSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aGVscCAiSnVtcCB0byBhIGhlYWRpbmcg dmlhIGNvbXBsZXRpb24iXQorICAgICItLSIKKyAgICBbIk1vdmUgU3VidHJlZSBVcCIgICAgICAg ICAgIG1hcmtkb3duLXRzLW1vdmUtc3VidHJlZS11cCAgICAgICAgICAgIDpoZWxwICJNb3ZlIHRo ZSBjdXJyZW50IHNlY3Rpb24gb3IgbGlzdCBpdGVtIHVwIl0KKyAgICBbIk1vdmUgU3VidHJlZSBE b3duIiAgICAgICAgIG1hcmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duICAgICAgICAgIDpoZWxw ICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rpb24gb3IgbGlzdCBpdGVtIGRvd24iXQorICAgIFsiUHJv bW90ZSIgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtcHJvbW90ZSAgICAgICAgICAgICAg ICAgICAgOmhlbHAgIlByb21vdGUgaGVhZGluZyBvciBsaXN0IGl0ZW0iXQorICAgIFsiRGVtb3Rl IiAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtZGVtb3RlICAgICAgICAgICAgICAgICAg ICAgOmhlbHAgIkRlbW90ZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSJdCisgICAgIi0tIgorICAgIFsi RW1waGFzaXMuLi4iICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtZW1waGFzaXplICAgICAgICAg ICAgICAgICAgOmhlbHAgIkFkZCBvciBjaGFuZ2UgZW1waGFzaXMgb24gcmVnaW9uIl0KKyAgICBb IkFkZCBCbG9jayBTdHJ1Y3R1cmUiICAgICAgIG1hcmtkb3duLXRzLWluc2VydC1zdHJ1Y3R1cmUg ICAgICAgICAgIDpoZWxwICJJbnNlcnQgYSBjb2RlIGJsb2NrLCBxdW90ZSwgb3Igb3RoZXIgc3Ry dWN0dXJlIl0KKyAgICAiLS0iCisgICAgWyJUb2dnbGUgQ2hlY2tib3giICAgICAgICAgICBtYXJr ZG93bi10cy10b2dnbGUtY2hlY2tib3ggICAgICAgICAgICA6aGVscCAiVG9nZ2xlIHRhc2sgbGlz dCBjaGVja2JveCBhdCBwb2ludCJdCisgICAgWyJOZXcgTGlzdCBJdGVtIiAgICAgICAgICAgICBt YXJrZG93bi10cy1pbnNlcnQtbGlzdC1pdGVtICAgICAgICAgICA6aGVscCAiSW5zZXJ0IGEgbmV3 IGxpc3QgaXRlbSBhZnRlciB0aGUgY3VycmVudCBvbmUiXQorICAgIFsiUmVudW1iZXIgTGlzdCIg ICAgICAgICAgICAgbWFya2Rvd24tdHMtcmVudW1iZXItbGlzdCAgICAgICAgICAgICAgOmhlbHAg IlJlbnVtYmVyIHRoZSBvcmRlcmVkIGxpc3QgYXQgcG9pbnQiXQorICAgICItLSIKKyAgICAoIlRh YmxlIgorICAgICBbIkluc2VydCB0YWJsZSIgICAgICAgICAgICAgbWFya2Rvd24tdHMtdGFibGUt aW5zZXJ0LXRhYmxlICAgICAgICAgOmhlbHAgIkluc2VydCBhbiBlbXB0eSB0YWJsZSBhdCBwb2lu dCJdCisgICAgIFsiRGVsZXRlIHRhYmxlIiAgICAgICAgICAgICBtYXJrZG93bi10cy10YWJsZS1k ZWxldGUtdGFibGUgICAgICAgICA6aGVscCAiRGVsZXRlIHRoZSB0YWJsZSBhdCBwb2ludCJdCisg ICAgICItLSIKKyAgICAgWyJOZXh0IGNlbGwiICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLXRh YmxlLW5leHQtY2VsbCAgICAgICAgICAgIDpoZWxwICJNb3ZlIHBvaW50IHRvIHRoZSBuZXh0IGNl bGwiXQorICAgICBbIlByZXZpb3VzIGNlbGwiICAgICAgICAgICAgbWFya2Rvd24tdHMtdGFibGUt cHJldmlvdXMtY2VsbCAgICAgICAgOmhlbHAgIk1vdmUgcG9pbnQgdG8gdGhlIHByZXZpb3VzIGNl bGwiXQorICAgICAiLS0iCisgICAgIFsiTmV4dCByb3ciICAgICAgICAgICAgICAgICBtYXJrZG93 bi10cy10YWJsZS1uZXh0LXJvdyAgICAgICAgICAgICA6aGVscCAiTW92ZSBwb2ludCB0byB0aGUg bmV4dCByb3ciXQorICAgICBbIlByZXZpb3VzIHJvdyIgICAgICAgICAgICAgbWFya2Rvd24tdHMt dGFibGUtcHJldmlvdXMtcm93ICAgICAgICAgOmhlbHAgIk1vdmUgcG9pbnQgdG8gdGhlIHByZXZp b3VzIHJvdyJdCisgICAgIFsiSW5zZXJ0IHJvdyBiZWxvdyIgICAgICAgICBtYXJrZG93bi10cy10 YWJsZS1pbnNlcnQtcm93LWJlbG93ICAgICA6aGVscCAiSW5zZXJ0IGFuIGVtcHR5IHJvdyBiZWxv dyBwb2ludCJdCisgICAgIFsiSW5zZXJ0IHJvdyBhYm92ZSIgICAgICAgICBtYXJrZG93bi10cy10 YWJsZS1pbnNlcnQtcm93LWFib3ZlICAgICA6aGVscCAiSW5zZXJ0IGFuIGVtcHR5IHJvdyBhYm92 ZSBwb2ludCJdCisgICAgIFsiQ2xvbmUgcm93IGJlbG93IiAgICAgICAgICBtYXJrZG93bi10cy10 YWJsZS1jbG9uZS1yb3ctYmVsb3cgICAgICA6aGVscCAiQ2xvbmUgdGhlIGN1cnJlbnQgcm93IGJl bG93IGl0Il0KKyAgICAgWyJDbG9uZSByb3cgYWJvdmUiICAgICAgICAgIG1hcmtkb3duLXRzLXRh YmxlLWNsb25lLXJvdy1hYm92ZSAgICAgIDpoZWxwICJDbG9uZSB0aGUgY3VycmVudCByb3cgYWJv dmUgaXQiXQorICAgICBbIk1vdmUgcm93IHVwIiAgICAgICAgICAgICAgbWFya2Rvd24tdHMtdGFi bGUtbW92ZS1yb3ctdXAgICAgICAgICAgOmhlbHAgIk1vdmUgdGhlIHJvdyBhdCBwb2ludCB1cCJd CisgICAgIFsiTW92ZSByb3cgZG93biIgICAgICAgICAgICBtYXJrZG93bi10cy10YWJsZS1tb3Zl LXJvdy1kb3duICAgICAgICA6aGVscCAiTW92ZSB0aGUgcm93IGF0IHBvaW50IGRvd24iXQorICAg ICBbIkRlbGV0ZSByb3ciICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLXJv dyAgICAgICAgICAgOmhlbHAgIkRlbGV0ZSB0aGUgcm93IGF0IHBvaW50Il0KKyAgICAgIi0tIgor ICAgICBbIkluc2VydCBjb2x1bW4gbGVmdCIgICAgICAgbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0 LWNvbHVtbi1sZWZ0ICAgOmhlbHAgIkluc2VydCBhbiBlbXB0eSBjb2x1bW4gdG8gdGhlIGxlZnQg b2YgcG9pbnQiXQorICAgICBbIkluc2VydCBjb2x1bW4gcmlnaHQiICAgICAgbWFya2Rvd24tdHMt dGFibGUtaW5zZXJ0LWNvbHVtbi1yaWdodCAgOmhlbHAgIkluc2VydCBhbiBlbXB0eSBjb2x1bW4g dG8gdGhlIHJpZ2h0IG9mIHBvaW50Il0KKyAgICAgWyJDbG9uZSBjb2x1bW4gbGVmdCIgICAgICAg IG1hcmtkb3duLXRzLXRhYmxlLWNsb25lLWNvbHVtbi1sZWZ0ICAgIDpoZWxwICJJbnNlcnQgYW4g ZW1wdHkgY29sdW1uIHRvIHRoZSBsZWZ0IG9mIHBvaW50Il0KKyAgICAgWyJDbG9uZSBjb2x1bW4g cmlnaHQiICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLWNsb25lLWNvbHVtbi1yaWdodCAgIDpoZWxw ICJJbnNlcnQgYW4gZW1wdHkgY29sdW1uIHRvIHRoZSByaWdodCBvZiBwb2ludCJdCisgICAgIFsi TW92ZSBjb2x1bW4gbGVmdCIgICAgICAgICBtYXJrZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbi1s ZWZ0ICAgICA6aGVscCAiTW92ZSB0aGUgY3VycmVudCBjb2x1bW4gdG8gaXRzIGxlZnQiXQorICAg ICBbIk1vdmUgY29sdW1uIHJpZ2h0IiAgICAgICAgbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1 bW4tcmlnaHQgICAgOmhlbHAgIk1vdmUgdGhlIGN1cnJlbnQgY29sdW1uIHRvIGl0cyByaWdodCJd CisgICAgIFsiQWxpZ24gY29sdW1uLi4uIiAgICAgICAgICBtYXJrZG93bi10cy10YWJsZS1hbGln bi1jb2x1bW4gICAgICAgICA6aGVscCAiQWxpZ24gY29sdW1uIGF0IHBvaW50IHRvIHRoZSBsZWZ0 LCBjZW50ZXIsIG9yIHJpZ2h0Il0KKyAgICAgWyJEZWxldGUgY29sdW1uIiAgICAgICAgICAgIG1h cmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1jb2x1bW4gICAgICAgIDpoZWxwICJEZWxldGUgdGhlIGNv bHVtbiBhdCBwb2ludCJdCisgICAgICItLSIKKyAgICAgWyJBbGlnbiB0YWJsZSBjb2x1bW5zIiAg ICAgIG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLXRhYmxlICAgICAgICAgIDpoZWxwICJBbGlnbiB0 aGUgdGFibGUgYXQgcG9pbnQgaW4gYW4gZWFzeS10by1lZGl0IGZvcm1hdCJdCisgICAgIFsiVHJh bnNwb3NlIHRhYmxlIiAgICAgICAgICBtYXJrZG93bi10cy10YWJsZS10cmFuc3Bvc2UtdGFibGUg ICAgICA6aGVscCAiVHJhbnNwb3NlIHRoZSB0YWJsZSBhdCBwb2ludCBzd2FwcGluZyBpdHMgcm93 cyBhbmQgY29sdW1ucyJdCisgICAgICItLSIKKyAgICAgWyJDb252ZXJ0IENTViB0byB0YWJsZSIg ICAgIG1hcmtkb3duLXRzLXRhYmxlLWNvbnZlcnQtY3N2LXJlZ2lvbiAgIDpoZWxwICJDb252ZXJ0 IGEgcmFuZ2Ugb2YgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyB0byBhIG5ldyB0YWJsZSBhdCBwb2lu dCJdCisgICAgIFsiQ29udmVydCBUU1YgdG8gdGFibGUiICAgICBtYXJrZG93bi10cy10YWJsZS1j b252ZXJ0LXRzdi1yZWdpb24gICA6aGVscCAiQ29udmVydCBhIHJhbmdlIG9mIHRhYi1zZXBhcmF0 ZWQgdmFsdWVzIHRvIGEgbmV3IHRhYmxlIGF0IHBvaW50Il0KKyAgICAgWyJFeHBvcnQgdGFibGUg dG8gQ1NWIiAgICAgIG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZS1jc3YgICAgIDpoZWxw ICJFeHBvcnQgdGhlIHRhYmxlIGF0IHBvaW50IHRvIGEgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyBi dWZmZXIiXQorICAgICBbIkV4cG9ydCB0YWJsZSB0byBUU1YiICAgICAgbWFya2Rvd24tdHMtdGFi bGUtZXhwb3J0LXRhYmxlLXRzdiAgICAgOmhlbHAgIkV4cG9ydCB0aGUgdGFibGUgYXQgcG9pbnQg dG8gYSB0YWItc2VwYXJhdGVkIHZhbHVlcyBidWZmZXIiXSkpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtLXNldC11cCAoKQorICAiU2V0IHVwIHRoZSBidWZmZXIgZm9yIGBtYXJrZG93bi10cy1tb2Rl Jy4KK0lmIGBtYXJrZG93bi10cy0tc2V0LXVwLWlubGluZScgaXMgbm9uLW5pbCwgdXNlIGEgbGln aHR3ZWlnaHQgc2V0IHVwIGZvcgorZW1iZWRkZWQgaW5saW5lIGBtYXJrZG93bi10cy1tb2RlJyBi dWZmZXJzLgogCi07OzsgTWFqb3IgbW9kZQorTk9URTogQ2FsbCB0aGlzIGZ1bmN0aW9uIG9ubHkg d2hlbiB0aGUgdHJlZXNpdCBgbWFya2Rvd24nIGFuZAorYG1hcmtkb3duLWlubGluZScgcGFyc2Vy cyBhcmUgYXZhaWxhYmxlLiIKIAotKGRlZnVuIG1hcmtkb3duLXRzLXNldHVwICgpCi0gICJTZXR1 cCB0cmVlc2l0IGZvciBgbWFya2Rvd24tdHMtbW9kZScuIgotICAobWFrZS1sb2NhbC12YXJpYWJs ZSAnbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApCisgIDs7IFNldCB0aGVzZSB1cCBmb3IgYm90aCBt YXN0ZXIgYW5kIGlubGluZSBmb3IgY29kZS1ibG9jayBidWZmZXJzLgorICAoc2V0cS1sb2NhbCBj b21tZW50LXN0YXJ0ICI8IS0tICIKKyAgICAgICAgICAgICAgY29tbWVudC1lbmQgIiAtLT4iCisg ICAgICAgICAgICAgIGNvbW1lbnQtc3RhcnQtc2tpcCAiPCEtLVsgXHRdKiIKKyAgICAgICAgICAg ICAgY29tbWVudC1lbmQtc2tpcCAiWyBcdF0qLS0+IgorICAgICAgICAgICAgICBjb21tZW50LXVz ZS1zeW50YXggbmlsKQorCisgIChzZXRxLWxvY2FsIGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uCisg ICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLWZpbGwtcGFyYWdyYXBoCisgICAgICAgICAgICAg IGZpbGwtZm9yd2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24KKyAgICAgICAgICAgICAgIydtYXJrZG93 bi10cy0tZmlsbC1mb3J3YXJkLXBhcmFncmFwaCkKKworICA7OyBgYWRhcHRpdmUtZmlsbC1mdW5j dGlvbicgdGFrZXMgcHJlY2VkZW5jZSBvdmVyCisgIDs7IGBhZGFwdGl2ZS1maWxsLXJlZ2V4cCc7 IHRoZSBkZWZhdWx0IHJlZ2V4cCBpcyBmaW5lIGFzIGEKKyAgOzsgZmFsbGJhY2sgZm9yIHBsYWlu IChub24tbGlzdCkgcGFyYWdyYXBocy4KKyAgKHNldHEtbG9jYWwgYWRhcHRpdmUtZmlsbC1mdW5j dGlvbiAjJ21hcmtkb3duLXRzLS1hZGFwdGl2ZS1maWxsKQorCisgIDs7IENyZWF0ZSBhbmQgY29u ZmlndXJlIHRoZSBwYXJzZXJzLgorICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdtYXJrZG93bi1p bmxpbmUpCisgIChzZXRxIHRyZWVzaXQtcHJpbWFyeS1wYXJzZXIKKyAgICAgICAgKHRyZWVzaXQt cGFyc2VyLWNyZWF0ZSAnbWFya2Rvd24pKQorCisgIChzZXRxLWxvY2FsIGZvbnQtbG9jay1kZWZh dWx0cyBuaWwpCiAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzIG1hcmtk b3duLXRzLS10cmVlc2l0LXNldHRpbmdzKQotICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNl dHRpbmdzIChtYXJrZG93bi10cy0tcmFuZ2Utc2V0dGluZ3MpKQotICAoYWRkLXRvLWxpc3QgJ2Zv bnQtbG9jay1leHRyYS1tYW5hZ2VkLXByb3BzICdpbnZpc2libGUpCi0KLSAgKHdoZW4gKHRyZWVz aXQtcmVhZHktcCAnaHRtbCB0KQotICAgICh0cmVlc2l0LXBhcnNlci1jcmVhdGUgJ2h0bWwpCi0g ICAgKHJlcXVpcmUgJ2h0bWwtdHMtbW9kZSkKLSAgICAoZGVmdmFyIGh0bWwtdHMtbW9kZS0tZm9u dC1sb2NrLXNldHRpbmdzKQotICAgIChkZWZ2YXIgaHRtbC10cy1tb2RlLS10cmVlc2l0LWZvbnQt bG9jay1mZWF0dXJlLWxpc3QpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stc2V0 dGluZ3MKLSAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdz Ci0gICAgICAgICAgICAgICAgICAgICAgICBodG1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5n cykpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAg ICAgICAgICAgICAgKHRyZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAg ICAgICAgICAgICB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAg ICAgaHRtbC10cy1tb2RlLS10cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpKQotICAgIChz ZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAoYXBwZW5k IHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0 LXJhbmdlLXJ1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVkICdodG1sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duCi0gICAgICAgICAgICAgICAgICAg ICAgICAgOmxvY2FsIHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAnKChodG1sX2Jsb2NrKSBA aHRtbCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJlZCAnaHRtbAotICAgICAgICAg ICAgICAgICAgICAgICAgIDpob3N0ICdtYXJrZG93bi1pbmxpbmUKLSAgICAgICAgICAgICAgICAg ICAgICAgICAnKChodG1sX3RhZykgQGh0bWwpKSkpKQotCi0gICh3aGVuICh0cmVlc2l0LXJlYWR5 LXAgJ3lhbWwgdCkKLSAgICAocmVxdWlyZSAneWFtbC10cy1tb2RlKQotICAgIChkZWZ2YXIgeWFt bC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciB5YW1sLXRzLW1vZGUt LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxv Y2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNl dHRpbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1z ZXR0aW5ncykpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0 Ci0gICAgICAgICAgICAgICAgKHRyZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAot ICAgICAgICAgICAgICAgICB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAg ICAgICAgICAgeWFtbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KSkKLSAgICAoc2V0 cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgKGFwcGVuZCB0 cmVlc2l0LXJhbmdlLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1y YW5nZS1ydWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJlZCAneWFtbAotICAgICAg ICAgICAgICAgICAgICAgICAgIDpob3N0ICdtYXJrZG93bgotICAgICAgICAgICAgICAgICAgICAg ICAgIDpsb2NhbCB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJygobWludXNfbWV0YWRhdGEp IEB5YW1sKSkpKSkKLQotICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICd0b21sIHQpCi0gICAgKHJl cXVpcmUgJ3RvbWwtdHMtbW9kZSkKLSAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2Nr LXNldHRpbmdzKQotICAgIChkZWZ2YXIgdG9tbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1s aXN0KQotICAgIChzZXRxIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAgKGFw cGVuZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAgdG9tbC10 cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpKQotICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9u dC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAgICAgICh0cmVlc2l0LW1lcmdlLWZvbnQt bG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAgdHJlZXNpdC1mb250LWxvY2stZmVh dHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1 cmUtbGlzdCkpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAg ICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAgICAgICAg ICAgICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICA6 ZW1iZWQgJ3RvbWwKLSAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KLSAg ICAgICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAotICAgICAgICAgICAgICAgICAgICAgICAg ICcoKHBsdXNfbWV0YWRhdGEpIEB0b21sKSkpKSkKKyAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250 LWxvY2stZmVhdHVyZS1saXN0ICcoKGRlbGltaXRlciBoZWFkaW5nKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYWdyYXBoKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYWdyYXBoLWlubGluZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltYWdlLXByZXZp ZXcgZXJyb3IpKSkKKworICAoY29uZCAobWFya2Rvd24tdHMtLXNldC11cC1pbmxpbmUKKyAgICAg ICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAg ICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVk ICdtYXJrZG93bi1pbmxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3du CisgICAgICAgICAgICAgICAgICAgICAgICcoKGlubGluZSkgQG1hcmtkb3duLWlubGluZSkpKSkK KyAgICAgICAgKHQKKyAgICAgICAgIDs7IFJhbmdlIHNldHRpbmdzIGRpZmZlciBpbiB0aGUgbWFz dGVyIGJ1ZmZlciB2cy4gaW5saW5lIGFib3ZlLgorICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNp dC1yYW5nZS1zZXR0aW5ncyAobWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdzKSkKKworICAgICAg ICAgOzsgQ29uZmlndXJlIGZlYXR1cmVzIG5lZWRlZCBvbmx5IGluIHRoZSBtYXN0ZXIgYnVmZmVy LgorCisgICAgICAgICA7OyBJbWVudSBzdXBwb3J0LgorICAgICAgICAgKHNldHEtbG9jYWwgdHJl ZXNpdC1zaW1wbGUtaW1lbnUtc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgIGAoKCJIZWFk aW5ncyIgLCMnbWFya2Rvd24tdHMtLWltZW51LWhlYWRpbmctbm9kZS1wCisgICAgICAgICAgICAg ICAgICAgICAgICBuaWwgLCMnbWFya2Rvd24tdHMtLWltZW51LWhlYWRpbmctbmFtZS1mdW5jdGlv bikKKyAgICAgICAgICAgICAgICAgICAgICAgKCJDb2RlIEJsb2NrcyIgLCMnbWFya2Rvd24tdHMt LWltZW51LWNvZGUtYmxvY2stbm9kZS1wCisgICAgICAgICAgICAgICAgICAgICAgICBuaWwgLCMn bWFya2Rvd24tdHMtLWltZW51LWNvZGUtYmxvY2stbmFtZS1mdW5jdGlvbikpKQorCisgICAgICAg ICA7OyBPdXRsaW5lIHN1cHBvcnQuCisgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LW91dGxp bmUtcHJlZGljYXRlICMnbWFya2Rvd24tdHMtLW91dGxpbmUtcHJlZGljYXRlKQorICAgICAgICAg KHNldHEtbG9jYWwgb3V0bGluZS1taW5vci1tb2RlLWN5Y2xlIHQpCisgICAgICAgICAob3V0bGlu ZS1taW5vci1tb2RlIDEpCisgICAgICAgICAobWFya2Rvd24tdHMtLWFwcGx5LWVsbGlwc2lzKQor CisgICAgICAgICA7OyBOT1RFOiBgb3V0bGluZS12aWV3LWNoYW5nZS1ob29rJyB3YXMgb2Jzb2xl dGVkIGluIDI5LjEgKGNvbW1pdAorICAgICAgICAgOzsgNTNiMWU2Zjk2Y2IpIG9uIHRoZSBncm91 bmRzIHRoYXQgb25seSBsYXp5LWxvY2sgdXNlZCBpdCwgYnV0IG5vCisgICAgICAgICA7OyByZXBs YWNlbWVudCB3YXMgcHJvdmlkZWQgYW5kIG91dGxpbmUuZWwgaXRzZWxmIHN0aWxsIHJ1bnMgdGhl IGhvb2sKKyAgICAgICAgIDs7IGluIDEwKyBwbGFjZXMuCisgICAgICAgICAod2l0aC1zdXBwcmVz c2VkLXdhcm5pbmdzICgob2Jzb2xldGUgb3V0bGluZS12aWV3LWNoYW5nZS1ob29rKSkKKyAgICAg ICAgICAgKGFkZC1ob29rICdvdXRsaW5lLXZpZXctY2hhbmdlLWhvb2sKKyAgICAgICAgICAgICAg ICAgICAgICMnbWFya2Rvd24tdHMtLW91dGxpbmUtdmlldy1jaGFuZ2UgbmlsIHQpKQorCisgICAg ICAgICAocHJvZ24KKyAgICAgICAgICAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ21hcmtkb3duLXRz LWhpZGUtbWFya3VwKQorICAgICAgICAgICAobWFrZS1sb2NhbC12YXJpYWJsZSAnZm9udC1sb2Nr LWV4dHJhLW1hbmFnZWQtcHJvcHMpCisgICAgICAgICAgIChkb2xpc3QgKHByb3AgJyhpbnZpc2li bGUgZGlzcGxheSBidXR0b24gY2F0ZWdvcnkgYWN0aW9uIGhlbHAtZWNobykpCisgICAgICAgICAg ICAgKGFkZC10by1saXN0ICdmb250LWxvY2stZXh0cmEtbWFuYWdlZC1wcm9wcyBwcm9wKSkpCisK KyAgICAgICAgICh3aGVuICh0cmVlc2l0LXJlYWR5LXAgJ2h0bWwgdCkKKyAgICAgICAgICAgKHRy ZWVzaXQtcGFyc2VyLWNyZWF0ZSAnaHRtbCkKKyAgICAgICAgICAgKHJlcXVpcmUgJ2h0bWwtdHMt bW9kZSkKKyAgICAgICAgICAgKGRlZnZhciBodG1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5n cykKKyAgICAgICAgICAgKGRlZnZhciBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZl YXR1cmUtbGlzdCkKKyAgICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stc2V0 dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1z ZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwtdHMtbW9kZS0tZm9u dC1sb2NrLXNldHRpbmdzKSkKKyAgICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxv Y2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW1lcmdlLWZv bnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9u dC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC10cy1tb2Rl LS10cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpKQorICAgICAgICAgICAoc2V0cS1sb2Nh bCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQg dHJlZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0 cmVlc2l0LXJhbmdlLXJ1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJl ZCAnaHRtbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJygoaHRtbF9ibG9jaykgQGh0bWwpCisKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOmVtYmVkICdodG1sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpob3N0ICdtYXJrZG93bi1pbmxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygoaHRtbF90YWcpIEBodG1sKSkpKSkKKworICAgICAgICAgKHdoZW4gKHRyZWVzaXQt cmVhZHktcCAneWFtbCB0KQorICAgICAgICAgICAocmVxdWlyZSAneWFtbC10cy1tb2RlKQorICAg ICAgICAgICAoZGVmdmFyIHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKQorICAgICAg ICAgICAoZGVmdmFyIHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKKyAgICAg ICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAgICAgICAg ICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKSkK KyAgICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Cisg ICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW1lcmdlLWZvbnQtbG9jay1mZWF0dXJlLWxp c3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlz dAorICAgICAgICAgICAgICAgICAgICAgICAgeWFtbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVy ZS1saXN0KSkKKyAgICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwor ICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ3lhbWwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpsb2NhbCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKG1pbnVz X21ldGFkYXRhKSBAeWFtbCkpKSkpCisKKyAgICAgICAgICh3aGVuICh0cmVlc2l0LXJlYWR5LXAg J3RvbWwgdCkKKyAgICAgICAgICAgKHJlcXVpcmUgJ3RvbWwtdHMtbW9kZSkKKyAgICAgICAgICAg KGRlZnZhciB0b21sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykKKyAgICAgICAgICAgKGRl ZnZhciB0b21sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpCisgICAgICAgICAgIChz ZXRxIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgIChhcHBlbmQg dHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICB0b21s LXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykpCisgICAgICAgICAgIChzZXRxLWxvY2FsIHRy ZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAodHJl ZXNpdC1tZXJnZS1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAg ICB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAg IHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkpCisgICAgICAgICAgIChzZXRx LWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgKGFw cGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OmVtYmVkICd0b21sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpob3N0ICdtYXJr ZG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnKChwbHVzX21ldGFkYXRhKSBAdG9tbCkpKSkpCisKKyAg ICAgICAgIDs7IFN1cHBvcnQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBpbiBhIGNvZGUtYmxvY2sg Y29udGV4dC4KKyAgICAgICAgICh3aGVuIG1hcmtkb3duLXRzLWVuYWJsZS1jb2RlLWJsb2NrLWNv bnRleHQtbW9kZQorICAgICAgICAgICAobWFya2Rvd24tdHMtY29kZS1ibG9jay1jb250ZXh0LW1v ZGUpKQorCisgICAgICAgICA7OyBTdXBwb3J0IGZvciB0YWJsZSBtb2RlLgorICAgICAgICAgKHdo ZW4gbWFya2Rvd24tdHMtZW5hYmxlLXRhYmxlLW1vZGUKKyAgICAgICAgICAgKG1hcmtkb3duLXRz LXRhYmxlLW1vZGUpKSkpCiAKICAgKHRyZWVzaXQtbWFqb3ItbW9kZS1zZXR1cCkKLSAgKG1hcmtk b3duLXRzLS1zZXQtaGlkZS1tYXJrdXAgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApKQorCisgIDs7 IERvIG5vdCBlbmFibGUgYGppdC1sb2NrLW1vZGUnIGluIGluZGlyZWN0IGJ1ZmZlcnMgc3VjaCBh cyB0aGUgb25lCisgIDs7IHdlIHVzZSBmb3IgY29kZSBibG9jayBjb21tYW5kcy4KKyAgKHVubGVz cyAoYnVmZmVyLWJhc2UtYnVmZmVyKQorICAgIChqaXQtbG9jay1yZWdpc3RlciAjJ21hcmtkb3du LXRzLS1mb250aWZ5LWJhcmUtdXJpKSkKKworICAodW5sZXNzIG1hcmtkb3duLXRzLS1zZXQtdXAt aW5saW5lCisgICAgOzsgT3JkZXIgbWF0dGVyczogYG1hcmtkb3duLXRzLS1zZXQtaGlkZS1tYXJr dXAnIGNhbGxzIGBmb250LWxvY2stZmx1c2gnCisgICAgOzsgKG9ubHkgbWVhbmluZ2Z1bCBvbmNl IGB0cmVlc2l0LW1ham9yLW1vZGUtc2V0dXAnIGhhcyB3aXJlZCB1cAorICAgIDs7IGZvbnQtbG9j ayksIGFuZCBgbWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nJyBjYWxscyBvdXRsaW5lCisgICAg OzsgY29tbWFuZHMgdGhhdCByZWx5IG9uIGBvdXRsaW5lLXNlYXJjaC1mdW5jdGlvbicsIHdoaWNo CisgICAgOzsgYHRyZWVzaXQtbWFqb3ItbW9kZS1zZXR1cCcgaW5zdGFsbHMgZnJvbSBgdHJlZXNp dC1vdXRsaW5lLXByZWRpY2F0ZScuCisgICAgKG1hcmtkb3duLXRzLS1zZXQtaGlkZS1tYXJrdXAg bWFya2Rvd24tdHMtaGlkZS1tYXJrdXApCisgICAgOzsgUmVzcGVjdCB0aGUgdXNlcidzIGRlZmF1 bHQgb3V0bGluZSBmb2xkaW5nLgorICAgIChwY2FzZSBtYXJrZG93bi10cy1kZWZhdWx0LWZvbGRp bmcKKyAgICAgICgnc2hvdy1hbGwgKGlnbm9yZSkpCisgICAgICAoJ2ZvbGQtYWxsIChvdXRsaW5l LWhpZGUtc3VibGV2ZWxzIDEpKQorICAgICAgKCdmb2xkLWhlYWRpbmdzIChvdXRsaW5lLXNob3ct YWxsKQorICAgICAgICAgICAgICAgICAgICAgIChvdXRsaW5lLWhpZGUtcmVnaW9uLWJvZHkgKHBv aW50LW1pbikgKHBvaW50LW1heCkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtbW9kZS1pbnN0 YWxsLXBhcnNlcnMgKGFyZykKKyAgIkluc3RhbGwgYG1hcmtkb3duLXRzLW1vZGUnIHRyZWUtc2l0 dGVyIGxhbmd1YWdlIHBhcnNlcnMuCitJZiBuZWVkZWQsIGluc3RhbGwgdGhlIHJlcXVpcmVkIHBh cnNlcnMgZm9yIGBtYXJrZG93bicgYW5kIGBtYXJrZG93bi1pbmxpbmUnLgorV2l0aCBhIHByZWZp eCBhcmd1bWVudCwgQVJHLCBpZiBuZWVkZWQsIGluc3RhbGwgcGFyc2VycyBmb3IgYGh0bWwnLAor YHlhbWwnLCBhbmQgYHRvbWwnLiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKHVubGVzcyAodHJl ZXNpdC1sYW5ndWFnZS1hdmFpbGFibGUtcCAnbWFya2Rvd24pCisgICAgKHRyZWVzaXQtaW5zdGFs bC1sYW5ndWFnZS1ncmFtbWFyICdtYXJrZG93bikpCisgICh1bmxlc3MgKHRyZWVzaXQtbGFuZ3Vh Z2UtYXZhaWxhYmxlLXAgJ21hcmtkb3duLWlubGluZSkKKyAgICAodHJlZXNpdC1pbnN0YWxsLWxh bmd1YWdlLWdyYW1tYXIgJ21hcmtkb3duLWlubGluZSkpCisgICh3aGVuIGFyZworICAgICh1bmxl c3MgKHRyZWVzaXQtbGFuZ3VhZ2UtYXZhaWxhYmxlLXAgJ2h0bWwpCisgICAgICAocmVxdWlyZSAn aHRtbC10cy1tb2RlKQorICAgICAgKHRyZWVzaXQtaW5zdGFsbC1sYW5ndWFnZS1ncmFtbWFyICdo dG1sKSkKKyAgICAodW5sZXNzICh0cmVlc2l0LWxhbmd1YWdlLWF2YWlsYWJsZS1wICd5YW1sKQor ICAgICAgKHJlcXVpcmUgJ3lhbWwtdHMtbW9kZSkKKyAgICAgICh0cmVlc2l0LWluc3RhbGwtbGFu Z3VhZ2UtZ3JhbW1hciAneWFtbCkpCisgICAgKHVubGVzcyAodHJlZXNpdC1sYW5ndWFnZS1hdmFp bGFibGUtcCAndG9tbCkKKyAgICAgIChyZXF1aXJlICd0b21sLXRzLW1vZGUpCisgICAgICAodHJl ZXNpdC1pbnN0YWxsLWxhbmd1YWdlLWdyYW1tYXIgJ3RvbWwpKSkpCiAKIDs7OyMjI2F1dG9sb2Fk CiAoZGVmaW5lLWRlcml2ZWQtbW9kZSBtYXJrZG93bi10cy1tb2RlIHRleHQtbW9kZSAiTWFya2Rv d24iCi0gICJNYWpvciBtb2RlIGZvciBlZGl0aW5nIE1hcmtkb3duIHVzaW5nIHRyZWUtc2l0dGVy IGdyYW1tYXIuIgorICAiTWFqb3IgbW9kZSBmb3IgZWRpdGluZyBNYXJrZG93biB1c2luZyB0cmVl LXNpdHRlciBncmFtbWFyLgorTk9URTogU2VlIGBtYXJrZG93bi10cy0tc2V0LXVwLWlubGluZScu IgorICAodHJlZXNpdC1lbnN1cmUtaW5zdGFsbGVkICdtYXJrZG93bikKKyAgKHRyZWVzaXQtZW5z dXJlLWluc3RhbGxlZCAnbWFya2Rvd24taW5saW5lKQorICA7OyBCeXBhc3MgYHRyZWVzaXQtbWF4 LWJ1ZmZlci1zaXplJyBzbyB0aGUgbW9kZSBhY3RpdmF0ZXMgaW4gbGFyZ2UKKyAgOzsgYnVmZmVy cyBpbnN0ZWFkIG9mIHJlZnVzaW5nLiAgYHRyZWVzaXQtcmVhZHktcCcgd291bGQgb3RoZXJ3aXNl CisgIDs7IHJlZnVzZSBhbmQgZW1pdCBhIG1pc2xlYWRpbmcgInBhcnNlcnMgbm90IGZvdW5kIiBt ZXNzYWdlIGV2ZW4gd2hlbgorICA7OyB0aGV5IGFyZSBpbnN0YWxsZWQuICBSZXZpc2l0IGlmIGB0 cmVlc2l0LXBhcnNlci1jcmVhdGUnIGdhaW5zIGl0cworICA7OyBvd24gYnVmZmVyLXNpemUgZ3Vh cmQgKHNlZSBidWcjODA5MDkpLgorICAobGV0ICgodHJlZXNpdC1tYXgtYnVmZmVyLXNpemUgbW9z dC1wb3NpdGl2ZS1maXhudW0pKQorICAgIChpZiAodHJlZXNpdC1yZWFkeS1wICcobWFya2Rvd24g bWFya2Rvd24taW5saW5lKSB0KQorICAgICAgICAobWFya2Rvd24tdHMtLXNldC11cCkKKyAgICAg ICh3YXJuICJtYXJrZG93bi10cy1tb2RlIGNhbm5vdCBiZSBzZXQgdXA7IHVzaW5nIGZ1bmRhbWVu dGFsLW1vZGUuCitUaGUgdHJlZS1zaXR0ZXIgcGFyc2VycyBgbWFya2Rvd24nIGFuZCBgbWFya2Rv d24taW5saW5lJyB3ZXJlIG5vdCBmb3VuZC4KK1VzZSB0aGUgY29tbWFuZCBgbWFya2Rvd24tdHMt bW9kZS1pbnN0YWxsLXBhcnNlcnMnIHRvIGluc3RhbGwgdGhlbS4KK1dpdGggYSBwcmVmaXggYXJn dW1lbnQsIGl0IGNhbiBhbHNvIGluc3RhbGwgb3B0aW9uYWwgcGFyc2Vycy4iKQorICAgICAgKGZ1 bmRhbWVudGFsLW1vZGUpKSkpCiAKLSAgKHNldHEtbG9jYWwgY29tbWVudC1zdGFydCAiPCEtLSAi KQotICAoc2V0cS1sb2NhbCBjb21tZW50LWVuZCAiIC0tPiIpCisoZGVyaXZlZC1tb2RlLWFkZC1w YXJlbnRzICdtYXJrZG93bi10cy1tb2RlICcobWFya2Rvd24tbW9kZSkpCiAKLSAgKHNldHEtbG9j YWwgZm9udC1sb2NrLWRlZmF1bHRzIG5pbAotCSAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1 cmUtbGlzdCAnKChkZWxpbWl0ZXIgaGVhZGluZykKLQkJCQkJICAgICAgIChwYXJhZ3JhcGgpCi0J CQkJCSAgICAgICAocGFyYWdyYXBoLWlubGluZSkpKQorKGRlZnVuIG1hcmtkb3duLXRzLS1iYXJm LWlmLW5vdC1tb2RlICgmb3B0aW9uYWwgY29udGV4dCkKKyAgIlNpZ25hbCBhbiBlcnJvciBpZiB0 aGUgY3VycmVudCBidWZmZXIgaXMgbm90IGEgYG1hcmtkb3duLXRzLW1vZGUnIGJ1ZmZlci4KK1By ZWZpeCB0aGUgZXJyb3IgbWVzc2FnZSB3aXRoIENPTlRFWFQuIgorICAodW5sZXNzIChkZXJpdmVk LW1vZGUtcCAnbWFya2Rvd24tdHMtbW9kZSkKKyAgICAodXNlci1lcnJvciAiJXNpcyB2YWxpZCBv bmx5IGluIGBtYXJrZG93bi10cy1tb2RlJyBidWZmZXJzIgorICAgICAgICAgICAgICAgIChpZiBj b250ZXh0IChmb3JtYXQgIiVzOiAiIGNvbnRleHQpICIiKSkpKQogCi0gIChzZXRxLWxvY2FsIHRy ZWVzaXQtc2ltcGxlLWltZW51LXNldHRpbmdzCi0gICAgICAgICAgICAgIGAoKCJIZWFkaW5ncyIg LCMnbWFya2Rvd24tdHMtaW1lbnUtbm9kZS1wCi0gICAgICAgICAgICAgICAgIG5pbCAsIydtYXJr ZG93bi10cy1pbWVudS1uYW1lLWZ1bmN0aW9uKSkpCi0gIChzZXRxLWxvY2FsIHRyZWVzaXQtb3V0 bGluZS1wcmVkaWNhdGUgIydtYXJrZG93bi10cy1vdXRsaW5lLXByZWRpY2F0ZSkKKyhkZWZpbmUt bWlub3ItbW9kZSBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZQorICAiTWlu b3IgbW9kZSBlbmFibGVkIGlmIHBvaW50IGlzIHdpdGhpbiBhIGZlbmNlZCBjb2RlIGJsb2NrLgor VGhpcyBlbmFibGVzIHRoZSBrZXltYXAgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4 dC1tb2RlLW1hcCcuIgorICA6Z3JvdXAgJ21hcmtkb3duLXRzCisgIDpsaWdodGVyIG1hcmtkb3du LXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLWxpZ2h0ZXIKKyAgOmludGVyYWN0aXZlIG5p bAorICAobWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLXVwZGF0ZS1vdikp CiAKLSAgKHdoZW4gKGFuZCAodHJlZXNpdC1lbnN1cmUtaW5zdGFsbGVkICdtYXJrZG93bikKLSAg ICAgICAgICAgICAodHJlZXNpdC1lbnN1cmUtaW5zdGFsbGVkICdtYXJrZG93bi1pbmxpbmUpKQot ICAgICh0cmVlc2l0LXBhcnNlci1jcmVhdGUgJ21hcmtkb3duLWlubGluZSkKLSAgICAodHJlZXNp dC1wYXJzZXItY3JlYXRlICdtYXJrZG93bikKLSAgICAobWFya2Rvd24tdHMtc2V0dXApKSkKKyhk ZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92IG5p bCkKIAotKGRlcml2ZWQtbW9kZS1hZGQtcGFyZW50cyAnbWFya2Rvd24tdHMtbW9kZSAnKG1hcmtk b3duLW1vZGUpKQorKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9k ZS11cGRhdGUtb3YgKCkKKyAgIk1hbmFnZSBgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29u dGV4dC1tb2RlLW92Jy4iCisgIChjb25kIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRl eHQtbW9kZQorICAgICAgICAgKGxldCAoKGJlZyAoZ2V0LWNoYXItcHJvcGVydHkgKHBvaW50KSAn bWFya2Rvd24tdHMtY29kZS1iZWctbWFya2VyKSkKKyAgICAgICAgICAgICAgIChlbmQgKGdldC1j aGFyLXByb3BlcnR5IChwb2ludCkgJ21hcmtkb3duLXRzLWNvZGUtZW5kLW1hcmtlcikpKQorICAg ICAgICAgICAoaWYgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92Cisg ICAgICAgICAgICAgICAobW92ZS1vdmVybGF5IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWluLWNv bnRleHQtbW9kZS1vdiBiZWcgZW5kKQorICAgICAgICAgICAgIChzZXRxIG1hcmtkb3duLXRzLS1j b2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1vdgorICAgICAgICAgICAgICAgICAgIChtYWtlLW92 ZXJsYXkgYmVnIGVuZCBuaWwgdCBuaWwpKSkKKyAgICAgICAgICAgKG92ZXJsYXktcHV0IG1hcmtk b3duLXRzLS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1vdgorICAgICAgICAgICAgICAgICAg ICAgICAgJ21hcmtkb3duLXRzLWluLWNvZGUtYmxvY2sgdCkKKyAgICAgICAgICAgKG92ZXJsYXkt cHV0IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1vdgorICAgICAgICAg ICAgICAgICAgICAgICAgJ2V2YXBvcmF0ZSB0KQorICAgICAgICAgICAob3ZlcmxheS1wdXQgbWFy a2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92CisgICAgICAgICAgICAgICAg ICAgICAgICAncHJpb3JpdHkgJyhuaWwgLiAyMCkpCisgICAgICAgICAgIChvdmVybGF5LXB1dCBt YXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YKKyAgICAgICAgICAgICAg ICAgICAgICAgICdmYWNlICdtYXJrZG93bi10cy1pbi1jb2RlLWJsb2NrKSkpCisgICAgICAgICh0 CisgICAgICAgICAod2hlbiBtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUt b3YKKyAgICAgICAgICAgKGRlbGV0ZS1vdmVybGF5IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWlu LWNvbnRleHQtbW9kZS1vdikpKSkpCiAKLTs7OyMjI2F1dG9sb2FkCi0oZGVmdW4gbWFya2Rvd24t dHMtbW9kZS1tYXliZSAoKQotICAiRW5hYmxlIGBtYXJrZG93bi10cy1tb2RlJyB3aGVuIGl0cyBn cmFtbWFyIGlzIGF2YWlsYWJsZS4KLUFsc28gcHJvcG9zZSB0byBpbnN0YWxsIHRoZSBncmFtbWFy IHdoZW4gYHRyZWVzaXQtZW5hYmxlZC1tb2RlcycKLWlzIHQgb3IgY29udGFpbnMgdGhlIG1vZGUg bmFtZS4iCi0gIChkZWNsYXJlLWZ1bmN0aW9uIHRyZWVzaXQtbGFuZ3VhZ2UtYXZhaWxhYmxlLXAg InRyZWVzaXQuYyIpCi0gIChpZiAob3IgKHRyZWVzaXQtbGFuZ3VhZ2UtYXZhaWxhYmxlLXAgJ21h cmtkb3duKQotICAgICAgICAgIChlcSB0cmVlc2l0LWVuYWJsZWQtbW9kZXMgdCkKLSAgICAgICAg ICAobWVtcSAnbWFya2Rvd24tdHMtbW9kZSB0cmVlc2l0LWVuYWJsZWQtbW9kZXMpKQotICAgICAg KG1hcmtkb3duLXRzLW1vZGUpCi0gICAgKGZ1bmRhbWVudGFsLW1vZGUpKSkKKyhkZWZpbmUtbWlu b3ItbW9kZSBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZQorICAiTWlub3IgbW9k ZSB0byBlbmFibGUgY29tbWFuZHMgaW4gZmVuY2VkIGNvZGUgYmxvY2sgY29udGV4dC4KK0lmIG5v bi1uaWwgYW5kIGBwb2ludCcgaXMgaW4gYSBmZW5jZWQgY29kZSBibG9jaywgcnVuIGBpbmRlbnQt Zm9yLXRhYi1jb21tYW5kJywKK2BuZXdsaW5lJywgZXQuYWwuLCBpbiB0aGUgbW9kZSBvZiB0aGUg Y29kZSBibG9jay4iCisgIDpncm91cCAnbWFya2Rvd24tdHMKKyAgOmludGVyYWN0aXZlIG5pbAor ICAobWFya2Rvd24tdHMtLWJhcmYtaWYtbm90LW1vZGUgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2st Y29udGV4dC1tb2RlKQorICAoY29uZCAobWFya2Rvd24tdHMtY29kZS1ibG9jay1jb250ZXh0LW1v ZGUKKyAgICAgICAgIDs7IEVuYWJsZSB0aGUgbWlub3IgbW9kZSBgbWFya2Rvd24tdHMtY29kZS1i bG9jay1pbi1jb250ZXh0LW1vZGUnIGFuZAorICAgICAgICAgOzsgaXRzIGtleW1hcCB3aGVuIHBv aW50IGlzIHdpdGhpbiBhIGNvZGUgYmxvY2suCisgICAgICAgICAoYWRkLWhvb2sgJ3Bvc3QtY29t bWFuZC1ob29rCisgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUt YmxvY2staW4tY29udGV4dC1tb2RlIG5pbCAnbG9jYWwpCisgICAgICAgICA7OyBJZiBgc2F2ZS1w bGFjZS1tb2RlJyBvciBzaW1pbGFyIGlzIHVzZWQsIHBvaW50IGNvdWxkIHN0YXJ0IHdpdGhpbgor ICAgICAgICAgOzsgYSBjb2RlIGJsb2NrIHNvIGluaXRpYWxpemUgZnJvbSB0aGF0IHN0YXRlLgor ICAgICAgICAgKHJ1bi13aXRoLXRpbWVyIDAuMDEgbmlsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIydtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlKQorICAg ICAgICAgOzsgRm9yIGVhY2ggZWxpZ2libGUgY29tbWFuZCwgZXhlY3V0ZSBpdCBpbiBhIGNvZGUt YmxvY2sgY29udGV4dCwKKyAgICAgICAgIDs7IG90aGVyd2lzZSBpbiB0aGUgYG1hcmtkb3duLXRz LW1vZGUnIGJ1ZmZlcidzIGNvbnRleHQuCisgICAgICAgICAoYWRkLWhvb2sgJ3ByZS1jb21tYW5k LWhvb2sKKyAgICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1tYXliZS1ydW4tY29tbWFu ZC1pbi1jb2RlLWJsb2NrIG5pbCAnbG9jYWwpCisgICAgICAgICA7OyBQcnVuZSBzdGFsZSBjb2Rl IGJsb2NrIG92ZXJsYXlzIHdoZW4gdGhlIGhvc3QgcGFyc2UgdHJlZQorICAgICAgICAgOzsgY2hh bmdlcyAoZS5nLiwgd2hlbiBmZW5jZWQgY29kZSBibG9jayBkZWxpbWl0ZXJzIGFyZQorICAgICAg ICAgOzsgZGVsZXRlZCBidXQgdGhlIG92ZXJsYXkgZnJvbSBhIHByaW9yIGZvbnRpZmljYXRpb24g cmVtYWlucykuCisgICAgICAgICAodHJlZXNpdC1wYXJzZXItYWRkLW5vdGlmaWVyCisgICAgICAg ICAgdHJlZXNpdC1wcmltYXJ5LXBhcnNlcgorICAgICAgICAgICMnbWFya2Rvd24tdHMtLWhvc3Qt cmFuZ2VzLW5vdGlmaWVyKSkKKyAgICAgICAgKHQKKyAgICAgICAgIChyZW1vdmUtaG9vayAncG9z dC1jb21tYW5kLWhvb2sKKyAgICAgICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1lbmFi bGUtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUgJ2xvY2FsKQorICAgICAgICAgKHJlbW92ZS1o b29rICdwcmUtY29tbWFuZC1ob29rCisgICAgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10 cy0tbWF5YmUtcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jayAnbG9jYWwpCisgICAgICAgICAodHJl ZXNpdC1wYXJzZXItcmVtb3ZlLW5vdGlmaWVyCisgICAgICAgICAgdHJlZXNpdC1wcmltYXJ5LXBh cnNlcgorICAgICAgICAgICMnbWFya2Rvd24tdHMtLWhvc3QtcmFuZ2VzLW5vdGlmaWVyKSkpKQor CisoZGVmaW5lLW1pbm9yLW1vZGUgbWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZQorICAiTWlub3Ig bW9kZSBlbmFibGVkIGlmIHBvaW50IGlzIHdpdGhpbiBhIHRhYmxlLgorVGhpcyBlbmFibGVzIHRo ZSBrZXltYXAgYG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbWFwJy4iCisgIDpncm91cCAnbWFy a2Rvd24tdHMKKyAgOmxpZ2h0ZXIgbWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZS1saWdodGVyCisg IDppbnRlcmFjdGl2ZSBuaWwKKyAgKG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLXVwZGF0ZS1v dikpCisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtb3YgbmlsKQor CisoZGVmdW4gbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtZ2V0LW92IChwb3MpCisgICJSZXR1 cm4gdGhlIGBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlJyBvdmVybGF5IGF0IFBPUy4iCisgIChz ZXEtZmluZCAobGFtYmRhIChvdikKKyAgICAgICAgICAgICAgKHdoZW4gKG92ZXJsYXktZ2V0IG92 ICdtYXJrZG93bi10cy1pbi10YWJsZSkKKyAgICAgICAgICAgICAgICBvdikpCisgICAgICAgICAg ICAob3ZlcmxheXMtYXQgcG9zKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtdGljay11 cGRhdGUgKHBvcykKKyAgIlVwZGF0ZSB0aGUgYG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUnIG92 ZXJsYXkgdGljayBhdCBQT1MuCitJZiB0aGUgb3ZlcmxheSBpcyBub3QgZm91bmQsIGRvIG5vdGhp bmcuIgorICAod2hlbi1sZXQqICgob3YgKG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLWdldC1v diBwb3MpKSkKKyAgICAob3ZlcmxheS1wdXQgb3YKKyAgICAgICAgICAgICAgICAgJ21hcmtkb3du LXRzLWluLXRhYmxlLXRpY2sKKyAgICAgICAgICAgICAgICAgKGJ1ZmZlci1jaGFycy1tb2RpZmll ZC10aWNrKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLXRpY2stc3RhbGUtcCAocG9z KQorICAiUmV0dXJuIG5vbi1uaWwgaWYgdGhlIHRhYmxlIGF0IFBPUyBtaWdodCBoYXZlIGNoYW5n ZWQuCitJdCBpcyB1cCB0byB0aGlzIGZ1bmN0aW9uJ3MgY2FsbGVycyB0byBjYWxsCitgbWFya2Rv d24tdHMtLXRhYmxlLXRpY2stdXBkYXRlJy4iCisgICh3aGVuLWxldCogKChvdiAobWFya2Rvd24t dHMtLWluLXRhYmxlLW1vZGUtZ2V0LW92IHBvcykpKQorICAgIChub3QgKGVxIChvdmVybGF5LWdl dCBvdiAnbWFya2Rvd24tdHMtaW4tdGFibGUtdGljaykKKyAgICAgICAgICAgICAoYnVmZmVyLWNo YXJzLW1vZGlmaWVkLXRpY2spKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWluLXRhYmxlLW1v ZGUtdXBkYXRlLW92ICgpCisgICJNYW5hZ2UgYG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLW92 Jy4iCisgIChjb25kIChtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlCisgICAgICAgICAod2hlbi1s ZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAg ICAgICAgICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAgICAgICAg KGJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IHRhYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgIChl bmQgKHRyZWVzaXQtbm9kZS1lbmQgdGFibGUpKSkKKyAgICAgICAgICAgKGlmIG1hcmtkb3duLXRz LS1pbi10YWJsZS1tb2RlLW92CisgICAgICAgICAgICAgICA7OyBNb3ZlIHRoZSBvdmVybGF5LCBp ZiBuZWVkZWQsIGFuZCByZXNldCB0aGUgdGljayBpZiBzby4KKyAgICAgICAgICAgICAgICh3aGVu IChub3QgKGVxIChvdmVybGF5LXN0YXJ0IG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLW92KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnKSkKKyAgICAgICAgICAgICAgICAgKG1v dmUtb3ZlcmxheSBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdiBiZWcgZW5kKQorICAgICAg ICAgICAgICAgICAob3ZlcmxheS1wdXQgbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtb3YKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1pbi10YWJsZS10aWNrIG5p bCkpCisgICAgICAgICAgICAgKHNldHEgbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtb3YKKyAg ICAgICAgICAgICAgICAgICAobWFrZS1vdmVybGF5IGJlZyBlbmQgbmlsIHQgbmlsKSkpCisgICAg ICAgICAgIChvdmVybGF5LXB1dCBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdgorICAgICAg ICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWluLXRhYmxlIHQpCisgICAgICAgICAgIChv dmVybGF5LXB1dCBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdgorICAgICAgICAgICAgICAg ICAgICAgICAgJ2V2YXBvcmF0ZSB0KQorICAgICAgICAgICAob3ZlcmxheS1wdXQgbWFya2Rvd24t dHMtLWluLXRhYmxlLW1vZGUtb3YKKyAgICAgICAgICAgICAgICAgICAgICAgICdwcmlvcml0eSAn KG5pbCAuIDIwKSkKKyAgICAgICAgICAgKG92ZXJsYXktcHV0IG1hcmtkb3duLXRzLS1pbi10YWJs ZS1tb2RlLW92CisgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZSAnbWFya2Rvd24tdHMtaW4t dGFibGUpCisgICAgICAgICAgICkpCisgICAgICAgICh0CisgICAgICAgICAod2hlbiBtYXJrZG93 bi10cy0taW4tdGFibGUtbW9kZS1vdgorICAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgbWFya2Rv d24tdHMtLWluLXRhYmxlLW1vZGUtb3YpKSkpKQorCisoZGVmaW5lLW1pbm9yLW1vZGUgbWFya2Rv d24tdHMtdGFibGUtbW9kZQorICAiTWlub3IgbW9kZSB0byBlbmFibGUgY29tbWFuZHMgaW4gdGFi bGVzLgorSWYgbm9uLW5pbCBhbmQgYHBvaW50JyBpcyBpbiBhIHRhYmxlLCBlbmFibGUKK2BtYXJr ZG93bi10cy1pbi10YWJsZS1tb2RlJy4iCisgIDpncm91cCAnbWFya2Rvd24tdHMKKyAgOmludGVy YWN0aXZlIG5pbAorICAobWFya2Rvd24tdHMtLWJhcmYtaWYtbm90LW1vZGUgJ21hcmtkb3duLXRz LXRhYmxlLW1vZGUpCisgIChjb25kIChtYXJrZG93bi10cy10YWJsZS1tb2RlCisgICAgICAgICA7 OyBFbmFibGUgdGhlIG1pbm9yIG1vZGUgYG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUnIGFuZAor ICAgICAgICAgOzsgaXRzIGtleW1hcCB3aGVuIHBvaW50IGlzIHdpdGhpbiBhIGNvZGUgYmxvY2su CisgICAgICAgICAoYWRkLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29rCisgICAgICAgICAgICAgICAg ICAgIydtYXJrZG93bi10cy0tZW5hYmxlLWluLXRhYmxlLW1vZGUgbmlsICdsb2NhbCkKKyAgICAg ICAgIDs7IElmIGBzYXZlLXBsYWNlLW1vZGUnIG9yIHNpbWlsYXIgaXMgdXNlZCwgcG9pbnQgY291 bGQgc3RhcnQgd2l0aGluCisgICAgICAgICA7OyBhIHRhYmxlLCBzbyBpbml0aWFsaXplIGZyb20g dGhhdCBzdGF0ZS4KKyAgICAgICAgIChydW4td2l0aC10aW1lciAwLjAxIG5pbAorICAgICAgICAg ICAgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLWVuYWJsZS1pbi10YWJsZS1tb2RlKSkKKyAg ICAgICAgKHQKKyAgICAgICAgIChyZW1vdmUtaG9vayAncG9zdC1jb21tYW5kLWhvb2sKKyAgICAg ICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1lbmFibGUtaW4tdGFibGUtbW9kZSAnbG9j YWwpKSkpCiAKIDs7OyMjI2F1dG9sb2FkCiAod2hlbiAoYm91bmRwICd0cmVlc2l0LW1ham9yLW1v ZGUtcmVtYXAtYWxpc3QpCi0gIChhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFsaXN0ICcoIlxcLm1k XFwnIiAuIG1hcmtkb3duLXRzLW1vZGUtbWF5YmUpKQotICA7OyBUbyBiZSBhYmxlIHRvIHRvZ2ds ZSBiZXR3ZWVuIGFuIGV4dGVybmFsIHBhY2thZ2UgYW5kIGNvcmUgdHMtbW9kZToKKyAgKGFkZC10 by1saXN0ICdhdXRvLW1vZGUtYWxpc3QgJygiXFwubWRcXCciIC4gbWFya2Rvd24tdHMtbW9kZSkp CisgIChhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFsaXN0ICcoIlxcLm1hcmtkb3duXFwnIiAuIG1h cmtkb3duLXRzLW1vZGUpKQorICAoYWRkLXRvLWxpc3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5t ZHhcXCciIC4gbWFya2Rvd24tdHMtbW9kZSkpCiAgIChhZGQtdG8tbGlzdCAndHJlZXNpdC1tYWpv ci1tb2RlLXJlbWFwLWFsaXN0CiAgICAgICAgICAgICAgICAnKG1hcmtkb3duLW1vZGUgLiBtYXJr ZG93bi10cy1tb2RlKSkpCiAKLS0gCjIuNTQuMAoK --=-=-=--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.
Received: (at 80740) by debbugs.gnu.org; 3 May 2026 17:31:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 03 13:31:36 2026
Received: from localhost ([127.0.0.1]:57341 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wJafI-0001hO-HN
for submit <at> debbugs.gnu.org; Sun, 03 May 2026 13:31:36 -0400
Received: from mail-vk1-xa2f.google.com ([2607:f8b0:4864:20::a2f]:57405)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1wJafE-0001gl-Vv
for 80740 <at> debbugs.gnu.org; Sun, 03 May 2026 13:31:34 -0400
Received: by mail-vk1-xa2f.google.com with SMTP id
71dfb90a1353d-57524e52a3dso315592e0c.2
for <80740 <at> debbugs.gnu.org>; Sun, 03 May 2026 10:31:32 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1777829492; cv=none;
d=google.com; s=arc-20240605;
b=ZVykcxOm0+3A29dRBFMtybb/Mk0dv5Rxr6v0wAWSsNTwtupoD0CKEctmJHx2+bd0NK
/kBG5PYVQlcILx1U8m6q6L0Q36JgBN9tHQzuH3oyvrd10UgdPSbUbxKXcItAzlMkPGII
vzWXyZQ/wgnmEn7E5QkZVMojyL20AQOhKWDIB/klLg3G9UU2cpjhyOr6eXiL37V3oFgV
rRodO8KuLdCNvsmXDevDfZFXG3eimKV3GX59bXr9DTGAZkOCVpLvJ0bs8fgE9V8M4s/u
totK9wbtaQUaYb07UsmSOqWh8U5JNkaCFeh1bhcrsVd7IJXAgg10LndZBKb0FAE2r9WM
7EOA==
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=fYqyIDkkIobby4kP7QbJp8oBxeycfp38qxh4Xa0NEpY=;
fh=Z+2BWSYvvUlcD/HMQPZWUM/wIsQXB3t1+i6KD6ZcjWM=;
b=RnoFBI6yvCwY7DUpGeqfQO0zD7Wl+1vQy6KbzFML8Hn3uZoTRyud0D9H3TTJ02qCRp
P9d8Z+yy1gaGu0oq4UmfHMl/VU4Ycg4jqWpltHKV5gCDaPBBlinfLjO+FUnEirRf9PN/
DjE0RIwLuIuH5G10ld9fjMWQI+7MqKNLsN/Tn2oD95H2tUMDzCrZdofIPKITOlR8f8/6
OME7xwDhMYTshEXlEpa6ZZYleVuoOr8MQ6wqDB+Vf8lto/yiVk9panjB0hQMnMry3M0Z
0n8o/ee2zgZW1QWeXcVLpUGyNuDwrHoD/hlSlbsF93CL2V0TduXc41oZtJiRxcSy00m7
ACDw==; 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=1777829492; x=1778434292; 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=fYqyIDkkIobby4kP7QbJp8oBxeycfp38qxh4Xa0NEpY=;
b=pWr4vg8amDbfRvPhauA1GGhXvrg4vz9bF1OWWBN4ZkK8tykluzNE2UzhY3SlWO43FK
BD8RqBgRgYHDgfwFg4EhKSOn81VbjHjZrm4eFszJcFTcu5llmC24k+Sxslm1ar2JZDp7
7SSxcs/cyFl3oAh48a47tFCd3uru5Vn9rKdtxZRMDfqJVRC/FXtf9dn5QGBZPzXJD1o0
RKcYHnirfQCnc+lT7mMR0WLxBYKYPA7vQiitTSy2149SieyaeBGe3sCenUamo8p3clHU
bxWCKkqdwh8PUiE7UtFPnZx4Z+lnav/aPUwmS1ChSY/5rnj8eu3MJgVXeaPaXXUfHiXa
hzyA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1777829492; x=1778434292;
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=fYqyIDkkIobby4kP7QbJp8oBxeycfp38qxh4Xa0NEpY=;
b=bUYb18Cu+g0auU7M4siFmviapB9pGlTIZ1B/efIuzW9u79hDaPTniEE/zDuRC7dbk4
0dKA719j8CL3ZOmI9maIdOPGMVzQ77/OFRcEYuLyBYWI9kpFvVhVQgM2dbYzw6OIjKuR
qpNFM3um8cW/0kjE6l3Tpx3TrIqoAfFe2+tefvjc9QTXPQNBpaP0ceQVhflcaT/wN6VC
20YBQXSM1hR3q19JrRc8k+tSyjjdA5i1TseacXVU9vsgMlVwpAGblqt1l3qYDsi/ycWZ
izuJRMBuwHUTXXYrU124UFRRD8h/86EvmmfgMc7ubyDnWuhpIKmxBRzPhWz5kr6vOTVR
XnLw==
X-Forwarded-Encrypted: i=1;
AFNElJ/NNIZvdWP12BHcv10JModuLC+V4V+ruzxX8rr4vqf480oBVhpX0kOZ/YeehSzEJi4KwM6SrQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxTuTPQA0TivuBdcpkV6J2R5H4uXHVF7kMskHwTFx6nho6UKUEw
GEldU0kL491FpQQUTTckvw51HG7S5qxLRVtfKYrKPZqMNWSODAqehwBP3Hclw19VLS0rakl3v1z
sAnflY8YQbR98kTVdBfvI3zmyc3S5M9Q=
X-Gm-Gg: AeBDies6gJf7b6jUB5Bob/9FZ+AbeQkizxhFh2CqvNWgKLloxZrQEHFAdZBdJ7fp2z3
KPUKAbPbuEedKIarR1a+f7CKJOX6WJsrdANMpEXFxvaLlGcxfB+UC3Ad84n+/uRIFAlKHYxUyet
GLbs29+oTQLNVfR5n/DJaARMAjuKgUhtRHXSRq7qkqEq7JW4IHwvWwZeyN4jdTen038xfYTParw
IYv90B7zvOIcWa4xon61I+oeC/XivzmruoeOEOMp3muzbgvSwavHl3JEpLLzv8io8LYBt0+9KHR
eWI5jSICWv17onO3hwiUalxlOLQr4upTOJADry377RAI99VWNSWQHV23QYAuJP7MJa+J9xi3JTQ
+9U9aw5YKgRBB6rj5vdPiMcru/qk+D6O+eZgfSLuNLry4V1/AKA2Bn493tw==
X-Received: by 2002:a05:6122:1b82:b0:56e:8afc:de8c with SMTP id
71dfb90a1353d-5750c4e0a3amr2917313e0c.3.1777829492106; Sun, 03 May 2026
10:31:32 -0700 (PDT)
MIME-Version: 1.0
References: <m2zf3jzamy.fsf@HIDDEN>
<CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN>
<m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN>
<E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN>
<C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN>
<m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN>
<m2ik982h8d.fsf@HIDDEN> <871pfvtso9.fsf@HIDDEN>
<m2lde3i4t8.fsf@HIDDEN>
<CAN+1HbpfowV03Cyej3Do0pv+UOAZUPFXwR2jicBaUCGjy5oZ_Q@HIDDEN>
<87cxzfkocq.fsf@HIDDEN>
<CAN+1HboiDuZVrFPmmPa8W0GsO8ePy+P-d3EvQHtmFyGmP6wP9g@HIDDEN>
<m2mryi7jcx.fsf@HIDDEN> <87fr48mqdn.fsf@HIDDEN>
In-Reply-To: <87fr48mqdn.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Sun, 3 May 2026 13:31:20 -0400
X-Gm-Features: AVHnY4IBnU5SogEXS-c8bdyy6h_9h8dfMdMBEeV-JBb0MXWzNvQRTpACzGa0VLU
Message-ID: <CAN+1HbpNjycEqwALJkLyLOiYokP7CzJmW3sU8LOm5VzrmKkFfQ@HIDDEN>
Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode'
To: Thanos Apollo <public@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000592b9c0650ed2fb0"
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 Sun, May 3, 2026 at 12:01 PM Thanos Apollo wrote: > Rahul
Martim Juliato writes: > > One note for the record: if you batch-fontify
multiple text fragments in > a single buffer joined with a null byte (\0)
as separator, tree-sitter > produces an ERR [...]
Content analysis details: (2.7 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[2607:f8b0:4864:20:0:0:0:a2f listed in]
[list.dnswl.org]
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (shipmints[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 HTML_MESSAGE BODY: HTML included in message
1.7 URIBL_BLACK Contains an URL listed in the URIBL blacklist
[URIs: thanosapollo.org]
X-Debbugs-Envelope-To: 80740
Cc: Eshel Yaron <me@HIDDEN>, Yuan Fu <casouri@HIDDEN>,
Rahul Martim Juliato <rahuljuliato@HIDDEN>, 80740 <at> debbugs.gnu.org,
Eli Zaretskii <eliz@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 Sun, May 3, 2026 at 12:01 PM Thanos Apollo wrote: > Rahul
Martim Juliato writes: > > One note for the record: if you batch-fontify
multiple text fragments in > a single buffer joined with a null byte (\0)
as separator, tree-sitter > produces an ERR [...]
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: thanosapollo.org]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[2607:f8b0:4864:20:0:0:0:a2f listed in]
[list.dnswl.org]
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (shipmints[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 HTML_MESSAGE BODY: HTML included in message
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
--000000000000592b9c0650ed2fb0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Sun, May 3, 2026 at 12:01=E2=80=AFPM Thanos Apollo <public@thanosapollo.=
org>
wrote:
> Rahul Martim Juliato <rahuljuliato@HIDDEN> writes:
>
> One note for the record: if you batch-fontify multiple text fragments in
> a single buffer joined with a null byte (\0) as separator, tree-sitter
> produces an ERROR node (UNEXPECTED '\0') and enters error recovery.
>
I think this is a limitation of the markdown grammar and the underlying
tree-sitter library doesn't care. If you think the grammar should support
null bytes, I encourage you to submit an issue here
https://github.com/tree-sitter-grammars/tree-sitter-markdown (or even a
patch if you're willing) but nobody has responded to our bug reports or
attempts to start a dialog. The grammar seems untended. The core team did
respond to a bug we reported and altered the documentation which was
missing a key detail.
--000000000000592b9c0650ed2fb0
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 Sun, May 3, 2026 at 12:01=E2=80=AFPM Thanos Apollo <<a href=3D"mailto=
:public@HIDDEN">public@HIDDEN</a>> wrote:</span></di=
v></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">Rahul Martim Juliato <<a href=3D"mailto=
:rahuljuliato@HIDDEN" target=3D"_blank">rahuljuliato@HIDDEN</a>> w=
rites:<br><br>
One note for the record: if you batch-fontify multiple text fragments in<br=
>
a single buffer joined with a null byte (\0) as separator, tree-sitter<br>
produces an ERROR node (UNEXPECTED '\0') and enters error recovery.=
<br></blockquote><div><br></div><div><div class=3D"gmail_default" style=3D"=
font-family:monospace">I think this is a limitation of the markdown grammar=
and the underlying tree-sitter library doesn't care.=C2=A0 If you thin=
k the grammar should support null bytes, I encourage you to submit an issue=
here=C2=A0<a href=3D"https://github.com/tree-sitter-grammars/tree-sitter-m=
arkdown">https://github.com/tree-sitter-grammars/tree-sitter-markdown</a>=
=C2=A0(or even a patch if you're willing) but nobody=C2=A0has responded=
to our bug reports or attempts to start a dialog.=C2=A0 The grammar seems =
untended.=C2=A0 The core team did respond to a bug we reported and altered =
the documentation which was missing a key detail.</div></div></div></div>
--000000000000592b9c0650ed2fb0--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 3 May 2026 16:01:38 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 03 12:01:38 2026 Received: from localhost ([127.0.0.1]:57157 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wJZGD-0005W6-J1 for submit <at> debbugs.gnu.org; Sun, 03 May 2026 12:01:38 -0400 Received: from sendmail.purelymail.com ([34.202.193.197]:35796) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <public@HIDDEN>) id 1wJZG9-0005Ul-Qq for 80740 <at> debbugs.gnu.org; Sun, 03 May 2026 12:01:35 -0400 DKIM-Signature: a=rsa-sha256; b=AozlLyuwlb7jtaPfKtnR+1cC5gJjvF2exmqZmXXP+R0pjk+JVfxUSR3ndnlKMu6wvuNMjq72bG+dbD73I4zbVwlxm32KDu3Lo1jC+nh518QCDIdModUc8/mUYqsE2Virm2W0MgLlPfIBtqntWj7MY3MqNJP5z4r4QsxSVX1NnIsm7b1XuwW7ytHuJO9+g+4s+QIbQFasAc6s0L91Uwl1cQt1Iu0l2r3LyBx25LFy4m+PXvcCVWM0xPKq30cep7MfirrLqSfIW6+HY8KvRPJOlDI3qHOTT1GnIgUXLeMbuyw3rWVDWSJVX5gvlSwZHJEj42CayKom26aXnQw4T9MEqQ==; s=purelymail3; d=thanosapollo.org; v=1; bh=m82IJQe30V4AnpaSdzyZs5QUaIC6p4vLnZJCdFcVOAA=; h=Received:From:To:Subject:Date; DKIM-Signature: a=rsa-sha256; b=rYhv3i9feO3iI/EeetIH/K3JvnaUNt7dGWOE+rgpPLU+2Sv57f6vie5wjfNHZhCSqCBh/sFB6iqAYiJMzDHWpn7riKuaXSI5odG4o69vFuNZoDUhQ9tS8iOAvb9xmuGVhTU5cQ71CifHExOo3eFQqruSjPNww9H2LexAWPMOcABvSqkaMzNZKNRQU+1i9Zg1115ZtC8CkxfO+vmFroz4LlOhncWlD8LPGg1pOQtML7Xk0kE6d5AkEbOEByo4TXLSPy1YciKqg1zvdp92ziNm/rbh7LkK7AX0BGgsIAvwoFaXgzUmdpCNaK5t9wH1cdiSYjgdH04WQnOZtiAtIhQbdg==; s=purelymail3; d=purelymail.com; v=1; bh=m82IJQe30V4AnpaSdzyZs5QUaIC6p4vLnZJCdFcVOAA=; h=Feedback-ID:Received:From:To:Subject:Date; Feedback-ID: 329276:26957:null:purelymail X-Pm-Original-To: 80740 <at> debbugs.gnu.org Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -708078065; (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Sun, 03 May 2026 16:01:13 +0000 (UTC) From: Thanos Apollo <public@HIDDEN> To: Rahul Martim Juliato <rahuljuliato@HIDDEN>, Yuan Fu <casouri@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' In-Reply-To: <m2mryi7jcx.fsf@HIDDEN> References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN> <m2ik982h8d.fsf@HIDDEN> <871pfvtso9.fsf@HIDDEN> <m2lde3i4t8.fsf@HIDDEN> <CAN+1HbpfowV03Cyej3Do0pv+UOAZUPFXwR2jicBaUCGjy5oZ_Q@HIDDEN> <87cxzfkocq.fsf@HIDDEN> <CAN+1HboiDuZVrFPmmPa8W0GsO8ePy+P-d3EvQHtmFyGmP6wP9g@HIDDEN> <m2mryi7jcx.fsf@HIDDEN> Date: Sun, 03 May 2026 19:04:04 +0300 Message-ID: <87fr48mqdn.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" 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: Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > Please find the updated patch attached. Thanks, this works fine for forgejo.el and having built-in support for markdown would be indeed useful. Content analysis details: (1.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [34.202.193.197 listed in wl.mailspike.net] 1.7 URIBL_BLACK Contains an URL listed in the URIBL blacklist [URIs: thanosapollo.org] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Debbugs-Envelope-To: 80740 Cc: Eshel Yaron <me@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>, Rahul Martim Juliato <rahuljuliato@HIDDEN>, 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: 0.7 (/) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > Please find the updated patch attached. Thanks, this works fine for forgejo.el and having built-in support for markdown would be indeed useful. One note for the record: if you batch-fontify multiple text fragments in a single buffer joined with a null byte (\0) as separator, tree-sitter produces an ERROR node (UNEXPECTED '\0') and enters error recovery. This can cause faces like strikethrough to bleed across fragment boundaries. Regex-based modes (gfm-mode, markdown-mode) tolerate null bytes silently, so this is a behavioral difference when switching to markdown-ts-mode. A form feed (^L) flanked by blank lines works as a drop-in replacement; tree-sitter parses it as a clean paragraph break. =2D-=20 Thanos Apollo =E2=98=A7 https://thanosapollo.org --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEYrdY0PZxmTi8Cc7KM59zbDpyCSgFAmn3cfQACgkQM59zbDpy CSgtUA//RygWAirXoCx1W5044CtadJRU8ARnuePHkRT30cQnJESXHGkzJD3OI1rl JkrDl7HrXLbMaOmkk7r1xUROMn00VRK7rLKQpvOaVkAFGqWzD/YxZ7YgeyTNIOEp 2TTm03lgRUR7030PNWXnSjk/qH1xJeAYy8GGNa5ubiEy/H5sVSBVucSt2pjtsx22 jhq3w0yj2KFMhkEF51NG+88Z3tD6veuqN9qQ1fYC1AHAqspSruWa9H6DIfKb6cjq PPWwhGOIpn97kDmuM6ENz/LtSODd0sPK5U4KFe+CMTGmvEW48NUKQB4OVdxB1uBE mCrrJfmG6VFrRSmXzxghDCMScwAycQ+YlNnLAy5EzJqQK2Prkn8sJN8wIs3Tqb6K ftg7iM9c7WB/6/Nbxt2Yvhdan36uXpxHrS6r4KaXDXgSWZ/bD9saDj2Qy6zY7Aa5 gnHjN3PTTUynUb4gG/IeHC6x5dbe0h02kb64C5n84ai1e+FB6ZI6/5t8GudrFDzo Ks2IrkkBNsIzzJ2kVbWeb2k/TOK+mij4JvJIdr11z2WKKm1nOFlK4jcw90ycIUa7 qs0uGbcrZm36VYX6lmXupueNW6eZVisANSWsnRbLCkSIsfi0IiChUY1GYa9QSVn3 u7prIDUFrOcEjSsXwDdBrR3nxMZA5BXljkzC0X2b3K0CdUF5cBc= =AVCx -----END PGP SIGNATURE----- --=-=-=--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 3 May 2026 02:24:01 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat May 02 22:24:01 2026 Received: from localhost ([127.0.0.1]:51952 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wJMUz-0002fE-Bi for submit <at> debbugs.gnu.org; Sat, 02 May 2026 22:24:01 -0400 Received: from mail-dl1-x1235.google.com ([2607:f8b0:4864:20::1235]:48361) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>) id 1wJMUw-0002er-3c for 80740 <at> debbugs.gnu.org; Sat, 02 May 2026 22:23:58 -0400 Received: by mail-dl1-x1235.google.com with SMTP id a92af1059eb24-12c8ccc7755so4455088c88.0 for <80740 <at> debbugs.gnu.org>; Sat, 02 May 2026 19:23:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777775036; x=1778379836; 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=xAwdDohjdUBNJOOyc6+T5msHyr5Jot4YNPOsdwyekcM=; b=XrqQ+5PI6N7j8KLm0KBV6Lk5IysUAtW/nsb505DZo3UMeE6MOODgXYsKyUQ19z4XTz xbZzHxMLlJ6Wy6kmKHcMKO98ANePi1k0b7P+bZCvcTfEglDsZPqJiEiw7nl99NNy0pA8 t0ZQPu7XHyDxNfMmUN5JBG9faowrt6zOgJ9JByaQelum87GH9+xMvhgIlmIZRN/3klui sZivui5XrSc90EIyv9nn0MEUV0DOZtlWWQBoS9QoNH367wXe6YgyH5irvYUTIN8Wt3dD hsqeF32rTdNWB7nVK/RO/Z324kn9kR37VhF/yBU8xvx6DLoMy6gfVF1cQLQxfvMJSBR+ CC7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777775036; x=1778379836; 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=xAwdDohjdUBNJOOyc6+T5msHyr5Jot4YNPOsdwyekcM=; b=h+/17t0wYIMJTUhILgmTG4ZX3Ht3Dk13GPcwZNDQPrAos/Qap0WeBfrVcV3JKd3n6e oL112N4j8CuhZJl2ngLtEF8raA6EeJepISMYUBIjNrCRA4J4x3GC4SDi5E82592UmHhf rXqLXa5pg6y3QSNh7iXgBGfQf/3LIBa+Q2T+FG8awnQOflJb4NRb4PvJ1HvvlB6MpBoO f9UZcG0QwH+Eutof7IKJrRHjnSgederAZodrTzCQAPFAPRLKUkCfhsweO1u0INyLuwwS +NU4lYm/aKqfvtR5/b6YVGYz6GPuxWnCcxh/YD0f9PWht/2Pi0qJH5NK9QnPR/A1NIBv QOYA== X-Forwarded-Encrypted: i=1; AFNElJ8j6RoDK3zEbyS6Vg4ZByQlvy2uvXyXkZw6nKis3KNVZFbdcEaFpnpRZ4iVArUlMK8mft3SCQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzCy24oYhbMT4q65DStDxg02fV5Z8UIStXmQ/GNLtmzSC0DfNhO CVVXNDDxd9o1/bIag88O1SawzNxpclsfUInAvtK0uxeavqh4NTjr8n1t X-Gm-Gg: AeBDieuWjr1p3xkDRPDYjsVpSwY84EVc6UxCsWhHlt+u8Whbu8RZY8SelxOLtMtZVxT fxDJCyLzHhN/E/mioN1Z7CGm43CL/D0ZgKXGcIpMkGzB0Sb/YNvMQJ4pobnM0KsjYkB2ZgjCYPI JrNZ6X9f/Jff5TlliuY44cftdChY4LyKvmMMFGjfJ0Gfe1by6COcRqgL9XFJUgwtP94vWqBh+mJ AAuZPRYPOkzs2ADnRQkGXPd1fpkGAMDQGJRqSwnBf1hBSM18wmVhknZBfOqUxxzmzl/2xiv1P92 r1vM6NwY+5qTQAQFc/gFrva+OSbh5JNsPLVTL3yeLOiCEjOOeOVukxClDAWULUvwx+I40nu1u31 Tk0CBRgPNk/b2yfzBP+824Hzv7qPxOJ0AacnutVllgHIpflL4U3yB3PoE1yIJS7DxKzfAXt9G8E Ufh9tlGmjNDCTsrtFZL+C/o5GGAVt6cNopISI9sGk+nsZ4P3A0y2wbf7G0FqTeBdl04Tg0XIjLy BYy3tqyJbY2S59W1u9PZO3Ynu8B3iCgpzb+b7VhwB3IYj8Eq1pW29M0 X-Received: by 2002:a05:7022:4192:b0:128:d24a:a5ba with SMTP id a92af1059eb24-12dfd821c0emr2270350c88.20.1777775035719; Sat, 02 May 2026 19:23:55 -0700 (PDT) Received: from MacBook-Pro.local (201-93-59-77.dial-up.telesp.net.br. [201.93.59.77]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12df8431037sm9957912c88.12.2026.05.02.19.23.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 May 2026 19:23:54 -0700 (PDT) From: Rahul Martim Juliato <rahuljuliato@HIDDEN> X-Google-Original-From: Rahul Martim Juliato <rahul.juliato@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' In-Reply-To: <m2mryi7jcx.fsf@HIDDEN> References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN> <m2ik982h8d.fsf@HIDDEN> <871pfvtso9.fsf@HIDDEN> <m2lde3i4t8.fsf@HIDDEN> <CAN+1HbpfowV03Cyej3Do0pv+UOAZUPFXwR2jicBaUCGjy5oZ_Q@HIDDEN> <87cxzfkocq.fsf@HIDDEN> <CAN+1HboiDuZVrFPmmPa8W0GsO8ePy+P-d3EvQHtmFyGmP6wP9g@HIDDEN> <m2mryi7jcx.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: Sat, 02 May 2026 23:23:49 -0300 Message-ID: <m23409nscq.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: 80740 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>, Rahul Martim Juliato <rahuljuliato@HIDDEN>, Eshel Yaron <me@HIDDEN>, =?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> --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > >> On Fri, May 1, 2026 at 1:54=E2=80=AFPM Eshel Yaron <me@HIDDEN> w= rote: >> >> Hi, >> >> St=C3=A9phane Marks <shipmints@HIDDEN> writes: >> >> > On Fri, May 1, 2026 at 10:26=E2=80=AFAM Rahul Martim Juliato <rahulju= liato@HIDDEN> wrote: >> > >> > Eshel Yaron <me@HIDDEN> writes: >> > >> > > Hi, >> > > >> > > Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: >> > > >> > >> +(defun markdown-ts-mode-install-parsers (arg) >> > >> + "Install `markdown-ts-mode' tree-sitter language parsers. >> > >> +If needed, install the required parsers for `markdown' and `mark= down-inline'. >> > >> +With a prefix argument, ARG, if needed, install parsers for `htm= l', >> > >> +`yaml', and `toml'." >> > >> + (interactive "P") >> > >> + (unless (treesit-ready-p 'markdown t) >> > >> + (treesit-install-language-grammar 'markdown)) >> > > >> > > Note that this `treesit-ready-p' is not quite right, because >> > > treesit-ready-p is sensitive to the current buffer. Namely, this = will >> > > return nil if you invoke this command in a large buffer of any kin= d, >> > > even if the markdown parser is already installed. >> > > Yes, treesit-ready-p is confusing. See also bug#80909. >> > > >> > >> + (unless (treesit-ready-p 'markdown-inline t) >> > >> + (treesit-install-language-grammar 'markdown-inline)) >> > >> + (when arg >> > >> + (unless (treesit-ready-p 'html t) >> > >> + (require 'html-ts-mode) >> > >> + (treesit-install-language-grammar 'html)) >> > >> + (unless (treesit-ready-p 'yaml t) >> > >> + (require 'yaml-ts-mode) >> > >> + (treesit-install-language-grammar 'yaml)) >> > >> + (unless (treesit-ready-p 'toml t) >> > >> + (require 'toml-ts-mode) >> > >> + (treesit-install-language-grammar 'toml)))) >> > >>=20=20 >> > >> ;;;###autoload >> > >> (define-derived-mode markdown-ts-mode text-mode "Markdown" >> > >> - "Major mode for editing Markdown using tree-sitter grammar." >> > >> + "Major mode for editing Markdown using tree-sitter grammar. >> > >> +NOTE: See `markdown-ts--set-up-inline'." >> > >> + (if (and (treesit-ensure-installed 'markdown) >> > >> + (treesit-ensure-installed 'markdown-inline)) >> > >> + (markdown-ts--set-up) >> > > >> > > Here there is another, related problem: since commit d9691858, >> > > treesit-ensure-installed no longer checks treesit-max-buffer-size,= =20 >> > > so this will try to create a parser even in a buffer that is too b= ig. >> > > (This problem is common to many TS-modes in core.) >> > > >> > > FWIW, my suggestion in bug#80909 was to move the buffer size check= out >> > > of treesit-ready-p and into treesit-parser-create, which would have >> > > nullified both of these issues. >> > > >> > > >> > > Best, >> > > >> > > Eshel >> > >> > Hi! >> > >> > Eshel, thank you for noticing these issues, and for the pointer to >> > bug#80909. I spent some time reading what you provided and digging = into >> > the recent change in d9691858. >> > >> > The attached patch (new) addresses both problems: >> > >> > - In markdown-ts-mode-install-parsers, replace treesit-ready-p with >> > treesit-language-available-p. The install function only needs to >> > know whether the grammar library is on disk, not whether the curre= nt >> > buffer is within size limits. >> >> LGTM. >> >> > - In define-derived-mode markdown-ts-mode, separate the two concerns: >> > call treesit-ensure-installed for both languages first (which hand= les >> > auto-install if treesit-auto-install-grammar is set), then gate the >> > actual mode setup on treesit-ready-p, which checks both language >> > availability and buffer size. >> >> This one also look good, with a little caveat about this part: >> >> ;;;###autoload >> (define-derived-mode markdown-ts-mode text-mode "Markdown" >> - "Major mode for editing Markdown using tree-sitter grammar." >> + "Major mode for editing Markdown using tree-sitter grammar. >> +NOTE: See `markdown-ts--set-up-inline'." >> + (treesit-ensure-installed 'markdown) >> + (treesit-ensure-installed 'markdown-inline) >> + (if (and (treesit-ready-p 'markdown t) >> + (treesit-ready-p 'markdown-inline t)) >> + (markdown-ts--set-up) >> + (warn "markdown-ts-mode cannot be set up; using fundamental-mode. >> +The tree-sitter parsers `markdown' and `markdown-inline' were not fo= und. >> +Use the command `markdown-ts-mode-install-parsers' to install them. >> +With a prefix argument, it can also install optional parsers.") >> + (fundamental-mode))) >> >> Note that this triggers the warning also when the current buffer is too >> large, in which case the first sentence is correct, but the rest might >> be false (the parsers may be available, perhaps even just-installed.) >> You could call treesit-ready-p without the QUIET=3Dt argument, and it >> should yield the correct error message on failure. Of course, it >> doesn't include the hint about markdown-ts-mode-install-parsers... >> >> So maybe until treesit-max-buffer-size checking is better rationalized, = we let bind treesit-max-buffer-size to most-positive-fixnum and provide a w= arning >> rather than refusal. > > Thanks Eshel and St=C3=A9phane. > > I went this route: treesit-max-buffer-size is let-bound to > most-positive-fixnum around the treesit-ready-p check, so the mode > activates in large buffers rather than refusing. > > With the size check bypassed, the only remaining failure path is a > genuinely missing grammar, so the "parsers not found" warning stays > accurate. A comment in the code now references bug#80909 as the signal > to revisit this workaround. > >> >> > Yuan, St=C3=A9phane, Eshel, does this look right to you? >> > >> > Seems good at first glance. >> > >> > One can always let-bind treesit-max-buffer-size around treesit-ready-= p to avoid the buffer size >> > restriction, though I'd prefer an argument be exposed to inhibit that= check, better invert it so that >> > it's an extra check not the default check. One can install a parser = in a small buffer that grows beyond >> > the size check which is a false sense of security. >> > > Please find the updated patch attached. Found a small bug in setext heading fontification: faces would stack on the same chars across incremental refontifications. Folding the fix into this patch since it hasn't been merged yet. Updated patch attached. -- 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 RnJvbSAzYTZhYTMzODdlNmRlNzVkOTk5MTUzMmIxNjE2OGVkMDdjYzY3Nzc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn bWFpbC5jb20+CkRhdGU6IEZyaSwgMyBBcHIgMjAyNiAyMzo0MTo0NyAtMDMwMApTdWJqZWN0OiBb UEFUQ0hdIEltcHJvdmUgJ21hcmtkb3duLXRzLW1vZGUnCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k aW5nOiA4Yml0CgpPdmVyaGF1bCAnbWFya2Rvd24tdHMtbW9kZScgd2l0aCBjb21wcmVoZW5zaXZl IGZvbnRpZmljYXRpb24sCmNvZGUgYmxvY2sgaGFuZGxpbmcsIGVkaXRpbmcgY29tbWFuZHMsIGZp bGwtcGFyYWdyYXBoIHN1cHBvcnQsCmlubGluZSBpbWFnZSBwcmV2aWV3cywgYSBtb2RlIG1lbnUs IGFuZCB0YWJsZSBlZGl0aW5nLiAgQWRkCidtYXJrZG93bi10cy1tb2RlLXguZWwnIHdpdGggY29u dmVyc2lvbi9leHBvcnQgYW5kIFRPQyBzdXBwb3J0LgoKKiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93 bi10cy1tb2RlLmVsOiBBZGQgVmVyc2lvbiwKUGFja2FnZS1SZXF1aXJlcywgYW5kIEtleXdvcmRz IGhlYWRlciBmaWVsZHMuICBFeHBhbmQgQ29tbWVudGFyeQp3aXRoIGRvY3VtZW50YXRpb24gZm9y IGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMsIGNvZGUgYmxvY2sKY29tbWFuZHMsIGJpZGlyZWN0 aW9uYWwgdGV4dCwgYW5kIGtub3duIHRyZWUtc2l0dGVyIGdyYW1tYXIKYnVncy4KKHJlcXVpcmUg J2dvdG8tYWRkciwgeHJlZiwgaWNvbnMpOiBOZXcgcmVxdWlyZW1lbnRzLgoobWFya2Rvd24tdHMp OiBOZXcgY3VzdG9taXphdGlvbiBncm91cCB3aXRoIDp2ZXJzaW9uIGFuZAo6cGFja2FnZS12ZXJz aW9uIHRhZ3MuCihtYXJrZG93bi10cy1oaWRlLW1hcmt1cCk6IEFkZCA6dmVyc2lvbiBhbmQgOnBh Y2thZ2UtdmVyc2lvbi4KKG1hcmtkb3duLXRzLWVsbGlwc2lzKTogTmV3IG9wdGlvbiBmb3IgZm9s ZGVkIGhlYWRpbmcgZWxsaXBzaXMuCihtYXJrZG93bi10cy1tZW51LWJhci1zaG93KTogTmV3IG9w dGlvbiB0byB0b2dnbGUgbW9kZSBtZW51LgoobWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nKTog TmV3IG9wdGlvbiBmb3IgZGVmYXVsdCBmb2xkCmxldmVsLgoobWFya2Rvd24tdHMtaW5saW5lLWlt YWdlcyk6IE5ldyBvcHRpb24gdG8gZGlzcGxheSBpbmxpbmUKaW1hZ2VzLgoobWFya2Rvd24tdHMt aW1hZ2UtbWF4LXdpZHRoKTogTmV3IG9wdGlvbiBmb3IgaW1hZ2UgbWF4IHdpZHRoLgoobWFya2Rv d24tdHMtZGlzcGxheS1yZW1vdGUtaW5saW5lLWltYWdlcyk6IE5ldyBvcHRpb24gZm9yCnJlbW90 ZSBpbWFnZSBoYW5kbGluZy4KKG1hcmtkb3duLXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUpOiBO ZXcgaGVscGVyIHRvIHJlc29sdmUKZGlzcGxheSB2YWx1ZXMgdXNpbmcgY2hhci1kaXNwbGF5YWJs ZS1wLgoobWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveCk6IE5ldyBvcHRpb24gZm9yIGNoZWNr ZWQgY2hlY2tib3gKZGlzcGxheSBzdHJpbmcgb3IgaWNvbi4KKG1hcmtkb3duLXRzLWNoZWNrZWQt Y2hlY2tib3gtaWNvbik6IE5ldyBpY29ucy5lbCBpY29uIGZvciB0aGUKY2hlY2tlZCB2YXJpYW50 LgoobWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94KTogTmV3IG9wdGlvbiBmb3IgdW5jaGVj a2VkCmNoZWNrYm94IGRpc3BsYXkgc3RyaW5nIG9yIGljb24uCihtYXJrZG93bi10cy11bmNoZWNr ZWQtY2hlY2tib3gtaWNvbik6IE5ldyBpY29ucy5lbCBpY29uIGZvciB0aGUKdW5jaGVja2VkIHZh cmlhbnQuCihtYXJrZG93bi10cy10aGVtYXRpYy1icmVhay1jaGFyYWN0ZXIpOiBOZXcgb3B0aW9u IGZvciB0aGVtYXRpYwpicmVhayBkaXNwbGF5IGNoYXJhY3Rlci4KKG1hcmtkb3duLXRzLWhhcmQt bGluZS1icmVhay1iYWNrc2xhc2gpOiBOZXcgb3B0aW9uIGZvciB0aGUKZ2x5cGggc2hvd24gaW4g cGxhY2Ugb2YgYSB0cmFpbGluZy1iYWNrc2xhc2ggaGFyZCBsaW5lIGJyZWFrCndoZW4gbWFya3Vw IGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZSk6IE5ldyBvcHRp b24gZm9yIHRoZSBnbHlwaApzaG93biBpbiBwbGFjZSBvZiBhIHRyYWlsaW5nLXNwYWNlcyBoYXJk IGxpbmUgYnJlYWsgd2hlbiBtYXJrdXAKaXMgaGlkZGVuLgoobWFya2Rvd24tdHMtY29kZS1ibG9j ay1pbi1jb250ZXh0LW1vZGUtbGlnaHRlcik6IE5ldyBvcHRpb24gZm9yCmNvZGUgYmxvY2sgY29u dGV4dCBtb2RlIGxpZ2h0ZXIgc3RyaW5nLgoobWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2Nr LW1vZGUtd2FybmluZ3MpOiBOZXcgb3B0aW9uIHRvCmluaGliaXQgY29kZS1ibG9jayBtYWpvci1t b2RlIG1lc3NhZ2VzIGFuZCB3YXJuaW5ncy4KKG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1bHQtY29s dW1uLXdpZHRoKTogTmV3IG9wdGlvbiBmb3IgZGVmYXVsdAp0YWJsZSBjb2x1bW4gd2lkdGguCiht YXJrZG93bi10cy1lbmFibGUtdGFibGUtbW9kZSk6IE5ldyBvcHRpb24gdG8gZW5hYmxlIHRhYmxl Cm1vZGUuCihtYXJrZG93bi10cy10YWJsZS1hdXRvLWFsaWduKTogTmV3IG9wdGlvbiBmb3IgdHJp Z2dlcnMgdGhhdApjYXVzZSBhdXRvbWF0aWMgdGFibGUgYWxpZ25tZW50LgoobWFya2Rvd24tdHMt dGFibGUtYWxpZ24tZmVhdHVyZXMpOiBOZXcgb3B0aW9uIGZvciB0YWJsZSBhbGlnbgpmZWF0dXJl cy4KKG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbGlnaHRlcik6IE5ldyBvcHRpb24gZm9yCm1h cmtkb3duLXRzLWluLXRhYmxlLW1vZGUgbGlnaHRlciBzdHJpbmcuCihtYXJrZG93bi10cy1lbXBo YXNpcywgbWFya2Rvd24tdHMtYm9sZCkKKG1hcmtkb3duLXRzLXN0cmlrZXRocm91Z2gsIG1hcmtk b3duLXRzLWxpbmspCihtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9uLCBtYXJrZG93bi10cy1j b2RlLXNwYW4pCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLCBtYXJrZG93bi10cy1jb2RlLWJsb2Nr LW1hcmt1cC1oaWRkZW4pCihtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2NrLCBtYXJrZG93 bi10cy1odG1sLXRhZykKKG1hcmtkb3duLXRzLWh0bWwtYmxvY2ssIG1hcmtkb3duLXRzLXRoZW1h dGljLWJyZWFrKQoobWFya2Rvd24tdHMtZW50aXR5LXJlZmVyZW5jZSkKKG1hcmtkb3duLXRzLW51 bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSwgbWFya2Rvd24tdHMtbGF0ZXgpCihtYXJrZG93bi10 cy10YWJsZS1oZWFkZXIsIG1hcmtkb3duLXRzLXRhYmxlLWNlbGwpCihtYXJrZG93bi10cy10YWJs ZS1kZWxpbWl0ZXItY2VsbCwgbWFya2Rvd24tdHMtdGFzay11bmNoZWNrZWQpCihtYXJrZG93bi10 cy10YXNrLWNoZWNrZWQpOiBOZXcgZmFjZXMuCihtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWst YmFja3NsYXNoKQoobWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaC1oaWRkZW4p CihtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UpCihtYXJrZG93bi10cy1oYXJkLWxp bmUtYnJlYWstc3BhY2UtaGlkZGVuKTogTmV3IGZhY2VzIGZvciB0aGUKdHdvIGhhcmQtbGluZS1i cmVhayB2YXJpYW50cywgd2l0aCBkaXN0aW5jdCBzaG93bi9oaWRkZW4KYXBwZWFyYW5jZXMuCiht YXJrZG93bi10cy1pbi1jb2RlLWJsb2NrKTogTmV3IGZhY2UgZm9yIHdoZW4gcG9pbnQgaXMgaW5z aWRlIGEKZmVuY2VkIGNvZGUgYmxvY2suCihtYXJrZG93bi10cy10YWJsZSk6IE5ldyBmYWNlIGZv ciBNYXJrZG93biBwaXBlIHRhYmxlCmJhY2tncm91bmQuCihtYXJrZG93bi10cy1pbi10YWJsZSk6 IE5ldyBmYWNlIGZvciBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlCndoZW4gcG9pbnQgaXMgaW4g YSB0YWJsZS4KKG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lKTogTmV3IHZhcmlhYmxlIGZvciBs aWdodHdlaWdodCBzZXR1cAppbiBlbWJlZGRlZCBpbmxpbmUgbWFya2Rvd24tdHMtbW9kZSBidWZm ZXJzIHVzZWQgYnkgY29kZSBibG9jawpjb21tYW5kcy4KKG1hcmtkb3duLXRzLWRlZmF1bHQtY29k ZS1ibG9jay1tb2RlKTogTmV3IHZhcmlhYmxlIHRvIGRlZmluZQpkZWZhdWx0IG1vZGUgZm9yIGFu b255bW91cyBjb2RlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLWZvbnRpZnktY29kZS1ibG9ja3MtbmF0 aXZlbHkpOiBOZXcgb3B0aW9uIHRvCmVuYWJsZS9kaXNhYmxlIG5hdGl2ZSBmb250aWZpY2F0aW9u IG9mIGZlbmNlZCBjb2RlIGJsb2NrCmNvbnRlbnRzLgoobWFya2Rvd24tdHMtZW5hYmxlLWNvZGUt YmxvY2stY29udGV4dC1tb2RlKTogTmV3IG9wdGlvbiB0bwplbmFibGUvZGlzYWJsZSBjb2RlIGJs b2NrIGNvbnRleHQgaW50ZWdyYXRpb24uCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKTog TmV3IHZhcmlhYmxlIHJlcGxhY2luZwptYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1t YXAgYW5kCm1hcmtkb3duLXRzLWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwIHdpdGggdW5pZmll ZCBsYW5ndWFnZSB0bwptb2RlIG1hcHBpbmcgaW5jbHVkaW5nIGhldXJpc3RpYyBsb29rdXAuCiht YXJrZG93bi10cy1jb2RlLWJsb2NrLWZvcmNlLWNvbnZlbnRpb25hbC1tb2Rlcyk6IE5ldyB2YXJp YWJsZQpsaXN0aW5nIHRyZWUtc2l0dGVyIG1vZGVzIHdob3NlIGZvbnRpZmljYXRpb24gb2YgY29k ZSBibG9jawpjb250ZW50IHNob3VsZCBiZSBoYXJ2ZXN0ZWQgdmlhIGEgdGVtcG9yYXJ5IGJ1ZmZl ci4KKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC1idWZmZXIpOiBOZXcgY29uc3RhbnQgZm9yIHRh YmxlIGV4cG9ydApvdXRwdXQgYnVmZmVyIG5hbWUuCihtYXJrZG93bi10cy0tdGFibGUtcm93LXR5 cGVzLCBtYXJrZG93bi10cy0tdGFibGUtY2VsbC10eXBlcykKKG1hcmtkb3duLXRzLS10YWJsZS1k ZWxpbWl0ZXItY2VsbC10eXBlcykKKG1hcmtkb3duLXRzLS10YWJsZS1kZWxpbWl0ZXItY2VsbC1z dWJ0eXBlcyk6IE5ldyBjb25zdGFudHMgZm9yCnBpcGUgdGFibGUgbm9kZSB0eXBlIGNsYXNzaWZp Y2F0aW9uLgoobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24pOiBOZXcgZnVuY3Rpb24gdG8g Y3JlYXRlCmNsaWNrYWJsZSBsaW5rIGJ1dHRvbnMgd2l0aCBtYWlsdG8sIGJyb3dzZS11cmwsIGFu ZCBmaW5kLWZpbGUKZGlzcGF0Y2guCihtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0 aW9uKTogTmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGxpbmsgZGVzdGluYXRpb25zIHdoZW4gbWFy a3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZSwgbWFya2Rvd24tdHMt LWxpbmstcmVmLWNhY2hlLXRpY2spCihtYXJrZG93bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMp CihtYXJrZG93bi10cy0tcmVzb2x2ZS1saW5rLXJlZik6IE5ldyBsaW5rIHJlZmVyZW5jZSBkZWZp bml0aW9uCmNhY2hlIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZyBwZXIgQ29tbW9uTWFy ayBzcGVjLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKTogTmV3IGZvbnRpZmllciBm b3IgaW5saW5lLApyZWZlcmVuY2UsIHNob3J0Y3V0LCBhbmQgY29sbGFwc2VkIGxpbmtzIGFzIGNs aWNrYWJsZSBidXR0b25zLgoobWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmspOiBOZXcgZm9u dGlmaWVyIGZvciBVUkkgYW5kIGVtYWlsCmF1dG9saW5rcyB3aXRoIGFuZ2xlIGJyYWNrZXQgaGlk aW5nLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1yZWYtbGFiZWwpCihtYXJrZG93bi10cy0t Zm9udGlmeS1saW5rLXJlZi1kZXN0aW5hdGlvbik6IE5ldyBmb250aWZpZXJzIGZvcgpsaW5rIHJl ZmVyZW5jZSBkZWZpbml0aW9ucy4KKG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1Yi1zdHJpcC1yZSwg bWFya2Rvd24tdHMtLXNsdWctZ2l0aHViKQoobWFya2Rvd24tdHMtLXNsdWctcGFuZG9jLCBtYXJr ZG93bi10cy0tZXhwbGljaXQtaWQtcmUpCihtYXJrZG93bi10cy0taGVhZGluZy10ZXh0LWFuZC1p ZCkKKG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkLWNhY2hlKQoobWFya2Rvd24tdHMtLWhlYWRpbmct aWQtY2FjaGUtdGljaykKKG1hcmtkb3duLXRzLS1idWlsZC1oZWFkaW5nLWlkcywgbWFya2Rvd24t dHMtLWhlYWRpbmctaWRzKQoobWFya2Rvd24tdHMtLWZvbGxvdy1mcmFnbWVudCk6IE5ldyBmcmFn bWVudCBsaW5rIHN1cHBvcnQgd2l0aApHaXRIdWIgYW5kIFBhbmRvYyBzbHVnIGFsZ29yaXRobXMu CihtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCkKKG1hcmtkb3duLXRzLS1mb250aWZ5 LWxhdGV4LWJsb2NrKTogTmV3IExhVGVYL21hdGggZm9udGlmaWVyCndpdGggY3Jvc3MtcGFyYWdy YXBoIHZhbGlkYXRpb24uCihtYXJrZG93bi10cy0tZm9udGlmeS1iYWNrc2xhc2gtZXNjYXBlKTog TmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGJhY2tzbGFzaCBpbiBlc2NhcGVzIGV4Y2VwdCBpbnNp ZGUgTGFUZVggYmxvY2tzLgoobWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHksIG1hcmtkb3duLXRz LS1mb250aWZ5LWVudGl0eSk6IE5ldwpIVE1MIGVudGl0eSBkZWNvZGVyIGFuZCBmb250aWZpZXIg dXNpbmcgb3JnLWVudGl0aWVzIGFuZApzZ21sLWNoYXItbmFtZXMgd2l0aCBkaXNwbGF5IHByb3Bl cnR5IGZvciBkZWNvZGVkIHZhbHVlcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94KTog TmV3IGZvbnRpZmllciBzaG93aW5nIHRoZQpjb25maWd1cmVkIGNoZWNrYm94IGdseXBoIHdoZW4g bWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWhhcmQtbGluZS1icmVhayk6 IE5ldyBmb250aWZpZXIgZm9yCidoYXJkX2xpbmVfYnJlYWsnIG5vZGVzLgoobWFya2Rvd24tdHMt LWZvbnRpZnktaGVhZGluZyk6IE5ldyBmb250aWZpZXIgZm9yIEFUWCBhbmQgU2V0ZXh0CmhlYWRp bmdzLgoobWFya2Rvd24tdHMtLWZvbnRpZnktdGhlbWF0aWMtYnJlYWspOiBOZXcgZm9udGlmaWVy IHNob3dpbmcKaG9yaXpvbnRhbCBsaW5lIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3du LXRzLS1mb250aWZ5LWNvZGUtYmxvY2spOiBOZXcgZm9udGlmaWVyIGFwcGx5aW5nCmJhY2tncm91 bmQgb3ZlcmxheSB0byBjb2RlIGJsb2NrcyB3aXRoIGxhbmd1YWdlIGFuZCBtb2RlCnByb3BlcnRp ZXMuCihtYXJrZG93bi10cy1hdC1jb2RlLWJsb2NrLXApCihtYXJrZG93bi10cy1jb2RlLWJsb2Nr LWxhbmd1YWdlLWF0KQoobWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLWF0KTogTmV3IGFjY2Vz c29ycyBmb3IgY29kZSBibG9jawpvdmVybGF5IHByb3BlcnRpZXMuCihtYXJrZG93bi10cy0taW1l bnUtY29kZS1ibG9jay1ub2RlLXApOiBOZXcgaGVscGVyIGZvciBpbWVudQpjb2RlIGJsb2NrIGRl dGVjdGlvbi4KKG1hcmtkb3duLXRzLS1pbWFnZS1hbG9uZS1vbi1saW5lLXApCihtYXJrZG93bi10 cy0tZm9udGlmeS1pbWFnZSk6IE5ldyBpbmxpbmUgaW1hZ2UgZGlzcGxheSB3aXRoCnN0YW5kYWxv bmUgYW5kIGlubGluZSBwb3NpdGlvbmluZy4KKG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHAp CihtYXJrZG93bi10cy0tYmFyZS1lbWFpbC11cmktcmVnZXhwKQoobWFya2Rvd24tdHMtLWZvbnRp ZnktYmFyZS11cmkpOiBOZXcgYmFyZSBVUkwvZW1haWwKZm9udGlmaWNhdGlvbiB2aWEgaml0LWxv Y2sgdXNpbmcgZ290by1hZGRyIHJlZ2V4cHMuCihtYXJrZG93bi10cy0tdHJlZXNpdC1zZXR0aW5n cyk6IFJld3JpdGUgd2l0aCBkZWRpY2F0ZWQgZmFjZXMsCmN1c3RvbSBmb250aWZpZXJzLCBhbmQg bmV3IGZvbnQtbG9jayBmZWF0dXJlcyBmb3IgYWxsIGlubGluZSBhbmQKYmxvY2sgZWxlbWVudHMu ICBBbHNvIGFkZCBhIG5ldyAnZXJyb3InIGZvbnQtbG9jayBmZWF0dXJlCmhpZ2hsaWdodGluZyB0 cmVlLXNpdHRlciBFUlJPUiBub2Rlcy4KKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdl cykKKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2Rlcyk6IE5ldyBidWZmZXItbG9j YWwgYWxpc3RzCmZvciBjb2RlIGJsb2NrIGxhbmd1YWdlIHRyYWNraW5nLgoobWFya2Rvd24tdHMt LWhhcnZlc3QtbW9kZS10cmVlc2l0LWNvbmZpZ3VyYXRpb24pOiBSZW5hbWUgZnJvbQptYXJrZG93 bi10cy0taGFydmVzdC10cmVlc2l0LWNvbmZpZ3Mgd2l0aCBkZWxheS1tb2RlLWhvb2tzLgoobWFy a2Rvd24tdHMtLWNvbmZpZ3VyZS1jdXJyZW50LWJ1ZmZlcik6IFJlbmFtZSBmcm9tCm1hcmtkb3du LXRzLS1hZGQtY29uZmlnLWZvci1tb2RlLgoobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUp OiBOZXcgaGVscGVyIGV4dHJhY3RpbmcgbGFuZ3VhZ2UKc3ltYm9sIGZyb20gY29kZV9mZW5jZV9j b250ZW50IG5vZGUuCihtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpOiBOZXcgYnVm ZmVyLWxvY2FsIGhhc2ggdGFibGUKY2FjaGluZyBmb250aWZpY2F0aW9uIHJlc3VsdHMgZm9yIG5v bi10cmVlLXNpdHRlciBjb2RlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1j b2xsZWN0LWZhY2VzKTogTmV3IGZ1bmN0aW9uCmhhcnZlc3RpbmcgZmFjZSBwcm9wZXJ0aWVzIGZy b20gYSBtb2RlIGluIGFuIGluZGlyZWN0IG9yCnRlbXBvcmFyeSBidWZmZXIuCihtYXJrZG93bi10 cy0tZm9udGlmeS1ub24tdHMtY29kZS1ibG9jayk6IE5ldyBmb250aWZpZXIgZm9yCm5vbi10cmVl LXNpdHRlciBtb2RlcyB2aWEgdGVtcG9yYXJ5IGJ1ZmZlciBmb250LWxvY2suCihtYXJrZG93bi10 cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2RlKTogTmV3IGZ1bmN0aW9uIHdpdGgKaGV1cmlzdGlj IG1vZGUgbmFtZSBwcm9iaW5nLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2Up OiBSZW5hbWUgZnJvbQptYXJrZG93bi10cy0tY29udmVydC1jb2RlLWJsb2NrLWxhbmd1YWdlIHdp dGggc3VwcG9ydCBmb3Igbm9uLXRzCm1vZGVzIGFuZCByZWN1cnNpdmUgbWFya2Rvd24gaGFuZGxp bmcuCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzKQoobWFya2Rvd24tdHMtY29kZS1i bG9jay10aGluZy1jb21tYW5kcykKKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stcmVnaW9uLWNvbW1h bmRzKTogTmV3IGNvbW1hbmQgbGlzdHMgZm9yCmNvZGUtYmxvY2sgY29udGV4dCBleGVjdXRpb24u CihtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlKQoobWFya2Rv d24tdHMtLW1heWJlLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2spCihtYXJrZG93bi10cy0tY29k ZS1ibG9jay14cmVmLWZpbmQtZGVmaW5pdGlvbnMpCihtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQt aW4tY29kZS1ibG9jayk6IE5ldyBjb2RlIGJsb2NrIG1pbm9yCm1vZGUgd2l0aCB0ZW1wLWJ1ZmZl ciBjb21tYW5kIGRpc3BhdGNoLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZSk6IE5l dyBjb21tYW5kIGZvciBuZXdsaW5lCmluc2lkZSBjb2RlIGJsb2NrcywgZGlzcGF0Y2hpbmcgdG8g dGhlIGJsb2NrJ3MgbW9kZS4KKG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncyk6IFVwZGF0ZSBy YW5nZSBjb25maWd1cmF0aW9uOwpyZW1vdmUgOnJhbmdlLWZuIHRyZWVzaXQtcmFuZ2UtZm4tZXhj bHVkZS1jaGlsZHJlbi4KKG1hcmtkb3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMpCihtYXJr ZG93bi10cy0tb3V0bGluZS12aWV3LWNoYW5nZSk6IE5ldyBoZWxwZXJzIGZvciBpbWFnZQpvdmVy bGF5IG1hbmFnZW1lbnQgZHVyaW5nIG91dGxpbmUgZm9sZC91bmZvbGQuCihtYXJrZG93bi10cy0t b3V0bGluZS1pbnZpc2libGUtcCk6IE5ldyBoZWxwZXIgdGVzdGluZyB3aGV0aGVyIGEKcG9zaXRp b24gaXMgaW5zaWRlIGFuIG91dGxpbmUtZm9sZGVkIHJlZ2lvbi4KKG1hcmtkb3duLXRzLS1ob3N0 LXJhbmdlcy1ub3RpZmllcik6IE5ldyBmdW5jdGlvbiBwcnVuaW5nIHN0YWxlCmNvZGUgYmxvY2sg b3ZlcmxheXMgd2hlbiB0aGUgaG9zdCBwYXJzZSB0cmVlIGNoYW5nZXMuCihtYXJrZG93bi10cy0t YmFyZi1pZi1ub3QtbW9kZSk6IE5ldyBoZWxwZXIgc2lnbmFsaW5nIGEKdXNlci1lcnJvciB3aGVu IHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBub3QgZGVyaXZlZCBmcm9tCm1hcmtkb3duLXRzLW1vZGUu CihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZSk6IE5ldyBtaW5vciBtb2Rl IGVuYWJsZWQKd2hlbiBwb2ludCBpcyB3aXRoaW4gYSBmZW5jZWQgY29kZSBibG9jaywgYWN0aXZh dGluZwptYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1tYXAgc28gZWxpZ2li bGUgY29tbWFuZHMKZGlzcGF0Y2ggdG8gdGhlIGJsb2NrJ3MgbWFqb3IgbW9kZS4KKG1hcmtkb3du LXRzLS1zZXQtaGlkZS1tYXJrdXApOiBDbGVhciBpbWFnZSBvdmVybGF5cyB3aGVuCnRvZ2dsaW5n IG1hcmt1cCB2aXNpYmlsaXR5LgoobWFya2Rvd24tdHMtLXNldC1pbmxpbmUtaW1hZ2VzKQoobWFy a2Rvd24tdHMtdG9nZ2xlLWlubGluZS1pbWFnZXMpOiBOZXcgZnVuY3Rpb25zIGZvciB0b2dnbGlu ZwppbmxpbmUgaW1hZ2UgZGlzcGxheS4KKG1hcmtkb3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgt bGV2ZWwpOiBOZXcgY29uc3RhbnQuCihtYXJrZG93bi10cy0taGVhZGluZy1hdC1wb2ludCwgbWFy a2Rvd24tdHMtLWhlYWRpbmctbGV2ZWwpCihtYXJrZG93bi10cy0tc2VjdGlvbi1hdC1wb2ludCk6 IE5ldyBoZWFkaW5nIG5hdmlnYXRpb24gaGVscGVycy4KKG1hcmtkb3duLXRzLXByb21vdGUsIG1h cmtkb3duLXRzLWRlbW90ZSk6IE5ldyBjb21tYW5kcyBmb3IKaGVhZGluZyBhbmQgbGlzdCBpdGVt IHByb21vdGlvbi9kZW1vdGlvbiB3aXRoIHJlZ2lvbiBzdXBwb3J0LgoobWFya2Rvd24tdHMtLXBy b21vdGUtb3ItZGVtb3RlKQoobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lvbik6 IE5ldyBoZWFkaW5nIGxldmVsCmFkanVzdG1lbnQgZnVuY3Rpb25zLgoobWFya2Rvd24tdHMtbW92 ZS1zdWJ0cmVlLXVwLCBtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtZG93bik6Ck5ldyBjb21tYW5k cyBmb3IgbW92aW5nIHNlY3Rpb25zIGFuZCBsaXN0IGl0ZW1zLgoobWFya2Rvd24tdHMtLXNlY3Rp b24tZm9sZGVkLXApCihtYXJrZG93bi10cy0tbW92ZS1zdWJ0cmVlLXVwLW9yLWRvd24pOiBOZXcg c3VidHJlZSBtb3ZlIHdpdGgKZm9sZGluZyBzdGF0ZSBwcmVzZXJ2YXRpb24uCihtYXJrZG93bi10 cy10b2dnbGUtY2hlY2tib3gpOiBOZXcgY29tbWFuZCB0byB0b2dnbGUgdGFzayBsaXN0CmNoZWNr Ym94ZXMuCihtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KTogTmV3IGhlbHBlciB3aXRo IGJsb2NrIHF1b3RlCm1hcmtlciBoYW5kbGluZy4KKG1hcmtkb3duLXRzLS1saXN0LW1hcmtlci13 aWR0aCwgbWFya2Rvd24tdHMtLWxpc3QtaXRlbS1yZWdpb24pCihtYXJrZG93bi10cy0tbGlzdC1v cmRlcmVkLWl0ZW0tcCk6IE5ldyBsaXN0IGl0ZW0gaGVscGVycy4KKG1hcmtkb3duLXRzLS1saXN0 LXByb21vdGUtb3ItZGVtb3RlKTogTmV3IGZ1bmN0aW9uIHdpdGggb3JkZXJlZApsaXN0IG5lc3Rp bmcgZ3VhcmQuCihtYXJrZG93bi10cy0tbGlzdC1ub2RlLWJvbCwgbWFya2Rvd24tdHMtLWxpc3Qt bW92ZSk6IE5ldyBsaXN0Cml0ZW0gbW92ZW1lbnQgZnVuY3Rpb25zLgoobWFya2Rvd24tdHMtcmVu dW1iZXItbGlzdCk6IE5ldyBjb21tYW5kIGZvciBzZXF1ZW50aWFsIGxpc3QKcmVudW1iZXJpbmcg d2l0aCBwcmVmaXggYXJndW1lbnQgc3VwcG9ydC4KKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3 LW1hcmtlcikKKG1hcmtkb3duLXRzLS1uZXctbWFya2VyLWZvci1saW5lKTogTmV3IG1hcmtlciBz dHJpbmcgZ2VuZXJhdG9ycwpmb3IgbGlzdCBpdGVtIGluc2VydGlvbi4KKG1hcmtkb3duLXRzLS1s aW5lLWJsb2NrLXF1b3RlLWRlcHRoKTogTmV3IGhlbHBlciBjb3VudGluZyBibG9jawpxdW90ZSBk ZXB0aC4KKG1hcmtkb3duLXRzLW5ld2xpbmUpOiBOZXcgUkVUIGNvbW1hbmQgZm9yIGNvbnRleHQt YXdhcmUKbmV3bGluZS4KKG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0pOiBOZXcgTS1SRVQg Y29tbWFuZCB0aGF0IGNyZWF0ZXMgYQpuZXcgbGlzdCBpdGVtLgoobWFya2Rvd24tdHMtLWZpbGwt dW5maWxsYWJsZS1ibG9jay1xdWVyeSk6IE5ldyB0cmVlLXNpdHRlcgpxdWVyeSBmb3IgdW5maWxs YWJsZSBibG9ja3MuCihtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uKTogTmV3IGhl bHBlciBmb3IgbGlzdCBpdGVtCnRleHQgYWxpZ25tZW50LgoobWFya2Rvd24tdHMtLWZpbGwtbGlz dC1pdGVtKTogTmV3IGZ1bmN0aW9uIGZpbGxpbmcgd2l0aGluIGxpc3QKaXRlbXMgd2l0aG91dCBt ZXJnaW5nIGFkamFjZW50IGl0ZW1zLgoobWFya2Rvd24tdHMtLWFkYXB0aXZlLWZpbGwpOiBOZXcg YWRhcHRpdmUgZmlsbCBmdW5jdGlvbiBmb3IKbGlzdCBpdGVtIGNvbnRpbnVhdGlvbi4KKG1hcmtk b3duLXRzLS1maWxsLWZvcndhcmQtcGFyYWdyYXBoKTogTmV3IHBhcmFncmFwaCBtb3Rpb24KcmVz cGVjdGluZyBsaXN0IGl0ZW1zIGFuZCB1bmZpbGxhYmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLWZp bGwtcGFyYWdyYXBoKTogTmV3IGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uIHdpdGgKY29uZCogZGlz cGF0Y2ggZm9yIGxpc3RzLCBibG9jayBxdW90ZXMsIEhUTUwgY29tbWVudHMsIGFuZAp1bmZpbGxh YmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1maWxsLWh0bWwtY29tbWVudCk6IE5ldyBIVE1MIGNv bW1lbnQgZmlsbGVyIHdpdGgKY29udGludWF0aW9uIGFsaWdubWVudC4KKG1hcmtkb3duLXRzLS1i bG9jay1xdW90ZS1wcmVmaXgpOiBOZXcgaGVscGVyIHByZXNlcnZpbmcKZXhpc3RpbmcgYmxvY2sg cXVvdGUgbWFya2VyIHN0eWxlLgoobWFya2Rvd24tdHMtLWZpbGwtYmxvY2stcXVvdGUpOiBOZXcg YmxvY2sgcXVvdGUgZmlsbGVyIHdpdGgKbGlzdCBpdGVtIHRleHQgY29sdW1uIGFsaWdubWVudC4K KG1hcmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0KTogTmV3IGFsaXN0IG9mIGVtcGhhc2lzIG1hcmtl cnMuCihtYXJrZG93bi10cy0tZW1waGFzaXMtbm9kZS1hdC1wb2ludCk6IE5ldyB0cmVlLXNpdHRl ciBiYXNlZAplbXBoYXNpcyBkZXRlY3Rpb24uCihtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMp OiBOZXcgY29tbWFuZCByZW1vdmluZyBlbXBoYXNpcyBhdApwb2ludCBvciByZWdpb24uCihtYXJr ZG93bi10cy1lbXBoYXNpemUpOiBOZXcgaW50ZXJhY3RpdmUgZW1waGFzaXMgaW5zZXJ0aW9uIHdp dGgKcmVnaW9uIHdyYXBwaW5nIGFuZCB3b3JkLWF0LXBvaW50IHN1cHBvcnQuCihtYXJrZG93bi10 cy1pbnNlcnQtc3RydWN0dXJlKTogTmV3IGNvbW1hbmQgZm9yIGluc2VydGluZyBjb2RlCmJsb2Nr cywgYmxvY2sgcXVvdGVzLCBhbmQgZGl2aWRlcnMuCihtYXJrZG93bi10cy0taW5zZXJ0LWNvZGUt YmxvY2spOiBOZXcgZnVuY3Rpb24gd2l0aCBsYW5ndWFnZQpjb21wbGV0aW9uIGZyb20ga25vd24g bW9kZXMuCihtYXJrZG93bi10cy0taW5zZXJ0LWJsb2NrLXF1b3RlKTogTmV3IGZ1bmN0aW9uIHdp dGggcmVnaW9uCndyYXBwaW5nLgoobWFya2Rvd24tdHMtLWluc2VydC1kaXZpZGVyKTogTmV3IGZ1 bmN0aW9uIGZvciBob3Jpem9udGFsCnJ1bGVzLgoobWFya2Rvd24tdHMtLWFwcGx5LWVsbGlwc2lz KTogTmV3IGZ1bmN0aW9uIGFwcGx5aW5nIGN1c3RvbQplbGxpcHNpcyB2aWEgZGlzcGxheSB0YWJs ZS4KKG1hcmtkb3duLXRzLS1zZXQtdXApOiBSZW5hbWUgZnJvbSBtYXJrZG93bi10cy1zZXR1cC4K KG1hcmtkb3duLXRzLW91dGxpbmUtY3ljbGUpOiBOZXcgVEFCIGNvbW1hbmQgY3ljbGluZyBvdXRs aW5lCnZpc2liaWxpdHkgb24gaGVhZGluZ3MuCihtYXJrZG93bi10cy1tb2RlLW1hcCk6IE5ldyBr ZXltYXAgZm9yIGNvZGUgYmxvY2sgbmF2aWdhdGlvbiwKYmluZGluZ3MgZm9yIGhlYWRpbmcgbmF2 aWdhdGlvbiwgc3RydWN0dXJlIGVkaXRpbmcsIGVtcGhhc2lzLAphbmQgbGlzdCBvcGVyYXRpb25z LgoobWFya2Rvd24tdHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtbWFwKTogTmV3IGtleW1h cCBmb3IKY29kZSBibG9jayBjb250ZXh0LgoobWFya2Rvd24tdHMtbW9kZS1tZW51KTogTmV3IG1l bnUgYmFyIHdpdGggU2hvdy9IaWRlLCBOYXZpZ2F0ZQpIZWFkaW5ncywgRWRpdCBTdHJ1Y3R1cmUs IGFuZCBFZGl0aW5nIHNlY3Rpb25zLgoobWFya2Rvd24tdHMtbW9kZSk6IEFkZCBvdXRsaW5lLW1p bm9yLW1vZGUsIGVsbGlwc2lzLCBmb2xkaW5nLApmaWxsLXBhcmFncmFwaCBpbnRlZ3JhdGlvbiwg Y29kZS1ibG9jay1jb250ZXh0LW1vZGUgaG9va3MsCmNvbW1lbnQgc2V0dGluZ3MsIGFuZCBvdXRs aW5lLXZpZXctY2hhbmdlLWhvb2suICBVc2UKbWFya2Rvd24tdHMtbW9kZSBkaXJlY3RseSBpbiBh dXRvLW1vZGUtYWxpc3QgaW5zdGVhZCBvZgptYXJrZG93bi10cy1tb2RlLW1heWJlLgoobWFya2Rv d24tdHMtbW9kZS1pbnN0YWxsLXBhcnNlcnMpOiBOZXcgY29tbWFuZCBmb3IgaW5zdGFsbGluZwpy ZXF1aXJlZCBhbmQgb3B0aW9uYWwgdHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgZ3JhbW1hcnMuCihtYXJr ZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZSk6IE5ldyBtaW5vciBtb2RlIGZvciBjb2Rl CmJsb2NrIGNvbnRleHQuCihtYXJrZG93bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlcikK KG1hcmtkb3duLXRzLS1maW5kLW5leHQtY29kZS1ibG9jay1kZWxpbWl0ZXIpOiBOZXcgaGVscGVy cyBmb3IKbG9jYXRpbmcgZmVuY2VkIGNvZGUgYmxvY2sgZGVsaW1pdGVyIG5vZGVzLgoobWFya2Rv d24tdHMtbW92ZS10by1uZXh0LWNvZGUtYmxvY2spCihtYXJrZG93bi10cy1tb3ZlLXRvLXByZXZp b3VzLWNvZGUtYmxvY2spOiBOZXcgY29tbWFuZHMgZm9yCm5hdmlnYXRpbmcgYmV0d2VlbiBmZW5j ZWQgY29kZSBibG9ja3MuCihtYXJrZG93bi10cy0tdGFibGUtYWJ1dHRpbmctcG9zLCBtYXJrZG93 bi10cy0tdGFibGUtbm9kZS1jZWxsKQoobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93LCBtYXJr ZG93bi10cy0tdGFibGUtcGFyc2UtZXJyb3ItcCk6Ck5ldyBwaXBlIHRhYmxlIG5vZGUgaGVscGVy cy4KKG1hcmtkb3duLXRzLWF0LXRhYmxlLXApOiBOZXcgcHJlZGljYXRlIHJldHVybmluZyBub24t bmlsIHdoZW4KcG9pbnQgaXMgYXQgb3Igd2l0aGluIGEgcGlwZSB0YWJsZS4KKG1hcmtkb3duLXRz LS1lbmFibGUtaW4tdGFibGUtbW9kZSk6IE5ldyBoZWxwZXIgZW5hYmxpbmcKbWFya2Rvd24tdHMt aW4tdGFibGUtbW9kZSBmcm9tIHBvc3QtY29tbWFuZC1ob29rLgoobWFya2Rvd24tdHMtLXRhYmxl LWJvZHktcm93LW5lYXItcG9zKTogTmV3IGhlbHBlciBsb2NhdGluZyB0aGUKbmVhcmVzdCBib2R5 IHJvdyB0byBhIHBvc2l0aW9uLgoobWFya2Rvd24tdHMtLXRhYmxlLWNvbXB1dGUtbm9kZS1jb2x1 bW4pCihtYXJrZG93bi10cy10YWJsZS0tZ290by1jb2x1bW4pOiBOZXcgaGVscGVycyBmb3IgY29s dW1uLWJhc2VkCnRhYmxlIG5hdmlnYXRpb24uCihtYXJrZG93bi10cy0tdGFibGUtYWxpZ25lcnMs IG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIpCihtYXJrZG93bi10cy0tdGFibGUtYWxp Z24tY2VsbCk6IE5ldyB0YWJsZSBjZWxsIGFsaWdubWVudApoZWxwZXJzLgoobWFya2Rvd24tdHMt dGFibGUtaW5zZXJ0LXRhYmxlKTogTmV3IGNvbW1hbmQgdG8gaW5zZXJ0IGEgcGlwZQp0YWJsZSB3 aXRoIGNvbmZpZ3VyYWJsZSByb3dzIGFuZCBjb2x1bW5zLgoobWFya2Rvd24tdHMtdGFibGUtZGVs ZXRlLXRhYmxlKTogTmV3IGNvbW1hbmQgdG8gZGVsZXRlIHRoZSBwaXBlCnRhYmxlIGF0IHBvaW50 LgoobWFya2Rvd24tdHMtdGFibGUtcHJldmlvdXMtcm93LCBtYXJrZG93bi10cy10YWJsZS1uZXh0 LXJvdykKKG1hcmtkb3duLXRzLXRhYmxlLXByZXZpb3VzLWNlbGwsIG1hcmtkb3duLXRzLXRhYmxl LW5leHQtY2VsbCk6Ck5ldyBjb21tYW5kcyBmb3IgbmF2aWdhdGluZyB0YWJsZSByb3dzIGFuZCBj ZWxscy4KKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYmVsb3cpCihtYXJrZG93bi10cy10 YWJsZS1pbnNlcnQtcm93LWFib3ZlKQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWJlbG93 KQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWFib3ZlKQoobWFya2Rvd24tdHMtdGFibGUt aW5zZXJ0LXJvdyk6IE5ldyBjb21tYW5kcyBmb3IgaW5zZXJ0aW5nIGFuZApjbG9uaW5nIHRhYmxl IHJvd3MuCihtYXJrZG93bi10cy10YWJsZS1kZWxldGUtcm93LCBtYXJrZG93bi10cy10YWJsZS1t b3ZlLXJvdy11cCkKKG1hcmtkb3duLXRzLXRhYmxlLW1vdmUtcm93LWRvd24sIG1hcmtkb3duLXRz LXRhYmxlLW1vdmUtcm93KToKTmV3IGNvbW1hbmRzIGZvciBkZWxldGluZyBhbmQgbW92aW5nIHRh YmxlIHJvd3MuCihtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQpCihtYXJrZG93 bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLXJpZ2h0KQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUt Y29sdW1uLWxlZnQpCihtYXJrZG93bi10cy10YWJsZS1jbG9uZS1jb2x1bW4tcmlnaHQpCihtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uKTogTmV3IGNvbW1hbmRzIGZvciBpbnNlcnRpbmcK YW5kIGNsb25pbmcgdGFibGUgY29sdW1ucy4KKG1hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1jb2x1 bW4pCihtYXJrZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbi1sZWZ0KQoobWFya2Rvd24tdHMtdGFi bGUtbW92ZS1jb2x1bW4tcmlnaHQpCihtYXJrZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbik6IE5l dyBjb21tYW5kcyBmb3IgZGVsZXRpbmcgYW5kCm1vdmluZyB0YWJsZSBjb2x1bW5zLgoobWFya2Rv d24tdHMtdGFibGUtYWxpZ24tY29sdW1uLWxlZnQpCihtYXJrZG93bi10cy10YWJsZS1hbGlnbi1j b2x1bW4tY2VudGVyKQoobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uLXJpZ2h0KQoobWFy a2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uKTogTmV3IGNvbW1hbmRzIGZvciBzZXR0aW5nCmNv bHVtbiBhbGlnbm1lbnQuCihtYXJrZG93bi10cy10YWJsZS1hbGlnbi10YWJsZSk6IE5ldyBjb21t YW5kIHRvIGFsaWduIGFsbApjb2x1bW5zIGluIHRoZSB0YWJsZSBhdCBwb2ludC4KKG1hcmtkb3du LXRzLXRhYmxlLXRyYW5zcG9zZS10YWJsZSk6IE5ldyBjb21tYW5kIHRvIHRyYW5zcG9zZQp0aGUg dGFibGUgYXQgcG9pbnQuCihtYXJrZG93bi10cy10YWJsZS1jb252ZXJ0LWNzdi1yZWdpb24pCiht YXJrZG93bi10cy10YWJsZS1jb252ZXJ0LXRzdi1yZWdpb24pCihtYXJrZG93bi10cy10YWJsZS1j b252ZXJ0LXJlZ2lvbik6IE5ldyBjb21tYW5kcyB0byBjb252ZXJ0CmRlbGltaXRlZCB0ZXh0IHJl Z2lvbnMgdG8gcGlwZSB0YWJsZXMuCihtYXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUtY3N2 KQoobWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlLXRzdikKKG1hcmtkb3duLXRzLXRhYmxl LWV4cG9ydC10YWJsZSk6IE5ldyBjb21tYW5kcyB0byBleHBvcnQgdGhlCnBpcGUgdGFibGUgYXQg cG9pbnQgdG8gQ1NWIG9yIFRTViBmb3JtYXQuCihtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlLW1h cCk6IE5ldyBrZXltYXAgZm9yCm1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUuCihtYXJrZG93bi10 cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YpOiBOZXcgYnVmZmVyLWxvY2FsCnZhcmlh YmxlIGZvciBjb2RlIGJsb2NrIGNvbnRleHQgb3ZlcmxheS4KKG1hcmtkb3duLXRzLS1jb2RlLWJs b2NrLWluLWNvbnRleHQtbW9kZS11cGRhdGUtb3YpOiBOZXcKZnVuY3Rpb24gdXBkYXRpbmcgdGhl IGNvZGUgYmxvY2sgY29udGV4dCBvdmVybGF5LgoobWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZSk6 IE5ldyBtaW5vciBtb2RlIGVuYWJsZWQgd2hlbiBwb2ludAppcyB3aXRoaW4gYSBwaXBlIHRhYmxl LCBhY3RpdmF0aW5nIG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbWFwLgoobWFya2Rvd24tdHMt LWluLXRhYmxlLW1vZGUtb3YpCihtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1nZXQtb3YpCiht YXJrZG93bi10cy0tdGFibGUtdGljay11cGRhdGUpCihtYXJrZG93bi10cy0tdGFibGUtdGljay1z dGFsZS1wKQoobWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtdXBkYXRlLW92KTogTmV3IGhlbHBl cnMgc3VwcG9ydGluZwptYXJrZG93bi10cy1pbi10YWJsZS1tb2RlIG92ZXJsYXkgbWFuYWdlbWVu dC4KKG1hcmtkb3duLXRzLXRhYmxlLW1vZGUpOiBOZXcgbWlub3IgbW9kZSBwcm92aWRpbmcgdGFi bGUgZWRpdGluZwpjb21tYW5kcyBhbmQgYXV0by1hbGlnbm1lbnQuCihtYXJrZG93bi10cy1tb2Rl LW1heWJlKTogUmVtb3ZlOyBhdXRvLW1vZGUtYWxpc3Qgbm93IHVzZXMKbWFya2Rvd24tdHMtbW9k ZSBkaXJlY3RseS4KQXV0by1tb2RlLWFsaXN0OiBBZGQgLm1hcmtkb3duIGFuZCAubWR4IGV4dGVu c2lvbnMuCgoqIGxpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbDogTmV3IGZpbGUg cHJvdmlkaW5nIGV4dHJhCmZlYXR1cmVzIGZvciBtYXJrZG93bi10cy1tb2RlLgoobWFya2Rvd24t dHMtY29tbW9ubWFyay1zcGVjLXVybCwgbWFya2Rvd24tdHMtZ2ZtLXNwZWMtdXJsKTogTmV3CmNv bnN0YW50cyBmb3IgQ29tbW9uTWFyayBhbmQgR0ZNIHNwZWNpZmljYXRpb24gVVJMcy4KKG1hcmtk b3duLXRzLWJyb3dzZS1jb21tb25tYXJrLXNwZWMpCihtYXJrZG93bi10cy1icm93c2UtZ2ZtLXNw ZWMpOiBOZXcgY29tbWFuZHMgdG8gYnJvd3NlIHRoZQpDb21tb25NYXJrIGFuZCBHRk0gc3BlY2lm aWNhdGlvbnMuCihtYXJrZG93bi10cy1jb252ZXJ0KTogTmV3IGN1c3RvbWl6YXRpb24gZ3JvdXAg Zm9yIE1hcmtkb3duCmNvbnZlcnNpb24vZXhwb3J0IGZlYXR1cmVzLgoobWFya2Rvd24tdHMtZGVm YXVsdC1jb252ZXJ0ZXIpOiBOZXcgb3B0aW9uIHRvIHNldCB0aGUgZGVmYXVsdApmb3JtYXQgYW5k IGNvbnZlcnRlciBmb3IgTWFya2Rvd24gZXhwb3J0LgoobWFya2Rvd24tdHMtY29udmVydC1kaXNw bGF5LWZ1bmN0aW9uKTogTmV3IG9wdGlvbiBzcGVjaWZ5aW5nCnRoZSBmdW5jdGlvbiB1c2VkIHRv IGRpc3BsYXkgY29udmVydGVkIG91dHB1dC4KKG1hcmtkb3duLXRzLWNvbnZlcnRlcnMpOiBOZXcg dmFyaWFibGUgbGlzdGluZyBmb3JtYXQvY29udmVydGVyCmNvbmZpZ3VyYXRpb25zIGZvciBwYW5k b2MsIGNtYXJrLCBjbWFyay1nZm0sIG1hcmtkb3duLCBhbmQKbWFya2Rvd24ucGwuCihtYXJrZG93 bi10cy1jb252ZXJ0LWZpbGUsIG1hcmtkb3duLXRzLWNvbnZlcnQpOiBOZXcgY29tbWFuZHMgdG8K Y29udmVydCBNYXJrZG93biBidWZmZXJzIG9yIGZpbGVzIHRvIEhUTUwsIFBERiwgYW5kIG90aGVy CmZvcm1hdHMgdmlhIGV4dGVybmFsIGNvbnZlcnRlcnMuCihtYXJrZG93bi10cy10b2MpOiBOZXcg Y3VzdG9taXphdGlvbiBncm91cCBmb3IgdGFibGUgb2YgY29udGVudHMKZmVhdHVyZXMuCihtYXJr ZG93bi10cy10b2MtZ2VuZXJhdGUtd2Fybi1pZi1ub25lKTogTmV3IG9wdGlvbiBjb250cm9sbGlu ZwpiZWhhdmlvciB3aGVuIG5vIFRPQyBpcyBmb3VuZCBkdXJpbmcgZ2VuZXJhdGlvbi4KKG1hcmtk b3duLXRzLXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZS1saWdodGVyKTogTmV3IG9wdGlvbgpm b3IgdGhlIGJlZm9yZS1zYXZlIFRPQyB1cGRhdGUgbWlub3IgbW9kZSBsaWdodGVyIHN0cmluZy4K KG1hcmtkb3duLXRzLXRvYy1zbHVnLWZ1bmN0aW9uKTogTmV3IG9wdGlvbiB0byBzZWxlY3QgdGhl IHNsdWcKYWxnb3JpdGhtIHVzZWQgZm9yIFRPQyBoZWFkaW5nIGFuY2hvcnMuCihtYXJrZG93bi10 cy0tdG9jLWhhbmRsZXMsIG1hcmtkb3duLXRzLS10b2MtaGFuZGxlLWNsYXNzZXMpOiBOZXcKdmFy aWFibGVzIGRlZmluaW5nIFRPQyBoYW5kbGUgdHlwZXMgYW5kIGNsYXNzZXMuCihtYXJrZG93bi10 cy0tdG9jLWV4cGFuZC1jYW5kaWRhdGUtaGFuZGxlcywgbWFya2Rvd24tdHMtLXRvY3MpCihtYXJr ZG93bi10cy0tdG9jcy1zYW5pdHktY2hlY2spCihtYXJrZG93bi10cy0tdG9jLWNvbGxlY3QtY2Fu ZGlkYXRlcykKKG1hcmtkb3duLXRzLS10b2MtbGlzdC1pdGVtLWRlcHRoKQoobWFya2Rvd24tdHMt LXRvYy1hdHhfaGVhZGVyLW5vcm1hbGl6ZSkKKG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxp emVycykKKG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxpemUpOiBOZXcgaW50ZXJuYWwgaGVs cGVycyBmb3IgVE9DCnBhcnNpbmcgYW5kIHRleHQgbm9ybWFsaXphdGlvbi4KKG1hcmtkb3duLXRz LXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZSk6IE5ldyBtaW5vciBtb2RlIHRoYXQKcmVnZW5l cmF0ZXMgdGFibGVzIG9mIGNvbnRlbnRzIGJlZm9yZSBzYXZpbmcuCihtYXJrZG93bi10cy10b2Mt Y2xlYXItYW5kLXJlbW92ZSwgbWFya2Rvd24tdHMtdG9jLWNsZWFyKTogTmV3CmNvbW1hbmRzIHRv IHJlbW92ZSBvciBjbGVhciBUT0MgYm9kaWVzLgoobWFya2Rvd24tdHMtdG9jLWluc2VydC10ZW1w bGF0ZSk6IE5ldyBjb21tYW5kIHRvIGluc2VydCBhIFRPQwp0ZW1wbGF0ZSBhdCBwb2ludC4KKG1h cmtkb3duLXRzLXRvYy1nZW5lcmF0ZSk6IE5ldyBjb21tYW5kIHRvIGdlbmVyYXRlIHRhYmxlcyBv Zgpjb250ZW50cyBpbiB0aGUgY3VycmVudCBidWZmZXIuCgpJbmNsdWRlcyBmaXhlcyBmb3I6IChi dWcjODA2MTMpIChidWcjODA2MjUpIChidWcjODA2OTApCgpDby1hdXRob3JlZC1ieTogU3TDqXBo YW5lIE1hcmtzIDxzaGlwbWludHNAZ21haWwuY29tPgotLS0KIGxpc3AvdGV4dG1vZGVzL21hcmtk b3duLXRzLW1vZGUteC5lbCB8IDExMzQgKysrKysrCiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10 cy1tb2RlLmVsICAgfCA1NDI4ICsrKysrKysrKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNo YW5nZWQsIDYyNzcgaW5zZXJ0aW9ucygrKSwgMjg1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGxpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbAoKZGlmZiAtLWdpdCBh L2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbCBiL2xpc3AvdGV4dG1vZGVzL21h cmtkb3duLXRzLW1vZGUteC5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNzQwNTA3OGFiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3RleHRtb2Rlcy9tYXJrZG93 bi10cy1tb2RlLXguZWwKQEAgLTAsMCArMSwxMTM0IEBACis7OzsgbWFya2Rvd24tdHMtbW9kZS14 LmVsIC0tLSBtYXJrZG93bi10cy1tb2RlIGV4dHJhcyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0OyAt Ki0KKworOzsgQ29weXJpZ2h0IChDKSAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorCis7OyBBdXRob3IgICAgICAgICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1 bGlhdG9AZ21haWwuY29tPgorOzsgICAgICAgICAgICAgICAgICA6IFN0w6lwaGFuZSBNYXJrcyA8 c2hpcG1pbnRzQGdtYWlsLmNvbT4KKzs7IE1haW50YWluZXIgICAgICAgOiBSYWh1bCBNYXJ0aW0g SnVsaWF0byA8cmFodWwuanVsaWF0b0BnbWFpbC5jb20+Cis7OyBDcmVhdGVkICAgICAgICAgIDog QXByaWwgMjAyNgorOzsgVmVyc2lvbiAgICAgICAgICA6IDEuMAorOzsgUGFja2FnZS1SZXF1aXJl cyA6ICgoZW1hY3MgIjMxLjEiKSkKKzs7IEtleXdvcmRzICAgICAgICAgOiBtYXJrZG93biBtZCB0 ZXh0IGVkaXQgbGFuZ3VhZ2VzIHRyZWUtc2l0dGVyCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdOVSBFbWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor OzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNzIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUg PGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1lbnRhcnk6CisKKzs7 OyBDb2RlOgorCisocmVxdWlyZSAnbWFya2Rvd24tdHMtbW9kZSkKKworOzs7IENvbnZlbmllbmNl OgorCisoZGVmY29uc3QgbWFya2Rvd24tdHMtY29tbW9ubWFyay1zcGVjLXVybAorICAiaHR0cHM6 Ly9zcGVjLmNvbW1vbm1hcmsub3JnL2N1cnJlbnQvIikKKworKGRlZmNvbnN0IG1hcmtkb3duLXRz LWdmbS1zcGVjLXVybAorICAiaHR0cHM6Ly9naXRodWIuZ2l0aHViLmNvbS9nZm0vIikKKworKGRl ZnVuIG1hcmtkb3duLXRzLWJyb3dzZS1jb21tb25tYXJrLXNwZWMgKCkKKyAgIkJyb3dzZSB0aGUg Q29tbW9uTWFyayBNYXJrZG93biBzcGVjIGluIGEgd2ViIGJyb3dzZXIuIgorICAoaW50ZXJhY3Rp dmUpCisgIChicm93c2UtdXJsIG1hcmtkb3duLXRzLWNvbW1vbm1hcmstc3BlYy11cmwpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtYnJvd3NlLWdmbS1zcGVjICgpCisgICJCcm93c2UgdGhlIEdpdEh1 YiBGbGF2b3JlZCBNYXJrZG93biBzcGVjIGluIGEgd2ViIGJyb3dzZXIuIgorICAoaW50ZXJhY3Rp dmUpCisgIChicm93c2UtdXJsIG1hcmtkb3duLXRzLWdmbS1zcGVjLXVybCkpCisKKzs7OyBFeHBv cnQgYW5kIHByZXZpZXc6CisKKyhkZWZncm91cCBtYXJrZG93bi10cy1jb252ZXJ0IG5pbAorICAi Q29udmVydCBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycyBvciBmaWxlcy4iCisgIDpwcmVmaXgg Im1hcmtkb3duLXRzLWNvbnZlcnQtIgorICA6Z3JvdXAgJ3RleHQKKyAgOmdyb3VwICdlZGl0aW5n CisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1kZWZhdWx0LWNv bnZlcnRlciBuaWwKKyAgIkRlZmF1bHQgTWFya2Rvd24gZm9ybWF0IGFuZCBjb252ZXJ0ZXIuCitJ ZiBuaWwsIHlvdSB3aWxsIGJlIHByb21wdGVkIGZvciBhIGZvcm1hdCBhbmQgYSBjb252ZXJ0ZXIu CitTZWUgYG1hcmtkb3duLXRzLWNvbnZlcnRlcnMnLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0 IDp0YWcgIlByb21wdCBmb3IgZm9ybWF0IGFuZCBjb252ZXJ0ZXIiIG5pbCkKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIlBERiB2aWEgUGFuZG9jIiAocGRmIC4gcGFuZG9jKSkKKyAgICAg ICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkhUTUwgdmlhIFBhbmRvYyIgKGh0bWwgLiBwYW5kb2Mp KQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgY21hcmsiIChodG1sIC4g Y21hcmspKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgY21hcmstZ2Zt IChHaXRIdWIgYmVsbHMgYW5kIHdoaXN0bGVzKSIgKGh0bWwgLiBjbWFyay1nZm0pKQorICAgICAg ICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgbWFya2Rvd24iIChodG1sIC4gbWFya2Rv d24pKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgbWFya2Rvd24ucGwi IChodG1sIC4gbWFya2Rvd24ucGwpKQorICAgICAgICAgICAgICAgICAoY29ucyAgOnRhZyAiRm9y bWF0IGFuZCBDb252ZXJ0ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sIDp0YWcg IkZvcm1hdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sIDp0YWcgIkNvbnZlcnRl ciIpKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhk ZWZjdXN0b20gbWFya2Rvd24tdHMtY29udmVydC1kaXNwbGF5LWZ1bmN0aW9uICMnZXd3LW9wZW4t ZmlsZQorICAiRnVuY3Rpb24gdG8gZGlzcGxheSBjb252ZXJ0ZWQgTWFya2Rvd24gdGhlIG91dHB1 dCBmaWxlLgorVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudCwgdGhlIGZp bGUgbmFtZS4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJEaXNwbGF5IHVzaW5nIGBl d3cnIiBld3ctb3Blbi1maWxlKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxh eSBpbiBhIGJyb3dzZXIiIGJyb3dzZS11cmwtb2YtZmlsZSkKKyAgICAgICAgICAgICAgICAgKGNv bnN0IDp0YWcgIkRpc3BsYXkgb3V0cHV0IGZpbGUgaW4gYSBidWZmZXIiIGZpbmQtZmlsZS1vdGhl ci13aW5kb3cpCisgICAgICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJPdGhlciBmdW5jdGlv biIpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRl ZmNvbnN0IG1hcmtkb3duLXRzLS1jb252ZXJ0LWVycm9yLWJ1ZmZlcgorICAiKm1hcmtkb3duLXRz LWNvbnZlcnQgZXJyb3JzKiIpCisKKyhkZWZjb25zdCBtYXJrZG93bi10cy0tY29udmVydC1vdXRw dXQtYnVmZmVyCisgICIqbWFya2Rvd24tdHMtY29udmVydCBvdXRwdXQqIikKKworKGRlZnZhciBt YXJrZG93bi10cy1jb252ZXJ0ZXJzCisgIChsaXN0CisgICAoY29ucyAnaHRtbAorICAgICAgICAg KGxpc3QKKyAgICAgICAgICAoY29ucyAncGFuZG9jCisgICAgICAgICAgICAgICAgKGxpc3QgOmNv bW1hbmQgInBhbmRvYyIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5wdXQgJyhmaWxlIHN0ZGlu KQorICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhmaWxlKQorICAgICAgICAgICAgICAg ICAgICAgIDphcmd1bWVudHMtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRh IChpbnB1dC1maWxlIG91dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVu ZCAobGlzdCAiLWYiICJnZm0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICItdCIgImh0bWw1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1z dGFuZGFsb25lIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW8iIG91 dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBpbnB1dC1m aWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkp KSkpKQorICAgICAgICAgIChjb25zICdjbWFyaworICAgICAgICAgICAgICAgIChsaXN0IDpjb21t YW5kICJjbWFyayIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5wdXQgJyhmaWxlIHN0ZGluKQor ICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhzdGRvdXQpCisgICAgICAgICAgICAgICAg ICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEg KGlucHV0LWZpbGUgX291dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVu ZCAobGlzdCAiLXQiICJodG1sIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdo ZW4gaW5wdXQtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGlu cHV0LWZpbGUpKSkpKSkKKyAgICAgICAgICAoY29ucyAnY21hcmstZ2ZtCisgICAgICAgICAgICAg ICAgKGxpc3QgOmNvbW1hbmQgImNtYXJrLWdmbSIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5w dXQgJyhmaWxlIHN0ZGluKQorICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhzdGRvdXQp CisgICAgICAgICAgICAgICAgICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAgICAgICAgICAg ICAgICAgICAgIChsYW1iZGEgKGlucHV0LWZpbGUgX291dHB1dC1maWxlKQorICAgICAgICAgICAg ICAgICAgICAgICAgKGFwcGVuZCAobGlzdCAiLXQiICJodG1sIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBVc2UgR2l0SHViLXN0eWxlIDxwcmUgbGFuZz4gZm9yIGNv ZGUgYmxvY2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWdpdGh1 Yi1wcmUtbGFuZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSW5j bHVkZSByZW1haW5kZXIgb2YgY29kZSBibG9jayBpbmZvCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IHN0cmluZyBpbiBhIHNlcGFyYXRlIGF0dHJpYnV0ZS4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZnVsbC1pbmZvLXN0cmluZyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgVXNlIHN0eWxlIGF0dHJpYnV0 ZXMgdG8gYWxpZ24gdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgY2VsbHMgaW5zdGVhZCBvZiBhbGlnbiBhdHRyaWJ1dGVzLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLS10YWJsZS1wcmVmZXItc3R5bGUtYXR0cmlidXRlcyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5zaW9uIiAiZm9vdG5v dGVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1leHRlbnNpb24i ICJ0YWJsZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5z aW9uIiAic3RyaWtldGhyb3VnaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIi0tZXh0ZW5zaW9uIiAiYXV0b2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICItLWV4dGVuc2lvbiIgInRhZ2ZpbHRlciIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5zaW9uIiAidGFza2xpc3QiKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2hlbiBpbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkpKQorICAgICAgICAgIDs7ICdtYXJr ZG93bi5wbCBpcyB0aGUgc2FtZSBhcyAnbWFya2Rvd24gd2l0aCBhbm90aGVyIGNvbW1vbiBmaWxl CisgICAgICAgICAgOzsgbmFtZS4KKyAgICAgICAgICAoY29ucyAnbWFya2Rvd24ucGwKKyAgICAg ICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAibWFya2Rvd24ucGwiCisgICAgICAgICAgICAgICAg ICAgICAgOmlucHV0ICcoZmlsZSBzdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICA6b3V0cHV0 ICcoc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgIDphcmd1bWVudHMtZnVuY3Rpb24KKyAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmlsZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKGxpc3QgIi0taHRtbDR0YWdzIikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gaW5wdXQtZmlsZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICItLSIgaW5wdXQtZmlsZSkpKSkpKQorICAgICAg ICAgIDs7ICdtYXJrZG93biBpcyB0aGUgc2FtZSBhcyAnbWFya2Rvd24ucGwgd2l0aCBhbm90aGVy IGNvbW1vbiBmaWxlCisgICAgICAgICAgOzsgbmFtZS4KKyAgICAgICAgICAoY29ucyAnbWFya2Rv d24KKyAgICAgICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAibWFya2Rvd24iCisgICAgICAgICAg ICAgICAgICAgICAgOmlucHV0ICcoZmlsZSBzdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICA6 b3V0cHV0ICcoc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgIDphcmd1bWVudHMtZnVuY3Rp b24KKyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmls ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKGxpc3QgIi0taHRtbDR0YWdzIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gaW5wdXQtZmlsZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICItLSIgaW5wdXQtZmlsZSkpKSkpKSkp CisgICAoY29ucyAncGRmCisgICAgICAgICAobGlzdAorICAgICAgICAgIChjb25zICdwYW5kb2MK KyAgICAgICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAicGFuZG9jIgorICAgICAgICAgICAgICAg ICAgICAgIDppbnB1dCAnKGZpbGUgc3RkaW4pCisgICAgICAgICAgICAgICAgICAgICAgOm91dHB1 dCAnKGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAg ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGlucHV0LWZpbGUgb3V0cHV0LWZpbGUpCisgICAg ICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIChsaXN0ICItZiIgImdmbSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi10IiAicGRmIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLW8iIG91dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hlbiBpbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkpKSkpKQorICAiQW4gYWxpc3Qgb2YgZm9ybWF0 L2NvbnZlcnRlciBjb25maWd1cmF0aW9ucy4KK0l0IGlzIGEgdHdvIGxldmVsIGFsaXN0IHdpdGgg dGhlIGZpcnN0IGxldmVsIGJlaW5nIGZvcm1hdCwgZm9yIGV4YW1wbGUKK2BodG1sJyBvciBgcGRm JywgYW5kIHRoZSBzZWNvbmQgYmVpbmcgdGhlIGNvbnZlcnRlciBuYW1lLCBmb3IgZXhhbXBsZQor YHBhbmRvYycuICBBIGNvbnZlcnRlciBjb25maWd1cmF0aW9uIGVudHJ5IGlzIGEgcGxpc3Qgb2Yg dGhlIGZvcm06CisKKyAgXFw9Jyg6Y29tbWFuZCBcImNvbW1hbmQgbmFtZVwiCisgICAgOmlucHV0 IChmaWxlIHN0ZGluKSA7IGFjY2VwdHMgZmlsZSBuYW1lIG9yIHN0ZGluCisgICAgOm91dHB1dCAo c3Rkb3V0KSAgICA7IHByb2R1Y2VzIHN0ZG91dCBvbmx5CisgICAgOmFyZ3VtZW50cy1mdW5jdGlv biA7IGZ1bmN0aW9uOyBlLmcuLAorICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmls ZSkKKyAgICAgICAoYXBwZW5kIChsaXN0IFwiLXRcIiBcImh0bWxcIikKKyAgICAgICAgICAgICAg ICh3aGVuIGlucHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkp CisKK2Bhcmd1bWVudHMtZnVuY3Rpb24nIGlzIHBhc3NlZCB0d28gYXJndW1lbnRzLCBJTlBVVC1G SUxFIGFuZAorT1VUUFVULUZJTEUuICBJZiBJTlBVVC1GSUxFIGlzIG5pbCwgYXNzdW1lIHN0ZGlu LCBvciBpdCBpcyBhCitmdWxseS1xdWFsaWZpZWQgZmlsZSBuYW1lLiAgSWYgT1VUUFVULUZJTEUg aXMgbmlsLCBhc3N1bWUgc3Rkb3V0LCBvciBpdAoraXMgYSBmdWxseS1xdWFsaWZpZWQgZmlsZSBu YW1lLiAgSXQgc2hvdWxkIHJldHVybiBhIGxpc3Qgb2YKK2FyZ3VtZW50cyBzdWl0YWJsZSBmb3Ig YGNhbGwtcHJvY2VzcycuIikKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBtYXJrZG93bi10cy1j b252ZXJ0LWZpbGUgKGlucHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlzcGxheSBvdmVyd3JpdGUgcXVpZXQpCisgICJDb252ZXJ0IE1h cmtkb3duIElOUFVULUZJTEUgdG8gRk9STUFULgorSWYgb3B0aW9uYWwgRElTUExBWSBpcyBub24t bmlsLCBzaG93IHRoZSBvdXRwdXQgZmlsZSBpbiBhIGJ1ZmZlciwgaWYKK3Bvc3NpYmxlLCB1c2lu ZyB0aGUgZnVuY3Rpb24gYG1hcmtkb3duLXRzLWNvbnZlcnQtZGlzcGxheS1mdW5jdGlvbicuCisK K1dpdGggYSBwcmVmaXggYXJndW1lbnQsIERJU1BMQVkgd2lsbCBiZSBub24tbmlsLgorCitPcHRp b25hbCBGT1JNQVQgaXMgYSBmb3JtYXQvY29udmVydGVyIHBhaXIgc3BlY2lmaWVkIGFzIGEgY29u cworXFw9Jyhmb3JtYXQgLiBjb252ZXJ0ZXIpIGZvciBleGFtcGxlIFxcPScoaHRtbCAuIHBhbmRv YykuICBTZWUKK2BtYXJrZG93bi10cy1jb252ZXJ0ZXJzJy4gIElmIG5pbCwgcHJvbXB0IGZvciB0 aGUgZm9ybWF0IGFuZCBjb252ZXJ0ZXIuCisKK0lmIG9wdGlvbmFsIE9WRVJXUklURSBpcyBub24t bmlsLCBzaWxlbnRseSBvdmVyd3JpdGUgT1VUUFVULUZJTEUgaWYgaXQKK2V4aXN0cy4KKworSWYg UVVJRVQgaXMgbm9uLW5pbCwgaW5oaWJpdCBzaG93aW5nIGNvbnZlcnNpb24gd2FybmluZ3Mgb3Ig ZXJyb3JzLgorCitUaGUgZXh0ZXJuYWwgZXhlY3V0YWJsZSBzcGVjaWZpZWQgYnkgYSBjb252ZXJ0 ZXIgbXVzdCBiZSBpbnN0YWxsZWQgYW5kCitmb3VuZDsgc2VlIHRoZSB2YXJpYWJsZSBgZXhlYy1w YXRoJy4iCisgIChpbnRlcmFjdGl2ZSAiZkNvbnZlcnQgTWFya2Rvd24gZmlsZTogIikKKyAgKG1h cmtkb3duLXRzLWNvbnZlcnQgaW5wdXQtZmlsZSBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGRpc3BsYXkgY3VycmVu dC1wcmVmaXgtYXJnKQorICAgICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdGUKKyAgICAgICAg ICAgICAgICAgICAgICAgcXVpZXQpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIG1hcmtkb3du LXRzLWNvbnZlcnQgKCZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0 LWZpbGUgb3V0cHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgZGlz cGxheSBvdmVyd3JpdGUgcXVpZXQpCisgICJDb252ZXJ0IGEgYG1hcmtkb3duLXRzLW1vZGUnIGJ1 ZmZlciBvciBmaWxlIHRvIEZPUk1BVC4KK0NvbnZlcnQgSU5QVVQtRklMRSB0byBPVVRQVVQtRklM RS4KKworSWYgSU5QVVQtRklMRSBpcyBuaWwsIHVzZSB0aGUgY3VycmVudCBidWZmZXIuCisKK0lm IE9VVFBVVC1GSUxFIGlzIG5pbCwgcHJvbXB0IGZvciBhbiBvdXRwdXQgZmlsZS4KKworT3B0aW9u YWwgRk9STUFUIGlzIGEgZm9ybWF0L2NvbnZlcnRlciBwYWlyIHNwZWNpZmllZCBhcyBhIGNvbnMK K1xcPScoZm9ybWF0IC4gY29udmVydGVyKSBmb3IgZXhhbXBsZSBcXD0nKGh0bWwgLiBwYW5kb2Mp LiAgU2VlCitgbWFya2Rvd24tdHMtY29udmVydGVycycuICBJZiBuaWwsIHByb21wdCBmb3IgdGhl IGZvcm1hdCBhbmQgY29udmVydGVyLgorCitJZiBvcHRpb25hbCBESVNQTEFZIGlzIG5vbi1uaWws IHNob3cgdGhlIG91dHB1dCBmaWxlIGluIGEgYnVmZmVyLCBpZgorcG9zc2libGUsIHVzaW5nIHRo ZSBmdW5jdGlvbiBgbWFya2Rvd24tdHMtY29udmVydC1kaXNwbGF5LWZ1bmN0aW9uJy4KKworV2l0 aCBhIHByZWZpeCBhcmd1bWVudCwgRElTUExBWSB3aWxsIGJlIG5vbi1uaWwuCisKK0lmIG9wdGlv bmFsIE9WRVJXUklURSBpcyBub24tbmlsLCBzaWxlbnRseSBvdmVyd3JpdGUgT1VUUFVULUZJTEUg aWYgaXQKK2V4aXN0cy4KKworSWYgUVVJRVQgaXMgbm9uLW5pbCwgaW5oaWJpdCBzaG93aW5nIGNv bnZlcnNpb24gd2FybmluZ3Mgb3IgZXJyb3JzLgorCitUaGUgZXh0ZXJuYWwgZXhlY3V0YWJsZSBz cGVjaWZpZWQgYnkgYSBjb252ZXJ0ZXIgbXVzdCBiZSBpbnN0YWxsZWQgYW5kCitmb3VuZDsgc2Vl IHRoZSB2YXJpYWJsZSBgZXhlYy1wYXRoJy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHdoZW4gKGFu ZCBpbnB1dC1maWxlCisgICAgICAgICAgICAgKGVxdWFsIGJ1ZmZlci1maWxlLW5hbWUgKGV4cGFu ZC1maWxlLW5hbWUgaW5wdXQtZmlsZSkpCisgICAgICAgICAgICAgKGJ1ZmZlci1tb2RpZmllZC1w KSkKKyAgICAod2hlbiAoeWVzLW9yLW5vLXAgIlNhdmUgbW9kaWZpZWQgYnVmZmVyIGJlZm9yZSBj b252ZXJ0aW5nPyAiKQorICAgICAgKHNhdmUtYnVmZmVyKSkpCisgICh1bmxlc3MgaW5wdXQtZmls ZQorICAgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtY29udmVy dCkpCisKKyAgKHNldHEgZGlzcGxheSAob3IgZGlzcGxheSBjdXJyZW50LXByZWZpeC1hcmcpKQor CisgIChsZXQqICgoY29udmVydGVyLWZvcm1hdAorICAgICAgICAgIChvciAoY2FyIGZvcm1hdCkK KyAgICAgICAgICAgICAgKGNhciBtYXJrZG93bi10cy1kZWZhdWx0LWNvbnZlcnRlcikKKyAgICAg ICAgICAgICAgKGludGVybgorICAgICAgICAgICAgICAgKGNvbXBsZXRpbmctcmVhZAorICAgICAg ICAgICAgICAgICJTZWxlY3QgYW4gb3V0cHV0IGZvcm1hdDogIgorICAgICAgICAgICAgICAgICht YXBjYXIgKGxhbWJkYSAoZWx0KSAoc3ltYm9sLW5hbWUgKGNhciBlbHQpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWNvbnZlcnRlcnMpCisgICAgICAgICAgICAgICAgbmls CisgICAgICAgICAgICAgICAgdAorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAg ICdtYXJrZG93bi10cy1jb252ZXJ0ZXItZm9ybWF0KSkpKQorICAgICAgICAgKGNvbnZlcnRlcgor ICAgICAgICAgIChvciAoY2RyIGZvcm1hdCkKKyAgICAgICAgICAgICAgKGNkciBtYXJrZG93bi10 cy1kZWZhdWx0LWNvbnZlcnRlcikKKyAgICAgICAgICAgICAgKGludGVybgorICAgICAgICAgICAg ICAgKGNvbXBsZXRpbmctcmVhZAorICAgICAgICAgICAgICAgICJTZWxlY3QgYSBjb252ZXJ0ZXI6 ICIKKyAgICAgICAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKHN5bWJvbC1uYW1lIChj YXIgZWx0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoYWxpc3QtZ2V0IGNvbnZlcnRlci1m b3JtYXQgbWFya2Rvd24tdHMtY29udmVydGVycykpCisgICAgICAgICAgICAgICAgbmlsCisgICAg ICAgICAgICAgICAgdAorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICdtYXJr ZG93bi10cy1jb252ZXJ0ZXIpKSkpCisgICAgICAgICAoY29uZmlnIChhbGlzdC1nZXQgY29udmVy dGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsaXN0LWdldCBjb252ZXJ0ZXItZm9y bWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1j b252ZXJ0ZXJzKSkpCisgICAgICAgICAoY29tbWFuZCAocGxpc3QtZ2V0IGNvbmZpZyA6Y29tbWFu ZCkpCisgICAgICAgICAoY29tbWFuZC1pbnB1dCAocGxpc3QtZ2V0IGNvbmZpZyA6aW5wdXQpKQor ICAgICAgICAgKGNvbW1hbmQtb3V0cHV0IChwbGlzdC1nZXQgY29uZmlnIDpvdXRwdXQpKQorICAg ICAgICAgKHN0ZGluLW9ubHkgKGVxdWFsIGNvbW1hbmQtaW5wdXQgJyhzdGRpbikpKQorICAgICAg ICAgKHN0ZG91dC1vbmx5IChlcXVhbCBjb21tYW5kLW91dHB1dCAnKHN0ZG91dCkpKSkKKyAgICAo dW5sZXNzIG91dHB1dC1maWxlCisgICAgICAoc2V0cSBvdXRwdXQtZmlsZQorICAgICAgICAgICAg KHJlYWQtZmlsZS1uYW1lICJPdXRwdXQgZmlsZSBuYW1lOiAiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNh dCAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZpbGUtcmVsYXRpdmUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAob3IgaW5wdXQtZmlsZSBidWZmZXItZmlsZS1uYW1lKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzeW1ib2wtbmFtZSBjb252ZXJ0ZXItZm9ybWF0KSkpKQorICAgICAgKHVubGVz cyBvdXRwdXQtZmlsZQorICAgICAgICAodXNlci1lcnJvciAiT3V0cHV0IGZpbGUgbmFtZSBpcyBy ZXF1aXJlZCIpKSkKKyAgICAod2hlbiBvdXRwdXQtZmlsZQorICAgICAgKHdoZW4gKGFuZCAobm90 IG92ZXJ3cml0ZSkKKyAgICAgICAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgb3V0cHV0LWZpbGUp CisgICAgICAgICAgICAgICAgIChub3QgKHllcy1vci1uby1wIChmb3JtYXQgIiVzIGV4aXN0czsg b3ZlcndyaXRlPyIgb3V0cHV0LWZpbGUpKSkpCisgICAgICAgICh1c2VyLWVycm9yICJOb3Qgb3Zl cndyaXRpbmcgZXhpc3RpbmcgZmlsZTogJXMiIG91dHB1dC1maWxlKSkKKyAgICAgIChzZXRxIG91 dHB1dC1maWxlIChleHBhbmQtZmlsZS1uYW1lIG91dHB1dC1maWxlKSkpCisKKworICAgIChsZXQg KChjb21tYW5kLWFyZ3MgKGZ1bmNhbGwgKHBsaXN0LWdldCBjb25maWcgOmFyZ3VtZW50cy1mdW5j dGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIGlucHV0LWZpbGUg KGV4cGFuZC1maWxlLW5hbWUgaW5wdXQtZmlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdXRwdXQtZmlsZSkpKQorICAgICAgKHVubGVzcyAoZXhlY3V0YWJsZS1maW5kIGNv bW1hbmQpCisgICAgICAgICh1c2VyLWVycm9yICJgJXMnIGV4ZWN1dGFibGUgbm90IGZvdW5kIiBj b21tYW5kKSkKKyAgICAgIChsZXQgKChlcnJvci1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tY29udmVydC1lcnJvci1idWZm ZXIpKQorICAgICAgICAgICAgKGVycm9yLXRlbXAtZmlsZSAobWFrZS10ZW1wLWZpbGUgIm1hcmtk b3duLXRzLWNvbnZlcnQtc3RkZXJyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmlsICIubG9nIikpCisgICAgICAgICAgICAoc3Rkb3V0LWJ1ZmZlciAod2hl biBzdGRvdXQtb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0LWJ1ZmZlci1j cmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1jb252ZXJ0 LW91dHB1dC1idWZmZXIpKSkpCisgICAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgICAg KGxldCAoZXhpdC1zdGF0dXMpCisgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGVy cm9yLWJ1ZmZlcgorICAgICAgICAgICAgICAgIChzcGVjaWFsLW1vZGUpCisgICAgICAgICAgICAg ICAgKHNldHEgYnVmZmVyLXJlYWQtb25seSBuaWwpCisgICAgICAgICAgICAgICAgKHdpZGVuKQor ICAgICAgICAgICAgICAgIChlcmFzZS1idWZmZXIpKQorICAgICAgICAgICAgICAod2hlbiBzdGRv dXQtYnVmZmVyCisgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3Rkb3V0LWJ1 ZmZlcgorICAgICAgICAgICAgICAgICAgKHNwZWNpYWwtbW9kZSkKKyAgICAgICAgICAgICAgICAg IChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgbmlsKQorICAgICAgICAgICAgICAgICAgKHdpZGVuKQor ICAgICAgICAgICAgICAgICAgKGVyYXNlLWJ1ZmZlcikpKQorICAgICAgICAgICAgICAoY29uZAor ICAgICAgICAgICAgICAgKChhbmQgaW5wdXQtZmlsZSAobm90IHN0ZGluLW9ubHkpKQorICAgICAg ICAgICAgICAgIChzZXRxIGV4aXQtc3RhdHVzCisgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5 ICMnY2FsbC1wcm9jZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsaXN0IHN0ZG91dC1idWZmZXIgZXJyb3ItdGVtcC1maWxlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC1h cmdzKSkpCisgICAgICAgICAgICAgICAoKGFuZCBpbnB1dC1maWxlIHN0ZGluLW9ubHkpCisgICAg ICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQt ZmlsZS1jb250ZW50cyBpbnB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgKHNldHEgZXhpdC1z dGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2NhbGwtcHJvY2Vzcy1yZWdp b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpc3Qgc3Rkb3V0LWJ1ZmZlciBlcnJvci10ZW1wLWZpbGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tbWFuZC1hcmdzKSkpKQorICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAo d2l0aG91dC1yZXN0cmljdGlvbgorICAgICAgICAgICAgICAgICAgKHNldHEgZXhpdC1zdGF0dXMK KyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2NhbGwtcHJvY2Vzcy1yZWdpb24KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpc3Qgc3Rkb3V0LWJ1ZmZlciBlcnJvci10ZW1wLWZpbGUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t bWFuZC1hcmdzKSkpKSkKKyAgICAgICAgICAgICAgKGxldCAoKGVycm9yLXNpemUgKGZpbGUtYXR0 cmlidXRlLXNpemUgKGZpbGUtYXR0cmlidXRlcyBlcnJvci10ZW1wLWZpbGUpKSkpCisgICAgICAg ICAgICAgICAgKHdoZW4gKGFuZCBlcnJvci1zaXplICg+IGVycm9yLXNpemUgMCkpCisgICAgICAg ICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBlcnJvci1idWZmZXIKKyAgICAgICAgICAg ICAgICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGVycm9yLXRlbXAtZmlsZSkKKyAgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkpKSkKKyAgICAgICAgICAgICAgKGNv bmQgKChlcSAwIGV4aXQtc3RhdHVzKSA7IEludGVnZXIgb3Igc3RyaW5nLgorICAgICAgICAgICAg ICAgICAgICAgKHdoZW4gc3Rkb3V0LWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAod2l0 aC1jdXJyZW50LWJ1ZmZlciBzdGRvdXQtYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAg KHdyaXRlLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSBvdXRwdXQtZmlsZSkpKQorICAg ICAgICAgICAgICAgICAgICAgKHdoZW4gZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAgICAo ZnVuY2FsbCBtYXJrZG93bi10cy1jb252ZXJ0LWRpc3BsYXktZnVuY3Rpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LWZpbGUpKQorICAgICAgICAgICAgICAgICAgICAg KHdoZW4gKGFuZCAobm90IHF1aWV0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bm90ICh6ZXJvcCAoYnVmZmVyLXNpemUgZXJyb3ItYnVmZmVyKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh5ZXMtb3Itbm8tcAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGZvcm1hdC1tZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IkNvbnZlcnNpb24gZmlsZSBgJXMnIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIHdpdGggd2FybmluZ3M7 IGRpc3BsYXkgdGhlbT8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0 LWZpbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXktYnVmZmVyIGVycm9yLWJ1 ZmZlcikpCisgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiQ29udmVyc2lvbiBmaWxlIHN1 Y2Nlc3NmdWxseSBjcmVhdGVkIGAlcyclcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG91dHB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHplcm9wIChi dWZmZXItc2l6ZSBlcnJvci1idWZmZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiB3aXRoIHdh cm5pbmdzOyBzZWUgYnVmZmVyIGAlcyciIGVycm9yLWJ1ZmZlcikpKSkKKyAgICAgICAgICAgICAg ICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgIChpZiBxdWlldAorICAgICAgICAgICAgICAg ICAgICAgICAgIChlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udmVydGVyIGFi b3J0ZWQgd2l0aCBleGl0IGNvZGUgJVM7IHNlZSBidWZmZXIgYCVzJyBmb3IgZXJyb3JzIgorICAg ICAgICAgICAgICAgICAgICAgICAgICBleGl0LXN0YXR1cworICAgICAgICAgICAgICAgICAgICAg ICAgICBtYXJrZG93bi10cy0tY29udmVydC1lcnJvci1idWZmZXIpCisgICAgICAgICAgICAgICAg ICAgICAgICh3aGVuICh5ZXMtb3Itbm8tcCAoZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkNvbnZlcnRlciBhYm9ydGVkIHdpdGggZXhpdCBjb2RlICVT OyBkaXNwbGF5IGVycm9ycz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXhpdC1zdGF0dXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5LWJ1 ZmZlciBlcnJvci1idWZmZXIpKSkpKSkKKyAgICAgICAgICAoZGVsZXRlLWZpbGUgZXJyb3ItdGVt cC1maWxlKSkpKSkpCisKKzs7OyBUYWJsZSBvZiBjb250ZW50czoKKworKGRlZmdyb3VwIG1hcmtk b3duLXRzLXRvYyBuaWwKKyAgIlRhYmxlIG9mIGNvbnRlbnRzIGZvciBgbWFya2Rvd24tdHMtbW9k ZScgYnVmZmVycy4iCisgIDpwcmVmaXggIm1hcmtkb3duLXRzLXRvYy0iCisgIDpncm91cCAndGV4 dAorICA6Z3JvdXAgJ2VkaXRpbmcKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9tIG1h cmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUgJ2luc2VydC10ZW1wbGF0ZQorICAi V2FybiBpZiBubyB0YWJsZXMgd2VyZSBwcm9jZXNzZWQgd2hlbiBjYWxsaW5nIGBtYXJrZG93bi10 cy10b2MtZ2VuZXJhdGUnLgorSWYgbmlsLCBkbyBub3RoaW5nLiAgSWYgdGhlIHN5bWJvbCBgaW5z ZXJ0LXRlbXBsYXRlJyBhbmQKK2BtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUnIHdhcyBjYWxsZWQg aW50ZXJhY3RpdmVseSwgb2ZmZXIgdG8gaW5zZXJ0IGEKK3RlbXBsYXRlIGlmIHRoZXJlIGFyZSBu b25lLiAgSWYgYG5vLXRhYmxlcycsIHdhcm4gd2hlbiB0aGVyZSBhcmUgbm8KK3RhYmxlcyBpbiB0 aGUgYnVmZmVyLiAgYG5vLWFjdGl2ZS10YWJsZXMnLCBpcyB0aGUgc2FtZSBhcyBgbm8tdGFibGVz Jword2l0aCB0aGUgYWRkaXRpb24gb2YgYSB3YXJuaW5nIGlmIHRoZXJlIGFyZSB0YWJsZXMsIGJ1 dCBub25lIGFyZSBhY3RpdmUuIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiTm8gd2Fy bmluZ3MiIG5pbCkKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkluc2VydCBhIHRhYmxl IHRlbXBsYXRlIChpZiBpbnRlcmFjdGl2ZSkiIGluc2VydC10ZW1wbGF0ZSkKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIldhcm4gaWYgbm8gdGFibGVzIHdlcmUgcHJvY2Vzc2VkIiBuby10 YWJsZXMpCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJXYXJuIGlmIG5vIGFjdGl2ZSB0 YWJsZXMgd2VyZSBwcm9jZXNzZWQiIG5vLWFjdGl2ZS10YWJsZXMpKQorICA6dmVyc2lvbiAiMzEu MSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy10 b2MtdXBkYXRlLWJlZm9yZS1zYXZlLW1vZGUtbGlnaHRlciAiIFt0b2Mgb24gc2F2ZV0iCisgICJN aW5vci1tb2RlIFwibGlnaHRlclwiIGZvciBgbWFya2Rvd24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUt c2F2ZS1tb2RlJy4KK05vdGUgdGhlIHNpbmdsZSBzcGFjZSBwcmVmaXguIgorICA6dHlwZSAnKGNo b2ljZSAoY29uc3QgOnRhZyAiRGVmYXVsdCIgIiBbdG9jIG9uIHNhdmVdIikKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIk5vbmUiIG5pbCkKKyAgICAgICAgICAgICAgICAgKHN0cmluZyA6 dGFnICJPdGhlciBzdHJpbmciKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNp b24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtdG9jLXNsdWctZnVuY3Rpb24gIydt YXJrZG93bi10cy0tc2x1Zy1naXRodWIKKyAgIkZ1bmN0aW9uIHRvIGdlbmVyYXRlIE1hcmtkb3du IGhlYWRpbmcgXCJzbHVnc1wiIGluIHRhYmxlcyBvZiBjb250ZW50cy4iCisgIDp0eXBlICcoY2hv aWNlIChjb25zdCA6dGFnICJHaXRIdWIgc2x1ZyIgbWFya2Rvd24tdHMtLXNsdWctZ2l0aHViKQor ICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiUGFuZG9jIHNsdWciIG1hcmtkb3duLXRzLS1z bHVnLXBhbmRvYykKKyAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIDp0YWcgIk90aGVyIGZ1bmN0 aW9uIikpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCiso ZGVmdmFyIG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcworICAnKChoZWFkaW5nIC4gKGgxIGgyIGgz IGg0IGg1IGg2KSkKKyAgICAoc2V0ZXh0IC4gKHNoMSBzaDIpKQorICAgIChpdGVtIC4gKG1pbnVz IHBsdXMgc3RhcikpCisgICAgKG51bWJlcmVkLWl0ZW0gLiAoZG90IHBhcmVuKSkKKyAgICAoY29k ZSAuIChjb2RlKSkpCisgICJNYXAgaGlnaCBsZXZlbCBub2RlIGhhbmRsZXMgdG8gdGhlaXIgYmFz ZSBjb25zdGl0dWVudHMuCitUaGUgc3BlY2lhbCBzeW1ib2wgYGFsbCcgbWVhbnMgYWxsIGhhbmRs ZXMuIikKKworKGRlZnZhciBtYXJrZG93bi10cy0tdG9jLWhhbmRsZS1jbGFzc2VzCisgIChsZXQg KCh4KSkKKyAgICAoZG9saXN0IChlbHQgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzKQorICAgICAg KGRvbGlzdCAodmFsIChjZHIgZWx0KSkKKyAgICAgICAgKHB1c2ggYCgsdmFsIC4gLChjYXIgZWx0 KSkgeCkpKQorICAgIHgpCisiSW52ZXJzZSBvZiBgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzJy4i KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRvYy1leHBhbmQtY2FuZGlkYXRlLWhhbmRsZXMgKGhh bmRsZXMpCisgICJFeHBhbmQgY2FuZGlkYXRlIEhBTkRMRVMgYW5kIGtlZXAgb25seSBiYXNlIGhh bmRsZXMuCitTZWUgYG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcycuIgorICAobGV0ICgoZXhwYW5k ZWQgKG1ha2UtaGFzaC10YWJsZSkpCisgICAgICAgIChyZXMpKQorICAgICh1bmxlc3MgKGxpc3Rw IGhhbmRsZXMpCisgICAgICAoc2V0cSBoYW5kbGVzIChsaXN0IGhhbmRsZXMpKSkKKyAgICAod2hl biAoZXF1YWwgaGFuZGxlcyAnKGFsbCkpCisgICAgICAoc2V0cSBoYW5kbGVzIChtYXBjYXIgIydj YXIgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzKSkpCisgICAgKGRvbGlzdCAoZWx0IGhhbmRsZXMp CisgICAgICAoc2V0cSBlbHQgKGFsaXN0LWdldCBlbHQgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVz IGVsdCkpCisgICAgICAoY29uZCAoKGNvbnNwIGVsdCkKKyAgICAgICAgICAgICAoZG9saXN0IChr IGVsdCkgKHB1dGhhc2ggayB0IGV4cGFuZGVkKSkpCisgICAgICAgICAgICAodCAocHV0aGFzaCBl bHQgdCBleHBhbmRlZCkpKSkKKyAgICAobWFwaGFzaCAobGFtYmRhIChrIF92KSAocHVzaCBrIHJl cykpIGV4cGFuZGVkKQorICAgIHJlcykpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdG9jcyAoJm9w dGlvbmFsIGJlZyBlbmQpCisgICJTY2FuIHRoZSBjdXJyZW50IGJ1ZmZlciBmb3IgdG9jIGVudHJp ZXMgZnJvbSBCRUcgdG8gRU5ELgorSWYgQkVHIGlzIG5pbCwgdXNlIGBwb2ludC1taW4nLiAgSWYg RU5EIGlzIG5pbCwgdXNlIGBwb2ludC1tYXgnLgorCitSZXR1cm4gYW4gYWxpc3Qgb2YgdGhlIGZv cm06CisgIFxcPScoKGtleXdvcmQgKG5vZGUgYmVnIGVuZCB2YXJzKSkpCisKK1ZhcnMgYXJlIGV4 cGFuZGVkIHZpYSBgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lJy4KKworUmV0dXJuIHRo ZSBsaXN0IGluIHRoZSBvcmRlciBvZiBhcHBlYXJhbmNlIGluIHRoZSBidWZmZXIuIgorICA7OyBO T1RFOiBUaGlzIHNjYW5zIGFsbCBtYXRjaGluZyBub2RlcyBiZWxvdyBCRUcgd2l0aCBubyBtYXhp bXVtIGNvdW50CisgIDs7IGV2ZW4gd2hlbiB3ZSB3YW50IG9ubHkgYSBzaW5nbGUgbmV4dCBtYXRj aGluZyBpdGVtLiAgUGVyaGFwcworICA7OyBgdHJlZXNpdC1xdWVyeS1jYXB0dXJlJyBjb3VsZCBi ZSBpbXByb3ZlZCB0byBhY2NlcHQgYSBtYXgtY291bnQKKyAgOzsgYXJndW1lbnQuCisgIDs7Cisg IDs7IE1hdGNoICJtYXJrZG93bi10cy10b2M6IiwgIm1hcmtkb3duLXRzLXRvYy1hYmMxMjM6IiBi dXQgbm90CisgIDs7ICJtYXJrZG93bi10cy10b2N4eHg6Ii4KKyAgKGxldCAoKHJlcykpCisgICAg KGRvbGlzdCAobm9kZQorICAgICAgICAgICAgICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAg ICAgICAgICAgJ21hcmtkb3duCisgICAgICAgICAgICAgICcoKCgoaHRtbF9ibG9jaykgQG1hcmtk b3duLXRzLXRvYykKKyAgICAgICAgICAgICAgICAgKDptYXRjaCAiPCEtLVtbOmJsYW5rOl1dKm1h cmtkb3duLXRzLXRvY1xcKC1bWzphbG51bTpdXStcXCkqOiIgQG1hcmtkb3duLXRzLXRvYykpKQor ICAgICAgICAgICAgICAob3IgYmVnIChwb2ludC1taW4pKQorICAgICAgICAgICAgICAob3IgZW5k IChwb2ludC1tYXgpKQorICAgICAgICAgICAgICAnbm9kZS1vbmx5KSkKKyAgICAgIChsZXQqICgo cyAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSAnbm8tcHJvcGVydHkpKQorICAgICAgICAgICAgICht YXRjaCAoc3RyaW5nLW1hdGNoICJcXChtYXJrZG93bi10cy10b2NcXCgtW1s6YWxudW06XV0rXFwp KlxcKTouKiIgcykpCisgICAgICAgICAgICAgKGtleXdvcmQgKHdoZW4gbWF0Y2ggKG1hdGNoLXN0 cmluZyAxIHMpKSkpCisgICAgICAgIChsZXQgKCh2YXJzKSkKKyAgICAgICAgICAod2l0aC13b3Jr LWJ1ZmZlcgorICAgICAgICAgICAgKGluc2VydCBzKQorICAgICAgICAgICAgKHNldHEgdmFycyAo aGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lKSkpCisgICAgICAgICAgKHB1c2gKKyAgICAg ICAgICAgYCgsa2V5d29yZAorICAgICAgICAgICAgIChub2RlIC4gLG5vZGUpCisgICAgICAgICAg ICAgKGJlZyAuICwodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgIChlbmQg LiAsKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAgICAgKHZhcnMgLiAsdmFycykp CisgICAgICAgICAgIHJlcykpKSkKKyAgICAobnJldmVyc2UgcmVzKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tdG9jcy1zYW5pdHktY2hlY2sgKHRvY3MpCisgICJTYW5pdHkgY2hlY2sgVE9DUyBm b3IgcGFpcmVkIG1hcmtkb3duLXRzLXRvYzogbWFya2Rvd24tdHMtdG9jLWVuZDogbm9kZXMuCitT aWduYWwgYW4gZXJyb3IgaWYgVE9DUyBhcmUgaW5zYW5lLgorU2VlIGBtYXJrZG93bi10cy0tdG9j cycuIgorICAoc2VxLW1hcC1pbmRleGVkCisgICAobGFtYmRhIChlbHQgaWR4KQorICAgICAod2hl biAoZXF1YWwgIm1hcmtkb3duLXRzLXRvYyIgKGNhciBlbHQpKQorICAgICAgICh1bmxlc3MgKGVx dWFsICJtYXJrZG93bi10cy10b2MtZW5kIiAoY2FyIChudGggKDErIGlkeCkgdG9jcykpKQorICAg ICAgICAgKHVzZXItZXJyb3IKKyAgICAgICAgICAiXCJtYXJrZG93bi10cy10b2NcIiBhdCBwb3Np dGlvbiAlZCBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgbWF0Y2hpbmcgXCJtYXJrZG93bi10cy10b2Mt ZW5kXCIiCisgICAgICAgICAgKGFsaXN0LWdldCAnYmVnIGVsdCkpKSkpCisgICB0b2NzKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLS10b2MtY29sbGVjdC1jYW5kaWRhdGVzICh0b2Mtc3RhcnQtbm9k ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2MtZW5kLW5v ZGUgaGFuZGxlcyBmcm9tKQorICAiUmV0dXJuIGFuIGFsaXN0IG9mIHRvYyBlbnRyeSBjYW5kaWRh dGVzIGZyb20gdGhlIGN1cnJlbnQgYnVmZmVyLgorSEFORExFUyBpcyBhIGxpc3Qgb2YgYmFzZSBo YW5kbGVzOyBzZWUgYG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcycuCisKK1RPQy1TVEFSVC1OT0RF IGlzIHRoZSBcIm1hcmtkb3duLXRzLXRvYy1zdGFydFwiIG5vZGUuCitUT0MtRU5ELU5PREUgaXMg dGhlIFwibWFya2Rvd24tdHMtdG9jLWVuZFwiIG5vZGUuCisKK0lmIEZST00gaXMgdGhlIHN5bWJv bCBgYWJvdmUnLCBzb3VyY2UgY2FuZGlkYXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKK3RoZSBi dWZmZXIgdW50aWwgdGhlIHRvYyBzdGFydCBub2RlLiAgSWYgYGJlbG93Jywgc291cmNlIGNhbmRp ZGF0ZXMgZnJvbQordG9jIHN0YXJ0IG5vZGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAg SWYgYGFsbCcsIHVzZSB0aGUgd2hvbGUKK2J1ZmZlci4KKworUmVtb3ZlIGlnbm9yZWQgY2FuZGlk YXRlcyBjb250YWluaW5nIFwiPCEtLSBtYXJrZG93bi10cy1pZ25vcmU6IC0tPlwiLgorCitTb3J0 IHRoZSBsaXN0IGJ5IHRoZSBzdGFydGluZyBjaGFyYWN0ZXIgcG9zaXRpb25zIG9mIG5vZGVzLgor CitUaGUgYWxpc3QgaXMgb2YgdGhlIGZvcm06CisgIFxcPScoKGhhbmRsZSAuIG5vZGUpKSIKKyAg KGxldCAoY2FuZGlkYXRlcyBiZWcgZW5kKQorICAgIChwY2FzZSBmcm9tCisgICAgICAoJ2Fib3Zl CisgICAgICAgKHNldHEgYmVnIChwb2ludC1taW4pKQorICAgICAgIChzZXRxIGVuZCAodHJlZXNp dC1ub2RlLXN0YXJ0IHRvYy1zdGFydC1ub2RlKSkpCisgICAgICAoJ2JlbG93CisgICAgICAgKHNl dHEgYmVnICh0cmVlc2l0LW5vZGUtZW5kIHRvYy1lbmQtbm9kZSkpCisgICAgICAgKHNldHEgZW5k IChwb2ludC1tYXgpKSkKKyAgICAgICgnYWxsCisgICAgICAgKHNldHEgYmVnIChwb2ludC1taW4p KQorICAgICAgIChzZXRxIGVuZCAocG9pbnQtbWF4KSkpKQorCisgICAgOzsgSXQgbG9va3MgbGlr ZSB3ZSBjYW5ub3QgZ2V0IHRoZW0gaW4gb25lIGZlbGwgc3dvb3AuCisgICAgKGRvbGlzdCAoZWx0 IGhhbmRsZXMpCisgICAgICAoc2V0cQorICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAoYXBwZW5k CisgICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAgKHBjYXNlIGVsdAorICAgICAgICAgICgnaDEg KHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChhdHhf aGVhZGluZyAoYXR4X2gxX21hcmtlcikgKGlubGluZSkgQGgxKSkgYmVnIGVuZCkpCisgICAgICAg ICAgKCdoMiAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisgICAgICAgICAgICAgICAgJ21hcmtkb3du ICcoKGF0eF9oZWFkaW5nIChhdHhfaDJfbWFya2VyKSAoaW5saW5lKSBAaDIpKSBiZWcgZW5kKSkK KyAgICAgICAgICAoJ2gzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAn bWFya2Rvd24gJygoYXR4X2hlYWRpbmcgKGF0eF9oM19tYXJrZXIpIChpbmxpbmUpIEBoMykpIGJl ZyBlbmQpKQorICAgICAgICAgICgnaDQgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAg ICAgICAgICdtYXJrZG93biAnKChhdHhfaGVhZGluZyAoYXR4X2g0X21hcmtlcikgKGlubGluZSkg QGg0KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdoNSAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisg ICAgICAgICAgICAgICAgJ21hcmtkb3duICcoKGF0eF9oZWFkaW5nIChhdHhfaDVfbWFya2VyKSAo aW5saW5lKSBAaDUpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ2g2ICh0cmVlc2l0LXF1ZXJ5LWNh cHR1cmUKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygoYXR4X2hlYWRpbmcgKGF0eF9oNl9t YXJrZXIpIChpbmxpbmUpIEBoNikpIGJlZyBlbmQpKQorICAgICAgICAgICgnc2gxICh0cmVlc2l0 LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgJ21hcmtkb3duICcoKHNldGV4dF9oZWFk aW5nIGhlYWRpbmdfY29udGVudDogKF8pIEBzaDEgKHNldGV4dF9oMV91bmRlcmxpbmUpKSkgYmVn IGVuZCkpCisgICAgICAgICAgKCdzaDIgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAg ICAgICAgICAnbWFya2Rvd24gJygoc2V0ZXh0X2hlYWRpbmcgaGVhZGluZ19jb250ZW50OiAoXykg QHNoMiAoc2V0ZXh0X2gyX3VuZGVybGluZSkpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ21pbnVz ICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygo bGlzdF9pdGVtIChsaXN0X21hcmtlcl9taW51cykgKHBhcmFncmFwaCAoaW5saW5lKSBAbWludXMp KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdwbHVzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAg ICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BsdXMp IChwYXJhZ3JhcGggKGlubGluZSkgQHBsdXMpKSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdzdGFy ICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChs aXN0X2l0ZW0gKGxpc3RfbWFya2VyX3N0YXIpIChwYXJhZ3JhcGggKGlubGluZSkgQHN0YXIpKSkg YmVnIGVuZCkpCisgICAgICAgICAgKCdkb3QgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAg ICAgICAgICAgICAnbWFya2Rvd24gJygobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3QpIChwYXJh Z3JhcGggKGlubGluZSkgQGRvdCkpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ3BhcmVuICh0cmVl c2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygobGlzdF9p dGVtIChsaXN0X21hcmtlcl9wYXJlbnRoZXNpcykgKHBhcmFncmFwaCAoaW5saW5lKSBAcGFyZW4p KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdjb2RlICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAg ICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChmZW5jZWRfY29kZV9ibG9jayAoaW5mb19zdHJp bmcgKGxhbmd1YWdlKSkgQGNvZGUpKSBiZWcgZW5kKSkpKSkpCisgICAgKHNvcnQKKyAgICAgKHNl cS1yZW1vdmUKKyAgICAgIChsYW1iZGEgKGVsdCkKKyAgICAgICAgKHN0cmluZy1tYXRjaC1wICI8 IS0tW1s6Ymxhbms6XV0qbWFya2Rvd24tdHMtaWdub3JlOltbOmJsYW5rOl1dKi0tPiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCAoY2RyIGVsdCkgdCkpKQorICAg ICAgY2FuZGlkYXRlcykKKyAgICAgOmtleSAobGFtYmRhIChlbHQpCisgICAgICAgICAgICAodHJl ZXNpdC1ub2RlLXN0YXJ0IChjZHIgZWx0KSkpCisgICAgIDpsZXNzcCAjJzwKKyAgICAgOmluLXBs YWNlIHQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10b2MtbGlzdC1pdGVtLWRlcHRoIChub2Rl KQorICAiUmV0dXJuIE5PREUncyBpdGVtIGRlcHRoIHJlbGF0aXZlIHRvIGl0cyBwcmVkZWNlc3Nv cnMuCitJZiBOT0RFIGlzIG5vdCBwYXJ0IG9mIGEgbGlzdCwgcmV0dXJuIG5pbC4iCisgICAgKGxl dCAoKGRlcHRoIG5pbCkgKG4gKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpKQorICAgICAgKHdo aWxlIG4KKyAgICAgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAibGlzdCIp CisgICAgICAgICAgKHNldHEgZGVwdGggKDErIChvciBkZXB0aCAwKSkpKQorICAgICAgICAoc2V0 cSBuICh0cmVlc2l0LW5vZGUtcGFyZW50IG4pKSkKKyAgICAgIGRlcHRoKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUgKHRleHQpCisgICJSZW1vdmUgdHJh aWxpbmcgIyBmcm9tIFRFWFQgdW5sZXNzIHRoZXkgYXJlIGJhY2tzbGFzaCBlc2NhcGVkLgorRmly c3QgcmVtb3ZlIEhUTUwgY29tbWVudHMuIgorICAoaWYgKHN0cmluZy1tYXRjaC1wICJbWzpibGFu azpdXSpcXFxcKyMrW1s6Ymxhbms6XV0qXG4qXFwnIiB0ZXh0KQorICAgICAgdGV4dAorICAgIChy ZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIltbOmJsYW5rOl1dKiMrW1s6Ymxhbms6XV0qXG4qXFwn IiAiIiB0ZXh0KSkpCisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtLXRvYy10ZXh0LW5vcm1hbGl6ZXJz CisgIGAoKGhlYWRpbmcgLiBtYXJrZG93bi10cy0tdG9jLWF0eF9oZWFkZXItbm9ybWFsaXplKQor ICAgIChoMSAuIG1hcmtkb3duLXRzLS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUpCisgICAgKGgy IC4gbWFya2Rvd24tdHMtLXRvYy1hdHhfaGVhZGVyLW5vcm1hbGl6ZSkKKyAgICAoaDMgLiBtYXJr ZG93bi10cy0tdG9jLWF0eF9oZWFkZXItbm9ybWFsaXplKQorICAgIChoNCAuIG1hcmtkb3duLXRz LS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUpCisgICAgKGg1IC4gbWFya2Rvd24tdHMtLXRvYy1h dHhfaGVhZGVyLW5vcm1hbGl6ZSkKKyAgICAoaDYgLiBtYXJrZG93bi10cy0tdG9jLWF0eF9oZWFk ZXItbm9ybWFsaXplKSkKKyAgIk1hcCBub2RlIHR5cGUgaGFuZGxlcyB0byBmdW5jdGlvbnMgdGhh dCBub3JtYWxpemUgaXRzIHRleHQuCitTZWUgYG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxp emUnLgorRWFjaCBmdW5jdGlvbiBhY2NlcHRzIG9uZSBhcmd1bWVudCwgdGhlIHN0cmluZyBURVhU LCBhbmQgcmV0dXJucyBhIHN0cmluZy4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRvYy10ZXh0 LW5vcm1hbGl6ZSAoaGFuZGxlIG5vZGUgJm9wdGlvbmFsIHRleHQpCisgICJOb3JtYWxpemUgTk9E RSdzIFRFWFQgYWNjb3JkaW5nIHRvIGl0cyBIQU5ETEUuCitURVhUIHNob3VsZCBoYXZlIG5vIHRl eHQgcHJvcGVydGllcy4gIElmIFRFWFQgaXMgbmlsLCB1c2UgdGhlIE5PREUncwordGV4dC4gIFRo aXMgaXMgbm90IGFsd2F5cyBjb3JyZWN0IHNvIGl0J3MgYmVzdCB0byBwYXNzIFRFWFQgaWYgeW91 IGtub3cKK2l0IGluIHRoZSBjYWxsaW5nIGNvbnRleHQuCisKK0lmIG5vIG5vcm1hbGl6ZXIgaXMg Zm91bmQsIHJldHVybiBURVhULgorCitPbmUgZXhhbXBsZSBub3JtYWxpemF0aW9uIGlzIGF0eF9o ZWFkaW5nIHRleHQgdGhhdCBlbmRzIGluIHRyYWlsaW5nIGhhc2gKK3NpZ25zIHdoaWNoIGFyZSBp bnRlbmRlZCB0byBiZSBlbGlkZWQgc28gXCJIZWFkaW5nIFRleHQgIyNcIiBpcwordHJhbnNmb3Jt ZWQgaW50byBcIkhlYWRpbmcgVGV4dFwiLiIKKyAgKHNldHEgdGV4dCAob3IgdGV4dCAodHJlZXNp dC1ub2RlLXRleHQgbm9kZSAnbm8tcHJvcGVydHkpKSkKKyAgKGlmLWxldCogKChmaXhlciAoYWxp c3QtZ2V0IGhhbmRsZSBtYXJrZG93bi10cy0tdG9jLXRleHQtbm9ybWFsaXplcnMpKSkKKyAgICAg IChmdW5jYWxsIGZpeGVyIHRleHQpCisgICAgdGV4dCkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVm aW5lLW1pbm9yLW1vZGUgbWFya2Rvd24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUtc2F2ZS1tb2RlCisg ICJJZiBlbmFibGVkLCB1cGRhdGUgYG1hcmtkb3duLXRzLW1vZGUnIHRhYmxlcyBvZiBjb250ZW50 cyBiZWZvcmUgc2F2aW5nLiIKKyAgOmluaXQtdmFsdWUgbmlsCisgIDpnbG9iYWwgbmlsCisgIDps aWdodGVyIG1hcmtkb3duLXRzLXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZS1saWdodGVyCisg IChpZiAoZGVyaXZlZC1tb2RlLXAgJ21hcmtkb3duLXRzLW1vZGUpCisgICAgICAoaWYgbWFya2Rv d24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUtc2F2ZS1tb2RlCisgICAgICAgICAgKGFkZC1ob29rICdi ZWZvcmUtc2F2ZS1ob29rICMnbWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlIG5pbCAnbG9jYWwpCisg ICAgICAgIChyZW1vdmUtaG9vayAnYmVmb3JlLXNhdmUtaG9vayAjJ21hcmtkb3duLXRzLXRvYy1n ZW5lcmF0ZSAnbG9jYWwpKQorICAgIChzZXRxIG1hcmtkb3duLXRzLXRvYy11cGRhdGUtYmVmb3Jl LXNhdmUtbW9kZSBuaWwpCisgICAgKGx3YXJuICdtYXJrZG93bi10cy10b2MtdXBkYXRlLWJlZm9y ZS1zYXZlLW1vZGUKKyAgICAgICAgICAgOndhcm5pbmcKKyAgICAgICAgICAgIk1pbm9yIG1vZGUg dmFsaWQgb25seSBpbiBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycy4iKSkpCisKKzs7OyMjI2F1 dG9sb2FkCisoZGVmdW4gbWFya2Rvd24tdHMtdG9jLWNsZWFyLWFuZC1yZW1vdmUgKCZvcHRpb25h bCBiZWcgZW5kKQorICAiUmVtb3ZlIGBtYXJrZG93bi10cy1tb2RlJyB0YWJsZSBvZiBjb250ZW50 cyBib2RpZXMgYW5kIHRlbXBsYXRlcy4KK09wZXJhdGUgb24gdGhlIGFjdGl2ZSByZWdpb24gQkVH IHRvIEVORCwgb3RoZXJ3aXNlIG9wZXJhdGUgb24gdGhlCitidWZmZXIsIHdoaWNoIG1heSBiZSBu YXJyb3dlZC4iCisgIChpbnRlcmFjdGl2ZSAiUiIpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1u b3QtbW9kZSAnbWFya2Rvd24tdHMtdG9jLWNsZWFyLWFuZC1yZW1vdmUpCisgIChtYXJrZG93bi10 cy10b2MtY2xlYXIgYmVnIGVuZCAncmVtb3ZlKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBt YXJrZG93bi10cy10b2MtY2xlYXIgKCZvcHRpb25hbCBiZWcgZW5kIHJlbW92ZSkKKyAgIkNsZWFy IGBtYXJrZG93bi10cy1tb2RlJyB0YWJsZSBvZiBjb250ZW50cyBib2RpZXMuCitPcGVyYXRlIG9u IHRoZSBhY3RpdmUgcmVnaW9uIEJFRyB0byBFTkQsIG90aGVyd2lzZSBvcGVyYXRlIG9uIHRoZQor YnVmZmVyLCB3aGljaCBtYXkgYmUgbmFycm93ZWQuCitJZiBvcHRpb25hbCBSRU1PVkUgaXMgbm9u LW5pbCwgcmVtb3ZlIHRhYmxlcyBpbmNsdWRpbmcgdGhlaXIgdGVtcGxhdGVzLiIKKyAgKGludGVy YWN0aXZlICJSIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10 cy10b2MtY2xlYXIpCisgIChzZXRxIGJlZyAob3IgYmVnIChwb2ludC1taW4pKSkKKyAgKHNldHEg ZW5kIChvciBlbmQgKHBvaW50LW1heCkpKQorICAodW5sZXNzIChlcSBiZWcgZW5kKQorICAgIDs7 IENvbnZlcnQgbWFya2VycyB0byBhYnNvbHV0ZSBwb3NpdGlvbnMuCisgICAgKHNldHEgYmVnIChp ZiAobWFya2VycCBiZWcpIChtYXJrZXItcG9zaXRpb24gYmVnKSBiZWcpKQorICAgIChzZXRxIGVu ZCAoaWYgKG1hcmtlcnAgZW5kKSAobWFya2VyLXBvc2l0aW9uIGVuZCkgZW5kKSkKKyAgICA7OyBO T1RFOiBPcGVyYXRlIG9uIHRoZSB3aWRlbmVkIGJ1ZmZlciB0byBhdm9pZCB0cmVlc2l0ZXIgY3Jh c2ggaXNzdWVzLgorICAgICh3aXRob3V0LXJlc3RyaWN0aW9uCisgICAgICAobGV0ICgodG9jcykK KyAgICAgICAgICAgIChiZWctcG9zIGJlZykKKyAgICAgICAgICAgIChlbmQtcG9zIGVuZCkpCisg ICAgICAgIDs7IFdlIHNjYW4gZWFjaCBwYXNzIGJlY2F1c2UgdGhlaXIgcG9zaXRpb25zIGNoYW5n ZS4KKyAgICAgICAgKHdoaWxlIChhbmQgKDwgYmVnLXBvcyBlbmQtcG9zKQorICAgICAgICAgICAg ICAgICAgICAoc2V0cSB0b2NzIChtYXJrZG93bi10cy0tdG9jcyBiZWctcG9zIGVuZC1wb3MpKSkK KyAgICAgICAgICAobWFya2Rvd24tdHMtLXRvY3Mtc2FuaXR5LWNoZWNrIHRvY3MpCisgICAgICAg ICAgOzsgQWZ0ZXIgc2FuaXR5IGNoZWNraW5nLCB3ZSBrbm93IHRoZSBzZWNvbmQgZWxlbWVudCBp cyBhCisgICAgICAgICAgOzsgdG9jLWVuZC4KKyAgICAgICAgICAobGV0KiAoKHRvYyAobnRoIDAg dG9jcykpCisgICAgICAgICAgICAgICAgICh0b2MtZW5kIChudGggMSB0b2NzKSkKKyAgICAgICAg ICAgICAgICAgKHJlZy1iZWcgKGlmIHJlbW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGFsaXN0LWdldCAnYmVnIHRvYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxp c3QtZ2V0ICdlbmQgdG9jKSkpCisgICAgICAgICAgICAgICAgIChyZWctZW5kIChpZiByZW1vdmUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC1nZXQgJ2VuZCB0b2MtZW5kKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC1nZXQgJ2JlZyB0b2MtZW5kKSkpCisg ICAgICAgICAgICAgICAgIChyZWctc2l6ZSAoLSByZWctZW5kIHJlZy1iZWcpKSkKKyAgICAgICAg ICAgIChkZWxldGUtcmVnaW9uIHJlZy1iZWcgcmVnLWVuZCkKKyAgICAgICAgICAgIDs7IFN0YXJ0 IHRoZSBuZXh0IHBhc3MgYWZ0ZXIgdGhpcyB0b2MtZW5kLiAgQWRqdXN0IGZvciB0aGUKKyAgICAg ICAgICAgIDs7IGRlbGV0ZWQgcmVnaW9uLgorICAgICAgICAgICAgKHNldHEgYmVnLXBvcyAoLSAo YWxpc3QtZ2V0ICdlbmQgdG9jLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn LXNpemUpKQorICAgICAgICAgICAgKHNldHEgZW5kLXBvcyAobWluIChwb2ludC1tYXgpICgtIGVu ZC1wb3MgcmVnLXNpemUpKSkpKSkpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBtYXJrZG93 bi10cy10b2MtaW5zZXJ0LXRlbXBsYXRlICgmb3B0aW9uYWwgY2hhcikKKyAgIkluc2VydCBhIGBt YXJrZG93bi10cy1tb2RlYCB0YWJsZSBvZiBjb250ZW50cyB0ZW1wbGF0ZSBhdCBwb2ludC4KKwor Q0hBUiBpcyB0aGUgdGVtcGxhdGUgdHlwZSBcImJcIiBmb3IgYmFzaWMsIFwiY1wiIGZvciBjb21w bGV0ZS4gIElmIENIQVIKK2lzIG5pbCBhbmQgdGhlIGNvbW1hbmQgaXMgcnVuIGludGVyYWN0aXZl bHksIHByb21wdCBmb3IgYSB0ZW1wbGF0ZS4KKworVGhlIGJhc2ljIHRlbXBsYXRlIHVzZXMgYWxs IGRlZmF1bHRzIGFuZCBpcyBsaWtlbHkgdGhlIGJlc3QgY2hvaWNlIGZvcgorbW9zdCB1c2VzLiAg VGhlIGNvbXBsZXRlIHRlbXBsYXRlIGlsbHVzdHJhdGVzIGFsbCBwYXJhbWV0ZXJzIHNldCB0bwor dGhlaXIgZGVmYXVsdHMgYW5kIGlzIHVzZWZ1bCBhcyBhIHN0YXJ0aW5nIHBvaW50IHRvIGN1c3Rv bWl6ZSBhIHRhYmxlLiIKKyAgKGludGVyYWN0aXZlICJjVGVtcGxhdGUgW2JdYXNpYyBbY11vbXBs ZXRlOiIpCisgIChwY2FzZSBjaGFyCisgICAgKD9iCisgICAgIChpbnNlcnQgIjwhLS0gbWFya2Rv d24tdHMtdG9jOiAtLT5cbiIKKyAgICAgICAgICAgICAiPCEtLSBtYXJrZG93bi10cy10b2MtZW5k OiAtLT5cbiIpKQorICAgICg/YworICAgICAoaW5zZXJ0ICI8IS0tIG1hcmtkb3duLXRzLXRvYzog LSotICIKKyAgICAgICAgICAgICAibWluLWRlcHRoOiAxOyAiCisgICAgICAgICAgICAgIm1heC1k ZXB0aDogbmlsOyAiCisgICAgICAgICAgICAgImNhbmRpZGF0ZXM6IChoZWFkaW5nKTsgIgorICAg ICAgICAgICAgICJmcm9tOiBiZWxvdzsgIgorICAgICAgICAgICAgICJzdHlsZTogaXRlbTsgIgor ICAgICAgICAgICAgICJpbmRlbnQ6IDE7ICIKKyAgICAgICAgICAgICAibm8tbGluazogbmlsOyAi CisgICAgICAgICAgICAgInJlbGF0aXZlLWRlcHRoOiBuaWw7ICIKKyAgICAgICAgICAgICAiaWdu b3JlOiBuaWw7ICIKKyAgICAgICAgICAgICAiLSotIC0tPlxuIgorICAgICAgICAgICAgICI8IS0t IG1hcmtkb3duLXRzLXRvYy1lbmQ6IC0tPlxuIikpCisgICAgKF8gKHVzZXItZXJyb3IgIk5vIHN1 Y2ggdGVtcGxhdGUgdHlwZTogJWMiIGNoYXIpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4g bWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlICgmb3B0aW9uYWwgaW50ZXJhY3RpdmUgYmVnIGVuZCkK KyAgIkdlbmVyYXRlIHRhYmxlcyBvZiBjb250ZW50cyBpbiB0aGUgY3VycmVudCBidWZmZXIuCitg bWFya2Rvd24tdHMtbW9kZScgdXNlcyBNYXJrZG93biBIVE1MIGNvbW1lbnQgZWxlbWVudHMgdG8g aWRlbnRpZnkgdGFibGUKK29mIGNvbnRlbnRzIChha2EgdG9jKSBpbnNlcnRpb24gYm91bmRhcmll cyBhbmQgdGhlIHBhcmFtZXRlcnMgZm9yIGVhY2gKK3RhYmxlLiAgRGVyaXZlIHRhYmxlIGNvbnRl bnQgZnJvbSB0aGUgTWFya2Rvd24gZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQKK2J1ZmZlciB3aGlj aCBhcmUgdXN1YWxseSBoZWFkaW5ncyBidXQgY2FuIGFsc28gYmUgbGlzdCBpdGVtcywgc2V0ZXh0 CitoZWFkZXJzLCBuYW1lZCBjb2RlIGJsb2Nrcy4KKworT3BlcmF0ZSBvbiB0aGUgYWN0aXZlIHJl Z2lvbiBCRUcgdG8gRU5ELCBvdGhlcndpc2Ugb3BlcmF0ZSBvbiB0aGUKK2J1ZmZlciwgd2hpY2gg bWF5IGJlIG5hcnJvd2VkLgorCitFYWNoIHRpbWUgeW91IHJ1biB0aGlzIGNvbW1hbmQsIGV4aXN0 aW5nIHRhYmxlcyBvZiBjb250ZW50cyBhcmUgY2xlYXJlZAorYW5kIHJlZnJlc2hlZCB3aXRoIG5l dyBjb250ZW50LiAgU28gZG9uJ3QgcGxhY2UgdG9jIGVsZW1lbnRzIGFyb3VuZAoraW1wb3J0YW50 IHRleHQuCisKK1RoZSBidWZmZXIgY2FuIGhhdmUgb25lIG9yIG1vcmUgdG9jcy4gIEJ5IGRlZmF1 bHQsIHBvcHVsYXRlIGVhY2ggdG9jCit3aXRoIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBi dWZmZXIgYmVsb3cgdGhlIHRvYy4gIFRoZXJlZm9yZSwgdGhlCitlYXNpZXN0IHdheSB0byBpbnNl cnQgYSBjb21wbGV0ZSB0YWJsZSBvZiBjb250ZW50cywgaXMgdG8gcHV0IHRoZSB0b2MKK3RlbXBs YXRlIG5lYXIgdGhlIHRvcCBvZiB5b3VyIGJ1ZmZlci4KKworQSBiYXNpYyBlbXB0eSB0b2MgdGVt cGxhdGUgbG9va3MgbGlrZSB0aGlzOgorCitIZWFkZXIgdGV4dCB5b3Ugd2FudCBoZXJlLgorCis8 IS0tIG1hcmtkb3duLXRzLXRvYzogLS0+CitDb250ZW50cyBpbnNlcnRlZCBiZXR3ZWVuIHRoZXNl IGVsZW1lbnRzLgorPCEtLSBtYXJrZG93bi10cy10b2MtZW5kOiAtLT4KKworRm9vdGVyIHRleHQg eW91IHdhbnQgaGVyZS4KKworVXNlIHRoZSBjb21tYW5kIGBtYXJrZG93bi10cy10b2MtaW5zZXJ0 LXRlbXBsYXRlJyB0byBpbnNlcnQgYSB0YWJsZSBvZgorY29udGVudHMgdGVtcGxhdGUuCisKK1Vz ZSB0aGUgY29tbWFuZCBgbWFya2Rvd24tdHMtdG9jLWNsZWFyJyB0byBjbGVhciB0YWJsZSBjb250 ZW50LCBhbmQgdGhlCitjb21tYW5kIGBtYXJrZG93bi10cy10b2MtY2xlYXItYW5kLXJlbW92ZScg dG8gYm90aCBjbGVhciBhbmQgcmVtb3ZlCit0YWJsZSBjb250ZW50IGFuZCB0ZW1wbGF0ZXMuCisK K0J5IGRlZmF1bHQsIGEgdG9jIGluY2x1ZGVzIGhlYWRlcnMgYXQgYWxsIGxldmVscyBiZWxvdyB0 aGUgdG9jIHdoaWNoIGFyZQorcHJlc2VudGVkIGFzIGxpc3QgaXRlbXMgd2l0aCBsaW5rcy4KKwor VG8gaWdub3JlIGEgTWFya2Rvd24gZWxlbWVudCB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBpbmNs dWRlZCBpbiB0aGUKK3RvYywgYWRkIGEgdG9jIGlnbm9yZSBlbGVtZW50OgorCisjIyBJZ25vcmUg TWUgPCEtLSBtYXJrZG93bi10cy10b2MtaWdub3JlOiAtLT4KKworVGhlIHN0YXJ0aW5nIHRvYyBl bGVtZW50IGFjY2VwdHMgcGFyYW1ldGVycyBpbiB0aGUgc3ludGF4IG9mIEVtYWNzIGZpbGUKK3Zh cmlhYmxlcy4KKworRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGdlbmVyYXRlIGEgdGFibGUg b2YgY29udGVudHMgbGltaXRlZCB0bworaGVhZGluZ3MgdHdvIGxldmVscyBkZWVwOgorCis8IS0t IG1hcmtkb3duLXRzLXRvYzogLSotIG1heC1kZXB0aDogMjsgLSotIC0tPgorPCEtLSBtYXJrZG93 bi10cy10b2MtZW5kOiAtLT4KKworT3IgdXNlIG9ubHkgaGVhZGluZ3MgdHdvIGFuZCB0aHJlZSBs ZXZlbHMgZGVlcC4KKworPCEtLSBtYXJrZG93bi10cy10b2M6IC0qLSBtaW4tZGVwdGg6IDI7IG1h eC1kZXB0aDogMzsgLSotIC0tPgorPCEtLSBtYXJrZG93bi10cy10b2MtZW5kOiAtLT4KKworVGhl c2UgYXJlIHRoZSBzdXBwb3J0ZWQgcGFyYW1ldGVycyB3aGljaCBhcmUgb3B0aW9uYWwuICBUaGV5 IGVhY2ggbGlzdAordGhlaXIgZGVmYXVsdHMuCisKKyAgbWluLWRlcHRoOiAxICAgICAgICAgIDsg YW4gaW50ZWdlcgorICBtYXgtZGVwdGg6IG5pbCAgICAgICAgOyBhbiBpbnRlZ2VyCisgIGNhbmRp ZGF0ZXM6IChoZWFkaW5nKSA7IGEgbGlzdAorICBmcm9tOiBiZWxvdyAgICAgICAgICAgOyBhIHN5 bWJvbAorICBzdHlsZTogaXRlbSAgICAgICAgICAgOyBhIHN5bWJvbAorICBpbmRlbnQ6IDEgICAg ICAgICAgICAgOyBhIG51bWJlcgorICBuby1saW5rOiBuaWwgICAgICAgICAgOyBhIGJvb2xlYW4K KyAgcmVsYXRpdmUtZGVwdGg6IG5pbCAgIDsgYSBib29sZWFuCisgIGlnbm9yZTogbmlsICAgICAg ICAgICA7IGEgYm9vbGVhbgorCitgbWluLWRlcHRoJyBhbmQgYG1heC1kZXB0aCcgYm90aCBkZWZh dWx0IHRvIHVzaW5nIGFsbCBjYW5kaWRhdGVzIGF0CitldmVyeSBsZXZlbC4gIFVzZSBgbWluLWRl cHRoJyB0byBpZ25vcmUgbGV2ZWwgMSBoZWFkaW5ncyBsaWtlIFwiIworSGVhZGluZ1wiLCBieSB1 c2luZyAyLiAgVXNlIGBtYXgtZGVwdGgnIHRvIGNvbnRyb2wgaG93IGRlZXAgaW50byB0aGUKK2hl YWRpbmcgaGllcmFyY2h5IHlvdSBuZWVkIHlvdXIgdG9jIHRvIGdvLiAgVXNlIDMgdG8gc3RvcCBh dCBsZXZlbCB0aHJlZQoraGVhZGluZ3MuCisKK0hlYWRpbmdzIGRpY3RhdGUgdGhlIGxldmVsIG9m IHRoZWlyIGNoaWxkcmVuIGV2ZW4gaWYgaGVhZGluZ3MgYXJlCitleGNsdWRlZCBmcm9tIGNhbmRp ZGF0ZXMuICBPdGhlciBlbGVtZW50IHR5cGVzIGluaGVyaXQgdGhlIGxldmVsIG9mCit0aGVpciBw cmVjZWRpbmcgaGVhZGluZy4KKworYGNhbmRpZGF0ZXMnIGlzIGEgbGlzdCBhbmQgY2FuIGNvbnRh aW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgTWFya2Rvd24KK2VsZW1lbnQgc2hvcnRjdXQgbmFtZXMu ICBZb3UgY2FuIG1peCBoaWdoZXItbGV2ZWwgZ3JvdXBpbmcgc3ltYm9scyBhbmQKK2xvd2VyIGxl dmVsIHN5bWJvbHMuCisKKyAgYWxsIChpbmNsdWRlcyBldmVyeXRoaW5nKQorICBoZWFkaW5nIChp bmNsdWRlcyB0aGUgYmVsb3cpCisgICAgaDEgaDIgaDMgaDQgaDUgaDYKKyAgc2V0ZXh0IChpbmNs dWRlcyB0aGUgYmVsb3cpCisgICAgc2gxIHNoMgorICBpdGVtIChpbmNsdWRlcyB0aGUgYmVsb3cp CisgICAgbWludXMgcGx1cyBzdGFyCisgIG51bWJlcmVkLWl0ZW0gKGluY2x1ZGVzIHRoZSBiZWxv dykKKyAgICBkb3QgcGFyZW4KKyAgY29kZSAobmFtZWQgY29kZSBibG9ja3MpCisKK2Bmcm9tJyBj b250cm9scyB0aGUgZGlyZWN0aW9uIGFuZCBzY29wZSBmcm9tIHdoaWNoIGNhbmRpZGF0ZXMgYXJl CitzZWxlY3RlZC4gIFR5cGljYWxseSwgYSB0b2MgaXMgcGxhY2VkIGF0IHRoZSBiZWdpbm5pbmcg b2YgYSBidWZmZXIgYW5kCitgZnJvbScgaXMgYGJlbG93JyB0byBjYXB0dXJlIGVudHJ5IGNhbmRp ZGF0ZXMgYWZ0ZXIgdGhlIHRvYy4gIElmIHlvdSBzZXQKK2Bmcm9tJyB0byBgYWJvdmUnLCBjYW5k aWRhdGVzIGFyZSBzZWxlY3RlZCBmcm9tIGFib3ZlIHRoZSB0b2MuICBVc2UKK2BhbGwnIHRvIGNh cHR1cmUgZXZlcnkgZW50cnkgY2FuZGlkYXRlLiAgVGhpcyBpcyB1c2VmdWwgdG8gY3JlYXRlIGEK K2NvbXBsZXRlIHRvYyBhdCB0aGUgZW5kIG9mIHlvdXIgYnVmZmVyLgorCitUaGUgYHN0eWxlJyBw YXJhbWV0ZXIgY2FuIGJlIG5pbCwgYGl0ZW0nLCBgbnVtYmVyJyBvciBgbnVtYmVyLicuICBVbmRl cgorbmlsLCBlbnRyaWVzIGhhdmUgbm8gZGVjb3JhdGlvbnMuICBJZiBgaXRlbScsIGVudHJpZXMg YXJlIHByZWZpeGVkIHdpdGgKK1wiLVwiLiAgSWYgYGJ1bGxldCcsIHByZWZpeCB3aXRoIFwiKlwi LiAgSWYgYG51bWJlcicsIG51bWVyaWMgcHJlZml4ZXMKK2FyZSBnZW5lcmF0ZWQsIGZvciBleGFt cGxlIDEsIDEuMSwgMiwgMi4xLCAyLjEuMSwgMi4xLjIuICBVc2UgYG51bWJlci4nCit0byBhZGQg YSBwZXJpb2QgdG8gZWFjaCBlbnRyeSdzIG51bWJlci4KKworYGluZGVudCcgaXMgYW4gaW50ZWdl ciBiZXR3ZWVuIDAgYW5kIDEwLiAgMCBtZWFucyBub3RoaW5nIHNob3VsZCBiZQoraW5kZW50ZWQu ICBPdGhlcndpc2UsIGVhY2ggZW50cnkgaXMgaW5kZW50ZWQgYnkgdGhlIG51bWJlciBvZiBzcGFj ZXMgb2YKK2l0cyBNYXJrZG93biBsZXZlbCBtdWx0aXBsaWVkIGJ5IHRoaXMgdmFsdWUuICBDYW5k aWRhdGVzIHRoYXQgaGF2ZSBubworbmF0aXZlIGxldmVsIHN1Y2ggYXMgbGlzdCBpdGVtcyBpbmhl cml0IHRoZSBiYXNlIGluZGVudGF0aW9uIGxldmVsIG9mCitpdHMgcHJlY2VkaW5nIGhlYWRlci4g IExpc3QgaXRlbSBoaWVyYXJjaGllcyBhbmQgY29kZSBibG9ja3MgaW5kZW50Cit1bmRlciB0aGF0 IGJhc2UuCisKK1NldCBgbm8tbGluaycgdG8gdCBpZiB5b3UgZG8gbm90IHdhbnQgeW91ciBlbnRy aWVzIHRvIGhhdmUgaGVhZGVyIGxpbmtzLgorQnkgZGVmYXVsdCwgZWFjaCBlbnRyeSBkZXJpdmVk IGZyb20gYSBoZWFkaW5nIGlzIHByZXNlbnRlZCBhcyBhIGxpbmsgdG8KK2l0cyBzb3VyY2UgaGVh ZGluZy4gIE5PVEU6IFRoZSBlbGVtZW50cyByZXByZXNlbnRlZCBieSBgc2V0ZXh0JywgYGl0ZW0n LAorYG51bWJlcmVkLWl0ZW0nLCBgY29kZScgZG8gbm90IHN1cHBvcnQgbGlua3MuCisKK1VzZSBg cmVsYXRpdmUtZGVwdGgnIHRvIGNyZWF0ZSBhIHRvYyB1bmRlcm5lYXRoIGEgaGVhZGluZywgbGlt aXRpbmcgdGhlCit0b2MgdG8gaGVhZGluZyBkZXB0aHMgdW5kZXJuZWF0aCB0aGUgcHJlY2VkaW5n IGhlYWRlciBhbmQgc3BlY2lmeSB0aGUKK2xldmVscyByZWxhdGl2ZSB0byB0aGF0IGhlYWRlci4g IE1vcmUgY29uY3JldGVseSwgaWYgdGhlIHByZWNlZGluZworaGVhZGVyIGlzIGEgbGV2ZWwgMSBc IiNcIiBoZWFkZXIsIGBtaW4tZGVwdGgnIDEgYW5kIGBtYXgtZGVwdGgnIDIgd2lsbAorYmUgaW50 ZXJwcmV0ZWQgdG8gYmUgMiBhbmQgMy4gIElmIHlvdSBkZW1vdGUgdGhlIGhlYWRlciB0byBsZXZl bCAyCitcIiMjXCIgdGhleSB3aWxsIGJlIGludGVycHJldGVkIGFzIDMgYW5kIDQuICBUaGlzIGlz IHVzZWZ1bCB0byBhdm9pZAorZnVzc2luZyB3aXRoIHRvYyBjb25maWd1cmF0aW9ucyB1bmRlciBo ZWFkZXJzIHdoZW4geW91IGNoYW5nZSB0aGVpcgorbGV2ZWxzLgorCitGb3IgZXhhbXBsZToKKwor PCEtLSBtYXJrZG93bi10cy10b2M6IC0qLSByZWxhdGl2ZS1kZXB0aDogdDsgbWluLWRlcHRoOiAx OyBtYXgtZGVwdGg6IDI7IC0qLSAtLT4KKzwhLS0gbWFya2Rvd24tdHMtdG9jLWVuZDogLS0+CisK K0ZpbmFsbHksIGlmIGBpZ25vcmUnIGlzIHQsIHlvdSBjYW4ga2VlcCBhIHRvYyBlbGVtZW50IGlu IHBsYWNlIGFuZCBza2lwCitpdC4KKworSU5URVJBQ1RJVkUgd2lsbCBiZSBub24tbmlsIGlmIHRo aXMgY29tbWFuZCB3YXMgaW52b2tlZCBpbnRlcmFjdGl2ZWx5LgorCitTZWUgYG1hcmtkb3duLXRz LXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUnIHRvIGNvbmZpZ3VyZSB3YXJuaW5ncyBhYm91dAor dGFibGVzIG5vdCBiZWluZyBwcm9jZXNzZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4i CisgIChpbnRlcmFjdGl2ZSAicFxuUiIpCisgIDs7IE5PVEU6IElmIHBhcmFtZXRlcnMgb3IgdGhl aXIgZGVmYXVsdHMgY2hhbmdlLCBiZSBzdXJlIHRvIG1pcnJvcgorICA7OyB0aGVtIGluIGBtYXJr ZG93bi10cy10b2MtaW5zZXJ0LXRlbXBsYXRlJy4KKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5v dC1tb2RlICdtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUpCisgIChzZXRxIGJlZyAob3IgYmVnIChw b2ludC1taW4pKSkKKyAgKHNldHEgZW5kIChvciBlbmQgKHBvaW50LW1heCkpKQorICAodW5sZXNz IChlcSBiZWcgZW5kKQorICAgIDs7IENvbnZlcnQgbWFya2VycyB0byBhYnNvbHV0ZSBwb3NpdGlv bnMuCisgICAgKHNldHEgYmVnIChpZiAobWFya2VycCBiZWcpIChtYXJrZXItcG9zaXRpb24gYmVn KSBiZWcpKQorICAgIChzZXRxIGVuZCAoaWYgKG1hcmtlcnAgZW5kKSAobWFya2VyLXBvc2l0aW9u IGVuZCkgZW5kKSkKKyAgICA7OyBOT1RFOiBPcGVyYXRlIG9uIHRoZSB3aWRlbmVkIGJ1ZmZlciB0 byBhdm9pZCB0cmVlc2l0ZXIgY3Jhc2ggaXNzdWVzLgorICAgICh3aXRob3V0LXJlc3RyaWN0aW9u CisgICAgICAobGV0ICgodG9jcyAobWFya2Rvd24tdHMtLXRvY3MgYmVnIGVuZCkpKQorICAgICAg ICAodW5sZXNzIHRvY3MKKyAgICAgICAgICAoaWYgKGFuZCBpbnRlcmFjdGl2ZQorICAgICAgICAg ICAgICAgICAgIChlcSAnaW5zZXJ0LXRlbXBsYXRlIG1hcmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13 YXJuLWlmLW5vbmUpKQorICAgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAobWFy a2Rvd24tdHMtdG9jLWluc2VydC10ZW1wbGF0ZSkKKyAgICAgICAgICAgICAgICA7OyBJZiB0aGUg dXNlciBkaWRuJ3QgcXVpdCB0aGUgcHJvbXB0LCBhIHRlbXBsYXRlIG1heSBoYXZlCisgICAgICAg ICAgICAgICAgOzsgYmVlbiBhZGRlZCwgc28gcmVzY2FuIHRoZSBidWZmZXIuCisgICAgICAgICAg ICAgICAgKHNldHEgdG9jcyAobWFya2Rvd24tdHMtLXRvY3MpKSkKKyAgICAgICAgICAgICh3aGVu IChlcSAnbm8tdGFibGVzIG1hcmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUpCisg ICAgICAgICAgICAgIChsd2FybiAnbWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlCisgICAgICAgICAg ICAgICAgICAgICA6d2FybmluZworICAgICAgICAgICAgICAgICAgICAgIk5vIHRhYmxlcyBvZiBj b250ZW50cyBmb3VuZCBpbiAlcy4iCisgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLW5hbWUg KGN1cnJlbnQtYnVmZmVyKSkpKSkpCisgICAgICAgIChtYXJrZG93bi10cy0tdG9jcy1zYW5pdHkt Y2hlY2sgdG9jcykKKworICAgICAgICA7OyBTdHJhdGVneSBpcyBwcm9jZXNzIG9uZSB0b2MgYXQg YSB0aW1lIGZyb20gdGhlIHRvcCB0byB0aGUKKyAgICAgICAgOzsgYm90dG9tIG9mIHRoZSByYW5n ZSBCRUcgRU5ELiAgU3Vic2VxdWVudCB0b2MgYW5kIGVudHJ5CisgICAgICAgIDs7IGNhbmRpZGF0 ZSBub2RlIHBvc2l0aW9ucyBjaGFuZ2UgYXMgd2UgdXBkYXRlIGVhY2ggdG9jIHRleHQgc28KKyAg ICAgICAgOzsgd2UgaGF2ZSB0byByZXRyaWV2ZSB0aGVtIGZyZXNoIGZyb20gdGhlIGVuZCBvZiB0 aGUgbW9zdCByZWNlbnQKKyAgICAgICAgOzsgdG9jLgorICAgICAgICAobGV0ICgodG9jcykKKyAg ICAgICAgICAgICAgKG51bS10b2NzLXByb2Nlc3NlZCAwKQorICAgICAgICAgICAgICAodG9jKQor ICAgICAgICAgICAgICAodG9jLWVuZCkKKyAgICAgICAgICAgICAgKHRvYy1zaXplKQorICAgICAg ICAgICAgICA7OyBUaGVzZSBhcmUgYWRqdXN0ZWQgYnkgdGhlIHNpemUgb2YgaW5zZXJ0ZWQgdGV4 dCBlYWNoIHBhc3MuCisgICAgICAgICAgICAgIChiZWctcG9zIGJlZykKKyAgICAgICAgICAgICAg KGVuZC1wb3MgZW5kKQorICAgICAgICAgICAgICAoc291cmNlLWJ1ZmZlciAoY3VycmVudC1idWZm ZXIpKSkKKyAgICAgICAgICA7OyBGaW5kIGVhY2ggIm1hcmtkb3duLXRzLXRvYyIgaW4gc3VjY2Vz c2lvbiBzdGFydGluZyBhdCB0aGUgZW5kCisgICAgICAgICAgOzsgb2YgZWFjaCBwcmV2aW91cyBv bmUgd2UgZmluZCB3aXRoaW4gdGhlIHJlcXVlc3RlZCByZWdpb24uCisgICAgICAgICAgKHdoaWxl IChhbmQgKDwgYmVnLXBvcyBlbmQtcG9zKQorICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRv Y3MgKG1hcmtkb3duLXRzLS10b2NzIGJlZy1wb3MgZW5kLXBvcykpKQorICAgICAgICAgICAgKHNl dHEgdG9jIChjYXIgdG9jcykpCisgICAgICAgICAgICAoc2V0cSB0b2Mtc2l6ZSAwKQorCisgICAg ICAgICAgICAod2hlbiAoZXF1YWwgIm1hcmtkb3duLXRzLXRvYyIgKGNhciB0b2MpKQorICAgICAg ICAgICAgICA7OyBBZnRlciBzYW5pdHkgY2hlY2tpbmcsIHdlIGtub3cgdGhlIHNlY29uZCBlbGVt ZW50IGlzIGEKKyAgICAgICAgICAgICAgOzsgdG9jLWVuZC4KKyAgICAgICAgICAgICAgKHNldHEg dG9jLWVuZCAobnRoIDEgdG9jcykpCisgICAgICAgICAgICAgIChsZXQqICgodG9jLW5vZGUgKGFs aXN0LWdldCAnbm9kZSB0b2MpKQorICAgICAgICAgICAgICAgICAgICAgKHRvYy12YXJzIChhbGlz dC1nZXQgJ3ZhcnMgdG9jKSkKKyAgICAgICAgICAgICAgICAgICAgICh0b2MtaWdub3JlIChhbGlz dC1nZXQgJ2lnbm9yZSB0b2MtdmFycykpKQorICAgICAgICAgICAgICAgICh1bmxlc3MgdG9jLWln bm9yZQorICAgICAgICAgICAgICAgICAgOzsgQnVpbGQgdGhlIHRvYyBvbmUgY2FuZGlkYXRlIGF0 IGEgdGltZSwgdHJhY2tpbmcKKyAgICAgICAgICAgICAgICAgIDs7IGluZGVudGF0aW9uIGFuZCBj cmVhdGluZyBsaW5rcyBpZiBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAobGV0KiAoKHRvYy1l bmQtbm9kZSAoYWxpc3QtZ2V0ICdub2RlIHRvYy1lbmQpKQorICAgICAgICAgICAgICAgICAgICAg ICAgIChyZWctYmVnICh0cmVlc2l0LW5vZGUtZW5kIHRvYy1ub2RlKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAocmVnLWVuZCAodHJlZXNpdC1ub2RlLXN0YXJ0IHRvYy1lbmQtbm9kZSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1oYW5kbGVzIChtYXJrZG93bi10cy0tdG9jLWV4 cGFuZC1jYW5kaWRhdGUtaGFuZGxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG9yIChjZHItc2FmZSAoYXNzcSAnY2FuZGlkYXRlcyB0b2MtdmFycykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRpbmcpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBOb3cgYWRkIGhlYWRpbmdzIHRvIGFsd2F5cyByZXRyaWV2ZSBh bmQgZGVyaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgOzsgbGV2ZWxzIGV2ZW4gaWYgdGhl eSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgdG9jLgorICAgICAgICAgICAgICAgICAgICAgICAgIChz ZWVkLWhhbmRsZXMgKGNvcHktdHJlZSB0b2MtaGFuZGxlcykpCisgICAgICAgICAgICAgICAgICAg ICAgICAgKF8gKGRvbGlzdCAoZWx0IChhbGlzdC1nZXQgJ2hlYWRpbmcgbWFya2Rvd24tdHMtLXRv Yy1oYW5kbGVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1wdXNobmV3IGVs dCBzZWVkLWhhbmRsZXMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodG9jLWZyb20gKG9y IChjZHItc2FmZSAoYXNzcSAnZnJvbSB0b2MtdmFycykpICdiZWxvdykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKHRvYy1zdHlsZSAob3IgKGNkci1zYWZlIChhc3NxICdzdHlsZSB0b2MtdmFy cykpICdpdGVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodG9jLW5vLWxpbmsgKGFsaXN0 LWdldCAnbm8tbGluayB0b2MtdmFycykpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1p bmRlbnQgKG1pbiAxMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1heCAwIChvciAoY2RyLXNhZmUgKGFzc3EgJ2luZGVudCB0b2MtdmFycykpIDEpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKHRvYy1taW4tZGVwdGggKG1heCAxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGNkci1zYWZlIChhc3NxICdtaW4t ZGVwdGggdG9jLXZhcnMpKSAxKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1tYXgt ZGVwdGggKG1heCB0b2MtbWluLWRlcHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAob3IgKGNkci1zYWZlIChhc3NxICdtYXgtZGVwdGggdG9jLXZhcnMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vc3QtcG9z aXRpdmUtZml4bnVtKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1yZWxhdGl2ZS1k ZXB0aCAoY2RyLXNhZmUgKGFzc3EgJ3JlbGF0aXZlLWRlcHRoIHRvYy12YXJzKSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgKHRvYy1jYW5kaWRhdGVzIChtYXJrZG93bi10cy0tdG9jLWNvbGxl Y3QtY2FuZGlkYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dG9jLW5vZGUgdG9jLWVuZC1ub2RlIHNlZWQtaGFuZGxlcyB0b2MtZnJvbSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgKHRvYy1yZWxhdGl2ZS1oZWFkaW5nLWRlcHRoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICgxKyAob3IgKHNlcS1wb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnKCJhdHhfaDFfbWFya2VyIiAiYXR4X2gyX21hcmtlciIgImF0eF9oM19t YXJrZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0eF9oNF9tYXJr ZXIiICJhdHhfaDVfbWFya2VyIiAiYXR4X2g2X21hcmtlciIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdHlwZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRvYy1ub2RlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJhdHhfaGVhZGluZyIgJ2JhY2t3YXJkKSAwICduYW1lZCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnZXF1YWwpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLTEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2x1Zy10by1w b3MgKG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkcykpCisgICAgICAgICAgICAgICAgICAgICAgICAg KHBvcy10by1zbHVnCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChodCAobWFrZS1o YXNoLXRhYmxlIDpzaXplIChoYXNoLXRhYmxlLWNvdW50IHNsdWctdG8tcG9zKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dGVzdCAjJ2VxdWFs KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGhhc2ggKGxhbWJkYSAoayB2KSAo cHV0aGFzaCB2IGsgaHQpKSBzbHVnLXRvLXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBodCkpKQorCisgICAgICAgICAgICAgICAgICAgICh3aXRoLXdvcmstYnVmZmVyCisgICAgICAg ICAgICAgICAgICAgICAgKGluc2VydCAiPCEtLSBOT1RFOiBtYXJrZG93bi10cy10b2MgZ2VuZXJh dGVkIHRleHQgc2VjdGlvbiBtYXkgYmUgb3ZlcndyaXR0ZW4uIC0tPlxuIikKKyAgICAgICAgICAg ICAgICAgICAgICAobGV0ICgoaGFuZGxlKSAoaGFuZGxlLWNsYXNzKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmRlbnQg MCkgKGxldmVsIDEpIChsZXZlbC1wcmV2IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgSGVhZGluZyBsZXZlbCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgaXRlbXMgdW5kZXIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBpdC4gIElmIHRoZXJlIGFyZSBubyBoZWFkaW5ncywg aXQgd2lsbCByZW1haW4gMS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV2ZWwtaGVh ZGluZyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IEFkanVzdCBmb3Igbm9uIGhl YWRpbmdzIHVuZGVyIGhlYWRpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudW1i ZXItc3RhY2spKQorCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBDYW5kaWRhdGVzIHNob3Vs ZCBiZSBpbiBidWZmZXIgb3JkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAoZG9saXN0IChj YW5kaWRhdGUgdG9jLWNhbmRpZGF0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQg KChzbHVnLXBvcykgKHRleHQpIChsaW5rLXRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxldmVsLWFkaiAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBoYW5kbGUgKGNhciBjYW5kaWRhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGFuZGxlLWNsYXNzIChhbGlzdC1nZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhhbmRsZSBtYXJrZG93bi10cy0tdG9jLWhhbmRsZS1jbGFzc2Vz KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBub2RlIChjZHIgY2FuZGlkYXRl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzbHVnLXBvcyBuaWwpCisKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTdHJpcCB0cmFpbGluZyBuZXdsaW5lcy4gIEFk ZCB0aGVtIGNvbnNpc3RlbnRseSBiZWxvdy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c2V0cSB0ZXh0IChzdHJpbmctdHJpbS1yaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXJrZG93bi10cy0tdG9jLXRleHQtbm9ybWFsaXplCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSBub2RlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlICduby1w cm9wZXJ0eSkpKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IENhbmRpZGF0ZSBu b2RlIHR5cGUgbG9naWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlIGhhbmRs ZS1jbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdoZWFkaW5nCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHggKHNlcS1wb3NpdGlvbiAnKGgxIGgyIGgz IGg0IGg1IGg2KSBoYW5kbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXRxIHNsdWctcG9zICh0cmVlc2l0LW5vZGUtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1zZWFyY2gtZm9yd2FyZCBub2RlICJh dHhfaGVhZGluZyIgJ2JhY2t3YXJkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBsZXZlbCAoc2V0cSBsZXZlbC1oZWFkaW5nICgxKyB4KSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbC1hZGogMCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGluZGVudCAoMS0gbGV2ZWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGluay10YXJnZXQgdGV4dCkpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCdzZXRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobGV0ICgoeCAoc2VxLXBvc2l0aW9uICcoc2gxIHNoMikgaGFuZGxlKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbCAoMSsgeCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbC1hZGogMCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGluZGVudCAoMS0gbGV2ZWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGluay10YXJnZXQgbmlsKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKG9yICdpdGVtICdudW1iZXJlZC1pdGVtKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIGxldmVsIGxldmVsLWhlYWRpbmcpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwtYWRqIChtYXJrZG93bi10cy0tdG9jLWxp c3QtaXRlbS1kZXB0aCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBpbmRlbnQgKDEtICAoKyBsZXZlbCBsZXZlbC1hZGopKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0cSBsaW5rLXRhcmdldCBuaWwpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCdjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSW5oZXJp dCB0aGUgYW1iaWVudCBsZXZlbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBsZXZlbC1hZGogMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBpbmRl bnQgKDEtICAoKyBsZXZlbCBsZXZlbC1hZGopKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBsaW5rLXRhcmdldCBuaWwpKSkKKworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IEZpbHRlciBkZXNpcmVkIGhhbmRsZXMgYW5kIGxldmVscy4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hlbiAoYW5kIChtZW1xIGhhbmRsZSB0b2MtaGFuZGxlcykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg+PSBsZXZlbCAoKyB0b2MtbWluLWRl cHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIHRvYy1yZWxhdGl2ZS1kZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0b2MtcmVsYXRpdmUtaGVhZGluZy1kZXB0aCAwKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPD0gbGV2ZWwgKCsgdG9jLW1h eC1kZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiB0b2MtcmVsYXRpdmUtZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9jLXJlbGF0aXZlLWhlYWRpbmctZGVwdGggMCkp KSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQ3JlYXRlIHRoZSBlbnRyeSB3 aXRoIGluZGVudCwgaXRlbS9udW1iZXIgcHJlZml4LCBsaW5rLgorCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBDb3JuZXIgY2FzZTogaW5pdGlhbCBsZXZlbCBoaWdoZXIgdGhhbiAx LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoPiBsZXZlbCAxKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgbGV2ZWwtcHJldiAw KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwgMSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIChub3QgdG9jLW5vLWxpbmspIGxp bmstdGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTYW5pdGl6ZSB0 aGUgaWQgdG8gY29uZm9ybSB0byBDU1MgaWRlbnQgc3ludGF4LgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2V0cSB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChmb3JtYXQgIlslc10oIyVzKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmLWxldCogKChzbHVnIChnZXRoYXNoIHNsdWctcG9zIHBvcy10by1zbHVn KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs dWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5j YWxsIG1hcmtkb3duLXRzLXRvYy1zbHVnLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLXRhcmdldCkpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyAoKiAoMS0gKG1h eCBpbmRlbnQgMSkpIHRvYy1pbmRlbnQpID9ccykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBjYXNlIHRvYy1zdHlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgnaXRlbSAiLSAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgnYnVsbGV0ICIqICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKChvciAnbnVtYmVyICdudW1iZXIuKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobGV0ICgobGV2ZWwgKCsgbGV2ZWwgbGV2ZWwtYWRqKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChvciAobm90IG51 bWJlci1zdGFjaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICg+IGxldmVsIChjYWFyIG51bWJlci1zdGFjaykpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBgKCxsZXZlbCAuIDApIG51 bWJlci1zdGFjaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChhbmQgbnVtYmVyLXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKDwgbGV2ZWwgKGNhYXIgbnVtYmVyLXN0YWNrKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGlsZSAo YW5kIG51bWJlci1zdGFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoPCBsZXZlbCAoY2FhciBudW1iZXItc3RhY2spKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9wIG51 bWJlci1zdGFjaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1bmxlc3MgbnVtYmVyLXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggYCgsbGV2ZWwgLiAwKSBudW1iZXItc3RhY2sp KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0Y2RyIChj YXIgbnVtYmVyLXN0YWNrKSAoMSsgKGNkYXIgbnVtYmVyLXN0YWNrKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChzKSAobiAobGVuZ3RoIG51bWJlci1z dGFjaykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEt bWFwLWluZGV4ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGxhbWJkYSAoZWx0IGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbmNhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChmb3JtYXQgIiVkIiAoY2RyIGVsdCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgKDErIGlkeCkgbikg IiIgIi4iKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cmV2ZXJzZSBudW1iZXItc3RhY2spKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjb25jYXQgcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHdoZW4gKGVxIHRvYy1zdHlsZSAnbnVtYmVyLikgIi4iKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgIikpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfICIiKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBBZGQgYSBoYXJkIGxpbmUgYnJlYWsuICBCYWNrc2xhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgc2VlbXMgbGVzcyB3ZWxsIHN1cHBv cnRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyByZW5kZXJl cnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXN0cmluZyAy ID9ccykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwtcHJldiBsZXZlbCkpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAoc2V0cSB0b2Mtc2l6ZSAoYnVmZmVyLXNpemUpKQorICAgICAgICAg ICAgICAgICAgICAgIChsZXQgKCh0ZW1wLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHNvdXJjZS1idWZmZXIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIHJlZy1iZWcg cmVnLWVuZCB0ZW1wLWJ1ZmZlcikpKSkpCisgICAgICAgICAgICAgICAgICAoc2V0cSBudW0tdG9j cy1wcm9jZXNzZWQgKDErIG51bS10b2NzLXByb2Nlc3NlZCkpKSkpCisgICAgICAgICAgICA7OyBT dGFydCB0aGUgbmV4dCBwYXNzIGFmdGVyIHRoaXMgdG9jLWVuZC4gIEFkanVzdCBmb3IgdGhlCisg ICAgICAgICAgICA7OyBpbnNlcnRlZCB0ZXh0IHNpemUuCisgICAgICAgICAgICAoc2V0cSBiZWct cG9zICgrIChhbGlzdC1nZXQgJ2VuZCB0b2MtZW5kKSB0b2Mtc2l6ZSkpCisgICAgICAgICAgICAo c2V0cSBlbmQtcG9zIChtaW4gKHBvaW50LW1heCkgKCsgZW5kLXBvcyB0b2Mtc2l6ZSkpKSkKKyAg ICAgICAgICAod2hlbiAoYW5kIChlcSBudW0tdG9jcy1wcm9jZXNzZWQgMCkKKyAgICAgICAgICAg ICAgICAgICAgIChlcSAnbm8tYWN0aXZlLXRhYmxlcyBtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUt d2Fybi1pZi1ub25lKSkKKyAgICAgICAgICAgIChsd2FybiAnbWFya2Rvd24tdHMtdG9jLWdlbmVy YXRlCisgICAgICAgICAgICAgICAgICAgOndhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAiTm8g dGFibGVzIG9mIGNvbnRlbnRzIGdlbmVyYXRlZCBpbiAlcy4iCisgICAgICAgICAgICAgICAgICAg KGJ1ZmZlci1uYW1lIChjdXJyZW50LWJ1ZmZlcikpKSkpKSkpKQorCisocHJvdmlkZSAnbWFya2Rv d24tdHMtbW9kZS14KQorOzs7IG1hcmtkb3duLXRzLW1vZGUteC5lbCBlbmRzIGhlcmUKZGlmZiAt LWdpdCBhL2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUuZWwgYi9saXNwL3RleHRtb2Rl cy9tYXJrZG93bi10cy1tb2RlLmVsCmluZGV4IDY1N2Q2YmM0NjZkLi4wMGZiNmJmZjU0MSAxMDA2 NDQKLS0tIGEvbGlzcC90ZXh0bW9kZXMvbWFya2Rvd24tdHMtbW9kZS5lbAorKysgYi9saXNwL3Rl eHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsCkBAIC0xLDExICsxLDE0IEBACi07OzsgbWFya2Rv d24tdHMtbW9kZS5lbCAtLS0gdHJlZSBzaXR0ZXIgc3VwcG9ydCBmb3IgTWFya2Rvd24gIC0qLSBs ZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQorOzs7IG1hcmtkb3duLXRzLW1vZGUuZWwgLS0tIHRyZWUg c2l0dGVyIHN1cHBvcnQgZm9yIE1hcmtkb3duIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQog CiA7OyBDb3B5cmlnaHQgKEMpIDIwMjQtMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KIAotOzsgQXV0aG9yICAgICA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRv QGdtYWlsLmNvbT4KLTs7IE1haW50YWluZXIgOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwu anVsaWF0b0BnbWFpbC5jb20+Ci07OyBDcmVhdGVkICAgIDogQXByaWwgMjAyNAotOzsgS2V5d29y ZHMgICA6IG1hcmtkb3duIG1kIGxhbmd1YWdlcyB0cmVlLXNpdHRlcgorOzsgQXV0aG9yICAgICAg ICAgICA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRvQGdtYWlsLmNvbT4KKzs7 ICAgICAgICAgICAgICAgICAgOiBTdMOpcGhhbmUgTWFya3MgPHNoaXBtaW50c0BnbWFpbC5jb20+ Cis7OyBNYWludGFpbmVyICAgICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1bGlh dG9AZ21haWwuY29tPgorOzsgQ3JlYXRlZCAgICAgICAgICA6IEFwcmlsIDIwMjQKKzs7IFZlcnNp b24gICAgICAgICAgOiAxLjAKKzs7IFBhY2thZ2UtUmVxdWlyZXMgOiAoKGVtYWNzICIzMS4xIikp Cis7OyBLZXl3b3JkcyAgICAgICAgIDogbWFya2Rvd24gbWQgdGV4dCBlZGl0IGxhbmd1YWdlcyB0 cmVlLXNpdHRlcgogCiA7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCiAKQEAgLTIy LDEzOCArMjUsNzM4IEBACiA7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCi07OzsgVHJlZS1z aXR0ZXIgbGFuZ3VhZ2UgdmVyc2lvbnMKKzs7OyBDb21tZW50YXJ5OgorCis7Ozs7IFRyZWUtc2l0 dGVyIExhbmd1YWdlIFZlcnNpb25zCiA7OwogOzsgbWFya2Rvd24tdHMtbW9kZSBoYXMgYmVlbiB0 ZXN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGdyYW1tYXJzIGFuZCB2ZXJzaW9uOgogOzsgLSB0cmVl LXNpdHRlci1tYXJrZG93bjogdjAuNC4xCiA7OyAtIHRyZWUtc2l0dGVyLW1hcmtkb3duLWlubGlu ZTogdjAuNC4xCiA7OwotOzsgV2UgdHJ5IG91ciBiZXN0IHRvIG1ha2UgYnVpbHRpbiBtb2RlcyB3 b3JrIHdpdGggbGF0ZXN0IGdyYW1tYXIKLTs7IHZlcnNpb25zLCBzbyBhIG1vcmUgcmVjZW50IGdy YW1tYXIgaGFzIGEgZ29vZCBjaGFuY2UgdG8gd29yayB0b28uCi07OyBTZW5kIHVzIGEgYnVnIHJl cG9ydCBpZiBpdCBkb2Vzbid0LgotCi07OzsgQ29tbWVudGFyeToKKzs7IFdlIHRyeSBvdXIgYmVz dCB0byBtYWtlIGJ1aWx0LWluIG1vZGVzIHdvcmsgd2l0aCBsYXRlc3QgZ3JhbW1hcgorOzsgdmVy c2lvbnMsIHNvIGEgbW9yZSByZWNlbnQgZ3JhbW1hciBoYXMgYSBnb29kIGNoYW5jZSB0byB3b3Jr LiAgU2VuZAorOzsgdXMgYSBidWcgcmVwb3J0IGlmIGl0IGRvZXNuJ3QuCis7OworOzsgQmlkaXJl Y3Rpb25hbCBUZXh0IENvbnNpZGVyYXRpb25zCis7OworOzsgVGV4dCB3aXRoIG1hcmt1cCBtYXkg bmVlZCBhbiBleHRyYSBuZXdsaW5lIGJlZm9yZSBiaWRpcmVjdGlvbmFsIHRleHQKKzs7IGZvciBp dCB0byBzaG93IGNvcnJlY3RseS4gIFRoaXMgaXMgYSBsaW1pdGF0aW9uIGluIHRoZSBFbWFjcyBk aXNwbGF5Cis7OyBlbmdpbmUuCis7OworOzsgQ29kZSBCbG9jayBMYW5ndWFnZSBNb2RlIENvbnNp ZGVyYXRpb25zCis7OworOzsgRmVuY2VkIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMgYXJlIGRl cml2ZWQgZnJvbSB0aGUgdGFibGUKKzs7IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzJyBh bmQgaGV1cmlzdGljcyBhZGRpbmcgIi10cy1tb2RlIiBhbmQKKzs7ICItbW9kZSIgdG8gdGhlIGxh bmd1YWdlIG5hbWUuICBJZiB5b3VyIGxhbmd1YWdlJ3MgbW9kZSBpcyBub3QKKzs7IHByb3Blcmx5 IHJlY29nbml6ZWQsIGFkZCBpdCB0byBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcycsIHdo aWNoCis7OyBzZWUuCis7OworOzsgRWFjaCBsYW5ndWFnZSdzIG1ham9yIG1vZGUgaXMgZW5hYmxl ZCBvbmNlIHBlciBgbWFya2Rvd24tdHMtbW9kZScKKzs7IGJ1ZmZlciBpbiBhIHRlbXBvcmFyeSBi dWZmZXIgdG8gZXh0cmFjdCBpdHMgZGVmYXVsdCBmb250LWxvY2sgYW5kCis7OyB0cmVlLXNpdHRl ciBzZXR0aW5ncy4gIEluIGNvbnZlbnRpb25hbCBub24tdHJlZXNpdCBjb2RlIGJsb2NrcywgdGhl Cis7OyBtYWpvciBtb2RlIGlzIGVuYWJsZWQgZWFjaCB0aW1lIHRoZSBibG9jayBpcyBmb250aWZp ZWQuCis7OworOzsgTk9URTogTWFqb3IgbW9kZSBob29rcyBhcmUgbm90IHJ1biBhbmQgZm9udC1s b2NrLCB0cmVlc2l0LCBpbmRlbnQsCis7OyBjb21tZW50IHJlY29nbml0aW9uLCBldGMuIGN1c3Rv bWl6YXRpb25zIHRoYXQgeW91IG1pZ2h0IGhhdmUgaW4geW91cgorOzsgaG9va3MgYXJlIG5vdCBh cHBsaWVkLiAgQXMgYSByZXN1bHQsIHlvdXIgY29kZSBibG9ja3MgbWlnaHQgYXBwZWFyCis7OyBk aWZmZXJlbnQgaW4gYG1hcmtkb3duLXRzLW1vZGUnIG1vZGUgdGhhbiBpbiBuYXRpdmUgbWFqb3Ig bW9kZQorOzsgYnVmZmVycy4gIE5vdCBydW5uaW5nIGhvb2tzIGF2b2lkcyB0aGUgY29zdCBvZiBl YWNoIG1vZGUgaG9vayBhbmQKKzs7IGF2b2lkcyBwb3RlbnRpYWwgcmVjdXJzaXZlIHRyZWVzaXQg Y2FsbGJhY2sgaXNzdWVzLgorOzsKKzs7OzsgQ29kZSBCbG9jayBDb21tYW5kcworOzsKKzs7IFNv bWUgY29tbW9uIGNvbW1hbmRzIHdpbGwgb3BlcmF0ZSB3aXRoaW4gYSBjb2RlIGJsb2NrIGFuZCBp biBpdHMKKzs7IG1vZGUuICBUaGVzZSBvcGVyYXRlIGluIGFuIGluZGlyZWN0IGJ1ZmZlciBhbmQg c29tZSBjb21tYW5kcyBtYXkKKzs7IG9wZXJhdGUgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdG8gdGhl IHNhbWUgY29tbWFuZHMgaW52b2tlZCBpbiBhIG5hdGl2ZQorOzsgbW9kZSBidWZmZXIuICBgaW5k ZW50LWZvci10YWItY29tbWFuZCcgbWF5IGludm9rZQorOzsgYGNvbXBsZXRpb24tYXQtcG9pbnQn IHVuZGVyIHRoZSBjb3ZlcnMgYW5kIG1heSByZXR1cm4gcmVzdWx0cyBmcm9tCis7OyB0aGUgc3Vy cm91bmRpbmcgTWFya2Rvd24gYnVmZmVyIGluc3RlYWQgb2YgdGhlIGNvZGUgYmxvY2sncyBjb250 ZXh0LgorOzsgWW91IGNhbiBpbnZva2UgYGNvbXBsZXRpb24tYXQtcG9pbnQnIGRpcmVjdGx5IGJ5 IHVzaW5nIGl0cyBrZXkKKzs7IGJpbmRpbmcsIGBDLU0taWAuCis7OworOzs7OyBQaXBlIFRhYmxl cworOzsKKzs7IFRoZXNlIGFyZSBhIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biAoR0ZNKSBleHRl bnNpb24gYW5kIGFyZSBhIGRlCis7OyBmYWN0byBzdGFuZGFyZCBnaXZlbiB0aGVpciBwb3B1bGFy aXR5IGFuZCBpbXBsZW1lbnRhdGlvbnMgYWNyb3NzCis7OyBwcm9kdWN0cy4gIFRoZXkgbWlnaHQg YXMgd2VsbCBiZSBmb2xkZWQgaW50byB0aGUgQ29tbW9uTWFyayBzdGFuZGFyZC4KKzs7Cis7OyBB IHBpcGUgdGFibGUgaXMgYSByZWN0YW5nbGUgb2YgdGV4dCBzdXJyb3VuZGVkIHRvIHRoZSBlYXN0 IGFuZCB3ZXN0Cis7OyBieSBwaXBlIHN5bWJvbHMgYW5kIHdoZXJlIHBpcGVzIHNlcGFyYXRlIGNv bHVtbnMuICBJdCBoYXMgYSBoZWFkZXIKKzs7IHJvdyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBo ZWFkZXIgYWxpZ25tZW50IHJvdywgYm90aCBvZiB3aGljaCBtdXN0Cis7OyBjb250YWluIHRoZSBz YW1lIG51bWJlciBvZiBjZWxscy4gIEJvZHkgcm93cyBhcmUgb3B0aW9uYWwuICBBIHRhYmxlCis7 OyBlbmRzIHdpdGggYSBibGFuayBsaW5lIG9yIGF0IHRoZSBzdGFydCBvZiBhIG5ldyBNYXJrZG93 biBibG9jaworOzsgZWxlbWVudC4KKzs7Cis7OyBUaGUgaGVhZGVyIGFsaWdubWVudCByb3cgY29s dW1uIG11c3QgaGF2ZSBhIG1pbmltdW0gb2YgdGhyZWUgaHlwaGVucworOzsgd2hpY2ggaW5kaWNh dGVzIGRlZmF1bHQgYWxpZ25tZW50IChpLmUuLCB3aGF0ZXZlciBhIHJlbmRlcmVyCis7OyBjaG9v c2VzKS4gIFRvIGluZGljYXRlIGxlZnQgYWxpZ25tZW50LCBwcmVmaXggdGhlIGh5cGhlbiBzdHJp bmcgd2l0aAorOzsgYSBjb2xvbiBsaWtlIHRoaXMgOi0tLS4gIEZvciBjZW50ZXIgYWxpZ25tZW50 LCBwcmVmaXggYW5kIHN1ZmZpeCB3aXRoCis7OyBjb2xvbnMgbGlrZSB0aGlzIDotLS06LiAgRm9y IHJpZ2h0IGFsaWdubWVudCwgc3VmZml4IHdpdGggYSBjb2xvbgorOzsgbGlrZSB0aGlzIC0tLTou Cis7OworOzsgRWFjaCB0YWJsZSBoZWFkZXIgb3IgYm9keSBjZWxsIGNhbiBjb250YWluIHRoZSB1 c3VhbCBNYXJrZG93biBpbmxpbmUKKzs7IHN0eWxlIGluZGljYXRvcnMuICBBIGNlbGwgY2Fubm90 IGNvbnRhaW4gYSBibG9jayBlbGVtZW50IHN1Y2ggYXMgYQorOzsgaGVhZGluZ3MsIHRoZW1hdGlj IGJyZWFrcywgYmxvY2sgcXVvdGVzLCBmZW5jZWQgY29kZSBibG9ja3MuCis7OworOzsgVGFibGUg Y2VsbHMgZG8gbm90IG5lZWQgdG8gYWxpZ24gdmlzdWFsbHk7IGkuZS4sIHRoZSBwaXBlIHN5bWJv bHMgZG8KKzs7IG5vdCBuZWVkIHRvIGxpbmUgdXAgdmVydGljYWxseS4gIFRoZSB0cmVlLXNpdHRl ciBwYXJzZXIgYW5kIHJlbmRlcmVycworOzsgZGV0ZWN0IGNlbGwgYm91bmRhcmllcyB1c2luZyBw aXBlIHN5bWJvbHMsIG5vdCB0aGVpciByZWxhdGl2ZSBhbGlnbm1lbnQuCis7OworOzsgSWYgeW91 IHdhbnQgdG8gaW5jbHVkZSB3aGF0IGxvb2tzIGxpa2UgY29kZSwgeW91IGNhbiB1c2UgYmFja3Rp Y2tzIHRvCis7OyB3cmFwIHN1Y2ggdGV4dCBhbGEgYHRoaXMgaXMgY29kZWAuICBUaGlzIG1vZGUg d2lsbCBub3QgZm9udGlmeSBzdWNoCis7OyBjb2RlLgorOzsKKzs7IElmIHlvdSB3YW50IHRvIGlu Y2x1ZGUgYSBwaXBlIHN5bWJvbCBpbiBhIGNlbGwsIGVzY2FwZSBpdCB0aHVzbHkgXHwuCis7Owor OzsgVGVjaG5pY2FsbHksIGJvZHkgcm93cyBkbyBub3QgbmVlZCB0byBjb250YWluIHRoZSBzYW1l IG51bWJlciBvZgorOzsgY2VsbHMgYXMgdGhlIGhlYWRlciBoYXMgY29sdW1ucyBhbmQgcm93cyBk byBub3QgbmVlZCB0byBzaGFyZSB0aGUKKzs7IHNhbWUgbnVtYmVyIG9mIGNlbGxzIGFtb25nIHRo ZW1zZWx2ZXMuICBOb3RlOiBNYW55IHJlbmRlcmVycyBnZXQKKzs7IGNvbmZ1c2VkIGlmIHRoZSB0 YWJsZSBpcyAicmFnZ2VkIiB3aXRoIGFuIHVuZXZlbiBudW1iZXIgb2YgY29sdW1ucworOzsgYW1v bmcgcm93cy4gIFNvbWUgcmVuZGVyZXJzIHdpbGwgaW5zZXJ0IGVtcHR5IGNlbGxzIG9uIGEgcm93 IHRoYXQKKzs7IGNvbnRhaW5zIGZld2VyIGNlbGxzIHRoYW4gdGhlIGhlYWRlciBoYXMgY29sdW1u cy4gIFNvbWUgZWxpZGUgY2VsbHMKKzs7IHRoYXQgZXhjZWVkIHRoZSBudW1iZXIgb2YgY29sdW1u cyBpbiB0aGUgaGVhZGVyLgorOzsKKzs7OzsgUGlwZSBUYWJsZSBSZWNvbW1lbmRhdGlvbnMKKzs7 Cis7OyAtIEFsd2F5cyB1c2UgcGlwZSBzeW1ib2xzIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIGVh Y2ggdGFibGUgbGluZS4KKzs7IC0gVXNlIGEgdW5pZm9ybSBudW1iZXIgb2YgY29sdW1ucyBzcGFu bmluZyB0aGUgdGFibGUuCis7OyAtIElmIHlvdSBkZXRlY3QgYSBwYXJzaW5nIGVycm9yIHdoaWNo IHByZXNlbnRzIGFzIGRpZmZlcmVudAorOzsgICBmb250aWZpY2F0aW9uIGFuZCB3aGljaCBpcyBv ZnRlbiBjYXVzZWQgYnkgYW4gZW1wdHkgZmlyc3QgY2VsbCBvbiB0aGUKKzs7ICAgZmluYWwgcm93 LCB0cnkgcHV0dGluZyBzb21lIGNoYXJhY3RlcnMgaW4gdGhhdCBjZWxsLgorOzsgLSBSZW5kZXJl cnMgb2Z0ZW4gZXhjbHVkZSBjZXJ0YWluIGVtcHR5IGNlbGxzIHN1Y2ggYXMgYW4gImVtcHR5IiBm aW5hbAorOzsgICBjZWxsIGluIGEgdGFibGUuICBGb2xsb3cgdGhlIG5leHQgaXRlbSB0byBhdm9p ZCB0aGlzLgorOzsgLSBJZiB5b3UgbmVlZCB0aGF0IGNlbGwgdG8gYXBwZWFyIGJsYW5rIGFuZCBh cmUgY29udmVydGluZyB0byBIVE1MLAorOzsgICB0cnkgdXNpbmcgYSBub24tcHJpbnRpbmcgSFRN TCBlbnRpdHksIHN1Y2ggYXMgYSBub24tYnJlYWtpbmcgc3BhY2UKKzs7ICAgIiZuYnNwOyIsIHdo aWNoIHBhcnNlIGFzIGNvbmNyZXRlIGNoYXJhY3RlcnMgeWV0IHJlbmRlciBhcyBibGFuay4KKzs7 IC0gSFRNTCBjb21tZW50cyA8IS0tIC0tPiBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgbm9uLWJsYW5r IGNoYXJhY3RlcgorOzsgICBzdHJpbmcgdGhhdCBkb2VzIG5vdCBnZXQgcmVuZGVyZWQuICBUaGVz ZSBhcmUgY29uc2lkZXJlZCBjZWxsIHRleHQKKzs7ICAgYW5kIHdoZW4gcGxhY2VkIGF0IHRoZSBl bmQgb2YgYSByb3csIHRoYXQgcm93J3MgbnVtYmVyIG9mIGNvbHVtbnMgaXMKKzs7ICAgaW5jcmVh c2VkIGFuZCBtaWdodCBleGNlZWQgdGhlIG51bWJlciBvZiBoZWFkZXIgY29sdW1ucy4KKzs7IC0g VGhlcmUgYXJlIHRyZWUtc2l0dGVyIHBhcnNlciBxdWlya3MuICBDb21tYW5kcyBzdWNoIGFzCis7 OyAgIGBtYXJrZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uJyBhbmQgYG1hcmtkb3duLXRzLXRh YmxlLW1vdmUtY29sdW1uJworOzsgICBmb2xsb3cgdGhlIHBhcnNlciB0cmVlIGFuZCBjYW4gbGVh ZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMgc28gZm9sbG93Cis7OyAgIHRoZXNlIHJlY29tbWVuZGF0 aW9ucyBhbmQgdGFibGUgb3BlcmF0aW9ucyBzaG91bGQgYmUgYXMgZXhwZWN0ZWQuCis7OworOzs7 OyBUcmVlIFNpdHRlciBCdWdzCis7OworOzsgYG1hcmtkb3duLXRzLW1vZGUnIHJlbGllcyBvbiB0 aGUgdW5kZXJseWluZyB0cmVlLXNpdHRlciBsaWJyYXJ5IGluCis7OyBFbWFjcyAoY2hvc2VuIGF0 IGl0cyBidWlsZCB0aW1lKSwgYW5kIGxhbmd1YWdlIGdyYW1tYXJzIHlvdSBoYXZlCis7OyBpbnN0 YWxsZWQuICBUaGVyZSBhcmUga25vd24gYW5kIHJlcG9ydGVkIGJ1Z3Mgd2hpY2ggbmVnYXRpdmVs eSBhZmZlY3QKKzs7IGNlcnRhaW4gZmVhdHVyZXMuICBUaGlzIG1vZGUgc2hvdWxkIGJlbmVmaXQg YXMgdGhlc2UgYnVncyBhcmUgZml4ZWQKKzs7IG9yIHdvcmtlZCBhcm91bmQuCis7OworOzsgLSBU aGUgTWFya2Rvd24gZ3JhbW1hciBpbnNlcnRzIGJsb2NrX2NvbnRpbnVhdGlvbiBub2RlcyBhcyBj aGlsZHJlbgorOzsgICBvZiBjb2RlX2ZlbmNlX2NvbnRlbnQsIHdoaWNoIGNvbmZ1c2VzIGJvdGgg dGhlIGluc3BlY3RvciBhbmQgdGhlCis7OyAgIGVtYmVkZGVkIHBhcnNlci4gIFRoaXMgYWZmZWN0 cyBjb2RlIGJsb2NrcyBpbnNpZGUgYmxvY2sgcXVvdGVzLgorOzsKKzs7IC0gSFRNTCBibG9jayB0 eXBlIDQgKGA8IScgZm9sbG93ZWQgYnkgYW4gdXBwZXJjYXNlIGxldHRlciwgZS5nLiwKKzs7ICAg YDwhRE9DVFlQRSBodG1sPicpIGNhdXNlcyB0aGUgcGFyc2VyIHRvIGNvbnN1bWUgYWxsIHN1YnNl cXVlbnQKKzs7ICAgY29udGVudC4gIExvd2VyY2FzZSBgPCFkb2N0eXBlIGh0bWw+JyB3b3JrcyBh cyBhIHdvcmthcm91bmQuCis7OyAgIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVy LWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3duL2lzc3Vlcy8yMzM+LgorOzsKKzs7IC0gU3Vw ZXJzY3JpcHQgKGBedGV4dF4nKSBhbmQgc3Vic2NyaXB0IChgfnRleHR+Jykgc3ludGF4IGlzIG5v dAorOzsgICBzdXBwb3J0ZWQgYnkgdGhlIGdyYW1tYXIuICBObyBFWFRFTlNJT05fIGJ1aWxkIGZs YWcgZXhpc3RzIGZvcgorOzsgICB0aGlzLiAgVGhpcyBpcyBQYW5kb2MgLyBQSFAgTWFya2Rvd24g RXh0cmEgc3ludGF4LCBub3QgQ29tbW9uTWFyaworOzsgICBvciBHRk0uCis7OworOzsgLSBPcmRl cmVkIChudW1iZXJlZCkgbGlzdHMgZG8gbm90IG5lc3QgYnkgaW5kZW50YXRpb24uICBJbmRlbnRp bmcKKzs7ICAgYSBgMS4nIGl0ZW0gdW5kZXIgYW5vdGhlciBvcmRlcmVkIGl0ZW0gZG9lcyBub3Qg cHJvZHVjZSBhIG5lc3RlZAorOzsgICBsaXN0IG5vZGU7IHRoZSBwYXJzZXIgZWl0aGVyIHRyZWF0 cyBpdCBhcyBhIGZsYXQgc2libGluZyBvcgorOzsgICBhYnNvcmJzIGl0IGludG8gdGhlIHBhcmVu dCBpdGVtJ3MgcGFyYWdyYXBoIGFzIGEKKzs7ICAgYmxvY2tfY29udGludWF0aW9uLiAgVW5vcmRl cmVkIChgLScsIGAqJywgYCsnKSBsaXN0cyBuZXN0Cis7OyAgIGNvcnJlY3RseS4gIERlbW90ZS9w cm9tb3RlIG9mIG9yZGVyZWQgbGlzdCBpdGVtcyBpcyB0aGVyZWZvcmUKKzs7ICAgZGlzYWJsZWQu Cis7OworOzsgLSBSZW51bWJlcmluZyBvcmRlcmVkIGxpc3RzIChgbWFya2Rvd24tdHMtcmVudW1i ZXItbGlzdCcpIG1heSBvbmx5Cis7OyAgIGFmZmVjdCBpdGVtcyBmcm9tIHBvaW50IGRvd253YXJk IGlmIHRoZSBwYXJzZXIgc3BsaXRzIGEgc2luZ2xlCis7OyAgIGxpc3QgaW50byBzZXBhcmF0ZSBg bGlzdCcgbm9kZXMsIG9yIG1heSBjb250aW51ZSBudW1iZXJpbmcgYWNyb3NzCis7OyAgIHR3byBz ZXBhcmF0ZSBsaXN0cyBpZiB0aGUgcGFyc2VyIG1lcmdlcyB0aGVtIGludG8gb25lIG5vZGUuCis7 OworOzsgLSBFbXB0eSBsaW5lcyBmb2xsb3dpbmcgYW4gYGluZGVudGVkX2NvZGVfYmxvY2snIG1h eSBiZSBjbGFpbWVkIGJ5Cis7OyAgIHRoZSBwYXJzZXIgYXMgY29udGludWF0aW9uIGxpbmVzIG9m IHRoYXQgYmxvY2ssIHJhdGhlciB0aGFuIGJlaW5nCis7OyAgIHRyZWF0ZWQgYXMgYmxhbmsgc2Vw YXJhdG9ycy4KIDs7Cis7OyAtIFBpcGUgdGFibGVzIGFyZSBpbmNvbnNpc3RlbnRseSBwYXJzZWQu ICBXaGl0ZXNwYWNlIGlzIGNvcnJlY3RseQorOzsgICB0cmltbWVkIGF0IHRoZSBzdGFydCBvZiBh IGNlbGwgY29udGVudCBidXQgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcworOzsgICBpbmNvcnJlY3Rs eSBpbmNsdWRlZC4gIEVtcHR5IGNlbGxzIGNhbiBjb250YWluIHVuZXZlbiAicmFnZ2VkIiByb3cK Kzs7ICAgY29sdW1uIGNvbmZpZ3VyYXRpb25zIHRoYXQgY2FuIGNvbmZ1c2UgdGhlIHBhcnNlci4K Kzs7Cis7OyAgIE1hcmtkb3duIHBpcGUgdGFibGVzIHdpdGggcGFyc2luZyBpc3N1ZXM6Cis7Owor OzsgICB8Q29sdW1uIDF8Q29sdW1uIDJ8Q29sdW1uIDN8Cis7OyAgIHwtLS0tLS0tLXwtLS0tLS0t LXwtLS0tLS0tLXwKKzs7ICAgfCAgICAgICAgfCAgICAgICAgfCAgICAgICAgfAorOzsgICB8ICAg ICAgICB8ICAgICAgICB8ICAgICAgICB8IDwtLSBwYXJzZSBlcnJvcgorOzsKKzs7ICAgfENvbHVt biAxfENvbHVtbiAyfENvbHVtbiAzfAorOzsgICB8LS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS18 Cis7OyAgIHwgICAgICAgIHwgICAgICAgIHwgICAgICAgIHwKKzs7ICAgfCB4eHggICAgfCAgICAg ICAgfCAgICAgICAgfCA8LS0gcGFyc2VkIGNvcnJlY3RseQorOzsKKzs7ICAgfENvbHVtbiAxfENv bHVtbiAyfCA8LS0gMiBjb2x1bW5zIGNvcnJlY3QKKzs7ICAgfC0tLS0tLS0tfC0tLS0tLS0tfCA8 LS0gMiBjb2x1bW5zIGNvcnJlY3QKKzs7ICAgICAgICAgICAgfCAgICAgICAgfCA8LS0gMSBjb2x1 bW4gaW5jb3JyZWN0Cis7OyAgICAgICAgICAgIHwgICAgICAgIHwgPC0tIHBhcnNlIGVycm9yCis7 OyAgIHwgICAgICAgIHwgICAgICAgIHwgPC0tIG5vdCBhIHJvdyBhZnRlciB0aGUgZXJyb3IsIGFi b3ZlCis7OworOzsgICBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFy cy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMvMjQxPgorOzsgICAgICAgPGh0dHBzOi8vZ2l0 aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMv MjQyPgogCiA7OzsgQ29kZToKIAogKHJlcXVpcmUgJ3RyZWVzaXQpCiAocmVxdWlyZSAnc3Vici14 KQotKHJlcXVpcmUgJ291dGxpbmUpCiAocmVxdWlyZSAnc2VxKQorKHJlcXVpcmUgJ291dGxpbmUp CisocmVxdWlyZSAnZ290by1hZGRyKQorKHJlcXVpcmUgJ3hyZWYpCisocmVxdWlyZSAnaWNvbnMp CiAKLSh0cmVlc2l0LWRlY2xhcmUtdW5hdmFpbGFibGUtZnVuY3Rpb25zKQotCi0oYWRkLXRvLWxp c3QKLSAndHJlZXNpdC1sYW5ndWFnZS1zb3VyY2UtYWxpc3QKLSAnKG1hcmtkb3duCi0gICAiaHR0 cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVyLWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3du IgotICAgOmNvbW1pdCAiNDEzMjg1MjMxY2U4ZmE4YjExZTcwNzRiYmUyNjViNDhhYTcyNzdmOSIK LSAgIDpzb3VyY2UtZGlyICJ0cmVlLXNpdHRlci1tYXJrZG93bi9zcmMiKQotIHQpCi0oYWRkLXRv LWxpc3QKLSAndHJlZXNpdC1sYW5ndWFnZS1zb3VyY2UtYWxpc3QKLSAnKG1hcmtkb3duLWlubGlu ZQotICAgImh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRl ci1tYXJrZG93biIKLSAgIDpjb21taXQgIjQxMzI4NTIzMWNlOGZhOGIxMWU3MDc0YmJlMjY1YjQ4 YWE3Mjc3ZjkiCi0gICA6c291cmNlLWRpciAidHJlZS1zaXR0ZXItbWFya2Rvd24taW5saW5lL3Ny YyIpCi0gdCkKKzs7OyBDdXN0b21pemF0aW9uczoKIAotOzs7IEhlbHBlciBmdW5jdGlvbnMKLQot KGRlZnZhciBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tYXAKLSAgJygoImMrKyIg LiBjcHApCi0gICAgKCJjIyIgLiBjLXNoYXJwKQotICAgICgic2giIC4gYmFzaCkpCi0gICJBbGlz dCBtYXBwaW5nIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbmFtZXMgdG8gdHJlZS1zaXR0ZXIgbGFuZ3Vh Z2VzLgotCi1LZXlzIHNob3VsZCBiZSBzdHJpbmdzLCBhbmQgdmFsdWVzIHNob3VsZCBiZSBsYW5n dWFnZSBzeW1ib2xzLgotCi1Gb3IgZXhhbXBsZSwgXCJjKytcIiBpbgotCi0gICAgYGBgYysrCi0g ICAgaW50IG1haW4oKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBgYGAKLQotbWFw cyB0byB0cmVlLXNpdHRlciBsYW5ndWFnZSBgY3BwJy4iKQotCi0oZGVmdmFyIG1hcmtkb3duLXRz LWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwCi0gICcoKGJhc2ggLiBiYXNoLXRzLW1vZGUpCi0g ICAgKGMgLiBjLXRzLW1vZGUpCi0gICAgKGMtc2hhcnAgLiBjc2hhcnAtdHMtbW9kZSkKLSAgICAo Y21ha2UgLiBjbWFrZS10cy1tb2RlKQotICAgIChjcHAgLiBjKystdHMtbW9kZSkKLSAgICAoY3Nz IC4gY3NzLXRzLW1vZGUpCi0gICAgKGRvY2tlcmZpbGUgLiBkb2NrZXJmaWxlLXRzLW1vZGUpCi0g ICAgKGVsaXhpciAuIGVsaXhpci10cy1tb2RlKQotICAgIChnbyAuIGdvLXRzLW1vZGUpCi0gICAg KGdvbW9kIC4gZ28tbW9kLXRzLW1vZGUpCi0gICAgKGdvd29yayAuIGdvLXdvcmstdHMtbW9kZSkK LSAgICAoaGVleCAuIGhlZXgtdHMtbW9kZSkKLSAgICAoaHRtbCAuIGh0bWwtdHMtbW9kZSkKLSAg ICAoamF2YSAuIGphdmEtdHMtbW9kZSkKLSAgICAoamF2YXNjcmlwdCAuIGpzLXRzLW1vZGUpCi0g ICAgKGpzb24gLiBqc29uLXRzLW1vZGUpCi0gICAgKGx1YSAuIGx1YS10cy1tb2RlKQotICAgIChw aHAgLiBwaHAtdHMtbW9kZSkKLSAgICAocHl0aG9uIC4gcHl0aG9uLXRzLW1vZGUpCi0gICAgKHJ1 YnkgLiBydWJ5LXRzLW1vZGUpCi0gICAgKHJ1c3QgLiBydXN0LXRzLW1vZGUpCi0gICAgKHRvbWwg LiB0b21sLXRzLW1vZGUpCi0gICAgKHRzeCAuIHRzeC10cy1tb2RlKQotICAgICh0eXBlc2NyaXB0 IC4gdHlwZXNjcmlwdC10cy1tb2RlKQotICAgICh5YW1sIC4geWFtbC10cy1tb2RlKSkKLSAgIkFu IGFsaXN0IG9mIHN1cHBvcnRlZCBjb2RlIGJsb2NrIGxhbmd1YWdlcyBhbmQgdGhlaXIgbWFqb3Ig bW9kZS4iKQorKGRlZmdyb3VwIG1hcmtkb3duLXRzIG5pbAorICAiTWFqb3IgbW9kZSBmb3Igdmll d2luZyBhbmQgZWRpdGluZyBNYXJrZG93biBidWZmZXJzLiIKKyAgOnByZWZpeCAibWFya2Rvd24t dHMtIgorICA6Z3JvdXAgJ3RleHQKKyAgOmdyb3VwICdlZGl0aW5nCisgIDp2ZXJzaW9uICIzMS4x IikKIAogKGRlZmN1c3RvbSBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCBuaWwKICAgIk5vbi1uaWwg bWVhbnMgaGlkZSBNYXJrZG93biBtYXJrdXAgZGVsaW1pdGVycyBpbiB0aGlzIGJ1ZmZlci4iCiAg IDp0eXBlICdib29sZWFuCisgIDpsb2NhbCB0CiAgIDpzYWZlICMnYm9vbGVhbnAKLSAgOmdyb3Vw ICdtYXJrZG93bi10cykKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEu MCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZWxsaXBzaXMgbmlsCisgICJUaGUgZWxsaXBz aXMgdG8gdXNlIGluIGZvbGRlZCBoZWFkaW5ncy4KK1doZW4gbmlsLCB1c2UgdGhlIHN0YW5kYXJk IHRocmVlIGRvdHMuICBXaGVuIGEgbm9uLWVtcHR5IHN0cmluZywKK3VzZSB0aGF0IHN0cmluZyBp bnN0ZWFkLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0ICA6dGFnICJEZWZhdWx0ICguLi4pIiBu aWwpCisgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRhZyAiU3RyaW5nIiA6dmFsdWUgIiDijIQi KSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZj dXN0b20gbWFya2Rvd24tdHMtbWVudS1iYXItc2hvdyB0CisgICJOb24tbmlsIG1lYW5zIHNob3cg dGhlIE1hcmtkb3duIG1lbnUgaW4gdGhlIG1lbnUgYmFyLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAg OnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20g bWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nICdzaG93LWFsbAorICAiRGVmYXVsdCBoZWFkaW5n IGZvbGRpbmcgbGV2ZWwuIgorICA6dHlwZSAnKGNob2ljZQorICAgICAgICAgIChjb25zdCA6dGFn ICJTaG93IGV2ZXJ5dGhpbmciIHNob3ctYWxsKQorICAgICAgICAgIChjb25zdCA6dGFnICJGb2xk IGV2ZXJ5dGhpbmcsIHNob3dpbmcgdG9wLWxldmVsIGhlYWRpbmdzIiBmb2xkLWFsbCkKKyAgICAg ICAgICAoY29uc3QgOnRhZyAiRm9sZCBoZWFkaW5ncywgc2hvd2luZyBhbGwgaGVhZGluZyBsZXZl bHMiIGZvbGQtaGVhZGluZ3MpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lv biAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzIG5pbAorICAi Tm9uLW5pbCBtZWFucyBkaXNwbGF5IGlubGluZSBpbWFnZXMgYmVsb3cgaW1hZ2UgbGlua3MuIgor ICA6dHlwZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAi MS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbWFnZS1tYXgtd2lkdGggJ3dpbmRvdwor ICAiTWF4aW11bSB3aWR0aCBvZiBpbmxpbmUgaW1hZ2VzIGluIHBpeGVscy4KK1doZW4gYHdpbmRv dycsIHVzZSB0aGUgd2luZG93IGJvZHkgd2lkdGguICBXaGVuIGEgbnVtYmVyLCB1c2UKK3RoYXQg YXMgdGhlIG1heGltdW0gcGl4ZWwgd2lkdGguIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgIDp0 YWcgIldpbmRvdyB3aWR0aCIgd2luZG93KQorICAgICAgICAgICAgICAgICAobmF0bnVtIDp0YWcg IlBpeGVsIHdpZHRoIikpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIx LjAiKQogCi07OzsgRmFjZXMKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGlzcGxheS1yZW1vdGUt aW5saW5lLWltYWdlcyBuaWwKKyAgIkhvdyB0byBkaXNwbGF5IHJlbW90ZSBpbmxpbmUgaW1hZ2Vz LgorV2hlbiBuaWwsIGRvIG5vdCBkaXNwbGF5IHJlbW90ZSBpbWFnZXMuICBXaGVuIGBkb3dubG9h ZCcsIGZldGNoIHRoZQoraW1hZ2UgaW50byBhIHRlbXBvcmFyeSBidWZmZXIgYW5kIGRpc3BsYXkg aXQuCisKK1JlbW90ZSBpbWFnZXMgYXJlIHNraXBwZWQgYnkgZGVmYXVsdCBmb3Igc2VjdXJpdHku IgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiU2tpcCByZW1vdGUgaW1hZ2VzIiBuaWwp CisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJEb3dubG9hZCByZW1vdGUgaW1hZ2VzIiBk b3dubG9hZCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQor CisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3ggJygi4piRIiAuICIrIikK KyAgIklmIG1hcmt1cCBpcyBoaWRkZW4sIGRpc3BsYXkgdGhpcyBmb3IgYSBjaGVja2VkIHRhc2sg bGlzdCBtYXJrZXIuCitWYWx1ZSBmb3JtczoKKyAtIGNvbnMgKFBSRUZFUlJFRCAuIEZBTExCQUNL KTogUFJFRkVSUkVEIGlzIHVzZWQgaWYgaXRzIGZpcnN0IGNoYXJhY3RlcgorICAgcGFzc2VzIGBj aGFyLWRpc3BsYXlhYmxlLXAnLCBvdGhlcndpc2UgRkFMTEJBQ0suCisgLSBzeW1ib2wgYGljb24n OiBkZWZlciB0byB0aGUgaWNvbnMuZWwgaWNvbgorICAgYG1hcmtkb3duLXRzLWNoZWNrZWQtY2hl Y2tib3gtaWNvbic7IGN1c3RvbWl6ZSB2aWEKKyAgIFxcW2N1c3RvbWl6ZS1pY29uXS4KKyAtIG5p bDogZGlzcGxheSB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zIChzdHJp bmcgOnRhZyAiUHJlZmVycmVkIChHVUkpIikKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmlu ZyA6dGFnICJGYWxsYmFjayAoVFRZKSIpKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAi VXNlIGljb25zLmVsIGljb24iIGljb24pCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJE aXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNr YWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZpbmUtaWNvbiBtYXJrZG93bi10cy1jaGVja2VkLWNo ZWNrYm94LWljb24gbmlsCisgICcoKGltYWdlICJjaGVja2VkLnN2ZyIgOmhlaWdodCBsaW5lIDph c2NlbnQgY2VudGVyKQorICAgIChzeW1ib2wgIuKYkSIpCisgICAgKHRleHQgIisiKSkKKyAgIklj b24gdXNlZCBmb3IgYSBjaGVja2VkIHRhc2sgbGlzdCBtYXJrZXIgd2hlbiBtYXJrdXAgaXMgaGlk ZGVuLgorQ29uc3VsdGVkIG9ubHkgd2hlbiBgbWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveCcg aXMgdGhlIHN5bWJvbAorYGljb24nLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9t IG1hcmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveCAnKCLimJAiIC4gIi0iKQorICAiSWYgbWFy a3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGZvciBhbiB1bmNoZWNrZWQgdGFzayBsaXN0IG1h cmtlci4KK1ZhbHVlIGZvcm1zOgorIC0gY29ucyAoUFJFRkVSUkVEIC4gRkFMTEJBQ0spOiBQUkVG RVJSRUQgaXMgdXNlZCBpZiBpdHMgZmlyc3QgY2hhcmFjdGVyCisgICBwYXNzZXMgYGNoYXItZGlz cGxheWFibGUtcCcsIG90aGVyd2lzZSBGQUxMQkFDSy4KKyAtIHN5bWJvbCBgaWNvbic6IGRlZmVy IHRvIHRoZSBpY29ucy5lbCBpY29uCisgICBgbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94 LWljb24nOyBjdXN0b21pemUgdmlhCisgICBcXFtjdXN0b21pemUtaWNvbl0uCisgLSBuaWw6IGRp c3BsYXkgdGhlIHJhdyBtYXJrdXAuIgorICA6dHlwZSAnKGNob2ljZSAoY29ucyAoc3RyaW5nIDp0 YWcgIlByZWZlcnJlZCAoR1VJKSIpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRh ZyAiRmFsbGJhY2sgKFRUWSkiKSkKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIlVzZSBp Y29ucy5lbCBpY29uIiBpY29uKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxh eSBvcmlnaW5hbCBtYXJrdXAiIG5pbCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12 ZXJzaW9uICIxLjAiKQorCisoZGVmaW5lLWljb24gbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNr Ym94LWljb24gbmlsCisgICcoKGltYWdlICJ1bmNoZWNrZWQuc3ZnIiA6aGVpZ2h0IGxpbmUgOmFz Y2VudCBjZW50ZXIpCisgICAgKHN5bWJvbCAi4piQIikKKyAgICAodGV4dCAiLSIpKQorICAiSWNv biB1c2VkIGZvciBhbiB1bmNoZWNrZWQgdGFzayBsaXN0IG1hcmtlciB3aGVuIG1hcmt1cCBpcyBo aWRkZW4uCitDb25zdWx0ZWQgb25seSB3aGVuIGBtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2ti b3gnIGlzIHRoZSBzeW1ib2wKK2BpY29uJy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1 c3RvbSBtYXJrZG93bi10cy10aGVtYXRpYy1icmVhay1jaGFyYWN0ZXIgJyg/4pSAIC4gPy0pCisg ICJJZiBtYXJrdXAgaXMgaGlkZGVuLCBkaXNwbGF5IHRoaXMgY2hhcmFjdGVyIGZvciB0aGVtYXRp YyBicmVha3MuCitJdCBpcyByZXBlYXRlZCB0byBmaWxsIHRoZSB3aW5kb3cgd2lkdGguCitUaGUg dmFsdWUgaXMgYSBjb25zIChQUkVGRVJSRUQgLiBGQUxMQkFDSyk6IFBSRUZFUlJFRCBpcyB1c2Vk IGlmIGl0IHBhc3NlcworYGNoYXItZGlzcGxheWFibGUtcCcsIG90aGVyd2lzZSBGQUxMQkFDSyBp cyB1c2VkLgorbmlsIGRpc3BsYXlzIHRoZSByYXcgbWFya3VwLiIKKyAgOnR5cGUgJyhjaG9pY2Ug KGNvbnMgKGNoYXJhY3RlciA6dGFnICJQcmVmZXJyZWQgKEdVSSkiKQorICAgICAgICAgICAgICAg ICAgICAgICAoY2hhcmFjdGVyIDp0YWcgIkZhbGxiYWNrIChUVFkpIikpCisgICAgICAgICAgICAg ICAgIChjb25zdCA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnZlcnNp b24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rv d24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaCAnKD/CtiAuID98KQorICAiSWYgbWFya3Vw IGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGNoYXJhY3RlciBmb3IgYSBiYWNrc2xhc2ggaGFyZCBs aW5lIGJyZWFrLgorVGhlIHZhbHVlIGlzIGEgY29ucyAoUFJFRkVSUkVEIC4gRkFMTEJBQ0spOiBQ UkVGRVJSRUQgaXMgdXNlZCBpZiBpdCBwYXNzZXMKK2BjaGFyLWRpc3BsYXlhYmxlLXAnLCBvdGhl cndpc2UgRkFMTEJBQ0sgaXMgdXNlZC4KK25pbCBrZWVwcyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0 eXBlICcoY2hvaWNlIChjb25zIChjaGFyYWN0ZXIgOnRhZyAiUHJlZmVycmVkIChHVUkpIikKKyAg ICAgICAgICAgICAgICAgICAgICAgKGNoYXJhY3RlciA6dGFnICJGYWxsYmFjayAoVFRZKSIpKQor ICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxheSBvcmlnaW5hbCBtYXJrdXAiIG5p bCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVm Y3VzdG9tIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZQorICAobGFtYmRhIChuKQor ICAgIChsZXQqICgodmFsIChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVlCisgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpKQorICAg ICAgICAgICAoY2ggKGlmIChjaGFyYWN0ZXJwIHZhbCkgdmFsID98KSkpCisgICAgICAobWFrZS1z dHJpbmcgbiBjaCkpKQorICAiSWYgbWFya3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGZvciBh IHRyYWlsaW5nLXNwYWNlcyBoYXJkIGxpbmUgYnJlYWsuCitUaGUgdmFsdWUgY2FuIGJlOgorLSBh IGNoYXJhY3RlciBvciBzdHJpbmc6IHNob3duIG9uY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFp bGluZyBzcGFjZXMsCisgIHdpdGggbm8gcmVwZXRpdGlvbiAodGhlIHJlbWFpbmluZyBzcGFjZXMg c3RheSBpbnZpc2libGUpOworLSBhIGZ1bmN0aW9uOiBjYWxsZWQgd2l0aCBvbmUgYXJndW1lbnQs IHRoZSBudW1iZXIgb2YgdHJhaWxpbmcgc3BhY2VzLAorICBhbmQgbXVzdCByZXR1cm4gdGhlIHN0 cmluZyB0byBkaXNwbGF5IGluIHBsYWNlIG9mIHRoZSBydW47CistIG5pbDoga2VlcCB0aGUgcmF3 IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjaGFyYWN0ZXIgOnRhZyAiRGlzcGxheSBzcGVj aWZpZWQgY2hhcmFjdGVyIChubyByZXBldGl0aW9uKSIpCisgICAgICAgICAgICAgICAgIChzdHJp bmcgOnRhZyAiRGlzcGxheSBzcGVjaWZpZWQgc3RyaW5nIChubyByZXBldGl0aW9uKSIpCisgICAg ICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJGdW5jdGlvbiBmcm9tIGNvdW50IHRvIGRpc3Bs YXkgc3RyaW5nIikKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkRpc3BsYXkgb3JpZ2lu YWwgbWFya3VwIiBuaWwpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAi MS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1mb250aWZ5LWNvZGUtYmxvY2tzLW5hdGl2 ZWx5IHQKKyAgIk5vbi1uaWwgbWVhbnMgZm9udGlmeSBjb2RlIGJsb2NrIGNvbnRlbnRzIHVzaW5n IHRoZSBsYW5ndWFnZSdzIG1vZGUuCitXaGVuIG5vbi1uaWwsIGZlbmNlZCBjb2RlIGJsb2NrcyBh cmUgaGlnaGxpZ2h0ZWQgd2l0aCBzeW50YXggb2YgdGhlCitlbWJlZGRlZCBsYW5ndWFnZSAodmlh IHRyZWUtc2l0dGVyIGZvciBsYW5ndWFnZXMgd2l0aCBhIHRyZWUtc2l0dGVyCittb2RlLCBvciB2 aWEgY29udmVudGlvbmFsIGZvbnQtbG9jayBmb3IgdGhlIHJlc3QpLiAgV2hlbiBuaWwsIGNvZGUK K2Jsb2NrcyBrZWVwIG9ubHkgdGhlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrJyBiYWNrZ3JvdW5k IGZhY2UuICBUb2dnbGluZworZm9yIHRoZSB0cy1lbWJlZGRlZCBwYXRoIHRha2VzIGVmZmVjdCBh ZnRlciByZXN0YXJ0aW5nCitgbWFya2Rvd24tdHMtbW9kZScgaW4gdGhlIGJ1ZmZlci4iCisgIDp0 eXBlICdib29sZWFuCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAi KQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWVuYWJsZS1jb2RlLWJsb2NrLWNvbnRleHQtbW9k ZSB0CisgICJOb24tbmlsIGF1dG9tYXRpY2FsbHkgZW5hYmxlcyBgbWFya2Rvd24tdHMtY29kZS1i bG9jay1jb250ZXh0LW1vZGUnLgorSWYgbm9uLW5pbCBhbmQgYHBvaW50JyBpcyBpbiBhIGZlbmNl ZCBjb2RlIGJsb2NrLCB0aGlzIHJ1bnMKK2BpbmRlbnQtZm9yLXRhYi1jb21tYW5kJywgYG5ld2xp bmUnLCBldC5hbC4sIGluIHRoZSBtb2RlIG9mIHRoZSBjb2RlCitibG9jay4iCisgIDp0eXBlICdi b29sZWFuCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCiso ZGVmY3VzdG9tIG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLWxpZ2h0ZXIg IiBbY29kZV0iCisgICJNaW5vciBtb2RlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQt bW9kZScgbGlnaHRlciBzdHJpbmcuCitTZXQgdG8gbmlsIHRvIGRpc2FibGUgdGhlIGxpZ2h0ZXIu IgorICA6dHlwZSAnc3RyaW5nCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9u ICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWluaGliaXQtY29kZS1ibG9jay1tb2Rl LXdhcm5pbmdzIHQKKyAgIklmIG5vbi1uaWwsIGluaGliaXQgY29kZS1ibG9jayBtYWpvci1tb2Rl IG1lc3NhZ2VzIGFuZCB3YXJuaW5ncy4KK1NvbWUgZmVuY2VkIGNvZGUtYmxvY2sgbWFqb3IgbW9k ZXMgcHJvZHVjZSBtZXNzYWdlcyBvciB3YXJuaW5ncyB3aGljaAoraGF2ZSBsaXR0bGUgcmVsZXZh bmNlIHRvIE1hcmtkb3duIGJ1ZmZlcnMuICBVc2UgdGhpcyBvcHRpb24gdG8gaW5oaWJpdAordGhl bS4gIE1ham9yIG1vZGVzIG1heSBiZSBlbmFibGVkIGZvciBmb250aWZpY2F0aW9uIG9yIGVkaXRp bmcgaW4gdGhlCittb2RlJ3MgY29udGV4dC4iCisgIDp0eXBlICdib29sZWFuCisgIDp2ZXJzaW9u ICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmdmFyIHdhcm5pbmctbWlu aW11bS1sZXZlbCkKKworKGRlZm1hY3JvIG1hcmtkb3duLXRzLS1pbmhpYml0LW1lc3NhZ2VzLWFu ZC13YXJuaW5ncyAodmFyICZyZXN0IGJvZHkpCisgICJFeGVjdXRlIEJPRFkgd2l0aCBtZXNzYWdl cyBhbmQgd2FybmluZ3MgaW5oaWJpdGVkLgorVkFSIGlzIGEgdmFyaWFibGUncyBzeW1ib2w7IGUu Zy4sCitcXD0nbWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MuICBJ ZiB0aGUgc3ltYm9sJ3MgdmFsdWUKK2lzIG5vbi1uaWwsIGRvIHdoYXQgaXQgc2F5cyBvbiB0aGUg dGluLgorSW5oaWJpdCBtZXNzYWdlcyBpbiB0aGUgZWNobyBhcmVhLgorSW5oaWJpdCBtZXNzYWdl cyBpbiB0aGUgbG9nLgorSW5oaWJpdCB3YXJuaW5ncyB3aXRoIGxldmVsIDwgOmVycm9yLiIKKyAg KGRlY2xhcmUgKGluZGVudCBkZWZ1bikpCisgIGAobGV0KiAoKHZhbCAoc3ltYm9sLXZhbHVlICx2 YXIpKQorICAgICAgICAgIChpbmhpYml0LW1lc3NhZ2UgdmFsKQorICAgICAgICAgOzsgQWxzbyBp bmhpYml0IGxvZ2dpbmcgdG8gKk1lc3NhZ2VzKgorICAgICAgICAgKG1lc3NhZ2UtbG9nLW1heCAo aWYgdmFsIG5pbCBtZXNzYWdlLWxvZy1tYXgpKQorICAgICAgICAgKHdhcm5pbmctbWluaW11bS1s ZXZlbAorICAgICAgICAgIChpZiB2YWwgOmVycm9yIHdhcm5pbmctbWluaW11bS1sZXZlbCkpKQor ICAgICAocHJvZ24gLEBib2R5KSkpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGVmYXVsdC1j b2RlLWJsb2NrLW1vZGUgJ3RleHQtbW9kZQorICAiRGVmYXVsdCBtb2RlIGZvciBhbm9ueW1vdXMg Y29kZSBibG9ja3MuIgorICA6dHlwZSAnKGNob2ljZQorICAgICAgICAgIChjb25zdCAgOnRhZyAi VGV4dCBtb2RlIiB0ZXh0LW1vZGUpCisgICAgICAgICAgKGNvbnN0ICA6dGFnICJGdW5kYW1lbnRh bCBtb2RlIiBmdW5kYW1lbnRhbC1tb2RlKQorICAgICAgICAgIChzeW1ib2wgOnRhZyAiT3RoZXIg bW9kZSBzeW1ib2wiCisgICAgICAgICAgICAgICAgICA6dmFsaWRhdGUgKGxhbWJkYSAod2lkKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHZhbCAod2lkZ2V0LXZhbHVlIHdp ZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5sZXNzIChhbmQgdmFsIChl cSAnc3ltYm9sICh0eXBlLW9mIHZhbCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh3aWRnZXQtcHV0IHdpZCA6ZXJyb3IgIk11c3QgYmUgYSBub24tbmlsIHN5bWJvbCIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkKSkpKSkKKyAgOnZlcnNpb24gIjMx LjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMt dGFibGUtZGVmYXVsdC1jb2x1bW4td2lkdGggNQorICAiQ29sdW1uIHdpZHRoIGZvciBuZXcgY29s dW1ucy4KK1lvdSBtYXkgbWFrZSB0aGlzIHdpZGVyLCBidXQgc21hbGxlciB0aGFuIDUgaXMgbm90 IHJlY29tbWVuZGVkLiIKKyAgOnR5cGUgJ2ludGVnZXIKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpw YWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZW5hYmxlLXRh YmxlLW1vZGUgdAorICAiTm9uLW5pbCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYG1hcmtkb3duLXRz LXRhYmxlLW1vZGUnLgorSWYgbm9uLW5pbCwgZW5hYmxlIGBtYXJrZG93bi10cy10YWJsZS1tb2Rl JyBpZiBgcG9pbnQnIGlzIGluIGEgTWFya2Rvd24KK3RhYmxlLiIKKyAgOnR5cGUgJ2Jvb2xlYW4K KyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0 b20gbWFya2Rvd24tdHMtdGFibGUtYXV0by1hbGlnbiAnKGNlbGwtbmF2aWdhdGlvbiB0cmFuc3Bv c2UpCisgICJBdXRvbWF0aWNhbGx5IGFsaWduIHRoZSB0YWJsZSBhdCBwb2ludCBkdXJpbmcgdGhl c2Ugb3BlcmF0aW9ucy4KK0lmIHQsIHRyaWdnZXIgb24gYWxsIHN1cHBvcnRlZCBvcGVyYXRpb25z LgorSWYgbmlsLCBkbyBub3QgYXV0byBhbGlnbi4KK090aGVyd2lzZSwgaXQgaXMgYSBsaXN0IG9m IHN5bWJvbHMgcmVwcmVzZW50aW5nIHRhYmxlIG9wZXJhdGlvbnMuIgorICA6dHlwZSAnKGNob2lj ZQorICAgICAgICAgIChjb25zdCA6dGFnICJEbyBub3QgYXV0b21hdGljYWxseSBhbGlnbiIgbmls KQorICAgICAgICAgIChjb25zdCA6dGFnICJBbHdheXMgYXV0b21hdGljYWxseSBhbGlnbiIgdCkK KyAgICAgICAgICAoc2V0CisgICAgICAgICAgIChjb25zdCA6dGFnICJDZWxsIG5hdmlnYXRpb24i IGNlbGwtbmF2aWdhdGlvbikKKyAgICAgICAgICAgKGNvbnN0IDp0YWcgIlRyYW5zcG9zZSIgdHJh bnNwb3NlKSkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQor CisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWZlYXR1cmVzICcoanVzdGlmeS1j ZWxscykKKyAgIlVzZSB0aGVzZSBvcHRpb25hbCBmZWF0dXJlcyB3aGVuIGFsaWduaW5nIGEgdGFi bGUuCitBbGlnbmluZyBhIHRhYmxlIGFsaWducyBlYWNoIGNvbHVtbiB0byB0aGUgd2lkdGggb2Yg aXRzIHdpZGVzdCBjZWxsLiAgSXQKK2NhbiBhbHNvIGp1c3RpZnkgZWFjaCBjZWxsIGFjY29yZGlu ZyB0byB0aGUgdGFibGUncyBkZWxpbWl0ZXIgbGluZSBsZWZ0LAorY2VudGVyLCBvciByaWdodC1o YW5kIGp1c3RpZmljYXRpb24gcnVsZXMuCisKK0N1c3RvbWl6aW5nIHRoaXMgdXNlciBvcHRpb24g aXMgbW9zdCB1c2VmdWwgd2hlbiB0aGUgdXNlciBvcHRpb24KK2BtYXJrZG93bi10cy10YWJsZS1h dXRvLWFsaWduJyBpcyBlbmFibGVkIGFuZCB0byBhdm9pZCBoYXZpbmcgdG8gdXNlIGEKK3ByZWZp eCBhcmd1bWVudCBiZWZvcmUgZXZlcnkgYXV0by1hbGlnbm1lbnQgb3BlcmF0aW9uLgorCitJZiB0 LCBlbmFibGUgYWxsIG9wdGlvbmFsIGFsaWdubWVudCBvcGVyYXRpb25zLgorSWYgbmlsLCBvcGVy YXRpb25zIGFyZSBlbmFibGVkIGJleW9uZCBiYXNpYyBjb2x1bW4gYWxpZ25tZW50LgorT3RoZXJ3 aXNlLCBpdCBpcyBhIGxpc3Qgb2Ygc3ltYm9scy4iCisgIDp0eXBlICcoY2hvaWNlCisgICAgICAg ICAgKGNvbnN0IDp0YWcgIk5vIG9wdGlvbmFsIGZlYXR1cmVzIiBuaWwpCisgICAgICAgICAgKGNv bnN0IDp0YWcgIkFsbCBvcHRpb25hbCBmZWF0dXJlcyIgdCkKKyAgICAgICAgICAoc2V0CisgICAg ICAgICAgIChjb25zdCA6dGFnICJKdXN0aWZ5IGNlbGxzIiBqdXN0aWZ5LWNlbGxzKSkpCisgIDp2 ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1h cmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbGlnaHRlciAiIFt0YWJsZV0iCisgICJNaW5vciBtb2Rl IGBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlJyBsaWdodGVyIHN0cmluZy4KK1NldCB0byBuaWwg dG8gZGlzYWJsZSB0aGUgbGlnaHRlci4iCisgIDp0eXBlICdzdHJpbmcKKyAgOnZlcnNpb24gIjMx LjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKzs7OyBGYWNlczoKIAogKGRlZmdyb3Vw IG1hcmtkb3duLXRzLWZhY2VzIG5pbAotICAiRmFjZXMgdXNlZCBpbiBNYXJrZG93biBUUyBNb2Rl LiIKKyAgIkZhY2VzIHVzZWQgYnkgTWFya2Rvd24tVFMuIgogICA6Z3JvdXAgJ21hcmtkb3duLXRz LWZhY2VzCiAgIDpncm91cCAnZmFjZXMpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWRlbGltaXRl ciAnKCh0ICg6aW5oZXJpdCBzaGFkb3cpKSkKLSAgIkZhY2UgZm9yIHRoZSAjIGJlZm9yZSBNYXJr ZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3IgdGhlICMgYmVmb3JlIE1hcmtkb3duIGhlYWRp bmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5n LTEgJygodCAoOmluaGVyaXQgb3V0bGluZS0xKSkpCi0gICJGYWNlIGZvciBmaXJzdCBsZXZlbCBN YXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3IgZmlyc3QgbGV2ZWwgTWFya2Rvd24gaGVh ZGluZ3MuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLXNldGV4 dC1oZWFkaW5nICcoKHQgKDppbmhlcml0IG1hcmtkb3duLXRzLWhlYWRpbmctMSkpKQotICAiRmFj ZSBmb3Igc2V0ZXh0IE1hcmtkb3duIGhlYWRpbmdzIChoZWFkaW5ncyB1bmRlcmxpbmVkIGJ5ID09 PSBvciAtLS0pLiIpCisgICJGYWNlIGZvciBzZXRleHQgTWFya2Rvd24gaGVhZGluZ3MgKGhlYWRp bmdzIHVuZGVybGluZWQgYnkgPT09IG9yIC0tLSkuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChk ZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctMiAnKCh0ICg6aW5oZXJpdCBvdXRsaW5lLTIpKSkK LSAgIkZhY2UgZm9yIHNlY29uZCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBm b3Igc2Vjb25kIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQog CiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTMgJygodCAoOmluaGVyaXQgb3V0bGluZS0z KSkpCi0gICJGYWNlIGZvciB0aGlyZCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFj ZSBmb3IgdGhpcmQgbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAiMzEuMSIp CiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctNCAnKCh0ICg6aW5oZXJpdCBvdXRsaW5l LTQpKSkKLSAgIkZhY2UgZm9yIGZvdXJ0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAi RmFjZSBmb3IgZm91cnRoIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMx LjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTUgJygodCAoOmluaGVyaXQgb3V0 bGluZS01KSkpCi0gICJGYWNlIGZvciBmaWZ0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQor ICAiRmFjZSBmb3IgZmlmdGggbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAi MzEuMSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctNiAnKCh0ICg6aW5oZXJpdCBv dXRsaW5lLTYpKSkKLSAgIkZhY2UgZm9yIHNpeHRoIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIp CisgICJGYWNlIGZvciBzaXh0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iCisgIDp2ZXJzaW9u ICIzMS4xIikKIAotKGRlZmZhY2UgbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIgJygodCAoOmluaGVy aXQgc2hhZG93KSkpCi0gICJGYWNlIGZvciBNYXJrZG93biBsaXN0IG1hcmtlcnMgbGlrZSAtIGFu ZCAqLiIpCisoZGVmZmFjZSBtYXJrZG93bi10cy1lbXBoYXNpcyAnKCh0ICg6aW5oZXJpdCBpdGFs aWMpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGVtcGhhc2lzIChpdGFsaWMpIHRleHQuIgorICA6 dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWJvbGQgJygodCAoOmluaGVy aXQgYm9sZCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gc3Ryb25nIGVtcGhhc2lzIChib2xkKSB0 ZXh0LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1zdHJpa2V0 aHJvdWdoICcoKHQgKDpzdHJpa2UtdGhyb3VnaCB0KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBz dHJpa2V0aHJvdWdoIHRleHQuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZmYWNlIG1hcmtk b3duLXRzLWJsb2NrLXF1b3RlICcoKHQgKDppbmhlcml0IGl0YWxpYykpKQotICAiRmFjZSBmb3Ig TWFya2Rvd24gYmxvY2sgcXVvdGVzLiIpCisgICJGYWNlIGZvciBNYXJrZG93biBibG9jayBxdW90 ZXMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWxpbmsgJygo dCAoOmluaGVyaXQgbGluaykpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gbGluayB0ZXh0IGFuZCBp bWFnZSBkZXNjcmlwdGlvbnMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtk b3duLXRzLWxpbmstZGVzdGluYXRpb24gJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1m YWNlKSkpCisgICJGYWNlIGZvciBNYXJrZG93biBsaW5rIGRlc3RpbmF0aW9ucyAoVVJMcykuIgor ICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWNvZGUtc3BhbiAnKCh0 ICg6aW5oZXJpdCBmb250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3du IGlubGluZSBjb2RlIHNwYW5zLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJr ZG93bi10cy1jb2RlLWJsb2NrICcoKHQgKDpleHRlbmQgdCkpKQorICAiRmFjZSBmb3IgTWFya2Rv d24gZmVuY2VkIGNvZGUgYmxvY2sgY29udGVudC4KK0FsdGVyIHRoaXMgZmFjZSB0byBhZGQgYSBg OmJhY2tncm91bmQnIGZvciBhIHZpc3VhbGx5IGRpc3RpbmN0Citjb2RlIGJsb2NrIHJlZ2lvbiwg ZS5nLjoKKyAgKHNldC1mYWNlLWF0dHJpYnV0ZSBcXD0nbWFya2Rvd24tdHMtY29kZS1ibG9jayBu aWwgOmJhY2tncm91bmQgXCJncmF5OTVcIikiCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZh Y2UgbWFya2Rvd24tdHMtaW4tY29kZS1ibG9jayAnKCh0ICg6ZXh0ZW5kIHQpKSkKKyAgIkZhY2Ug Zm9yIHdoZW4gcG9pbnQgaXMgaW4gYSBNYXJrZG93biBjb2RlIGJsb2NrLgorU2VlIGBtYXJrZG93 bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZScuCitBbHRlciB0aGlzIGZhY2UgdG8gYWRk IGEgYDpiYWNrZ3JvdW5kJyBmb3IgYSB2aXN1YWxseSBkaXN0aW5jdCB0YWJsZQorcmVnaW9uLCBl LmcuOgorICAoc2V0LWZhY2UtYXR0cmlidXRlIFxcPSdtYXJrZG93bi10cy1pbi1jb2RlLWJsb2Nr IDpiYWNrZ3JvdW5kIFwiZ3JheTk1XCIpIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNl IG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbWFya3VwLWhpZGRlbgorICAnKCgoKGJhY2tncm91bmQg bGlnaHQpKSAoOmJhY2tncm91bmQgImdyYXk5NSIgOmV4dGVuZCB0KSkKKyAgICAoKChiYWNrZ3Jv dW5kIGRhcmspKSAgKDpiYWNrZ3JvdW5kICJncmF5MTUiIDpleHRlbmQgdCkpKQorICAiRmFjZSBm b3IgTWFya2Rvd24gZmVuY2VkIGNvZGUgYmxvY2sgY29udGVudCB3aGVuIG1hcmt1cCBpcyBoaWRk ZW4uCitVc2VkIGluc3RlYWQgb2YgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2snIHdoZW4gYG1hcmtk b3duLXRzLWhpZGUtbWFya3VwJworaXMgbm9uLW5pbC4iCisgIDp2ZXJzaW9uICIzMS4xIikKKwor KGRlZmZhY2UgbWFya2Rvd24tdHMtaW5kZW50ZWQtY29kZS1ibG9jayAnKCh0ICg6aW5oZXJpdCBm b250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGluZGVudGVkIGNv ZGUgYmxvY2tzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1o dG1sLXRhZyAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLW1hcmt1cC1mYWNlKSkpCisgICJG YWNlIGZvciBpbmxpbmUgSFRNTCB0YWdzIGluIE1hcmtkb3duLiIKKyAgOnZlcnNpb24gIjMxLjEi KQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1odG1sLWJsb2NrICcoKHQgKDppbmhlcml0IGZvbnQt bG9jay1kb2MtbWFya3VwLWZhY2UpKSkKKyAgIkZhY2UgZm9yIEhUTUwgYmxvY2tzIGluIE1hcmtk b3duLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10aGVtYXRp Yy1icmVhayAnKCh0ICg6aW5oZXJpdCBzaGFkb3cgOmV4dGVuZCB0KSkpCisgICJGYWNlIGZvciBN YXJrZG93biB0aGVtYXRpYyBicmVha3MgKGhvcml6b250YWwgcnVsZXMpLgorQ3VzdG9taXplIHRo aXMgZmFjZSB0byBhZGQgYSA6YmFja2dyb3VuZCBmb3IgYSBmdWxsLXdpZHRoIHZpc3VhbCBydWxl LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1lbnRpdHktcmVm ZXJlbmNlICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1idWlsdGluLWZhY2UpKSkKKyAgIkZhY2Ug Zm9yIG5hbWVkIEhUTUwgZW50aXR5IHJlZmVyZW5jZXMgbGlrZSAmYW1wOyBhbmQgJmNvcHk7LiIK KyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1udW1lcmljLWNoYXJh Y3Rlci1yZWZlcmVuY2UKKyAgJygodCAoOmluaGVyaXQgZm9udC1sb2NrLWVzY2FwZS1mYWNlKSkp CisgICJGYWNlIGZvciBudW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIGxpa2UgJiM2NTsgYW5k ICYjeDQxOy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtbGF0 ZXggJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1mYWNlKSkpCisgICJGYWNlIGZvciBM YVRlWCAvIG1hdGggY29udGVudCBpbiBNYXJrZG93biAoJC4uLiQgYW5kICQkLi4uJCQpLiIKKyAg OnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YWJsZS1oZWFkZXIgJygo dCAoOmluaGVyaXQgKGJvbGQgZm9udC1sb2NrLWRvYy1mYWNlKSkpKQorICAiRmFjZSBmb3IgTWFy a2Rvd24gcGlwZSB0YWJsZSBoZWFkZXIgY2VsbHMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhk ZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlLWNlbGwgJygodCAoOmluaGVyaXQgZGVmYXVsdCkpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gcGlwZSB0YWJsZSBkYXRhIGNlbGxzLiIKKyAgOnZlcnNpb24g IjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2VsbCAnKCh0 ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIHBp cGUgdGFibGUgZGVsaW1pdGVyIGNlbGxzICgtLS0gc2VwYXJhdG9ycykuIgorICA6dmVyc2lvbiAi MzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlICcoKHQgKDpleHRlbmQgdCkpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gdGFibGUuCitBbHRlciB0aGlzIGZhY2UgdG8gYWRkIGEgYDpi YWNrZ3JvdW5kJyBmb3IgYSB2aXN1YWxseSBkaXN0aW5jdCB0YWJsZQorcmVnaW9uLCBlLmcuOgor ICAoc2V0LWZhY2UtYXR0cmlidXRlIFxcPSdtYXJrZG93bi10cy10YWJsZSBuaWwgOmJhY2tncm91 bmQgXCJncmF5OTVcIikiCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24t dHMtaW4tdGFibGUgJygodCAoOmV4dGVuZCB0KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBgbWFy a2Rvd24tdHMtaW4tdGFibGUtbW9kZScgd2hlbiBwb2ludCBpcyBpbiBhIHRhYmxlLgorQWx0ZXIg dGhpcyBmYWNlIHRvIGFkZCBhIGA6YmFja2dyb3VuZCcgZm9yIGEgdmlzdWFsbHkgZGlzdGluY3Qg dGFibGUKK3JlZ2lvbiwgZS5nLjoKKyAgKHNldC1mYWNlLWF0dHJpYnV0ZSBcXD0nbWFya2Rvd24t dHMtaW4tdGFibGUgbmlsIDpiYWNrZ3JvdW5kIFwiZ3JheTk1XCIpIgorICA6dmVyc2lvbiAiMzEu MSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWxhbmd1YWdlLWtleXdvcmQgJygodCAoOmluaGVy aXQgZm9udC1sb2NrLWtleXdvcmQtZmFjZSkpKQotICAiRmFjZSBmb3IgdGhlIGxhbmd1YWdlIGtl eXdvcmQgZm9yIE1hcmtkb3duIGNvZGUgYmxvY2tzLiIpCisgICJGYWNlIGZvciB0aGUgbGFuZ3Vh Z2Uga2V5d29yZCBmb3IgTWFya2Rvd24gY29kZSBibG9ja3MuIgorICA6dmVyc2lvbiAiMzEuMSIp CisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWxpc3QtbWFya2VyICcoKHQgKDppbmhlcml0IHNoYWRv dykpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gbGlzdCBtYXJrZXJzIGxpa2UgLSBhbmQgKi4iCisg IDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFr LWJhY2tzbGFzaAorICAnKCh0ICg6aW5oZXJpdCBvdXRsaW5lLTQgOndlaWdodCBib2xkKSkpCisg ICJGYWNlIGZvciBNYXJrZG93biBoYXJkIGxpbmUgYnJlYWtzIGludHJvZHVjZWQgYnkgYSB0cmFp bGluZyBiYWNrc2xhc2guIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3du LXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gtaGlkZGVuCisgICcoKHQgKDppbmhlcml0IG91 dGxpbmUtNCA6d2VpZ2h0IGJvbGQpKSkKKyAgIkZhY2UgZm9yIHRyYWlsaW5nLWJhY2tzbGFzaCBo YXJkIGxpbmUgYnJlYWsgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLiIKKyAgOnZlcnNpb24gIjMxLjEi KQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UKKyAgJygoKChi YWNrZ3JvdW5kIGxpZ2h0KSkgKDpiYWNrZ3JvdW5kICJncmF5NzAiIDp3ZWlnaHQgYm9sZCkpCisg ICAgKCgoYmFja2dyb3VuZCBkYXJrKSkgICg6YmFja2dyb3VuZCAiZ3JheTQwIiA6d2VpZ2h0IGJv bGQpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGhhcmQgbGluZSBicmVha3MgaW50cm9kdWNlZCBi eSB0d28gdHJhaWxpbmcgc3BhY2VzLgorVGhlIHRyYWlsaW5nIHNwYWNlcyBhcmUgb3RoZXJ3aXNl IGludmlzaWJsZSwgc28gdGhleSBhcmUgc2hvd24gYXMgYQorc2hhZG93LWNvbG9yZWQgYmxvY2su IgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWhhcmQtbGluZS1i cmVhay1zcGFjZS1oaWRkZW4KKyAgJygodCAoOmluaGVyaXQgb3V0bGluZS00IDp3ZWlnaHQgYm9s ZCkpKQorICAiRmFjZSBmb3IgdHJhaWxpbmctc3BhY2VzIGhhcmQgbGluZSBicmVhayB3aGVuIG1h cmt1cCBpcyBoaWRkZW4uIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKLTs7OyBGb250LWxvY2sKKyhk ZWZmYWNlIG1hcmtkb3duLXRzLXRhc2stdW5jaGVja2VkICcoKHQgKDppbmhlcml0IG1hcmtkb3du LXRzLWxpc3QtbWFya2VyKSkpCisgICJGYWNlIGZvciBNYXJrZG93biB1bmNoZWNrZWQgdGFzayBs aXN0IG1hcmtlcnMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRz LXRhc2stY2hlY2tlZCAnKCh0ICg6aW5oZXJpdCBtYXJrZG93bi10cy1saXN0LW1hcmtlcikpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gY2hlY2tlZCB0YXNrIGxpc3QgbWFya2Vycy4iCisgIDp2ZXJz aW9uICIzMS4xIikKKworKHRyZWVzaXQtZGVjbGFyZS11bmF2YWlsYWJsZS1mdW5jdGlvbnMpCisK KyhhZGQtdG8tbGlzdAorICd0cmVlc2l0LWxhbmd1YWdlLXNvdXJjZS1hbGlzdAorICcobWFya2Rv d24KKyAgICJodHRwczovL2dpdGh1Yi5jb20vdHJlZS1zaXR0ZXItZ3JhbW1hcnMvdHJlZS1zaXR0 ZXItbWFya2Rvd24iCisgICA6Y29tbWl0ICI0MTMyODUyMzFjZThmYThiMTFlNzA3NGJiZTI2NWI0 OGFhNzI3N2Y5IgorICAgOnNvdXJjZS1kaXIgInRyZWUtc2l0dGVyLW1hcmtkb3duL3NyYyIpCisg dCkKKworKGFkZC10by1saXN0CisgJ3RyZWVzaXQtbGFuZ3VhZ2Utc291cmNlLWFsaXN0CisgJyht YXJrZG93bi1pbmxpbmUKKyAgICJodHRwczovL2dpdGh1Yi5jb20vdHJlZS1zaXR0ZXItZ3JhbW1h cnMvdHJlZS1zaXR0ZXItbWFya2Rvd24iCisgICA6Y29tbWl0ICI0MTMyODUyMzFjZThmYThiMTFl NzA3NGJiZTI2NWI0OGFhNzI3N2Y5IgorICAgOnNvdXJjZS1kaXIgInRyZWUtc2l0dGVyLW1hcmtk b3duLWlubGluZS9zcmMiKQorIHQpCisKKzs7OyBWYXJpYWJsZXM6CisKKyhkZWZ2YXIgbWFya2Rv d24tdHMtLXNldC11cC1pbmxpbmUgbmlsCisgICJMZXQgYmluZCB0aGlzIHRvIG5vbi1uaWwgZm9y IGlubGluZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycy4iKQorCisoZGVmdmFyIG1hcmtkb3du LXRzLWNvZGUtYmxvY2stbW9kZXMKKyAgYCgoc2ggYmFzaC10cy1tb2RlKQorICAgIChzaGVsbCBi YXNoLXRzLW1vZGUpCisgICAgKCwoaW50ZXJuICJjIyIpIGNzaGFycC10cy1tb2RlKQorICAgIChj cHAgYysrLXRzLW1vZGUpCisgICAgKGVsIGVtYWNzLWxpc3AtbW9kZSkKKyAgICAoZWxpc3AgZW1h Y3MtbGlzcC1tb2RlKQorICAgIChnb2xhbmcgZ28tdHMtbW9kZSkKKyAgICAoZ29tb2QgZ28tbW9k LXRzLW1vZGUpCisgICAgKGdvd29yayBnby13b3JrLXRzLW1vZGUpCisgICAgKGphdmFzY3JpcHQg anMtdHMtbW9kZSkKKyAgICAobWQgbWFya2Rvd24tdHMtbW9kZSkKKyAgICAocHkgcHl0aG9uLXRz LW1vZGUpCisgICAgKHJiIHJ1YnktdHMtbW9kZSkKKyAgICAocnMgcnVzdC10cy1tb2RlKQorICAg ICh0ZXggbGF0ZXgtbW9kZSkKKyAgICAodHMgdHlwZXNjcmlwdC10cy1tb2RlKQorICAgICh5bWwg eWFtbC10cy1tb2RlKSkKKyAgIkV4dHJhIG1hcHBpbmdzIGZyb20gY29kZSBibG9jayBsYW5ndWFn ZSB0YWdzIHRvIG1ham9yIG1vZGVzLgorCitFbnRyaWVzIGhlcmUgYXJlIG9ubHkgbmVlZGVkIHdo ZW4gdGhlIGxhbmd1YWdlIHRhZyBpbiBhIGZlbmNlZCBjb2RlCitibG9jayBkb2VzIE5PVCBtYXRj aCB0aGUgY29udmVudGlvbmFsIG1vZGUgbmFtZSBkZXJpdmF0aW9uLCBlLmcuIHRoZQordXNlciB3 cml0ZXMgXFw9YFxcPWBcXD1gdHMgaW5zdGVhZCBvZiBcXD1gXFw9YFxcPWB0eXBlc2NyaXB0LCBv cgorXFw9YFxcPWBcXD1gcHkgaW5zdGVhZCBvZiBcXD1gXFw9YFxcPWBweXRob24uICBGb3IgdGFn cyB0aGF0IGFscmVhZHkKK3Jlc29sdmUgdmlhIHRoZSBzdGFuZGFyZCBcIi10cy1tb2RlXCIvXCIt bW9kZVwiIGhldXJpc3RpY3MgdGhlcmUgaXMgbm8KK25lZWQgdG8gYWRkIGFuIGVudHJ5LgorCitU aGUgYWxpc3QgaXMgb2YgdGhlIGZvcm0gKExBTkdVQUdFIE1BSk9SLU1PREUpLiBNQUpPUi1NT0RF IGNhbiBiZSBhCit0cmVlLXNpdHRlciBvciBhIGNvbnZlbnRpb25hbCBtb2RlLgorCitJZiB5b3Ug cHJlZmVyIGEgY29udmVudGlvbmFsIG1vZGUgb3ZlciBpdHMgdHJlZS1zaXR0ZXIgdmFyaWFudCwg YWRkIG9yCityZXBsYWNlIHJlbGV2YW50IGVudHJpZXMuICBGb3IgZXhhbXBsZToKKworICAgIChh ZGQtdG8tbGlzdCBcXD0nbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcworICAgICAgXFw9Jyhw eXRob24gcHl0aG9uLW1vZGUpKQorICAgIChzZXRmIChhbGlzdC1nZXQgXFw9J3B5IG1hcmtkb3du LXRzLWNvZGUtYmxvY2stbW9kZXMpCisgICAgICAgICAgXFw9JyhweXRob24tbW9kZSkpCisKK0Nv ZGUgYmxvY2tzIGZvciB0aGF0IG5vbiB0cmVlLXNpdHRlciBtb2RlcyB3aWxsIGJlIGZvbnRpZmll ZCB1c2luZyB0aGUKK21vZGUncyBjb252ZW50aW9uYWwgZm9udC1sb2NrIHJ1bGVzLiIpCisKKyhk ZWZ2YXIgbWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMKKyAg JyhtYXJrZG93bi10cy1tb2RlCisgICAgcGhwLXRzLW1vZGUpCisgICJUcmVhdCB0aGVzZSBjb2Rl IGJsb2NrIHRyZWUtc2l0dGVyIG1vZGVzIGFzIGNvbnZlbnRpb25hbC4KK1NvbWUgbW9kZXMgdGhh dCBlbWJlZCBtdWx0aXBsZSBgdHJlZXNpdCcgcGFyc2VycyBuZWVkIHRvIGJlIHRyZWF0ZWQgd2l0 aAorY29udmVudGlvbmFsIGZvbnQtbG9jay4gIGBtYXJrZG93bi10cy1tb2RlJyBpdHNlbGYgaXMg b25lIG9mIHRoZW0uIikKKworOzs7IEZvbnQtbG9jazoKIAogKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWRlbGltaXRlciAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKICAgIkZv bnRpZnkgZGVsaW1pdGVyIE5PREUgYW5kIG9wdGlvbmFsbHkgaGlkZSBpdHMgbWFya3VwLgpAQCAt MTY4LDIzICs3NzEsODM3IEBAIG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAgIChw dXQtdGV4dC1wcm9wZXJ0eSAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUt ZW5kIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRz LS1tYXJrdXApKSkKIAorKGRlZnZhciB1cmwtbWFpbC1jb21tYW5kKSA7IHVybC91cmwtdmFycy5l bAorCisoZGVmdW4gbWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24gKGJlZyBlbmQgdXJsKQor ICAiTWFrZSB0aGUgcmVnaW9uIGZyb20gQkVHIHRvIEVORCBhIGNsaWNrYWJsZSBidXR0b24gZm9y IFVSTC4KK0ZvciBtYWlsdG86IFVSSXMsIHVzZSBgdXJsLW1haWwtY29tbWFuZCcuICBGb3Igb3Ro ZXIgc2NoZW1lcworXChlLmcuLCBodHRwLCBmdHApLCBvcGVuIHdpdGggYGJyb3dzZS11cmwnLiAg T3RoZXJ3aXNlLCB0cmVhdCBhcworYSByZWxhdGl2ZSBmaWxlIHBhdGggYW5kIG9wZW4gd2l0aCBg ZmluZC1maWxlJy4KKworRG8gbm90IHBhc3MgYGZhY2UnIHRvIGBtYWtlLXRleHQtYnV0dG9uJzog dGhlIGxpbmsgZmFjZSBpcyBhbHJlYWR5CithcHBsaWVkIGJ5IGBtYXJrZG93bi10cy0tZm9udGlm eS1saW5rLW5vZGUnIHZpYQorYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJyAod2l0aCBg Om92ZXJyaWRlIGFwcGVuZCcpLCBhbmQKK2BhZGQtdGV4dC1wcm9wZXJ0aWVzJyB3b3VsZCBvdGhl cndpc2UgcmVwbGFjZSB0aGUgYXBwZW5kZWQgZmFjZQorbGlzdCB3aXRoIGEgc2luZ2xlIGBtYXJr ZG93bi10cy1saW5rJywgY2xvYmJlcmluZyBhbiBlbmNsb3NpbmcKK2hlYWRpbmcgZmFjZS4iCisg IDs7IE5PVEU6IFVSSSBzY2hlbWUgYW5kIGhvc3QgbmFtZSBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBw ZXIgUkZDIDM5ODYKKyAgOzsgYW5kIFJGQyA3MjMwLgorICAobGV0ICgoY2FzZS1mb2xkLXNlYXJj aCBuaWwpKQorICAgIChtYWtlLXRleHQtYnV0dG9uIGJlZyBlbmQKKyAgICAgICAgICAgICAgICAg ICAgICAnYWN0aW9uIChsYW1iZGEgKF9idXR0b24pCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1w cmVmaXgtcCAiIyIgdXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJr ZG93bi10cy0tZm9sbG93LWZyYWdtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdWJzdHJpbmcgdXJsIDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoc3RyaW5nLW1hdGNoLXAgIlxcYG1haWx0bzoiIHVybCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZnVuY2FsbCB1cmwtbWFpbC1jb21tYW5kCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgbWFpbHRvOiIgIiIg dXJsKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaC1w ICJcXGBbYS16XSs6IiB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJy b3dzZS11cmwgdXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChmaW5k LWZpbGUgdXJsKSkpKQorICAgICAgICAgICAgICAgICAgICAgICdoZWxwLWVjaG8gdXJsKSkpCisK KyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0aW9uIChub2RlIG92ZXJy aWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBsaW5rIGRlc3RpbmF0aW9uIE5PREUg YW5kIGhpZGUgaXQgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQg RU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRl Jy4iCisgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgKHRyZWVzaXQtbm9kZS1z dGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKQorICAgJ21hcmtkb3duLXRzLWxpbmst ZGVzdGluYXRpb24gb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAod2hlbiBtYXJrZG93bi10cy1oaWRl LW1hcmt1cAorICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUp ICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2li bGUgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0t bGluay1yZWYtY2FjaGUgbmlsCisgICJDYWNoZWQgYWxpc3Qgb2YgKExBQkVMIC4gVVJMKSBmcm9t IGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25zLgorRWFjaCBlbnRyeSBpcyBhIGNvbnMgY2VsbCBt YXBwaW5nIGEgZG93bmNhc2VkIGxhYmVsIHN0cmluZyB0byBpdHMKK2Rlc3RpbmF0aW9uIFVSTC4i KQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZS10aWNrIG5pbAor ICAiVmFsdWUgb2YgYGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrJyB3aGVuIHRoZSBjYWNoZSB3 YXMgYnVpbHQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saW5rLXJlZi1kZWZpbml0aW9ucyAo KQorICAiUmV0dXJuIGFuIGFsaXN0IG9mIChMQUJFTCAuIFVSTCkgZnJvbSBsaW5rIHJlZmVyZW5j ZSBkZWZpbml0aW9ucy4KK0xBQkVMIGlzIGRvd25jYXNlZCBmb3IgY2FzZS1pbnNlbnNpdGl2ZSBt YXRjaGluZy4gIFJlc3VsdHMgYXJlCitjYWNoZWQgYW5kIHJlYnVpbHQgb25seSB3aGVuIHRoZSBi dWZmZXIgY2hhbmdlcy4iCisgIChsZXQgKCh0aWNrIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGlj aykpKQorICAgICh1bmxlc3MgKGVxIHRpY2sgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlLXRp Y2spCisgICAgICAobGV0KiAoKHJvb3QgKHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rv d24pKQorICAgICAgICAgICAgIChtYXRjaGVzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAg ICAgICAgICAgICAgICAgICAgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAnKChsaW5rX3Jl ZmVyZW5jZV9kZWZpbml0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rX2xhYmVs KSBAbGFiZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmtfZGVzdGluYXRpb24pIEBk ZXN0KSkpKQorICAgICAgICAgICAgIGRlZnMpCisgICAgICAgICh3aGlsZSBtYXRjaGVzCisgICAg ICAgICAgKGxldCogKChsYWJlbC1wYWlyIChwb3AgbWF0Y2hlcykpCisgICAgICAgICAgICAgICAg IChkZXN0LXBhaXIgKHBvcCBtYXRjaGVzKSkKKyAgICAgICAgICAgICAgICAgKGxibC10ZXh0IChz dHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRleHQgKGNkciBsYWJlbC1wYWlyKSB0KQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXFsiICJcXF0iKSkpCisgICAgICAg ICAgICAocHVzaCAoY29ucyAoZG93bmNhc2UgbGJsLXRleHQpCisgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLXRleHQgKGNkciBkZXN0LXBhaXIpIHQpKQorICAgICAgICAgICAg ICAgICAgZGVmcykpKQorICAgICAgICAoc2V0cSBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUg KG5yZXZlcnNlIGRlZnMpCisgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNo ZS10aWNrIHRpY2spKSkKKyAgICBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUpKQorCisoZGVm dW4gbWFya2Rvd24tdHMtLXJlc29sdmUtbGluay1yZWYgKGxhYmVsKQorICAiUmVzb2x2ZSBMQUJF TCB0byBhIFVSTCB2aWEgbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbnMuCitMQUJFTCBzaG91bGQg YmUgdGhlIHRleHQgd2l0aG91dCBicmFja2V0cy4gIE1hdGNoaW5nIGlzCitjYXNlLWluc2Vuc2l0 aXZlIHBlciBDb21tb25NYXJrIHNwZWMgc2VjdGlvbiA0LjcuIgorICAoYWxpc3QtZ2V0IChkb3du Y2FzZSBsYWJlbCkgKG1hcmtkb3duLXRzLS1saW5rLXJlZi1kZWZpbml0aW9ucykKKyAgICAgICAg ICAgICBuaWwgbmlsICMnZXF1YWwpKQorCis7OzsgRnJhZ21lbnQgbGlua3M6CisKKyhkZWZjb25z dCBtYXJrZG93bi10cy0tc2x1Zy1naXRodWItc3RyaXAtcmUKKyAgIltdWyFcIiMkJSYnKCkqKywu Lzo7PD0+P0BcXF5ge3x9fl0iCisgICJQdW5jdHVhdGlvbiBzdHJpcHBlZCBieSBHaXRIdWIncyBn aC1zbHVnZ2VyIGJlZm9yZSBoeXBoZW5hdGlvbi4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXNs dWctZ2l0aHViICh0ZXh0KQorICAiUmV0dXJuIHRoZSBHaXRIdWItZmxhdm9yIHNsdWcgZm9yIGhl YWRpbmcgVEVYVC4KK01pcnJvcnMgdGhlIGdoLXNsdWdnZXIgYWxnb3JpdGhtOiBsb3dlcmNhc2Us IHN0cmlwIGEgZml4ZWQKK3B1bmN0dWF0aW9uIHNldCwgcmVwbGFjZSBzcGFjZXMgd2l0aCBoeXBo ZW5zLiIKKyAgKGxldCogKChsYyAoZG93bmNhc2UgdGV4dCkpCisgICAgICAgICAoc3RyaXBwZWQg KHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10 cy0tc2x1Zy1naXRodWItc3RyaXAtcmUgIiIgbGMpKSkKKyAgICAocmVwbGFjZS1yZWdleHAtaW4t c3RyaW5nICJbWzpibGFuazpdXSIgIi0iIHN0cmlwcGVkKSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy0tc2x1Zy1wYW5kb2MgKHRleHQpCisgICJSZXR1cm4gdGhlIFBhbmRvYy1mbGF2b3IgYXV0by1p ZCBzbHVnIGZvciBoZWFkaW5nIFRFWFQuCitNaXJyb3JzIFBhbmRvYydzIGFsZ29yaXRobTogZHJv cCBldmVyeXRoaW5nIGJlZm9yZSB0aGUgZmlyc3QKK2xldHRlciwga2VlcCBhbHBoYW51bWVyaWNz IGFuZCBgXy0uJywgY29sbGFwc2Ugd2hpdGVzcGFjZSBydW5zIHRvCitoeXBoZW5zLCBsb3dlcmNh c2UuICBGYWxscyBiYWNrIHRvIFwic2VjdGlvblwiIGlmIGVtcHR5LiIKKyAgKGxldCogKChsYyAo ZG93bmNhc2UgdGV4dCkpCisgICAgICAgICAoZnJvbS1sZXR0ZXIgKGlmIChzdHJpbmctbWF0Y2gg IltbOmFscGhhOl1dIiBsYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyBs YyAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAgICAgICAgICAgICAgICAgIiIpKQorICAg ICAgICAgKGtlcHQgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICJb Xls6YWxudW06XV8uXG5cdFs6Ymxhbms6XS1dIiAiIiBmcm9tLWxldHRlcikpCisgICAgICAgICAo aHlwaGVuYXRlZCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJbWzpibGFuazpdXHRcbl0rIiAi LSIga2VwdCkpCisgICAgICAgICAodHJpbW1lZCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICIt K1xcJyIgIiIgaHlwaGVuYXRlZCkpKQorICAgIChpZiAoc3RyaW5nLWVtcHR5LXAgdHJpbW1lZCkg InNlY3Rpb24iIHRyaW1tZWQpKSkKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS1leHBsaWNpdC1p ZC1yZQorICAiWyBcdF0qe1sgXHRdKiNcXChbXn0gXHRdK1xcKVsgXHRdKn1bIFx0XSpcXCciCisg ICJNYXRjaCBhIFBhbmRvYy1zdHlsZSB0cmFpbGluZyBgeyNpZH0nIG9uIGEgaGVhZGluZyBsaW5l LgorQ2FwdHVyZSBncm91cCAxIGlzIHRoZSBleHBsaWNpdCBpZC4iKQorCisoZGVmdW4gbWFya2Rv d24tdHMtLWhlYWRpbmctdGV4dC1hbmQtaWQgKHJhdykKKyAgIlNwbGl0IFJBVyBoZWFkaW5nIHRl eHQgaW50byAoVklTSUJMRSAuIEVYUExJQ0lULUlEKS4KK0VYUExJQ0lULUlEIGlzIG5vbi1uaWwg aWYgUkFXIGVuZHMgd2l0aCBhIFBhbmRvYy1zdHlsZSBgeyNpZH0nLAoraW4gd2hpY2ggY2FzZSBW SVNJQkxFIGlzIFJBVyB3aXRoIHRoYXQgc3VmZml4IHJlbW92ZWQuIgorICAoaWYgKHN0cmluZy1t YXRjaCBtYXJrZG93bi10cy0tZXhwbGljaXQtaWQtcmUgcmF3KQorICAgICAgKGNvbnMgKHN1YnN0 cmluZyByYXcgMCAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAgICAgKG1hdGNoLXN0cmlu ZyAxIHJhdykpCisgICAgKGNvbnMgcmF3IG5pbCkpKQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3du LXRzLS1oZWFkaW5nLWlkLWNhY2hlIG5pbAorICAiQ2FjaGVkIGhhc2ggdGFibGUgbWFwcGluZyBo ZWFkaW5nIHNsdWcgc3RyaW5ncyB0byBidWZmZXIgcG9zaXRpb25zLgorRWFjaCB2YWx1ZSBpcyB0 aGUgYnVmZmVyIHBvc2l0aW9uIG9mIHRoZSBzdGFydCBvZiB0aGUgbWF0Y2hpbmcKK2BhdHhfaGVh ZGluZycgb3IgYHNldGV4dF9oZWFkaW5nJyBub2RlLiAgQnVpbHQgbGF6aWx5IGJ5CitgbWFya2Rv d24tdHMtLWhlYWRpbmctaWRzJywgaW52YWxpZGF0ZWQgYnkgYnVmZmVyLXRpY2sgY2hhbmdlLiIp CisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUtdGljayBuaWwK KyAgIlZhbHVlIG9mIGBidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaycgd2hlbiB0aGUgaGVhZGlu Zy1pZCBjYWNoZSB3YXMgYnVpbHQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1idWlsZC1oZWFk aW5nLWlkcyAoKQorICAiV2FsayBhbGwgaGVhZGluZ3MgaW4gdGhlIGJ1ZmZlciBhbmQgcmV0dXJu IGEgaGFzaCB0YWJsZS4KK1doaWNoIG1hcHMgZWFjaCBzbHVnIHRvIHRoZSBidWZmZXIgcG9zaXRp b24gb2YgaXRzIGhlYWRpbmcuICBFYWNoCitoZWFkaW5nIGNvbnRyaWJ1dGVzIGl0cyBHaXRIdWIg c2x1ZywgaXRzIFBhbmRvYyBzbHVnLCBhbmQgaXRzIGV4cGxpY2l0CitgeyNpZH0nIGlmIHByZXNl bnQuICBCb3RoIHNsdWcgYWxnb3JpdGhtcyBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIGJ1ZmZlcgor YmVjYXVzZSBhIG1hcmtkb3duIGZpbGUgaXMgb2Z0ZW4gcHJldmlld2VkIGJ5IHNldmVyYWwgcmVu ZGVyZXJzIChHaXRIdWIKK3dlYiBVSSwgUGFuZG9jLCBtZEJvb2ssIEh1Z28sIGFuZCBzbyBvbikg YW5kIHRoZSBzYW1lIHNvdXJjZSBzaG91bGQKK3Jlc29sdmUgcmVnYXJkbGVzcyBvZiB3aGljaCBv bmUgdGhlIGF1dGhvciB3cm90ZSB0aGUgbGluayBmb3IuICBGb3IgbW9zdAoraGVhZGluZ3MgdGhl IHR3byBhbGdvcml0aG1zIHByb2R1Y2UgdGhlIHNhbWUgc2x1ZyBhbnl3YXkuCitEdXBsaWNhdGUg c2x1Z3MgKHdpdGhpbiBvbmUgYWxnb3JpdGhtKSBhcmUgZGlzYW1iaWd1YXRlZCBieSBhcHBlbmRp bmcKK2AtMScsIGAtMicsIGFuZCBzbyBvbiwgaW4gZG9jdW1lbnQgb3JkZXIsIG1hdGNoaW5nIEdp dEh1YidzIGJlaGF2aW9yLgorV2hlbiB0d28gZGlzdGluY3QgaGVhZGluZ3Mgd291bGQgb3RoZXJ3 aXNlIHNoYXJlIGEgc2x1ZywgdGhlIGZpcnN0CitvY2N1cnJlbmNlIGluIGRvY3VtZW50IG9yZGVy IHdpbnMuIgorICAobGV0ICgodGFibGUgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFsKSkK KyAgICAgICAgOzsgUGVyLWFsZ29yaXRobSBkZWR1cGUgY291bnRlcnM6IGhvdyBtYW55IHRpbWVz IHRoaXMgYmFzZSBzbHVnCisgICAgICAgIDs7IGhhcyBiZWVuIHNlZW4gc28gZmFyIGluIGRvY3Vt ZW50IG9yZGVyLgorICAgICAgICAoZ2gtY291bnRzIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydl cXVhbCkpCisgICAgICAgIChwZC1jb3VudHMgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFs KSkKKyAgICAgICAgKHJvb3QgKHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rvd24pKSkK KyAgICAoZG9saXN0IChjYXAgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAg ICAgcm9vdAorICAgICAgICAgICAgICAgICAgJygoKGF0eF9oZWFkaW5nKSBAaCkKKyAgICAgICAg ICAgICAgICAgICAgKChzZXRleHRfaGVhZGluZykgQGgpKSkpCisgICAgICAobGV0KiAoKG5vZGUg KGNkciBjYXApKQorICAgICAgICAgICAgIChwb3MgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkK KyAgICAgICAgICAgICAocmF3IChzdHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSB0 KSkpCisgICAgICAgICAgICAgOzsgU3RyaXAgdGhlIGxlYWRpbmcgbWFya2VyICgjIyMgb3IgPT09 PS8tLS0tKS4KKyAgICAgICAgICAgICA7OyBGb3IgYXR4LCBkcm9wIGxlYWRpbmcgIydzIGFuZCBm b2xsb3dpbmcgc3BhY2UuCisgICAgICAgICAgICAgOzsgRm9yIHNldGV4dCwgZHJvcCB0aGUgdHJh aWxpbmcgdW5kZXJsaW5lIGxpbmUuCisgICAgICAgICAgICAgKHRleHQgKGNvbmQKKyAgICAgICAg ICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIlxcYCMrWyBcdF0qXFwoLio/XFwpWyBcdF0qIypb IFx0XSpcXCciIHJhdykKKyAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMSByYXcp KQorICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXFxgXFwoLio/XFwpXG5bPS1d K1sgXHRdKlxcJyIgcmF3KQorICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmluZyAxIHJh dykpCisgICAgICAgICAgICAgICAgICAgICh0IHJhdykpKQorICAgICAgICAgICAgIChzcGxpdCAo bWFya2Rvd24tdHMtLWhlYWRpbmctdGV4dC1hbmQtaWQgdGV4dCkpCisgICAgICAgICAgICAgKHZp c2libGUgKGNhciBzcGxpdCkpCisgICAgICAgICAgICAgKGV4cGxpY2l0IChjZHIgc3BsaXQpKSkK KyAgICAgICAgOzsgRXhwbGljaXQgeyNpZH0gd2lucyBvdXRyaWdodDsgZmlyc3Qgb2NjdXJyZW5j ZSBrZWVwcyBpdC4KKyAgICAgICAgKHdoZW4gKGFuZCBleHBsaWNpdCAobm90IChnZXRoYXNoIGV4 cGxpY2l0IHRhYmxlKSkpCisgICAgICAgICAgKHB1dGhhc2ggZXhwbGljaXQgcG9zIHRhYmxlKSkK KyAgICAgICAgOzsgQXV0byBzbHVncyAoR2l0SHViICsgUGFuZG9jKSwgZGVkdXBlZCBwZXIgYWxn b3JpdGhtLgorICAgICAgICAobGV0KiAoKGdoLWJhc2UgKG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1 YiB2aXNpYmxlKSkKKyAgICAgICAgICAgICAgIChwZC1iYXNlIChtYXJrZG93bi10cy0tc2x1Zy1w YW5kb2MgdmlzaWJsZSkpCisgICAgICAgICAgICAgICAoZ2gtbiAoZ2V0aGFzaCBnaC1iYXNlIGdo LWNvdW50cyAwKSkKKyAgICAgICAgICAgICAgIChwZC1uIChnZXRoYXNoIHBkLWJhc2UgcGQtY291 bnRzIDApKQorICAgICAgICAgICAgICAgKGdoLWlkIChpZiAoemVyb3AgZ2gtbikgZ2gtYmFzZQor ICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMtJWQiIGdoLWJhc2UgZ2gtbikpKQor ICAgICAgICAgICAgICAgKHBkLWlkIChpZiAoemVyb3AgcGQtbikgcGQtYmFzZQorICAgICAgICAg ICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMtJWQiIHBkLWJhc2UgcGQtbikpKSkKKyAgICAgICAg ICAocHV0aGFzaCBnaC1iYXNlICgxKyBnaC1uKSBnaC1jb3VudHMpCisgICAgICAgICAgKHB1dGhh c2ggcGQtYmFzZSAoMSsgcGQtbikgcGQtY291bnRzKQorICAgICAgICAgIDs7IEZpcnN0LXdyaXRl ci13aW5zIHNvIGRvY3VtZW50IG9yZGVyIHRpZWJyZWFrcyBjb2xsaXNpb25zLgorICAgICAgICAg ICh1bmxlc3MgKGdldGhhc2ggZ2gtaWQgdGFibGUpIChwdXRoYXNoIGdoLWlkIHBvcyB0YWJsZSkp CisgICAgICAgICAgKHVubGVzcyAoZ2V0aGFzaCBwZC1pZCB0YWJsZSkgKHB1dGhhc2ggcGQtaWQg cG9zIHRhYmxlKSkpKSkKKyAgICB0YWJsZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taGVhZGlu Zy1pZHMgKCkKKyAgIlJldHVybiB0aGUgaGVhZGluZy1pZCBoYXNoIHRhYmxlIGZvciB0aGUgY3Vy cmVudCBidWZmZXIuCitDYWNoZSBpcyByZWJ1aWx0IG9ubHkgd2hlbiBgYnVmZmVyLWNoYXJzLW1v ZGlmaWVkLXRpY2snIGhhcyBhZHZhbmNlZAorc2luY2UgdGhlIGxhc3QgY2FsbCAobWlycm9ycyBg bWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlJykuIgorICAobGV0ICgodGljayAoYnVmZmVyLWNo YXJzLW1vZGlmaWVkLXRpY2spKSkKKyAgICAodW5sZXNzIChlcSB0aWNrIG1hcmtkb3duLXRzLS1o ZWFkaW5nLWlkLWNhY2hlLXRpY2spCisgICAgICAoc2V0cSBtYXJrZG93bi10cy0taGVhZGluZy1p ZC1jYWNoZSAobWFya2Rvd24tdHMtLWJ1aWxkLWhlYWRpbmctaWRzKQorICAgICAgICAgICAgbWFy a2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUtdGljayB0aWNrKSkKKyAgICBtYXJrZG93bi10cy0t aGVhZGluZy1pZC1jYWNoZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9sbG93LWZyYWdtZW50 IChpZCkKKyAgIkp1bXAgdG8gdGhlIGhlYWRpbmcgd2hvc2Ugc2x1ZyBtYXRjaGVzIElEICh3aXRo b3V0IGxlYWRpbmcgYCMnKS4KK1B1c2hlcyB0aGUgbWFyayBiZWZvcmUgbW92aW5nIHNvIGBDLXUg Qy1TUEMnIHJldHVybnMuICBTaWduYWxzCitgdXNlci1lcnJvcicgaWYgbm8gaGVhZGluZyBtYXRj aGVzLiIKKyAgKGlmLWxldCogKChwb3MgKGdldGhhc2ggaWQgKG1hcmtkb3duLXRzLS1oZWFkaW5n LWlkcykpKSkKKyAgICAgIChwcm9nbgorICAgICAgICAocHVzaC1tYXJrKQorICAgICAgICAoZ290 by1jaGFyIHBvcykKKyAgICAgICAgKHJlY2VudGVyKSkKKyAgICAodXNlci1lcnJvciAiTm8gaGVh ZGluZyBmb3IgZnJhZ21lbnQ6ICMlcyIgaWQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250 aWZ5LWhlYWRpbmcgKG5vZGUgX292ZXJyaWRlIF9zdGFydCBfZW5kICZyZXN0IF8pCisgICJBcHBs eSB0aGUgaGVhZGluZyBmYWNlIGFjcm9zcyBOT0RFLgorTGF5ZXIgdGhlIGZhY2Ugb24gdG9wIG9m IGNoaWxkIHN1Yi1ub2RlcyAoZS5nLiBhbiBpbmxpbmUgbGluaykgc28KK3RoZWlyIG93biBmYWNl cyBhcmUgcHJlc2VydmVkLiAgU3RyaXAgYW55IHByaW9yIGNvcHkgb2YgdGhlIGZhY2UKK2ZpcnN0 IHNvIGl0IGRvZXMgbm90IGFjY3VtdWxhdGUgd2hlbiB0aGUgaGVhZGluZyBpcyByZWZvbnRpZmll ZCBvcgoraXRzIGxldmVsL3R5cGUgY2hhbmdlcyBkdXJpbmcgZWRpdGluZy4KKworRm9yIEFUWCBo ZWFkaW5ncywgYWxzbyBmb250aWZ5IGFueSBvcHRpb25hbCB0cmFpbGluZyBjbG9zaW5nLWAjJwor c2VxdWVuY2UgYXMgYSBkZWxpbWl0ZXIuICBUaGUgdHJlZS1zaXR0ZXIgZ3JhbW1hciBkb2VzIG5v dCBwcm9kdWNlIGEKK3NlcGFyYXRlIG5vZGUgZm9yIHRoZXNlOyBwZXIgQ29tbW9uTWFyayB0aGV5 IGFyZSBkZWNvcmF0aXZlIGFuZAorbXVzdCBiZSBwcmVjZWRlZCBieSBhIHNwYWNlIG9yIHRhYi4i CisgIChsZXQqICgodHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkpCisgICAgICAgICAobi1z dGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgKG4tZW5kICAgKHRyZWVz aXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAoZmFjZSAoY29uZAorICAgICAgICAgICAgICAg ICgoZXF1YWwgdHlwZSAic2V0ZXh0X2hlYWRpbmciKQorICAgICAgICAgICAgICAgICAnbWFya2Rv d24tdHMtc2V0ZXh0LWhlYWRpbmcpCisgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAg ICAgKGxldCAoKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgMCkpKQorICAgICAgICAg ICAgICAgICAgIChpbnRlcm4gKGZvcm1hdCAibWFya2Rvd24tdHMtaGVhZGluZy0lZCIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCAodHJlZXNpdC1ub2RlLXRleHQg bWFya2VyIHQpKSkpKSkpKSkKKyAgICAoZm9udC1sb2NrLS1yZW1vdmUtZmFjZS1mcm9tLXRleHQt cHJvcGVydHkgbi1zdGFydCBuLWVuZCAnZmFjZSBmYWNlKQorICAgIChmb250LWxvY2stYXBwZW5k LXRleHQtcHJvcGVydHkgbi1zdGFydCBuLWVuZCAnZmFjZSBmYWNlKQorICAgICh3aGVuIChzdHJp bmctcHJlZml4LXAgImF0eF8iIHR5cGUpCisgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAg KGdvdG8tY2hhciBuLWVuZCkKKyAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdFxuIiBu LXN0YXJ0KQorICAgICAgICAobGV0ICgobGluZS1lbmQgKHBvaW50KSkpCisgICAgICAgICAgKHNr aXAtY2hhcnMtYmFja3dhcmQgIiBcdCIgbi1zdGFydCkKKyAgICAgICAgICAobGV0ICgodHJhaWxp bmctZW5kIChwb2ludCkpKQorICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiMiIG4t c3RhcnQpCisgICAgICAgICAgICAobGV0ICgodHJhaWxpbmctc3RhcnQgKHBvaW50KSkpCisgICAg ICAgICAgICAgICh3aGVuIChhbmQgKDwgdHJhaWxpbmctc3RhcnQgdHJhaWxpbmctZW5kKQorICAg ICAgICAgICAgICAgICAgICAgICAgICg+IHRyYWlsaW5nLXN0YXJ0IG4tc3RhcnQpCisgICAgICAg ICAgICAgICAgICAgICAgICAgKG1lbXEgKGNoYXItYmVmb3JlIHRyYWlsaW5nLXN0YXJ0KSAnKD9c cyA/XHQpKSkKKyAgICAgICAgICAgICAgICAoZm9udC1sb2NrLS1yZW1vdmUtZmFjZS1mcm9tLXRl eHQtcHJvcGVydHkKKyAgICAgICAgICAgICAgICAgdHJhaWxpbmctc3RhcnQgdHJhaWxpbmctZW5k CisgICAgICAgICAgICAgICAgICdmYWNlICdtYXJrZG93bi10cy1kZWxpbWl0ZXIpCisgICAgICAg ICAgICAgICAgKGZvbnQtbG9jay1wcmVwZW5kLXRleHQtcHJvcGVydHkKKyAgICAgICAgICAgICAg ICAgdHJhaWxpbmctc3RhcnQgdHJhaWxpbmctZW5kCisgICAgICAgICAgICAgICAgICdmYWNlICdt YXJrZG93bi10cy1kZWxpbWl0ZXIpCisgICAgICAgICAgICAgICAgKHdoZW4gbWFya2Rvd24tdHMt aGlkZS1tYXJrdXAKKyAgICAgICAgICAgICAgICAgIDs7IEFsc28gaGlkZSB0aGUgc3BhY2Uocykg cHJlY2VkaW5nIHRoZSBjbG9zZXIgYW5kIGFueQorICAgICAgICAgICAgICAgICAgOzsgdHJhaWxp bmcgd2hpdGVzcGFjZSwgc28gdGhlIGhlYWRpbmcgbG9va3MgY2xlYW4uCisgICAgICAgICAgICAg ICAgICAobGV0ICgoaGlkZS1zdGFydCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciB0cmFpbGluZy1zdGFydCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIg bi1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkp KQorICAgICAgICAgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgaGlkZS1zdGFydCBsaW5l LWVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLS1tYXJr dXApKSkpKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlIChu b2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBsaW5rIG9yIGltYWdl IHRleHQgTk9ERSBhcyBhIGNsaWNrYWJsZSBidXR0b24uCitXb3JrcyBmb3IgaW5saW5lIGxpbmtz LCByZWZlcmVuY2UgbGlua3MsIHNob3J0Y3V0IGxpbmtzLCBhbmQKK2ltYWdlIGRlc2NyaXB0aW9u cy4gIFRoZSBVUkwgaXMgdGFrZW4gZnJvbSBhIHNpYmxpbmcKK2BsaW5rX2Rlc3RpbmF0aW9uJyBu b2RlIHdoZW4gcHJlc2VudCwgb3IgcmVzb2x2ZWQgZnJvbSBhCitsaW5rIHJlZmVyZW5jZSBkZWZp bml0aW9uLCBvciB0aGUgbm9kZSB0ZXh0IGl0c2VsZiBpcyB1c2VkIGFzCitmYWxsYmFjay4gIE9W RVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZv bnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0ICgocGFyZW50ICh0cmVlc2l0LW5vZGUtcGFy ZW50IG5vZGUpKSkKKyAgICA7OyBXaGVuIE5PREUgaXMgYSBsaW5rX2xhYmVsIGluc2lkZSBhIGZ1 bGxfcmVmZXJlbmNlX2xpbmsgdGhhdAorICAgIDs7IGFsc28gaGFzIGEgbGlua190ZXh0LCBza2lw IGl0LCBsaW5rX3RleHQgaGFuZGxlcyB0aGF0IGxpbmsuCisgICAgKHVubGVzcyAoYW5kIChzdHJp bmc9ICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAibGlua19sYWJlbCIpCisgICAgICAgICAgICAg ICAgICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVudCAiXFxgbGlua190ZXh0XFwnIikpCisg ICAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgICAodHJlZXNpdC1ub2Rl LXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICAgJ21hcmtkb3duLXRz LWxpbmsgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgICAgKGxldCogKChkZXN0ICh0cmVlc2l0LXNl YXJjaC1zdWJ0cmVlIHBhcmVudCAiXFxgbGlua19kZXN0aW5hdGlvblxcJyIpKQorICAgICAgICAg ICAgICh1cmwgKGlmIGRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXRl eHQgZGVzdCB0KQorICAgICAgICAgICAgICAgICAgICA7OyBSZWZlcmVuY2UgbGlua3M6IHJlc29s dmUgdmlhIGxpbmtfbGFiZWwgb3IgbGlua190ZXh0LgorICAgICAgICAgICAgICAgICAgICAobGV0 KiAoKGxhYmVsLW5vZGUgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgIlxcYGxpbmtfbGFiZWxcXCciKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsYWJlbCAoaWYgbGFiZWwtbm9kZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRyaW0gKHRyZWVzaXQtbm9kZS10ZXh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFi ZWwtbm9kZSB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlxcWyIgIlxcXSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dHJlZXNpdC1ub2RlLXRleHQgbm9kZSB0KSkpKQorICAgICAgICAgICAgICAgICAgICAgIChvciAo bWFya2Rvd24tdHMtLXJlc29sdmUtbGluay1yZWYgbGFiZWwpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIGxhYmVsKSkpKSkKKyAgICAgICAgKG1hcmtkb3duLXRzLS1tYWtlLWxpbmstYnV0dG9u CisgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5v ZGUpIHVybCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1hdXRvbGluayAobm9k ZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgYXV0b2xpbmsgTk9ERSAo VVJJIG9yIGVtYWlsKSBhcyBhIGNsaWNrYWJsZSBidXR0b24uCitGb3IgZW1haWwgYXV0b2xpbmtz LCB0aGUgVVJMIGlzIHByZWZpeGVkIHdpdGggXCJtYWlsdG86XCIuCitBbmdsZSBicmFja2V0IGRl bGltaXRlcnMgYXJlIGhpZGRlbiB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RB UlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgt b3ZlcnJpZGUnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9k ZSkpCisgICAgICAgICAobm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAg ICAoaW5uZXIgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcworICAgICAgICAgICAgICAg ICAoMSsgbm9kZS1zdGFydCkgKDEtIG5vZGUtZW5kKSkpCisgICAgICAgICAodXJsIChpZiAoc3Ry aW5nPSAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImVtYWlsX2F1dG9saW5rIikKKyAgICAgICAg ICAgICAgICAgIChjb25jYXQgIm1haWx0bzoiIGlubmVyKQorICAgICAgICAgICAgICAgIGlubmVy KSkpCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisgICAgIG5vZGUtc3RhcnQg bm9kZS1lbmQgJ21hcmtkb3duLXRzLWxpbmsgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChtYXJr ZG93bi10cy0tbWFrZS1saW5rLWJ1dHRvbiBub2RlLXN0YXJ0IG5vZGUtZW5kIHVybCkKKyAgICAo d2hlbiBtYXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5v ZGUtc3RhcnQgKDErIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlz aWJsZSAnbWFya2Rvd24tdHMtLW1hcmt1cCkKKyAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAoMS0g bm9kZS1lbmQpIG5vZGUtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAn bWFya2Rvd24tdHMtLW1hcmt1cCkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWxp bmstcmVmLWxhYmVsIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlm eSBsaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9uIGxhYmVsIE5PREUgYXMgYSBjbGlja2FibGUgYnV0 dG9uLgorVGhlIGJyYWNrZXRzIGFuZCBjb2xvbiBhcmUgaGlkZGVuIHdoZW4gbWFya3VwIGlzIGhp ZGRlbi4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0 cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRy ZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2Rl LWVuZCBub2RlKSkKKyAgICAgICAgIChwYXJlbnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkp CisgICAgICAgICAoZGVzdC1ub2RlICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVudCAiXFxg bGlua19kZXN0aW5hdGlvblxcJyIpKQorICAgICAgICAgKHVybCAod2hlbiBkZXN0LW5vZGUgKHRy ZWVzaXQtbm9kZS10ZXh0IGRlc3Qtbm9kZSB0KSkpKQorICAgIDs7IEZvbnRpZnkgdGhlIGxhYmVs IHRleHQgKGluc2lkZSBicmFja2V0cykuCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJy aWRlCisgICAgICgxKyBub2RlLXN0YXJ0KSAoMS0gbm9kZS1lbmQpCisgICAgICdtYXJrZG93bi10 cy1saW5rIG92ZXJyaWRlIHN0YXJ0IGVuZCkKKyAgICA7OyBNYWtlIGl0IGEgY2xpY2thYmxlIGJ1 dHRvbi4KKyAgICAod2hlbiB1cmwKKyAgICAgIChtYXJrZG93bi10cy0tbWFrZS1saW5rLWJ1dHRv biAoMSsgbm9kZS1zdGFydCkgKDEtIG5vZGUtZW5kKSB1cmwpKQorICAgIDs7IEhpZGUgIlsiIGJl Zm9yZSBsYWJlbCBhbmQgIl06ICIgYmV0d2VlbiBsYWJlbCBhbmQgZGVzdGluYXRpb24uCisgICAg KHdoZW4gbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBu b2RlLXN0YXJ0ICgxKyBub2RlLXN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZp c2libGUgJ21hcmtkb3duLXRzLS1tYXJrdXApCisgICAgICAobGV0ICgoY29sb24tZW5kIChpZiBk ZXN0LW5vZGUgKHRyZWVzaXQtbm9kZS1zdGFydCBkZXN0LW5vZGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgKDErIG5vZGUtZW5kKSkpKQorICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKDEt IG5vZGUtZW5kKSBjb2xvbi1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2li bGUgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRp ZnktbGluay1yZWYtZGVzdGluYXRpb24gKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3QgXykK KyAgIkZvbnRpZnkgbGluayByZWZlcmVuY2UgZGVzdGluYXRpb24gTk9ERSBhbmQgaGlkZSB3aGVu IG1hcmt1cCBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJv dWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKHRyZWVzaXQtZm9u dGlmeS13aXRoLW92ZXJyaWRlCisgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0 LW5vZGUtZW5kIG5vZGUpCisgICAnbWFya2Rvd24tdHMtbGluay1kZXN0aW5hdGlvbiBvdmVycmlk ZSBzdGFydCBlbmQpCisgICh3aGVuIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgKHB1dC10 ZXh0LXByb3BlcnR5ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1lbmQg bm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rvd24tdHMtLW1h cmt1cCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxhdGV4LWJsb2NrLXZhbGlkLXAgKG5vZGUp CisgICJSZXR1cm4gbm9uLW5pbCBpZiBsYXRleCBibG9jayBOT0RFIGlzIHdpdGhpbiBhIHNpbmds ZSBpbmxpbmUgc2NvcGUuCitUaGUgZ2xvYmFsIGlubGluZSBwYXJzZXIgY2FuIGNyZWF0ZSBmYWxz ZSBgbGF0ZXhfYmxvY2snIG1hdGNoZXMKK3NwYW5uaW5nIGFjcm9zcyBwYXJhZ3JhcGggYm91bmRh cmllcy4gIENoZWNrIHRoYXQgdGhlIG9wZW5pbmcgYW5kCitjbG9zaW5nIGRlbGltaXRlcnMgc2hh cmUgdGhlIHNhbWUgbWFya2Rvd24gYGlubGluZScgYW5jZXN0b3IuIgorICAobGV0ICgobm9kZS1z dGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1lbmQgKDEtICh0 cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkpCisgICAgKHdoZW4tbGV0KiAoKG1kLXN0YXJ0ICh0cmVl c2l0LW5vZGUtYXQgbm9kZS1zdGFydCAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAgIChtZC1l bmQgKHRyZWVzaXQtbm9kZS1hdCBub2RlLWVuZCAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAg IChpbmxpbmUtc3RhcnQgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWQtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFt YmRhIChuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0 LW5vZGUtdHlwZSBuKSAiaW5saW5lIikpKSkKKyAgICAgICAgICAgICAgICAoaW5saW5lLWVuZCAo dHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWQtZW5k CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG4pCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAiaW5saW5lIikp KSkpCisgICAgICAoZXEgKHRyZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtc3RhcnQpCisgICAgICAg ICAgKHRyZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtZW5kKSkpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLS1mb250aWZ5LWxhdGV4LWJsb2NrIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBf KQorICAiRm9udGlmeSBsYXRleCBibG9jayBOT0RFIGFuZCBoaWRlIGl0cyBkZWxpbWl0ZXJzIHdo ZW4gbWFya3VwIGlzIGhpZGRlbi4KK1NraXAgZm9udGlmaWNhdGlvbiBmb3IgZmFsc2UgbWF0Y2hl cyB0aGF0IHNwYW4gYWNyb3NzIHBhcmFncmFwaCBib3VuZGFyaWVzLgorT1ZFUlJJREUsIFNUQVJU LCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92 ZXJyaWRlJy4iCisgICh3aGVuIChtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCBub2Rl KQorICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICAodHJlZXNpdC1ub2Rl LXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICdtYXJrZG93bi10cy1s YXRleCBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1tYXJr dXAKKyAgICAgIChkb3RpbWVzIChpICh0cmVlc2l0LW5vZGUtY2hpbGQtY291bnQgbm9kZSkpCisg ICAgICAgIChsZXQgKChjaGlsZCAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgaSkpKQorICAgICAg ICAgICh3aGVuIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgY2hpbGQpICJsYXRleF9zcGFuX2Rl bGltaXRlciIpCisgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKHRyZWVzaXQtbm9kZS1z dGFydCBjaGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LWVuZCBjaGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdt YXJrZG93bi10cy0tbWFya3VwKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnkt YmFja3NsYXNoLWVzY2FwZSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZv bnRpZnkgYmFja3NsYXNoIGVzY2FwZSBOT0RFLCBoaWRpbmcgdGhlIGJhY2tzbGFzaCB3aGVuIG1h cmt1cCBpcyBoaWRkZW4uCitTa2lwIGhpZGluZyBpbnNpZGUgYGxhdGV4X2Jsb2NrJyB3aGVyZSBi YWNrc2xhc2hlcyBhcmUgTGFUZVggc3ludGF4LgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFy ZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisg IChsZXQgKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChp bi1sYXRleCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlICh0cmVlc2l0LW5vZGUtcGFyZW50IG5v ZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICJsYXRleF9ibG9jayIpKSkKKyAgICAodHJl ZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgbm9kZS1zdGFydCAoMSsgbm9kZS1zdGFy dCkKKyAgICAgJ21hcmtkb3duLXRzLWRlbGltaXRlciBvdmVycmlkZSBzdGFydCBlbmQpCisgICAg KHdoZW4gKGFuZCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCAobm90IGluLWxhdGV4KSkKKyAgICAg IChwdXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0ICgxKyBub2RlLXN0YXJ0KQorICAgICAgICAg ICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkpCisKKyhk ZWZ2YXIgc2dtbC1jaGFyLW5hbWVzKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVudGl0eS1nZXQg Im9yZy9vcmctZW50aXRpZXMuZWwiKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWRlY29kZS1lbnRp dHkgKHRleHQpCisgICJEZWNvZGUgSFRNTCBlbnRpdHkgVEVYVCAoZS5nLiwgXCImYW1wO1wiKSB0 byBpdHMgY2hhcmFjdGVyIHN0cmluZy4KK1JldHVybiB0aGUgZGVjb2RlZCBzdHJpbmcsIG9yIG5p bCBpZiB0aGUgZW50aXR5IGlzIHVua25vd24uIgorICAoY29uZAorICAgOzsgTnVtZXJpYyBoZXgg JiN4MUY0QTk7CisgICAoKHN0cmluZy1tYXRjaCAiXFxgJiN4XFwoW1s6eGRpZ2l0Ol1dK1xcKTtc XCciIHRleHQpCisgICAgKGNoYXItdG8tc3RyaW5nIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1z dHJpbmcgMSB0ZXh0KSAxNikpKQorICAgOzsgTnVtZXJpYyBkZWNpbWFsICYjMTIzOworICAgKChz dHJpbmctbWF0Y2ggIlxcYCYjXFwoW1s6ZGlnaXQ6XV0rXFwpO1xcJyIgdGV4dCkKKyAgICAoY2hh ci10by1zdHJpbmcgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAxIHRleHQpKSkpCisg ICA7OyBOYW1lZCAmYW1wOyAmY29weTsgdmlhIG9yZy1lbnRpdGllcywgZmFsbCBiYWNrIHRvIHNn bWwtY2hhci1uYW1lcworICAgKChzdHJpbmctbWF0Y2ggIlxcYCZcXChbWzphbG51bTpdXStcXCk7 XFwnIiB0ZXh0KQorICAgIChsZXQgKChuYW1lIChtYXRjaC1zdHJpbmcgMSB0ZXh0KSkpCisgICAg ICAocmVxdWlyZSAnb3JnLWVudGl0aWVzKQorICAgICAgKGlmLWxldCogKChlbnRyeSAob3JnLWVu dGl0eS1nZXQgbmFtZSkpCisgICAgICAgICAgICAgICAgKHV0ZjggKG50aCA2IGVudHJ5KSkpCisg ICAgICAgICAgdXRmOAorICAgICAgICAocmVxdWlyZSAnc2dtbC1tb2RlKQorICAgICAgICAod2hl bi1sZXQqICgoY29kZSAoc2VxLXBvc2l0aW9uIHNnbWwtY2hhci1uYW1lcyBuYW1lICMnZXF1YWwp KSkKKyAgICAgICAgICAoY2hhci10by1zdHJpbmcgY29kZSkpKSkpKSkKKworKGRlZnVuIG1hcmtk b3duLXRzLS1mb250aWZ5LWVudGl0eSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykK KyAgIkZvbnRpZnkgZW50aXR5IE5PREUgYW5kIHNob3cgaXRzIGRlY29kZWQgdmFsdWUgd2hlbiBt YXJrdXAgaXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhy b3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQgKChub2Rl LXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChub2RlLWVuZCAodHJl ZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgKGZhY2UgKGlmIChlcXVhbCAodHJlZXNpdC1u b2RlLXR5cGUgbm9kZSkgImVudGl0eV9yZWZlcmVuY2UiKQorICAgICAgICAgICAgICAgICAgJ21h cmtkb3duLXRzLWVudGl0eS1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMt bnVtZXJpYy1jaGFyYWN0ZXItcmVmZXJlbmNlKSkpCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRo LW92ZXJyaWRlIG5vZGUtc3RhcnQgbm9kZS1lbmQgZmFjZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKGlmIG1hcmtkb3duLXRzLWhp ZGUtbWFya3VwCisgICAgICAgICh3aGVuLWxldCogKChkZWNvZGVkIChtYXJrZG93bi10cy0tZGVj b2RlLWVudGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10 ZXh0IG5vZGUgdCkpKQorICAgICAgICAgICAgICAgICAgICAoKGNoYXItZGlzcGxheWFibGUtcCAo YXJlZiBkZWNvZGVkIDApKSkpCisgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3Rh cnQgbm9kZS1lbmQgJ2Rpc3BsYXkgZGVjb2RlZCkpCisgICAgICAocmVtb3ZlLXRleHQtcHJvcGVy dGllcyBub2RlLXN0YXJ0IG5vZGUtZW5kICcoZGlzcGxheSBuaWwpKSkpKQorCisoZGVmdW4gbWFy a2Rvd24tdHMtLXJlc29sdmUtZGlzcGxheS12YWx1ZSAodmFsKQorICAiUmVzb2x2ZSBWQUwsIGEg Y29ucyAoUFJFRkVSUkVEIC4gRkFMTEJBQ0spLCB0byBhIGRpc3BsYXlhYmxlIHZhbHVlLgorUmV0 dXJuIFBSRUZFUlJFRCBpZiBpdHMgZmlyc3QgY2hhcmFjdGVyIHBhc3NlcyBgY2hhci1kaXNwbGF5 YWJsZS1wJywKK290aGVyd2lzZSByZXR1cm4gRkFMTEJBQ0suICBSZXR1cm4gbmlsIGlmIFZBTCBp cyBuaWwuIgorICAod2hlbiB2YWwKKyAgICAobGV0KiAoKHByZWZlcnJlZCAoY2FyIHZhbCkpCisg ICAgICAgICAgIChjaCAoaWYgKGNoYXJhY3RlcnAgcHJlZmVycmVkKSBwcmVmZXJyZWQgKGFyZWYg cHJlZmVycmVkIDApKSkpCisgICAgICAoaWYgKGNoYXItZGlzcGxheWFibGUtcCBjaCkgKGNhciB2 YWwpIChjZHIgdmFsKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94 IChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSB0YXNrIGxpc3Qg Y2hlY2tib3ggTk9ERSwgc2hvdyBhIFVuaWNvZGUgc3ltYm9sIHdoZW4gbWFya3VwIGlzIGhpZGRl bi4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVl c2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVz aXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVu ZCBub2RlKSkKKyAgICAgICAgIChjaGVja2VkIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9k ZSkgInRhc2tfbGlzdF9tYXJrZXJfY2hlY2tlZCIpKQorICAgICAgICAgKGZhY2UgKGlmIGNoZWNr ZWQgJ21hcmtkb3duLXRzLXRhc2stY2hlY2tlZAorICAgICAgICAgICAgICAgICAnbWFya2Rvd24t dHMtdGFzay11bmNoZWNrZWQpKQorICAgICAgICAgKHZhbHVlIChpZiBjaGVja2VkCisgICAgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3gKKyAgICAgICAgICAgICAg ICAgIG1hcmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveCkpCisgICAgICAgICAocmVwbGFjZW1l bnQKKyAgICAgICAgICAoY29uZCAoKGVxIHZhbHVlICdpY29uKQorICAgICAgICAgICAgICAgICAo aWNvbi1zdHJpbmcgKGlmIGNoZWNrZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnbWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveC1pY29uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2tib3gtaWNvbikpKQorICAg ICAgICAgICAgICAgICh0IChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVlIHZhbHVl KSkpKQorICAgICAgICAgOzsgSWYgYGljb24tc3RyaW5nJyByZXR1cm5lZCBhbiBpbWFnZSwgaXRz IGBkaXNwbGF5JyBwcm9wZXJ0eQorICAgICAgICAgOzsgb24gY2hhciAwIGhvbGRzIHRoZSBhY3R1 YWwgaW1hZ2Ugc3BlYzsgbmVzdGVkIGBkaXNwbGF5JworICAgICAgICAgOzsgcHJvcHMgYXJlIG5v dCBob25vcmVkIHdoZW4gYSBzdHJpbmcgaXMgdGhlIHZhbHVlIG9mIGEKKyAgICAgICAgIDs7IGBk aXNwbGF5JyB0ZXh0LXByb3BlcnR5LCBzbyBhcHBseSB0aGUgc3BlYyBkaXJlY3RseS4KKyAgICAg ICAgIChkaXNwbGF5LXNwZWMKKyAgICAgICAgICAob3IgKGFuZCAoZXEgdmFsdWUgJ2ljb24pIHJl cGxhY2VtZW50CisgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5IDAgJ2Rpc3Bs YXkgcmVwbGFjZW1lbnQpKQorICAgICAgICAgICAgICByZXBsYWNlbWVudCkpKQorICAgICh0cmVl c2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZSBub2RlLXN0YXJ0IG5vZGUtZW5kIGZhY2UKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChp ZiAoYW5kIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwIHJlcGxhY2VtZW50CisgICAgICAgICAgICAg KG9yIChlcSB2YWx1ZSAnaWNvbikKKyAgICAgICAgICAgICAgICAgKGNoYXItZGlzcGxheWFibGUt cCAoYXJlZiByZXBsYWNlbWVudCAwKSkpKQorICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgbm9k ZS1zdGFydCBub2RlLWVuZCAnZGlzcGxheSBkaXNwbGF5LXNwZWMpCisgICAgICAocmVtb3ZlLXRl eHQtcHJvcGVydGllcyBub2RlLXN0YXJ0IG5vZGUtZW5kICcoZGlzcGxheSBuaWwpKSkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktaGFyZC1saW5lLWJyZWFrIChub2RlIG92ZXJyaWRl IHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBoYXJkIGxpbmUgYnJlYWsgTk9ERTsgc2hv dyBhIFVuaWNvZGUgc3ltYm9sIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK0EgYmFja3NsYXNoIGJy ZWFrIGdldHMgYG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gnIChvciBpdHMK K2AtaGlkZGVuJyB2YXJpYW50IHdoZW4gbWFya3VwIGlzIGhpZGRlbik7IGEgdHJhaWxpbmctc3Bh Y2VzIGJyZWFrIGdldHMKK2BtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UnIChvciBg LWhpZGRlbicpLiAgV2hlbiBoaWRkZW4sIGEKK2JhY2tzbGFzaCBicmVhayBpcyByZXBsYWNlZCBi eSBhIHNpbmdsZSBgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrJworZ2x5cGg7IGEgdHJhaWxp bmctc3BhY2VzIGJyZWFrIHJlcGxhY2VzIGVhY2ggc3BhY2Ugd2l0aCB0aGUgZ2x5cGgsIHNvIHRo ZSBydW4KK29mIHBpbGNyb3dzIGZpbGxzIHRoZSBsaW5lIHVwIHRvIHRoZSBuZXdsaW5lLgorT1ZF UlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9u dGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2Rl LXN0YXJ0IG5vZGUpKQorICAgICAgICAgKG5vZGUtZW5kICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9k ZSkpCisgICAgICAgICAodGV4dCAgICAgICAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSB0KSkKKyAg ICAgICAgIChiYWNrc2xhc2ggIChhbmQgKD4gKGxlbmd0aCB0ZXh0KSAwKSAoZXEgKGFyZWYgdGV4 dCAwKSA/XFwpKSkKKyAgICAgICAgIDs7IERldGVybWluZSB0aGUgYWN0dWFsIHJhbmdlIHRvIGZv bnRpZnkgYW5kIHJlcGxhY2UuICBUaGUKKyAgICAgICAgIDs7IGhhcmRfbGluZV9icmVhayBub2Rl IG1heSBub3QgY292ZXIgdGhlIGZ1bGwgcnVuIG9mIHRyYWlsaW5nCisgICAgICAgICA7OyBzcGFj ZXMsIHNvIHdhbGsgYmFjayBmcm9tIGVuZC1vZi1saW5lIG91cnNlbHZlcyBmb3IgdGhlCisgICAg ICAgICA7OyBzcGFjZXMgdmFyaWFudC4KKyAgICAgICAgIChyZWdpb24gICAgIChpZiBiYWNrc2xh c2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyBub2RlLXN0YXJ0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIChhbmQgKD4gbm9kZS1lbmQgbm9kZS1zdGFydCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGNoYXItYmVmb3JlIG5v ZGUtZW5kKSA/XG4pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS0gbm9k ZS1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLWVuZCkpCisgICAg ICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAg ICAgIChnb3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0 ICgoZW9sIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNvbnMgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChnb3RvLWNoYXIgZW9sKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tp cC1jaGFycy1iYWNrd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAi IChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlb2wpKSkp KQorICAgICAgICAgKHJlZ2lvbi1zdGFydCAoY2FyIHJlZ2lvbikpCisgICAgICAgICAocmVnaW9u LWVuZCAgIChjZHIgcmVnaW9uKSkKKyAgICAgICAgIChmYWNlICAgICAgIChjb25kCisgICAgICAg ICAgICAgICAgICAgICAgKChhbmQgYmFja3NsYXNoIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwKQor ICAgICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tz bGFzaC1oaWRkZW4pCisgICAgICAgICAgICAgICAgICAgICAgKGJhY2tzbGFzaCAnbWFya2Rvd24t dHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAobWFy a2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRz LWhhcmQtbGluZS1icmVhay1zcGFjZS1oaWRkZW4pCisgICAgICAgICAgICAgICAgICAgICAgKHQg J21hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZSkpKSkKKyAgICAodHJlZXNpdC1mb250 aWZ5LXdpdGgtb3ZlcnJpZGUgcmVnaW9uLXN0YXJ0IHJlZ2lvbi1lbmQgZmFjZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgOzsgQWx3 YXlzIHN0YXJ0IGJ5IGNsZWFyaW5nIGFueSBzdGFsZSBgZGlzcGxheScgcHJvcGVydHkuICBXZSBu ZXZlcgorICAgIDs7IHNwYW4gdGhlIHRyYWlsaW5nIG5ld2xpbmUgd2l0aCBgZGlzcGxheScgKGl0 IGNvbmZ1c2VzCisgICAgOzsgcmVkaXNwbGF5J3MgY3Vyc29yIHBsYWNlbWVudCksIGFuZCB3ZSBv bmx5IHBhaW50IGEgc2luZ2xlCisgICAgOzsgY29tYmluZWQgc3RyaW5nIG9udG8gdGhlIGZpcnN0 IGNoYXJhY3RlciBvZiB0aGUgcnVuLCBsZWF2aW5nCisgICAgOzsgdGhlIHJlc3Qgb2YgdGhlIG1h cmt1cCBhbG9uZS4KKyAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyByZWdpb24tc3RhcnQgcmVn aW9uLWVuZCAnKGRpc3BsYXkgbmlsKSkKKyAgICAod2hlbiBtYXJrZG93bi10cy1oaWRlLW1hcmt1 cAorICAgICAgKGxldCogKChzcGVjIChpZiBiYWNrc2xhc2gKKyAgICAgICAgICAgICAgICAgICAg ICAgKG1hcmtkb3duLXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUKKyAgICAgICAgICAgICAgICAg ICAgICAgIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpCisgICAgICAgICAg ICAgICAgICAgICBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UpKQorICAgICAgICAg ICAgIChzdHIgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAoKG51bGwgc3BlYykgbmlsKQorICAg ICAgICAgICAgICAgICAgICgoY2hhcmFjdGVycCBzcGVjKSAoY2hhci10by1zdHJpbmcgc3BlYykp CisgICAgICAgICAgICAgICAgICAgKChzdHJpbmdwIHNwZWMpIHNwZWMpCisgICAgICAgICAgICAg ICAgICAgKChmdW5jdGlvbnAgc3BlYykKKyAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc3Bl YyAoLSByZWdpb24tZW5kIHJlZ2lvbi1zdGFydCkpKSkpKQorICAgICAgICAod2hlbiAoYW5kIChz dHJpbmdwIHN0cikKKyAgICAgICAgICAgICAgICAgICAoPiAobGVuZ3RoIHN0cikgMCkKKyAgICAg ICAgICAgICAgICAgICAoY2hhci1kaXNwbGF5YWJsZS1wIChhcmVmIHN0ciAwKSkpCisgICAgICAg ICAgKHB1dC10ZXh0LXByb3BlcnR5IHJlZ2lvbi1zdGFydCAoMSsgcmVnaW9uLXN0YXJ0KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSBzdHIpCisgICAgICAgICAgOzsgRm9y IHRoZSB0cmFpbGluZy1zcGFjZXMgdmFyaWFudCwgaGlkZSB0aGUgcmVtYWluaW5nCisgICAgICAg ICAgOzsgc3BhY2VzIGluIHRoZSBydW4gc28gdGhlIGxpbmUgZG9lc24ndCBlbmQgd2l0aCBsZWZ0 b3ZlcgorICAgICAgICAgIDs7IHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIHN1YnN0aXR1dGVkIGdseXBo LiAgRWFjaCBwb3NpdGlvbgorICAgICAgICAgIDs7IGdldHMgaXRzIG93biBlbXB0eS1zdHJpbmcg YGRpc3BsYXknIHNvIGN1cnNvciBwbGFjZW1lbnQKKyAgICAgICAgICA7OyBzdGF5cyB1bmFtYmln dW91cy4KKyAgICAgICAgICAodW5sZXNzIGJhY2tzbGFzaAorICAgICAgICAgICAgKGxldCAoKGkg KDErIHJlZ2lvbi1zdGFydCkpKQorICAgICAgICAgICAgICAod2hpbGUgKDwgaSByZWdpb24tZW5k KQorICAgICAgICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBpICgxKyBpKSAnZGlzcGxheSAi IikKKyAgICAgICAgICAgICAgICAoc2V0cSBpICgxKyBpKSkpKSkpKSkpKQorCisoZGVmdW4gbWFy a2Rvd24tdHMtLWZvbnRpZnktdGhlbWF0aWMtYnJlYWsgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5k ICZyZXN0IF8pCisgICJGb250aWZ5IHRoZW1hdGljIGJyZWFrIE5PREUgYW5kIHNob3cgYSBsaW5l IHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFz c2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0 ICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1l bmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpKQorICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1v dmVycmlkZSBub2RlLXN0YXJ0IG5vZGUtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdtYXJrZG93bi10cy10aGVtYXRpYy1icmVhaworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKGxldCAoKGNoYXIgKG1hcmtk b3duLXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUKKyAgICAgICAgICAgICAgICAgbWFya2Rvd24t dHMtdGhlbWF0aWMtYnJlYWstY2hhcmFjdGVyKSkpCisgICAgICAoaWYgKGFuZCBtYXJrZG93bi10 cy1oaWRlLW1hcmt1cCBjaGFyIChjaGFyLWRpc3BsYXlhYmxlLXAgY2hhcikpCisgICAgICAgICAg KGxldCogKChjb2wgKHNhdmUtZXhjdXJzaW9uIChnb3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCisgICAg ICAgICAgICAgICAgIDs7IFNwYW4gaWYgdGhlIGZhY2UgaGFzIG5vbi1uaWwgOmV4dGVuZC4KKyAg ICAgICAgICAgICAgICAgKHNwYW4tbGVuZ3RoIChpZiAoZmFjZS1hdHRyaWJ1dGUgJ21hcmtkb3du LXRzLXRoZW1hdGljLWJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpleHRlbmQgbmlsICdkZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgtICh3aW5kb3ctYm9keS13aWR0aCkgY29sKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAxMikpKQorICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5v ZGUtc3RhcnQgbm9kZS1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzcGxh eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1ha2Utc3RyaW5nIHNwYW4tbGVuZ3RoIGNoYXIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIpKSkKKyAgICAgICAgKHJlbW92ZS10ZXh0LXBy b3BlcnRpZXMgbm9kZS1zdGFydCBub2RlLWVuZCAnKGRpc3BsYXkgbmlsKSkpKSkpCisKKyhkZWZ1 biBtYXJrZG93bi10cy0tZm9udGlmeS1jb2RlLWJsb2NrIChub2RlIF9vdmVycmlkZSBfc3RhcnQg X2VuZCAmcmVzdCBfKQorICAiRm9udGlmeSBjb2RlIGJsb2NrIGNvbnRlbnQgTk9ERSB3aXRoIGEg YmFja2dyb3VuZCBvdmVybGF5LgorVXNlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1hcmt1cC1o aWRkZW4nIHdoZW4gbWFya3VwIGlzIGhpZGRlbiwKK2BtYXJrZG93bi10cy1jb2RlLWJsb2NrJyBv dGhlcndpc2UuICBVc2UgYW4gb3ZlcmxheSBzbyB0aGUKK2JhY2tncm91bmQgbGF5ZXJzIGl0c2Vs ZiBiZWhpbmQgbGFuZ3VhZ2Utc3BlY2lmaWMgZm9udGlmaWNhdGlvbi4KK1RoZSBvdmVybGF5IGFs c28gc3RvcmVzIHRoZSBjb2RlIGJsb2NrIGxhbmd1YWdlIGFuZCBtb2RlIGFzCitwcm9wZXJ0aWVz IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlJyBhbmQKK2BtYXJrZG93bi10cy1jb2Rl LWJsb2NrLW1vZGUnLCBhY2Nlc3NpYmxlIHZpYQorYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbGFu Z3VhZ2UtYXQnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0IChzYXZlLWV4Y3Vyc2lvbgorICAgICAg ICAgICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisg ICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKQorICAgICAg ICAgKG5vZGUtZW5kIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgKGdvdG8t Y2hhciAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgIChza2lw LWNoYXJzLWJhY2t3YXJkICIgXHQiKQorICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCisg ICAgICAgICAoZmFjZSAoaWYgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgICAgICAgICAg ICAgICAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1tYXJrdXAtaGlkZGVuCisgICAgICAgICAgICAg ICAgICdtYXJrZG93bi10cy1jb2RlLWJsb2NrKSkKKyAgICAgICAgIChsYW5nIChtYXJrZG93bi10 cy0tbGFuZ3VhZ2UtYXQtbm9kZSBub2RlKSkKKyAgICAgICAgIChtb2RlICh3aGVuIGxhbmcKKyAg ICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgbGFu ZykpKQorICAgICAgICAgKGV4aXN0aW5nIChzZXEtZmluZCAobGFtYmRhIChvdikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheS1nZXQgb3YgJ21hcmtkb3duLXRzLWNvZGUt YmxvY2spKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheXMtYXQgbm9kZS1z dGFydCkpKSkKKyAgICAoaWYgZXhpc3RpbmcKKyAgICAgICAgKHByb2duCisgICAgICAgICAgKG1v dmUtb3ZlcmxheSBleGlzdGluZyBub2RlLXN0YXJ0IG5vZGUtZW5kKQorICAgICAgICAgIChvdmVy bGF5LXB1dCBleGlzdGluZyAnZmFjZSBmYWNlKQorICAgICAgICAgIChvdmVybGF5LXB1dCBleGlz dGluZyAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSBsYW5nKQorICAgICAgICAgIChv dmVybGF5LXB1dCBleGlzdGluZyAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlIG1vZGUpKQor ICAgICAgKGxldCAoKG92IChtYWtlLW92ZXJsYXkgbm9kZS1zdGFydCBub2RlLWVuZCBuaWwgdCBu aWwpKSkKKyAgICAgICAgOzsgTWFya2VycyBuZWVkIHRvIGJlIHNldCBvbmx5IG9uY2UuCisgICAg ICAgIChvdmVybGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1iZWctbWFya2VyIChzZXQtbWFy a2VyIChtYWtlLW1hcmtlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS1zdGFydCkpCisgICAgICAgIChvdmVybGF5 LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1lbmQtbWFya2VyIChzZXQtbWFya2VyIChtYWtlLW1h cmtlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbm9kZS1lbmQpKQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtk b3duLXRzLWNvZGUtYmxvY2sgdCkKKyAgICAgICAgKG92ZXJsYXktcHV0IG92ICdmYWNlIGZhY2Up CisgICAgICAgIChvdmVybGF5LXB1dCBvdiAncHJpb3JpdHkgJyhuaWwgLiAxMCkpCisgICAgICAg IChvdmVybGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSBsYW5nKQor ICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZSBtb2Rl KQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ2V2YXBvcmF0ZSB0KSkpKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLWF0LWNvZGUtYmxvY2stcCAoJm9wdGlvbmFsIHBvcykKKyAgIlJldHVybiBub24g bmlsIGlmIHBvaW50IGlzIGluIGEgY29kZSBibG9jay4KK0lmIFBPUyBpcyBuaWwsIHVzZSBwb2lu dC4iCisgIChnZXQtY2hhci1wcm9wZXJ0eSAob3IgcG9zIChwb2ludCkpICdtYXJrZG93bi10cy1j b2RlLWJsb2NrKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2UtYXQg KCZvcHRpb25hbCBwb3MpCisgICJSZXR1cm4gdGhlIGxhbmd1YWdlIHN5bWJvbCBvZiB0aGUgY29k ZSBibG9jayBhdCBQT1MuCitJZiBQT1MgaXMgbmlsLCB1c2UgcG9pbnQuICBSZXR1cm5zIG5pbCBp ZiBQT1MgaXMgbm90IGluc2lkZSBhIGZlbmNlZAorY29kZSBibG9jay4gIFRoaXMgd29ya3MgcmVn YXJkbGVzcyBvZiB3aGV0aGVyIGEgZ3Vlc3QgdHJlZS1zaXR0ZXIgcGFyc2VyCitpcyBhY3RpdmUs IHNpbmNlIHRoZSBsYW5ndWFnZSBpcyBzdG9yZWQgb24gdGhlIGNvZGUgYmxvY2sgb3ZlcmxheSBi eSB0aGUKK2hvc3QgcGFyc2VyJ3MgZm9udGlmaWNhdGlvbi4iCisgIChnZXQtY2hhci1wcm9wZXJ0 eSAob3IgcG9zIChwb2ludCkpICdtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1hdCAoJm9wdGlvbmFsIHBvcykKKyAg IlJldHVybiB0aGUgbWFqb3IgbW9kZSBmb3IgdGhlIGNvZGUgYmxvY2sgYXQgUE9TLgorSWYgUE9T IGlzIG5pbCwgdXNlIHBvaW50LiAgUmV0dXJucyBuaWwgaWYgUE9TIGlzIG5vdCBpbnNpZGUgYSBm ZW5jZWQKK2NvZGUgYmxvY2sgb3IgaWYgdGhlIGxhbmd1YWdlIGhhcyBubyByZWNvZ25pemVkIG1v ZGUuIgorICAod2hlbiAobWFya2Rvd24tdHMtYXQtY29kZS1ibG9jay1wIHBvcykKKyAgICAob3Ig KGdldC1jaGFyLXByb3BlcnR5IChvciBwb3MgKHBvaW50KSkgJ21hcmtkb3duLXRzLWNvZGUtYmxv Y2stbW9kZSkKKyAgICAgICAgbWFya2Rvd24tdHMtZGVmYXVsdC1jb2RlLWJsb2NrLW1vZGUpKSkK KworKGRlZnVuIG1hcmtkb3duLXRzLS1ob3N0LXJhbmdlcy1ub3RpZmllciAocmFuZ2VzIF9wYXJz ZXIpCisgICJQcnVuZSBzdGFsZSBjb2RlIGJsb2NrIG92ZXJsYXlzIGFmdGVyIHRoZSBob3N0IHBh cnNlciByZXBhcnNlcy4KK1JBTkdFUyBpcyBhIGxpc3Qgb2YgKFNUQVJUIC4gRU5EKSBjb25zIGNl bGxzIG1hcmtpbmcgcmVnaW9ucyB3aGVyZQordGhlIG1hcmtkb3duIHBhcnNlIHRyZWUgY2hhbmdl ZC4gIEZvciBlYWNoIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrJworb3ZlcmxheSBpbnRlcnNlY3Rp bmcgYSBjaGFuZ2VkIHJhbmdlLCB2ZXJpZnkgdGhhdCBhIGNvbnRhaW5pbmcKK2BmZW5jZWRfY29k ZV9ibG9jaycgbm9kZSBzdGlsbCBleGlzdHMgaW4gdGhlIGhvc3QgdHJlZS4gIElmIG5vdCwKK3Ro ZSBmZW5jZXMgd2VyZSBkZWxldGVkLCBzbyBkZWxldGUgdGhlIG92ZXJsYXkgdG8gYXZvaWQgcnVu bmluZworY29tbWFuZHMgaW4gYSBzdGFsZSBibG9jayBjb250ZXh0LiIKKyAgKGRvbGlzdCAocmFu Z2UgcmFuZ2VzKQorICAgIChsZXQgKChiZWcgKGNhciByYW5nZSkpCisgICAgICAgICAgKGVuZCAo Y2RyIHJhbmdlKSkpCisgICAgICAoZG9saXN0IChvdiAob3ZlcmxheXMtaW4gYmVnIGVuZCkpCisg ICAgICAgICh3aGVuIChvdmVybGF5LWdldCBvdiAnbWFya2Rvd24tdHMtY29kZS1ibG9jaykKKyAg ICAgICAgICAobGV0KiAoKG92LXN0YXJ0IChvdmVybGF5LXN0YXJ0IG92KSkKKyAgICAgICAgICAg ICAgICAgKG5vZGUgKGFuZCBvdi1zdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0 cmVlc2l0LW5vZGUtYXQgb3Ytc3RhcnQgJ21hcmtkb3duKSkpKQorICAgICAgICAgICAgKHVubGVz cyAoYW5kIG5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1wYXJlbnQtdW50 aWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSAiXFxgZmVuY2VkX2NvZGVfYmxvY2tc XCciIHQpKQorICAgICAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgb3YpKSkpKSkpKQorCis7Ozsg SW1hZ2UgaGFuZGxpbmc6CisKKyhkZWZ1biBtYXJrZG93bi10cy0taW1hZ2UtYWxvbmUtb24tbGlu ZS1wIChub2RlKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgaW1hZ2UgTk9ERSBpcyB0aGUgb25seSBj b250ZW50IG9uIGl0cyBsaW5lLgorV2hpdGVzcGFjZSwgYmxvY2sgcXVvdGUgbWFya2VycyAoYD4n KSwgYW5kIGxpc3QgbWFya2VycworXChgLScsIGAqJywgYCsnLCBgMS4nKSBiZWZvcmUgdGhlIGlt YWdlIGFyZSBpZ25vcmVkLiIKKyAgKGxldCAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFy dCBub2RlKSkKKyAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAg ICAoc2F2ZS1leGN1cnNpb24KKyAgICAgIChnb3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgIChs ZXQgKChib2wgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkKKyAgICAgICAgICAgIChlb2wgKGxp bmUtZW5kLXBvc2l0aW9uKSkpCisgICAgICAgIDs7IEJlZm9yZSB0aGUgaW1hZ2U6IG9ubHkgYmxv Y2sgcXVvdGUgbWFya2Vycywgd2hpdGVzcGFjZSwKKyAgICAgICAgOzsgYW5kIGFuIG9wdGlvbmFs IGxpc3QgbWFya2VyIGFyZSBhbGxvd2VkLgorICAgICAgICAoYW5kIChzdHJpbmctbWF0Y2gtcAor ICAgICAgICAgICAgICAocnggYm9zCisgICAgICAgICAgICAgICAgICAoemVyby1vci1tb3JlIChh bnkgIj4gXHQiKSkKKyAgICAgICAgICAgICAgICAgIChvcHRpb25hbCAob3IgKHNlcSAoYW55ICIt KisiKSAiICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEgKG9uZS1vci1t b3JlIGRpZ2l0KSAoYW55ICIuKSIgKSAiICIpKSkKKyAgICAgICAgICAgICAgICAgIGVvcykKKyAg ICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBib2wgbm9kZS1zdGFy dCkpCisgICAgICAgICAgICAgOzsgQWZ0ZXIgdGhlIGltYWdlOiBvbmx5IHRyYWlsaW5nIHdoaXRl c3BhY2UgYWxsb3dlZC4KKyAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoLXAKKyAgICAgICAgICAg ICAgKHJ4IGJvcyAoemVyby1vci1tb3JlIChhbnkgIiBcdCIpKSBlb3MpCisgICAgICAgICAgICAg IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgbm9kZS1lbmQgZW9sKSkpKSkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktaW1hZ2UgKG5vZGUgX292ZXJyaWRlIF9zdGFydCBf ZW5kICZyZXN0IF8pCisgICJTaG93IGFuIGlubGluZSBpbWFnZSBhdCBOT0RFLgorV2hlbiBgbWFy a2Rvd24tdHMtaW5saW5lLWltYWdlcycgaXMgbm9uLW5pbCwgZGlzcGxheSB0aGUgaW1hZ2UuCitJ ZiB0aGUgaW1hZ2UgbGluayBpcyB0aGUgb25seSBjb250ZW50IG9uIGl0cyBsaW5lLCBkaXNwbGF5 IHRoZQoraW1hZ2UgYmVsb3cgdGhlIGxpbmsuICBJZiB0aGUgaW1hZ2UgaXMgaW5saW5lIHdpdGhp biBhIHBhcmFncmFwaCwKK2Rpc3BsYXkgaXQgcmlnaHQgYWZ0ZXIgdGhlIGxpbmsgdGV4dC4KK1Jl bW90ZSBpbWFnZXMgYXJlIGNvbnRyb2xsZWQgYnkKK2BtYXJrZG93bi10cy1kaXNwbGF5LXJlbW90 ZS1pbmxpbmUtaW1hZ2VzJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0 YXJ0IG5vZGUpKQorICAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQor ICAgICAgICAgKGVvbCAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciBub2RlLWVuZCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICAg KHNlYXJjaC1lbmQgKG1pbiAoMSsgZW9sKSAocG9pbnQtbWF4KSkpKQorICAgIDs7IEFsd2F5cyBj bGVhciBzdGFsZSBvdmVybGF5cyBmb3IgdGhpcyBub2RlJ3MgcmFuZ2UuCisgICAgKGRvbGlzdCAo b3YgKG92ZXJsYXlzLWluIG5vZGUtc3RhcnQgc2VhcmNoLWVuZCkpCisgICAgICAod2hlbiAoYW5k IChvdmVybGF5LWdldCBvdiAnbWFya2Rvd24tdHMtaW1hZ2UpCisgICAgICAgICAgICAgICAgICg+ PSAob3ZlcmxheS1zdGFydCBvdikgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgKDw9IChv dmVybGF5LWVuZCBvdikgc2VhcmNoLWVuZCkpCisgICAgICAgIChkZWxldGUtb3ZlcmxheSBvdikp KQorICAgICh3aGVuIChhbmQgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcworICAgICAgICAgICAg ICAgOzsgRG9uJ3QgY3JlYXRlIGltYWdlIG92ZXJsYXlzIGZvciBub2RlcyBpbnNpZGUKKyAgICAg ICAgICAgICAgIDs7IGZvbGRlZCAob3V0bGluZS1pbnZpc2libGUpIGhlYWRpbmdzLCBzaW5jZSB0 aGUKKyAgICAgICAgICAgICAgIDs7IGltYWdlcyB3b3VsZG4ndCBiZSB2aXNpYmxlIGFuZCBjb3Vs ZCBpbnRlcmZlcmUKKyAgICAgICAgICAgICAgIDs7IHdpdGggdGhlIGZvbGRlZCBkaXNwbGF5Lgor ICAgICAgICAgICAgICAgKG5vdCAobWFya2Rvd24tdHMtLW91dGxpbmUtaW52aXNpYmxlLXAgbm9k ZS1zdGFydCkpKQorICAgICAgKGxldCogKChkZXN0ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIG5v ZGUgIlxcYGxpbmtfZGVzdGluYXRpb25cXCciKSkKKyAgICAgICAgICAgICAodXJsIChhbmQgZGVz dCAodHJlZXNpdC1ub2RlLXRleHQgZGVzdCB0KSkpCisgICAgICAgICAgICAgKHJlbW90ZXAgKGFu ZCB1cmwgKHN0cmluZy1tYXRjaC1wICJcXGBodHRwcz86Ly8iIHVybCkpKQorICAgICAgICAgICAg IChkaXNwbGF5YWJsZQorICAgICAgICAgICAgICAod2hlbiB1cmwKKyAgICAgICAgICAgICAgICAo aWYgcmVtb3RlcAorICAgICAgICAgICAgICAgICAgICAod2hlbiAoZXEgbWFya2Rvd24tdHMtZGlz cGxheS1yZW1vdGUtaW5saW5lLWltYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2Rvd25sb2FkKQorICAgICAgICAgICAgICAgICAgICAgIChpZ25vcmUtZXJyb3JzCisgICAgICAg ICAgICAgICAgICAgICAgICAocmVxdWlyZSAndXJsLWhhbmRsZXJzKQorICAgICAgICAgICAgICAg ICAgICAgICAgKHdpdGgtd29yay1idWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNl dC1idWZmZXItbXVsdGlieXRlIG5pbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHVybC1p bnNlcnQtZmlsZS1jb250ZW50cyB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZm ZXItc3RyaW5nKSkpKQorICAgICAgICAgICAgICAgICAgKGxldCAoKGZpbGUgKGV4cGFuZC1maWxl LW5hbWUgdXJsKSkpCisgICAgICAgICAgICAgICAgICAgIChhbmQgKG5vdCAoZmlsZS1yZW1vdGUt cCBmaWxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1leGlzdHMtcCBmaWxlKQor ICAgICAgICAgICAgICAgICAgICAgICAgIChpbWFnZS1zdXBwb3J0ZWQtZmlsZS1wIGZpbGUpCisg ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSkpKSkpCisgICAgICAgICAgICAgKG1heC13IChh bmQgZGlzcGxheWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGVxIG1hcmtkb3du LXRzLWltYWdlLW1heC13aWR0aCAnd2luZG93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAod2luZG93LWJvZHktd2lkdGggbmlsIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBt YXJrZG93bi10cy1pbWFnZS1tYXgtd2lkdGgpKSkKKyAgICAgICAgICAgICAoaW1nIChhbmQgbWF4 LXcKKyAgICAgICAgICAgICAgICAgICAgICAgKGNyZWF0ZS1pbWFnZSBkaXNwbGF5YWJsZSBuaWwg cmVtb3RlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXgtd2lkdGgg bWF4LXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2NhbGUgMSkpKSkK KyAgICAgICAgKHdoZW4gaW1nCisgICAgICAgICAgKGxldCogKChhbG9uZSAobWFya2Rvd24tdHMt LWltYWdlLWFsb25lLW9uLWxpbmUtcCBub2RlKSkKKyAgICAgICAgICAgICAgICAgKHN0ciAoaWYg YWxvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiXG4iIChwcm9wZXJ0aXpl ICIgIiAnZGlzcGxheSBpbWcpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUg IiAiICdkaXNwbGF5IGltZykpKQorICAgICAgICAgICAgICAgICAob3YgKG1ha2Utb3ZlcmxheSAo MS0gbm9kZS1lbmQpIG5vZGUtZW5kIG5pbCB0IG5pbCkpKQorICAgICAgICAgICAgKG92ZXJsYXkt cHV0IG92ICdtYXJrZG93bi10cy1pbWFnZSB0KQorICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92 ICdhZnRlci1zdHJpbmcgc3RyKQorICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdldmFwb3Jh dGUgdCkpKSkpKSkKKworOzs7IFVSTC9VUkkgaGFuZGxpbmc6CisKKyhkZWZ2YXIgbWFya2Rvd24t dHMtLWJhcmUtdXJsLXJlZ2V4cCBnb3RvLWFkZHJlc3MtdXJsLXJlZ2V4cAorICAiUmVnZXhwIG1h dGNoaW5nIGJhcmUgVVJMcyBub3Qgd3JhcHBlZCBpbiBhbmdsZSBicmFja2V0cyBvciBsaW5rIHN5 bnRheC4iKQorCisoZGVmdmFyIG1hcmtkb3duLXRzLS1iYXJlLWVtYWlsLXVyaS1yZWdleHAgZ290 by1hZGRyZXNzLW1haWwtcmVnZXhwCisgICJSZWdleHAgbWF0Y2hpbmcgYmFyZSBlbWFpbCBhZGRy ZXNzZXMgbm90IHdyYXBwZWQgaW4gYW5nbGUgYnJhY2tldHMuIikKKworKGRlZnVuIG1hcmtkb3du LXRzLS1mb250aWZ5LWJhcmUtdXJpIChzdGFydCBlbmQpCisgICJGb250aWZ5IGJhcmUgVVJMIG9y IGVtYWlsIFVSSSBiZXR3ZWVuIFNUQVJUIGFuZCBFTkQuCitTa2lwIG1hdGNoZXMgYWxyZWFkeSBp bnNpZGUgdHJlZS1zaXR0ZXIgbGluayBvciBhdXRvbGluayBub2Rlcy4iCisgIChkb2xpc3QgKHJl IChsaXN0IG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHAKKyAgICAgICAgICAgICAgICAgICAg bWFya2Rvd24tdHMtLWJhcmUtZW1haWwtdXJpLXJlZ2V4cCkpCisgICAgKGdvdG8tY2hhciBzdGFy dCkKKyAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIHJlIGVuZCB0KQorICAgICAgKGxldCog KCh1cmktc3RhcnQgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgICAgICAodXJpLWVuZCAo bWF0Y2gtZW5kIDApKQorICAgICAgICAgICAgICh1cmkgKG1hdGNoLXN0cmluZyAwKSkKKyAgICAg ICAgICAgICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IHVyaS1zdGFydCAnbWFya2Rvd24taW5saW5l KSkKKyAgICAgICAgICAgICAocGFyZW50IChhbmQgbm9kZSAodHJlZXNpdC1ub2RlLXBhcmVudCBu b2RlKSkpCisgICAgICAgICAgICAgKHBhcmVudC10eXBlIChhbmQgcGFyZW50ICh0cmVlc2l0LW5v ZGUtdHlwZSBwYXJlbnQpKSkpCisgICAgICAgICh1bmxlc3MgKG9yIChtZW1iZXIgcGFyZW50LXR5 cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJpbmxpbmVfbGluayIgImZ1bGxfcmVm ZXJlbmNlX2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sbGFwc2VkX3Jl ZmVyZW5jZV9saW5rIiAic2hvcnRjdXRfbGluayIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJpbWFnZSIgInVyaV9hdXRvbGluayIgImVtYWlsX2F1dG9saW5rIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImxpbmtfZGVzdGluYXRpb24iKSkKKyAgICAgICAgICAgICAgICAg ICAgKG1lbWJlciAoYW5kIG5vZGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICcoInVyaV9hdXRvbGluayIgImVtYWlsX2F1dG9saW5rIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmtfZGVzdGluYXRpb24iICJjb2RlX3NwYW4i CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29kZV9mZW5jZV9jb250ZW50IiAiaW5m b19zdHJpbmciKSkKKyAgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5IHVyaS1z dGFydCAnYnV0dG9uKSkKKyAgICAgICAgICAobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24K KyAgICAgICAgICAgdXJpLXN0YXJ0IHVyaS1lbmQKKyAgICAgICAgICAgKGlmIChlcSB1cmktc3Rh cnQgMCkKKyAgICAgICAgICAgICAgIHVyaQorICAgICAgICAgICAgIChjb25jYXQgIm1haWx0bzoi IHVyaSkpKSkpKSkpCisKKzs7OyB0cmVlc2l0IHNldHRpbmdzOgorCiAoZGVmdmFyIG1hcmtkb3du LXRzLS10cmVlc2l0LXNldHRpbmdzCiAgICh0cmVlc2l0LWZvbnQtbG9jay1ydWxlcworICAgOmxh bmd1YWdlICdtYXJrZG93bgorICAgOmZlYXR1cmUgJ2Vycm9yCisgICA6b3ZlcnJpZGUgdAorICAg JygoRVJST1IpIEBmb250LWxvY2std2FybmluZy1mYWNlKQorCiAgICA6bGFuZ3VhZ2UgJ21hcmtk b3duLWlubGluZQogICAgOm92ZXJyaWRlIHQKICAgIDpmZWF0dXJlICdkZWxpbWl0ZXIKLSAgICco KGlubGluZV9saW5rIFsgIlsiICJdIiAiKCIgIikiIF0gQHNoYWRvdykKLSAgICAgKGltYWdlIFsg IiEiICJbIiAiXSIgIigiICIpIiBdIEBzaGFkb3cpKQorICAgJygoaW5saW5lX2xpbmsgWyAiWyIg Il0iICIoIiAiKSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQorICAgICAoZnVs bF9yZWZlcmVuY2VfbGluayBbICJbIiAiXSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1p dGVyKQorICAgICAoY29sbGFwc2VkX3JlZmVyZW5jZV9saW5rIFsgIlsiICJdIiBdIEBtYXJrZG93 bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChzaG9ydGN1dF9saW5rIFsgIlsiICJdIiBd IEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChpbWFnZSBbICIhIiAiWyIg Il0iICIoIiAiKSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKSkKIAogICAgOmxh bmd1YWdlICdtYXJrZG93bgogICAgOmZlYXR1cmUgJ2hlYWRpbmcKLSAgICcoKGF0eF9oZWFkaW5n IChhdHhfaDFfbWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctMQotICAgICAoYXR4X2hlYWRp bmcgKGF0eF9oMl9tYXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy0yCi0gICAgIChhdHhfaGVh ZGluZyAoYXR4X2gzX21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTMKLSAgICAgKGF0eF9o ZWFkaW5nIChhdHhfaDRfbWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctNAotICAgICAoYXR4 X2hlYWRpbmcgKGF0eF9oNV9tYXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy01Ci0gICAgIChh dHhfaGVhZGluZyAoYXR4X2g2X21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTYKLSAgICAg KHNldGV4dF9oZWFkaW5nKSBAbWFya2Rvd24tdHMtc2V0ZXh0LWhlYWRpbmcpCisgICAnKCgoYXR4 X2hlYWRpbmcpICAgIEBtYXJrZG93bi10cy0tZm9udGlmeS1oZWFkaW5nKQorICAgICAoKHNldGV4 dF9oZWFkaW5nKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktaGVhZGluZykpCiAKICAgIDpsYW5ndWFn ZSAnbWFya2Rvd24KICAgIDpmZWF0dXJlICdoZWFkaW5nCkBAIC0xOTQsMTYgKzE2MTEsNDAgQEAg bWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MKICAgICAgKGF0eF9oM19tYXJrZXIpIEBtYXJr ZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0eF9oNF9tYXJrZXIpIEBtYXJrZG93 bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0eF9oNV9tYXJrZXIpIEBtYXJrZG93bi10 cy0tZm9udGlmeS1kZWxpbWl0ZXIKLSAgICAgKGF0eF9oNl9tYXJrZXIpIEBtYXJrZG93bi10cy0t Zm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChhdHhfaDZfbWFya2VyKSBAbWFya2Rvd24tdHMtLWZv bnRpZnktZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDFfdW5kZXJsaW5lKSBAbWFya2Rvd24tdHMt LWZvbnRpZnktZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDJfdW5kZXJsaW5lKSBAbWFya2Rvd24t dHMtLWZvbnRpZnktZGVsaW1pdGVyKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCiAgICA6ZmVh dHVyZSAncGFyYWdyYXBoCi0gICAnKCgodGhlbWF0aWNfYnJlYWspIEBtYXJrZG93bi10cy1kZWxp bWl0ZXIpCi0gICAgICgoaW5kZW50ZWRfY29kZV9ibG9jaykgQGZvbnQtbG9jay1zdHJpbmctZmFj ZSkKKyAgICcoKCh0aGVtYXRpY19icmVhaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LXRoZW1hdGlj LWJyZWFrKQorICAgICAoKGh0bWxfYmxvY2spIEBtYXJrZG93bi10cy1odG1sLWJsb2NrKQorICAg ICAoKGluZGVudGVkX2NvZGVfYmxvY2spIEBtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2Nr KQogICAgICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9zdGFyKSBAbWFya2Rvd24tdHMtbGlzdC1t YXJrZXIpCiAgICAgIChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BsdXMpIEBtYXJrZG93bi10cy1s aXN0LW1hcmtlcikKICAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfbWludXMpIEBtYXJrZG93 bi10cy1saXN0LW1hcmtlcikKLSAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfZG90KSBAbWFy a2Rvd24tdHMtbGlzdC1tYXJrZXIpKQorICAgICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3Qp IEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJf cGFyZW50aGVzaXMpIEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAo dGFza19saXN0X21hcmtlcl91bmNoZWNrZWQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1jaGVja2Jv eCkKKyAgICAgKGxpc3RfaXRlbSAodGFza19saXN0X21hcmtlcl9jaGVja2VkKSBAbWFya2Rvd24t dHMtLWZvbnRpZnktY2hlY2tib3gpCisgICAgIChsaW5rX3JlZmVyZW5jZV9kZWZpbml0aW9uCisg ICAgICAobGlua19sYWJlbCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVmLWxhYmVsKQor ICAgICAobGlua19yZWZlcmVuY2VfZGVmaW5pdGlvbgorICAgICAgKGxpbmtfZGVzdGluYXRpb24p IEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLXJlZi1kZXN0aW5hdGlvbikKKyAgICAgKGxpbmtf cmVmZXJlbmNlX2RlZmluaXRpb24KKyAgICAgIChsaW5rX3RpdGxlKSBAbWFya2Rvd24tdHMtbGlu ay1kZXN0aW5hdGlvbikpCisKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24KKyAgIDpmZWF0dXJlICdw YXJhZ3JhcGgKKyAgIDpvdmVycmlkZSAncHJlcGVuZAorICAgJygocGlwZV90YWJsZV9oZWFkZXIg InwiIEBtYXJrZG93bi10cy10YWJsZS1oZWFkZXIpCisgICAgIChwaXBlX3RhYmxlX2hlYWRlciAo cGlwZV90YWJsZV9jZWxsKSBAbWFya2Rvd24tdHMtdGFibGUtaGVhZGVyKQorICAgICAocGlwZV90 YWJsZV9yb3cgInwiIEBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2VsbCkKKyAgICAgKHBp cGVfdGFibGVfcm93IChwaXBlX3RhYmxlX2NlbGwpIEBtYXJrZG93bi10cy10YWJsZS1jZWxsKQor ICAgICAocGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93ICJ8IiBAbWFya2Rvd24tdHMtdGFibGUtZGVs aW1pdGVyLWNlbGwpCisgICAgICgocGlwZV90YWJsZSkgQG1hcmtkb3duLXRzLXRhYmxlKQorICAg ICAocGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93IChwaXBlX3RhYmxlX2RlbGltaXRlcl9jZWxsKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0 ZXItY2VsbCkpCiAKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24KICAgIDpmZWF0dXJlICdwYXJhZ3Jh cGgKQEAgLTIxMiw4OSArMTY1Myw5OTkgQEAgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MK ICAgICAgKGJsb2NrX3F1b3RlX21hcmtlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRl cgogICAgICAoZmVuY2VkX2NvZGVfYmxvY2tfZGVsaW1pdGVyKSBAbWFya2Rvd24tdHMtLWZvbnRp ZnktZGVsaW1pdGVyCiAgICAgIChmZW5jZWRfY29kZV9ibG9jawotICAgICAgKGluZm9fc3RyaW5n IChsYW5ndWFnZSkgQG1hcmtkb3duLXRzLWxhbmd1YWdlLWtleXdvcmQpIEBtYXJrZG93bi10cy0t Zm9udGlmeS1kZWxpbWl0ZXIpCisgICAgICAoaW5mb19zdHJpbmcgKGxhbmd1YWdlKSBAbWFya2Rv d24tdHMtbGFuZ3VhZ2Uta2V5d29yZCkKKyAgICAgIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxp bWl0ZXIpCiAgICAgIChibG9ja19xdW90ZQogICAgICAgKGJsb2NrX3F1b3RlX21hcmtlcikgQG1h cmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAgICAgKHBhcmFncmFwaCAoaW5saW5lIChi bG9ja19jb250aW51YXRpb24pIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpKSkpCiAK KyAgIDpsYW5ndWFnZSAnbWFya2Rvd24KKyAgIDpmZWF0dXJlICdwYXJhZ3JhcGgKKyAgIDpvdmVy cmlkZSAnYXBwZW5kCisgICAnKChmZW5jZWRfY29kZV9ibG9jaworICAgICAgKGluZm9fc3RyaW5n IChsYW5ndWFnZSkpCisgICAgICAoY29kZV9mZW5jZV9jb250ZW50KSBAbWFya2Rvd24tdHMtLWZv bnRpZnktbm9uLXRzLWNvZGUtYmxvY2spKQorCisgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCisgICA6 ZmVhdHVyZSAncGFyYWdyYXBoCisgICA6b3ZlcnJpZGUgJ2FwcGVuZAorICAgJygoZmVuY2VkX2Nv ZGVfYmxvY2sgKGNvZGVfZmVuY2VfY29udGVudCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWNvZGUt YmxvY2spKQorCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlubGluZQogICAgOm92ZXJyaWRlICdh cHBlbmQKICAgIDpmZWF0dXJlICdwYXJhZ3JhcGgtaW5saW5lCi0gICAnKCgoaW1hZ2VfZGVzY3Jp cHRpb24pIEBsaW5rKQotICAgICAoKGxpbmtfZGVzdGluYXRpb24pIEBmb250LWxvY2stc3RyaW5n LWZhY2UpCi0gICAgICgoY29kZV9zcGFuKSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQorICAgJygo KGxpbmtfZGVzdGluYXRpb24pIEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0aW9u KQorICAgICAoKGNvZGVfc3BhbikgQG1hcmtkb3duLXRzLWNvZGUtc3BhbikKICAgICAgKChjb2Rl X3NwYW5fZGVsaW1pdGVyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQotICAgICAo KGVtcGhhc2lzKSBAaXRhbGljKQotICAgICAoKHN0cm9uZ19lbXBoYXNpcykgQGJvbGQpCi0gICAg IChpbmxpbmVfbGluayAobGlua190ZXh0KSBAbGluaykKLSAgICAgKGlubGluZV9saW5rIChsaW5r X2Rlc3RpbmF0aW9uKSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQotICAgICAoc2hvcnRjdXRfbGlu ayAobGlua190ZXh0KSBAbGluaykpCisgICAgICgoZW1waGFzaXMpIEBtYXJrZG93bi10cy1lbXBo YXNpcykKKyAgICAgKChzdHJvbmdfZW1waGFzaXMpIEBtYXJrZG93bi10cy1ib2xkKQorICAgICAo KHN0cmlrZXRocm91Z2gpIEBtYXJrZG93bi10cy1zdHJpa2V0aHJvdWdoKQorICAgICAoaW5saW5l X2xpbmsgKGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAg KGZ1bGxfcmVmZXJlbmNlX2xpbmsgKGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxp bmstbm9kZSkKKyAgICAgKGZ1bGxfcmVmZXJlbmNlX2xpbmsgKGxpbmtfbGFiZWwpIEBtYXJrZG93 bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgIChjb2xsYXBzZWRfcmVmZXJlbmNlX2xpbmsg KGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAgKHNob3J0 Y3V0X2xpbmsgKGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAg ICAgKGltYWdlIChpbWFnZV9kZXNjcmlwdGlvbikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmst bm9kZSkKKyAgICAgKCh1cmlfYXV0b2xpbmspIEBtYXJrZG93bi10cy0tZm9udGlmeS1hdXRvbGlu aykKKyAgICAgKChlbWFpbF9hdXRvbGluaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LWF1dG9saW5r KQorICAgICAoaW5saW5lX2xpbmsgKGxpbmtfdGl0bGUpIEBtYXJrZG93bi10cy1saW5rLWRlc3Rp bmF0aW9uKQorICAgICAoKGJhY2tzbGFzaF9lc2NhcGUpIEBtYXJrZG93bi10cy0tZm9udGlmeS1i YWNrc2xhc2gtZXNjYXBlKQorICAgICAoKGVudGl0eV9yZWZlcmVuY2UpIEBtYXJrZG93bi10cy0t Zm9udGlmeS1lbnRpdHkpCisgICAgICgobnVtZXJpY19jaGFyYWN0ZXJfcmVmZXJlbmNlKSBAbWFy a2Rvd24tdHMtLWZvbnRpZnktZW50aXR5KQorICAgICAoKGh0bWxfdGFnKSBAbWFya2Rvd24tdHMt aHRtbC10YWcpCisgICAgICgoaGFyZF9saW5lX2JyZWFrKSBAbWFya2Rvd24tdHMtLWZvbnRpZnkt aGFyZC1saW5lLWJyZWFrKQorICAgICAoKGxhdGV4X2Jsb2NrKSBAbWFya2Rvd24tdHMtLWZvbnRp ZnktbGF0ZXgtYmxvY2spKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlubGluZQogICAgOmZl YXR1cmUgJ3BhcmFncmFwaC1pbmxpbmUKICAgIDpvdmVycmlkZSAnYXBwZW5kCiAgICAnKChlbXBo YXNpc19kZWxpbWl0ZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCi0gICApKQog Ci07OzsgSW1lbnUKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24taW5saW5lCisgICA6ZmVhdHVyZSAn aW1hZ2UtcHJldmlldworICAgOm92ZXJyaWRlICdhcHBlbmQKKyAgICcoKGltYWdlKSBAbWFya2Rv d24tdHMtLWZvbnRpZnktaW1hZ2UpKSkKIAotKGRlZnVuIG1hcmtkb3duLXRzLWltZW51LW5vZGUt cCAobm9kZSkKKzs7OyBJbWVudToKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbWVudS1oZWFkaW5n LW5vZGUtcCAobm9kZSkKICAgIkNoZWNrIGlmIE5PREUgaXMgYSB2YWxpZCBlbnRyeSB0byBpbWVu dS4iCi0gIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9k ZSkpCi0gICAgICAgICAiYXR4X2hlYWRpbmciKSkKKyAgKGFuZCAoZXF1YWwgKHRyZWVzaXQtbm9k ZS10eXBlIG5vZGUpICJpbmxpbmUiKQorICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUg KHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpCisgICAgICAgICAgICAgICJhdHhfaGVhZGluZyIp KSkKIAotKGRlZnVuIG1hcmtkb3duLXRzLWltZW51LW5hbWUtZnVuY3Rpb24gKG5vZGUpCisoZGVm dW4gbWFya2Rvd24tdHMtLWltZW51LWhlYWRpbmctbmFtZS1mdW5jdGlvbiAobm9kZSkKICAgIlJl dHVybiBhbiBpbWVudSBlbnRyeSBpZiBOT0RFIGlzIGEgdmFsaWQgaGVhZGVyLiIKICAgKGxldCAo KG5hbWUgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUpKSkKLSAgICAoaWYgKG1hcmtkb3duLXRzLWlt ZW51LW5vZGUtcCBub2RlKQotCSh0aHJlYWQtZmlyc3QgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9k ZSkgKHRyZWVzaXQtbm9kZS10ZXh0KSkKKyAgICAoaWYgKG1hcmtkb3duLXRzLS1pbWVudS1oZWFk aW5nLW5vZGUtcCBub2RlKQorICAgICAgICAoY2FyIChzcGxpdC1zdHJpbmcgKHRyZWVzaXQtbm9k ZS10ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXBhcmVudCBu b2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIiB0ICIgIikpCiAgICAgICBuYW1l KSkpCiAKLShkZWZ1biBtYXJrZG93bi10cy1vdXRsaW5lLXByZWRpY2F0ZSAobm9kZSkKLSAgIk1h dGNoIGEgaGllcmFyY2hpY2FsIHNlY3Rpb24gdGhhdCBoYXMgYSBoZWFkaW5nLiIKKyhkZWZ1biBt YXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1ub2RlLXAgKG5vZGUpCisgICJDaGVjayBpZiBO T0RFIGlzIGFuIGluZm9fc3RyaW5nIHdpdGggZGVzY3JpcHRpdmUgdGV4dCBhZnRlciB0aGUgbGFu Z3VhZ2UuIgorICAoYW5kIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImluZm9fc3Ry aW5nIikKKyAgICAgICAod2hlbi1sZXQqICgobGFuZy1ub2RlICh0cmVlc2l0LXNlYXJjaC1zdWJ0 cmVlIG5vZGUgImxhbmd1YWdlIikpCisgICAgICAgICAgICAgICAgICAgKCg8ICh0cmVlc2l0LW5v ZGUtZW5kIGxhbmctbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1l bmQgbm9kZSkpKSkKKyAgICAgICAgIChub3QgKHN0cmluZy1ibGFuay1wCisgICAgICAgICAgICAg ICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgKHRyZWVz aXQtbm9kZS1lbmQgbGFuZy1ub2RlKQorICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5k IG5vZGUpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1uYW1l LWZ1bmN0aW9uIChub2RlKQorICAiUmV0dXJuIGFuIGltZW51IGVudHJ5IG5hbWUgZm9yIGEgY29k ZSBibG9jayBpbmZvX3N0cmluZyBOT0RFLgorVXNlcyB0aGUgZGVzY3JpcHRpdmUgdGV4dCBhZnRl ciB0aGUgbGFuZ3VhZ2UgbmFtZS4iCisgICh3aGVuLWxldCogKChsYW5nLW5vZGUgKHRyZWVzaXQt c2VhcmNoLXN1YnRyZWUgbm9kZSAibGFuZ3VhZ2UiKSkKKyAgICAgICAgICAgICAgKGRlc2MgKHN0 cmluZy10cmltCisgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9w ZXJ0aWVzCisgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbGFuZy1ub2Rl KQorICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkpKQorICAg IChmb3JtYXQgIiVzOiAlcyIgKHRyZWVzaXQtbm9kZS10ZXh0IGxhbmctbm9kZSkgZGVzYykpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtLW91dGxpbmUtcHJlZGljYXRlIChub2RlKQorICAiTWF0Y2gg Tk9ERSBpZiBpdCBpcyBhIGhpZXJhcmNoaWNhbCBzZWN0aW9uIHRoYXQgaGFzIGEgaGVhZGluZy4i CiAgIChhbmQgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAic2VjdGlvbiIpCiAgICAg ICAgKHdoZW4tbGV0KiAoKGNoaWxkICh0cmVlc2l0LW5vZGUtY2hpbGQgbm9kZSAwKSkpCiAgICAg ICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxkKSAiYXR4X2hlYWRpbmciKSkpKQog Ci07OzsgQ29kZSBibG9ja3MKKzs7OyBIZWFkaW5nIG1hbmlwdWxhdGlvbjoKIAotKGRlZnZhci1s b2NhbCBtYXJrZG93bi10cy0tY29uZmlndXJlZC1sYW5ndWFnZXMgbmlsCi0gICJBIGxpc3Qgb2Yg bGFuZ3VhZ2VzIHRoYXQgaGF2ZSBiZWVuIHNldHVwIGluIHRoaXMgYnVmZmVyLgorKGRlZmNvbnN0 IG1hcmtkb3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwgNgorICAiTWF4aW11bSBBVFgg aGVhZGluZyBsZXZlbCBpbiBNYXJrZG93biAoaDEtaDYpLgorRGVmaW5lZCBieSB0aGUgQ29tbW9u TWFyayBzcGVjIGFuZCB0aGUgdHJlZS1zaXR0ZXIgZ3JhbW1hci4iKQogCi1XaGVuIGEgY29kZSBi bG9jayBvZiBhIGxhbmd1YWdlIGFwcGVhcnMsIGBtYXJrZG93bi10cy1tb2RlJyBsb2FkcwotbGFu Z3VhZ2Ugc2V0dXBzIGxpa2UgZm9udC1sb2NrIGFuZCBpbmRlbnRhdGlvbiBmb3IgdGhhdCBsYW5n dWFnZSwgYW5kCi1hZGRzIHRoYXQgbGFuZ3VhZ2UgdG8gdGhpcyBsaXN0LiIpCisoZGVmdW4gbWFy a2Rvd24tdHMtLWhlYWRpbmctYXQtcG9pbnQgKCkKKyAgIlJldHVybiB0aGUgYXR4X2hlYWRpbmcg bm9kZSBhdCBvciBiZWZvcmUgcG9pbnQsIG9yIG5pbC4iCisgICh3aGVuLWxldCogKChub2RlICh0 cmVlc2l0LW5vZGUtYXQgKHBvaW50KSAnbWFya2Rvd24pKSkKKyAgICAoaWYgKGVxdWFsICh0cmVl c2l0LW5vZGUtdHlwZSBub2RlKSAiYXR4X2hlYWRpbmciKQorICAgICAgICBub2RlCisgICAgICAo dHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICAgICBub2RlIChsYW1iZGEgKG4pIChlcXVhbCAodHJl ZXNpdC1ub2RlLXR5cGUgbikgImF0eF9oZWFkaW5nIikpKSkpKQogCi0oZGVmdW4gbWFya2Rvd24t dHMtLWhhcnZlc3QtdHJlZXNpdC1jb25maWdzIChtb2RlKQotICAiSGFydmVzdCB0cmVlLXNpdHRl ciBjb25maWdzIGZyb20gTU9ERS4KLVJldHVybiBhIHBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBr ZXlzIGFuZCB2YWx1ZToKKyhkZWZ1biBtYXJrZG93bi10cy0taGVhZGluZy1sZXZlbCAoaGVhZGlu ZykKKyAgIlJldHVybiBIRUFESU5HIGxldmVsIChyYW5nZSAxIHRvIGBtYXJrZG93bi10cy0tcGFy c2VyLWhlYWRpbmctbWF4LWxldmVsJykuIgorICAobGV0ICgobWFya2VyICh0cmVlc2l0LW5vZGUt Y2hpbGQgaGVhZGluZyAwKSkpCisgICAgKGxlbmd0aCAodHJlZXNpdC1ub2RlLXRleHQgbWFya2Vy IHQpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tc2VjdGlvbi1hdC1wb2ludCAoKQorICAiUmV0 dXJuIHRoZSBzZWN0aW9uIG5vZGUgY29udGFpbmluZyBwb2ludC4iCisgICh3aGVuLWxldCogKChu b2RlICh0cmVlc2l0LW5vZGUtYXQgKHBvaW50KSAnbWFya2Rvd24pKSkKKyAgICAodHJlZXNpdC1w YXJlbnQtdW50aWwKKyAgICAgbm9kZSAobGFtYmRhIChuKSAoZXF1YWwgKHRyZWVzaXQtbm9kZS10 eXBlIG4pICJzZWN0aW9uIikpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1wcm9tb3RlICgpCisg ICJQcm9tb3RlIHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBwb2ludC4KK0ZvciBoZWFkaW5n cywgZGVjcmVhc2UgdGhlIGxldmVsIChlLmcuLCAjIyB0byAjKS4KK0ZvciBsaXN0IGl0ZW1zLCBk ZWNyZWFzZSBuZXN0aW5nIChkZWRlbnQpLgorV2l0aCBgdHJhbnNpZW50LW1hcmstbW9kZScgb24g YW5kIG1hcmsgYWN0aXZlLCBwcm9tb3RlIGFsbAoraGVhZGluZ3MgaW4gdGhlIHJlZ2lvbi4iCisg IChpbnRlcmFjdGl2ZSkKKyAgKGNvbmQKKyAgICgoYW5kIHRyYW5zaWVudC1tYXJrLW1vZGUgbWFy ay1hY3RpdmUpCisgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZS1yZWdpb24gLTEp KQorICAgKChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KQorICAgIChtYXJrZG93bi10 cy0tbGlzdC1wcm9tb3RlLW9yLWRlbW90ZSBuaWwpKQorICAgKHQgKG1hcmtkb3duLXRzLS1wcm9t b3RlLW9yLWRlbW90ZSAtMSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWRlbW90ZSAoKQorICAi RGVtb3RlIHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBwb2ludC4KK0ZvciBoZWFkaW5ncywg aW5jcmVhc2UgdGhlIGxldmVsIChlLmcuLCAjIHRvICMjKS4KK0ZvciBsaXN0IGl0ZW1zLCBpbmNy ZWFzZSBuZXN0aW5nIChpbmRlbnQpLgorV2l0aCBgdHJhbnNpZW50LW1hcmstbW9kZScgb24gYW5k IG1hcmsgYWN0aXZlLCBkZW1vdGUgYWxsIGhlYWRpbmdzCitpbiB0aGUgcmVnaW9uLiIKKyAgKGlu dGVyYWN0aXZlKQorICAoY29uZAorICAgKChhbmQgdHJhbnNpZW50LW1hcmstbW9kZSBtYXJrLWFj dGl2ZSkKKyAgICAobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lvbiAxKSkKKyAg ICgobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkKKyAgICAobWFya2Rvd24tdHMtLWxp c3QtcHJvbW90ZS1vci1kZW1vdGUgdCkpCisgICAodCAobWFya2Rvd24tdHMtLXByb21vdGUtb3It ZGVtb3RlIDEpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUgKGRl bHRhKQorICAiQ2hhbmdlIHRoZSBoZWFkaW5nIGF0IHBvaW50IGJ5IERFTFRBIGxldmVscy4KK05l Z2F0aXZlIERFTFRBIHByb21vdGVzIChmZXdlciAjKSwgcG9zaXRpdmUgZGVtb3RlcyAobW9yZSAj KS4KK0lmIHRoZSBoZWFkaW5nIGhhcyBhbiBvcHRpb25hbCB0cmFpbGluZyBjbG9zaW5nLWAjJyBz ZXF1ZW5jZSwgdGhhdAorc2VxdWVuY2UgaXMgcmVzaXplZCB0byBtYXRjaCB0aGUgbmV3IGxldmVs LiIKKyAgKHdoZW4tbGV0KiAoKGhlYWRpbmcgKG1hcmtkb3duLXRzLS1oZWFkaW5nLWF0LXBvaW50 KSkKKyAgICAgICAgICAgICAgKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGhlYWRpbmcgMCkp CisgICAgICAgICAgICAgIChsZXZlbCAobGVuZ3RoICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJrZXIg dCkpKQorICAgICAgICAgICAgICAobmV3LWxldmVsICgrIGxldmVsIGRlbHRhKSkpCisgICAgKHdo ZW4gKGFuZCAoPj0gbmV3LWxldmVsIDEpCisgICAgICAgICAgICAgICAoPD0gbmV3LWxldmVsIG1h cmtkb3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwpKQorICAgICAgKGxldCogKChvcGVu ZXItYmVnICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyKSkKKyAgICAgICAgICAgICAob3BlbmVy LWVuZCAodHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIpKQorICAgICAgICAgICAgIChsaW5lLWVuZCAo c2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9wZW5l ci1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCisg ICAgICAgICAgICAgOzsgRGV0ZWN0IGEgQ29tbW9uTWFyayBjbG9zaW5nLWAjJyBzZXF1ZW5jZTog b3B0aW9uYWwKKyAgICAgICAgICAgICA7OyB0cmFpbGluZyB3aGl0ZXNwYWNlLCBhIHJ1biBvZiBg IycsIGFuZCBhdCBsZWFzdCBvbmUKKyAgICAgICAgICAgICA7OyBzcGFjZS90YWIgYmV0d2VlbiBp dCBhbmQgdGhlIGhlYWRpbmcgdGV4dC4KKyAgICAgICAgICAgICAoY2xvc2VyIChzYXZlLWV4Y3Vy c2lvbgorICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGxpbmUtZW5kKQorICAgICAg ICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IiBvcGVuZXItZW5kKQor ICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoZW5kIChwb2ludCkpKQorICAgICAgICAgICAg ICAgICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIjIiBvcGVuZXItZW5kKQorICAgICAg ICAgICAgICAgICAgICAgICAgIChsZXQgKChiZWcgKHBvaW50KSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAod2hlbiAoYW5kICg8IGJlZyBlbmQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICg+IGJlZyBvcGVuZXItZW5kKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobWVtcSAoY2hhci1iZWZvcmUgYmVnKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKD9ccyA/XHQpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNvbnMgYmVnIGVuZCkpKSkpKSkKKyAgICAgICAgKHNhdmUtZXhjdXJz aW9uCisgICAgICAgICAgOzsgUmVzaXplIHRoZSBjbG9zZXIgZmlyc3Qgc28gaXQgZG9lc24ndCBz aGlmdCB0aGUgb3BlbmVyLgorICAgICAgICAgICh3aGVuIGNsb3NlcgorICAgICAgICAgICAgKGRl bGV0ZS1yZWdpb24gKGNhciBjbG9zZXIpIChjZHIgY2xvc2VyKSkKKyAgICAgICAgICAgIChnb3Rv LWNoYXIgKGNhciBjbG9zZXIpKQorICAgICAgICAgICAgKGluc2VydCAobWFrZS1zdHJpbmcgbmV3 LWxldmVsID8jKSkpCisgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gb3BlbmVyLWJlZyBvcGVuZXIt ZW5kKQorICAgICAgICAgIChnb3RvLWNoYXIgb3BlbmVyLWJlZykKKyAgICAgICAgICAoaW5zZXJ0 IChtYWtlLXN0cmluZyBuZXctbGV2ZWwgPyMpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t cHJvbW90ZS1vci1kZW1vdGUtcmVnaW9uIChkZWx0YSkKKyAgIkNoYW5nZSBhbGwgaGVhZGluZ3Mg aW4gdGhlIGFjdGl2ZSByZWdpb24gYnkgREVMVEEgbGV2ZWxzLgorTmVnYXRpdmUgREVMVEEgcHJv bW90ZXMgKGZld2VyICMpLCBwb3NpdGl2ZSBkZW1vdGVzIChtb3JlICMpLiIKKyAgKGxldCAoKGJl ZyAocmVnaW9uLWJlZ2lubmluZykpCisgICAgICAgIChlbmQgKHJlZ2lvbi1lbmQpKSkKKyAgICAo c2F2ZS1leGN1cnNpb24KKyAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgKHdoaWxlICg8IChw b2ludCkgZW5kKQorICAgICAgICAod2hlbiAobWFya2Rvd24tdHMtLWhlYWRpbmctYXQtcG9pbnQp CisgICAgICAgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZSBkZWx0YSkpCisgICAg ICAgIChmb3J3YXJkLWxpbmUgMSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1tb3ZlLXN1YnRy ZWUtdXAgKCkKKyAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gdXAgcGFz dCB0aGUgcHJldmlvdXMgc2libGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGlmIChtYXJrZG93 bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KQorICAgICAgKG1hcmtkb3duLXRzLS1saXN0LW1vdmUg dCkKKyAgICAobWFya2Rvd24tdHMtLW1vdmUtc3VidHJlZS11cC1vci1kb3duIHQpKSkKKworKGRl ZnVuIG1hcmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duICgpCisgICJNb3ZlIHRoZSBjdXJyZW50 IHNlY3Rpb24gb3IgbGlzdCBpdGVtIGRvd24gcGFzdCB0aGUgbmV4dCBzaWJsaW5nLiIKKyAgKGlu dGVyYWN0aXZlKQorICAoaWYgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpCisgICAg ICAobWFya2Rvd24tdHMtLWxpc3QtbW92ZSBuaWwpCisgICAgKG1hcmtkb3duLXRzLS1tb3ZlLXN1 YnRyZWUtdXAtb3ItZG93biBuaWwpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1zZWN0aW9uLWZv bGRlZC1wIChzZWN0aW9uKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgU0VDVElPTidzIGhlYWRpbmcg aXMgZm9sZGVkLgorQ2hlY2tzIHdoZXRoZXIgdGhlIGVuZCBvZiB0aGUgaGVhZGluZyBsaW5lIGhh cyBhbiBvdXRsaW5lCitpbnZpc2libGUgb3ZlcmxheS4iCisgIChsZXQgKChoZWFkaW5nICh0cmVl c2l0LW5vZGUtY2hpbGQgc2VjdGlvbiAwKSkpCisgICAgKHdoZW4gKGFuZCBoZWFkaW5nCisgICAg ICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGhlYWRpbmcpICJhdHhfaGVhZGlu ZyIpKQorICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQt bm9kZS1zdGFydCBoZWFkaW5nKSkKKyAgICAgICAgKG91dGxpbmUtaW52aXNpYmxlLXAgKHBvcy1l b2wpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUtdXAtb3ItZG93biAo dXApCisgICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rpb24gc3VidHJlZS4KK0lmIFVQIGlzIG5vbi1u aWwsIG1vdmUgcGFzdCB0aGUgcHJldmlvdXMgc2libGluZzsgb3RoZXJ3aXNlIG1vdmUgZG93bi4K K1ByZXNlcnZlcyB0aGUgZm9sZGluZyBzdGF0ZSBvZiBib3RoIHNlY3Rpb25zLiIKKyAgKHdoZW4t bGV0KiAoKHNlY3Rpb24gKG1hcmtkb3duLXRzLS1zZWN0aW9uLWF0LXBvaW50KSkKKyAgICAgICAg ICAgICAgKHNpYmxpbmcgKGlmIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNp dC1ub2RlLXByZXYtc2libGluZyBzZWN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0 cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIHNlY3Rpb24pKSkpCisgICAgKHdoZW4gKGVxdWFsICh0 cmVlc2l0LW5vZGUtdHlwZSBzaWJsaW5nKSAic2VjdGlvbiIpCisgICAgICAobGV0KiAoKGZpcnN0 IChpZiB1cCBzaWJsaW5nIHNlY3Rpb24pKQorICAgICAgICAgICAgIChzZWNvbmQgKGlmIHVwIHNl Y3Rpb24gc2libGluZykpCisgICAgICAgICAgICAgKGZpcnN0LWZvbGRlZCAobWFya2Rvd24tdHMt LXNlY3Rpb24tZm9sZGVkLXAgZmlyc3QpKQorICAgICAgICAgICAgIChzZWNvbmQtZm9sZGVkICht YXJrZG93bi10cy0tc2VjdGlvbi1mb2xkZWQtcCBzZWNvbmQpKQorICAgICAgICAgICAgIChmaXJz dC1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IGZpcnN0KSkKKyAgICAgICAgICAgICAoc2Vjb25k LXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgc2Vjb25kKSkKKyAgICAgICAgICAgICAoc2Vjb25k LWVuZCAodHJlZXNpdC1ub2RlLWVuZCBzZWNvbmQpKQorICAgICAgICAgICAgIDs7IEV4dHJhY3Qg c2VwYXJhdG9yIGJldHdlZW4gaXRlbXMgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgICAg ICAgICAgKGZpcnN0LXJhdyAoYnVmZmVyLXN1YnN0cmluZyBmaXJzdC1zdGFydCBzZWNvbmQtc3Rh cnQpKQorICAgICAgICAgICAgIChmaXJzdC10ZXh0IChzdHJpbmctdHJpbS1yaWdodCBmaXJzdC1y YXcpKQorICAgICAgICAgICAgIChzZXBhcmF0b3IgKHN1YnN0cmluZyBmaXJzdC1yYXcgKGxlbmd0 aCBmaXJzdC10ZXh0KSkpCisgICAgICAgICAgICAgKHNlY29uZC1yYXcgKGJ1ZmZlci1zdWJzdHJp bmcgc2Vjb25kLXN0YXJ0IHNlY29uZC1lbmQpKQorICAgICAgICAgICAgIChzZWNvbmQtdGV4dCAo c3RyaW5nLXRyaW0tcmlnaHQgc2Vjb25kLXJhdykpCisgICAgICAgICAgICAgKHRyYWlsaW5nIChz dWJzdHJpbmcgc2Vjb25kLXJhdyAobGVuZ3RoIHNlY29uZC10ZXh0KSkpCisgICAgICAgICAgICAg KGxpbmUtb2Zmc2V0ICgtIChsaW5lLW51bWJlci1hdC1wb3MgKHBvaW50KSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxpbmUtbnVtYmVyLWF0LXBvcyAodHJlZXNpdC1ub2RlLXN0YXJ0 IHNlY3Rpb24pKSkpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBmaXJzdC1zdGFydCBzZWNvbmQt ZW5kKQorICAgICAgICAoZ290by1jaGFyIGZpcnN0LXN0YXJ0KQorICAgICAgICAoaW5zZXJ0IHNl Y29uZC10ZXh0IHNlcGFyYXRvciBmaXJzdC10ZXh0IHRyYWlsaW5nKQorICAgICAgICA7OyBSZXN0 b3JlIGZvbGRpbmcgc3RhdGUKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdv dG8tY2hhciBmaXJzdC1zdGFydCkKKyAgICAgICAgICAod2hlbiAob3V0bGluZS1vbi1oZWFkaW5n LXApCisgICAgICAgICAgICAoaWYgc2Vjb25kLWZvbGRlZAorICAgICAgICAgICAgICAgIChvdXRs aW5lLWhpZGUtc3VidHJlZSkKKyAgICAgICAgICAgICAgKG91dGxpbmUtc2hvdy1zdWJ0cmVlKSkp CisgICAgICAgICAgKG91dGxpbmUtbmV4dC1oZWFkaW5nKQorICAgICAgICAgICh3aGVuIChvdXRs aW5lLW9uLWhlYWRpbmctcCkKKyAgICAgICAgICAgIChpZiBmaXJzdC1mb2xkZWQKKyAgICAgICAg ICAgICAgICAob3V0bGluZS1oaWRlLXN1YnRyZWUpCisgICAgICAgICAgICAgIChvdXRsaW5lLXNo b3ctc3VidHJlZSkpKSkKKyAgICAgICAgKGdvdG8tY2hhciAoaWYgdXAKKyAgICAgICAgICAgICAg ICAgICAgICAgZmlyc3Qtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICgrIGZpcnN0LXN0YXJ0 IChsZW5ndGggc2Vjb25kLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoIHNl cGFyYXRvcikpKSkKKyAgICAgICAgKHdpdGgtc3VwcHJlc3NlZC13YXJuaW5ncyAoKGludGVyYWN0 aXZlLW9ubHkgbmV4dC1saW5lKSkKKyAgICAgICAgICAobmV4dC1saW5lIGxpbmUtb2Zmc2V0KSkp KSkpCisKKzs7OyBMaXN0IG1hbmlwdWxhdGlvbjoKKworKGRlZnVuIG1hcmtkb3duLXRzLXRvZ2ds ZS1jaGVja2JveCAoKQorICAiVG9nZ2xlIHRoZSB0YXNrIGxpc3QgY2hlY2tib3ggb24gdGhlIGN1 cnJlbnQgbGluZS4KK1N3aXRjaGVzIGJldHdlZW4gYFsgXScgYW5kIGBbeF0nLiIKKyAgKGludGVy YWN0aXZlKQorICAod2hlbi1sZXQqICgocG9zIChzYXZlLWV4Y3Vyc2lvbiAoYmFjay10by1pbmRl bnRhdGlvbikgKHBvaW50KSkpCisgICAgICAgICAgICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQg cG9zICdtYXJrZG93bikpCisgICAgICAgICAgICAgIChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRp bAorICAgICAgICAgICAgICAgICAgICAgbm9kZSAobGFtYmRhIChuKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImxpc3RfaXRlbSIpKSkp KQorICAgICh3aGVuLWxldCogKChtYXJrZXIgKHNlcS1maW5kCisgICAgICAgICAgICAgICAgICAg ICAgICAgKGxhbWJkYSAoY2hpbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtYmVy ICh0cmVlc2l0LW5vZGUtdHlwZSBjaGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygidGFza19saXN0X21hcmtlcl9jaGVja2VkIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJ0YXNrX2xpc3RfbWFya2VyX3VuY2hlY2tlZCIpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIGl0ZW0pKSkpCisgICAgICAo bGV0ICgoYmVnICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyKSkKKyAgICAgICAgICAgIChlbmQg KHRyZWVzaXQtbm9kZS1lbmQgbWFya2VyKSkKKyAgICAgICAgICAgIChjaGVja2VkIChlcXVhbCAo dHJlZXNpdC1ub2RlLXR5cGUgbWFya2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0 YXNrX2xpc3RfbWFya2VyX2NoZWNrZWQiKSkpCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAg ICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZyBlbmQp CisgICAgICAgICAgKGluc2VydCAoaWYgY2hlY2tlZCAiWyBdIiAiW3hdIikpKSkpKSkKKworKGRl ZnVuIG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQgKCkKKyAgIlJldHVybiB0aGUgaW5u ZXJtb3N0IGxpc3RfaXRlbSBub2RlIGNvbnRhaW5pbmcgcG9pbnQsIG9yIG5pbC4KK1VzZXMgdGhl IHBvc2l0aW9uIGFmdGVyIGBiYWNrLXRvLWluZGVudGF0aW9uJyBzbyB0aGF0IHBvaW50IGluCith IGxpbmUncyBsZWFkaW5nIHdoaXRlc3BhY2UgcmVzb2x2ZXMgdG8gdGhlIGl0ZW0gb24gdGhhdCBs aW5lLAorbm90IHRvIGEgcHJlY2VkaW5nIGl0ZW0gd2hvc2Ugbm9kZSBzcGFucyB0aGUgd2hpdGVz cGFjZS4KK0luc2lkZSBibG9jayBxdW90ZXMsIGFsc28gdHJ5IGZyb20gdGhlIGNvbnRlbnQgcG9z aXRpb24gcGFzdAordGhlIGA+JyBtYXJrZXJzLiIKKyAgKHdoZW4tbGV0KiAoKHBvcyAoc2F2ZS1l eGN1cnNpb24gKGJhY2stdG8taW5kZW50YXRpb24pIChwb2ludCkpKQorICAgICAgICAgICAgICAo bm9kZSAodHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAoYm9s IChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpCisgICAgICAgICAgICAgIChlb2wgKGxpbmUtZW5k LXBvc2l0aW9uKSkpCisgICAgKG9yIChsZXQgKChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbAor ICAgICAgICAgICAgICAgICAgICAgbm9kZSAobGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImxpc3RfaXRlbSIpKSkpKQor ICAgICAgICAgIDs7IFZlcmlmeSB0aGUgY3VycmVudCBsaW5lIGlzIHdpdGhpbiB0aGUgaXRlbSdz IHJhbmdlLgorICAgICAgICAgIDs7IGB0cmVlc2l0LW5vZGUtYXQnIGNhbiByZXR1cm4gYSBub2Rl IGluc2lkZSBhIGxpc3RfaXRlbQorICAgICAgICAgIDs7IGV2ZW4gd2hlbiBwb2ludCBpcyBvbiBh IHByZWNlZGluZyBsaW5lLgorICAgICAgICAgICh3aGVuIChhbmQgaXRlbQorICAgICAgICAgICAg ICAgICAgICAgKDw9ICh0cmVlc2l0LW5vZGUtc3RhcnQgaXRlbSkgZW9sKQorICAgICAgICAgICAg ICAgICAgICAgKD49ICh0cmVlc2l0LW5vZGUtZW5kIGl0ZW0pIGJvbCkpCisgICAgICAgICAgICBp dGVtKSkKKyAgICAgICAgOzsgV2hlbiBiYWNrLXRvLWluZGVudGF0aW9uIGxhbmRzIG9uIGJsb2Nr IHF1b3RlIG1hcmtlcnMsCisgICAgICAgIDs7IHNraXAgcGFzdCB0aGVtIGFuZCB0cnkgZnJvbSB0 aGUgY29udGVudCBwb3NpdGlvbi4KKyAgICAgICAgKGxldCAoKGNvbnRlbnQtcG9zIChzYXZlLWV4 Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIj4gXHQi KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkpCisgICAgICAgICAgKHdo ZW4gKD4gY29udGVudC1wb3MgcG9zKQorICAgICAgICAgICAgKHdoZW4tbGV0KiAoKGNub2RlICh0 cmVlc2l0LW5vZGUtYXQgY29udGVudC1wb3MgJ21hcmtkb3duKSkpCisgICAgICAgICAgICAgIChs ZXQgKChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgY25vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG4pCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImxpc3Rf aXRlbSIpKSkpKQorICAgICAgICAgICAgICAgICh3aGVuIChhbmQgaXRlbQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgKDw9ICh0cmVlc2l0LW5vZGUtc3RhcnQgaXRlbSkgZW9sKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgKD49ICh0cmVlc2l0LW5vZGUtZW5kIGl0ZW0pIGJvbCkpCisg ICAgICAgICAgICAgICAgICBpdGVtKSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0 LW1hcmtlci13aWR0aCAoaXRlbSkKKyAgIlJldHVybiB0aGUgd2lkdGggb2YgSVRFTSdzIGxpc3Qg bWFya2VyIGluY2x1ZGluZyB0cmFpbGluZyBzcGFjZS4iCisgIChsZXQgKChtYXJrZXIgKHRyZWVz aXQtbm9kZS1jaGlsZCBpdGVtIDApKSkKKyAgICAoLSAodHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIp ICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxp c3QtaXRlbS1yZWdpb24gKGl0ZW0pCisgICJSZXR1cm4gdGhlIChCRUcgLiBFTkQpIHJlZ2lvbiBm b3IgSVRFTSwgY2xhbXBlZCB0byBmdWxsIGxpbmVzLgorQkVHIHN0YXJ0cyBhdCB0aGUgYmVnaW5u aW5nIG9mIHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIGl0ZW0uCitFTkQgaXMgY2xhbXBlZCBzbyBp dCBkb2VzIG5vdCBleHRlbmQgaW50byB0aGUgbmV4dCBsaW5lJ3MKK2luZGVudGF0aW9uLCB3aGlj aCB0cmVlLXNpdHRlciBtYXkgaW5jbHVkZSBpbiB0aGUgbm9kZS4iCisgIChsZXQgKChiZWcgKHNh dmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3Rh cnQgaXRlbSkpCisgICAgICAgICAgICAgICAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSkKKyAg ICAgICAgKGVuZCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRy ZWVzaXQtbm9kZS1lbmQgaXRlbSkpCisgICAgICAgICAgICAgICAoaWYgKGJvbHApIChwb2ludCkg KGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpKSkKKyAgICAoY29ucyBiZWcgZW5kKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy0tbGlzdC1vcmRlcmVkLWl0ZW0tcCAoaXRlbSkKKyAgIlJldHVybiBu b24tbmlsIGlmIElURU0gaXMgYW4gb3JkZXJlZCAobnVtYmVyZWQpIGxpc3QgaXRlbS4iCisgIChs ZXQgKChtYXJrZXIgKHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKSkKKyAgICAoZXF1YWwgKHRy ZWVzaXQtbm9kZS10eXBlIG1hcmtlcikgImxpc3RfbWFya2VyX2RvdCIpKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLS1saXN0LXByb21vdGUtb3ItZGVtb3RlIChkZW1vdGUpCisgICJDaGFuZ2UgbmVz dGluZyBvZiB0aGUgbGlzdCBpdGVtIGF0IHBvaW50LgorSWYgREVNT1RFIGlzIG5vbi1uaWwsIGRl bW90ZSAoaW5kZW50KTsgb3RoZXJ3aXNlIHByb21vdGUgKGRlZGVudCkuCitPcmRlcmVkIChudW1i ZXJlZCkgbGlzdCBpdGVtcyBhcmUgc2tpcHBlZCBiZWNhdXNlIHRoZSBncmFtbWFyIGRvZXMKK25v dCBzdXBwb3J0IG5lc3RpbmcgdGhlbSBieSBpbmRlbnRhdGlvbi4iCisgICh3aGVuLWxldCogKChp dGVtIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAgKHJl Z2lvbiAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1yZWdpb24gaXRlbSkpCisgICAgICAgICAgICAg IChiZWcgKGNhciByZWdpb24pKQorICAgICAgICAgICAgICAoZW5kIChjZHIgcmVnaW9uKSkpCisg ICAgKHdoZW4gKG1hcmtkb3duLXRzLS1saXN0LW9yZGVyZWQtaXRlbS1wIGl0ZW0pCisgICAgICAo dXNlci1lcnJvciAiT3JkZXJlZCBsaXN0IGl0ZW1zIGNhbm5vdCBiZSBuZXN0ZWQgKGdyYW1tYXIg bGltaXRhdGlvbikiKSkKKyAgICAoaWYgZGVtb3RlCisgICAgICAgIDs7IERlbW90ZTogaW5kZW50 IGJ5IG1hcmtlciB3aWR0aCwgb25seSBpZiB0aGVyZSBpcyBhIHByZXZpb3VzCisgICAgICAgIDs7 IHNpYmxpbmcgdG8gbmVzdCB1bmRlciAobGlrZSBvcmctbW9kZSkuCisgICAgICAgICh3aGVuICh0 cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5nIGl0ZW0pCisgICAgICAgICAgKGluZGVudC1yaWdpZGx5 IGJlZyBlbmQgKG1hcmtkb3duLXRzLS1saXN0LW1hcmtlci13aWR0aCBpdGVtKSkpCisgICAgICA7 OyBQcm9tb3RlOiBkZWRlbnQgdG8gZ3JhbmRwYXJlbnQgbGV2ZWwuCisgICAgICAobGV0KiAoKHBh cmVudC1saXN0ICh0cmVlc2l0LW5vZGUtcGFyZW50IGl0ZW0pKQorICAgICAgICAgICAgIChncmFu ZHBhcmVudCAoYW5kIHBhcmVudC1saXN0ICh0cmVlc2l0LW5vZGUtcGFyZW50IHBhcmVudC1saXN0 KSkpCisgICAgICAgICAgICAgKGl0ZW0tY29sIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAg ICAgICAgICAgICAgIChnb3RvLWNoYXIgYmVnKSAoY3VycmVudC1pbmRlbnRhdGlvbikpKSkKKyAg ICAgICAgKHdoZW4gKGFuZCBncmFuZHBhcmVudAorICAgICAgICAgICAgICAgICAgIChlcXVhbCAo dHJlZXNpdC1ub2RlLXR5cGUgZ3JhbmRwYXJlbnQpICJsaXN0X2l0ZW0iKQorICAgICAgICAgICAg ICAgICAgICg+IGl0ZW0tY29sIDApKQorICAgICAgICAgIChsZXQgKChncC1jb2wgKHNhdmUtZXhj dXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9k ZS1zdGFydCBncmFuZHBhcmVudCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50 LWluZGVudGF0aW9uKSkpKQorICAgICAgICAgICAgKGluZGVudC1yaWdpZGx5IGJlZyBlbmQgKC0g Z3AtY29sIGl0ZW0tY29sKSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LW5vZGUt Ym9sIChub2RlKQorICAiUmV0dXJuIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgY29udGFpbmlu ZyBOT0RFJ3Mgc3RhcnQuIgorICAoc2F2ZS1leGN1cnNpb24KKyAgICAoZ290by1jaGFyICh0cmVl c2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpCisK KyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1tb3ZlICh1cCkKKyAgIk1vdmUgdGhlIGxpc3QgaXRl bSBhdCBwb2ludC4KK0lmIFVQIGlzIG5vbi1uaWwsIG1vdmUgcGFzdCB0aGUgcHJldmlvdXMgc2li bGluZzsgb3RoZXJ3aXNlIG1vdmUgZG93bi4iCisgICh3aGVuLWxldCogKChpdGVtIChtYXJrZG93 bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAgKHNpYmxpbmcgKGlmIHVw CisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXByZXYtc2libGluZyBp dGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5n IGl0ZW0pKSkpCisgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBzaWJsaW5nKSAi bGlzdF9pdGVtIikKKyAgICAgIChsZXQqICgoZmlyc3QgKGlmIHVwIHNpYmxpbmcgaXRlbSkpCisg ICAgICAgICAgICAgKHNlY29uZCAoaWYgdXAgaXRlbSBzaWJsaW5nKSkKKyAgICAgICAgICAgICAo Zmlyc3Qtc3RhcnQgKG1hcmtkb3duLXRzLS1saXN0LW5vZGUtYm9sIGZpcnN0KSkKKyAgICAgICAg ICAgICAoc2Vjb25kLXN0YXJ0IChtYXJrZG93bi10cy0tbGlzdC1ub2RlLWJvbCBzZWNvbmQpKQor ICAgICAgICAgICAgIChzZWNvbmQtZW5kICh0cmVlc2l0LW5vZGUtZW5kIHNlY29uZCkpCisgICAg ICAgICAgICAgOzsgRXh0cmFjdCBzZXBhcmF0b3IgYmV0d2VlbiBpdGVtcyBhbmQgdHJhaWxpbmcg d2hpdGVzcGFjZS4KKyAgICAgICAgICAgICAoZmlyc3QtcmF3IChidWZmZXItc3Vic3RyaW5nIGZp cnN0LXN0YXJ0IHNlY29uZC1zdGFydCkpCisgICAgICAgICAgICAgKGZpcnN0LXRleHQgKHN0cmlu Zy10cmltLXJpZ2h0IGZpcnN0LXJhdykpCisgICAgICAgICAgICAgKHNlcGFyYXRvciAoc3Vic3Ry aW5nIGZpcnN0LXJhdyAobGVuZ3RoIGZpcnN0LXRleHQpKSkKKyAgICAgICAgICAgICAoc2Vjb25k LXJhdyAoYnVmZmVyLXN1YnN0cmluZyBzZWNvbmQtc3RhcnQgc2Vjb25kLWVuZCkpCisgICAgICAg ICAgICAgKHNlY29uZC10ZXh0IChzdHJpbmctdHJpbS1yaWdodCBzZWNvbmQtcmF3KSkKKyAgICAg ICAgICAgICAodHJhaWxpbmcgKHN1YnN0cmluZyBzZWNvbmQtcmF3IChsZW5ndGggc2Vjb25kLXRl eHQpKSkKKyAgICAgICAgICAgICAobGluZS1vZmZzZXQgKC0gKGxpbmUtbnVtYmVyLWF0LXBvcyAo cG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZS1udW1iZXItYXQtcG9z CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0p KSkpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBmaXJzdC1zdGFydCBzZWNvbmQtZW5kKQorICAg ICAgICAoZ290by1jaGFyIGZpcnN0LXN0YXJ0KQorICAgICAgICAoaW5zZXJ0IHNlY29uZC10ZXh0 IHNlcGFyYXRvciBmaXJzdC10ZXh0IHRyYWlsaW5nKQorICAgICAgICAoZ290by1jaGFyIChpZiB1 cAorICAgICAgICAgICAgICAgICAgICAgICBmaXJzdC1zdGFydAorICAgICAgICAgICAgICAgICAg ICAgKCsgZmlyc3Qtc3RhcnQgKGxlbmd0aCBzZWNvbmQtdGV4dCkKKyAgICAgICAgICAgICAgICAg ICAgICAgIChsZW5ndGggc2VwYXJhdG9yKSkpKQorICAgICAgICAod2l0aC1zdXBwcmVzc2VkLXdh cm5pbmdzICgoaW50ZXJhY3RpdmUtb25seSBuZXh0LWxpbmUpKQorICAgICAgICAgIChuZXh0LWxp bmUgbGluZS1vZmZzZXQpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXJlbnVtYmVyLWxpc3Qg KCZvcHRpb25hbCBzdGFydCkKKyAgIlJlbnVtYmVyIHRoZSBvcmRlcmVkIGxpc3QgYXQgcG9pbnQu CitOdW1iZXJzIGFyZSBhc3NpZ25lZCBzZXF1ZW50aWFsbHkgc3RhcnRpbmcgZnJvbSB0aGUgZmly c3QgaXRlbSdzCitudW1iZXIuICBXaXRoIGEgcHJlZml4IGFyZ3VtZW50IFNUQVJULCBzdGFydCBu dW1iZXJpbmcgZnJvbSB0aGF0Cit2YWx1ZSBpbnN0ZWFkLiAgRG9lcyBub3RoaW5nIGZvciB1bm9y ZGVyZWQgbGlzdHMuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAod2hlbi1sZXQqICgoaXRlbSAo bWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpCisgICAgICAgICAgICAgIChsaXN0LW5v ZGUgKHRyZWVzaXQtbm9kZS1wYXJlbnQgaXRlbSkpKQorICAgICh3aGVuIChlcXVhbCAodHJlZXNp dC1ub2RlLXR5cGUgbGlzdC1ub2RlKSAibGlzdCIpCisgICAgICAobGV0KiAoKGNoaWxkcmVuICh0 cmVlc2l0LW5vZGUtY2hpbGRyZW4gbGlzdC1ub2RlKSkKKyAgICAgICAgICAgICAoaXRlbXMgKHNl cS1maWx0ZXIgKGxhbWJkYSAobikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4pICJsaXN0X2l0ZW0iKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2hpbGRyZW4pKQorICAgICAgICAgICAgIChmaXJzdC1tYXJrZXIg KHRyZWVzaXQtbm9kZS1jaGlsZCAoY2FyIGl0ZW1zKSAwKSkKKyAgICAgICAgICAgICAobWFya2Vy LXR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIGZpcnN0LW1hcmtlcikpKQorICAgICAgICAod2hlbiAo bWVtYmVyIG1hcmtlci10eXBlICcoImxpc3RfbWFya2VyX2RvdCIgImxpc3RfbWFya2VyX3BhcmVu dGhlc2lzIikpCisgICAgICAgICAgKGxldCogKChiYXNlIChpZiBzdGFydAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHByZWZpeC1udW1lcmljLXZhbHVlIHN0YXJ0KQorICAgICAgICAgICAg ICAgICAgICAgICAgIChzdHJpbmctdG8tbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAg ICh0cmVlc2l0LW5vZGUtdGV4dCBmaXJzdC1tYXJrZXIgdCkpKSkKKyAgICAgICAgICAgICAgICAg KGNvdW50IChsZW5ndGggaXRlbXMpKQorICAgICAgICAgICAgICAgICA7OyBTdGFydCBmcm9tIHRo ZSBsYXN0IG51bWJlciBhbmQgd29yayBiYWNrd2FyZHMgc28KKyAgICAgICAgICAgICAgICAgOzsg dGhhdCBlYXJsaWVyIGJ1ZmZlciBwb3NpdGlvbnMgcmVtYWluIHZhbGlkLgorICAgICAgICAgICAg ICAgICAobnVtICgrIGJhc2UgY291bnQgLTEpKSkKKyAgICAgICAgICAgIChkb2xpc3QgKGl0IChy ZXZlcnNlIGl0ZW1zKSkKKyAgICAgICAgICAgICAgKGxldCogKChtYXJrZXIgKHRyZWVzaXQtbm9k ZS1jaGlsZCBpdCAwKSkKKyAgICAgICAgICAgICAgICAgICAgIChtYXJrZXItZW5kICh0cmVlc2l0 LW5vZGUtZW5kIG1hcmtlcikpCisgICAgICAgICAgICAgICAgICAgICAoYm9sIChzYXZlLWV4Y3Vy c2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9k ZS1zdGFydCBtYXJrZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lu bmluZy1wb3NpdGlvbikpKQorICAgICAgICAgICAgICAgICAgICAgOzsgRnVsbCB0ZXh0IGZyb20g Ym9sIHRvIGVuZCBvZiBtYXJrZXIgaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgIDs7IGFu eSBsZWFkaW5nIHdoaXRlc3BhY2UsIHRoZSBudW1iZXIsIGFuZCB0aGUKKyAgICAgICAgICAgICAg ICAgICAgIDs7IHNlcGFyYXRvciAoZS5nLiwgIi4gIiBvciAiLlx0IikuCisgICAgICAgICAgICAg ICAgICAgICAoZnVsbC10ZXh0IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvbCBtYXJrZXItZW5kKSkKKyAgICAgICAgICAg ICAgICAgICAgIChpbmRlbnQtc3RyCisgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmct bWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBcXChbWzpibGFuazpdXSpcXClb MC05XSIgZnVsbC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5n IDEgZnVsbC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgIiIpKQorICAgICAgICAgICAg ICAgICAgICAgKHN1ZmZpeC1zdHIKKyAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1t YXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYFtbOmJsYW5rOl1dKlswLTldK1xc KC4qXFwpXFwnIiBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1z dHJpbmcgMSBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAiLiAiKSkKKyAgICAg ICAgICAgICAgICAgICAgIChuZXctdGV4dCAoY29uY2F0IGluZGVudC1zdHIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudW1iZXItdG8tc3RyaW5nIG51bSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC1zdHIpKSkKKyAgICAgICAg ICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9u IGJvbCBtYXJrZXItZW5kKQorICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBib2wpCisgICAg ICAgICAgICAgICAgICAoaW5zZXJ0IG5ldy10ZXh0KSkpCisgICAgICAgICAgICAgIChjbC1kZWNm IG51bSkpCisgICAgICAgICAgICAobWVzc2FnZSAiUmVudW1iZXJlZCAlZCBpdGVtcyIgY291bnQp KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIgKGl0ZW0p CisgICJSZXR1cm4gdGhlIG1hcmtlciBzdHJpbmcgZm9yIGEgbmV3IGl0ZW0gZm9sbG93aW5nIElU RU0uCitGb3IgdW5vcmRlcmVkIGl0ZW1zLCByZXVzZSB0aGUgc2FtZSBtYXJrZXIgY2hhcmFjdGVy LgorRm9yIG9yZGVyZWQgaXRlbXMsIGluY3JlbWVudCB0aGUgbnVtYmVyLiIKKyAgKGxldCogKCht YXJrZXIgKHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKQorICAgICAgICAgKHR5cGUgKHRyZWVz aXQtbm9kZS10eXBlIG1hcmtlcikpCisgICAgICAgICAoaW5kZW50IChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSkK KyAgICAgICAgICAgICAgICAgICAoY3VycmVudC1pbmRlbnRhdGlvbikpKQorICAgICAgICAgKHBy ZWZpeCAobWFrZS1zdHJpbmcgaW5kZW50ID9ccykpKQorICAgIChwY2FzZSB0eXBlCisgICAgICAo Imxpc3RfbWFya2VyX21pbnVzIiAoY29uY2F0IHByZWZpeCAiLSAiKSkKKyAgICAgICgibGlzdF9t YXJrZXJfcGx1cyIgIChjb25jYXQgcHJlZml4ICIrICIpKQorICAgICAgKCJsaXN0X21hcmtlcl9z dGFyIiAgKGNvbmNhdCBwcmVmaXggIiogIikpCisgICAgICAoImxpc3RfbWFya2VyX2RvdCIKKyAg ICAgICAobGV0ICgobnVtIChzdHJpbmctdG8tbnVtYmVyICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJr ZXIgdCkpKSkKKyAgICAgICAgIChjb25jYXQgcHJlZml4IChudW1iZXItdG8tc3RyaW5nICgxKyBu dW0pKSAiLiAiKSkpCisgICAgICAoImxpc3RfbWFya2VyX3BhcmVudGhlc2lzIgorICAgICAgIChs ZXQgKChudW0gKHN0cmluZy10by1udW1iZXIgKHRyZWVzaXQtbm9kZS10ZXh0IG1hcmtlciB0KSkp KQorICAgICAgICAgKGNvbmNhdCBwcmVmaXggKG51bWJlci10by1zdHJpbmcgKDErIG51bSkpICIp ICIpKSkKKyAgICAgIChfIChjb25jYXQgcHJlZml4ICItICIpKSkpKQorCisoZGVmdW4gbWFya2Rv d24tdHMtLW5ldy1tYXJrZXItZm9yLWxpbmUgKGl0ZW0pCisgICJSZXR1cm4gdGhlIG1hcmtlciBz dHJpbmcgZm9yIGEgbmV3IGl0ZW0gZm9sbG93aW5nIElURU0uCitXaGVuIHRoZSBjdXJyZW50IGxp bmUgaGFzIGEgbGlzdCBtYXJrZXIgcGF0dGVybiBhdCBhIGRpZmZlcmVudAoraW5kZW50YXRpb24g dGhhbiBJVEVNIChlLmcuLCBhIG5lc3RlZCBtYXJrZXIgdGhhdCB0aGUgZ3JhbW1hciBkaWQKK25v dCByZWNvZ25pemUgYXMgYSBsaXN0X2l0ZW0pLCB1c2UgdGhlIGN1cnJlbnQgbGluZSdzIG1hcmtl ci4KK090aGVyd2lzZSwgZmFsbCBiYWNrIHRvIGBtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1t YXJrZXInLiIKKyAgKGxldCAoKG1hcmtlci1ub2RlICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAw KSkpCisgICAgKGlmICg9IChsaW5lLW51bWJlci1hdC1wb3MpCisgICAgICAgICAgICAobGluZS1u dW1iZXItYXQtcG9zICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyLW5vZGUpKSkKKyAgICAgICAg OzsgSXRlbSdzIG1hcmtlciBpcyBvbiB0aGUgY3VycmVudCBsaW5lOiB1c2UgaXQgbm9ybWFsbHku CisgICAgICAgIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIgaXRlbSkKKyAgICAg IDs7IEl0ZW0ncyBtYXJrZXIgaXMgb24gYSBkaWZmZXJlbnQgbGluZS4gIFRoZSBwYXJzZXIgbWF5 IGhhdmUKKyAgICAgIDs7IGZhaWxlZCB0byByZWNvZ25pemUgYSBuZXN0ZWQgbWFya2VyIChlLmcu LCBhIGxvbmUgYCAgLSAnCisgICAgICA7OyBwYXJzZWQgYXMgYSBzZXRleHQgaGVhZGluZykuICBS ZWFkIHRoZSBjdXJyZW50IGxpbmUuCisgICAgICAobGV0ICgobGluZSAoYnVmZmVyLXN1YnN0cmlu Zy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0 aW9uKSAobGluZS1lbmQtcG9zaXRpb24pKSkpCisgICAgICAgIChpZiAoc3RyaW5nLW1hdGNoCisg ICAgICAgICAgICAgIlxcYFxcKFtbOmJsYW5rOl1dKlxcKVxcKFstKitdIFxcfFxcKFswLTldK1xc KVxcKFsuKV0gXFwpXFwpIgorICAgICAgICAgICAgIGxpbmUpCisgICAgICAgICAgICAobGV0ICgo aW5kZW50IChtYXRjaC1zdHJpbmcgMSBsaW5lKSkKKyAgICAgICAgICAgICAgICAgIChudW0gKG1h dGNoLXN0cmluZyAzIGxpbmUpKQorICAgICAgICAgICAgICAgICAgKHN1ZmZpeCAobWF0Y2gtc3Ry aW5nIDQgbGluZSkpCisgICAgICAgICAgICAgICAgICAodW5vcmRlcmVkIChtYXRjaC1zdHJpbmcg MiBsaW5lKSkpCisgICAgICAgICAgICAgIChpZiBudW0KKyAgICAgICAgICAgICAgICAgIChjb25j YXQgaW5kZW50IChudW1iZXItdG8tc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKDErIChzdHJpbmctdG8tbnVtYmVyIG51bSkpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICBzdWZmaXgpCisgICAgICAgICAgICAgICAgKGNvbmNhdCBpbmRlbnQgdW5vcmRlcmVkKSkp CisgICAgICAgICAgOzsgTm8gbWFya2VyIHBhdHRlcm4gb24gY3VycmVudCBsaW5lOiB1c2UgaXRl bSdzIG1hcmtlci4KKyAgICAgICAgICAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1uZXctbWFya2Vy IGl0ZW0pKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saW5lLWJsb2NrLXF1b3RlLWRlcHRo ICgmb3B0aW9uYWwgcG9zKQorICAiQ291bnQgdGhlIG51bWJlciBvZiBgPicgYmxvY2sgcXVvdGUg bWFya2VycyBvbiB0aGUgbGluZSBhdCBQT1MuIgorICAoc2F2ZS1leGN1cnNpb24KKyAgICAod2hl biBwb3MgKGdvdG8tY2hhciBwb3MpKQorICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAobGV0 ICgoY291bnQgMCkpCisgICAgICAod2hpbGUgKGFuZCAobm90IChlb2xwKSkKKyAgICAgICAgICAg ICAgICAgIChtZW1xIChjaGFyLWFmdGVyKSAnKD8+ID9ccyA/XHQpKSkKKyAgICAgICAgKHdoZW4g KGVxIChjaGFyLWFmdGVyKSA/PikKKyAgICAgICAgICAoc2V0cSBjb3VudCAoMSsgY291bnQpKSkK KyAgICAgICAgKGZvcndhcmQtY2hhciAxKSkKKyAgICAgIGNvdW50KSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy1uZXdsaW5lICgpCisgICJJbnNlcnQgYSBuZXdsaW5lLCBjb250aW51aW5nIHRoZSBj dXJyZW50IGNvbnRleHQuCitJbnNpZGUgYSBsaXN0IGl0ZW0sIHRoZSBuZXcgbGluZSBpcyBpbmRl bnRlZCB0byB0aGUgaXRlbSdzIHRleHQKK2NvbHVtbiBzbyB0aGUgcGFyYWdyYXBoIGNvbnRpbnVl cy4gIEEgc2Vjb25kIFJFVCBvbiBhIGJsYW5rCitjb250aW51YXRpb24gbGluZSByZW1vdmVzIHRo ZSBpbmRlbnRhdGlvbiwgZHJvcHBpbmcgcG9pbnQgdG8KK2NvbHVtbiAwIHNvIHRoZSB0cmVlLXNp dHRlciBncmFtbWFyIGVuZHMgdGhlIGxpc3QuCitJbnNpZGUgYSBibG9jayBxdW90ZSwgdGhlIG5l dyBsaW5lIGluY2x1ZGVzIHRoZSBxdW90ZSBwcmVmaXguCitPdGhlcndpc2UsIGluc2VydCBhIHBs YWluIG5ld2xpbmUuIgorICAoaW50ZXJhY3RpdmUpCisgIChsZXQqICgobm9kZSAodHJlZXNpdC1u b2RlLWF0CisgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0 aW9uKSAocG9pbnQpKQorICAgICAgICAgICAgICAgICdtYXJrZG93bikpCisgICAgICAgICA7OyBU cmVlLXNpdHRlciBtYXkgcmVwb3J0IGEgbm9kZSBpbnNpZGUgYSBibG9ja19xdW90ZSBldmVuCisg ICAgICAgICA7OyB3aGVuIHBvaW50IGlzIG9uIGEgYmxhbmsgbGluZSBwYXN0IHRoZSBxdW90ZSAo dGhlIG5vZGUKKyAgICAgICAgIDs7IHNwYW4gY2FuIGV4dGVuZCBiZXlvbmQgdGhlIGA+JyBsaW5l cykuICBPbmx5IHRyZWF0IHRoZQorICAgICAgICAgOzsgbGluZSBhcyBpbnNpZGUgYSBibG9jayBx dW90ZSBpZiBpdCBhY3R1YWxseSBzdGFydHMgd2l0aAorICAgICAgICAgOzsgYSBgPicgbWFya2Vy LgorICAgICAgICAgKGluLWJxIChhbmQgKHRyZWVzaXQtcGFyZW50LXVudGlsIG5vZGUgIlxcYGJs b2NrX3F1b3RlXFwnIikKKyAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAg ICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICAg ICAgICAgIChsb29raW5nLWF0LXAgIlsgXHRdKj4iKSkpKQorICAgICAgICAgKGl0ZW0gKG1hcmtk b3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpKSkKKyAgICAoY29uZAorICAgICAoaXRlbQorICAg ICAgKGxldCogKChjb2wgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4gaXRlbSkp CisgICAgICAgICAgICAgKGJxLXByZWZpeCAod2hlbiBpbi1icSAobWFya2Rvd24tdHMtLWJsb2Nr LXF1b3RlLXByZWZpeCkpKQorICAgICAgICAgICAgIDs7IGBjb2wnIGlzIHRoZSBhYnNvbHV0ZSBj b2x1bW4gb2YgdGhlIGl0ZW0ncyB0ZXh0LAorICAgICAgICAgICAgIDs7IHdoaWNoIGluc2lkZSBh IGJsb2NrIHF1b3RlIGluY2x1ZGVzIHRoZSAiPiAiIHByZWZpeAorICAgICAgICAgICAgIDs7IHdp ZHRoLiAgU2luY2Ugd2UgaW5zZXJ0IGBicS1wcmVmaXgnIHNlcGFyYXRlbHksIHdlCisgICAgICAg ICAgICAgOzsgbXVzdCBzdWJ0cmFjdCBpdHMgbGVuZ3RoIHRvIGF2b2lkIGRvdWJsaW5nIGl0Lgor ICAgICAgICAgICAgIChpbmRlbnQgKC0gY29sIChsZW5ndGggKG9yIGJxLXByZWZpeCAiIikpKSkK KyAgICAgICAgICAgICA7OyBUaGUgY3VycmVudCBsaW5lIGlzICJibGFuayIgaWYgaXQgY29udGFp bnMgb25seQorICAgICAgICAgICAgIDs7IHdoaXRlc3BhY2UgKG9yIHF1b3RlIHByZWZpeCArIHdo aXRlc3BhY2UpIGFuZCBubworICAgICAgICAgICAgIDs7IGFjdHVhbCB0ZXh0IGZyb20gYSBwcmV2 aW91cyBSRVQncyBjb250aW51YXRpb24gaW5kZW50LgorICAgICAgICAgICAgIChibGFuay1saW5l LXAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5p bmctb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQtcAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl5bPiBcdF0qJCIpKSkKKyAgICAgICAgICAg ICA7OyBQb2ludCBpcyBiZWZvcmUgdGhlIGl0ZW0ncyB0ZXh0IChhdCBvciBiZWZvcmUgdGhlCisg ICAgICAgICAgICAgOzsgbWFya2VyKS4gIEEgcGxhaW4gbmV3bGluZSBpcyBhcHByb3ByaWF0ZSBo ZXJlLCBhZGRpbmcKKyAgICAgICAgICAgICA7OyBjb250aW51YXRpb24gaW5kZW50IHdvdWxkIHNo aWZ0IHRoZSBleGlzdGluZyBjb250ZW50CisgICAgICAgICAgICAgOzsgdG8gdGhlIHJpZ2h0Lgor ICAgICAgICAgICAgIChiZWZvcmUtdGV4dC1wICg8PSAoY3VycmVudC1jb2x1bW4pIGNvbCkpKQor ICAgICAgICAoY29uZAorICAgICAgICAgKGJsYW5rLWxpbmUtcAorICAgICAgICAgIDs7IFRoZSB1 c2VyIHByZXNzZWQgUkVUIG9uIGFuIGFscmVhZHktYmxhbmsgY29udGludWF0aW9uCisgICAgICAg ICAgOzsgbGluZS4gIEluc3RlYWQgb2YgYWRkaW5nIHlldCBhbm90aGVyIGluZGVudGVkIGJsYW5r CisgICAgICAgICAgOzsgbGluZSwgcmVtb3ZlIHRoZSBpbmRlbnRhdGlvbiBhbmQgaW5zZXJ0IGEg cGxhaW4KKyAgICAgICAgICA7OyBuZXdsaW5lLiAgVGhpcyBkcm9wcyBwb2ludCB0byBjb2x1bW4g MCwgd2hpY2ggaXMgdGhlCisgICAgICAgICAgOzsgb25seSB3YXkgdGhlIHRyZWUtc2l0dGVyIG1h cmtkb3duIGdyYW1tYXIgZW5kcyBhIGxpc3Q6CisgICAgICAgICAgOzsgYmxhbmsgbGluZXMgYWxv bmUgZG8gTk9UIGVuZCBhIGxpc3QsIG9ubHkKKyAgICAgICAgICA7OyBub24taW5kZW50ZWQgY29u dGVudCBkb2VzLiAgU28gdGhpcyBnaXZlcyB0aGUgdXNlciBhCisgICAgICAgICAgOzsgbmF0dXJh bCAiUkVUIFJFVCB0byBleGl0IHRoZSBsaXN0IiB3b3JrZmxvdy4KKyAgICAgICAgICAoZGVsZXRl LXJlZ2lvbiAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikpCisg ICAgICAgICAgKG5ld2xpbmUpKQorICAgICAgICAgKGJlZm9yZS10ZXh0LXAKKyAgICAgICAgICA7 OyBQb2ludCBpcyBvbiBvciBiZWZvcmUgdGhlIGxpc3QgbWFya2VyOyBqdXN0IGluc2VydCBhCisg ICAgICAgICAgOzsgcGxhaW4gbmV3bGluZSBzbyB0aGUgaXRlbSBpcyBwdXNoZWQgZG93biB1bmNo YW5nZWQuCisgICAgICAgICAgKG5ld2xpbmUpKQorICAgICAgICAgKHQKKyAgICAgICAgICAoZGVs ZXRlLWhvcml6b250YWwtc3BhY2UpCisgICAgICAgICAgKG5ld2xpbmUpCisgICAgICAgICAgKHdo ZW4gYnEtcHJlZml4IChpbnNlcnQgYnEtcHJlZml4KSkKKyAgICAgICAgICAoaW5zZXJ0IChtYWtl LXN0cmluZyBpbmRlbnQgP1xzKSkpKSkpCisgICAgIChpbi1icQorICAgICAgKGxldCAoKGJxLXBy ZWZpeCAobWFya2Rvd24tdHMtLWJsb2NrLXF1b3RlLXByZWZpeCkpCisgICAgICAgICAgICA7OyBB IGxpbmUgd2l0aCBvbmx5IHF1b3RlIG1hcmtlcnMgYW5kIHdoaXRlc3BhY2UgKGUuZy4sCisgICAg ICAgICAgICA7OyAiPiAiKSBpcyAiYmxhbmsiIGluc2lkZSB0aGUgcXVvdGUuICBSRVQgaGVyZSBl eGl0cyB0aGUKKyAgICAgICAgICAgIDs7IHF1b3RlLCBzYW1lIGFzIFJFVCBvbiBhIGJsYW5rIGNv bnRpbnVhdGlvbiBsaW5lIGV4aXRzIGEKKyAgICAgICAgICAgIDs7IGxpc3Q6IHJlbW92ZSB0aGUg cHJlZml4IGFuZCBkcm9wIHRvIGNvbHVtbiAwLgorICAgICAgICAgICAgKGJsYW5rLWxpbmUtcCAo c2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9m LWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQtcCAiXls+IFx0 XSokIikpKSkKKyAgICAgICAgKGlmIGJsYW5rLWxpbmUtcAorICAgICAgICAgICAgKHByb2duCisg ICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxp bmUtZW5kLXBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgKG5ld2xpbmUpKQorICAgICAgICAgIChk ZWxldGUtaG9yaXpvbnRhbC1zcGFjZSkKKyAgICAgICAgICAobmV3bGluZSkKKyAgICAgICAgICAo aW5zZXJ0IGJxLXByZWZpeCkpKSkKKyAgICAgOzsgRGVmYXVsdDogcGxhaW4gbmV3bGluZS4gIFRo aXMgYWxzbyBoYW5kbGVzIGVtcHR5IGxpc3QgbWFya2VycworICAgICA7OyAoZS5nLiwgIi0gIiB3 aXRoIG5vIHRleHQpIHRoYXQgdGhlIGdyYW1tYXIgcGFyc2VzIGFzIEVSUk9SCisgICAgIDs7IG5v ZGVzIHJhdGhlciB0aGFuIGxpc3RfaXRlbSBub2Rlcy4KKyAgICAgOzsKKyAgICAgOzsgV2hlbiB0 aGUgY3VycmVudCBsaW5lIGlzIGJsYW5rICh3aGl0ZXNwYWNlIG9ubHkpLCBpdCBpcyBhCisgICAg IDs7IGNvbnRpbnVhdGlvbi1pbmRlbnQgbGluZSBsZWZ0IGJ5IGEgcHJldmlvdXMgUkVUIHRoYXQK KyAgICAgOzsgdHJlZS1zaXR0ZXIgbm8gbG9uZ2VyIGNvbnNpZGVycyBwYXJ0IG9mIGEgbGlzdF9p dGVtLiAgQ2xlYXIKKyAgICAgOzsgdGhlIHdoaXRlc3BhY2Ugc28gbm8gdHJhaWxpbmcgc3BhY2Vz IHJlbWFpbiwgYW5kIGluc2VydCBhCisgICAgIDs7IHBsYWluIG5ld2xpbmUgYXQgY29sdW1uIDAg dG8gZXhpdCB0aGUgbGlzdCBjb250ZXh0LgorICAgICAodAorICAgICAgKHdoZW4gKHNhdmUtZXhj dXJzaW9uCisgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAg KGxvb2tpbmctYXQtcCAiXlsgXHRdKyQiKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGxpbmUt YmVnaW5uaW5nLXBvc2l0aW9uKSAobGluZS1lbmQtcG9zaXRpb24pKSkKKyAgICAgIChuZXdsaW5l KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0gKCkKKyAgIkluc2Vy dCBhIG5ldyBsaXN0IGl0ZW0sIHNwbGl0dGluZyB0ZXh0IGF0IHBvaW50LgorVGV4dCBhZnRlciBw b2ludCBtb3ZlcyB0byB0aGUgbmV3IGl0ZW0uICBBdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSwK K2FuIGVtcHR5IGl0ZW0gaXMgaW5zZXJ0ZWQgYWJvdmUgYW5kIHRoZSBjdXJyZW50IGNvbnRlbnQg aXMgcHVzaGVkIGRvd24uCitJbnNpZGUgYSBibG9jayBxdW90ZSwgdGhlIG5ldyBsaW5lIGluY2x1 ZGVzIHRoZSBxdW90ZSBwcmVmaXguCitGb3Igb3JkZXJlZCBsaXN0cywgdGhlIG51bWJlciBpcyBp bmNyZW1lbnRlZC4KK1doZW4gbm90IGluc2lkZSBhIGxpc3QsIGZhbGwgYmFjayB0byBgbWFya2Rv d24tdHMtbmV3bGluZScuIgorICAoaW50ZXJhY3RpdmUpCisgIChsZXQqICgobm9kZSAodHJlZXNp dC1ub2RlLWF0CisgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVu dGF0aW9uKSAocG9pbnQpKQorICAgICAgICAgICAgICAgICdtYXJrZG93bikpCisgICAgICAgICAo aW4tYnEgKGFuZCAodHJlZXNpdC1wYXJlbnQtdW50aWwgbm9kZSAiXFxgYmxvY2tfcXVvdGVcXCci KQorICAgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAg ICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tp bmctYXQtcCAiWyBcdF0qPiIpKSkpCisgICAgICAgICAoYnEtcHJlZml4ICh3aGVuIGluLWJxICht YXJrZG93bi10cy0tYmxvY2stcXVvdGUtcHJlZml4KSkpCisgICAgICAgICAoaXRlbSAobWFya2Rv d24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpKQorICAgIChjb25kCisgICAgICgoYW5kIGl0ZW0K KyAgICAgICAgICAgKG9yIChub3QgaW4tYnEpCisgICAgICAgICAgICAgICAoPj0gKG1hcmtkb3du LXRzLS1saW5lLWJsb2NrLXF1b3RlLWRlcHRoKQorICAgICAgICAgICAgICAgICAgIChtYXJrZG93 bi10cy0tbGluZS1ibG9jay1xdW90ZS1kZXB0aAorICAgICAgICAgICAgICAgICAgICAodHJlZXNp dC1ub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAwKSkpKSkpCisgICAgICAobGV0 KiAoKG5ldy1tYXJrZXIgKG1hcmtkb3duLXRzLS1uZXctbWFya2VyLWZvci1saW5lIGl0ZW0pKQor ICAgICAgICAgICAgIChhdC1ib2wgKDw9IChjdXJyZW50LWNvbHVtbikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChi YWNrLXRvLWluZGVudGF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQt Y29sdW1uKSkpKQorICAgICAgICAgICAgICh0YWlsICh3aGVuIChhbmQgKG5vdCBhdC1ib2wpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChsb29raW5nLWF0LXAgIlsgXHRdKiQi KSkpCisgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWFuZC1leHRyYWN0LXJlZ2lvbgorICAg ICAgICAgICAgICAgICAgICAgIChwb2ludCkgKGxpbmUtZW5kLXBvc2l0aW9uKSkpKSkKKyAgICAg ICAgKGlmIGF0LWJvbAorICAgICAgICAgICAgOzsgQXQgQk9MOiBpbnNlcnQgZW1wdHkgaXRlbSBh Ym92ZSwgcHVzaCBjdXJyZW50IGxpbmUgZG93bi4KKyAgICAgICAgICAgIChwcm9nbgorICAgICAg ICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICh3aGVuIGJxLXByZWZp eCAoaW5zZXJ0IGJxLXByZWZpeCkpCisgICAgICAgICAgICAgIChpbnNlcnQgbmV3LW1hcmtlciAi XG4iKQorICAgICAgICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikpCisgICAgICAgICAgOzsg TWlkLWxpbmUgb3IgRU9MOiBuZXcgaXRlbSBiZWxvdyB3aXRoIHRhaWwgdGV4dC4KKyAgICAgICAg ICAoZGVsZXRlLWhvcml6b250YWwtc3BhY2UpCisgICAgICAgICAgKG5ld2xpbmUpCisgICAgICAg ICAgKHdoZW4gYnEtcHJlZml4IChpbnNlcnQgYnEtcHJlZml4KSkKKyAgICAgICAgICAoaW5zZXJ0 IG5ldy1tYXJrZXIpCisgICAgICAgICAgKHdoZW4gdGFpbCAoc2F2ZS1leGN1cnNpb24gKGluc2Vy dCAoc3RyaW5nLXRyaW0tbGVmdCB0YWlsKSkpKSkpKQorCisgICAgIDs7IE5vdCBpbiBhIGxpc3Q6 IGZhbGwgYmFjayB0byBuZXdsaW5lIGJlaGF2aW9yLgorICAgICAodCAobWFya2Rvd24tdHMtbmV3 bGluZSkpKSkpCisKKzs7OyBGaWxsaW5nOgorCis7OyBUT0RPOiBSZW1vdmUgdGhlIHBpcGVfdGFi bGUgYmxvY2sgaWYgd2UgaW1wbGVtZW50IHBpcGVfdGFibGUgZmlsbC4KKyhkZWZjb25zdCBtYXJr ZG93bi10cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5CisgICcoWyhmZW5jZWRfY29kZV9i bG9jaykgKGluZGVudGVkX2NvZGVfYmxvY2spIChwaXBlX3RhYmxlKV0gQGJsb2NrKQorICAiVHJl ZS1zaXR0ZXIgcXVlcnkgbWF0Y2hpbmcgYmxvY2tzIHdoZXJlIGZpbGxpbmcgaXMgaW5oaWJpdGVk LiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIChpdGVtKQor ICAiUmV0dXJuIHRoZSBjb2x1bW4gd2hlcmUgdGhlIHRleHQgb2YgbGlzdCBJVEVNIHN0YXJ0cy4K K1RoaXMgaXMgdGhlIGNvbHVtbiBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoIG5vZGUgaW5zaWRlIElU RU0sIG9yCit0aGUgd2lkdGggb2YgdGhlIGxpc3QgbWFya2VyIGlmIG5vIHBhcmFncmFwaCBpcyBm b3VuZC4iCisgIChsZXQgKChwYXJhZ3JhcGggKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgaXRlbSAi XFxgcGFyYWdyYXBoXFwnIikpKQorICAgIChpZiBwYXJhZ3JhcGgKKyAgICAgICAgKHNhdmUtZXhj dXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IHBhcmFncmFw aCkpCisgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkKKyAgICAgIChsZXQgKChtYXJrZXIgKHRy ZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKSkKKyAgICAgICAgKC0gKHRyZWVzaXQtbm9kZS1lbmQg bWFya2VyKQorICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpKSkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtbGlzdC1pdGVtIChpdGVtIGp1c3RpZnkpCisgICJGaWxs IHRoZSBjb250ZW50cyBvZiBsaXN0IElURU0sIHByZXNlcnZpbmcgaXRzIGluZGVudGF0aW9uLgor TmFycm93cyB0byBJVEVNJ3Mgb3duIHBhcmFncmFwaCBjb250ZW50IChleGNsdWRpbmcgbmVzdGVk IGxpc3RzKQorYW5kIHNldHMgYGZpbGwtcHJlZml4JyB0byBhbGlnbiBjb250aW51YXRpb24gbGlu ZXMgd2l0aCB0aGUgc3RhcnQKK29mIHRoZSBpdGVtJ3MgdGV4dC4gIEpVU1RJRlkgaXMgYXMgaW4g YGZpbGwtcGFyYWdyYXBoJy4iCisgIChsZXQqICgoZmlsbC1wcmVmaXggKG1ha2Utc3RyaW5nICht YXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgID9ccykpCisgICAgICAgICA7OyBGaW5kIHRoZSBpdGVtJ3Mgb3du IHBhcmFncmFwaCAoZmlyc3QgcGFyYWdyYXBoIGNoaWxkKS4KKyAgICAgICAgIDs7IElmIHRoZSBp dGVtIGhhcyBuZXN0ZWQgbGlzdHMsIG5hcnJvdyB0byBqdXN0IHRoZQorICAgICAgICAgOzsgcGFy YWdyYXBoIHNvIHdlIGRvbid0IG1lcmdlIG5lc3RlZCBpdGVtcy4KKyAgICAgICAgIChwYXJhICh0 cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIGl0ZW0gIlxcYHBhcmFncmFwaFxcJyIgbmlsIG5pbCAxKSkK KyAgICAgICAgIChiZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSkKKyAgICAgICAgIChlbmQg KGlmIHBhcmEKKyAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHBhcmEpCisgICAg ICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgaXRlbSkpKQorICAgICAgICAgOzsgVXNlIGRl ZmF1bHQgcGFyYWdyYXBoIG1vdGlvbiBpbnNpZGUgdGhlIG5hcnJvd2VkIHJlZ2lvbgorICAgICAg ICAgOzsgc28gdGhhdCB0aGUgaW5uZXIgYGZpbGwtcGFyYWdyYXBoJyBkb2VzIG5vdCByZS1lbnRl ciBvdXIKKyAgICAgICAgIDs7IGN1c3RvbSBwYXJhZ3JhcGgtZmluZGluZyBsb2dpYy4KKyAgICAg ICAgIChmaWxsLWZvcndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJhZ3JhcGgp KQorICAgIChzYXZlLXJlc3RyaWN0aW9uCisgICAgICAobmFycm93LXRvLXJlZ2lvbiBiZWcgZW5k KQorICAgICAgKGZpbGwtcGFyYWdyYXBoIGp1c3RpZnkpKQorICAgIDs7IFJldHVybiBub24tbmls IHRvIHNpZ25hbCB0aGF0IGZpbGxpbmcgaGFzIGJlZW4gaGFuZGxlZCwKKyAgICA7OyBhcyBwZXIg dGhlIGNvbnRyYWN0IG9mIGBmaWxsLXBhcmFncmFwaC1mdW5jdGlvbicuCisgICAgdCkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy0tYWRhcHRpdmUtZmlsbCAoKQorICAiUmV0dXJuIHRoZSBmaWxsIHBy ZWZpeCBmb3IgdGhlIGN1cnJlbnQgbGluZSBpbiBNYXJrZG93bi4KK1doZW4gaW5zaWRlIGEgbGlz dCBpdGVtLCByZXR1cm4gc3BhY2VzIG1hdGNoaW5nIHRoZSBjb2x1bW4gd2hlcmUKK3RoZSBpdGVt J3MgdGV4dCBzdGFydHMuIgorICAoYW5kLWxldCogKChub2RlICh0cmVlc2l0LW5vZGUtYXQKKyAg ICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAo cG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24pKQorICAgICAgICAgICAgIChp dGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1cXCciKSkpCisgICAg KG1ha2Utc3RyaW5nIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pID9c cykpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtZm9yd2FyZC1wYXJhZ3JhcGggKGFyZykK KyAgIk1vdmUgZm9yd2FyZCBieSBBUkcgcGFyYWdyYXBocywgcmVzcGVjdGluZyBNYXJrZG93biBz dHJ1Y3R1cmUuCitMaXN0IGl0ZW1zIGFyZSB0cmVhdGVkIGFzIGluZGl2aWR1YWwgcGFyYWdyYXBo cy4gIEJsb2NrcyBtYXRjaGVkCitieSBgbWFya2Rvd24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9j ay1xdWVyeScgYXJlIHNraXBwZWQ6IGJvdGgKK2ZvcndhcmQgYW5kIGJhY2t3YXJkIG1vdGlvbiBt b3ZlIHRvIHRoZSBlbmQgb2YgdGhlIGJsb2NrLCBzbworYGZpbGwtcmVnaW9uJyBzZWVzIGEgemVy by1sZW5ndGggcmVnaW9uIGFuZCBsZWF2ZXMgdGhlIGJsb2NrCit1bmZpbGxlZC4iCisgIChsZXQg KChkaXJlY3Rpb24gKGlmICg+IGFyZyAwKSAxIC0xKSkKKyAgICAgICAgKGNvdW50IChhYnMgYXJn KSkKKyAgICAgICAgKG1vdmVkIDApKQorICAgIChkb3RpbWVzIChfIGNvdW50KQorICAgICAgOzsg Rm9yIGJhY2t3YXJkIG1vdGlvbiwgc2tpcCBiYWNrIG92ZXIgd2hpdGVzcGFjZSB0byBmaW5kCisg ICAgICA7OyB0aGUgaXRlbSB3ZSBhcmUgbGVhdmluZywgbm90IHRoZSBuZXh0IG9uZS4KKyAgICAg IChsZXQqICgocG9zIChpZiAoPCBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgICAgICAgICAo c2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3 YXJkICIgXHRcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAobWF4IChwb2ludC1taW4pICgx LSAocG9pbnQpKSkpCisgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQorICAgICAgICAgICAg IChibG9jayAoY2FyICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rvd24pCisgICAgICAgICAgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1maWxsLXVuZmlsbGFibGUtYmxvY2stcXVlcnkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgcG9zICgxKyBwb3MpKSkpCisgICAgICAgICAgICAgKGlu ZGVudGVkLXBvcyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdvdG8tY2hhciBwb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWNrLXRvLWlu ZGVudGF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkKKyAgICAg ICAgICAgICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IGluZGVudGVkLXBvcyAnbWFya2Rvd24pKQor ICAgICAgICAgICAgIChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0 ZW1cXCciKSkpCisgICAgICAgIDs7IFdoZW4gbW92aW5nIGZvcndhcmQgZnJvbSB3aGl0ZXNwYWNl IGJldHdlZW4gbGlzdCBpdGVtcywKKyAgICAgICAgOzsgc2tpcCB0byB0aGUgbmV4dCBub24tYmxh bmsgcG9zaXRpb24gYW5kIGNoZWNrIGFnYWluLgorICAgICAgICAod2hlbiAoYW5kIChub3QgaXRl bSkgKG5vdCBibG9jaykgKD4gZGlyZWN0aW9uIDApKQorICAgICAgICAgIChsZXQgKChuZXh0LXBv cyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFy cy1mb3J3YXJkICIgXHRcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkp KQorICAgICAgICAgICAgKHNldHEgbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQtcG9zICdtYXJr ZG93bikpCisgICAgICAgICAgICAoc2V0cSBpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2Rl ICJcXGBsaXN0X2l0ZW1cXCciKSkpKQorICAgICAgICAoY29uZAorICAgICAgICAgOzsgSW5zaWRl IGFuIHVuZmlsbGFibGUgYmxvY2s6IHNraXAgb3ZlciBpdCBlbnRpcmVseS4KKyAgICAgICAgIChi bG9jaworICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgKGNkciBibG9jaykp KQorICAgICAgICAgIChzZXRxIG1vdmVkICgxKyBtb3ZlZCkpKQorICAgICAgICAgOzsgSW5zaWRl IGEgbGlzdCBpdGVtOiB0cmVhdCBhcyBwYXJhZ3JhcGggYm91bmRhcnkuCisgICAgICAgICAoaXRl bQorICAgICAgICAgIChpZiAoPiBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgKGdvdG8tY2hh ciAodHJlZXNpdC1ub2RlLWVuZCBpdGVtKSkKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVz aXQtbm9kZS1zdGFydCBpdGVtKSkpCisgICAgICAgICAgKHNldHEgbW92ZWQgKDErIG1vdmVkKSkp CisgICAgICAgICA7OyBEZWZhdWx0OiB1c2Ugc3RhbmRhcmQgcGFyYWdyYXBoIG1vdGlvbi4KKyAg ICAgICAgICh0CisgICAgICAgICAgKGZvcndhcmQtcGFyYWdyYXBoIGRpcmVjdGlvbikKKyAgICAg ICAgICAoc2V0cSBtb3ZlZCAoMSsgbW92ZWQpKSkpKSkKKyAgICA7OyBSZXR1cm4gdGhlIG51bWJl ciBvZiBwYXJhZ3JhcGhzIGxlZnQgdG8gbW92ZSAoMCA9IGFsbCBkb25lKS4KKyAgICAoLSBjb3Vu dCBtb3ZlZCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9u YWwganVzdGlmeSkKKyAgIkZpbGwgdGhlIGN1cnJlbnQgcGFyYWdyYXBoLCByZXNwZWN0aW5nIE1h cmtkb3duIGJsb2NrIHN0cnVjdHVyZS4KK1RoaXMgZnVuY3Rpb24gcHJldmVudHMgZmlsbGluZyBp bnNpZGUgYmxvY2tzIG1hdGNoZWQgYnkKK2BtYXJrZG93bi10cy0tZmlsbC11bmZpbGxhYmxlLWJs b2NrLXF1ZXJ5JywgYW5kIGZpbGxzIHdpdGhpbiBsaXN0CitpdGVtcyB3aXRob3V0IG1lcmdpbmcg YWRqYWNlbnQgaXRlbXMuICBKVVNUSUZZIGlzIGFzIGluCitgZmlsbC1wYXJhZ3JhcGgnLiIKKyAg KGNvbmQqCisgICA7OyBEb24ndCBmaWxsIGluc2lkZSB1bmZpbGxhYmxlIGJsb2Nrcy4gIFVzZSBh IHF1ZXJ5IGFnYWluc3QgdGhlCisgICA7OyByb290IG5vZGUgYmVjYXVzZSBgdHJlZXNpdC1ub2Rl LWF0JyBtYXkgbm90IHJldHVybiBhIG5vZGUKKyAgIDs7IGluc2lkZSB0aGUgYmxvY2sgd2hlbiBw b2ludCBpcyBvbiBhbm9ueW1vdXMgKHVubmFtZWQpIHRleHQuCisgICAoKHRyZWVzaXQtcXVlcnkt Y2FwdHVyZQorICAgICAodHJlZXNpdC1idWZmZXItcm9vdC1ub2RlICdtYXJrZG93bikKKyAgICAg bWFya2Rvd24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1xdWVyeQorICAgICAocG9pbnQpICht aW4gKDErIChwb2ludCkpIChwb2ludC1tYXgpKSkKKyAgICB0KQorICAgOzsgRmlsbCB3aXRoaW4g dGhlIGVuY2xvc2luZyBsaXN0IGl0ZW0uICBVc2UKKyAgIDs7IGBtYXJrZG93bi10cy0tbGlzdC1p dGVtLWF0LXBvaW50JyB3aGljaCBoYW5kbGVzIGJsb2NrIHF1b3RlCisgICA7OyBtYXJrZXJzLiAg V2hlbiB0aGUgbGlzdCBpdGVtIGlzIGluc2lkZSBhIGJsb2NrIHF1b3RlLCBkZWxlZ2F0ZQorICAg OzsgdG8gdGhlIGJsb2NrIHF1b3RlIGZpbGxlciB3aGljaCBoYW5kbGVzIGA+ICcgcHJlZml4ZXMg Y29ycmVjdGx5LgorICAgKChiaW5kLWFuZCogKGl0ZW0gKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0t YXQtcG9pbnQpKSkKKyAgICAoaWYgKHRyZWVzaXQtcGFyZW50LXVudGlsIGl0ZW0gIlxcYGJsb2Nr X3F1b3RlXFwnIikKKyAgICAgICAgKG1hcmtkb3duLXRzLS1maWxsLWJsb2NrLXF1b3RlIGp1c3Rp ZnkpCisgICAgICAobWFya2Rvd24tdHMtLWZpbGwtbGlzdC1pdGVtIGl0ZW0ganVzdGlmeSkpKQor ICAgOzsgUG9pbnQgaXMgb24gYSBibGFuayBsaW5lIGJlZm9yZSBhIGxpc3QuICBJZiB0aGUgbmV4 dAorICAgOzsgbm9uLXdoaXRlc3BhY2UgcG9zaXRpb24gZmFsbHMgaW5zaWRlIGEgbGlzdCBpdGVt LCBmaWxsIHRoYXQgaXRlbS4KKyAgICgoc2F2ZS1leGN1cnNpb24KKyAgICAgIChiZWdpbm5pbmct b2YtbGluZSkKKyAgICAgIChsb29raW5nLWF0LXAgIlsgXHRdKiQiKSkKKyAgICAoYW5kLWxldCog KChuZXh0LXBvcyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChz a2lwLWNoYXJzLWZvcndhcmQgIiBcdFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChw b2ludCkpKQorICAgICAgICAgICAgICAgKG5leHQtbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQt cG9zICdtYXJrZG93bikpCisgICAgICAgICAgICAgICAoaXRlbSAodHJlZXNpdC1wYXJlbnQtdW50 aWwKKyAgICAgICAgICAgICAgICAgICAgICBuZXh0LW5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkK KyAgICAgIChtYXJrZG93bi10cy0tZmlsbC1saXN0LWl0ZW0gaXRlbSBqdXN0aWZ5KSkpCisgICA7 OyBGaWxsIHdpdGhpbiBhIGJsb2NrIHF1b3RlLiAgTmFycm93IHRvIHRoZSBwYXJhZ3JhcGggbm9k ZSBhdAorICAgOzsgcG9pbnQncyBuZXN0aW5nIGxldmVsIHNvIGxpbmVzIHdpdGggZGlmZmVyZW50 IGA+ICcgZGVwdGhzCisgICA7OyBhcmUgbm90IG1lcmdlZC4KKyAgICgodHJlZXNpdC1wYXJlbnQt dW50aWwKKyAgICAgKHRyZWVzaXQtbm9kZS1hdAorICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNr LXRvLWluZGVudGF0aW9uKSAocG9pbnQpKQorICAgICAgJ21hcmtkb3duKQorICAgICAiXFxgYmxv Y2tfcXVvdGVcXCciKQorICAgIChtYXJrZG93bi10cy0tZmlsbC1ibG9jay1xdW90ZSBqdXN0aWZ5 KSkKKyAgIDs7IEZpbGwgd2l0aGluIGFuIEhUTUwgY29tbWVudC4gIFRoZSBub2RlIHR5cGUgaXMg Imh0bWxfYmxvY2siCisgICA7OyBpbiBncmFtbWFyIHYwLjQueCBhbmQgImNvbW1lbnQiIGluIHNv bWUgb3RoZXIgdmVyc2lvbnMuCisgICAoKGJpbmQtYW5kKiAoYmxvY2sgKGxldCAoKG4gKHRyZWVz aXQtbm9kZS1hdCAocG9pbnQpICdtYXJrZG93bikpKQorICAgICAgICAgICAgICAgICAgICAgICAg KG9yICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu ICJcXGBcXCg/Omh0bWxfYmxvY2tcXHxjb21tZW50XFwpXFwnIikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYW5kIChtZW1iZXIgKHRyZWVzaXQtbm9kZS10eXBlIG4pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoImh0bWxfYmxvY2siICJjb21tZW50Iikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKSkpKSkKKyAgICAobWFya2Rvd24t dHMtLWZpbGwtaHRtbC1jb21tZW50IGJsb2NrIGp1c3RpZnkpKQorICAgOzsgRGVmYXVsdDogbGV0 IGZpbGwtcGFyYWdyYXBoIGhhbmRsZSBpdC4KKyAgICh0IG5pbCkpKQorCisoZGVmdW4gbWFya2Rv d24tdHMtLWZpbGwtaHRtbC1jb21tZW50IChub2RlIGp1c3RpZnkpCisgICJGaWxsIEhUTUwgY29t bWVudCBOT0RFLCBhbGlnbmluZyBjb250aW51YXRpb24gbGluZXMuCitSZXR1cm4gdCBpZiBOT0RF IGlzIGEgY29tbWVudCBhbmQgd2FzIGZpbGxlZCwgbmlsIG90aGVyd2lzZS4KK0pVU1RJRlkgaXMg YXMgaW4gYGZpbGwtcGFyYWdyYXBoJy4iCisgICh3aGVuIChzYXZlLWV4Y3Vyc2lvbgorICAgICAg ICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgICAobG9v a2luZy1hdC1wICI8IS0tIikpCisgICAgKGxldCAoKGZpbGwtcHJlZml4IChzYXZlLWV4Y3Vyc2lv bgorICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFy dCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgKCsgKGN1cnJl bnQtY29sdW1uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVu Z3RoICI8IS0tICIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHMp KSkKKyAgICAgICAgICAoYWRhcHRpdmUtZmlsbC1mdW5jdGlvbiBuaWwpCisgICAgICAgICAgKGZp bGwtZm9yd2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24gIydmb3J3YXJkLXBhcmFncmFwaCkKKyAgICAg ICAgICAoZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24gbmlsKSkKKyAgICAgIChzYXZlLXJlc3RyaWN0 aW9uCisgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAg ICAgIChmaWxsLXBhcmFncmFwaCBqdXN0aWZ5KSkKKyAgICAgIHQpKSkKKworKGRlZnVuIG1hcmtk b3duLXRzLS1ibG9jay1xdW90ZS1wcmVmaXggKCkKKyAgIlJldHVybiB0aGUgYmxvY2sgcXVvdGUg cHJlZml4IHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxpbmUuCitSZWFkIHRoZSBhY3R1YWwgYD4n IG1hcmtlcnMgKHdpdGggd2hhdGV2ZXIgc3BhY2luZyB0aGUgdXNlciB3cm90ZSkKK2Zyb20gdGhl IGJlZ2lubmluZyBvZiB0aGUgbGluZSBzbyB0aGF0IGZpbGwgcHJlc2VydmVzIHRoZSBleGlzdGlu Zworc3R5bGUgKGUuZy4sIGA+Pj4gJyBzdGF5cyBgPj4+ICcsIGA+ID4gPiAnIHN0YXlzIGA+ID4g PiAnKS4iCisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAo aWYgKGxvb2tpbmctYXQgIlxcKFs+IFx0XSo+XFwpWyBcdF0qIikKKyAgICAgICAgKGNvbmNhdCAo bWF0Y2gtc3RyaW5nIDApKQorICAgICAgIj4gIikpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZp bGwtYmxvY2stcXVvdGUgKGp1c3RpZnkpCisgICJGaWxsIHRoZSBwYXJhZ3JhcGggYXQgcG9pbnQg aW5zaWRlIGEgYmxvY2sgcXVvdGUuCitGaW5kIHRoZSBwYXJhZ3JhcGggbm9kZSBhdCBwb2ludCB3 aXRoaW4gdGhlIGJsb2NrIHF1b3RlIGFuZCBmaWxsCitvbmx5IHRoYXQgcGFyYWdyYXBoLCBwcmVz ZXJ2aW5nIHRoZSBgPiAnIHByZWZpeC4gIFdoZW4gdGhlCitwYXJhZ3JhcGggaXMgaW5zaWRlIGEg bGlzdCBpdGVtLCBhbGlnbiBjb250aW51YXRpb24gbGluZXMgd2l0aAordGhlIGl0ZW0ncyB0ZXh0 IGNvbHVtbi4gIEpVU1RJRlkgaXMgYXMgaW4gYGZpbGwtcGFyYWdyYXBoJy4iCisgIDs7IFNraXAg cGFzdCBgPiAnIG1hcmtlcnMgYW5kIGFueSBsaXN0IG1hcmtlciB0byBsYW5kIGluc2lkZSB0aGUK KyAgOzsgY29udGVudCwgd2hlcmUgdGhlIHBhcmFncmFwaCBub2RlIGxpdmVzLgorICAobGV0KiAo KGNvbnRlbnQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgKGJl Z2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9y d2FyZCAiPiBcdCIpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB3ZSBsYW5kIG9uIGEg bGlzdCBtYXJrZXIsIHNraXAgcGFzdCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICh3aGVu IChsb29raW5nLWF0ICJbLSorXSBcXHxbMC05XStbLildXHMiKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpKQorICAgICAgICAgICAgICAgICAgICAg ICAgKG1pbiAoMSsgKHBvaW50KSkgKHBvaW50LW1heCkpKSkKKyAgICAgICAgIChub2RlICh0cmVl c2l0LW5vZGUtYXQgY29udGVudC1wb3MgJ21hcmtkb3duKSkKKyAgICAgICAgIChwYXJhICh0cmVl c2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgIG5vZGUgKGxhbWJkYSAobikKKyAgICAg ICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAicGFyYWdyYXBo IikpKSkpCisgICAgKHdoZW4gcGFyYQorICAgICAgOzsgVGhlIGdyYW1tYXIgbWF5IGluY2x1ZGUg dHJhaWxpbmcgYmxvY2tfY29udGludWF0aW9uIG5vZGVzCisgICAgICA7OyAoYmxhbmsgYD4gPicg bGluZXMpIGFzIGNoaWxkcmVuIG9mIHRoZSBwYXJhZ3JhcGguICBVc2UgdGhlCisgICAgICA7OyBl bmQgb2YgdGhlIGxhc3QgaW5saW5lIGNoaWxkIHNvIGZpbGwgZG9lcyBub3QgbWVyZ2UgYWNyb3Nz CisgICAgICA7OyB3aGF0IHNob3VsZCBiZSBhIHBhcmFncmFwaCBib3VuZGFyeS4KKyAgICAgIChs ZXQqICgobGFzdC1pbmxpbmUKKyAgICAgICAgICAgICAgKHNlcS1maW5kIChsYW1iZGEgKGNoaWxk KQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNo aWxkKSAiaW5saW5lIikpCisgICAgICAgICAgICAgICAgICAgICAgICAocmV2ZXJzZSAodHJlZXNp dC1ub2RlLWNoaWxkcmVuIHBhcmEpKSkpCisgICAgICAgICAgICAgKHBhcmEtZW5kIChpZiBsYXN0 LWlubGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbGFz dC1pbmxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgcGFy YSkpKQorICAgICAgICAgICAgIChicS1wcmVmaXggKG1hcmtkb3duLXRzLS1ibG9jay1xdW90ZS1w cmVmaXgpKQorICAgICAgICAgICAgIDs7IFdoZW4gaW5zaWRlIGEgbGlzdCBpdGVtLCBleHRlbmQg dGhlIHByZWZpeCB3aXRoIHNwYWNlcworICAgICAgICAgICAgIDs7IHNvIGNvbnRpbnVhdGlvbiBs aW5lcyBhbGlnbiB3aXRoIHRoZSBpdGVtJ3MgdGV4dC4KKyAgICAgICAgICAgICAobGlzdC1pdGVt ICh0cmVlc2l0LXBhcmVudC11bnRpbCBwYXJhICJcXGBsaXN0X2l0ZW1cXCciKSkKKyAgICAgICAg ICAgICAocHJlZml4IChpZiBsaXN0LWl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0 KiAoKHRleHQtY29sIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1pdGVtKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGV4dHJhIChtYXggMCAoLSB0ZXh0LWNvbCAobGVuZ3Ro IGJxLXByZWZpeCkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGJxLXBy ZWZpeCAobWFrZS1zdHJpbmcgZXh0cmEgP1xzKSkpCisgICAgICAgICAgICAgICAgICAgICAgIGJx LXByZWZpeCkpCisgICAgICAgICAgICAgKGFkYXB0aXZlLWZpbGwtZnVuY3Rpb24gbmlsKQorICAg ICAgICAgICAgIChmaWxsLWZvcndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJh Z3JhcGgpCisgICAgICAgICAgICAgKGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uIG5pbCkpCisgICAg ICAgIChzYXZlLXJlc3RyaWN0aW9uCisgICAgICAgICAgOzsgTmFycm93IHRvIHRoZSBmdWxsIGxp bmVzIG9mIHRoZSBwYXJhZ3JhcGggc28gdGhhdCB0aGUKKyAgICAgICAgICA7OyBgPiAnIG1hcmtl cnMgYXJlIGluY2x1ZGVkIGluIHRoZSBmaWxsIHJlZ2lvbi4KKyAgICAgICAgICAobmFycm93LXRv LXJlZ2lvbgorICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAoZ290by1j aGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgcGFyYSkpCisgICAgICAgICAgICAgKGJlZ2lubmluZy1v Zi1saW5lKQorICAgICAgICAgICAgIChwb2ludCkpCisgICAgICAgICAgIHBhcmEtZW5kKQorICAg ICAgICAgIChsZXQgKChmaWxsLXByZWZpeCBwcmVmaXgpKQorICAgICAgICAgICAgKGZpbGwtcGFy YWdyYXBoIGp1c3RpZnkpKSkpKSkKKyAgdCkKKworOzs7IENvZGUgYmxvY2tzOgorCisoZGVmdmFy LWxvY2FsIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcyBuaWwKKyAgIkFsaXN0IG1h cHBpbmcgbGFuZ3VhZ2Ugbm9kZSBuYW1lcyB0byB0cyBsYW5ndWFnZS4KK0lmIGEgbGFuZ3VhZ2Ug aXMgbm90IGEgdHMgbGFuZ3VhZ2Ugb3IgaXMgbm90IG1hcHBlZCB0byBvbmUsIGl0IHdpbGwgYmUK K2luIGBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMnLiIpCisKKyhkZWZ2YXIt bG9jYWwgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzIG5pbAorICAiQWxpc3Qg bWFwcGluZyBsYW5ndWFnZXMgdG8gbm9uLXRyZWUtc2l0dGVyIG1vZGVzIGZvciBjb2RlIGJsb2Nr cy4KK1BvcHVsYXRlZCBieSBgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UnIHRv IGlkZW50aWZ5IGEKK2NvZGUtYmxvY2sgbGFuZ3VhZ2UgbW9kZSB3aGljaCBpcyBub3QgYSB0cmVl LXNpdHRlciBtb2RlIG9yIGZvciB3aGljaAordGhlIHRyZWUtc2l0dGVyIGdyYW1tYXIgaXMgdW5h dmFpbGFibGUuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1oYXJ2ZXN0LW1vZGUtdHJlZXNpdC1j b25maWd1cmF0aW9uIChtb2RlKQorICAiSGFydmVzdCB0cmVlLXNpdHRlciBjb25maWd1cmF0aW9u IGZyb20gTU9ERS4KK1JldHVybiBhIHBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGFuZCB2 YWx1ZXM6CiAKICAgICA6Zm9udC1sb2NrIChmcm9tIGB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5n cycpCiAgICAgOnNpbXBsZS1pbmRlbnQgKGZyb20gYHRyZWVzaXQtc2ltcGxlLWluZGVudC1ydWxl cycpCiAgICAgOnJhbmdlIChmcm9tIGB0cmVlc2l0LXJhbmdlLXNldHRpbmdzJykiCi0gICh3aXRo LXRlbXAtYnVmZmVyCi0gICAgKGZ1bmNhbGwgbW9kZSkKLSAgICAobGlzdCA6Zm9udC1sb2NrIHRy ZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICh3aXRoLXdvcmstYnVmZmVyCisgICAgKG1hcmtk b3duLXRzLS1pbmhpYml0LW1lc3NhZ2VzLWFuZC13YXJuaW5ncworICAgICAgJ21hcmtkb3duLXRz LWluaGliaXQtY29kZS1ibG9jay1tb2RlLXdhcm5pbmdzCisgICAgICAoZGVsYXktbW9kZS1ob29r cyAoZnVuY2FsbCBtb2RlKSkpCisgICAgKGxpc3QgOmxhbmd1YWdlICh0cmVlc2l0LWxhbmd1YWdl LWF0IChwb2ludC1taW4pKQorICAgICAgICAgIDpmb250LWxvY2sgdHJlZXNpdC1mb250LWxvY2st c2V0dGluZ3MKICAgICAgICAgICA6c2ltcGxlLWluZGVudCB0cmVlc2l0LXNpbXBsZS1pbmRlbnQt cnVsZXMKICAgICAgICAgICA6cmFuZ2UgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncykpKQogCi0oZGVm dW4gbWFya2Rvd24tdHMtLWFkZC1jb25maWctZm9yLW1vZGUgKGxhbmd1YWdlIG1vZGUpCi0gICJB ZGQgY29uZmlndXJhdGlvbnMgZm9yIExBTkdVQUdFIGZyb20gTU9ERSB0byBjdXJyZW50IGJ1ZmZl ci4KLQotQ29uZmlndXJhdGlvbiBpbmNsdWRlcyBmb250LWxvY2sgYW5kIGluZGVudC4gIEZvciBm b250LWxvY2sgcnVsZXMsIHVzZQotdGhlIHNhbWUgZmVhdHVyZXMgZW5hYmxlZCBpbiBNT0RFLiIK LSAgKGxldCAoKGNvbmZpZ3MgKG1hcmtkb3duLXRzLS1oYXJ2ZXN0LXRyZWVzaXQtY29uZmlncyBt b2RlKSkpCi0gICAgKGlnbm9yZSBsYW5ndWFnZSkgOyBXZSBtaWdodCBtYWtlIHVzZSBvZiB0aGlz IGxhdGVyLgotICAgIChzZXRxIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAg KGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAgOzsg R2V0IGFsbCB0aGUgZm9udC1sb2NrIHNldHRpbmdzLCBpbmNsdWRpbmcgb25lcyB0aGF0Ci0gICAg ICAgICAgICAgICAgICA7OyBkb24ndCBwZXJ0YWluIHRvIExBTkdVQUdFLiAgVGhpcyB3YXkgd2Ug Z2V0IGpzZG9jCi0gICAgICAgICAgICAgICAgICA7OyBmcm9tIGpzLXRzLW1vZGUsIGZvciBleGFt cGxlLgotICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWdzIDpmb250LWxvY2spKSkK LSAgICAoc2V0cSB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMKLSAgICAgICAgICAoYXBwZW5k IHRyZWVzaXQtc2ltcGxlLWluZGVudC1ydWxlcwotICAgICAgICAgICAgICAgICAgOzsgU2ltaWxh cmx5LCBnZXQgYWxsIGluZGVudCBydWxlcy4KLSAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQg Y29uZmlncyA6c2ltcGxlLWluZGVudCkpKQorKGRlZnVuIG1hcmtkb3duLXRzLS1jb25maWd1cmUt Y3VycmVudC1idWZmZXIgKGNvbmZpZ3VyYXRpb24pCisgICJBZGQgQ09ORklHVVJBVElPTiB0byB0 aGUgY3VycmVudCBidWZmZXIuCitDT05GSUdVUkFUSU9OIGluY2x1ZGVzIGZvbnQtbG9jayBhbmQg aW5kZW50IHJ1bGVzLiAgRm9yIGZvbnQtbG9jayBydWxlcywKK3VzZSB0aGUgc2FtZSBmZWF0dXJl cyBlbmFibGVkIGluIE1PREUuIgorICAoc2V0cSB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwor ICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAg ICAgOzsgR2V0IGFsbCB0aGUgZm9udC1sb2NrIHNldHRpbmdzLCBpbmNsdWRpbmcgb25lcyB0aGF0 CisgICAgICAgICAgICAgICAgOzsgZG9uJ3QgcGVydGFpbiB0byBNT0RFLiAgVGhpcyB3YXksIHdl IGdldCBqc2RvYworICAgICAgICAgICAgICAgIDs7IGZyb20ganMtdHMtbW9kZSwgZm9yIGV4YW1w bGUuCisgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWd1cmF0aW9uIDpmb250LWxvY2sp KSkKKyAgKHNldHEgdHJlZXNpdC1zaW1wbGUtaW5kZW50LXJ1bGVzCisgICAgICAgIChhcHBlbmQg dHJlZXNpdC1zaW1wbGUtaW5kZW50LXJ1bGVzCisgICAgICAgICAgICAgICAgOzsgU2ltaWxhcmx5 LCBnZXQgYWxsIGluZGVudCBydWxlcy4KKyAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZp Z3VyYXRpb24gOnNpbXBsZS1pbmRlbnQpKSkKICAgICAoc2V0cSB0cmVlc2l0LXJhbmdlLXNldHRp bmdzCiAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCiAgICAgICAgICAg ICAgICAgICA7OyBGaWx0ZXIgb3V0IGZ1bmN0aW9uIHF1ZXJpZXMsIGJlY2F1c2UgdGhleSBhcmUK QEAgLTMwMiw0NSArMjY1MywxOTQ2IEBAIG1hcmtkb3duLXRzLS1hZGQtY29uZmlnLWZvci1tb2Rl CiAgICAgICAgICAgICAgICAgICA7OyBDYXNlIGluIHBvaW50OiBjLXRzLW1vZGUncyByYW5nZSBz ZXR0aW5nLgogICAgICAgICAgICAgICAgICAgKHNlcS1maWx0ZXIgKGxhbWJkYSAoc2V0dGluZykK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZnVuY3Rpb25wIChjYXIgc2V0 dGluZykpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgY29uZmln cyA6cmFuZ2UpKSkpCi0gICAgKHNldHEtbG9jYWwgaW5kZW50LWxpbmUtZnVuY3Rpb24gIyd0cmVl c2l0LWluZGVudCkKLSAgICAoc2V0cS1sb2NhbCBpbmRlbnQtcmVnaW9uLWZ1bmN0aW9uICMndHJl ZXNpdC1pbmRlbnQtcmVnaW9uKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxp c3QtZ2V0IGNvbmZpZ3VyYXRpb24gOnJhbmdlKSkpKQorICAoc2V0cS1sb2NhbCBpbmRlbnQtbGlu ZS1mdW5jdGlvbiAjJ3RyZWVzaXQtaW5kZW50KQorICAoc2V0cS1sb2NhbCBpbmRlbnQtcmVnaW9u LWZ1bmN0aW9uICMndHJlZXNpdC1pbmRlbnQtcmVnaW9uKSkKIAotKGRlZnVuIG1hcmtkb3duLXRz LS1jb252ZXJ0LWNvZGUtYmxvY2stbGFuZ3VhZ2UgKG5vZGUpCisoZGVmdW4gbWFya2Rvd24tdHMt LWxhbmd1YWdlLWF0LW5vZGUgKG5vZGUpCisgICJSZXR1cm4gdGhlIGxhbmd1YWdlIHN5bWJvbCBm b3IgY29kZV9mZW5jZV9jb250ZW50IE5PREUuIgorICAod2hlbi1sZXQqICgocGFyZW50ICh0cmVl c2l0LW5vZGUtcGFyZW50IG5vZGUpKQorICAgICAgICAgICAgICAobGFuZy1ub2RlICh3aGVuIHBh cmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUg cGFyZW50ICJcXGBsYW5ndWFnZVxcJyIpKSkpCisgICAgKGludGVybiAodHJlZXNpdC1ub2RlLXRl eHQgbGFuZy1ub2RlIHQpKSkpCisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLW5vbi10cy1m b250aWZ5LWNhY2hlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVhbCkKKyAgIkNhY2hlIGZv ciBub24tdHJlZS1zaXR0ZXIgY29kZSBibG9jayBmb250aWZpY2F0aW9uLgorS2V5cyBhcmUgKExB TkcgLiBDT05URU5ULUhBU0gpIGNvbnMgY2VsbHMsIHZhbHVlcyBhcmUgbGlzdHMgb2YKK1woT0ZG U0VULVNUQVJUIE9GRlNFVC1FTkQgRkFDRSkgdHJpcGxlcy4iKQorCisoZGVmdmFyLWxvY2FsIG1h cmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZS10aWNrIG5pbAorICAiRm9yIGJsdW50IGBi dWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaycgY2FjaGUgaW52YWxpZGF0aW9uLiIpCisKKyhkZWZ1 biBtYXJrZG93bi10cy0tZm9udGlmeS1ub24tdHMtY29kZS1ibG9jayAobm9kZSBvdmVycmlkZSBz dGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgY29kZV9mZW5jZV9jb250ZW50IE5PREUgdXNp bmcgYSBub24tdHJlZS1zaXR0ZXIgbW9kZS4KK0FwcGx5IHRoZSBjb2RlLWJsb2NrIG1vZGUncyBj b252ZW50aW9uYWwgZm9udC1sb2NrIGluIGEgdGVtcG9yYXJ5CitidWZmZXIuICBPVkVSUklERSwg U1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdp dGgtb3ZlcnJpZGUnLgorCitDYWNoZSByZXN1bHRzIHRvIGF2b2lkIGZvbnRpZmljYXRpb24gb2Yg dW5jaGFuZ2VkIGNvZGUgYmxvY2tzLgorCitOT0RFIHNob3VsZCBhbHJlYWR5IGhhdmUgcGFzc2Vk IHRocm91Z2gKK2BtYXJrZG93bi10cy0tY29kZS1ibG9jay10cy1sYW5ndWFnZScgd2hpY2ggbWF5 IGhhdmUgY2xhc3NpZmllZCB0aGlzCitub2RlIGFzIGEgbm9uLXRzIG1vZGUuIgorICAod2hlbi1s ZXQqICgoXyBtYXJrZG93bi10cy1mb250aWZ5LWNvZGUtYmxvY2tzLW5hdGl2ZWx5KQorICAgICAg ICAgICAgICAobGFuZyAobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUgbm9kZSkpCisgICAg ICAgICAgICAgIChtb2RlIChhbGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1u b24tdHMtbW9kZXMpKQorICAgICAgICAgICAgICAodGljayAoYnVmZmVyLWNoYXJzLW1vZGlmaWVk LXRpY2spKQorICAgICAgICAgICAgICAoYmxvY2stc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBu b2RlKSkKKyAgICAgICAgICAgICAgOzsgQ2Fubm90IHVzZSBtYXJrZXJzICdtYXJrZG93bi10cy1j b2RlLWJlZy1tYXJrZXIKKyAgICAgICAgICAgICAgOzsgJ21hcmtkb3duLXRzLWNvZGUtZW5kLW1h cmtlciB0aGV5IGFyZSBzZXQgYWZ0ZXIgdGhpcworICAgICAgICAgICAgICA7OyBmdW5jdGlvbiBy dW5zLgorICAgICAgICAgICAgICAobm9kZS1zdGFydCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkp CisgICAgICAgICAgICAgIChub2RlLWVuZCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgIChwb2ludCkpKSkKKyAgICAod2hlbiAoPiBub2RlLWVuZCBub2RlLXN0 YXJ0KQorICAgICAgKHVubGVzcyAoZXEgdGljayBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnkt Y2FjaGUtdGljaykKKyAgICAgICAgKGNscmhhc2ggbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5 LWNhY2hlKSkKKyAgICAgIChsZXQqICgoY2FjaGUta2V5IChjb25zIGxhbmcgKHNlY3VyZS1oYXNo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMjU2CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpIG5vZGUtc3RhcnQgbm9k ZS1lbmQpKSkKKyAgICAgICAgICAgICAocHJvcHMKKyAgICAgICAgICAgICAgKG9yIChnZXRoYXNo IGNhY2hlLWtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLW5vbi10 cy1mb250aWZ5LWNhY2hlKQorICAgICAgICAgICAgICAgICAgKGxldCAoKHJlc3VsdAorICAgICAg ICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0tZm9udGlmeS1ub24tdHMtY29sbGVjdC1m YWNlcworICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlIG5vZGUtc3RhcnQgbm9kZS1lbmQp KSkKKyAgICAgICAgICAgICAgICAgICAgKHB1dGhhc2ggY2FjaGUta2V5IHJlc3VsdAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUp CisgICAgICAgICAgICAgICAgICAgIChzZXRxIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1j YWNoZS10aWNrIHRpY2spCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkpKSkKKyAgICAgICAg KGRvbGlzdCAocmFuZ2UgcHJvcHMpCisgICAgICAgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92 ZXJyaWRlCisgICAgICAgICAgIChudGggMCByYW5nZSkKKyAgICAgICAgICAgKG50aCAxIHJhbmdl KQorICAgICAgICAgICAobnRoIDIgcmFuZ2UpCisgICAgICAgICAgIG92ZXJyaWRlIHN0YXJ0IGVu ZCkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbm9uLXRzLWNvbGxlY3QtZmFj ZXMgKG1vZGUgYmVnIGVuZCkKKyAgIlJ1biBNT0RFIG9uIHRoZSBCRUcuLkVORCByZWdpb24ncyB0 ZXh0IGFuZCBoYXJ2ZXN0IGZhY2UgcHJvcGVydGllcy4KK1JldHVybiBhIGxpc3Qgb2YgKEJVRi1C RUcgQlVGLUVORCBGQUNFKSB0cmlwbGVzIGluIGJhc2UtYnVmZmVyCitjb29yZGluYXRlcy4KKwor Rm9yIG5vbi10cmVlLXNpdHRlciBtb2RlcyB1c2UgYW4gaW5kaXJlY3QgYnVmZmVyIG5hcnJvd2Vk IHRvIEJFRy4uRU5EOgorcmVnZXgvc3ludGFjdGljIGZvbnQtbG9jayBob25vcnMgbmFycm93aW5n IGFuZCB0aGUgaW5kaXJlY3QgYnVmZmVyCitzaGFyZXMgdGV4dCB3aXRoIHRoZSBiYXNlLCBzbyB0 aGlzIGlzIGxlc3MgZXhwZW5zaXZlIGFuZCBjb3B5LWZyZWUuCisKK0ZvciB0cyBtb2RlcyBpbiBg bWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMnLCBmYWxsCiti YWNrIHRvIGEgdGVtcCBidWZmZXIuICBBIHBhcnNlciBjcmVhdGVkIGluIHRoZSBzb3VyY2UgYnVm ZmVyIGRvZXMgbm90CityZWFjdCB0byBuYXJyb3dpbmcgaW4gYW4gaW5kaXJlY3QgYnVmZmVyIGRl cml2ZWQgZnJvbSBpdCAob25seSBwYXJzZXJzCitjcmVhdGVkIGluIHRoYXQgaW5kaXJlY3QgYnVm ZmVyIHdvdWxkIGhvbm9yIGl0cyBuYXJyb3dpbmcpLCBzbyByZXVzaW5nCit0aGUgaG9zdCBwYXJz ZXIgdmlhIGFuIGluZGlyZWN0IGJ1ZmZlciBpcyBub3QgYW4gb3B0aW9uIGhlcmUuICBBbmQgaW4K K3RoZSBob3N0IGJ1ZmZlciBpdHNlbGYsIHRoZSBpbm5lciBjb250ZW50IG9mIGEgZmVuY2VkIGNv ZGUgYmxvY2sgaXMKK2p1c3Qgb3BhcXVlIHRleHQgaW5zaWRlIGEgYGNvZGVfZmVuY2VfY29udGVu dCcgbm9kZSwgbmV2ZXIgcmUtcGFyc2VkCithcyBhIGZyZXNoIGRvY3VtZW50LiAgQSB0ZW1wIGJ1 ZmZlciB3aXRoIGEgZnJlc2ggcGFyc2VyIHNlZXMgdGhlIGlubmVyCitjb250ZW50IGFzIGEgc3Rh bmRhbG9uZSBtYXJrZG93biBkb2N1bWVudCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LiIKKyAgKGNv bmQgKChtZW1xIG1vZGUgbWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwt bW9kZXMpCisgICAgICAgICAobGV0ICgoY29udGVudCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9w ZXJ0aWVzIGJlZyBlbmQpKQorICAgICAgICAgICAgICAgcmVzKQorICAgICAgICAgICAod2l0aC13 b3JrLWJ1ZmZlcgorICAgICAgICAgICAgIChpbnNlcnQgY29udGVudCkKKyAgICAgICAgICAgICAo bWFya2Rvd24tdHMtLWluaGliaXQtbWVzc2FnZXMtYW5kLXdhcm5pbmdzCisgICAgICAgICAgICAg ICAnbWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MKKyAgICAgICAg ICAgICAgIChkZWxheS1tb2RlLWhvb2tzCisgICAgICAgICAgICAgICAgIChsZXQgKChtYXJrZG93 bi10cy0tc2V0LXVwLWlubGluZSB0KSkKKyAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMt bW9kZSkpKSkKKyAgICAgICAgICAgICAoZm9udC1sb2NrLWVuc3VyZSkKKyAgICAgICAgICAgICAo bGV0ICgocG9zIChwb2ludC1taW4pKSkKKyAgICAgICAgICAgICAgICh3aGlsZSAoPCBwb3MgKHBv aW50LW1heCkpCisgICAgICAgICAgICAgICAgIChsZXQgKChuZXh0IChuZXh0LXNpbmdsZS1wcm9w ZXJ0eS1jaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyAnZmFjZSBuaWwg KHBvaW50LW1heCkpKQorICAgICAgICAgICAgICAgICAgICAgICAoZmFjZSAoZ2V0LXRleHQtcHJv cGVydHkgcG9zICdmYWNlKSkpCisgICAgICAgICAgICAgICAgICAgKHdoZW4gZmFjZQorICAgICAg ICAgICAgICAgICAgICAgOzsgVHJhbnNsYXRlIHRlbXAtYnVmZmVyIG9mZnNldHMgYmFjayB0byBi YXNlLWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgOzsgcG9zaXRpb25zOiB0ZW1wIGBwb2lu dC1taW4nIGNvcnJlc3BvbmRzIHRvIEJFRy4KKyAgICAgICAgICAgICAgICAgICAgIChwdXNoIChs aXN0ICgrIGJlZyAoMS0gcG9zKSkgKCsgYmVnICgxLSBuZXh0KSkgZmFjZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlcykpCisgICAgICAgICAgICAgICAgICAgKHNldHEgcG9zIG5leHQp KSkpKQorICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpCisgICAgICAgICh0CisgICAgICAgICAo bGV0ICgoaW5kaXJlY3QtYnVmZmVyIChtYWtlLWluZGlyZWN0LWJ1ZmZlcgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGdlbmVyYXRlLW5ldy1idWZmZXItbmFtZSAoYnVmZmVyLW5hbWUpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsICdpbmhpYml0LWJ1ZmZlci1ob29r cykpCisgICAgICAgICAgICAgICByZXMpCisgICAgICAgICAgICh1bndpbmQtcHJvdGVjdAorICAg ICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgaW5kaXJlY3QtYnVmZmVyCisgICAgICAg ICAgICAgICAgIChtYXJrZG93bi10cy0taW5oaWJpdC1tZXNzYWdlcy1hbmQtd2FybmluZ3MKKyAg ICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2Fy bmluZ3MKKyAgICAgICAgICAgICAgICAgICAoZGVsYXktbW9kZS1ob29rcyAoZnVuY2FsbCBtb2Rl KSkpCisgICAgICAgICAgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uIGJlZyBlbmQpCisgICAgICAg ICAgICAgICAgIChmb250LWxvY2stZW5zdXJlKQorICAgICAgICAgICAgICAgICAobGV0ICgocG9z IChwb2ludC1taW4pKSkKKyAgICAgICAgICAgICAgICAgICAod2hpbGUgKDwgcG9zIChwb2ludC1t YXgpKQorICAgICAgICAgICAgICAgICAgICAgKGxldCAoKG5leHQgKG5leHQtc2luZ2xlLXByb3Bl cnR5LWNoYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyAnZmFjZSBu aWwgKHBvaW50LW1heCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhY2UgKGdldC10 ZXh0LXByb3BlcnR5IHBvcyAnZmFjZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBm YWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgcG9zIG5leHQgZmFjZSkg cmVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgcG9zIG5leHQpKSkpKQorICAgICAg ICAgICAgIChraWxsLWJ1ZmZlciBpbmRpcmVjdC1idWZmZXIpKQorICAgICAgICAgICAobnJldmVy c2UgcmVzKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1v ZGUgKGxhbmcpCisgICJDb21wdXRlIGFuZCBjYWNoZSBhIG1vZGUgc3ltYm9sIGZyb20gTEFORywg YSBzeW1ib2wuCitDb25zdWx0IHRoZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcycgY2Fj aGUsIG9yIGNvbnN1bHQKK2B0cmVlc2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QnIGFuZCBgbWFq b3ItbW9kZS1yZW1hcC1hbGlzdCcsIG9yIGJydXRlCitmb3JjZSBtb2RlIHByb2JlLiAgUmV0dXJu IGEgdmFsaWQgbW9kZSBzeW1ib2wgb3IgbmlsLiIKKyAgKGlmLWxldCogKChtYXBwZWQtbW9kZSAo Y2FyIChhbGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKSkpKQorICAg ICAgbWFwcGVkLW1vZGUKKyAgICAobGV0KiAoKGxhbmctc3RyaW5nIChzeW1ib2wtbmFtZSBsYW5n KSkKKyAgICAgICAgICAgKGxhbmctbW9kZSAoY29uY2F0IGxhbmctc3RyaW5nICItbW9kZSIpKQor ICAgICAgICAgICAobW9kZSkpCisgICAgICAoaWYgKHNldHEgbW9kZSAoYWxpc3QtZ2V0IGxhbmct bW9kZSB0cmVlc2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QpKQorICAgICAgICAgIG1vZGUKKyAg ICAgICAgKGlmIChzZXRxIG1vZGUgKGFsaXN0LWdldCBsYW5nLW1vZGUgbWFqb3ItbW9kZS1yZW1h cC1hbGlzdCkpCisgICAgICAgICAgICBtb2RlCisgICAgICAgICAgKGNhdGNoIDptb2RlCisgICAg ICAgICAgICAoZG9saXN0IChtb2RlCisgICAgICAgICAgICAgICAgICAgICAobGlzdAorICAgICAg ICAgICAgICAgICAgICAgIDs7IFRyeSBhIHRyZWVzaXQgbW9kZSB1c2luZyB0aGUgcmF3IHN0cmlu Zy4KKyAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGxhbmctc3RyaW5nICItdHMtbW9kZSIp CisgICAgICAgICAgICAgICAgICAgICAgOzsgVHJ5IGEgY29udmVudGlvbmFsIG1vZGUgdXNpbmcg dGhlIHJhdyBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgbGFuZy1tb2RlCisgICAgICAg ICAgICAgICAgICAgICAgOzsgVHJ5IGEgdHJlZXNpdCBtb2RlIHVzaW5nIHRoZSBkb3duY2FzZWQg c3RyaW5nLgorICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgKGRvd25jYXNlIGxhbmctc3Ry aW5nKSAiLXRzLW1vZGUiKQorICAgICAgICAgICAgICAgICAgICAgIDs7IFRyeSBhIGNvbnZlbnRp b25hbCBtb2RlIHVzaW5nIHRoZSBkb3duY2FzZWQgc3RyaW5nLgorICAgICAgICAgICAgICAgICAg ICAgIChjb25jYXQgKGRvd25jYXNlIGxhbmctc3RyaW5nKSAiLW1vZGUiKSkpCisgICAgICAgICAg ICAgIChzZXRxIG1vZGUgKGludGVybiBtb2RlKSkKKyAgICAgICAgICAgICAgKHdoZW4gKGZib3Vu ZHAgbW9kZSkKKyAgICAgICAgICAgICAgICAocHVzaCAobGlzdCBsYW5nIG1vZGUpIG1hcmtkb3du LXRzLWNvZGUtYmxvY2stbW9kZXMpCisgICAgICAgICAgICAgICAgKHRocm93IDptb2RlIG1vZGUp KSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLXRzLWxhbmd1YWdlIChu b2RlKQogICAiQ29udmVydCBOT0RFIHRvIGEgbGFuZ3VhZ2UgZm9yIHRoZSBjb2RlIGJsb2NrLiIK LSAgKGxldCogKChsYW5nLXN0cmluZyAoYWxpc3QtZ2V0ICh0cmVlc2l0LW5vZGUtdGV4dCBub2Rl KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLWNvZGUtYmxv Y2stbGFuZ3VhZ2UtbWFwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNp dC1ub2RlLXRleHQgbm9kZSkgbmlsICMnZXF1YWwpKQotICAgICAgICAgKGxhbmcgKGlmIChzeW1i b2xwIGxhbmctc3RyaW5nKQotICAgICAgICAgICAgICAgICAgIGxhbmctc3RyaW5nCi0gICAgICAg ICAgICAgICAgIChpbnRlcm4gKGRvd25jYXNlIGxhbmctc3RyaW5nKSkpKSkKLSAgICA7OyBGSVhN RTogS2luZCBvZiBhIGhhY2sgaGVyZTogd2UgdXNlIHRoaXMgZnVuY3Rpb24gYXMgYSBob29rIGZv cgotICAgIDs7IGxvYWRpbmcgdXAgY29uZmlncyBmb3IgdGhlIGxhbmd1YWdlIGZvciB0aGUgY29k ZSBibG9jayBvbi1kZW1hbmQuCi0gICAgKGxldCAoKG1vZGUgKGFsaXN0LWdldCBsYW5nIG1hcmtk b3duLXRzLWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwKSkpCi0gICAgICA7OyBJZiB0aGVyZSdz IG5vIHN1cHBvcnRlZCBtb2RlIGZvciB0aGUgbGFuZ3VhZ2UsIHJldHVybiBuaWwsCi0gICAgICA7 OyB3aGljaCBtYWtlcyBFbWFjcyBza2lwIHRoZSBjb2RlIGJsb2NrLgotICAgICAgKGlmIChub3Qg KGFuZCBtb2RlIChmYm91bmRwIG1vZGUpKSkKLSAgICAgICAgICBuaWwKLSAgICAgICAgOzsgSWYg dGhlcmUncyBhIG1ham9yIG1vZGUgZm9yIHRoZSBsYW5ndWFnZSwgc2V0IHVwIHRoZSBjb25maWcK LSAgICAgICAgOzsgYW5kIHJldHVybiB0aGUgbGFuZ3VhZ2UuCi0gICAgICAgICh3aGVuIChub3Qg KG1lbXEgbGFuZyBtYXJrZG93bi10cy0tY29uZmlndXJlZC1sYW5ndWFnZXMpKQotICAgICAgICAg IChtYXJrZG93bi10cy0tYWRkLWNvbmZpZy1mb3ItbW9kZSBsYW5nIG1vZGUpCi0gICAgICAgICAg KHB1c2ggbGFuZyBtYXJrZG93bi10cy0tY29uZmlndXJlZC1sYW5ndWFnZXMpKQotICAgICAgICBs YW5nKSkpKQorICAobGV0KiAoKGxhbmcgKGludGVybiAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSkp KQorICAgICAgICAgKG1vZGUgKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUg bGFuZykpCisgICAgICAgICAodHMtbGFuZ3VhZ2UgKGFsaXN0LWdldCBsYW5nIG1hcmtkb3duLXRz LS1jb2RlLWJsb2NrLWxhbmd1YWdlcykpCisgICAgICAgICAobm9uLXRzLWxhbmd1YWdlIChhbGlz dC1nZXQgbGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKSkKKyAgICAo Y29uZAorICAgICAoKGZib3VuZHAgbW9kZSkKKyAgICAgIChjb25kCisgICAgICAgOzsgUmV0dXJu IGtub3duIHRyZWVzaXQgbGFuZ3VhZ2UuCisgICAgICAgKHRzLWxhbmd1YWdlIHRzLWxhbmd1YWdl KQorICAgICAgIDs7IFJldHVybiBuaWwgZm9yIGtub3duIG5vbi10cmVlc2l0IGxhbmd1YWdlIGZv ciBmb250LWxvY2suCisgICAgICAgKG5vbi10cy1sYW5ndWFnZSBuaWwpCisgICAgICAgOzsgTWFy a2Rvd24gaXRzZWxmIG5lZWRzIHR3byBwYXJzZXJzIChtYXJrZG93biArCisgICAgICAgOzsgbWFy a2Rvd24taW5saW5lKSwgc28gdHJlZXNpdCBlbWJlZGRpbmcgKHdoaWNoIGNyZWF0ZXMgb25seQor ICAgICAgIDs7IG9uZSkgY2Fubm90IGZ1bGx5IGZvbnRpZnkgaXQuICBSb3V0ZSB0aHJvdWdoIHRo ZSBub24tdHMKKyAgICAgICA7OyBwYXRoIHNvIHRoZSB0ZW1wIGJ1ZmZlciBydW5zIHRoZSBmdWxs IG1vZGUgd2l0aCBib3RoCisgICAgICAgOzsgcGFyc2Vycy4KKyAgICAgICAoKHByb3ZpZGVkLW1v ZGUtZGVyaXZlZC1wIG1vZGUgJ21hcmtkb3duLXRzLW1vZGUpCisgICAgICAgICh1bmxlc3MgKGFz c3EgbGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpCisgICAgICAgICAg KHB1c2ggKGNvbnMgbGFuZyBtb2RlKSBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9k ZXMpKQorICAgICAgICBuaWwpCisgICAgICAgKHQKKyAgICAgICAgKGxldCogKChjb25maWd1cmF0 aW9uIChtYXJrZG93bi10cy0taGFydmVzdC1tb2RlLXRyZWVzaXQtY29uZmlndXJhdGlvbgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUpKQorICAgICAgICAgICAgICAgKHRzLWxh bmd1YWdlIChwbGlzdC1nZXQgY29uZmlndXJhdGlvbiA6bGFuZ3VhZ2UpKSkKKyAgICAgICAgICAo Y29uZAorICAgICAgICAgICAoKGFuZCB0cy1sYW5ndWFnZQorICAgICAgICAgICAgICAgICAocGxp c3QtZ2V0IGNvbmZpZ3VyYXRpb24gOmZvbnQtbG9jaykpCisgICAgICAgICAgICAobWFya2Rvd24t dHMtLWNvbmZpZ3VyZS1jdXJyZW50LWJ1ZmZlciBjb25maWd1cmF0aW9uKQorICAgICAgICAgICAg KHVubGVzcyAoYXNzcSBsYW5nIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcykKKyAg ICAgICAgICAgICAgKHB1c2ggKGNvbnMgbGFuZyB0cy1sYW5ndWFnZSkgbWFya2Rvd24tdHMtLWNv ZGUtYmxvY2stbGFuZ3VhZ2VzKSkKKyAgICAgICAgICAgIHRzLWxhbmd1YWdlKQorICAgICAgICAg ICA7OyBPdGhlcndpc2UsIGNsYXNzaWZ5IG1vZGUgYXMgbm9uLXRyZWUtc2l0dGVyLgorICAgICAg ICAgICAodAorICAgICAgICAgICAgKHVubGVzcyAoYXNzcSBsYW5nIG1hcmtkb3duLXRzLS1jb2Rl LWJsb2NrLW5vbi10cy1tb2RlcykKKyAgICAgICAgICAgICAgKHB1c2ggKGNvbnMgbGFuZyBtb2Rl KSBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKQorICAgICAgICAgICAgbmls KSkpKSkpCisgICAgICh0IG5pbCkpKSkKKworOzs7IENvZGUgYmxvY2sgbWlub3IgbW9kZSBzdXBw b3J0IGFuZCBjb2RlLWJsb2NrIGNvbnRleHQgY29tbWFuZHM6CisKKyhkZWZ2YXIgbWFya2Rvd24t dHMtY29kZS1ibG9jay1jb21tYW5kcyAnKGluZGVudC1mb3ItdGFiLWNvbW1hbmQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZWN0cmljLW5ld2xpbmUtYW5kLW1h eWJlLWluZGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t cGxldGlvbi1hdC1wb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmV3bGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t bWVudC1kd2ltCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21t ZW50LWxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1l bnQtb3ItdW5jb21tZW50LXJlZ2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stZmlsbC1wYXJhZ3JhcGgKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ctZmlsbC1yZWluZGVudC1kZWZ1 bikKKyAgIkNvbW1hbmRzIHRvIGV4ZWN1dGUgaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQuCitTZWUg YG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4iKQorCisoZGVmdmFyIG1h cmtkb3duLXRzLWNvZGUtYmxvY2stdGhpbmctY29tbWFuZHMgJyh4cmVmLWZpbmQtZGVmaW5pdGlv bnMpCisgICJDb21tYW5kcyB0aGF0IG5lZWQgYSBcInRoaW5nXCIgYXQgcG9pbnQgaW4gYSBjb2Rl LWJsb2NrIGNvbnRleHQuCitTZWUgYG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJs b2NrJy4iKQorCisoZGVmdmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stcmVnaW9uLWNvbW1hbmRz ICcoY29tbWVudC1vci11bmNvbW1lbnQtcmVnaW9uKQorICAiQ29tbWFuZHMgdGhhdCBuZWVkIGEg cmVnaW9uIGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorU2VlIGBtYXJrZG93bi10cy0tcnVuLWNv bW1hbmQtaW4tY29kZS1ibG9jaycuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1lbmFibGUtY29k ZS1ibG9jay1pbi1jb250ZXh0LW1vZGUgKCkKKyAgIkVuYWJsZSBgbWFya2Rvd24tdHMtY29kZS1i bG9jay1pbi1jb250ZXh0LW1vZGUnIGlmIGluIGEgZmVuY2VkIGNvZGUgYmxvY2suIgorICAobWFy a2Rvd24tdHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUKKyAgIChpZiAobWFya2Rvd24tdHMt YXQtY29kZS1ibG9jay1wKSAxIC0xKSkpCisKKzs7IE5PVEU6IERvIG5vdCBhZGQgdGhpcyBjb21t YW5kIHRvIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzJy4KKyhkZWZ1biBtYXJrZG93 bi10cy0tY29kZS1ibG9jay1uZXdsaW5lICgmb3B0aW9uYWwgYXJnIGludGVyYWN0aXZlKQorICAi SW5zZXJ0IGEgbmV3bGluZSwgYW5kIG1vdmUgdG8gbGVmdCBtYXJnaW4gb2YgdGhlIG5ldyBsaW5l LgorV2l0aCBwcmVmaXggYXJndW1lbnQgQVJHLCBpbnNlcnQgdGhhdCBtYW55IG5ld2xpbmVzLgor CitJZiBgZWxlY3RyaWMtaW5kZW50LW1vZGUnIGlzIGVuYWJsZWQsIHRoaXMgaW5kZW50cyB0aGUg ZmluYWwgbmV3IGxpbmUKK3RoYXQgaXQgYWRkcywgYW5kIHJlaW5kZW50cyB0aGUgcHJlY2VkaW5n IGxpbmUuICBUbyBqdXN0IGluc2VydAorYSBuZXdsaW5lLCB1c2UgXFxbZWxlY3RyaWMtaW5kZW50 LWp1c3QtbmV3bGluZV0uCisKK0lmIGBhdXRvLWZpbGwtbW9kZScgaXMgZW5hYmxlZCwgdGhpcyBt YXkgY2F1c2UgYXV0b21hdGljIGxpbmUKK2JyZWFraW5nIG9mIHRoZSBwcmVjZWRpbmcgbGluZS4g IEEgbm9uLW5pbCBBUkcgaW5oaWJpdHMgdGhpcy4KKworSWYgdmFyaWFibGUgYHVzZS1oYXJkLW5l d2xpbmVzJyBpcyBlbmFibGVkLCB0aGUgbmV3bGluZSBpcyBtYXJrZWQgd2l0aAordGhlIHRleHQt cHJvcGVydHkgYGhhcmQnLgorCitBIG5vbi1uaWwgSU5URVJBQ1RJVkUgYXJndW1lbnQgbWVhbnMg dG8gcnVuIHRoZSBgcG9zdC1zZWxmLWluc2VydC1ob29rJy4iCisgIChpbnRlcmFjdGl2ZSAiKlBc bnAiKQorICAoaWYtbGV0KiAoKGJsb2NrLW1vZGUgKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9k ZS1hdCkpCisgICAgICAgICAgICAoKGZib3VuZHAgYmxvY2stbW9kZSkpKQorICAgICAgKG1hcmtk b3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrIGJsb2NrLW1vZGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ25ld2xpbmUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZSkKKyAgICAoZnVuY2FsbC1p bnRlcmFjdGl2ZWx5ICMnbmV3bGluZSBhcmcgaW50ZXJhY3RpdmUpKSkKKworKGRlZnVuIG1hcmtk b3duLXRzLS1jb2RlLWJsb2NrLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9uYWwganVzdGlmeSkKKyAg IlJlZmlsbCBvciByZWluZGVudCB0aGUgbWFya2Rvd24gY29udGVudCB0aGF0IGNvbnRhaW5zIHBv aW50LgorSWYgdGhlIHBvaW50IGlzIGluIGEgc3RyaW5nIG9yIGEgY29tbWVudCwgZmlsbCB0aGUg cGFyYWdyYXBoIHRoYXQKK2NvbnRhaW5zIHBvaW50IG9yIGZvbGxvd3MgcG9pbnQuCisKK090aGVy d2lzZSwgcmVpbmRlbnQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gdGhhdCBjb250YWlucyBwb2lu dCBvcgorZm9sbG93cyBwb2ludC4KKworSWYgSlVTVElGWSBpcyBub24tbmlsIChpbnRlcmFjdGl2 ZWx5LCB3aXRoIHByZWZpeCBhcmd1bWVudCksIGp1c3RpZnkgYXMKK3dlbGwuIgorICAoaW50ZXJh Y3RpdmUgIlAiKQorICAoY29uZCAoKGRlcml2ZWQtbW9kZS1wICdwcm9nLW1vZGUpCisgICAgICAg ICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICMncHJvZy1maWxsLXJlaW5kZW50LWRlZnVuIGp1c3RpZnkp KQorICAgICAgICAodAorICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2ZpbGwtcGFyYWdy YXBoIGp1c3RpZnkpKSkpCisKKzs7IE5PVEU6IERvIG5vdCBhZGQgdGhpcyBjb21tYW5kIHRvIGBt YXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzJy4KKyhkZWZ1biBtYXJrZG93bi10cy0tY29k ZS1ibG9jay14cmVmLWZpbmQtZGVmaW5pdGlvbnMgKCZyZXN0IGFyZ3MpCisgICJIZWxwZXIgY29t bWFuZCBmb3IgYHhyZWYtZmluZC1kZWZpbml0aW9ucycgaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQu CitGaW5kIHRoaW5nIGF0IHBvaW50LgorQWRqdXN0IHRoZSByZWZlcmVuY2VzIG9uIHRoZSB4cmVm IHN0YWNrIHRvIHRoZSBiYXNlIGJ1ZmZlci4KK1Bhc3MgdGhyb3VnaCBBUkdTIGlmIG5vdCBpbiBh IGNvZGUgYmxvY2sgd2l0aCBhbiBhdmFpbGFibGUgbW9kZS4iCisgIChpbnRlcmFjdGl2ZSkKKyAg KGlmLWxldCogKChibG9jay1tb2RlIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtYXQpKQor ICAgICAgICAgICAgKChmYm91bmRwIGJsb2NrLW1vZGUpKSkKKyAgICAgIChjb25kaXRpb24tY2Fz ZSBlcnIKKyAgICAgICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgICAgICAgKHByb2duCisg ICAgICAgICAgICAgICAgOzsgUmVjb3JkIGEgcGxhY2Vob2xkZXIgeHJlZiBtYXJrZXIgaW4gdGhl IGJhc2UgYnVmZmVyLiAgVGhpcworICAgICAgICAgICAgICAgIDs7IHdpbGwgYmUgcmV0YWluZWQg aWYgdGhlIGNvbW1hbmQgc3VjY2VlZHMgdG8gcHVzaCBhIG1hcmtlciBpbgorICAgICAgICAgICAg ICAgIDs7IHRoZSBjb2RlLWJsb2NrIGJ1ZmZlciB3aGljaCB3ZSB3aWxsIHBvcC4KKyAgICAgICAg ICAgICAgICAoeHJlZi1wdXNoLW1hcmtlci1zdGFjaykKKyAgICAgICAgICAgICAgICA7OyBgeHJl Zi1maW5kLWRlZmluaXRpb25zJyBpcyBhIHRoaW5nIGNvbW1hbmQgaW4KKyAgICAgICAgICAgICAg ICA7OyBgbWFya2Rvd24tdHMtY29kZS1ibG9jay10aGluZy1jb21tYW5kcycuCisgICAgICAgICAg ICAgICAgKG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrIGJsb2NrLW1vZGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Iyd4cmVmLWZpbmQtZGVmaW5pdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXJncykpCisgICAgICAgICAgICA7OyBQb3AgdGhlIHRv cCB4cmVmIG1hcmtlci4gIElmIHRoZSBjb21tYW5kIHN1Y2NlZWRlZCwgdGhlCisgICAgICAgICAg ICA7OyB0b3AgbWFya2VyIHdpbGwgYmUgdGhlIGNvZGUtYmxvY2sgYnVmZmVyIG1hcmtlci4gIElm IGl0CisgICAgICAgICAgICA7OyBmYWlsZWQsIHdlJ2xsIHBvcCB0aGUgcGxhY2Vob2xkZXIgd2hp Y2ggaXMgbm93IG9mIG5vCisgICAgICAgICAgICA7OyB2YWx1ZS4KKyAgICAgICAgICAgIDs7IFRP RE86IFByb3Bvc2UgYW4gYHhyZWYnIHBvcCBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgImdvCisgICAg ICAgICAgICA7OyBiYWNrIi4KKyAgICAgICAgICAgIChsZXQgKChoaXN0b3J5ICh4cmVmLS1nZXQt aGlzdG9yeSkpKQorICAgICAgICAgICAgICAodW5sZXNzIChudWxsIChjYXIgaGlzdG9yeSkpCisg ICAgICAgICAgICAgICAgKHBvcCAoY2FyIGhpc3RvcnkpKSkpKQorICAgICAgICAoZXJyb3IKKyAg ICAgICAgIDs7IFByb3BhZ2F0ZSB0aGUgc2lnbmFsLgorICAgICAgICAgKHNpZ25hbCAoY2FyIGVy cikgKGNkciBlcnIpKSkpCisgICAgOzsgTm90IGluIGEgY29kZSBibG9jayBjb250ZXh0LiAgVGhp cyBzaG91bGQgcmVhbGx5IG5ldmVyIGhhcHBlbi4KKyAgICAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 ICMneHJlZi1maW5kLWRlZmluaXRpb25zIGFyZ3MpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1t YXliZS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrICgpCisgICJIZWxwZXIgZnVuY3Rpb24gdG8g d3JhcCBhIGNvbW1hbmQgZm9yIGEgY29kZS1ibG9jayBjb250ZXh0LgorSWYgYHRoaXMtY29tbWFu ZCcgaXMgYSBtZW1iZXIgb2YgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFuZHMnIGFuZAor cG9pbnQgaXMgd2l0aGluIGEgY29kZSBibG9jayB3aXRoIGFuIGF2YWlsYWJsZSBtb2RlLCBpdCB3 aWxsIHJ1biBpbiB0aGF0Citjb2RlIGJsb2NrJ3MgbW9kZSBpbiBhIGJ1ZmZlciBuYXJyb3dlZCB0 byBpdHMgY29udGVudC4gIE90aGVyd2lzZSwgdGhlCitjb21tYW5kIHdpbGwgcnVuIGluIHRoZSBj b250ZXh0IG9mIHRoZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVyLiIKKyAgKHdoZW4gKG1lbXEg dGhpcy1jb21tYW5kIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFuZHMpCisgICAgKHdoZW4t bGV0KiAoKGNvbW1hbmQgdGhpcy1jb21tYW5kKQorICAgICAgICAgICAgICAgIChibG9jay1tb2Rl IChtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtYXQpKQorICAgICAgICAgICAgICAgICgoZmJv dW5kcCBibG9jay1tb2RlKSkpCisgICAgICAoc2V0cSB0aGlzLWNvbW1hbmQgKGxhbWJkYSAoJnJl c3QgYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ21hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1p bi1jb2RlLWJsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stbW9k ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhcmdzKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t cnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jayAoYmxvY2stbW9kZSBjb21tYW5kICZyZXN0IGFyZ3Mp CisgICJSdW4gQ09NTUFORCBpbiBCTE9DSy1NT0RFLgorQVJHUyBhcmUgY2FwdHVyZWQgYnkgYG1h cmtkb3duLXRzLS1tYXliZS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4iCisgICh3aGVuLWxl dCogKChiZWcgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ21hcmtkb3duLXRzLWNvZGUtYmVn LW1hcmtlcikpCisgICAgICAgICAgICAgIChlbmQgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkg J21hcmtkb3duLXRzLWNvZGUtZW5kLW1hcmtlcikpCisgICAgICAgICAgICAgIChzdHIgKGJ1ZmZl ci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkpCisgICAgOzsgVXNlIGEgdGVtcCAo b3Igd29yaykgYnVmZmVyIGJlY2F1c2UgdHJlZXNpdCBjdXJyZW50bHkgY29uZnVzZXMKKyAgICA7 OyBub2RlcyBpbiBhbiBpbmRpcmVjdCBidWZmZXIgZXZlbiBpZiB0aGUgaW5kaXJlY3QgYnVmZmVy IGlzIG5vdAorICAgIDs7IG5hcnJvd2VkLgorICAgIChsZXQqICgodGVtcC1kZWFjdGl2YXRlLW1h cmspCisgICAgICAgICAgIChvcmlnLXBvaW50IChwb2ludCkpCisgICAgICAgICAgIChvcmlnLW1h cmsgKG1hcmsgdCkpCisgICAgICAgICAgIChvcmlnLW1hcmstYWN0aXZlIG1hcmstYWN0aXZlKQor ICAgICAgICAgICAocmVnaW9uLWJlZyAodXNlLXJlZ2lvbi1iZWdpbm5pbmcpKQorICAgICAgICAg ICAocmVnaW9uLWVuZCAodXNlLXJlZ2lvbi1lbmQpKQorICAgICAgICAgICAoYWRqLXBvaW50ICgx KyAoLSBvcmlnLXBvaW50IGJlZykpKQorICAgICAgICAgICAoYWRqLW1hcmsgKHdoZW4gb3JpZy1t YXJrICgxKyAoLSBvcmlnLW1hcmsgYmVnKSkpKQorICAgICAgICAgICAoYWRqLXJlZ2lvbi1iZWcg KHdoZW4gcmVnaW9uLWJlZyAoMSsgKC0gb3JpZy1wb2ludCByZWdpb24tYmVnKSkpKQorICAgICAg ICAgICAoYWRqLXJlZ2lvbi1lbmQgKHdoZW4gcmVnaW9uLWVuZCAoMSsgKC0gb3JpZy1wb2ludCBy ZWdpb24tZW5kKSkpKQorICAgICAgICAgICAocG9pbnQtZGVsdGEgMCkKKyAgICAgICAgICAgKHNv dXJjZS1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgICAod2l0aC13b3JrLWJ1ZmZlcgor ICAgICAgICAoaW5zZXJ0IHN0cikKKyAgICAgICAgKGdvdG8tY2hhciBhZGotcG9pbnQpCisgICAg ICAgIDs7IFByb3BhZ2F0ZSBtYXJrIChhbmQgcmVnaW9uKS4KKyAgICAgICAgKHdoZW4gb3JpZy1t YXJrLWFjdGl2ZQorICAgICAgICAgIChzZXQtbWFyayBhZGotbWFyaykpCisgICAgICAgIChtYXJr ZG93bi10cy0taW5oaWJpdC1tZXNzYWdlcy1hbmQtd2FybmluZ3MKKyAgICAgICAgICAnbWFya2Rv d24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MKKyAgICAgICAgICAoZGVsYXkt bW9kZS1ob29rcworICAgICAgICAgICAgKGxldCAoKG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5l CisgICAgICAgICAgICAgICAgICAgKHByb3ZpZGVkLW1vZGUtZGVyaXZlZC1wIGJsb2NrLW1vZGUg J21hcmtkb3duLXRzLW1vZGUpKSkKKyAgICAgICAgICAgICAgKGZ1bmNhbGwgYmxvY2stbW9kZSkp KSkKKyAgICAgICAgKGxldCAoKHBvaW50IChwb2ludCkpCisgICAgICAgICAgICAgIChhcml0eSAo Y2RyIChmdW5jLWFyaXR5IGNvbW1hbmQpKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAg KChtZW1xIGNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9jay10aGluZy1jb21tYW5kcykKKyAg ICAgICAgICAgICh3aGVuLWxldCogKCh0aGluZyAodGhpbmctYXQtcG9pbnQgJ3N5bWJvbCkpKQor ICAgICAgICAgICAgICAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQgdGhpbmcpKSkKKyAg ICAgICAgICAgKChtZW1xIGNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9jay1yZWdpb24tY29t bWFuZHMpCisgICAgICAgICAgICAod2hlbiAoYW5kIGFkai1yZWdpb24tYmVnIGFkai1yZWdpb24t ZW5kKQorICAgICAgICAgICAgICAoYXBwbHkgIydmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZAorICAgICAgICAgICAgICAgICAgICAgYWRqLXJlZ2lvbi1iZWcgYWRqLXJlZ2lvbi1lbmQgYXJn cykpKQorICAgICAgICAgICAoKHplcm9wIGFyaXR5KQorICAgICAgICAgICAgKGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kKSkKKyAgICAgICAgICAgKChlcSAxIGFyaXR5KQorICAgICAgICAg ICAgKGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kIChjYXIgYXJncykpKQorICAgICAgICAg ICAodAorICAgICAgICAgICAgKGFwcGx5ICMnZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQg YXJncykpKQorICAgICAgICAgIChzZXRxIHN0ciAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0 aWVzIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkKKyAgICAgICAgICAoc2V0cSB0ZW1wLWRlYWN0 aXZhdGUtbWFyayBkZWFjdGl2YXRlLW1hcmspCisgICAgICAgICAgKHNldHEgcG9pbnQtZGVsdGEg KC0gKHBvaW50KSBwb2ludCkpKQorICAgICAgICAobGV0ICgod29yay1idWZmZXIgKGN1cnJlbnQt YnVmZmVyKSkpCisgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc291cmNlLWJ1ZmZlcgor ICAgICAgICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIGJlZyBlbmQgd29yay1idWZmZXIp CisgICAgICAgICAgICA7OyBQcm9wYWdhdGUgbWFyayBkZWFjdGl2YXRpb24gdG8gdGhlIHNvdXJj ZSBidWZmZXIuCisgICAgICAgICAgICAoc2V0cSBkZWFjdGl2YXRlLW1hcmsgdGVtcC1kZWFjdGl2 YXRlLW1hcmspCisgICAgICAgICAgICA7OyBNb3ZlIHBvaW50IGlmIGl0IG1vdmVkIGluIHRoZSB0 ZW1wIGJ1ZmZlci4KKyAgICAgICAgICAgIChnb3RvLWNoYXIgKCsgb3JpZy1wb2ludCBwb2ludC1k ZWx0YSkpCisgICAgICAgICAgICA7OyBSZWNvcmQgdGhlIG9yaWdpbmFsIGNvbW1hbmQuCisgICAg ICAgICAgICAoc2V0cSB0aGlzLWNvbW1hbmQgY29tbWFuZCkKKyAgICAgICAgICAgIDs7IFRoaXMg aGVscHMgbWFpbnRhaW4gZGlzY3JldGUgY29tbWFuZCBhY3Rpb25zLgorICAgICAgICAgICAgKHVu ZG8tYm91bmRhcnkpCisgICAgICAgICAgICA7OyBNYWtlIHN1cmUgdGhlIG9yaWdpbmF0aW5nIHJl Z2lvbiBpcyByZWZvbnRpZmllZC4KKyAgICAgICAgICAgIChmb250LWxvY2stZmx1c2ggYmVnIGVu ZCkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1maW5kLWNvZGUtYmxvY2stZGVsaW1pdGVy IChwb3MgJm9wdGlvbmFsIGJhY2t3YXJkKQorICAiUmV0dXJuIHRoZSBuZXh0IG9yIHByZXZpb3Vz IGZlbmNlZF9jb2RlX2Jsb2NrX2RlbGltaXRlciBub2RlLCBvciBuaWwuCitTZWFyY2ggc3RhcnRp bmcgYXQgUE9TLgorU2VhcmNoIGJhY2t3YXJkIGlmIEJBQ0tXQVJEIGlzIG5vbi1uaWwuIgorICAo dHJlZXNpdC1zZWFyY2gtZm9yd2FyZCAodHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24pCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG5vZGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHN0cmluZz0gKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImZlbmNlZF9jb2RlX2Jsb2NrX2RlbGltaXRlciIp KQorICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZCkpCisKKyhkZWZ1biBtYXJrZG93 bi10cy0tZmluZC1uZXh0LWNvZGUtYmxvY2stZGVsaW1pdGVyICgmb3B0aW9uYWwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgYmFja3dhcmQg cmVtYWluKQorICAiUmV0dXJuIHRoZSBuZXh0IG9yIHByZXZpb3VzIGZlbmNlZF9jb2RlX2Jsb2Nr X2RlbGltaXRlciBub2RlLCBvciBuaWwuCitTZWFyY2ggc3RhcnRpbmcgYXQgUE9TIG9yIGBwb2lu dCcsIGlmIFBPUyBpcyBuaWwuCitTZWFyY2ggYmFja3dhcmQgaWYgQkFDS1dBUkQgaXMgbm9uLW5p bC4KK0lmIFJFTUFJTiBpcyBub24tbmlsLCBtb3ZlIHRvIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRo ZSBjdXJyZW50IGNvZGUKK2Jsb2NrLCBpZiBpbiBvbmUuIgorICAoc2V0cSBwb3MgKG9yIHBvcyAo cG9pbnQpKSkKKyAgKGFuZC1sZXQqICgobm9kZSAobWFya2Rvd24tdHMtLWZpbmQtY29kZS1ibG9j ay1kZWxpbWl0ZXIgcG9zIGJhY2t3YXJkKSkpCisgICAgKGxldCAoKGluLWJsb2NrIChtYXJrZG93 bi10cy1hdC1jb2RlLWJsb2NrLXAgcG9zKSkpCisgICAgICAoY29uZAorICAgICAgICgoYW5kIHJl bWFpbiBpbi1ibG9jaykKKyAgICAgICAgbm9kZSkKKyAgICAgICAocmVtYWluCisgICAgICAgIG5p bCkKKyAgICAgICAodAorICAgICAgICAod2hpbGUgKGFuZCBub2RlCisgICAgICAgICAgICAgICAg ICAgIDs7IElmIGJhY2t3YXJkLCBza2lwIHRoZSBjdXJyZW50IGJsb2NrJ3MKKyAgICAgICAgICAg ICAgICAgICAgOzsgc3RhcnRpbmcgZGVsaW1pdGVyLgorICAgICAgICAgICAgICAgICAgICAob3Ig KGFuZCBiYWNrd2FyZCBpbi1ibG9jayAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBub2RlKSkK KyAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcg bm9kZSkpKSkKKyAgICAgICAgICAoc2V0cSBpbi1ibG9jayAobWFya2Rvd24tdHMtYXQtY29kZS1i bG9jay1wIHBvcykpCisgICAgICAgICAgKHNldHEgcG9zIChpZiBiYWNrd2FyZAorICAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKQorICAgICAgICAgICAgICAg ICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAgICAgICAgICAoc2V0cSBub2RlICht YXJrZG93bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlciBwb3MgYmFja3dhcmQpKSkKKyAg ICAgICAgbm9kZSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1tb3ZlLXRvLW5leHQtY29kZS1i bG9jayAoYXJnKQorICAiTW92ZSBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY29kZSBi bG9jay4KK1dpdGggdGhlIHByZWZpeCBhcmd1bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4gdGhlIGN1 cnJlbnQgY29kZSBibG9jay4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCogKChu b2RlCisgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZpbmQtbmV4dC1jb2RlLWJsb2NrLWRl bGltaXRlciBuaWwgbmlsIGFyZykpKQorICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFy dCBub2RlKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtbW92ZS10by1wcmV2aW91cy1jb2RlLWJs b2NrIChhcmcpCisgICJNb3ZlIHBvaW50IHRvIHRoZSBzdGFydCBvZiB0aGUgcHJldmlvdXMgY29k ZSBibG9jay4KK1dpdGggdGhlIHByZWZpeCBhcmd1bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4gdGhl IGN1cnJlbnQgY29kZSBibG9jay4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCog KChub2RlCisgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZpbmQtbmV4dC1jb2RlLWJsb2Nr LWRlbGltaXRlciBuaWwgJ2JhY2t3YXJkIGFyZykpKQorICAgIChnb3RvLWNoYXIgKHRyZWVzaXQt bm9kZS1zdGFydCBub2RlKSkpKQorCis7OzsgVGFibGVzIGFrYSBwaXBlIHRhYmxlczoKKworOzs7 OyBVdGlsaXRpZXM6CisKKyhkZWZjb25zdCBtYXJrZG93bi10cy10YWJsZS1leHBvcnQtYnVmZmVy CisgICIqbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0KiIpCisKKzs7IEluIGZyZXF1ZW5jeSBtYXRj aGluZyBvcmRlci4KKyhkZWZjb25zdCBtYXJrZG93bi10cy0tdGFibGUtcm93LXR5cGVzCisgICco InBpcGVfdGFibGVfcm93IgorICAgICJwaXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciCisgICAgInBp cGVfdGFibGVfaGVhZGVyIikpCisKKzs7IEluIGZyZXF1ZW5jeSBtYXRjaGluZyBvcmRlci4KKyhk ZWZjb25zdCBtYXJrZG93bi10cy0tdGFibGUtY2VsbC10eXBlcworICAnKCJwaXBlX3RhYmxlX2Nl bGwiCisgICAgInBpcGVfdGFibGVfZGVsaW1pdGVyX2NlbGwiKSkKKworKGRlZmNvbnN0IG1hcmtk b3duLXRzLS10YWJsZS1kZWxpbWl0ZXItY2VsbC10eXBlcworICAnKCJwaXBlX3RhYmxlX2RlbGlt aXRlcl9jZWxsIgorICAgICJwaXBlX3RhYmxlX2FsaWduX2xlZnQiCisgICAgInBpcGVfdGFibGVf YWxpZ25fcmlnaHQiKSkKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS10YWJsZS1kZWxpbWl0ZXIt Y2VsbC1zdWJ0eXBlcworICAnKCJwaXBlX3RhYmxlX2FsaWduX2xlZnQiCisgICAgInBpcGVfdGFi bGVfYWxpZ25fcmlnaHQiKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1hYnV0dGluZy1w b3MgKHBvcykKKyAgIkFkanVzdCBQT1MgdG8gYWJ1dCBpdHMgY2xvc2VzdCB0ZXh0LgorUmV0dXJu IHBvcyBhZGp1c3RlZCB0byB0aGUgcG9zaXRpb24gb2YgdGhlIG5lYXJlc3Qgbm9uLWJsYW5rIGNo YXJhY3Rlci4KK090aGVyd2lzZSwgcmV0dXJuIG5pbCwgZm9yIGV4YW1wbGUsIGlmIHRoZSBsaW5l IGlzIGVtcHR5LiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGdvdG8tY2hhciBwb3MpCisgICAg KHNraXAtY2hhcnMtZm9yd2FyZCAiW1s6Ymxhbms6XV0iIChwb3MtZW9sKSkKKyAgICAoaWYgKGVx IHBvcyAocG9zLWVvbCkpCisgICAgICAgIChwcm9nbgorICAgICAgICAgIChnb3RvLWNoYXIgcG9z KQorICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICJbWzpibGFuazpdXSIgKHBvcy1ib2wp KQorICAgICAgICAgICh1bmxlc3MgKGVxIHBvcyAocG9zLWJvbCkpCisgICAgICAgICAgICAobWF4 IChwb2ludC1taW4pICgxLSAocG9pbnQpKSkpKQorICAgICAgKG1pbiAocG9pbnQtbWF4KSAoMSsg KHBvaW50KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsICgmb3B0 aW9uYWwgbm9kZSBwb3MgYWJ1dHRpbmcpCisgICJDb21wdXRlIHRhYmxlIGNlbGwgZnJvbSBuYW1l ZCBOT0RFIGF0IFBPUy4KK0lmIE5PREUgaXMgbmlsLCB1c2UgdGhlIG5vZGUgYXQgUE9TLgorSWYg UE9TIGlzIG5pbCwgdXNlIGBwb2ludCcuCitJZiBOT0RFIGlzIGEgY2VsbCB0eXBlLCByZXR1cm4g aXQuCitJZiBOT0RFIGlzIGEgc3VidHlwZSwgcHJvbW90ZSBpdC4KK0lmIEFCVVRUSU5HIGlzIG5v bi1uaWwsIGFkanVzdCBQT1MgdG8gdGhlIG5lYXJlc3Qgbm9uLWJsYW5rIGNoYXJhY3Rlci4KK090 aGVyd2lzZSwgcmV0dXJuIG5pbC4iCisgIDs7IFdlIGNvdWxkIHNhbml0eSBjaGVjayB2aWEgYHRy ZWVzaXQtbm9kZS1uYW1lZCcgYW5kIGVycm9yIGlmIG5vdC4KKyAgKHNldHEgcG9zIChvciBwb3Mg KHBvaW50KSkpCisgICh3aGVuIGFidXR0aW5nCisgICAgKHNldHEgcG9zIChvciAobWFya2Rvd24t dHMtLXRhYmxlLWFidXR0aW5nLXBvcyBwb3MpIHBvcykpKQorICAod2hlbi1sZXQqICgobm9kZSAo b3Igbm9kZQorICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21h cmtkb3duICduYW1lZCkpKQorICAgICAgICAgICAgICAodHlwZSAodHJlZXNpdC1ub2RlLXR5cGUg bm9kZSkpKQorICAgIChjb25kICgobWVtYmVyIHR5cGUgbWFya2Rvd24tdHMtLXRhYmxlLWNlbGwt dHlwZXMpCisgICAgICAgICAgIG5vZGUpCisgICAgICAgICAgKChtZW1iZXIgdHlwZSBtYXJrZG93 bi10cy0tdGFibGUtZGVsaW1pdGVyLWNlbGwtc3VidHlwZXMpCisgICAgICAgICAgICh0cmVlc2l0 LW5vZGUtcGFyZW50IG5vZGUpKQorICAgICAgICAgICgobWVtYmVyIHR5cGUgbWFya2Rvd24tdHMt LXRhYmxlLXJvdy10eXBlcykKKyAgICAgICAgICAgKGNvbmQgKChlcSBhYnV0dGluZyAnbGVmdCkK KyAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtY2hpbGQgbm9kZSAwICduYW1lZCkpCisg ICAgICAgICAgICAgICAgIDs7IEFjY291bnQgZm9yICdyaWdodCBvciB0LgorICAgICAgICAgICAg ICAgICAodAorICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZCBub2RlIC0xICdu YW1lZCkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLXJvdyAoJm9wdGlv bmFsIG5vZGUgcG9zKQorICAiQ29tcHV0ZSB0YWJsZSByb3cgZnJvbSBuYW1lZCBOT0RFIGF0IFBP Uy4KK0lmIE5PREUgaXMgbmlsLCB1c2UgdGhlIG5vZGUgYXQgUE9TLgorSWYgUE9TIGlzIG5pbCwg dXNlIGBwb2ludCcuCitJZiBOT0RFIGlzIGEgcm93IHR5cGUsIHJldHVybiBpdC4KK0lmIE5PREUg aXMgYSB0YWJsZSBjZWxsIHR5cGUsIHJldHVybiBpdHMgcm93LgorT3RoZXJ3aXNlLCByZXR1cm4g bmlsLiIKKyAgOzsgV2UgY291bGQgc2FuaXR5IGNoZWNrIHZpYSBgdHJlZXNpdC1ub2RlLW5hbWVk JyBhbmQgZXJyb3IgaWYgbm90LgorICAod2hlbi1sZXQqICgobm9kZSAob3Igbm9kZQorICAgICAg ICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1hdCAob3IgcG9zIChwb2ludCkpICdtYXJr ZG93biAnbmFtZWQpKSkKKyAgICAgICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5v ZGUpKSkKKyAgICAoaWYgKG1lbWJlciB0eXBlIG1hcmtkb3duLXRzLS10YWJsZS1yb3ctdHlwZXMp CisgICAgICAgIG5vZGUKKyAgICAgICAodHJlZXNpdC1ub2RlLXBhcmVudCAobWFya2Rvd24tdHMt LXRhYmxlLW5vZGUtY2VsbCBub2RlKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1w YXJzZS1lcnJvci1wICgmb3B0aW9uYWwgbm9kZSBwb3MpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBu YW1lZCBOT0RFIGF0IFBPUyBpcyBpbiBhbiBcIkVSUk9SXCIgc3VidHJlZS4KK05PREUgbXVzdCBi ZSBhIHRhYmxlIGVsZW1lbnQ7IGkuZS4sIGl0cyB0eXBlIHByZWZpeCBpcyBcInBpcGVfdGFibGVc Ii4KK0lmIE5PREUgaXMgYSB0YWJsZSwgcmV0dXJuIG5pbCAoaXQgc2hvdWxkbid0IGJlIGluIEVS Uk9SKS4KK0lmIE5PREUgaXMgbm90IGEgdGFibGUgZWxlbWVudCwgcmV0dXJuIG5pbC4KK0lmIE5P REUncyBuZWFyYnkgYW5jZXN0b3IgaXMgYW4gXCJFUlJPUlwiIG5vZGUsIHJldHVybiB0LgorT3Ro ZXJ3aXNlLCByZXR1cm4gbmlsLiIKKyAgOzsgV2UgY291bGQgc2FuaXR5IGNoZWNrIHZpYSBgdHJl ZXNpdC1ub2RlLW5hbWVkJyBhbmQgZXJyb3IgaWYgbm90LgorICAod2hlbi1sZXQqICgocm93ICht YXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgbm9kZSBwb3MpKQorICAgICAgICAgICAgICAodHlw ZSAodHJlZXNpdC1ub2RlLXR5cGUgcm93KSkKKyAgICAgICAgICAgICAgKHBhcmVudCAodHJlZXNp dC1ub2RlLXBhcmVudCByb3cpKQorICAgICAgICAgICAgICAocGFyZW50LXR5cGUgKHRyZWVzaXQt bm9kZS10eXBlIHBhcmVudCkpKQorICAgIChjb25kICgoZXF1YWwgdHlwZSAicGlwZV90YWJsZSIp CisgICAgICAgICAgIG5pbCkKKyAgICAgICAgICAoKGVxdWFsIHBhcmVudC10eXBlICJwaXBlX3Rh YmxlIikKKyAgICAgICAgICAgbmlsKQorICAgICAgICAgICgoZXF1YWwgcGFyZW50LXR5cGUgIkVS Uk9SIikKKyAgICAgICAgICAgdCkKKyAgICAgICAgICAodAorICAgICAgICAgICAoZXJyb3IgIlNo b3VsZCBuZXZlciBoYXBwZW4iKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWF0LXRhYmxlLXAg KCZvcHRpb25hbCBwb3MgYWJ1dHRpbmcpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBQT1MgaXMgYXQg b3IgaW4gYSBwaXBlIHRhYmxlLgorSWYgUE9TIGlzIG5pbCwgdXNlIHBvaW50LgorUmV0dXJuIGNv bnMgKHBvcyAuIHRhYmxlLW5vZGUpIGlmIFBPUyBpcyB3aXRoaW4gYSB0YWJsZSwgb3RoZXJ3aXNl CityZXR1cm4gbmlsLgoraWYgUE9TIGlzIHdpdGhpbiBhIHRhYmxlIGJ1dCB3aXRoIHBhcnNlIGVy cm9ycywgc2lnbmFsIGFuIGVycm9yLgorSWYgQUJVVFRJTkcgaXMgbm9uLW5pbCwgYWRqdXN0IFBP UyB0byB0aGUgbmVhcmVzdCBub24tYmxhbmsgY2hhcmFjdGVyLgorSWYgdGhlIHBhcnNlZCB0YWJs ZSBpcyBpbiBFUlJPUiwgcmV0dXJuIG5pbC4iCisgIChzZXRxIHBvcyAob3IgcG9zIChwb2ludCkp KQorICAoc2F2ZS1leGN1cnNpb24KKyAgICAoZ290by1jaGFyIHBvcykKKyAgICA7OyBJZiBwb2lu dCBpcyBvbiBhbiBlbXB0eSBsaW5lLCBpdCBpcyBuZXZlciBhIHRhYmxlLgorICAgICh1bmxlc3Mg KGFuZCAoZW9scCkgKGJvbHApKQorICAgICAgOzsgSWYgcG9pbnQgaXMgYm9sIG9yIGVvbCBpdCBt aWdodCBiZSBhYnV0dGluZyBhIHBpcGUgc3ltYm9sIHNvCisgICAgICA7OyBsb29rIGZvcndhcmRz IG9yIGJhY2t3YXJkcyBvbmUgY2hhcmFjdGVyIHRvIHRlc3QgaWYgdGhhdCBwb3MKKyAgICAgIDs7 IGlzIGEgdGFibGUuCisgICAgICAod2hlbiBhYnV0dGluZworICAgICAgICAoc2V0cSBwb3MgKG9y IChtYXJrZG93bi10cy0tdGFibGUtYWJ1dHRpbmctcG9zIHBvcykgcG9zKSkpCisgICAgICAod2hl bi1sZXQqICgocm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgbmlsIHBvcykpKQorICAg ICAgICAoaWYgKG1hcmtkb3duLXRzLS10YWJsZS1wYXJzZS1lcnJvci1wIHJvdykKKyAgICAgICAg ICAgIDs7IERvIG5vdCB1c2UgZXJyb3Igb3Igd2FybmluZyBoZXJlLiAgRXJyb3JzIGludGVyZmVy ZSB3aXRoCisgICAgICAgICAgICA7OyB0aGUgY29tbWFuZCBsb29wLiAgV2FybmluZ3MgYXJlIGFu bm95aW5nLgorICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAgIChtZXNzYWdlICJJbmNv cnJlY3RseSBmb3JtYXR0ZWQgTWFya2Rvd24gdGFibGUgKHBhcnNlciBlcnJvcikiKQorICAgICAg ICAgICAgICBuaWwpCisgICAgICAgICAgKGNvbnMgcG9zICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJk CisgICAgICAgICAgICAgICAgICAgICByb3cKKyAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBl X3RhYmxlXFwnIiAnYmFja3dhcmQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZW5hYmxl LWluLXRhYmxlLW1vZGUgKCkKKyAgIkVuYWJsZSBgbWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZScg aWYgaW4gYSB0YWJsZS4KK0EgdGFibGUgd2l0aCBhIHBhcnNlciBFUlJPUiBpcyBpbmVsaWdpYmxl LiIKKyAgKG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUKKyAgIChpZiAobWFya2Rvd24tdHMtYXQt dGFibGUtcCBuaWwgdCkgMSAtMSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLWJvZHkt cm93LW5lYXItcG9zICgmb3B0aW9uYWwgcG9zIGFidXR0aW5nKQorICAiUmV0dXJuIHRoZSByb3cg bmVhciBQT1MuCitSZXR1cm4gbmlsIGlmIG5vdCBhdCBhIHRhYmxlIG9yIHRoZXJlIGlzIG5vIHJv dy4KK090aGVyd2lzZSByZXR1cm4gY29ucyAocm93IC4gaW4taGVhZGVyKSB3aGVyZSBpbi1oZWFk ZXIgaXMgbmlsIG9yIHQuCitUaGlzIGlzIHVzZWZ1bCB0byBpbnNlcnQgYSBuZXcgcm93IGp1c3Qg YmVsb3cgdGhlIGhlYWRlciBpbnN0ZWFkIG9mIGp1c3QKK2JlbG93IHRoZSBmaXJzdCByb3cuCitJ ZiBQT1MgaXMgbmlsIHVzZSBgcG9pbnQnLgorSWYgQUJVVFRJTkcgaXMgbm9uLW5pbCwgdXNlICgx LSBQT1MpIGlmIFBPUyBpcyBpbW1lZGlhdGVseSBhZnRlciBhIHBpcGUKK3N5bWJvbC4iCisgIChz ZXRxIHBvcyAob3IgcG9zIChwb2ludCkpKQorICAobGV0IChpbi1oZWFkZXIpCisgICAgKHdoZW4t bGV0KiAoKGF0LXRhYmxlIChtYXJrZG93bi10cy1hdC10YWJsZS1wIHBvcyBhYnV0dGluZykpCisg ICAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgICAodGFi bGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICAgKGNlbGwgKG1hcmtkb3duLXRzLS10 YWJsZS1ub2RlLWNlbGwgbmlsIHBvcyBhYnV0dGluZykpCisgICAgICAgICAgICAgICAgKGNlbGwt dHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgY2VsbCkpCisgICAgICAgICAgICAgICAgKHBhcmVudCAo dHJlZXNpdC1ub2RlLXBhcmVudCBjZWxsKSkKKyAgICAgICAgICAgICAgICAocGFyZW50LXR5cGUg KHRyZWVzaXQtbm9kZS10eXBlIHBhcmVudCkpCisgICAgICAgICAgICAgICAgKGxpbmVhZ2UgKGxp c3QgY2VsbC10eXBlIHBhcmVudC10eXBlKSkKKyAgICAgICAgICAgICAgICA7OyBGaW5kIHRoZSBm aXJzdCByb3cgYWZ0ZXIgdGhlIGhlYWRlciBvciB0aGUgcm93IGF0IFBPUyBpcworICAgICAgICAg ICAgICAgIDs7IG9uIGFuZCBpbiB0aGUgc2FtZSB0YWJsZS4KKyAgICAgICAgICAgICAgICAocm93 IChjb25kICgob3IgKG1lbWJlciAicGlwZV90YWJsZV9oZWFkZXIiIGxpbmVhZ2UpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1iZXIgInBpcGVfdGFibGVfZGVsaW1pdGVyX3Jv dyIgbGluZWFnZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgaW4taGVhZGVy IHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQg Y2VsbCAiXFxgcGlwZV90YWJsZV9yb3dcXCciKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoZXF1YWwgY2VsbC10eXBlICJwaXBlX3RhYmxlX3JvdyIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2VsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXF1YWwgcGFyZW50 LXR5cGUgInBpcGVfdGFibGVfcm93IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJl bnQpKSkpCisgICAgICAod2hlbiAodHJlZXNpdC1ub2RlLWVxIHRhYmxlICh0cmVlc2l0LXNlYXJj aC1mb3J3YXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxlXFwnIiAnYmFja3dh cmQpKQorICAgICAgICAoY29ucyByb3cgaW4taGVhZGVyKSkpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLS10YWJsZS1jb21wdXRlLW5vZGUtY29sdW1uIChyb3cgbm9kZSkKKyAgIkNvbXB1dGUgTk9E RSdzIGNvbHVtbiBpbiBST1cuCitSZXR1cm4gbmlsIGlmIE5PREUgaXMgbm90IGluIFJPVyAodGhp cyBzaG91bGQgbm90IGhhcHBlbikuCitOT0RFIG11c3QgYmUgYSBub2RlIGluIFJPVy4KK1JPVyBt dXN0IGJlIGEgcGlwZV90YWJsZV9oZWFkZXIsIHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvdywgb3IK K3BpcGVfdGFibGVfcm93LiIKKyAgKGNhdGNoIDpjb2x1bW4KKyAgICAobGV0ICgoY291bnQgMCkp CisgICAgICAoZG9saXN0IChjZWxsICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcm93ICduYW1lZCkp CisgICAgICAgICh3aGVuICh0cmVlc2l0LW5vZGUtZXEgbm9kZSBjZWxsKQorICAgICAgICAgICh0 aHJvdyA6Y29sdW1uIGNvdW50KSkKKyAgICAgICAgKHNldHEgY291bnQgKDErIGNvdW50KSkpKSkp CisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS0tZ290by1jb2x1bW4gKGNvbHVtbiAmb3B0aW9u YWwgbm8tZXJyb3IpCisgICJNb3ZlIHBvaW50IG9uIHRoZSBjdXJyZW50IHJvdyB0byBDT0xVTU4u CitDT0xVTU4gaXMgYSAwLWJhc2VkIGluZGV4LgorUmV0dXJuIG5vbi1uaWwgaWYgc3VjY2Vzc2Z1 bC4KK0lmIE5PLUVSUk9SIGlzIG5vbi1uaWwsIHJldHVybiBuaWwgaWYgdGhlIGN1cnJlbnQgcm93 IGRvZXMgbm90IGV4dGVuZCB0bworQ09MVU1OLCBvdGhlcndpc2Ugc2lnbmFsIGFuIGVycm9yLgor U2lnbmFsIGFuIGVycm9yIGlmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLiIKKyAgKGlmLWxldCog KChjZWxsIChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsIG5pbCBuaWwgdCkpCisgICAgICAg ICAgICAocm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgY2VsbCkpCisgICAgICAgICAg ICAoY29scyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHJvdyAnbmFtZWQpKSkKKyAgICAgIChpZi1s ZXQqICgodGFyZ2V0LWNlbGwgKG50aCBjb2x1bW4gY29scykpKQorICAgICAgICAgIChnb3RvLWNo YXIgKHRyZWVzaXQtbm9kZS1zdGFydCB0YXJnZXQtY2VsbCkpCisgICAgICAgICh1bmxlc3Mgbm8t ZXJyb3IKKyAgICAgICAgICAoZXJyb3IgIkNvbHVtbiAlUyBub3QgZm91bmQiIGNvbHVtbikpKQor ICAgIChlcnJvciAiTm90IGF0IGEgdGFibGUiKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFi bGUtYWxpZ25lcnMgKHRhYmxlKQorICAiRXh0cmFjdCB0aGUgaGVhZGVyIGxpbmUgYWxpZ25lcnMg ZnJvbSBub2RlIFRBQkxFLgorUmV0dXJuIGEgbGlzdCBvZiBsaXN0cyBvZiB0aGUgZm9ybToKKyAg KDpiZWcgeHh4IDplbmQgeHh4IDphbGlnbiBsZWZ0KQorOmFsaWduIGlzIG9uZSBvZiBgbGVmdCcg YGNlbnRlcicgYHJpZ2h0JyBgdW5zcGVjaWZpZWQnLiIKKyAgKGxldCogKChkZWxpbWl0ZXItcm93 ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93XFwn IikpCisgICAgICAgICAoYWxpZ25lcnMKKyAgICAgICAgICAobGV0IChyZXMpCisgICAgICAgICAg ICAoZG9saXN0IChlbHQgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBkZWxpbWl0ZXItcm93ICduYW1l ZCkpCisgICAgICAgICAgICAgIChsZXQgKChhbGlnbi1iZWcgKHRyZWVzaXQtbm9kZS10eXBlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtY2hpbGQgZWx0IDAg J25hbWUpKSkKKyAgICAgICAgICAgICAgICAgICAgKGFsaWduLWVuZCAodHJlZXNpdC1ub2RlLXR5 cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZCBl bHQgLTEgJ25hbWUpKSkpCisgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QKKyAgICAgICAgICAg ICAgICAgICAgICAgOmJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IGVsdCkKKyAgICAgICAgICAgICAg ICAgICAgICAgOmVuZCAodHJlZXNpdC1ub2RlLWVuZCBlbHQpCisgICAgICAgICAgICAgICAgICAg ICAgIDphbGlnbgorICAgICAgICAgICAgICAgICAgICAgICAoY29uZCAoKGFuZAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCBhbGlnbi1iZWcgInBpcGVfdGFibGVfYWxpZ25f bGVmdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsIGFsaWduLWVuZCAi cGlwZV90YWJsZV9hbGlnbl9sZWZ0IikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn bGVmdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZXF1YWwgYWxpZ24tYmVnICJwaXBlX3RhYmxlX2FsaWduX2xlZnQi KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCBhbGlnbi1lbmQgInBpcGVf dGFibGVfYWxpZ25fcmlnaHQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZW50 ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGVxdWFsIGFsaWduLWJlZyAicGlwZV90YWJsZV9hbGlnbl9yaWdodCIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsIGFsaWduLWVuZCAicGlwZV90 YWJsZV9hbGlnbl9yaWdodCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCAndW5zcGVjaWZpZWQpKSkKKyAgICAg ICAgICAgICAgICAgICAgICByZXMpKSkKKyAgICAgICAgICAgIChucmV2ZXJzZSByZXMpKSkpCisg ICAgYWxpZ25lcnMpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lciAo d2lkdGggYWxpZ24pCisgICJNYWtlIGEgTWFya2Rvd24gY29sdW1uIGFsaWduZXIuCitXSURUSCBp cyB0aGUgY29sdW1uIHdpZHRoLgorQUxJR04gaXMgb25lIG9mIGBsZWZ0JyBgY2VudGVyJyBgcmln aHQnIGB1bnNwZWNpZmllZCcuIgorICAocGNhc2UgYWxpZ24KKyAgICAoJ2xlZnQKKyAgICAgKGNv bmNhdCAiOiIgKG1ha2Utc3RyaW5nICgxLSB3aWR0aCkgPy0pKSkKKyAgICAoJ2NlbnRlcgorICAg ICAoY29uY2F0ICI6IiAobWFrZS1zdHJpbmcgKC0gd2lkdGggMikgPy0pICI6IikpCisgICAgKCdy aWdodAorICAgICAoY29uY2F0IChtYWtlLXN0cmluZyAoMS0gd2lkdGgpID8tKSAiOiIpKQorICAg IChfCisgICAgIChjb25jYXQgKG1ha2Utc3RyaW5nIHdpZHRoID8tKSkpKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLS10YWJsZS1hbGlnbi1jZWxsICh0ZXh0IHdpZHRoIGFsaWduKQorICAiUmV0dXJu IFRFWFQgcGFkZGVkIHRvIFdJRFRIIGFsaWduZWQgdXNpbmcgQUxJR04uCitUcnVuY2F0ZSBURVhU IHdpZGVyIHRoYW4gV0lEVEguICBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8K K2Vuc3VyZSB0ZXh0IHdpbGwgZml0LgorQUxJR04gaXMgb25lIG9mIGBsZWZ0JyBgY2VudGVyJyBg cmlnaHQnIGB1bnNwZWNpZmllZCcuIgorICAobGV0KiAoKHN0cmxlbiAobGVuZ3RoIHRleHQpKQor ICAgICAgICAgKHN0cmxlbjAgKG1pbiB3aWR0aCBzdHJsZW4pKQorICAgICAgICAgKHRleHQwIChz dWJzdHJpbmcgdGV4dCAwIHN0cmxlbjApKQorICAgICAgICAgKHBhZCAoLSB3aWR0aCBzdHJsZW4w KSkpCisgICAgKHBjYXNlIGFsaWduCisgICAgICAoJ2NlbnRlcgorICAgICAgIChsZXQqICgoaGFs Zi1wYWQgKG1ha2Utc3RyaW5nIChmbG9vciAoLyBwYWQgMikpID9ccykpCisgICAgICAgICAgICAg IChzIChjb25jYXQKKyAgICAgICAgICAgICAgICAgIGhhbGYtcGFkCisgICAgICAgICAgICAgICAg ICB0ZXh0MAorICAgICAgICAgICAgICAgICAgaGFsZi1wYWQpKSkKKyAgICAgICAgIChzdHJpbmct cGFkCisgICAgICAgICAgKHN1YnN0cmluZyBzIDAgKG1pbiAobGVuZ3RoIHMpIHdpZHRoKSkKKyAg ICAgICAgICB3aWR0aCkpKQorICAgICAgKCdyaWdodAorICAgICAgIChzdHJpbmctcGFkIHRleHQg d2lkdGggbmlsICdzdGFydCkpCisgICAgICAoXworICAgICAgIChzdHJpbmctcGFkIHRleHQgd2lk dGgpKSkpKQorCis7Ozs7IENvbW1hbmRzOgorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5z ZXJ0LXRhYmxlICgmb3B0aW9uYWwgbnJvd3MgbmNvbHMgaGVhZGluZ3MgYm9keSkKKyAgIkluc2Vy dCBhIE1hcmtkb3duIHBpcGUgdGFibGUuCitOUk9XUyBpcyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4g dGhlIG5ldyB0YWJsZSBhbmQgZGVmYXVsdHMgdG8gMy4KKworTkNPTFMgaXMgdGhlIG51bWJlciBv ZiBjb2x1bW5zIGFuZCBkZWZhdWx0cyB0byAzLgorCitIRUFESU5HUyBpcyBhIGxpc3Qgb2YgaGVh ZGluZ3MgYW5kIGRlZmF1bHRzIHRvIGxlZnQtYWxpZ25lZCBzeW50aGVzaXplZAorY29sdW1uIG5h bWVzLiAgSWYgTkNPTFMgaXMgbmlsLCB1c2UgSEVBRElOR1MgbGVuZ3RoLiAgSWYgYm90aCBOQ09M UyBhbmQKK0hFQURJTkdTIGFyZSBub24tbmlsLCB1c2UgdXAgdG8gTkNPTFMgaGVhZGluZ3MsIHN5 bnRoZXNpemluZyB0aGUKK3JlbWFpbmRlci4KKworRWFjaCBoZWFkaW5nIGluIHRoZSBsaXN0IGNh biBiZSBhIHN0cmluZyBjb2x1bW4gbmFtZSBvciBhIGNvbnMgb2YgdGhlCitmb3JtIChuYW1lIC4g YWxpZ25tZW50KSB3aGVyZSBhbGlnbm1lbnQgaXMgb25lIG9mIHRoZSBzeW1ib2xzIGBsZWZ0JywK K2ByaWdodCcsIG9yIGBjZW50ZXInLiAgSWYgYSBzdHJpbmcsIGRlZmF1bHQgYWxpZ25tZW50IGlz IHVuc3BlY2lmaWVkLgorCitJZiBCT0RZIGlzIG5vbi1uaWwsIGl0IGlzIGEgbGlzdCBvZiBOUk9X UyByb3dzIHdoZXJlIGVhY2ggcm93IGlzIGEgbGlzdAorb2YgTkNPTFMgYm9keSBjZWxscy4KKwor Rm9yIGNvbnZlbmllbmNlIGFuZCBhZXN0aGV0aWNzLCBwYWQgZWFjaCBib2R5IGNlbGwgdG8gdGhl IHdpZHRoIG9mIGl0cworY29sdW1uJ3MgaGVhZGVyLCBhbmQgYWNjb21tb2RhdGUgYWxpZ25tZW50 IGluZGljYXRvcnMuICBJZiBhIEJPRFkgY2VsbAoraXMgbG9uZ2VyIHRoYW4gaXRzIGNvbHVtbiBo ZWFkZXIsIGluc2VydCBpdCB1bmNoYW5nZWQuCisKK05vdGU6IEEgYmxhbmsgbGluZSBpcyBuZWVk ZWQgYmVmb3JlIHRoZSB0YWJsZSBmb3IgaXQgdG8gcHJvcGVybHkgcmVuZGVyLgorSWYgdGhlIGxp bmUgcHJlY2VkaW5nIGBwb2ludCcgaXMgbm90IGJsYW5rLCBpbnNlcnQgb25lLgorCitOb3RlOiBE dWUgdG8gYW4gaXNzdWUgd2l0aCB0aGUgdHJlZS1zaXR0ZXIgTWFya2Rvd24gZ3JhbW1hciwgYSBy b3cgb2YKK2VtcHR5IGNlbGxzIGNhdXNlcyBhIHBhcnNpbmcgZXJyb3IuICBUbyBhdm9pZCB0aGlz LCBhbiBlbXB0eSByb3cgd2lsbAorY29udGFpbiBhIHNpbmdsZSBwZXJpb2QgaW4gaXRzIGZpcnN0 IGNlbGwuIgorICAoaW50ZXJhY3RpdmUpCisgIChzZXRxIG5yb3dzIChvciBucm93cyAzKSkKKyAg KHNldHEgbmNvbHMgKG9yIG5jb2xzIChhbmQgaGVhZGluZ3MgKGxlbmd0aCBoZWFkaW5ncykpIDMp KQorICAoc2V0cSBoZWFkaW5ncworICAgICAgICAobGV0IChyZXMpCisgICAgICAgICAgKGRvdGlt ZXMgKHggbmNvbHMpCisgICAgICAgICAgICAocHVzaCAob3IgKG50aCB4IGhlYWRpbmdzKQorICAg ICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIkNvbHVtbiAlZCIgKDErIHgpKSkKKyAgICAgICAg ICAgICAgICAgIHJlcykpCisgICAgICAgICAgKG5yZXZlcnNlIHJlcykpKQorICAobGV0ICgoaGVh ZGluZy13aWR0aHMKKyAgICAgICAgIChsZXQgKHJlcykKKyAgICAgICAgICAgKGRvbGlzdCAoZWx0 IGhlYWRpbmdzKQorICAgICAgICAgICAgIChsZXQgKChzdHIgKGlmIChjb25zcCBlbHQpIChjYXIg ZWx0KSBlbHQpKSkKKyAgICAgICAgICAgICAgIChwdXNoIChtYXggbWFya2Rvd24tdHMtdGFibGUt ZGVmYXVsdC1jb2x1bW4td2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCBz dHIpKQorICAgICAgICAgICAgICAgICAgICAgcmVzKSkpCisgICAgICAgICAgIChucmV2ZXJzZSBy ZXMpKSkpCisgICAgOzsgSWYgcG9pbnQgaXMgbm90IGF0IGJvbCwgaW5zZXJ0IGEgbmV3bGluZS4K KyAgICAodW5sZXNzIChlcSAocG9pbnQpIChwb3MtYm9sKSkKKyAgICAgIChpbnNlcnQgIlxuIikp CisgICAgOzsgSW5zZXJ0IGFuIGVtcHR5IGxpbmUgaWYgbmVlZGVkLgorICAgICh1bmxlc3MgKHNh dmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgLTEpCisgICAgICAgICAg ICAgIChlcSAocG9zLWJvbCkgKHBvcy1lb2wpKSkKKyAgICAgIChpbnNlcnQgIlxuIikpCisgICAg OzsgSW5zZXJ0IHBhZGRlZCBoZWFkaW5nIHRleHQuCisgICAgKGluc2VydCAifCIpCisgICAgKGRv dGltZXMgKHggbmNvbHMpCisgICAgICAobGV0KiAoKGVsdCAobnRoIHggaGVhZGluZ3MpKQorICAg ICAgICAgICAgIChzdHIgKGlmIChjb25zcCBlbHQpIChjYXIgZWx0KSBlbHQpKQorICAgICAgICAg ICAgICh3aWR0aCAobWF4IDMgKG50aCB4IGhlYWRpbmctd2lkdGhzKSkpCisgICAgICAgICAgICAg KHBhZC13aWR0aCAoLSB3aWR0aCAobGVuZ3RoIHN0cikpKSkKKyAgICAgICAgKGluc2VydCBzdHIg KG1ha2Utc3RyaW5nIHBhZC13aWR0aCA/XHMpICJ8IikpKQorICAgIChpbnNlcnQgIlxuIikKKyAg ICA7OyBJbnNlcnQgcGFkZGVkIGhlYWRpbmcgYWxpZ25lcnMuCisgICAgKGluc2VydCAifCIpCisg ICAgKGRvdGltZXMgKHggbmNvbHMpCisgICAgICAobGV0KiAoKGVsdCAobnRoIHggaGVhZGluZ3Mp KQorICAgICAgICAgICAgIChhbGlnbiAoaWYgKGNvbnNwIGVsdCkgKGNkciBlbHQpICd1bnNwZWNp ZmllZCkpCisgICAgICAgICAgICAgKHdpZHRoIChtYXggMyAobnRoIHggaGVhZGluZy13aWR0aHMp KSkpCisgICAgICAgIChpbnNlcnQgKG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIgd2lk dGggYWxpZ24pKSkKKyAgICAgIChpbnNlcnQgInwiKSkKKyAgICAoaW5zZXJ0ICJcbiIpCisgICAg OzsgSW5zZXJ0IEJPRFkgY2VsbHMgb3IgZW1wdHkgY2VsbHMuCisgICAgKGRvdGltZXMgKHkgbnJv d3MpCisgICAgICAoaW5zZXJ0ICJ8IikKKyAgICAgIChsZXQgKChyb3cgKG50aCB5IGJvZHkpKSkK KyAgICAgICAgKGRvdGltZXMgKHggbmNvbHMpCisgICAgICAgICAgOzsgVE9ETzogUmVtb3ZlIHRo ZSBwbGFjZWhvbGRlciBjaGFyYWN0ZXIgaWYgdGhlIHRyZWUtc2l0dGVyCisgICAgICAgICAgOzsg Z3JhbW1hciBpcyByZXBhaXJlZC4KKyAgICAgICAgICAobGV0KiAoKHN0ciAob3IgKG50aCB4IHJv dykgKGFuZCAoZXEgeCAwKSAiLiIpICIiKSkKKyAgICAgICAgICAgICAgICAgKHN0cmxlbiAobGVu Z3RoIHN0cikpCisgICAgICAgICAgICAgICAgICh3aWR0aCAobnRoIHggaGVhZGluZy13aWR0aHMp KQorICAgICAgICAgICAgICAgICAocGFkLXdpZHRoIChtYXggMCAoLSB3aWR0aCBzdHJsZW4pKSkp CisgICAgICAgICAgICAoaW5zZXJ0IHN0cgorICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJp bmcgcGFkLXdpZHRoID9ccykKKyAgICAgICAgICAgICAgICAgICAgInwiKSkpCisgICAgICAgIChp bnNlcnQgIlxuIikpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1kZWxldGUtdGFibGUg KCkKKyAgIlJlbW92ZSB0aGUgTWFya2Rvd24gdGFibGUgYXQgcG9pbnQuCitJZiBwb2ludCBpcyBu b3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3du LXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJsZS1kZWxldGUtdGFibGUpCisg ICh3aGVuLWxldCogKChhdC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisg ICAgICAgICAgICAgICh0YWJsZSAoY2RyIGF0LXRhYmxlKSkpCisgICAgOzsgVE9ETzogUmVtb3Zl IGFmdGVyIGJ1ZyMyMzkwMyBVbmRvIGFmdGVyIGtiIGRpZmZlcnMgZnJvbSBhZnRlciBNLXgKKyAg ICAocHVzaCAocG9pbnQpIGJ1ZmZlci11bmRvLWxpc3QpCisgICAgKGRlbGV0ZS1yZWdpb24gKHRy ZWVzaXQtbm9kZS1zdGFydCB0YWJsZSkgKHRyZWVzaXQtbm9kZS1lbmQgdGFibGUpKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy10YWJsZS1wcmV2aW91cy1yb3cgKCkKKyAgIk1vdmUgdG8gdGhlIHBy ZXZpb3VzIHJvdyBpbiB0aGUgdGFibGUuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4i CisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93IC0xKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93ICgmb3B0aW9uYWwgbikKKyAgIk1vdmUg dG8gdGhlIG5leHQgcm93IGluIHRoZSB0YWJsZS4KK0lmIE4gaXMgbmVnYXRpdmUsIG1vdmUgdG8g dGhlIHByZXZpb3VzIHJvdy4KK0lmIHBvaW50IGlzIG9uIHRoZSBsYXN0IHJvdyBvZiB0aGUgdGFi bGUsIGluc2VydCBhIG5ldyByb3cgYmVsb3cgYW5kCittb3ZlIGludG8gaXQuICBXaXRoIGEgcHJl Zml4IGFyZ3VtZW50LCBjbG9uZSB0aGUgZmluYWwgcm93IGludG8gdGhlIG5ldworb25lLgorSWYg bm90IGluIGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93 bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtbmV4dC1yb3cpCisgIChs ZXQgKChiYWNrd2FyZHMgKGFuZCBuICg8IG4gMCkpKSkKKyAgICA7OyBEb24ndCB1c2UgYG1hcmtk b3duLXRzLS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcycgYmVjYXVzZSB3ZSB3YW50CisgICAgOzsg dG8gb3BlcmF0ZSBpbiB0aGUgaGVhZGVyLgorICAgICh3aGVuLWxldCogKChhdC10YWJsZSAobWFy a2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0 LXRhYmxlKSkKKyAgICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAg ICAgICAgICAgKHJvdyAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93IG5pbCBwb3MpKSkKKyAg ICAgIDs7IElmIG5vIG5leHQgb3IgcHJldiBzaWJsaW5nLCB3ZSdyZSBvbiB0aGUgbGFzdC9maXJz dCByb3cuCisgICAgICAobGV0ICgoY3VycmVudC1jb2x1bW4gKGN1cnJlbnQtY29sdW1uKSkKKyAg ICAgICAgICAgIChuZXh0LXJvdyAoaWYgYmFja3dhcmRzCisgICAgICAgICAgICAgICAgICAgICAg ICAgICh0cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5nIHJvdyAnbmFtZWQpCisgICAgICAgICAgICAg ICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyByb3cgJ25hbWVkKSkpKQorICAg ICAgICAoaWYgbmV4dC1yb3cKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1z dGFydCBuZXh0LXJvdykpCisgICAgICAgICAgKHVubGVzcyBiYWNrd2FyZHMKKyAgICAgICAgICAg IChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtcm93LWJlbG93IGN1cnJlbnQtcHJlZml4LWFyZykp KQorICAgICAgICAobW92ZS10by1jb2x1bW4gY3VycmVudC1jb2x1bW4pKSkpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtdGFibGUtcHJldmlvdXMtY2VsbCAoKQorICAiTW92ZSB0byB0aGUgcHJldmlv dXMgY2VsbCBpbiB0aGUgdGFibGUuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4iCisg IChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLW5leHQtY2VsbCAtMSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy10YWJsZS1uZXh0LWNlbGwgKCZvcHRpb25hbCBuKQorICAiTW92ZSB0 byB0aGUgbmV4dCBjZWxsIGluIHRoZSB0YWJsZS4KK0lmIE4gaXMgbmVnYXRpdmUsIG1vdmUgdG8g dGhlIHByZXZpb3VzIGNlbGwuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChp bnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10 cy10YWJsZS1uZXh0LWNlbGwpCisgIChsZXQgKChiYWNrd2FyZHMgKGFuZCBuICg8IG4gMCkpKSkK KyAgICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQp KQorICAgICAgICAgICAgICAgIChwb3MgKGNhciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICAg KHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAgIChub2RlICh0cmVlc2l0LW5v ZGUtYXQgcG9zICdtYXJrZG93biAnbmFtZWQpKQorICAgICAgICAgICAgICAgIChjZWxsIChtYXJr ZG93bi10cy0tdGFibGUtbm9kZS1jZWxsIG5vZGUpKQorICAgICAgICAgICAgICAgIChjZWxsLXR5 cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAgICAgICAgICAgICAgIChyb3cgKG1hcmtk b3duLXRzLS10YWJsZS1ub2RlLXJvdyBjZWxsKSkKKyAgICAgICAgICAgICAgICAocm93LXR5cGUg KHRyZWVzaXQtbm9kZS10eXBlIHJvdykpCisgICAgICAgICAgICAgICAgKG5leHQtY2VsbAorICAg ICAgICAgICAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgOzsgSWYgaW4gYSBwaXBlX3Rh YmxlX2RlbGltaXRlcl9yb3cgYW5kIG5vdCB0aGUgZmlyc3QKKyAgICAgICAgICAgICAgICAgIDs7 IG9yIGZpbmFsIGNlbGwgaW4gdGhlIHJvdywgc3RheSB3aXRoaW4gdGhlIHJvdworICAgICAgICAg ICAgICAgICAgOzsgb3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBjb25kaXRpb24gc2hvdWxkIG1hdGNo LgorICAgICAgICAgICAgICAgICAgKChhbmQgKGVxdWFsIHJvdy10eXBlICJwaXBlX3RhYmxlX2Rl bGltaXRlcl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGJhY2t3YXJkcworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5nIGNlbGwg J25hbWVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2li bGluZyBjZWxsICduYW1lZCkpKQorICAgICAgICAgICAgICAgICAgIChpZiBiYWNrd2FyZHMKKyAg ICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1wcmV2LXNpYmxpbmcgY2VsbCAnbmFt ZWQpCisgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBjZWxs ICduYW1lZCkpKQorICAgICAgICAgICAgICAgICAgOzsgSWYgb24gdGhlIGZpcnN0IHBpcGVfdGFi bGVfcm93J3MgZmlyc3QgY2VsbCBtb3ZpbmcKKyAgICAgICAgICAgICAgICAgIDs7IGJhY2t3YXJk cywgbW92ZSBpbnRvIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgICAgOzsgcGlwZV90YWJsZV9k ZWxpbWl0ZXJfY2VsbC4KKyAgICAgICAgICAgICAgICAgICgoYW5kIChlcXVhbCBjZWxsLXR5cGUg InBpcGVfdGFibGVfY2VsbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVz aXQtbm9kZS10eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5v ZGUtcHJldi1zaWJsaW5nIHJvdyAnbmFtZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJwaXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAg KG5vdCAodHJlZXNpdC1ub2RlLXByZXYtc2libGluZyBjZWxsICduYW1lZCkpCisgICAgICAgICAg ICAgICAgICAgICAgICBiYWNrd2FyZHMpCisgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2Vh cmNoLWZvcndhcmQKKyAgICAgICAgICAgICAgICAgICAgY2VsbAorICAgICAgICAgICAgICAgICAg ICAiXFxgcGlwZV90YWJsZV9kZWxpbWl0ZXJfY2VsbFxcJyIgYmFja3dhcmRzKSkKKyAgICAgICAg ICAgICAgICAgIDs7IElmIG9uIHRoZSBmaXJzdCBwaXBlX3RhYmxlX2hlYWRlcidzIGZpbmFsIGNl bGwKKyAgICAgICAgICAgICAgICAgIDs7IG1vdmluZyBmb3J3YXJkcywgbW92ZSBpbnRvIHRoZSBm aXJzdAorICAgICAgICAgICAgICAgICAgOzsgcGlwZV90YWJsZV9kZWxpbWl0ZXJfY2VsbC4KKyAg ICAgICAgICAgICAgICAgICgoYW5kIChlcXVhbCBjZWxsLXR5cGUgInBpcGVfdGFibGVfY2VsbCIp CisgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIHJv dyAnbmFtZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwaXBlX3RhYmxlX2Rl bGltaXRlcl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAodHJlZXNpdC1ub2Rl LW5leHQtc2libGluZyBjZWxsICduYW1lZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAobm90 IGJhY2t3YXJkcykpCisgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQK KyAgICAgICAgICAgICAgICAgICAgY2VsbAorICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90 YWJsZV9kZWxpbWl0ZXJfY2VsbFxcJyIgYmFja3dhcmRzKSkKKyAgICAgICAgICAgICAgICAgICh0 CisgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQKKyAgICAgICAgICAg ICAgICAgICAgY2VsbAorICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9jZWxsXFwn IiBiYWNrd2FyZHMpKSkpKQorICAgICAgOzsgS2VlcCBwb2ludCB3aXRoaW4gdGhlIGN1cnJlbnQg dGFibGUuCisgICAgICAod2hlbiAodHJlZXNpdC1ub2RlLWVxIHRhYmxlICh0cmVlc2l0LXNlYXJj aC1mb3J3YXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LWNlbGwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxlXFwnIiAn YmFja3dhcmQpKQorICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbmV4dC1j ZWxsKSkpCisgICAgICAod2hlbiAob3IgKGVxIG1hcmtkb3duLXRzLXRhYmxlLWF1dG8tYWxpZ24g dCkKKyAgICAgICAgICAgICAgICAobWVtcSAnY2VsbC1uYXZpZ2F0aW9uIG1hcmtkb3duLXRzLXRh YmxlLWF1dG8tYWxpZ24pKQorICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tdGFibGUp KSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdy1iZWxvdyAoJm9wdGlv bmFsIGNsb25lKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGJlbG93IHBvaW50LgorSWYgcG9pbnQg aXMgaW4gdGhlIGhlYWRlciwgaW5zZXJ0IGJlbG93IHRoZSBmaXJzdCByb3cgb2YgdGhlIHRhYmxl LgorSWYgQ0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xvbmUg dGhlIGN1cnJlbnQgcm93LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcu IgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAoc2V0cSBjbG9uZSAob3IgY2xvbmUgY3VycmVudC1w cmVmaXgtYXJnKSkKKyAgICAobWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdyAnYmVsb3cgY2xv bmUpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdy1hYm92ZSAoJm9wdGlv bmFsIGNsb25lKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGFib3ZlIHBvaW50LgorSWYgcG9pbnQg aXMgaW4gdGhlIGhlYWRlciwgaW5zZXJ0IGFib3ZlIHRoZSBmaXJzdCByb3cgb2YgdGhlIHRhYmxl LgorSWYgQ0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xvbmUg dGhlIGN1cnJlbnQgcm93LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcu IgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAoc2V0cSBjbG9uZSAob3IgY2xvbmUgY3VycmVudC1w cmVmaXgtYXJnKSkKKyAgICAobWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdyAnYWJvdmUgY2xv bmUpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWJlbG93ICgpCisgICJJ bnNlcnQgYSB0YWJsZSByb3cgYmVsb3cgcG9pbnQuCitJZiBwb2ludCBpcyBpbiB0aGUgaGVhZGVy LCBpbnNlcnQgYmVsb3cgdGhlIGZpcnN0IHJvdyBvZiB0aGUgdGFibGUuCitJZiBwb2ludCBpcyBu b3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3du LXRzLXRhYmxlLWluc2VydC1yb3ctYmVsb3cgJ2Nsb25lKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LXRhYmxlLWNsb25lLXJvdy1hYm92ZSAoKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGFib3ZlIHBv aW50LgorSWYgcG9pbnQgaXMgaW4gdGhlIGhlYWRlciwgaW5zZXJ0IGFib3ZlIHRoZSBmaXJzdCBy b3cgb2YgdGhlIHRhYmxlLgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcu IgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtcm93LWFib3Zl ICdjbG9uZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtcm93ICgmb3B0aW9u YWwgYWJvdmUgY2xvbmUpCisgICJJbnNlcnQgYSB0YWJsZSByb3cgYmVsb3cgcG9pbnQuCitJZiBw b2ludCBpcyBpbiB0aGUgaGVhZGVyLCBpbnNlcnQgYmVsb3cgdGhlIGZpcnN0IHJvdyBvZiB0aGUg dGFibGUuCitJZiBBQk9WRSBpcyBub24tbmlsIGFuZCBpcyBub3QgYGJlbG93Jywgb3Igd2l0aCBh IHByZWZpeCBhcmd1bWVudCwKK2luc2VydCB0aGUgcm93IGFib3ZlIHBvaW50LgorSWYgQ0xPTkUg aXMgbm9uLW5pbCwgY2xvbmUgdGhlIGN1cnJlbnQgcm93LCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5 CitjZWxscy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGlu dGVyYWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93 bi10cy10YWJsZS1pbnNlcnQtcm93KQorICAoc2V0cSBhYm92ZSAoY29uZCAoKGVxIGFib3ZlICdi ZWxvdykgbmlsKQorICAgICAgICAgICAgICAgICAgICAoYWJvdmUgYWJvdmUpCisgICAgICAgICAg ICAgICAgICAgIChjdXJyZW50LXByZWZpeC1hcmcgdCkpKQorICAod2hlbi1sZXQqICgoYXQtdGFi bGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAocG9zIChj YXIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAg ICAgICAgICAgIChkZWxpbWl0ZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgICAgICAobmNv bHMgKHRyZWVzaXQtbm9kZS1jaGlsZC1jb3VudCBkZWxpbWl0ZXItcm93ICduYW1lZCkpCisgICAg ICAgICAgICAgIChoZWFkaW5nLXdpZHRocworICAgICAgICAgICAgICAgKGxldCAocmVzKQorICAg ICAgICAgICAgICAgICAoZG9saXN0IChlbHQgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBkZWxpbWl0 ZXItcm93ICduYW1lZCkpCisgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxlbmd0aCAodHJlZXNp dC1ub2RlLXRleHQgZWx0KSkgcmVzKSkKKyAgICAgICAgICAgICAgICAgKG5yZXZlcnNlIHJlcykp KSkKKyAgICAobGV0KiAoKG5lYXIgKG1hcmtkb3duLXRzLS10YWJsZS1ib2R5LXJvdy1uZWFyLXBv cyBwb3MpKQorICAgICAgICAgICAocm93IChjYXIgbmVhcikpCisgICAgICAgICAgIChjdXJyZW50 LWNvbHVtbiAoY3VycmVudC1jb2x1bW4pKSkKKyAgICAgIDs7IElmIHJvdyBpcyBuaWwsIHRoZXJl IGFyZSB6ZXJvIHJvd3Mgc28gYWRkIG9uZSBiZWxvdyB0aGUKKyAgICAgIDs7IGRlbGltaXRlci1y b3cuCisgICAgICAodW5sZXNzIHJvdworICAgICAgICAoc2V0cSBjbG9uZSBuaWwpCisgICAgICAg IChzZXRxIHJvdyBkZWxpbWl0ZXItcm93KQorICAgICAgICAoc2V0cSBhYm92ZSBuaWwpKQorICAg ICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgIChjb25kIChhYm92ZQorICAgICAgICAgICAgICAg KGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IHJvdykpKQorICAgICAgICAgICAgICAodAor ICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCByb3cpKQorICAgICAg ICAgICAgICAgKGluc2VydCAiXG4iKSkpCisgICAgICAgIChjb25kIChjbG9uZQorICAgICAgICAg ICAgICAgOzsgVGhlIGNsb25lIHN0cmF0ZWd5IGlzIFdZU0lXWUcuICBKdXN0IGNvcHkgdGhlIHRl eHQKKyAgICAgICAgICAgICAgIDs7IGFuZCBkb24ndCBmdXNzIHdpdGggY2VsbCBjb250ZW50IGFu ZCBwaXBlIHN5bWJvbHMuCisgICAgICAgICAgICAgICA7OyBUaGUgZ3JhbW1hciBpbmNsdWRlcyB0 aGUgZmluYWwgbmV3bGluZSAoYW5kCisgICAgICAgICAgICAgICA7OyBzb21ldGltZXMgbm90KS4K KyAgICAgICAgICAgICAgIChpbnNlcnQgKHN0cmluZy10cmltLXJpZ2h0CisgICAgICAgICAgICAg ICAgICAgICAgICAodHJlZXNpdC1ub2RlLXRleHQgcm93ICduby1wcm9wZXJ0eSkgIlxuIikpKQor ICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgKGluc2VydCAifCIpCisgICAgICAgICAg ICAgICAoZG90aW1lcyAoeCBuY29scykKKyAgICAgICAgICAgICAgICAgKGxldCAoKHBhZC13aWR0 aCAobnRoIHggaGVhZGluZy13aWR0aHMpKSkKKyAgICAgICAgICAgICAgICAgICA7OyBUT0RPOiBS ZW1vdmUgdGhlIHBsYWNlaG9sZGVyIGNoYXJhY3RlciBpZiB0aGUKKyAgICAgICAgICAgICAgICAg ICA7OyB0cmVlLXNpdHRlciBncmFtbWFyIGlzIHJlcGFpcmVkLgorICAgICAgICAgICAgICAgICAg IChpbnNlcnQgKGlmIChlcSB4IDApICIuIiAiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IChtYWtlLXN0cmluZyAoLSBwYWQtd2lkdGggKGlmIChlcSB4IDApIDEgMCkpID9ccykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICJ8IikpKSkpCisgICAgICAgICh3aGVuIGFib3ZlCisgICAg ICAgICAgKGluc2VydCAiXG4iKSkpCisgICAgICAoY29uZCAoYWJvdmUKKyAgICAgICAgICAgICAo d2hlbiAoPiBjdXJyZW50LWNvbHVtbiAwKQorICAgICAgICAgICAgICAgKHdpdGgtc3VwcHJlc3Nl ZC13YXJuaW5ncyAoKGludGVyYWN0aXZlLW9ubHkgcHJldmlvdXMtbGluZSkpCisgICAgICAgICAg ICAgICAgIChwcmV2aW91cy1saW5lKSkpKQorICAgICAgICAgICAgKHQgKHdpdGgtc3VwcHJlc3Nl ZC13YXJuaW5ncyAoKGludGVyYWN0aXZlLW9ubHkgbmV4dC1saW5lKSkKKyAgICAgICAgICAgICAg ICAgKG5leHQtbGluZSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1y b3cgKCkKKyAgIkRlbGV0ZSB0aGUgdGFibGUgcm93IGF0IHBvaW50LgorSWYgcG9pbnQgaXMgb24g dGhlIGhlYWRlciBvciBkZWxpbWl0ZXIgcm93LCBkbyBub3RoaW5nLgorSWYgcG9pbnQgaXMgbm90 IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10 cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLXJvdykKKyAgKHdo ZW4tbGV0KiAoKG5lYXIgKG1hcmtkb3duLXRzLS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcyBuaWwg dCkpCisgICAgICAgICAgICAgIDs7IEJhaWwgaWYgcG9pbnQgaXMgb24gdGhlIGhlYWRlciBvciBk ZWxpbWl0ZXIgcm93IOKAlCBkbworICAgICAgICAgICAgICA7OyBub3Qgc2lsZW50bHkgZGVsZXRl IGEgYm9keSByb3cgdGhlIHVzZXIgZGlkIG5vdCBzZWxlY3QuCisgICAgICAgICAgICAgICgobm90 IChjZHIgbmVhcikpKQorICAgICAgICAgICAgICAocm93IChjYXIgbmVhcikpKQorICAgIChsZXQg KChjdXJyZW50LWNvbHVtbiAoY3VycmVudC1jb2x1bW4pKSkKKyAgICAgIChkZWxldGUtcmVnaW9u ICh0cmVlc2l0LW5vZGUtc3RhcnQgcm93KQorICAgICAgICAgICAgICAgICAgICAgKG1pbiAoMSsg KHRyZWVzaXQtbm9kZS1lbmQgcm93KSkgKHBvaW50LW1heCkpKQorICAgICAgKG1vdmUtdG8tY29s dW1uIGN1cnJlbnQtY29sdW1uKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1y b3ctdXAgKCkKKyAgIk1vdmUgdGhlIHJvdyBhdCBwb2ludCB1cCBvbmUgbGluZS4KK0lmIHBvaW50 IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFy a2Rvd24tdHMtdGFibGUtbW92ZS1yb3cpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92 ZS1yb3ctZG93biAoKQorICAiTW92ZSB0aGUgcm93IGF0IHBvaW50IGRvd24gb25lIGxpbmUuCitJ ZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkK KyAgKG1hcmtkb3duLXRzLXRhYmxlLW1vdmUtcm93ICdkb3duKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLXRhYmxlLW1vdmUtcm93ICgmb3B0aW9uYWwgZG93bikKKyAgIk1vdmUgdGhlIHJvdyBhdCBw b2ludCB1cCBvbmUgbGluZS4KK0lmIERPV04gaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBh cmd1bWVudCwgbW92ZSB0aGUgcm93IGRvd24gb25lCitsaW5lLgorSWYgcG9pbnQgaXMgb24gdGhl IGhlYWRlciBvciBkZWxpbWl0ZXIgcm93LCBkbyBub3RoaW5nLgorSWYgcG9pbnQgaXMgbm90IGF0 IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0t YmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3cpCisgIChzZXRxIGRv d24gKG9yIGRvd24gY3VycmVudC1wcmVmaXgtYXJnKSkKKyAgKHdoZW4tbGV0KiAoKGF0LXRhYmxl IChtYXJrZG93bi10cy1hdC10YWJsZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgKHBvcyAoY2Fy IGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAg ICAgICAgICAobmVhciAobWFya2Rvd24tdHMtLXRhYmxlLWJvZHktcm93LW5lYXItcG9zIHBvcykp CisgICAgICAgICAgICAgIDs7IEJhaWwgaWYgcG9pbnQgaXMgb24gdGhlIGhlYWRlciBvciBkZWxp bWl0ZXIgcm93IOKAlCBkbworICAgICAgICAgICAgICA7OyBub3Qgc2lsZW50bHkgbW92ZSBhIGJv ZHkgcm93IHRoZSB1c2VyIGRpZCBub3Qgc2VsZWN0LgorICAgICAgICAgICAgICAoKG5vdCAoY2Ry IG5lYXIpKSkKKyAgICAgICAgICAgICAgKHJvdyAoY2FyIG5lYXIpKSkKKyAgICA7OyBEbyBub3Qg bW92ZSBhYm92ZSB0aGUgcGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93LgorICAgIDs7IERvIG5vdCBt b3ZlIGJlbG93IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLgorICAgICh1bmxlc3MgKG9yIChhbmQg KG5vdCBkb3duKQorICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlw ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXByZXYtc2libGlu ZyByb3cgJ25hbWVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGlwZV90YWJsZV9k ZWxpbWl0ZXJfcm93IikpCisgICAgICAgICAgICAgICAgKGFuZCBkb3duCisgICAgICAgICAgICAg ICAgICAgICAobm90ICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIHJvdyAnbmFtZWQpKSkpCisg ICAgICAobGV0ICgocm93MiAoaWYgZG93bgorICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0 LW5vZGUtbmV4dC1zaWJsaW5nIHJvdyAnbmFtZWQpCisgICAgICAgICAgICAgICAgICAgICh0cmVl c2l0LW5vZGUtcHJldi1zaWJsaW5nIHJvdyAnbmFtZWQpKSkKKyAgICAgICAgICAgIChyb3ctZW5k ICh0cmVlc2l0LW5vZGUtZW5kIHJvdykpKQorICAgICAgICA7OyBUT0RPOiBSZW1vdmUgYWZ0ZXIg YnVnIzIzOTAzIFVuZG8gYWZ0ZXIga2IgZGlmZmVycyBmcm9tIGFmdGVyIE0teAorICAgICAgICAo cHVzaCAocG9pbnQpIGJ1ZmZlci11bmRvLWxpc3QpCisgICAgICAgIDs7IElmIHJvdyBwb2ludCBp cyBvdXRzaWRlIGl0cyBzb3VyY2UgcmVnaW9uLCBlLmcuLCBhdCBlb2wsIG1vdmUKKyAgICAgICAg OzsgaXQgaW5zaWRlIHRoZSByZWdpb24gZm9yIHN0YWJpbGl0eS4KKyAgICAgICAgKHdoZW4gKD49 IChwb2ludCkgcm93LWVuZCkKKyAgICAgICAgICAoZ290by1jaGFyIChtYXggKHBvaW50LW1pbikg KDEtIHJvdy1lbmQpKSkpCisgICAgICAgICh0cmFuc3Bvc2UtcmVnaW9ucyAodHJlZXNpdC1ub2Rl LXN0YXJ0IHJvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5k IHJvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgcm93 MikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHJvdzIpKSkp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tbGVmdCAoJm9wdGlv bmFsIGNsb25lKQorICAiSW5zZXJ0IGEgdGFibGUgY29sdW1uIHRvIHRoZSBsZWZ0IG9mIHBvaW50 J3MgY29sdW1uLgorSWYgQ0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVu dCwgY2xvbmUgdGhlIGN1cnJlbnQKK2NvbHVtbiwgb3RoZXJ3aXNlIGluc2VydCBlbXB0eSBjZWxs cy4KK1BvaW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVhZGVyIG9yIGJvZHkuCitJZiBwb2ludCBp cyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICht YXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uICdsZWZ0IGNsb25lKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tcmlnaHQgKCZvcHRpb25hbCBjbG9uZSkKKyAg Ikluc2VydCBhIHRhYmxlIGNvbHVtbiB0byB0aGUgcmlnaHQgb2YgcG9pbnQncyBjb2x1bW4uCitJ ZiBDTE9ORSBpcyBub24tbmlsLCBvciB3aXRoIGEgcHJlZml4IGFyZ3VtZW50LCBjbG9uZSB0aGUg Y3VycmVudAorY29sdW1uLCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5IGNlbGxzLgorUG9pbnQgY2Fu IGJlIGluIHRoZSB0YWJsZSBoZWFkZXIgb3IgYm9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRh YmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLXRh YmxlLWluc2VydC1jb2x1bW4gJ3JpZ2h0IGNsb25lKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRh YmxlLWNsb25lLWNvbHVtbi1sZWZ0ICgpCisgICJDbG9uZSB0aGUgY3VycmVudCBjb2x1bW4gdG8g aXRzIGxlZnQuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYg cG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisg IChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQgJ2Nsb25lKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLXRhYmxlLWNsb25lLWNvbHVtbi1yaWdodCAoKQorICAiQ2xvbmUgdGhlIGN1 cnJlbnQgY29sdW1uIHRvIGl0cyByaWdodC4KK1BvaW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVh ZGVyIG9yIGJvZHkuCitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisg IChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tcmlnaHQg J2Nsb25lKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4gKCZvcHRp b25hbCBsZWZ0IGNsb25lKQorICAiSW5zZXJ0IGEgdGFibGUgY29sdW1uIGFmdGVyIHBvaW50J3Mg Y3VycmVudCBjb2x1bW4uCitJZiBMRUZUIGlzIG5vbi1uaWwgYW5kIGlzIG5vdCBgcmlnaHQnLCBv ciB3aXRoIGEgcHJlZml4IGFyZ3VtZW50LAoraW5zZXJ0IHRoZSBjb2x1bW4gdG8gdGhlIGxlZnQg b2YgdGhlIGN1cnJlbnQgY29sdW1uLgorSWYgQ0xPTkUgaXMgbm9uLW5pbCwgY2xvbmUgdGhlIGN1 cnJlbnQgY29sdW1uLCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5CitjZWxscy4KK0lmIENMT05FIGlz IGEgbGlzdCwgaXRzIGZpcnN0IGVsZW1lbnQgaXMgdGFyZ2V0LWNvbHVtbi1udW1iZXIuICBJdCBp cwordGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRoYXQgdGhpcyB2YWx1ZSBpcyB2YWxpZCBm b3IgdGhlIHRhYmxlLAordGhvdWdoIGl0IG1heSBiZSBpbnZhbGlkIGZvciBhIG5vbi11bmlmb3Jt IHJhZ2dlZCByb3cuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5Lgor SWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUp CisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtaW5z ZXJ0LWNvbHVtbikKKyAgKHNldHEgbGVmdCAoY29uZCAoKGVxIGxlZnQgJ3JpZ2h0KSBuaWwpCisg ICAgICAgICAgICAgICAgICAgKGxlZnQgbGVmdCkKKyAgICAgICAgICAgICAgICAgICAoY3VycmVu dC1wcmVmaXgtYXJnIHQpKSkKKyAgKHdoZW4tbGV0KiAoKGF0LXRhYmxlIChtYXJrZG93bi10cy1h dC10YWJsZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxlKSkKKyAg ICAgICAgICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAoZGVsaW1p dGVyLXJvdyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFibGUgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAg ICAgICA7OyBDb2x1bW4gcG9zIGZvciBpbnNlcnRpbmcgbWlzc2luZyBsZWFkaW5nIHBpcGVzLgor ICAgICAgICAgICAgICAoZGVsaW0wLXBpcGUtY29sCisgICAgICAgICAgICAgICAoc2F2ZS1leGN1 cnNpb24KKyAgICAgICAgICAgICAgICAgKGxldCogKChkZWxpbS1jZWxsICh0cmVlc2l0LW5vZGUt Y2hpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpbWl0ZXItcm93 IDAgJ25hbWVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChiZWcgKHRyZWVzaXQtbm9kZS1z dGFydCBkZWxpbS1jZWxsKSkpCisgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisg ICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9zLWJvbCkpCisgICAgICAgICAgICAgICAg ICAgKGlmIChzZWFyY2gtZm9yd2FyZCAifCIgYmVnIHQpCisgICAgICAgICAgICAgICAgICAgICAg ICgxLSAoY3VycmVudC1jb2x1bW4pKQorICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBi ZWcpCisgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkpKQorICAgICAgICAg ICAgICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24gJ25hbWVkKSkKKyAgICAg ICAgICAgICAgKGNlbGwgKG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLWNlbGwgbm9kZSkpCisgICAg ICAgICAgICAgIChwb2ludC1yb3cgKG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLXJvdyBjZWxsKSkp CisgICAgKGxldCAoKHRhYmxlLWNvbHVtbiAobWFya2Rvd24tdHMtLXRhYmxlLWNvbXB1dGUtbm9k ZS1jb2x1bW4gcG9pbnQtcm93IGNlbGwpKSkKKyAgICAgICh1bmxlc3MgdGFibGUtY29sdW1uCisg ICAgICAgIChlcnJvciAiQ291bGQgbm90IGNvbXB1dGUgdGhlIHRhYmxlIGNvbHVtbiIpKQorICAg ICAgOzsgTk9URTogR0ZNIHRhYmxlcyBhbGxvdyBub24tdW5pZm9ybSB0YWJsZSByb3dzLiAgVGhl IGN1cnJlbnQgcm93CisgICAgICA7OyBjb3VsZCBoYXZlIGEgZGlmZmVyaW5nIG51bWJlciBvZiBj b2x1bW5zIGZyb20gb3RoZXIgcm93cy4gIFdlCisgICAgICA7OyBzaWxlbnRseSBkbyBub3RoaW5n IHRvIGEgcm93IHRoYXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZQorICAgICAgOzsgY29tcHV0ZWQg Y29sdW1uLgorICAgICAgOzsKKyAgICAgIDs7IE5PVEU6IFRoZSBncmFtbWFyIGFubm95aW5nbHkg aWdub3JlcyBjZWxsIGxlYWRpbmcgd2hpdGVzcGFjZQorICAgICAgOzsgYnV0IGluY2x1ZGVzIHRy YWlsaW5nIHdoaXRlc3BhY2UsIHNvIGNlbGxzIGFyZSBib3VuZGVkIGJ5IHRoZQorICAgICAgOzsg Zmlyc3QgZ3JhcGggY2hhcmFjdGVyIHVwIHRvIHRoZSBsYXN0IGNoYXJhY3RlciBqdXN0IGJlZm9y ZSB0aGUKKyAgICAgIDs7IHBpcGUgc3ltYm9sLCBpbmNsdWRpbmcgd2hpdGVzcGFjZS4gIFRoZSBy ZXN1bHQgaXMgdGhlIHJhbmdlCisgICAgICA7OyBkb2VzIG5vdCBzdGFydCBpbW1lZGlhdGVseSBh ZnRlciB0aGUgb3B0aW9uYWwgbGVhZGluZyBwaXBlCisgICAgICA7OyBzeW1ib2wgeWV0IGluY29u c2lzdGVudGx5IGNvbnRpbnVlcyB1bnRpbCBqdXN0IGJlZm9yZSB0aGUKKyAgICAgIDs7IHRyYWls aW5nIHBpcGUuCisgICAgICAobGV0KiAoKGFkaiAwKSA7IEFkanVzdCBub2RlIHBvc2l0aW9uIG9m ZnNldHMgYnkgaW5zZXJ0ZWQgdGV4dC4KKyAgICAgICAgICAgICAod2lkdGggbWFya2Rvd24tdHMt dGFibGUtZGVmYXVsdC1jb2x1bW4td2lkdGgpCisgICAgICAgICAgICAgKGVtcHR5IChtYWtlLXN0 cmluZyB3aWR0aCA/XHMpKQorICAgICAgICAgICAgIDs7IFRPRE86IFJlbW92ZSB0aGUgcGxhY2Vo b2xkZXIgY2hhcmFjdGVyIGlmIHRoZSB0cmVlLXNpdHRlcgorICAgICAgICAgICAgIDs7IGdyYW1t YXIgaXMgcmVwYWlyZWQuCisgICAgICAgICAgICAgKHBsYWNlaG9sZGVyIChjb25jYXQgIi4iICht YWtlLXN0cmluZyAoMS0gd2lkdGgpID9ccykpKQorICAgICAgICAgICAgIChkZWxpbSAobWFrZS1z dHJpbmcgd2lkdGggPy0pKQorICAgICAgICAgICAgIChyb3dzICh0cmVlc2l0LW5vZGUtY2hpbGRy ZW4gdGFibGUgJ25hbWVkKSkKKyAgICAgICAgICAgICAobnJvd3MgKGxlbmd0aCByb3dzKSkKKyAg ICAgICAgICAgICAodGFyZ2V0LWNvbHVtbi1udW1iZXIgKGFuZCAobGlzdHAgY2xvbmUpIChjYXIg Y2xvbmUpKSkKKyAgICAgICAgICAgICA7OyBQb3NpdGlvbiB0byBtb3ZlIHBvaW50IHRvIGFmdGVy IGFsbCByb3dzIGhhdmUgYmVlbgorICAgICAgICAgICAgIDs7IHVwZGF0ZWQuICBEZXRlcm1pbmlz dGljIHBsYWNlbWVudCBhdm9pZHMgZGVwZW5kaW5nIG9uCisgICAgICAgICAgICAgOzsgdHJlZS1z aXR0ZXIgbmF2aWdhdGlvbiB0aHJvdWdoIGZyZXNobHktaW5zZXJ0ZWQgZW1wdHkKKyAgICAgICAg ICAgICA7OyBjZWxscywgd2hpY2ggdGhlIGdyYW1tYXIgZG9lcyBub3QgYWx3YXlzIHJlcGFyc2Ug YXMKKyAgICAgICAgICAgICA7OyBwaXBlX3RhYmxlX2NlbGwgbm9kZXMuCisgICAgICAgICAgICAg KHRhcmdldC1wb3MpKQorICAgICAgICA7OyBUT0RPOiBSZW1vdmUgYWZ0ZXIgYnVnIzIzOTAzIFVu ZG8gYWZ0ZXIga2IgZGlmZmVycyBmcm9tIGFmdGVyIE0teAorICAgICAgICAocHVzaCAocG9pbnQp IGJ1ZmZlci11bmRvLWxpc3QpCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICh3 aXRob3V0LXJlc3RyaWN0aW9uCisgICAgICAgICAgICAoZG90aW1lcyAoeCBucm93cykKKyAgICAg ICAgICAgICAgKHdoZW4tbGV0KiAoKHJvdyAobnRoIHggcm93cykpCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChyb3ctdHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgcm93KSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgIDs7IHNvdXJjZS1jZWxsIHdpbGwgYmUgbmlsIGlmIHRhYmxlLWNv bHVtbiBpcyBiZXlvbmQgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICA7OyByb3cncyBj b2x1bW4gc2V0IGFuZCB0aGF0IHJvdyB3aWxsIGJlIHNraXBwZWQuCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChzb3VyY2UtY2VsbCAobnRoIHRhYmxlLWNvbHVtbiBjb2xzKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgSWYgY2xvbmluZyB3aXRoIGEgc3BlY2lmaWVkIHRhcmdldC1j b2x1bW4tbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0YXJnZXQtY2VsbCB3 aWxsIGJlIG5pbCBhbmQgdGhlIHJvdyB3aWxsIGJlIHNraXBwZWQuCisgICAgICAgICAgICAgICAg ICAgICAgICAgICh0YXJnZXQtY2VsbCAoaWYgdGFyZ2V0LWNvbHVtbi1udW1iZXIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggdGFyZ2V0LWNvbHVtbi1udW1i ZXIgY29scykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Ut Y2VsbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IENvbXB1dGUgdGhlIGluc2VydGlv biBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZyAoY29uZAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBjbG9uaW5nIHRvIGEgc3BlY2lmaWVkIHRhcmdl dCwgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRhcmdldC1jZWxsJ3Mg ZW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0LWNvbHVtbi1udW1i ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGFkagorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgdGFyZ2V0LWNlbGwpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgaW5zZXJ0aW5nIHRvIHRoZSBs ZWZ0IG9mIHRoZSBmaXJzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBjb2x1 bW4sIHVzZSBzb3VyY2UgY2VsbCdzIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IGFkanVzdGVkIGZvciBpdHMgb3B0aW9uYWwgcGlwZSB0bworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBjYXB0dXJlIGl0cyB3aGl0ZXNwYWNlLiAgSWYgdGhlcmUgaXMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgbm8gcGlwZSwgdXNlIGJvbC4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQgbGVmdCAoZXEgdGFibGUtY29sdW1u IDApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHAgKCsgYWRqCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LXN0YXJ0IHNvdXJjZS1jZWxsKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIHApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgKHBvcy1ib2wpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYg KHNlYXJjaC1mb3J3YXJkICJ8IiBwIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBwICgxLSAocG9pbnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0cSBwIChwb3MtYm9sKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBpbnNl cnRpbmcgbGVmdCBhbmQgYW55IG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IGNvbHVtbiwgdXNlIHRoZSBlbmQgb2YgdGhlIHByaW9yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IGNlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs ZWZ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGoKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgxKyAodHJlZXNpdC1ub2RlLWVuZAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoICgxLSB0YWJsZS1jb2x1bW4pIGNv bHMpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBpbnNlcnRpbmcg cmlnaHQsIHVzZSB0aGUgZW5kIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7 IHRoZSBjdXJyZW50IGNlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHNvdXJjZS1jZWxsKSkpKSkpCisg ICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAgICAgICAgICAgKGxldCogKChv cmlnLXBvaW50IChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgIChtaXNzaW5nLWxlYWRp bmctcGlwZQorICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIHRhYmxlLWNvbHVtbiAw KQorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZ290by1jaGFyIChwb3MtYm9sKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodW5sZXNzIChzZWFyY2gtZm9yd2FyZAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgrIGFkaiAodHJlZXNpdC1ub2RlLXN0YXJ0IHNvdXJjZS1jZWxsKSkgdCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJ8IikpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHRleHQg KGNvbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IElmIGNsb25pbmcsIHJldHJp ZXZlIHRoZSBzb3VyY2UgY2VsbCB0ZXh0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNsb25lIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOzsgQmFjayB1cCB0byBib2wgb3IgdGhlIHBpcGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgdG8gY2FwdHVyZSB0aGUgd2hpdGVz cGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0aGUgZ3JhbW1h ciBsZWF2ZXMgb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2F2 ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290 by1jaGFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGFkagor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LXN0YXJ0IHNvdXJjZS1jZWxsKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIltbOmJsYW5rOl1dIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3MtYm9sKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGogKHRyZWVzaXQtbm9kZS1lbmQg c291cmNlLWNlbGwpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBuZXcg Y29sdW1uLCBhbmQgdGhpcyBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7 IGRlbGltaXRlciByb3csIGluc2VydCBhIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IGRlbGltaXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXF1 YWwgcm93LXR5cGUgInBpcGVfdGFibGVfZGVsaW1pdGVyX3JvdyIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGVsaW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJ ZiBuZXcgY29sdW1uLCBhbmQgdGhpcyBpcyB0aGUgYSBoZWFkZXIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IG9yIGJvZHkgcm93LCBpbnNlcnQgYSBkZWZhdWx0IGVtcHR5CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5KSkpKQor ICAgICAgICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAoY2xvbmUKKyAgICAg ICAgICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgOzsgQ2xvbmUgdGhlIGZp cnN0IGNvbHVtbiB0byB0aGUgbGVmdC4gIElmIHRoZXJlIGlzCisgICAgICAgICAgICAgICAgICAg IDs7IG5vIHBpcGUgYmVmb3JlIHRoZSBjZWxsIGNvbnRlbnQsIGluc2VydCBvbmUuCisgICAgICAg ICAgICAgICAgICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gMCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAoaW5zZXJ0ICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciBtaXNzaW5nLWxlYWRp bmctcGlwZSAiIikpKQorICAgICAgICAgICAgICAgICAgICA7OyBDbG9uZSB0aGUgZmlyc3QgY29s dW1uIHRvIHRoZSByaWdodC4KKyAgICAgICAgICAgICAgICAgICAgICgoYW5kIChub3QgbGVmdCkg KGVxIHRhYmxlLWNvbHVtbiAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJ8Igor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCkKKyAgICAgICAgICAgICAgICAgICAg ICA7OyBGb3IgYSBwb3NpdGl2ZSB1c2VyIGV4cGVyaWVuY2UgZ2l2ZW4gZ3JhbW1hcgorICAgICAg ICAgICAgICAgICAgICAgIDs7IGJ1Z3MsIGFkZCBhIG1pc3NpbmcgbGVhZGluZyBwaXBlIHRvIHRo ZSBmaXJzdAorICAgICAgICAgICAgICAgICAgICAgIDs7IGNlbGwgYXQgYSBwbGVhc2luZyBwb3Np dGlvbiBhZnRlciBjbG9uaW5nLgorICAgICAgICAgICAgICAgICAgICAgICh3aGVuIG1pc3Npbmct bGVhZGluZy1waXBlCisgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmUtdG8tY29sdW1uIGRlbGltMC1waXBlLWNvbCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgKGluc2VydCAifCIpKSkpCisgICAgICAgICAgICAg ICAgICAgIDs7IENsb25lIHRoZSBmaW5hbCBjb2x1bW4gdG8gdGhlIGxlZnQuCisgICAgICAgICAg ICAgICAgICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gKDEtIG5jb2xzKSkpCisgICAg ICAgICAgICAgICAgICAgICAgKGluc2VydCB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAifCIpKQorICAgICAgICAgICAgICAgICAgICAgOzsgQ2xvbmUgYSBtaWRkbGUgY29sdW1u IHRvIHRoZSBsZWZ0LgorICAgICAgICAgICAgICAgICAgICAgKGxlZnQKKyAgICAgICAgICAgICAg ICAgICAgICAoaW5zZXJ0IHRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ8Iikp CisgICAgICAgICAgICAgICAgICAgICA7OyBDbG9uZSBhIG1pZGRsZSBvciBmaW5hbCBjb2x1bW4g dG8gdGhlIHJpZ2h0LgorICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAg ICAgICAoaW5zZXJ0ICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCkpKSkK KworICAgICAgICAgICAgICAgICAgIDs7IE5vdCBjbG9uaW5nLCBpbnNlcnQgYSBuZXcgY29sdW1u LgorICAgICAgICAgICAgICAgICAgICgoYW5kIGxlZnQgKGVxIHRhYmxlLWNvbHVtbiAwKSAoZXEg eCAoMS0gbnJvd3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVxdWFsIHJvdy10 eXBlICJwaXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciKSkpCisgICAgICAgICAgICAgICAgICAgOzsg VE9ETzogcmVtb3ZlIHBsYWNlaG9sZGVyIGxvZ2ljLgorICAgICAgICAgICAgICAgICAgICAoaW5z ZXJ0CisgICAgICAgICAgICAgICAgICAgICAifCIKKyAgICAgICAgICAgICAgICAgICAgIHBsYWNl aG9sZGVyCisgICAgICAgICAgICAgICAgICAgICAob3IgbWlzc2luZy1sZWFkaW5nLXBpcGUgIiIp KSkKKyAgICAgICAgICAgICAgICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gMCkpCisg ICAgICAgICAgICAgICAgICAgICAgKGluc2VydAorICAgICAgICAgICAgICAgICAgICAgICAifCIK KyAgICAgICAgICAgICAgICAgICAgICAgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAob3Ig bWlzc2luZy1sZWFkaW5nLXBpcGUgIiIpKSkKKyAgICAgICAgICAgICAgICAgICAobGVmdAorICAg ICAgICAgICAgICAgICAgICAoaW5zZXJ0CisgICAgICAgICAgICAgICAgICAgICB0ZXh0CisgICAg ICAgICAgICAgICAgICAgICAifCIpKQorICAgICAgICAgICAgICAgICAgICh0CisgICAgICAgICAg ICAgICAgICAgIChpbnNlcnQKKyAgICAgICAgICAgICAgICAgICAgICJ8IgorICAgICAgICAgICAg ICAgICAgICAgdGV4dCkpKQorCisgICAgICAgICAgICAgICAgICA7OyBDYXB0dXJlIHRoZSBzdGFy dCBvZiB0aGUgbmV3IGNlbGwncyBjb250ZW50IGluCisgICAgICAgICAgICAgICAgICA7OyB0aGUg cm93IHRoYXQgb3JpZ2luYWxseSBjb250YWluZWQgcG9pbnQuCisgICAgICAgICAgICAgICAgICAo d2hlbiAoYW5kIChub3QgdGFyZ2V0LXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHRyZWVzaXQtbm9kZS1lcSByb3cgcG9pbnQtcm93KSkKKyAgICAgICAgICAgICAgICAgICAgKHNl dHEgdGFyZ2V0LXBvcworICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHRhcmdldC1jb2x1bW4tbnVtYmVyCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCB0YXJnZXQtY2VsbCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYW5k IGxlZnQgKG5vdCAoZXEgdGFibGUtY29sdW1uIDApKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgInRleHQgfCIgaW5zZXJ0ZWQgYXQgYmVnLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvcmlnLXBvaW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 OyBBbGwgb3RoZXIgYnJhbmNoZXMgaW5zZXJ0ICJ8IiBmaXJzdC4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgxKyBvcmlnLXBvaW50KSkpKSkpCisKKyAgICAgICAgICAgICAgICAgIDs7 IEFkanVzdCBvZmZzZXQgZm9yIGRlbGV0ZWQgdGV4dC4KKyAgICAgICAgICAgICAgICAgIChzZXRx IGFkaiAoKyBhZGogKC0gKHBvaW50KSBvcmlnLXBvaW50KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgIG9yaWctcG9pbnQgKHBvaW50KSkpKSkpKQorICAgICAgICAod2hlbiB0YXJnZXQtcG9zCisg ICAgICAgICAgKGdvdG8tY2hhciB0YXJnZXQtcG9zKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy10YWJsZS1kZWxldGUtY29sdW1uICgpCisgICJEZWxldGUgdGhlIHRhYmxlIGNvbHVtbiBhdCBw b2ludC4KK1BvaW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVhZGVyIG9yIGJvZHkuCitJZiBwb2lu dCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1h cmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJsZS1kZWxldGUtY29s dW1uKQorICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmls IHQpKQorICAgICAgICAgICAgICAocG9zIChjYXIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAo dGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10cy0t dGFibGUtbm9kZS1jZWxsIG5pbCBwb3MpKQorICAgICAgICAgICAgICAocm93IChtYXJrZG93bi10 cy0tdGFibGUtbm9kZS1yb3cgY2VsbCkpCisgICAgICAgICAgICAgIChjb2xzICh0cmVlc2l0LW5v ZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpCisgICAgICAgICAgICAgIChuY29scyAobGVuZ3RoIGNv bHMpKSkKKyAgICAobGV0ICgodGFibGUtY29sdW1uIChtYXJrZG93bi10cy0tdGFibGUtY29tcHV0 ZS1ub2RlLWNvbHVtbiByb3cgY2VsbCkpKQorICAgICAgKHVubGVzcyB0YWJsZS1jb2x1bW4KKyAg ICAgICAgKGVycm9yICJDb3VsZCBub3QgY29tcHV0ZSB0aGUgdGFibGUgY29sdW1uIikpCisgICAg ICA7OyBOT1RFOiBHRk0gdGFibGVzIGFsbG93IG5vbi11bmlmb3JtIHRhYmxlIHJvd3MuICBUaGUg Y3VycmVudCByb3cKKyAgICAgIDs7IGNvdWxkIGhhdmUgYSBkaWZmZXJpbmcgbnVtYmVyIG9mIGNv bHVtbnMgZnJvbSBvdGhlciByb3dzLiAgV2UKKyAgICAgIDs7IHNpbGVudGx5IGRvIG5vdGhpbmcg dG8gYSByb3cgdGhhdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlCisgICAgICA7OyBjb21wdXRlZCBj b2x1bW4uCisgICAgICA7OworICAgICAgOzsgTk9URTogVGhlIGdyYW1tYXIgYW5ub3lpbmdseSBp Z25vcmVzIGNlbGwgbGVhZGluZyB3aGl0ZXNwYWNlCisgICAgICA7OyBidXQgZG9lcyBpbmNsdWRl IHRyYWlsaW5nIHdoaXRlc3BhY2Ugc28gY2VsbHMgYXJlIGJvdW5kZWQgYnkKKyAgICAgIDs7IHRo ZSBmaXJzdCBncmFwaCBjaGFyYWN0ZXIgdXAgdG8gdGhlIGxhc3QgY2hhcmFjdGVyIGp1c3QgYmVm b3JlCisgICAgICA7OyB0aGUgcGlwZSBzeW1ib2wsIGluY2x1ZGluZyB3aGl0ZXNwYWNlLgorICAg ICAgOzsKKyAgICAgIDs7IFRoZSBncmFtbWFyIGFsc28gY29uc2lkZXJzIHRoZSB0cmFpbGluZyBw aXBlIHN5bWJvbCB0byBiZSBhCisgICAgICA7OyBwYXJ0IG9mIGl0cyBwcmVjZWRpbmcgY2VsbCBz byB0aGF0J3Mgd2hhdCB3ZSBkZWxldGUgd2hlbiB3ZQorICAgICAgOzsgZGVsZXRlIGEgY29sdW1u J3MgY2VsbDsgaS5lLiwgaWYgdGhlcmUgaXMgYSBwaXBlIGJlZm9yZSB0aGUKKyAgICAgIDs7IGZp cnN0IGNvbHVtbiwgd2UgZGVsZXRlIGl0LgorICAgICAgKGxldCogKChhZGogMCkgOyBBZGp1c3Qg bm9kZSBwb3NpdGlvbiBvZmZzZXRzIGJ5IGRlbGV0ZWQgdGV4dC4KKyAgICAgICAgICAgICAocm93 cyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHRhYmxlICduYW1lZCkpCisgICAgICAgICAgICAgKG5y b3dzIChsZW5ndGggcm93cykpKQorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAo d2l0aG91dC1yZXN0cmljdGlvbgorICAgICAgICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAg ICAgICAgICAgIDs7IElmIGNlbGwgaXMgbmlsLCBpdCBpcyBiZXlvbmQgdGhlIHRhYmxlLWNvbHVt biBhbmQgaXRzCisgICAgICAgICAgICAgIDs7IHJvdyBpcyBpZ25vcmVkLgorICAgICAgICAgICAg ICAod2hlbi1sZXQqICgocm93IChudGggeCByb3dzKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIChjZWxsIChudGggdGFibGUtY29sdW1uIGNvbHMpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAoY2VsbC1iZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBjZWxsKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNlbGwtZW5kICh0cmVlc2l0LW5vZGUtZW5kIGNlbGwpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBBZGp1c3QgYmVnIHRvIHRyaW0gdGhlIGdyYW1tYXIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgOzsgdW5hY2NvdW50ZWQtZm9yIGxlYWRpbmcgd2hpdGVz cGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZyAoY29uZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBJZiB0aGlzIGlzIHRoZSBzb2xlIGNvbHVtbiwgZGVsZXRl IGZyb20gYm9sLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxIG5jb2xzIDEp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIGNlbGwtYmVn IGFkaikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9zLWJvbCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IElmIHRoaXMgaXMgdGhlIGZpcnN0IGNvbHVt biwgZGVsZXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGZyb20gdGhlIHBp cGUsIGlmIHRoZXJlIGlzIG9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsg b3RoZXJ3aXNlIGNlbGwtYmVnLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVx IHRhYmxlLWNvbHVtbiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAo KHAgKC0gY2VsbC1iZWcgYWRqKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChnb3RvLWNoYXIgcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8t Y2hhciAocG9zLWJvbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAo c2VhcmNoLWZvcndhcmQgInwiIHAgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgxLSAocG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgdGhpcyBpcyB0aGUg ZmluYWwgY29sdW1uLCBkZWxldGUgZnJvbSB0aGUgcHJpb3IgcGlwZSBzeW1ib2wuCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgoZXEgdGFibGUtY29sdW1uICgxLSBuY29scykpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgocCAoLSAodHJlZXNpdC1ub2Rl LWVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGgg KDEtIHRhYmxlLWNvbHVtbikgY29scykpIGFkaikpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZ290by1jaGFyIHApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiAoc2VhcmNoLWZvcndhcmQgInwiICgtIGNlbGwtYmVnIGFkaikgdCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IE90aGVyd2lzZSwgc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgcHJpb3IgY2VsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtICh0cmVlc2l0LW5v ZGUtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggKDEt IHRhYmxlLWNvbHVtbikgY29scykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhZGopKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IEFkanVzdCBlbmQgdG8gdHJp bSB0aGUgdHJhaWxpbmcgcGlwZSBzeW1ib2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsg Y29uc2lkZXJlZCBieSB0aGUgZ3JhbW1hciB0byBiZSBwYXJ0IG9mIGl0cworICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBwcmVjZWRpbmcgY2VsbC4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVuZCAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB0aGlz IGlzIHRoZSBzb2xlIGNvbHVtbiwgZGVsZXRlIHVudGlsIGVvbC4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChlcSBuY29scyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGdvdG8tY2hhciAoLSBjZWxsLWJlZyBhZGopKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBvcy1lb2wpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 OyBJZiB0aGlzIGlzIHRoZSBmaW5hbCBjb2x1bW4sIGRlbGV0ZSB1bnRpbCBlb2wuCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgoZXEgdGFibGUtY29sdW1uICgxLSBuY29scykpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIGNlbGwtZW5kIGFk aikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9zLWVvbCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDs7IE90aGVyd2lzZSwgbG9vayBmb3J3YXJkIGZyb20g Y2VsbC1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgKHdoaWNoIGluY2x1 ZGVzIHRoZSBjZWxsJ3MgdHJhaWxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ozsgd2hpdGVzcGFjZSkgZm9yIGEgcGlwZSBzeW1ib2wuCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy ICgtIGNlbGwtZW5kIGFkaikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYg KHJlLXNlYXJjaC1mb3J3YXJkICJ8Kz8iIChwb3MtZW9sKSB0KQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgxLSAocG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjZWxsLWVuZCkpKSkpCisgICAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24g YmVnIGVuZCkKKyAgICAgICAgICAgICAgICAoc2V0cSBhZGogKCsgYWRqICgtIGVuZCBiZWcpKSkp KSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tbGVmdCAoKQor ICAiTW92ZSB0aGUgdGFibGUgY29sdW1uIGF0IHBvaW50IHRvIGl0cyBsZWZ0LgorUG9pbnQgY2Fu IGJlIGluIHRoZSB0YWJsZSBoZWFkZXIgb3IgYm9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRh YmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24tdHMtdGFibGUt bW92ZS1jb2x1bW4gJ2xlZnQpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1 bW4tcmlnaHQgKCkKKyAgIk1vdmUgdGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludCB0byBpdHMgcmln aHQuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQg aXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJr ZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbiAncmlnaHQpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt dGFibGUtbW92ZS1jb2x1bW4gKCZvcHRpb25hbCBsZWZ0KQorICAiTW92ZSB0aGUgdGFibGUgY29s dW1uIGF0IHBvaW50IHJpZ2h0IG9yIGxlZnQuCitJZiBMRUZUIGlzIG5vbi1uaWwgYW5kIGlzIG5v dCBgcmlnaHQnLCBvciB3aXRoIGEgcHJlZml4IGFyZ3VtZW50LAorbW92ZSB0aGUgY29sdW1uIHRv IGl0cyBsZWZ0LgorRG8gbm90aGluZyBpZiBhIHJvdyBiZWluZyBtb3ZlZCBpcyBub3Qgd2l0aGlu IHRoZSBjb2x1bW5zIG9mIHRoZSBoZWFkZXIuCitEbyBub3RoaW5nIGlmIG1vdmluZyBsZWZ0IGFu ZCB0aGUgY3VycmVudCBjb2x1bW4gaXMgdGhlIGZpcnN0IGNvbHVtbiBvZgordGhlIGN1cnJlbnQg cm93LgorRG8gbm90aGluZyBpZiBtb3ZpbmcgcmlnaHQgYW5kIHRoZSBjdXJyZW50IGNvbHVtbiBp cyB0aGUgZmluYWwgY29sdW1uIG9mCit0aGUgY3VycmVudCByb3cuCitQb2ludCBjYW4gYmUgaW4g dGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRv IG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3Qt bW9kZSAnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4pCisgIChzZXRxIGxlZnQgKGNvbmQg KChlcSBsZWZ0ICdyaWdodCkgbmlsKQorICAgICAgICAgICAgICAgICAgIChsZWZ0IGxlZnQpCisg ICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtcHJlZml4LWFyZyB0KSkpCisgICh3aGVuLWxldCog KChhdC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAg IChwb3MgKGNhciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICh0YWJsZSAoY2RyIGF0LXRhYmxl KSkKKyAgICAgICAgICAgICAgKG5vZGUgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3duICdu YW1lZCkpCisgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxs IG5vZGUpKQorICAgICAgICAgICAgICAocm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cg bm9kZSkpCisgICAgICAgICAgICAgIChoZWFkZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIlxcYHBpcGVfdGFibGVfaGVhZGVyXFwnIikpCisgICAgICAgICAgICAgIChu aGVhZGVycyAobGVuZ3RoICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gaGVhZGVyLXJvdyAnbmFtZWQp KSkKKyAgICAgICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVk KSkKKyAgICAgICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpKQorICAgIChsZXQgKCh0YWJs ZS1jb2x1bW4gKG1hcmtkb3duLXRzLS10YWJsZS1jb21wdXRlLW5vZGUtY29sdW1uIHJvdyBjZWxs KSkpCisgICAgICAodW5sZXNzIHRhYmxlLWNvbHVtbgorICAgICAgICAoZXJyb3IgIkNvdWxkIG5v dCBjb21wdXRlIHRoZSB0YWJsZSBjb2x1bW4iKSkKKyAgICAgIChpZiAoPj0gdGFibGUtY29sdW1u IG5oZWFkZXJzKQorICAgICAgICAgIChtZXNzYWdlICJSYWdnZWQvdW5ldmVuIGNvbHVtbiBjYW5u b3QgYmUgbW92ZWQiKQorICAgICAgICA7OyBBIEIgQyBEIC0+IEIgQSBDIEQKKyAgICAgICAgOzsg TW92ZSBBIGxlZnQ6IGRvIG5vdGhpbmcKKyAgICAgICAgOzsgTW92ZSBEIHJpZ2h0OiBkbyBub3Ro aW5nCisgICAgICAgIDs7IE1vdmUgY3VycmVudCBjb2x1bW4gbGVmdDoKKyAgICAgICAgOzsgICBz b3VyY2UgY29sdW1uID0gdCAtIDEKKyAgICAgICAgOzsgTW92ZSBjdXJyZW50IGNvbHVtbiByaWdo dDoKKyAgICAgICAgOzsgICBjbG9uZSB0IHRvIHQrMSBpZiB0aGUgZmluYWwgY29sdW1uLCBvdGhl cndpc2UgdCsyCisgICAgICAgIDs7ICAgZGVsZXRlIHQKKyAgICAgICAgKGNvbmQgKChhbmQgbGVm dCAoZXEgdGFibGUtY29sdW1uIDApKQorICAgICAgICAgICAgICAgKG1lc3NhZ2UgIkxlZnRtb3N0 IGNvbHVtbiBjYW5ub3QgYmUgbW92ZWQgbGVmdCIpCisgICAgICAgICAgICAgICBuaWwpCisgICAg ICAgICAgICAgICgoYW5kIChub3QgbGVmdCkgKGVxIHRhYmxlLWNvbHVtbiAoMS0gbmNvbHMpKSkK KyAgICAgICAgICAgICAgIChtZXNzYWdlICJSaWdodG1vc3QgY29sdW1uIGNhbm5vdCBiZSBtb3Zl ZCByaWdodCIpCisgICAgICAgICAgICAgICBuaWwpCisgICAgICAgICAgICAgICh0CisgICAgICAg ICAgICAgICAobGV0ICgoc291cmNlLWNvbHVtbiAoaWYgbGVmdAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgxLSB0YWJsZS1jb2x1bW4pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLWNvbHVtbikpCisgICAgICAgICAgICAgICAgICAg ICAodGFyZ2V0LWNvbHVtbiAoaWYgbGVmdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRhYmxlLWNvbHVtbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoMSsgdGFibGUtY29sdW1uKSkpKQorICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNp b24KKyAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtLWdvdG8tY29sdW1uIHNv dXJjZS1jb2x1bW4pCisgICAgICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLXRhYmxlLWluc2Vy dC1jb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0IChsaXN0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGFyZ2V0LWNvbHVtbikpKQorICAgICAgICAgICAgICAgICAobWFya2Rv d24tdHMtdGFibGUtLWdvdG8tY29sdW1uIHNvdXJjZS1jb2x1bW4pCisgICAgICAgICAgICAgICAg IChtYXJrZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uKQorICAgICAgICAgICAgICAgICA7OyBF bXB0eSBjZWxscyBjYW4gY29uZnVzZSB0aGUgZ3JhbW1hciwgc28gbm8tZXJyb3IgaGVyZS4KKyAg ICAgICAgICAgICAgICAgKGlmIGxlZnQKKyAgICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10 cy10YWJsZS0tZ290by1jb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtY29sdW1u ICduby1lcnJvcikKKyAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtLWdvdG8t Y29sdW1uCisgICAgICAgICAgICAgICAgICAgIHRhcmdldC1jb2x1bW4gJ25vLWVycm9yKSkpKSkp KSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4tbGVmdCAoKQorICAi QWxpZ24gdGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludCB0byB0aGUgbGVmdC4KK0RvIHRoZSB3b3Jr IHdpdGggYG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWNvbHVtbicsIHdoaWNoIHNlZSBmb3IgbW9y ZQorZGV0YWlscy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWFsaWdu LWNvbHVtbiAnbGVmdCkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4t Y2VudGVyICgpCisgICJBbGlnbiB0aGUgdGFibGUgY29sdW1uIGF0IHBvaW50IHRvIHRoZSBjZW50 ZXIuCitEbyB0aGUgd29yayB3aXRoIGBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4nLCB3 aGljaCBzZWUgZm9yIG1vcmUKK2RldGFpbHMuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93 bi10cy10YWJsZS1hbGlnbi1jb2x1bW4gJ2NlbnRlcikpCisKKyhkZWZ1biBtYXJrZG93bi10cy10 YWJsZS1hbGlnbi1jb2x1bW4tcmlnaHQgKCkKKyAgIkFsaWduIHRoZSB0YWJsZSBjb2x1bW4gYXQg cG9pbnQgdG8gdGhlIHJpZ2h0LgorRG8gdGhlIHdvcmsgd2l0aCBgbWFya2Rvd24tdHMtdGFibGUt YWxpZ24tY29sdW1uJywgd2hpY2ggc2VlIGZvciBtb3JlCitkZXRhaWxzLiIKKyAgKGludGVyYWN0 aXZlKQorICAobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uICdyaWdodCkpCisKKyhkZWZ1 biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4gKCZvcHRpb25hbCBhbGlnbikKKyAgIkFs dGVyIHRoZSB0YWJsZSBjb2x1bW4gYWxpZ25tZW50IGF0IHBvaW50LgorQWx0ZXIgdGhlIGNvbHVt biBwb2ludCBpcyBpbi4KKworTm90ZTogVG8gY29tcHV0ZSB0aGUgY29sdW1uLCBwb2ludCBtdXN0 IGJlIHdpdGhpbiB0aGUgY29sdW1uIGFuZCBjYW5ub3QKK2JlIG9uIHRoZSBsZWFkaW5nIG9yIHRy YWlsaW5nIHdoaXRlc3BhY2Ugb3Igb24gYSBjb2x1bW4gZGVsaW1pdGVyLgorCitBTElHTiBjYW4g YmUgb25lIG9mIHRoZSBzeW1ib2xzIGBsZWZ0JywgYGNlbnRlcicsIGByaWdodCcgb3IgbmlsIGZv cgordW5zcGVjaWZpZWQgb3IgdGhlIGNoYXJhY3RlcnMgbCwgYywgb3Igci4KKworSWYgQUxJR04g aXMgbmlsLCBhc3N1bWUgdW5zcGVjaWZpZWQuICBNYWtlIHRoZSBhbGlnbm1lbnQgc3RyaW5nIGEK K21pbmltdW0gb2YgNSBjaGFyYWN0ZXJzIHRvIGFjY29tbW9kYXRlIE1hcmtkb3duIGNvbnZlbnRp b25zLgorCitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRl cmFjdGl2ZSAiY0FsaWduIGNvbHVtbiBbbF1lZnQgW2NdZW50ZXIgW3JdaWdodCBbdV1uc3BlY2lm aWVkOiIpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFi bGUtYWxpZ24tY29sdW1uKQorICAoc2V0cSBhbGlnbiAoaWYgKGNoYXJhY3RlcnAgYWxpZ24pCisg ICAgICAgICAgICAgICAgICAocGNhc2UgYWxpZ24gKD9sICdsZWZ0KSAoP2MgJ2NlbnRlcikgKD9y ICdyaWdodCkpCisgICAgICAgICAgICAgICAgYWxpZ24pKQorICAod2hlbi1sZXQqICgoYXQtdGFi bGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAocG9zIChj YXIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAg ICAgICAgICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQgcG9zICdtYXJrZG93biAnbmFtZWQpKQor ICAgICAgICAgICAgICAoY2VsbCAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtY2VsbCBub2RlKSkK KyAgICAgICAgICAgICAgKHJvdyAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93IGNlbGwpKQor ICAgICAgICAgICAgICAoYWxpZ25lcnMgKG1hcmtkb3duLXRzLS10YWJsZS1hbGlnbmVycyB0YWJs ZSkpKQorICAgIChsZXQgKCh0YWJsZS1jb2x1bW4gKG1hcmtkb3duLXRzLS10YWJsZS1jb21wdXRl LW5vZGUtY29sdW1uIHJvdyBjZWxsKSkpCisgICAgICAodW5sZXNzIHRhYmxlLWNvbHVtbgorICAg ICAgICAoZXJyb3IgIkNvdWxkIG5vdCBjb21wdXRlIHRoZSB0YWJsZSBjb2x1bW4iKSkKKyAgICAg IDs7IE5PVEU6IEdGTSB0YWJsZXMgYWxsb3cgbm9uLXVuaWZvcm0gdGFibGUgcm93cy4gIFRoZSBj dXJyZW50IHJvdworICAgICAgOzsgY291bGQgaGF2ZSBhIGRpZmZlcmluZyBudW1iZXIgb2YgY29s dW1ucyBmcm9tIHRoZSBoZWFkZXIuICBXZQorICAgICAgOzsgc2lsZW50bHkgZG8gbm90aGluZyBp ZiB3ZSBjYW4ndCBmaW5kIGEgbWF0Y2hpbmcgaGVhZGVyIGNvbHVtbi4KKyAgICAgICh3aGVuLWxl dCogKChhbGlnbmVyIChudGggdGFibGUtY29sdW1uIGFsaWduZXJzKSkKKyAgICAgICAgICAgICAg ICAgIChiZWcgKHBsaXN0LWdldCBhbGlnbmVyIDpiZWcpKQorICAgICAgICAgICAgICAgICAgKGVu ZCAocGxpc3QtZ2V0IGFsaWduZXIgOmVuZCkpCisgICAgICAgICAgICAgICAgICAoc3RyIChidWZm ZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgYmVnIGVuZCkpCisgICAgICAgICAgICAgICAgICAo c3RybGVuIChtYXggNSAobGVuZ3RoIHN0cikpKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVn IGVuZCkKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hhciBiZWcp CisgICAgICAgICAgKGluc2VydCAobWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lciBzdHJs ZW4gYWxpZ24pKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi10YWJsZSAo Jm9wdGlvbmFsIGFsaWduLWNlbGxzKQorICAiQWxpZ24gdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBv aW50LgorQWRqdXN0IGVhY2ggY29sdW1uJ3Mgd2lkdGggdG8gYWNjb21tb2RhdGUgaXRzIHdpZGVz dCBjb25zdGl0dWVudCBjZWxsLgorSWYgQUxJR04tQ0VMTFMgaXMgbm9uLW5pbCwgb3Igd2l0aCBh IHByZWZpeCBhcmd1bWVudCwgYXBwbHkgdGhlCitkZWxpbWl0ZXIgcm93J3MgYWxpZ25tZW50IHRv IGNlbGwgY29udGVudC4gIEFMSUdOLUNFTExTIGlzIG5vbi1uaWwgaWYKK3RoZSB1c2VyIG9wdGlv biBgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tZmVhdHVyZXMnIGluY2x1ZGVzCitganVzdGlmeS1j ZWxscycuCitBbmNob3IgdGhlIGNvbHVtbnMgdG8gdGhlIGRlbGltaXRlciByb3cuICBJZ25vcmUg cm93cyB0aGF0IGNvbnRhaW4KK2NvbHVtbnMgYmV5b25kIHRoZSBkZWxpbWl0ZXIgcm93LgorSWYg bm90IGluIGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAobWFy a2Rvd24tdHMtLWJhcmYtaWYtbm90LW1vZGUgJ21hcmtkb3duLXRzLXRhYmxlLWFsaWduLXRhYmxl KQorICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQp KQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAgIChi ZWcgKHRyZWVzaXQtbm9kZS1zdGFydCB0YWJsZSkpCisgICAgICAgICAgICAgIChlbmQgKHRyZWVz aXQtbm9kZS1lbmQgdGFibGUpKQorICAgICAgICAgICAgICAoXyAobWFya2Rvd24tdHMtLXRhYmxl LXRpY2stc3RhbGUtcCBiZWcpKQorICAgICAgICAgICAgICAocm93cyAodHJlZXNpdC1ub2RlLWNo aWxkcmVuIHRhYmxlICduYW1lZCkpCisgICAgICAgICAgICAgIChucm93cyAobGVuZ3RoIHJvd3Mp KQorICAgICAgICAgICAgICAoZGVsaW1pdGVyLXJvdyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQor ICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAg IlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgICAgICAoYWxpZ25l cnMgKG1hcmtkb3duLXRzLS10YWJsZS1hbGlnbmVycyB0YWJsZSkpCisgICAgICAgICAgICAgIChj b2xzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gZGVsaW1pdGVyLXJvdyAnbmFtZWQpKQorICAgICAg ICAgICAgICAobmNvbHMgKGxlbmd0aCBjb2xzKSkKKyAgICAgICAgICAgICAgKGNvbC13aWR0aHMg KG1ha2UtaGFzaC10YWJsZSA6c2l6ZSBuY29scyA6dGVzdCAnZXF1YWwpKQorICAgICAgICAgICAg ICAoY2VsbC10ZXh0IChtYWtlLWhhc2gtdGFibGUgOnNpemUgKCogbnJvd3MgbmNvbHMpIDp0ZXN0 ICdlcXVhbCkpKQorICAgIChzZXRxIGFsaWduLWNlbGxzIChvciBhbGlnbi1jZWxscworICAgICAg ICAgICAgICAgICAgICAgICAgICBjdXJyZW50LXByZWZpeC1hcmcKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKG1lbXEgJ2p1c3RpZnktY2VsbHMgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tZmVh dHVyZXMpKSkKKyAgICAod2l0aG91dC1yZXN0cmljdGlvbgorICAgICAgOzsgQ29sbGVjdCBjZWxs IHRleHQgYW5kIGNvbXB1dGUgbWF4IGNvbHVtbiB3aWR0aHMuCisgICAgICA7OyBEbyBub3QgdXNl IHRoZSBkZWxpbWl0ZXIgcm93IGZvciB3aWR0aCBjb21wdXRhdGlvbi4KKyAgICAgIChkb3RpbWVz ICh4IG5yb3dzKQorICAgICAgICAobGV0KiAoKHJvdyAobnRoIHggcm93cykpCisgICAgICAgICAg ICAgICAoY2VsbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkpCisgICAgICAg ICAgKGRvdGltZXMgKHkgbmNvbHMpCisgICAgICAgICAgICA7OyBTa2lwIG5pbCBjZWxscy0tdGhl IHBhcnNlciBnb3QgY29uZnVzZWQuCisgICAgICAgICAgICAod2hlbi1sZXQqICgoY2VsbCAobnRo IHkgY2VsbHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHRleHQgKHN0cmluZy10cmltLXJp Z2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IGNl bGwgJ25vLXByb3BlcnR5KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAodyAobGVuZ3RoIHRl eHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHcwIChvciAoZ2V0aGFzaCB5IGNvbC13aWR0 aHMpIDApKSkKKyAgICAgICAgICAgICAgOzsgRWxpZGUgZGVsaW1pdGVyIHdpZHRocy4KKyAgICAg ICAgICAgICAgKHVubGVzcyAoZXEgeCAxKQorICAgICAgICAgICAgICAgICh3aGVuICg+IHcgdzAp CisgICAgICAgICAgICAgICAgICAocHV0aGFzaCB5IHcgY29sLXdpZHRocykpKQorICAgICAgICAg ICAgICAocHV0aGFzaCAoY29ucyB4IHkpIHRleHQgY2VsbC10ZXh0KSkpKSkKKworICAgICAgKGxl dCAoKHNvdXJjZS1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgICAgICh3aXRoLXRlbXAt YnVmZmVyCisgICAgICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgICAgICAoZG90aW1l cyAoeSBuY29scykKKyAgICAgICAgICAgICAgKGxldCogKCh3aWR0aCAob3IgKGdldGhhc2ggeSBj b2wtd2lkdGhzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy10 YWJsZS1kZWZhdWx0LWNvbHVtbi13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAoYWxpZ24g KG9yIChwbGlzdC1nZXQgKG50aCB5IGFsaWduZXJzKSA6YWxpZ24pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICd1bnNwZWNpZmllZCkpCisgICAgICAgICAgICAgICAgICAgICA7OyBD b25mdXNlZCBjZWxscyBoYXZlIG5pbCB0ZXh0LgorICAgICAgICAgICAgICAgICAgICAgKHRleHQg KG9yIChnZXRoYXNoIChjb25zIHggeSkgY2VsbC10ZXh0KSAiIikpCisgICAgICAgICAgICAgICAg ICAgICAodGV4dDAgKG1hcmtkb3duLXRzLS10YWJsZS1hbGlnbi1jZWxsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRleHQgd2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIGFsaWduLWNlbGxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNwZWNpZmllZCkpKSkKKyAgICAgICAg ICAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICA7OyBIZWFkZXIgcm93LgorICAgICAgICAg ICAgICAgICAoKGVxIHggMCkKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQgInwiIHRleHQwKSkK KyAgICAgICAgICAgICAgICAgOzsgRGVsaW1pdGVyIHJvdy4gIFVzZSB1bmFsaWduZWQgdGV4dC4K KyAgICAgICAgICAgICAgICAgKChlcSB4IDEpCisgICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJ8 IgorICAgICAgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxp Z25lciB3aWR0aCBhbGlnbikpKQorICAgICAgICAgICAgICAgICA7OyBCb2R5IHJvdy4KKyAgICAg ICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQgInwiIHRleHQwKSkpKSkK KyAgICAgICAgICAgIChpbnNlcnQgInwiICJcbiIpKQorICAgICAgICAgIChsZXQgKCh0ZW1wLWJ1 ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IHNvdXJjZS1idWZmZXIKKyAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIGJl ZyBlbmQgdGVtcC1idWZmZXIpKSkpKSkKKyAgICAobWFya2Rvd24tdHMtLXRhYmxlLXRpY2stdXBk YXRlIGJlZykpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtdHJhbnNwb3NlLXRhYmxlICgp CisgICJUcmFuc3Bvc2UgdGhlIHJvd3MgYW5kIGNvbHVtbnMgb2YgdGhlIE1hcmtkb3duIHRhYmxl IGF0IHBvaW50LgorVXNlIHVuc3BlY2lmaWVkIGNvbHVtbiBhbGlnbm1lbnQgaW4gdGhlIHRyYW5z cG9zZWQgdGFibGUuCitJZiB0YWJsZSdzIHJvd3MgYXJlIG5vdCB1bmlmb3JtIHdpdGggdGhvc2Ug b24gdGhlIGRlbGltaXRlciByb3csIHNpZ25hbAorYW4gZXJyb3IuCitJZiBub3QgaW4gYSB0YWJs ZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlm LW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJsZS10cmFuc3Bvc2UtdGFibGUpCisgICh3aGVuLWxl dCogKChhdC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAg ICAgICh0YWJsZSAoY2RyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKGJlZyAodHJlZXNpdC1u b2RlLXN0YXJ0IHRhYmxlKSkKKyAgICAgICAgICAgICAgKGVuZCAodHJlZXNpdC1ub2RlLWVuZCB0 YWJsZSkpCisgICAgICAgICAgICAgIChyb3dzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gdGFibGUg J25hbWVkKSkKKyAgICAgICAgICAgICAgKG5yb3dzIChsZW5ndGggcm93cykpCisgICAgICAgICAg ICAgIChkZWxpbWl0ZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAg ICAgICAgICAgICAgdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJs ZV9kZWxpbWl0ZXJfcm93XFwnIikpCisgICAgICAgICAgICAgIChhbGlnbmVycyAobWFya2Rvd24t dHMtLXRhYmxlLWFsaWduZXJzIHRhYmxlKSkKKyAgICAgICAgICAgICAgKGNvbHMgKHRyZWVzaXQt bm9kZS1jaGlsZHJlbiBkZWxpbWl0ZXItcm93ICduYW1lZCkpCisgICAgICAgICAgICAgIChuY29s cyAobGVuZ3RoIGNvbHMpKQorICAgICAgICAgICAgICAoY2VsbC10ZXh0IChtYWtlLWhhc2gtdGFi bGUgOnNpemUgKCogbnJvd3MgbmNvbHMpIDp0ZXN0ICdlcXVhbCkpKQorICAgICh3aXRob3V0LXJl c3RyaWN0aW9uCisgICAgICA7OyBDb2xsZWN0IGNlbGwgdGV4dCBhbmQgaW52ZXJ0IGNvb3JkaW5h dGVzLgorICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgIChsZXQqICgocm93IChudGgg eCByb3dzKSkKKyAgICAgICAgICAgICAgIChjZWxscyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHJv dyAnbmFtZWQpKSkKKyAgICAgICAgICAoZG90aW1lcyAoeSBuY29scykKKyAgICAgICAgICAgIDs7 IFNraXAgbmlsIGNlbGxzLS10aGUgcGFyc2VyIGdvdCBjb25mdXNlZC4KKyAgICAgICAgICAgICh3 aGVuLWxldCogKChjZWxsIChudGggeSBjZWxscykpCisgICAgICAgICAgICAgICAgICAgICAgICAo dGV4dCAoc3RyaW5nLXRyaW0tcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dHJlZXNpdC1ub2RlLXRleHQgY2VsbCAnbm8tcHJvcGVydHkpKSkpCisgICAgICAgICAgICAgIChw dXRoYXNoIChjb25zIHkgeCkgdGV4dCBjZWxsLXRleHQpKSkpKQorCisgICAgICAobGV0ICgoc291 cmNlLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIK KyAgICAgICAgICAoZG90aW1lcyAoeCBuY29scykKKyAgICAgICAgICAgIDs7IFN5bnRoZXNpemUg YSBkZWxpbWl0ZXIgcm93LgorICAgICAgICAgICAgKHdoZW4gKGVxIHggMSkKKyAgICAgICAgICAg ICAgKGRvdGltZXMgKF95ICgxLSBucm93cykpCisgICAgICAgICAgICAgICAgKGluc2VydCAifCIK KyAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0tdGFibGUtbWFrZS1hbGlnbmVy CisgICAgICAgICAgICAgICAgICAgICAgICAgKG1heCA1IG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1 bHQtY29sdW1uLXdpZHRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNwZWNpZmllZCkp KQorICAgICAgICAgICAgICAoaW5zZXJ0ICJ8IiAiXG4iKSkKKyAgICAgICAgICAgIChkb3RpbWVz ICh5IG5yb3dzKQorICAgICAgICAgICAgICA7OyBTa2lwIHRoZSBvcmlnaW5hbCBkZWxpbWl0ZXIg cm93LgorICAgICAgICAgICAgICAodW5sZXNzIChlcSB5IDEpCisgICAgICAgICAgICAgICAgOzsg Q29uZnVzZWQgY2VsbHMgaGF2ZSBuaWwgdGV4dC4KKyAgICAgICAgICAgICAgICAobGV0ICgodGV4 dCAob3IgKGdldGhhc2ggKGNvbnMgeCB5KSBjZWxsLXRleHQpICIiKSkpCisgICAgICAgICAgICAg ICAgICAoaW5zZXJ0ICJ8IiB0ZXh0KSkpKQorICAgICAgICAgICAgKGluc2VydCAifCIgIlxuIikp CisgICAgICAgICAgKGxldCAoKHRlbXAtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKQorICAgICAg ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc291cmNlLWJ1ZmZlcgorICAgICAgICAgICAgICAo cmVwbGFjZS1yZWdpb24tY29udGVudHMgYmVnIGVuZCB0ZW1wLWJ1ZmZlcikpKSkpKQorICAgICh3 aGVuIChvciAoZXEgbWFya2Rvd24tdHMtdGFibGUtYXV0by1hbGlnbiB0KQorICAgICAgICAgICAg ICAobWVtcSAndHJhbnNwb3NlIG1hcmtkb3duLXRzLXRhYmxlLWF1dG8tYWxpZ24pKQorICAgICAg KG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLXRhYmxlKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt dGFibGUtY29udmVydC1jc3YtcmVnaW9uICggYmVnIGVuZAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci1saW5lIHJlcGxhY2UpCisgICJDb252ZXJ0 IHRoZSBjb21tYS1zZXBhcmF0ZWQgcmVnaW9uIEJFRyB0byBFTkQgdG8gYSBNYXJrZG93biB0YWJs ZS4KK0lmIEhFQURFUi1MSU5FIGlzIG5vbi1uaWwsIHVzZSB0aGUgZmlyc3QgbGluZSBvZiB0aGUg cmVnaW9uIGFzIHRoZSB0YWJsZQorY29sdW1uIGhlYWRlci4gIElmIG5pbCwgaW5mZXIgdGhlIG51 bWJlciBvZiBjb2x1bW5zIGFuZCBzeW50aGVzaXplCitjb2x1bW4gbmFtZXMgZnJvbSB0aGUgZmly c3QgbGluZS4KKworTm90ZTogQm9keSBjb2x1bW5zIGJleW9uZCB0aGUgcHJvdmlkZWQgb3IgaW5m ZXJyZWQgbnVtYmVyIG9mIGNvbHVtbnMgYXJlCitkcm9wcGVkLgorCitJZiBSRVBMQUNFIGlzIG5v bi1uaWwsIG92ZXJ3cml0ZSB0aGUgcmVnaW9uIEJFRyBFTkQgd2l0aCB0aGUgTWFya2Rvd24KK3Rh YmxlLCBvdGhlcndpc2UgaW5zZXJ0IHRoZSB0YWJsZSBhZnRlciBFTkQuCisKK1dpdGggYSBzaW5n bGUgcHJlZml4IGFyZ3VtZW50LCBIRUFERVItTElORSBpcyBub24tbmlsLgorV2l0aCBhIGRvdWJs ZSBwcmVmaXggYXJndW1lbnQsIFJFUExBQ0UgaXMgbm9uLW5pbC4KK1dpdGggYSB0cmlwbGUgcHJl Zml4IGFyZ3VtZW50LCBib3RoIGFyZSBub24tbmlsLiIKKyAgKGludGVyYWN0aXZlICJSIikKKyAg KG1hcmtkb3duLXRzLXRhYmxlLWNvbnZlcnQtcmVnaW9uIGJlZyBlbmQgaGVhZGVyLWxpbmUgcmVw bGFjZSAnY3N2KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWNvbnZlcnQtdHN2LXJlZ2lv biAoIGJlZyBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmb3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoZWFkZXItbGluZSByZXBsYWNlKQorICAiQ29udmVydCB0aGUgdGFiLXNlcGFyYXRlZCByZWdp b24gQkVHIHRvIEVORCB0byBhIE1hcmtkb3duIHRhYmxlLgorSWYgSEVBREVSLUxJTkUgaXMgbm9u LW5pbCwgdXNlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSByZWdpb24gYXMgdGhlIHRhYmxlCitjb2x1 bW4gaGVhZGVyLiAgSWYgbmlsLCBpbmZlciB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW5kIHN5bnRo ZXNpemUKK2NvbHVtbiBuYW1lcyBmcm9tIHRoZSBmaXJzdCBsaW5lLgorCitOb3RlOiBCb2R5IGNv bHVtbnMgYmV5b25kIHRoZSBwcm92aWRlZCBvciBpbmZlcnJlZCBudW1iZXIgb2YgY29sdW1ucyBh cmUKK2Ryb3BwZWQuCisKK0lmIFJFUExBQ0UgaXMgbm9uLW5pbCwgb3ZlcndyaXRlIHRoZSByZWdp b24gQkVHIEVORCB3aXRoIHRoZSBNYXJrZG93bgordGFibGUsIG90aGVyd2lzZSBpbnNlcnQgdGhl IHRhYmxlIGFmdGVyIEVORC4KKworV2l0aCBhIHNpbmdsZSBwcmVmaXggYXJndW1lbnQsIEhFQURF Ui1MSU5FIGlzIG5vbi1uaWwuCitXaXRoIGEgZG91YmxlIHByZWZpeCBhcmd1bWVudCwgUkVQTEFD RSBpcyBub24tbmlsLgorV2l0aCBhIHRyaXBsZSBwcmVmaXggYXJndW1lbnQsIGJvdGggYXJlIG5v bi1uaWwuIgorICAoaW50ZXJhY3RpdmUgIlIiKQorICAobWFya2Rvd24tdHMtdGFibGUtY29udmVy dC1yZWdpb24gYmVnIGVuZCBoZWFkZXItbGluZSByZXBsYWNlICd0c3YpKQorCisoZGVmdW4gbWFy a2Rvd24tdHMtdGFibGUtY29udmVydC1yZWdpb24gKCBiZWcgZW5kCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci1saW5lIHJlcGxhY2UgZm9ybWF0KQorICAiQ29u dmVydCB0aGUgY29tbWEtc2VwYXJhdGVkIHJlZ2lvbiBCRUcgdG8gRU5EIHRvIGEgTWFya2Rvd24g dGFibGUuCitJZiBIRUFERVItTElORSBpcyBub24tbmlsLCB1c2UgdGhlIGZpcnN0IGxpbmUgb2Yg dGhlIHJlZ2lvbiBhcyB0aGUgdGFibGUKK2NvbHVtbiBoZWFkZXIuICBJZiBuaWwsIGluZmVyIHRo ZSBudW1iZXIgb2YgY29sdW1ucyBhbmQgc3ludGhlc2l6ZQorY29sdW1uIG5hbWVzIGZyb20gdGhl IGZpcnN0IGxpbmUuCisKK05vdGU6IEJvZHkgY29sdW1ucyBiZXlvbmQgdGhlIHByb3ZpZGVkIG9y IGluZmVycmVkIG51bWJlciBvZiBjb2x1bW5zIGFyZQorZHJvcHBlZC4KKworSWYgUkVQTEFDRSBp cyBub24tbmlsLCBvdmVyd3JpdGUgdGhlIHJlZ2lvbiBCRUcgRU5EIHdpdGggdGhlIE1hcmtkb3du Cit0YWJsZSwgb3RoZXJ3aXNlIGluc2VydCB0aGUgdGFibGUgYWZ0ZXIgRU5ELgorCitGT1JNQVQg aXMgb25lIG9mIHRoZSBzeW1ib2xzIGBjc3YnIGZvciBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzLCBv ciBgdHN2JworZm9yIHRhYi1zZXBhcmF0ZWQgdmFsdWVzLiAgSWYgYW55IG90aGVyIHZhbHVlLCB1 c2UgYGNzdicuCisKK1dpdGggYSBzaW5nbGUgcHJlZml4IGFyZ3VtZW50LCBIRUFERVItTElORSBp cyBub24tbmlsLgorV2l0aCBhIGRvdWJsZSBwcmVmaXggYXJndW1lbnQsIFJFUExBQ0UgaXMgbm9u LW5pbC4KK1dpdGggYSB0cmlwbGUgcHJlZml4IGFyZ3VtZW50LCBib3RoIGFyZSBub24tbmlsLiIK KyAgKGludGVyYWN0aXZlICJSIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdt YXJrZG93bi10cy10YWJsZS1jb252ZXJ0LXJlZ2lvbikKKworICAoY29uZCAoKGVxdWFsIGN1cnJl bnQtcHJlZml4LWFyZyAnKDQpKQorICAgICAgICAgKHNldHEgaGVhZGVyLWxpbmUgdCkpCisgICAg ICAgICgoZXF1YWwgY3VycmVudC1wcmVmaXgtYXJnICcoMTYpKQorICAgICAgICAgKHNldHEgcmVw bGFjZSB0KSkKKyAgICAgICAgKChlcXVhbCBjdXJyZW50LXByZWZpeC1hcmcgJyg2NCkpCisgICAg ICAgICAoc2V0cSBoZWFkZXItbGluZSB0CisgICAgICAgICAgICAgICByZXBsYWNlIHQpKSkKKyAg KGxldCAocm93cykKKyAgICAoc2F2ZS1yZXN0cmljdGlvbgorICAgICAgKG5hcnJvdy10by1yZWdp b24gYmVnIGVuZCkKKyAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAod2hpbGUg KDwgKHBvaW50KSAocG9pbnQtbWF4KSkKKyAgICAgICAgKHBjYXNlIGZvcm1hdAorICAgICAgICAg ICgndHN2CisgICAgICAgICAgICAgKHB1c2gKKyAgICAgICAgICAgICAgKHNwbGl0LXN0cmluZwor ICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQpIChw b3MtZW9sKSkgIlx0IikKKyAgICAgICAgICAgICAgcm93cykpCisgICAgICAgICAgIChfCisgICAg ICAgICAgICAobGV0IChyb3cpCisgICAgICAgICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndh cmQKKyAgICAgICAgICAgICAgICAgICAgICAiXCJcXCg/OlteXCJdXFx8XCJcIlxcKSpcIlxcfFte LF0rXFx8XCJcIiIKKyAgICAgICAgICAgICAgICAgICAgICAocG9zLWVvbCkgdCkKKyAgICAgICAg ICAgICAgICAocHVzaAorICAgICAgICAgICAgICAgICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5n CisgICAgICAgICAgICAgICAgICAiXCJcIiIgIlwiIgorICAgICAgICAgICAgICAgICAgKHJlcGxh Y2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICAgICJcXGBcIlxcKFwuKlxcKVwi XFwnIgorICAgICAgICAgICAgICAgICAgICJcXDEiCisgICAgICAgICAgICAgICAgICAgKHN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzIChtYXRjaC1zdHJpbmcgMCkpKSkKKyAgICAgICAgICAgICAgICAg cm93KSkKKyAgICAgICAgICAgICAgKHB1c2ggKG5yZXZlcnNlIHJvdykgcm93cykpKSkKKyAgICAg ICAgKGZvcndhcmQtbGluZSAxKSkKKyAgICAgICAgKHNldHEgcm93cyAobnJldmVyc2Ugcm93cykp CisgICAgICAgIChjb25kIChyZXBsYWNlIChkZWxldGUtcmVnaW9uIGJlZyBlbmQpKQorICAgICAg ICAgICAgICAodCAoZ290by1jaGFyIGVuZCkpKQorICAgICAgICAoaWYgaGVhZGVyLWxpbmUKKyAg ICAgICAgICAgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgKDEtIChsZW5ndGggcm93 cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGgg KGNhciByb3dzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNhciByb3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y2RyIHJvd3MpKQorICAgICAgICAgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgKGxl bmd0aCByb3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxl bmd0aCAoY2FyIHJvd3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzKSkp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZS1jc3YgKCZvcHRpb25h bCBkaXNwbGF5KQorICAiRXhwb3J0IHRoZSBNYXJrZG93biB0YWJsZSBhdCBwb2ludCB0byBjb21t YS1zZXBhcmF0ZWQgaW4gYSBidWZmZXIuCitJZiBESVNQTEFZIGlzIG5vbi1uaWwsIG9yIHdpdGgg YSBwcmVmaXggYXJndW1lbnQsIGRpc3BsYXkgdGhlIGV4cG9ydAorYnVmZmVyIGFmdGVyIGV4cG9y dGluZy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVy YWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZSBkaXNwbGF5ICdj c3YpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlLXRzdiAoJm9wdGlv bmFsIGRpc3BsYXkpCisgICJFeHBvcnQgdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBvaW50IHRvIHRh Yi1zZXBhcmF0ZWQgaW4gYSBidWZmZXIuCitJZiBESVNQTEFZIGlzIG5vbi1uaWwsIG9yIHdpdGgg YSBwcmVmaXggYXJndW1lbnQsIGRpc3BsYXkgdGhlIGV4cG9ydAorYnVmZmVyIGFmdGVyIGV4cG9y dGluZy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVy YWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZSBkaXNwbGF5ICd0 c3YpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlICgmb3B0aW9uYWwg ZGlzcGxheSBmb3JtYXQpCisgICJFeHBvcnQgdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBvaW50IHRv IENTViBpbiBhIGJ1ZmZlci4KK0lmIERJU1BMQVkgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZp eCBhcmd1bWVudCwgZGlzcGxheSB0aGUgZXhwb3J0CitidWZmZXIgYWZ0ZXIgZXhwb3J0aW5nLgor Rk9STUFUIGlzIG9uZSBvZiB0aGUgc3ltYm9scyBgY3N2JyBmb3IgY29tbWEtc2VwYXJhdGVkIHZh bHVlcyBha2EgQ1NWLAorb3IgYHRzdicgZm9yIHRhYi1zZXBhcmF0ZWQgdmFsdWVzIGFrYSBUU1Yu ICBJZiBhbnkgb3RoZXIgdmFsdWUsIHVzZQorYGNzdicuICBJZiBUU1YsIHJlcGxhY2UgYW55IHRh YnMgd2l0aGluIGEgZmllbGQgd2l0aCBhIHNwYWNlLgorRG8gbm90IGV4cG9ydCB0aGUgdGFibGUn cyBoZWFkZXIgZGVsaW1pdGVyIHJvdy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBu b3RoaW5nLiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5v dC1tb2RlICdtYXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUpCisgICh3aGVuLWxldCogKChh dC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgICh0 YWJsZSAoY2RyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKHJvd3MgKHRyZWVzaXQtbm9kZS1j aGlsZHJlbiB0YWJsZSAnbmFtZWQpKQorICAgICAgICAgICAgICAoaGVhZGVyICh0cmVlc2l0LXNl YXJjaC1zdWJ0cmVlIHRhYmxlICJcXGBwaXBlX3RhYmxlX2hlYWRlclxcJyIpKQorICAgICAgICAg ICAgICAoZGVsaW1pdGVyLXJvdyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFibGUgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIp KQorICAgICAgICAgICAgICAoZXhwb3J0LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC1idWZmZXIp KSkKKyAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBleHBvcnQtYnVmZmVyCisgICAgICAoc3BlY2lh bC1tb2RlKQorICAgICAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQpKQorICAgICAgICAod2lk ZW4pCisgICAgICAgIChlcmFzZS1idWZmZXIpCisgICAgICAgIChkb2xpc3QgKHJvdyByb3dzKQor ICAgICAgICAgICh1bmxlc3MgKGVxdWFsIHJvdyBkZWxpbWl0ZXItcm93KQorICAgICAgICAgICAg KGxldCogKChlbHRzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpCisgICAgICAg ICAgICAgICAgICAgKGxlbiAobGVuZ3RoIGVsdHMpKSkKKyAgICAgICAgICAgICAgKGRvdGltZXMg KHggbGVuKQorICAgICAgICAgICAgICAgIChsZXQgKChzIChzdHJpbmctdHJpbSAodHJlZXNpdC1u b2RlLXRleHQgKG50aCB4IGVsdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnbm8tcHJvcGVydHkpKSkpCisgICAgICAgICAgICAgICAg ICAocGNhc2UgZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICgndHN2CisgICAgICAgICAgICAg ICAgICAgICAoaW5zZXJ0IChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIlx0IiAiXHMiIHMpKQor ICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKDwgeCAoMS0gbGVuKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgKGluc2VydCAiXHQiKSkpCisgICAgICAgICAgICAgICAgICAgIChfCisgICAgICAg ICAgICAgICAgICAgICAoaW5zZXJ0CisgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmct bWF0Y2ggIltcIixdIiBzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJcIiIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY29uY2F0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdpZGVudGl0eSAoc3BsaXQtc3RyaW5nIHMgIlwiIikg IlwiXCIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiIpCisgICAgICAg ICAgICAgICAgICAgICAgICBzKSkKKyAgICAgICAgICAgICAgICAgICAgICh3aGVuICg8IHggKDEt IGxlbikpCisgICAgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgIiwiKSkpKSkpCisgICAgICAg ICAgICAgIChpbnNlcnQgIlxuIikpKSkKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkp KQorICAgICh3aGVuIGRpc3BsYXkKKyAgICAgIChkaXNwbGF5LWJ1ZmZlciBleHBvcnQtYnVmZmVy KSkpKQorCis7OzsgSGVscGVyczoKKworKGRlZnVuIG1hcmtkb3duLXRzLS1vdXRsaW5lLWludmlz aWJsZS1wIChwb3MpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBQT1MgaXMgaW5zaWRlIGFuIG91dGxp bmUtZm9sZGVkIHJlZ2lvbi4iCisgIChjbC1zb21lIChsYW1iZGEgKG92KSAoZXEgKG92ZXJsYXkt Z2V0IG92ICdpbnZpc2libGUpICdvdXRsaW5lKSkKKyAgICAgICAgICAgKG92ZXJsYXlzLWF0IHBv cykpKQogCiAoZGVmdW4gbWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdzICgpCiAgICJSZXR1cm4g cmFuZ2Ugc2V0dGluZ3MgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCi0gICh0cmVlc2l0LXJhbmdl LXJ1bGVzCi0gICA6ZW1iZWQgJ21hcmtkb3duLWlubGluZQotICAgOmhvc3QgJ21hcmtkb3duCi0g ICA6cmFuZ2UtZm4gIyd0cmVlc2l0LXJhbmdlLWZuLWV4Y2x1ZGUtY2hpbGRyZW4KLSAgICcoKGlu bGluZSkgQG1hcmtkb3duLWlubGluZSkKLQotICAgOmVtYmVkICMnbWFya2Rvd24tdHMtLWNvbnZl cnQtY29kZS1ibG9jay1sYW5ndWFnZQotICAgOmhvc3QgJ21hcmtkb3duCi0gICA6bG9jYWwgdAot ICAgJygoZmVuY2VkX2NvZGVfYmxvY2sgKGluZm9fc3RyaW5nIChsYW5ndWFnZSkgQGxhbmd1YWdl KQotICAgICAgICAgICAgICAgICAgICAgICAgKGNvZGVfZmVuY2VfY29udGVudCkgQGNvbnRlbnQp KSkpCisgIChhcHBseQorICAgIyd0cmVlc2l0LXJhbmdlLXJ1bGVzCisgICBgKDplbWJlZCBtYXJr ZG93bi1pbmxpbmUKKyAgICAgOmhvc3QgbWFya2Rvd24KKyAgICAgKChpbmxpbmUpIEBtYXJrZG93 bi1pbmxpbmUpCisgICAgICxAKHdoZW4gbWFya2Rvd24tdHMtZm9udGlmeS1jb2RlLWJsb2Nrcy1u YXRpdmVseQorICAgICAgICAgJyg6ZW1iZWQgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFu Z3VhZ2UKKyAgICAgICAgICAgOmhvc3QgbWFya2Rvd24KKyAgICAgICAgICAgOmxvY2FsIHQKKyAg ICAgICAgICAgKChmZW5jZWRfY29kZV9ibG9jayAoaW5mb19zdHJpbmcgKGxhbmd1YWdlKSBAbGFu Z3VhZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvZGVfZmVuY2VfY29udGVu dCkgQGNvbnRlbnQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92 ZXJsYXlzICgpCisgICJSZW1vdmUgYWxsIGlubGluZSBpbWFnZSBvdmVybGF5cyBmcm9tIHRoZSBj dXJyZW50IGJ1ZmZlci4iCisgIChkb2xpc3QgKG92IChvdmVybGF5cy1pbiAocG9pbnQtbWluKSAo cG9pbnQtbWF4KSkpCisgICAgKHdoZW4gKG92ZXJsYXktZ2V0IG92ICdtYXJrZG93bi10cy1pbWFn ZSkKKyAgICAgIChkZWxldGUtb3ZlcmxheSBvdikpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1v dXRsaW5lLXZpZXctY2hhbmdlICgpCisgICJVcGRhdGUgaW1hZ2Ugb3ZlcmxheXMgYWZ0ZXIgb3V0 bGluZSBmb2xkL3VuZm9sZC4KK1JlbW92ZXMgaW1hZ2Ugb3ZlcmxheXMgaW4gZm9sZGVkIHJlZ2lv bnMgYW5kIHRyaWdnZXJzCityZWZvbnRpZmljYXRpb24gc28gdGhhdCBpbWFnZXMgaW4gdW5mb2xk ZWQgcmVnaW9ucyBhcmUgcmVjcmVhdGVkLiIKKyAgKHdoZW4gbWFya2Rvd24tdHMtaW5saW5lLWlt YWdlcworICAgIChtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlzKQorICAgIChmb250 LWxvY2stZmx1c2gpKSkKIAogKGRlZnVuIG1hcmtkb3duLXRzLS1zZXQtaGlkZS1tYXJrdXAgKHZh bHVlKQogICAiU2V0IGhpZGluZyBvZiBNYXJrZG93biBtYXJrdXAgZGVsaW1pdGVycyBpbiB0aGUg Y3VycmVudCBidWZmZXIuCkBAIC0zNDgsNiArNDYwMCw4IEBAIG1hcmtkb3duLXRzLS1zZXQtaGlk ZS1tYXJrdXAKICAgKGlmIHZhbHVlCiAgICAgICAoYWRkLXRvLWludmlzaWJpbGl0eS1zcGVjICdt YXJrZG93bi10cy0tbWFya3VwKQogICAgIChyZW1vdmUtZnJvbS1pbnZpc2liaWxpdHktc3BlYyAn bWFya2Rvd24tdHMtLW1hcmt1cCkpCisgICh3aGVuIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMK KyAgICAobWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cykpCiAgIChmb250LWxvY2st Zmx1c2gpKQogCiAoZGVmdW4gbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUtbWFya3VwICgpCkBAIC0z NTYsMTIyICs0NjEwLDcyNiBAQCBtYXJrZG93bi10cy10b2dnbGUtaGlkZS1tYXJrdXAKICAgKHNl dHEgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAgKG5vdCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkp CiAgIChtYXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwIG1hcmtkb3duLXRzLWhpZGUtbWFya3Vw KSkKIAorKGRlZnVuIG1hcmtkb3duLXRzLS1zZXQtaW5saW5lLWltYWdlcyAodmFsdWUpCisgICJT ZXQgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4KK1ZBTFVF IG5vbi1uaWwgZGlzcGxheXMgaW1hZ2VzLCBuaWwgcmVtb3ZlcyB0aGVtLiIKKyAgKGlmIHZhbHVl CisgICAgICAodHJlZXNpdC1mb250LWxvY2stcmVjb21wdXRlLWZlYXR1cmVzICcoaW1hZ2UtcHJl dmlldykpCisgICAgKHRyZWVzaXQtZm9udC1sb2NrLXJlY29tcHV0ZS1mZWF0dXJlcyBuaWwgJyhp bWFnZS1wcmV2aWV3KSkpCisgIChtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlzKQor ICAoZm9udC1sb2NrLWZsdXNoKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRvZ2dsZS1pbmxpbmUt aW1hZ2VzICgpCisgICJUb2dnbGUgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGluIHRoZSBjdXJy ZW50IGJ1ZmZlci4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHNldHEgbWFya2Rvd24tdHMtaW5saW5l LWltYWdlcyAobm90IG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMpKQorICAobWFya2Rvd24tdHMt LXNldC1pbmxpbmUtaW1hZ2VzIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMpCisgIChtZXNzYWdl ICJJbmxpbmUgaW1hZ2VzICVzIiAoaWYgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmFibGVkIiAiZGlzYWJsZWQiKSkpCisKKzs7 OyBFbXBoYXNpczoKKworKGRlZnZhciBtYXJrZG93bi10cy1lbXBoYXNpcy1hbGlzdAorICAnKCg/ YiAuICIqKiIpCisgICAgKD9CIC4gIl9fIikKKyAgICAoP2kgLiAiKiIpCisgICAgKD9JIC4gIl8i KQorICAgICg/cyAuICJ+fiIpCisgICAgKD9jIC4gImAiKQorICAgICg/YSAuICIqKioiKSkKKyAg IkFsaXN0IG9mIGVtcGhhc2lzIG1hcmtlcnMgZm9yIGBtYXJrZG93bi10cy1lbXBoYXNpemUnLgor RWFjaCBlbnRyeSBpcyAoS0VZIC4gTUFSS0VSKSB3aGVyZSBLRVkgaXMgYSBjaGFyYWN0ZXIgKG5v dCBhIHN0cmluZykgYW5kCitNQVJLRVIgaXMgdGhlIE1hcmtkb3duIGVtcGhhc2l6ZWQgdGV4dCBw cmVmaXgvc3VmZml4LiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZW1waGFzaXMtbm9kZS1hdC1w b2ludCAoKQorICAiUmV0dXJuIHRoZSBlbXBoYXNpcyBub2RlIGF0IHBvaW50LCBvciBuaWwuCitG aW5kcyB0aGUgaW5uZXJtb3N0IGBlbXBoYXNpcycsIGBzdHJvbmdfZW1waGFzaXMnLAorYHN0cmlr ZXRocm91Z2gnLCBvciBgY29kZV9zcGFuJyBub2RlLiIKKyAgKHdoZW4tbGV0KiAoKG5vZGUgKHRy ZWVzaXQtbm9kZS1hdCAocG9pbnQpICdtYXJrZG93bi1pbmxpbmUpKSkKKyAgICAodHJlZXNpdC1w YXJlbnQtdW50aWwKKyAgICAgbm9kZSAobGFtYmRhIChuKQorICAgICAgICAgICAgKG1lbWJlciAo dHJlZXNpdC1ub2RlLXR5cGUgbikKKyAgICAgICAgICAgICAgICAgICAgJygiZW1waGFzaXMiICJz dHJvbmdfZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgInN0cmlrZXRocm91Z2giICJj b2RlX3NwYW4iKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMgKCkK KyAgIlJlbW92ZSBlbXBoYXNpcyBhcm91bmQgcG9pbnQgb3IgcmVnaW9uLgorV2l0aCBhbiBhY3Rp dmUgcmVnaW9uLCBzdHJpcCB0aGUgb3V0ZXJtb3N0IGVtcGhhc2lzIG1hcmtlcnMgZnJvbQordGhl IHNlbGVjdGVkIHRleHQuICBXaXRob3V0IGEgcmVnaW9uLCBmaW5kIHRoZSBlbXBoYXNpcyBub2Rl IGF0Citwb2ludCB1c2luZyB0cmVlLXNpdHRlciBhbmQgcmVtb3ZlIGl0cyBtYXJrZXJzLiIKKyAg KGludGVyYWN0aXZlKQorICAoaWYgKHVzZS1yZWdpb24tcCkKKyAgICAgIChsZXQqICgoYmVnIChy ZWdpb24tYmVnaW5uaW5nKSkKKyAgICAgICAgICAgICAoZW5kIChyZWdpb24tZW5kKSkKKyAgICAg ICAgICAgICAodGV4dCAoYnVmZmVyLXN1YnN0cmluZyBiZWcgZW5kKSkKKyAgICAgICAgICAgICAo c3RyaXBwZWQgbmlsKSkKKyAgICAgICAgKGNsLWxvb3AgZm9yIChfa2V5IC4gbSkgaW4gKHNvcnQg KGNvcHktc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1hcmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGFtYmRhIChhIGIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKD4gKGxlbmd0aCAoY2RyIGEpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggKGNkciBiKSkpKSkKKyAgICAgICAgICAg ICAgICAgZm9yIHJlID0gKGNvbmNhdCAiXFxgIiAocmVnZXhwLXF1b3RlIG0pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlxcKFxcKD86LlxcfFxuXFwpKlxcKSIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocmVnZXhwLXF1b3RlIG0pICJcXCciKQorICAgICAg ICAgICAgICAgICB3aGVuIChzdHJpbmctbWF0Y2ggcmUgdGV4dCkKKyAgICAgICAgICAgICAgICAg ZG8gKHNldHEgc3RyaXBwZWQgKG1hdGNoLXN0cmluZyAxIHRleHQpKQorICAgICAgICAgICAgICAg ICBhbmQgcmV0dXJuIG5pbCkKKyAgICAgICAgKHdoZW4gc3RyaXBwZWQKKyAgICAgICAgICAoZGVs ZXRlLXJlZ2lvbiBiZWcgZW5kKQorICAgICAgICAgIChpbnNlcnQgc3RyaXBwZWQpKSkKKyAgICA7 OyBGaW5kIHRoZSBvdXRlcm1vc3QgZW1waGFzaXMgbm9kZSBhdCBwb2ludC4KKyAgICAod2hlbi1s ZXQqICgoaW5uZXIgKG1hcmtkb3duLXRzLS1lbXBoYXNpcy1ub2RlLWF0LXBvaW50KSkKKyAgICAg ICAgICAgICAgICAobm9kZSAobGV0ICgobiBpbm5lcikpCisgICAgICAgICAgICAgICAgICAgICAg ICAod2hpbGUgKGxldCAoKHBhcmVudCAodHJlZXNpdC1ub2RlLXBhcmVudCBuKSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIHBhcmVudAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtYmVyICh0cmVlc2l0LW5vZGUtdHlw ZSBwYXJlbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygiZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAic3Ryb25nX2VtcGhhc2lzIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmlrZXRocm91Z2giCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29kZV9zcGFu IikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBuIHBhcmVudCkp KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG4pKQorICAgICAgICAgICAgICAgIChzdGFydCAo dHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAgIChlbmQgKHRyZWVzaXQt bm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAgICAgICAgKHRleHQgKHRyZWVzaXQtbm9kZS10ZXh0 IG5vZGUgdCkpCisgICAgICAgICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUp KQorICAgICAgICAgICAgICAgIChtbGVuIChwY2FzZSB0eXBlCisgICAgICAgICAgICAgICAgICAg ICAgICAoInN0cm9uZ19lbXBoYXNpcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0 cmluZy1wcmVmaXgtcCAiXyIgdGV4dCkgMiAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICgi ZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctcHJlZml4LXAg Il8iIHRleHQpIDEgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoInN0cmlrZXRocm91Z2gi IDIpCisgICAgICAgICAgICAgICAgICAgICAgICAoImNvZGVfc3BhbiIgMSkpKQorICAgICAgICAg ICAgICAgIChpbm5lci10ZXh0IChzdWJzdHJpbmcgdGV4dCBtbGVuICgtIChsZW5ndGggdGV4dCkg bWxlbikpKSkKKyAgICAgIChsZXQgKChvZmZzZXQgKC0gKHBvaW50KSBzdGFydCBtbGVuKSkpCisg ICAgICAgIChkZWxldGUtcmVnaW9uIHN0YXJ0IGVuZCkKKyAgICAgICAgKGdvdG8tY2hhciBzdGFy dCkKKyAgICAgICAgKGluc2VydCBpbm5lci10ZXh0KQorICAgICAgICAoZ290by1jaGFyICgrIHN0 YXJ0IChtYXggMCBvZmZzZXQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1lbXBoYXNpemUg KCZvcHRpb25hbCBjaGFyKQorICAiSW5zZXJ0IG9yIGNoYW5nZSBlbXBoYXNpcyBvbiB0ZXh0Lgor SWYgdGhlcmUgaXMgYW4gYWN0aXZlIHJlZ2lvbiwgd3JhcCBpdCB3aXRoIGVtcGhhc2lzIG1hcmtl cnMuCitJZiB0aGVyZSBpcyBubyByZWdpb24sIGluc2VydCBtYXJrZXIgcGFpcnMgYW5kIHBsYWNl IHBvaW50IGJldHdlZW4KK3RoZW0uICBDSEFSIHNlbGVjdHMgdGhlIGVtcGhhc2lzIHR5cGU6CisK KyAgYiAgICoqYm9sZCoqICAgICAgIEIgIF9fYm9sZF9fCisgIGkgICAqaXRhbGljKiAgICAgICBJ ICBfaXRhbGljXworICBhICAgKioqYm9sZCtpdGFsaWMqKioKKyAgcyAgIH5+c3RyaWtldGhyb3Vn aH5+CisgIGMgICBgY29kZWAKKyAgU1BDIHJlbW92ZSBlbXBoYXNpcyBhdCBwb2ludCBvciByZWdp b24iCisgIChpbnRlcmFjdGl2ZQorICAgImNFbXBoYXNpcyBbYl1vbGQgW0Jdb2xkXyBbaV10YWxp YyBbSV10YWxpY18gW2FdbGwgW3NddHJpa2UgW2Ndb2RlIFNQQyByZW1vdmU6IikKKyAgKGlmIChl cSBjaGFyID9ccykKKyAgICAgIChtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMpCisgICAgKGlm LWxldCogKChtYXJrZXIgKGNkciAoYXNzcSBjaGFyIG1hcmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0 KSkpKQorICAgICAgICAoaWYgKHVzZS1yZWdpb24tcCkKKyAgICAgICAgICAgIChsZXQgKChiZWcg KHJlZ2lvbi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgICAgICAgKGVuZCAoY29weS1tYXJrZXIg KHJlZ2lvbi1lbmQpKSkpCisgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAg ICAgICAgIChnb3RvLWNoYXIgZW5kKQorICAgICAgICAgICAgICAgIChpbnNlcnQgbWFya2VyKQor ICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgICAgICAgIChpbnNlcnQg bWFya2VyKSkpCisgICAgICAgICAgKGlmLWxldCogKChib3VuZHMgKGJvdW5kcy1vZi10aGluZy1h dC1wb2ludCAnd29yZCkpKQorICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAg ICAgICAgICAoZ290by1jaGFyIChjZHIgYm91bmRzKSkKKyAgICAgICAgICAgICAgICAoaW5zZXJ0 IG1hcmtlcikKKyAgICAgICAgICAgICAgICAoZ290by1jaGFyIChjYXIgYm91bmRzKSkKKyAgICAg ICAgICAgICAgICAoaW5zZXJ0IG1hcmtlcikpCisgICAgICAgICAgICAoaW5zZXJ0IG1hcmtlciBt YXJrZXIpCisgICAgICAgICAgICAoYmFja3dhcmQtY2hhciAobGVuZ3RoIG1hcmtlcikpKSkKKyAg ICAgICh1c2VyLWVycm9yICJObyBzdWNoIGVtcGhhc2lzIG1hcmtlcjogJWMiIGNoYXIpKSkpCisK Kzs7OyBCbG9jayBzdHJ1Y3R1cmU6CisKKyhkZWZ1biBtYXJrZG93bi10cy1pbnNlcnQtc3RydWN0 dXJlICgmb3B0aW9uYWwgY2hhcikKKyAgIkluc2VydCBhIGJsb2NrIHN0cnVjdHVyZS4KK0lmIHRo ZXJlIGlzIGFuIGFjdGl2ZSByZWdpb24sIHdyYXAgaXQuICBPdGhlcndpc2UsIGluc2VydCBhbiBl bXB0eQorYmxvY2sgYW5kIHBsYWNlIHBvaW50IGluc2lkZS4gIENIQVIgc2VsZWN0cyB0aGUgc3Ry dWN0dXJlIHR5cGU6CisKKyAgYCAgZmVuY2VkIGNvZGUgYmxvY2sgKGBgYCkKKyAgfiAgdGlsZGUg ZmVuY2VkIGNvZGUgYmxvY2sgKH5+fikKKyAgcSAgYmxvY2sgcXVvdGUgKD4gKQorICBkICBob3Jp em9udGFsIGRpdmlkZXIvcnVsZSAoLS0tKQorICB0ICB0YWJsZSIKKyAgKGludGVyYWN0aXZlCisg ICAiY1N0cnVjdHVyZSBbYF1iYWNrLXRpY2sgY29kZSBibG9jayBbfl10aWxkZSBjb2RlIGJsb2Nr IFtxXXVvdGUgW2RdaXZpZGVyIFt0XWFibGU6IikKKyAgKHBjYXNlIGNoYXIKKyAgICAoP2AgKG1h cmtkb3duLXRzLS1pbnNlcnQtY29kZS1ibG9jayA/YCkpCisgICAgKD9+IChtYXJrZG93bi10cy0t aW5zZXJ0LWNvZGUtYmxvY2sgP34pKQorICAgICg/cSAobWFya2Rvd24tdHMtLWluc2VydC1ibG9j ay1xdW90ZSkpCisgICAgKD9kIChtYXJrZG93bi10cy0taW5zZXJ0LWRpdmlkZXIpKQorICAgICg/ dCAobWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXRhYmxlKSkKKyAgICAoXyAodXNlci1lcnJvciAi Tm8gc3VjaCBzdHJ1Y3R1cmU6ICVjIiBjaGFyKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWlu c2VydC1jb2RlLWJsb2NrIChjaGFyICZvcHRpb25hbCBsYW5ndWFnZSkKKyAgIkluc2VydCBhIGZl bmNlZCBjb2RlIGJsb2NrIHVzaW5nIGEgQ0hBUiBzZXF1ZW5jZS4KK0NIQVIgc2hvdWxkIGJlIG9u ZSBvZiBhIGJhY2t0aWNrIG9yIGEgdGlsZGUuCitMQU5HVUFHRSBpcyBhIHdoaXRlc3BhY2UgZnJl ZSBsYW5ndWFnZSBzdHJpbmcuIgorICAoc2V0cSBsYW5ndWFnZQorICAgICAgICAob3IgbGFuZ3Vh Z2UKKyAgICAgICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAi W1s6Ymxhbms6XV0iICIiCisgICAgICAgICAgICAgKGxldCAoKGNvbXBsZXRpb24taWdub3JlLWNh c2UgbmlsKQorICAgICAgICAgICAgICAgICAgIChjYW5kaWRhdGVzCisgICAgICAgICAgICAgICAg ICAgIChzZXEtbWFwCisgICAgICAgICAgICAgICAgICAgICAjJ3N5bWJvbC1uYW1lCisgICAgICAg ICAgICAgICAgICAgICAoc2VxLXVuaXEKKyAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kICht YXBjYXIgIydjYXIgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2VzKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAjJ2NhciBtYXJrZG93bi10cy0tY29kZS1ibG9j ay1ub24tdHMtbW9kZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyICMn Y2FyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMpKSkpKSkKKyAgICAgICAgICAgICAgIChj b21wbGV0aW5nLXJlYWQKKyAgICAgICAgICAgICAgICAiQ29kZSBibG9jayBsYW5ndWFnZTogIgor ICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAg ICAgICAgICAnY29uZmlybSA7IFByb21wdCBpZiB0aGUgbGFuZ3VhZ2UgaXMgbm90IG9uIG91ciBs aXN0LgorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1s YW5ndWFnZS1oaXN0b3J5KSkpKSkKKyAgKGxldCAoKGZlbmNlLXN0cmluZyAobWFrZS1zdHJpbmcg MyBjaGFyKSkpCisgICAgKGlmICh1c2UtcmVnaW9uLXApCisgICAgICAgIChsZXQgKChiZWcgKHJl Z2lvbi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgICAoZW5kIChyZWdpb24tZW5kKSkpCisgICAg ICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAoZ290by1jaGFyIGVuZCkKKyAgICAg ICAgICAgICh1bmxlc3MgKGJvbHApIChpbnNlcnQgIlxuIikpCisgICAgICAgICAgICAoaW5zZXJ0 IGZlbmNlLXN0cmluZyAiXG4iKQorICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAg ICAgICAoaW5zZXJ0IGZlbmNlLXN0cmluZyBsYW5ndWFnZSAiXG4iKSkpCisgICAgICAoaW5zZXJ0 IGZlbmNlLXN0cmluZyBsYW5ndWFnZSAiXG5cbiIgZmVuY2Utc3RyaW5nKQorICAgICAgKGZvcndh cmQtbGluZSAtMSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbnNlcnQtYmxvY2stcXVvdGUg KCkKKyAgIkluc2VydCBhIGJsb2NrIHF1b3RlLiIKKyAgKGlmICh1c2UtcmVnaW9uLXApCisgICAg ICAobGV0ICgoYmVnIChyZWdpb24tYmVnaW5uaW5nKSkKKyAgICAgICAgICAgIChlbmQgKGNvcHkt bWFya2VyIChyZWdpb24tZW5kKSkpKQorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAg ICAoZ290by1jaGFyIGJlZykKKyAgICAgICAgICAod2hpbGUgKDwgKHBvaW50KSBlbmQpCisgICAg ICAgICAgICAoaW5zZXJ0ICI+ICIpCisgICAgICAgICAgICAoZm9yd2FyZC1saW5lIDEpKSkpCisg ICAgKGluc2VydCAiPiAiKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW5zZXJ0LWRpdmlkZXIg KCkKKyAgIkluc2VydCBhIGhvcml6b250YWwgcnVsZS4iCisgICh1bmxlc3MgKGJvbHApIChpbnNl cnQgIlxuIikpCisgIChpbnNlcnQgIlxuLS0tXG5cbiIpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt LWFwcGx5LWVsbGlwc2lzICgpCisgICJBcHBseSBgbWFya2Rvd24tdHMtZWxsaXBzaXMnIHRvIHRo ZSBjdXJyZW50IGJ1ZmZlcidzIGRpc3BsYXkgdGFibGUuIgorICAoaWYgKGFuZCAoc3RyaW5ncCBt YXJrZG93bi10cy1lbGxpcHNpcykKKyAgICAgICAgICAgKG5vdCAoc3RyaW5nLWVtcHR5LXAgbWFy a2Rvd24tdHMtZWxsaXBzaXMpKSkKKyAgICAgIChsZXQgKCh0YWJsZSAob3IgYnVmZmVyLWRpc3Bs YXktdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgKG1ha2UtZGlzcGxheS10YWJsZSkpKSkK KyAgICAgICAgKHNldC1kaXNwbGF5LXRhYmxlLXNsb3QKKyAgICAgICAgIHRhYmxlIDQKKyAgICAg ICAgICh2Y29uY2F0IChtYXBjYXIgKGxhbWJkYSAoYykgKG1ha2UtZ2x5cGgtY29kZSBjICdzaGFk b3cpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1lbGxpcHNpcykpKQor ICAgICAgICAoc2V0cSBidWZmZXItZGlzcGxheS10YWJsZSB0YWJsZSkpCisgICAgKHdoZW4gYnVm ZmVyLWRpc3BsYXktdGFibGUKKyAgICAgIChzZXQtZGlzcGxheS10YWJsZS1zbG90IGJ1ZmZlci1k aXNwbGF5LXRhYmxlIDQgbmlsKSkpKQorCis7OzsgTWFqb3IgbW9kZToKKworKGRlZnVuIG1hcmtk b3duLXRzLW91dGxpbmUtY3ljbGUgKCkKKyAgIkN5Y2xlIHZpc2liaWxpdHkgb2YgdGhlIGhlYWRp bmcgYXQgcG9pbnQuCitPbiBhIGhlYWRpbmcsIGNhbGwgYG91dGxpbmUtY3ljbGUnLiAgT3RoZXJ3 aXNlIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgICh3aGVuIChvdXRsaW5lLW9uLWhl YWRpbmctcCkKKyAgICAob3V0bGluZS1jeWNsZSkpKQorCisoZGVmdmFyLWtleW1hcCBtYXJrZG93 bi10cy1tb2RlLW1hcAorICA6ZG9jICJLZXltYXAgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCisg ICJNLTxsZWZ0PiIgICAgIydtYXJrZG93bi10cy1wcm9tb3RlCisgICJNLTxyaWdodD4iICAgIydt YXJrZG93bi10cy1kZW1vdGUKKyAgIk0tPHVwPiIgICAgICAjJ21hcmtkb3duLXRzLW1vdmUtc3Vi dHJlZS11cAorICAiTS08ZG93bj4iICAgICMnbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLWRvd24K KyAgIkMtYyBDLW4iICAgICAjJ291dGxpbmUtbmV4dC1oZWFkaW5nCisgICJDLWMgQy1wIiAgICAg IydvdXRsaW5lLXByZXZpb3VzLWhlYWRpbmcKKyAgIkMtYyBDLXUiICAgICAjJ291dGxpbmUtdXAt aGVhZGluZworICAiQy1jIEMtZiIgICAgICMnb3V0bGluZS1mb3J3YXJkLXNhbWUtbGV2ZWwKKyAg IkMtYyBDLWIiICAgICAjJ291dGxpbmUtYmFja3dhcmQtc2FtZS1sZXZlbAorICAiQy1jIEMteCBD LWYiICMnbWFya2Rvd24tdHMtZW1waGFzaXplCisgICJDLWMgQy14IEMtbSIgIydtYXJrZG93bi10 cy10b2dnbGUtaGlkZS1tYXJrdXAKKyAgIkMtYyBDLXggQy12IiAjJ21hcmtkb3duLXRzLXRvZ2ds ZS1pbmxpbmUtaW1hZ2VzCisgICJDLWMgQy1jIiAgICAgIydtYXJrZG93bi10cy10b2dnbGUtY2hl Y2tib3gKKyAgIkMtYyBDLXIiICAgICAjJ21hcmtkb3duLXRzLXJlbnVtYmVyLWxpc3QKKyAgIkMt YyBDLSwiICAgICAjJ21hcmtkb3duLXRzLWluc2VydC1zdHJ1Y3R1cmUKKyAgIkMtYyBDLXYgbiIg ICAjJ21hcmtkb3duLXRzLW1vdmUtdG8tbmV4dC1jb2RlLWJsb2NrCisgICJDLWMgQy12IHAiICAg IydtYXJrZG93bi10cy1tb3ZlLXRvLXByZXZpb3VzLWNvZGUtYmxvY2sKKyAgIlJFVCIgICAgICAg ICAjJ21hcmtkb3duLXRzLW5ld2xpbmUKKyAgIk0tUkVUIiAgICAgICAjJ21hcmtkb3duLXRzLWlu c2VydC1saXN0LWl0ZW0KKyAgIlRBQiIgICAgICAgICAjJ21hcmtkb3duLXRzLW91dGxpbmUtY3lj bGUpCisKKyhkZWZ2YXIta2V5bWFwIG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1t b2RlLW1hcAorICA6ZG9jICJLZXltYXAgZm9yIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNv bnRleHQtbW9kZScuCitUaGVzZSBvdmVycmlkZSBrZXlzIGluIGBtYXJrZG93bi10cy1tb2RlLW1h cCcgdG8gc3VwcG9ydCBleGVjdXRpbmcgdGhlaXIKK2NvbW1hbmRzIGluIGEgY29kZS1ibG9jayBj b250ZXh0LiIKKyAgOnBhcmVudCBtYXJrZG93bi10cy1tb2RlLW1hcAorICA6bWVudSBuaWwKKyAg Ik0tLiIgICAgICAgICAjJ21hcmtkb3duLXRzLS1jb2RlLWJsb2NrLXhyZWYtZmluZC1kZWZpbml0 aW9ucworICAiVEFCIiAgICAgICAgICMnaW5kZW50LWZvci10YWItY29tbWFuZAorICAiUkVUIiAg ICAgICAgICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiQy1qIiAgICAgICAg ICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiTS1SRVQiICAgICAgICMnbWFy a2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiTS1xIiAgICAgICAgICMnbWFya2Rvd24t dHMtLWNvZGUtYmxvY2stZmlsbC1wYXJhZ3JhcGgpCisKKyhkZWZ2YXIta2V5bWFwIG1hcmtkb3du LXRzLWluLXRhYmxlLW1vZGUtbWFwCisgIDpkb2MgIktleW1hcCBmb3IgYG1hcmtkb3duLXRzLWlu LXRhYmxlLW1vZGUnLgorVGhlc2Ugb3ZlcnJpZGUga2V5cyBpbiBgbWFya2Rvd24tdHMtbW9kZS1t YXAnIHRvIHN1cHBvcnQgZXhlY3V0aW5nIHRoZWlyCitjb21tYW5kcyBpbiBhIHRhYmxlIGNvbnRl eHQuIgorICA6cGFyZW50IG1hcmtkb3duLXRzLW1vZGUtbWFwCisgIDptZW51IG5pbAorICAiPHJl dHVybj4iICAgICMnbWFya2Rvd24tdHMtdGFibGUtbmV4dC1yb3cKKyAgIlMtPHJldHVybj4iICAj J21hcmtkb3duLXRzLXRhYmxlLXByZXZpb3VzLXJvdworICAiPHRhYj4iICAgICAgICMnbWFya2Rv d24tdHMtdGFibGUtbmV4dC1jZWxsCisgICI8YmFja3RhYj4iICAgIydtYXJrZG93bi10cy10YWJs ZS1wcmV2aW91cy1jZWxsCisgICJNLTx1cD4iICAgICAgIydtYXJrZG93bi10cy10YWJsZS1tb3Zl LXJvdy11cAorICAiTS08ZG93bj4iICAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3ctZG93 bgorICAiTS08bGVmdD4iICAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tbGVmdAor ICAiTS08cmlnaHQ+IiAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tcmlnaHQKKyAg Ik0tUy08dXA+IiAgICAjJ21hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYWJvdmUKKyAgIk0t Uy08ZG93bj4iICAjJ21hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1yb3cKKyAgIk0tUy08cmlnaHQ+ IiAjJ21hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tbGVmdAorICAiTS1TLTxsZWZ0PiIg ICMnbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLWNvbHVtbgorICAiQy1jIEMtdCBhIiAgICMnbWFy a2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uCisgICJDLWMgQy1jIiAgICAgIydtYXJrZG93bi10 cy10YWJsZS1hbGlnbi10YWJsZQorICAiQy1jIEMtdCB0IiAgICMnbWFya2Rvd24tdHMtdGFibGUt dHJhbnNwb3NlLXRhYmxlKQorCisoZWFzeS1tZW51LWRlZmluZSBtYXJrZG93bi10cy1tb2RlLW1l bnUgbWFya2Rvd24tdHMtbW9kZS1tYXAKKyAgImBtYXJrZG93bi10cy1tb2RlJyBtZW51LiIKKyAg JygiTWFya2Rvd24iIDp2aXNpYmxlIG1hcmtkb3duLXRzLW1lbnUtYmFyLXNob3cKKyAgICAiLS0i CisgICAgWyJDeWNsZSBPdXRsaW5lIFZpc2liaWxpdHkiICBtYXJrZG93bi10cy1vdXRsaW5lLWN5 Y2xlICAgICAgICAgICAgICA6aGVscCAiQ3ljbGUgaGVhZGluZyB2aXNpYmlsaXR5IGZyb20gcG9p bnQiXQorICAgIFsiVG9nZ2xlIEhpZGUgTWFya3VwIiAgICAgICAgbWFya2Rvd24tdHMtdG9nZ2xl LWhpZGUtbWFya3VwICAgICAgICAgOmhlbHAgIlRvZ2dsZSBkaXNwbGF5IG9mIG1hcmt1cCBjaGFy YWN0ZXJzIiA6c3R5bGUgdG9nZ2xlIDpzZWxlY3RlZCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cF0K KyAgICBbIlRvZ2dsZSBJbmxpbmUgSW1hZ2VzIiAgICAgIG1hcmtkb3duLXRzLXRvZ2dsZS1pbmxp bmUtaW1hZ2VzICAgICAgIDpoZWxwICJUb2dnbGUgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGJl bG93IGxpbmtzIiA6c3R5bGUgdG9nZ2xlIDpzZWxlY3RlZCBtYXJrZG93bi10cy1pbmxpbmUtaW1h Z2VzXQorICAgICItLSIKKyAgICBbIlVwIiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmUt dXAtaGVhZGluZyAgICAgICAgICAgICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwYXJlbnQg aGVhZGluZyJdCisgICAgWyJOZXh0IiAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lLW5leHQt aGVhZGluZyAgICAgICAgICAgICAgICAgICA6aGVscCAiTW92ZSB0byB0aGUgbmV4dCBoZWFkaW5n Il0KKyAgICBbIlByZXZpb3VzIiAgICAgICAgICAgICAgICAgIG91dGxpbmUtcHJldmlvdXMtaGVh ZGluZyAgICAgICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwcmV2aW91cyBoZWFkaW5nIl0K KyAgICBbIk5leHQgU2FtZSBMZXZlbCIgICAgICAgICAgIG91dGxpbmUtZm9yd2FyZC1zYW1lLWxl dmVsICAgICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBuZXh0IGhlYWRpbmcgYXQgdGhlIHNh bWUgbGV2ZWwiXQorICAgIFsiUHJldmlvdXMgU2FtZSBMZXZlbCIgICAgICAgb3V0bGluZS1iYWNr d2FyZC1zYW1lLWxldmVsICAgICAgICAgICAgOmhlbHAgIk1vdmUgdG8gdGhlIHByZXZpb3VzIGhl YWRpbmcgYXQgdGhlIHNhbWUgbGV2ZWwiXQorICAgICItLSIKKyAgICBbIkp1bXAiICAgICAgICAg ICAgICAgICAgICAgIGltZW51ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpoZWxw ICJKdW1wIHRvIGEgaGVhZGluZyB2aWEgY29tcGxldGlvbiJdCisgICAgIi0tIgorICAgIFsiTW92 ZSBTdWJ0cmVlIFVwIiAgICAgICAgICAgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLXVwICAgICAg ICAgICAgOmhlbHAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gdXAiXQor ICAgIFsiTW92ZSBTdWJ0cmVlIERvd24iICAgICAgICAgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVl LWRvd24gICAgICAgICAgOmhlbHAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0 ZW0gZG93biJdCisgICAgWyJQcm9tb3RlIiAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1w cm9tb3RlICAgICAgICAgICAgICAgICAgICA6aGVscCAiUHJvbW90ZSBoZWFkaW5nIG9yIGxpc3Qg aXRlbSJdCisgICAgWyJEZW1vdGUiICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1kZW1v dGUgICAgICAgICAgICAgICAgICAgICA6aGVscCAiRGVtb3RlIGhlYWRpbmcgb3IgbGlzdCBpdGVt Il0KKyAgICAiLS0iCisgICAgWyJFbXBoYXNpcy4uLiIgICAgICAgICAgICAgICBtYXJrZG93bi10 cy1lbXBoYXNpemUgICAgICAgICAgICAgICAgICA6aGVscCAiQWRkIG9yIGNoYW5nZSBlbXBoYXNp cyBvbiByZWdpb24iXQorICAgIFsiQWRkIEJsb2NrIFN0cnVjdHVyZSIgICAgICAgbWFya2Rvd24t dHMtaW5zZXJ0LXN0cnVjdHVyZSAgICAgICAgICAgOmhlbHAgIkluc2VydCBhIGNvZGUgYmxvY2ss IHF1b3RlLCBvciBvdGhlciBzdHJ1Y3R1cmUiXQorICAgICItLSIKKyAgICBbIlRvZ2dsZSBDaGVj a2JveCIgICAgICAgICAgIG1hcmtkb3duLXRzLXRvZ2dsZS1jaGVja2JveCAgICAgICAgICAgIDpo ZWxwICJUb2dnbGUgdGFzayBsaXN0IGNoZWNrYm94IGF0IHBvaW50Il0KKyAgICBbIk5ldyBMaXN0 IEl0ZW0iICAgICAgICAgICAgIG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0gICAgICAgICAg IDpoZWxwICJJbnNlcnQgYSBuZXcgbGlzdCBpdGVtIGFmdGVyIHRoZSBjdXJyZW50IG9uZSJdCisg ICAgWyJSZW51bWJlciBMaXN0IiAgICAgICAgICAgICBtYXJrZG93bi10cy1yZW51bWJlci1saXN0 ICAgICAgICAgICAgICA6aGVscCAiUmVudW1iZXIgdGhlIG9yZGVyZWQgbGlzdCBhdCBwb2ludCJd CisgICAgIi0tIgorICAgICgiVGFibGUiCisgICAgIFsiSW5zZXJ0IHRhYmxlIiAgICAgICAgICAg ICBtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgICAgICAgICA6aGVscCAiSW5zZXJ0IGFu IGVtcHR5IHRhYmxlIGF0IHBvaW50Il0KKyAgICAgWyJEZWxldGUgdGFibGUiICAgICAgICAgICAg IG1hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS10YWJsZSAgICAgICAgIDpoZWxwICJEZWxldGUgdGhl IHRhYmxlIGF0IHBvaW50Il0KKyAgICAgIi0tIgorICAgICBbIk5leHQgY2VsbCIgICAgICAgICAg ICAgICAgbWFya2Rvd24tdHMtdGFibGUtbmV4dC1jZWxsICAgICAgICAgICAgOmhlbHAgIk1vdmUg cG9pbnQgdG8gdGhlIG5leHQgY2VsbCJdCisgICAgIFsiUHJldmlvdXMgY2VsbCIgICAgICAgICAg ICBtYXJrZG93bi10cy10YWJsZS1wcmV2aW91cy1jZWxsICAgICAgICA6aGVscCAiTW92ZSBwb2lu dCB0byB0aGUgcHJldmlvdXMgY2VsbCJdCisgICAgICItLSIKKyAgICAgWyJOZXh0IHJvdyIgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93ICAgICAgICAgICAgIDpoZWxw ICJNb3ZlIHBvaW50IHRvIHRoZSBuZXh0IHJvdyJdCisgICAgIFsiUHJldmlvdXMgcm93IiAgICAg ICAgICAgICBtYXJrZG93bi10cy10YWJsZS1wcmV2aW91cy1yb3cgICAgICAgICA6aGVscCAiTW92 ZSBwb2ludCB0byB0aGUgcHJldmlvdXMgcm93Il0KKyAgICAgWyJJbnNlcnQgcm93IGJlbG93IiAg ICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYmVsb3cgICAgIDpoZWxwICJJbnNl cnQgYW4gZW1wdHkgcm93IGJlbG93IHBvaW50Il0KKyAgICAgWyJJbnNlcnQgcm93IGFib3ZlIiAg ICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYWJvdmUgICAgIDpoZWxwICJJbnNl cnQgYW4gZW1wdHkgcm93IGFib3ZlIHBvaW50Il0KKyAgICAgWyJDbG9uZSByb3cgYmVsb3ciICAg ICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLWNsb25lLXJvdy1iZWxvdyAgICAgIDpoZWxwICJDbG9u ZSB0aGUgY3VycmVudCByb3cgYmVsb3cgaXQiXQorICAgICBbIkNsb25lIHJvdyBhYm92ZSIgICAg ICAgICAgbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWFib3ZlICAgICAgOmhlbHAgIkNsb25l IHRoZSBjdXJyZW50IHJvdyBhYm92ZSBpdCJdCisgICAgIFsiTW92ZSByb3cgdXAiICAgICAgICAg ICAgICBtYXJrZG93bi10cy10YWJsZS1tb3ZlLXJvdy11cCAgICAgICAgICA6aGVscCAiTW92ZSB0 aGUgcm93IGF0IHBvaW50IHVwIl0KKyAgICAgWyJNb3ZlIHJvdyBkb3duIiAgICAgICAgICAgIG1h cmtkb3duLXRzLXRhYmxlLW1vdmUtcm93LWRvd24gICAgICAgIDpoZWxwICJNb3ZlIHRoZSByb3cg YXQgcG9pbnQgZG93biJdCisgICAgIFsiRGVsZXRlIHJvdyIgICAgICAgICAgICAgICBtYXJrZG93 bi10cy10YWJsZS1kZWxldGUtcm93ICAgICAgICAgICA6aGVscCAiRGVsZXRlIHRoZSByb3cgYXQg cG9pbnQiXQorICAgICAiLS0iCisgICAgIFsiSW5zZXJ0IGNvbHVtbiBsZWZ0IiAgICAgICBtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQgICA6aGVscCAiSW5zZXJ0IGFuIGVtcHR5 IGNvbHVtbiB0byB0aGUgbGVmdCBvZiBwb2ludCJdCisgICAgIFsiSW5zZXJ0IGNvbHVtbiByaWdo dCIgICAgICBtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLXJpZ2h0ICA6aGVscCAiSW5z ZXJ0IGFuIGVtcHR5IGNvbHVtbiB0byB0aGUgcmlnaHQgb2YgcG9pbnQiXQorICAgICBbIkNsb25l IGNvbHVtbiBsZWZ0IiAgICAgICAgbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtY29sdW1uLWxlZnQg ICAgOmhlbHAgIkluc2VydCBhbiBlbXB0eSBjb2x1bW4gdG8gdGhlIGxlZnQgb2YgcG9pbnQiXQor ICAgICBbIkNsb25lIGNvbHVtbiByaWdodCIgICAgICAgbWFya2Rvd24tdHMtdGFibGUtY2xvbmUt Y29sdW1uLXJpZ2h0ICAgOmhlbHAgIkluc2VydCBhbiBlbXB0eSBjb2x1bW4gdG8gdGhlIHJpZ2h0 IG9mIHBvaW50Il0KKyAgICAgWyJNb3ZlIGNvbHVtbiBsZWZ0IiAgICAgICAgIG1hcmtkb3duLXRz LXRhYmxlLW1vdmUtY29sdW1uLWxlZnQgICAgIDpoZWxwICJNb3ZlIHRoZSBjdXJyZW50IGNvbHVt biB0byBpdHMgbGVmdCJdCisgICAgIFsiTW92ZSBjb2x1bW4gcmlnaHQiICAgICAgICBtYXJrZG93 bi10cy10YWJsZS1tb3ZlLWNvbHVtbi1yaWdodCAgICA6aGVscCAiTW92ZSB0aGUgY3VycmVudCBj b2x1bW4gdG8gaXRzIHJpZ2h0Il0KKyAgICAgWyJBbGlnbiBjb2x1bW4uLi4iICAgICAgICAgIG1h cmtkb3duLXRzLXRhYmxlLWFsaWduLWNvbHVtbiAgICAgICAgIDpoZWxwICJBbGlnbiBjb2x1bW4g YXQgcG9pbnQgdG8gdGhlIGxlZnQsIGNlbnRlciwgb3IgcmlnaHQiXQorICAgICBbIkRlbGV0ZSBj b2x1bW4iICAgICAgICAgICAgbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLWNvbHVtbiAgICAgICAg OmhlbHAgIkRlbGV0ZSB0aGUgY29sdW1uIGF0IHBvaW50Il0KKyAgICAgIi0tIgorICAgICBbIkFs aWduIHRhYmxlIGNvbHVtbnMiICAgICAgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tdGFibGUgICAg ICAgICAgOmhlbHAgIkFsaWduIHRoZSB0YWJsZSBhdCBwb2ludCBpbiBhbiBlYXN5LXRvLWVkaXQg Zm9ybWF0Il0KKyAgICAgWyJUcmFuc3Bvc2UgdGFibGUiICAgICAgICAgIG1hcmtkb3duLXRzLXRh YmxlLXRyYW5zcG9zZS10YWJsZSAgICAgIDpoZWxwICJUcmFuc3Bvc2UgdGhlIHRhYmxlIGF0IHBv aW50IHN3YXBwaW5nIGl0cyByb3dzIGFuZCBjb2x1bW5zIl0KKyAgICAgIi0tIgorICAgICBbIkNv bnZlcnQgQ1NWIHRvIHRhYmxlIiAgICAgbWFya2Rvd24tdHMtdGFibGUtY29udmVydC1jc3YtcmVn aW9uICAgOmhlbHAgIkNvbnZlcnQgYSByYW5nZSBvZiBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzIHRv IGEgbmV3IHRhYmxlIGF0IHBvaW50Il0KKyAgICAgWyJDb252ZXJ0IFRTViB0byB0YWJsZSIgICAg IG1hcmtkb3duLXRzLXRhYmxlLWNvbnZlcnQtdHN2LXJlZ2lvbiAgIDpoZWxwICJDb252ZXJ0IGEg cmFuZ2Ugb2YgdGFiLXNlcGFyYXRlZCB2YWx1ZXMgdG8gYSBuZXcgdGFibGUgYXQgcG9pbnQiXQor ICAgICBbIkV4cG9ydCB0YWJsZSB0byBDU1YiICAgICAgbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0 LXRhYmxlLWNzdiAgICAgOmhlbHAgIkV4cG9ydCB0aGUgdGFibGUgYXQgcG9pbnQgdG8gYSBjb21t YS1zZXBhcmF0ZWQgdmFsdWVzIGJ1ZmZlciJdCisgICAgIFsiRXhwb3J0IHRhYmxlIHRvIFRTViIg ICAgICBtYXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUtdHN2ICAgICA6aGVscCAiRXhwb3J0 IHRoZSB0YWJsZSBhdCBwb2ludCB0byBhIHRhYi1zZXBhcmF0ZWQgdmFsdWVzIGJ1ZmZlciJdKSkp CisKKyhkZWZ1biBtYXJrZG93bi10cy0tc2V0LXVwICgpCisgICJTZXQgdXAgdGhlIGJ1ZmZlciBm b3IgYG1hcmtkb3duLXRzLW1vZGUnLgorSWYgYG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lJyBp cyBub24tbmlsLCB1c2UgYSBsaWdodHdlaWdodCBzZXQgdXAgZm9yCitlbWJlZGRlZCBpbmxpbmUg YG1hcmtkb3duLXRzLW1vZGUnIGJ1ZmZlcnMuCiAKLTs7OyBNYWpvciBtb2RlCitOT1RFOiBDYWxs IHRoaXMgZnVuY3Rpb24gb25seSB3aGVuIHRoZSB0cmVlc2l0IGBtYXJrZG93bicgYW5kCitgbWFy a2Rvd24taW5saW5lJyBwYXJzZXJzIGFyZSBhdmFpbGFibGUuIgogCi0oZGVmdW4gbWFya2Rvd24t dHMtc2V0dXAgKCkKLSAgIlNldHVwIHRyZWVzaXQgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCi0g IChtYWtlLWxvY2FsLXZhcmlhYmxlICdtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkKKyAgOzsgU2V0 IHRoZXNlIHVwIGZvciBib3RoIG1hc3RlciBhbmQgaW5saW5lIGZvciBjb2RlLWJsb2NrIGJ1ZmZl cnMuCisgIChzZXRxLWxvY2FsIGNvbW1lbnQtc3RhcnQgIjwhLS0gIgorICAgICAgICAgICAgICBj b21tZW50LWVuZCAiIC0tPiIKKyAgICAgICAgICAgICAgY29tbWVudC1zdGFydC1za2lwICI8IS0t WyBcdF0qIgorICAgICAgICAgICAgICBjb21tZW50LWVuZC1za2lwICJbIFx0XSotLT4iCisgICAg ICAgICAgICAgIGNvbW1lbnQtdXNlLXN5bnRheCBuaWwpCisKKyAgKHNldHEtbG9jYWwgZmlsbC1w YXJhZ3JhcGgtZnVuY3Rpb24KKyAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tZmlsbC1wYXJh Z3JhcGgKKyAgICAgICAgICAgICAgZmlsbC1mb3J3YXJkLXBhcmFncmFwaC1mdW5jdGlvbgorICAg ICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1maWxsLWZvcndhcmQtcGFyYWdyYXBoKQorCisgIDs7 IGBhZGFwdGl2ZS1maWxsLWZ1bmN0aW9uJyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIKKyAgOzsgYGFk YXB0aXZlLWZpbGwtcmVnZXhwJzsgdGhlIGRlZmF1bHQgcmVnZXhwIGlzIGZpbmUgYXMgYQorICA7 OyBmYWxsYmFjayBmb3IgcGxhaW4gKG5vbi1saXN0KSBwYXJhZ3JhcGhzLgorICAoc2V0cS1sb2Nh bCBhZGFwdGl2ZS1maWxsLWZ1bmN0aW9uICMnbWFya2Rvd24tdHMtLWFkYXB0aXZlLWZpbGwpCisK KyAgOzsgQ3JlYXRlIGFuZCBjb25maWd1cmUgdGhlIHBhcnNlcnMuCisgICh0cmVlc2l0LXBhcnNl ci1jcmVhdGUgJ21hcmtkb3duLWlubGluZSkKKyAgKHNldHEgdHJlZXNpdC1wcmltYXJ5LXBhcnNl cgorICAgICAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdtYXJrZG93bikpCisKKyAgKHNldHEt bG9jYWwgZm9udC1sb2NrLWRlZmF1bHRzIG5pbCkKICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250 LWxvY2stc2V0dGluZ3MgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MpCi0gIChzZXRxLWxv Y2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MgKG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncykp Ci0gIChhZGQtdG8tbGlzdCAnZm9udC1sb2NrLWV4dHJhLW1hbmFnZWQtcHJvcHMgJ2ludmlzaWJs ZSkKLQotICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICdodG1sIHQpCi0gICAgKHRyZWVzaXQtcGFy c2VyLWNyZWF0ZSAnaHRtbCkKLSAgICAocmVxdWlyZSAnaHRtbC10cy1tb2RlKQotICAgIChkZWZ2 YXIgaHRtbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciBodG1sLXRz LW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKLSAgICAoc2V0cS1sb2NhbCB0 cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNp dC1mb250LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwtdHMtbW9k ZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9j ay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250LWxvY2st ZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUt bGlzdAotICAgICAgICAgICAgICAgICBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZl YXR1cmUtbGlzdCkpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAg ICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAgICAg ICAgICAgICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAg ICA6ZW1iZWQgJ2h0bWwKLSAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24K LSAgICAgICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAotICAgICAgICAgICAgICAgICAgICAg ICAgICcoKGh0bWxfYmxvY2spIEBodG1sKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmVt YmVkICdodG1sCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duLWlubGlu ZQotICAgICAgICAgICAgICAgICAgICAgICAgICcoKGh0bWxfdGFnKSBAaHRtbCkpKSkpCi0KLSAg KHdoZW4gKHRyZWVzaXQtcmVhZHktcCAneWFtbCB0KQotICAgIChyZXF1aXJlICd5YW1sLXRzLW1v ZGUpCi0gICAgKGRlZnZhciB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykKLSAgICAo ZGVmdmFyIHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKLSAgICAoc2V0cS1s b2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBlbmQg dHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHlhbWwt dHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZv bnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250 LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZl YXR1cmUtbGlzdAotICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0 dXJlLWxpc3QpKQotICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAg ICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAgICAg ICAgICAgICAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAg OmVtYmVkICd5YW1sCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duCi0g ICAgICAgICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKLSAgICAgICAgICAgICAgICAgICAgICAg ICAnKChtaW51c19tZXRhZGF0YSkgQHlhbWwpKSkpKQotCi0gICh3aGVuICh0cmVlc2l0LXJlYWR5 LXAgJ3RvbWwgdCkKLSAgICAocmVxdWlyZSAndG9tbC10cy1tb2RlKQotICAgIChkZWZ2YXIgdG9t bC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciB0b21sLXRzLW1vZGUt LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpCi0gICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0 dGluZ3MKLSAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAg ICAgICAgICAgICAgICB0b21sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykpCi0gICAgKHNl dHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAg KHRyZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAgICAgICB0 cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAgdG9tbC10cy1t b2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJh bmdlLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRp bmdzCi0gICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcwotICAgICAg ICAgICAgICAgICAgICAgICAgIDplbWJlZCAndG9tbAotICAgICAgICAgICAgICAgICAgICAgICAg IDpob3N0ICdtYXJrZG93bgotICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2NhbCB0Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgJygocGx1c19tZXRhZGF0YSkgQHRvbWwpKSkpKQorICAoc2V0 cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QgJygoZGVsaW1pdGVyIGhlYWRp bmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJh Z3JhcGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw YXJhZ3JhcGgtaW5saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaW1hZ2UtcHJldmlldyBlcnJvcikpKQorCisgIChjb25kIChtYXJrZG93bi10cy0t c2V0LXVwLWlubGluZQorICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGlu Z3MKKyAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAgICAg ICAgICAgICAgICAgICA6ZW1iZWQgJ21hcmtkb3duLWlubGluZQorICAgICAgICAgICAgICAgICAg ICAgICA6aG9zdCAnbWFya2Rvd24KKyAgICAgICAgICAgICAgICAgICAgICAgJygoaW5saW5lKSBA bWFya2Rvd24taW5saW5lKSkpKQorICAgICAgICAodAorICAgICAgICAgOzsgUmFuZ2Ugc2V0dGlu Z3MgZGlmZmVyIGluIHRoZSBtYXN0ZXIgYnVmZmVyIHZzLiBpbmxpbmUgYWJvdmUuCisgICAgICAg ICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzIChtYXJrZG93bi10cy0tcmFuZ2Ut c2V0dGluZ3MpKQorCisgICAgICAgICA7OyBDb25maWd1cmUgZmVhdHVyZXMgbmVlZGVkIG9ubHkg aW4gdGhlIG1hc3RlciBidWZmZXIuCisKKyAgICAgICAgIDs7IEltZW51IHN1cHBvcnQuCisgICAg ICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXNpbXBsZS1pbWVudS1zZXR0aW5ncworICAgICAgICAg ICAgICAgICAgICAgYCgoIkhlYWRpbmdzIiAsIydtYXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1u b2RlLXAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pbCAsIydtYXJrZG93bi10cy0taW1lbnUt aGVhZGluZy1uYW1lLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAoIkNvZGUgQmxv Y2tzIiAsIydtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1ub2RlLXAKKyAgICAgICAgICAg ICAgICAgICAgICAgIG5pbCAsIydtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1uYW1lLWZ1 bmN0aW9uKSkpCisKKyAgICAgICAgIDs7IE91dGxpbmUgc3VwcG9ydC4KKyAgICAgICAgIChzZXRx LWxvY2FsIHRyZWVzaXQtb3V0bGluZS1wcmVkaWNhdGUgIydtYXJrZG93bi10cy0tb3V0bGluZS1w cmVkaWNhdGUpCisgICAgICAgICAoc2V0cS1sb2NhbCBvdXRsaW5lLW1pbm9yLW1vZGUtY3ljbGUg dCkKKyAgICAgICAgIChvdXRsaW5lLW1pbm9yLW1vZGUgMSkKKyAgICAgICAgIChtYXJrZG93bi10 cy0tYXBwbHktZWxsaXBzaXMpCisKKyAgICAgICAgIDs7IE5PVEU6IGBvdXRsaW5lLXZpZXctY2hh bmdlLWhvb2snIHdhcyBvYnNvbGV0ZWQgaW4gMjkuMSAoY29tbWl0CisgICAgICAgICA7OyA1M2Ix ZTZmOTZjYikgb24gdGhlIGdyb3VuZHMgdGhhdCBvbmx5IGxhenktbG9jayB1c2VkIGl0LCBidXQg bm8KKyAgICAgICAgIDs7IHJlcGxhY2VtZW50IHdhcyBwcm92aWRlZCBhbmQgb3V0bGluZS5lbCBp dHNlbGYgc3RpbGwgcnVucyB0aGUgaG9vaworICAgICAgICAgOzsgaW4gMTArIHBsYWNlcy4KKyAg ICAgICAgICh3aXRoLXN1cHByZXNzZWQtd2FybmluZ3MgKChvYnNvbGV0ZSBvdXRsaW5lLXZpZXct Y2hhbmdlLWhvb2spKQorICAgICAgICAgICAoYWRkLWhvb2sgJ291dGxpbmUtdmlldy1jaGFuZ2Ut aG9vaworICAgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tb3V0bGluZS12aWV3LWNo YW5nZSBuaWwgdCkpCisKKyAgICAgICAgIChwcm9nbgorICAgICAgICAgICAobWFrZS1sb2NhbC12 YXJpYWJsZSAnbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApCisgICAgICAgICAgIChtYWtlLWxvY2Fs LXZhcmlhYmxlICdmb250LWxvY2stZXh0cmEtbWFuYWdlZC1wcm9wcykKKyAgICAgICAgICAgKGRv bGlzdCAocHJvcCAnKGludmlzaWJsZSBkaXNwbGF5IGJ1dHRvbiBjYXRlZ29yeSBhY3Rpb24gaGVs cC1lY2hvKSkKKyAgICAgICAgICAgICAoYWRkLXRvLWxpc3QgJ2ZvbnQtbG9jay1leHRyYS1tYW5h Z2VkLXByb3BzIHByb3ApKSkKKworICAgICAgICAgKHdoZW4gKHRyZWVzaXQtcmVhZHktcCAnaHRt bCB0KQorICAgICAgICAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdodG1sKQorICAgICAgICAg ICAocmVxdWlyZSAnaHRtbC10cy1tb2RlKQorICAgICAgICAgICAoZGVmdmFyIGh0bWwtdHMtbW9k ZS0tZm9udC1sb2NrLXNldHRpbmdzKQorICAgICAgICAgICAoZGVmdmFyIGh0bWwtdHMtbW9kZS0t dHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0KQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0 cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5k IHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaHRtbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpKQorICAgICAgICAgICAoc2V0cS1s b2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAg ICAgKHRyZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAg ICAgICAgICAgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAg ICAgICAgICBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkpCisg ICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAg ICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOmVtYmVkICdodG1sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDpob3N0ICdtYXJrZG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bG9j YWwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChodG1sX2Jsb2NrKSBAaHRt bCkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ2h0bWwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duLWlubGluZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnKChodG1sX3RhZykgQGh0bWwpKSkpKQorCisgICAg ICAgICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICd5YW1sIHQpCisgICAgICAgICAgIChyZXF1aXJl ICd5YW1sLXRzLW1vZGUpCisgICAgICAgICAgIChkZWZ2YXIgeWFtbC10cy1tb2RlLS1mb250LWxv Y2stc2V0dGluZ3MpCisgICAgICAgICAgIChkZWZ2YXIgeWFtbC10cy1tb2RlLS1mb250LWxvY2st ZmVhdHVyZS1saXN0KQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1z ZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2Nr LXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWFtbC10cy1tb2RlLS1m b250LWxvY2stc2V0dGluZ3MpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQt bG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbWVyZ2Ut Zm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgdHJlZXNpdC1m b250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAgICB5YW1sLXRzLW1v ZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVl c2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNp dC1yYW5nZS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0 LXJhbmdlLXJ1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJlZCAneWFt bAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJygobWludXNfbWV0YWRhdGEpIEB5YW1sKSkpKSkKKworICAgICAgICAgKHdo ZW4gKHRyZWVzaXQtcmVhZHktcCAndG9tbCB0KQorICAgICAgICAgICAocmVxdWlyZSAndG9tbC10 cy1tb2RlKQorICAgICAgICAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRp bmdzKQorICAgICAgICAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUt bGlzdCkKKyAgICAgICAgICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAg ICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAg ICAgICAgICAgICAgICAgIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKKyAgICAg ICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LW1lcmdlLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAg ICAgICAgICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAg ICAgICAgICAgICAgICAgICAgICAgdG9tbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0 KSkKKyAgICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAg ICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ3RvbWwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOmhvc3QgJ21hcmtkb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDpsb2NhbCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKHBsdXNfbWV0YWRh dGEpIEB0b21sKSkpKSkKKworICAgICAgICAgOzsgU3VwcG9ydCBmb3IgZXhlY3V0aW5nIGNvbW1h bmRzIGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorICAgICAgICAgKHdoZW4gbWFya2Rvd24tdHMt ZW5hYmxlLWNvZGUtYmxvY2stY29udGV4dC1tb2RlCisgICAgICAgICAgIChtYXJrZG93bi10cy1j b2RlLWJsb2NrLWNvbnRleHQtbW9kZSkpCisKKyAgICAgICAgIDs7IFN1cHBvcnQgZm9yIHRhYmxl IG1vZGUuCisgICAgICAgICAod2hlbiBtYXJrZG93bi10cy1lbmFibGUtdGFibGUtbW9kZQorICAg ICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtbW9kZSkpKSkKIAogICAodHJlZXNpdC1tYWpvci1t b2RlLXNldHVwKQotICAobWFya2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1o aWRlLW1hcmt1cCkpCisKKyAgOzsgRG8gbm90IGVuYWJsZSBgaml0LWxvY2stbW9kZScgaW4gaW5k aXJlY3QgYnVmZmVycyBzdWNoIGFzIHRoZSBvbmUKKyAgOzsgd2UgdXNlIGZvciBjb2RlIGJsb2Nr IGNvbW1hbmRzLgorICAodW5sZXNzIChidWZmZXItYmFzZS1idWZmZXIpCisgICAgKGppdC1sb2Nr LXJlZ2lzdGVyICMnbWFya2Rvd24tdHMtLWZvbnRpZnktYmFyZS11cmkpKQorCisgICh1bmxlc3Mg bWFya2Rvd24tdHMtLXNldC11cC1pbmxpbmUKKyAgICA7OyBPcmRlciBtYXR0ZXJzOiBgbWFya2Rv d24tdHMtLXNldC1oaWRlLW1hcmt1cCcgY2FsbHMgYGZvbnQtbG9jay1mbHVzaCcKKyAgICA7OyAo b25seSBtZWFuaW5nZnVsIG9uY2UgYHRyZWVzaXQtbWFqb3ItbW9kZS1zZXR1cCcgaGFzIHdpcmVk IHVwCisgICAgOzsgZm9udC1sb2NrKSwgYW5kIGBtYXJrZG93bi10cy1kZWZhdWx0LWZvbGRpbmcn IGNhbGxzIG91dGxpbmUKKyAgICA7OyBjb21tYW5kcyB0aGF0IHJlbHkgb24gYG91dGxpbmUtc2Vh cmNoLWZ1bmN0aW9uJywgd2hpY2gKKyAgICA7OyBgdHJlZXNpdC1tYWpvci1tb2RlLXNldHVwJyBp bnN0YWxscyBmcm9tIGB0cmVlc2l0LW91dGxpbmUtcHJlZGljYXRlJy4KKyAgICAobWFya2Rvd24t dHMtLXNldC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkKKyAgICA7OyBSZXNw ZWN0IHRoZSB1c2VyJ3MgZGVmYXVsdCBvdXRsaW5lIGZvbGRpbmcuCisgICAgKHBjYXNlIG1hcmtk b3duLXRzLWRlZmF1bHQtZm9sZGluZworICAgICAgKCdzaG93LWFsbCAoaWdub3JlKSkKKyAgICAg ICgnZm9sZC1hbGwgKG91dGxpbmUtaGlkZS1zdWJsZXZlbHMgMSkpCisgICAgICAoJ2ZvbGQtaGVh ZGluZ3MgKG91dGxpbmUtc2hvdy1hbGwpCisgICAgICAgICAgICAgICAgICAgICAgKG91dGxpbmUt aGlkZS1yZWdpb24tYm9keSAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy1tb2RlLWluc3RhbGwtcGFyc2VycyAoYXJnKQorICAiSW5zdGFsbCBgbWFya2Rv d24tdHMtbW9kZScgdHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgcGFyc2Vycy4KK0lmIG5lZWRlZCwgaW5z dGFsbCB0aGUgcmVxdWlyZWQgcGFyc2VycyBmb3IgYG1hcmtkb3duJyBhbmQgYG1hcmtkb3duLWlu bGluZScuCitXaXRoIGEgcHJlZml4IGFyZ3VtZW50LCBBUkcsIGlmIG5lZWRlZCwgaW5zdGFsbCBw YXJzZXJzIGZvciBgaHRtbCcsCitgeWFtbCcsIGFuZCBgdG9tbCcuIgorICAoaW50ZXJhY3RpdmUg IlAiKQorICAodW5sZXNzICh0cmVlc2l0LWxhbmd1YWdlLWF2YWlsYWJsZS1wICdtYXJrZG93bikK KyAgICAodHJlZXNpdC1pbnN0YWxsLWxhbmd1YWdlLWdyYW1tYXIgJ21hcmtkb3duKSkKKyAgKHVu bGVzcyAodHJlZXNpdC1sYW5ndWFnZS1hdmFpbGFibGUtcCAnbWFya2Rvd24taW5saW5lKQorICAg ICh0cmVlc2l0LWluc3RhbGwtbGFuZ3VhZ2UtZ3JhbW1hciAnbWFya2Rvd24taW5saW5lKSkKKyAg KHdoZW4gYXJnCisgICAgKHVubGVzcyAodHJlZXNpdC1sYW5ndWFnZS1hdmFpbGFibGUtcCAnaHRt bCkKKyAgICAgIChyZXF1aXJlICdodG1sLXRzLW1vZGUpCisgICAgICAodHJlZXNpdC1pbnN0YWxs LWxhbmd1YWdlLWdyYW1tYXIgJ2h0bWwpKQorICAgICh1bmxlc3MgKHRyZWVzaXQtbGFuZ3VhZ2Ut YXZhaWxhYmxlLXAgJ3lhbWwpCisgICAgICAocmVxdWlyZSAneWFtbC10cy1tb2RlKQorICAgICAg KHRyZWVzaXQtaW5zdGFsbC1sYW5ndWFnZS1ncmFtbWFyICd5YW1sKSkKKyAgICAodW5sZXNzICh0 cmVlc2l0LWxhbmd1YWdlLWF2YWlsYWJsZS1wICd0b21sKQorICAgICAgKHJlcXVpcmUgJ3RvbWwt dHMtbW9kZSkKKyAgICAgICh0cmVlc2l0LWluc3RhbGwtbGFuZ3VhZ2UtZ3JhbW1hciAndG9tbCkp KSkKIAogOzs7IyMjYXV0b2xvYWQKIChkZWZpbmUtZGVyaXZlZC1tb2RlIG1hcmtkb3duLXRzLW1v ZGUgdGV4dC1tb2RlICJNYXJrZG93biIKLSAgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcgTWFya2Rv d24gdXNpbmcgdHJlZS1zaXR0ZXIgZ3JhbW1hci4iCisgICJNYWpvciBtb2RlIGZvciBlZGl0aW5n IE1hcmtkb3duIHVzaW5nIHRyZWUtc2l0dGVyIGdyYW1tYXIuCitOT1RFOiBTZWUgYG1hcmtkb3du LXRzLS1zZXQtdXAtaW5saW5lJy4iCisgICh0cmVlc2l0LWVuc3VyZS1pbnN0YWxsZWQgJ21hcmtk b3duKQorICAodHJlZXNpdC1lbnN1cmUtaW5zdGFsbGVkICdtYXJrZG93bi1pbmxpbmUpCisgIDs7 IEJ5cGFzcyBgdHJlZXNpdC1tYXgtYnVmZmVyLXNpemUnIHNvIHRoZSBtb2RlIGFjdGl2YXRlcyBp biBsYXJnZQorICA7OyBidWZmZXJzIGluc3RlYWQgb2YgcmVmdXNpbmcuICBgdHJlZXNpdC1yZWFk eS1wJyB3b3VsZCBvdGhlcndpc2UKKyAgOzsgcmVmdXNlIGFuZCBlbWl0IGEgbWlzbGVhZGluZyAi cGFyc2VycyBub3QgZm91bmQiIG1lc3NhZ2UgZXZlbiB3aGVuCisgIDs7IHRoZXkgYXJlIGluc3Rh bGxlZC4gIFJldmlzaXQgaWYgYHRyZWVzaXQtcGFyc2VyLWNyZWF0ZScgZ2FpbnMgaXRzCisgIDs7 IG93biBidWZmZXItc2l6ZSBndWFyZCAoc2VlIGJ1ZyM4MDkwOSkuCisgIChsZXQgKCh0cmVlc2l0 LW1heC1idWZmZXItc2l6ZSBtb3N0LXBvc2l0aXZlLWZpeG51bSkpCisgICAgKGlmICh0cmVlc2l0 LXJlYWR5LXAgJyhtYXJrZG93biBtYXJrZG93bi1pbmxpbmUpIHQpCisgICAgICAgIChtYXJrZG93 bi10cy0tc2V0LXVwKQorICAgICAgKHdhcm4gIm1hcmtkb3duLXRzLW1vZGUgY2Fubm90IGJlIHNl dCB1cDsgdXNpbmcgZnVuZGFtZW50YWwtbW9kZS4KK1RoZSB0cmVlLXNpdHRlciBwYXJzZXJzIGBt YXJrZG93bicgYW5kIGBtYXJrZG93bi1pbmxpbmUnIHdlcmUgbm90IGZvdW5kLgorVXNlIHRoZSBj b21tYW5kIGBtYXJrZG93bi10cy1tb2RlLWluc3RhbGwtcGFyc2VycycgdG8gaW5zdGFsbCB0aGVt LgorV2l0aCBhIHByZWZpeCBhcmd1bWVudCwgaXQgY2FuIGFsc28gaW5zdGFsbCBvcHRpb25hbCBw YXJzZXJzLiIpCisgICAgICAoZnVuZGFtZW50YWwtbW9kZSkpKSkKIAotICAoc2V0cS1sb2NhbCBj b21tZW50LXN0YXJ0ICI8IS0tICIpCi0gIChzZXRxLWxvY2FsIGNvbW1lbnQtZW5kICIgLS0+IikK KyhkZXJpdmVkLW1vZGUtYWRkLXBhcmVudHMgJ21hcmtkb3duLXRzLW1vZGUgJyhtYXJrZG93bi1t b2RlKSkKIAotICAoc2V0cS1sb2NhbCBmb250LWxvY2stZGVmYXVsdHMgbmlsCi0JICAgICAgdHJl ZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0ICcoKGRlbGltaXRlciBoZWFkaW5nKQotCQkJCQkg ICAgICAgKHBhcmFncmFwaCkKLQkJCQkJICAgICAgIChwYXJhZ3JhcGgtaW5saW5lKSkpCisoZGVm dW4gbWFya2Rvd24tdHMtLWJhcmYtaWYtbm90LW1vZGUgKCZvcHRpb25hbCBjb250ZXh0KQorICAi U2lnbmFsIGFuIGVycm9yIGlmIHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBub3QgYSBgbWFya2Rvd24t dHMtbW9kZScgYnVmZmVyLgorUHJlZml4IHRoZSBlcnJvciBtZXNzYWdlIHdpdGggQ09OVEVYVC4i CisgICh1bmxlc3MgKGRlcml2ZWQtbW9kZS1wICdtYXJrZG93bi10cy1tb2RlKQorICAgICh1c2Vy LWVycm9yICIlc2lzIHZhbGlkIG9ubHkgaW4gYG1hcmtkb3duLXRzLW1vZGUnIGJ1ZmZlcnMiCisg ICAgICAgICAgICAgICAgKGlmIGNvbnRleHQgKGZvcm1hdCAiJXM6ICIgY29udGV4dCkgIiIpKSkp CiAKLSAgKHNldHEtbG9jYWwgdHJlZXNpdC1zaW1wbGUtaW1lbnUtc2V0dGluZ3MKLSAgICAgICAg ICAgICAgYCgoIkhlYWRpbmdzIiAsIydtYXJrZG93bi10cy1pbWVudS1ub2RlLXAKLSAgICAgICAg ICAgICAgICAgbmlsICwjJ21hcmtkb3duLXRzLWltZW51LW5hbWUtZnVuY3Rpb24pKSkKLSAgKHNl dHEtbG9jYWwgdHJlZXNpdC1vdXRsaW5lLXByZWRpY2F0ZSAjJ21hcmtkb3duLXRzLW91dGxpbmUt cHJlZGljYXRlKQorKGRlZmluZS1taW5vci1tb2RlIG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4t Y29udGV4dC1tb2RlCisgICJNaW5vciBtb2RlIGVuYWJsZWQgaWYgcG9pbnQgaXMgd2l0aGluIGEg ZmVuY2VkIGNvZGUgYmxvY2suCitUaGlzIGVuYWJsZXMgdGhlIGtleW1hcCBgbWFya2Rvd24tdHMt Y29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtbWFwJy4iCisgIDpncm91cCAnbWFya2Rvd24tdHMK KyAgOmxpZ2h0ZXIgbWFya2Rvd24tdHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtbGlnaHRl cgorICA6aW50ZXJhY3RpdmUgbmlsCisgIChtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250 ZXh0LW1vZGUtdXBkYXRlLW92KSkKIAotICAod2hlbiAoYW5kICh0cmVlc2l0LWVuc3VyZS1pbnN0 YWxsZWQgJ21hcmtkb3duKQotICAgICAgICAgICAgICh0cmVlc2l0LWVuc3VyZS1pbnN0YWxsZWQg J21hcmtkb3duLWlubGluZSkpCi0gICAgKHRyZWVzaXQtcGFyc2VyLWNyZWF0ZSAnbWFya2Rvd24t aW5saW5lKQotICAgICh0cmVlc2l0LXBhcnNlci1jcmVhdGUgJ21hcmtkb3duKQotICAgIChtYXJr ZG93bi10cy1zZXR1cCkpKQorKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0tY29kZS1ibG9jay1p bi1jb250ZXh0LW1vZGUtb3YgbmlsKQogCi0oZGVyaXZlZC1tb2RlLWFkZC1wYXJlbnRzICdtYXJr ZG93bi10cy1tb2RlICcobWFya2Rvd24tbW9kZSkpCisoZGVmdW4gbWFya2Rvd24tdHMtLWNvZGUt YmxvY2staW4tY29udGV4dC1tb2RlLXVwZGF0ZS1vdiAoKQorICAiTWFuYWdlIGBtYXJrZG93bi10 cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YnLiIKKyAgKGNvbmQgKG1hcmtkb3duLXRz LWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlCisgICAgICAgICAobGV0ICgoYmVnIChnZXQtY2hh ci1wcm9wZXJ0eSAocG9pbnQpICdtYXJrZG93bi10cy1jb2RlLWJlZy1tYXJrZXIpKQorICAgICAg ICAgICAgICAgKGVuZCAoZ2V0LWNoYXItcHJvcGVydHkgKHBvaW50KSAnbWFya2Rvd24tdHMtY29k ZS1lbmQtbWFya2VyKSkpCisgICAgICAgICAgIChpZiBtYXJrZG93bi10cy0tY29kZS1ibG9jay1p bi1jb250ZXh0LW1vZGUtb3YKKyAgICAgICAgICAgICAgIChtb3ZlLW92ZXJsYXkgbWFya2Rvd24t dHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92IGJlZyBlbmQpCisgICAgICAgICAgICAg KHNldHEgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92CisgICAgICAg ICAgICAgICAgICAgKG1ha2Utb3ZlcmxheSBiZWcgZW5kIG5pbCB0IG5pbCkpKQorICAgICAgICAg ICAob3ZlcmxheS1wdXQgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92 CisgICAgICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtaW4tY29kZS1ibG9jayB0KQor ICAgICAgICAgICAob3ZlcmxheS1wdXQgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4 dC1tb2RlLW92CisgICAgICAgICAgICAgICAgICAgICAgICAnZXZhcG9yYXRlIHQpCisgICAgICAg ICAgIChvdmVybGF5LXB1dCBtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUt b3YKKyAgICAgICAgICAgICAgICAgICAgICAgICdwcmlvcml0eSAnKG5pbCAuIDIwKSkKKyAgICAg ICAgICAgKG92ZXJsYXktcHV0IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9k ZS1vdgorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgJ21hcmtkb3duLXRzLWluLWNvZGUt YmxvY2spKSkKKyAgICAgICAgKHQKKyAgICAgICAgICh3aGVuIG1hcmtkb3duLXRzLS1jb2RlLWJs b2NrLWluLWNvbnRleHQtbW9kZS1vdgorICAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgbWFya2Rv d24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92KSkpKSkKIAotOzs7IyMjYXV0b2xv YWQKLShkZWZ1biBtYXJrZG93bi10cy1tb2RlLW1heWJlICgpCi0gICJFbmFibGUgYG1hcmtkb3du LXRzLW1vZGUnIHdoZW4gaXRzIGdyYW1tYXIgaXMgYXZhaWxhYmxlLgotQWxzbyBwcm9wb3NlIHRv IGluc3RhbGwgdGhlIGdyYW1tYXIgd2hlbiBgdHJlZXNpdC1lbmFibGVkLW1vZGVzJwotaXMgdCBv ciBjb250YWlucyB0aGUgbW9kZSBuYW1lLiIKLSAgKGRlY2xhcmUtZnVuY3Rpb24gdHJlZXNpdC1s YW5ndWFnZS1hdmFpbGFibGUtcCAidHJlZXNpdC5jIikKLSAgKGlmIChvciAodHJlZXNpdC1sYW5n dWFnZS1hdmFpbGFibGUtcCAnbWFya2Rvd24pCi0gICAgICAgICAgKGVxIHRyZWVzaXQtZW5hYmxl ZC1tb2RlcyB0KQotICAgICAgICAgIChtZW1xICdtYXJrZG93bi10cy1tb2RlIHRyZWVzaXQtZW5h YmxlZC1tb2RlcykpCi0gICAgICAobWFya2Rvd24tdHMtbW9kZSkKLSAgICAoZnVuZGFtZW50YWwt bW9kZSkpKQorKGRlZmluZS1taW5vci1tb2RlIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29udGV4 dC1tb2RlCisgICJNaW5vciBtb2RlIHRvIGVuYWJsZSBjb21tYW5kcyBpbiBmZW5jZWQgY29kZSBi bG9jayBjb250ZXh0LgorSWYgbm9uLW5pbCBhbmQgYHBvaW50JyBpcyBpbiBhIGZlbmNlZCBjb2Rl IGJsb2NrLCBydW4gYGluZGVudC1mb3ItdGFiLWNvbW1hbmQnLAorYG5ld2xpbmUnLCBldC5hbC4s IGluIHRoZSBtb2RlIG9mIHRoZSBjb2RlIGJsb2NrLiIKKyAgOmdyb3VwICdtYXJrZG93bi10cwor ICA6aW50ZXJhY3RpdmUgbmlsCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFy a2Rvd24tdHMtY29kZS1ibG9jay1jb250ZXh0LW1vZGUpCisgIChjb25kIChtYXJrZG93bi10cy1j b2RlLWJsb2NrLWNvbnRleHQtbW9kZQorICAgICAgICAgOzsgRW5hYmxlIHRoZSBtaW5vciBtb2Rl IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZScgYW5kCisgICAgICAgICA7 OyBpdHMga2V5bWFwIHdoZW4gcG9pbnQgaXMgd2l0aGluIGEgY29kZSBibG9jay4KKyAgICAgICAg IChhZGQtaG9vayAncG9zdC1jb21tYW5kLWhvb2sKKyAgICAgICAgICAgICAgICAgICAjJ21hcmtk b3duLXRzLS1lbmFibGUtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUgbmlsICdsb2NhbCkKKyAg ICAgICAgIDs7IElmIGBzYXZlLXBsYWNlLW1vZGUnIG9yIHNpbWlsYXIgaXMgdXNlZCwgcG9pbnQg Y291bGQgc3RhcnQgd2l0aGluCisgICAgICAgICA7OyBhIGNvZGUgYmxvY2sgc28gaW5pdGlhbGl6 ZSBmcm9tIHRoYXQgc3RhdGUuCisgICAgICAgICAocnVuLXdpdGgtdGltZXIgMC4wMSBuaWwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1lbmFibGUtY29kZS1ibG9jay1p bi1jb250ZXh0LW1vZGUpCisgICAgICAgICA7OyBGb3IgZWFjaCBlbGlnaWJsZSBjb21tYW5kLCBl eGVjdXRlIGl0IGluIGEgY29kZS1ibG9jayBjb250ZXh0LAorICAgICAgICAgOzsgb3RoZXJ3aXNl IGluIHRoZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVyJ3MgY29udGV4dC4KKyAgICAgICAgIChh ZGQtaG9vayAncHJlLWNvbW1hbmQtaG9vaworICAgICAgICAgICAgICAgICAgICMnbWFya2Rvd24t dHMtLW1heWJlLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2sgbmlsICdsb2NhbCkKKyAgICAgICAg IDs7IFBydW5lIHN0YWxlIGNvZGUgYmxvY2sgb3ZlcmxheXMgd2hlbiB0aGUgaG9zdCBwYXJzZSB0 cmVlCisgICAgICAgICA7OyBjaGFuZ2VzIChlLmcuLCB3aGVuIGZlbmNlZCBjb2RlIGJsb2NrIGRl bGltaXRlcnMgYXJlCisgICAgICAgICA7OyBkZWxldGVkIGJ1dCB0aGUgb3ZlcmxheSBmcm9tIGEg cHJpb3IgZm9udGlmaWNhdGlvbiByZW1haW5zKS4KKyAgICAgICAgICh0cmVlc2l0LXBhcnNlci1h ZGQtbm90aWZpZXIKKyAgICAgICAgICB0cmVlc2l0LXByaW1hcnktcGFyc2VyCisgICAgICAgICAg IydtYXJrZG93bi10cy0taG9zdC1yYW5nZXMtbm90aWZpZXIpKQorICAgICAgICAodAorICAgICAg ICAgKHJlbW92ZS1ob29rICdwb3N0LWNvbW1hbmQtaG9vaworICAgICAgICAgICAgICAgICAgICAg ICMnbWFya2Rvd24tdHMtLWVuYWJsZS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZSAnbG9jYWwp CisgICAgICAgICAocmVtb3ZlLWhvb2sgJ3ByZS1jb21tYW5kLWhvb2sKKyAgICAgICAgICAgICAg ICAgICAgICAjJ21hcmtkb3duLXRzLS1tYXliZS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrICds b2NhbCkKKyAgICAgICAgICh0cmVlc2l0LXBhcnNlci1yZW1vdmUtbm90aWZpZXIKKyAgICAgICAg ICB0cmVlc2l0LXByaW1hcnktcGFyc2VyCisgICAgICAgICAgIydtYXJrZG93bi10cy0taG9zdC1y YW5nZXMtbm90aWZpZXIpKSkpCisKKyhkZWZpbmUtbWlub3ItbW9kZSBtYXJrZG93bi10cy1pbi10 YWJsZS1tb2RlCisgICJNaW5vciBtb2RlIGVuYWJsZWQgaWYgcG9pbnQgaXMgd2l0aGluIGEgdGFi bGUuCitUaGlzIGVuYWJsZXMgdGhlIGtleW1hcCBgbWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZS1t YXAnLiIKKyAgOmdyb3VwICdtYXJrZG93bi10cworICA6bGlnaHRlciBtYXJrZG93bi10cy1pbi10 YWJsZS1tb2RlLWxpZ2h0ZXIKKyAgOmludGVyYWN0aXZlIG5pbAorICAobWFya2Rvd24tdHMtLWlu LXRhYmxlLW1vZGUtdXBkYXRlLW92KSkKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0taW4t dGFibGUtbW9kZS1vdiBuaWwpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1n ZXQtb3YgKHBvcykKKyAgIlJldHVybiB0aGUgYG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUnIG92 ZXJsYXkgYXQgUE9TLiIKKyAgKHNlcS1maW5kIChsYW1iZGEgKG92KQorICAgICAgICAgICAgICAo d2hlbiAob3ZlcmxheS1nZXQgb3YgJ21hcmtkb3duLXRzLWluLXRhYmxlKQorICAgICAgICAgICAg ICAgIG92KSkKKyAgICAgICAgICAgIChvdmVybGF5cy1hdCBwb3MpKSkKKworKGRlZnVuIG1hcmtk b3duLXRzLS10YWJsZS10aWNrLXVwZGF0ZSAocG9zKQorICAiVXBkYXRlIHRoZSBgbWFya2Rvd24t dHMtaW4tdGFibGUtbW9kZScgb3ZlcmxheSB0aWNrIGF0IFBPUy4KK0lmIHRoZSBvdmVybGF5IGlz IG5vdCBmb3VuZCwgZG8gbm90aGluZy4iCisgICh3aGVuLWxldCogKChvdiAobWFya2Rvd24tdHMt LWluLXRhYmxlLW1vZGUtZ2V0LW92IHBvcykpKQorICAgIChvdmVybGF5LXB1dCBvdgorICAgICAg ICAgICAgICAgICAnbWFya2Rvd24tdHMtaW4tdGFibGUtdGljaworICAgICAgICAgICAgICAgICAo YnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2spKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFi bGUtdGljay1zdGFsZS1wIChwb3MpCisgICJSZXR1cm4gbm9uLW5pbCBpZiB0aGUgdGFibGUgYXQg UE9TIG1pZ2h0IGhhdmUgY2hhbmdlZC4KK0l0IGlzIHVwIHRvIHRoaXMgZnVuY3Rpb24ncyBjYWxs ZXJzIHRvIGNhbGwKK2BtYXJrZG93bi10cy0tdGFibGUtdGljay11cGRhdGUnLiIKKyAgKHdoZW4t bGV0KiAoKG92IChtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1nZXQtb3YgcG9zKSkpCisgICAg KG5vdCAoZXEgKG92ZXJsYXktZ2V0IG92ICdtYXJrZG93bi10cy1pbi10YWJsZS10aWNrKQorICAg ICAgICAgICAgIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaykpKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0taW4tdGFibGUtbW9kZS11cGRhdGUtb3YgKCkKKyAgIk1hbmFnZSBgbWFya2Rvd24t dHMtLWluLXRhYmxlLW1vZGUtb3YnLiIKKyAgKGNvbmQgKG1hcmtkb3duLXRzLWluLXRhYmxlLW1v ZGUKKyAgICAgICAgICh3aGVuLWxldCogKChhdC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUt cCBuaWwgdCkpCisgICAgICAgICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisg ICAgICAgICAgICAgICAgICAgICAoYmVnICh0cmVlc2l0LW5vZGUtc3RhcnQgdGFibGUpKQorICAg ICAgICAgICAgICAgICAgICAgKGVuZCAodHJlZXNpdC1ub2RlLWVuZCB0YWJsZSkpKQorICAgICAg ICAgICAoaWYgbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtb3YKKyAgICAgICAgICAgICAgIDs7 IE1vdmUgdGhlIG92ZXJsYXksIGlmIG5lZWRlZCwgYW5kIHJlc2V0IHRoZSB0aWNrIGlmIHNvLgor ICAgICAgICAgICAgICAgKHdoZW4gKG5vdCAoZXEgKG92ZXJsYXktc3RhcnQgbWFya2Rvd24tdHMt LWluLXRhYmxlLW1vZGUtb3YpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWcpKQor ICAgICAgICAgICAgICAgICAobW92ZS1vdmVybGF5IG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2Rl LW92IGJlZyBlbmQpCisgICAgICAgICAgICAgICAgIChvdmVybGF5LXB1dCBtYXJrZG93bi10cy0t aW4tdGFibGUtbW9kZS1vdgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3du LXRzLWluLXRhYmxlLXRpY2sgbmlsKSkKKyAgICAgICAgICAgICAoc2V0cSBtYXJrZG93bi10cy0t aW4tdGFibGUtbW9kZS1vdgorICAgICAgICAgICAgICAgICAgIChtYWtlLW92ZXJsYXkgYmVnIGVu ZCBuaWwgdCBuaWwpKSkKKyAgICAgICAgICAgKG92ZXJsYXktcHV0IG1hcmtkb3duLXRzLS1pbi10 YWJsZS1tb2RlLW92CisgICAgICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtaW4tdGFi bGUgdCkKKyAgICAgICAgICAgKG92ZXJsYXktcHV0IG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2Rl LW92CisgICAgICAgICAgICAgICAgICAgICAgICAnZXZhcG9yYXRlIHQpCisgICAgICAgICAgIChv dmVybGF5LXB1dCBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdgorICAgICAgICAgICAgICAg ICAgICAgICAgJ3ByaW9yaXR5ICcobmlsIC4gMjApKQorICAgICAgICAgICAob3ZlcmxheS1wdXQg bWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtb3YKKyAgICAgICAgICAgICAgICAgICAgICAgICdm YWNlICdtYXJrZG93bi10cy1pbi10YWJsZSkKKyAgICAgICAgICAgKSkKKyAgICAgICAgKHQKKyAg ICAgICAgICh3aGVuIG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLW92CisgICAgICAgICAgIChk ZWxldGUtb3ZlcmxheSBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdikpKSkpCisKKyhkZWZp bmUtbWlub3ItbW9kZSBtYXJrZG93bi10cy10YWJsZS1tb2RlCisgICJNaW5vciBtb2RlIHRvIGVu YWJsZSBjb21tYW5kcyBpbiB0YWJsZXMuCitJZiBub24tbmlsIGFuZCBgcG9pbnQnIGlzIGluIGEg dGFibGUsIGVuYWJsZQorYG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUnLiIKKyAgOmdyb3VwICdt YXJrZG93bi10cworICA6aW50ZXJhY3RpdmUgbmlsCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1u b3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtbW9kZSkKKyAgKGNvbmQgKG1hcmtkb3duLXRzLXRh YmxlLW1vZGUKKyAgICAgICAgIDs7IEVuYWJsZSB0aGUgbWlub3IgbW9kZSBgbWFya2Rvd24tdHMt aW4tdGFibGUtbW9kZScgYW5kCisgICAgICAgICA7OyBpdHMga2V5bWFwIHdoZW4gcG9pbnQgaXMg d2l0aGluIGEgY29kZSBibG9jay4KKyAgICAgICAgIChhZGQtaG9vayAncG9zdC1jb21tYW5kLWhv b2sKKyAgICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1lbmFibGUtaW4tdGFibGUtbW9k ZSBuaWwgJ2xvY2FsKQorICAgICAgICAgOzsgSWYgYHNhdmUtcGxhY2UtbW9kZScgb3Igc2ltaWxh ciBpcyB1c2VkLCBwb2ludCBjb3VsZCBzdGFydCB3aXRoaW4KKyAgICAgICAgIDs7IGEgdGFibGUs IHNvIGluaXRpYWxpemUgZnJvbSB0aGF0IHN0YXRlLgorICAgICAgICAgKHJ1bi13aXRoLXRpbWVy IDAuMDEgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tZW5hYmxl LWluLXRhYmxlLW1vZGUpKQorICAgICAgICAodAorICAgICAgICAgKHJlbW92ZS1ob29rICdwb3N0 LWNvbW1hbmQtaG9vaworICAgICAgICAgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLWVuYWJs ZS1pbi10YWJsZS1tb2RlICdsb2NhbCkpKSkKIAogOzs7IyMjYXV0b2xvYWQKICh3aGVuIChib3Vu ZHAgJ3RyZWVzaXQtbWFqb3ItbW9kZS1yZW1hcC1hbGlzdCkKLSAgKGFkZC10by1saXN0ICdhdXRv LW1vZGUtYWxpc3QgJygiXFwubWRcXCciIC4gbWFya2Rvd24tdHMtbW9kZS1tYXliZSkpCi0gIDs7 IFRvIGJlIGFibGUgdG8gdG9nZ2xlIGJldHdlZW4gYW4gZXh0ZXJuYWwgcGFja2FnZSBhbmQgY29y ZSB0cy1tb2RlOgorICAoYWRkLXRvLWxpc3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5tZFxcJyIg LiBtYXJrZG93bi10cy1tb2RlKSkKKyAgKGFkZC10by1saXN0ICdhdXRvLW1vZGUtYWxpc3QgJygi XFwubWFya2Rvd25cXCciIC4gbWFya2Rvd24tdHMtbW9kZSkpCisgIChhZGQtdG8tbGlzdCAnYXV0 by1tb2RlLWFsaXN0ICcoIlxcLm1keFxcJyIgLiBtYXJrZG93bi10cy1tb2RlKSkKICAgKGFkZC10 by1saXN0ICd0cmVlc2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QKICAgICAgICAgICAgICAgICco bWFya2Rvd24tbW9kZSAuIG1hcmtkb3duLXRzLW1vZGUpKSkKIAotLSAKMi41NC4wCgo= --=-=-=--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 2 May 2026 00:20:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 01 20:20:34 2026 Received: from localhost ([127.0.0.1]:40018 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wIy5y-0007GM-83 for submit <at> debbugs.gnu.org; Fri, 01 May 2026 20:20:34 -0400 Received: from mail-dy1-x1329.google.com ([2607:f8b0:4864:20::1329]:58568) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>) id 1wIy5r-0007FH-Fv for 80740 <at> debbugs.gnu.org; Fri, 01 May 2026 20:20:28 -0400 Received: by mail-dy1-x1329.google.com with SMTP id 5a478bee46e88-2eadb000b8cso4581720eec.0 for <80740 <at> debbugs.gnu.org>; Fri, 01 May 2026 17:20:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777681226; x=1778286026; 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=fc4G6WHFjpNYZC6IG695wx9kdbDsXMnbcG6sNVmQ4Fg=; b=AhNsAqc6IbqSFwzcYm+l/3DCEdiYciTEEQ4WtVIXGaFBeRAWiD6qiG8XkOgGpGh0oN vJEQqZNPybOgffBETf5SVvxDUTN8a+wTOObpHWFucvCaz6YUSXjZ7a8em8IlnHbFQwKl Ix2y2L+q65yvcJlD80YcQh0d6x0mhfzQ2lVtCzvxWgHLjWJtg/L40PuiI9Eei7Chhoq1 xL3B6+DOGzyiTa/47sriKxPBo6/dSWBrlXolChOgrdmnvrjD2HONsM3IT+XsP+sB/ivg 2xoHuVG7QP0KcSLtcrag/GiZR8E6mjo1Yih3qRwQXR/qoOqWTv7WFGMrfwRmRuSYYH1R g30g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777681226; x=1778286026; 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=fc4G6WHFjpNYZC6IG695wx9kdbDsXMnbcG6sNVmQ4Fg=; b=XchqBm1VIe3VKg/ZHUxZgHFw/7g3c/d4337Ghbz+uI7/e2czJoxelO716zq/NIlx+7 AS/+iwjQsyBr2UoP8AnXRSHsjO5JTo2D3XMFvJBtp6x8oufHMn70/oOXfbxfaOvtEAHu 0g7CUOQ1ytXV7SJOTXY2IC/G7rPhSJOMkaM9dUeCmSKHml576QBOB37EDGsg5ECo8Dci j7J3ul8/JGYTNbDvrk7TorZ+ycItVENXNXJvOnspsa8pnF3yLId5PRnABd9ZOAx58p1e VnDxArErXpZFpNsUNqz5n1JHX0TIIKEYzjzjixeaEfCngNHKyeT3cOh9GgWjNyp9eHNB sPgg== X-Forwarded-Encrypted: i=1; AFNElJ9ktAxMlilqPwCEZ2iKQxwbag8W+hwjrhJuD/V3qj9SNBUXQ2hy78Vm7LAMCHuWcK2NQJXElQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzEsxQHzgVUO1cOpA7DPZyN8MCEMlKZDr3L5OdMo3/Kn55vayw/ Hg9pISzHTUW5pXiwK8NPsDw14dKgvnTvk5YnpCTf5xNO3oIH+fKuDYfBgHmDGmDBens= X-Gm-Gg: AeBDies9k51XMRAhrNv0pSoN3BJLag6wUAMskSgi7WIs62jhLjKZ7w/yHiCFXgBH9Cv z7gfxQKk/ZymkcejtMjZ6bJ78Jb3WcLDlOpa7/wyMKKlPJnUl2IL9CBV5+wzOdrU8mCayTbOvfM v2PYEx0wkfk9pwmltAEuS0eeH484m14MFFsDwLPG+yOzoCP566M9IO+h/8W1wU/LhoGqSLmxW50 tFFp68PCCDCfIt3ykFe/QLousw0D06fYr2suxz+6pug+C0laIgpdPbBZLIHWNhiAqnM5gFnU7UL 74JCl7adIHIyZhMm4kLwg0dir5+nMp2ZlztMeZqOBi3MWMhA6npbz/Wdbw04BOKR4I3VrBnAW8J OUqOY4EO4P5PNMzfWB90AoTfoLJOWNDZfTM1y2vDopisMZdLnCtoUonybae2feZo1loJ37t8s1n oYEqMfO90TVxj+1lvU7QS2e8RCLDXskqdl6tnVsF9UKFI3pg2yIgMWm2a6hW4AUn2ghhVjpAgPF Bt9RrkhHoI3BAwm6hR+iTQsXlGFDmD9LxeYcKjwKlYuyNq6ZjsZGeL4 X-Received: by 2002:a05:7301:6786:b0:2ed:e12:376f with SMTP id 5a478bee46e88-2efba3aa201mr714007eec.31.1777681225190; Fri, 01 May 2026 17:20:25 -0700 (PDT) Received: from MacBook-Pro.local (201-93-59-77.dial-up.telesp.net.br. [201.93.59.77]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3889d611sm8302089eec.1.2026.05.01.17.20.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 17:20:23 -0700 (PDT) From: Rahul Martim Juliato <rahuljuliato@HIDDEN> X-Google-Original-From: Rahul Martim Juliato <rahul.juliato@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' In-Reply-To: <CAN+1HboiDuZVrFPmmPa8W0GsO8ePy+P-d3EvQHtmFyGmP6wP9g@HIDDEN> References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN> <m2ik982h8d.fsf@HIDDEN> <871pfvtso9.fsf@HIDDEN> <m2lde3i4t8.fsf@HIDDEN> <CAN+1HbpfowV03Cyej3Do0pv+UOAZUPFXwR2jicBaUCGjy5oZ_Q@HIDDEN> <87cxzfkocq.fsf@HIDDEN> <CAN+1HboiDuZVrFPmmPa8W0GsO8ePy+P-d3EvQHtmFyGmP6wP9g@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: Fri, 01 May 2026 21:20:14 -0300 Message-ID: <m2mryi7jcx.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: 80740 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>, Rahul Martim Juliato <rahuljuliato@HIDDEN>, Eshel Yaron <me@HIDDEN>, =?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> --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable St=C3=A9phane Marks <shipmints@HIDDEN> writes: > On Fri, May 1, 2026 at 1:54=E2=80=AFPM Eshel Yaron <me@HIDDEN> wr= ote: > > Hi, > > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > > On Fri, May 1, 2026 at 10:26=E2=80=AFAM Rahul Martim Juliato <rahuljul= iato@HIDDEN> wrote: > > > > Eshel Yaron <me@HIDDEN> writes: > > > > > Hi, > > > > > > Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > > > > > >> +(defun markdown-ts-mode-install-parsers (arg) > > >> + "Install `markdown-ts-mode' tree-sitter language parsers. > > >> +If needed, install the required parsers for `markdown' and `markd= own-inline'. > > >> +With a prefix argument, ARG, if needed, install parsers for `html= ', > > >> +`yaml', and `toml'." > > >> + (interactive "P") > > >> + (unless (treesit-ready-p 'markdown t) > > >> + (treesit-install-language-grammar 'markdown)) > > > > > > Note that this `treesit-ready-p' is not quite right, because > > > treesit-ready-p is sensitive to the current buffer. Namely, this w= ill > > > return nil if you invoke this command in a large buffer of any kind, > > > even if the markdown parser is already installed. > > > Yes, treesit-ready-p is confusing. See also bug#80909. > > > > > >> + (unless (treesit-ready-p 'markdown-inline t) > > >> + (treesit-install-language-grammar 'markdown-inline)) > > >> + (when arg > > >> + (unless (treesit-ready-p 'html t) > > >> + (require 'html-ts-mode) > > >> + (treesit-install-language-grammar 'html)) > > >> + (unless (treesit-ready-p 'yaml t) > > >> + (require 'yaml-ts-mode) > > >> + (treesit-install-language-grammar 'yaml)) > > >> + (unless (treesit-ready-p 'toml t) > > >> + (require 'toml-ts-mode) > > >> + (treesit-install-language-grammar 'toml)))) > > >>=20=20 > > >> ;;;###autoload > > >> (define-derived-mode markdown-ts-mode text-mode "Markdown" > > >> - "Major mode for editing Markdown using tree-sitter grammar." > > >> + "Major mode for editing Markdown using tree-sitter grammar. > > >> +NOTE: See `markdown-ts--set-up-inline'." > > >> + (if (and (treesit-ensure-installed 'markdown) > > >> + (treesit-ensure-installed 'markdown-inline)) > > >> + (markdown-ts--set-up) > > > > > > Here there is another, related problem: since commit d9691858, > > > treesit-ensure-installed no longer checks treesit-max-buffer-size,= =20 > > > so this will try to create a parser even in a buffer that is too bi= g. > > > (This problem is common to many TS-modes in core.) > > > > > > FWIW, my suggestion in bug#80909 was to move the buffer size check = out > > > of treesit-ready-p and into treesit-parser-create, which would have > > > nullified both of these issues. > > > > > > > > > Best, > > > > > > Eshel > > > > Hi! > > > > Eshel, thank you for noticing these issues, and for the pointer to > > bug#80909. I spent some time reading what you provided and digging i= nto > > the recent change in d9691858. > > > > The attached patch (new) addresses both problems: > > > > - In markdown-ts-mode-install-parsers, replace treesit-ready-p with > > treesit-language-available-p. The install function only needs to > > know whether the grammar library is on disk, not whether the current > > buffer is within size limits. > > LGTM. > > > - In define-derived-mode markdown-ts-mode, separate the two concerns: > > call treesit-ensure-installed for both languages first (which handl= es > > auto-install if treesit-auto-install-grammar is set), then gate the > > actual mode setup on treesit-ready-p, which checks both language > > availability and buffer size. > > This one also look good, with a little caveat about this part: > > ;;;###autoload > (define-derived-mode markdown-ts-mode text-mode "Markdown" > - "Major mode for editing Markdown using tree-sitter grammar." > + "Major mode for editing Markdown using tree-sitter grammar. > +NOTE: See `markdown-ts--set-up-inline'." > + (treesit-ensure-installed 'markdown) > + (treesit-ensure-installed 'markdown-inline) > + (if (and (treesit-ready-p 'markdown t) > + (treesit-ready-p 'markdown-inline t)) > + (markdown-ts--set-up) > + (warn "markdown-ts-mode cannot be set up; using fundamental-mode. > +The tree-sitter parsers `markdown' and `markdown-inline' were not fou= nd. > +Use the command `markdown-ts-mode-install-parsers' to install them. > +With a prefix argument, it can also install optional parsers.") > + (fundamental-mode))) > > Note that this triggers the warning also when the current buffer is too > large, in which case the first sentence is correct, but the rest might > be false (the parsers may be available, perhaps even just-installed.) > You could call treesit-ready-p without the QUIET=3Dt argument, and it > should yield the correct error message on failure. Of course, it > doesn't include the hint about markdown-ts-mode-install-parsers... > > So maybe until treesit-max-buffer-size checking is better rationalized, w= e let bind treesit-max-buffer-size to most-positive-fixnum and provide a wa= rning > rather than refusal. Thanks Eshel and St=C3=A9phane. I went this route: treesit-max-buffer-size is let-bound to most-positive-fixnum around the treesit-ready-p check, so the mode activates in large buffers rather than refusing. With the size check bypassed, the only remaining failure path is a genuinely missing grammar, so the "parsers not found" warning stays accurate. A comment in the code now references bug#80909 as the signal to revisit this workaround. > > > Yuan, St=C3=A9phane, Eshel, does this look right to you? > > > > Seems good at first glance. > > > > One can always let-bind treesit-max-buffer-size around treesit-ready-p= to avoid the buffer size > > restriction, though I'd prefer an argument be exposed to inhibit that = check, better invert it so that > > it's an extra check not the default check. One can install a parser i= n a small buffer that grows beyond > > the size check which is a false sense of security. > Please find the updated patch attached. --=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 RnJvbSA0YmQ3ODVmMDQ5YmE2MTQ3NWQ2N2MyZTRjNGNlN2JkMzFkZWNlNmMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn bWFpbC5jb20+CkRhdGU6IEZyaSwgMyBBcHIgMjAyNiAyMzo0MTo0NyAtMDMwMApTdWJqZWN0OiBb UEFUQ0hdIEltcHJvdmUgJ21hcmtkb3duLXRzLW1vZGUnCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k aW5nOiA4Yml0CgpPdmVyaGF1bCAnbWFya2Rvd24tdHMtbW9kZScgd2l0aCBjb21wcmVoZW5zaXZl IGZvbnRpZmljYXRpb24sCmNvZGUgYmxvY2sgaGFuZGxpbmcsIGVkaXRpbmcgY29tbWFuZHMsIGZp bGwtcGFyYWdyYXBoIHN1cHBvcnQsCmlubGluZSBpbWFnZSBwcmV2aWV3cywgYSBtb2RlIG1lbnUs IGFuZCB0YWJsZSBlZGl0aW5nLiAgQWRkCidtYXJrZG93bi10cy1tb2RlLXguZWwnIHdpdGggY29u dmVyc2lvbi9leHBvcnQgYW5kIFRPQyBzdXBwb3J0LgoKKiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93 bi10cy1tb2RlLmVsOiBBZGQgVmVyc2lvbiwKUGFja2FnZS1SZXF1aXJlcywgYW5kIEtleXdvcmRz IGhlYWRlciBmaWVsZHMuICBFeHBhbmQgQ29tbWVudGFyeQp3aXRoIGRvY3VtZW50YXRpb24gZm9y IGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMsIGNvZGUgYmxvY2sKY29tbWFuZHMsIGJpZGlyZWN0 aW9uYWwgdGV4dCwgYW5kIGtub3duIHRyZWUtc2l0dGVyIGdyYW1tYXIKYnVncy4KKHJlcXVpcmUg J2dvdG8tYWRkciwgeHJlZiwgaWNvbnMpOiBOZXcgcmVxdWlyZW1lbnRzLgoobWFya2Rvd24tdHMp OiBOZXcgY3VzdG9taXphdGlvbiBncm91cCB3aXRoIDp2ZXJzaW9uIGFuZAo6cGFja2FnZS12ZXJz aW9uIHRhZ3MuCihtYXJrZG93bi10cy1oaWRlLW1hcmt1cCk6IEFkZCA6dmVyc2lvbiBhbmQgOnBh Y2thZ2UtdmVyc2lvbi4KKG1hcmtkb3duLXRzLWVsbGlwc2lzKTogTmV3IG9wdGlvbiBmb3IgZm9s ZGVkIGhlYWRpbmcgZWxsaXBzaXMuCihtYXJrZG93bi10cy1tZW51LWJhci1zaG93KTogTmV3IG9w dGlvbiB0byB0b2dnbGUgbW9kZSBtZW51LgoobWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nKTog TmV3IG9wdGlvbiBmb3IgZGVmYXVsdCBmb2xkCmxldmVsLgoobWFya2Rvd24tdHMtaW5saW5lLWlt YWdlcyk6IE5ldyBvcHRpb24gdG8gZGlzcGxheSBpbmxpbmUKaW1hZ2VzLgoobWFya2Rvd24tdHMt aW1hZ2UtbWF4LXdpZHRoKTogTmV3IG9wdGlvbiBmb3IgaW1hZ2UgbWF4IHdpZHRoLgoobWFya2Rv d24tdHMtZGlzcGxheS1yZW1vdGUtaW5saW5lLWltYWdlcyk6IE5ldyBvcHRpb24gZm9yCnJlbW90 ZSBpbWFnZSBoYW5kbGluZy4KKG1hcmtkb3duLXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUpOiBO ZXcgaGVscGVyIHRvIHJlc29sdmUKZGlzcGxheSB2YWx1ZXMgdXNpbmcgY2hhci1kaXNwbGF5YWJs ZS1wLgoobWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveCk6IE5ldyBvcHRpb24gZm9yIGNoZWNr ZWQgY2hlY2tib3gKZGlzcGxheSBzdHJpbmcgb3IgaWNvbi4KKG1hcmtkb3duLXRzLWNoZWNrZWQt Y2hlY2tib3gtaWNvbik6IE5ldyBpY29ucy5lbCBpY29uIGZvciB0aGUKY2hlY2tlZCB2YXJpYW50 LgoobWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94KTogTmV3IG9wdGlvbiBmb3IgdW5jaGVj a2VkCmNoZWNrYm94IGRpc3BsYXkgc3RyaW5nIG9yIGljb24uCihtYXJrZG93bi10cy11bmNoZWNr ZWQtY2hlY2tib3gtaWNvbik6IE5ldyBpY29ucy5lbCBpY29uIGZvciB0aGUKdW5jaGVja2VkIHZh cmlhbnQuCihtYXJrZG93bi10cy10aGVtYXRpYy1icmVhay1jaGFyYWN0ZXIpOiBOZXcgb3B0aW9u IGZvciB0aGVtYXRpYwpicmVhayBkaXNwbGF5IGNoYXJhY3Rlci4KKG1hcmtkb3duLXRzLWhhcmQt bGluZS1icmVhay1iYWNrc2xhc2gpOiBOZXcgb3B0aW9uIGZvciB0aGUKZ2x5cGggc2hvd24gaW4g cGxhY2Ugb2YgYSB0cmFpbGluZy1iYWNrc2xhc2ggaGFyZCBsaW5lIGJyZWFrCndoZW4gbWFya3Vw IGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZSk6IE5ldyBvcHRp b24gZm9yIHRoZSBnbHlwaApzaG93biBpbiBwbGFjZSBvZiBhIHRyYWlsaW5nLXNwYWNlcyBoYXJk IGxpbmUgYnJlYWsgd2hlbiBtYXJrdXAKaXMgaGlkZGVuLgoobWFya2Rvd24tdHMtY29kZS1ibG9j ay1pbi1jb250ZXh0LW1vZGUtbGlnaHRlcik6IE5ldyBvcHRpb24gZm9yCmNvZGUgYmxvY2sgY29u dGV4dCBtb2RlIGxpZ2h0ZXIgc3RyaW5nLgoobWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2Nr LW1vZGUtd2FybmluZ3MpOiBOZXcgb3B0aW9uIHRvCmluaGliaXQgY29kZS1ibG9jayBtYWpvci1t b2RlIG1lc3NhZ2VzIGFuZCB3YXJuaW5ncy4KKG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1bHQtY29s dW1uLXdpZHRoKTogTmV3IG9wdGlvbiBmb3IgZGVmYXVsdAp0YWJsZSBjb2x1bW4gd2lkdGguCiht YXJrZG93bi10cy1lbmFibGUtdGFibGUtbW9kZSk6IE5ldyBvcHRpb24gdG8gZW5hYmxlIHRhYmxl Cm1vZGUuCihtYXJrZG93bi10cy10YWJsZS1hdXRvLWFsaWduKTogTmV3IG9wdGlvbiBmb3IgdHJp Z2dlcnMgdGhhdApjYXVzZSBhdXRvbWF0aWMgdGFibGUgYWxpZ25tZW50LgoobWFya2Rvd24tdHMt dGFibGUtYWxpZ24tZmVhdHVyZXMpOiBOZXcgb3B0aW9uIGZvciB0YWJsZSBhbGlnbgpmZWF0dXJl cy4KKG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbGlnaHRlcik6IE5ldyBvcHRpb24gZm9yCm1h cmtkb3duLXRzLWluLXRhYmxlLW1vZGUgbGlnaHRlciBzdHJpbmcuCihtYXJrZG93bi10cy1lbXBo YXNpcywgbWFya2Rvd24tdHMtYm9sZCkKKG1hcmtkb3duLXRzLXN0cmlrZXRocm91Z2gsIG1hcmtk b3duLXRzLWxpbmspCihtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9uLCBtYXJrZG93bi10cy1j b2RlLXNwYW4pCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLCBtYXJrZG93bi10cy1jb2RlLWJsb2Nr LW1hcmt1cC1oaWRkZW4pCihtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2NrLCBtYXJrZG93 bi10cy1odG1sLXRhZykKKG1hcmtkb3duLXRzLWh0bWwtYmxvY2ssIG1hcmtkb3duLXRzLXRoZW1h dGljLWJyZWFrKQoobWFya2Rvd24tdHMtZW50aXR5LXJlZmVyZW5jZSkKKG1hcmtkb3duLXRzLW51 bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSwgbWFya2Rvd24tdHMtbGF0ZXgpCihtYXJrZG93bi10 cy10YWJsZS1oZWFkZXIsIG1hcmtkb3duLXRzLXRhYmxlLWNlbGwpCihtYXJrZG93bi10cy10YWJs ZS1kZWxpbWl0ZXItY2VsbCwgbWFya2Rvd24tdHMtdGFzay11bmNoZWNrZWQpCihtYXJrZG93bi10 cy10YXNrLWNoZWNrZWQpOiBOZXcgZmFjZXMuCihtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWst YmFja3NsYXNoKQoobWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaC1oaWRkZW4p CihtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UpCihtYXJrZG93bi10cy1oYXJkLWxp bmUtYnJlYWstc3BhY2UtaGlkZGVuKTogTmV3IGZhY2VzIGZvciB0aGUKdHdvIGhhcmQtbGluZS1i cmVhayB2YXJpYW50cywgd2l0aCBkaXN0aW5jdCBzaG93bi9oaWRkZW4KYXBwZWFyYW5jZXMuCiht YXJrZG93bi10cy1pbi1jb2RlLWJsb2NrKTogTmV3IGZhY2UgZm9yIHdoZW4gcG9pbnQgaXMgaW5z aWRlIGEKZmVuY2VkIGNvZGUgYmxvY2suCihtYXJrZG93bi10cy10YWJsZSk6IE5ldyBmYWNlIGZv ciBNYXJrZG93biBwaXBlIHRhYmxlCmJhY2tncm91bmQuCihtYXJrZG93bi10cy1pbi10YWJsZSk6 IE5ldyBmYWNlIGZvciBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlCndoZW4gcG9pbnQgaXMgaW4g YSB0YWJsZS4KKG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lKTogTmV3IHZhcmlhYmxlIGZvciBs aWdodHdlaWdodCBzZXR1cAppbiBlbWJlZGRlZCBpbmxpbmUgbWFya2Rvd24tdHMtbW9kZSBidWZm ZXJzIHVzZWQgYnkgY29kZSBibG9jawpjb21tYW5kcy4KKG1hcmtkb3duLXRzLWRlZmF1bHQtY29k ZS1ibG9jay1tb2RlKTogTmV3IHZhcmlhYmxlIHRvIGRlZmluZQpkZWZhdWx0IG1vZGUgZm9yIGFu b255bW91cyBjb2RlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLWZvbnRpZnktY29kZS1ibG9ja3MtbmF0 aXZlbHkpOiBOZXcgb3B0aW9uIHRvCmVuYWJsZS9kaXNhYmxlIG5hdGl2ZSBmb250aWZpY2F0aW9u IG9mIGZlbmNlZCBjb2RlIGJsb2NrCmNvbnRlbnRzLgoobWFya2Rvd24tdHMtZW5hYmxlLWNvZGUt YmxvY2stY29udGV4dC1tb2RlKTogTmV3IG9wdGlvbiB0bwplbmFibGUvZGlzYWJsZSBjb2RlIGJs b2NrIGNvbnRleHQgaW50ZWdyYXRpb24uCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKTog TmV3IHZhcmlhYmxlIHJlcGxhY2luZwptYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1t YXAgYW5kCm1hcmtkb3duLXRzLWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwIHdpdGggdW5pZmll ZCBsYW5ndWFnZSB0bwptb2RlIG1hcHBpbmcgaW5jbHVkaW5nIGhldXJpc3RpYyBsb29rdXAuCiht YXJrZG93bi10cy1jb2RlLWJsb2NrLWZvcmNlLWNvbnZlbnRpb25hbC1tb2Rlcyk6IE5ldyB2YXJp YWJsZQpsaXN0aW5nIHRyZWUtc2l0dGVyIG1vZGVzIHdob3NlIGZvbnRpZmljYXRpb24gb2YgY29k ZSBibG9jawpjb250ZW50IHNob3VsZCBiZSBoYXJ2ZXN0ZWQgdmlhIGEgdGVtcG9yYXJ5IGJ1ZmZl ci4KKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC1idWZmZXIpOiBOZXcgY29uc3RhbnQgZm9yIHRh YmxlIGV4cG9ydApvdXRwdXQgYnVmZmVyIG5hbWUuCihtYXJrZG93bi10cy0tdGFibGUtcm93LXR5 cGVzLCBtYXJrZG93bi10cy0tdGFibGUtY2VsbC10eXBlcykKKG1hcmtkb3duLXRzLS10YWJsZS1k ZWxpbWl0ZXItY2VsbC10eXBlcykKKG1hcmtkb3duLXRzLS10YWJsZS1kZWxpbWl0ZXItY2VsbC1z dWJ0eXBlcyk6IE5ldyBjb25zdGFudHMgZm9yCnBpcGUgdGFibGUgbm9kZSB0eXBlIGNsYXNzaWZp Y2F0aW9uLgoobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24pOiBOZXcgZnVuY3Rpb24gdG8g Y3JlYXRlCmNsaWNrYWJsZSBsaW5rIGJ1dHRvbnMgd2l0aCBtYWlsdG8sIGJyb3dzZS11cmwsIGFu ZCBmaW5kLWZpbGUKZGlzcGF0Y2guCihtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0 aW9uKTogTmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGxpbmsgZGVzdGluYXRpb25zIHdoZW4gbWFy a3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZSwgbWFya2Rvd24tdHMt LWxpbmstcmVmLWNhY2hlLXRpY2spCihtYXJrZG93bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMp CihtYXJrZG93bi10cy0tcmVzb2x2ZS1saW5rLXJlZik6IE5ldyBsaW5rIHJlZmVyZW5jZSBkZWZp bml0aW9uCmNhY2hlIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZyBwZXIgQ29tbW9uTWFy ayBzcGVjLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKTogTmV3IGZvbnRpZmllciBm b3IgaW5saW5lLApyZWZlcmVuY2UsIHNob3J0Y3V0LCBhbmQgY29sbGFwc2VkIGxpbmtzIGFzIGNs aWNrYWJsZSBidXR0b25zLgoobWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmspOiBOZXcgZm9u dGlmaWVyIGZvciBVUkkgYW5kIGVtYWlsCmF1dG9saW5rcyB3aXRoIGFuZ2xlIGJyYWNrZXQgaGlk aW5nLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1yZWYtbGFiZWwpCihtYXJrZG93bi10cy0t Zm9udGlmeS1saW5rLXJlZi1kZXN0aW5hdGlvbik6IE5ldyBmb250aWZpZXJzIGZvcgpsaW5rIHJl ZmVyZW5jZSBkZWZpbml0aW9ucy4KKG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1Yi1zdHJpcC1yZSwg bWFya2Rvd24tdHMtLXNsdWctZ2l0aHViKQoobWFya2Rvd24tdHMtLXNsdWctcGFuZG9jLCBtYXJr ZG93bi10cy0tZXhwbGljaXQtaWQtcmUpCihtYXJrZG93bi10cy0taGVhZGluZy10ZXh0LWFuZC1p ZCkKKG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkLWNhY2hlKQoobWFya2Rvd24tdHMtLWhlYWRpbmct aWQtY2FjaGUtdGljaykKKG1hcmtkb3duLXRzLS1idWlsZC1oZWFkaW5nLWlkcywgbWFya2Rvd24t dHMtLWhlYWRpbmctaWRzKQoobWFya2Rvd24tdHMtLWZvbGxvdy1mcmFnbWVudCk6IE5ldyBmcmFn bWVudCBsaW5rIHN1cHBvcnQgd2l0aApHaXRIdWIgYW5kIFBhbmRvYyBzbHVnIGFsZ29yaXRobXMu CihtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCkKKG1hcmtkb3duLXRzLS1mb250aWZ5 LWxhdGV4LWJsb2NrKTogTmV3IExhVGVYL21hdGggZm9udGlmaWVyCndpdGggY3Jvc3MtcGFyYWdy YXBoIHZhbGlkYXRpb24uCihtYXJrZG93bi10cy0tZm9udGlmeS1iYWNrc2xhc2gtZXNjYXBlKTog TmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGJhY2tzbGFzaCBpbiBlc2NhcGVzIGV4Y2VwdCBpbnNp ZGUgTGFUZVggYmxvY2tzLgoobWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHksIG1hcmtkb3duLXRz LS1mb250aWZ5LWVudGl0eSk6IE5ldwpIVE1MIGVudGl0eSBkZWNvZGVyIGFuZCBmb250aWZpZXIg dXNpbmcgb3JnLWVudGl0aWVzIGFuZApzZ21sLWNoYXItbmFtZXMgd2l0aCBkaXNwbGF5IHByb3Bl cnR5IGZvciBkZWNvZGVkIHZhbHVlcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94KTog TmV3IGZvbnRpZmllciBzaG93aW5nIHRoZQpjb25maWd1cmVkIGNoZWNrYm94IGdseXBoIHdoZW4g bWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWhhcmQtbGluZS1icmVhayk6 IE5ldyBmb250aWZpZXIgZm9yCidoYXJkX2xpbmVfYnJlYWsnIG5vZGVzLgoobWFya2Rvd24tdHMt LWZvbnRpZnktaGVhZGluZyk6IE5ldyBmb250aWZpZXIgZm9yIEFUWCBhbmQgU2V0ZXh0CmhlYWRp bmdzLgoobWFya2Rvd24tdHMtLWZvbnRpZnktdGhlbWF0aWMtYnJlYWspOiBOZXcgZm9udGlmaWVy IHNob3dpbmcKaG9yaXpvbnRhbCBsaW5lIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3du LXRzLS1mb250aWZ5LWNvZGUtYmxvY2spOiBOZXcgZm9udGlmaWVyIGFwcGx5aW5nCmJhY2tncm91 bmQgb3ZlcmxheSB0byBjb2RlIGJsb2NrcyB3aXRoIGxhbmd1YWdlIGFuZCBtb2RlCnByb3BlcnRp ZXMuCihtYXJrZG93bi10cy1hdC1jb2RlLWJsb2NrLXApCihtYXJrZG93bi10cy1jb2RlLWJsb2Nr LWxhbmd1YWdlLWF0KQoobWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLWF0KTogTmV3IGFjY2Vz c29ycyBmb3IgY29kZSBibG9jawpvdmVybGF5IHByb3BlcnRpZXMuCihtYXJrZG93bi10cy0taW1l bnUtY29kZS1ibG9jay1ub2RlLXApOiBOZXcgaGVscGVyIGZvciBpbWVudQpjb2RlIGJsb2NrIGRl dGVjdGlvbi4KKG1hcmtkb3duLXRzLS1pbWFnZS1hbG9uZS1vbi1saW5lLXApCihtYXJrZG93bi10 cy0tZm9udGlmeS1pbWFnZSk6IE5ldyBpbmxpbmUgaW1hZ2UgZGlzcGxheSB3aXRoCnN0YW5kYWxv bmUgYW5kIGlubGluZSBwb3NpdGlvbmluZy4KKG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHAp CihtYXJrZG93bi10cy0tYmFyZS1lbWFpbC11cmktcmVnZXhwKQoobWFya2Rvd24tdHMtLWZvbnRp ZnktYmFyZS11cmkpOiBOZXcgYmFyZSBVUkwvZW1haWwKZm9udGlmaWNhdGlvbiB2aWEgaml0LWxv Y2sgdXNpbmcgZ290by1hZGRyIHJlZ2V4cHMuCihtYXJrZG93bi10cy0tdHJlZXNpdC1zZXR0aW5n cyk6IFJld3JpdGUgd2l0aCBkZWRpY2F0ZWQgZmFjZXMsCmN1c3RvbSBmb250aWZpZXJzLCBhbmQg bmV3IGZvbnQtbG9jayBmZWF0dXJlcyBmb3IgYWxsIGlubGluZSBhbmQKYmxvY2sgZWxlbWVudHMu ICBBbHNvIGFkZCBhIG5ldyAnZXJyb3InIGZvbnQtbG9jayBmZWF0dXJlCmhpZ2hsaWdodGluZyB0 cmVlLXNpdHRlciBFUlJPUiBub2Rlcy4KKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdl cykKKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2Rlcyk6IE5ldyBidWZmZXItbG9j YWwgYWxpc3RzCmZvciBjb2RlIGJsb2NrIGxhbmd1YWdlIHRyYWNraW5nLgoobWFya2Rvd24tdHMt LWhhcnZlc3QtbW9kZS10cmVlc2l0LWNvbmZpZ3VyYXRpb24pOiBSZW5hbWUgZnJvbQptYXJrZG93 bi10cy0taGFydmVzdC10cmVlc2l0LWNvbmZpZ3Mgd2l0aCBkZWxheS1tb2RlLWhvb2tzLgoobWFy a2Rvd24tdHMtLWNvbmZpZ3VyZS1jdXJyZW50LWJ1ZmZlcik6IFJlbmFtZSBmcm9tCm1hcmtkb3du LXRzLS1hZGQtY29uZmlnLWZvci1tb2RlLgoobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUp OiBOZXcgaGVscGVyIGV4dHJhY3RpbmcgbGFuZ3VhZ2UKc3ltYm9sIGZyb20gY29kZV9mZW5jZV9j b250ZW50IG5vZGUuCihtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpOiBOZXcgYnVm ZmVyLWxvY2FsIGhhc2ggdGFibGUKY2FjaGluZyBmb250aWZpY2F0aW9uIHJlc3VsdHMgZm9yIG5v bi10cmVlLXNpdHRlciBjb2RlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1j b2xsZWN0LWZhY2VzKTogTmV3IGZ1bmN0aW9uCmhhcnZlc3RpbmcgZmFjZSBwcm9wZXJ0aWVzIGZy b20gYSBtb2RlIGluIGFuIGluZGlyZWN0IG9yCnRlbXBvcmFyeSBidWZmZXIuCihtYXJrZG93bi10 cy0tZm9udGlmeS1ub24tdHMtY29kZS1ibG9jayk6IE5ldyBmb250aWZpZXIgZm9yCm5vbi10cmVl LXNpdHRlciBtb2RlcyB2aWEgdGVtcG9yYXJ5IGJ1ZmZlciBmb250LWxvY2suCihtYXJrZG93bi10 cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2RlKTogTmV3IGZ1bmN0aW9uIHdpdGgKaGV1cmlzdGlj IG1vZGUgbmFtZSBwcm9iaW5nLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2Up OiBSZW5hbWUgZnJvbQptYXJrZG93bi10cy0tY29udmVydC1jb2RlLWJsb2NrLWxhbmd1YWdlIHdp dGggc3VwcG9ydCBmb3Igbm9uLXRzCm1vZGVzIGFuZCByZWN1cnNpdmUgbWFya2Rvd24gaGFuZGxp bmcuCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzKQoobWFya2Rvd24tdHMtY29kZS1i bG9jay10aGluZy1jb21tYW5kcykKKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stcmVnaW9uLWNvbW1h bmRzKTogTmV3IGNvbW1hbmQgbGlzdHMgZm9yCmNvZGUtYmxvY2sgY29udGV4dCBleGVjdXRpb24u CihtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlKQoobWFya2Rv d24tdHMtLW1heWJlLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2spCihtYXJrZG93bi10cy0tY29k ZS1ibG9jay14cmVmLWZpbmQtZGVmaW5pdGlvbnMpCihtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQt aW4tY29kZS1ibG9jayk6IE5ldyBjb2RlIGJsb2NrIG1pbm9yCm1vZGUgd2l0aCB0ZW1wLWJ1ZmZl ciBjb21tYW5kIGRpc3BhdGNoLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZSk6IE5l dyBjb21tYW5kIGZvciBuZXdsaW5lCmluc2lkZSBjb2RlIGJsb2NrcywgZGlzcGF0Y2hpbmcgdG8g dGhlIGJsb2NrJ3MgbW9kZS4KKG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncyk6IFVwZGF0ZSBy YW5nZSBjb25maWd1cmF0aW9uOwpyZW1vdmUgOnJhbmdlLWZuIHRyZWVzaXQtcmFuZ2UtZm4tZXhj bHVkZS1jaGlsZHJlbi4KKG1hcmtkb3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMpCihtYXJr ZG93bi10cy0tb3V0bGluZS12aWV3LWNoYW5nZSk6IE5ldyBoZWxwZXJzIGZvciBpbWFnZQpvdmVy bGF5IG1hbmFnZW1lbnQgZHVyaW5nIG91dGxpbmUgZm9sZC91bmZvbGQuCihtYXJrZG93bi10cy0t b3V0bGluZS1pbnZpc2libGUtcCk6IE5ldyBoZWxwZXIgdGVzdGluZyB3aGV0aGVyIGEKcG9zaXRp b24gaXMgaW5zaWRlIGFuIG91dGxpbmUtZm9sZGVkIHJlZ2lvbi4KKG1hcmtkb3duLXRzLS1ob3N0 LXJhbmdlcy1ub3RpZmllcik6IE5ldyBmdW5jdGlvbiBwcnVuaW5nIHN0YWxlCmNvZGUgYmxvY2sg b3ZlcmxheXMgd2hlbiB0aGUgaG9zdCBwYXJzZSB0cmVlIGNoYW5nZXMuCihtYXJrZG93bi10cy0t YmFyZi1pZi1ub3QtbW9kZSk6IE5ldyBoZWxwZXIgc2lnbmFsaW5nIGEKdXNlci1lcnJvciB3aGVu IHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBub3QgZGVyaXZlZCBmcm9tCm1hcmtkb3duLXRzLW1vZGUu CihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZSk6IE5ldyBtaW5vciBtb2Rl IGVuYWJsZWQKd2hlbiBwb2ludCBpcyB3aXRoaW4gYSBmZW5jZWQgY29kZSBibG9jaywgYWN0aXZh dGluZwptYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1tYXAgc28gZWxpZ2li bGUgY29tbWFuZHMKZGlzcGF0Y2ggdG8gdGhlIGJsb2NrJ3MgbWFqb3IgbW9kZS4KKG1hcmtkb3du LXRzLS1zZXQtaGlkZS1tYXJrdXApOiBDbGVhciBpbWFnZSBvdmVybGF5cyB3aGVuCnRvZ2dsaW5n IG1hcmt1cCB2aXNpYmlsaXR5LgoobWFya2Rvd24tdHMtLXNldC1pbmxpbmUtaW1hZ2VzKQoobWFy a2Rvd24tdHMtdG9nZ2xlLWlubGluZS1pbWFnZXMpOiBOZXcgZnVuY3Rpb25zIGZvciB0b2dnbGlu ZwppbmxpbmUgaW1hZ2UgZGlzcGxheS4KKG1hcmtkb3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgt bGV2ZWwpOiBOZXcgY29uc3RhbnQuCihtYXJrZG93bi10cy0taGVhZGluZy1hdC1wb2ludCwgbWFy a2Rvd24tdHMtLWhlYWRpbmctbGV2ZWwpCihtYXJrZG93bi10cy0tc2VjdGlvbi1hdC1wb2ludCk6 IE5ldyBoZWFkaW5nIG5hdmlnYXRpb24gaGVscGVycy4KKG1hcmtkb3duLXRzLXByb21vdGUsIG1h cmtkb3duLXRzLWRlbW90ZSk6IE5ldyBjb21tYW5kcyBmb3IKaGVhZGluZyBhbmQgbGlzdCBpdGVt IHByb21vdGlvbi9kZW1vdGlvbiB3aXRoIHJlZ2lvbiBzdXBwb3J0LgoobWFya2Rvd24tdHMtLXBy b21vdGUtb3ItZGVtb3RlKQoobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lvbik6 IE5ldyBoZWFkaW5nIGxldmVsCmFkanVzdG1lbnQgZnVuY3Rpb25zLgoobWFya2Rvd24tdHMtbW92 ZS1zdWJ0cmVlLXVwLCBtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtZG93bik6Ck5ldyBjb21tYW5k cyBmb3IgbW92aW5nIHNlY3Rpb25zIGFuZCBsaXN0IGl0ZW1zLgoobWFya2Rvd24tdHMtLXNlY3Rp b24tZm9sZGVkLXApCihtYXJrZG93bi10cy0tbW92ZS1zdWJ0cmVlLXVwLW9yLWRvd24pOiBOZXcg c3VidHJlZSBtb3ZlIHdpdGgKZm9sZGluZyBzdGF0ZSBwcmVzZXJ2YXRpb24uCihtYXJrZG93bi10 cy10b2dnbGUtY2hlY2tib3gpOiBOZXcgY29tbWFuZCB0byB0b2dnbGUgdGFzayBsaXN0CmNoZWNr Ym94ZXMuCihtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KTogTmV3IGhlbHBlciB3aXRo IGJsb2NrIHF1b3RlCm1hcmtlciBoYW5kbGluZy4KKG1hcmtkb3duLXRzLS1saXN0LW1hcmtlci13 aWR0aCwgbWFya2Rvd24tdHMtLWxpc3QtaXRlbS1yZWdpb24pCihtYXJrZG93bi10cy0tbGlzdC1v cmRlcmVkLWl0ZW0tcCk6IE5ldyBsaXN0IGl0ZW0gaGVscGVycy4KKG1hcmtkb3duLXRzLS1saXN0 LXByb21vdGUtb3ItZGVtb3RlKTogTmV3IGZ1bmN0aW9uIHdpdGggb3JkZXJlZApsaXN0IG5lc3Rp bmcgZ3VhcmQuCihtYXJrZG93bi10cy0tbGlzdC1ub2RlLWJvbCwgbWFya2Rvd24tdHMtLWxpc3Qt bW92ZSk6IE5ldyBsaXN0Cml0ZW0gbW92ZW1lbnQgZnVuY3Rpb25zLgoobWFya2Rvd24tdHMtcmVu dW1iZXItbGlzdCk6IE5ldyBjb21tYW5kIGZvciBzZXF1ZW50aWFsIGxpc3QKcmVudW1iZXJpbmcg d2l0aCBwcmVmaXggYXJndW1lbnQgc3VwcG9ydC4KKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3 LW1hcmtlcikKKG1hcmtkb3duLXRzLS1uZXctbWFya2VyLWZvci1saW5lKTogTmV3IG1hcmtlciBz dHJpbmcgZ2VuZXJhdG9ycwpmb3IgbGlzdCBpdGVtIGluc2VydGlvbi4KKG1hcmtkb3duLXRzLS1s aW5lLWJsb2NrLXF1b3RlLWRlcHRoKTogTmV3IGhlbHBlciBjb3VudGluZyBibG9jawpxdW90ZSBk ZXB0aC4KKG1hcmtkb3duLXRzLW5ld2xpbmUpOiBOZXcgUkVUIGNvbW1hbmQgZm9yIGNvbnRleHQt YXdhcmUKbmV3bGluZS4KKG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0pOiBOZXcgTS1SRVQg Y29tbWFuZCB0aGF0IGNyZWF0ZXMgYQpuZXcgbGlzdCBpdGVtLgoobWFya2Rvd24tdHMtLWZpbGwt dW5maWxsYWJsZS1ibG9jay1xdWVyeSk6IE5ldyB0cmVlLXNpdHRlcgpxdWVyeSBmb3IgdW5maWxs YWJsZSBibG9ja3MuCihtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uKTogTmV3IGhl bHBlciBmb3IgbGlzdCBpdGVtCnRleHQgYWxpZ25tZW50LgoobWFya2Rvd24tdHMtLWZpbGwtbGlz dC1pdGVtKTogTmV3IGZ1bmN0aW9uIGZpbGxpbmcgd2l0aGluIGxpc3QKaXRlbXMgd2l0aG91dCBt ZXJnaW5nIGFkamFjZW50IGl0ZW1zLgoobWFya2Rvd24tdHMtLWFkYXB0aXZlLWZpbGwpOiBOZXcg YWRhcHRpdmUgZmlsbCBmdW5jdGlvbiBmb3IKbGlzdCBpdGVtIGNvbnRpbnVhdGlvbi4KKG1hcmtk b3duLXRzLS1maWxsLWZvcndhcmQtcGFyYWdyYXBoKTogTmV3IHBhcmFncmFwaCBtb3Rpb24KcmVz cGVjdGluZyBsaXN0IGl0ZW1zIGFuZCB1bmZpbGxhYmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLWZp bGwtcGFyYWdyYXBoKTogTmV3IGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uIHdpdGgKY29uZCogZGlz cGF0Y2ggZm9yIGxpc3RzLCBibG9jayBxdW90ZXMsIEhUTUwgY29tbWVudHMsIGFuZAp1bmZpbGxh YmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1maWxsLWh0bWwtY29tbWVudCk6IE5ldyBIVE1MIGNv bW1lbnQgZmlsbGVyIHdpdGgKY29udGludWF0aW9uIGFsaWdubWVudC4KKG1hcmtkb3duLXRzLS1i bG9jay1xdW90ZS1wcmVmaXgpOiBOZXcgaGVscGVyIHByZXNlcnZpbmcKZXhpc3RpbmcgYmxvY2sg cXVvdGUgbWFya2VyIHN0eWxlLgoobWFya2Rvd24tdHMtLWZpbGwtYmxvY2stcXVvdGUpOiBOZXcg YmxvY2sgcXVvdGUgZmlsbGVyIHdpdGgKbGlzdCBpdGVtIHRleHQgY29sdW1uIGFsaWdubWVudC4K KG1hcmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0KTogTmV3IGFsaXN0IG9mIGVtcGhhc2lzIG1hcmtl cnMuCihtYXJrZG93bi10cy0tZW1waGFzaXMtbm9kZS1hdC1wb2ludCk6IE5ldyB0cmVlLXNpdHRl ciBiYXNlZAplbXBoYXNpcyBkZXRlY3Rpb24uCihtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMp OiBOZXcgY29tbWFuZCByZW1vdmluZyBlbXBoYXNpcyBhdApwb2ludCBvciByZWdpb24uCihtYXJr ZG93bi10cy1lbXBoYXNpemUpOiBOZXcgaW50ZXJhY3RpdmUgZW1waGFzaXMgaW5zZXJ0aW9uIHdp dGgKcmVnaW9uIHdyYXBwaW5nIGFuZCB3b3JkLWF0LXBvaW50IHN1cHBvcnQuCihtYXJrZG93bi10 cy1pbnNlcnQtc3RydWN0dXJlKTogTmV3IGNvbW1hbmQgZm9yIGluc2VydGluZyBjb2RlCmJsb2Nr cywgYmxvY2sgcXVvdGVzLCBhbmQgZGl2aWRlcnMuCihtYXJrZG93bi10cy0taW5zZXJ0LWNvZGUt YmxvY2spOiBOZXcgZnVuY3Rpb24gd2l0aCBsYW5ndWFnZQpjb21wbGV0aW9uIGZyb20ga25vd24g bW9kZXMuCihtYXJrZG93bi10cy0taW5zZXJ0LWJsb2NrLXF1b3RlKTogTmV3IGZ1bmN0aW9uIHdp dGggcmVnaW9uCndyYXBwaW5nLgoobWFya2Rvd24tdHMtLWluc2VydC1kaXZpZGVyKTogTmV3IGZ1 bmN0aW9uIGZvciBob3Jpem9udGFsCnJ1bGVzLgoobWFya2Rvd24tdHMtLWFwcGx5LWVsbGlwc2lz KTogTmV3IGZ1bmN0aW9uIGFwcGx5aW5nIGN1c3RvbQplbGxpcHNpcyB2aWEgZGlzcGxheSB0YWJs ZS4KKG1hcmtkb3duLXRzLS1zZXQtdXApOiBSZW5hbWUgZnJvbSBtYXJrZG93bi10cy1zZXR1cC4K KG1hcmtkb3duLXRzLW91dGxpbmUtY3ljbGUpOiBOZXcgVEFCIGNvbW1hbmQgY3ljbGluZyBvdXRs aW5lCnZpc2liaWxpdHkgb24gaGVhZGluZ3MuCihtYXJrZG93bi10cy1tb2RlLW1hcCk6IE5ldyBr ZXltYXAgZm9yIGNvZGUgYmxvY2sgbmF2aWdhdGlvbiwKYmluZGluZ3MgZm9yIGhlYWRpbmcgbmF2 aWdhdGlvbiwgc3RydWN0dXJlIGVkaXRpbmcsIGVtcGhhc2lzLAphbmQgbGlzdCBvcGVyYXRpb25z LgoobWFya2Rvd24tdHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtbWFwKTogTmV3IGtleW1h cCBmb3IKY29kZSBibG9jayBjb250ZXh0LgoobWFya2Rvd24tdHMtbW9kZS1tZW51KTogTmV3IG1l bnUgYmFyIHdpdGggU2hvdy9IaWRlLCBOYXZpZ2F0ZQpIZWFkaW5ncywgRWRpdCBTdHJ1Y3R1cmUs IGFuZCBFZGl0aW5nIHNlY3Rpb25zLgoobWFya2Rvd24tdHMtbW9kZSk6IEFkZCBvdXRsaW5lLW1p bm9yLW1vZGUsIGVsbGlwc2lzLCBmb2xkaW5nLApmaWxsLXBhcmFncmFwaCBpbnRlZ3JhdGlvbiwg Y29kZS1ibG9jay1jb250ZXh0LW1vZGUgaG9va3MsCmNvbW1lbnQgc2V0dGluZ3MsIGFuZCBvdXRs aW5lLXZpZXctY2hhbmdlLWhvb2suICBVc2UKbWFya2Rvd24tdHMtbW9kZSBkaXJlY3RseSBpbiBh dXRvLW1vZGUtYWxpc3QgaW5zdGVhZCBvZgptYXJrZG93bi10cy1tb2RlLW1heWJlLgoobWFya2Rv d24tdHMtbW9kZS1pbnN0YWxsLXBhcnNlcnMpOiBOZXcgY29tbWFuZCBmb3IgaW5zdGFsbGluZwpy ZXF1aXJlZCBhbmQgb3B0aW9uYWwgdHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgZ3JhbW1hcnMuCihtYXJr ZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZSk6IE5ldyBtaW5vciBtb2RlIGZvciBjb2Rl CmJsb2NrIGNvbnRleHQuCihtYXJrZG93bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlcikK KG1hcmtkb3duLXRzLS1maW5kLW5leHQtY29kZS1ibG9jay1kZWxpbWl0ZXIpOiBOZXcgaGVscGVy cyBmb3IKbG9jYXRpbmcgZmVuY2VkIGNvZGUgYmxvY2sgZGVsaW1pdGVyIG5vZGVzLgoobWFya2Rv d24tdHMtbW92ZS10by1uZXh0LWNvZGUtYmxvY2spCihtYXJrZG93bi10cy1tb3ZlLXRvLXByZXZp b3VzLWNvZGUtYmxvY2spOiBOZXcgY29tbWFuZHMgZm9yCm5hdmlnYXRpbmcgYmV0d2VlbiBmZW5j ZWQgY29kZSBibG9ja3MuCihtYXJrZG93bi10cy0tdGFibGUtYWJ1dHRpbmctcG9zLCBtYXJrZG93 bi10cy0tdGFibGUtbm9kZS1jZWxsKQoobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93LCBtYXJr ZG93bi10cy0tdGFibGUtcGFyc2UtZXJyb3ItcCk6Ck5ldyBwaXBlIHRhYmxlIG5vZGUgaGVscGVy cy4KKG1hcmtkb3duLXRzLWF0LXRhYmxlLXApOiBOZXcgcHJlZGljYXRlIHJldHVybmluZyBub24t bmlsIHdoZW4KcG9pbnQgaXMgYXQgb3Igd2l0aGluIGEgcGlwZSB0YWJsZS4KKG1hcmtkb3duLXRz LS1lbmFibGUtaW4tdGFibGUtbW9kZSk6IE5ldyBoZWxwZXIgZW5hYmxpbmcKbWFya2Rvd24tdHMt aW4tdGFibGUtbW9kZSBmcm9tIHBvc3QtY29tbWFuZC1ob29rLgoobWFya2Rvd24tdHMtLXRhYmxl LWJvZHktcm93LW5lYXItcG9zKTogTmV3IGhlbHBlciBsb2NhdGluZyB0aGUKbmVhcmVzdCBib2R5 IHJvdyB0byBhIHBvc2l0aW9uLgoobWFya2Rvd24tdHMtLXRhYmxlLWNvbXB1dGUtbm9kZS1jb2x1 bW4pCihtYXJrZG93bi10cy10YWJsZS0tZ290by1jb2x1bW4pOiBOZXcgaGVscGVycyBmb3IgY29s dW1uLWJhc2VkCnRhYmxlIG5hdmlnYXRpb24uCihtYXJrZG93bi10cy0tdGFibGUtYWxpZ25lcnMs IG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIpCihtYXJrZG93bi10cy0tdGFibGUtYWxp Z24tY2VsbCk6IE5ldyB0YWJsZSBjZWxsIGFsaWdubWVudApoZWxwZXJzLgoobWFya2Rvd24tdHMt dGFibGUtaW5zZXJ0LXRhYmxlKTogTmV3IGNvbW1hbmQgdG8gaW5zZXJ0IGEgcGlwZQp0YWJsZSB3 aXRoIGNvbmZpZ3VyYWJsZSByb3dzIGFuZCBjb2x1bW5zLgoobWFya2Rvd24tdHMtdGFibGUtZGVs ZXRlLXRhYmxlKTogTmV3IGNvbW1hbmQgdG8gZGVsZXRlIHRoZSBwaXBlCnRhYmxlIGF0IHBvaW50 LgoobWFya2Rvd24tdHMtdGFibGUtcHJldmlvdXMtcm93LCBtYXJrZG93bi10cy10YWJsZS1uZXh0 LXJvdykKKG1hcmtkb3duLXRzLXRhYmxlLXByZXZpb3VzLWNlbGwsIG1hcmtkb3duLXRzLXRhYmxl LW5leHQtY2VsbCk6Ck5ldyBjb21tYW5kcyBmb3IgbmF2aWdhdGluZyB0YWJsZSByb3dzIGFuZCBj ZWxscy4KKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYmVsb3cpCihtYXJrZG93bi10cy10 YWJsZS1pbnNlcnQtcm93LWFib3ZlKQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWJlbG93 KQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWFib3ZlKQoobWFya2Rvd24tdHMtdGFibGUt aW5zZXJ0LXJvdyk6IE5ldyBjb21tYW5kcyBmb3IgaW5zZXJ0aW5nIGFuZApjbG9uaW5nIHRhYmxl IHJvd3MuCihtYXJrZG93bi10cy10YWJsZS1kZWxldGUtcm93LCBtYXJrZG93bi10cy10YWJsZS1t b3ZlLXJvdy11cCkKKG1hcmtkb3duLXRzLXRhYmxlLW1vdmUtcm93LWRvd24sIG1hcmtkb3duLXRz LXRhYmxlLW1vdmUtcm93KToKTmV3IGNvbW1hbmRzIGZvciBkZWxldGluZyBhbmQgbW92aW5nIHRh YmxlIHJvd3MuCihtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQpCihtYXJrZG93 bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLXJpZ2h0KQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUt Y29sdW1uLWxlZnQpCihtYXJrZG93bi10cy10YWJsZS1jbG9uZS1jb2x1bW4tcmlnaHQpCihtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uKTogTmV3IGNvbW1hbmRzIGZvciBpbnNlcnRpbmcK YW5kIGNsb25pbmcgdGFibGUgY29sdW1ucy4KKG1hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1jb2x1 bW4pCihtYXJrZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbi1sZWZ0KQoobWFya2Rvd24tdHMtdGFi bGUtbW92ZS1jb2x1bW4tcmlnaHQpCihtYXJrZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbik6IE5l dyBjb21tYW5kcyBmb3IgZGVsZXRpbmcgYW5kCm1vdmluZyB0YWJsZSBjb2x1bW5zLgoobWFya2Rv d24tdHMtdGFibGUtYWxpZ24tY29sdW1uLWxlZnQpCihtYXJrZG93bi10cy10YWJsZS1hbGlnbi1j b2x1bW4tY2VudGVyKQoobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uLXJpZ2h0KQoobWFy a2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uKTogTmV3IGNvbW1hbmRzIGZvciBzZXR0aW5nCmNv bHVtbiBhbGlnbm1lbnQuCihtYXJrZG93bi10cy10YWJsZS1hbGlnbi10YWJsZSk6IE5ldyBjb21t YW5kIHRvIGFsaWduIGFsbApjb2x1bW5zIGluIHRoZSB0YWJsZSBhdCBwb2ludC4KKG1hcmtkb3du LXRzLXRhYmxlLXRyYW5zcG9zZS10YWJsZSk6IE5ldyBjb21tYW5kIHRvIHRyYW5zcG9zZQp0aGUg dGFibGUgYXQgcG9pbnQuCihtYXJrZG93bi10cy10YWJsZS1jb252ZXJ0LWNzdi1yZWdpb24pCiht YXJrZG93bi10cy10YWJsZS1jb252ZXJ0LXRzdi1yZWdpb24pCihtYXJrZG93bi10cy10YWJsZS1j b252ZXJ0LXJlZ2lvbik6IE5ldyBjb21tYW5kcyB0byBjb252ZXJ0CmRlbGltaXRlZCB0ZXh0IHJl Z2lvbnMgdG8gcGlwZSB0YWJsZXMuCihtYXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUtY3N2 KQoobWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlLXRzdikKKG1hcmtkb3duLXRzLXRhYmxl LWV4cG9ydC10YWJsZSk6IE5ldyBjb21tYW5kcyB0byBleHBvcnQgdGhlCnBpcGUgdGFibGUgYXQg cG9pbnQgdG8gQ1NWIG9yIFRTViBmb3JtYXQuCihtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlLW1h cCk6IE5ldyBrZXltYXAgZm9yCm1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUuCihtYXJrZG93bi10 cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YpOiBOZXcgYnVmZmVyLWxvY2FsCnZhcmlh YmxlIGZvciBjb2RlIGJsb2NrIGNvbnRleHQgb3ZlcmxheS4KKG1hcmtkb3duLXRzLS1jb2RlLWJs b2NrLWluLWNvbnRleHQtbW9kZS11cGRhdGUtb3YpOiBOZXcKZnVuY3Rpb24gdXBkYXRpbmcgdGhl IGNvZGUgYmxvY2sgY29udGV4dCBvdmVybGF5LgoobWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZSk6 IE5ldyBtaW5vciBtb2RlIGVuYWJsZWQgd2hlbiBwb2ludAppcyB3aXRoaW4gYSBwaXBlIHRhYmxl LCBhY3RpdmF0aW5nIG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbWFwLgoobWFya2Rvd24tdHMt LWluLXRhYmxlLW1vZGUtb3YpCihtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1nZXQtb3YpCiht YXJrZG93bi10cy0tdGFibGUtdGljay11cGRhdGUpCihtYXJrZG93bi10cy0tdGFibGUtdGljay1z dGFsZS1wKQoobWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtdXBkYXRlLW92KTogTmV3IGhlbHBl cnMgc3VwcG9ydGluZwptYXJrZG93bi10cy1pbi10YWJsZS1tb2RlIG92ZXJsYXkgbWFuYWdlbWVu dC4KKG1hcmtkb3duLXRzLXRhYmxlLW1vZGUpOiBOZXcgbWlub3IgbW9kZSBwcm92aWRpbmcgdGFi bGUgZWRpdGluZwpjb21tYW5kcyBhbmQgYXV0by1hbGlnbm1lbnQuCihtYXJrZG93bi10cy1tb2Rl LW1heWJlKTogUmVtb3ZlOyBhdXRvLW1vZGUtYWxpc3Qgbm93IHVzZXMKbWFya2Rvd24tdHMtbW9k ZSBkaXJlY3RseS4KQXV0by1tb2RlLWFsaXN0OiBBZGQgLm1hcmtkb3duIGFuZCAubWR4IGV4dGVu c2lvbnMuCgoqIGxpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbDogTmV3IGZpbGUg cHJvdmlkaW5nIGV4dHJhCmZlYXR1cmVzIGZvciBtYXJrZG93bi10cy1tb2RlLgoobWFya2Rvd24t dHMtY29tbW9ubWFyay1zcGVjLXVybCwgbWFya2Rvd24tdHMtZ2ZtLXNwZWMtdXJsKTogTmV3CmNv bnN0YW50cyBmb3IgQ29tbW9uTWFyayBhbmQgR0ZNIHNwZWNpZmljYXRpb24gVVJMcy4KKG1hcmtk b3duLXRzLWJyb3dzZS1jb21tb25tYXJrLXNwZWMpCihtYXJrZG93bi10cy1icm93c2UtZ2ZtLXNw ZWMpOiBOZXcgY29tbWFuZHMgdG8gYnJvd3NlIHRoZQpDb21tb25NYXJrIGFuZCBHRk0gc3BlY2lm aWNhdGlvbnMuCihtYXJrZG93bi10cy1jb252ZXJ0KTogTmV3IGN1c3RvbWl6YXRpb24gZ3JvdXAg Zm9yIE1hcmtkb3duCmNvbnZlcnNpb24vZXhwb3J0IGZlYXR1cmVzLgoobWFya2Rvd24tdHMtZGVm YXVsdC1jb252ZXJ0ZXIpOiBOZXcgb3B0aW9uIHRvIHNldCB0aGUgZGVmYXVsdApmb3JtYXQgYW5k IGNvbnZlcnRlciBmb3IgTWFya2Rvd24gZXhwb3J0LgoobWFya2Rvd24tdHMtY29udmVydC1kaXNw bGF5LWZ1bmN0aW9uKTogTmV3IG9wdGlvbiBzcGVjaWZ5aW5nCnRoZSBmdW5jdGlvbiB1c2VkIHRv IGRpc3BsYXkgY29udmVydGVkIG91dHB1dC4KKG1hcmtkb3duLXRzLWNvbnZlcnRlcnMpOiBOZXcg dmFyaWFibGUgbGlzdGluZyBmb3JtYXQvY29udmVydGVyCmNvbmZpZ3VyYXRpb25zIGZvciBwYW5k b2MsIGNtYXJrLCBjbWFyay1nZm0sIG1hcmtkb3duLCBhbmQKbWFya2Rvd24ucGwuCihtYXJrZG93 bi10cy1jb252ZXJ0LWZpbGUsIG1hcmtkb3duLXRzLWNvbnZlcnQpOiBOZXcgY29tbWFuZHMgdG8K Y29udmVydCBNYXJrZG93biBidWZmZXJzIG9yIGZpbGVzIHRvIEhUTUwsIFBERiwgYW5kIG90aGVy CmZvcm1hdHMgdmlhIGV4dGVybmFsIGNvbnZlcnRlcnMuCihtYXJrZG93bi10cy10b2MpOiBOZXcg Y3VzdG9taXphdGlvbiBncm91cCBmb3IgdGFibGUgb2YgY29udGVudHMKZmVhdHVyZXMuCihtYXJr ZG93bi10cy10b2MtZ2VuZXJhdGUtd2Fybi1pZi1ub25lKTogTmV3IG9wdGlvbiBjb250cm9sbGlu ZwpiZWhhdmlvciB3aGVuIG5vIFRPQyBpcyBmb3VuZCBkdXJpbmcgZ2VuZXJhdGlvbi4KKG1hcmtk b3duLXRzLXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZS1saWdodGVyKTogTmV3IG9wdGlvbgpm b3IgdGhlIGJlZm9yZS1zYXZlIFRPQyB1cGRhdGUgbWlub3IgbW9kZSBsaWdodGVyIHN0cmluZy4K KG1hcmtkb3duLXRzLXRvYy1zbHVnLWZ1bmN0aW9uKTogTmV3IG9wdGlvbiB0byBzZWxlY3QgdGhl IHNsdWcKYWxnb3JpdGhtIHVzZWQgZm9yIFRPQyBoZWFkaW5nIGFuY2hvcnMuCihtYXJrZG93bi10 cy0tdG9jLWhhbmRsZXMsIG1hcmtkb3duLXRzLS10b2MtaGFuZGxlLWNsYXNzZXMpOiBOZXcKdmFy aWFibGVzIGRlZmluaW5nIFRPQyBoYW5kbGUgdHlwZXMgYW5kIGNsYXNzZXMuCihtYXJrZG93bi10 cy0tdG9jLWV4cGFuZC1jYW5kaWRhdGUtaGFuZGxlcywgbWFya2Rvd24tdHMtLXRvY3MpCihtYXJr ZG93bi10cy0tdG9jcy1zYW5pdHktY2hlY2spCihtYXJrZG93bi10cy0tdG9jLWNvbGxlY3QtY2Fu ZGlkYXRlcykKKG1hcmtkb3duLXRzLS10b2MtbGlzdC1pdGVtLWRlcHRoKQoobWFya2Rvd24tdHMt LXRvYy1hdHhfaGVhZGVyLW5vcm1hbGl6ZSkKKG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxp emVycykKKG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxpemUpOiBOZXcgaW50ZXJuYWwgaGVs cGVycyBmb3IgVE9DCnBhcnNpbmcgYW5kIHRleHQgbm9ybWFsaXphdGlvbi4KKG1hcmtkb3duLXRz LXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZSk6IE5ldyBtaW5vciBtb2RlIHRoYXQKcmVnZW5l cmF0ZXMgdGFibGVzIG9mIGNvbnRlbnRzIGJlZm9yZSBzYXZpbmcuCihtYXJrZG93bi10cy10b2Mt Y2xlYXItYW5kLXJlbW92ZSwgbWFya2Rvd24tdHMtdG9jLWNsZWFyKTogTmV3CmNvbW1hbmRzIHRv IHJlbW92ZSBvciBjbGVhciBUT0MgYm9kaWVzLgoobWFya2Rvd24tdHMtdG9jLWluc2VydC10ZW1w bGF0ZSk6IE5ldyBjb21tYW5kIHRvIGluc2VydCBhIFRPQwp0ZW1wbGF0ZSBhdCBwb2ludC4KKG1h cmtkb3duLXRzLXRvYy1nZW5lcmF0ZSk6IE5ldyBjb21tYW5kIHRvIGdlbmVyYXRlIHRhYmxlcyBv Zgpjb250ZW50cyBpbiB0aGUgY3VycmVudCBidWZmZXIuCgpJbmNsdWRlcyBmaXhlcyBmb3I6IChi dWcjODA2MTMpIChidWcjODA2MjUpIChidWcjODA2OTApCgpDby1hdXRob3JlZC1ieTogU3TDqXBo YW5lIE1hcmtzIDxzaGlwbWludHNAZ21haWwuY29tPgotLS0KIGxpc3AvdGV4dG1vZGVzL21hcmtk b3duLXRzLW1vZGUteC5lbCB8IDExMzQgKysrKysrCiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10 cy1tb2RlLmVsICAgfCA1NDI0ICsrKysrKysrKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNo YW5nZWQsIDYyNzMgaW5zZXJ0aW9ucygrKSwgMjg1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGxpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbAoKZGlmZiAtLWdpdCBh L2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbCBiL2xpc3AvdGV4dG1vZGVzL21h cmtkb3duLXRzLW1vZGUteC5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNzQwNTA3OGFiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3RleHRtb2Rlcy9tYXJrZG93 bi10cy1tb2RlLXguZWwKQEAgLTAsMCArMSwxMTM0IEBACis7OzsgbWFya2Rvd24tdHMtbW9kZS14 LmVsIC0tLSBtYXJrZG93bi10cy1tb2RlIGV4dHJhcyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0OyAt Ki0KKworOzsgQ29weXJpZ2h0IChDKSAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorCis7OyBBdXRob3IgICAgICAgICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1 bGlhdG9AZ21haWwuY29tPgorOzsgICAgICAgICAgICAgICAgICA6IFN0w6lwaGFuZSBNYXJrcyA8 c2hpcG1pbnRzQGdtYWlsLmNvbT4KKzs7IE1haW50YWluZXIgICAgICAgOiBSYWh1bCBNYXJ0aW0g SnVsaWF0byA8cmFodWwuanVsaWF0b0BnbWFpbC5jb20+Cis7OyBDcmVhdGVkICAgICAgICAgIDog QXByaWwgMjAyNgorOzsgVmVyc2lvbiAgICAgICAgICA6IDEuMAorOzsgUGFja2FnZS1SZXF1aXJl cyA6ICgoZW1hY3MgIjMxLjEiKSkKKzs7IEtleXdvcmRzICAgICAgICAgOiBtYXJrZG93biBtZCB0 ZXh0IGVkaXQgbGFuZ3VhZ2VzIHRyZWUtc2l0dGVyCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdOVSBFbWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor OzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNzIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUg PGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1lbnRhcnk6CisKKzs7 OyBDb2RlOgorCisocmVxdWlyZSAnbWFya2Rvd24tdHMtbW9kZSkKKworOzs7IENvbnZlbmllbmNl OgorCisoZGVmY29uc3QgbWFya2Rvd24tdHMtY29tbW9ubWFyay1zcGVjLXVybAorICAiaHR0cHM6 Ly9zcGVjLmNvbW1vbm1hcmsub3JnL2N1cnJlbnQvIikKKworKGRlZmNvbnN0IG1hcmtkb3duLXRz LWdmbS1zcGVjLXVybAorICAiaHR0cHM6Ly9naXRodWIuZ2l0aHViLmNvbS9nZm0vIikKKworKGRl ZnVuIG1hcmtkb3duLXRzLWJyb3dzZS1jb21tb25tYXJrLXNwZWMgKCkKKyAgIkJyb3dzZSB0aGUg Q29tbW9uTWFyayBNYXJrZG93biBzcGVjIGluIGEgd2ViIGJyb3dzZXIuIgorICAoaW50ZXJhY3Rp dmUpCisgIChicm93c2UtdXJsIG1hcmtkb3duLXRzLWNvbW1vbm1hcmstc3BlYy11cmwpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtYnJvd3NlLWdmbS1zcGVjICgpCisgICJCcm93c2UgdGhlIEdpdEh1 YiBGbGF2b3JlZCBNYXJrZG93biBzcGVjIGluIGEgd2ViIGJyb3dzZXIuIgorICAoaW50ZXJhY3Rp dmUpCisgIChicm93c2UtdXJsIG1hcmtkb3duLXRzLWdmbS1zcGVjLXVybCkpCisKKzs7OyBFeHBv cnQgYW5kIHByZXZpZXc6CisKKyhkZWZncm91cCBtYXJrZG93bi10cy1jb252ZXJ0IG5pbAorICAi Q29udmVydCBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycyBvciBmaWxlcy4iCisgIDpwcmVmaXgg Im1hcmtkb3duLXRzLWNvbnZlcnQtIgorICA6Z3JvdXAgJ3RleHQKKyAgOmdyb3VwICdlZGl0aW5n CisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1kZWZhdWx0LWNv bnZlcnRlciBuaWwKKyAgIkRlZmF1bHQgTWFya2Rvd24gZm9ybWF0IGFuZCBjb252ZXJ0ZXIuCitJ ZiBuaWwsIHlvdSB3aWxsIGJlIHByb21wdGVkIGZvciBhIGZvcm1hdCBhbmQgYSBjb252ZXJ0ZXIu CitTZWUgYG1hcmtkb3duLXRzLWNvbnZlcnRlcnMnLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0 IDp0YWcgIlByb21wdCBmb3IgZm9ybWF0IGFuZCBjb252ZXJ0ZXIiIG5pbCkKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIlBERiB2aWEgUGFuZG9jIiAocGRmIC4gcGFuZG9jKSkKKyAgICAg ICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkhUTUwgdmlhIFBhbmRvYyIgKGh0bWwgLiBwYW5kb2Mp KQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgY21hcmsiIChodG1sIC4g Y21hcmspKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgY21hcmstZ2Zt IChHaXRIdWIgYmVsbHMgYW5kIHdoaXN0bGVzKSIgKGh0bWwgLiBjbWFyay1nZm0pKQorICAgICAg ICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgbWFya2Rvd24iIChodG1sIC4gbWFya2Rv d24pKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgbWFya2Rvd24ucGwi IChodG1sIC4gbWFya2Rvd24ucGwpKQorICAgICAgICAgICAgICAgICAoY29ucyAgOnRhZyAiRm9y bWF0IGFuZCBDb252ZXJ0ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sIDp0YWcg IkZvcm1hdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sIDp0YWcgIkNvbnZlcnRl ciIpKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhk ZWZjdXN0b20gbWFya2Rvd24tdHMtY29udmVydC1kaXNwbGF5LWZ1bmN0aW9uICMnZXd3LW9wZW4t ZmlsZQorICAiRnVuY3Rpb24gdG8gZGlzcGxheSBjb252ZXJ0ZWQgTWFya2Rvd24gdGhlIG91dHB1 dCBmaWxlLgorVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudCwgdGhlIGZp bGUgbmFtZS4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJEaXNwbGF5IHVzaW5nIGBl d3cnIiBld3ctb3Blbi1maWxlKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxh eSBpbiBhIGJyb3dzZXIiIGJyb3dzZS11cmwtb2YtZmlsZSkKKyAgICAgICAgICAgICAgICAgKGNv bnN0IDp0YWcgIkRpc3BsYXkgb3V0cHV0IGZpbGUgaW4gYSBidWZmZXIiIGZpbmQtZmlsZS1vdGhl ci13aW5kb3cpCisgICAgICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJPdGhlciBmdW5jdGlv biIpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRl ZmNvbnN0IG1hcmtkb3duLXRzLS1jb252ZXJ0LWVycm9yLWJ1ZmZlcgorICAiKm1hcmtkb3duLXRz LWNvbnZlcnQgZXJyb3JzKiIpCisKKyhkZWZjb25zdCBtYXJrZG93bi10cy0tY29udmVydC1vdXRw dXQtYnVmZmVyCisgICIqbWFya2Rvd24tdHMtY29udmVydCBvdXRwdXQqIikKKworKGRlZnZhciBt YXJrZG93bi10cy1jb252ZXJ0ZXJzCisgIChsaXN0CisgICAoY29ucyAnaHRtbAorICAgICAgICAg KGxpc3QKKyAgICAgICAgICAoY29ucyAncGFuZG9jCisgICAgICAgICAgICAgICAgKGxpc3QgOmNv bW1hbmQgInBhbmRvYyIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5wdXQgJyhmaWxlIHN0ZGlu KQorICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhmaWxlKQorICAgICAgICAgICAgICAg ICAgICAgIDphcmd1bWVudHMtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRh IChpbnB1dC1maWxlIG91dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVu ZCAobGlzdCAiLWYiICJnZm0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICItdCIgImh0bWw1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1z dGFuZGFsb25lIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW8iIG91 dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBpbnB1dC1m aWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkp KSkpKQorICAgICAgICAgIChjb25zICdjbWFyaworICAgICAgICAgICAgICAgIChsaXN0IDpjb21t YW5kICJjbWFyayIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5wdXQgJyhmaWxlIHN0ZGluKQor ICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhzdGRvdXQpCisgICAgICAgICAgICAgICAg ICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEg KGlucHV0LWZpbGUgX291dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVu ZCAobGlzdCAiLXQiICJodG1sIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdo ZW4gaW5wdXQtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGlu cHV0LWZpbGUpKSkpKSkKKyAgICAgICAgICAoY29ucyAnY21hcmstZ2ZtCisgICAgICAgICAgICAg ICAgKGxpc3QgOmNvbW1hbmQgImNtYXJrLWdmbSIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5w dXQgJyhmaWxlIHN0ZGluKQorICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhzdGRvdXQp CisgICAgICAgICAgICAgICAgICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAgICAgICAgICAg ICAgICAgICAgIChsYW1iZGEgKGlucHV0LWZpbGUgX291dHB1dC1maWxlKQorICAgICAgICAgICAg ICAgICAgICAgICAgKGFwcGVuZCAobGlzdCAiLXQiICJodG1sIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBVc2UgR2l0SHViLXN0eWxlIDxwcmUgbGFuZz4gZm9yIGNv ZGUgYmxvY2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWdpdGh1 Yi1wcmUtbGFuZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSW5j bHVkZSByZW1haW5kZXIgb2YgY29kZSBibG9jayBpbmZvCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IHN0cmluZyBpbiBhIHNlcGFyYXRlIGF0dHJpYnV0ZS4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZnVsbC1pbmZvLXN0cmluZyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgVXNlIHN0eWxlIGF0dHJpYnV0 ZXMgdG8gYWxpZ24gdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgY2VsbHMgaW5zdGVhZCBvZiBhbGlnbiBhdHRyaWJ1dGVzLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLS10YWJsZS1wcmVmZXItc3R5bGUtYXR0cmlidXRlcyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5zaW9uIiAiZm9vdG5v dGVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1leHRlbnNpb24i ICJ0YWJsZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5z aW9uIiAic3RyaWtldGhyb3VnaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIi0tZXh0ZW5zaW9uIiAiYXV0b2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICItLWV4dGVuc2lvbiIgInRhZ2ZpbHRlciIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5zaW9uIiAidGFza2xpc3QiKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2hlbiBpbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkpKQorICAgICAgICAgIDs7ICdtYXJr ZG93bi5wbCBpcyB0aGUgc2FtZSBhcyAnbWFya2Rvd24gd2l0aCBhbm90aGVyIGNvbW1vbiBmaWxl CisgICAgICAgICAgOzsgbmFtZS4KKyAgICAgICAgICAoY29ucyAnbWFya2Rvd24ucGwKKyAgICAg ICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAibWFya2Rvd24ucGwiCisgICAgICAgICAgICAgICAg ICAgICAgOmlucHV0ICcoZmlsZSBzdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICA6b3V0cHV0 ICcoc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgIDphcmd1bWVudHMtZnVuY3Rpb24KKyAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmlsZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKGxpc3QgIi0taHRtbDR0YWdzIikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gaW5wdXQtZmlsZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICItLSIgaW5wdXQtZmlsZSkpKSkpKQorICAgICAg ICAgIDs7ICdtYXJrZG93biBpcyB0aGUgc2FtZSBhcyAnbWFya2Rvd24ucGwgd2l0aCBhbm90aGVy IGNvbW1vbiBmaWxlCisgICAgICAgICAgOzsgbmFtZS4KKyAgICAgICAgICAoY29ucyAnbWFya2Rv d24KKyAgICAgICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAibWFya2Rvd24iCisgICAgICAgICAg ICAgICAgICAgICAgOmlucHV0ICcoZmlsZSBzdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICA6 b3V0cHV0ICcoc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgIDphcmd1bWVudHMtZnVuY3Rp b24KKyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmls ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKGxpc3QgIi0taHRtbDR0YWdzIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gaW5wdXQtZmlsZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICItLSIgaW5wdXQtZmlsZSkpKSkpKSkp CisgICAoY29ucyAncGRmCisgICAgICAgICAobGlzdAorICAgICAgICAgIChjb25zICdwYW5kb2MK KyAgICAgICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAicGFuZG9jIgorICAgICAgICAgICAgICAg ICAgICAgIDppbnB1dCAnKGZpbGUgc3RkaW4pCisgICAgICAgICAgICAgICAgICAgICAgOm91dHB1 dCAnKGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAg ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGlucHV0LWZpbGUgb3V0cHV0LWZpbGUpCisgICAg ICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIChsaXN0ICItZiIgImdmbSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi10IiAicGRmIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLW8iIG91dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hlbiBpbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkpKSkpKQorICAiQW4gYWxpc3Qgb2YgZm9ybWF0 L2NvbnZlcnRlciBjb25maWd1cmF0aW9ucy4KK0l0IGlzIGEgdHdvIGxldmVsIGFsaXN0IHdpdGgg dGhlIGZpcnN0IGxldmVsIGJlaW5nIGZvcm1hdCwgZm9yIGV4YW1wbGUKK2BodG1sJyBvciBgcGRm JywgYW5kIHRoZSBzZWNvbmQgYmVpbmcgdGhlIGNvbnZlcnRlciBuYW1lLCBmb3IgZXhhbXBsZQor YHBhbmRvYycuICBBIGNvbnZlcnRlciBjb25maWd1cmF0aW9uIGVudHJ5IGlzIGEgcGxpc3Qgb2Yg dGhlIGZvcm06CisKKyAgXFw9Jyg6Y29tbWFuZCBcImNvbW1hbmQgbmFtZVwiCisgICAgOmlucHV0 IChmaWxlIHN0ZGluKSA7IGFjY2VwdHMgZmlsZSBuYW1lIG9yIHN0ZGluCisgICAgOm91dHB1dCAo c3Rkb3V0KSAgICA7IHByb2R1Y2VzIHN0ZG91dCBvbmx5CisgICAgOmFyZ3VtZW50cy1mdW5jdGlv biA7IGZ1bmN0aW9uOyBlLmcuLAorICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmls ZSkKKyAgICAgICAoYXBwZW5kIChsaXN0IFwiLXRcIiBcImh0bWxcIikKKyAgICAgICAgICAgICAg ICh3aGVuIGlucHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkp CisKK2Bhcmd1bWVudHMtZnVuY3Rpb24nIGlzIHBhc3NlZCB0d28gYXJndW1lbnRzLCBJTlBVVC1G SUxFIGFuZAorT1VUUFVULUZJTEUuICBJZiBJTlBVVC1GSUxFIGlzIG5pbCwgYXNzdW1lIHN0ZGlu LCBvciBpdCBpcyBhCitmdWxseS1xdWFsaWZpZWQgZmlsZSBuYW1lLiAgSWYgT1VUUFVULUZJTEUg aXMgbmlsLCBhc3N1bWUgc3Rkb3V0LCBvciBpdAoraXMgYSBmdWxseS1xdWFsaWZpZWQgZmlsZSBu YW1lLiAgSXQgc2hvdWxkIHJldHVybiBhIGxpc3Qgb2YKK2FyZ3VtZW50cyBzdWl0YWJsZSBmb3Ig YGNhbGwtcHJvY2VzcycuIikKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBtYXJrZG93bi10cy1j b252ZXJ0LWZpbGUgKGlucHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlzcGxheSBvdmVyd3JpdGUgcXVpZXQpCisgICJDb252ZXJ0IE1h cmtkb3duIElOUFVULUZJTEUgdG8gRk9STUFULgorSWYgb3B0aW9uYWwgRElTUExBWSBpcyBub24t bmlsLCBzaG93IHRoZSBvdXRwdXQgZmlsZSBpbiBhIGJ1ZmZlciwgaWYKK3Bvc3NpYmxlLCB1c2lu ZyB0aGUgZnVuY3Rpb24gYG1hcmtkb3duLXRzLWNvbnZlcnQtZGlzcGxheS1mdW5jdGlvbicuCisK K1dpdGggYSBwcmVmaXggYXJndW1lbnQsIERJU1BMQVkgd2lsbCBiZSBub24tbmlsLgorCitPcHRp b25hbCBGT1JNQVQgaXMgYSBmb3JtYXQvY29udmVydGVyIHBhaXIgc3BlY2lmaWVkIGFzIGEgY29u cworXFw9Jyhmb3JtYXQgLiBjb252ZXJ0ZXIpIGZvciBleGFtcGxlIFxcPScoaHRtbCAuIHBhbmRv YykuICBTZWUKK2BtYXJrZG93bi10cy1jb252ZXJ0ZXJzJy4gIElmIG5pbCwgcHJvbXB0IGZvciB0 aGUgZm9ybWF0IGFuZCBjb252ZXJ0ZXIuCisKK0lmIG9wdGlvbmFsIE9WRVJXUklURSBpcyBub24t bmlsLCBzaWxlbnRseSBvdmVyd3JpdGUgT1VUUFVULUZJTEUgaWYgaXQKK2V4aXN0cy4KKworSWYg UVVJRVQgaXMgbm9uLW5pbCwgaW5oaWJpdCBzaG93aW5nIGNvbnZlcnNpb24gd2FybmluZ3Mgb3Ig ZXJyb3JzLgorCitUaGUgZXh0ZXJuYWwgZXhlY3V0YWJsZSBzcGVjaWZpZWQgYnkgYSBjb252ZXJ0 ZXIgbXVzdCBiZSBpbnN0YWxsZWQgYW5kCitmb3VuZDsgc2VlIHRoZSB2YXJpYWJsZSBgZXhlYy1w YXRoJy4iCisgIChpbnRlcmFjdGl2ZSAiZkNvbnZlcnQgTWFya2Rvd24gZmlsZTogIikKKyAgKG1h cmtkb3duLXRzLWNvbnZlcnQgaW5wdXQtZmlsZSBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGRpc3BsYXkgY3VycmVu dC1wcmVmaXgtYXJnKQorICAgICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdGUKKyAgICAgICAg ICAgICAgICAgICAgICAgcXVpZXQpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIG1hcmtkb3du LXRzLWNvbnZlcnQgKCZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0 LWZpbGUgb3V0cHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgZGlz cGxheSBvdmVyd3JpdGUgcXVpZXQpCisgICJDb252ZXJ0IGEgYG1hcmtkb3duLXRzLW1vZGUnIGJ1 ZmZlciBvciBmaWxlIHRvIEZPUk1BVC4KK0NvbnZlcnQgSU5QVVQtRklMRSB0byBPVVRQVVQtRklM RS4KKworSWYgSU5QVVQtRklMRSBpcyBuaWwsIHVzZSB0aGUgY3VycmVudCBidWZmZXIuCisKK0lm IE9VVFBVVC1GSUxFIGlzIG5pbCwgcHJvbXB0IGZvciBhbiBvdXRwdXQgZmlsZS4KKworT3B0aW9u YWwgRk9STUFUIGlzIGEgZm9ybWF0L2NvbnZlcnRlciBwYWlyIHNwZWNpZmllZCBhcyBhIGNvbnMK K1xcPScoZm9ybWF0IC4gY29udmVydGVyKSBmb3IgZXhhbXBsZSBcXD0nKGh0bWwgLiBwYW5kb2Mp LiAgU2VlCitgbWFya2Rvd24tdHMtY29udmVydGVycycuICBJZiBuaWwsIHByb21wdCBmb3IgdGhl IGZvcm1hdCBhbmQgY29udmVydGVyLgorCitJZiBvcHRpb25hbCBESVNQTEFZIGlzIG5vbi1uaWws IHNob3cgdGhlIG91dHB1dCBmaWxlIGluIGEgYnVmZmVyLCBpZgorcG9zc2libGUsIHVzaW5nIHRo ZSBmdW5jdGlvbiBgbWFya2Rvd24tdHMtY29udmVydC1kaXNwbGF5LWZ1bmN0aW9uJy4KKworV2l0 aCBhIHByZWZpeCBhcmd1bWVudCwgRElTUExBWSB3aWxsIGJlIG5vbi1uaWwuCisKK0lmIG9wdGlv bmFsIE9WRVJXUklURSBpcyBub24tbmlsLCBzaWxlbnRseSBvdmVyd3JpdGUgT1VUUFVULUZJTEUg aWYgaXQKK2V4aXN0cy4KKworSWYgUVVJRVQgaXMgbm9uLW5pbCwgaW5oaWJpdCBzaG93aW5nIGNv bnZlcnNpb24gd2FybmluZ3Mgb3IgZXJyb3JzLgorCitUaGUgZXh0ZXJuYWwgZXhlY3V0YWJsZSBz cGVjaWZpZWQgYnkgYSBjb252ZXJ0ZXIgbXVzdCBiZSBpbnN0YWxsZWQgYW5kCitmb3VuZDsgc2Vl IHRoZSB2YXJpYWJsZSBgZXhlYy1wYXRoJy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHdoZW4gKGFu ZCBpbnB1dC1maWxlCisgICAgICAgICAgICAgKGVxdWFsIGJ1ZmZlci1maWxlLW5hbWUgKGV4cGFu ZC1maWxlLW5hbWUgaW5wdXQtZmlsZSkpCisgICAgICAgICAgICAgKGJ1ZmZlci1tb2RpZmllZC1w KSkKKyAgICAod2hlbiAoeWVzLW9yLW5vLXAgIlNhdmUgbW9kaWZpZWQgYnVmZmVyIGJlZm9yZSBj b252ZXJ0aW5nPyAiKQorICAgICAgKHNhdmUtYnVmZmVyKSkpCisgICh1bmxlc3MgaW5wdXQtZmls ZQorICAgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtY29udmVy dCkpCisKKyAgKHNldHEgZGlzcGxheSAob3IgZGlzcGxheSBjdXJyZW50LXByZWZpeC1hcmcpKQor CisgIChsZXQqICgoY29udmVydGVyLWZvcm1hdAorICAgICAgICAgIChvciAoY2FyIGZvcm1hdCkK KyAgICAgICAgICAgICAgKGNhciBtYXJrZG93bi10cy1kZWZhdWx0LWNvbnZlcnRlcikKKyAgICAg ICAgICAgICAgKGludGVybgorICAgICAgICAgICAgICAgKGNvbXBsZXRpbmctcmVhZAorICAgICAg ICAgICAgICAgICJTZWxlY3QgYW4gb3V0cHV0IGZvcm1hdDogIgorICAgICAgICAgICAgICAgICht YXBjYXIgKGxhbWJkYSAoZWx0KSAoc3ltYm9sLW5hbWUgKGNhciBlbHQpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWNvbnZlcnRlcnMpCisgICAgICAgICAgICAgICAgbmls CisgICAgICAgICAgICAgICAgdAorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAg ICdtYXJrZG93bi10cy1jb252ZXJ0ZXItZm9ybWF0KSkpKQorICAgICAgICAgKGNvbnZlcnRlcgor ICAgICAgICAgIChvciAoY2RyIGZvcm1hdCkKKyAgICAgICAgICAgICAgKGNkciBtYXJrZG93bi10 cy1kZWZhdWx0LWNvbnZlcnRlcikKKyAgICAgICAgICAgICAgKGludGVybgorICAgICAgICAgICAg ICAgKGNvbXBsZXRpbmctcmVhZAorICAgICAgICAgICAgICAgICJTZWxlY3QgYSBjb252ZXJ0ZXI6 ICIKKyAgICAgICAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKHN5bWJvbC1uYW1lIChj YXIgZWx0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoYWxpc3QtZ2V0IGNvbnZlcnRlci1m b3JtYXQgbWFya2Rvd24tdHMtY29udmVydGVycykpCisgICAgICAgICAgICAgICAgbmlsCisgICAg ICAgICAgICAgICAgdAorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICdtYXJr ZG93bi10cy1jb252ZXJ0ZXIpKSkpCisgICAgICAgICAoY29uZmlnIChhbGlzdC1nZXQgY29udmVy dGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsaXN0LWdldCBjb252ZXJ0ZXItZm9y bWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1j b252ZXJ0ZXJzKSkpCisgICAgICAgICAoY29tbWFuZCAocGxpc3QtZ2V0IGNvbmZpZyA6Y29tbWFu ZCkpCisgICAgICAgICAoY29tbWFuZC1pbnB1dCAocGxpc3QtZ2V0IGNvbmZpZyA6aW5wdXQpKQor ICAgICAgICAgKGNvbW1hbmQtb3V0cHV0IChwbGlzdC1nZXQgY29uZmlnIDpvdXRwdXQpKQorICAg ICAgICAgKHN0ZGluLW9ubHkgKGVxdWFsIGNvbW1hbmQtaW5wdXQgJyhzdGRpbikpKQorICAgICAg ICAgKHN0ZG91dC1vbmx5IChlcXVhbCBjb21tYW5kLW91dHB1dCAnKHN0ZG91dCkpKSkKKyAgICAo dW5sZXNzIG91dHB1dC1maWxlCisgICAgICAoc2V0cSBvdXRwdXQtZmlsZQorICAgICAgICAgICAg KHJlYWQtZmlsZS1uYW1lICJPdXRwdXQgZmlsZSBuYW1lOiAiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNh dCAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZpbGUtcmVsYXRpdmUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAob3IgaW5wdXQtZmlsZSBidWZmZXItZmlsZS1uYW1lKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzeW1ib2wtbmFtZSBjb252ZXJ0ZXItZm9ybWF0KSkpKQorICAgICAgKHVubGVz cyBvdXRwdXQtZmlsZQorICAgICAgICAodXNlci1lcnJvciAiT3V0cHV0IGZpbGUgbmFtZSBpcyBy ZXF1aXJlZCIpKSkKKyAgICAod2hlbiBvdXRwdXQtZmlsZQorICAgICAgKHdoZW4gKGFuZCAobm90 IG92ZXJ3cml0ZSkKKyAgICAgICAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgb3V0cHV0LWZpbGUp CisgICAgICAgICAgICAgICAgIChub3QgKHllcy1vci1uby1wIChmb3JtYXQgIiVzIGV4aXN0czsg b3ZlcndyaXRlPyIgb3V0cHV0LWZpbGUpKSkpCisgICAgICAgICh1c2VyLWVycm9yICJOb3Qgb3Zl cndyaXRpbmcgZXhpc3RpbmcgZmlsZTogJXMiIG91dHB1dC1maWxlKSkKKyAgICAgIChzZXRxIG91 dHB1dC1maWxlIChleHBhbmQtZmlsZS1uYW1lIG91dHB1dC1maWxlKSkpCisKKworICAgIChsZXQg KChjb21tYW5kLWFyZ3MgKGZ1bmNhbGwgKHBsaXN0LWdldCBjb25maWcgOmFyZ3VtZW50cy1mdW5j dGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIGlucHV0LWZpbGUg KGV4cGFuZC1maWxlLW5hbWUgaW5wdXQtZmlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdXRwdXQtZmlsZSkpKQorICAgICAgKHVubGVzcyAoZXhlY3V0YWJsZS1maW5kIGNv bW1hbmQpCisgICAgICAgICh1c2VyLWVycm9yICJgJXMnIGV4ZWN1dGFibGUgbm90IGZvdW5kIiBj b21tYW5kKSkKKyAgICAgIChsZXQgKChlcnJvci1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tY29udmVydC1lcnJvci1idWZm ZXIpKQorICAgICAgICAgICAgKGVycm9yLXRlbXAtZmlsZSAobWFrZS10ZW1wLWZpbGUgIm1hcmtk b3duLXRzLWNvbnZlcnQtc3RkZXJyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmlsICIubG9nIikpCisgICAgICAgICAgICAoc3Rkb3V0LWJ1ZmZlciAod2hl biBzdGRvdXQtb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0LWJ1ZmZlci1j cmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1jb252ZXJ0 LW91dHB1dC1idWZmZXIpKSkpCisgICAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgICAg KGxldCAoZXhpdC1zdGF0dXMpCisgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGVy cm9yLWJ1ZmZlcgorICAgICAgICAgICAgICAgIChzcGVjaWFsLW1vZGUpCisgICAgICAgICAgICAg ICAgKHNldHEgYnVmZmVyLXJlYWQtb25seSBuaWwpCisgICAgICAgICAgICAgICAgKHdpZGVuKQor ICAgICAgICAgICAgICAgIChlcmFzZS1idWZmZXIpKQorICAgICAgICAgICAgICAod2hlbiBzdGRv dXQtYnVmZmVyCisgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3Rkb3V0LWJ1 ZmZlcgorICAgICAgICAgICAgICAgICAgKHNwZWNpYWwtbW9kZSkKKyAgICAgICAgICAgICAgICAg IChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgbmlsKQorICAgICAgICAgICAgICAgICAgKHdpZGVuKQor ICAgICAgICAgICAgICAgICAgKGVyYXNlLWJ1ZmZlcikpKQorICAgICAgICAgICAgICAoY29uZAor ICAgICAgICAgICAgICAgKChhbmQgaW5wdXQtZmlsZSAobm90IHN0ZGluLW9ubHkpKQorICAgICAg ICAgICAgICAgIChzZXRxIGV4aXQtc3RhdHVzCisgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5 ICMnY2FsbC1wcm9jZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsaXN0IHN0ZG91dC1idWZmZXIgZXJyb3ItdGVtcC1maWxlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC1h cmdzKSkpCisgICAgICAgICAgICAgICAoKGFuZCBpbnB1dC1maWxlIHN0ZGluLW9ubHkpCisgICAg ICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQt ZmlsZS1jb250ZW50cyBpbnB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgKHNldHEgZXhpdC1z dGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2NhbGwtcHJvY2Vzcy1yZWdp b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpc3Qgc3Rkb3V0LWJ1ZmZlciBlcnJvci10ZW1wLWZpbGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tbWFuZC1hcmdzKSkpKQorICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAo d2l0aG91dC1yZXN0cmljdGlvbgorICAgICAgICAgICAgICAgICAgKHNldHEgZXhpdC1zdGF0dXMK KyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2NhbGwtcHJvY2Vzcy1yZWdpb24KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpc3Qgc3Rkb3V0LWJ1ZmZlciBlcnJvci10ZW1wLWZpbGUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t bWFuZC1hcmdzKSkpKSkKKyAgICAgICAgICAgICAgKGxldCAoKGVycm9yLXNpemUgKGZpbGUtYXR0 cmlidXRlLXNpemUgKGZpbGUtYXR0cmlidXRlcyBlcnJvci10ZW1wLWZpbGUpKSkpCisgICAgICAg ICAgICAgICAgKHdoZW4gKGFuZCBlcnJvci1zaXplICg+IGVycm9yLXNpemUgMCkpCisgICAgICAg ICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBlcnJvci1idWZmZXIKKyAgICAgICAgICAg ICAgICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGVycm9yLXRlbXAtZmlsZSkKKyAgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkpKSkKKyAgICAgICAgICAgICAgKGNv bmQgKChlcSAwIGV4aXQtc3RhdHVzKSA7IEludGVnZXIgb3Igc3RyaW5nLgorICAgICAgICAgICAg ICAgICAgICAgKHdoZW4gc3Rkb3V0LWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAod2l0 aC1jdXJyZW50LWJ1ZmZlciBzdGRvdXQtYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAg KHdyaXRlLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSBvdXRwdXQtZmlsZSkpKQorICAg ICAgICAgICAgICAgICAgICAgKHdoZW4gZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAgICAo ZnVuY2FsbCBtYXJrZG93bi10cy1jb252ZXJ0LWRpc3BsYXktZnVuY3Rpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LWZpbGUpKQorICAgICAgICAgICAgICAgICAgICAg KHdoZW4gKGFuZCAobm90IHF1aWV0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bm90ICh6ZXJvcCAoYnVmZmVyLXNpemUgZXJyb3ItYnVmZmVyKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh5ZXMtb3Itbm8tcAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGZvcm1hdC1tZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IkNvbnZlcnNpb24gZmlsZSBgJXMnIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIHdpdGggd2FybmluZ3M7 IGRpc3BsYXkgdGhlbT8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0 LWZpbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXktYnVmZmVyIGVycm9yLWJ1 ZmZlcikpCisgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiQ29udmVyc2lvbiBmaWxlIHN1 Y2Nlc3NmdWxseSBjcmVhdGVkIGAlcyclcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG91dHB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHplcm9wIChi dWZmZXItc2l6ZSBlcnJvci1idWZmZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiB3aXRoIHdh cm5pbmdzOyBzZWUgYnVmZmVyIGAlcyciIGVycm9yLWJ1ZmZlcikpKSkKKyAgICAgICAgICAgICAg ICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgIChpZiBxdWlldAorICAgICAgICAgICAgICAg ICAgICAgICAgIChlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udmVydGVyIGFi b3J0ZWQgd2l0aCBleGl0IGNvZGUgJVM7IHNlZSBidWZmZXIgYCVzJyBmb3IgZXJyb3JzIgorICAg ICAgICAgICAgICAgICAgICAgICAgICBleGl0LXN0YXR1cworICAgICAgICAgICAgICAgICAgICAg ICAgICBtYXJrZG93bi10cy0tY29udmVydC1lcnJvci1idWZmZXIpCisgICAgICAgICAgICAgICAg ICAgICAgICh3aGVuICh5ZXMtb3Itbm8tcCAoZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkNvbnZlcnRlciBhYm9ydGVkIHdpdGggZXhpdCBjb2RlICVT OyBkaXNwbGF5IGVycm9ycz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXhpdC1zdGF0dXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5LWJ1 ZmZlciBlcnJvci1idWZmZXIpKSkpKSkKKyAgICAgICAgICAoZGVsZXRlLWZpbGUgZXJyb3ItdGVt cC1maWxlKSkpKSkpCisKKzs7OyBUYWJsZSBvZiBjb250ZW50czoKKworKGRlZmdyb3VwIG1hcmtk b3duLXRzLXRvYyBuaWwKKyAgIlRhYmxlIG9mIGNvbnRlbnRzIGZvciBgbWFya2Rvd24tdHMtbW9k ZScgYnVmZmVycy4iCisgIDpwcmVmaXggIm1hcmtkb3duLXRzLXRvYy0iCisgIDpncm91cCAndGV4 dAorICA6Z3JvdXAgJ2VkaXRpbmcKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9tIG1h cmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUgJ2luc2VydC10ZW1wbGF0ZQorICAi V2FybiBpZiBubyB0YWJsZXMgd2VyZSBwcm9jZXNzZWQgd2hlbiBjYWxsaW5nIGBtYXJrZG93bi10 cy10b2MtZ2VuZXJhdGUnLgorSWYgbmlsLCBkbyBub3RoaW5nLiAgSWYgdGhlIHN5bWJvbCBgaW5z ZXJ0LXRlbXBsYXRlJyBhbmQKK2BtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUnIHdhcyBjYWxsZWQg aW50ZXJhY3RpdmVseSwgb2ZmZXIgdG8gaW5zZXJ0IGEKK3RlbXBsYXRlIGlmIHRoZXJlIGFyZSBu b25lLiAgSWYgYG5vLXRhYmxlcycsIHdhcm4gd2hlbiB0aGVyZSBhcmUgbm8KK3RhYmxlcyBpbiB0 aGUgYnVmZmVyLiAgYG5vLWFjdGl2ZS10YWJsZXMnLCBpcyB0aGUgc2FtZSBhcyBgbm8tdGFibGVz Jword2l0aCB0aGUgYWRkaXRpb24gb2YgYSB3YXJuaW5nIGlmIHRoZXJlIGFyZSB0YWJsZXMsIGJ1 dCBub25lIGFyZSBhY3RpdmUuIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiTm8gd2Fy bmluZ3MiIG5pbCkKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkluc2VydCBhIHRhYmxl IHRlbXBsYXRlIChpZiBpbnRlcmFjdGl2ZSkiIGluc2VydC10ZW1wbGF0ZSkKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIldhcm4gaWYgbm8gdGFibGVzIHdlcmUgcHJvY2Vzc2VkIiBuby10 YWJsZXMpCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJXYXJuIGlmIG5vIGFjdGl2ZSB0 YWJsZXMgd2VyZSBwcm9jZXNzZWQiIG5vLWFjdGl2ZS10YWJsZXMpKQorICA6dmVyc2lvbiAiMzEu MSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy10 b2MtdXBkYXRlLWJlZm9yZS1zYXZlLW1vZGUtbGlnaHRlciAiIFt0b2Mgb24gc2F2ZV0iCisgICJN aW5vci1tb2RlIFwibGlnaHRlclwiIGZvciBgbWFya2Rvd24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUt c2F2ZS1tb2RlJy4KK05vdGUgdGhlIHNpbmdsZSBzcGFjZSBwcmVmaXguIgorICA6dHlwZSAnKGNo b2ljZSAoY29uc3QgOnRhZyAiRGVmYXVsdCIgIiBbdG9jIG9uIHNhdmVdIikKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIk5vbmUiIG5pbCkKKyAgICAgICAgICAgICAgICAgKHN0cmluZyA6 dGFnICJPdGhlciBzdHJpbmciKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNp b24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtdG9jLXNsdWctZnVuY3Rpb24gIydt YXJrZG93bi10cy0tc2x1Zy1naXRodWIKKyAgIkZ1bmN0aW9uIHRvIGdlbmVyYXRlIE1hcmtkb3du IGhlYWRpbmcgXCJzbHVnc1wiIGluIHRhYmxlcyBvZiBjb250ZW50cy4iCisgIDp0eXBlICcoY2hv aWNlIChjb25zdCA6dGFnICJHaXRIdWIgc2x1ZyIgbWFya2Rvd24tdHMtLXNsdWctZ2l0aHViKQor ICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiUGFuZG9jIHNsdWciIG1hcmtkb3duLXRzLS1z bHVnLXBhbmRvYykKKyAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIDp0YWcgIk90aGVyIGZ1bmN0 aW9uIikpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCiso ZGVmdmFyIG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcworICAnKChoZWFkaW5nIC4gKGgxIGgyIGgz IGg0IGg1IGg2KSkKKyAgICAoc2V0ZXh0IC4gKHNoMSBzaDIpKQorICAgIChpdGVtIC4gKG1pbnVz IHBsdXMgc3RhcikpCisgICAgKG51bWJlcmVkLWl0ZW0gLiAoZG90IHBhcmVuKSkKKyAgICAoY29k ZSAuIChjb2RlKSkpCisgICJNYXAgaGlnaCBsZXZlbCBub2RlIGhhbmRsZXMgdG8gdGhlaXIgYmFz ZSBjb25zdGl0dWVudHMuCitUaGUgc3BlY2lhbCBzeW1ib2wgYGFsbCcgbWVhbnMgYWxsIGhhbmRs ZXMuIikKKworKGRlZnZhciBtYXJrZG93bi10cy0tdG9jLWhhbmRsZS1jbGFzc2VzCisgIChsZXQg KCh4KSkKKyAgICAoZG9saXN0IChlbHQgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzKQorICAgICAg KGRvbGlzdCAodmFsIChjZHIgZWx0KSkKKyAgICAgICAgKHB1c2ggYCgsdmFsIC4gLChjYXIgZWx0 KSkgeCkpKQorICAgIHgpCisiSW52ZXJzZSBvZiBgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzJy4i KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRvYy1leHBhbmQtY2FuZGlkYXRlLWhhbmRsZXMgKGhh bmRsZXMpCisgICJFeHBhbmQgY2FuZGlkYXRlIEhBTkRMRVMgYW5kIGtlZXAgb25seSBiYXNlIGhh bmRsZXMuCitTZWUgYG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcycuIgorICAobGV0ICgoZXhwYW5k ZWQgKG1ha2UtaGFzaC10YWJsZSkpCisgICAgICAgIChyZXMpKQorICAgICh1bmxlc3MgKGxpc3Rw IGhhbmRsZXMpCisgICAgICAoc2V0cSBoYW5kbGVzIChsaXN0IGhhbmRsZXMpKSkKKyAgICAod2hl biAoZXF1YWwgaGFuZGxlcyAnKGFsbCkpCisgICAgICAoc2V0cSBoYW5kbGVzIChtYXBjYXIgIydj YXIgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzKSkpCisgICAgKGRvbGlzdCAoZWx0IGhhbmRsZXMp CisgICAgICAoc2V0cSBlbHQgKGFsaXN0LWdldCBlbHQgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVz IGVsdCkpCisgICAgICAoY29uZCAoKGNvbnNwIGVsdCkKKyAgICAgICAgICAgICAoZG9saXN0IChr IGVsdCkgKHB1dGhhc2ggayB0IGV4cGFuZGVkKSkpCisgICAgICAgICAgICAodCAocHV0aGFzaCBl bHQgdCBleHBhbmRlZCkpKSkKKyAgICAobWFwaGFzaCAobGFtYmRhIChrIF92KSAocHVzaCBrIHJl cykpIGV4cGFuZGVkKQorICAgIHJlcykpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdG9jcyAoJm9w dGlvbmFsIGJlZyBlbmQpCisgICJTY2FuIHRoZSBjdXJyZW50IGJ1ZmZlciBmb3IgdG9jIGVudHJp ZXMgZnJvbSBCRUcgdG8gRU5ELgorSWYgQkVHIGlzIG5pbCwgdXNlIGBwb2ludC1taW4nLiAgSWYg RU5EIGlzIG5pbCwgdXNlIGBwb2ludC1tYXgnLgorCitSZXR1cm4gYW4gYWxpc3Qgb2YgdGhlIGZv cm06CisgIFxcPScoKGtleXdvcmQgKG5vZGUgYmVnIGVuZCB2YXJzKSkpCisKK1ZhcnMgYXJlIGV4 cGFuZGVkIHZpYSBgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lJy4KKworUmV0dXJuIHRo ZSBsaXN0IGluIHRoZSBvcmRlciBvZiBhcHBlYXJhbmNlIGluIHRoZSBidWZmZXIuIgorICA7OyBO T1RFOiBUaGlzIHNjYW5zIGFsbCBtYXRjaGluZyBub2RlcyBiZWxvdyBCRUcgd2l0aCBubyBtYXhp bXVtIGNvdW50CisgIDs7IGV2ZW4gd2hlbiB3ZSB3YW50IG9ubHkgYSBzaW5nbGUgbmV4dCBtYXRj aGluZyBpdGVtLiAgUGVyaGFwcworICA7OyBgdHJlZXNpdC1xdWVyeS1jYXB0dXJlJyBjb3VsZCBi ZSBpbXByb3ZlZCB0byBhY2NlcHQgYSBtYXgtY291bnQKKyAgOzsgYXJndW1lbnQuCisgIDs7Cisg IDs7IE1hdGNoICJtYXJrZG93bi10cy10b2M6IiwgIm1hcmtkb3duLXRzLXRvYy1hYmMxMjM6IiBi dXQgbm90CisgIDs7ICJtYXJrZG93bi10cy10b2N4eHg6Ii4KKyAgKGxldCAoKHJlcykpCisgICAg KGRvbGlzdCAobm9kZQorICAgICAgICAgICAgICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAg ICAgICAgICAgJ21hcmtkb3duCisgICAgICAgICAgICAgICcoKCgoaHRtbF9ibG9jaykgQG1hcmtk b3duLXRzLXRvYykKKyAgICAgICAgICAgICAgICAgKDptYXRjaCAiPCEtLVtbOmJsYW5rOl1dKm1h cmtkb3duLXRzLXRvY1xcKC1bWzphbG51bTpdXStcXCkqOiIgQG1hcmtkb3duLXRzLXRvYykpKQor ICAgICAgICAgICAgICAob3IgYmVnIChwb2ludC1taW4pKQorICAgICAgICAgICAgICAob3IgZW5k IChwb2ludC1tYXgpKQorICAgICAgICAgICAgICAnbm9kZS1vbmx5KSkKKyAgICAgIChsZXQqICgo cyAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSAnbm8tcHJvcGVydHkpKQorICAgICAgICAgICAgICht YXRjaCAoc3RyaW5nLW1hdGNoICJcXChtYXJrZG93bi10cy10b2NcXCgtW1s6YWxudW06XV0rXFwp KlxcKTouKiIgcykpCisgICAgICAgICAgICAgKGtleXdvcmQgKHdoZW4gbWF0Y2ggKG1hdGNoLXN0 cmluZyAxIHMpKSkpCisgICAgICAgIChsZXQgKCh2YXJzKSkKKyAgICAgICAgICAod2l0aC13b3Jr LWJ1ZmZlcgorICAgICAgICAgICAgKGluc2VydCBzKQorICAgICAgICAgICAgKHNldHEgdmFycyAo aGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lKSkpCisgICAgICAgICAgKHB1c2gKKyAgICAg ICAgICAgYCgsa2V5d29yZAorICAgICAgICAgICAgIChub2RlIC4gLG5vZGUpCisgICAgICAgICAg ICAgKGJlZyAuICwodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgIChlbmQg LiAsKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAgICAgKHZhcnMgLiAsdmFycykp CisgICAgICAgICAgIHJlcykpKSkKKyAgICAobnJldmVyc2UgcmVzKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tdG9jcy1zYW5pdHktY2hlY2sgKHRvY3MpCisgICJTYW5pdHkgY2hlY2sgVE9DUyBm b3IgcGFpcmVkIG1hcmtkb3duLXRzLXRvYzogbWFya2Rvd24tdHMtdG9jLWVuZDogbm9kZXMuCitT aWduYWwgYW4gZXJyb3IgaWYgVE9DUyBhcmUgaW5zYW5lLgorU2VlIGBtYXJrZG93bi10cy0tdG9j cycuIgorICAoc2VxLW1hcC1pbmRleGVkCisgICAobGFtYmRhIChlbHQgaWR4KQorICAgICAod2hl biAoZXF1YWwgIm1hcmtkb3duLXRzLXRvYyIgKGNhciBlbHQpKQorICAgICAgICh1bmxlc3MgKGVx dWFsICJtYXJrZG93bi10cy10b2MtZW5kIiAoY2FyIChudGggKDErIGlkeCkgdG9jcykpKQorICAg ICAgICAgKHVzZXItZXJyb3IKKyAgICAgICAgICAiXCJtYXJrZG93bi10cy10b2NcIiBhdCBwb3Np dGlvbiAlZCBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgbWF0Y2hpbmcgXCJtYXJrZG93bi10cy10b2Mt ZW5kXCIiCisgICAgICAgICAgKGFsaXN0LWdldCAnYmVnIGVsdCkpKSkpCisgICB0b2NzKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLS10b2MtY29sbGVjdC1jYW5kaWRhdGVzICh0b2Mtc3RhcnQtbm9k ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2MtZW5kLW5v ZGUgaGFuZGxlcyBmcm9tKQorICAiUmV0dXJuIGFuIGFsaXN0IG9mIHRvYyBlbnRyeSBjYW5kaWRh dGVzIGZyb20gdGhlIGN1cnJlbnQgYnVmZmVyLgorSEFORExFUyBpcyBhIGxpc3Qgb2YgYmFzZSBo YW5kbGVzOyBzZWUgYG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcycuCisKK1RPQy1TVEFSVC1OT0RF IGlzIHRoZSBcIm1hcmtkb3duLXRzLXRvYy1zdGFydFwiIG5vZGUuCitUT0MtRU5ELU5PREUgaXMg dGhlIFwibWFya2Rvd24tdHMtdG9jLWVuZFwiIG5vZGUuCisKK0lmIEZST00gaXMgdGhlIHN5bWJv bCBgYWJvdmUnLCBzb3VyY2UgY2FuZGlkYXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKK3RoZSBi dWZmZXIgdW50aWwgdGhlIHRvYyBzdGFydCBub2RlLiAgSWYgYGJlbG93Jywgc291cmNlIGNhbmRp ZGF0ZXMgZnJvbQordG9jIHN0YXJ0IG5vZGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAg SWYgYGFsbCcsIHVzZSB0aGUgd2hvbGUKK2J1ZmZlci4KKworUmVtb3ZlIGlnbm9yZWQgY2FuZGlk YXRlcyBjb250YWluaW5nIFwiPCEtLSBtYXJrZG93bi10cy1pZ25vcmU6IC0tPlwiLgorCitTb3J0 IHRoZSBsaXN0IGJ5IHRoZSBzdGFydGluZyBjaGFyYWN0ZXIgcG9zaXRpb25zIG9mIG5vZGVzLgor CitUaGUgYWxpc3QgaXMgb2YgdGhlIGZvcm06CisgIFxcPScoKGhhbmRsZSAuIG5vZGUpKSIKKyAg KGxldCAoY2FuZGlkYXRlcyBiZWcgZW5kKQorICAgIChwY2FzZSBmcm9tCisgICAgICAoJ2Fib3Zl CisgICAgICAgKHNldHEgYmVnIChwb2ludC1taW4pKQorICAgICAgIChzZXRxIGVuZCAodHJlZXNp dC1ub2RlLXN0YXJ0IHRvYy1zdGFydC1ub2RlKSkpCisgICAgICAoJ2JlbG93CisgICAgICAgKHNl dHEgYmVnICh0cmVlc2l0LW5vZGUtZW5kIHRvYy1lbmQtbm9kZSkpCisgICAgICAgKHNldHEgZW5k IChwb2ludC1tYXgpKSkKKyAgICAgICgnYWxsCisgICAgICAgKHNldHEgYmVnIChwb2ludC1taW4p KQorICAgICAgIChzZXRxIGVuZCAocG9pbnQtbWF4KSkpKQorCisgICAgOzsgSXQgbG9va3MgbGlr ZSB3ZSBjYW5ub3QgZ2V0IHRoZW0gaW4gb25lIGZlbGwgc3dvb3AuCisgICAgKGRvbGlzdCAoZWx0 IGhhbmRsZXMpCisgICAgICAoc2V0cQorICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAoYXBwZW5k CisgICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAgKHBjYXNlIGVsdAorICAgICAgICAgICgnaDEg KHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChhdHhf aGVhZGluZyAoYXR4X2gxX21hcmtlcikgKGlubGluZSkgQGgxKSkgYmVnIGVuZCkpCisgICAgICAg ICAgKCdoMiAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisgICAgICAgICAgICAgICAgJ21hcmtkb3du ICcoKGF0eF9oZWFkaW5nIChhdHhfaDJfbWFya2VyKSAoaW5saW5lKSBAaDIpKSBiZWcgZW5kKSkK KyAgICAgICAgICAoJ2gzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAn bWFya2Rvd24gJygoYXR4X2hlYWRpbmcgKGF0eF9oM19tYXJrZXIpIChpbmxpbmUpIEBoMykpIGJl ZyBlbmQpKQorICAgICAgICAgICgnaDQgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAg ICAgICAgICdtYXJrZG93biAnKChhdHhfaGVhZGluZyAoYXR4X2g0X21hcmtlcikgKGlubGluZSkg QGg0KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdoNSAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisg ICAgICAgICAgICAgICAgJ21hcmtkb3duICcoKGF0eF9oZWFkaW5nIChhdHhfaDVfbWFya2VyKSAo aW5saW5lKSBAaDUpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ2g2ICh0cmVlc2l0LXF1ZXJ5LWNh cHR1cmUKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygoYXR4X2hlYWRpbmcgKGF0eF9oNl9t YXJrZXIpIChpbmxpbmUpIEBoNikpIGJlZyBlbmQpKQorICAgICAgICAgICgnc2gxICh0cmVlc2l0 LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgJ21hcmtkb3duICcoKHNldGV4dF9oZWFk aW5nIGhlYWRpbmdfY29udGVudDogKF8pIEBzaDEgKHNldGV4dF9oMV91bmRlcmxpbmUpKSkgYmVn IGVuZCkpCisgICAgICAgICAgKCdzaDIgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAg ICAgICAgICAnbWFya2Rvd24gJygoc2V0ZXh0X2hlYWRpbmcgaGVhZGluZ19jb250ZW50OiAoXykg QHNoMiAoc2V0ZXh0X2gyX3VuZGVybGluZSkpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ21pbnVz ICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygo bGlzdF9pdGVtIChsaXN0X21hcmtlcl9taW51cykgKHBhcmFncmFwaCAoaW5saW5lKSBAbWludXMp KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdwbHVzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAg ICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BsdXMp IChwYXJhZ3JhcGggKGlubGluZSkgQHBsdXMpKSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdzdGFy ICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChs aXN0X2l0ZW0gKGxpc3RfbWFya2VyX3N0YXIpIChwYXJhZ3JhcGggKGlubGluZSkgQHN0YXIpKSkg YmVnIGVuZCkpCisgICAgICAgICAgKCdkb3QgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAg ICAgICAgICAgICAnbWFya2Rvd24gJygobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3QpIChwYXJh Z3JhcGggKGlubGluZSkgQGRvdCkpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ3BhcmVuICh0cmVl c2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygobGlzdF9p dGVtIChsaXN0X21hcmtlcl9wYXJlbnRoZXNpcykgKHBhcmFncmFwaCAoaW5saW5lKSBAcGFyZW4p KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdjb2RlICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAg ICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChmZW5jZWRfY29kZV9ibG9jayAoaW5mb19zdHJp bmcgKGxhbmd1YWdlKSkgQGNvZGUpKSBiZWcgZW5kKSkpKSkpCisgICAgKHNvcnQKKyAgICAgKHNl cS1yZW1vdmUKKyAgICAgIChsYW1iZGEgKGVsdCkKKyAgICAgICAgKHN0cmluZy1tYXRjaC1wICI8 IS0tW1s6Ymxhbms6XV0qbWFya2Rvd24tdHMtaWdub3JlOltbOmJsYW5rOl1dKi0tPiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCAoY2RyIGVsdCkgdCkpKQorICAg ICAgY2FuZGlkYXRlcykKKyAgICAgOmtleSAobGFtYmRhIChlbHQpCisgICAgICAgICAgICAodHJl ZXNpdC1ub2RlLXN0YXJ0IChjZHIgZWx0KSkpCisgICAgIDpsZXNzcCAjJzwKKyAgICAgOmluLXBs YWNlIHQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10b2MtbGlzdC1pdGVtLWRlcHRoIChub2Rl KQorICAiUmV0dXJuIE5PREUncyBpdGVtIGRlcHRoIHJlbGF0aXZlIHRvIGl0cyBwcmVkZWNlc3Nv cnMuCitJZiBOT0RFIGlzIG5vdCBwYXJ0IG9mIGEgbGlzdCwgcmV0dXJuIG5pbC4iCisgICAgKGxl dCAoKGRlcHRoIG5pbCkgKG4gKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpKQorICAgICAgKHdo aWxlIG4KKyAgICAgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAibGlzdCIp CisgICAgICAgICAgKHNldHEgZGVwdGggKDErIChvciBkZXB0aCAwKSkpKQorICAgICAgICAoc2V0 cSBuICh0cmVlc2l0LW5vZGUtcGFyZW50IG4pKSkKKyAgICAgIGRlcHRoKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUgKHRleHQpCisgICJSZW1vdmUgdHJh aWxpbmcgIyBmcm9tIFRFWFQgdW5sZXNzIHRoZXkgYXJlIGJhY2tzbGFzaCBlc2NhcGVkLgorRmly c3QgcmVtb3ZlIEhUTUwgY29tbWVudHMuIgorICAoaWYgKHN0cmluZy1tYXRjaC1wICJbWzpibGFu azpdXSpcXFxcKyMrW1s6Ymxhbms6XV0qXG4qXFwnIiB0ZXh0KQorICAgICAgdGV4dAorICAgIChy ZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIltbOmJsYW5rOl1dKiMrW1s6Ymxhbms6XV0qXG4qXFwn IiAiIiB0ZXh0KSkpCisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtLXRvYy10ZXh0LW5vcm1hbGl6ZXJz CisgIGAoKGhlYWRpbmcgLiBtYXJrZG93bi10cy0tdG9jLWF0eF9oZWFkZXItbm9ybWFsaXplKQor ICAgIChoMSAuIG1hcmtkb3duLXRzLS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUpCisgICAgKGgy IC4gbWFya2Rvd24tdHMtLXRvYy1hdHhfaGVhZGVyLW5vcm1hbGl6ZSkKKyAgICAoaDMgLiBtYXJr ZG93bi10cy0tdG9jLWF0eF9oZWFkZXItbm9ybWFsaXplKQorICAgIChoNCAuIG1hcmtkb3duLXRz LS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUpCisgICAgKGg1IC4gbWFya2Rvd24tdHMtLXRvYy1h dHhfaGVhZGVyLW5vcm1hbGl6ZSkKKyAgICAoaDYgLiBtYXJrZG93bi10cy0tdG9jLWF0eF9oZWFk ZXItbm9ybWFsaXplKSkKKyAgIk1hcCBub2RlIHR5cGUgaGFuZGxlcyB0byBmdW5jdGlvbnMgdGhh dCBub3JtYWxpemUgaXRzIHRleHQuCitTZWUgYG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxp emUnLgorRWFjaCBmdW5jdGlvbiBhY2NlcHRzIG9uZSBhcmd1bWVudCwgdGhlIHN0cmluZyBURVhU LCBhbmQgcmV0dXJucyBhIHN0cmluZy4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRvYy10ZXh0 LW5vcm1hbGl6ZSAoaGFuZGxlIG5vZGUgJm9wdGlvbmFsIHRleHQpCisgICJOb3JtYWxpemUgTk9E RSdzIFRFWFQgYWNjb3JkaW5nIHRvIGl0cyBIQU5ETEUuCitURVhUIHNob3VsZCBoYXZlIG5vIHRl eHQgcHJvcGVydGllcy4gIElmIFRFWFQgaXMgbmlsLCB1c2UgdGhlIE5PREUncwordGV4dC4gIFRo aXMgaXMgbm90IGFsd2F5cyBjb3JyZWN0IHNvIGl0J3MgYmVzdCB0byBwYXNzIFRFWFQgaWYgeW91 IGtub3cKK2l0IGluIHRoZSBjYWxsaW5nIGNvbnRleHQuCisKK0lmIG5vIG5vcm1hbGl6ZXIgaXMg Zm91bmQsIHJldHVybiBURVhULgorCitPbmUgZXhhbXBsZSBub3JtYWxpemF0aW9uIGlzIGF0eF9o ZWFkaW5nIHRleHQgdGhhdCBlbmRzIGluIHRyYWlsaW5nIGhhc2gKK3NpZ25zIHdoaWNoIGFyZSBp bnRlbmRlZCB0byBiZSBlbGlkZWQgc28gXCJIZWFkaW5nIFRleHQgIyNcIiBpcwordHJhbnNmb3Jt ZWQgaW50byBcIkhlYWRpbmcgVGV4dFwiLiIKKyAgKHNldHEgdGV4dCAob3IgdGV4dCAodHJlZXNp dC1ub2RlLXRleHQgbm9kZSAnbm8tcHJvcGVydHkpKSkKKyAgKGlmLWxldCogKChmaXhlciAoYWxp c3QtZ2V0IGhhbmRsZSBtYXJrZG93bi10cy0tdG9jLXRleHQtbm9ybWFsaXplcnMpKSkKKyAgICAg IChmdW5jYWxsIGZpeGVyIHRleHQpCisgICAgdGV4dCkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVm aW5lLW1pbm9yLW1vZGUgbWFya2Rvd24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUtc2F2ZS1tb2RlCisg ICJJZiBlbmFibGVkLCB1cGRhdGUgYG1hcmtkb3duLXRzLW1vZGUnIHRhYmxlcyBvZiBjb250ZW50 cyBiZWZvcmUgc2F2aW5nLiIKKyAgOmluaXQtdmFsdWUgbmlsCisgIDpnbG9iYWwgbmlsCisgIDps aWdodGVyIG1hcmtkb3duLXRzLXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZS1saWdodGVyCisg IChpZiAoZGVyaXZlZC1tb2RlLXAgJ21hcmtkb3duLXRzLW1vZGUpCisgICAgICAoaWYgbWFya2Rv d24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUtc2F2ZS1tb2RlCisgICAgICAgICAgKGFkZC1ob29rICdi ZWZvcmUtc2F2ZS1ob29rICMnbWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlIG5pbCAnbG9jYWwpCisg ICAgICAgIChyZW1vdmUtaG9vayAnYmVmb3JlLXNhdmUtaG9vayAjJ21hcmtkb3duLXRzLXRvYy1n ZW5lcmF0ZSAnbG9jYWwpKQorICAgIChzZXRxIG1hcmtkb3duLXRzLXRvYy11cGRhdGUtYmVmb3Jl LXNhdmUtbW9kZSBuaWwpCisgICAgKGx3YXJuICdtYXJrZG93bi10cy10b2MtdXBkYXRlLWJlZm9y ZS1zYXZlLW1vZGUKKyAgICAgICAgICAgOndhcm5pbmcKKyAgICAgICAgICAgIk1pbm9yIG1vZGUg dmFsaWQgb25seSBpbiBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycy4iKSkpCisKKzs7OyMjI2F1 dG9sb2FkCisoZGVmdW4gbWFya2Rvd24tdHMtdG9jLWNsZWFyLWFuZC1yZW1vdmUgKCZvcHRpb25h bCBiZWcgZW5kKQorICAiUmVtb3ZlIGBtYXJrZG93bi10cy1tb2RlJyB0YWJsZSBvZiBjb250ZW50 cyBib2RpZXMgYW5kIHRlbXBsYXRlcy4KK09wZXJhdGUgb24gdGhlIGFjdGl2ZSByZWdpb24gQkVH IHRvIEVORCwgb3RoZXJ3aXNlIG9wZXJhdGUgb24gdGhlCitidWZmZXIsIHdoaWNoIG1heSBiZSBu YXJyb3dlZC4iCisgIChpbnRlcmFjdGl2ZSAiUiIpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1u b3QtbW9kZSAnbWFya2Rvd24tdHMtdG9jLWNsZWFyLWFuZC1yZW1vdmUpCisgIChtYXJrZG93bi10 cy10b2MtY2xlYXIgYmVnIGVuZCAncmVtb3ZlKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBt YXJrZG93bi10cy10b2MtY2xlYXIgKCZvcHRpb25hbCBiZWcgZW5kIHJlbW92ZSkKKyAgIkNsZWFy IGBtYXJrZG93bi10cy1tb2RlJyB0YWJsZSBvZiBjb250ZW50cyBib2RpZXMuCitPcGVyYXRlIG9u IHRoZSBhY3RpdmUgcmVnaW9uIEJFRyB0byBFTkQsIG90aGVyd2lzZSBvcGVyYXRlIG9uIHRoZQor YnVmZmVyLCB3aGljaCBtYXkgYmUgbmFycm93ZWQuCitJZiBvcHRpb25hbCBSRU1PVkUgaXMgbm9u LW5pbCwgcmVtb3ZlIHRhYmxlcyBpbmNsdWRpbmcgdGhlaXIgdGVtcGxhdGVzLiIKKyAgKGludGVy YWN0aXZlICJSIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10 cy10b2MtY2xlYXIpCisgIChzZXRxIGJlZyAob3IgYmVnIChwb2ludC1taW4pKSkKKyAgKHNldHEg ZW5kIChvciBlbmQgKHBvaW50LW1heCkpKQorICAodW5sZXNzIChlcSBiZWcgZW5kKQorICAgIDs7 IENvbnZlcnQgbWFya2VycyB0byBhYnNvbHV0ZSBwb3NpdGlvbnMuCisgICAgKHNldHEgYmVnIChp ZiAobWFya2VycCBiZWcpIChtYXJrZXItcG9zaXRpb24gYmVnKSBiZWcpKQorICAgIChzZXRxIGVu ZCAoaWYgKG1hcmtlcnAgZW5kKSAobWFya2VyLXBvc2l0aW9uIGVuZCkgZW5kKSkKKyAgICA7OyBO T1RFOiBPcGVyYXRlIG9uIHRoZSB3aWRlbmVkIGJ1ZmZlciB0byBhdm9pZCB0cmVlc2l0ZXIgY3Jh c2ggaXNzdWVzLgorICAgICh3aXRob3V0LXJlc3RyaWN0aW9uCisgICAgICAobGV0ICgodG9jcykK KyAgICAgICAgICAgIChiZWctcG9zIGJlZykKKyAgICAgICAgICAgIChlbmQtcG9zIGVuZCkpCisg ICAgICAgIDs7IFdlIHNjYW4gZWFjaCBwYXNzIGJlY2F1c2UgdGhlaXIgcG9zaXRpb25zIGNoYW5n ZS4KKyAgICAgICAgKHdoaWxlIChhbmQgKDwgYmVnLXBvcyBlbmQtcG9zKQorICAgICAgICAgICAg ICAgICAgICAoc2V0cSB0b2NzIChtYXJrZG93bi10cy0tdG9jcyBiZWctcG9zIGVuZC1wb3MpKSkK KyAgICAgICAgICAobWFya2Rvd24tdHMtLXRvY3Mtc2FuaXR5LWNoZWNrIHRvY3MpCisgICAgICAg ICAgOzsgQWZ0ZXIgc2FuaXR5IGNoZWNraW5nLCB3ZSBrbm93IHRoZSBzZWNvbmQgZWxlbWVudCBp cyBhCisgICAgICAgICAgOzsgdG9jLWVuZC4KKyAgICAgICAgICAobGV0KiAoKHRvYyAobnRoIDAg dG9jcykpCisgICAgICAgICAgICAgICAgICh0b2MtZW5kIChudGggMSB0b2NzKSkKKyAgICAgICAg ICAgICAgICAgKHJlZy1iZWcgKGlmIHJlbW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGFsaXN0LWdldCAnYmVnIHRvYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxp c3QtZ2V0ICdlbmQgdG9jKSkpCisgICAgICAgICAgICAgICAgIChyZWctZW5kIChpZiByZW1vdmUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC1nZXQgJ2VuZCB0b2MtZW5kKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC1nZXQgJ2JlZyB0b2MtZW5kKSkpCisg ICAgICAgICAgICAgICAgIChyZWctc2l6ZSAoLSByZWctZW5kIHJlZy1iZWcpKSkKKyAgICAgICAg ICAgIChkZWxldGUtcmVnaW9uIHJlZy1iZWcgcmVnLWVuZCkKKyAgICAgICAgICAgIDs7IFN0YXJ0 IHRoZSBuZXh0IHBhc3MgYWZ0ZXIgdGhpcyB0b2MtZW5kLiAgQWRqdXN0IGZvciB0aGUKKyAgICAg ICAgICAgIDs7IGRlbGV0ZWQgcmVnaW9uLgorICAgICAgICAgICAgKHNldHEgYmVnLXBvcyAoLSAo YWxpc3QtZ2V0ICdlbmQgdG9jLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn LXNpemUpKQorICAgICAgICAgICAgKHNldHEgZW5kLXBvcyAobWluIChwb2ludC1tYXgpICgtIGVu ZC1wb3MgcmVnLXNpemUpKSkpKSkpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBtYXJrZG93 bi10cy10b2MtaW5zZXJ0LXRlbXBsYXRlICgmb3B0aW9uYWwgY2hhcikKKyAgIkluc2VydCBhIGBt YXJrZG93bi10cy1tb2RlYCB0YWJsZSBvZiBjb250ZW50cyB0ZW1wbGF0ZSBhdCBwb2ludC4KKwor Q0hBUiBpcyB0aGUgdGVtcGxhdGUgdHlwZSBcImJcIiBmb3IgYmFzaWMsIFwiY1wiIGZvciBjb21w bGV0ZS4gIElmIENIQVIKK2lzIG5pbCBhbmQgdGhlIGNvbW1hbmQgaXMgcnVuIGludGVyYWN0aXZl bHksIHByb21wdCBmb3IgYSB0ZW1wbGF0ZS4KKworVGhlIGJhc2ljIHRlbXBsYXRlIHVzZXMgYWxs IGRlZmF1bHRzIGFuZCBpcyBsaWtlbHkgdGhlIGJlc3QgY2hvaWNlIGZvcgorbW9zdCB1c2VzLiAg VGhlIGNvbXBsZXRlIHRlbXBsYXRlIGlsbHVzdHJhdGVzIGFsbCBwYXJhbWV0ZXJzIHNldCB0bwor dGhlaXIgZGVmYXVsdHMgYW5kIGlzIHVzZWZ1bCBhcyBhIHN0YXJ0aW5nIHBvaW50IHRvIGN1c3Rv bWl6ZSBhIHRhYmxlLiIKKyAgKGludGVyYWN0aXZlICJjVGVtcGxhdGUgW2JdYXNpYyBbY11vbXBs ZXRlOiIpCisgIChwY2FzZSBjaGFyCisgICAgKD9iCisgICAgIChpbnNlcnQgIjwhLS0gbWFya2Rv d24tdHMtdG9jOiAtLT5cbiIKKyAgICAgICAgICAgICAiPCEtLSBtYXJrZG93bi10cy10b2MtZW5k OiAtLT5cbiIpKQorICAgICg/YworICAgICAoaW5zZXJ0ICI8IS0tIG1hcmtkb3duLXRzLXRvYzog LSotICIKKyAgICAgICAgICAgICAibWluLWRlcHRoOiAxOyAiCisgICAgICAgICAgICAgIm1heC1k ZXB0aDogbmlsOyAiCisgICAgICAgICAgICAgImNhbmRpZGF0ZXM6IChoZWFkaW5nKTsgIgorICAg ICAgICAgICAgICJmcm9tOiBiZWxvdzsgIgorICAgICAgICAgICAgICJzdHlsZTogaXRlbTsgIgor ICAgICAgICAgICAgICJpbmRlbnQ6IDE7ICIKKyAgICAgICAgICAgICAibm8tbGluazogbmlsOyAi CisgICAgICAgICAgICAgInJlbGF0aXZlLWRlcHRoOiBuaWw7ICIKKyAgICAgICAgICAgICAiaWdu b3JlOiBuaWw7ICIKKyAgICAgICAgICAgICAiLSotIC0tPlxuIgorICAgICAgICAgICAgICI8IS0t IG1hcmtkb3duLXRzLXRvYy1lbmQ6IC0tPlxuIikpCisgICAgKF8gKHVzZXItZXJyb3IgIk5vIHN1 Y2ggdGVtcGxhdGUgdHlwZTogJWMiIGNoYXIpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4g bWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlICgmb3B0aW9uYWwgaW50ZXJhY3RpdmUgYmVnIGVuZCkK KyAgIkdlbmVyYXRlIHRhYmxlcyBvZiBjb250ZW50cyBpbiB0aGUgY3VycmVudCBidWZmZXIuCitg bWFya2Rvd24tdHMtbW9kZScgdXNlcyBNYXJrZG93biBIVE1MIGNvbW1lbnQgZWxlbWVudHMgdG8g aWRlbnRpZnkgdGFibGUKK29mIGNvbnRlbnRzIChha2EgdG9jKSBpbnNlcnRpb24gYm91bmRhcmll cyBhbmQgdGhlIHBhcmFtZXRlcnMgZm9yIGVhY2gKK3RhYmxlLiAgRGVyaXZlIHRhYmxlIGNvbnRl bnQgZnJvbSB0aGUgTWFya2Rvd24gZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQKK2J1ZmZlciB3aGlj aCBhcmUgdXN1YWxseSBoZWFkaW5ncyBidXQgY2FuIGFsc28gYmUgbGlzdCBpdGVtcywgc2V0ZXh0 CitoZWFkZXJzLCBuYW1lZCBjb2RlIGJsb2Nrcy4KKworT3BlcmF0ZSBvbiB0aGUgYWN0aXZlIHJl Z2lvbiBCRUcgdG8gRU5ELCBvdGhlcndpc2Ugb3BlcmF0ZSBvbiB0aGUKK2J1ZmZlciwgd2hpY2gg bWF5IGJlIG5hcnJvd2VkLgorCitFYWNoIHRpbWUgeW91IHJ1biB0aGlzIGNvbW1hbmQsIGV4aXN0 aW5nIHRhYmxlcyBvZiBjb250ZW50cyBhcmUgY2xlYXJlZAorYW5kIHJlZnJlc2hlZCB3aXRoIG5l dyBjb250ZW50LiAgU28gZG9uJ3QgcGxhY2UgdG9jIGVsZW1lbnRzIGFyb3VuZAoraW1wb3J0YW50 IHRleHQuCisKK1RoZSBidWZmZXIgY2FuIGhhdmUgb25lIG9yIG1vcmUgdG9jcy4gIEJ5IGRlZmF1 bHQsIHBvcHVsYXRlIGVhY2ggdG9jCit3aXRoIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBi dWZmZXIgYmVsb3cgdGhlIHRvYy4gIFRoZXJlZm9yZSwgdGhlCitlYXNpZXN0IHdheSB0byBpbnNl cnQgYSBjb21wbGV0ZSB0YWJsZSBvZiBjb250ZW50cywgaXMgdG8gcHV0IHRoZSB0b2MKK3RlbXBs YXRlIG5lYXIgdGhlIHRvcCBvZiB5b3VyIGJ1ZmZlci4KKworQSBiYXNpYyBlbXB0eSB0b2MgdGVt cGxhdGUgbG9va3MgbGlrZSB0aGlzOgorCitIZWFkZXIgdGV4dCB5b3Ugd2FudCBoZXJlLgorCis8 IS0tIG1hcmtkb3duLXRzLXRvYzogLS0+CitDb250ZW50cyBpbnNlcnRlZCBiZXR3ZWVuIHRoZXNl IGVsZW1lbnRzLgorPCEtLSBtYXJrZG93bi10cy10b2MtZW5kOiAtLT4KKworRm9vdGVyIHRleHQg eW91IHdhbnQgaGVyZS4KKworVXNlIHRoZSBjb21tYW5kIGBtYXJrZG93bi10cy10b2MtaW5zZXJ0 LXRlbXBsYXRlJyB0byBpbnNlcnQgYSB0YWJsZSBvZgorY29udGVudHMgdGVtcGxhdGUuCisKK1Vz ZSB0aGUgY29tbWFuZCBgbWFya2Rvd24tdHMtdG9jLWNsZWFyJyB0byBjbGVhciB0YWJsZSBjb250 ZW50LCBhbmQgdGhlCitjb21tYW5kIGBtYXJrZG93bi10cy10b2MtY2xlYXItYW5kLXJlbW92ZScg dG8gYm90aCBjbGVhciBhbmQgcmVtb3ZlCit0YWJsZSBjb250ZW50IGFuZCB0ZW1wbGF0ZXMuCisK K0J5IGRlZmF1bHQsIGEgdG9jIGluY2x1ZGVzIGhlYWRlcnMgYXQgYWxsIGxldmVscyBiZWxvdyB0 aGUgdG9jIHdoaWNoIGFyZQorcHJlc2VudGVkIGFzIGxpc3QgaXRlbXMgd2l0aCBsaW5rcy4KKwor VG8gaWdub3JlIGEgTWFya2Rvd24gZWxlbWVudCB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBpbmNs dWRlZCBpbiB0aGUKK3RvYywgYWRkIGEgdG9jIGlnbm9yZSBlbGVtZW50OgorCisjIyBJZ25vcmUg TWUgPCEtLSBtYXJrZG93bi10cy10b2MtaWdub3JlOiAtLT4KKworVGhlIHN0YXJ0aW5nIHRvYyBl bGVtZW50IGFjY2VwdHMgcGFyYW1ldGVycyBpbiB0aGUgc3ludGF4IG9mIEVtYWNzIGZpbGUKK3Zh cmlhYmxlcy4KKworRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGdlbmVyYXRlIGEgdGFibGUg b2YgY29udGVudHMgbGltaXRlZCB0bworaGVhZGluZ3MgdHdvIGxldmVscyBkZWVwOgorCis8IS0t IG1hcmtkb3duLXRzLXRvYzogLSotIG1heC1kZXB0aDogMjsgLSotIC0tPgorPCEtLSBtYXJrZG93 bi10cy10b2MtZW5kOiAtLT4KKworT3IgdXNlIG9ubHkgaGVhZGluZ3MgdHdvIGFuZCB0aHJlZSBs ZXZlbHMgZGVlcC4KKworPCEtLSBtYXJrZG93bi10cy10b2M6IC0qLSBtaW4tZGVwdGg6IDI7IG1h eC1kZXB0aDogMzsgLSotIC0tPgorPCEtLSBtYXJrZG93bi10cy10b2MtZW5kOiAtLT4KKworVGhl c2UgYXJlIHRoZSBzdXBwb3J0ZWQgcGFyYW1ldGVycyB3aGljaCBhcmUgb3B0aW9uYWwuICBUaGV5 IGVhY2ggbGlzdAordGhlaXIgZGVmYXVsdHMuCisKKyAgbWluLWRlcHRoOiAxICAgICAgICAgIDsg YW4gaW50ZWdlcgorICBtYXgtZGVwdGg6IG5pbCAgICAgICAgOyBhbiBpbnRlZ2VyCisgIGNhbmRp ZGF0ZXM6IChoZWFkaW5nKSA7IGEgbGlzdAorICBmcm9tOiBiZWxvdyAgICAgICAgICAgOyBhIHN5 bWJvbAorICBzdHlsZTogaXRlbSAgICAgICAgICAgOyBhIHN5bWJvbAorICBpbmRlbnQ6IDEgICAg ICAgICAgICAgOyBhIG51bWJlcgorICBuby1saW5rOiBuaWwgICAgICAgICAgOyBhIGJvb2xlYW4K KyAgcmVsYXRpdmUtZGVwdGg6IG5pbCAgIDsgYSBib29sZWFuCisgIGlnbm9yZTogbmlsICAgICAg ICAgICA7IGEgYm9vbGVhbgorCitgbWluLWRlcHRoJyBhbmQgYG1heC1kZXB0aCcgYm90aCBkZWZh dWx0IHRvIHVzaW5nIGFsbCBjYW5kaWRhdGVzIGF0CitldmVyeSBsZXZlbC4gIFVzZSBgbWluLWRl cHRoJyB0byBpZ25vcmUgbGV2ZWwgMSBoZWFkaW5ncyBsaWtlIFwiIworSGVhZGluZ1wiLCBieSB1 c2luZyAyLiAgVXNlIGBtYXgtZGVwdGgnIHRvIGNvbnRyb2wgaG93IGRlZXAgaW50byB0aGUKK2hl YWRpbmcgaGllcmFyY2h5IHlvdSBuZWVkIHlvdXIgdG9jIHRvIGdvLiAgVXNlIDMgdG8gc3RvcCBh dCBsZXZlbCB0aHJlZQoraGVhZGluZ3MuCisKK0hlYWRpbmdzIGRpY3RhdGUgdGhlIGxldmVsIG9m IHRoZWlyIGNoaWxkcmVuIGV2ZW4gaWYgaGVhZGluZ3MgYXJlCitleGNsdWRlZCBmcm9tIGNhbmRp ZGF0ZXMuICBPdGhlciBlbGVtZW50IHR5cGVzIGluaGVyaXQgdGhlIGxldmVsIG9mCit0aGVpciBw cmVjZWRpbmcgaGVhZGluZy4KKworYGNhbmRpZGF0ZXMnIGlzIGEgbGlzdCBhbmQgY2FuIGNvbnRh aW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgTWFya2Rvd24KK2VsZW1lbnQgc2hvcnRjdXQgbmFtZXMu ICBZb3UgY2FuIG1peCBoaWdoZXItbGV2ZWwgZ3JvdXBpbmcgc3ltYm9scyBhbmQKK2xvd2VyIGxl dmVsIHN5bWJvbHMuCisKKyAgYWxsIChpbmNsdWRlcyBldmVyeXRoaW5nKQorICBoZWFkaW5nIChp bmNsdWRlcyB0aGUgYmVsb3cpCisgICAgaDEgaDIgaDMgaDQgaDUgaDYKKyAgc2V0ZXh0IChpbmNs dWRlcyB0aGUgYmVsb3cpCisgICAgc2gxIHNoMgorICBpdGVtIChpbmNsdWRlcyB0aGUgYmVsb3cp CisgICAgbWludXMgcGx1cyBzdGFyCisgIG51bWJlcmVkLWl0ZW0gKGluY2x1ZGVzIHRoZSBiZWxv dykKKyAgICBkb3QgcGFyZW4KKyAgY29kZSAobmFtZWQgY29kZSBibG9ja3MpCisKK2Bmcm9tJyBj b250cm9scyB0aGUgZGlyZWN0aW9uIGFuZCBzY29wZSBmcm9tIHdoaWNoIGNhbmRpZGF0ZXMgYXJl CitzZWxlY3RlZC4gIFR5cGljYWxseSwgYSB0b2MgaXMgcGxhY2VkIGF0IHRoZSBiZWdpbm5pbmcg b2YgYSBidWZmZXIgYW5kCitgZnJvbScgaXMgYGJlbG93JyB0byBjYXB0dXJlIGVudHJ5IGNhbmRp ZGF0ZXMgYWZ0ZXIgdGhlIHRvYy4gIElmIHlvdSBzZXQKK2Bmcm9tJyB0byBgYWJvdmUnLCBjYW5k aWRhdGVzIGFyZSBzZWxlY3RlZCBmcm9tIGFib3ZlIHRoZSB0b2MuICBVc2UKK2BhbGwnIHRvIGNh cHR1cmUgZXZlcnkgZW50cnkgY2FuZGlkYXRlLiAgVGhpcyBpcyB1c2VmdWwgdG8gY3JlYXRlIGEK K2NvbXBsZXRlIHRvYyBhdCB0aGUgZW5kIG9mIHlvdXIgYnVmZmVyLgorCitUaGUgYHN0eWxlJyBw YXJhbWV0ZXIgY2FuIGJlIG5pbCwgYGl0ZW0nLCBgbnVtYmVyJyBvciBgbnVtYmVyLicuICBVbmRl cgorbmlsLCBlbnRyaWVzIGhhdmUgbm8gZGVjb3JhdGlvbnMuICBJZiBgaXRlbScsIGVudHJpZXMg YXJlIHByZWZpeGVkIHdpdGgKK1wiLVwiLiAgSWYgYGJ1bGxldCcsIHByZWZpeCB3aXRoIFwiKlwi LiAgSWYgYG51bWJlcicsIG51bWVyaWMgcHJlZml4ZXMKK2FyZSBnZW5lcmF0ZWQsIGZvciBleGFt cGxlIDEsIDEuMSwgMiwgMi4xLCAyLjEuMSwgMi4xLjIuICBVc2UgYG51bWJlci4nCit0byBhZGQg YSBwZXJpb2QgdG8gZWFjaCBlbnRyeSdzIG51bWJlci4KKworYGluZGVudCcgaXMgYW4gaW50ZWdl ciBiZXR3ZWVuIDAgYW5kIDEwLiAgMCBtZWFucyBub3RoaW5nIHNob3VsZCBiZQoraW5kZW50ZWQu ICBPdGhlcndpc2UsIGVhY2ggZW50cnkgaXMgaW5kZW50ZWQgYnkgdGhlIG51bWJlciBvZiBzcGFj ZXMgb2YKK2l0cyBNYXJrZG93biBsZXZlbCBtdWx0aXBsaWVkIGJ5IHRoaXMgdmFsdWUuICBDYW5k aWRhdGVzIHRoYXQgaGF2ZSBubworbmF0aXZlIGxldmVsIHN1Y2ggYXMgbGlzdCBpdGVtcyBpbmhl cml0IHRoZSBiYXNlIGluZGVudGF0aW9uIGxldmVsIG9mCitpdHMgcHJlY2VkaW5nIGhlYWRlci4g IExpc3QgaXRlbSBoaWVyYXJjaGllcyBhbmQgY29kZSBibG9ja3MgaW5kZW50Cit1bmRlciB0aGF0 IGJhc2UuCisKK1NldCBgbm8tbGluaycgdG8gdCBpZiB5b3UgZG8gbm90IHdhbnQgeW91ciBlbnRy aWVzIHRvIGhhdmUgaGVhZGVyIGxpbmtzLgorQnkgZGVmYXVsdCwgZWFjaCBlbnRyeSBkZXJpdmVk IGZyb20gYSBoZWFkaW5nIGlzIHByZXNlbnRlZCBhcyBhIGxpbmsgdG8KK2l0cyBzb3VyY2UgaGVh ZGluZy4gIE5PVEU6IFRoZSBlbGVtZW50cyByZXByZXNlbnRlZCBieSBgc2V0ZXh0JywgYGl0ZW0n LAorYG51bWJlcmVkLWl0ZW0nLCBgY29kZScgZG8gbm90IHN1cHBvcnQgbGlua3MuCisKK1VzZSBg cmVsYXRpdmUtZGVwdGgnIHRvIGNyZWF0ZSBhIHRvYyB1bmRlcm5lYXRoIGEgaGVhZGluZywgbGlt aXRpbmcgdGhlCit0b2MgdG8gaGVhZGluZyBkZXB0aHMgdW5kZXJuZWF0aCB0aGUgcHJlY2VkaW5n IGhlYWRlciBhbmQgc3BlY2lmeSB0aGUKK2xldmVscyByZWxhdGl2ZSB0byB0aGF0IGhlYWRlci4g IE1vcmUgY29uY3JldGVseSwgaWYgdGhlIHByZWNlZGluZworaGVhZGVyIGlzIGEgbGV2ZWwgMSBc IiNcIiBoZWFkZXIsIGBtaW4tZGVwdGgnIDEgYW5kIGBtYXgtZGVwdGgnIDIgd2lsbAorYmUgaW50 ZXJwcmV0ZWQgdG8gYmUgMiBhbmQgMy4gIElmIHlvdSBkZW1vdGUgdGhlIGhlYWRlciB0byBsZXZl bCAyCitcIiMjXCIgdGhleSB3aWxsIGJlIGludGVycHJldGVkIGFzIDMgYW5kIDQuICBUaGlzIGlz IHVzZWZ1bCB0byBhdm9pZAorZnVzc2luZyB3aXRoIHRvYyBjb25maWd1cmF0aW9ucyB1bmRlciBo ZWFkZXJzIHdoZW4geW91IGNoYW5nZSB0aGVpcgorbGV2ZWxzLgorCitGb3IgZXhhbXBsZToKKwor PCEtLSBtYXJrZG93bi10cy10b2M6IC0qLSByZWxhdGl2ZS1kZXB0aDogdDsgbWluLWRlcHRoOiAx OyBtYXgtZGVwdGg6IDI7IC0qLSAtLT4KKzwhLS0gbWFya2Rvd24tdHMtdG9jLWVuZDogLS0+CisK K0ZpbmFsbHksIGlmIGBpZ25vcmUnIGlzIHQsIHlvdSBjYW4ga2VlcCBhIHRvYyBlbGVtZW50IGlu IHBsYWNlIGFuZCBza2lwCitpdC4KKworSU5URVJBQ1RJVkUgd2lsbCBiZSBub24tbmlsIGlmIHRo aXMgY29tbWFuZCB3YXMgaW52b2tlZCBpbnRlcmFjdGl2ZWx5LgorCitTZWUgYG1hcmtkb3duLXRz LXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUnIHRvIGNvbmZpZ3VyZSB3YXJuaW5ncyBhYm91dAor dGFibGVzIG5vdCBiZWluZyBwcm9jZXNzZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4i CisgIChpbnRlcmFjdGl2ZSAicFxuUiIpCisgIDs7IE5PVEU6IElmIHBhcmFtZXRlcnMgb3IgdGhl aXIgZGVmYXVsdHMgY2hhbmdlLCBiZSBzdXJlIHRvIG1pcnJvcgorICA7OyB0aGVtIGluIGBtYXJr ZG93bi10cy10b2MtaW5zZXJ0LXRlbXBsYXRlJy4KKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5v dC1tb2RlICdtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUpCisgIChzZXRxIGJlZyAob3IgYmVnIChw b2ludC1taW4pKSkKKyAgKHNldHEgZW5kIChvciBlbmQgKHBvaW50LW1heCkpKQorICAodW5sZXNz IChlcSBiZWcgZW5kKQorICAgIDs7IENvbnZlcnQgbWFya2VycyB0byBhYnNvbHV0ZSBwb3NpdGlv bnMuCisgICAgKHNldHEgYmVnIChpZiAobWFya2VycCBiZWcpIChtYXJrZXItcG9zaXRpb24gYmVn KSBiZWcpKQorICAgIChzZXRxIGVuZCAoaWYgKG1hcmtlcnAgZW5kKSAobWFya2VyLXBvc2l0aW9u IGVuZCkgZW5kKSkKKyAgICA7OyBOT1RFOiBPcGVyYXRlIG9uIHRoZSB3aWRlbmVkIGJ1ZmZlciB0 byBhdm9pZCB0cmVlc2l0ZXIgY3Jhc2ggaXNzdWVzLgorICAgICh3aXRob3V0LXJlc3RyaWN0aW9u CisgICAgICAobGV0ICgodG9jcyAobWFya2Rvd24tdHMtLXRvY3MgYmVnIGVuZCkpKQorICAgICAg ICAodW5sZXNzIHRvY3MKKyAgICAgICAgICAoaWYgKGFuZCBpbnRlcmFjdGl2ZQorICAgICAgICAg ICAgICAgICAgIChlcSAnaW5zZXJ0LXRlbXBsYXRlIG1hcmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13 YXJuLWlmLW5vbmUpKQorICAgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAobWFy a2Rvd24tdHMtdG9jLWluc2VydC10ZW1wbGF0ZSkKKyAgICAgICAgICAgICAgICA7OyBJZiB0aGUg dXNlciBkaWRuJ3QgcXVpdCB0aGUgcHJvbXB0LCBhIHRlbXBsYXRlIG1heSBoYXZlCisgICAgICAg ICAgICAgICAgOzsgYmVlbiBhZGRlZCwgc28gcmVzY2FuIHRoZSBidWZmZXIuCisgICAgICAgICAg ICAgICAgKHNldHEgdG9jcyAobWFya2Rvd24tdHMtLXRvY3MpKSkKKyAgICAgICAgICAgICh3aGVu IChlcSAnbm8tdGFibGVzIG1hcmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUpCisg ICAgICAgICAgICAgIChsd2FybiAnbWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlCisgICAgICAgICAg ICAgICAgICAgICA6d2FybmluZworICAgICAgICAgICAgICAgICAgICAgIk5vIHRhYmxlcyBvZiBj b250ZW50cyBmb3VuZCBpbiAlcy4iCisgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLW5hbWUg KGN1cnJlbnQtYnVmZmVyKSkpKSkpCisgICAgICAgIChtYXJrZG93bi10cy0tdG9jcy1zYW5pdHkt Y2hlY2sgdG9jcykKKworICAgICAgICA7OyBTdHJhdGVneSBpcyBwcm9jZXNzIG9uZSB0b2MgYXQg YSB0aW1lIGZyb20gdGhlIHRvcCB0byB0aGUKKyAgICAgICAgOzsgYm90dG9tIG9mIHRoZSByYW5n ZSBCRUcgRU5ELiAgU3Vic2VxdWVudCB0b2MgYW5kIGVudHJ5CisgICAgICAgIDs7IGNhbmRpZGF0 ZSBub2RlIHBvc2l0aW9ucyBjaGFuZ2UgYXMgd2UgdXBkYXRlIGVhY2ggdG9jIHRleHQgc28KKyAg ICAgICAgOzsgd2UgaGF2ZSB0byByZXRyaWV2ZSB0aGVtIGZyZXNoIGZyb20gdGhlIGVuZCBvZiB0 aGUgbW9zdCByZWNlbnQKKyAgICAgICAgOzsgdG9jLgorICAgICAgICAobGV0ICgodG9jcykKKyAg ICAgICAgICAgICAgKG51bS10b2NzLXByb2Nlc3NlZCAwKQorICAgICAgICAgICAgICAodG9jKQor ICAgICAgICAgICAgICAodG9jLWVuZCkKKyAgICAgICAgICAgICAgKHRvYy1zaXplKQorICAgICAg ICAgICAgICA7OyBUaGVzZSBhcmUgYWRqdXN0ZWQgYnkgdGhlIHNpemUgb2YgaW5zZXJ0ZWQgdGV4 dCBlYWNoIHBhc3MuCisgICAgICAgICAgICAgIChiZWctcG9zIGJlZykKKyAgICAgICAgICAgICAg KGVuZC1wb3MgZW5kKQorICAgICAgICAgICAgICAoc291cmNlLWJ1ZmZlciAoY3VycmVudC1idWZm ZXIpKSkKKyAgICAgICAgICA7OyBGaW5kIGVhY2ggIm1hcmtkb3duLXRzLXRvYyIgaW4gc3VjY2Vz c2lvbiBzdGFydGluZyBhdCB0aGUgZW5kCisgICAgICAgICAgOzsgb2YgZWFjaCBwcmV2aW91cyBv bmUgd2UgZmluZCB3aXRoaW4gdGhlIHJlcXVlc3RlZCByZWdpb24uCisgICAgICAgICAgKHdoaWxl IChhbmQgKDwgYmVnLXBvcyBlbmQtcG9zKQorICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRv Y3MgKG1hcmtkb3duLXRzLS10b2NzIGJlZy1wb3MgZW5kLXBvcykpKQorICAgICAgICAgICAgKHNl dHEgdG9jIChjYXIgdG9jcykpCisgICAgICAgICAgICAoc2V0cSB0b2Mtc2l6ZSAwKQorCisgICAg ICAgICAgICAod2hlbiAoZXF1YWwgIm1hcmtkb3duLXRzLXRvYyIgKGNhciB0b2MpKQorICAgICAg ICAgICAgICA7OyBBZnRlciBzYW5pdHkgY2hlY2tpbmcsIHdlIGtub3cgdGhlIHNlY29uZCBlbGVt ZW50IGlzIGEKKyAgICAgICAgICAgICAgOzsgdG9jLWVuZC4KKyAgICAgICAgICAgICAgKHNldHEg dG9jLWVuZCAobnRoIDEgdG9jcykpCisgICAgICAgICAgICAgIChsZXQqICgodG9jLW5vZGUgKGFs aXN0LWdldCAnbm9kZSB0b2MpKQorICAgICAgICAgICAgICAgICAgICAgKHRvYy12YXJzIChhbGlz dC1nZXQgJ3ZhcnMgdG9jKSkKKyAgICAgICAgICAgICAgICAgICAgICh0b2MtaWdub3JlIChhbGlz dC1nZXQgJ2lnbm9yZSB0b2MtdmFycykpKQorICAgICAgICAgICAgICAgICh1bmxlc3MgdG9jLWln bm9yZQorICAgICAgICAgICAgICAgICAgOzsgQnVpbGQgdGhlIHRvYyBvbmUgY2FuZGlkYXRlIGF0 IGEgdGltZSwgdHJhY2tpbmcKKyAgICAgICAgICAgICAgICAgIDs7IGluZGVudGF0aW9uIGFuZCBj cmVhdGluZyBsaW5rcyBpZiBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAobGV0KiAoKHRvYy1l bmQtbm9kZSAoYWxpc3QtZ2V0ICdub2RlIHRvYy1lbmQpKQorICAgICAgICAgICAgICAgICAgICAg ICAgIChyZWctYmVnICh0cmVlc2l0LW5vZGUtZW5kIHRvYy1ub2RlKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAocmVnLWVuZCAodHJlZXNpdC1ub2RlLXN0YXJ0IHRvYy1lbmQtbm9kZSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1oYW5kbGVzIChtYXJrZG93bi10cy0tdG9jLWV4 cGFuZC1jYW5kaWRhdGUtaGFuZGxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG9yIChjZHItc2FmZSAoYXNzcSAnY2FuZGlkYXRlcyB0b2MtdmFycykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRpbmcpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBOb3cgYWRkIGhlYWRpbmdzIHRvIGFsd2F5cyByZXRyaWV2ZSBh bmQgZGVyaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgOzsgbGV2ZWxzIGV2ZW4gaWYgdGhl eSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgdG9jLgorICAgICAgICAgICAgICAgICAgICAgICAgIChz ZWVkLWhhbmRsZXMgKGNvcHktdHJlZSB0b2MtaGFuZGxlcykpCisgICAgICAgICAgICAgICAgICAg ICAgICAgKF8gKGRvbGlzdCAoZWx0IChhbGlzdC1nZXQgJ2hlYWRpbmcgbWFya2Rvd24tdHMtLXRv Yy1oYW5kbGVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1wdXNobmV3IGVs dCBzZWVkLWhhbmRsZXMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodG9jLWZyb20gKG9y IChjZHItc2FmZSAoYXNzcSAnZnJvbSB0b2MtdmFycykpICdiZWxvdykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKHRvYy1zdHlsZSAob3IgKGNkci1zYWZlIChhc3NxICdzdHlsZSB0b2MtdmFy cykpICdpdGVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodG9jLW5vLWxpbmsgKGFsaXN0 LWdldCAnbm8tbGluayB0b2MtdmFycykpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1p bmRlbnQgKG1pbiAxMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1heCAwIChvciAoY2RyLXNhZmUgKGFzc3EgJ2luZGVudCB0b2MtdmFycykpIDEpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKHRvYy1taW4tZGVwdGggKG1heCAxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGNkci1zYWZlIChhc3NxICdtaW4t ZGVwdGggdG9jLXZhcnMpKSAxKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1tYXgt ZGVwdGggKG1heCB0b2MtbWluLWRlcHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAob3IgKGNkci1zYWZlIChhc3NxICdtYXgtZGVwdGggdG9jLXZhcnMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vc3QtcG9z aXRpdmUtZml4bnVtKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1yZWxhdGl2ZS1k ZXB0aCAoY2RyLXNhZmUgKGFzc3EgJ3JlbGF0aXZlLWRlcHRoIHRvYy12YXJzKSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgKHRvYy1jYW5kaWRhdGVzIChtYXJrZG93bi10cy0tdG9jLWNvbGxl Y3QtY2FuZGlkYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dG9jLW5vZGUgdG9jLWVuZC1ub2RlIHNlZWQtaGFuZGxlcyB0b2MtZnJvbSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgKHRvYy1yZWxhdGl2ZS1oZWFkaW5nLWRlcHRoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICgxKyAob3IgKHNlcS1wb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnKCJhdHhfaDFfbWFya2VyIiAiYXR4X2gyX21hcmtlciIgImF0eF9oM19t YXJrZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0eF9oNF9tYXJr ZXIiICJhdHhfaDVfbWFya2VyIiAiYXR4X2g2X21hcmtlciIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdHlwZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRvYy1ub2RlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJhdHhfaGVhZGluZyIgJ2JhY2t3YXJkKSAwICduYW1lZCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnZXF1YWwpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLTEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2x1Zy10by1w b3MgKG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkcykpCisgICAgICAgICAgICAgICAgICAgICAgICAg KHBvcy10by1zbHVnCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChodCAobWFrZS1o YXNoLXRhYmxlIDpzaXplIChoYXNoLXRhYmxlLWNvdW50IHNsdWctdG8tcG9zKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dGVzdCAjJ2VxdWFs KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGhhc2ggKGxhbWJkYSAoayB2KSAo cHV0aGFzaCB2IGsgaHQpKSBzbHVnLXRvLXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBodCkpKQorCisgICAgICAgICAgICAgICAgICAgICh3aXRoLXdvcmstYnVmZmVyCisgICAgICAg ICAgICAgICAgICAgICAgKGluc2VydCAiPCEtLSBOT1RFOiBtYXJrZG93bi10cy10b2MgZ2VuZXJh dGVkIHRleHQgc2VjdGlvbiBtYXkgYmUgb3ZlcndyaXR0ZW4uIC0tPlxuIikKKyAgICAgICAgICAg ICAgICAgICAgICAobGV0ICgoaGFuZGxlKSAoaGFuZGxlLWNsYXNzKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmRlbnQg MCkgKGxldmVsIDEpIChsZXZlbC1wcmV2IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgSGVhZGluZyBsZXZlbCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgaXRlbXMgdW5kZXIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBpdC4gIElmIHRoZXJlIGFyZSBubyBoZWFkaW5ncywg aXQgd2lsbCByZW1haW4gMS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV2ZWwtaGVh ZGluZyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IEFkanVzdCBmb3Igbm9uIGhl YWRpbmdzIHVuZGVyIGhlYWRpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudW1i ZXItc3RhY2spKQorCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBDYW5kaWRhdGVzIHNob3Vs ZCBiZSBpbiBidWZmZXIgb3JkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAoZG9saXN0IChj YW5kaWRhdGUgdG9jLWNhbmRpZGF0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQg KChzbHVnLXBvcykgKHRleHQpIChsaW5rLXRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxldmVsLWFkaiAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBoYW5kbGUgKGNhciBjYW5kaWRhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGFuZGxlLWNsYXNzIChhbGlzdC1nZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhhbmRsZSBtYXJrZG93bi10cy0tdG9jLWhhbmRsZS1jbGFzc2Vz KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBub2RlIChjZHIgY2FuZGlkYXRl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzbHVnLXBvcyBuaWwpCisKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTdHJpcCB0cmFpbGluZyBuZXdsaW5lcy4gIEFk ZCB0aGVtIGNvbnNpc3RlbnRseSBiZWxvdy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c2V0cSB0ZXh0IChzdHJpbmctdHJpbS1yaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXJrZG93bi10cy0tdG9jLXRleHQtbm9ybWFsaXplCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSBub2RlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlICduby1w cm9wZXJ0eSkpKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IENhbmRpZGF0ZSBu b2RlIHR5cGUgbG9naWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlIGhhbmRs ZS1jbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdoZWFkaW5nCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHggKHNlcS1wb3NpdGlvbiAnKGgxIGgyIGgz IGg0IGg1IGg2KSBoYW5kbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXRxIHNsdWctcG9zICh0cmVlc2l0LW5vZGUtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1zZWFyY2gtZm9yd2FyZCBub2RlICJh dHhfaGVhZGluZyIgJ2JhY2t3YXJkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBsZXZlbCAoc2V0cSBsZXZlbC1oZWFkaW5nICgxKyB4KSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbC1hZGogMCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGluZGVudCAoMS0gbGV2ZWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGluay10YXJnZXQgdGV4dCkpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCdzZXRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobGV0ICgoeCAoc2VxLXBvc2l0aW9uICcoc2gxIHNoMikgaGFuZGxlKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbCAoMSsgeCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbC1hZGogMCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGluZGVudCAoMS0gbGV2ZWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGluay10YXJnZXQgbmlsKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKG9yICdpdGVtICdudW1iZXJlZC1pdGVtKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIGxldmVsIGxldmVsLWhlYWRpbmcpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwtYWRqIChtYXJrZG93bi10cy0tdG9jLWxp c3QtaXRlbS1kZXB0aCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBpbmRlbnQgKDEtICAoKyBsZXZlbCBsZXZlbC1hZGopKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0cSBsaW5rLXRhcmdldCBuaWwpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCdjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSW5oZXJp dCB0aGUgYW1iaWVudCBsZXZlbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBsZXZlbC1hZGogMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBpbmRl bnQgKDEtICAoKyBsZXZlbCBsZXZlbC1hZGopKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBsaW5rLXRhcmdldCBuaWwpKSkKKworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IEZpbHRlciBkZXNpcmVkIGhhbmRsZXMgYW5kIGxldmVscy4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hlbiAoYW5kIChtZW1xIGhhbmRsZSB0b2MtaGFuZGxlcykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg+PSBsZXZlbCAoKyB0b2MtbWluLWRl cHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIHRvYy1yZWxhdGl2ZS1kZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0b2MtcmVsYXRpdmUtaGVhZGluZy1kZXB0aCAwKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPD0gbGV2ZWwgKCsgdG9jLW1h eC1kZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiB0b2MtcmVsYXRpdmUtZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9jLXJlbGF0aXZlLWhlYWRpbmctZGVwdGggMCkp KSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQ3JlYXRlIHRoZSBlbnRyeSB3 aXRoIGluZGVudCwgaXRlbS9udW1iZXIgcHJlZml4LCBsaW5rLgorCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBDb3JuZXIgY2FzZTogaW5pdGlhbCBsZXZlbCBoaWdoZXIgdGhhbiAx LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoPiBsZXZlbCAxKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgbGV2ZWwtcHJldiAw KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwgMSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIChub3QgdG9jLW5vLWxpbmspIGxp bmstdGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTYW5pdGl6ZSB0 aGUgaWQgdG8gY29uZm9ybSB0byBDU1MgaWRlbnQgc3ludGF4LgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2V0cSB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChmb3JtYXQgIlslc10oIyVzKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmLWxldCogKChzbHVnIChnZXRoYXNoIHNsdWctcG9zIHBvcy10by1zbHVn KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs dWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5j YWxsIG1hcmtkb3duLXRzLXRvYy1zbHVnLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLXRhcmdldCkpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyAoKiAoMS0gKG1h eCBpbmRlbnQgMSkpIHRvYy1pbmRlbnQpID9ccykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBjYXNlIHRvYy1zdHlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgnaXRlbSAiLSAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgnYnVsbGV0ICIqICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKChvciAnbnVtYmVyICdudW1iZXIuKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobGV0ICgobGV2ZWwgKCsgbGV2ZWwgbGV2ZWwtYWRqKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChvciAobm90IG51 bWJlci1zdGFjaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICg+IGxldmVsIChjYWFyIG51bWJlci1zdGFjaykpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBgKCxsZXZlbCAuIDApIG51 bWJlci1zdGFjaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChhbmQgbnVtYmVyLXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKDwgbGV2ZWwgKGNhYXIgbnVtYmVyLXN0YWNrKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGlsZSAo YW5kIG51bWJlci1zdGFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoPCBsZXZlbCAoY2FhciBudW1iZXItc3RhY2spKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9wIG51 bWJlci1zdGFjaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1bmxlc3MgbnVtYmVyLXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggYCgsbGV2ZWwgLiAwKSBudW1iZXItc3RhY2sp KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0Y2RyIChj YXIgbnVtYmVyLXN0YWNrKSAoMSsgKGNkYXIgbnVtYmVyLXN0YWNrKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChzKSAobiAobGVuZ3RoIG51bWJlci1z dGFjaykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEt bWFwLWluZGV4ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGxhbWJkYSAoZWx0IGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbmNhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChmb3JtYXQgIiVkIiAoY2RyIGVsdCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgKDErIGlkeCkgbikg IiIgIi4iKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cmV2ZXJzZSBudW1iZXItc3RhY2spKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjb25jYXQgcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHdoZW4gKGVxIHRvYy1zdHlsZSAnbnVtYmVyLikgIi4iKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgIikpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfICIiKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBBZGQgYSBoYXJkIGxpbmUgYnJlYWsuICBCYWNrc2xhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgc2VlbXMgbGVzcyB3ZWxsIHN1cHBv cnRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyByZW5kZXJl cnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXN0cmluZyAy ID9ccykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwtcHJldiBsZXZlbCkpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAoc2V0cSB0b2Mtc2l6ZSAoYnVmZmVyLXNpemUpKQorICAgICAgICAg ICAgICAgICAgICAgIChsZXQgKCh0ZW1wLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHNvdXJjZS1idWZmZXIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIHJlZy1iZWcg cmVnLWVuZCB0ZW1wLWJ1ZmZlcikpKSkpCisgICAgICAgICAgICAgICAgICAoc2V0cSBudW0tdG9j cy1wcm9jZXNzZWQgKDErIG51bS10b2NzLXByb2Nlc3NlZCkpKSkpCisgICAgICAgICAgICA7OyBT dGFydCB0aGUgbmV4dCBwYXNzIGFmdGVyIHRoaXMgdG9jLWVuZC4gIEFkanVzdCBmb3IgdGhlCisg ICAgICAgICAgICA7OyBpbnNlcnRlZCB0ZXh0IHNpemUuCisgICAgICAgICAgICAoc2V0cSBiZWct cG9zICgrIChhbGlzdC1nZXQgJ2VuZCB0b2MtZW5kKSB0b2Mtc2l6ZSkpCisgICAgICAgICAgICAo c2V0cSBlbmQtcG9zIChtaW4gKHBvaW50LW1heCkgKCsgZW5kLXBvcyB0b2Mtc2l6ZSkpKSkKKyAg ICAgICAgICAod2hlbiAoYW5kIChlcSBudW0tdG9jcy1wcm9jZXNzZWQgMCkKKyAgICAgICAgICAg ICAgICAgICAgIChlcSAnbm8tYWN0aXZlLXRhYmxlcyBtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUt d2Fybi1pZi1ub25lKSkKKyAgICAgICAgICAgIChsd2FybiAnbWFya2Rvd24tdHMtdG9jLWdlbmVy YXRlCisgICAgICAgICAgICAgICAgICAgOndhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAiTm8g dGFibGVzIG9mIGNvbnRlbnRzIGdlbmVyYXRlZCBpbiAlcy4iCisgICAgICAgICAgICAgICAgICAg KGJ1ZmZlci1uYW1lIChjdXJyZW50LWJ1ZmZlcikpKSkpKSkpKQorCisocHJvdmlkZSAnbWFya2Rv d24tdHMtbW9kZS14KQorOzs7IG1hcmtkb3duLXRzLW1vZGUteC5lbCBlbmRzIGhlcmUKZGlmZiAt LWdpdCBhL2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUuZWwgYi9saXNwL3RleHRtb2Rl cy9tYXJrZG93bi10cy1tb2RlLmVsCmluZGV4IDY1N2Q2YmM0NjZkLi41NWNiNzFhYTVlMyAxMDA2 NDQKLS0tIGEvbGlzcC90ZXh0bW9kZXMvbWFya2Rvd24tdHMtbW9kZS5lbAorKysgYi9saXNwL3Rl eHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsCkBAIC0xLDExICsxLDE0IEBACi07OzsgbWFya2Rv d24tdHMtbW9kZS5lbCAtLS0gdHJlZSBzaXR0ZXIgc3VwcG9ydCBmb3IgTWFya2Rvd24gIC0qLSBs ZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQorOzs7IG1hcmtkb3duLXRzLW1vZGUuZWwgLS0tIHRyZWUg c2l0dGVyIHN1cHBvcnQgZm9yIE1hcmtkb3duIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQog CiA7OyBDb3B5cmlnaHQgKEMpIDIwMjQtMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KIAotOzsgQXV0aG9yICAgICA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRv QGdtYWlsLmNvbT4KLTs7IE1haW50YWluZXIgOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwu anVsaWF0b0BnbWFpbC5jb20+Ci07OyBDcmVhdGVkICAgIDogQXByaWwgMjAyNAotOzsgS2V5d29y ZHMgICA6IG1hcmtkb3duIG1kIGxhbmd1YWdlcyB0cmVlLXNpdHRlcgorOzsgQXV0aG9yICAgICAg ICAgICA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRvQGdtYWlsLmNvbT4KKzs7 ICAgICAgICAgICAgICAgICAgOiBTdMOpcGhhbmUgTWFya3MgPHNoaXBtaW50c0BnbWFpbC5jb20+ Cis7OyBNYWludGFpbmVyICAgICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1bGlh dG9AZ21haWwuY29tPgorOzsgQ3JlYXRlZCAgICAgICAgICA6IEFwcmlsIDIwMjQKKzs7IFZlcnNp b24gICAgICAgICAgOiAxLjAKKzs7IFBhY2thZ2UtUmVxdWlyZXMgOiAoKGVtYWNzICIzMS4xIikp Cis7OyBLZXl3b3JkcyAgICAgICAgIDogbWFya2Rvd24gbWQgdGV4dCBlZGl0IGxhbmd1YWdlcyB0 cmVlLXNpdHRlcgogCiA7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCiAKQEAgLTIy LDEzOCArMjUsNzM4IEBACiA7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCi07OzsgVHJlZS1z aXR0ZXIgbGFuZ3VhZ2UgdmVyc2lvbnMKKzs7OyBDb21tZW50YXJ5OgorCis7Ozs7IFRyZWUtc2l0 dGVyIExhbmd1YWdlIFZlcnNpb25zCiA7OwogOzsgbWFya2Rvd24tdHMtbW9kZSBoYXMgYmVlbiB0 ZXN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGdyYW1tYXJzIGFuZCB2ZXJzaW9uOgogOzsgLSB0cmVl LXNpdHRlci1tYXJrZG93bjogdjAuNC4xCiA7OyAtIHRyZWUtc2l0dGVyLW1hcmtkb3duLWlubGlu ZTogdjAuNC4xCiA7OwotOzsgV2UgdHJ5IG91ciBiZXN0IHRvIG1ha2UgYnVpbHRpbiBtb2RlcyB3 b3JrIHdpdGggbGF0ZXN0IGdyYW1tYXIKLTs7IHZlcnNpb25zLCBzbyBhIG1vcmUgcmVjZW50IGdy YW1tYXIgaGFzIGEgZ29vZCBjaGFuY2UgdG8gd29yayB0b28uCi07OyBTZW5kIHVzIGEgYnVnIHJl cG9ydCBpZiBpdCBkb2Vzbid0LgotCi07OzsgQ29tbWVudGFyeToKKzs7IFdlIHRyeSBvdXIgYmVz dCB0byBtYWtlIGJ1aWx0LWluIG1vZGVzIHdvcmsgd2l0aCBsYXRlc3QgZ3JhbW1hcgorOzsgdmVy c2lvbnMsIHNvIGEgbW9yZSByZWNlbnQgZ3JhbW1hciBoYXMgYSBnb29kIGNoYW5jZSB0byB3b3Jr LiAgU2VuZAorOzsgdXMgYSBidWcgcmVwb3J0IGlmIGl0IGRvZXNuJ3QuCis7OworOzsgQmlkaXJl Y3Rpb25hbCBUZXh0IENvbnNpZGVyYXRpb25zCis7OworOzsgVGV4dCB3aXRoIG1hcmt1cCBtYXkg bmVlZCBhbiBleHRyYSBuZXdsaW5lIGJlZm9yZSBiaWRpcmVjdGlvbmFsIHRleHQKKzs7IGZvciBp dCB0byBzaG93IGNvcnJlY3RseS4gIFRoaXMgaXMgYSBsaW1pdGF0aW9uIGluIHRoZSBFbWFjcyBk aXNwbGF5Cis7OyBlbmdpbmUuCis7OworOzsgQ29kZSBCbG9jayBMYW5ndWFnZSBNb2RlIENvbnNp ZGVyYXRpb25zCis7OworOzsgRmVuY2VkIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMgYXJlIGRl cml2ZWQgZnJvbSB0aGUgdGFibGUKKzs7IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzJyBh bmQgaGV1cmlzdGljcyBhZGRpbmcgIi10cy1tb2RlIiBhbmQKKzs7ICItbW9kZSIgdG8gdGhlIGxh bmd1YWdlIG5hbWUuICBJZiB5b3VyIGxhbmd1YWdlJ3MgbW9kZSBpcyBub3QKKzs7IHByb3Blcmx5 IHJlY29nbml6ZWQsIGFkZCBpdCB0byBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcycsIHdo aWNoCis7OyBzZWUuCis7OworOzsgRWFjaCBsYW5ndWFnZSdzIG1ham9yIG1vZGUgaXMgZW5hYmxl ZCBvbmNlIHBlciBgbWFya2Rvd24tdHMtbW9kZScKKzs7IGJ1ZmZlciBpbiBhIHRlbXBvcmFyeSBi dWZmZXIgdG8gZXh0cmFjdCBpdHMgZGVmYXVsdCBmb250LWxvY2sgYW5kCis7OyB0cmVlLXNpdHRl ciBzZXR0aW5ncy4gIEluIGNvbnZlbnRpb25hbCBub24tdHJlZXNpdCBjb2RlIGJsb2NrcywgdGhl Cis7OyBtYWpvciBtb2RlIGlzIGVuYWJsZWQgZWFjaCB0aW1lIHRoZSBibG9jayBpcyBmb250aWZp ZWQuCis7OworOzsgTk9URTogTWFqb3IgbW9kZSBob29rcyBhcmUgbm90IHJ1biBhbmQgZm9udC1s b2NrLCB0cmVlc2l0LCBpbmRlbnQsCis7OyBjb21tZW50IHJlY29nbml0aW9uLCBldGMuIGN1c3Rv bWl6YXRpb25zIHRoYXQgeW91IG1pZ2h0IGhhdmUgaW4geW91cgorOzsgaG9va3MgYXJlIG5vdCBh cHBsaWVkLiAgQXMgYSByZXN1bHQsIHlvdXIgY29kZSBibG9ja3MgbWlnaHQgYXBwZWFyCis7OyBk aWZmZXJlbnQgaW4gYG1hcmtkb3duLXRzLW1vZGUnIG1vZGUgdGhhbiBpbiBuYXRpdmUgbWFqb3Ig bW9kZQorOzsgYnVmZmVycy4gIE5vdCBydW5uaW5nIGhvb2tzIGF2b2lkcyB0aGUgY29zdCBvZiBl YWNoIG1vZGUgaG9vayBhbmQKKzs7IGF2b2lkcyBwb3RlbnRpYWwgcmVjdXJzaXZlIHRyZWVzaXQg Y2FsbGJhY2sgaXNzdWVzLgorOzsKKzs7OzsgQ29kZSBCbG9jayBDb21tYW5kcworOzsKKzs7IFNv bWUgY29tbW9uIGNvbW1hbmRzIHdpbGwgb3BlcmF0ZSB3aXRoaW4gYSBjb2RlIGJsb2NrIGFuZCBp biBpdHMKKzs7IG1vZGUuICBUaGVzZSBvcGVyYXRlIGluIGFuIGluZGlyZWN0IGJ1ZmZlciBhbmQg c29tZSBjb21tYW5kcyBtYXkKKzs7IG9wZXJhdGUgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdG8gdGhl IHNhbWUgY29tbWFuZHMgaW52b2tlZCBpbiBhIG5hdGl2ZQorOzsgbW9kZSBidWZmZXIuICBgaW5k ZW50LWZvci10YWItY29tbWFuZCcgbWF5IGludm9rZQorOzsgYGNvbXBsZXRpb24tYXQtcG9pbnQn IHVuZGVyIHRoZSBjb3ZlcnMgYW5kIG1heSByZXR1cm4gcmVzdWx0cyBmcm9tCis7OyB0aGUgc3Vy cm91bmRpbmcgTWFya2Rvd24gYnVmZmVyIGluc3RlYWQgb2YgdGhlIGNvZGUgYmxvY2sncyBjb250 ZXh0LgorOzsgWW91IGNhbiBpbnZva2UgYGNvbXBsZXRpb24tYXQtcG9pbnQnIGRpcmVjdGx5IGJ5 IHVzaW5nIGl0cyBrZXkKKzs7IGJpbmRpbmcsIGBDLU0taWAuCis7OworOzs7OyBQaXBlIFRhYmxl cworOzsKKzs7IFRoZXNlIGFyZSBhIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biAoR0ZNKSBleHRl bnNpb24gYW5kIGFyZSBhIGRlCis7OyBmYWN0byBzdGFuZGFyZCBnaXZlbiB0aGVpciBwb3B1bGFy aXR5IGFuZCBpbXBsZW1lbnRhdGlvbnMgYWNyb3NzCis7OyBwcm9kdWN0cy4gIFRoZXkgbWlnaHQg YXMgd2VsbCBiZSBmb2xkZWQgaW50byB0aGUgQ29tbW9uTWFyayBzdGFuZGFyZC4KKzs7Cis7OyBB IHBpcGUgdGFibGUgaXMgYSByZWN0YW5nbGUgb2YgdGV4dCBzdXJyb3VuZGVkIHRvIHRoZSBlYXN0 IGFuZCB3ZXN0Cis7OyBieSBwaXBlIHN5bWJvbHMgYW5kIHdoZXJlIHBpcGVzIHNlcGFyYXRlIGNv bHVtbnMuICBJdCBoYXMgYSBoZWFkZXIKKzs7IHJvdyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBo ZWFkZXIgYWxpZ25tZW50IHJvdywgYm90aCBvZiB3aGljaCBtdXN0Cis7OyBjb250YWluIHRoZSBz YW1lIG51bWJlciBvZiBjZWxscy4gIEJvZHkgcm93cyBhcmUgb3B0aW9uYWwuICBBIHRhYmxlCis7 OyBlbmRzIHdpdGggYSBibGFuayBsaW5lIG9yIGF0IHRoZSBzdGFydCBvZiBhIG5ldyBNYXJrZG93 biBibG9jaworOzsgZWxlbWVudC4KKzs7Cis7OyBUaGUgaGVhZGVyIGFsaWdubWVudCByb3cgY29s dW1uIG11c3QgaGF2ZSBhIG1pbmltdW0gb2YgdGhyZWUgaHlwaGVucworOzsgd2hpY2ggaW5kaWNh dGVzIGRlZmF1bHQgYWxpZ25tZW50IChpLmUuLCB3aGF0ZXZlciBhIHJlbmRlcmVyCis7OyBjaG9v c2VzKS4gIFRvIGluZGljYXRlIGxlZnQgYWxpZ25tZW50LCBwcmVmaXggdGhlIGh5cGhlbiBzdHJp bmcgd2l0aAorOzsgYSBjb2xvbiBsaWtlIHRoaXMgOi0tLS4gIEZvciBjZW50ZXIgYWxpZ25tZW50 LCBwcmVmaXggYW5kIHN1ZmZpeCB3aXRoCis7OyBjb2xvbnMgbGlrZSB0aGlzIDotLS06LiAgRm9y IHJpZ2h0IGFsaWdubWVudCwgc3VmZml4IHdpdGggYSBjb2xvbgorOzsgbGlrZSB0aGlzIC0tLTou Cis7OworOzsgRWFjaCB0YWJsZSBoZWFkZXIgb3IgYm9keSBjZWxsIGNhbiBjb250YWluIHRoZSB1 c3VhbCBNYXJrZG93biBpbmxpbmUKKzs7IHN0eWxlIGluZGljYXRvcnMuICBBIGNlbGwgY2Fubm90 IGNvbnRhaW4gYSBibG9jayBlbGVtZW50IHN1Y2ggYXMgYQorOzsgaGVhZGluZ3MsIHRoZW1hdGlj IGJyZWFrcywgYmxvY2sgcXVvdGVzLCBmZW5jZWQgY29kZSBibG9ja3MuCis7OworOzsgVGFibGUg Y2VsbHMgZG8gbm90IG5lZWQgdG8gYWxpZ24gdmlzdWFsbHk7IGkuZS4sIHRoZSBwaXBlIHN5bWJv bHMgZG8KKzs7IG5vdCBuZWVkIHRvIGxpbmUgdXAgdmVydGljYWxseS4gIFRoZSB0cmVlLXNpdHRl ciBwYXJzZXIgYW5kIHJlbmRlcmVycworOzsgZGV0ZWN0IGNlbGwgYm91bmRhcmllcyB1c2luZyBw aXBlIHN5bWJvbHMsIG5vdCB0aGVpciByZWxhdGl2ZSBhbGlnbm1lbnQuCis7OworOzsgSWYgeW91 IHdhbnQgdG8gaW5jbHVkZSB3aGF0IGxvb2tzIGxpa2UgY29kZSwgeW91IGNhbiB1c2UgYmFja3Rp Y2tzIHRvCis7OyB3cmFwIHN1Y2ggdGV4dCBhbGEgYHRoaXMgaXMgY29kZWAuICBUaGlzIG1vZGUg d2lsbCBub3QgZm9udGlmeSBzdWNoCis7OyBjb2RlLgorOzsKKzs7IElmIHlvdSB3YW50IHRvIGlu Y2x1ZGUgYSBwaXBlIHN5bWJvbCBpbiBhIGNlbGwsIGVzY2FwZSBpdCB0aHVzbHkgXHwuCis7Owor OzsgVGVjaG5pY2FsbHksIGJvZHkgcm93cyBkbyBub3QgbmVlZCB0byBjb250YWluIHRoZSBzYW1l IG51bWJlciBvZgorOzsgY2VsbHMgYXMgdGhlIGhlYWRlciBoYXMgY29sdW1ucyBhbmQgcm93cyBk byBub3QgbmVlZCB0byBzaGFyZSB0aGUKKzs7IHNhbWUgbnVtYmVyIG9mIGNlbGxzIGFtb25nIHRo ZW1zZWx2ZXMuICBOb3RlOiBNYW55IHJlbmRlcmVycyBnZXQKKzs7IGNvbmZ1c2VkIGlmIHRoZSB0 YWJsZSBpcyAicmFnZ2VkIiB3aXRoIGFuIHVuZXZlbiBudW1iZXIgb2YgY29sdW1ucworOzsgYW1v bmcgcm93cy4gIFNvbWUgcmVuZGVyZXJzIHdpbGwgaW5zZXJ0IGVtcHR5IGNlbGxzIG9uIGEgcm93 IHRoYXQKKzs7IGNvbnRhaW5zIGZld2VyIGNlbGxzIHRoYW4gdGhlIGhlYWRlciBoYXMgY29sdW1u cy4gIFNvbWUgZWxpZGUgY2VsbHMKKzs7IHRoYXQgZXhjZWVkIHRoZSBudW1iZXIgb2YgY29sdW1u cyBpbiB0aGUgaGVhZGVyLgorOzsKKzs7OzsgUGlwZSBUYWJsZSBSZWNvbW1lbmRhdGlvbnMKKzs7 Cis7OyAtIEFsd2F5cyB1c2UgcGlwZSBzeW1ib2xzIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIGVh Y2ggdGFibGUgbGluZS4KKzs7IC0gVXNlIGEgdW5pZm9ybSBudW1iZXIgb2YgY29sdW1ucyBzcGFu bmluZyB0aGUgdGFibGUuCis7OyAtIElmIHlvdSBkZXRlY3QgYSBwYXJzaW5nIGVycm9yIHdoaWNo IHByZXNlbnRzIGFzIGRpZmZlcmVudAorOzsgICBmb250aWZpY2F0aW9uIGFuZCB3aGljaCBpcyBv ZnRlbiBjYXVzZWQgYnkgYW4gZW1wdHkgZmlyc3QgY2VsbCBvbiB0aGUKKzs7ICAgZmluYWwgcm93 LCB0cnkgcHV0dGluZyBzb21lIGNoYXJhY3RlcnMgaW4gdGhhdCBjZWxsLgorOzsgLSBSZW5kZXJl cnMgb2Z0ZW4gZXhjbHVkZSBjZXJ0YWluIGVtcHR5IGNlbGxzIHN1Y2ggYXMgYW4gImVtcHR5IiBm aW5hbAorOzsgICBjZWxsIGluIGEgdGFibGUuICBGb2xsb3cgdGhlIG5leHQgaXRlbSB0byBhdm9p ZCB0aGlzLgorOzsgLSBJZiB5b3UgbmVlZCB0aGF0IGNlbGwgdG8gYXBwZWFyIGJsYW5rIGFuZCBh cmUgY29udmVydGluZyB0byBIVE1MLAorOzsgICB0cnkgdXNpbmcgYSBub24tcHJpbnRpbmcgSFRN TCBlbnRpdHksIHN1Y2ggYXMgYSBub24tYnJlYWtpbmcgc3BhY2UKKzs7ICAgIiZuYnNwOyIsIHdo aWNoIHBhcnNlIGFzIGNvbmNyZXRlIGNoYXJhY3RlcnMgeWV0IHJlbmRlciBhcyBibGFuay4KKzs7 IC0gSFRNTCBjb21tZW50cyA8IS0tIC0tPiBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgbm9uLWJsYW5r IGNoYXJhY3RlcgorOzsgICBzdHJpbmcgdGhhdCBkb2VzIG5vdCBnZXQgcmVuZGVyZWQuICBUaGVz ZSBhcmUgY29uc2lkZXJlZCBjZWxsIHRleHQKKzs7ICAgYW5kIHdoZW4gcGxhY2VkIGF0IHRoZSBl bmQgb2YgYSByb3csIHRoYXQgcm93J3MgbnVtYmVyIG9mIGNvbHVtbnMgaXMKKzs7ICAgaW5jcmVh c2VkIGFuZCBtaWdodCBleGNlZWQgdGhlIG51bWJlciBvZiBoZWFkZXIgY29sdW1ucy4KKzs7IC0g VGhlcmUgYXJlIHRyZWUtc2l0dGVyIHBhcnNlciBxdWlya3MuICBDb21tYW5kcyBzdWNoIGFzCis7 OyAgIGBtYXJrZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uJyBhbmQgYG1hcmtkb3duLXRzLXRh YmxlLW1vdmUtY29sdW1uJworOzsgICBmb2xsb3cgdGhlIHBhcnNlciB0cmVlIGFuZCBjYW4gbGVh ZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMgc28gZm9sbG93Cis7OyAgIHRoZXNlIHJlY29tbWVuZGF0 aW9ucyBhbmQgdGFibGUgb3BlcmF0aW9ucyBzaG91bGQgYmUgYXMgZXhwZWN0ZWQuCis7OworOzs7 OyBUcmVlIFNpdHRlciBCdWdzCis7OworOzsgYG1hcmtkb3duLXRzLW1vZGUnIHJlbGllcyBvbiB0 aGUgdW5kZXJseWluZyB0cmVlLXNpdHRlciBsaWJyYXJ5IGluCis7OyBFbWFjcyAoY2hvc2VuIGF0 IGl0cyBidWlsZCB0aW1lKSwgYW5kIGxhbmd1YWdlIGdyYW1tYXJzIHlvdSBoYXZlCis7OyBpbnN0 YWxsZWQuICBUaGVyZSBhcmUga25vd24gYW5kIHJlcG9ydGVkIGJ1Z3Mgd2hpY2ggbmVnYXRpdmVs eSBhZmZlY3QKKzs7IGNlcnRhaW4gZmVhdHVyZXMuICBUaGlzIG1vZGUgc2hvdWxkIGJlbmVmaXQg YXMgdGhlc2UgYnVncyBhcmUgZml4ZWQKKzs7IG9yIHdvcmtlZCBhcm91bmQuCis7OworOzsgLSBU aGUgTWFya2Rvd24gZ3JhbW1hciBpbnNlcnRzIGJsb2NrX2NvbnRpbnVhdGlvbiBub2RlcyBhcyBj aGlsZHJlbgorOzsgICBvZiBjb2RlX2ZlbmNlX2NvbnRlbnQsIHdoaWNoIGNvbmZ1c2VzIGJvdGgg dGhlIGluc3BlY3RvciBhbmQgdGhlCis7OyAgIGVtYmVkZGVkIHBhcnNlci4gIFRoaXMgYWZmZWN0 cyBjb2RlIGJsb2NrcyBpbnNpZGUgYmxvY2sgcXVvdGVzLgorOzsKKzs7IC0gSFRNTCBibG9jayB0 eXBlIDQgKGA8IScgZm9sbG93ZWQgYnkgYW4gdXBwZXJjYXNlIGxldHRlciwgZS5nLiwKKzs7ICAg YDwhRE9DVFlQRSBodG1sPicpIGNhdXNlcyB0aGUgcGFyc2VyIHRvIGNvbnN1bWUgYWxsIHN1YnNl cXVlbnQKKzs7ICAgY29udGVudC4gIExvd2VyY2FzZSBgPCFkb2N0eXBlIGh0bWw+JyB3b3JrcyBh cyBhIHdvcmthcm91bmQuCis7OyAgIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVy LWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3duL2lzc3Vlcy8yMzM+LgorOzsKKzs7IC0gU3Vw ZXJzY3JpcHQgKGBedGV4dF4nKSBhbmQgc3Vic2NyaXB0IChgfnRleHR+Jykgc3ludGF4IGlzIG5v dAorOzsgICBzdXBwb3J0ZWQgYnkgdGhlIGdyYW1tYXIuICBObyBFWFRFTlNJT05fIGJ1aWxkIGZs YWcgZXhpc3RzIGZvcgorOzsgICB0aGlzLiAgVGhpcyBpcyBQYW5kb2MgLyBQSFAgTWFya2Rvd24g RXh0cmEgc3ludGF4LCBub3QgQ29tbW9uTWFyaworOzsgICBvciBHRk0uCis7OworOzsgLSBPcmRl cmVkIChudW1iZXJlZCkgbGlzdHMgZG8gbm90IG5lc3QgYnkgaW5kZW50YXRpb24uICBJbmRlbnRp bmcKKzs7ICAgYSBgMS4nIGl0ZW0gdW5kZXIgYW5vdGhlciBvcmRlcmVkIGl0ZW0gZG9lcyBub3Qg cHJvZHVjZSBhIG5lc3RlZAorOzsgICBsaXN0IG5vZGU7IHRoZSBwYXJzZXIgZWl0aGVyIHRyZWF0 cyBpdCBhcyBhIGZsYXQgc2libGluZyBvcgorOzsgICBhYnNvcmJzIGl0IGludG8gdGhlIHBhcmVu dCBpdGVtJ3MgcGFyYWdyYXBoIGFzIGEKKzs7ICAgYmxvY2tfY29udGludWF0aW9uLiAgVW5vcmRl cmVkIChgLScsIGAqJywgYCsnKSBsaXN0cyBuZXN0Cis7OyAgIGNvcnJlY3RseS4gIERlbW90ZS9w cm9tb3RlIG9mIG9yZGVyZWQgbGlzdCBpdGVtcyBpcyB0aGVyZWZvcmUKKzs7ICAgZGlzYWJsZWQu Cis7OworOzsgLSBSZW51bWJlcmluZyBvcmRlcmVkIGxpc3RzIChgbWFya2Rvd24tdHMtcmVudW1i ZXItbGlzdCcpIG1heSBvbmx5Cis7OyAgIGFmZmVjdCBpdGVtcyBmcm9tIHBvaW50IGRvd253YXJk IGlmIHRoZSBwYXJzZXIgc3BsaXRzIGEgc2luZ2xlCis7OyAgIGxpc3QgaW50byBzZXBhcmF0ZSBg bGlzdCcgbm9kZXMsIG9yIG1heSBjb250aW51ZSBudW1iZXJpbmcgYWNyb3NzCis7OyAgIHR3byBz ZXBhcmF0ZSBsaXN0cyBpZiB0aGUgcGFyc2VyIG1lcmdlcyB0aGVtIGludG8gb25lIG5vZGUuCis7 OworOzsgLSBFbXB0eSBsaW5lcyBmb2xsb3dpbmcgYW4gYGluZGVudGVkX2NvZGVfYmxvY2snIG1h eSBiZSBjbGFpbWVkIGJ5Cis7OyAgIHRoZSBwYXJzZXIgYXMgY29udGludWF0aW9uIGxpbmVzIG9m IHRoYXQgYmxvY2ssIHJhdGhlciB0aGFuIGJlaW5nCis7OyAgIHRyZWF0ZWQgYXMgYmxhbmsgc2Vw YXJhdG9ycy4KIDs7Cis7OyAtIFBpcGUgdGFibGVzIGFyZSBpbmNvbnNpc3RlbnRseSBwYXJzZWQu ICBXaGl0ZXNwYWNlIGlzIGNvcnJlY3RseQorOzsgICB0cmltbWVkIGF0IHRoZSBzdGFydCBvZiBh IGNlbGwgY29udGVudCBidXQgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcworOzsgICBpbmNvcnJlY3Rs eSBpbmNsdWRlZC4gIEVtcHR5IGNlbGxzIGNhbiBjb250YWluIHVuZXZlbiAicmFnZ2VkIiByb3cK Kzs7ICAgY29sdW1uIGNvbmZpZ3VyYXRpb25zIHRoYXQgY2FuIGNvbmZ1c2UgdGhlIHBhcnNlci4K Kzs7Cis7OyAgIE1hcmtkb3duIHBpcGUgdGFibGVzIHdpdGggcGFyc2luZyBpc3N1ZXM6Cis7Owor OzsgICB8Q29sdW1uIDF8Q29sdW1uIDJ8Q29sdW1uIDN8Cis7OyAgIHwtLS0tLS0tLXwtLS0tLS0t LXwtLS0tLS0tLXwKKzs7ICAgfCAgICAgICAgfCAgICAgICAgfCAgICAgICAgfAorOzsgICB8ICAg ICAgICB8ICAgICAgICB8ICAgICAgICB8IDwtLSBwYXJzZSBlcnJvcgorOzsKKzs7ICAgfENvbHVt biAxfENvbHVtbiAyfENvbHVtbiAzfAorOzsgICB8LS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS18 Cis7OyAgIHwgICAgICAgIHwgICAgICAgIHwgICAgICAgIHwKKzs7ICAgfCB4eHggICAgfCAgICAg ICAgfCAgICAgICAgfCA8LS0gcGFyc2VkIGNvcnJlY3RseQorOzsKKzs7ICAgfENvbHVtbiAxfENv bHVtbiAyfCA8LS0gMiBjb2x1bW5zIGNvcnJlY3QKKzs7ICAgfC0tLS0tLS0tfC0tLS0tLS0tfCA8 LS0gMiBjb2x1bW5zIGNvcnJlY3QKKzs7ICAgICAgICAgICAgfCAgICAgICAgfCA8LS0gMSBjb2x1 bW4gaW5jb3JyZWN0Cis7OyAgICAgICAgICAgIHwgICAgICAgIHwgPC0tIHBhcnNlIGVycm9yCis7 OyAgIHwgICAgICAgIHwgICAgICAgIHwgPC0tIG5vdCBhIHJvdyBhZnRlciB0aGUgZXJyb3IsIGFi b3ZlCis7OworOzsgICBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFy cy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMvMjQxPgorOzsgICAgICAgPGh0dHBzOi8vZ2l0 aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMv MjQyPgogCiA7OzsgQ29kZToKIAogKHJlcXVpcmUgJ3RyZWVzaXQpCiAocmVxdWlyZSAnc3Vici14 KQotKHJlcXVpcmUgJ291dGxpbmUpCiAocmVxdWlyZSAnc2VxKQorKHJlcXVpcmUgJ291dGxpbmUp CisocmVxdWlyZSAnZ290by1hZGRyKQorKHJlcXVpcmUgJ3hyZWYpCisocmVxdWlyZSAnaWNvbnMp CiAKLSh0cmVlc2l0LWRlY2xhcmUtdW5hdmFpbGFibGUtZnVuY3Rpb25zKQotCi0oYWRkLXRvLWxp c3QKLSAndHJlZXNpdC1sYW5ndWFnZS1zb3VyY2UtYWxpc3QKLSAnKG1hcmtkb3duCi0gICAiaHR0 cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVyLWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3du IgotICAgOmNvbW1pdCAiNDEzMjg1MjMxY2U4ZmE4YjExZTcwNzRiYmUyNjViNDhhYTcyNzdmOSIK LSAgIDpzb3VyY2UtZGlyICJ0cmVlLXNpdHRlci1tYXJrZG93bi9zcmMiKQotIHQpCi0oYWRkLXRv LWxpc3QKLSAndHJlZXNpdC1sYW5ndWFnZS1zb3VyY2UtYWxpc3QKLSAnKG1hcmtkb3duLWlubGlu ZQotICAgImh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRl ci1tYXJrZG93biIKLSAgIDpjb21taXQgIjQxMzI4NTIzMWNlOGZhOGIxMWU3MDc0YmJlMjY1YjQ4 YWE3Mjc3ZjkiCi0gICA6c291cmNlLWRpciAidHJlZS1zaXR0ZXItbWFya2Rvd24taW5saW5lL3Ny YyIpCi0gdCkKKzs7OyBDdXN0b21pemF0aW9uczoKIAotOzs7IEhlbHBlciBmdW5jdGlvbnMKLQot KGRlZnZhciBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tYXAKLSAgJygoImMrKyIg LiBjcHApCi0gICAgKCJjIyIgLiBjLXNoYXJwKQotICAgICgic2giIC4gYmFzaCkpCi0gICJBbGlz dCBtYXBwaW5nIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbmFtZXMgdG8gdHJlZS1zaXR0ZXIgbGFuZ3Vh Z2VzLgotCi1LZXlzIHNob3VsZCBiZSBzdHJpbmdzLCBhbmQgdmFsdWVzIHNob3VsZCBiZSBsYW5n dWFnZSBzeW1ib2xzLgotCi1Gb3IgZXhhbXBsZSwgXCJjKytcIiBpbgotCi0gICAgYGBgYysrCi0g ICAgaW50IG1haW4oKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBgYGAKLQotbWFw cyB0byB0cmVlLXNpdHRlciBsYW5ndWFnZSBgY3BwJy4iKQotCi0oZGVmdmFyIG1hcmtkb3duLXRz LWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwCi0gICcoKGJhc2ggLiBiYXNoLXRzLW1vZGUpCi0g ICAgKGMgLiBjLXRzLW1vZGUpCi0gICAgKGMtc2hhcnAgLiBjc2hhcnAtdHMtbW9kZSkKLSAgICAo Y21ha2UgLiBjbWFrZS10cy1tb2RlKQotICAgIChjcHAgLiBjKystdHMtbW9kZSkKLSAgICAoY3Nz IC4gY3NzLXRzLW1vZGUpCi0gICAgKGRvY2tlcmZpbGUgLiBkb2NrZXJmaWxlLXRzLW1vZGUpCi0g ICAgKGVsaXhpciAuIGVsaXhpci10cy1tb2RlKQotICAgIChnbyAuIGdvLXRzLW1vZGUpCi0gICAg KGdvbW9kIC4gZ28tbW9kLXRzLW1vZGUpCi0gICAgKGdvd29yayAuIGdvLXdvcmstdHMtbW9kZSkK LSAgICAoaGVleCAuIGhlZXgtdHMtbW9kZSkKLSAgICAoaHRtbCAuIGh0bWwtdHMtbW9kZSkKLSAg ICAoamF2YSAuIGphdmEtdHMtbW9kZSkKLSAgICAoamF2YXNjcmlwdCAuIGpzLXRzLW1vZGUpCi0g ICAgKGpzb24gLiBqc29uLXRzLW1vZGUpCi0gICAgKGx1YSAuIGx1YS10cy1tb2RlKQotICAgIChw aHAgLiBwaHAtdHMtbW9kZSkKLSAgICAocHl0aG9uIC4gcHl0aG9uLXRzLW1vZGUpCi0gICAgKHJ1 YnkgLiBydWJ5LXRzLW1vZGUpCi0gICAgKHJ1c3QgLiBydXN0LXRzLW1vZGUpCi0gICAgKHRvbWwg LiB0b21sLXRzLW1vZGUpCi0gICAgKHRzeCAuIHRzeC10cy1tb2RlKQotICAgICh0eXBlc2NyaXB0 IC4gdHlwZXNjcmlwdC10cy1tb2RlKQotICAgICh5YW1sIC4geWFtbC10cy1tb2RlKSkKLSAgIkFu IGFsaXN0IG9mIHN1cHBvcnRlZCBjb2RlIGJsb2NrIGxhbmd1YWdlcyBhbmQgdGhlaXIgbWFqb3Ig bW9kZS4iKQorKGRlZmdyb3VwIG1hcmtkb3duLXRzIG5pbAorICAiTWFqb3IgbW9kZSBmb3Igdmll d2luZyBhbmQgZWRpdGluZyBNYXJrZG93biBidWZmZXJzLiIKKyAgOnByZWZpeCAibWFya2Rvd24t dHMtIgorICA6Z3JvdXAgJ3RleHQKKyAgOmdyb3VwICdlZGl0aW5nCisgIDp2ZXJzaW9uICIzMS4x IikKIAogKGRlZmN1c3RvbSBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCBuaWwKICAgIk5vbi1uaWwg bWVhbnMgaGlkZSBNYXJrZG93biBtYXJrdXAgZGVsaW1pdGVycyBpbiB0aGlzIGJ1ZmZlci4iCiAg IDp0eXBlICdib29sZWFuCisgIDpsb2NhbCB0CiAgIDpzYWZlICMnYm9vbGVhbnAKLSAgOmdyb3Vw ICdtYXJrZG93bi10cykKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEu MCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZWxsaXBzaXMgbmlsCisgICJUaGUgZWxsaXBz aXMgdG8gdXNlIGluIGZvbGRlZCBoZWFkaW5ncy4KK1doZW4gbmlsLCB1c2UgdGhlIHN0YW5kYXJk IHRocmVlIGRvdHMuICBXaGVuIGEgbm9uLWVtcHR5IHN0cmluZywKK3VzZSB0aGF0IHN0cmluZyBp bnN0ZWFkLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0ICA6dGFnICJEZWZhdWx0ICguLi4pIiBu aWwpCisgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRhZyAiU3RyaW5nIiA6dmFsdWUgIiDijIQi KSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZj dXN0b20gbWFya2Rvd24tdHMtbWVudS1iYXItc2hvdyB0CisgICJOb24tbmlsIG1lYW5zIHNob3cg dGhlIE1hcmtkb3duIG1lbnUgaW4gdGhlIG1lbnUgYmFyLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAg OnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20g bWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nICdzaG93LWFsbAorICAiRGVmYXVsdCBoZWFkaW5n IGZvbGRpbmcgbGV2ZWwuIgorICA6dHlwZSAnKGNob2ljZQorICAgICAgICAgIChjb25zdCA6dGFn ICJTaG93IGV2ZXJ5dGhpbmciIHNob3ctYWxsKQorICAgICAgICAgIChjb25zdCA6dGFnICJGb2xk IGV2ZXJ5dGhpbmcsIHNob3dpbmcgdG9wLWxldmVsIGhlYWRpbmdzIiBmb2xkLWFsbCkKKyAgICAg ICAgICAoY29uc3QgOnRhZyAiRm9sZCBoZWFkaW5ncywgc2hvd2luZyBhbGwgaGVhZGluZyBsZXZl bHMiIGZvbGQtaGVhZGluZ3MpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lv biAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzIG5pbAorICAi Tm9uLW5pbCBtZWFucyBkaXNwbGF5IGlubGluZSBpbWFnZXMgYmVsb3cgaW1hZ2UgbGlua3MuIgor ICA6dHlwZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAi MS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbWFnZS1tYXgtd2lkdGggJ3dpbmRvdwor ICAiTWF4aW11bSB3aWR0aCBvZiBpbmxpbmUgaW1hZ2VzIGluIHBpeGVscy4KK1doZW4gYHdpbmRv dycsIHVzZSB0aGUgd2luZG93IGJvZHkgd2lkdGguICBXaGVuIGEgbnVtYmVyLCB1c2UKK3RoYXQg YXMgdGhlIG1heGltdW0gcGl4ZWwgd2lkdGguIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgIDp0 YWcgIldpbmRvdyB3aWR0aCIgd2luZG93KQorICAgICAgICAgICAgICAgICAobmF0bnVtIDp0YWcg IlBpeGVsIHdpZHRoIikpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIx LjAiKQogCi07OzsgRmFjZXMKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGlzcGxheS1yZW1vdGUt aW5saW5lLWltYWdlcyBuaWwKKyAgIkhvdyB0byBkaXNwbGF5IHJlbW90ZSBpbmxpbmUgaW1hZ2Vz LgorV2hlbiBuaWwsIGRvIG5vdCBkaXNwbGF5IHJlbW90ZSBpbWFnZXMuICBXaGVuIGBkb3dubG9h ZCcsIGZldGNoIHRoZQoraW1hZ2UgaW50byBhIHRlbXBvcmFyeSBidWZmZXIgYW5kIGRpc3BsYXkg aXQuCisKK1JlbW90ZSBpbWFnZXMgYXJlIHNraXBwZWQgYnkgZGVmYXVsdCBmb3Igc2VjdXJpdHku IgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiU2tpcCByZW1vdGUgaW1hZ2VzIiBuaWwp CisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJEb3dubG9hZCByZW1vdGUgaW1hZ2VzIiBk b3dubG9hZCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQor CisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3ggJygi4piRIiAuICIrIikK KyAgIklmIG1hcmt1cCBpcyBoaWRkZW4sIGRpc3BsYXkgdGhpcyBmb3IgYSBjaGVja2VkIHRhc2sg bGlzdCBtYXJrZXIuCitWYWx1ZSBmb3JtczoKKyAtIGNvbnMgKFBSRUZFUlJFRCAuIEZBTExCQUNL KTogUFJFRkVSUkVEIGlzIHVzZWQgaWYgaXRzIGZpcnN0IGNoYXJhY3RlcgorICAgcGFzc2VzIGBj aGFyLWRpc3BsYXlhYmxlLXAnLCBvdGhlcndpc2UgRkFMTEJBQ0suCisgLSBzeW1ib2wgYGljb24n OiBkZWZlciB0byB0aGUgaWNvbnMuZWwgaWNvbgorICAgYG1hcmtkb3duLXRzLWNoZWNrZWQtY2hl Y2tib3gtaWNvbic7IGN1c3RvbWl6ZSB2aWEKKyAgIFxcW2N1c3RvbWl6ZS1pY29uXS4KKyAtIG5p bDogZGlzcGxheSB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zIChzdHJp bmcgOnRhZyAiUHJlZmVycmVkIChHVUkpIikKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmlu ZyA6dGFnICJGYWxsYmFjayAoVFRZKSIpKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAi VXNlIGljb25zLmVsIGljb24iIGljb24pCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJE aXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNr YWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZpbmUtaWNvbiBtYXJrZG93bi10cy1jaGVja2VkLWNo ZWNrYm94LWljb24gbmlsCisgICcoKGltYWdlICJjaGVja2VkLnN2ZyIgOmhlaWdodCBsaW5lIDph c2NlbnQgY2VudGVyKQorICAgIChzeW1ib2wgIuKYkSIpCisgICAgKHRleHQgIisiKSkKKyAgIklj b24gdXNlZCBmb3IgYSBjaGVja2VkIHRhc2sgbGlzdCBtYXJrZXIgd2hlbiBtYXJrdXAgaXMgaGlk ZGVuLgorQ29uc3VsdGVkIG9ubHkgd2hlbiBgbWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveCcg aXMgdGhlIHN5bWJvbAorYGljb24nLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9t IG1hcmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveCAnKCLimJAiIC4gIi0iKQorICAiSWYgbWFy a3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGZvciBhbiB1bmNoZWNrZWQgdGFzayBsaXN0IG1h cmtlci4KK1ZhbHVlIGZvcm1zOgorIC0gY29ucyAoUFJFRkVSUkVEIC4gRkFMTEJBQ0spOiBQUkVG RVJSRUQgaXMgdXNlZCBpZiBpdHMgZmlyc3QgY2hhcmFjdGVyCisgICBwYXNzZXMgYGNoYXItZGlz cGxheWFibGUtcCcsIG90aGVyd2lzZSBGQUxMQkFDSy4KKyAtIHN5bWJvbCBgaWNvbic6IGRlZmVy IHRvIHRoZSBpY29ucy5lbCBpY29uCisgICBgbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94 LWljb24nOyBjdXN0b21pemUgdmlhCisgICBcXFtjdXN0b21pemUtaWNvbl0uCisgLSBuaWw6IGRp c3BsYXkgdGhlIHJhdyBtYXJrdXAuIgorICA6dHlwZSAnKGNob2ljZSAoY29ucyAoc3RyaW5nIDp0 YWcgIlByZWZlcnJlZCAoR1VJKSIpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRh ZyAiRmFsbGJhY2sgKFRUWSkiKSkKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIlVzZSBp Y29ucy5lbCBpY29uIiBpY29uKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxh eSBvcmlnaW5hbCBtYXJrdXAiIG5pbCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12 ZXJzaW9uICIxLjAiKQorCisoZGVmaW5lLWljb24gbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNr Ym94LWljb24gbmlsCisgICcoKGltYWdlICJ1bmNoZWNrZWQuc3ZnIiA6aGVpZ2h0IGxpbmUgOmFz Y2VudCBjZW50ZXIpCisgICAgKHN5bWJvbCAi4piQIikKKyAgICAodGV4dCAiLSIpKQorICAiSWNv biB1c2VkIGZvciBhbiB1bmNoZWNrZWQgdGFzayBsaXN0IG1hcmtlciB3aGVuIG1hcmt1cCBpcyBo aWRkZW4uCitDb25zdWx0ZWQgb25seSB3aGVuIGBtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2ti b3gnIGlzIHRoZSBzeW1ib2wKK2BpY29uJy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1 c3RvbSBtYXJrZG93bi10cy10aGVtYXRpYy1icmVhay1jaGFyYWN0ZXIgJyg/4pSAIC4gPy0pCisg ICJJZiBtYXJrdXAgaXMgaGlkZGVuLCBkaXNwbGF5IHRoaXMgY2hhcmFjdGVyIGZvciB0aGVtYXRp YyBicmVha3MuCitJdCBpcyByZXBlYXRlZCB0byBmaWxsIHRoZSB3aW5kb3cgd2lkdGguCitUaGUg dmFsdWUgaXMgYSBjb25zIChQUkVGRVJSRUQgLiBGQUxMQkFDSyk6IFBSRUZFUlJFRCBpcyB1c2Vk IGlmIGl0IHBhc3NlcworYGNoYXItZGlzcGxheWFibGUtcCcsIG90aGVyd2lzZSBGQUxMQkFDSyBp cyB1c2VkLgorbmlsIGRpc3BsYXlzIHRoZSByYXcgbWFya3VwLiIKKyAgOnR5cGUgJyhjaG9pY2Ug KGNvbnMgKGNoYXJhY3RlciA6dGFnICJQcmVmZXJyZWQgKEdVSSkiKQorICAgICAgICAgICAgICAg ICAgICAgICAoY2hhcmFjdGVyIDp0YWcgIkZhbGxiYWNrIChUVFkpIikpCisgICAgICAgICAgICAg ICAgIChjb25zdCA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnZlcnNp b24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rv d24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaCAnKD/CtiAuID98KQorICAiSWYgbWFya3Vw IGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGNoYXJhY3RlciBmb3IgYSBiYWNrc2xhc2ggaGFyZCBs aW5lIGJyZWFrLgorVGhlIHZhbHVlIGlzIGEgY29ucyAoUFJFRkVSUkVEIC4gRkFMTEJBQ0spOiBQ UkVGRVJSRUQgaXMgdXNlZCBpZiBpdCBwYXNzZXMKK2BjaGFyLWRpc3BsYXlhYmxlLXAnLCBvdGhl cndpc2UgRkFMTEJBQ0sgaXMgdXNlZC4KK25pbCBrZWVwcyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0 eXBlICcoY2hvaWNlIChjb25zIChjaGFyYWN0ZXIgOnRhZyAiUHJlZmVycmVkIChHVUkpIikKKyAg ICAgICAgICAgICAgICAgICAgICAgKGNoYXJhY3RlciA6dGFnICJGYWxsYmFjayAoVFRZKSIpKQor ICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxheSBvcmlnaW5hbCBtYXJrdXAiIG5p bCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVm Y3VzdG9tIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZQorICAobGFtYmRhIChuKQor ICAgIChsZXQqICgodmFsIChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVlCisgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpKQorICAg ICAgICAgICAoY2ggKGlmIChjaGFyYWN0ZXJwIHZhbCkgdmFsID98KSkpCisgICAgICAobWFrZS1z dHJpbmcgbiBjaCkpKQorICAiSWYgbWFya3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGZvciBh IHRyYWlsaW5nLXNwYWNlcyBoYXJkIGxpbmUgYnJlYWsuCitUaGUgdmFsdWUgY2FuIGJlOgorLSBh IGNoYXJhY3RlciBvciBzdHJpbmc6IHNob3duIG9uY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFp bGluZyBzcGFjZXMsCisgIHdpdGggbm8gcmVwZXRpdGlvbiAodGhlIHJlbWFpbmluZyBzcGFjZXMg c3RheSBpbnZpc2libGUpOworLSBhIGZ1bmN0aW9uOiBjYWxsZWQgd2l0aCBvbmUgYXJndW1lbnQs IHRoZSBudW1iZXIgb2YgdHJhaWxpbmcgc3BhY2VzLAorICBhbmQgbXVzdCByZXR1cm4gdGhlIHN0 cmluZyB0byBkaXNwbGF5IGluIHBsYWNlIG9mIHRoZSBydW47CistIG5pbDoga2VlcCB0aGUgcmF3 IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjaGFyYWN0ZXIgOnRhZyAiRGlzcGxheSBzcGVj aWZpZWQgY2hhcmFjdGVyIChubyByZXBldGl0aW9uKSIpCisgICAgICAgICAgICAgICAgIChzdHJp bmcgOnRhZyAiRGlzcGxheSBzcGVjaWZpZWQgc3RyaW5nIChubyByZXBldGl0aW9uKSIpCisgICAg ICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJGdW5jdGlvbiBmcm9tIGNvdW50IHRvIGRpc3Bs YXkgc3RyaW5nIikKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkRpc3BsYXkgb3JpZ2lu YWwgbWFya3VwIiBuaWwpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAi MS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1mb250aWZ5LWNvZGUtYmxvY2tzLW5hdGl2 ZWx5IHQKKyAgIk5vbi1uaWwgbWVhbnMgZm9udGlmeSBjb2RlIGJsb2NrIGNvbnRlbnRzIHVzaW5n IHRoZSBsYW5ndWFnZSdzIG1vZGUuCitXaGVuIG5vbi1uaWwsIGZlbmNlZCBjb2RlIGJsb2NrcyBh cmUgaGlnaGxpZ2h0ZWQgd2l0aCBzeW50YXggb2YgdGhlCitlbWJlZGRlZCBsYW5ndWFnZSAodmlh IHRyZWUtc2l0dGVyIGZvciBsYW5ndWFnZXMgd2l0aCBhIHRyZWUtc2l0dGVyCittb2RlLCBvciB2 aWEgY29udmVudGlvbmFsIGZvbnQtbG9jayBmb3IgdGhlIHJlc3QpLiAgV2hlbiBuaWwsIGNvZGUK K2Jsb2NrcyBrZWVwIG9ubHkgdGhlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrJyBiYWNrZ3JvdW5k IGZhY2UuICBUb2dnbGluZworZm9yIHRoZSB0cy1lbWJlZGRlZCBwYXRoIHRha2VzIGVmZmVjdCBh ZnRlciByZXN0YXJ0aW5nCitgbWFya2Rvd24tdHMtbW9kZScgaW4gdGhlIGJ1ZmZlci4iCisgIDp0 eXBlICdib29sZWFuCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAi KQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWVuYWJsZS1jb2RlLWJsb2NrLWNvbnRleHQtbW9k ZSB0CisgICJOb24tbmlsIGF1dG9tYXRpY2FsbHkgZW5hYmxlcyBgbWFya2Rvd24tdHMtY29kZS1i bG9jay1jb250ZXh0LW1vZGUnLgorSWYgbm9uLW5pbCBhbmQgYHBvaW50JyBpcyBpbiBhIGZlbmNl ZCBjb2RlIGJsb2NrLCB0aGlzIHJ1bnMKK2BpbmRlbnQtZm9yLXRhYi1jb21tYW5kJywgYG5ld2xp bmUnLCBldC5hbC4sIGluIHRoZSBtb2RlIG9mIHRoZSBjb2RlCitibG9jay4iCisgIDp0eXBlICdi b29sZWFuCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCiso ZGVmY3VzdG9tIG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLWxpZ2h0ZXIg IiBbY29kZV0iCisgICJNaW5vciBtb2RlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQt bW9kZScgbGlnaHRlciBzdHJpbmcuCitTZXQgdG8gbmlsIHRvIGRpc2FibGUgdGhlIGxpZ2h0ZXIu IgorICA6dHlwZSAnc3RyaW5nCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9u ICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWluaGliaXQtY29kZS1ibG9jay1tb2Rl LXdhcm5pbmdzIHQKKyAgIklmIG5vbi1uaWwsIGluaGliaXQgY29kZS1ibG9jayBtYWpvci1tb2Rl IG1lc3NhZ2VzIGFuZCB3YXJuaW5ncy4KK1NvbWUgZmVuY2VkIGNvZGUtYmxvY2sgbWFqb3IgbW9k ZXMgcHJvZHVjZSBtZXNzYWdlcyBvciB3YXJuaW5ncyB3aGljaAoraGF2ZSBsaXR0bGUgcmVsZXZh bmNlIHRvIE1hcmtkb3duIGJ1ZmZlcnMuICBVc2UgdGhpcyBvcHRpb24gdG8gaW5oaWJpdAordGhl bS4gIE1ham9yIG1vZGVzIG1heSBiZSBlbmFibGVkIGZvciBmb250aWZpY2F0aW9uIG9yIGVkaXRp bmcgaW4gdGhlCittb2RlJ3MgY29udGV4dC4iCisgIDp0eXBlICdib29sZWFuCisgIDp2ZXJzaW9u ICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmdmFyIHdhcm5pbmctbWlu aW11bS1sZXZlbCkKKworKGRlZm1hY3JvIG1hcmtkb3duLXRzLS1pbmhpYml0LW1lc3NhZ2VzLWFu ZC13YXJuaW5ncyAodmFyICZyZXN0IGJvZHkpCisgICJFeGVjdXRlIEJPRFkgd2l0aCBtZXNzYWdl cyBhbmQgd2FybmluZ3MgaW5oaWJpdGVkLgorVkFSIGlzIGEgdmFyaWFibGUncyBzeW1ib2w7IGUu Zy4sCitcXD0nbWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MuICBJ ZiB0aGUgc3ltYm9sJ3MgdmFsdWUKK2lzIG5vbi1uaWwsIGRvIHdoYXQgaXQgc2F5cyBvbiB0aGUg dGluLgorSW5oaWJpdCBtZXNzYWdlcyBpbiB0aGUgZWNobyBhcmVhLgorSW5oaWJpdCBtZXNzYWdl cyBpbiB0aGUgbG9nLgorSW5oaWJpdCB3YXJuaW5ncyB3aXRoIGxldmVsIDwgOmVycm9yLiIKKyAg KGRlY2xhcmUgKGluZGVudCBkZWZ1bikpCisgIGAobGV0KiAoKHZhbCAoc3ltYm9sLXZhbHVlICx2 YXIpKQorICAgICAgICAgIChpbmhpYml0LW1lc3NhZ2UgdmFsKQorICAgICAgICAgOzsgQWxzbyBp bmhpYml0IGxvZ2dpbmcgdG8gKk1lc3NhZ2VzKgorICAgICAgICAgKG1lc3NhZ2UtbG9nLW1heCAo aWYgdmFsIG5pbCBtZXNzYWdlLWxvZy1tYXgpKQorICAgICAgICAgKHdhcm5pbmctbWluaW11bS1s ZXZlbAorICAgICAgICAgIChpZiB2YWwgOmVycm9yIHdhcm5pbmctbWluaW11bS1sZXZlbCkpKQor ICAgICAocHJvZ24gLEBib2R5KSkpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGVmYXVsdC1j b2RlLWJsb2NrLW1vZGUgJ3RleHQtbW9kZQorICAiRGVmYXVsdCBtb2RlIGZvciBhbm9ueW1vdXMg Y29kZSBibG9ja3MuIgorICA6dHlwZSAnKGNob2ljZQorICAgICAgICAgIChjb25zdCAgOnRhZyAi VGV4dCBtb2RlIiB0ZXh0LW1vZGUpCisgICAgICAgICAgKGNvbnN0ICA6dGFnICJGdW5kYW1lbnRh bCBtb2RlIiBmdW5kYW1lbnRhbC1tb2RlKQorICAgICAgICAgIChzeW1ib2wgOnRhZyAiT3RoZXIg bW9kZSBzeW1ib2wiCisgICAgICAgICAgICAgICAgICA6dmFsaWRhdGUgKGxhbWJkYSAod2lkKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHZhbCAod2lkZ2V0LXZhbHVlIHdp ZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5sZXNzIChhbmQgdmFsIChl cSAnc3ltYm9sICh0eXBlLW9mIHZhbCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh3aWRnZXQtcHV0IHdpZCA6ZXJyb3IgIk11c3QgYmUgYSBub24tbmlsIHN5bWJvbCIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkKSkpKSkKKyAgOnZlcnNpb24gIjMx LjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMt dGFibGUtZGVmYXVsdC1jb2x1bW4td2lkdGggNQorICAiQ29sdW1uIHdpZHRoIGZvciBuZXcgY29s dW1ucy4KK1lvdSBtYXkgbWFrZSB0aGlzIHdpZGVyLCBidXQgc21hbGxlciB0aGFuIDUgaXMgbm90 IHJlY29tbWVuZGVkLiIKKyAgOnR5cGUgJ2ludGVnZXIKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpw YWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZW5hYmxlLXRh YmxlLW1vZGUgdAorICAiTm9uLW5pbCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYG1hcmtkb3duLXRz LXRhYmxlLW1vZGUnLgorSWYgbm9uLW5pbCwgZW5hYmxlIGBtYXJrZG93bi10cy10YWJsZS1tb2Rl JyBpZiBgcG9pbnQnIGlzIGluIGEgTWFya2Rvd24KK3RhYmxlLiIKKyAgOnR5cGUgJ2Jvb2xlYW4K KyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0 b20gbWFya2Rvd24tdHMtdGFibGUtYXV0by1hbGlnbiAnKGNlbGwtbmF2aWdhdGlvbiB0cmFuc3Bv c2UpCisgICJBdXRvbWF0aWNhbGx5IGFsaWduIHRoZSB0YWJsZSBhdCBwb2ludCBkdXJpbmcgdGhl c2Ugb3BlcmF0aW9ucy4KK0lmIHQsIHRyaWdnZXIgb24gYWxsIHN1cHBvcnRlZCBvcGVyYXRpb25z LgorSWYgbmlsLCBkbyBub3QgYXV0byBhbGlnbi4KK090aGVyd2lzZSwgaXQgaXMgYSBsaXN0IG9m IHN5bWJvbHMgcmVwcmVzZW50aW5nIHRhYmxlIG9wZXJhdGlvbnMuIgorICA6dHlwZSAnKGNob2lj ZQorICAgICAgICAgIChjb25zdCA6dGFnICJEbyBub3QgYXV0b21hdGljYWxseSBhbGlnbiIgbmls KQorICAgICAgICAgIChjb25zdCA6dGFnICJBbHdheXMgYXV0b21hdGljYWxseSBhbGlnbiIgdCkK KyAgICAgICAgICAoc2V0CisgICAgICAgICAgIChjb25zdCA6dGFnICJDZWxsIG5hdmlnYXRpb24i IGNlbGwtbmF2aWdhdGlvbikKKyAgICAgICAgICAgKGNvbnN0IDp0YWcgIlRyYW5zcG9zZSIgdHJh bnNwb3NlKSkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQor CisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWZlYXR1cmVzICcoanVzdGlmeS1j ZWxscykKKyAgIlVzZSB0aGVzZSBvcHRpb25hbCBmZWF0dXJlcyB3aGVuIGFsaWduaW5nIGEgdGFi bGUuCitBbGlnbmluZyBhIHRhYmxlIGFsaWducyBlYWNoIGNvbHVtbiB0byB0aGUgd2lkdGggb2Yg aXRzIHdpZGVzdCBjZWxsLiAgSXQKK2NhbiBhbHNvIGp1c3RpZnkgZWFjaCBjZWxsIGFjY29yZGlu ZyB0byB0aGUgdGFibGUncyBkZWxpbWl0ZXIgbGluZSBsZWZ0LAorY2VudGVyLCBvciByaWdodC1o YW5kIGp1c3RpZmljYXRpb24gcnVsZXMuCisKK0N1c3RvbWl6aW5nIHRoaXMgdXNlciBvcHRpb24g aXMgbW9zdCB1c2VmdWwgd2hlbiB0aGUgdXNlciBvcHRpb24KK2BtYXJrZG93bi10cy10YWJsZS1h dXRvLWFsaWduJyBpcyBlbmFibGVkIGFuZCB0byBhdm9pZCBoYXZpbmcgdG8gdXNlIGEKK3ByZWZp eCBhcmd1bWVudCBiZWZvcmUgZXZlcnkgYXV0by1hbGlnbm1lbnQgb3BlcmF0aW9uLgorCitJZiB0 LCBlbmFibGUgYWxsIG9wdGlvbmFsIGFsaWdubWVudCBvcGVyYXRpb25zLgorSWYgbmlsLCBvcGVy YXRpb25zIGFyZSBlbmFibGVkIGJleW9uZCBiYXNpYyBjb2x1bW4gYWxpZ25tZW50LgorT3RoZXJ3 aXNlLCBpdCBpcyBhIGxpc3Qgb2Ygc3ltYm9scy4iCisgIDp0eXBlICcoY2hvaWNlCisgICAgICAg ICAgKGNvbnN0IDp0YWcgIk5vIG9wdGlvbmFsIGZlYXR1cmVzIiBuaWwpCisgICAgICAgICAgKGNv bnN0IDp0YWcgIkFsbCBvcHRpb25hbCBmZWF0dXJlcyIgdCkKKyAgICAgICAgICAoc2V0CisgICAg ICAgICAgIChjb25zdCA6dGFnICJKdXN0aWZ5IGNlbGxzIiBqdXN0aWZ5LWNlbGxzKSkpCisgIDp2 ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1h cmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbGlnaHRlciAiIFt0YWJsZV0iCisgICJNaW5vciBtb2Rl IGBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlJyBsaWdodGVyIHN0cmluZy4KK1NldCB0byBuaWwg dG8gZGlzYWJsZSB0aGUgbGlnaHRlci4iCisgIDp0eXBlICdzdHJpbmcKKyAgOnZlcnNpb24gIjMx LjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKzs7OyBGYWNlczoKIAogKGRlZmdyb3Vw IG1hcmtkb3duLXRzLWZhY2VzIG5pbAotICAiRmFjZXMgdXNlZCBpbiBNYXJrZG93biBUUyBNb2Rl LiIKKyAgIkZhY2VzIHVzZWQgYnkgTWFya2Rvd24tVFMuIgogICA6Z3JvdXAgJ21hcmtkb3duLXRz LWZhY2VzCiAgIDpncm91cCAnZmFjZXMpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWRlbGltaXRl ciAnKCh0ICg6aW5oZXJpdCBzaGFkb3cpKSkKLSAgIkZhY2UgZm9yIHRoZSAjIGJlZm9yZSBNYXJr ZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3IgdGhlICMgYmVmb3JlIE1hcmtkb3duIGhlYWRp bmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5n LTEgJygodCAoOmluaGVyaXQgb3V0bGluZS0xKSkpCi0gICJGYWNlIGZvciBmaXJzdCBsZXZlbCBN YXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3IgZmlyc3QgbGV2ZWwgTWFya2Rvd24gaGVh ZGluZ3MuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLXNldGV4 dC1oZWFkaW5nICcoKHQgKDppbmhlcml0IG1hcmtkb3duLXRzLWhlYWRpbmctMSkpKQotICAiRmFj ZSBmb3Igc2V0ZXh0IE1hcmtkb3duIGhlYWRpbmdzIChoZWFkaW5ncyB1bmRlcmxpbmVkIGJ5ID09 PSBvciAtLS0pLiIpCisgICJGYWNlIGZvciBzZXRleHQgTWFya2Rvd24gaGVhZGluZ3MgKGhlYWRp bmdzIHVuZGVybGluZWQgYnkgPT09IG9yIC0tLSkuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChk ZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctMiAnKCh0ICg6aW5oZXJpdCBvdXRsaW5lLTIpKSkK LSAgIkZhY2UgZm9yIHNlY29uZCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBm b3Igc2Vjb25kIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQog CiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTMgJygodCAoOmluaGVyaXQgb3V0bGluZS0z KSkpCi0gICJGYWNlIGZvciB0aGlyZCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFj ZSBmb3IgdGhpcmQgbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAiMzEuMSIp CiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctNCAnKCh0ICg6aW5oZXJpdCBvdXRsaW5l LTQpKSkKLSAgIkZhY2UgZm9yIGZvdXJ0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAi RmFjZSBmb3IgZm91cnRoIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMx LjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTUgJygodCAoOmluaGVyaXQgb3V0 bGluZS01KSkpCi0gICJGYWNlIGZvciBmaWZ0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQor ICAiRmFjZSBmb3IgZmlmdGggbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAi MzEuMSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctNiAnKCh0ICg6aW5oZXJpdCBv dXRsaW5lLTYpKSkKLSAgIkZhY2UgZm9yIHNpeHRoIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIp CisgICJGYWNlIGZvciBzaXh0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iCisgIDp2ZXJzaW9u ICIzMS4xIikKIAotKGRlZmZhY2UgbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIgJygodCAoOmluaGVy aXQgc2hhZG93KSkpCi0gICJGYWNlIGZvciBNYXJrZG93biBsaXN0IG1hcmtlcnMgbGlrZSAtIGFu ZCAqLiIpCisoZGVmZmFjZSBtYXJrZG93bi10cy1lbXBoYXNpcyAnKCh0ICg6aW5oZXJpdCBpdGFs aWMpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGVtcGhhc2lzIChpdGFsaWMpIHRleHQuIgorICA6 dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWJvbGQgJygodCAoOmluaGVy aXQgYm9sZCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gc3Ryb25nIGVtcGhhc2lzIChib2xkKSB0 ZXh0LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1zdHJpa2V0 aHJvdWdoICcoKHQgKDpzdHJpa2UtdGhyb3VnaCB0KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBz dHJpa2V0aHJvdWdoIHRleHQuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZmYWNlIG1hcmtk b3duLXRzLWJsb2NrLXF1b3RlICcoKHQgKDppbmhlcml0IGl0YWxpYykpKQotICAiRmFjZSBmb3Ig TWFya2Rvd24gYmxvY2sgcXVvdGVzLiIpCisgICJGYWNlIGZvciBNYXJrZG93biBibG9jayBxdW90 ZXMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWxpbmsgJygo dCAoOmluaGVyaXQgbGluaykpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gbGluayB0ZXh0IGFuZCBp bWFnZSBkZXNjcmlwdGlvbnMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtk b3duLXRzLWxpbmstZGVzdGluYXRpb24gJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1m YWNlKSkpCisgICJGYWNlIGZvciBNYXJrZG93biBsaW5rIGRlc3RpbmF0aW9ucyAoVVJMcykuIgor ICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWNvZGUtc3BhbiAnKCh0 ICg6aW5oZXJpdCBmb250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3du IGlubGluZSBjb2RlIHNwYW5zLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJr ZG93bi10cy1jb2RlLWJsb2NrICcoKHQgKDpleHRlbmQgdCkpKQorICAiRmFjZSBmb3IgTWFya2Rv d24gZmVuY2VkIGNvZGUgYmxvY2sgY29udGVudC4KK0FsdGVyIHRoaXMgZmFjZSB0byBhZGQgYSBg OmJhY2tncm91bmQnIGZvciBhIHZpc3VhbGx5IGRpc3RpbmN0Citjb2RlIGJsb2NrIHJlZ2lvbiwg ZS5nLjoKKyAgKHNldC1mYWNlLWF0dHJpYnV0ZSBcXD0nbWFya2Rvd24tdHMtY29kZS1ibG9jayBu aWwgOmJhY2tncm91bmQgXCJncmF5OTVcIikiCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZh Y2UgbWFya2Rvd24tdHMtaW4tY29kZS1ibG9jayAnKCh0ICg6ZXh0ZW5kIHQpKSkKKyAgIkZhY2Ug Zm9yIHdoZW4gcG9pbnQgaXMgaW4gYSBNYXJrZG93biBjb2RlIGJsb2NrLgorU2VlIGBtYXJrZG93 bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZScuCitBbHRlciB0aGlzIGZhY2UgdG8gYWRk IGEgYDpiYWNrZ3JvdW5kJyBmb3IgYSB2aXN1YWxseSBkaXN0aW5jdCB0YWJsZQorcmVnaW9uLCBl LmcuOgorICAoc2V0LWZhY2UtYXR0cmlidXRlIFxcPSdtYXJrZG93bi10cy1pbi1jb2RlLWJsb2Nr IDpiYWNrZ3JvdW5kIFwiZ3JheTk1XCIpIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNl IG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbWFya3VwLWhpZGRlbgorICAnKCgoKGJhY2tncm91bmQg bGlnaHQpKSAoOmJhY2tncm91bmQgImdyYXk5NSIgOmV4dGVuZCB0KSkKKyAgICAoKChiYWNrZ3Jv dW5kIGRhcmspKSAgKDpiYWNrZ3JvdW5kICJncmF5MTUiIDpleHRlbmQgdCkpKQorICAiRmFjZSBm b3IgTWFya2Rvd24gZmVuY2VkIGNvZGUgYmxvY2sgY29udGVudCB3aGVuIG1hcmt1cCBpcyBoaWRk ZW4uCitVc2VkIGluc3RlYWQgb2YgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2snIHdoZW4gYG1hcmtk b3duLXRzLWhpZGUtbWFya3VwJworaXMgbm9uLW5pbC4iCisgIDp2ZXJzaW9uICIzMS4xIikKKwor KGRlZmZhY2UgbWFya2Rvd24tdHMtaW5kZW50ZWQtY29kZS1ibG9jayAnKCh0ICg6aW5oZXJpdCBm b250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGluZGVudGVkIGNv ZGUgYmxvY2tzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1o dG1sLXRhZyAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLW1hcmt1cC1mYWNlKSkpCisgICJG YWNlIGZvciBpbmxpbmUgSFRNTCB0YWdzIGluIE1hcmtkb3duLiIKKyAgOnZlcnNpb24gIjMxLjEi KQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1odG1sLWJsb2NrICcoKHQgKDppbmhlcml0IGZvbnQt bG9jay1kb2MtbWFya3VwLWZhY2UpKSkKKyAgIkZhY2UgZm9yIEhUTUwgYmxvY2tzIGluIE1hcmtk b3duLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10aGVtYXRp Yy1icmVhayAnKCh0ICg6aW5oZXJpdCBzaGFkb3cgOmV4dGVuZCB0KSkpCisgICJGYWNlIGZvciBN YXJrZG93biB0aGVtYXRpYyBicmVha3MgKGhvcml6b250YWwgcnVsZXMpLgorQ3VzdG9taXplIHRo aXMgZmFjZSB0byBhZGQgYSA6YmFja2dyb3VuZCBmb3IgYSBmdWxsLXdpZHRoIHZpc3VhbCBydWxl LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1lbnRpdHktcmVm ZXJlbmNlICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1idWlsdGluLWZhY2UpKSkKKyAgIkZhY2Ug Zm9yIG5hbWVkIEhUTUwgZW50aXR5IHJlZmVyZW5jZXMgbGlrZSAmYW1wOyBhbmQgJmNvcHk7LiIK KyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1udW1lcmljLWNoYXJh Y3Rlci1yZWZlcmVuY2UKKyAgJygodCAoOmluaGVyaXQgZm9udC1sb2NrLWVzY2FwZS1mYWNlKSkp CisgICJGYWNlIGZvciBudW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIGxpa2UgJiM2NTsgYW5k ICYjeDQxOy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtbGF0 ZXggJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1mYWNlKSkpCisgICJGYWNlIGZvciBM YVRlWCAvIG1hdGggY29udGVudCBpbiBNYXJrZG93biAoJC4uLiQgYW5kICQkLi4uJCQpLiIKKyAg OnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YWJsZS1oZWFkZXIgJygo dCAoOmluaGVyaXQgKGJvbGQgZm9udC1sb2NrLWRvYy1mYWNlKSkpKQorICAiRmFjZSBmb3IgTWFy a2Rvd24gcGlwZSB0YWJsZSBoZWFkZXIgY2VsbHMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhk ZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlLWNlbGwgJygodCAoOmluaGVyaXQgZGVmYXVsdCkpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gcGlwZSB0YWJsZSBkYXRhIGNlbGxzLiIKKyAgOnZlcnNpb24g IjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2VsbCAnKCh0 ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIHBp cGUgdGFibGUgZGVsaW1pdGVyIGNlbGxzICgtLS0gc2VwYXJhdG9ycykuIgorICA6dmVyc2lvbiAi MzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlICcoKHQgKDpleHRlbmQgdCkpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gdGFibGUuCitBbHRlciB0aGlzIGZhY2UgdG8gYWRkIGEgYDpi YWNrZ3JvdW5kJyBmb3IgYSB2aXN1YWxseSBkaXN0aW5jdCB0YWJsZQorcmVnaW9uLCBlLmcuOgor ICAoc2V0LWZhY2UtYXR0cmlidXRlIFxcPSdtYXJrZG93bi10cy10YWJsZSBuaWwgOmJhY2tncm91 bmQgXCJncmF5OTVcIikiCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24t dHMtaW4tdGFibGUgJygodCAoOmV4dGVuZCB0KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBgbWFy a2Rvd24tdHMtaW4tdGFibGUtbW9kZScgd2hlbiBwb2ludCBpcyBpbiBhIHRhYmxlLgorQWx0ZXIg dGhpcyBmYWNlIHRvIGFkZCBhIGA6YmFja2dyb3VuZCcgZm9yIGEgdmlzdWFsbHkgZGlzdGluY3Qg dGFibGUKK3JlZ2lvbiwgZS5nLjoKKyAgKHNldC1mYWNlLWF0dHJpYnV0ZSBcXD0nbWFya2Rvd24t dHMtaW4tdGFibGUgbmlsIDpiYWNrZ3JvdW5kIFwiZ3JheTk1XCIpIgorICA6dmVyc2lvbiAiMzEu MSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWxhbmd1YWdlLWtleXdvcmQgJygodCAoOmluaGVy aXQgZm9udC1sb2NrLWtleXdvcmQtZmFjZSkpKQotICAiRmFjZSBmb3IgdGhlIGxhbmd1YWdlIGtl eXdvcmQgZm9yIE1hcmtkb3duIGNvZGUgYmxvY2tzLiIpCisgICJGYWNlIGZvciB0aGUgbGFuZ3Vh Z2Uga2V5d29yZCBmb3IgTWFya2Rvd24gY29kZSBibG9ja3MuIgorICA6dmVyc2lvbiAiMzEuMSIp CisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWxpc3QtbWFya2VyICcoKHQgKDppbmhlcml0IHNoYWRv dykpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gbGlzdCBtYXJrZXJzIGxpa2UgLSBhbmQgKi4iCisg IDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFr LWJhY2tzbGFzaAorICAnKCh0ICg6aW5oZXJpdCBvdXRsaW5lLTQgOndlaWdodCBib2xkKSkpCisg ICJGYWNlIGZvciBNYXJrZG93biBoYXJkIGxpbmUgYnJlYWtzIGludHJvZHVjZWQgYnkgYSB0cmFp bGluZyBiYWNrc2xhc2guIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3du LXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gtaGlkZGVuCisgICcoKHQgKDppbmhlcml0IG91 dGxpbmUtNCA6d2VpZ2h0IGJvbGQpKSkKKyAgIkZhY2UgZm9yIHRyYWlsaW5nLWJhY2tzbGFzaCBo YXJkIGxpbmUgYnJlYWsgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLiIKKyAgOnZlcnNpb24gIjMxLjEi KQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UKKyAgJygoKChi YWNrZ3JvdW5kIGxpZ2h0KSkgKDpiYWNrZ3JvdW5kICJncmF5NzAiIDp3ZWlnaHQgYm9sZCkpCisg ICAgKCgoYmFja2dyb3VuZCBkYXJrKSkgICg6YmFja2dyb3VuZCAiZ3JheTQwIiA6d2VpZ2h0IGJv bGQpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGhhcmQgbGluZSBicmVha3MgaW50cm9kdWNlZCBi eSB0d28gdHJhaWxpbmcgc3BhY2VzLgorVGhlIHRyYWlsaW5nIHNwYWNlcyBhcmUgb3RoZXJ3aXNl IGludmlzaWJsZSwgc28gdGhleSBhcmUgc2hvd24gYXMgYQorc2hhZG93LWNvbG9yZWQgYmxvY2su IgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWhhcmQtbGluZS1i cmVhay1zcGFjZS1oaWRkZW4KKyAgJygodCAoOmluaGVyaXQgb3V0bGluZS00IDp3ZWlnaHQgYm9s ZCkpKQorICAiRmFjZSBmb3IgdHJhaWxpbmctc3BhY2VzIGhhcmQgbGluZSBicmVhayB3aGVuIG1h cmt1cCBpcyBoaWRkZW4uIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKLTs7OyBGb250LWxvY2sKKyhk ZWZmYWNlIG1hcmtkb3duLXRzLXRhc2stdW5jaGVja2VkICcoKHQgKDppbmhlcml0IG1hcmtkb3du LXRzLWxpc3QtbWFya2VyKSkpCisgICJGYWNlIGZvciBNYXJrZG93biB1bmNoZWNrZWQgdGFzayBs aXN0IG1hcmtlcnMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRz LXRhc2stY2hlY2tlZCAnKCh0ICg6aW5oZXJpdCBtYXJrZG93bi10cy1saXN0LW1hcmtlcikpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gY2hlY2tlZCB0YXNrIGxpc3QgbWFya2Vycy4iCisgIDp2ZXJz aW9uICIzMS4xIikKKworKHRyZWVzaXQtZGVjbGFyZS11bmF2YWlsYWJsZS1mdW5jdGlvbnMpCisK KyhhZGQtdG8tbGlzdAorICd0cmVlc2l0LWxhbmd1YWdlLXNvdXJjZS1hbGlzdAorICcobWFya2Rv d24KKyAgICJodHRwczovL2dpdGh1Yi5jb20vdHJlZS1zaXR0ZXItZ3JhbW1hcnMvdHJlZS1zaXR0 ZXItbWFya2Rvd24iCisgICA6Y29tbWl0ICI0MTMyODUyMzFjZThmYThiMTFlNzA3NGJiZTI2NWI0 OGFhNzI3N2Y5IgorICAgOnNvdXJjZS1kaXIgInRyZWUtc2l0dGVyLW1hcmtkb3duL3NyYyIpCisg dCkKKworKGFkZC10by1saXN0CisgJ3RyZWVzaXQtbGFuZ3VhZ2Utc291cmNlLWFsaXN0CisgJyht YXJrZG93bi1pbmxpbmUKKyAgICJodHRwczovL2dpdGh1Yi5jb20vdHJlZS1zaXR0ZXItZ3JhbW1h cnMvdHJlZS1zaXR0ZXItbWFya2Rvd24iCisgICA6Y29tbWl0ICI0MTMyODUyMzFjZThmYThiMTFl NzA3NGJiZTI2NWI0OGFhNzI3N2Y5IgorICAgOnNvdXJjZS1kaXIgInRyZWUtc2l0dGVyLW1hcmtk b3duLWlubGluZS9zcmMiKQorIHQpCisKKzs7OyBWYXJpYWJsZXM6CisKKyhkZWZ2YXIgbWFya2Rv d24tdHMtLXNldC11cC1pbmxpbmUgbmlsCisgICJMZXQgYmluZCB0aGlzIHRvIG5vbi1uaWwgZm9y IGlubGluZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycy4iKQorCisoZGVmdmFyIG1hcmtkb3du LXRzLWNvZGUtYmxvY2stbW9kZXMKKyAgYCgoc2ggYmFzaC10cy1tb2RlKQorICAgIChzaGVsbCBi YXNoLXRzLW1vZGUpCisgICAgKCwoaW50ZXJuICJjIyIpIGNzaGFycC10cy1tb2RlKQorICAgIChj cHAgYysrLXRzLW1vZGUpCisgICAgKGVsIGVtYWNzLWxpc3AtbW9kZSkKKyAgICAoZWxpc3AgZW1h Y3MtbGlzcC1tb2RlKQorICAgIChnb2xhbmcgZ28tdHMtbW9kZSkKKyAgICAoZ29tb2QgZ28tbW9k LXRzLW1vZGUpCisgICAgKGdvd29yayBnby13b3JrLXRzLW1vZGUpCisgICAgKGphdmFzY3JpcHQg anMtdHMtbW9kZSkKKyAgICAobWQgbWFya2Rvd24tdHMtbW9kZSkKKyAgICAocHkgcHl0aG9uLXRz LW1vZGUpCisgICAgKHJiIHJ1YnktdHMtbW9kZSkKKyAgICAocnMgcnVzdC10cy1tb2RlKQorICAg ICh0ZXggbGF0ZXgtbW9kZSkKKyAgICAodHMgdHlwZXNjcmlwdC10cy1tb2RlKQorICAgICh5bWwg eWFtbC10cy1tb2RlKSkKKyAgIkV4dHJhIG1hcHBpbmdzIGZyb20gY29kZSBibG9jayBsYW5ndWFn ZSB0YWdzIHRvIG1ham9yIG1vZGVzLgorCitFbnRyaWVzIGhlcmUgYXJlIG9ubHkgbmVlZGVkIHdo ZW4gdGhlIGxhbmd1YWdlIHRhZyBpbiBhIGZlbmNlZCBjb2RlCitibG9jayBkb2VzIE5PVCBtYXRj aCB0aGUgY29udmVudGlvbmFsIG1vZGUgbmFtZSBkZXJpdmF0aW9uLCBlLmcuIHRoZQordXNlciB3 cml0ZXMgXFw9YFxcPWBcXD1gdHMgaW5zdGVhZCBvZiBcXD1gXFw9YFxcPWB0eXBlc2NyaXB0LCBv cgorXFw9YFxcPWBcXD1gcHkgaW5zdGVhZCBvZiBcXD1gXFw9YFxcPWBweXRob24uICBGb3IgdGFn cyB0aGF0IGFscmVhZHkKK3Jlc29sdmUgdmlhIHRoZSBzdGFuZGFyZCBcIi10cy1tb2RlXCIvXCIt bW9kZVwiIGhldXJpc3RpY3MgdGhlcmUgaXMgbm8KK25lZWQgdG8gYWRkIGFuIGVudHJ5LgorCitU aGUgYWxpc3QgaXMgb2YgdGhlIGZvcm0gKExBTkdVQUdFIE1BSk9SLU1PREUpLiBNQUpPUi1NT0RF IGNhbiBiZSBhCit0cmVlLXNpdHRlciBvciBhIGNvbnZlbnRpb25hbCBtb2RlLgorCitJZiB5b3Ug cHJlZmVyIGEgY29udmVudGlvbmFsIG1vZGUgb3ZlciBpdHMgdHJlZS1zaXR0ZXIgdmFyaWFudCwg YWRkIG9yCityZXBsYWNlIHJlbGV2YW50IGVudHJpZXMuICBGb3IgZXhhbXBsZToKKworICAgIChh ZGQtdG8tbGlzdCBcXD0nbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcworICAgICAgXFw9Jyhw eXRob24gcHl0aG9uLW1vZGUpKQorICAgIChzZXRmIChhbGlzdC1nZXQgXFw9J3B5IG1hcmtkb3du LXRzLWNvZGUtYmxvY2stbW9kZXMpCisgICAgICAgICAgXFw9JyhweXRob24tbW9kZSkpCisKK0Nv ZGUgYmxvY2tzIGZvciB0aGF0IG5vbiB0cmVlLXNpdHRlciBtb2RlcyB3aWxsIGJlIGZvbnRpZmll ZCB1c2luZyB0aGUKK21vZGUncyBjb252ZW50aW9uYWwgZm9udC1sb2NrIHJ1bGVzLiIpCisKKyhk ZWZ2YXIgbWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMKKyAg JyhtYXJrZG93bi10cy1tb2RlCisgICAgcGhwLXRzLW1vZGUpCisgICJUcmVhdCB0aGVzZSBjb2Rl IGJsb2NrIHRyZWUtc2l0dGVyIG1vZGVzIGFzIGNvbnZlbnRpb25hbC4KK1NvbWUgbW9kZXMgdGhh dCBlbWJlZCBtdWx0aXBsZSBgdHJlZXNpdCcgcGFyc2VycyBuZWVkIHRvIGJlIHRyZWF0ZWQgd2l0 aAorY29udmVudGlvbmFsIGZvbnQtbG9jay4gIGBtYXJrZG93bi10cy1tb2RlJyBpdHNlbGYgaXMg b25lIG9mIHRoZW0uIikKKworOzs7IEZvbnQtbG9jazoKIAogKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWRlbGltaXRlciAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKICAgIkZv bnRpZnkgZGVsaW1pdGVyIE5PREUgYW5kIG9wdGlvbmFsbHkgaGlkZSBpdHMgbWFya3VwLgpAQCAt MTY4LDIzICs3NzEsODMzIEBAIG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAgIChw dXQtdGV4dC1wcm9wZXJ0eSAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUt ZW5kIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRz LS1tYXJrdXApKSkKIAorKGRlZnZhciB1cmwtbWFpbC1jb21tYW5kKSA7IHVybC91cmwtdmFycy5l bAorCisoZGVmdW4gbWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24gKGJlZyBlbmQgdXJsKQor ICAiTWFrZSB0aGUgcmVnaW9uIGZyb20gQkVHIHRvIEVORCBhIGNsaWNrYWJsZSBidXR0b24gZm9y IFVSTC4KK0ZvciBtYWlsdG86IFVSSXMsIHVzZSBgdXJsLW1haWwtY29tbWFuZCcuICBGb3Igb3Ro ZXIgc2NoZW1lcworXChlLmcuLCBodHRwLCBmdHApLCBvcGVuIHdpdGggYGJyb3dzZS11cmwnLiAg T3RoZXJ3aXNlLCB0cmVhdCBhcworYSByZWxhdGl2ZSBmaWxlIHBhdGggYW5kIG9wZW4gd2l0aCBg ZmluZC1maWxlJy4KKworRG8gbm90IHBhc3MgYGZhY2UnIHRvIGBtYWtlLXRleHQtYnV0dG9uJzog dGhlIGxpbmsgZmFjZSBpcyBhbHJlYWR5CithcHBsaWVkIGJ5IGBtYXJrZG93bi10cy0tZm9udGlm eS1saW5rLW5vZGUnIHZpYQorYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJyAod2l0aCBg Om92ZXJyaWRlIGFwcGVuZCcpLCBhbmQKK2BhZGQtdGV4dC1wcm9wZXJ0aWVzJyB3b3VsZCBvdGhl cndpc2UgcmVwbGFjZSB0aGUgYXBwZW5kZWQgZmFjZQorbGlzdCB3aXRoIGEgc2luZ2xlIGBtYXJr ZG93bi10cy1saW5rJywgY2xvYmJlcmluZyBhbiBlbmNsb3NpbmcKK2hlYWRpbmcgZmFjZS4iCisg IDs7IE5PVEU6IFVSSSBzY2hlbWUgYW5kIGhvc3QgbmFtZSBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBw ZXIgUkZDIDM5ODYKKyAgOzsgYW5kIFJGQyA3MjMwLgorICAobGV0ICgoY2FzZS1mb2xkLXNlYXJj aCBuaWwpKQorICAgIChtYWtlLXRleHQtYnV0dG9uIGJlZyBlbmQKKyAgICAgICAgICAgICAgICAg ICAgICAnYWN0aW9uIChsYW1iZGEgKF9idXR0b24pCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1w cmVmaXgtcCAiIyIgdXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJr ZG93bi10cy0tZm9sbG93LWZyYWdtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdWJzdHJpbmcgdXJsIDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoc3RyaW5nLW1hdGNoLXAgIlxcYG1haWx0bzoiIHVybCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZnVuY2FsbCB1cmwtbWFpbC1jb21tYW5kCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgbWFpbHRvOiIgIiIg dXJsKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaC1w ICJcXGBbYS16XSs6IiB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJy b3dzZS11cmwgdXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChmaW5k LWZpbGUgdXJsKSkpKQorICAgICAgICAgICAgICAgICAgICAgICdoZWxwLWVjaG8gdXJsKSkpCisK KyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0aW9uIChub2RlIG92ZXJy aWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBsaW5rIGRlc3RpbmF0aW9uIE5PREUg YW5kIGhpZGUgaXQgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQg RU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRl Jy4iCisgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgKHRyZWVzaXQtbm9kZS1z dGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKQorICAgJ21hcmtkb3duLXRzLWxpbmst ZGVzdGluYXRpb24gb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAod2hlbiBtYXJrZG93bi10cy1oaWRl LW1hcmt1cAorICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUp ICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2li bGUgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0t bGluay1yZWYtY2FjaGUgbmlsCisgICJDYWNoZWQgYWxpc3Qgb2YgKExBQkVMIC4gVVJMKSBmcm9t IGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25zLgorRWFjaCBlbnRyeSBpcyBhIGNvbnMgY2VsbCBt YXBwaW5nIGEgZG93bmNhc2VkIGxhYmVsIHN0cmluZyB0byBpdHMKK2Rlc3RpbmF0aW9uIFVSTC4i KQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZS10aWNrIG5pbAor ICAiVmFsdWUgb2YgYGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrJyB3aGVuIHRoZSBjYWNoZSB3 YXMgYnVpbHQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saW5rLXJlZi1kZWZpbml0aW9ucyAo KQorICAiUmV0dXJuIGFuIGFsaXN0IG9mIChMQUJFTCAuIFVSTCkgZnJvbSBsaW5rIHJlZmVyZW5j ZSBkZWZpbml0aW9ucy4KK0xBQkVMIGlzIGRvd25jYXNlZCBmb3IgY2FzZS1pbnNlbnNpdGl2ZSBt YXRjaGluZy4gIFJlc3VsdHMgYXJlCitjYWNoZWQgYW5kIHJlYnVpbHQgb25seSB3aGVuIHRoZSBi dWZmZXIgY2hhbmdlcy4iCisgIChsZXQgKCh0aWNrIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGlj aykpKQorICAgICh1bmxlc3MgKGVxIHRpY2sgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlLXRp Y2spCisgICAgICAobGV0KiAoKHJvb3QgKHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rv d24pKQorICAgICAgICAgICAgIChtYXRjaGVzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAg ICAgICAgICAgICAgICAgICAgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAnKChsaW5rX3Jl ZmVyZW5jZV9kZWZpbml0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rX2xhYmVs KSBAbGFiZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmtfZGVzdGluYXRpb24pIEBk ZXN0KSkpKQorICAgICAgICAgICAgIGRlZnMpCisgICAgICAgICh3aGlsZSBtYXRjaGVzCisgICAg ICAgICAgKGxldCogKChsYWJlbC1wYWlyIChwb3AgbWF0Y2hlcykpCisgICAgICAgICAgICAgICAg IChkZXN0LXBhaXIgKHBvcCBtYXRjaGVzKSkKKyAgICAgICAgICAgICAgICAgKGxibC10ZXh0IChz dHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRleHQgKGNkciBsYWJlbC1wYWlyKSB0KQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXFsiICJcXF0iKSkpCisgICAgICAg ICAgICAocHVzaCAoY29ucyAoZG93bmNhc2UgbGJsLXRleHQpCisgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLXRleHQgKGNkciBkZXN0LXBhaXIpIHQpKQorICAgICAgICAgICAg ICAgICAgZGVmcykpKQorICAgICAgICAoc2V0cSBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUg KG5yZXZlcnNlIGRlZnMpCisgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNo ZS10aWNrIHRpY2spKSkKKyAgICBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUpKQorCisoZGVm dW4gbWFya2Rvd24tdHMtLXJlc29sdmUtbGluay1yZWYgKGxhYmVsKQorICAiUmVzb2x2ZSBMQUJF TCB0byBhIFVSTCB2aWEgbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbnMuCitMQUJFTCBzaG91bGQg YmUgdGhlIHRleHQgd2l0aG91dCBicmFja2V0cy4gIE1hdGNoaW5nIGlzCitjYXNlLWluc2Vuc2l0 aXZlIHBlciBDb21tb25NYXJrIHNwZWMgc2VjdGlvbiA0LjcuIgorICAoYWxpc3QtZ2V0IChkb3du Y2FzZSBsYWJlbCkgKG1hcmtkb3duLXRzLS1saW5rLXJlZi1kZWZpbml0aW9ucykKKyAgICAgICAg ICAgICBuaWwgbmlsICMnZXF1YWwpKQorCis7OzsgRnJhZ21lbnQgbGlua3M6CisKKyhkZWZjb25z dCBtYXJrZG93bi10cy0tc2x1Zy1naXRodWItc3RyaXAtcmUKKyAgIltdWyFcIiMkJSYnKCkqKywu Lzo7PD0+P0BcXF5ge3x9fl0iCisgICJQdW5jdHVhdGlvbiBzdHJpcHBlZCBieSBHaXRIdWIncyBn aC1zbHVnZ2VyIGJlZm9yZSBoeXBoZW5hdGlvbi4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXNs dWctZ2l0aHViICh0ZXh0KQorICAiUmV0dXJuIHRoZSBHaXRIdWItZmxhdm9yIHNsdWcgZm9yIGhl YWRpbmcgVEVYVC4KK01pcnJvcnMgdGhlIGdoLXNsdWdnZXIgYWxnb3JpdGhtOiBsb3dlcmNhc2Us IHN0cmlwIGEgZml4ZWQKK3B1bmN0dWF0aW9uIHNldCwgcmVwbGFjZSBzcGFjZXMgd2l0aCBoeXBo ZW5zLiIKKyAgKGxldCogKChsYyAoZG93bmNhc2UgdGV4dCkpCisgICAgICAgICAoc3RyaXBwZWQg KHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10 cy0tc2x1Zy1naXRodWItc3RyaXAtcmUgIiIgbGMpKSkKKyAgICAocmVwbGFjZS1yZWdleHAtaW4t c3RyaW5nICJbWzpibGFuazpdXSIgIi0iIHN0cmlwcGVkKSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy0tc2x1Zy1wYW5kb2MgKHRleHQpCisgICJSZXR1cm4gdGhlIFBhbmRvYy1mbGF2b3IgYXV0by1p ZCBzbHVnIGZvciBoZWFkaW5nIFRFWFQuCitNaXJyb3JzIFBhbmRvYydzIGFsZ29yaXRobTogZHJv cCBldmVyeXRoaW5nIGJlZm9yZSB0aGUgZmlyc3QKK2xldHRlciwga2VlcCBhbHBoYW51bWVyaWNz IGFuZCBgXy0uJywgY29sbGFwc2Ugd2hpdGVzcGFjZSBydW5zIHRvCitoeXBoZW5zLCBsb3dlcmNh c2UuICBGYWxscyBiYWNrIHRvIFwic2VjdGlvblwiIGlmIGVtcHR5LiIKKyAgKGxldCogKChsYyAo ZG93bmNhc2UgdGV4dCkpCisgICAgICAgICAoZnJvbS1sZXR0ZXIgKGlmIChzdHJpbmctbWF0Y2gg IltbOmFscGhhOl1dIiBsYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyBs YyAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAgICAgICAgICAgICAgICAgIiIpKQorICAg ICAgICAgKGtlcHQgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICJb Xls6YWxudW06XV8uXG5cdFs6Ymxhbms6XS1dIiAiIiBmcm9tLWxldHRlcikpCisgICAgICAgICAo aHlwaGVuYXRlZCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJbWzpibGFuazpdXHRcbl0rIiAi LSIga2VwdCkpCisgICAgICAgICAodHJpbW1lZCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICIt K1xcJyIgIiIgaHlwaGVuYXRlZCkpKQorICAgIChpZiAoc3RyaW5nLWVtcHR5LXAgdHJpbW1lZCkg InNlY3Rpb24iIHRyaW1tZWQpKSkKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS1leHBsaWNpdC1p ZC1yZQorICAiWyBcdF0qe1sgXHRdKiNcXChbXn0gXHRdK1xcKVsgXHRdKn1bIFx0XSpcXCciCisg ICJNYXRjaCBhIFBhbmRvYy1zdHlsZSB0cmFpbGluZyBgeyNpZH0nIG9uIGEgaGVhZGluZyBsaW5l LgorQ2FwdHVyZSBncm91cCAxIGlzIHRoZSBleHBsaWNpdCBpZC4iKQorCisoZGVmdW4gbWFya2Rv d24tdHMtLWhlYWRpbmctdGV4dC1hbmQtaWQgKHJhdykKKyAgIlNwbGl0IFJBVyBoZWFkaW5nIHRl eHQgaW50byAoVklTSUJMRSAuIEVYUExJQ0lULUlEKS4KK0VYUExJQ0lULUlEIGlzIG5vbi1uaWwg aWYgUkFXIGVuZHMgd2l0aCBhIFBhbmRvYy1zdHlsZSBgeyNpZH0nLAoraW4gd2hpY2ggY2FzZSBW SVNJQkxFIGlzIFJBVyB3aXRoIHRoYXQgc3VmZml4IHJlbW92ZWQuIgorICAoaWYgKHN0cmluZy1t YXRjaCBtYXJrZG93bi10cy0tZXhwbGljaXQtaWQtcmUgcmF3KQorICAgICAgKGNvbnMgKHN1YnN0 cmluZyByYXcgMCAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAgICAgKG1hdGNoLXN0cmlu ZyAxIHJhdykpCisgICAgKGNvbnMgcmF3IG5pbCkpKQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3du LXRzLS1oZWFkaW5nLWlkLWNhY2hlIG5pbAorICAiQ2FjaGVkIGhhc2ggdGFibGUgbWFwcGluZyBo ZWFkaW5nIHNsdWcgc3RyaW5ncyB0byBidWZmZXIgcG9zaXRpb25zLgorRWFjaCB2YWx1ZSBpcyB0 aGUgYnVmZmVyIHBvc2l0aW9uIG9mIHRoZSBzdGFydCBvZiB0aGUgbWF0Y2hpbmcKK2BhdHhfaGVh ZGluZycgb3IgYHNldGV4dF9oZWFkaW5nJyBub2RlLiAgQnVpbHQgbGF6aWx5IGJ5CitgbWFya2Rv d24tdHMtLWhlYWRpbmctaWRzJywgaW52YWxpZGF0ZWQgYnkgYnVmZmVyLXRpY2sgY2hhbmdlLiIp CisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUtdGljayBuaWwK KyAgIlZhbHVlIG9mIGBidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaycgd2hlbiB0aGUgaGVhZGlu Zy1pZCBjYWNoZSB3YXMgYnVpbHQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1idWlsZC1oZWFk aW5nLWlkcyAoKQorICAiV2FsayBhbGwgaGVhZGluZ3MgaW4gdGhlIGJ1ZmZlciBhbmQgcmV0dXJu IGEgaGFzaCB0YWJsZS4KK1doaWNoIG1hcHMgZWFjaCBzbHVnIHRvIHRoZSBidWZmZXIgcG9zaXRp b24gb2YgaXRzIGhlYWRpbmcuICBFYWNoCitoZWFkaW5nIGNvbnRyaWJ1dGVzIGl0cyBHaXRIdWIg c2x1ZywgaXRzIFBhbmRvYyBzbHVnLCBhbmQgaXRzIGV4cGxpY2l0CitgeyNpZH0nIGlmIHByZXNl bnQuICBCb3RoIHNsdWcgYWxnb3JpdGhtcyBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIGJ1ZmZlcgor YmVjYXVzZSBhIG1hcmtkb3duIGZpbGUgaXMgb2Z0ZW4gcHJldmlld2VkIGJ5IHNldmVyYWwgcmVu ZGVyZXJzIChHaXRIdWIKK3dlYiBVSSwgUGFuZG9jLCBtZEJvb2ssIEh1Z28sIGFuZCBzbyBvbikg YW5kIHRoZSBzYW1lIHNvdXJjZSBzaG91bGQKK3Jlc29sdmUgcmVnYXJkbGVzcyBvZiB3aGljaCBv bmUgdGhlIGF1dGhvciB3cm90ZSB0aGUgbGluayBmb3IuICBGb3IgbW9zdAoraGVhZGluZ3MgdGhl IHR3byBhbGdvcml0aG1zIHByb2R1Y2UgdGhlIHNhbWUgc2x1ZyBhbnl3YXkuCitEdXBsaWNhdGUg c2x1Z3MgKHdpdGhpbiBvbmUgYWxnb3JpdGhtKSBhcmUgZGlzYW1iaWd1YXRlZCBieSBhcHBlbmRp bmcKK2AtMScsIGAtMicsIGFuZCBzbyBvbiwgaW4gZG9jdW1lbnQgb3JkZXIsIG1hdGNoaW5nIEdp dEh1YidzIGJlaGF2aW9yLgorV2hlbiB0d28gZGlzdGluY3QgaGVhZGluZ3Mgd291bGQgb3RoZXJ3 aXNlIHNoYXJlIGEgc2x1ZywgdGhlIGZpcnN0CitvY2N1cnJlbmNlIGluIGRvY3VtZW50IG9yZGVy IHdpbnMuIgorICAobGV0ICgodGFibGUgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFsKSkK KyAgICAgICAgOzsgUGVyLWFsZ29yaXRobSBkZWR1cGUgY291bnRlcnM6IGhvdyBtYW55IHRpbWVz IHRoaXMgYmFzZSBzbHVnCisgICAgICAgIDs7IGhhcyBiZWVuIHNlZW4gc28gZmFyIGluIGRvY3Vt ZW50IG9yZGVyLgorICAgICAgICAoZ2gtY291bnRzIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydl cXVhbCkpCisgICAgICAgIChwZC1jb3VudHMgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFs KSkKKyAgICAgICAgKHJvb3QgKHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rvd24pKSkK KyAgICAoZG9saXN0IChjYXAgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAg ICAgcm9vdAorICAgICAgICAgICAgICAgICAgJygoKGF0eF9oZWFkaW5nKSBAaCkKKyAgICAgICAg ICAgICAgICAgICAgKChzZXRleHRfaGVhZGluZykgQGgpKSkpCisgICAgICAobGV0KiAoKG5vZGUg KGNkciBjYXApKQorICAgICAgICAgICAgIChwb3MgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkK KyAgICAgICAgICAgICAocmF3IChzdHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSB0 KSkpCisgICAgICAgICAgICAgOzsgU3RyaXAgdGhlIGxlYWRpbmcgbWFya2VyICgjIyMgb3IgPT09 PS8tLS0tKS4KKyAgICAgICAgICAgICA7OyBGb3IgYXR4LCBkcm9wIGxlYWRpbmcgIydzIGFuZCBm b2xsb3dpbmcgc3BhY2UuCisgICAgICAgICAgICAgOzsgRm9yIHNldGV4dCwgZHJvcCB0aGUgdHJh aWxpbmcgdW5kZXJsaW5lIGxpbmUuCisgICAgICAgICAgICAgKHRleHQgKGNvbmQKKyAgICAgICAg ICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIlxcYCMrWyBcdF0qXFwoLio/XFwpWyBcdF0qIypb IFx0XSpcXCciIHJhdykKKyAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMSByYXcp KQorICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXFxgXFwoLio/XFwpXG5bPS1d K1sgXHRdKlxcJyIgcmF3KQorICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmluZyAxIHJh dykpCisgICAgICAgICAgICAgICAgICAgICh0IHJhdykpKQorICAgICAgICAgICAgIChzcGxpdCAo bWFya2Rvd24tdHMtLWhlYWRpbmctdGV4dC1hbmQtaWQgdGV4dCkpCisgICAgICAgICAgICAgKHZp c2libGUgKGNhciBzcGxpdCkpCisgICAgICAgICAgICAgKGV4cGxpY2l0IChjZHIgc3BsaXQpKSkK KyAgICAgICAgOzsgRXhwbGljaXQgeyNpZH0gd2lucyBvdXRyaWdodDsgZmlyc3Qgb2NjdXJyZW5j ZSBrZWVwcyBpdC4KKyAgICAgICAgKHdoZW4gKGFuZCBleHBsaWNpdCAobm90IChnZXRoYXNoIGV4 cGxpY2l0IHRhYmxlKSkpCisgICAgICAgICAgKHB1dGhhc2ggZXhwbGljaXQgcG9zIHRhYmxlKSkK KyAgICAgICAgOzsgQXV0byBzbHVncyAoR2l0SHViICsgUGFuZG9jKSwgZGVkdXBlZCBwZXIgYWxn b3JpdGhtLgorICAgICAgICAobGV0KiAoKGdoLWJhc2UgKG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1 YiB2aXNpYmxlKSkKKyAgICAgICAgICAgICAgIChwZC1iYXNlIChtYXJrZG93bi10cy0tc2x1Zy1w YW5kb2MgdmlzaWJsZSkpCisgICAgICAgICAgICAgICAoZ2gtbiAoZ2V0aGFzaCBnaC1iYXNlIGdo LWNvdW50cyAwKSkKKyAgICAgICAgICAgICAgIChwZC1uIChnZXRoYXNoIHBkLWJhc2UgcGQtY291 bnRzIDApKQorICAgICAgICAgICAgICAgKGdoLWlkIChpZiAoemVyb3AgZ2gtbikgZ2gtYmFzZQor ICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMtJWQiIGdoLWJhc2UgZ2gtbikpKQor ICAgICAgICAgICAgICAgKHBkLWlkIChpZiAoemVyb3AgcGQtbikgcGQtYmFzZQorICAgICAgICAg ICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMtJWQiIHBkLWJhc2UgcGQtbikpKSkKKyAgICAgICAg ICAocHV0aGFzaCBnaC1iYXNlICgxKyBnaC1uKSBnaC1jb3VudHMpCisgICAgICAgICAgKHB1dGhh c2ggcGQtYmFzZSAoMSsgcGQtbikgcGQtY291bnRzKQorICAgICAgICAgIDs7IEZpcnN0LXdyaXRl ci13aW5zIHNvIGRvY3VtZW50IG9yZGVyIHRpZWJyZWFrcyBjb2xsaXNpb25zLgorICAgICAgICAg ICh1bmxlc3MgKGdldGhhc2ggZ2gtaWQgdGFibGUpIChwdXRoYXNoIGdoLWlkIHBvcyB0YWJsZSkp CisgICAgICAgICAgKHVubGVzcyAoZ2V0aGFzaCBwZC1pZCB0YWJsZSkgKHB1dGhhc2ggcGQtaWQg cG9zIHRhYmxlKSkpKSkKKyAgICB0YWJsZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taGVhZGlu Zy1pZHMgKCkKKyAgIlJldHVybiB0aGUgaGVhZGluZy1pZCBoYXNoIHRhYmxlIGZvciB0aGUgY3Vy cmVudCBidWZmZXIuCitDYWNoZSBpcyByZWJ1aWx0IG9ubHkgd2hlbiBgYnVmZmVyLWNoYXJzLW1v ZGlmaWVkLXRpY2snIGhhcyBhZHZhbmNlZAorc2luY2UgdGhlIGxhc3QgY2FsbCAobWlycm9ycyBg bWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlJykuIgorICAobGV0ICgodGljayAoYnVmZmVyLWNo YXJzLW1vZGlmaWVkLXRpY2spKSkKKyAgICAodW5sZXNzIChlcSB0aWNrIG1hcmtkb3duLXRzLS1o ZWFkaW5nLWlkLWNhY2hlLXRpY2spCisgICAgICAoc2V0cSBtYXJrZG93bi10cy0taGVhZGluZy1p ZC1jYWNoZSAobWFya2Rvd24tdHMtLWJ1aWxkLWhlYWRpbmctaWRzKQorICAgICAgICAgICAgbWFy a2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUtdGljayB0aWNrKSkKKyAgICBtYXJrZG93bi10cy0t aGVhZGluZy1pZC1jYWNoZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9sbG93LWZyYWdtZW50 IChpZCkKKyAgIkp1bXAgdG8gdGhlIGhlYWRpbmcgd2hvc2Ugc2x1ZyBtYXRjaGVzIElEICh3aXRo b3V0IGxlYWRpbmcgYCMnKS4KK1B1c2hlcyB0aGUgbWFyayBiZWZvcmUgbW92aW5nIHNvIGBDLXUg Qy1TUEMnIHJldHVybnMuICBTaWduYWxzCitgdXNlci1lcnJvcicgaWYgbm8gaGVhZGluZyBtYXRj aGVzLiIKKyAgKGlmLWxldCogKChwb3MgKGdldGhhc2ggaWQgKG1hcmtkb3duLXRzLS1oZWFkaW5n LWlkcykpKSkKKyAgICAgIChwcm9nbgorICAgICAgICAocHVzaC1tYXJrKQorICAgICAgICAoZ290 by1jaGFyIHBvcykKKyAgICAgICAgKHJlY2VudGVyKSkKKyAgICAodXNlci1lcnJvciAiTm8gaGVh ZGluZyBmb3IgZnJhZ21lbnQ6ICMlcyIgaWQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250 aWZ5LWhlYWRpbmcgKG5vZGUgX292ZXJyaWRlIF9zdGFydCBfZW5kICZyZXN0IF8pCisgICJBcHBs eSB0aGUgaGVhZGluZyBmYWNlIHRvIE5PREUncyBmdWxsIGV4dGVudC4KK1VzZSBgZm9udC1sb2Nr LWFwcGVuZC10ZXh0LXByb3BlcnR5JyBkaXJlY3RseSBzbyB0aGUgZmFjZSBpcyBhcHBsaWVkCith Y3Jvc3MgdGhlIGVudGlyZSBoZWFkaW5nIGV2ZW4gd2hlbiBjaGlsZCBzdWItbm9kZXMgKGUuZy4g YW4gaW5saW5lCitsaW5rKSB3b3VsZCBvdGhlcndpc2UgcHJldmVudCB0aGUgcmVndWxhciB0cmVl LXNpdHRlciBmYWNlIHJ1bGUgZnJvbQorY292ZXJpbmcgdGhlbS4KKworRm9yIEFUWCBoZWFkaW5n cywgYWxzbyBmb250aWZ5IGFueSBvcHRpb25hbCB0cmFpbGluZyBjbG9zaW5nLWAjJworc2VxdWVu Y2UgYXMgYSBkZWxpbWl0ZXIuICBUaGUgdHJlZS1zaXR0ZXIgZ3JhbW1hciBkb2VzIG5vdCBwcm9k dWNlIGEKK3NlcGFyYXRlIG5vZGUgZm9yIHRoZXNlOyBwZXIgQ29tbW9uTWFyayB0aGV5IGFyZSBk ZWNvcmF0aXZlIGFuZAorbXVzdCBiZSBwcmVjZWRlZCBieSBhIHNwYWNlIG9yIHRhYi4iCisgIChs ZXQqICgodHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkpCisgICAgICAgICAobi1zdGFydCAo dHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgKG4tZW5kICAgKHRyZWVzaXQtbm9k ZS1lbmQgbm9kZSkpCisgICAgICAgICAoZmFjZSAoY29uZAorICAgICAgICAgICAgICAgICgoZXF1 YWwgdHlwZSAic2V0ZXh0X2hlYWRpbmciKQorICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMt c2V0ZXh0LWhlYWRpbmcpCisgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgKGxl dCAoKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgMCkpKQorICAgICAgICAgICAgICAg ICAgIChpbnRlcm4gKGZvcm1hdCAibWFya2Rvd24tdHMtaGVhZGluZy0lZCIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCAodHJlZXNpdC1ub2RlLXRleHQgbWFya2Vy IHQpKSkpKSkpKSkKKyAgICAoZm9udC1sb2NrLWFwcGVuZC10ZXh0LXByb3BlcnR5IG4tc3RhcnQg bi1lbmQgJ2ZhY2UgZmFjZSkKKyAgICAod2hlbiAoc3RyaW5nLXByZWZpeC1wICJhdHhfIiB0eXBl KQorICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgIChnb3RvLWNoYXIgbi1lbmQpCisgICAg ICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHRcbiIgbi1zdGFydCkKKyAgICAgICAgKGxldCAo KGxpbmUtZW5kIChwb2ludCkpKQorICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQi IG4tc3RhcnQpCisgICAgICAgICAgKGxldCAoKHRyYWlsaW5nLWVuZCAocG9pbnQpKSkKKyAgICAg ICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIjIiBuLXN0YXJ0KQorICAgICAgICAgICAgKGxl dCAoKHRyYWlsaW5nLXN0YXJ0IChwb2ludCkpKQorICAgICAgICAgICAgICAod2hlbiAoYW5kICg8 IHRyYWlsaW5nLXN0YXJ0IHRyYWlsaW5nLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAo PiB0cmFpbGluZy1zdGFydCBuLXN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1x IChjaGFyLWJlZm9yZSB0cmFpbGluZy1zdGFydCkgJyg/XHMgP1x0KSkpCisgICAgICAgICAgICAg ICAgKGZvbnQtbG9jay1wcmVwZW5kLXRleHQtcHJvcGVydHkKKyAgICAgICAgICAgICAgICAgdHJh aWxpbmctc3RhcnQgdHJhaWxpbmctZW5kCisgICAgICAgICAgICAgICAgICdmYWNlICdtYXJrZG93 bi10cy1kZWxpbWl0ZXIpCisgICAgICAgICAgICAgICAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1t YXJrdXAKKyAgICAgICAgICAgICAgICAgIDs7IEFsc28gaGlkZSB0aGUgc3BhY2UocykgcHJlY2Vk aW5nIHRoZSBjbG9zZXIgYW5kIGFueQorICAgICAgICAgICAgICAgICAgOzsgdHJhaWxpbmcgd2hp dGVzcGFjZSwgc28gdGhlIGhlYWRpbmcgbG9va3MgY2xlYW4uCisgICAgICAgICAgICAgICAgICAo bGV0ICgoaGlkZS1zdGFydCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGdvdG8tY2hhciB0cmFpbGluZy1zdGFydCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIgbi1zdGFy dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKQorICAg ICAgICAgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgaGlkZS1zdGFydCBsaW5lLWVuZAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkp KSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlIChub2RlIG92 ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBsaW5rIG9yIGltYWdlIHRleHQg Tk9ERSBhcyBhIGNsaWNrYWJsZSBidXR0b24uCitXb3JrcyBmb3IgaW5saW5lIGxpbmtzLCByZWZl cmVuY2UgbGlua3MsIHNob3J0Y3V0IGxpbmtzLCBhbmQKK2ltYWdlIGRlc2NyaXB0aW9ucy4gIFRo ZSBVUkwgaXMgdGFrZW4gZnJvbSBhIHNpYmxpbmcKK2BsaW5rX2Rlc3RpbmF0aW9uJyBub2RlIHdo ZW4gcHJlc2VudCwgb3IgcmVzb2x2ZWQgZnJvbSBhCitsaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9u LCBvciB0aGUgbm9kZSB0ZXh0IGl0c2VsZiBpcyB1c2VkIGFzCitmYWxsYmFjay4gIE9WRVJSSURF LCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnkt d2l0aC1vdmVycmlkZScuIgorICAobGV0ICgocGFyZW50ICh0cmVlc2l0LW5vZGUtcGFyZW50IG5v ZGUpKSkKKyAgICA7OyBXaGVuIE5PREUgaXMgYSBsaW5rX2xhYmVsIGluc2lkZSBhIGZ1bGxfcmVm ZXJlbmNlX2xpbmsgdGhhdAorICAgIDs7IGFsc28gaGFzIGEgbGlua190ZXh0LCBza2lwIGl0LCBs aW5rX3RleHQgaGFuZGxlcyB0aGF0IGxpbmsuCisgICAgKHVubGVzcyAoYW5kIChzdHJpbmc9ICh0 cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAibGlua19sYWJlbCIpCisgICAgICAgICAgICAgICAgICh0 cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVudCAiXFxgbGlua190ZXh0XFwnIikpCisgICAgICAo dHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICAgJ21hcmtkb3duLXRzLWxpbmsg b3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgICAgKGxldCogKChkZXN0ICh0cmVlc2l0LXNlYXJjaC1z dWJ0cmVlIHBhcmVudCAiXFxgbGlua19kZXN0aW5hdGlvblxcJyIpKQorICAgICAgICAgICAgICh1 cmwgKGlmIGRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXRleHQgZGVz dCB0KQorICAgICAgICAgICAgICAgICAgICA7OyBSZWZlcmVuY2UgbGlua3M6IHJlc29sdmUgdmlh IGxpbmtfbGFiZWwgb3IgbGlua190ZXh0LgorICAgICAgICAgICAgICAgICAgICAobGV0KiAoKGxh YmVsLW5vZGUgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYXJlbnQgIlxcYGxpbmtfbGFiZWxcXCciKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsYWJlbCAoaWYgbGFiZWwtbm9kZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRyaW0gKHRyZWVzaXQtbm9kZS10ZXh0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtbm9k ZSB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlxcWyIgIlxcXSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNp dC1ub2RlLXRleHQgbm9kZSB0KSkpKQorICAgICAgICAgICAgICAgICAgICAgIChvciAobWFya2Rv d24tdHMtLXJlc29sdmUtbGluay1yZWYgbGFiZWwpCisgICAgICAgICAgICAgICAgICAgICAgICAg IGxhYmVsKSkpKSkKKyAgICAgICAgKG1hcmtkb3duLXRzLS1tYWtlLWxpbmstYnV0dG9uCisgICAg ICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpIHVy bCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1hdXRvbGluayAobm9kZSBvdmVy cmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgYXV0b2xpbmsgTk9ERSAoVVJJIG9y IGVtYWlsKSBhcyBhIGNsaWNrYWJsZSBidXR0b24uCitGb3IgZW1haWwgYXV0b2xpbmtzLCB0aGUg VVJMIGlzIHByZWZpeGVkIHdpdGggXCJtYWlsdG86XCIuCitBbmdsZSBicmFja2V0IGRlbGltaXRl cnMgYXJlIGhpZGRlbiB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFu ZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJp ZGUnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisg ICAgICAgICAobm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAoaW5u ZXIgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcworICAgICAgICAgICAgICAgICAoMSsg bm9kZS1zdGFydCkgKDEtIG5vZGUtZW5kKSkpCisgICAgICAgICAodXJsIChpZiAoc3RyaW5nPSAo dHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImVtYWlsX2F1dG9saW5rIikKKyAgICAgICAgICAgICAg ICAgIChjb25jYXQgIm1haWx0bzoiIGlubmVyKQorICAgICAgICAgICAgICAgIGlubmVyKSkpCisg ICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisgICAgIG5vZGUtc3RhcnQgbm9kZS1l bmQgJ21hcmtkb3duLXRzLWxpbmsgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChtYXJrZG93bi10 cy0tbWFrZS1saW5rLWJ1dHRvbiBub2RlLXN0YXJ0IG5vZGUtZW5kIHVybCkKKyAgICAod2hlbiBt YXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3Rh cnQgKDErIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAn bWFya2Rvd24tdHMtLW1hcmt1cCkKKyAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAoMS0gbm9kZS1l bmQpIG5vZGUtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rv d24tdHMtLW1hcmt1cCkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVm LWxhYmVsIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBsaW5r IHJlZmVyZW5jZSBkZWZpbml0aW9uIGxhYmVsIE5PREUgYXMgYSBjbGlja2FibGUgYnV0dG9uLgor VGhlIGJyYWNrZXRzIGFuZCBjb2xvbiBhcmUgaGlkZGVuIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4K K09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0 LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQt bm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBu b2RlKSkKKyAgICAgICAgIChwYXJlbnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpCisgICAg ICAgICAoZGVzdC1ub2RlICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVudCAiXFxgbGlua19k ZXN0aW5hdGlvblxcJyIpKQorICAgICAgICAgKHVybCAod2hlbiBkZXN0LW5vZGUgKHRyZWVzaXQt bm9kZS10ZXh0IGRlc3Qtbm9kZSB0KSkpKQorICAgIDs7IEZvbnRpZnkgdGhlIGxhYmVsIHRleHQg KGluc2lkZSBicmFja2V0cykuCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisg ICAgICgxKyBub2RlLXN0YXJ0KSAoMS0gbm9kZS1lbmQpCisgICAgICdtYXJrZG93bi10cy1saW5r IG92ZXJyaWRlIHN0YXJ0IGVuZCkKKyAgICA7OyBNYWtlIGl0IGEgY2xpY2thYmxlIGJ1dHRvbi4K KyAgICAod2hlbiB1cmwKKyAgICAgIChtYXJrZG93bi10cy0tbWFrZS1saW5rLWJ1dHRvbiAoMSsg bm9kZS1zdGFydCkgKDEtIG5vZGUtZW5kKSB1cmwpKQorICAgIDs7IEhpZGUgIlsiIGJlZm9yZSBs YWJlbCBhbmQgIl06ICIgYmV0d2VlbiBsYWJlbCBhbmQgZGVzdGluYXRpb24uCisgICAgKHdoZW4g bWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0 YXJ0ICgxKyBub2RlLXN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUg J21hcmtkb3duLXRzLS1tYXJrdXApCisgICAgICAobGV0ICgoY29sb24tZW5kIChpZiBkZXN0LW5v ZGUgKHRyZWVzaXQtbm9kZS1zdGFydCBkZXN0LW5vZGUpCisgICAgICAgICAgICAgICAgICAgICAg ICAgKDErIG5vZGUtZW5kKSkpKQorICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKDEtIG5vZGUt ZW5kKSBjb2xvbi1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21h cmtkb3duLXRzLS1tYXJrdXApKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbGlu ay1yZWYtZGVzdGluYXRpb24gKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3QgXykKKyAgIkZv bnRpZnkgbGluayByZWZlcmVuY2UgZGVzdGluYXRpb24gTk9ERSBhbmQgaGlkZSB3aGVuIG1hcmt1 cCBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRv CitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKHRyZWVzaXQtZm9udGlmeS13 aXRoLW92ZXJyaWRlCisgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUt ZW5kIG5vZGUpCisgICAnbWFya2Rvd24tdHMtbGluay1kZXN0aW5hdGlvbiBvdmVycmlkZSBzdGFy dCBlbmQpCisgICh3aGVuIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgKHB1dC10ZXh0LXBy b3BlcnR5ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkK KyAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rvd24tdHMtLW1hcmt1cCkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxhdGV4LWJsb2NrLXZhbGlkLXAgKG5vZGUpCisgICJS ZXR1cm4gbm9uLW5pbCBpZiBsYXRleCBibG9jayBOT0RFIGlzIHdpdGhpbiBhIHNpbmdsZSBpbmxp bmUgc2NvcGUuCitUaGUgZ2xvYmFsIGlubGluZSBwYXJzZXIgY2FuIGNyZWF0ZSBmYWxzZSBgbGF0 ZXhfYmxvY2snIG1hdGNoZXMKK3NwYW5uaW5nIGFjcm9zcyBwYXJhZ3JhcGggYm91bmRhcmllcy4g IENoZWNrIHRoYXQgdGhlIG9wZW5pbmcgYW5kCitjbG9zaW5nIGRlbGltaXRlcnMgc2hhcmUgdGhl IHNhbWUgbWFya2Rvd24gYGlubGluZScgYW5jZXN0b3IuIgorICAobGV0ICgobm9kZS1zdGFydCAo dHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1lbmQgKDEtICh0cmVlc2l0 LW5vZGUtZW5kIG5vZGUpKSkpCisgICAgKHdoZW4tbGV0KiAoKG1kLXN0YXJ0ICh0cmVlc2l0LW5v ZGUtYXQgbm9kZS1zdGFydCAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAgIChtZC1lbmQgKHRy ZWVzaXQtbm9kZS1hdCBub2RlLWVuZCAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAgIChpbmxp bmUtc3RhcnQgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWQtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChu KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUt dHlwZSBuKSAiaW5saW5lIikpKSkKKyAgICAgICAgICAgICAgICAoaW5saW5lLWVuZCAodHJlZXNp dC1wYXJlbnQtdW50aWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWQtZW5kCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG4pCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAiaW5saW5lIikpKSkpCisg ICAgICAoZXEgKHRyZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtc3RhcnQpCisgICAgICAgICAgKHRy ZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtZW5kKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWxhdGV4LWJsb2NrIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAi Rm9udGlmeSBsYXRleCBibG9jayBOT0RFIGFuZCBoaWRlIGl0cyBkZWxpbWl0ZXJzIHdoZW4gbWFy a3VwIGlzIGhpZGRlbi4KK1NraXAgZm9udGlmaWNhdGlvbiBmb3IgZmFsc2UgbWF0Y2hlcyB0aGF0 IHNwYW4gYWNyb3NzIHBhcmFncmFwaCBib3VuZGFyaWVzLgorT1ZFUlJJREUsIFNUQVJULCBhbmQg RU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRl Jy4iCisgICh3aGVuIChtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCBub2RlKQorICAg ICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICdtYXJrZG93bi10cy1sYXRleCBv dmVycmlkZSBzdGFydCBlbmQpCisgICAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAg ICAgIChkb3RpbWVzIChpICh0cmVlc2l0LW5vZGUtY2hpbGQtY291bnQgbm9kZSkpCisgICAgICAg IChsZXQgKChjaGlsZCAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgaSkpKQorICAgICAgICAgICh3 aGVuIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgY2hpbGQpICJsYXRleF9zcGFuX2RlbGltaXRl ciIpCisgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKHRyZWVzaXQtbm9kZS1zdGFydCBj aGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBj aGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93 bi10cy0tbWFya3VwKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktYmFja3Ns YXNoLWVzY2FwZSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkg YmFja3NsYXNoIGVzY2FwZSBOT0RFLCBoaWRpbmcgdGhlIGJhY2tzbGFzaCB3aGVuIG1hcmt1cCBp cyBoaWRkZW4uCitTa2lwIGhpZGluZyBpbnNpZGUgYGxhdGV4X2Jsb2NrJyB3aGVyZSBiYWNrc2xh c2hlcyBhcmUgTGFUZVggc3ludGF4LgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNz ZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQg KChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChpbi1sYXRl eCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICJsYXRleF9ibG9jayIpKSkKKyAgICAodHJlZXNpdC1m b250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgbm9kZS1zdGFydCAoMSsgbm9kZS1zdGFydCkKKyAg ICAgJ21hcmtkb3duLXRzLWRlbGltaXRlciBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKHdoZW4g KGFuZCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCAobm90IGluLWxhdGV4KSkKKyAgICAgIChwdXQt dGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0ICgxKyBub2RlLXN0YXJ0KQorICAgICAgICAgICAgICAg ICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkpCisKKyhkZWZ2YXIg c2dtbC1jaGFyLW5hbWVzKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVudGl0eS1nZXQgIm9yZy9v cmctZW50aXRpZXMuZWwiKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHkgKHRl eHQpCisgICJEZWNvZGUgSFRNTCBlbnRpdHkgVEVYVCAoZS5nLiwgXCImYW1wO1wiKSB0byBpdHMg Y2hhcmFjdGVyIHN0cmluZy4KK1JldHVybiB0aGUgZGVjb2RlZCBzdHJpbmcsIG9yIG5pbCBpZiB0 aGUgZW50aXR5IGlzIHVua25vd24uIgorICAoY29uZAorICAgOzsgTnVtZXJpYyBoZXggJiN4MUY0 QTk7CisgICAoKHN0cmluZy1tYXRjaCAiXFxgJiN4XFwoW1s6eGRpZ2l0Ol1dK1xcKTtcXCciIHRl eHQpCisgICAgKGNoYXItdG8tc3RyaW5nIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcg MSB0ZXh0KSAxNikpKQorICAgOzsgTnVtZXJpYyBkZWNpbWFsICYjMTIzOworICAgKChzdHJpbmct bWF0Y2ggIlxcYCYjXFwoW1s6ZGlnaXQ6XV0rXFwpO1xcJyIgdGV4dCkKKyAgICAoY2hhci10by1z dHJpbmcgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAxIHRleHQpKSkpCisgICA7OyBO YW1lZCAmYW1wOyAmY29weTsgdmlhIG9yZy1lbnRpdGllcywgZmFsbCBiYWNrIHRvIHNnbWwtY2hh ci1uYW1lcworICAgKChzdHJpbmctbWF0Y2ggIlxcYCZcXChbWzphbG51bTpdXStcXCk7XFwnIiB0 ZXh0KQorICAgIChsZXQgKChuYW1lIChtYXRjaC1zdHJpbmcgMSB0ZXh0KSkpCisgICAgICAocmVx dWlyZSAnb3JnLWVudGl0aWVzKQorICAgICAgKGlmLWxldCogKChlbnRyeSAob3JnLWVudGl0eS1n ZXQgbmFtZSkpCisgICAgICAgICAgICAgICAgKHV0ZjggKG50aCA2IGVudHJ5KSkpCisgICAgICAg ICAgdXRmOAorICAgICAgICAocmVxdWlyZSAnc2dtbC1tb2RlKQorICAgICAgICAod2hlbi1sZXQq ICgoY29kZSAoc2VxLXBvc2l0aW9uIHNnbWwtY2hhci1uYW1lcyBuYW1lICMnZXF1YWwpKSkKKyAg ICAgICAgICAoY2hhci10by1zdHJpbmcgY29kZSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1mb250aWZ5LWVudGl0eSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZv bnRpZnkgZW50aXR5IE5PREUgYW5kIHNob3cgaXRzIGRlY29kZWQgdmFsdWUgd2hlbiBtYXJrdXAg aXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0 bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQgKChub2RlLXN0YXJ0 ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1u b2RlLWVuZCBub2RlKSkKKyAgICAgICAgKGZhY2UgKGlmIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5 cGUgbm9kZSkgImVudGl0eV9yZWZlcmVuY2UiKQorICAgICAgICAgICAgICAgICAgJ21hcmtkb3du LXRzLWVudGl0eS1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtbnVtZXJp Yy1jaGFyYWN0ZXItcmVmZXJlbmNlKSkpCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJy aWRlIG5vZGUtc3RhcnQgbm9kZS1lbmQgZmFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKGlmIG1hcmtkb3duLXRzLWhpZGUtbWFy a3VwCisgICAgICAgICh3aGVuLWxldCogKChkZWNvZGVkIChtYXJrZG93bi10cy0tZGVjb2RlLWVu dGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IG5v ZGUgdCkpKQorICAgICAgICAgICAgICAgICAgICAoKGNoYXItZGlzcGxheWFibGUtcCAoYXJlZiBk ZWNvZGVkIDApKSkpCisgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3RhcnQgbm9k ZS1lbmQgJ2Rpc3BsYXkgZGVjb2RlZCkpCisgICAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyBu b2RlLXN0YXJ0IG5vZGUtZW5kICcoZGlzcGxheSBuaWwpKSkpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtLXJlc29sdmUtZGlzcGxheS12YWx1ZSAodmFsKQorICAiUmVzb2x2ZSBWQUwsIGEgY29ucyAo UFJFRkVSUkVEIC4gRkFMTEJBQ0spLCB0byBhIGRpc3BsYXlhYmxlIHZhbHVlLgorUmV0dXJuIFBS RUZFUlJFRCBpZiBpdHMgZmlyc3QgY2hhcmFjdGVyIHBhc3NlcyBgY2hhci1kaXNwbGF5YWJsZS1w JywKK290aGVyd2lzZSByZXR1cm4gRkFMTEJBQ0suICBSZXR1cm4gbmlsIGlmIFZBTCBpcyBuaWwu IgorICAod2hlbiB2YWwKKyAgICAobGV0KiAoKHByZWZlcnJlZCAoY2FyIHZhbCkpCisgICAgICAg ICAgIChjaCAoaWYgKGNoYXJhY3RlcnAgcHJlZmVycmVkKSBwcmVmZXJyZWQgKGFyZWYgcHJlZmVy cmVkIDApKSkpCisgICAgICAoaWYgKGNoYXItZGlzcGxheWFibGUtcCBjaCkgKGNhciB2YWwpIChj ZHIgdmFsKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94IChub2Rl IG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSB0YXNrIGxpc3QgY2hlY2ti b3ggTk9ERSwgc2hvdyBhIFVuaWNvZGUgc3ltYm9sIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK09W RVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZv bnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9k ZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2Rl KSkKKyAgICAgICAgIChjaGVja2VkIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgInRh c2tfbGlzdF9tYXJrZXJfY2hlY2tlZCIpKQorICAgICAgICAgKGZhY2UgKGlmIGNoZWNrZWQgJ21h cmtkb3duLXRzLXRhc2stY2hlY2tlZAorICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtdGFz ay11bmNoZWNrZWQpKQorICAgICAgICAgKHZhbHVlIChpZiBjaGVja2VkCisgICAgICAgICAgICAg ICAgICAgIG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3gKKyAgICAgICAgICAgICAgICAgIG1h cmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveCkpCisgICAgICAgICAocmVwbGFjZW1lbnQKKyAg ICAgICAgICAoY29uZCAoKGVxIHZhbHVlICdpY29uKQorICAgICAgICAgICAgICAgICAoaWNvbi1z dHJpbmcgKGlmIGNoZWNrZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFy a2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveC1pY29uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2tib3gtaWNvbikpKQorICAgICAgICAg ICAgICAgICh0IChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVlIHZhbHVlKSkpKQor ICAgICAgICAgOzsgSWYgYGljb24tc3RyaW5nJyByZXR1cm5lZCBhbiBpbWFnZSwgaXRzIGBkaXNw bGF5JyBwcm9wZXJ0eQorICAgICAgICAgOzsgb24gY2hhciAwIGhvbGRzIHRoZSBhY3R1YWwgaW1h Z2Ugc3BlYzsgbmVzdGVkIGBkaXNwbGF5JworICAgICAgICAgOzsgcHJvcHMgYXJlIG5vdCBob25v cmVkIHdoZW4gYSBzdHJpbmcgaXMgdGhlIHZhbHVlIG9mIGEKKyAgICAgICAgIDs7IGBkaXNwbGF5 JyB0ZXh0LXByb3BlcnR5LCBzbyBhcHBseSB0aGUgc3BlYyBkaXJlY3RseS4KKyAgICAgICAgIChk aXNwbGF5LXNwZWMKKyAgICAgICAgICAob3IgKGFuZCAoZXEgdmFsdWUgJ2ljb24pIHJlcGxhY2Vt ZW50CisgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5IDAgJ2Rpc3BsYXkgcmVw bGFjZW1lbnQpKQorICAgICAgICAgICAgICByZXBsYWNlbWVudCkpKQorICAgICh0cmVlc2l0LWZv bnRpZnktd2l0aC1vdmVycmlkZSBub2RlLXN0YXJ0IG5vZGUtZW5kIGZhY2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChpZiAoYW5k IG1hcmtkb3duLXRzLWhpZGUtbWFya3VwIHJlcGxhY2VtZW50CisgICAgICAgICAgICAgKG9yIChl cSB2YWx1ZSAnaWNvbikKKyAgICAgICAgICAgICAgICAgKGNoYXItZGlzcGxheWFibGUtcCAoYXJl ZiByZXBsYWNlbWVudCAwKSkpKQorICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgbm9kZS1zdGFy dCBub2RlLWVuZCAnZGlzcGxheSBkaXNwbGF5LXNwZWMpCisgICAgICAocmVtb3ZlLXRleHQtcHJv cGVydGllcyBub2RlLXN0YXJ0IG5vZGUtZW5kICcoZGlzcGxheSBuaWwpKSkpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWZvbnRpZnktaGFyZC1saW5lLWJyZWFrIChub2RlIG92ZXJyaWRlIHN0YXJ0 IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBoYXJkIGxpbmUgYnJlYWsgTk9ERTsgc2hvdyBhIFVu aWNvZGUgc3ltYm9sIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK0EgYmFja3NsYXNoIGJyZWFrIGdl dHMgYG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gnIChvciBpdHMKK2AtaGlk ZGVuJyB2YXJpYW50IHdoZW4gbWFya3VwIGlzIGhpZGRlbik7IGEgdHJhaWxpbmctc3BhY2VzIGJy ZWFrIGdldHMKK2BtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UnIChvciBgLWhpZGRl bicpLiAgV2hlbiBoaWRkZW4sIGEKK2JhY2tzbGFzaCBicmVhayBpcyByZXBsYWNlZCBieSBhIHNp bmdsZSBgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrJworZ2x5cGg7IGEgdHJhaWxpbmctc3Bh Y2VzIGJyZWFrIHJlcGxhY2VzIGVhY2ggc3BhY2Ugd2l0aCB0aGUgZ2x5cGgsIHNvIHRoZSBydW4K K29mIHBpbGNyb3dzIGZpbGxzIHRoZSBsaW5lIHVwIHRvIHRoZSBuZXdsaW5lLgorT1ZFUlJJREUs IFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13 aXRoLW92ZXJyaWRlJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0 IG5vZGUpKQorICAgICAgICAgKG5vZGUtZW5kICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisg ICAgICAgICAodGV4dCAgICAgICAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSB0KSkKKyAgICAgICAg IChiYWNrc2xhc2ggIChhbmQgKD4gKGxlbmd0aCB0ZXh0KSAwKSAoZXEgKGFyZWYgdGV4dCAwKSA/ XFwpKSkKKyAgICAgICAgIDs7IERldGVybWluZSB0aGUgYWN0dWFsIHJhbmdlIHRvIGZvbnRpZnkg YW5kIHJlcGxhY2UuICBUaGUKKyAgICAgICAgIDs7IGhhcmRfbGluZV9icmVhayBub2RlIG1heSBu b3QgY292ZXIgdGhlIGZ1bGwgcnVuIG9mIHRyYWlsaW5nCisgICAgICAgICA7OyBzcGFjZXMsIHNv IHdhbGsgYmFjayBmcm9tIGVuZC1vZi1saW5lIG91cnNlbHZlcyBmb3IgdGhlCisgICAgICAgICA7 OyBzcGFjZXMgdmFyaWFudC4KKyAgICAgICAgIChyZWdpb24gICAgIChpZiBiYWNrc2xhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAoY29ucyBub2RlLXN0YXJ0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGlmIChhbmQgKD4gbm9kZS1lbmQgbm9kZS1zdGFydCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGNoYXItYmVmb3JlIG5vZGUtZW5k KSA/XG4pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS0gbm9kZS1lbmQp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLWVuZCkpCisgICAgICAgICAg ICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgIChn b3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoZW9s IChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMg KHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgZW9sKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFy cy1iYWNrd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiIChsaW5l LWJlZ2lubmluZy1wb3NpdGlvbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlb2wpKSkpKQorICAg ICAgICAgKHJlZ2lvbi1zdGFydCAoY2FyIHJlZ2lvbikpCisgICAgICAgICAocmVnaW9uLWVuZCAg IChjZHIgcmVnaW9uKSkKKyAgICAgICAgIChmYWNlICAgICAgIChjb25kCisgICAgICAgICAgICAg ICAgICAgICAgKChhbmQgYmFja3NsYXNoIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwKQorICAgICAg ICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaC1o aWRkZW4pCisgICAgICAgICAgICAgICAgICAgICAgKGJhY2tzbGFzaCAnbWFya2Rvd24tdHMtaGFy ZC1saW5lLWJyZWFrLWJhY2tzbGFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24t dHMtaGlkZS1tYXJrdXAKKyAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWhhcmQt bGluZS1icmVhay1zcGFjZS1oaWRkZW4pCisgICAgICAgICAgICAgICAgICAgICAgKHQgJ21hcmtk b3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZSkpKSkKKyAgICAodHJlZXNpdC1mb250aWZ5LXdp dGgtb3ZlcnJpZGUgcmVnaW9uLXN0YXJ0IHJlZ2lvbi1lbmQgZmFjZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgOzsgQWx3YXlzIHN0 YXJ0IGJ5IGNsZWFyaW5nIGFueSBzdGFsZSBgZGlzcGxheScgcHJvcGVydHkuICBXZSBuZXZlcgor ICAgIDs7IHNwYW4gdGhlIHRyYWlsaW5nIG5ld2xpbmUgd2l0aCBgZGlzcGxheScgKGl0IGNvbmZ1 c2VzCisgICAgOzsgcmVkaXNwbGF5J3MgY3Vyc29yIHBsYWNlbWVudCksIGFuZCB3ZSBvbmx5IHBh aW50IGEgc2luZ2xlCisgICAgOzsgY29tYmluZWQgc3RyaW5nIG9udG8gdGhlIGZpcnN0IGNoYXJh Y3RlciBvZiB0aGUgcnVuLCBsZWF2aW5nCisgICAgOzsgdGhlIHJlc3Qgb2YgdGhlIG1hcmt1cCBh bG9uZS4KKyAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyByZWdpb24tc3RhcnQgcmVnaW9uLWVu ZCAnKGRpc3BsYXkgbmlsKSkKKyAgICAod2hlbiBtYXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAg ICAgKGxldCogKChzcGVjIChpZiBiYWNrc2xhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgKG1h cmtkb3duLXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAg IG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpCisgICAgICAgICAgICAgICAg ICAgICBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UpKQorICAgICAgICAgICAgIChz dHIgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAoKG51bGwgc3BlYykgbmlsKQorICAgICAgICAg ICAgICAgICAgICgoY2hhcmFjdGVycCBzcGVjKSAoY2hhci10by1zdHJpbmcgc3BlYykpCisgICAg ICAgICAgICAgICAgICAgKChzdHJpbmdwIHNwZWMpIHNwZWMpCisgICAgICAgICAgICAgICAgICAg KChmdW5jdGlvbnAgc3BlYykKKyAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc3BlYyAoLSBy ZWdpb24tZW5kIHJlZ2lvbi1zdGFydCkpKSkpKQorICAgICAgICAod2hlbiAoYW5kIChzdHJpbmdw IHN0cikKKyAgICAgICAgICAgICAgICAgICAoPiAobGVuZ3RoIHN0cikgMCkKKyAgICAgICAgICAg ICAgICAgICAoY2hhci1kaXNwbGF5YWJsZS1wIChhcmVmIHN0ciAwKSkpCisgICAgICAgICAgKHB1 dC10ZXh0LXByb3BlcnR5IHJlZ2lvbi1zdGFydCAoMSsgcmVnaW9uLXN0YXJ0KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSBzdHIpCisgICAgICAgICAgOzsgRm9yIHRoZSB0 cmFpbGluZy1zcGFjZXMgdmFyaWFudCwgaGlkZSB0aGUgcmVtYWluaW5nCisgICAgICAgICAgOzsg c3BhY2VzIGluIHRoZSBydW4gc28gdGhlIGxpbmUgZG9lc24ndCBlbmQgd2l0aCBsZWZ0b3Zlcgor ICAgICAgICAgIDs7IHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIHN1YnN0aXR1dGVkIGdseXBoLiAgRWFj aCBwb3NpdGlvbgorICAgICAgICAgIDs7IGdldHMgaXRzIG93biBlbXB0eS1zdHJpbmcgYGRpc3Bs YXknIHNvIGN1cnNvciBwbGFjZW1lbnQKKyAgICAgICAgICA7OyBzdGF5cyB1bmFtYmlndW91cy4K KyAgICAgICAgICAodW5sZXNzIGJhY2tzbGFzaAorICAgICAgICAgICAgKGxldCAoKGkgKDErIHJl Z2lvbi1zdGFydCkpKQorICAgICAgICAgICAgICAod2hpbGUgKDwgaSByZWdpb24tZW5kKQorICAg ICAgICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBpICgxKyBpKSAnZGlzcGxheSAiIikKKyAg ICAgICAgICAgICAgICAoc2V0cSBpICgxKyBpKSkpKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtLWZvbnRpZnktdGhlbWF0aWMtYnJlYWsgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0 IF8pCisgICJGb250aWZ5IHRoZW1hdGljIGJyZWFrIE5PREUgYW5kIHNob3cgYSBsaW5lIHdoZW4g bWFya3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRo cm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0ICgobm9k ZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1lbmQgKHRy ZWVzaXQtbm9kZS1lbmQgbm9kZSkpKQorICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlk ZSBub2RlLXN0YXJ0IG5vZGUtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdtYXJrZG93bi10cy10aGVtYXRpYy1icmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKGxldCAoKGNoYXIgKG1hcmtkb3duLXRz LS1yZXNvbHZlLWRpc3BsYXktdmFsdWUKKyAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtdGhl bWF0aWMtYnJlYWstY2hhcmFjdGVyKSkpCisgICAgICAoaWYgKGFuZCBtYXJrZG93bi10cy1oaWRl LW1hcmt1cCBjaGFyIChjaGFyLWRpc3BsYXlhYmxlLXAgY2hhcikpCisgICAgICAgICAgKGxldCog KChjb2wgKHNhdmUtZXhjdXJzaW9uIChnb3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCisgICAgICAgICAg ICAgICAgIDs7IFNwYW4gaWYgdGhlIGZhY2UgaGFzIG5vbi1uaWwgOmV4dGVuZC4KKyAgICAgICAg ICAgICAgICAgKHNwYW4tbGVuZ3RoIChpZiAoZmFjZS1hdHRyaWJ1dGUgJ21hcmtkb3duLXRzLXRo ZW1hdGljLWJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpleHRlbmQgbmlsICdkZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgtICh3aW5kb3ctYm9keS13aWR0aCkgY29sKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAxMikpKQorICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3Rh cnQgbm9kZS1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1ha2Utc3RyaW5nIHNwYW4tbGVuZ3RoIGNoYXIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJcbiIpKSkKKyAgICAgICAgKHJlbW92ZS10ZXh0LXByb3BlcnRp ZXMgbm9kZS1zdGFydCBub2RlLWVuZCAnKGRpc3BsYXkgbmlsKSkpKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tZm9udGlmeS1jb2RlLWJsb2NrIChub2RlIF9vdmVycmlkZSBfc3RhcnQgX2VuZCAm cmVzdCBfKQorICAiRm9udGlmeSBjb2RlIGJsb2NrIGNvbnRlbnQgTk9ERSB3aXRoIGEgYmFja2dy b3VuZCBvdmVybGF5LgorVXNlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1hcmt1cC1oaWRkZW4n IHdoZW4gbWFya3VwIGlzIGhpZGRlbiwKK2BtYXJrZG93bi10cy1jb2RlLWJsb2NrJyBvdGhlcndp c2UuICBVc2UgYW4gb3ZlcmxheSBzbyB0aGUKK2JhY2tncm91bmQgbGF5ZXJzIGl0c2VsZiBiZWhp bmQgbGFuZ3VhZ2Utc3BlY2lmaWMgZm9udGlmaWNhdGlvbi4KK1RoZSBvdmVybGF5IGFsc28gc3Rv cmVzIHRoZSBjb2RlIGJsb2NrIGxhbmd1YWdlIGFuZCBtb2RlIGFzCitwcm9wZXJ0aWVzIGBtYXJr ZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlJyBhbmQKK2BtYXJrZG93bi10cy1jb2RlLWJsb2Nr LW1vZGUnLCBhY2Nlc3NpYmxlIHZpYQorYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2Ut YXQnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAg ICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAg ICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKQorICAgICAgICAgKG5v ZGUtZW5kIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo dHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJz LWJhY2t3YXJkICIgXHQiKQorICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAg ICAoZmFjZSAoaWYgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgICAgICAgICAgICAgICAn bWFya2Rvd24tdHMtY29kZS1ibG9jay1tYXJrdXAtaGlkZGVuCisgICAgICAgICAgICAgICAgICdt YXJrZG93bi10cy1jb2RlLWJsb2NrKSkKKyAgICAgICAgIChsYW5nIChtYXJrZG93bi10cy0tbGFu Z3VhZ2UtYXQtbm9kZSBub2RlKSkKKyAgICAgICAgIChtb2RlICh3aGVuIGxhbmcKKyAgICAgICAg ICAgICAgICAgKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgbGFuZykpKQor ICAgICAgICAgKGV4aXN0aW5nIChzZXEtZmluZCAobGFtYmRhIChvdikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAob3ZlcmxheS1nZXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2sp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheXMtYXQgbm9kZS1zdGFydCkp KSkKKyAgICAoaWYgZXhpc3RpbmcKKyAgICAgICAgKHByb2duCisgICAgICAgICAgKG1vdmUtb3Zl cmxheSBleGlzdGluZyBub2RlLXN0YXJ0IG5vZGUtZW5kKQorICAgICAgICAgIChvdmVybGF5LXB1 dCBleGlzdGluZyAnZmFjZSBmYWNlKQorICAgICAgICAgIChvdmVybGF5LXB1dCBleGlzdGluZyAn bWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSBsYW5nKQorICAgICAgICAgIChvdmVybGF5 LXB1dCBleGlzdGluZyAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlIG1vZGUpKQorICAgICAg KGxldCAoKG92IChtYWtlLW92ZXJsYXkgbm9kZS1zdGFydCBub2RlLWVuZCBuaWwgdCBuaWwpKSkK KyAgICAgICAgOzsgTWFya2VycyBuZWVkIHRvIGJlIHNldCBvbmx5IG9uY2UuCisgICAgICAgIChv dmVybGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1iZWctbWFya2VyIChzZXQtbWFya2VyICht YWtlLW1hcmtlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbm9kZS1zdGFydCkpCisgICAgICAgIChvdmVybGF5LXB1dCBv diAnbWFya2Rvd24tdHMtY29kZS1lbmQtbWFya2VyIChzZXQtbWFya2VyIChtYWtlLW1hcmtlcikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbm9kZS1lbmQpKQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRz LWNvZGUtYmxvY2sgdCkKKyAgICAgICAgKG92ZXJsYXktcHV0IG92ICdmYWNlIGZhY2UpCisgICAg ICAgIChvdmVybGF5LXB1dCBvdiAncHJpb3JpdHkgJyhuaWwgLiAxMCkpCisgICAgICAgIChvdmVy bGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSBsYW5nKQorICAgICAg ICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZSBtb2RlKQorICAg ICAgICAob3ZlcmxheS1wdXQgb3YgJ2V2YXBvcmF0ZSB0KSkpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLWF0LWNvZGUtYmxvY2stcCAoJm9wdGlvbmFsIHBvcykKKyAgIlJldHVybiBub24gbmlsIGlm IHBvaW50IGlzIGluIGEgY29kZSBibG9jay4KK0lmIFBPUyBpcyBuaWwsIHVzZSBwb2ludC4iCisg IChnZXQtY2hhci1wcm9wZXJ0eSAob3IgcG9zIChwb2ludCkpICdtYXJrZG93bi10cy1jb2RlLWJs b2NrKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2UtYXQgKCZvcHRp b25hbCBwb3MpCisgICJSZXR1cm4gdGhlIGxhbmd1YWdlIHN5bWJvbCBvZiB0aGUgY29kZSBibG9j ayBhdCBQT1MuCitJZiBQT1MgaXMgbmlsLCB1c2UgcG9pbnQuICBSZXR1cm5zIG5pbCBpZiBQT1Mg aXMgbm90IGluc2lkZSBhIGZlbmNlZAorY29kZSBibG9jay4gIFRoaXMgd29ya3MgcmVnYXJkbGVz cyBvZiB3aGV0aGVyIGEgZ3Vlc3QgdHJlZS1zaXR0ZXIgcGFyc2VyCitpcyBhY3RpdmUsIHNpbmNl IHRoZSBsYW5ndWFnZSBpcyBzdG9yZWQgb24gdGhlIGNvZGUgYmxvY2sgb3ZlcmxheSBieSB0aGUK K2hvc3QgcGFyc2VyJ3MgZm9udGlmaWNhdGlvbi4iCisgIChnZXQtY2hhci1wcm9wZXJ0eSAob3Ig cG9zIChwb2ludCkpICdtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1hdCAoJm9wdGlvbmFsIHBvcykKKyAgIlJldHVy biB0aGUgbWFqb3IgbW9kZSBmb3IgdGhlIGNvZGUgYmxvY2sgYXQgUE9TLgorSWYgUE9TIGlzIG5p bCwgdXNlIHBvaW50LiAgUmV0dXJucyBuaWwgaWYgUE9TIGlzIG5vdCBpbnNpZGUgYSBmZW5jZWQK K2NvZGUgYmxvY2sgb3IgaWYgdGhlIGxhbmd1YWdlIGhhcyBubyByZWNvZ25pemVkIG1vZGUuIgor ICAod2hlbiAobWFya2Rvd24tdHMtYXQtY29kZS1ibG9jay1wIHBvcykKKyAgICAob3IgKGdldC1j aGFyLXByb3BlcnR5IChvciBwb3MgKHBvaW50KSkgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9k ZSkKKyAgICAgICAgbWFya2Rvd24tdHMtZGVmYXVsdC1jb2RlLWJsb2NrLW1vZGUpKSkKKworKGRl ZnVuIG1hcmtkb3duLXRzLS1ob3N0LXJhbmdlcy1ub3RpZmllciAocmFuZ2VzIF9wYXJzZXIpCisg ICJQcnVuZSBzdGFsZSBjb2RlIGJsb2NrIG92ZXJsYXlzIGFmdGVyIHRoZSBob3N0IHBhcnNlciBy ZXBhcnNlcy4KK1JBTkdFUyBpcyBhIGxpc3Qgb2YgKFNUQVJUIC4gRU5EKSBjb25zIGNlbGxzIG1h cmtpbmcgcmVnaW9ucyB3aGVyZQordGhlIG1hcmtkb3duIHBhcnNlIHRyZWUgY2hhbmdlZC4gIEZv ciBlYWNoIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrJworb3ZlcmxheSBpbnRlcnNlY3RpbmcgYSBj aGFuZ2VkIHJhbmdlLCB2ZXJpZnkgdGhhdCBhIGNvbnRhaW5pbmcKK2BmZW5jZWRfY29kZV9ibG9j aycgbm9kZSBzdGlsbCBleGlzdHMgaW4gdGhlIGhvc3QgdHJlZS4gIElmIG5vdCwKK3RoZSBmZW5j ZXMgd2VyZSBkZWxldGVkLCBzbyBkZWxldGUgdGhlIG92ZXJsYXkgdG8gYXZvaWQgcnVubmluZwor Y29tbWFuZHMgaW4gYSBzdGFsZSBibG9jayBjb250ZXh0LiIKKyAgKGRvbGlzdCAocmFuZ2UgcmFu Z2VzKQorICAgIChsZXQgKChiZWcgKGNhciByYW5nZSkpCisgICAgICAgICAgKGVuZCAoY2RyIHJh bmdlKSkpCisgICAgICAoZG9saXN0IChvdiAob3ZlcmxheXMtaW4gYmVnIGVuZCkpCisgICAgICAg ICh3aGVuIChvdmVybGF5LWdldCBvdiAnbWFya2Rvd24tdHMtY29kZS1ibG9jaykKKyAgICAgICAg ICAobGV0KiAoKG92LXN0YXJ0IChvdmVybGF5LXN0YXJ0IG92KSkKKyAgICAgICAgICAgICAgICAg KG5vZGUgKGFuZCBvdi1zdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0 LW5vZGUtYXQgb3Ytc3RhcnQgJ21hcmtkb3duKSkpKQorICAgICAgICAgICAgKHVubGVzcyAoYW5k IG5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSAiXFxgZmVuY2VkX2NvZGVfYmxvY2tcXCciIHQp KQorICAgICAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgb3YpKSkpKSkpKQorCis7OzsgSW1hZ2Ug aGFuZGxpbmc6CisKKyhkZWZ1biBtYXJrZG93bi10cy0taW1hZ2UtYWxvbmUtb24tbGluZS1wIChu b2RlKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgaW1hZ2UgTk9ERSBpcyB0aGUgb25seSBjb250ZW50 IG9uIGl0cyBsaW5lLgorV2hpdGVzcGFjZSwgYmxvY2sgcXVvdGUgbWFya2VycyAoYD4nKSwgYW5k IGxpc3QgbWFya2VycworXChgLScsIGAqJywgYCsnLCBgMS4nKSBiZWZvcmUgdGhlIGltYWdlIGFy ZSBpZ25vcmVkLiIKKyAgKGxldCAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2Rl KSkKKyAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAgICAoc2F2 ZS1leGN1cnNpb24KKyAgICAgIChnb3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgIChsZXQgKChi b2wgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkKKyAgICAgICAgICAgIChlb2wgKGxpbmUtZW5k LXBvc2l0aW9uKSkpCisgICAgICAgIDs7IEJlZm9yZSB0aGUgaW1hZ2U6IG9ubHkgYmxvY2sgcXVv dGUgbWFya2Vycywgd2hpdGVzcGFjZSwKKyAgICAgICAgOzsgYW5kIGFuIG9wdGlvbmFsIGxpc3Qg bWFya2VyIGFyZSBhbGxvd2VkLgorICAgICAgICAoYW5kIChzdHJpbmctbWF0Y2gtcAorICAgICAg ICAgICAgICAocnggYm9zCisgICAgICAgICAgICAgICAgICAoemVyby1vci1tb3JlIChhbnkgIj4g XHQiKSkKKyAgICAgICAgICAgICAgICAgIChvcHRpb25hbCAob3IgKHNlcSAoYW55ICItKisiKSAi ICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEgKG9uZS1vci1tb3JlIGRp Z2l0KSAoYW55ICIuKSIgKSAiICIpKSkKKyAgICAgICAgICAgICAgICAgIGVvcykKKyAgICAgICAg ICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBib2wgbm9kZS1zdGFydCkpCisg ICAgICAgICAgICAgOzsgQWZ0ZXIgdGhlIGltYWdlOiBvbmx5IHRyYWlsaW5nIHdoaXRlc3BhY2Ug YWxsb3dlZC4KKyAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoLXAKKyAgICAgICAgICAgICAgKHJ4 IGJvcyAoemVyby1vci1tb3JlIChhbnkgIiBcdCIpKSBlb3MpCisgICAgICAgICAgICAgIChidWZm ZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgbm9kZS1lbmQgZW9sKSkpKSkpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWZvbnRpZnktaW1hZ2UgKG5vZGUgX292ZXJyaWRlIF9zdGFydCBfZW5kICZy ZXN0IF8pCisgICJTaG93IGFuIGlubGluZSBpbWFnZSBhdCBOT0RFLgorV2hlbiBgbWFya2Rvd24t dHMtaW5saW5lLWltYWdlcycgaXMgbm9uLW5pbCwgZGlzcGxheSB0aGUgaW1hZ2UuCitJZiB0aGUg aW1hZ2UgbGluayBpcyB0aGUgb25seSBjb250ZW50IG9uIGl0cyBsaW5lLCBkaXNwbGF5IHRoZQor aW1hZ2UgYmVsb3cgdGhlIGxpbmsuICBJZiB0aGUgaW1hZ2UgaXMgaW5saW5lIHdpdGhpbiBhIHBh cmFncmFwaCwKK2Rpc3BsYXkgaXQgcmlnaHQgYWZ0ZXIgdGhlIGxpbmsgdGV4dC4KK1JlbW90ZSBp bWFnZXMgYXJlIGNvbnRyb2xsZWQgYnkKK2BtYXJrZG93bi10cy1kaXNwbGF5LXJlbW90ZS1pbmxp bmUtaW1hZ2VzJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5v ZGUpKQorICAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQorICAgICAg ICAgKGVvbCAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciBub2RlLWVuZCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICAgKHNlYXJj aC1lbmQgKG1pbiAoMSsgZW9sKSAocG9pbnQtbWF4KSkpKQorICAgIDs7IEFsd2F5cyBjbGVhciBz dGFsZSBvdmVybGF5cyBmb3IgdGhpcyBub2RlJ3MgcmFuZ2UuCisgICAgKGRvbGlzdCAob3YgKG92 ZXJsYXlzLWluIG5vZGUtc3RhcnQgc2VhcmNoLWVuZCkpCisgICAgICAod2hlbiAoYW5kIChvdmVy bGF5LWdldCBvdiAnbWFya2Rvd24tdHMtaW1hZ2UpCisgICAgICAgICAgICAgICAgICg+PSAob3Zl cmxheS1zdGFydCBvdikgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgKDw9IChvdmVybGF5 LWVuZCBvdikgc2VhcmNoLWVuZCkpCisgICAgICAgIChkZWxldGUtb3ZlcmxheSBvdikpKQorICAg ICh3aGVuIChhbmQgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcworICAgICAgICAgICAgICAgOzsg RG9uJ3QgY3JlYXRlIGltYWdlIG92ZXJsYXlzIGZvciBub2RlcyBpbnNpZGUKKyAgICAgICAgICAg ICAgIDs7IGZvbGRlZCAob3V0bGluZS1pbnZpc2libGUpIGhlYWRpbmdzLCBzaW5jZSB0aGUKKyAg ICAgICAgICAgICAgIDs7IGltYWdlcyB3b3VsZG4ndCBiZSB2aXNpYmxlIGFuZCBjb3VsZCBpbnRl cmZlcmUKKyAgICAgICAgICAgICAgIDs7IHdpdGggdGhlIGZvbGRlZCBkaXNwbGF5LgorICAgICAg ICAgICAgICAgKG5vdCAobWFya2Rvd24tdHMtLW91dGxpbmUtaW52aXNpYmxlLXAgbm9kZS1zdGFy dCkpKQorICAgICAgKGxldCogKChkZXN0ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIG5vZGUgIlxc YGxpbmtfZGVzdGluYXRpb25cXCciKSkKKyAgICAgICAgICAgICAodXJsIChhbmQgZGVzdCAodHJl ZXNpdC1ub2RlLXRleHQgZGVzdCB0KSkpCisgICAgICAgICAgICAgKHJlbW90ZXAgKGFuZCB1cmwg KHN0cmluZy1tYXRjaC1wICJcXGBodHRwcz86Ly8iIHVybCkpKQorICAgICAgICAgICAgIChkaXNw bGF5YWJsZQorICAgICAgICAgICAgICAod2hlbiB1cmwKKyAgICAgICAgICAgICAgICAoaWYgcmVt b3RlcAorICAgICAgICAgICAgICAgICAgICAod2hlbiAoZXEgbWFya2Rvd24tdHMtZGlzcGxheS1y ZW1vdGUtaW5saW5lLWltYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rvd25s b2FkKQorICAgICAgICAgICAgICAgICAgICAgIChpZ25vcmUtZXJyb3JzCisgICAgICAgICAgICAg ICAgICAgICAgICAocmVxdWlyZSAndXJsLWhhbmRsZXJzKQorICAgICAgICAgICAgICAgICAgICAg ICAgKHdpdGgtd29yay1idWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1idWZm ZXItbXVsdGlieXRlIG5pbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHVybC1pbnNlcnQt ZmlsZS1jb250ZW50cyB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Ry aW5nKSkpKQorICAgICAgICAgICAgICAgICAgKGxldCAoKGZpbGUgKGV4cGFuZC1maWxlLW5hbWUg dXJsKSkpCisgICAgICAgICAgICAgICAgICAgIChhbmQgKG5vdCAoZmlsZS1yZW1vdGUtcCBmaWxl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1leGlzdHMtcCBmaWxlKQorICAgICAg ICAgICAgICAgICAgICAgICAgIChpbWFnZS1zdXBwb3J0ZWQtZmlsZS1wIGZpbGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgZmlsZSkpKSkpCisgICAgICAgICAgICAgKG1heC13IChhbmQgZGlz cGxheWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGVxIG1hcmtkb3duLXRzLWlt YWdlLW1heC13aWR0aCAnd2luZG93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2lu ZG93LWJvZHktd2lkdGggbmlsIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93 bi10cy1pbWFnZS1tYXgtd2lkdGgpKSkKKyAgICAgICAgICAgICAoaW1nIChhbmQgbWF4LXcKKyAg ICAgICAgICAgICAgICAgICAgICAgKGNyZWF0ZS1pbWFnZSBkaXNwbGF5YWJsZSBuaWwgcmVtb3Rl cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXgtd2lkdGggbWF4LXcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2NhbGUgMSkpKSkKKyAgICAg ICAgKHdoZW4gaW1nCisgICAgICAgICAgKGxldCogKChhbG9uZSAobWFya2Rvd24tdHMtLWltYWdl LWFsb25lLW9uLWxpbmUtcCBub2RlKSkKKyAgICAgICAgICAgICAgICAgKHN0ciAoaWYgYWxvbmUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiXG4iIChwcm9wZXJ0aXplICIgIiAn ZGlzcGxheSBpbWcpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUgIiAiICdk aXNwbGF5IGltZykpKQorICAgICAgICAgICAgICAgICAob3YgKG1ha2Utb3ZlcmxheSAoMS0gbm9k ZS1lbmQpIG5vZGUtZW5kIG5pbCB0IG5pbCkpKQorICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92 ICdtYXJrZG93bi10cy1pbWFnZSB0KQorICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdhZnRl ci1zdHJpbmcgc3RyKQorICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdldmFwb3JhdGUgdCkp KSkpKSkKKworOzs7IFVSTC9VUkkgaGFuZGxpbmc6CisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtLWJh cmUtdXJsLXJlZ2V4cCBnb3RvLWFkZHJlc3MtdXJsLXJlZ2V4cAorICAiUmVnZXhwIG1hdGNoaW5n IGJhcmUgVVJMcyBub3Qgd3JhcHBlZCBpbiBhbmdsZSBicmFja2V0cyBvciBsaW5rIHN5bnRheC4i KQorCisoZGVmdmFyIG1hcmtkb3duLXRzLS1iYXJlLWVtYWlsLXVyaS1yZWdleHAgZ290by1hZGRy ZXNzLW1haWwtcmVnZXhwCisgICJSZWdleHAgbWF0Y2hpbmcgYmFyZSBlbWFpbCBhZGRyZXNzZXMg bm90IHdyYXBwZWQgaW4gYW5nbGUgYnJhY2tldHMuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWJhcmUtdXJpIChzdGFydCBlbmQpCisgICJGb250aWZ5IGJhcmUgVVJMIG9yIGVtYWls IFVSSSBiZXR3ZWVuIFNUQVJUIGFuZCBFTkQuCitTa2lwIG1hdGNoZXMgYWxyZWFkeSBpbnNpZGUg dHJlZS1zaXR0ZXIgbGluayBvciBhdXRvbGluayBub2Rlcy4iCisgIChkb2xpc3QgKHJlIChsaXN0 IG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHAKKyAgICAgICAgICAgICAgICAgICAgbWFya2Rv d24tdHMtLWJhcmUtZW1haWwtdXJpLXJlZ2V4cCkpCisgICAgKGdvdG8tY2hhciBzdGFydCkKKyAg ICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIHJlIGVuZCB0KQorICAgICAgKGxldCogKCh1cmkt c3RhcnQgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgICAgICAodXJpLWVuZCAobWF0Y2gt ZW5kIDApKQorICAgICAgICAgICAgICh1cmkgKG1hdGNoLXN0cmluZyAwKSkKKyAgICAgICAgICAg ICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IHVyaS1zdGFydCAnbWFya2Rvd24taW5saW5lKSkKKyAg ICAgICAgICAgICAocGFyZW50IChhbmQgbm9kZSAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkp CisgICAgICAgICAgICAgKHBhcmVudC10eXBlIChhbmQgcGFyZW50ICh0cmVlc2l0LW5vZGUtdHlw ZSBwYXJlbnQpKSkpCisgICAgICAgICh1bmxlc3MgKG9yIChtZW1iZXIgcGFyZW50LXR5cGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJpbmxpbmVfbGluayIgImZ1bGxfcmVmZXJlbmNl X2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sbGFwc2VkX3JlZmVyZW5j ZV9saW5rIiAic2hvcnRjdXRfbGluayIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJp bWFnZSIgInVyaV9hdXRvbGluayIgImVtYWlsX2F1dG9saW5rIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImxpbmtfZGVzdGluYXRpb24iKSkKKyAgICAgICAgICAgICAgICAgICAgKG1l bWJlciAoYW5kIG5vZGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcoInVyaV9hdXRvbGluayIgImVtYWlsX2F1dG9saW5rIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImxpbmtfZGVzdGluYXRpb24iICJjb2RlX3NwYW4iCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiY29kZV9mZW5jZV9jb250ZW50IiAiaW5mb19zdHJp bmciKSkKKyAgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5IHVyaS1zdGFydCAn YnV0dG9uKSkKKyAgICAgICAgICAobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24KKyAgICAg ICAgICAgdXJpLXN0YXJ0IHVyaS1lbmQKKyAgICAgICAgICAgKGlmIChlcSB1cmktc3RhcnQgMCkK KyAgICAgICAgICAgICAgIHVyaQorICAgICAgICAgICAgIChjb25jYXQgIm1haWx0bzoiIHVyaSkp KSkpKSkpCisKKzs7OyB0cmVlc2l0IHNldHRpbmdzOgorCiAoZGVmdmFyIG1hcmtkb3duLXRzLS10 cmVlc2l0LXNldHRpbmdzCiAgICh0cmVlc2l0LWZvbnQtbG9jay1ydWxlcworICAgOmxhbmd1YWdl ICdtYXJrZG93bgorICAgOmZlYXR1cmUgJ2Vycm9yCisgICA6b3ZlcnJpZGUgdAorICAgJygoRVJS T1IpIEBmb250LWxvY2std2FybmluZy1mYWNlKQorCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlu bGluZQogICAgOm92ZXJyaWRlIHQKICAgIDpmZWF0dXJlICdkZWxpbWl0ZXIKLSAgICcoKGlubGlu ZV9saW5rIFsgIlsiICJdIiAiKCIgIikiIF0gQHNoYWRvdykKLSAgICAgKGltYWdlIFsgIiEiICJb IiAiXSIgIigiICIpIiBdIEBzaGFkb3cpKQorICAgJygoaW5saW5lX2xpbmsgWyAiWyIgIl0iICIo IiAiKSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQorICAgICAoZnVsbF9yZWZl cmVuY2VfbGluayBbICJbIiAiXSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQor ICAgICAoY29sbGFwc2VkX3JlZmVyZW5jZV9saW5rIFsgIlsiICJdIiBdIEBtYXJrZG93bi10cy0t Zm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChzaG9ydGN1dF9saW5rIFsgIlsiICJdIiBdIEBtYXJr ZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChpbWFnZSBbICIhIiAiWyIgIl0iICIo IiAiKSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKSkKIAogICAgOmxhbmd1YWdl ICdtYXJrZG93bgogICAgOmZlYXR1cmUgJ2hlYWRpbmcKLSAgICcoKGF0eF9oZWFkaW5nIChhdHhf aDFfbWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctMQotICAgICAoYXR4X2hlYWRpbmcgKGF0 eF9oMl9tYXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy0yCi0gICAgIChhdHhfaGVhZGluZyAo YXR4X2gzX21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTMKLSAgICAgKGF0eF9oZWFkaW5n IChhdHhfaDRfbWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctNAotICAgICAoYXR4X2hlYWRp bmcgKGF0eF9oNV9tYXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy01Ci0gICAgIChhdHhfaGVh ZGluZyAoYXR4X2g2X21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTYKLSAgICAgKHNldGV4 dF9oZWFkaW5nKSBAbWFya2Rvd24tdHMtc2V0ZXh0LWhlYWRpbmcpCisgICAnKCgoYXR4X2hlYWRp bmcpICAgIEBtYXJrZG93bi10cy0tZm9udGlmeS1oZWFkaW5nKQorICAgICAoKHNldGV4dF9oZWFk aW5nKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktaGVhZGluZykpCiAKICAgIDpsYW5ndWFnZSAnbWFy a2Rvd24KICAgIDpmZWF0dXJlICdoZWFkaW5nCkBAIC0xOTQsMTYgKzE2MDcsNDAgQEAgbWFya2Rv d24tdHMtLXRyZWVzaXQtc2V0dGluZ3MKICAgICAgKGF0eF9oM19tYXJrZXIpIEBtYXJrZG93bi10 cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0eF9oNF9tYXJrZXIpIEBtYXJrZG93bi10cy0t Zm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0eF9oNV9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9u dGlmeS1kZWxpbWl0ZXIKLSAgICAgKGF0eF9oNl9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlm eS1kZWxpbWl0ZXIpCisgICAgIChhdHhfaDZfbWFya2VyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnkt ZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDFfdW5kZXJsaW5lKSBAbWFya2Rvd24tdHMtLWZvbnRp ZnktZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDJfdW5kZXJsaW5lKSBAbWFya2Rvd24tdHMtLWZv bnRpZnktZGVsaW1pdGVyKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCiAgICA6ZmVhdHVyZSAn cGFyYWdyYXBoCi0gICAnKCgodGhlbWF0aWNfYnJlYWspIEBtYXJrZG93bi10cy1kZWxpbWl0ZXIp Ci0gICAgICgoaW5kZW50ZWRfY29kZV9ibG9jaykgQGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAg ICcoKCh0aGVtYXRpY19icmVhaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LXRoZW1hdGljLWJyZWFr KQorICAgICAoKGh0bWxfYmxvY2spIEBtYXJrZG93bi10cy1odG1sLWJsb2NrKQorICAgICAoKGlu ZGVudGVkX2NvZGVfYmxvY2spIEBtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2NrKQogICAg ICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9zdGFyKSBAbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIp CiAgICAgIChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BsdXMpIEBtYXJrZG93bi10cy1saXN0LW1h cmtlcikKICAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfbWludXMpIEBtYXJrZG93bi10cy1s aXN0LW1hcmtlcikKLSAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfZG90KSBAbWFya2Rvd24t dHMtbGlzdC1tYXJrZXIpKQorICAgICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3QpIEBtYXJr ZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfcGFyZW50 aGVzaXMpIEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAodGFza19s aXN0X21hcmtlcl91bmNoZWNrZWQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1jaGVja2JveCkKKyAg ICAgKGxpc3RfaXRlbSAodGFza19saXN0X21hcmtlcl9jaGVja2VkKSBAbWFya2Rvd24tdHMtLWZv bnRpZnktY2hlY2tib3gpCisgICAgIChsaW5rX3JlZmVyZW5jZV9kZWZpbml0aW9uCisgICAgICAo bGlua19sYWJlbCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVmLWxhYmVsKQorICAgICAo bGlua19yZWZlcmVuY2VfZGVmaW5pdGlvbgorICAgICAgKGxpbmtfZGVzdGluYXRpb24pIEBtYXJr ZG93bi10cy0tZm9udGlmeS1saW5rLXJlZi1kZXN0aW5hdGlvbikKKyAgICAgKGxpbmtfcmVmZXJl bmNlX2RlZmluaXRpb24KKyAgICAgIChsaW5rX3RpdGxlKSBAbWFya2Rvd24tdHMtbGluay1kZXN0 aW5hdGlvbikpCisKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24KKyAgIDpmZWF0dXJlICdwYXJhZ3Jh cGgKKyAgIDpvdmVycmlkZSAncHJlcGVuZAorICAgJygocGlwZV90YWJsZV9oZWFkZXIgInwiIEBt YXJrZG93bi10cy10YWJsZS1oZWFkZXIpCisgICAgIChwaXBlX3RhYmxlX2hlYWRlciAocGlwZV90 YWJsZV9jZWxsKSBAbWFya2Rvd24tdHMtdGFibGUtaGVhZGVyKQorICAgICAocGlwZV90YWJsZV9y b3cgInwiIEBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2VsbCkKKyAgICAgKHBpcGVfdGFi bGVfcm93IChwaXBlX3RhYmxlX2NlbGwpIEBtYXJrZG93bi10cy10YWJsZS1jZWxsKQorICAgICAo cGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93ICJ8IiBAbWFya2Rvd24tdHMtdGFibGUtZGVsaW1pdGVy LWNlbGwpCisgICAgICgocGlwZV90YWJsZSkgQG1hcmtkb3duLXRzLXRhYmxlKQorICAgICAocGlw ZV90YWJsZV9kZWxpbWl0ZXJfcm93IChwaXBlX3RhYmxlX2RlbGltaXRlcl9jZWxsKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2Vs bCkpCiAKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24KICAgIDpmZWF0dXJlICdwYXJhZ3JhcGgKQEAg LTIxMiw4OSArMTY0OSw5OTkgQEAgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MKICAgICAg KGJsb2NrX3F1b3RlX21hcmtlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAg ICAoZmVuY2VkX2NvZGVfYmxvY2tfZGVsaW1pdGVyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVs aW1pdGVyCiAgICAgIChmZW5jZWRfY29kZV9ibG9jawotICAgICAgKGluZm9fc3RyaW5nIChsYW5n dWFnZSkgQG1hcmtkb3duLXRzLWxhbmd1YWdlLWtleXdvcmQpIEBtYXJrZG93bi10cy0tZm9udGlm eS1kZWxpbWl0ZXIpCisgICAgICAoaW5mb19zdHJpbmcgKGxhbmd1YWdlKSBAbWFya2Rvd24tdHMt bGFuZ3VhZ2Uta2V5d29yZCkKKyAgICAgIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIp CiAgICAgIChibG9ja19xdW90ZQogICAgICAgKGJsb2NrX3F1b3RlX21hcmtlcikgQG1hcmtkb3du LXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAgICAgKHBhcmFncmFwaCAoaW5saW5lIChibG9ja19j b250aW51YXRpb24pIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpKSkpCiAKKyAgIDps YW5ndWFnZSAnbWFya2Rvd24KKyAgIDpmZWF0dXJlICdwYXJhZ3JhcGgKKyAgIDpvdmVycmlkZSAn YXBwZW5kCisgICAnKChmZW5jZWRfY29kZV9ibG9jaworICAgICAgKGluZm9fc3RyaW5nIChsYW5n dWFnZSkpCisgICAgICAoY29kZV9mZW5jZV9jb250ZW50KSBAbWFya2Rvd24tdHMtLWZvbnRpZnkt bm9uLXRzLWNvZGUtYmxvY2spKQorCisgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCisgICA6ZmVhdHVy ZSAncGFyYWdyYXBoCisgICA6b3ZlcnJpZGUgJ2FwcGVuZAorICAgJygoZmVuY2VkX2NvZGVfYmxv Y2sgKGNvZGVfZmVuY2VfY29udGVudCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWNvZGUtYmxvY2sp KQorCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlubGluZQogICAgOm92ZXJyaWRlICdhcHBlbmQK ICAgIDpmZWF0dXJlICdwYXJhZ3JhcGgtaW5saW5lCi0gICAnKCgoaW1hZ2VfZGVzY3JpcHRpb24p IEBsaW5rKQotICAgICAoKGxpbmtfZGVzdGluYXRpb24pIEBmb250LWxvY2stc3RyaW5nLWZhY2Up Ci0gICAgICgoY29kZV9zcGFuKSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQorICAgJygoKGxpbmtf ZGVzdGluYXRpb24pIEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0aW9uKQorICAg ICAoKGNvZGVfc3BhbikgQG1hcmtkb3duLXRzLWNvZGUtc3BhbikKICAgICAgKChjb2RlX3NwYW5f ZGVsaW1pdGVyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQotICAgICAoKGVtcGhh c2lzKSBAaXRhbGljKQotICAgICAoKHN0cm9uZ19lbXBoYXNpcykgQGJvbGQpCi0gICAgIChpbmxp bmVfbGluayAobGlua190ZXh0KSBAbGluaykKLSAgICAgKGlubGluZV9saW5rIChsaW5rX2Rlc3Rp bmF0aW9uKSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQotICAgICAoc2hvcnRjdXRfbGluayAobGlu a190ZXh0KSBAbGluaykpCisgICAgICgoZW1waGFzaXMpIEBtYXJrZG93bi10cy1lbXBoYXNpcykK KyAgICAgKChzdHJvbmdfZW1waGFzaXMpIEBtYXJrZG93bi10cy1ib2xkKQorICAgICAoKHN0cmlr ZXRocm91Z2gpIEBtYXJrZG93bi10cy1zdHJpa2V0aHJvdWdoKQorICAgICAoaW5saW5lX2xpbmsg KGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAgKGZ1bGxf cmVmZXJlbmNlX2xpbmsgKGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9k ZSkKKyAgICAgKGZ1bGxfcmVmZXJlbmNlX2xpbmsgKGxpbmtfbGFiZWwpIEBtYXJrZG93bi10cy0t Zm9udGlmeS1saW5rLW5vZGUpCisgICAgIChjb2xsYXBzZWRfcmVmZXJlbmNlX2xpbmsgKGxpbmtf dGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAgKHNob3J0Y3V0X2xp bmsgKGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAgKGlt YWdlIChpbWFnZV9kZXNjcmlwdGlvbikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkK KyAgICAgKCh1cmlfYXV0b2xpbmspIEBtYXJrZG93bi10cy0tZm9udGlmeS1hdXRvbGluaykKKyAg ICAgKChlbWFpbF9hdXRvbGluaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LWF1dG9saW5rKQorICAg ICAoaW5saW5lX2xpbmsgKGxpbmtfdGl0bGUpIEBtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9u KQorICAgICAoKGJhY2tzbGFzaF9lc2NhcGUpIEBtYXJrZG93bi10cy0tZm9udGlmeS1iYWNrc2xh c2gtZXNjYXBlKQorICAgICAoKGVudGl0eV9yZWZlcmVuY2UpIEBtYXJrZG93bi10cy0tZm9udGlm eS1lbnRpdHkpCisgICAgICgobnVtZXJpY19jaGFyYWN0ZXJfcmVmZXJlbmNlKSBAbWFya2Rvd24t dHMtLWZvbnRpZnktZW50aXR5KQorICAgICAoKGh0bWxfdGFnKSBAbWFya2Rvd24tdHMtaHRtbC10 YWcpCisgICAgICgoaGFyZF9saW5lX2JyZWFrKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktaGFyZC1s aW5lLWJyZWFrKQorICAgICAoKGxhdGV4X2Jsb2NrKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGF0 ZXgtYmxvY2spKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlubGluZQogICAgOmZlYXR1cmUg J3BhcmFncmFwaC1pbmxpbmUKICAgIDpvdmVycmlkZSAnYXBwZW5kCiAgICAnKChlbXBoYXNpc19k ZWxpbWl0ZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCi0gICApKQogCi07Ozsg SW1lbnUKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24taW5saW5lCisgICA6ZmVhdHVyZSAnaW1hZ2Ut cHJldmlldworICAgOm92ZXJyaWRlICdhcHBlbmQKKyAgICcoKGltYWdlKSBAbWFya2Rvd24tdHMt LWZvbnRpZnktaW1hZ2UpKSkKIAotKGRlZnVuIG1hcmtkb3duLXRzLWltZW51LW5vZGUtcCAobm9k ZSkKKzs7OyBJbWVudToKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbWVudS1oZWFkaW5nLW5vZGUt cCAobm9kZSkKICAgIkNoZWNrIGlmIE5PREUgaXMgYSB2YWxpZCBlbnRyeSB0byBpbWVudS4iCi0g IChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpCi0g ICAgICAgICAiYXR4X2hlYWRpbmciKSkKKyAgKGFuZCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBl IG5vZGUpICJpbmxpbmUiKQorICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgKHRyZWVz aXQtbm9kZS1wYXJlbnQgbm9kZSkpCisgICAgICAgICAgICAgICJhdHhfaGVhZGluZyIpKSkKIAot KGRlZnVuIG1hcmtkb3duLXRzLWltZW51LW5hbWUtZnVuY3Rpb24gKG5vZGUpCisoZGVmdW4gbWFy a2Rvd24tdHMtLWltZW51LWhlYWRpbmctbmFtZS1mdW5jdGlvbiAobm9kZSkKICAgIlJldHVybiBh biBpbWVudSBlbnRyeSBpZiBOT0RFIGlzIGEgdmFsaWQgaGVhZGVyLiIKICAgKGxldCAoKG5hbWUg KHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUpKSkKLSAgICAoaWYgKG1hcmtkb3duLXRzLWltZW51LW5v ZGUtcCBub2RlKQotCSh0aHJlYWQtZmlyc3QgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkgKHRy ZWVzaXQtbm9kZS10ZXh0KSkKKyAgICAoaWYgKG1hcmtkb3duLXRzLS1pbWVudS1oZWFkaW5nLW5v ZGUtcCBub2RlKQorICAgICAgICAoY2FyIChzcGxpdC1zdHJpbmcgKHRyZWVzaXQtbm9kZS10ZXh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIiB0ICIgIikpCiAgICAgICBuYW1lKSkpCiAK LShkZWZ1biBtYXJrZG93bi10cy1vdXRsaW5lLXByZWRpY2F0ZSAobm9kZSkKLSAgIk1hdGNoIGEg aGllcmFyY2hpY2FsIHNlY3Rpb24gdGhhdCBoYXMgYSBoZWFkaW5nLiIKKyhkZWZ1biBtYXJrZG93 bi10cy0taW1lbnUtY29kZS1ibG9jay1ub2RlLXAgKG5vZGUpCisgICJDaGVjayBpZiBOT0RFIGlz IGFuIGluZm9fc3RyaW5nIHdpdGggZGVzY3JpcHRpdmUgdGV4dCBhZnRlciB0aGUgbGFuZ3VhZ2Uu IgorICAoYW5kIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImluZm9fc3RyaW5nIikK KyAgICAgICAod2hlbi1sZXQqICgobGFuZy1ub2RlICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIG5v ZGUgImxhbmd1YWdlIikpCisgICAgICAgICAgICAgICAgICAgKCg8ICh0cmVlc2l0LW5vZGUtZW5k IGxhbmctbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9k ZSkpKSkKKyAgICAgICAgIChub3QgKHN0cmluZy1ibGFuay1wCisgICAgICAgICAgICAgICAoYnVm ZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9k ZS1lbmQgbGFuZy1ub2RlKQorICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUp KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1uYW1lLWZ1bmN0 aW9uIChub2RlKQorICAiUmV0dXJuIGFuIGltZW51IGVudHJ5IG5hbWUgZm9yIGEgY29kZSBibG9j ayBpbmZvX3N0cmluZyBOT0RFLgorVXNlcyB0aGUgZGVzY3JpcHRpdmUgdGV4dCBhZnRlciB0aGUg bGFuZ3VhZ2UgbmFtZS4iCisgICh3aGVuLWxldCogKChsYW5nLW5vZGUgKHRyZWVzaXQtc2VhcmNo LXN1YnRyZWUgbm9kZSAibGFuZ3VhZ2UiKSkKKyAgICAgICAgICAgICAgKGRlc2MgKHN0cmluZy10 cmltCisgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVz CisgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbGFuZy1ub2RlKQorICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkpKQorICAgIChmb3Jt YXQgIiVzOiAlcyIgKHRyZWVzaXQtbm9kZS10ZXh0IGxhbmctbm9kZSkgZGVzYykpKQorCisoZGVm dW4gbWFya2Rvd24tdHMtLW91dGxpbmUtcHJlZGljYXRlIChub2RlKQorICAiTWF0Y2ggTk9ERSBp ZiBpdCBpcyBhIGhpZXJhcmNoaWNhbCBzZWN0aW9uIHRoYXQgaGFzIGEgaGVhZGluZy4iCiAgIChh bmQgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAic2VjdGlvbiIpCiAgICAgICAgKHdo ZW4tbGV0KiAoKGNoaWxkICh0cmVlc2l0LW5vZGUtY2hpbGQgbm9kZSAwKSkpCiAgICAgICAgICAo ZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxkKSAiYXR4X2hlYWRpbmciKSkpKQogCi07Ozsg Q29kZSBibG9ja3MKKzs7OyBIZWFkaW5nIG1hbmlwdWxhdGlvbjoKIAotKGRlZnZhci1sb2NhbCBt YXJrZG93bi10cy0tY29uZmlndXJlZC1sYW5ndWFnZXMgbmlsCi0gICJBIGxpc3Qgb2YgbGFuZ3Vh Z2VzIHRoYXQgaGF2ZSBiZWVuIHNldHVwIGluIHRoaXMgYnVmZmVyLgorKGRlZmNvbnN0IG1hcmtk b3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwgNgorICAiTWF4aW11bSBBVFggaGVhZGlu ZyBsZXZlbCBpbiBNYXJrZG93biAoaDEtaDYpLgorRGVmaW5lZCBieSB0aGUgQ29tbW9uTWFyayBz cGVjIGFuZCB0aGUgdHJlZS1zaXR0ZXIgZ3JhbW1hci4iKQogCi1XaGVuIGEgY29kZSBibG9jayBv ZiBhIGxhbmd1YWdlIGFwcGVhcnMsIGBtYXJrZG93bi10cy1tb2RlJyBsb2FkcwotbGFuZ3VhZ2Ug c2V0dXBzIGxpa2UgZm9udC1sb2NrIGFuZCBpbmRlbnRhdGlvbiBmb3IgdGhhdCBsYW5ndWFnZSwg YW5kCi1hZGRzIHRoYXQgbGFuZ3VhZ2UgdG8gdGhpcyBsaXN0LiIpCisoZGVmdW4gbWFya2Rvd24t dHMtLWhlYWRpbmctYXQtcG9pbnQgKCkKKyAgIlJldHVybiB0aGUgYXR4X2hlYWRpbmcgbm9kZSBh dCBvciBiZWZvcmUgcG9pbnQsIG9yIG5pbC4iCisgICh3aGVuLWxldCogKChub2RlICh0cmVlc2l0 LW5vZGUtYXQgKHBvaW50KSAnbWFya2Rvd24pKSkKKyAgICAoaWYgKGVxdWFsICh0cmVlc2l0LW5v ZGUtdHlwZSBub2RlKSAiYXR4X2hlYWRpbmciKQorICAgICAgICBub2RlCisgICAgICAodHJlZXNp dC1wYXJlbnQtdW50aWwKKyAgICAgICBub2RlIChsYW1iZGEgKG4pIChlcXVhbCAodHJlZXNpdC1u b2RlLXR5cGUgbikgImF0eF9oZWFkaW5nIikpKSkpKQogCi0oZGVmdW4gbWFya2Rvd24tdHMtLWhh cnZlc3QtdHJlZXNpdC1jb25maWdzIChtb2RlKQotICAiSGFydmVzdCB0cmVlLXNpdHRlciBjb25m aWdzIGZyb20gTU9ERS4KLVJldHVybiBhIHBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGFu ZCB2YWx1ZToKKyhkZWZ1biBtYXJrZG93bi10cy0taGVhZGluZy1sZXZlbCAoaGVhZGluZykKKyAg IlJldHVybiBIRUFESU5HIGxldmVsIChyYW5nZSAxIHRvIGBtYXJrZG93bi10cy0tcGFyc2VyLWhl YWRpbmctbWF4LWxldmVsJykuIgorICAobGV0ICgobWFya2VyICh0cmVlc2l0LW5vZGUtY2hpbGQg aGVhZGluZyAwKSkpCisgICAgKGxlbmd0aCAodHJlZXNpdC1ub2RlLXRleHQgbWFya2VyIHQpKSkp CisKKyhkZWZ1biBtYXJrZG93bi10cy0tc2VjdGlvbi1hdC1wb2ludCAoKQorICAiUmV0dXJuIHRo ZSBzZWN0aW9uIG5vZGUgY29udGFpbmluZyBwb2ludC4iCisgICh3aGVuLWxldCogKChub2RlICh0 cmVlc2l0LW5vZGUtYXQgKHBvaW50KSAnbWFya2Rvd24pKSkKKyAgICAodHJlZXNpdC1wYXJlbnQt dW50aWwKKyAgICAgbm9kZSAobGFtYmRhIChuKSAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4p ICJzZWN0aW9uIikpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1wcm9tb3RlICgpCisgICJQcm9t b3RlIHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBwb2ludC4KK0ZvciBoZWFkaW5ncywgZGVj cmVhc2UgdGhlIGxldmVsIChlLmcuLCAjIyB0byAjKS4KK0ZvciBsaXN0IGl0ZW1zLCBkZWNyZWFz ZSBuZXN0aW5nIChkZWRlbnQpLgorV2l0aCBgdHJhbnNpZW50LW1hcmstbW9kZScgb24gYW5kIG1h cmsgYWN0aXZlLCBwcm9tb3RlIGFsbAoraGVhZGluZ3MgaW4gdGhlIHJlZ2lvbi4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKGNvbmQKKyAgICgoYW5kIHRyYW5zaWVudC1tYXJrLW1vZGUgbWFyay1hY3Rp dmUpCisgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZS1yZWdpb24gLTEpKQorICAg KChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KQorICAgIChtYXJrZG93bi10cy0tbGlz dC1wcm9tb3RlLW9yLWRlbW90ZSBuaWwpKQorICAgKHQgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9y LWRlbW90ZSAtMSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWRlbW90ZSAoKQorICAiRGVtb3Rl IHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBwb2ludC4KK0ZvciBoZWFkaW5ncywgaW5jcmVh c2UgdGhlIGxldmVsIChlLmcuLCAjIHRvICMjKS4KK0ZvciBsaXN0IGl0ZW1zLCBpbmNyZWFzZSBu ZXN0aW5nIChpbmRlbnQpLgorV2l0aCBgdHJhbnNpZW50LW1hcmstbW9kZScgb24gYW5kIG1hcmsg YWN0aXZlLCBkZW1vdGUgYWxsIGhlYWRpbmdzCitpbiB0aGUgcmVnaW9uLiIKKyAgKGludGVyYWN0 aXZlKQorICAoY29uZAorICAgKChhbmQgdHJhbnNpZW50LW1hcmstbW9kZSBtYXJrLWFjdGl2ZSkK KyAgICAobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lvbiAxKSkKKyAgICgobWFy a2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkKKyAgICAobWFya2Rvd24tdHMtLWxpc3QtcHJv bW90ZS1vci1kZW1vdGUgdCkpCisgICAodCAobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3Rl IDEpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUgKGRlbHRhKQor ICAiQ2hhbmdlIHRoZSBoZWFkaW5nIGF0IHBvaW50IGJ5IERFTFRBIGxldmVscy4KK05lZ2F0aXZl IERFTFRBIHByb21vdGVzIChmZXdlciAjKSwgcG9zaXRpdmUgZGVtb3RlcyAobW9yZSAjKS4KK0lm IHRoZSBoZWFkaW5nIGhhcyBhbiBvcHRpb25hbCB0cmFpbGluZyBjbG9zaW5nLWAjJyBzZXF1ZW5j ZSwgdGhhdAorc2VxdWVuY2UgaXMgcmVzaXplZCB0byBtYXRjaCB0aGUgbmV3IGxldmVsLiIKKyAg KHdoZW4tbGV0KiAoKGhlYWRpbmcgKG1hcmtkb3duLXRzLS1oZWFkaW5nLWF0LXBvaW50KSkKKyAg ICAgICAgICAgICAgKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGhlYWRpbmcgMCkpCisgICAg ICAgICAgICAgIChsZXZlbCAobGVuZ3RoICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJrZXIgdCkpKQor ICAgICAgICAgICAgICAobmV3LWxldmVsICgrIGxldmVsIGRlbHRhKSkpCisgICAgKHdoZW4gKGFu ZCAoPj0gbmV3LWxldmVsIDEpCisgICAgICAgICAgICAgICAoPD0gbmV3LWxldmVsIG1hcmtkb3du LXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwpKQorICAgICAgKGxldCogKChvcGVuZXItYmVn ICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyKSkKKyAgICAgICAgICAgICAob3BlbmVyLWVuZCAo dHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIpKQorICAgICAgICAgICAgIChsaW5lLWVuZCAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9wZW5lci1lbmQp CisgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCisgICAgICAg ICAgICAgOzsgRGV0ZWN0IGEgQ29tbW9uTWFyayBjbG9zaW5nLWAjJyBzZXF1ZW5jZTogb3B0aW9u YWwKKyAgICAgICAgICAgICA7OyB0cmFpbGluZyB3aGl0ZXNwYWNlLCBhIHJ1biBvZiBgIycsIGFu ZCBhdCBsZWFzdCBvbmUKKyAgICAgICAgICAgICA7OyBzcGFjZS90YWIgYmV0d2VlbiBpdCBhbmQg dGhlIGhlYWRpbmcgdGV4dC4KKyAgICAgICAgICAgICAoY2xvc2VyIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGxpbmUtZW5kKQorICAgICAgICAgICAg ICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IiBvcGVuZXItZW5kKQorICAgICAg ICAgICAgICAgICAgICAgICAobGV0ICgoZW5kIChwb2ludCkpKQorICAgICAgICAgICAgICAgICAg ICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIjIiBvcGVuZXItZW5kKQorICAgICAgICAgICAg ICAgICAgICAgICAgIChsZXQgKChiZWcgKHBvaW50KSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAod2hlbiAoYW5kICg8IGJlZyBlbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICg+IGJlZyBvcGVuZXItZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobWVtcSAoY2hhci1iZWZvcmUgYmVnKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnKD9ccyA/XHQpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbnMgYmVnIGVuZCkpKSkpKSkKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisg ICAgICAgICAgOzsgUmVzaXplIHRoZSBjbG9zZXIgZmlyc3Qgc28gaXQgZG9lc24ndCBzaGlmdCB0 aGUgb3BlbmVyLgorICAgICAgICAgICh3aGVuIGNsb3NlcgorICAgICAgICAgICAgKGRlbGV0ZS1y ZWdpb24gKGNhciBjbG9zZXIpIChjZHIgY2xvc2VyKSkKKyAgICAgICAgICAgIChnb3RvLWNoYXIg KGNhciBjbG9zZXIpKQorICAgICAgICAgICAgKGluc2VydCAobWFrZS1zdHJpbmcgbmV3LWxldmVs ID8jKSkpCisgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gb3BlbmVyLWJlZyBvcGVuZXItZW5kKQor ICAgICAgICAgIChnb3RvLWNoYXIgb3BlbmVyLWJlZykKKyAgICAgICAgICAoaW5zZXJ0IChtYWtl LXN0cmluZyBuZXctbGV2ZWwgPyMpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcHJvbW90 ZS1vci1kZW1vdGUtcmVnaW9uIChkZWx0YSkKKyAgIkNoYW5nZSBhbGwgaGVhZGluZ3MgaW4gdGhl IGFjdGl2ZSByZWdpb24gYnkgREVMVEEgbGV2ZWxzLgorTmVnYXRpdmUgREVMVEEgcHJvbW90ZXMg KGZld2VyICMpLCBwb3NpdGl2ZSBkZW1vdGVzIChtb3JlICMpLiIKKyAgKGxldCAoKGJlZyAocmVn aW9uLWJlZ2lubmluZykpCisgICAgICAgIChlbmQgKHJlZ2lvbi1lbmQpKSkKKyAgICAoc2F2ZS1l eGN1cnNpb24KKyAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgKHdoaWxlICg8IChwb2ludCkg ZW5kKQorICAgICAgICAod2hlbiAobWFya2Rvd24tdHMtLWhlYWRpbmctYXQtcG9pbnQpCisgICAg ICAgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZSBkZWx0YSkpCisgICAgICAgIChm b3J3YXJkLWxpbmUgMSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtdXAg KCkKKyAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gdXAgcGFzdCB0aGUg cHJldmlvdXMgc2libGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGlmIChtYXJrZG93bi10cy0t bGlzdC1pdGVtLWF0LXBvaW50KQorICAgICAgKG1hcmtkb3duLXRzLS1saXN0LW1vdmUgdCkKKyAg ICAobWFya2Rvd24tdHMtLW1vdmUtc3VidHJlZS11cC1vci1kb3duIHQpKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duICgpCisgICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rp b24gb3IgbGlzdCBpdGVtIGRvd24gcGFzdCB0aGUgbmV4dCBzaWJsaW5nLiIKKyAgKGludGVyYWN0 aXZlKQorICAoaWYgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpCisgICAgICAobWFy a2Rvd24tdHMtLWxpc3QtbW92ZSBuaWwpCisgICAgKG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUt dXAtb3ItZG93biBuaWwpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1zZWN0aW9uLWZvbGRlZC1w IChzZWN0aW9uKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgU0VDVElPTidzIGhlYWRpbmcgaXMgZm9s ZGVkLgorQ2hlY2tzIHdoZXRoZXIgdGhlIGVuZCBvZiB0aGUgaGVhZGluZyBsaW5lIGhhcyBhbiBv dXRsaW5lCitpbnZpc2libGUgb3ZlcmxheS4iCisgIChsZXQgKChoZWFkaW5nICh0cmVlc2l0LW5v ZGUtY2hpbGQgc2VjdGlvbiAwKSkpCisgICAgKHdoZW4gKGFuZCBoZWFkaW5nCisgICAgICAgICAg ICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGhlYWRpbmcpICJhdHhfaGVhZGluZyIpKQor ICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1z dGFydCBoZWFkaW5nKSkKKyAgICAgICAgKG91dGxpbmUtaW52aXNpYmxlLXAgKHBvcy1lb2wpKSkp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUtdXAtb3ItZG93biAodXApCisg ICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rpb24gc3VidHJlZS4KK0lmIFVQIGlzIG5vbi1uaWwsIG1v dmUgcGFzdCB0aGUgcHJldmlvdXMgc2libGluZzsgb3RoZXJ3aXNlIG1vdmUgZG93bi4KK1ByZXNl cnZlcyB0aGUgZm9sZGluZyBzdGF0ZSBvZiBib3RoIHNlY3Rpb25zLiIKKyAgKHdoZW4tbGV0KiAo KHNlY3Rpb24gKG1hcmtkb3duLXRzLS1zZWN0aW9uLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAg KHNpYmxpbmcgKGlmIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LXByZXYtc2libGluZyBzZWN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0 LW5vZGUtbmV4dC1zaWJsaW5nIHNlY3Rpb24pKSkpCisgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0 LW5vZGUtdHlwZSBzaWJsaW5nKSAic2VjdGlvbiIpCisgICAgICAobGV0KiAoKGZpcnN0IChpZiB1 cCBzaWJsaW5nIHNlY3Rpb24pKQorICAgICAgICAgICAgIChzZWNvbmQgKGlmIHVwIHNlY3Rpb24g c2libGluZykpCisgICAgICAgICAgICAgKGZpcnN0LWZvbGRlZCAobWFya2Rvd24tdHMtLXNlY3Rp b24tZm9sZGVkLXAgZmlyc3QpKQorICAgICAgICAgICAgIChzZWNvbmQtZm9sZGVkIChtYXJrZG93 bi10cy0tc2VjdGlvbi1mb2xkZWQtcCBzZWNvbmQpKQorICAgICAgICAgICAgIChmaXJzdC1zdGFy dCAodHJlZXNpdC1ub2RlLXN0YXJ0IGZpcnN0KSkKKyAgICAgICAgICAgICAoc2Vjb25kLXN0YXJ0 ICh0cmVlc2l0LW5vZGUtc3RhcnQgc2Vjb25kKSkKKyAgICAgICAgICAgICAoc2Vjb25kLWVuZCAo dHJlZXNpdC1ub2RlLWVuZCBzZWNvbmQpKQorICAgICAgICAgICAgIDs7IEV4dHJhY3Qgc2VwYXJh dG9yIGJldHdlZW4gaXRlbXMgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgICAgICAgICAg KGZpcnN0LXJhdyAoYnVmZmVyLXN1YnN0cmluZyBmaXJzdC1zdGFydCBzZWNvbmQtc3RhcnQpKQor ICAgICAgICAgICAgIChmaXJzdC10ZXh0IChzdHJpbmctdHJpbS1yaWdodCBmaXJzdC1yYXcpKQor ICAgICAgICAgICAgIChzZXBhcmF0b3IgKHN1YnN0cmluZyBmaXJzdC1yYXcgKGxlbmd0aCBmaXJz dC10ZXh0KSkpCisgICAgICAgICAgICAgKHNlY29uZC1yYXcgKGJ1ZmZlci1zdWJzdHJpbmcgc2Vj b25kLXN0YXJ0IHNlY29uZC1lbmQpKQorICAgICAgICAgICAgIChzZWNvbmQtdGV4dCAoc3RyaW5n LXRyaW0tcmlnaHQgc2Vjb25kLXJhdykpCisgICAgICAgICAgICAgKHRyYWlsaW5nIChzdWJzdHJp bmcgc2Vjb25kLXJhdyAobGVuZ3RoIHNlY29uZC10ZXh0KSkpCisgICAgICAgICAgICAgKGxpbmUt b2Zmc2V0ICgtIChsaW5lLW51bWJlci1hdC1wb3MgKHBvaW50KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpbmUtbnVtYmVyLWF0LXBvcyAodHJlZXNpdC1ub2RlLXN0YXJ0IHNlY3Rp b24pKSkpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBmaXJzdC1zdGFydCBzZWNvbmQtZW5kKQor ICAgICAgICAoZ290by1jaGFyIGZpcnN0LXN0YXJ0KQorICAgICAgICAoaW5zZXJ0IHNlY29uZC10 ZXh0IHNlcGFyYXRvciBmaXJzdC10ZXh0IHRyYWlsaW5nKQorICAgICAgICA7OyBSZXN0b3JlIGZv bGRpbmcgc3RhdGUKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hh ciBmaXJzdC1zdGFydCkKKyAgICAgICAgICAod2hlbiAob3V0bGluZS1vbi1oZWFkaW5nLXApCisg ICAgICAgICAgICAoaWYgc2Vjb25kLWZvbGRlZAorICAgICAgICAgICAgICAgIChvdXRsaW5lLWhp ZGUtc3VidHJlZSkKKyAgICAgICAgICAgICAgKG91dGxpbmUtc2hvdy1zdWJ0cmVlKSkpCisgICAg ICAgICAgKG91dGxpbmUtbmV4dC1oZWFkaW5nKQorICAgICAgICAgICh3aGVuIChvdXRsaW5lLW9u LWhlYWRpbmctcCkKKyAgICAgICAgICAgIChpZiBmaXJzdC1mb2xkZWQKKyAgICAgICAgICAgICAg ICAob3V0bGluZS1oaWRlLXN1YnRyZWUpCisgICAgICAgICAgICAgIChvdXRsaW5lLXNob3ctc3Vi dHJlZSkpKSkKKyAgICAgICAgKGdvdG8tY2hhciAoaWYgdXAKKyAgICAgICAgICAgICAgICAgICAg ICAgZmlyc3Qtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICgrIGZpcnN0LXN0YXJ0IChsZW5n dGggc2Vjb25kLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoIHNlcGFyYXRv cikpKSkKKyAgICAgICAgKHdpdGgtc3VwcHJlc3NlZC13YXJuaW5ncyAoKGludGVyYWN0aXZlLW9u bHkgbmV4dC1saW5lKSkKKyAgICAgICAgICAobmV4dC1saW5lIGxpbmUtb2Zmc2V0KSkpKSkpCisK 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 KyAgICAgICAgICAgICAobGluZS1vZmZzZXQgKC0gKGxpbmUtbnVtYmVyLWF0LXBvcyAocG9pbnQp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZS1udW1iZXItYXQtcG9zCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pKSkpKQor ICAgICAgICAoZGVsZXRlLXJlZ2lvbiBmaXJzdC1zdGFydCBzZWNvbmQtZW5kKQorICAgICAgICAo Z290by1jaGFyIGZpcnN0LXN0YXJ0KQorICAgICAgICAoaW5zZXJ0IHNlY29uZC10ZXh0IHNlcGFy YXRvciBmaXJzdC10ZXh0IHRyYWlsaW5nKQorICAgICAgICAoZ290by1jaGFyIChpZiB1cAorICAg ICAgICAgICAgICAgICAgICAgICBmaXJzdC1zdGFydAorICAgICAgICAgICAgICAgICAgICAgKCsg Zmlyc3Qtc3RhcnQgKGxlbmd0aCBzZWNvbmQtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAg IChsZW5ndGggc2VwYXJhdG9yKSkpKQorICAgICAgICAod2l0aC1zdXBwcmVzc2VkLXdhcm5pbmdz ICgoaW50ZXJhY3RpdmUtb25seSBuZXh0LWxpbmUpKQorICAgICAgICAgIChuZXh0LWxpbmUgbGlu ZS1vZmZzZXQpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXJlbnVtYmVyLWxpc3QgKCZvcHRp b25hbCBzdGFydCkKKyAgIlJlbnVtYmVyIHRoZSBvcmRlcmVkIGxpc3QgYXQgcG9pbnQuCitOdW1i ZXJzIGFyZSBhc3NpZ25lZCBzZXF1ZW50aWFsbHkgc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgaXRl bSdzCitudW1iZXIuICBXaXRoIGEgcHJlZml4IGFyZ3VtZW50IFNUQVJULCBzdGFydCBudW1iZXJp bmcgZnJvbSB0aGF0Cit2YWx1ZSBpbnN0ZWFkLiAgRG9lcyBub3RoaW5nIGZvciB1bm9yZGVyZWQg bGlzdHMuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAod2hlbi1sZXQqICgoaXRlbSAobWFya2Rv d24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpCisgICAgICAgICAgICAgIChsaXN0LW5vZGUgKHRy ZWVzaXQtbm9kZS1wYXJlbnQgaXRlbSkpKQorICAgICh3aGVuIChlcXVhbCAodHJlZXNpdC1ub2Rl LXR5cGUgbGlzdC1ub2RlKSAibGlzdCIpCisgICAgICAobGV0KiAoKGNoaWxkcmVuICh0cmVlc2l0 LW5vZGUtY2hpbGRyZW4gbGlzdC1ub2RlKSkKKyAgICAgICAgICAgICAoaXRlbXMgKHNlcS1maWx0 ZXIgKGxhbWJkYSAobikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwg KHRyZWVzaXQtbm9kZS10eXBlIG4pICJsaXN0X2l0ZW0iKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2hpbGRyZW4pKQorICAgICAgICAgICAgIChmaXJzdC1tYXJrZXIgKHRyZWVz aXQtbm9kZS1jaGlsZCAoY2FyIGl0ZW1zKSAwKSkKKyAgICAgICAgICAgICAobWFya2VyLXR5cGUg KHRyZWVzaXQtbm9kZS10eXBlIGZpcnN0LW1hcmtlcikpKQorICAgICAgICAod2hlbiAobWVtYmVy IG1hcmtlci10eXBlICcoImxpc3RfbWFya2VyX2RvdCIgImxpc3RfbWFya2VyX3BhcmVudGhlc2lz IikpCisgICAgICAgICAgKGxldCogKChiYXNlIChpZiBzdGFydAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHByZWZpeC1udW1lcmljLXZhbHVlIHN0YXJ0KQorICAgICAgICAgICAgICAgICAg ICAgICAgIChzdHJpbmctdG8tbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVl c2l0LW5vZGUtdGV4dCBmaXJzdC1tYXJrZXIgdCkpKSkKKyAgICAgICAgICAgICAgICAgKGNvdW50 IChsZW5ndGggaXRlbXMpKQorICAgICAgICAgICAgICAgICA7OyBTdGFydCBmcm9tIHRoZSBsYXN0 IG51bWJlciBhbmQgd29yayBiYWNrd2FyZHMgc28KKyAgICAgICAgICAgICAgICAgOzsgdGhhdCBl YXJsaWVyIGJ1ZmZlciBwb3NpdGlvbnMgcmVtYWluIHZhbGlkLgorICAgICAgICAgICAgICAgICAo bnVtICgrIGJhc2UgY291bnQgLTEpKSkKKyAgICAgICAgICAgIChkb2xpc3QgKGl0IChyZXZlcnNl IGl0ZW1zKSkKKyAgICAgICAgICAgICAgKGxldCogKChtYXJrZXIgKHRyZWVzaXQtbm9kZS1jaGls ZCBpdCAwKSkKKyAgICAgICAgICAgICAgICAgICAgIChtYXJrZXItZW5kICh0cmVlc2l0LW5vZGUt ZW5kIG1hcmtlcikpCisgICAgICAgICAgICAgICAgICAgICAoYm9sIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFy dCBtYXJrZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1w b3NpdGlvbikpKQorICAgICAgICAgICAgICAgICAgICAgOzsgRnVsbCB0ZXh0IGZyb20gYm9sIHRv IGVuZCBvZiBtYXJrZXIgaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgIDs7IGFueSBsZWFk aW5nIHdoaXRlc3BhY2UsIHRoZSBudW1iZXIsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAg IDs7IHNlcGFyYXRvciAoZS5nLiwgIi4gIiBvciAiLlx0IikuCisgICAgICAgICAgICAgICAgICAg ICAoZnVsbC10ZXh0IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvbCBtYXJrZXItZW5kKSkKKyAgICAgICAgICAgICAgICAg ICAgIChpbmRlbnQtc3RyCisgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBcXChbWzpibGFuazpdXSpcXClbMC05XSIg ZnVsbC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDEgZnVs bC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgIiIpKQorICAgICAgICAgICAgICAgICAg ICAgKHN1ZmZpeC1zdHIKKyAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1tYXRjaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYFtbOmJsYW5rOl1dKlswLTldK1xcKC4qXFwp XFwnIiBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcg MSBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAiLiAiKSkKKyAgICAgICAgICAg ICAgICAgICAgIChuZXctdGV4dCAoY29uY2F0IGluZGVudC1zdHIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChudW1iZXItdG8tc3RyaW5nIG51bSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC1zdHIpKSkKKyAgICAgICAgICAgICAg ICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJvbCBt YXJrZXItZW5kKQorICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBib2wpCisgICAgICAgICAg ICAgICAgICAoaW5zZXJ0IG5ldy10ZXh0KSkpCisgICAgICAgICAgICAgIChjbC1kZWNmIG51bSkp CisgICAgICAgICAgICAobWVzc2FnZSAiUmVudW1iZXJlZCAlZCBpdGVtcyIgY291bnQpKSkpKSkp CisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIgKGl0ZW0pCisgICJS ZXR1cm4gdGhlIG1hcmtlciBzdHJpbmcgZm9yIGEgbmV3IGl0ZW0gZm9sbG93aW5nIElURU0uCitG b3IgdW5vcmRlcmVkIGl0ZW1zLCByZXVzZSB0aGUgc2FtZSBtYXJrZXIgY2hhcmFjdGVyLgorRm9y IG9yZGVyZWQgaXRlbXMsIGluY3JlbWVudCB0aGUgbnVtYmVyLiIKKyAgKGxldCogKChtYXJrZXIg KHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKQorICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9k ZS10eXBlIG1hcmtlcikpCisgICAgICAgICAoaW5kZW50IChzYXZlLWV4Y3Vyc2lvbgorICAgICAg ICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSkKKyAgICAg ICAgICAgICAgICAgICAoY3VycmVudC1pbmRlbnRhdGlvbikpKQorICAgICAgICAgKHByZWZpeCAo bWFrZS1zdHJpbmcgaW5kZW50ID9ccykpKQorICAgIChwY2FzZSB0eXBlCisgICAgICAoImxpc3Rf bWFya2VyX21pbnVzIiAoY29uY2F0IHByZWZpeCAiLSAiKSkKKyAgICAgICgibGlzdF9tYXJrZXJf cGx1cyIgIChjb25jYXQgcHJlZml4ICIrICIpKQorICAgICAgKCJsaXN0X21hcmtlcl9zdGFyIiAg KGNvbmNhdCBwcmVmaXggIiogIikpCisgICAgICAoImxpc3RfbWFya2VyX2RvdCIKKyAgICAgICAo bGV0ICgobnVtIChzdHJpbmctdG8tbnVtYmVyICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJrZXIgdCkp KSkKKyAgICAgICAgIChjb25jYXQgcHJlZml4IChudW1iZXItdG8tc3RyaW5nICgxKyBudW0pKSAi LiAiKSkpCisgICAgICAoImxpc3RfbWFya2VyX3BhcmVudGhlc2lzIgorICAgICAgIChsZXQgKChu dW0gKHN0cmluZy10by1udW1iZXIgKHRyZWVzaXQtbm9kZS10ZXh0IG1hcmtlciB0KSkpKQorICAg ICAgICAgKGNvbmNhdCBwcmVmaXggKG51bWJlci10by1zdHJpbmcgKDErIG51bSkpICIpICIpKSkK KyAgICAgIChfIChjb25jYXQgcHJlZml4ICItICIpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt LW5ldy1tYXJrZXItZm9yLWxpbmUgKGl0ZW0pCisgICJSZXR1cm4gdGhlIG1hcmtlciBzdHJpbmcg Zm9yIGEgbmV3IGl0ZW0gZm9sbG93aW5nIElURU0uCitXaGVuIHRoZSBjdXJyZW50IGxpbmUgaGFz IGEgbGlzdCBtYXJrZXIgcGF0dGVybiBhdCBhIGRpZmZlcmVudAoraW5kZW50YXRpb24gdGhhbiBJ VEVNIChlLmcuLCBhIG5lc3RlZCBtYXJrZXIgdGhhdCB0aGUgZ3JhbW1hciBkaWQKK25vdCByZWNv Z25pemUgYXMgYSBsaXN0X2l0ZW0pLCB1c2UgdGhlIGN1cnJlbnQgbGluZSdzIG1hcmtlci4KK090 aGVyd2lzZSwgZmFsbCBiYWNrIHRvIGBtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIn LiIKKyAgKGxldCAoKG1hcmtlci1ub2RlICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAwKSkpCisg ICAgKGlmICg9IChsaW5lLW51bWJlci1hdC1wb3MpCisgICAgICAgICAgICAobGluZS1udW1iZXIt YXQtcG9zICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyLW5vZGUpKSkKKyAgICAgICAgOzsgSXRl bSdzIG1hcmtlciBpcyBvbiB0aGUgY3VycmVudCBsaW5lOiB1c2UgaXQgbm9ybWFsbHkuCisgICAg ICAgIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIgaXRlbSkKKyAgICAgIDs7IEl0 ZW0ncyBtYXJrZXIgaXMgb24gYSBkaWZmZXJlbnQgbGluZS4gIFRoZSBwYXJzZXIgbWF5IGhhdmUK KyAgICAgIDs7IGZhaWxlZCB0byByZWNvZ25pemUgYSBuZXN0ZWQgbWFya2VyIChlLmcuLCBhIGxv bmUgYCAgLSAnCisgICAgICA7OyBwYXJzZWQgYXMgYSBzZXRleHQgaGVhZGluZykuICBSZWFkIHRo ZSBjdXJyZW50IGxpbmUuCisgICAgICAobGV0ICgobGluZSAoYnVmZmVyLXN1YnN0cmluZy1uby1w cm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAo bGluZS1lbmQtcG9zaXRpb24pKSkpCisgICAgICAgIChpZiAoc3RyaW5nLW1hdGNoCisgICAgICAg ICAgICAgIlxcYFxcKFtbOmJsYW5rOl1dKlxcKVxcKFstKitdIFxcfFxcKFswLTldK1xcKVxcKFsu KV0gXFwpXFwpIgorICAgICAgICAgICAgIGxpbmUpCisgICAgICAgICAgICAobGV0ICgoaW5kZW50 IChtYXRjaC1zdHJpbmcgMSBsaW5lKSkKKyAgICAgICAgICAgICAgICAgIChudW0gKG1hdGNoLXN0 cmluZyAzIGxpbmUpKQorICAgICAgICAgICAgICAgICAgKHN1ZmZpeCAobWF0Y2gtc3RyaW5nIDQg bGluZSkpCisgICAgICAgICAgICAgICAgICAodW5vcmRlcmVkIChtYXRjaC1zdHJpbmcgMiBsaW5l KSkpCisgICAgICAgICAgICAgIChpZiBudW0KKyAgICAgICAgICAgICAgICAgIChjb25jYXQgaW5k ZW50IChudW1iZXItdG8tc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KDErIChzdHJpbmctdG8tbnVtYmVyIG51bSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBz dWZmaXgpCisgICAgICAgICAgICAgICAgKGNvbmNhdCBpbmRlbnQgdW5vcmRlcmVkKSkpCisgICAg ICAgICAgOzsgTm8gbWFya2VyIHBhdHRlcm4gb24gY3VycmVudCBsaW5lOiB1c2UgaXRlbSdzIG1h cmtlci4KKyAgICAgICAgICAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1uZXctbWFya2VyIGl0ZW0p KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saW5lLWJsb2NrLXF1b3RlLWRlcHRoICgmb3B0 aW9uYWwgcG9zKQorICAiQ291bnQgdGhlIG51bWJlciBvZiBgPicgYmxvY2sgcXVvdGUgbWFya2Vy cyBvbiB0aGUgbGluZSBhdCBQT1MuIgorICAoc2F2ZS1leGN1cnNpb24KKyAgICAod2hlbiBwb3Mg KGdvdG8tY2hhciBwb3MpKQorICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAobGV0ICgoY291 bnQgMCkpCisgICAgICAod2hpbGUgKGFuZCAobm90IChlb2xwKSkKKyAgICAgICAgICAgICAgICAg IChtZW1xIChjaGFyLWFmdGVyKSAnKD8+ID9ccyA/XHQpKSkKKyAgICAgICAgKHdoZW4gKGVxIChj aGFyLWFmdGVyKSA/PikKKyAgICAgICAgICAoc2V0cSBjb3VudCAoMSsgY291bnQpKSkKKyAgICAg ICAgKGZvcndhcmQtY2hhciAxKSkKKyAgICAgIGNvdW50KSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy1uZXdsaW5lICgpCisgICJJbnNlcnQgYSBuZXdsaW5lLCBjb250aW51aW5nIHRoZSBjdXJyZW50 IGNvbnRleHQuCitJbnNpZGUgYSBsaXN0IGl0ZW0sIHRoZSBuZXcgbGluZSBpcyBpbmRlbnRlZCB0 byB0aGUgaXRlbSdzIHRleHQKK2NvbHVtbiBzbyB0aGUgcGFyYWdyYXBoIGNvbnRpbnVlcy4gIEEg c2Vjb25kIFJFVCBvbiBhIGJsYW5rCitjb250aW51YXRpb24gbGluZSByZW1vdmVzIHRoZSBpbmRl bnRhdGlvbiwgZHJvcHBpbmcgcG9pbnQgdG8KK2NvbHVtbiAwIHNvIHRoZSB0cmVlLXNpdHRlciBn cmFtbWFyIGVuZHMgdGhlIGxpc3QuCitJbnNpZGUgYSBibG9jayBxdW90ZSwgdGhlIG5ldyBsaW5l IGluY2x1ZGVzIHRoZSBxdW90ZSBwcmVmaXguCitPdGhlcndpc2UsIGluc2VydCBhIHBsYWluIG5l d2xpbmUuIgorICAoaW50ZXJhY3RpdmUpCisgIChsZXQqICgobm9kZSAodHJlZXNpdC1ub2RlLWF0 CisgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAo cG9pbnQpKQorICAgICAgICAgICAgICAgICdtYXJrZG93bikpCisgICAgICAgICA7OyBUcmVlLXNp dHRlciBtYXkgcmVwb3J0IGEgbm9kZSBpbnNpZGUgYSBibG9ja19xdW90ZSBldmVuCisgICAgICAg ICA7OyB3aGVuIHBvaW50IGlzIG9uIGEgYmxhbmsgbGluZSBwYXN0IHRoZSBxdW90ZSAodGhlIG5v ZGUKKyAgICAgICAgIDs7IHNwYW4gY2FuIGV4dGVuZCBiZXlvbmQgdGhlIGA+JyBsaW5lcykuICBP bmx5IHRyZWF0IHRoZQorICAgICAgICAgOzsgbGluZSBhcyBpbnNpZGUgYSBibG9jayBxdW90ZSBp ZiBpdCBhY3R1YWxseSBzdGFydHMgd2l0aAorICAgICAgICAgOzsgYSBgPicgbWFya2VyLgorICAg ICAgICAgKGluLWJxIChhbmQgKHRyZWVzaXQtcGFyZW50LXVudGlsIG5vZGUgIlxcYGJsb2NrX3F1 b3RlXFwnIikKKyAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAg ICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAg IChsb29raW5nLWF0LXAgIlsgXHRdKj4iKSkpKQorICAgICAgICAgKGl0ZW0gKG1hcmtkb3duLXRz LS1saXN0LWl0ZW0tYXQtcG9pbnQpKSkKKyAgICAoY29uZAorICAgICAoaXRlbQorICAgICAgKGxl dCogKChjb2wgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4gaXRlbSkpCisgICAg ICAgICAgICAgKGJxLXByZWZpeCAod2hlbiBpbi1icSAobWFya2Rvd24tdHMtLWJsb2NrLXF1b3Rl LXByZWZpeCkpKQorICAgICAgICAgICAgIDs7IGBjb2wnIGlzIHRoZSBhYnNvbHV0ZSBjb2x1bW4g b2YgdGhlIGl0ZW0ncyB0ZXh0LAorICAgICAgICAgICAgIDs7IHdoaWNoIGluc2lkZSBhIGJsb2Nr IHF1b3RlIGluY2x1ZGVzIHRoZSAiPiAiIHByZWZpeAorICAgICAgICAgICAgIDs7IHdpZHRoLiAg U2luY2Ugd2UgaW5zZXJ0IGBicS1wcmVmaXgnIHNlcGFyYXRlbHksIHdlCisgICAgICAgICAgICAg OzsgbXVzdCBzdWJ0cmFjdCBpdHMgbGVuZ3RoIHRvIGF2b2lkIGRvdWJsaW5nIGl0LgorICAgICAg ICAgICAgIChpbmRlbnQgKC0gY29sIChsZW5ndGggKG9yIGJxLXByZWZpeCAiIikpKSkKKyAgICAg ICAgICAgICA7OyBUaGUgY3VycmVudCBsaW5lIGlzICJibGFuayIgaWYgaXQgY29udGFpbnMgb25s eQorICAgICAgICAgICAgIDs7IHdoaXRlc3BhY2UgKG9yIHF1b3RlIHByZWZpeCArIHdoaXRlc3Bh Y2UpIGFuZCBubworICAgICAgICAgICAgIDs7IGFjdHVhbCB0ZXh0IGZyb20gYSBwcmV2aW91cyBS RVQncyBjb250aW51YXRpb24gaW5kZW50LgorICAgICAgICAgICAgIChibGFuay1saW5lLXAgKHNh dmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2Yt bGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQtcAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIl5bPiBcdF0qJCIpKSkKKyAgICAgICAgICAgICA7OyBQ b2ludCBpcyBiZWZvcmUgdGhlIGl0ZW0ncyB0ZXh0IChhdCBvciBiZWZvcmUgdGhlCisgICAgICAg ICAgICAgOzsgbWFya2VyKS4gIEEgcGxhaW4gbmV3bGluZSBpcyBhcHByb3ByaWF0ZSBoZXJlLCBh ZGRpbmcKKyAgICAgICAgICAgICA7OyBjb250aW51YXRpb24gaW5kZW50IHdvdWxkIHNoaWZ0IHRo ZSBleGlzdGluZyBjb250ZW50CisgICAgICAgICAgICAgOzsgdG8gdGhlIHJpZ2h0LgorICAgICAg ICAgICAgIChiZWZvcmUtdGV4dC1wICg8PSAoY3VycmVudC1jb2x1bW4pIGNvbCkpKQorICAgICAg ICAoY29uZAorICAgICAgICAgKGJsYW5rLWxpbmUtcAorICAgICAgICAgIDs7IFRoZSB1c2VyIHBy ZXNzZWQgUkVUIG9uIGFuIGFscmVhZHktYmxhbmsgY29udGludWF0aW9uCisgICAgICAgICAgOzsg bGluZS4gIEluc3RlYWQgb2YgYWRkaW5nIHlldCBhbm90aGVyIGluZGVudGVkIGJsYW5rCisgICAg ICAgICAgOzsgbGluZSwgcmVtb3ZlIHRoZSBpbmRlbnRhdGlvbiBhbmQgaW5zZXJ0IGEgcGxhaW4K KyAgICAgICAgICA7OyBuZXdsaW5lLiAgVGhpcyBkcm9wcyBwb2ludCB0byBjb2x1bW4gMCwgd2hp Y2ggaXMgdGhlCisgICAgICAgICAgOzsgb25seSB3YXkgdGhlIHRyZWUtc2l0dGVyIG1hcmtkb3du IGdyYW1tYXIgZW5kcyBhIGxpc3Q6CisgICAgICAgICAgOzsgYmxhbmsgbGluZXMgYWxvbmUgZG8g Tk9UIGVuZCBhIGxpc3QsIG9ubHkKKyAgICAgICAgICA7OyBub24taW5kZW50ZWQgY29udGVudCBk b2VzLiAgU28gdGhpcyBnaXZlcyB0aGUgdXNlciBhCisgICAgICAgICAgOzsgbmF0dXJhbCAiUkVU IFJFVCB0byBleGl0IHRoZSBsaXN0IiB3b3JrZmxvdy4KKyAgICAgICAgICAoZGVsZXRlLXJlZ2lv biAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikpCisgICAgICAg ICAgKG5ld2xpbmUpKQorICAgICAgICAgKGJlZm9yZS10ZXh0LXAKKyAgICAgICAgICA7OyBQb2lu dCBpcyBvbiBvciBiZWZvcmUgdGhlIGxpc3QgbWFya2VyOyBqdXN0IGluc2VydCBhCisgICAgICAg ICAgOzsgcGxhaW4gbmV3bGluZSBzbyB0aGUgaXRlbSBpcyBwdXNoZWQgZG93biB1bmNoYW5nZWQu CisgICAgICAgICAgKG5ld2xpbmUpKQorICAgICAgICAgKHQKKyAgICAgICAgICAoZGVsZXRlLWhv cml6b250YWwtc3BhY2UpCisgICAgICAgICAgKG5ld2xpbmUpCisgICAgICAgICAgKHdoZW4gYnEt cHJlZml4IChpbnNlcnQgYnEtcHJlZml4KSkKKyAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmlu ZyBpbmRlbnQgP1xzKSkpKSkpCisgICAgIChpbi1icQorICAgICAgKGxldCAoKGJxLXByZWZpeCAo bWFya2Rvd24tdHMtLWJsb2NrLXF1b3RlLXByZWZpeCkpCisgICAgICAgICAgICA7OyBBIGxpbmUg d2l0aCBvbmx5IHF1b3RlIG1hcmtlcnMgYW5kIHdoaXRlc3BhY2UgKGUuZy4sCisgICAgICAgICAg ICA7OyAiPiAiKSBpcyAiYmxhbmsiIGluc2lkZSB0aGUgcXVvdGUuICBSRVQgaGVyZSBleGl0cyB0 aGUKKyAgICAgICAgICAgIDs7IHF1b3RlLCBzYW1lIGFzIFJFVCBvbiBhIGJsYW5rIGNvbnRpbnVh dGlvbiBsaW5lIGV4aXRzIGEKKyAgICAgICAgICAgIDs7IGxpc3Q6IHJlbW92ZSB0aGUgcHJlZml4 IGFuZCBkcm9wIHRvIGNvbHVtbiAwLgorICAgICAgICAgICAgKGJsYW5rLWxpbmUtcCAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQtcCAiXls+IFx0XSokIikp KSkKKyAgICAgICAgKGlmIGJsYW5rLWxpbmUtcAorICAgICAgICAgICAgKHByb2duCisgICAgICAg ICAgICAgIChkZWxldGUtcmVnaW9uIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxpbmUtZW5k LXBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgKG5ld2xpbmUpKQorICAgICAgICAgIChkZWxldGUt aG9yaXpvbnRhbC1zcGFjZSkKKyAgICAgICAgICAobmV3bGluZSkKKyAgICAgICAgICAoaW5zZXJ0 IGJxLXByZWZpeCkpKSkKKyAgICAgOzsgRGVmYXVsdDogcGxhaW4gbmV3bGluZS4gIFRoaXMgYWxz byBoYW5kbGVzIGVtcHR5IGxpc3QgbWFya2VycworICAgICA7OyAoZS5nLiwgIi0gIiB3aXRoIG5v IHRleHQpIHRoYXQgdGhlIGdyYW1tYXIgcGFyc2VzIGFzIEVSUk9SCisgICAgIDs7IG5vZGVzIHJh dGhlciB0aGFuIGxpc3RfaXRlbSBub2Rlcy4KKyAgICAgOzsKKyAgICAgOzsgV2hlbiB0aGUgY3Vy cmVudCBsaW5lIGlzIGJsYW5rICh3aGl0ZXNwYWNlIG9ubHkpLCBpdCBpcyBhCisgICAgIDs7IGNv bnRpbnVhdGlvbi1pbmRlbnQgbGluZSBsZWZ0IGJ5IGEgcHJldmlvdXMgUkVUIHRoYXQKKyAgICAg OzsgdHJlZS1zaXR0ZXIgbm8gbG9uZ2VyIGNvbnNpZGVycyBwYXJ0IG9mIGEgbGlzdF9pdGVtLiAg Q2xlYXIKKyAgICAgOzsgdGhlIHdoaXRlc3BhY2Ugc28gbm8gdHJhaWxpbmcgc3BhY2VzIHJlbWFp biwgYW5kIGluc2VydCBhCisgICAgIDs7IHBsYWluIG5ld2xpbmUgYXQgY29sdW1uIDAgdG8gZXhp dCB0aGUgbGlzdCBjb250ZXh0LgorICAgICAodAorICAgICAgKHdoZW4gKHNhdmUtZXhjdXJzaW9u CisgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgKGxvb2tp bmctYXQtcCAiXlsgXHRdKyQiKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGxpbmUtYmVnaW5u aW5nLXBvc2l0aW9uKSAobGluZS1lbmQtcG9zaXRpb24pKSkKKyAgICAgIChuZXdsaW5lKSkpKSkK KworKGRlZnVuIG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0gKCkKKyAgIkluc2VydCBhIG5l dyBsaXN0IGl0ZW0sIHNwbGl0dGluZyB0ZXh0IGF0IHBvaW50LgorVGV4dCBhZnRlciBwb2ludCBt b3ZlcyB0byB0aGUgbmV3IGl0ZW0uICBBdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSwKK2FuIGVt cHR5IGl0ZW0gaXMgaW5zZXJ0ZWQgYWJvdmUgYW5kIHRoZSBjdXJyZW50IGNvbnRlbnQgaXMgcHVz aGVkIGRvd24uCitJbnNpZGUgYSBibG9jayBxdW90ZSwgdGhlIG5ldyBsaW5lIGluY2x1ZGVzIHRo ZSBxdW90ZSBwcmVmaXguCitGb3Igb3JkZXJlZCBsaXN0cywgdGhlIG51bWJlciBpcyBpbmNyZW1l bnRlZC4KK1doZW4gbm90IGluc2lkZSBhIGxpc3QsIGZhbGwgYmFjayB0byBgbWFya2Rvd24tdHMt bmV3bGluZScuIgorICAoaW50ZXJhY3RpdmUpCisgIChsZXQqICgobm9kZSAodHJlZXNpdC1ub2Rl LWF0CisgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9u KSAocG9pbnQpKQorICAgICAgICAgICAgICAgICdtYXJrZG93bikpCisgICAgICAgICAoaW4tYnEg KGFuZCAodHJlZXNpdC1wYXJlbnQtdW50aWwgbm9kZSAiXFxgYmxvY2tfcXVvdGVcXCciKQorICAg ICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAg IChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQt cCAiWyBcdF0qPiIpKSkpCisgICAgICAgICAoYnEtcHJlZml4ICh3aGVuIGluLWJxIChtYXJrZG93 bi10cy0tYmxvY2stcXVvdGUtcHJlZml4KSkpCisgICAgICAgICAoaXRlbSAobWFya2Rvd24tdHMt LWxpc3QtaXRlbS1hdC1wb2ludCkpKQorICAgIChjb25kCisgICAgICgoYW5kIGl0ZW0KKyAgICAg ICAgICAgKG9yIChub3QgaW4tYnEpCisgICAgICAgICAgICAgICAoPj0gKG1hcmtkb3duLXRzLS1s aW5lLWJsb2NrLXF1b3RlLWRlcHRoKQorICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0t bGluZS1ibG9jay1xdW90ZS1kZXB0aAorICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LXN0YXJ0ICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAwKSkpKSkpCisgICAgICAobGV0KiAoKG5l dy1tYXJrZXIgKG1hcmtkb3duLXRzLS1uZXctbWFya2VyLWZvci1saW5lIGl0ZW0pKQorICAgICAg ICAgICAgIChhdC1ib2wgKDw9IChjdXJyZW50LWNvbHVtbikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWNrLXRv LWluZGVudGF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1u KSkpKQorICAgICAgICAgICAgICh0YWlsICh3aGVuIChhbmQgKG5vdCBhdC1ib2wpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobm90IChsb29raW5nLWF0LXAgIlsgXHRdKiQiKSkpCisg ICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWFuZC1leHRyYWN0LXJlZ2lvbgorICAgICAgICAg ICAgICAgICAgICAgIChwb2ludCkgKGxpbmUtZW5kLXBvc2l0aW9uKSkpKSkKKyAgICAgICAgKGlm IGF0LWJvbAorICAgICAgICAgICAgOzsgQXQgQk9MOiBpbnNlcnQgZW1wdHkgaXRlbSBhYm92ZSwg cHVzaCBjdXJyZW50IGxpbmUgZG93bi4KKyAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAg ICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICh3aGVuIGJxLXByZWZpeCAoaW5z ZXJ0IGJxLXByZWZpeCkpCisgICAgICAgICAgICAgIChpbnNlcnQgbmV3LW1hcmtlciAiXG4iKQor ICAgICAgICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikpCisgICAgICAgICAgOzsgTWlkLWxp bmUgb3IgRU9MOiBuZXcgaXRlbSBiZWxvdyB3aXRoIHRhaWwgdGV4dC4KKyAgICAgICAgICAoZGVs ZXRlLWhvcml6b250YWwtc3BhY2UpCisgICAgICAgICAgKG5ld2xpbmUpCisgICAgICAgICAgKHdo ZW4gYnEtcHJlZml4IChpbnNlcnQgYnEtcHJlZml4KSkKKyAgICAgICAgICAoaW5zZXJ0IG5ldy1t YXJrZXIpCisgICAgICAgICAgKHdoZW4gdGFpbCAoc2F2ZS1leGN1cnNpb24gKGluc2VydCAoc3Ry aW5nLXRyaW0tbGVmdCB0YWlsKSkpKSkpKQorCisgICAgIDs7IE5vdCBpbiBhIGxpc3Q6IGZhbGwg YmFjayB0byBuZXdsaW5lIGJlaGF2aW9yLgorICAgICAodCAobWFya2Rvd24tdHMtbmV3bGluZSkp KSkpCisKKzs7OyBGaWxsaW5nOgorCis7OyBUT0RPOiBSZW1vdmUgdGhlIHBpcGVfdGFibGUgYmxv Y2sgaWYgd2UgaW1wbGVtZW50IHBpcGVfdGFibGUgZmlsbC4KKyhkZWZjb25zdCBtYXJrZG93bi10 cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5CisgICcoWyhmZW5jZWRfY29kZV9ibG9jaykg KGluZGVudGVkX2NvZGVfYmxvY2spIChwaXBlX3RhYmxlKV0gQGJsb2NrKQorICAiVHJlZS1zaXR0 ZXIgcXVlcnkgbWF0Y2hpbmcgYmxvY2tzIHdoZXJlIGZpbGxpbmcgaXMgaW5oaWJpdGVkLiIpCisK KyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIChpdGVtKQorICAiUmV0 dXJuIHRoZSBjb2x1bW4gd2hlcmUgdGhlIHRleHQgb2YgbGlzdCBJVEVNIHN0YXJ0cy4KK1RoaXMg aXMgdGhlIGNvbHVtbiBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoIG5vZGUgaW5zaWRlIElURU0sIG9y Cit0aGUgd2lkdGggb2YgdGhlIGxpc3QgbWFya2VyIGlmIG5vIHBhcmFncmFwaCBpcyBmb3VuZC4i CisgIChsZXQgKChwYXJhZ3JhcGggKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgaXRlbSAiXFxgcGFy YWdyYXBoXFwnIikpKQorICAgIChpZiBwYXJhZ3JhcGgKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9u CisgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IHBhcmFncmFwaCkpCisg ICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkKKyAgICAgIChsZXQgKChtYXJrZXIgKHRyZWVzaXQt bm9kZS1jaGlsZCBpdGVtIDApKSkKKyAgICAgICAgKC0gKHRyZWVzaXQtbm9kZS1lbmQgbWFya2Vy KQorICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpKSkpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWZpbGwtbGlzdC1pdGVtIChpdGVtIGp1c3RpZnkpCisgICJGaWxsIHRoZSBj b250ZW50cyBvZiBsaXN0IElURU0sIHByZXNlcnZpbmcgaXRzIGluZGVudGF0aW9uLgorTmFycm93 cyB0byBJVEVNJ3Mgb3duIHBhcmFncmFwaCBjb250ZW50IChleGNsdWRpbmcgbmVzdGVkIGxpc3Rz KQorYW5kIHNldHMgYGZpbGwtcHJlZml4JyB0byBhbGlnbiBjb250aW51YXRpb24gbGluZXMgd2l0 aCB0aGUgc3RhcnQKK29mIHRoZSBpdGVtJ3MgdGV4dC4gIEpVU1RJRlkgaXMgYXMgaW4gYGZpbGwt cGFyYWdyYXBoJy4iCisgIChsZXQqICgoZmlsbC1wcmVmaXggKG1ha2Utc3RyaW5nIChtYXJrZG93 bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgID9ccykpCisgICAgICAgICA7OyBGaW5kIHRoZSBpdGVtJ3Mgb3duIHBhcmFn cmFwaCAoZmlyc3QgcGFyYWdyYXBoIGNoaWxkKS4KKyAgICAgICAgIDs7IElmIHRoZSBpdGVtIGhh cyBuZXN0ZWQgbGlzdHMsIG5hcnJvdyB0byBqdXN0IHRoZQorICAgICAgICAgOzsgcGFyYWdyYXBo IHNvIHdlIGRvbid0IG1lcmdlIG5lc3RlZCBpdGVtcy4KKyAgICAgICAgIChwYXJhICh0cmVlc2l0 LXNlYXJjaC1zdWJ0cmVlIGl0ZW0gIlxcYHBhcmFncmFwaFxcJyIgbmlsIG5pbCAxKSkKKyAgICAg ICAgIChiZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSkKKyAgICAgICAgIChlbmQgKGlmIHBh cmEKKyAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHBhcmEpCisgICAgICAgICAg ICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgaXRlbSkpKQorICAgICAgICAgOzsgVXNlIGRlZmF1bHQg cGFyYWdyYXBoIG1vdGlvbiBpbnNpZGUgdGhlIG5hcnJvd2VkIHJlZ2lvbgorICAgICAgICAgOzsg c28gdGhhdCB0aGUgaW5uZXIgYGZpbGwtcGFyYWdyYXBoJyBkb2VzIG5vdCByZS1lbnRlciBvdXIK KyAgICAgICAgIDs7IGN1c3RvbSBwYXJhZ3JhcGgtZmluZGluZyBsb2dpYy4KKyAgICAgICAgIChm aWxsLWZvcndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJhZ3JhcGgpKQorICAg IChzYXZlLXJlc3RyaWN0aW9uCisgICAgICAobmFycm93LXRvLXJlZ2lvbiBiZWcgZW5kKQorICAg ICAgKGZpbGwtcGFyYWdyYXBoIGp1c3RpZnkpKQorICAgIDs7IFJldHVybiBub24tbmlsIHRvIHNp Z25hbCB0aGF0IGZpbGxpbmcgaGFzIGJlZW4gaGFuZGxlZCwKKyAgICA7OyBhcyBwZXIgdGhlIGNv bnRyYWN0IG9mIGBmaWxsLXBhcmFncmFwaC1mdW5jdGlvbicuCisgICAgdCkpCisKKyhkZWZ1biBt YXJrZG93bi10cy0tYWRhcHRpdmUtZmlsbCAoKQorICAiUmV0dXJuIHRoZSBmaWxsIHByZWZpeCBm b3IgdGhlIGN1cnJlbnQgbGluZSBpbiBNYXJrZG93bi4KK1doZW4gaW5zaWRlIGEgbGlzdCBpdGVt LCByZXR1cm4gc3BhY2VzIG1hdGNoaW5nIHRoZSBjb2x1bW4gd2hlcmUKK3RoZSBpdGVtJ3MgdGV4 dCBzdGFydHMuIgorICAoYW5kLWxldCogKChub2RlICh0cmVlc2l0LW5vZGUtYXQKKyAgICAgICAg ICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAocG9pbnQp KQorICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24pKQorICAgICAgICAgICAgIChpdGVtICh0 cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1cXCciKSkpCisgICAgKG1ha2Ut c3RyaW5nIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pID9ccykpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtZm9yd2FyZC1wYXJhZ3JhcGggKGFyZykKKyAgIk1v dmUgZm9yd2FyZCBieSBBUkcgcGFyYWdyYXBocywgcmVzcGVjdGluZyBNYXJrZG93biBzdHJ1Y3R1 cmUuCitMaXN0IGl0ZW1zIGFyZSB0cmVhdGVkIGFzIGluZGl2aWR1YWwgcGFyYWdyYXBocy4gIEJs b2NrcyBtYXRjaGVkCitieSBgbWFya2Rvd24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1xdWVy eScgYXJlIHNraXBwZWQ6IGJvdGgKK2ZvcndhcmQgYW5kIGJhY2t3YXJkIG1vdGlvbiBtb3ZlIHRv IHRoZSBlbmQgb2YgdGhlIGJsb2NrLCBzbworYGZpbGwtcmVnaW9uJyBzZWVzIGEgemVyby1sZW5n dGggcmVnaW9uIGFuZCBsZWF2ZXMgdGhlIGJsb2NrCit1bmZpbGxlZC4iCisgIChsZXQgKChkaXJl Y3Rpb24gKGlmICg+IGFyZyAwKSAxIC0xKSkKKyAgICAgICAgKGNvdW50IChhYnMgYXJnKSkKKyAg ICAgICAgKG1vdmVkIDApKQorICAgIChkb3RpbWVzIChfIGNvdW50KQorICAgICAgOzsgRm9yIGJh Y2t3YXJkIG1vdGlvbiwgc2tpcCBiYWNrIG92ZXIgd2hpdGVzcGFjZSB0byBmaW5kCisgICAgICA7 OyB0aGUgaXRlbSB3ZSBhcmUgbGVhdmluZywgbm90IHRoZSBuZXh0IG9uZS4KKyAgICAgIChsZXQq ICgocG9zIChpZiAoPCBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIg XHRcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAobWF4IChwb2ludC1taW4pICgxLSAocG9p bnQpKSkpCisgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQorICAgICAgICAgICAgIChibG9j ayAoY2FyICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg KHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rvd24pCisgICAgICAgICAgICAgICAgICAg ICAgICAgIG1hcmtkb3duLXRzLS1maWxsLXVuZmlsbGFibGUtYmxvY2stcXVlcnkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcG9zICgxKyBwb3MpKSkpCisgICAgICAgICAgICAgKGluZGVudGVk LXBvcyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8t Y2hhciBwb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0 aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkKKyAgICAgICAgICAg ICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IGluZGVudGVkLXBvcyAnbWFya2Rvd24pKQorICAgICAg ICAgICAgIChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1cXCci KSkpCisgICAgICAgIDs7IFdoZW4gbW92aW5nIGZvcndhcmQgZnJvbSB3aGl0ZXNwYWNlIGJldHdl ZW4gbGlzdCBpdGVtcywKKyAgICAgICAgOzsgc2tpcCB0byB0aGUgbmV4dCBub24tYmxhbmsgcG9z aXRpb24gYW5kIGNoZWNrIGFnYWluLgorICAgICAgICAod2hlbiAoYW5kIChub3QgaXRlbSkgKG5v dCBibG9jaykgKD4gZGlyZWN0aW9uIDApKQorICAgICAgICAgIChsZXQgKChuZXh0LXBvcyAoc2F2 ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3 YXJkICIgXHRcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKQorICAg ICAgICAgICAgKHNldHEgbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQtcG9zICdtYXJrZG93bikp CisgICAgICAgICAgICAoc2V0cSBpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBs aXN0X2l0ZW1cXCciKSkpKQorICAgICAgICAoY29uZAorICAgICAgICAgOzsgSW5zaWRlIGFuIHVu ZmlsbGFibGUgYmxvY2s6IHNraXAgb3ZlciBpdCBlbnRpcmVseS4KKyAgICAgICAgIChibG9jawor ICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgKGNkciBibG9jaykpKQorICAg ICAgICAgIChzZXRxIG1vdmVkICgxKyBtb3ZlZCkpKQorICAgICAgICAgOzsgSW5zaWRlIGEgbGlz dCBpdGVtOiB0cmVhdCBhcyBwYXJhZ3JhcGggYm91bmRhcnkuCisgICAgICAgICAoaXRlbQorICAg ICAgICAgIChpZiAoPiBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJl ZXNpdC1ub2RlLWVuZCBpdGVtKSkKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9k ZS1zdGFydCBpdGVtKSkpCisgICAgICAgICAgKHNldHEgbW92ZWQgKDErIG1vdmVkKSkpCisgICAg ICAgICA7OyBEZWZhdWx0OiB1c2Ugc3RhbmRhcmQgcGFyYWdyYXBoIG1vdGlvbi4KKyAgICAgICAg ICh0CisgICAgICAgICAgKGZvcndhcmQtcGFyYWdyYXBoIGRpcmVjdGlvbikKKyAgICAgICAgICAo c2V0cSBtb3ZlZCAoMSsgbW92ZWQpKSkpKSkKKyAgICA7OyBSZXR1cm4gdGhlIG51bWJlciBvZiBw YXJhZ3JhcGhzIGxlZnQgdG8gbW92ZSAoMCA9IGFsbCBkb25lKS4KKyAgICAoLSBjb3VudCBtb3Zl ZCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9uYWwganVz dGlmeSkKKyAgIkZpbGwgdGhlIGN1cnJlbnQgcGFyYWdyYXBoLCByZXNwZWN0aW5nIE1hcmtkb3du IGJsb2NrIHN0cnVjdHVyZS4KK1RoaXMgZnVuY3Rpb24gcHJldmVudHMgZmlsbGluZyBpbnNpZGUg YmxvY2tzIG1hdGNoZWQgYnkKK2BtYXJrZG93bi10cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1 ZXJ5JywgYW5kIGZpbGxzIHdpdGhpbiBsaXN0CitpdGVtcyB3aXRob3V0IG1lcmdpbmcgYWRqYWNl bnQgaXRlbXMuICBKVVNUSUZZIGlzIGFzIGluCitgZmlsbC1wYXJhZ3JhcGgnLiIKKyAgKGNvbmQq CisgICA7OyBEb24ndCBmaWxsIGluc2lkZSB1bmZpbGxhYmxlIGJsb2Nrcy4gIFVzZSBhIHF1ZXJ5 IGFnYWluc3QgdGhlCisgICA7OyByb290IG5vZGUgYmVjYXVzZSBgdHJlZXNpdC1ub2RlLWF0JyBt YXkgbm90IHJldHVybiBhIG5vZGUKKyAgIDs7IGluc2lkZSB0aGUgYmxvY2sgd2hlbiBwb2ludCBp cyBvbiBhbm9ueW1vdXMgKHVubmFtZWQpIHRleHQuCisgICAoKHRyZWVzaXQtcXVlcnktY2FwdHVy ZQorICAgICAodHJlZXNpdC1idWZmZXItcm9vdC1ub2RlICdtYXJrZG93bikKKyAgICAgbWFya2Rv d24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1xdWVyeQorICAgICAocG9pbnQpIChtaW4gKDEr IChwb2ludCkpIChwb2ludC1tYXgpKSkKKyAgICB0KQorICAgOzsgRmlsbCB3aXRoaW4gdGhlIGVu Y2xvc2luZyBsaXN0IGl0ZW0uICBVc2UKKyAgIDs7IGBtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0 LXBvaW50JyB3aGljaCBoYW5kbGVzIGJsb2NrIHF1b3RlCisgICA7OyBtYXJrZXJzLiAgV2hlbiB0 aGUgbGlzdCBpdGVtIGlzIGluc2lkZSBhIGJsb2NrIHF1b3RlLCBkZWxlZ2F0ZQorICAgOzsgdG8g dGhlIGJsb2NrIHF1b3RlIGZpbGxlciB3aGljaCBoYW5kbGVzIGA+ICcgcHJlZml4ZXMgY29ycmVj dGx5LgorICAgKChiaW5kLWFuZCogKGl0ZW0gKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9p bnQpKSkKKyAgICAoaWYgKHRyZWVzaXQtcGFyZW50LXVudGlsIGl0ZW0gIlxcYGJsb2NrX3F1b3Rl XFwnIikKKyAgICAgICAgKG1hcmtkb3duLXRzLS1maWxsLWJsb2NrLXF1b3RlIGp1c3RpZnkpCisg ICAgICAobWFya2Rvd24tdHMtLWZpbGwtbGlzdC1pdGVtIGl0ZW0ganVzdGlmeSkpKQorICAgOzsg UG9pbnQgaXMgb24gYSBibGFuayBsaW5lIGJlZm9yZSBhIGxpc3QuICBJZiB0aGUgbmV4dAorICAg Ozsgbm9uLXdoaXRlc3BhY2UgcG9zaXRpb24gZmFsbHMgaW5zaWRlIGEgbGlzdCBpdGVtLCBmaWxs IHRoYXQgaXRlbS4KKyAgICgoc2F2ZS1leGN1cnNpb24KKyAgICAgIChiZWdpbm5pbmctb2YtbGlu ZSkKKyAgICAgIChsb29raW5nLWF0LXAgIlsgXHRdKiQiKSkKKyAgICAoYW5kLWxldCogKChuZXh0 LXBvcyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNo YXJzLWZvcndhcmQgIiBcdFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkp KQorICAgICAgICAgICAgICAgKG5leHQtbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQtcG9zICdt YXJrZG93bikpCisgICAgICAgICAgICAgICAoaXRlbSAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAg ICAgICAgICAgICAgICAgICAgICBuZXh0LW5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkKKyAgICAg IChtYXJrZG93bi10cy0tZmlsbC1saXN0LWl0ZW0gaXRlbSBqdXN0aWZ5KSkpCisgICA7OyBGaWxs IHdpdGhpbiBhIGJsb2NrIHF1b3RlLiAgTmFycm93IHRvIHRoZSBwYXJhZ3JhcGggbm9kZSBhdAor ICAgOzsgcG9pbnQncyBuZXN0aW5nIGxldmVsIHNvIGxpbmVzIHdpdGggZGlmZmVyZW50IGA+ICcg ZGVwdGhzCisgICA7OyBhcmUgbm90IG1lcmdlZC4KKyAgICgodHJlZXNpdC1wYXJlbnQtdW50aWwK KyAgICAgKHRyZWVzaXQtbm9kZS1hdAorICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWlu ZGVudGF0aW9uKSAocG9pbnQpKQorICAgICAgJ21hcmtkb3duKQorICAgICAiXFxgYmxvY2tfcXVv dGVcXCciKQorICAgIChtYXJrZG93bi10cy0tZmlsbC1ibG9jay1xdW90ZSBqdXN0aWZ5KSkKKyAg IDs7IEZpbGwgd2l0aGluIGFuIEhUTUwgY29tbWVudC4gIFRoZSBub2RlIHR5cGUgaXMgImh0bWxf YmxvY2siCisgICA7OyBpbiBncmFtbWFyIHYwLjQueCBhbmQgImNvbW1lbnQiIGluIHNvbWUgb3Ro ZXIgdmVyc2lvbnMuCisgICAoKGJpbmQtYW5kKiAoYmxvY2sgKGxldCAoKG4gKHRyZWVzaXQtbm9k ZS1hdCAocG9pbnQpICdtYXJrZG93bikpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG9yICh0 cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICJcXGBc XCg/Omh0bWxfYmxvY2tcXHxjb21tZW50XFwpXFwnIikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoYW5kIChtZW1iZXIgKHRyZWVzaXQtbm9kZS10eXBlIG4pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICcoImh0bWxfYmxvY2siICJjb21tZW50IikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKSkpKSkKKyAgICAobWFya2Rvd24tdHMtLWZp bGwtaHRtbC1jb21tZW50IGJsb2NrIGp1c3RpZnkpKQorICAgOzsgRGVmYXVsdDogbGV0IGZpbGwt cGFyYWdyYXBoIGhhbmRsZSBpdC4KKyAgICh0IG5pbCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt LWZpbGwtaHRtbC1jb21tZW50IChub2RlIGp1c3RpZnkpCisgICJGaWxsIEhUTUwgY29tbWVudCBO T0RFLCBhbGlnbmluZyBjb250aW51YXRpb24gbGluZXMuCitSZXR1cm4gdCBpZiBOT0RFIGlzIGEg Y29tbWVudCBhbmQgd2FzIGZpbGxlZCwgbmlsIG90aGVyd2lzZS4KK0pVU1RJRlkgaXMgYXMgaW4g YGZpbGwtcGFyYWdyYXBoJy4iCisgICh3aGVuIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgIChn b3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgICAobG9va2luZy1h dC1wICI8IS0tIikpCisgICAgKGxldCAoKGZpbGwtcHJlZml4IChzYXZlLWV4Y3Vyc2lvbgorICAg ICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2Rl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgKCsgKGN1cnJlbnQtY29s dW1uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoICI8 IS0tICIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHMpKSkKKyAg ICAgICAgICAoYWRhcHRpdmUtZmlsbC1mdW5jdGlvbiBuaWwpCisgICAgICAgICAgKGZpbGwtZm9y d2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24gIydmb3J3YXJkLXBhcmFncmFwaCkKKyAgICAgICAgICAo ZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24gbmlsKSkKKyAgICAgIChzYXZlLXJlc3RyaWN0aW9uCisg ICAgICAgIChuYXJyb3ctdG8tcmVnaW9uICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgIChm aWxsLXBhcmFncmFwaCBqdXN0aWZ5KSkKKyAgICAgIHQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1ibG9jay1xdW90ZS1wcmVmaXggKCkKKyAgIlJldHVybiB0aGUgYmxvY2sgcXVvdGUgcHJlZml4 IHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxpbmUuCitSZWFkIHRoZSBhY3R1YWwgYD4nIG1hcmtl cnMgKHdpdGggd2hhdGV2ZXIgc3BhY2luZyB0aGUgdXNlciB3cm90ZSkKK2Zyb20gdGhlIGJlZ2lu bmluZyBvZiB0aGUgbGluZSBzbyB0aGF0IGZpbGwgcHJlc2VydmVzIHRoZSBleGlzdGluZworc3R5 bGUgKGUuZy4sIGA+Pj4gJyBzdGF5cyBgPj4+ICcsIGA+ID4gPiAnIHN0YXlzIGA+ID4gPiAnKS4i CisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAoaWYgKGxv b2tpbmctYXQgIlxcKFs+IFx0XSo+XFwpWyBcdF0qIikKKyAgICAgICAgKGNvbmNhdCAobWF0Y2gt c3RyaW5nIDApKQorICAgICAgIj4gIikpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtYmxv Y2stcXVvdGUgKGp1c3RpZnkpCisgICJGaWxsIHRoZSBwYXJhZ3JhcGggYXQgcG9pbnQgaW5zaWRl IGEgYmxvY2sgcXVvdGUuCitGaW5kIHRoZSBwYXJhZ3JhcGggbm9kZSBhdCBwb2ludCB3aXRoaW4g dGhlIGJsb2NrIHF1b3RlIGFuZCBmaWxsCitvbmx5IHRoYXQgcGFyYWdyYXBoLCBwcmVzZXJ2aW5n IHRoZSBgPiAnIHByZWZpeC4gIFdoZW4gdGhlCitwYXJhZ3JhcGggaXMgaW5zaWRlIGEgbGlzdCBp dGVtLCBhbGlnbiBjb250aW51YXRpb24gbGluZXMgd2l0aAordGhlIGl0ZW0ncyB0ZXh0IGNvbHVt bi4gIEpVU1RJRlkgaXMgYXMgaW4gYGZpbGwtcGFyYWdyYXBoJy4iCisgIDs7IFNraXAgcGFzdCBg PiAnIG1hcmtlcnMgYW5kIGFueSBsaXN0IG1hcmtlciB0byBsYW5kIGluc2lkZSB0aGUKKyAgOzsg Y29udGVudCwgd2hlcmUgdGhlIHBhcmFncmFwaCBub2RlIGxpdmVzLgorICAobGV0KiAoKGNvbnRl bnQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lubmlu Zy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAi PiBcdCIpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB3ZSBsYW5kIG9uIGEgbGlzdCBt YXJrZXIsIHNraXAgcGFzdCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChsb29r aW5nLWF0ICJbLSorXSBcXHxbMC05XStbLildXHMiKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG1p biAoMSsgKHBvaW50KSkgKHBvaW50LW1heCkpKSkKKyAgICAgICAgIChub2RlICh0cmVlc2l0LW5v ZGUtYXQgY29udGVudC1wb3MgJ21hcmtkb3duKSkKKyAgICAgICAgIChwYXJhICh0cmVlc2l0LXBh cmVudC11bnRpbAorICAgICAgICAgICAgICAgIG5vZGUgKGxhbWJkYSAobikKKyAgICAgICAgICAg ICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAicGFyYWdyYXBoIikpKSkp CisgICAgKHdoZW4gcGFyYQorICAgICAgOzsgVGhlIGdyYW1tYXIgbWF5IGluY2x1ZGUgdHJhaWxp bmcgYmxvY2tfY29udGludWF0aW9uIG5vZGVzCisgICAgICA7OyAoYmxhbmsgYD4gPicgbGluZXMp IGFzIGNoaWxkcmVuIG9mIHRoZSBwYXJhZ3JhcGguICBVc2UgdGhlCisgICAgICA7OyBlbmQgb2Yg dGhlIGxhc3QgaW5saW5lIGNoaWxkIHNvIGZpbGwgZG9lcyBub3QgbWVyZ2UgYWNyb3NzCisgICAg ICA7OyB3aGF0IHNob3VsZCBiZSBhIHBhcmFncmFwaCBib3VuZGFyeS4KKyAgICAgIChsZXQqICgo bGFzdC1pbmxpbmUKKyAgICAgICAgICAgICAgKHNlcS1maW5kIChsYW1iZGEgKGNoaWxkKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxkKSAi aW5saW5lIikpCisgICAgICAgICAgICAgICAgICAgICAgICAocmV2ZXJzZSAodHJlZXNpdC1ub2Rl LWNoaWxkcmVuIHBhcmEpKSkpCisgICAgICAgICAgICAgKHBhcmEtZW5kIChpZiBsYXN0LWlubGlu ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbGFzdC1pbmxp bmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgcGFyYSkpKQor ICAgICAgICAgICAgIChicS1wcmVmaXggKG1hcmtkb3duLXRzLS1ibG9jay1xdW90ZS1wcmVmaXgp KQorICAgICAgICAgICAgIDs7IFdoZW4gaW5zaWRlIGEgbGlzdCBpdGVtLCBleHRlbmQgdGhlIHBy ZWZpeCB3aXRoIHNwYWNlcworICAgICAgICAgICAgIDs7IHNvIGNvbnRpbnVhdGlvbiBsaW5lcyBh bGlnbiB3aXRoIHRoZSBpdGVtJ3MgdGV4dC4KKyAgICAgICAgICAgICAobGlzdC1pdGVtICh0cmVl c2l0LXBhcmVudC11bnRpbCBwYXJhICJcXGBsaXN0X2l0ZW1cXCciKSkKKyAgICAgICAgICAgICAo cHJlZml4IChpZiBsaXN0LWl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0KiAoKHRl eHQtY29sIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1pdGVtKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGV4dHJhIChtYXggMCAoLSB0ZXh0LWNvbCAobGVuZ3RoIGJxLXBy ZWZpeCkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGJxLXByZWZpeCAo bWFrZS1zdHJpbmcgZXh0cmEgP1xzKSkpCisgICAgICAgICAgICAgICAgICAgICAgIGJxLXByZWZp eCkpCisgICAgICAgICAgICAgKGFkYXB0aXZlLWZpbGwtZnVuY3Rpb24gbmlsKQorICAgICAgICAg ICAgIChmaWxsLWZvcndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJhZ3JhcGgp CisgICAgICAgICAgICAgKGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uIG5pbCkpCisgICAgICAgIChz YXZlLXJlc3RyaWN0aW9uCisgICAgICAgICAgOzsgTmFycm93IHRvIHRoZSBmdWxsIGxpbmVzIG9m IHRoZSBwYXJhZ3JhcGggc28gdGhhdCB0aGUKKyAgICAgICAgICA7OyBgPiAnIG1hcmtlcnMgYXJl IGluY2x1ZGVkIGluIHRoZSBmaWxsIHJlZ2lvbi4KKyAgICAgICAgICAobmFycm93LXRvLXJlZ2lv bgorICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAoZ290by1jaGFyICh0 cmVlc2l0LW5vZGUtc3RhcnQgcGFyYSkpCisgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5l KQorICAgICAgICAgICAgIChwb2ludCkpCisgICAgICAgICAgIHBhcmEtZW5kKQorICAgICAgICAg IChsZXQgKChmaWxsLXByZWZpeCBwcmVmaXgpKQorICAgICAgICAgICAgKGZpbGwtcGFyYWdyYXBo IGp1c3RpZnkpKSkpKSkKKyAgdCkKKworOzs7IENvZGUgYmxvY2tzOgorCisoZGVmdmFyLWxvY2Fs IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcyBuaWwKKyAgIkFsaXN0IG1hcHBpbmcg bGFuZ3VhZ2Ugbm9kZSBuYW1lcyB0byB0cyBsYW5ndWFnZS4KK0lmIGEgbGFuZ3VhZ2UgaXMgbm90 IGEgdHMgbGFuZ3VhZ2Ugb3IgaXMgbm90IG1hcHBlZCB0byBvbmUsIGl0IHdpbGwgYmUKK2luIGBt YXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMnLiIpCisKKyhkZWZ2YXItbG9jYWwg bWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzIG5pbAorICAiQWxpc3QgbWFwcGlu ZyBsYW5ndWFnZXMgdG8gbm9uLXRyZWUtc2l0dGVyIG1vZGVzIGZvciBjb2RlIGJsb2Nrcy4KK1Bv cHVsYXRlZCBieSBgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UnIHRvIGlkZW50 aWZ5IGEKK2NvZGUtYmxvY2sgbGFuZ3VhZ2UgbW9kZSB3aGljaCBpcyBub3QgYSB0cmVlLXNpdHRl ciBtb2RlIG9yIGZvciB3aGljaAordGhlIHRyZWUtc2l0dGVyIGdyYW1tYXIgaXMgdW5hdmFpbGFi bGUuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1oYXJ2ZXN0LW1vZGUtdHJlZXNpdC1jb25maWd1 cmF0aW9uIChtb2RlKQorICAiSGFydmVzdCB0cmVlLXNpdHRlciBjb25maWd1cmF0aW9uIGZyb20g TU9ERS4KK1JldHVybiBhIHBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGFuZCB2YWx1ZXM6 CiAKICAgICA6Zm9udC1sb2NrIChmcm9tIGB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncycpCiAg ICAgOnNpbXBsZS1pbmRlbnQgKGZyb20gYHRyZWVzaXQtc2ltcGxlLWluZGVudC1ydWxlcycpCiAg ICAgOnJhbmdlIChmcm9tIGB0cmVlc2l0LXJhbmdlLXNldHRpbmdzJykiCi0gICh3aXRoLXRlbXAt YnVmZmVyCi0gICAgKGZ1bmNhbGwgbW9kZSkKLSAgICAobGlzdCA6Zm9udC1sb2NrIHRyZWVzaXQt Zm9udC1sb2NrLXNldHRpbmdzCisgICh3aXRoLXdvcmstYnVmZmVyCisgICAgKG1hcmtkb3duLXRz LS1pbmhpYml0LW1lc3NhZ2VzLWFuZC13YXJuaW5ncworICAgICAgJ21hcmtkb3duLXRzLWluaGli aXQtY29kZS1ibG9jay1tb2RlLXdhcm5pbmdzCisgICAgICAoZGVsYXktbW9kZS1ob29rcyAoZnVu Y2FsbCBtb2RlKSkpCisgICAgKGxpc3QgOmxhbmd1YWdlICh0cmVlc2l0LWxhbmd1YWdlLWF0IChw b2ludC1taW4pKQorICAgICAgICAgIDpmb250LWxvY2sgdHJlZXNpdC1mb250LWxvY2stc2V0dGlu Z3MKICAgICAgICAgICA6c2ltcGxlLWluZGVudCB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMK ICAgICAgICAgICA6cmFuZ2UgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncykpKQogCi0oZGVmdW4gbWFy a2Rvd24tdHMtLWFkZC1jb25maWctZm9yLW1vZGUgKGxhbmd1YWdlIG1vZGUpCi0gICJBZGQgY29u ZmlndXJhdGlvbnMgZm9yIExBTkdVQUdFIGZyb20gTU9ERSB0byBjdXJyZW50IGJ1ZmZlci4KLQot Q29uZmlndXJhdGlvbiBpbmNsdWRlcyBmb250LWxvY2sgYW5kIGluZGVudC4gIEZvciBmb250LWxv Y2sgcnVsZXMsIHVzZQotdGhlIHNhbWUgZmVhdHVyZXMgZW5hYmxlZCBpbiBNT0RFLiIKLSAgKGxl dCAoKGNvbmZpZ3MgKG1hcmtkb3duLXRzLS1oYXJ2ZXN0LXRyZWVzaXQtY29uZmlncyBtb2RlKSkp Ci0gICAgKGlnbm9yZSBsYW5ndWFnZSkgOyBXZSBtaWdodCBtYWtlIHVzZSBvZiB0aGlzIGxhdGVy LgotICAgIChzZXRxIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAgKGFwcGVu ZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAgOzsgR2V0IGFs bCB0aGUgZm9udC1sb2NrIHNldHRpbmdzLCBpbmNsdWRpbmcgb25lcyB0aGF0Ci0gICAgICAgICAg ICAgICAgICA7OyBkb24ndCBwZXJ0YWluIHRvIExBTkdVQUdFLiAgVGhpcyB3YXkgd2UgZ2V0IGpz ZG9jCi0gICAgICAgICAgICAgICAgICA7OyBmcm9tIGpzLXRzLW1vZGUsIGZvciBleGFtcGxlLgot ICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWdzIDpmb250LWxvY2spKSkKLSAgICAo c2V0cSB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMKLSAgICAgICAgICAoYXBwZW5kIHRyZWVz aXQtc2ltcGxlLWluZGVudC1ydWxlcwotICAgICAgICAgICAgICAgICAgOzsgU2ltaWxhcmx5LCBn ZXQgYWxsIGluZGVudCBydWxlcy4KLSAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgY29uZmln cyA6c2ltcGxlLWluZGVudCkpKQorKGRlZnVuIG1hcmtkb3duLXRzLS1jb25maWd1cmUtY3VycmVu dC1idWZmZXIgKGNvbmZpZ3VyYXRpb24pCisgICJBZGQgQ09ORklHVVJBVElPTiB0byB0aGUgY3Vy cmVudCBidWZmZXIuCitDT05GSUdVUkFUSU9OIGluY2x1ZGVzIGZvbnQtbG9jayBhbmQgaW5kZW50 IHJ1bGVzLiAgRm9yIGZvbnQtbG9jayBydWxlcywKK3VzZSB0aGUgc2FtZSBmZWF0dXJlcyBlbmFi bGVkIGluIE1PREUuIgorICAoc2V0cSB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAg ICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgOzsg R2V0IGFsbCB0aGUgZm9udC1sb2NrIHNldHRpbmdzLCBpbmNsdWRpbmcgb25lcyB0aGF0CisgICAg ICAgICAgICAgICAgOzsgZG9uJ3QgcGVydGFpbiB0byBNT0RFLiAgVGhpcyB3YXksIHdlIGdldCBq c2RvYworICAgICAgICAgICAgICAgIDs7IGZyb20ganMtdHMtbW9kZSwgZm9yIGV4YW1wbGUuCisg ICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWd1cmF0aW9uIDpmb250LWxvY2spKSkKKyAg KHNldHEgdHJlZXNpdC1zaW1wbGUtaW5kZW50LXJ1bGVzCisgICAgICAgIChhcHBlbmQgdHJlZXNp dC1zaW1wbGUtaW5kZW50LXJ1bGVzCisgICAgICAgICAgICAgICAgOzsgU2ltaWxhcmx5LCBnZXQg YWxsIGluZGVudCBydWxlcy4KKyAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3VyYXRp b24gOnNpbXBsZS1pbmRlbnQpKSkKICAgICAoc2V0cSB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCiAg ICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCiAgICAgICAgICAgICAgICAg ICA7OyBGaWx0ZXIgb3V0IGZ1bmN0aW9uIHF1ZXJpZXMsIGJlY2F1c2UgdGhleSBhcmUKQEAgLTMw Miw0NSArMjY0OSwxOTQ2IEBAIG1hcmtkb3duLXRzLS1hZGQtY29uZmlnLWZvci1tb2RlCiAgICAg ICAgICAgICAgICAgICA7OyBDYXNlIGluIHBvaW50OiBjLXRzLW1vZGUncyByYW5nZSBzZXR0aW5n LgogICAgICAgICAgICAgICAgICAgKHNlcS1maWx0ZXIgKGxhbWJkYSAoc2V0dGluZykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZnVuY3Rpb25wIChjYXIgc2V0dGluZykp KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgY29uZmlncyA6cmFu Z2UpKSkpCi0gICAgKHNldHEtbG9jYWwgaW5kZW50LWxpbmUtZnVuY3Rpb24gIyd0cmVlc2l0LWlu ZGVudCkKLSAgICAoc2V0cS1sb2NhbCBpbmRlbnQtcmVnaW9uLWZ1bmN0aW9uICMndHJlZXNpdC1p bmRlbnQtcmVnaW9uKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0 IGNvbmZpZ3VyYXRpb24gOnJhbmdlKSkpKQorICAoc2V0cS1sb2NhbCBpbmRlbnQtbGluZS1mdW5j dGlvbiAjJ3RyZWVzaXQtaW5kZW50KQorICAoc2V0cS1sb2NhbCBpbmRlbnQtcmVnaW9uLWZ1bmN0 aW9uICMndHJlZXNpdC1pbmRlbnQtcmVnaW9uKSkKIAotKGRlZnVuIG1hcmtkb3duLXRzLS1jb252 ZXJ0LWNvZGUtYmxvY2stbGFuZ3VhZ2UgKG5vZGUpCisoZGVmdW4gbWFya2Rvd24tdHMtLWxhbmd1 YWdlLWF0LW5vZGUgKG5vZGUpCisgICJSZXR1cm4gdGhlIGxhbmd1YWdlIHN5bWJvbCBmb3IgY29k ZV9mZW5jZV9jb250ZW50IE5PREUuIgorICAod2hlbi1sZXQqICgocGFyZW50ICh0cmVlc2l0LW5v ZGUtcGFyZW50IG5vZGUpKQorICAgICAgICAgICAgICAobGFuZy1ub2RlICh3aGVuIHBhcmVudAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgcGFyZW50 ICJcXGBsYW5ndWFnZVxcJyIpKSkpCisgICAgKGludGVybiAodHJlZXNpdC1ub2RlLXRleHQgbGFu Zy1ub2RlIHQpKSkpCisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5 LWNhY2hlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVhbCkKKyAgIkNhY2hlIGZvciBub24t dHJlZS1zaXR0ZXIgY29kZSBibG9jayBmb250aWZpY2F0aW9uLgorS2V5cyBhcmUgKExBTkcgLiBD T05URU5ULUhBU0gpIGNvbnMgY2VsbHMsIHZhbHVlcyBhcmUgbGlzdHMgb2YKK1woT0ZGU0VULVNU QVJUIE9GRlNFVC1FTkQgRkFDRSkgdHJpcGxlcy4iKQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3du LXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZS10aWNrIG5pbAorICAiRm9yIGJsdW50IGBidWZmZXIt Y2hhcnMtbW9kaWZpZWQtdGljaycgY2FjaGUgaW52YWxpZGF0aW9uLiIpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tZm9udGlmeS1ub24tdHMtY29kZS1ibG9jayAobm9kZSBvdmVycmlkZSBzdGFydCBl bmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgY29kZV9mZW5jZV9jb250ZW50IE5PREUgdXNpbmcgYSBu b24tdHJlZS1zaXR0ZXIgbW9kZS4KK0FwcGx5IHRoZSBjb2RlLWJsb2NrIG1vZGUncyBjb252ZW50 aW9uYWwgZm9udC1sb2NrIGluIGEgdGVtcG9yYXJ5CitidWZmZXIuICBPVkVSUklERSwgU1RBUlQs IGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3Zl cnJpZGUnLgorCitDYWNoZSByZXN1bHRzIHRvIGF2b2lkIGZvbnRpZmljYXRpb24gb2YgdW5jaGFu Z2VkIGNvZGUgYmxvY2tzLgorCitOT0RFIHNob3VsZCBhbHJlYWR5IGhhdmUgcGFzc2VkIHRocm91 Z2gKK2BtYXJrZG93bi10cy0tY29kZS1ibG9jay10cy1sYW5ndWFnZScgd2hpY2ggbWF5IGhhdmUg Y2xhc3NpZmllZCB0aGlzCitub2RlIGFzIGEgbm9uLXRzIG1vZGUuIgorICAod2hlbi1sZXQqICgo XyBtYXJrZG93bi10cy1mb250aWZ5LWNvZGUtYmxvY2tzLW5hdGl2ZWx5KQorICAgICAgICAgICAg ICAobGFuZyAobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUgbm9kZSkpCisgICAgICAgICAg ICAgIChtb2RlIChhbGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMt bW9kZXMpKQorICAgICAgICAgICAgICAodGljayAoYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2sp KQorICAgICAgICAgICAgICAoYmxvY2stc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkK KyAgICAgICAgICAgICAgOzsgQ2Fubm90IHVzZSBtYXJrZXJzICdtYXJrZG93bi10cy1jb2RlLWJl Zy1tYXJrZXIKKyAgICAgICAgICAgICAgOzsgJ21hcmtkb3duLXRzLWNvZGUtZW5kLW1hcmtlciB0 aGV5IGFyZSBzZXQgYWZ0ZXIgdGhpcworICAgICAgICAgICAgICA7OyBmdW5jdGlvbiBydW5zLgor ICAgICAgICAgICAgICAobm9kZS1zdGFydCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpCisgICAg ICAgICAgICAgIChub2RlLWVuZCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChwb2ludCkpKSkKKyAgICAod2hlbiAoPiBub2RlLWVuZCBub2RlLXN0YXJ0KQor ICAgICAgKHVubGVzcyAoZXEgdGljayBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUt dGljaykKKyAgICAgICAgKGNscmhhc2ggbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5LWNhY2hl KSkKKyAgICAgIChsZXQqICgoY2FjaGUta2V5IChjb25zIGxhbmcgKHNlY3VyZS1oYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMjU2CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpIG5vZGUtc3RhcnQgbm9kZS1lbmQp KSkKKyAgICAgICAgICAgICAocHJvcHMKKyAgICAgICAgICAgICAgKG9yIChnZXRoYXNoIGNhY2hl LWtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLW5vbi10cy1mb250 aWZ5LWNhY2hlKQorICAgICAgICAgICAgICAgICAgKGxldCAoKHJlc3VsdAorICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXJrZG93bi10cy0tZm9udGlmeS1ub24tdHMtY29sbGVjdC1mYWNlcwor ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlIG5vZGUtc3RhcnQgbm9kZS1lbmQpKSkKKyAg ICAgICAgICAgICAgICAgICAgKHB1dGhhc2ggY2FjaGUta2V5IHJlc3VsdAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpCisgICAg ICAgICAgICAgICAgICAgIChzZXRxIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZS10 aWNrIHRpY2spCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkpKSkKKyAgICAgICAgKGRvbGlz dCAocmFuZ2UgcHJvcHMpCisgICAgICAgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRl CisgICAgICAgICAgIChudGggMCByYW5nZSkKKyAgICAgICAgICAgKG50aCAxIHJhbmdlKQorICAg ICAgICAgICAobnRoIDIgcmFuZ2UpCisgICAgICAgICAgIG92ZXJyaWRlIHN0YXJ0IGVuZCkpKSkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbm9uLXRzLWNvbGxlY3QtZmFjZXMgKG1v ZGUgYmVnIGVuZCkKKyAgIlJ1biBNT0RFIG9uIHRoZSBCRUcuLkVORCByZWdpb24ncyB0ZXh0IGFu ZCBoYXJ2ZXN0IGZhY2UgcHJvcGVydGllcy4KK1JldHVybiBhIGxpc3Qgb2YgKEJVRi1CRUcgQlVG LUVORCBGQUNFKSB0cmlwbGVzIGluIGJhc2UtYnVmZmVyCitjb29yZGluYXRlcy4KKworRm9yIG5v bi10cmVlLXNpdHRlciBtb2RlcyB1c2UgYW4gaW5kaXJlY3QgYnVmZmVyIG5hcnJvd2VkIHRvIEJF Ry4uRU5EOgorcmVnZXgvc3ludGFjdGljIGZvbnQtbG9jayBob25vcnMgbmFycm93aW5nIGFuZCB0 aGUgaW5kaXJlY3QgYnVmZmVyCitzaGFyZXMgdGV4dCB3aXRoIHRoZSBiYXNlLCBzbyB0aGlzIGlz IGxlc3MgZXhwZW5zaXZlIGFuZCBjb3B5LWZyZWUuCisKK0ZvciB0cyBtb2RlcyBpbiBgbWFya2Rv d24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMnLCBmYWxsCitiYWNrIHRv IGEgdGVtcCBidWZmZXIuICBBIHBhcnNlciBjcmVhdGVkIGluIHRoZSBzb3VyY2UgYnVmZmVyIGRv ZXMgbm90CityZWFjdCB0byBuYXJyb3dpbmcgaW4gYW4gaW5kaXJlY3QgYnVmZmVyIGRlcml2ZWQg ZnJvbSBpdCAob25seSBwYXJzZXJzCitjcmVhdGVkIGluIHRoYXQgaW5kaXJlY3QgYnVmZmVyIHdv dWxkIGhvbm9yIGl0cyBuYXJyb3dpbmcpLCBzbyByZXVzaW5nCit0aGUgaG9zdCBwYXJzZXIgdmlh IGFuIGluZGlyZWN0IGJ1ZmZlciBpcyBub3QgYW4gb3B0aW9uIGhlcmUuICBBbmQgaW4KK3RoZSBo b3N0IGJ1ZmZlciBpdHNlbGYsIHRoZSBpbm5lciBjb250ZW50IG9mIGEgZmVuY2VkIGNvZGUgYmxv Y2sgaXMKK2p1c3Qgb3BhcXVlIHRleHQgaW5zaWRlIGEgYGNvZGVfZmVuY2VfY29udGVudCcgbm9k ZSwgbmV2ZXIgcmUtcGFyc2VkCithcyBhIGZyZXNoIGRvY3VtZW50LiAgQSB0ZW1wIGJ1ZmZlciB3 aXRoIGEgZnJlc2ggcGFyc2VyIHNlZXMgdGhlIGlubmVyCitjb250ZW50IGFzIGEgc3RhbmRhbG9u ZSBtYXJrZG93biBkb2N1bWVudCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LiIKKyAgKGNvbmQgKCht ZW1xIG1vZGUgbWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMp CisgICAgICAgICAobGV0ICgoY29udGVudCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVz IGJlZyBlbmQpKQorICAgICAgICAgICAgICAgcmVzKQorICAgICAgICAgICAod2l0aC13b3JrLWJ1 ZmZlcgorICAgICAgICAgICAgIChpbnNlcnQgY29udGVudCkKKyAgICAgICAgICAgICAobWFya2Rv d24tdHMtLWluaGliaXQtbWVzc2FnZXMtYW5kLXdhcm5pbmdzCisgICAgICAgICAgICAgICAnbWFy a2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MKKyAgICAgICAgICAgICAg IChkZWxheS1tb2RlLWhvb2tzCisgICAgICAgICAgICAgICAgIChsZXQgKChtYXJrZG93bi10cy0t c2V0LXVwLWlubGluZSB0KSkKKyAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtbW9kZSkp KSkKKyAgICAgICAgICAgICAoZm9udC1sb2NrLWVuc3VyZSkKKyAgICAgICAgICAgICAobGV0ICgo cG9zIChwb2ludC1taW4pKSkKKyAgICAgICAgICAgICAgICh3aGlsZSAoPCBwb3MgKHBvaW50LW1h eCkpCisgICAgICAgICAgICAgICAgIChsZXQgKChuZXh0IChuZXh0LXNpbmdsZS1wcm9wZXJ0eS1j aGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyAnZmFjZSBuaWwgKHBvaW50 LW1heCkpKQorICAgICAgICAgICAgICAgICAgICAgICAoZmFjZSAoZ2V0LXRleHQtcHJvcGVydHkg cG9zICdmYWNlKSkpCisgICAgICAgICAgICAgICAgICAgKHdoZW4gZmFjZQorICAgICAgICAgICAg ICAgICAgICAgOzsgVHJhbnNsYXRlIHRlbXAtYnVmZmVyIG9mZnNldHMgYmFjayB0byBiYXNlLWJ1 ZmZlcgorICAgICAgICAgICAgICAgICAgICAgOzsgcG9zaXRpb25zOiB0ZW1wIGBwb2ludC1taW4n IGNvcnJlc3BvbmRzIHRvIEJFRy4KKyAgICAgICAgICAgICAgICAgICAgIChwdXNoIChsaXN0ICgr IGJlZyAoMS0gcG9zKSkgKCsgYmVnICgxLSBuZXh0KSkgZmFjZSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlcykpCisgICAgICAgICAgICAgICAgICAgKHNldHEgcG9zIG5leHQpKSkpKQor ICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpCisgICAgICAgICh0CisgICAgICAgICAobGV0ICgo aW5kaXJlY3QtYnVmZmVyIChtYWtlLWluZGlyZWN0LWJ1ZmZlcgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdlbmVyYXRlLW5ldy1idWZmZXItbmFtZSAoYnVmZmVyLW5hbWUpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsICdpbmhpYml0LWJ1ZmZlci1ob29rcykpCisg ICAgICAgICAgICAgICByZXMpCisgICAgICAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAg ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgaW5kaXJlY3QtYnVmZmVyCisgICAgICAgICAgICAg ICAgIChtYXJrZG93bi10cy0taW5oaWJpdC1tZXNzYWdlcy1hbmQtd2FybmluZ3MKKyAgICAgICAg ICAgICAgICAgICAnbWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MK KyAgICAgICAgICAgICAgICAgICAoZGVsYXktbW9kZS1ob29rcyAoZnVuY2FsbCBtb2RlKSkpCisg ICAgICAgICAgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uIGJlZyBlbmQpCisgICAgICAgICAgICAg ICAgIChmb250LWxvY2stZW5zdXJlKQorICAgICAgICAgICAgICAgICAobGV0ICgocG9zIChwb2lu dC1taW4pKSkKKyAgICAgICAgICAgICAgICAgICAod2hpbGUgKDwgcG9zIChwb2ludC1tYXgpKQor ICAgICAgICAgICAgICAgICAgICAgKGxldCAoKG5leHQgKG5leHQtc2luZ2xlLXByb3BlcnR5LWNo YW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyAnZmFjZSBuaWwgKHBv aW50LW1heCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhY2UgKGdldC10ZXh0LXBy b3BlcnR5IHBvcyAnZmFjZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBmYWNlCisg ICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgcG9zIG5leHQgZmFjZSkgcmVzKSkK KyAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgcG9zIG5leHQpKSkpKQorICAgICAgICAgICAg IChraWxsLWJ1ZmZlciBpbmRpcmVjdC1idWZmZXIpKQorICAgICAgICAgICAobnJldmVyc2UgcmVz KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgKGxh bmcpCisgICJDb21wdXRlIGFuZCBjYWNoZSBhIG1vZGUgc3ltYm9sIGZyb20gTEFORywgYSBzeW1i b2wuCitDb25zdWx0IHRoZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcycgY2FjaGUsIG9y IGNvbnN1bHQKK2B0cmVlc2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QnIGFuZCBgbWFqb3ItbW9k ZS1yZW1hcC1hbGlzdCcsIG9yIGJydXRlCitmb3JjZSBtb2RlIHByb2JlLiAgUmV0dXJuIGEgdmFs aWQgbW9kZSBzeW1ib2wgb3IgbmlsLiIKKyAgKGlmLWxldCogKChtYXBwZWQtbW9kZSAoY2FyIChh bGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKSkpKQorICAgICAgbWFw cGVkLW1vZGUKKyAgICAobGV0KiAoKGxhbmctc3RyaW5nIChzeW1ib2wtbmFtZSBsYW5nKSkKKyAg ICAgICAgICAgKGxhbmctbW9kZSAoY29uY2F0IGxhbmctc3RyaW5nICItbW9kZSIpKQorICAgICAg ICAgICAobW9kZSkpCisgICAgICAoaWYgKHNldHEgbW9kZSAoYWxpc3QtZ2V0IGxhbmctbW9kZSB0 cmVlc2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QpKQorICAgICAgICAgIG1vZGUKKyAgICAgICAg KGlmIChzZXRxIG1vZGUgKGFsaXN0LWdldCBsYW5nLW1vZGUgbWFqb3ItbW9kZS1yZW1hcC1hbGlz dCkpCisgICAgICAgICAgICBtb2RlCisgICAgICAgICAgKGNhdGNoIDptb2RlCisgICAgICAgICAg ICAoZG9saXN0IChtb2RlCisgICAgICAgICAgICAgICAgICAgICAobGlzdAorICAgICAgICAgICAg ICAgICAgICAgIDs7IFRyeSBhIHRyZWVzaXQgbW9kZSB1c2luZyB0aGUgcmF3IHN0cmluZy4KKyAg ICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGxhbmctc3RyaW5nICItdHMtbW9kZSIpCisgICAg ICAgICAgICAgICAgICAgICAgOzsgVHJ5IGEgY29udmVudGlvbmFsIG1vZGUgdXNpbmcgdGhlIHJh dyBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgbGFuZy1tb2RlCisgICAgICAgICAgICAg ICAgICAgICAgOzsgVHJ5IGEgdHJlZXNpdCBtb2RlIHVzaW5nIHRoZSBkb3duY2FzZWQgc3RyaW5n LgorICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgKGRvd25jYXNlIGxhbmctc3RyaW5nKSAi LXRzLW1vZGUiKQorICAgICAgICAgICAgICAgICAgICAgIDs7IFRyeSBhIGNvbnZlbnRpb25hbCBt b2RlIHVzaW5nIHRoZSBkb3duY2FzZWQgc3RyaW5nLgorICAgICAgICAgICAgICAgICAgICAgIChj b25jYXQgKGRvd25jYXNlIGxhbmctc3RyaW5nKSAiLW1vZGUiKSkpCisgICAgICAgICAgICAgIChz ZXRxIG1vZGUgKGludGVybiBtb2RlKSkKKyAgICAgICAgICAgICAgKHdoZW4gKGZib3VuZHAgbW9k ZSkKKyAgICAgICAgICAgICAgICAocHVzaCAobGlzdCBsYW5nIG1vZGUpIG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stbW9kZXMpCisgICAgICAgICAgICAgICAgKHRocm93IDptb2RlIG1vZGUpKSkpKSkp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLXRzLWxhbmd1YWdlIChub2RlKQog ICAiQ29udmVydCBOT0RFIHRvIGEgbGFuZ3VhZ2UgZm9yIHRoZSBjb2RlIGJsb2NrLiIKLSAgKGxl dCogKChsYW5nLXN0cmluZyAoYWxpc3QtZ2V0ICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFu Z3VhZ2UtbWFwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LXRleHQgbm9kZSkgbmlsICMnZXF1YWwpKQotICAgICAgICAgKGxhbmcgKGlmIChzeW1ib2xwIGxh bmctc3RyaW5nKQotICAgICAgICAgICAgICAgICAgIGxhbmctc3RyaW5nCi0gICAgICAgICAgICAg ICAgIChpbnRlcm4gKGRvd25jYXNlIGxhbmctc3RyaW5nKSkpKSkKLSAgICA7OyBGSVhNRTogS2lu ZCBvZiBhIGhhY2sgaGVyZTogd2UgdXNlIHRoaXMgZnVuY3Rpb24gYXMgYSBob29rIGZvcgotICAg IDs7IGxvYWRpbmcgdXAgY29uZmlncyBmb3IgdGhlIGxhbmd1YWdlIGZvciB0aGUgY29kZSBibG9j ayBvbi1kZW1hbmQuCi0gICAgKGxldCAoKG1vZGUgKGFsaXN0LWdldCBsYW5nIG1hcmtkb3duLXRz LWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwKSkpCi0gICAgICA7OyBJZiB0aGVyZSdzIG5vIHN1 cHBvcnRlZCBtb2RlIGZvciB0aGUgbGFuZ3VhZ2UsIHJldHVybiBuaWwsCi0gICAgICA7OyB3aGlj aCBtYWtlcyBFbWFjcyBza2lwIHRoZSBjb2RlIGJsb2NrLgotICAgICAgKGlmIChub3QgKGFuZCBt b2RlIChmYm91bmRwIG1vZGUpKSkKLSAgICAgICAgICBuaWwKLSAgICAgICAgOzsgSWYgdGhlcmUn cyBhIG1ham9yIG1vZGUgZm9yIHRoZSBsYW5ndWFnZSwgc2V0IHVwIHRoZSBjb25maWcKLSAgICAg ICAgOzsgYW5kIHJldHVybiB0aGUgbGFuZ3VhZ2UuCi0gICAgICAgICh3aGVuIChub3QgKG1lbXEg bGFuZyBtYXJrZG93bi10cy0tY29uZmlndXJlZC1sYW5ndWFnZXMpKQotICAgICAgICAgIChtYXJr ZG93bi10cy0tYWRkLWNvbmZpZy1mb3ItbW9kZSBsYW5nIG1vZGUpCi0gICAgICAgICAgKHB1c2gg bGFuZyBtYXJrZG93bi10cy0tY29uZmlndXJlZC1sYW5ndWFnZXMpKQotICAgICAgICBsYW5nKSkp KQorICAobGV0KiAoKGxhbmcgKGludGVybiAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSkpKQorICAg ICAgICAgKG1vZGUgKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgbGFuZykp CisgICAgICAgICAodHMtbGFuZ3VhZ2UgKGFsaXN0LWdldCBsYW5nIG1hcmtkb3duLXRzLS1jb2Rl LWJsb2NrLWxhbmd1YWdlcykpCisgICAgICAgICAobm9uLXRzLWxhbmd1YWdlIChhbGlzdC1nZXQg bGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKSkKKyAgICAoY29uZAor ICAgICAoKGZib3VuZHAgbW9kZSkKKyAgICAgIChjb25kCisgICAgICAgOzsgUmV0dXJuIGtub3du IHRyZWVzaXQgbGFuZ3VhZ2UuCisgICAgICAgKHRzLWxhbmd1YWdlIHRzLWxhbmd1YWdlKQorICAg ICAgIDs7IFJldHVybiBuaWwgZm9yIGtub3duIG5vbi10cmVlc2l0IGxhbmd1YWdlIGZvciBmb250 LWxvY2suCisgICAgICAgKG5vbi10cy1sYW5ndWFnZSBuaWwpCisgICAgICAgOzsgTWFya2Rvd24g aXRzZWxmIG5lZWRzIHR3byBwYXJzZXJzIChtYXJrZG93biArCisgICAgICAgOzsgbWFya2Rvd24t aW5saW5lKSwgc28gdHJlZXNpdCBlbWJlZGRpbmcgKHdoaWNoIGNyZWF0ZXMgb25seQorICAgICAg IDs7IG9uZSkgY2Fubm90IGZ1bGx5IGZvbnRpZnkgaXQuICBSb3V0ZSB0aHJvdWdoIHRoZSBub24t dHMKKyAgICAgICA7OyBwYXRoIHNvIHRoZSB0ZW1wIGJ1ZmZlciBydW5zIHRoZSBmdWxsIG1vZGUg d2l0aCBib3RoCisgICAgICAgOzsgcGFyc2Vycy4KKyAgICAgICAoKHByb3ZpZGVkLW1vZGUtZGVy aXZlZC1wIG1vZGUgJ21hcmtkb3duLXRzLW1vZGUpCisgICAgICAgICh1bmxlc3MgKGFzc3EgbGFu ZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpCisgICAgICAgICAgKHB1c2gg KGNvbnMgbGFuZyBtb2RlKSBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKQor ICAgICAgICBuaWwpCisgICAgICAgKHQKKyAgICAgICAgKGxldCogKChjb25maWd1cmF0aW9uICht YXJrZG93bi10cy0taGFydmVzdC1tb2RlLXRyZWVzaXQtY29uZmlndXJhdGlvbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1vZGUpKQorICAgICAgICAgICAgICAgKHRzLWxhbmd1YWdl IChwbGlzdC1nZXQgY29uZmlndXJhdGlvbiA6bGFuZ3VhZ2UpKSkKKyAgICAgICAgICAoY29uZAor ICAgICAgICAgICAoKGFuZCB0cy1sYW5ndWFnZQorICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0 IGNvbmZpZ3VyYXRpb24gOmZvbnQtbG9jaykpCisgICAgICAgICAgICAobWFya2Rvd24tdHMtLWNv bmZpZ3VyZS1jdXJyZW50LWJ1ZmZlciBjb25maWd1cmF0aW9uKQorICAgICAgICAgICAgKHVubGVz cyAoYXNzcSBsYW5nIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcykKKyAgICAgICAg ICAgICAgKHB1c2ggKGNvbnMgbGFuZyB0cy1sYW5ndWFnZSkgbWFya2Rvd24tdHMtLWNvZGUtYmxv Y2stbGFuZ3VhZ2VzKSkKKyAgICAgICAgICAgIHRzLWxhbmd1YWdlKQorICAgICAgICAgICA7OyBP dGhlcndpc2UsIGNsYXNzaWZ5IG1vZGUgYXMgbm9uLXRyZWUtc2l0dGVyLgorICAgICAgICAgICAo dAorICAgICAgICAgICAgKHVubGVzcyAoYXNzcSBsYW5nIG1hcmtkb3duLXRzLS1jb2RlLWJsb2Nr LW5vbi10cy1tb2RlcykKKyAgICAgICAgICAgICAgKHB1c2ggKGNvbnMgbGFuZyBtb2RlKSBtYXJr ZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKQorICAgICAgICAgICAgbmlsKSkpKSkp CisgICAgICh0IG5pbCkpKSkKKworOzs7IENvZGUgYmxvY2sgbWlub3IgbW9kZSBzdXBwb3J0IGFu ZCBjb2RlLWJsb2NrIGNvbnRleHQgY29tbWFuZHM6CisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtY29k ZS1ibG9jay1jb21tYW5kcyAnKGluZGVudC1mb3ItdGFiLWNvbW1hbmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZWN0cmljLW5ld2xpbmUtYW5kLW1heWJlLWlu ZGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlv bi1hdC1wb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3 bGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudC1k d2ltCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LWxp bmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQtb3It dW5jb21tZW50LXJlZ2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stZmlsbC1wYXJhZ3JhcGgKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ctZmlsbC1yZWluZGVudC1kZWZ1bikKKyAg IkNvbW1hbmRzIHRvIGV4ZWN1dGUgaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQuCitTZWUgYG1hcmtk b3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4iKQorCisoZGVmdmFyIG1hcmtkb3du LXRzLWNvZGUtYmxvY2stdGhpbmctY29tbWFuZHMgJyh4cmVmLWZpbmQtZGVmaW5pdGlvbnMpCisg ICJDb21tYW5kcyB0aGF0IG5lZWQgYSBcInRoaW5nXCIgYXQgcG9pbnQgaW4gYSBjb2RlLWJsb2Nr IGNvbnRleHQuCitTZWUgYG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4i KQorCisoZGVmdmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stcmVnaW9uLWNvbW1hbmRzICcoY29t bWVudC1vci11bmNvbW1lbnQtcmVnaW9uKQorICAiQ29tbWFuZHMgdGhhdCBuZWVkIGEgcmVnaW9u IGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorU2VlIGBtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQt aW4tY29kZS1ibG9jaycuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1lbmFibGUtY29kZS1ibG9j ay1pbi1jb250ZXh0LW1vZGUgKCkKKyAgIkVuYWJsZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1p bi1jb250ZXh0LW1vZGUnIGlmIGluIGEgZmVuY2VkIGNvZGUgYmxvY2suIgorICAobWFya2Rvd24t dHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUKKyAgIChpZiAobWFya2Rvd24tdHMtYXQtY29k ZS1ibG9jay1wKSAxIC0xKSkpCisKKzs7IE5PVEU6IERvIG5vdCBhZGQgdGhpcyBjb21tYW5kIHRv IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzJy4KKyhkZWZ1biBtYXJrZG93bi10cy0t Y29kZS1ibG9jay1uZXdsaW5lICgmb3B0aW9uYWwgYXJnIGludGVyYWN0aXZlKQorICAiSW5zZXJ0 IGEgbmV3bGluZSwgYW5kIG1vdmUgdG8gbGVmdCBtYXJnaW4gb2YgdGhlIG5ldyBsaW5lLgorV2l0 aCBwcmVmaXggYXJndW1lbnQgQVJHLCBpbnNlcnQgdGhhdCBtYW55IG5ld2xpbmVzLgorCitJZiBg ZWxlY3RyaWMtaW5kZW50LW1vZGUnIGlzIGVuYWJsZWQsIHRoaXMgaW5kZW50cyB0aGUgZmluYWwg bmV3IGxpbmUKK3RoYXQgaXQgYWRkcywgYW5kIHJlaW5kZW50cyB0aGUgcHJlY2VkaW5nIGxpbmUu ICBUbyBqdXN0IGluc2VydAorYSBuZXdsaW5lLCB1c2UgXFxbZWxlY3RyaWMtaW5kZW50LWp1c3Qt bmV3bGluZV0uCisKK0lmIGBhdXRvLWZpbGwtbW9kZScgaXMgZW5hYmxlZCwgdGhpcyBtYXkgY2F1 c2UgYXV0b21hdGljIGxpbmUKK2JyZWFraW5nIG9mIHRoZSBwcmVjZWRpbmcgbGluZS4gIEEgbm9u LW5pbCBBUkcgaW5oaWJpdHMgdGhpcy4KKworSWYgdmFyaWFibGUgYHVzZS1oYXJkLW5ld2xpbmVz JyBpcyBlbmFibGVkLCB0aGUgbmV3bGluZSBpcyBtYXJrZWQgd2l0aAordGhlIHRleHQtcHJvcGVy dHkgYGhhcmQnLgorCitBIG5vbi1uaWwgSU5URVJBQ1RJVkUgYXJndW1lbnQgbWVhbnMgdG8gcnVu IHRoZSBgcG9zdC1zZWxmLWluc2VydC1ob29rJy4iCisgIChpbnRlcmFjdGl2ZSAiKlBcbnAiKQor ICAoaWYtbGV0KiAoKGJsb2NrLW1vZGUgKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1hdCkp CisgICAgICAgICAgICAoKGZib3VuZHAgYmxvY2stbW9kZSkpKQorICAgICAgKG1hcmtkb3duLXRz LS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrIGJsb2NrLW1vZGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ25ld2xpbmUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZSkKKyAgICAoZnVuY2FsbC1pbnRlcmFj dGl2ZWx5ICMnbmV3bGluZSBhcmcgaW50ZXJhY3RpdmUpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1jb2RlLWJsb2NrLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9uYWwganVzdGlmeSkKKyAgIlJlZmls bCBvciByZWluZGVudCB0aGUgbWFya2Rvd24gY29udGVudCB0aGF0IGNvbnRhaW5zIHBvaW50Lgor SWYgdGhlIHBvaW50IGlzIGluIGEgc3RyaW5nIG9yIGEgY29tbWVudCwgZmlsbCB0aGUgcGFyYWdy YXBoIHRoYXQKK2NvbnRhaW5zIHBvaW50IG9yIGZvbGxvd3MgcG9pbnQuCisKK090aGVyd2lzZSwg cmVpbmRlbnQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gdGhhdCBjb250YWlucyBwb2ludCBvcgor Zm9sbG93cyBwb2ludC4KKworSWYgSlVTVElGWSBpcyBub24tbmlsIChpbnRlcmFjdGl2ZWx5LCB3 aXRoIHByZWZpeCBhcmd1bWVudCksIGp1c3RpZnkgYXMKK3dlbGwuIgorICAoaW50ZXJhY3RpdmUg IlAiKQorICAoY29uZCAoKGRlcml2ZWQtbW9kZS1wICdwcm9nLW1vZGUpCisgICAgICAgICAoY2Fs bC1pbnRlcmFjdGl2ZWx5ICMncHJvZy1maWxsLXJlaW5kZW50LWRlZnVuIGp1c3RpZnkpKQorICAg ICAgICAodAorICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2ZpbGwtcGFyYWdyYXBoIGp1 c3RpZnkpKSkpCisKKzs7IE5PVEU6IERvIG5vdCBhZGQgdGhpcyBjb21tYW5kIHRvIGBtYXJrZG93 bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzJy4KKyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9j ay14cmVmLWZpbmQtZGVmaW5pdGlvbnMgKCZyZXN0IGFyZ3MpCisgICJIZWxwZXIgY29tbWFuZCBm b3IgYHhyZWYtZmluZC1kZWZpbml0aW9ucycgaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQuCitGaW5k IHRoaW5nIGF0IHBvaW50LgorQWRqdXN0IHRoZSByZWZlcmVuY2VzIG9uIHRoZSB4cmVmIHN0YWNr IHRvIHRoZSBiYXNlIGJ1ZmZlci4KK1Bhc3MgdGhyb3VnaCBBUkdTIGlmIG5vdCBpbiBhIGNvZGUg YmxvY2sgd2l0aCBhbiBhdmFpbGFibGUgbW9kZS4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGlmLWxl dCogKChibG9jay1tb2RlIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtYXQpKQorICAgICAg ICAgICAgKChmYm91bmRwIGJsb2NrLW1vZGUpKSkKKyAgICAgIChjb25kaXRpb24tY2FzZSBlcnIK KyAgICAgICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgICAgICAgKHByb2duCisgICAgICAg ICAgICAgICAgOzsgUmVjb3JkIGEgcGxhY2Vob2xkZXIgeHJlZiBtYXJrZXIgaW4gdGhlIGJhc2Ug YnVmZmVyLiAgVGhpcworICAgICAgICAgICAgICAgIDs7IHdpbGwgYmUgcmV0YWluZWQgaWYgdGhl IGNvbW1hbmQgc3VjY2VlZHMgdG8gcHVzaCBhIG1hcmtlciBpbgorICAgICAgICAgICAgICAgIDs7 IHRoZSBjb2RlLWJsb2NrIGJ1ZmZlciB3aGljaCB3ZSB3aWxsIHBvcC4KKyAgICAgICAgICAgICAg ICAoeHJlZi1wdXNoLW1hcmtlci1zdGFjaykKKyAgICAgICAgICAgICAgICA7OyBgeHJlZi1maW5k LWRlZmluaXRpb25zJyBpcyBhIHRoaW5nIGNvbW1hbmQgaW4KKyAgICAgICAgICAgICAgICA7OyBg bWFya2Rvd24tdHMtY29kZS1ibG9jay10aGluZy1jb21tYW5kcycuCisgICAgICAgICAgICAgICAg KG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrIGJsb2NrLW1vZGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyd4cmVm LWZpbmQtZGVmaW5pdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXJncykpCisgICAgICAgICAgICA7OyBQb3AgdGhlIHRvcCB4cmVm IG1hcmtlci4gIElmIHRoZSBjb21tYW5kIHN1Y2NlZWRlZCwgdGhlCisgICAgICAgICAgICA7OyB0 b3AgbWFya2VyIHdpbGwgYmUgdGhlIGNvZGUtYmxvY2sgYnVmZmVyIG1hcmtlci4gIElmIGl0Cisg ICAgICAgICAgICA7OyBmYWlsZWQsIHdlJ2xsIHBvcCB0aGUgcGxhY2Vob2xkZXIgd2hpY2ggaXMg bm93IG9mIG5vCisgICAgICAgICAgICA7OyB2YWx1ZS4KKyAgICAgICAgICAgIDs7IFRPRE86IFBy b3Bvc2UgYW4gYHhyZWYnIHBvcCBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgImdvCisgICAgICAgICAg ICA7OyBiYWNrIi4KKyAgICAgICAgICAgIChsZXQgKChoaXN0b3J5ICh4cmVmLS1nZXQtaGlzdG9y eSkpKQorICAgICAgICAgICAgICAodW5sZXNzIChudWxsIChjYXIgaGlzdG9yeSkpCisgICAgICAg ICAgICAgICAgKHBvcCAoY2FyIGhpc3RvcnkpKSkpKQorICAgICAgICAoZXJyb3IKKyAgICAgICAg IDs7IFByb3BhZ2F0ZSB0aGUgc2lnbmFsLgorICAgICAgICAgKHNpZ25hbCAoY2FyIGVycikgKGNk ciBlcnIpKSkpCisgICAgOzsgTm90IGluIGEgY29kZSBibG9jayBjb250ZXh0LiAgVGhpcyBzaG91 bGQgcmVhbGx5IG5ldmVyIGhhcHBlbi4KKyAgICAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5ICMneHJl Zi1maW5kLWRlZmluaXRpb25zIGFyZ3MpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1tYXliZS1y dW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrICgpCisgICJIZWxwZXIgZnVuY3Rpb24gdG8gd3JhcCBh IGNvbW1hbmQgZm9yIGEgY29kZS1ibG9jayBjb250ZXh0LgorSWYgYHRoaXMtY29tbWFuZCcgaXMg YSBtZW1iZXIgb2YgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFuZHMnIGFuZAorcG9pbnQg aXMgd2l0aGluIGEgY29kZSBibG9jayB3aXRoIGFuIGF2YWlsYWJsZSBtb2RlLCBpdCB3aWxsIHJ1 biBpbiB0aGF0Citjb2RlIGJsb2NrJ3MgbW9kZSBpbiBhIGJ1ZmZlciBuYXJyb3dlZCB0byBpdHMg Y29udGVudC4gIE90aGVyd2lzZSwgdGhlCitjb21tYW5kIHdpbGwgcnVuIGluIHRoZSBjb250ZXh0 IG9mIHRoZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVyLiIKKyAgKHdoZW4gKG1lbXEgdGhpcy1j b21tYW5kIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFuZHMpCisgICAgKHdoZW4tbGV0KiAo KGNvbW1hbmQgdGhpcy1jb21tYW5kKQorICAgICAgICAgICAgICAgIChibG9jay1tb2RlIChtYXJr ZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtYXQpKQorICAgICAgICAgICAgICAgICgoZmJvdW5kcCBi bG9jay1tb2RlKSkpCisgICAgICAoc2V0cSB0aGlzLWNvbW1hbmQgKGxhbWJkYSAoJnJlc3QgYXJn cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIChhcHBseSAjJ21hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2Rl LWJsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stbW9kZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhcmdzKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcnVuLWNv bW1hbmQtaW4tY29kZS1ibG9jayAoYmxvY2stbW9kZSBjb21tYW5kICZyZXN0IGFyZ3MpCisgICJS dW4gQ09NTUFORCBpbiBCTE9DSy1NT0RFLgorQVJHUyBhcmUgY2FwdHVyZWQgYnkgYG1hcmtkb3du LXRzLS1tYXliZS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4iCisgICh3aGVuLWxldCogKChi ZWcgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ21hcmtkb3duLXRzLWNvZGUtYmVnLW1hcmtl cikpCisgICAgICAgICAgICAgIChlbmQgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ21hcmtk b3duLXRzLWNvZGUtZW5kLW1hcmtlcikpCisgICAgICAgICAgICAgIChzdHIgKGJ1ZmZlci1zdWJz dHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkpCisgICAgOzsgVXNlIGEgdGVtcCAob3Igd29y aykgYnVmZmVyIGJlY2F1c2UgdHJlZXNpdCBjdXJyZW50bHkgY29uZnVzZXMKKyAgICA7OyBub2Rl cyBpbiBhbiBpbmRpcmVjdCBidWZmZXIgZXZlbiBpZiB0aGUgaW5kaXJlY3QgYnVmZmVyIGlzIG5v dAorICAgIDs7IG5hcnJvd2VkLgorICAgIChsZXQqICgodGVtcC1kZWFjdGl2YXRlLW1hcmspCisg ICAgICAgICAgIChvcmlnLXBvaW50IChwb2ludCkpCisgICAgICAgICAgIChvcmlnLW1hcmsgKG1h cmsgdCkpCisgICAgICAgICAgIChvcmlnLW1hcmstYWN0aXZlIG1hcmstYWN0aXZlKQorICAgICAg ICAgICAocmVnaW9uLWJlZyAodXNlLXJlZ2lvbi1iZWdpbm5pbmcpKQorICAgICAgICAgICAocmVn aW9uLWVuZCAodXNlLXJlZ2lvbi1lbmQpKQorICAgICAgICAgICAoYWRqLXBvaW50ICgxKyAoLSBv cmlnLXBvaW50IGJlZykpKQorICAgICAgICAgICAoYWRqLW1hcmsgKHdoZW4gb3JpZy1tYXJrICgx KyAoLSBvcmlnLW1hcmsgYmVnKSkpKQorICAgICAgICAgICAoYWRqLXJlZ2lvbi1iZWcgKHdoZW4g cmVnaW9uLWJlZyAoMSsgKC0gb3JpZy1wb2ludCByZWdpb24tYmVnKSkpKQorICAgICAgICAgICAo YWRqLXJlZ2lvbi1lbmQgKHdoZW4gcmVnaW9uLWVuZCAoMSsgKC0gb3JpZy1wb2ludCByZWdpb24t ZW5kKSkpKQorICAgICAgICAgICAocG9pbnQtZGVsdGEgMCkKKyAgICAgICAgICAgKHNvdXJjZS1i dWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgICAod2l0aC13b3JrLWJ1ZmZlcgorICAgICAg ICAoaW5zZXJ0IHN0cikKKyAgICAgICAgKGdvdG8tY2hhciBhZGotcG9pbnQpCisgICAgICAgIDs7 IFByb3BhZ2F0ZSBtYXJrIChhbmQgcmVnaW9uKS4KKyAgICAgICAgKHdoZW4gb3JpZy1tYXJrLWFj dGl2ZQorICAgICAgICAgIChzZXQtbWFyayBhZGotbWFyaykpCisgICAgICAgIChtYXJrZG93bi10 cy0taW5oaWJpdC1tZXNzYWdlcy1hbmQtd2FybmluZ3MKKyAgICAgICAgICAnbWFya2Rvd24tdHMt aW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MKKyAgICAgICAgICAoZGVsYXktbW9kZS1o b29rcworICAgICAgICAgICAgKGxldCAoKG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lCisgICAg ICAgICAgICAgICAgICAgKHByb3ZpZGVkLW1vZGUtZGVyaXZlZC1wIGJsb2NrLW1vZGUgJ21hcmtk b3duLXRzLW1vZGUpKSkKKyAgICAgICAgICAgICAgKGZ1bmNhbGwgYmxvY2stbW9kZSkpKSkKKyAg ICAgICAgKGxldCAoKHBvaW50IChwb2ludCkpCisgICAgICAgICAgICAgIChhcml0eSAoY2RyIChm dW5jLWFyaXR5IGNvbW1hbmQpKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgKChtZW1x IGNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9jay10aGluZy1jb21tYW5kcykKKyAgICAgICAg ICAgICh3aGVuLWxldCogKCh0aGluZyAodGhpbmctYXQtcG9pbnQgJ3N5bWJvbCkpKQorICAgICAg ICAgICAgICAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQgdGhpbmcpKSkKKyAgICAgICAg ICAgKChtZW1xIGNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9jay1yZWdpb24tY29tbWFuZHMp CisgICAgICAgICAgICAod2hlbiAoYW5kIGFkai1yZWdpb24tYmVnIGFkai1yZWdpb24tZW5kKQor ICAgICAgICAgICAgICAoYXBwbHkgIydmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZAorICAg ICAgICAgICAgICAgICAgICAgYWRqLXJlZ2lvbi1iZWcgYWRqLXJlZ2lvbi1lbmQgYXJncykpKQor ICAgICAgICAgICAoKHplcm9wIGFyaXR5KQorICAgICAgICAgICAgKGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kKSkKKyAgICAgICAgICAgKChlcSAxIGFyaXR5KQorICAgICAgICAgICAgKGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kIChjYXIgYXJncykpKQorICAgICAgICAgICAodAor ICAgICAgICAgICAgKGFwcGx5ICMnZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQgYXJncykp KQorICAgICAgICAgIChzZXRxIHN0ciAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChw b2ludC1taW4pIChwb2ludC1tYXgpKSkKKyAgICAgICAgICAoc2V0cSB0ZW1wLWRlYWN0aXZhdGUt bWFyayBkZWFjdGl2YXRlLW1hcmspCisgICAgICAgICAgKHNldHEgcG9pbnQtZGVsdGEgKC0gKHBv aW50KSBwb2ludCkpKQorICAgICAgICAobGV0ICgod29yay1idWZmZXIgKGN1cnJlbnQtYnVmZmVy KSkpCisgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc291cmNlLWJ1ZmZlcgorICAgICAg ICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIGJlZyBlbmQgd29yay1idWZmZXIpCisgICAg ICAgICAgICA7OyBQcm9wYWdhdGUgbWFyayBkZWFjdGl2YXRpb24gdG8gdGhlIHNvdXJjZSBidWZm ZXIuCisgICAgICAgICAgICAoc2V0cSBkZWFjdGl2YXRlLW1hcmsgdGVtcC1kZWFjdGl2YXRlLW1h cmspCisgICAgICAgICAgICA7OyBNb3ZlIHBvaW50IGlmIGl0IG1vdmVkIGluIHRoZSB0ZW1wIGJ1 ZmZlci4KKyAgICAgICAgICAgIChnb3RvLWNoYXIgKCsgb3JpZy1wb2ludCBwb2ludC1kZWx0YSkp CisgICAgICAgICAgICA7OyBSZWNvcmQgdGhlIG9yaWdpbmFsIGNvbW1hbmQuCisgICAgICAgICAg ICAoc2V0cSB0aGlzLWNvbW1hbmQgY29tbWFuZCkKKyAgICAgICAgICAgIDs7IFRoaXMgaGVscHMg bWFpbnRhaW4gZGlzY3JldGUgY29tbWFuZCBhY3Rpb25zLgorICAgICAgICAgICAgKHVuZG8tYm91 bmRhcnkpCisgICAgICAgICAgICA7OyBNYWtlIHN1cmUgdGhlIG9yaWdpbmF0aW5nIHJlZ2lvbiBp cyByZWZvbnRpZmllZC4KKyAgICAgICAgICAgIChmb250LWxvY2stZmx1c2ggYmVnIGVuZCkpKSkp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1maW5kLWNvZGUtYmxvY2stZGVsaW1pdGVyIChwb3Mg Jm9wdGlvbmFsIGJhY2t3YXJkKQorICAiUmV0dXJuIHRoZSBuZXh0IG9yIHByZXZpb3VzIGZlbmNl ZF9jb2RlX2Jsb2NrX2RlbGltaXRlciBub2RlLCBvciBuaWwuCitTZWFyY2ggc3RhcnRpbmcgYXQg UE9TLgorU2VhcmNoIGJhY2t3YXJkIGlmIEJBQ0tXQVJEIGlzIG5vbi1uaWwuIgorICAodHJlZXNp dC1zZWFyY2gtZm9yd2FyZCAodHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24pCisgICAgICAg ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN0cmluZz0gKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImZlbmNlZF9jb2RlX2Jsb2NrX2RlbGltaXRlciIpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZCkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t ZmluZC1uZXh0LWNvZGUtYmxvY2stZGVsaW1pdGVyICgmb3B0aW9uYWwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgYmFja3dhcmQgcmVtYWlu KQorICAiUmV0dXJuIHRoZSBuZXh0IG9yIHByZXZpb3VzIGZlbmNlZF9jb2RlX2Jsb2NrX2RlbGlt aXRlciBub2RlLCBvciBuaWwuCitTZWFyY2ggc3RhcnRpbmcgYXQgUE9TIG9yIGBwb2ludCcsIGlm IFBPUyBpcyBuaWwuCitTZWFyY2ggYmFja3dhcmQgaWYgQkFDS1dBUkQgaXMgbm9uLW5pbC4KK0lm IFJFTUFJTiBpcyBub24tbmlsLCBtb3ZlIHRvIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSBjdXJy ZW50IGNvZGUKK2Jsb2NrLCBpZiBpbiBvbmUuIgorICAoc2V0cSBwb3MgKG9yIHBvcyAocG9pbnQp KSkKKyAgKGFuZC1sZXQqICgobm9kZSAobWFya2Rvd24tdHMtLWZpbmQtY29kZS1ibG9jay1kZWxp bWl0ZXIgcG9zIGJhY2t3YXJkKSkpCisgICAgKGxldCAoKGluLWJsb2NrIChtYXJrZG93bi10cy1h dC1jb2RlLWJsb2NrLXAgcG9zKSkpCisgICAgICAoY29uZAorICAgICAgICgoYW5kIHJlbWFpbiBp bi1ibG9jaykKKyAgICAgICAgbm9kZSkKKyAgICAgICAocmVtYWluCisgICAgICAgIG5pbCkKKyAg ICAgICAodAorICAgICAgICAod2hpbGUgKGFuZCBub2RlCisgICAgICAgICAgICAgICAgICAgIDs7 IElmIGJhY2t3YXJkLCBza2lwIHRoZSBjdXJyZW50IGJsb2NrJ3MKKyAgICAgICAgICAgICAgICAg ICAgOzsgc3RhcnRpbmcgZGVsaW1pdGVyLgorICAgICAgICAgICAgICAgICAgICAob3IgKGFuZCBi YWNrd2FyZCBpbi1ibG9jayAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBub2RlKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgIChub3QgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcgbm9kZSkp KSkKKyAgICAgICAgICAoc2V0cSBpbi1ibG9jayAobWFya2Rvd24tdHMtYXQtY29kZS1ibG9jay1w IHBvcykpCisgICAgICAgICAgKHNldHEgcG9zIChpZiBiYWNrd2FyZAorICAgICAgICAgICAgICAg ICAgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKQorICAgICAgICAgICAgICAgICAgICAg ICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAgICAgICAgICAoc2V0cSBub2RlIChtYXJrZG93 bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlciBwb3MgYmFja3dhcmQpKSkKKyAgICAgICAg bm9kZSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1tb3ZlLXRvLW5leHQtY29kZS1ibG9jayAo YXJnKQorICAiTW92ZSBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY29kZSBibG9jay4K K1dpdGggdGhlIHByZWZpeCBhcmd1bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4gdGhlIGN1cnJlbnQg Y29kZSBibG9jay4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCogKChub2RlCisg ICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZpbmQtbmV4dC1jb2RlLWJsb2NrLWRlbGltaXRl ciBuaWwgbmlsIGFyZykpKQorICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2Rl KSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtbW92ZS10by1wcmV2aW91cy1jb2RlLWJsb2NrIChh cmcpCisgICJNb3ZlIHBvaW50IHRvIHRoZSBzdGFydCBvZiB0aGUgcHJldmlvdXMgY29kZSBibG9j ay4KK1dpdGggdGhlIHByZWZpeCBhcmd1bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4gdGhlIGN1cnJl bnQgY29kZSBibG9jay4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCogKChub2Rl CisgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZpbmQtbmV4dC1jb2RlLWJsb2NrLWRlbGlt aXRlciBuaWwgJ2JhY2t3YXJkIGFyZykpKQorICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1z dGFydCBub2RlKSkpKQorCis7OzsgVGFibGVzIGFrYSBwaXBlIHRhYmxlczoKKworOzs7OyBVdGls aXRpZXM6CisKKyhkZWZjb25zdCBtYXJrZG93bi10cy10YWJsZS1leHBvcnQtYnVmZmVyCisgICIq bWFya2Rvd24tdHMtdGFibGUtZXhwb3J0KiIpCisKKzs7IEluIGZyZXF1ZW5jeSBtYXRjaGluZyBv cmRlci4KKyhkZWZjb25zdCBtYXJrZG93bi10cy0tdGFibGUtcm93LXR5cGVzCisgICcoInBpcGVf dGFibGVfcm93IgorICAgICJwaXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciCisgICAgInBpcGVfdGFi bGVfaGVhZGVyIikpCisKKzs7IEluIGZyZXF1ZW5jeSBtYXRjaGluZyBvcmRlci4KKyhkZWZjb25z dCBtYXJrZG93bi10cy0tdGFibGUtY2VsbC10eXBlcworICAnKCJwaXBlX3RhYmxlX2NlbGwiCisg ICAgInBpcGVfdGFibGVfZGVsaW1pdGVyX2NlbGwiKSkKKworKGRlZmNvbnN0IG1hcmtkb3duLXRz LS10YWJsZS1kZWxpbWl0ZXItY2VsbC10eXBlcworICAnKCJwaXBlX3RhYmxlX2RlbGltaXRlcl9j ZWxsIgorICAgICJwaXBlX3RhYmxlX2FsaWduX2xlZnQiCisgICAgInBpcGVfdGFibGVfYWxpZ25f cmlnaHQiKSkKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS10YWJsZS1kZWxpbWl0ZXItY2VsbC1z dWJ0eXBlcworICAnKCJwaXBlX3RhYmxlX2FsaWduX2xlZnQiCisgICAgInBpcGVfdGFibGVfYWxp Z25fcmlnaHQiKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1hYnV0dGluZy1wb3MgKHBv cykKKyAgIkFkanVzdCBQT1MgdG8gYWJ1dCBpdHMgY2xvc2VzdCB0ZXh0LgorUmV0dXJuIHBvcyBh ZGp1c3RlZCB0byB0aGUgcG9zaXRpb24gb2YgdGhlIG5lYXJlc3Qgbm9uLWJsYW5rIGNoYXJhY3Rl ci4KK090aGVyd2lzZSwgcmV0dXJuIG5pbCwgZm9yIGV4YW1wbGUsIGlmIHRoZSBsaW5lIGlzIGVt cHR5LiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGdvdG8tY2hhciBwb3MpCisgICAgKHNraXAt Y2hhcnMtZm9yd2FyZCAiW1s6Ymxhbms6XV0iIChwb3MtZW9sKSkKKyAgICAoaWYgKGVxIHBvcyAo cG9zLWVvbCkpCisgICAgICAgIChwcm9nbgorICAgICAgICAgIChnb3RvLWNoYXIgcG9zKQorICAg ICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICJbWzpibGFuazpdXSIgKHBvcy1ib2wpKQorICAg ICAgICAgICh1bmxlc3MgKGVxIHBvcyAocG9zLWJvbCkpCisgICAgICAgICAgICAobWF4IChwb2lu dC1taW4pICgxLSAocG9pbnQpKSkpKQorICAgICAgKG1pbiAocG9pbnQtbWF4KSAoMSsgKHBvaW50 KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsICgmb3B0aW9uYWwg bm9kZSBwb3MgYWJ1dHRpbmcpCisgICJDb21wdXRlIHRhYmxlIGNlbGwgZnJvbSBuYW1lZCBOT0RF IGF0IFBPUy4KK0lmIE5PREUgaXMgbmlsLCB1c2UgdGhlIG5vZGUgYXQgUE9TLgorSWYgUE9TIGlz IG5pbCwgdXNlIGBwb2ludCcuCitJZiBOT0RFIGlzIGEgY2VsbCB0eXBlLCByZXR1cm4gaXQuCitJ ZiBOT0RFIGlzIGEgc3VidHlwZSwgcHJvbW90ZSBpdC4KK0lmIEFCVVRUSU5HIGlzIG5vbi1uaWws IGFkanVzdCBQT1MgdG8gdGhlIG5lYXJlc3Qgbm9uLWJsYW5rIGNoYXJhY3Rlci4KK090aGVyd2lz ZSwgcmV0dXJuIG5pbC4iCisgIDs7IFdlIGNvdWxkIHNhbml0eSBjaGVjayB2aWEgYHRyZWVzaXQt bm9kZS1uYW1lZCcgYW5kIGVycm9yIGlmIG5vdC4KKyAgKHNldHEgcG9zIChvciBwb3MgKHBvaW50 KSkpCisgICh3aGVuIGFidXR0aW5nCisgICAgKHNldHEgcG9zIChvciAobWFya2Rvd24tdHMtLXRh YmxlLWFidXR0aW5nLXBvcyBwb3MpIHBvcykpKQorICAod2hlbi1sZXQqICgobm9kZSAob3Igbm9k ZQorICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3du ICduYW1lZCkpKQorICAgICAgICAgICAgICAodHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkp KQorICAgIChjb25kICgobWVtYmVyIHR5cGUgbWFya2Rvd24tdHMtLXRhYmxlLWNlbGwtdHlwZXMp CisgICAgICAgICAgIG5vZGUpCisgICAgICAgICAgKChtZW1iZXIgdHlwZSBtYXJrZG93bi10cy0t dGFibGUtZGVsaW1pdGVyLWNlbGwtc3VidHlwZXMpCisgICAgICAgICAgICh0cmVlc2l0LW5vZGUt cGFyZW50IG5vZGUpKQorICAgICAgICAgICgobWVtYmVyIHR5cGUgbWFya2Rvd24tdHMtLXRhYmxl LXJvdy10eXBlcykKKyAgICAgICAgICAgKGNvbmQgKChlcSBhYnV0dGluZyAnbGVmdCkKKyAgICAg ICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtY2hpbGQgbm9kZSAwICduYW1lZCkpCisgICAgICAg ICAgICAgICAgIDs7IEFjY291bnQgZm9yICdyaWdodCBvciB0LgorICAgICAgICAgICAgICAgICAo dAorICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZCBub2RlIC0xICduYW1lZCkp KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLXJvdyAoJm9wdGlvbmFsIG5v ZGUgcG9zKQorICAiQ29tcHV0ZSB0YWJsZSByb3cgZnJvbSBuYW1lZCBOT0RFIGF0IFBPUy4KK0lm IE5PREUgaXMgbmlsLCB1c2UgdGhlIG5vZGUgYXQgUE9TLgorSWYgUE9TIGlzIG5pbCwgdXNlIGBw b2ludCcuCitJZiBOT0RFIGlzIGEgcm93IHR5cGUsIHJldHVybiBpdC4KK0lmIE5PREUgaXMgYSB0 YWJsZSBjZWxsIHR5cGUsIHJldHVybiBpdHMgcm93LgorT3RoZXJ3aXNlLCByZXR1cm4gbmlsLiIK KyAgOzsgV2UgY291bGQgc2FuaXR5IGNoZWNrIHZpYSBgdHJlZXNpdC1ub2RlLW5hbWVkJyBhbmQg ZXJyb3IgaWYgbm90LgorICAod2hlbi1sZXQqICgobm9kZSAob3Igbm9kZQorICAgICAgICAgICAg ICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1hdCAob3IgcG9zIChwb2ludCkpICdtYXJrZG93biAn bmFtZWQpKSkKKyAgICAgICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKSkK KyAgICAoaWYgKG1lbWJlciB0eXBlIG1hcmtkb3duLXRzLS10YWJsZS1yb3ctdHlwZXMpCisgICAg ICAgIG5vZGUKKyAgICAgICAodHJlZXNpdC1ub2RlLXBhcmVudCAobWFya2Rvd24tdHMtLXRhYmxl LW5vZGUtY2VsbCBub2RlKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1wYXJzZS1l cnJvci1wICgmb3B0aW9uYWwgbm9kZSBwb3MpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBuYW1lZCBO T0RFIGF0IFBPUyBpcyBpbiBhbiBcIkVSUk9SXCIgc3VidHJlZS4KK05PREUgbXVzdCBiZSBhIHRh YmxlIGVsZW1lbnQ7IGkuZS4sIGl0cyB0eXBlIHByZWZpeCBpcyBcInBpcGVfdGFibGVcIi4KK0lm IE5PREUgaXMgYSB0YWJsZSwgcmV0dXJuIG5pbCAoaXQgc2hvdWxkbid0IGJlIGluIEVSUk9SKS4K K0lmIE5PREUgaXMgbm90IGEgdGFibGUgZWxlbWVudCwgcmV0dXJuIG5pbC4KK0lmIE5PREUncyBu ZWFyYnkgYW5jZXN0b3IgaXMgYW4gXCJFUlJPUlwiIG5vZGUsIHJldHVybiB0LgorT3RoZXJ3aXNl LCByZXR1cm4gbmlsLiIKKyAgOzsgV2UgY291bGQgc2FuaXR5IGNoZWNrIHZpYSBgdHJlZXNpdC1u b2RlLW5hbWVkJyBhbmQgZXJyb3IgaWYgbm90LgorICAod2hlbi1sZXQqICgocm93IChtYXJrZG93 bi10cy0tdGFibGUtbm9kZS1yb3cgbm9kZSBwb3MpKQorICAgICAgICAgICAgICAodHlwZSAodHJl ZXNpdC1ub2RlLXR5cGUgcm93KSkKKyAgICAgICAgICAgICAgKHBhcmVudCAodHJlZXNpdC1ub2Rl LXBhcmVudCByb3cpKQorICAgICAgICAgICAgICAocGFyZW50LXR5cGUgKHRyZWVzaXQtbm9kZS10 eXBlIHBhcmVudCkpKQorICAgIChjb25kICgoZXF1YWwgdHlwZSAicGlwZV90YWJsZSIpCisgICAg ICAgICAgIG5pbCkKKyAgICAgICAgICAoKGVxdWFsIHBhcmVudC10eXBlICJwaXBlX3RhYmxlIikK KyAgICAgICAgICAgbmlsKQorICAgICAgICAgICgoZXF1YWwgcGFyZW50LXR5cGUgIkVSUk9SIikK KyAgICAgICAgICAgdCkKKyAgICAgICAgICAodAorICAgICAgICAgICAoZXJyb3IgIlNob3VsZCBu ZXZlciBoYXBwZW4iKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgKCZvcHRp b25hbCBwb3MgYWJ1dHRpbmcpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBQT1MgaXMgYXQgb3IgaW4g YSBwaXBlIHRhYmxlLgorSWYgUE9TIGlzIG5pbCwgdXNlIHBvaW50LgorUmV0dXJuIGNvbnMgKHBv cyAuIHRhYmxlLW5vZGUpIGlmIFBPUyBpcyB3aXRoaW4gYSB0YWJsZSwgb3RoZXJ3aXNlCityZXR1 cm4gbmlsLgoraWYgUE9TIGlzIHdpdGhpbiBhIHRhYmxlIGJ1dCB3aXRoIHBhcnNlIGVycm9ycywg c2lnbmFsIGFuIGVycm9yLgorSWYgQUJVVFRJTkcgaXMgbm9uLW5pbCwgYWRqdXN0IFBPUyB0byB0 aGUgbmVhcmVzdCBub24tYmxhbmsgY2hhcmFjdGVyLgorSWYgdGhlIHBhcnNlZCB0YWJsZSBpcyBp biBFUlJPUiwgcmV0dXJuIG5pbC4iCisgIChzZXRxIHBvcyAob3IgcG9zIChwb2ludCkpKQorICAo c2F2ZS1leGN1cnNpb24KKyAgICAoZ290by1jaGFyIHBvcykKKyAgICA7OyBJZiBwb2ludCBpcyBv biBhbiBlbXB0eSBsaW5lLCBpdCBpcyBuZXZlciBhIHRhYmxlLgorICAgICh1bmxlc3MgKGFuZCAo ZW9scCkgKGJvbHApKQorICAgICAgOzsgSWYgcG9pbnQgaXMgYm9sIG9yIGVvbCBpdCBtaWdodCBi ZSBhYnV0dGluZyBhIHBpcGUgc3ltYm9sIHNvCisgICAgICA7OyBsb29rIGZvcndhcmRzIG9yIGJh Y2t3YXJkcyBvbmUgY2hhcmFjdGVyIHRvIHRlc3QgaWYgdGhhdCBwb3MKKyAgICAgIDs7IGlzIGEg dGFibGUuCisgICAgICAod2hlbiBhYnV0dGluZworICAgICAgICAoc2V0cSBwb3MgKG9yIChtYXJr ZG93bi10cy0tdGFibGUtYWJ1dHRpbmctcG9zIHBvcykgcG9zKSkpCisgICAgICAod2hlbi1sZXQq ICgocm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgbmlsIHBvcykpKQorICAgICAgICAo aWYgKG1hcmtkb3duLXRzLS10YWJsZS1wYXJzZS1lcnJvci1wIHJvdykKKyAgICAgICAgICAgIDs7 IERvIG5vdCB1c2UgZXJyb3Igb3Igd2FybmluZyBoZXJlLiAgRXJyb3JzIGludGVyZmVyZSB3aXRo CisgICAgICAgICAgICA7OyB0aGUgY29tbWFuZCBsb29wLiAgV2FybmluZ3MgYXJlIGFubm95aW5n LgorICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAgIChtZXNzYWdlICJJbmNvcnJlY3Rs eSBmb3JtYXR0ZWQgTWFya2Rvd24gdGFibGUgKHBhcnNlciBlcnJvcikiKQorICAgICAgICAgICAg ICBuaWwpCisgICAgICAgICAgKGNvbnMgcG9zICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkCisgICAg ICAgICAgICAgICAgICAgICByb3cKKyAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxl XFwnIiAnYmFja3dhcmQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZW5hYmxlLWluLXRh YmxlLW1vZGUgKCkKKyAgIkVuYWJsZSBgbWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZScgaWYgaW4g YSB0YWJsZS4KK0EgdGFibGUgd2l0aCBhIHBhcnNlciBFUlJPUiBpcyBpbmVsaWdpYmxlLiIKKyAg KG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUKKyAgIChpZiAobWFya2Rvd24tdHMtYXQtdGFibGUt cCBuaWwgdCkgMSAtMSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLWJvZHktcm93LW5l YXItcG9zICgmb3B0aW9uYWwgcG9zIGFidXR0aW5nKQorICAiUmV0dXJuIHRoZSByb3cgbmVhciBQ T1MuCitSZXR1cm4gbmlsIGlmIG5vdCBhdCBhIHRhYmxlIG9yIHRoZXJlIGlzIG5vIHJvdy4KK090 aGVyd2lzZSByZXR1cm4gY29ucyAocm93IC4gaW4taGVhZGVyKSB3aGVyZSBpbi1oZWFkZXIgaXMg bmlsIG9yIHQuCitUaGlzIGlzIHVzZWZ1bCB0byBpbnNlcnQgYSBuZXcgcm93IGp1c3QgYmVsb3cg dGhlIGhlYWRlciBpbnN0ZWFkIG9mIGp1c3QKK2JlbG93IHRoZSBmaXJzdCByb3cuCitJZiBQT1Mg aXMgbmlsIHVzZSBgcG9pbnQnLgorSWYgQUJVVFRJTkcgaXMgbm9uLW5pbCwgdXNlICgxLSBQT1Mp IGlmIFBPUyBpcyBpbW1lZGlhdGVseSBhZnRlciBhIHBpcGUKK3N5bWJvbC4iCisgIChzZXRxIHBv cyAob3IgcG9zIChwb2ludCkpKQorICAobGV0IChpbi1oZWFkZXIpCisgICAgKHdoZW4tbGV0KiAo KGF0LXRhYmxlIChtYXJrZG93bi10cy1hdC10YWJsZS1wIHBvcyBhYnV0dGluZykpCisgICAgICAg ICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgICAodGFibGUgKGNk ciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICAgKGNlbGwgKG1hcmtkb3duLXRzLS10YWJsZS1u b2RlLWNlbGwgbmlsIHBvcyBhYnV0dGluZykpCisgICAgICAgICAgICAgICAgKGNlbGwtdHlwZSAo dHJlZXNpdC1ub2RlLXR5cGUgY2VsbCkpCisgICAgICAgICAgICAgICAgKHBhcmVudCAodHJlZXNp dC1ub2RlLXBhcmVudCBjZWxsKSkKKyAgICAgICAgICAgICAgICAocGFyZW50LXR5cGUgKHRyZWVz aXQtbm9kZS10eXBlIHBhcmVudCkpCisgICAgICAgICAgICAgICAgKGxpbmVhZ2UgKGxpc3QgY2Vs bC10eXBlIHBhcmVudC10eXBlKSkKKyAgICAgICAgICAgICAgICA7OyBGaW5kIHRoZSBmaXJzdCBy b3cgYWZ0ZXIgdGhlIGhlYWRlciBvciB0aGUgcm93IGF0IFBPUyBpcworICAgICAgICAgICAgICAg IDs7IG9uIGFuZCBpbiB0aGUgc2FtZSB0YWJsZS4KKyAgICAgICAgICAgICAgICAocm93IChjb25k ICgob3IgKG1lbWJlciAicGlwZV90YWJsZV9oZWFkZXIiIGxpbmVhZ2UpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtZW1iZXIgInBpcGVfdGFibGVfZGVsaW1pdGVyX3JvdyIgbGlu ZWFnZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgaW4taGVhZGVyIHQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQgY2VsbCAi XFxgcGlwZV90YWJsZV9yb3dcXCciKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXF1 YWwgY2VsbC10eXBlICJwaXBlX3RhYmxlX3JvdyIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2VsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXF1YWwgcGFyZW50LXR5cGUg InBpcGVfdGFibGVfcm93IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQpKSkp CisgICAgICAod2hlbiAodHJlZXNpdC1ub2RlLWVxIHRhYmxlICh0cmVlc2l0LXNlYXJjaC1mb3J3 YXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxlXFwnIiAnYmFja3dhcmQpKQor ICAgICAgICAoY29ucyByb3cgaW4taGVhZGVyKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10 YWJsZS1jb21wdXRlLW5vZGUtY29sdW1uIChyb3cgbm9kZSkKKyAgIkNvbXB1dGUgTk9ERSdzIGNv bHVtbiBpbiBST1cuCitSZXR1cm4gbmlsIGlmIE5PREUgaXMgbm90IGluIFJPVyAodGhpcyBzaG91 bGQgbm90IGhhcHBlbikuCitOT0RFIG11c3QgYmUgYSBub2RlIGluIFJPVy4KK1JPVyBtdXN0IGJl IGEgcGlwZV90YWJsZV9oZWFkZXIsIHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvdywgb3IKK3BpcGVf dGFibGVfcm93LiIKKyAgKGNhdGNoIDpjb2x1bW4KKyAgICAobGV0ICgoY291bnQgMCkpCisgICAg ICAoZG9saXN0IChjZWxsICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpCisgICAg ICAgICh3aGVuICh0cmVlc2l0LW5vZGUtZXEgbm9kZSBjZWxsKQorICAgICAgICAgICh0aHJvdyA6 Y29sdW1uIGNvdW50KSkKKyAgICAgICAgKHNldHEgY291bnQgKDErIGNvdW50KSkpKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy10YWJsZS0tZ290by1jb2x1bW4gKGNvbHVtbiAmb3B0aW9uYWwgbm8t ZXJyb3IpCisgICJNb3ZlIHBvaW50IG9uIHRoZSBjdXJyZW50IHJvdyB0byBDT0xVTU4uCitDT0xV TU4gaXMgYSAwLWJhc2VkIGluZGV4LgorUmV0dXJuIG5vbi1uaWwgaWYgc3VjY2Vzc2Z1bC4KK0lm IE5PLUVSUk9SIGlzIG5vbi1uaWwsIHJldHVybiBuaWwgaWYgdGhlIGN1cnJlbnQgcm93IGRvZXMg bm90IGV4dGVuZCB0bworQ09MVU1OLCBvdGhlcndpc2Ugc2lnbmFsIGFuIGVycm9yLgorU2lnbmFs IGFuIGVycm9yIGlmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLiIKKyAgKGlmLWxldCogKChjZWxs IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsIG5pbCBuaWwgdCkpCisgICAgICAgICAgICAo cm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgY2VsbCkpCisgICAgICAgICAgICAoY29s cyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHJvdyAnbmFtZWQpKSkKKyAgICAgIChpZi1sZXQqICgo dGFyZ2V0LWNlbGwgKG50aCBjb2x1bW4gY29scykpKQorICAgICAgICAgIChnb3RvLWNoYXIgKHRy ZWVzaXQtbm9kZS1zdGFydCB0YXJnZXQtY2VsbCkpCisgICAgICAgICh1bmxlc3Mgbm8tZXJyb3IK KyAgICAgICAgICAoZXJyb3IgIkNvbHVtbiAlUyBub3QgZm91bmQiIGNvbHVtbikpKQorICAgIChl cnJvciAiTm90IGF0IGEgdGFibGUiKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtYWxp Z25lcnMgKHRhYmxlKQorICAiRXh0cmFjdCB0aGUgaGVhZGVyIGxpbmUgYWxpZ25lcnMgZnJvbSBu b2RlIFRBQkxFLgorUmV0dXJuIGEgbGlzdCBvZiBsaXN0cyBvZiB0aGUgZm9ybToKKyAgKDpiZWcg eHh4IDplbmQgeHh4IDphbGlnbiBsZWZ0KQorOmFsaWduIGlzIG9uZSBvZiBgbGVmdCcgYGNlbnRl cicgYHJpZ2h0JyBgdW5zcGVjaWZpZWQnLiIKKyAgKGxldCogKChkZWxpbWl0ZXItcm93ICh0cmVl c2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93XFwnIikpCisg ICAgICAgICAoYWxpZ25lcnMKKyAgICAgICAgICAobGV0IChyZXMpCisgICAgICAgICAgICAoZG9s aXN0IChlbHQgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBkZWxpbWl0ZXItcm93ICduYW1lZCkpCisg ICAgICAgICAgICAgIChsZXQgKChhbGlnbi1iZWcgKHRyZWVzaXQtbm9kZS10eXBlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtY2hpbGQgZWx0IDAgJ25hbWUp KSkKKyAgICAgICAgICAgICAgICAgICAgKGFsaWduLWVuZCAodHJlZXNpdC1ub2RlLXR5cGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZCBlbHQgLTEg J25hbWUpKSkpCisgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QKKyAgICAgICAgICAgICAgICAg ICAgICAgOmJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IGVsdCkKKyAgICAgICAgICAgICAgICAgICAg ICAgOmVuZCAodHJlZXNpdC1ub2RlLWVuZCBlbHQpCisgICAgICAgICAgICAgICAgICAgICAgIDph bGlnbgorICAgICAgICAgICAgICAgICAgICAgICAoY29uZCAoKGFuZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChlcXVhbCBhbGlnbi1iZWcgInBpcGVfdGFibGVfYWxpZ25fbGVmdCIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsIGFsaWduLWVuZCAicGlwZV90 YWJsZV9hbGlnbl9sZWZ0IikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGVmdCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZXF1YWwgYWxpZ24tYmVnICJwaXBlX3RhYmxlX2FsaWduX2xlZnQiKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCBhbGlnbi1lbmQgInBpcGVfdGFibGVf YWxpZ25fcmlnaHQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZW50ZXIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGVxdWFsIGFsaWduLWJlZyAicGlwZV90YWJsZV9hbGlnbl9yaWdodCIpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsIGFsaWduLWVuZCAicGlwZV90YWJsZV9h bGlnbl9yaWdodCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodCAndW5zcGVjaWZpZWQpKSkKKyAgICAgICAgICAg ICAgICAgICAgICByZXMpKSkKKyAgICAgICAgICAgIChucmV2ZXJzZSByZXMpKSkpCisgICAgYWxp Z25lcnMpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lciAod2lkdGgg YWxpZ24pCisgICJNYWtlIGEgTWFya2Rvd24gY29sdW1uIGFsaWduZXIuCitXSURUSCBpcyB0aGUg Y29sdW1uIHdpZHRoLgorQUxJR04gaXMgb25lIG9mIGBsZWZ0JyBgY2VudGVyJyBgcmlnaHQnIGB1 bnNwZWNpZmllZCcuIgorICAocGNhc2UgYWxpZ24KKyAgICAoJ2xlZnQKKyAgICAgKGNvbmNhdCAi OiIgKG1ha2Utc3RyaW5nICgxLSB3aWR0aCkgPy0pKSkKKyAgICAoJ2NlbnRlcgorICAgICAoY29u Y2F0ICI6IiAobWFrZS1zdHJpbmcgKC0gd2lkdGggMikgPy0pICI6IikpCisgICAgKCdyaWdodAor ICAgICAoY29uY2F0IChtYWtlLXN0cmluZyAoMS0gd2lkdGgpID8tKSAiOiIpKQorICAgIChfCisg ICAgIChjb25jYXQgKG1ha2Utc3RyaW5nIHdpZHRoID8tKSkpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLS10YWJsZS1hbGlnbi1jZWxsICh0ZXh0IHdpZHRoIGFsaWduKQorICAiUmV0dXJuIFRFWFQg cGFkZGVkIHRvIFdJRFRIIGFsaWduZWQgdXNpbmcgQUxJR04uCitUcnVuY2F0ZSBURVhUIHdpZGVy IHRoYW4gV0lEVEguICBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8KK2Vuc3Vy ZSB0ZXh0IHdpbGwgZml0LgorQUxJR04gaXMgb25lIG9mIGBsZWZ0JyBgY2VudGVyJyBgcmlnaHQn IGB1bnNwZWNpZmllZCcuIgorICAobGV0KiAoKHN0cmxlbiAobGVuZ3RoIHRleHQpKQorICAgICAg ICAgKHN0cmxlbjAgKG1pbiB3aWR0aCBzdHJsZW4pKQorICAgICAgICAgKHRleHQwIChzdWJzdHJp bmcgdGV4dCAwIHN0cmxlbjApKQorICAgICAgICAgKHBhZCAoLSB3aWR0aCBzdHJsZW4wKSkpCisg ICAgKHBjYXNlIGFsaWduCisgICAgICAoJ2NlbnRlcgorICAgICAgIChsZXQqICgoaGFsZi1wYWQg KG1ha2Utc3RyaW5nIChmbG9vciAoLyBwYWQgMikpID9ccykpCisgICAgICAgICAgICAgIChzIChj b25jYXQKKyAgICAgICAgICAgICAgICAgIGhhbGYtcGFkCisgICAgICAgICAgICAgICAgICB0ZXh0 MAorICAgICAgICAgICAgICAgICAgaGFsZi1wYWQpKSkKKyAgICAgICAgIChzdHJpbmctcGFkCisg ICAgICAgICAgKHN1YnN0cmluZyBzIDAgKG1pbiAobGVuZ3RoIHMpIHdpZHRoKSkKKyAgICAgICAg ICB3aWR0aCkpKQorICAgICAgKCdyaWdodAorICAgICAgIChzdHJpbmctcGFkIHRleHQgd2lkdGgg bmlsICdzdGFydCkpCisgICAgICAoXworICAgICAgIChzdHJpbmctcGFkIHRleHQgd2lkdGgpKSkp KQorCis7Ozs7IENvbW1hbmRzOgorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXRh YmxlICgmb3B0aW9uYWwgbnJvd3MgbmNvbHMgaGVhZGluZ3MgYm9keSkKKyAgIkluc2VydCBhIE1h cmtkb3duIHBpcGUgdGFibGUuCitOUk9XUyBpcyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIG5l dyB0YWJsZSBhbmQgZGVmYXVsdHMgdG8gMy4KKworTkNPTFMgaXMgdGhlIG51bWJlciBvZiBjb2x1 bW5zIGFuZCBkZWZhdWx0cyB0byAzLgorCitIRUFESU5HUyBpcyBhIGxpc3Qgb2YgaGVhZGluZ3Mg YW5kIGRlZmF1bHRzIHRvIGxlZnQtYWxpZ25lZCBzeW50aGVzaXplZAorY29sdW1uIG5hbWVzLiAg SWYgTkNPTFMgaXMgbmlsLCB1c2UgSEVBRElOR1MgbGVuZ3RoLiAgSWYgYm90aCBOQ09MUyBhbmQK K0hFQURJTkdTIGFyZSBub24tbmlsLCB1c2UgdXAgdG8gTkNPTFMgaGVhZGluZ3MsIHN5bnRoZXNp emluZyB0aGUKK3JlbWFpbmRlci4KKworRWFjaCBoZWFkaW5nIGluIHRoZSBsaXN0IGNhbiBiZSBh IHN0cmluZyBjb2x1bW4gbmFtZSBvciBhIGNvbnMgb2YgdGhlCitmb3JtIChuYW1lIC4gYWxpZ25t ZW50KSB3aGVyZSBhbGlnbm1lbnQgaXMgb25lIG9mIHRoZSBzeW1ib2xzIGBsZWZ0JywKK2ByaWdo dCcsIG9yIGBjZW50ZXInLiAgSWYgYSBzdHJpbmcsIGRlZmF1bHQgYWxpZ25tZW50IGlzIHVuc3Bl Y2lmaWVkLgorCitJZiBCT0RZIGlzIG5vbi1uaWwsIGl0IGlzIGEgbGlzdCBvZiBOUk9XUyByb3dz IHdoZXJlIGVhY2ggcm93IGlzIGEgbGlzdAorb2YgTkNPTFMgYm9keSBjZWxscy4KKworRm9yIGNv bnZlbmllbmNlIGFuZCBhZXN0aGV0aWNzLCBwYWQgZWFjaCBib2R5IGNlbGwgdG8gdGhlIHdpZHRo IG9mIGl0cworY29sdW1uJ3MgaGVhZGVyLCBhbmQgYWNjb21tb2RhdGUgYWxpZ25tZW50IGluZGlj YXRvcnMuICBJZiBhIEJPRFkgY2VsbAoraXMgbG9uZ2VyIHRoYW4gaXRzIGNvbHVtbiBoZWFkZXIs IGluc2VydCBpdCB1bmNoYW5nZWQuCisKK05vdGU6IEEgYmxhbmsgbGluZSBpcyBuZWVkZWQgYmVm b3JlIHRoZSB0YWJsZSBmb3IgaXQgdG8gcHJvcGVybHkgcmVuZGVyLgorSWYgdGhlIGxpbmUgcHJl Y2VkaW5nIGBwb2ludCcgaXMgbm90IGJsYW5rLCBpbnNlcnQgb25lLgorCitOb3RlOiBEdWUgdG8g YW4gaXNzdWUgd2l0aCB0aGUgdHJlZS1zaXR0ZXIgTWFya2Rvd24gZ3JhbW1hciwgYSByb3cgb2YK K2VtcHR5IGNlbGxzIGNhdXNlcyBhIHBhcnNpbmcgZXJyb3IuICBUbyBhdm9pZCB0aGlzLCBhbiBl bXB0eSByb3cgd2lsbAorY29udGFpbiBhIHNpbmdsZSBwZXJpb2QgaW4gaXRzIGZpcnN0IGNlbGwu IgorICAoaW50ZXJhY3RpdmUpCisgIChzZXRxIG5yb3dzIChvciBucm93cyAzKSkKKyAgKHNldHEg bmNvbHMgKG9yIG5jb2xzIChhbmQgaGVhZGluZ3MgKGxlbmd0aCBoZWFkaW5ncykpIDMpKQorICAo c2V0cSBoZWFkaW5ncworICAgICAgICAobGV0IChyZXMpCisgICAgICAgICAgKGRvdGltZXMgKHgg bmNvbHMpCisgICAgICAgICAgICAocHVzaCAob3IgKG50aCB4IGhlYWRpbmdzKQorICAgICAgICAg ICAgICAgICAgICAgIChmb3JtYXQgIkNvbHVtbiAlZCIgKDErIHgpKSkKKyAgICAgICAgICAgICAg ICAgIHJlcykpCisgICAgICAgICAgKG5yZXZlcnNlIHJlcykpKQorICAobGV0ICgoaGVhZGluZy13 aWR0aHMKKyAgICAgICAgIChsZXQgKHJlcykKKyAgICAgICAgICAgKGRvbGlzdCAoZWx0IGhlYWRp bmdzKQorICAgICAgICAgICAgIChsZXQgKChzdHIgKGlmIChjb25zcCBlbHQpIChjYXIgZWx0KSBl bHQpKSkKKyAgICAgICAgICAgICAgIChwdXNoIChtYXggbWFya2Rvd24tdHMtdGFibGUtZGVmYXVs dC1jb2x1bW4td2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCBzdHIpKQor ICAgICAgICAgICAgICAgICAgICAgcmVzKSkpCisgICAgICAgICAgIChucmV2ZXJzZSByZXMpKSkp CisgICAgOzsgSWYgcG9pbnQgaXMgbm90IGF0IGJvbCwgaW5zZXJ0IGEgbmV3bGluZS4KKyAgICAo dW5sZXNzIChlcSAocG9pbnQpIChwb3MtYm9sKSkKKyAgICAgIChpbnNlcnQgIlxuIikpCisgICAg OzsgSW5zZXJ0IGFuIGVtcHR5IGxpbmUgaWYgbmVlZGVkLgorICAgICh1bmxlc3MgKHNhdmUtZXhj dXJzaW9uCisgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgLTEpCisgICAgICAgICAgICAgIChl cSAocG9zLWJvbCkgKHBvcy1lb2wpKSkKKyAgICAgIChpbnNlcnQgIlxuIikpCisgICAgOzsgSW5z ZXJ0IHBhZGRlZCBoZWFkaW5nIHRleHQuCisgICAgKGluc2VydCAifCIpCisgICAgKGRvdGltZXMg KHggbmNvbHMpCisgICAgICAobGV0KiAoKGVsdCAobnRoIHggaGVhZGluZ3MpKQorICAgICAgICAg ICAgIChzdHIgKGlmIChjb25zcCBlbHQpIChjYXIgZWx0KSBlbHQpKQorICAgICAgICAgICAgICh3 aWR0aCAobWF4IDMgKG50aCB4IGhlYWRpbmctd2lkdGhzKSkpCisgICAgICAgICAgICAgKHBhZC13 aWR0aCAoLSB3aWR0aCAobGVuZ3RoIHN0cikpKSkKKyAgICAgICAgKGluc2VydCBzdHIgKG1ha2Ut c3RyaW5nIHBhZC13aWR0aCA/XHMpICJ8IikpKQorICAgIChpbnNlcnQgIlxuIikKKyAgICA7OyBJ bnNlcnQgcGFkZGVkIGhlYWRpbmcgYWxpZ25lcnMuCisgICAgKGluc2VydCAifCIpCisgICAgKGRv dGltZXMgKHggbmNvbHMpCisgICAgICAobGV0KiAoKGVsdCAobnRoIHggaGVhZGluZ3MpKQorICAg ICAgICAgICAgIChhbGlnbiAoaWYgKGNvbnNwIGVsdCkgKGNkciBlbHQpICd1bnNwZWNpZmllZCkp CisgICAgICAgICAgICAgKHdpZHRoIChtYXggMyAobnRoIHggaGVhZGluZy13aWR0aHMpKSkpCisg ICAgICAgIChpbnNlcnQgKG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIgd2lkdGggYWxp Z24pKSkKKyAgICAgIChpbnNlcnQgInwiKSkKKyAgICAoaW5zZXJ0ICJcbiIpCisgICAgOzsgSW5z ZXJ0IEJPRFkgY2VsbHMgb3IgZW1wdHkgY2VsbHMuCisgICAgKGRvdGltZXMgKHkgbnJvd3MpCisg ICAgICAoaW5zZXJ0ICJ8IikKKyAgICAgIChsZXQgKChyb3cgKG50aCB5IGJvZHkpKSkKKyAgICAg ICAgKGRvdGltZXMgKHggbmNvbHMpCisgICAgICAgICAgOzsgVE9ETzogUmVtb3ZlIHRoZSBwbGFj ZWhvbGRlciBjaGFyYWN0ZXIgaWYgdGhlIHRyZWUtc2l0dGVyCisgICAgICAgICAgOzsgZ3JhbW1h ciBpcyByZXBhaXJlZC4KKyAgICAgICAgICAobGV0KiAoKHN0ciAob3IgKG50aCB4IHJvdykgKGFu ZCAoZXEgeCAwKSAiLiIpICIiKSkKKyAgICAgICAgICAgICAgICAgKHN0cmxlbiAobGVuZ3RoIHN0 cikpCisgICAgICAgICAgICAgICAgICh3aWR0aCAobnRoIHggaGVhZGluZy13aWR0aHMpKQorICAg ICAgICAgICAgICAgICAocGFkLXdpZHRoIChtYXggMCAoLSB3aWR0aCBzdHJsZW4pKSkpCisgICAg ICAgICAgICAoaW5zZXJ0IHN0cgorICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgcGFk LXdpZHRoID9ccykKKyAgICAgICAgICAgICAgICAgICAgInwiKSkpCisgICAgICAgIChpbnNlcnQg IlxuIikpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1kZWxldGUtdGFibGUgKCkKKyAg IlJlbW92ZSB0aGUgTWFya2Rvd24gdGFibGUgYXQgcG9pbnQuCitJZiBwb2ludCBpcyBub3QgYXQg YSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLS1i YXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJsZS1kZWxldGUtdGFibGUpCisgICh3aGVu LWxldCogKChhdC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAg ICAgICAgICh0YWJsZSAoY2RyIGF0LXRhYmxlKSkpCisgICAgOzsgVE9ETzogUmVtb3ZlIGFmdGVy IGJ1ZyMyMzkwMyBVbmRvIGFmdGVyIGtiIGRpZmZlcnMgZnJvbSBhZnRlciBNLXgKKyAgICAocHVz aCAocG9pbnQpIGJ1ZmZlci11bmRvLWxpc3QpCisgICAgKGRlbGV0ZS1yZWdpb24gKHRyZWVzaXQt bm9kZS1zdGFydCB0YWJsZSkgKHRyZWVzaXQtbm9kZS1lbmQgdGFibGUpKSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy10YWJsZS1wcmV2aW91cy1yb3cgKCkKKyAgIk1vdmUgdG8gdGhlIHByZXZpb3Vz IHJvdyBpbiB0aGUgdGFibGUuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChp bnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93IC0xKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93ICgmb3B0aW9uYWwgbikKKyAgIk1vdmUgdG8gdGhl IG5leHQgcm93IGluIHRoZSB0YWJsZS4KK0lmIE4gaXMgbmVnYXRpdmUsIG1vdmUgdG8gdGhlIHBy ZXZpb3VzIHJvdy4KK0lmIHBvaW50IGlzIG9uIHRoZSBsYXN0IHJvdyBvZiB0aGUgdGFibGUsIGlu c2VydCBhIG5ldyByb3cgYmVsb3cgYW5kCittb3ZlIGludG8gaXQuICBXaXRoIGEgcHJlZml4IGFy Z3VtZW50LCBjbG9uZSB0aGUgZmluYWwgcm93IGludG8gdGhlIG5ldworb25lLgorSWYgbm90IGlu IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0t YmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtbmV4dC1yb3cpCisgIChsZXQgKChi YWNrd2FyZHMgKGFuZCBuICg8IG4gMCkpKSkKKyAgICA7OyBEb24ndCB1c2UgYG1hcmtkb3duLXRz LS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcycgYmVjYXVzZSB3ZSB3YW50CisgICAgOzsgdG8gb3Bl cmF0ZSBpbiB0aGUgaGVhZGVyLgorICAgICh3aGVuLWxldCogKChhdC10YWJsZSAobWFya2Rvd24t dHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxl KSkKKyAgICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAg ICAgKHJvdyAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93IG5pbCBwb3MpKSkKKyAgICAgIDs7 IElmIG5vIG5leHQgb3IgcHJldiBzaWJsaW5nLCB3ZSdyZSBvbiB0aGUgbGFzdC9maXJzdCByb3cu CisgICAgICAobGV0ICgoY3VycmVudC1jb2x1bW4gKGN1cnJlbnQtY29sdW1uKSkKKyAgICAgICAg ICAgIChuZXh0LXJvdyAoaWYgYmFja3dhcmRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICh0 cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5nIHJvdyAnbmFtZWQpCisgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyByb3cgJ25hbWVkKSkpKQorICAgICAgICAo aWYgbmV4dC1yb3cKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBu ZXh0LXJvdykpCisgICAgICAgICAgKHVubGVzcyBiYWNrd2FyZHMKKyAgICAgICAgICAgIChtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtcm93LWJlbG93IGN1cnJlbnQtcHJlZml4LWFyZykpKQorICAg ICAgICAobW92ZS10by1jb2x1bW4gY3VycmVudC1jb2x1bW4pKSkpKQorCisoZGVmdW4gbWFya2Rv d24tdHMtdGFibGUtcHJldmlvdXMtY2VsbCAoKQorICAiTW92ZSB0byB0aGUgcHJldmlvdXMgY2Vs bCBpbiB0aGUgdGFibGUuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLW5leHQtY2VsbCAtMSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy10YWJsZS1uZXh0LWNlbGwgKCZvcHRpb25hbCBuKQorICAiTW92ZSB0byB0aGUg bmV4dCBjZWxsIGluIHRoZSB0YWJsZS4KK0lmIE4gaXMgbmVnYXRpdmUsIG1vdmUgdG8gdGhlIHBy ZXZpb3VzIGNlbGwuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFj dGl2ZSkKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJs ZS1uZXh0LWNlbGwpCisgIChsZXQgKChiYWNrd2FyZHMgKGFuZCBuICg8IG4gMCkpKSkKKyAgICAo d2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAg ICAgICAgICAgICAgIChwb3MgKGNhciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICAgKHRhYmxl IChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQg cG9zICdtYXJrZG93biAnbmFtZWQpKQorICAgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10 cy0tdGFibGUtbm9kZS1jZWxsIG5vZGUpKQorICAgICAgICAgICAgICAgIChjZWxsLXR5cGUgKHRy ZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAgICAgICAgICAgICAgIChyb3cgKG1hcmtkb3duLXRz LS10YWJsZS1ub2RlLXJvdyBjZWxsKSkKKyAgICAgICAgICAgICAgICAocm93LXR5cGUgKHRyZWVz aXQtbm9kZS10eXBlIHJvdykpCisgICAgICAgICAgICAgICAgKG5leHQtY2VsbAorICAgICAgICAg ICAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgOzsgSWYgaW4gYSBwaXBlX3RhYmxlX2Rl bGltaXRlcl9yb3cgYW5kIG5vdCB0aGUgZmlyc3QKKyAgICAgICAgICAgICAgICAgIDs7IG9yIGZp bmFsIGNlbGwgaW4gdGhlIHJvdywgc3RheSB3aXRoaW4gdGhlIHJvdworICAgICAgICAgICAgICAg ICAgOzsgb3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBjb25kaXRpb24gc2hvdWxkIG1hdGNoLgorICAg ICAgICAgICAgICAgICAgKChhbmQgKGVxdWFsIHJvdy10eXBlICJwaXBlX3RhYmxlX2RlbGltaXRl cl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGJhY2t3YXJkcworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5nIGNlbGwgJ25hbWVk KQorICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBj ZWxsICduYW1lZCkpKQorICAgICAgICAgICAgICAgICAgIChpZiBiYWNrd2FyZHMKKyAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1wcmV2LXNpYmxpbmcgY2VsbCAnbmFtZWQpCisg ICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBjZWxsICduYW1l ZCkpKQorICAgICAgICAgICAgICAgICAgOzsgSWYgb24gdGhlIGZpcnN0IHBpcGVfdGFibGVfcm93 J3MgZmlyc3QgY2VsbCBtb3ZpbmcKKyAgICAgICAgICAgICAgICAgIDs7IGJhY2t3YXJkcywgbW92 ZSBpbnRvIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgICAgOzsgcGlwZV90YWJsZV9kZWxpbWl0 ZXJfY2VsbC4KKyAgICAgICAgICAgICAgICAgICgoYW5kIChlcXVhbCBjZWxsLXR5cGUgInBpcGVf dGFibGVfY2VsbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9k ZS10eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtcHJl di1zaWJsaW5nIHJvdyAnbmFtZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJw aXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAo dHJlZXNpdC1ub2RlLXByZXYtc2libGluZyBjZWxsICduYW1lZCkpCisgICAgICAgICAgICAgICAg ICAgICAgICBiYWNrd2FyZHMpCisgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZv cndhcmQKKyAgICAgICAgICAgICAgICAgICAgY2VsbAorICAgICAgICAgICAgICAgICAgICAiXFxg cGlwZV90YWJsZV9kZWxpbWl0ZXJfY2VsbFxcJyIgYmFja3dhcmRzKSkKKyAgICAgICAgICAgICAg ICAgIDs7IElmIG9uIHRoZSBmaXJzdCBwaXBlX3RhYmxlX2hlYWRlcidzIGZpbmFsIGNlbGwKKyAg ICAgICAgICAgICAgICAgIDs7IG1vdmluZyBmb3J3YXJkcywgbW92ZSBpbnRvIHRoZSBmaXJzdAor ICAgICAgICAgICAgICAgICAgOzsgcGlwZV90YWJsZV9kZWxpbWl0ZXJfY2VsbC4KKyAgICAgICAg ICAgICAgICAgICgoYW5kIChlcXVhbCBjZWxsLXR5cGUgInBpcGVfdGFibGVfY2VsbCIpCisgICAg ICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIHJvdyAnbmFt ZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwaXBlX3RhYmxlX2RlbGltaXRl cl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAodHJlZXNpdC1ub2RlLW5leHQt c2libGluZyBjZWxsICduYW1lZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAobm90IGJhY2t3 YXJkcykpCisgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQKKyAgICAg ICAgICAgICAgICAgICAgY2VsbAorICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9k ZWxpbWl0ZXJfY2VsbFxcJyIgYmFja3dhcmRzKSkKKyAgICAgICAgICAgICAgICAgICh0CisgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQKKyAgICAgICAgICAgICAgICAg ICAgY2VsbAorICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9jZWxsXFwnIiBiYWNr d2FyZHMpKSkpKQorICAgICAgOzsgS2VlcCBwb2ludCB3aXRoaW4gdGhlIGN1cnJlbnQgdGFibGUu CisgICAgICAod2hlbiAodHJlZXNpdC1ub2RlLWVxIHRhYmxlICh0cmVlc2l0LXNlYXJjaC1mb3J3 YXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LWNlbGwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxlXFwnIiAnYmFja3dh cmQpKQorICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbmV4dC1jZWxsKSkp CisgICAgICAod2hlbiAob3IgKGVxIG1hcmtkb3duLXRzLXRhYmxlLWF1dG8tYWxpZ24gdCkKKyAg ICAgICAgICAgICAgICAobWVtcSAnY2VsbC1uYXZpZ2F0aW9uIG1hcmtkb3duLXRzLXRhYmxlLWF1 dG8tYWxpZ24pKQorICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tdGFibGUpKSkpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdy1iZWxvdyAoJm9wdGlvbmFsIGNs b25lKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGJlbG93IHBvaW50LgorSWYgcG9pbnQgaXMgaW4g dGhlIGhlYWRlciwgaW5zZXJ0IGJlbG93IHRoZSBmaXJzdCByb3cgb2YgdGhlIHRhYmxlLgorSWYg Q0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xvbmUgdGhlIGN1 cnJlbnQgcm93LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAo aW50ZXJhY3RpdmUgIlAiKQorICAoc2V0cSBjbG9uZSAob3IgY2xvbmUgY3VycmVudC1wcmVmaXgt YXJnKSkKKyAgICAobWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdyAnYmVsb3cgY2xvbmUpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdy1hYm92ZSAoJm9wdGlvbmFsIGNs b25lKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGFib3ZlIHBvaW50LgorSWYgcG9pbnQgaXMgaW4g dGhlIGhlYWRlciwgaW5zZXJ0IGFib3ZlIHRoZSBmaXJzdCByb3cgb2YgdGhlIHRhYmxlLgorSWYg Q0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xvbmUgdGhlIGN1 cnJlbnQgcm93LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAo aW50ZXJhY3RpdmUgIlAiKQorICAoc2V0cSBjbG9uZSAob3IgY2xvbmUgY3VycmVudC1wcmVmaXgt YXJnKSkKKyAgICAobWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdyAnYWJvdmUgY2xvbmUpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWJlbG93ICgpCisgICJJbnNlcnQg YSB0YWJsZSByb3cgYmVsb3cgcG9pbnQuCitJZiBwb2ludCBpcyBpbiB0aGUgaGVhZGVyLCBpbnNl cnQgYmVsb3cgdGhlIGZpcnN0IHJvdyBvZiB0aGUgdGFibGUuCitJZiBwb2ludCBpcyBub3QgYXQg YSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRh YmxlLWluc2VydC1yb3ctYmVsb3cgJ2Nsb25lKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxl LWNsb25lLXJvdy1hYm92ZSAoKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGFib3ZlIHBvaW50Lgor SWYgcG9pbnQgaXMgaW4gdGhlIGhlYWRlciwgaW5zZXJ0IGFib3ZlIHRoZSBmaXJzdCByb3cgb2Yg dGhlIHRhYmxlLgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAo aW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtcm93LWFib3ZlICdjbG9u ZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtcm93ICgmb3B0aW9uYWwgYWJv dmUgY2xvbmUpCisgICJJbnNlcnQgYSB0YWJsZSByb3cgYmVsb3cgcG9pbnQuCitJZiBwb2ludCBp cyBpbiB0aGUgaGVhZGVyLCBpbnNlcnQgYmVsb3cgdGhlIGZpcnN0IHJvdyBvZiB0aGUgdGFibGUu CitJZiBBQk9WRSBpcyBub24tbmlsIGFuZCBpcyBub3QgYGJlbG93Jywgb3Igd2l0aCBhIHByZWZp eCBhcmd1bWVudCwKK2luc2VydCB0aGUgcm93IGFib3ZlIHBvaW50LgorSWYgQ0xPTkUgaXMgbm9u LW5pbCwgY2xvbmUgdGhlIGN1cnJlbnQgcm93LCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5CitjZWxs cy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0 aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10 YWJsZS1pbnNlcnQtcm93KQorICAoc2V0cSBhYm92ZSAoY29uZCAoKGVxIGFib3ZlICdiZWxvdykg bmlsKQorICAgICAgICAgICAgICAgICAgICAoYWJvdmUgYWJvdmUpCisgICAgICAgICAgICAgICAg ICAgIChjdXJyZW50LXByZWZpeC1hcmcgdCkpKQorICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1h cmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAocG9zIChjYXIgYXQt dGFibGUpKQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAg ICAgIChkZWxpbWl0ZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxc YHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgICAgICAobmNvbHMgKHRy ZWVzaXQtbm9kZS1jaGlsZC1jb3VudCBkZWxpbWl0ZXItcm93ICduYW1lZCkpCisgICAgICAgICAg ICAgIChoZWFkaW5nLXdpZHRocworICAgICAgICAgICAgICAgKGxldCAocmVzKQorICAgICAgICAg ICAgICAgICAoZG9saXN0IChlbHQgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBkZWxpbWl0ZXItcm93 ICduYW1lZCkpCisgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxlbmd0aCAodHJlZXNpdC1ub2Rl LXRleHQgZWx0KSkgcmVzKSkKKyAgICAgICAgICAgICAgICAgKG5yZXZlcnNlIHJlcykpKSkKKyAg ICAobGV0KiAoKG5lYXIgKG1hcmtkb3duLXRzLS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcyBwb3Mp KQorICAgICAgICAgICAocm93IChjYXIgbmVhcikpCisgICAgICAgICAgIChjdXJyZW50LWNvbHVt biAoY3VycmVudC1jb2x1bW4pKSkKKyAgICAgIDs7IElmIHJvdyBpcyBuaWwsIHRoZXJlIGFyZSB6 ZXJvIHJvd3Mgc28gYWRkIG9uZSBiZWxvdyB0aGUKKyAgICAgIDs7IGRlbGltaXRlci1yb3cuCisg ICAgICAodW5sZXNzIHJvdworICAgICAgICAoc2V0cSBjbG9uZSBuaWwpCisgICAgICAgIChzZXRx IHJvdyBkZWxpbWl0ZXItcm93KQorICAgICAgICAoc2V0cSBhYm92ZSBuaWwpKQorICAgICAgKHNh dmUtZXhjdXJzaW9uCisgICAgICAgIChjb25kIChhYm92ZQorICAgICAgICAgICAgICAgKGdvdG8t Y2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IHJvdykpKQorICAgICAgICAgICAgICAodAorICAgICAg ICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCByb3cpKQorICAgICAgICAgICAg ICAgKGluc2VydCAiXG4iKSkpCisgICAgICAgIChjb25kIChjbG9uZQorICAgICAgICAgICAgICAg OzsgVGhlIGNsb25lIHN0cmF0ZWd5IGlzIFdZU0lXWUcuICBKdXN0IGNvcHkgdGhlIHRleHQKKyAg ICAgICAgICAgICAgIDs7IGFuZCBkb24ndCBmdXNzIHdpdGggY2VsbCBjb250ZW50IGFuZCBwaXBl IHN5bWJvbHMuCisgICAgICAgICAgICAgICA7OyBUaGUgZ3JhbW1hciBpbmNsdWRlcyB0aGUgZmlu YWwgbmV3bGluZSAoYW5kCisgICAgICAgICAgICAgICA7OyBzb21ldGltZXMgbm90KS4KKyAgICAg ICAgICAgICAgIChpbnNlcnQgKHN0cmluZy10cmltLXJpZ2h0CisgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLXRleHQgcm93ICduby1wcm9wZXJ0eSkgIlxuIikpKQorICAgICAg ICAgICAgICAodAorICAgICAgICAgICAgICAgKGluc2VydCAifCIpCisgICAgICAgICAgICAgICAo ZG90aW1lcyAoeCBuY29scykKKyAgICAgICAgICAgICAgICAgKGxldCAoKHBhZC13aWR0aCAobnRo IHggaGVhZGluZy13aWR0aHMpKSkKKyAgICAgICAgICAgICAgICAgICA7OyBUT0RPOiBSZW1vdmUg dGhlIHBsYWNlaG9sZGVyIGNoYXJhY3RlciBpZiB0aGUKKyAgICAgICAgICAgICAgICAgICA7OyB0 cmVlLXNpdHRlciBncmFtbWFyIGlzIHJlcGFpcmVkLgorICAgICAgICAgICAgICAgICAgIChpbnNl cnQgKGlmIChlcSB4IDApICIuIiAiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtl LXN0cmluZyAoLSBwYWQtd2lkdGggKGlmIChlcSB4IDApIDEgMCkpID9ccykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICJ8IikpKSkpCisgICAgICAgICh3aGVuIGFib3ZlCisgICAgICAgICAg KGluc2VydCAiXG4iKSkpCisgICAgICAoY29uZCAoYWJvdmUKKyAgICAgICAgICAgICAod2hlbiAo PiBjdXJyZW50LWNvbHVtbiAwKQorICAgICAgICAgICAgICAgKHdpdGgtc3VwcHJlc3NlZC13YXJu aW5ncyAoKGludGVyYWN0aXZlLW9ubHkgcHJldmlvdXMtbGluZSkpCisgICAgICAgICAgICAgICAg IChwcmV2aW91cy1saW5lKSkpKQorICAgICAgICAgICAgKHQgKHdpdGgtc3VwcHJlc3NlZC13YXJu aW5ncyAoKGludGVyYWN0aXZlLW9ubHkgbmV4dC1saW5lKSkKKyAgICAgICAgICAgICAgICAgKG5l eHQtbGluZSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1yb3cgKCkK KyAgIkRlbGV0ZSB0aGUgdGFibGUgcm93IGF0IHBvaW50LgorSWYgcG9pbnQgaXMgb24gdGhlIGhl YWRlciBvciBkZWxpbWl0ZXIgcm93LCBkbyBub3RoaW5nLgorSWYgcG9pbnQgaXMgbm90IGF0IGEg dGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFy Zi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLXJvdykKKyAgKHdoZW4tbGV0 KiAoKG5lYXIgKG1hcmtkb3duLXRzLS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcyBuaWwgdCkpCisg ICAgICAgICAgICAgIDs7IEJhaWwgaWYgcG9pbnQgaXMgb24gdGhlIGhlYWRlciBvciBkZWxpbWl0 ZXIgcm93IOKAlCBkbworICAgICAgICAgICAgICA7OyBub3Qgc2lsZW50bHkgZGVsZXRlIGEgYm9k eSByb3cgdGhlIHVzZXIgZGlkIG5vdCBzZWxlY3QuCisgICAgICAgICAgICAgICgobm90IChjZHIg bmVhcikpKQorICAgICAgICAgICAgICAocm93IChjYXIgbmVhcikpKQorICAgIChsZXQgKChjdXJy ZW50LWNvbHVtbiAoY3VycmVudC1jb2x1bW4pKSkKKyAgICAgIChkZWxldGUtcmVnaW9uICh0cmVl c2l0LW5vZGUtc3RhcnQgcm93KQorICAgICAgICAgICAgICAgICAgICAgKG1pbiAoMSsgKHRyZWVz aXQtbm9kZS1lbmQgcm93KSkgKHBvaW50LW1heCkpKQorICAgICAgKG1vdmUtdG8tY29sdW1uIGN1 cnJlbnQtY29sdW1uKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3ctdXAg KCkKKyAgIk1vdmUgdGhlIHJvdyBhdCBwb2ludCB1cCBvbmUgbGluZS4KK0lmIHBvaW50IGlzIG5v dCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24t dHMtdGFibGUtbW92ZS1yb3cpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3ct ZG93biAoKQorICAiTW92ZSB0aGUgcm93IGF0IHBvaW50IGRvd24gb25lIGxpbmUuCitJZiBwb2lu dCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1h cmtkb3duLXRzLXRhYmxlLW1vdmUtcm93ICdkb3duKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRh YmxlLW1vdmUtcm93ICgmb3B0aW9uYWwgZG93bikKKyAgIk1vdmUgdGhlIHJvdyBhdCBwb2ludCB1 cCBvbmUgbGluZS4KK0lmIERPV04gaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVu dCwgbW92ZSB0aGUgcm93IGRvd24gb25lCitsaW5lLgorSWYgcG9pbnQgaXMgb24gdGhlIGhlYWRl ciBvciBkZWxpbWl0ZXIgcm93LCBkbyBub3RoaW5nLgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFi bGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFyZi1p Zi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3cpCisgIChzZXRxIGRvd24gKG9y IGRvd24gY3VycmVudC1wcmVmaXgtYXJnKSkKKyAgKHdoZW4tbGV0KiAoKGF0LXRhYmxlIChtYXJr ZG93bi10cy1hdC10YWJsZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRh YmxlKSkKKyAgICAgICAgICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAg ICAobmVhciAobWFya2Rvd24tdHMtLXRhYmxlLWJvZHktcm93LW5lYXItcG9zIHBvcykpCisgICAg ICAgICAgICAgIDs7IEJhaWwgaWYgcG9pbnQgaXMgb24gdGhlIGhlYWRlciBvciBkZWxpbWl0ZXIg cm93IOKAlCBkbworICAgICAgICAgICAgICA7OyBub3Qgc2lsZW50bHkgbW92ZSBhIGJvZHkgcm93 IHRoZSB1c2VyIGRpZCBub3Qgc2VsZWN0LgorICAgICAgICAgICAgICAoKG5vdCAoY2RyIG5lYXIp KSkKKyAgICAgICAgICAgICAgKHJvdyAoY2FyIG5lYXIpKSkKKyAgICA7OyBEbyBub3QgbW92ZSBh Ym92ZSB0aGUgcGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93LgorICAgIDs7IERvIG5vdCBtb3ZlIGJl bG93IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLgorICAgICh1bmxlc3MgKG9yIChhbmQgKG5vdCBk b3duKQorICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXByZXYtc2libGluZyByb3cg J25hbWVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGlwZV90YWJsZV9kZWxpbWl0 ZXJfcm93IikpCisgICAgICAgICAgICAgICAgKGFuZCBkb3duCisgICAgICAgICAgICAgICAgICAg ICAobm90ICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIHJvdyAnbmFtZWQpKSkpCisgICAgICAo bGV0ICgocm93MiAoaWYgZG93bgorICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUt bmV4dC1zaWJsaW5nIHJvdyAnbmFtZWQpCisgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5v ZGUtcHJldi1zaWJsaW5nIHJvdyAnbmFtZWQpKSkKKyAgICAgICAgICAgIChyb3ctZW5kICh0cmVl c2l0LW5vZGUtZW5kIHJvdykpKQorICAgICAgICA7OyBUT0RPOiBSZW1vdmUgYWZ0ZXIgYnVnIzIz OTAzIFVuZG8gYWZ0ZXIga2IgZGlmZmVycyBmcm9tIGFmdGVyIE0teAorICAgICAgICAocHVzaCAo cG9pbnQpIGJ1ZmZlci11bmRvLWxpc3QpCisgICAgICAgIDs7IElmIHJvdyBwb2ludCBpcyBvdXRz aWRlIGl0cyBzb3VyY2UgcmVnaW9uLCBlLmcuLCBhdCBlb2wsIG1vdmUKKyAgICAgICAgOzsgaXQg aW5zaWRlIHRoZSByZWdpb24gZm9yIHN0YWJpbGl0eS4KKyAgICAgICAgKHdoZW4gKD49IChwb2lu dCkgcm93LWVuZCkKKyAgICAgICAgICAoZ290by1jaGFyIChtYXggKHBvaW50LW1pbikgKDEtIHJv dy1lbmQpKSkpCisgICAgICAgICh0cmFuc3Bvc2UtcmVnaW9ucyAodHJlZXNpdC1ub2RlLXN0YXJ0 IHJvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHJvdykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgcm93MikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHJvdzIpKSkpKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tbGVmdCAoJm9wdGlvbmFsIGNs b25lKQorICAiSW5zZXJ0IGEgdGFibGUgY29sdW1uIHRvIHRoZSBsZWZ0IG9mIHBvaW50J3MgY29s dW1uLgorSWYgQ0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xv bmUgdGhlIGN1cnJlbnQKK2NvbHVtbiwgb3RoZXJ3aXNlIGluc2VydCBlbXB0eSBjZWxscy4KK1Bv aW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVhZGVyIG9yIGJvZHkuCitJZiBwb2ludCBpcyBub3Qg YXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgIChtYXJrZG93 bi10cy10YWJsZS1pbnNlcnQtY29sdW1uICdsZWZ0IGNsb25lKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLXRhYmxlLWluc2VydC1jb2x1bW4tcmlnaHQgKCZvcHRpb25hbCBjbG9uZSkKKyAgIkluc2Vy dCBhIHRhYmxlIGNvbHVtbiB0byB0aGUgcmlnaHQgb2YgcG9pbnQncyBjb2x1bW4uCitJZiBDTE9O RSBpcyBub24tbmlsLCBvciB3aXRoIGEgcHJlZml4IGFyZ3VtZW50LCBjbG9uZSB0aGUgY3VycmVu dAorY29sdW1uLCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5IGNlbGxzLgorUG9pbnQgY2FuIGJlIGlu IHRoZSB0YWJsZSBoZWFkZXIgb3IgYm9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBk byBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWlu c2VydC1jb2x1bW4gJ3JpZ2h0IGNsb25lKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWNs b25lLWNvbHVtbi1sZWZ0ICgpCisgICJDbG9uZSB0aGUgY3VycmVudCBjb2x1bW4gdG8gaXRzIGxl ZnQuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQg aXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQgJ2Nsb25lKSkKKworKGRlZnVuIG1hcmtk b3duLXRzLXRhYmxlLWNsb25lLWNvbHVtbi1yaWdodCAoKQorICAiQ2xvbmUgdGhlIGN1cnJlbnQg Y29sdW1uIHRvIGl0cyByaWdodC4KK1BvaW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVhZGVyIG9y IGJvZHkuCitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tcmlnaHQgJ2Nsb25l KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4gKCZvcHRpb25hbCBs ZWZ0IGNsb25lKQorICAiSW5zZXJ0IGEgdGFibGUgY29sdW1uIGFmdGVyIHBvaW50J3MgY3VycmVu dCBjb2x1bW4uCitJZiBMRUZUIGlzIG5vbi1uaWwgYW5kIGlzIG5vdCBgcmlnaHQnLCBvciB3aXRo IGEgcHJlZml4IGFyZ3VtZW50LAoraW5zZXJ0IHRoZSBjb2x1bW4gdG8gdGhlIGxlZnQgb2YgdGhl IGN1cnJlbnQgY29sdW1uLgorSWYgQ0xPTkUgaXMgbm9uLW5pbCwgY2xvbmUgdGhlIGN1cnJlbnQg Y29sdW1uLCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5CitjZWxscy4KK0lmIENMT05FIGlzIGEgbGlz dCwgaXRzIGZpcnN0IGVsZW1lbnQgaXMgdGFyZ2V0LWNvbHVtbi1udW1iZXIuICBJdCBpcwordGhl IGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRoYXQgdGhpcyB2YWx1ZSBpcyB2YWxpZCBmb3IgdGhl IHRhYmxlLAordGhvdWdoIGl0IG1heSBiZSBpbnZhbGlkIGZvciBhIG5vbi11bmlmb3JtIHJhZ2dl ZCByb3cuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9p bnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgICht YXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LWNv bHVtbikKKyAgKHNldHEgbGVmdCAoY29uZCAoKGVxIGxlZnQgJ3JpZ2h0KSBuaWwpCisgICAgICAg ICAgICAgICAgICAgKGxlZnQgbGVmdCkKKyAgICAgICAgICAgICAgICAgICAoY3VycmVudC1wcmVm aXgtYXJnIHQpKSkKKyAgKHdoZW4tbGV0KiAoKGF0LXRhYmxlIChtYXJrZG93bi10cy1hdC10YWJs ZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxlKSkKKyAgICAgICAg ICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAoZGVsaW1pdGVyLXJv dyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFibGUgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgICAgICA7 OyBDb2x1bW4gcG9zIGZvciBpbnNlcnRpbmcgbWlzc2luZyBsZWFkaW5nIHBpcGVzLgorICAgICAg ICAgICAgICAoZGVsaW0wLXBpcGUtY29sCisgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24K KyAgICAgICAgICAgICAgICAgKGxldCogKChkZWxpbS1jZWxsICh0cmVlc2l0LW5vZGUtY2hpbGQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpbWl0ZXItcm93IDAgJ25h bWVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChiZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBk ZWxpbS1jZWxsKSkpCisgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciAocG9zLWJvbCkpCisgICAgICAgICAgICAgICAgICAgKGlm IChzZWFyY2gtZm9yd2FyZCAifCIgYmVnIHQpCisgICAgICAgICAgICAgICAgICAgICAgICgxLSAo Y3VycmVudC1jb2x1bW4pKQorICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisg ICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkpKQorICAgICAgICAgICAgICAo bm9kZSAodHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24gJ25hbWVkKSkKKyAgICAgICAgICAg ICAgKGNlbGwgKG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLWNlbGwgbm9kZSkpCisgICAgICAgICAg ICAgIChwb2ludC1yb3cgKG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLXJvdyBjZWxsKSkpCisgICAg KGxldCAoKHRhYmxlLWNvbHVtbiAobWFya2Rvd24tdHMtLXRhYmxlLWNvbXB1dGUtbm9kZS1jb2x1 bW4gcG9pbnQtcm93IGNlbGwpKSkKKyAgICAgICh1bmxlc3MgdGFibGUtY29sdW1uCisgICAgICAg IChlcnJvciAiQ291bGQgbm90IGNvbXB1dGUgdGhlIHRhYmxlIGNvbHVtbiIpKQorICAgICAgOzsg Tk9URTogR0ZNIHRhYmxlcyBhbGxvdyBub24tdW5pZm9ybSB0YWJsZSByb3dzLiAgVGhlIGN1cnJl bnQgcm93CisgICAgICA7OyBjb3VsZCBoYXZlIGEgZGlmZmVyaW5nIG51bWJlciBvZiBjb2x1bW5z IGZyb20gb3RoZXIgcm93cy4gIFdlCisgICAgICA7OyBzaWxlbnRseSBkbyBub3RoaW5nIHRvIGEg cm93IHRoYXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZQorICAgICAgOzsgY29tcHV0ZWQgY29sdW1u LgorICAgICAgOzsKKyAgICAgIDs7IE5PVEU6IFRoZSBncmFtbWFyIGFubm95aW5nbHkgaWdub3Jl cyBjZWxsIGxlYWRpbmcgd2hpdGVzcGFjZQorICAgICAgOzsgYnV0IGluY2x1ZGVzIHRyYWlsaW5n IHdoaXRlc3BhY2UsIHNvIGNlbGxzIGFyZSBib3VuZGVkIGJ5IHRoZQorICAgICAgOzsgZmlyc3Qg Z3JhcGggY2hhcmFjdGVyIHVwIHRvIHRoZSBsYXN0IGNoYXJhY3RlciBqdXN0IGJlZm9yZSB0aGUK KyAgICAgIDs7IHBpcGUgc3ltYm9sLCBpbmNsdWRpbmcgd2hpdGVzcGFjZS4gIFRoZSByZXN1bHQg aXMgdGhlIHJhbmdlCisgICAgICA7OyBkb2VzIG5vdCBzdGFydCBpbW1lZGlhdGVseSBhZnRlciB0 aGUgb3B0aW9uYWwgbGVhZGluZyBwaXBlCisgICAgICA7OyBzeW1ib2wgeWV0IGluY29uc2lzdGVu dGx5IGNvbnRpbnVlcyB1bnRpbCBqdXN0IGJlZm9yZSB0aGUKKyAgICAgIDs7IHRyYWlsaW5nIHBp cGUuCisgICAgICAobGV0KiAoKGFkaiAwKSA7IEFkanVzdCBub2RlIHBvc2l0aW9uIG9mZnNldHMg YnkgaW5zZXJ0ZWQgdGV4dC4KKyAgICAgICAgICAgICAod2lkdGggbWFya2Rvd24tdHMtdGFibGUt ZGVmYXVsdC1jb2x1bW4td2lkdGgpCisgICAgICAgICAgICAgKGVtcHR5IChtYWtlLXN0cmluZyB3 aWR0aCA/XHMpKQorICAgICAgICAgICAgIDs7IFRPRE86IFJlbW92ZSB0aGUgcGxhY2Vob2xkZXIg Y2hhcmFjdGVyIGlmIHRoZSB0cmVlLXNpdHRlcgorICAgICAgICAgICAgIDs7IGdyYW1tYXIgaXMg cmVwYWlyZWQuCisgICAgICAgICAgICAgKHBsYWNlaG9sZGVyIChjb25jYXQgIi4iIChtYWtlLXN0 cmluZyAoMS0gd2lkdGgpID9ccykpKQorICAgICAgICAgICAgIChkZWxpbSAobWFrZS1zdHJpbmcg d2lkdGggPy0pKQorICAgICAgICAgICAgIChyb3dzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gdGFi bGUgJ25hbWVkKSkKKyAgICAgICAgICAgICAobnJvd3MgKGxlbmd0aCByb3dzKSkKKyAgICAgICAg ICAgICAodGFyZ2V0LWNvbHVtbi1udW1iZXIgKGFuZCAobGlzdHAgY2xvbmUpIChjYXIgY2xvbmUp KSkKKyAgICAgICAgICAgICA7OyBQb3NpdGlvbiB0byBtb3ZlIHBvaW50IHRvIGFmdGVyIGFsbCBy b3dzIGhhdmUgYmVlbgorICAgICAgICAgICAgIDs7IHVwZGF0ZWQuICBEZXRlcm1pbmlzdGljIHBs YWNlbWVudCBhdm9pZHMgZGVwZW5kaW5nIG9uCisgICAgICAgICAgICAgOzsgdHJlZS1zaXR0ZXIg bmF2aWdhdGlvbiB0aHJvdWdoIGZyZXNobHktaW5zZXJ0ZWQgZW1wdHkKKyAgICAgICAgICAgICA7 OyBjZWxscywgd2hpY2ggdGhlIGdyYW1tYXIgZG9lcyBub3QgYWx3YXlzIHJlcGFyc2UgYXMKKyAg ICAgICAgICAgICA7OyBwaXBlX3RhYmxlX2NlbGwgbm9kZXMuCisgICAgICAgICAgICAgKHRhcmdl dC1wb3MpKQorICAgICAgICA7OyBUT0RPOiBSZW1vdmUgYWZ0ZXIgYnVnIzIzOTAzIFVuZG8gYWZ0 ZXIga2IgZGlmZmVycyBmcm9tIGFmdGVyIE0teAorICAgICAgICAocHVzaCAocG9pbnQpIGJ1ZmZl ci11bmRvLWxpc3QpCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICh3aXRob3V0 LXJlc3RyaWN0aW9uCisgICAgICAgICAgICAoZG90aW1lcyAoeCBucm93cykKKyAgICAgICAgICAg ICAgKHdoZW4tbGV0KiAoKHJvdyAobnRoIHggcm93cykpCisgICAgICAgICAgICAgICAgICAgICAg ICAgIChyb3ctdHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgcm93KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IHNvdXJjZS1jZWxsIHdpbGwgYmUgbmlsIGlmIHRhYmxlLWNvbHVtbiBp cyBiZXlvbmQgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICA7OyByb3cncyBjb2x1bW4g c2V0IGFuZCB0aGF0IHJvdyB3aWxsIGJlIHNraXBwZWQuCisgICAgICAgICAgICAgICAgICAgICAg ICAgIChzb3VyY2UtY2VsbCAobnRoIHRhYmxlLWNvbHVtbiBjb2xzKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgOzsgSWYgY2xvbmluZyB3aXRoIGEgc3BlY2lmaWVkIHRhcmdldC1jb2x1bW4t bnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0YXJnZXQtY2VsbCB3aWxsIGJl IG5pbCBhbmQgdGhlIHJvdyB3aWxsIGJlIHNraXBwZWQuCisgICAgICAgICAgICAgICAgICAgICAg ICAgICh0YXJnZXQtY2VsbCAoaWYgdGFyZ2V0LWNvbHVtbi1udW1iZXIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggdGFyZ2V0LWNvbHVtbi1udW1iZXIgY29s cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtY2VsbCkp CisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IENvbXB1dGUgdGhlIGluc2VydGlvbiBwb2lu dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZyAoY29uZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBJZiBjbG9uaW5nIHRvIGEgc3BlY2lmaWVkIHRhcmdldCwgdXNl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRhcmdldC1jZWxsJ3MgZW5kLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0LWNvbHVtbi1udW1iZXIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGFkagorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgdGFyZ2V0LWNlbGwpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgaW5zZXJ0aW5nIHRvIHRoZSBsZWZ0IG9m IHRoZSBmaXJzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBjb2x1bW4sIHVz ZSBzb3VyY2UgY2VsbCdzIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7 IGFkanVzdGVkIGZvciBpdHMgb3B0aW9uYWwgcGlwZSB0bworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7OyBjYXB0dXJlIGl0cyB3aGl0ZXNwYWNlLiAgSWYgdGhlcmUgaXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgbm8gcGlwZSwgdXNlIGJvbC4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQgbGVmdCAoZXEgdGFibGUtY29sdW1uIDApKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHAgKCsgYWRqCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IHNvdXJjZS1jZWxsKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290 by1jaGFyIHApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg KHBvcy1ib2wpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHNlYXJj aC1mb3J3YXJkICJ8IiBwIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBwICgxLSAocG9pbnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBwIChwb3MtYm9sKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBpbnNlcnRpbmcg bGVmdCBhbmQgYW55IG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGNv bHVtbiwgdXNlIHRoZSBlbmQgb2YgdGhlIHByaW9yCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IGNlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZWZ0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgxKyAodHJlZXNpdC1ub2RlLWVuZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoICgxLSB0YWJsZS1jb2x1bW4pIGNvbHMpKSkp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBpbnNlcnRpbmcgcmlnaHQs IHVzZSB0aGUgZW5kIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRoZSBj dXJyZW50IGNlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGoKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHNvdXJjZS1jZWxsKSkpKSkpCisgICAgICAg ICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAgICAgICAgICAgKGxldCogKChvcmlnLXBv aW50IChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgIChtaXNzaW5nLWxlYWRpbmctcGlw ZQorICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIHRhYmxlLWNvbHVtbiAwKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZ290by1jaGFyIChwb3MtYm9sKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodW5sZXNzIChzZWFyY2gtZm9yd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGFk aiAodHJlZXNpdC1ub2RlLXN0YXJ0IHNvdXJjZS1jZWxsKSkgdCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJ8IikpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHRleHQgKGNvbmQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IElmIGNsb25pbmcsIHJldHJpZXZlIHRo ZSBzb3VyY2UgY2VsbCB0ZXh0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb25l IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgQmFjayB1cCB0byBib2wgb3IgdGhlIHBpcGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgdG8gY2FwdHVyZSB0aGUgd2hpdGVzcGFjZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0aGUgZ3JhbW1hciBsZWF2 ZXMgb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1 cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGFkagorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IHNvdXJjZS1jZWxsKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHNraXAtY2hhcnMtYmFja3dhcmQgIltbOmJsYW5rOl1dIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3MtYm9sKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGogKHRyZWVzaXQtbm9kZS1lbmQgc291cmNl LWNlbGwpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBuZXcgY29sdW1u LCBhbmQgdGhpcyBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGRlbGlt aXRlciByb3csIGluc2VydCBhIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IGRlbGltaXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXF1YWwgcm93 LXR5cGUgInBpcGVfdGFibGVfZGVsaW1pdGVyX3JvdyIpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVsaW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBuZXcg Y29sdW1uLCBhbmQgdGhpcyBpcyB0aGUgYSBoZWFkZXIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IG9yIGJvZHkgcm93LCBpbnNlcnQgYSBkZWZhdWx0IGVtcHR5CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5KSkpKQorICAgICAg ICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAoY2xvbmUKKyAgICAgICAgICAg ICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgOzsgQ2xvbmUgdGhlIGZpcnN0IGNv bHVtbiB0byB0aGUgbGVmdC4gIElmIHRoZXJlIGlzCisgICAgICAgICAgICAgICAgICAgIDs7IG5v IHBpcGUgYmVmb3JlIHRoZSBjZWxsIGNvbnRlbnQsIGluc2VydCBvbmUuCisgICAgICAgICAgICAg ICAgICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gMCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAoaW5zZXJ0ICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciBtaXNzaW5nLWxlYWRpbmctcGlw ZSAiIikpKQorICAgICAgICAgICAgICAgICAgICA7OyBDbG9uZSB0aGUgZmlyc3QgY29sdW1uIHRv IHRoZSByaWdodC4KKyAgICAgICAgICAgICAgICAgICAgICgoYW5kIChub3QgbGVmdCkgKGVxIHRh YmxlLWNvbHVtbiAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJ8IgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICA7OyBG b3IgYSBwb3NpdGl2ZSB1c2VyIGV4cGVyaWVuY2UgZ2l2ZW4gZ3JhbW1hcgorICAgICAgICAgICAg ICAgICAgICAgIDs7IGJ1Z3MsIGFkZCBhIG1pc3NpbmcgbGVhZGluZyBwaXBlIHRvIHRoZSBmaXJz dAorICAgICAgICAgICAgICAgICAgICAgIDs7IGNlbGwgYXQgYSBwbGVhc2luZyBwb3NpdGlvbiBh ZnRlciBjbG9uaW5nLgorICAgICAgICAgICAgICAgICAgICAgICh3aGVuIG1pc3NpbmctbGVhZGlu Zy1waXBlCisgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1vdmUtdG8tY29sdW1uIGRlbGltMC1waXBlLWNvbCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKGluc2VydCAifCIpKSkpCisgICAgICAgICAgICAgICAgICAg IDs7IENsb25lIHRoZSBmaW5hbCBjb2x1bW4gdG8gdGhlIGxlZnQuCisgICAgICAgICAgICAgICAg ICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gKDEtIG5jb2xzKSkpCisgICAgICAgICAg ICAgICAgICAgICAgKGluc2VydCB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi fCIpKQorICAgICAgICAgICAgICAgICAgICAgOzsgQ2xvbmUgYSBtaWRkbGUgY29sdW1uIHRvIHRo ZSBsZWZ0LgorICAgICAgICAgICAgICAgICAgICAgKGxlZnQKKyAgICAgICAgICAgICAgICAgICAg ICAoaW5zZXJ0IHRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ8IikpCisgICAg ICAgICAgICAgICAgICAgICA7OyBDbG9uZSBhIG1pZGRsZSBvciBmaW5hbCBjb2x1bW4gdG8gdGhl IHJpZ2h0LgorICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAo aW5zZXJ0ICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCkpKSkKKworICAg ICAgICAgICAgICAgICAgIDs7IE5vdCBjbG9uaW5nLCBpbnNlcnQgYSBuZXcgY29sdW1uLgorICAg ICAgICAgICAgICAgICAgICgoYW5kIGxlZnQgKGVxIHRhYmxlLWNvbHVtbiAwKSAoZXEgeCAoMS0g bnJvd3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVxdWFsIHJvdy10eXBlICJw aXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciKSkpCisgICAgICAgICAgICAgICAgICAgOzsgVE9ETzog cmVtb3ZlIHBsYWNlaG9sZGVyIGxvZ2ljLgorICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0Cisg ICAgICAgICAgICAgICAgICAgICAifCIKKyAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVy CisgICAgICAgICAgICAgICAgICAgICAob3IgbWlzc2luZy1sZWFkaW5nLXBpcGUgIiIpKSkKKyAg ICAgICAgICAgICAgICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gMCkpCisgICAgICAg ICAgICAgICAgICAgICAgKGluc2VydAorICAgICAgICAgICAgICAgICAgICAgICAifCIKKyAgICAg ICAgICAgICAgICAgICAgICAgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAob3IgbWlzc2lu Zy1sZWFkaW5nLXBpcGUgIiIpKSkKKyAgICAgICAgICAgICAgICAgICAobGVmdAorICAgICAgICAg ICAgICAgICAgICAoaW5zZXJ0CisgICAgICAgICAgICAgICAgICAgICB0ZXh0CisgICAgICAgICAg ICAgICAgICAgICAifCIpKQorICAgICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAg ICAgIChpbnNlcnQKKyAgICAgICAgICAgICAgICAgICAgICJ8IgorICAgICAgICAgICAgICAgICAg ICAgdGV4dCkpKQorCisgICAgICAgICAgICAgICAgICA7OyBDYXB0dXJlIHRoZSBzdGFydCBvZiB0 aGUgbmV3IGNlbGwncyBjb250ZW50IGluCisgICAgICAgICAgICAgICAgICA7OyB0aGUgcm93IHRo YXQgb3JpZ2luYWxseSBjb250YWluZWQgcG9pbnQuCisgICAgICAgICAgICAgICAgICAod2hlbiAo YW5kIChub3QgdGFyZ2V0LXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVz aXQtbm9kZS1lcSByb3cgcG9pbnQtcm93KSkKKyAgICAgICAgICAgICAgICAgICAgKHNldHEgdGFy Z2V0LXBvcworICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHRhcmdldC1jb2x1bW4tbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCB0YXJnZXQtY2VsbCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYW5kIGxlZnQg KG5vdCAoZXEgdGFibGUtY29sdW1uIDApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgInRleHQgfCIgaW5zZXJ0ZWQgYXQgYmVnLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcmlnLXBvaW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBBbGwg b3RoZXIgYnJhbmNoZXMgaW5zZXJ0ICJ8IiBmaXJzdC4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgxKyBvcmlnLXBvaW50KSkpKSkpCisKKyAgICAgICAgICAgICAgICAgIDs7IEFkanVz dCBvZmZzZXQgZm9yIGRlbGV0ZWQgdGV4dC4KKyAgICAgICAgICAgICAgICAgIChzZXRxIGFkaiAo KyBhZGogKC0gKHBvaW50KSBvcmlnLXBvaW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9y aWctcG9pbnQgKHBvaW50KSkpKSkpKQorICAgICAgICAod2hlbiB0YXJnZXQtcG9zCisgICAgICAg ICAgKGdvdG8tY2hhciB0YXJnZXQtcG9zKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJs ZS1kZWxldGUtY29sdW1uICgpCisgICJEZWxldGUgdGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludC4K K1BvaW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVhZGVyIG9yIGJvZHkuCitJZiBwb2ludCBpcyBu b3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3du LXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uKQor ICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQor ICAgICAgICAgICAgICAocG9zIChjYXIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAodGFibGUg KGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10cy0tdGFibGUt bm9kZS1jZWxsIG5pbCBwb3MpKQorICAgICAgICAgICAgICAocm93IChtYXJrZG93bi10cy0tdGFi bGUtbm9kZS1yb3cgY2VsbCkpCisgICAgICAgICAgICAgIChjb2xzICh0cmVlc2l0LW5vZGUtY2hp bGRyZW4gcm93ICduYW1lZCkpCisgICAgICAgICAgICAgIChuY29scyAobGVuZ3RoIGNvbHMpKSkK KyAgICAobGV0ICgodGFibGUtY29sdW1uIChtYXJrZG93bi10cy0tdGFibGUtY29tcHV0ZS1ub2Rl LWNvbHVtbiByb3cgY2VsbCkpKQorICAgICAgKHVubGVzcyB0YWJsZS1jb2x1bW4KKyAgICAgICAg KGVycm9yICJDb3VsZCBub3QgY29tcHV0ZSB0aGUgdGFibGUgY29sdW1uIikpCisgICAgICA7OyBO T1RFOiBHRk0gdGFibGVzIGFsbG93IG5vbi11bmlmb3JtIHRhYmxlIHJvd3MuICBUaGUgY3VycmVu dCByb3cKKyAgICAgIDs7IGNvdWxkIGhhdmUgYSBkaWZmZXJpbmcgbnVtYmVyIG9mIGNvbHVtbnMg ZnJvbSBvdGhlciByb3dzLiAgV2UKKyAgICAgIDs7IHNpbGVudGx5IGRvIG5vdGhpbmcgdG8gYSBy b3cgdGhhdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlCisgICAgICA7OyBjb21wdXRlZCBjb2x1bW4u CisgICAgICA7OworICAgICAgOzsgTk9URTogVGhlIGdyYW1tYXIgYW5ub3lpbmdseSBpZ25vcmVz IGNlbGwgbGVhZGluZyB3aGl0ZXNwYWNlCisgICAgICA7OyBidXQgZG9lcyBpbmNsdWRlIHRyYWls aW5nIHdoaXRlc3BhY2Ugc28gY2VsbHMgYXJlIGJvdW5kZWQgYnkKKyAgICAgIDs7IHRoZSBmaXJz dCBncmFwaCBjaGFyYWN0ZXIgdXAgdG8gdGhlIGxhc3QgY2hhcmFjdGVyIGp1c3QgYmVmb3JlCisg ICAgICA7OyB0aGUgcGlwZSBzeW1ib2wsIGluY2x1ZGluZyB3aGl0ZXNwYWNlLgorICAgICAgOzsK KyAgICAgIDs7IFRoZSBncmFtbWFyIGFsc28gY29uc2lkZXJzIHRoZSB0cmFpbGluZyBwaXBlIHN5 bWJvbCB0byBiZSBhCisgICAgICA7OyBwYXJ0IG9mIGl0cyBwcmVjZWRpbmcgY2VsbCBzbyB0aGF0 J3Mgd2hhdCB3ZSBkZWxldGUgd2hlbiB3ZQorICAgICAgOzsgZGVsZXRlIGEgY29sdW1uJ3MgY2Vs bDsgaS5lLiwgaWYgdGhlcmUgaXMgYSBwaXBlIGJlZm9yZSB0aGUKKyAgICAgIDs7IGZpcnN0IGNv bHVtbiwgd2UgZGVsZXRlIGl0LgorICAgICAgKGxldCogKChhZGogMCkgOyBBZGp1c3Qgbm9kZSBw b3NpdGlvbiBvZmZzZXRzIGJ5IGRlbGV0ZWQgdGV4dC4KKyAgICAgICAgICAgICAocm93cyAodHJl ZXNpdC1ub2RlLWNoaWxkcmVuIHRhYmxlICduYW1lZCkpCisgICAgICAgICAgICAgKG5yb3dzIChs ZW5ndGggcm93cykpKQorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAod2l0aG91 dC1yZXN0cmljdGlvbgorICAgICAgICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgICAg ICAgIDs7IElmIGNlbGwgaXMgbmlsLCBpdCBpcyBiZXlvbmQgdGhlIHRhYmxlLWNvbHVtbiBhbmQg aXRzCisgICAgICAgICAgICAgIDs7IHJvdyBpcyBpZ25vcmVkLgorICAgICAgICAgICAgICAod2hl bi1sZXQqICgocm93IChudGggeCByb3dzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNv bHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpCisgICAgICAgICAgICAgICAgICAgICAgICAg IChjZWxsIChudGggdGFibGUtY29sdW1uIGNvbHMpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2VsbC1iZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBjZWxsKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNlbGwtZW5kICh0cmVlc2l0LW5vZGUtZW5kIGNlbGwpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBBZGp1c3QgYmVnIHRvIHRyaW0gdGhlIGdyYW1tYXIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgdW5hY2NvdW50ZWQtZm9yIGxlYWRpbmcgd2hpdGVzcGFjZS4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZyAoY29uZAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBJZiB0aGlzIGlzIHRoZSBzb2xlIGNvbHVtbiwgZGVsZXRlIGZyb20g Ym9sLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxIG5jb2xzIDEpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIGNlbGwtYmVnIGFkaikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9zLWJvbCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDs7IElmIHRoaXMgaXMgdGhlIGZpcnN0IGNvbHVtbiwgZGVs ZXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGZyb20gdGhlIHBpcGUsIGlm IHRoZXJlIGlzIG9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgb3RoZXJ3 aXNlIGNlbGwtYmVnLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxIHRhYmxl LWNvbHVtbiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHAgKC0g Y2VsbC1iZWcgYWRqKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo cG9zLWJvbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoc2VhcmNo LWZvcndhcmQgInwiIHAgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgxLSAocG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHApKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgdGhpcyBpcyB0aGUgZmluYWwg Y29sdW1uLCBkZWxldGUgZnJvbSB0aGUgcHJpb3IgcGlwZSBzeW1ib2wuCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoZXEgdGFibGUtY29sdW1uICgxLSBuY29scykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgocCAoLSAodHJlZXNpdC1ub2RlLWVuZAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggKDEtIHRh YmxlLWNvbHVtbikgY29scykpIGFkaikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZ290by1jaGFyIHApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp ZiAoc2VhcmNoLWZvcndhcmQgInwiICgtIGNlbGwtYmVnIGFkaikgdCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IE90 aGVyd2lzZSwgc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgcHJpb3IgY2VsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtICh0cmVlc2l0LW5vZGUtZW5k CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggKDEtIHRhYmxl LWNvbHVtbikgY29scykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGop KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IEFkanVzdCBlbmQgdG8gdHJpbSB0aGUg dHJhaWxpbmcgcGlwZSBzeW1ib2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgY29uc2lk ZXJlZCBieSB0aGUgZ3JhbW1hciB0byBiZSBwYXJ0IG9mIGl0cworICAgICAgICAgICAgICAgICAg ICAgICAgICA7OyBwcmVjZWRpbmcgY2VsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGVu ZCAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB0aGlzIGlzIHRo ZSBzb2xlIGNvbHVtbiwgZGVsZXRlIHVudGlsIGVvbC4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKChlcSBuY29scyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdvdG8tY2hhciAoLSBjZWxsLWJlZyBhZGopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBvcy1lb2wpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB0 aGlzIGlzIHRoZSBmaW5hbCBjb2x1bW4sIGRlbGV0ZSB1bnRpbCBlb2wuCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoZXEgdGFibGUtY29sdW1uICgxLSBuY29scykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIGNlbGwtZW5kIGFkaikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9zLWVvbCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDs7IE90aGVyd2lzZSwgbG9vayBmb3J3YXJkIGZyb20gY2VsbC1l bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgKHdoaWNoIGluY2x1ZGVzIHRo ZSBjZWxsJ3MgdHJhaWxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgd2hp dGVzcGFjZSkgZm9yIGEgcGlwZSBzeW1ib2wuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIGNl bGwtZW5kIGFkaikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHJlLXNl YXJjaC1mb3J3YXJkICJ8Kz8iIChwb3MtZW9sKSB0KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgxLSAocG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjZWxsLWVuZCkpKSkpCisgICAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVnIGVu ZCkKKyAgICAgICAgICAgICAgICAoc2V0cSBhZGogKCsgYWRqICgtIGVuZCBiZWcpKSkpKSkpKSkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tbGVmdCAoKQorICAiTW92 ZSB0aGUgdGFibGUgY29sdW1uIGF0IHBvaW50IHRvIGl0cyBsZWZ0LgorUG9pbnQgY2FuIGJlIGlu IHRoZSB0YWJsZSBoZWFkZXIgb3IgYm9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBk byBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24tdHMtdGFibGUtbW92ZS1j b2x1bW4gJ2xlZnQpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tcmln aHQgKCkKKyAgIk1vdmUgdGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludCB0byBpdHMgcmlnaHQuCitQ b2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQgaXMgbm90 IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10 cy10YWJsZS1tb3ZlLWNvbHVtbiAncmlnaHQpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUt bW92ZS1jb2x1bW4gKCZvcHRpb25hbCBsZWZ0KQorICAiTW92ZSB0aGUgdGFibGUgY29sdW1uIGF0 IHBvaW50IHJpZ2h0IG9yIGxlZnQuCitJZiBMRUZUIGlzIG5vbi1uaWwgYW5kIGlzIG5vdCBgcmln aHQnLCBvciB3aXRoIGEgcHJlZml4IGFyZ3VtZW50LAorbW92ZSB0aGUgY29sdW1uIHRvIGl0cyBs ZWZ0LgorRG8gbm90aGluZyBpZiBhIHJvdyBiZWluZyBtb3ZlZCBpcyBub3Qgd2l0aGluIHRoZSBj b2x1bW5zIG9mIHRoZSBoZWFkZXIuCitEbyBub3RoaW5nIGlmIG1vdmluZyBsZWZ0IGFuZCB0aGUg Y3VycmVudCBjb2x1bW4gaXMgdGhlIGZpcnN0IGNvbHVtbiBvZgordGhlIGN1cnJlbnQgcm93Lgor RG8gbm90aGluZyBpZiBtb3ZpbmcgcmlnaHQgYW5kIHRoZSBjdXJyZW50IGNvbHVtbiBpcyB0aGUg ZmluYWwgY29sdW1uIG9mCit0aGUgY3VycmVudCByb3cuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRh YmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhp bmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAn bWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4pCisgIChzZXRxIGxlZnQgKGNvbmQgKChlcSBs ZWZ0ICdyaWdodCkgbmlsKQorICAgICAgICAgICAgICAgICAgIChsZWZ0IGxlZnQpCisgICAgICAg ICAgICAgICAgICAgKGN1cnJlbnQtcHJlZml4LWFyZyB0KSkpCisgICh3aGVuLWxldCogKChhdC10 YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgIChwb3Mg KGNhciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICh0YWJsZSAoY2RyIGF0LXRhYmxlKSkKKyAg ICAgICAgICAgICAgKG5vZGUgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3duICduYW1lZCkp CisgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsIG5vZGUp KQorICAgICAgICAgICAgICAocm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgbm9kZSkp CisgICAgICAgICAgICAgIChoZWFkZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlxcYHBpcGVfdGFibGVfaGVhZGVyXFwnIikpCisgICAgICAgICAgICAgIChuaGVhZGVy cyAobGVuZ3RoICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gaGVhZGVyLXJvdyAnbmFtZWQpKSkKKyAg ICAgICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkKKyAg ICAgICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpKQorICAgIChsZXQgKCh0YWJsZS1jb2x1 bW4gKG1hcmtkb3duLXRzLS10YWJsZS1jb21wdXRlLW5vZGUtY29sdW1uIHJvdyBjZWxsKSkpCisg ICAgICAodW5sZXNzIHRhYmxlLWNvbHVtbgorICAgICAgICAoZXJyb3IgIkNvdWxkIG5vdCBjb21w dXRlIHRoZSB0YWJsZSBjb2x1bW4iKSkKKyAgICAgIChpZiAoPj0gdGFibGUtY29sdW1uIG5oZWFk ZXJzKQorICAgICAgICAgIChtZXNzYWdlICJSYWdnZWQvdW5ldmVuIGNvbHVtbiBjYW5ub3QgYmUg bW92ZWQiKQorICAgICAgICA7OyBBIEIgQyBEIC0+IEIgQSBDIEQKKyAgICAgICAgOzsgTW92ZSBB IGxlZnQ6IGRvIG5vdGhpbmcKKyAgICAgICAgOzsgTW92ZSBEIHJpZ2h0OiBkbyBub3RoaW5nCisg ICAgICAgIDs7IE1vdmUgY3VycmVudCBjb2x1bW4gbGVmdDoKKyAgICAgICAgOzsgICBzb3VyY2Ug Y29sdW1uID0gdCAtIDEKKyAgICAgICAgOzsgTW92ZSBjdXJyZW50IGNvbHVtbiByaWdodDoKKyAg ICAgICAgOzsgICBjbG9uZSB0IHRvIHQrMSBpZiB0aGUgZmluYWwgY29sdW1uLCBvdGhlcndpc2Ug dCsyCisgICAgICAgIDs7ICAgZGVsZXRlIHQKKyAgICAgICAgKGNvbmQgKChhbmQgbGVmdCAoZXEg dGFibGUtY29sdW1uIDApKQorICAgICAgICAgICAgICAgKG1lc3NhZ2UgIkxlZnRtb3N0IGNvbHVt biBjYW5ub3QgYmUgbW92ZWQgbGVmdCIpCisgICAgICAgICAgICAgICBuaWwpCisgICAgICAgICAg ICAgICgoYW5kIChub3QgbGVmdCkgKGVxIHRhYmxlLWNvbHVtbiAoMS0gbmNvbHMpKSkKKyAgICAg ICAgICAgICAgIChtZXNzYWdlICJSaWdodG1vc3QgY29sdW1uIGNhbm5vdCBiZSBtb3ZlZCByaWdo dCIpCisgICAgICAgICAgICAgICBuaWwpCisgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAg ICAobGV0ICgoc291cmNlLWNvbHVtbiAoaWYgbGVmdAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgxLSB0YWJsZS1jb2x1bW4pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhYmxlLWNvbHVtbikpCisgICAgICAgICAgICAgICAgICAgICAodGFy Z2V0LWNvbHVtbiAoaWYgbGVmdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhYmxlLWNvbHVtbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo MSsgdGFibGUtY29sdW1uKSkpKQorICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAg ICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtLWdvdG8tY29sdW1uIHNvdXJjZS1j b2x1bW4pCisgICAgICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1 bW4KKyAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0IChsaXN0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGFyZ2V0LWNvbHVtbikpKQorICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMt dGFibGUtLWdvdG8tY29sdW1uIHNvdXJjZS1jb2x1bW4pCisgICAgICAgICAgICAgICAgIChtYXJr ZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uKQorICAgICAgICAgICAgICAgICA7OyBFbXB0eSBj ZWxscyBjYW4gY29uZnVzZSB0aGUgZ3JhbW1hciwgc28gbm8tZXJyb3IgaGVyZS4KKyAgICAgICAg ICAgICAgICAgKGlmIGxlZnQKKyAgICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy10YWJs ZS0tZ290by1jb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtY29sdW1uICduby1l cnJvcikKKyAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtLWdvdG8tY29sdW1u CisgICAgICAgICAgICAgICAgICAgIHRhcmdldC1jb2x1bW4gJ25vLWVycm9yKSkpKSkpKSkpCisK KyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4tbGVmdCAoKQorICAiQWxpZ24g dGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludCB0byB0aGUgbGVmdC4KK0RvIHRoZSB3b3JrIHdpdGgg YG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWNvbHVtbicsIHdoaWNoIHNlZSBmb3IgbW9yZQorZGV0 YWlscy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWNvbHVt biAnbGVmdCkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4tY2VudGVy ICgpCisgICJBbGlnbiB0aGUgdGFibGUgY29sdW1uIGF0IHBvaW50IHRvIHRoZSBjZW50ZXIuCitE byB0aGUgd29yayB3aXRoIGBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4nLCB3aGljaCBz ZWUgZm9yIG1vcmUKK2RldGFpbHMuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy10 YWJsZS1hbGlnbi1jb2x1bW4gJ2NlbnRlcikpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1h bGlnbi1jb2x1bW4tcmlnaHQgKCkKKyAgIkFsaWduIHRoZSB0YWJsZSBjb2x1bW4gYXQgcG9pbnQg dG8gdGhlIHJpZ2h0LgorRG8gdGhlIHdvcmsgd2l0aCBgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24t Y29sdW1uJywgd2hpY2ggc2VlIGZvciBtb3JlCitkZXRhaWxzLiIKKyAgKGludGVyYWN0aXZlKQor ICAobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uICdyaWdodCkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4gKCZvcHRpb25hbCBhbGlnbikKKyAgIkFsdGVyIHRo ZSB0YWJsZSBjb2x1bW4gYWxpZ25tZW50IGF0IHBvaW50LgorQWx0ZXIgdGhlIGNvbHVtbiBwb2lu dCBpcyBpbi4KKworTm90ZTogVG8gY29tcHV0ZSB0aGUgY29sdW1uLCBwb2ludCBtdXN0IGJlIHdp dGhpbiB0aGUgY29sdW1uIGFuZCBjYW5ub3QKK2JlIG9uIHRoZSBsZWFkaW5nIG9yIHRyYWlsaW5n IHdoaXRlc3BhY2Ugb3Igb24gYSBjb2x1bW4gZGVsaW1pdGVyLgorCitBTElHTiBjYW4gYmUgb25l IG9mIHRoZSBzeW1ib2xzIGBsZWZ0JywgYGNlbnRlcicsIGByaWdodCcgb3IgbmlsIGZvcgordW5z cGVjaWZpZWQgb3IgdGhlIGNoYXJhY3RlcnMgbCwgYywgb3Igci4KKworSWYgQUxJR04gaXMgbmls LCBhc3N1bWUgdW5zcGVjaWZpZWQuICBNYWtlIHRoZSBhbGlnbm1lbnQgc3RyaW5nIGEKK21pbmlt dW0gb2YgNSBjaGFyYWN0ZXJzIHRvIGFjY29tbW9kYXRlIE1hcmtkb3duIGNvbnZlbnRpb25zLgor CitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2 ZSAiY0FsaWduIGNvbHVtbiBbbF1lZnQgW2NdZW50ZXIgW3JdaWdodCBbdV1uc3BlY2lmaWVkOiIp CisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtYWxp Z24tY29sdW1uKQorICAoc2V0cSBhbGlnbiAoaWYgKGNoYXJhY3RlcnAgYWxpZ24pCisgICAgICAg ICAgICAgICAgICAocGNhc2UgYWxpZ24gKD9sICdsZWZ0KSAoP2MgJ2NlbnRlcikgKD9yICdyaWdo dCkpCisgICAgICAgICAgICAgICAgYWxpZ24pKQorICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1h cmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAocG9zIChjYXIgYXQt dGFibGUpKQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAg ICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQgcG9zICdtYXJrZG93biAnbmFtZWQpKQorICAgICAg ICAgICAgICAoY2VsbCAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtY2VsbCBub2RlKSkKKyAgICAg ICAgICAgICAgKHJvdyAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93IGNlbGwpKQorICAgICAg ICAgICAgICAoYWxpZ25lcnMgKG1hcmtkb3duLXRzLS10YWJsZS1hbGlnbmVycyB0YWJsZSkpKQor ICAgIChsZXQgKCh0YWJsZS1jb2x1bW4gKG1hcmtkb3duLXRzLS10YWJsZS1jb21wdXRlLW5vZGUt Y29sdW1uIHJvdyBjZWxsKSkpCisgICAgICAodW5sZXNzIHRhYmxlLWNvbHVtbgorICAgICAgICAo ZXJyb3IgIkNvdWxkIG5vdCBjb21wdXRlIHRoZSB0YWJsZSBjb2x1bW4iKSkKKyAgICAgIDs7IE5P VEU6IEdGTSB0YWJsZXMgYWxsb3cgbm9uLXVuaWZvcm0gdGFibGUgcm93cy4gIFRoZSBjdXJyZW50 IHJvdworICAgICAgOzsgY291bGQgaGF2ZSBhIGRpZmZlcmluZyBudW1iZXIgb2YgY29sdW1ucyBm cm9tIHRoZSBoZWFkZXIuICBXZQorICAgICAgOzsgc2lsZW50bHkgZG8gbm90aGluZyBpZiB3ZSBj YW4ndCBmaW5kIGEgbWF0Y2hpbmcgaGVhZGVyIGNvbHVtbi4KKyAgICAgICh3aGVuLWxldCogKChh bGlnbmVyIChudGggdGFibGUtY29sdW1uIGFsaWduZXJzKSkKKyAgICAgICAgICAgICAgICAgIChi ZWcgKHBsaXN0LWdldCBhbGlnbmVyIDpiZWcpKQorICAgICAgICAgICAgICAgICAgKGVuZCAocGxp c3QtZ2V0IGFsaWduZXIgOmVuZCkpCisgICAgICAgICAgICAgICAgICAoc3RyIChidWZmZXItc3Vi c3RyaW5nLW5vLXByb3BlcnRpZXMgYmVnIGVuZCkpCisgICAgICAgICAgICAgICAgICAoc3RybGVu IChtYXggNSAobGVuZ3RoIHN0cikpKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVnIGVuZCkK KyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAg ICAgICAgKGluc2VydCAobWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lciBzdHJsZW4gYWxp Z24pKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi10YWJsZSAoJm9wdGlv bmFsIGFsaWduLWNlbGxzKQorICAiQWxpZ24gdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBvaW50Lgor QWRqdXN0IGVhY2ggY29sdW1uJ3Mgd2lkdGggdG8gYWNjb21tb2RhdGUgaXRzIHdpZGVzdCBjb25z dGl0dWVudCBjZWxsLgorSWYgQUxJR04tQ0VMTFMgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZp eCBhcmd1bWVudCwgYXBwbHkgdGhlCitkZWxpbWl0ZXIgcm93J3MgYWxpZ25tZW50IHRvIGNlbGwg Y29udGVudC4gIEFMSUdOLUNFTExTIGlzIG5vbi1uaWwgaWYKK3RoZSB1c2VyIG9wdGlvbiBgbWFy a2Rvd24tdHMtdGFibGUtYWxpZ24tZmVhdHVyZXMnIGluY2x1ZGVzCitganVzdGlmeS1jZWxscycu CitBbmNob3IgdGhlIGNvbHVtbnMgdG8gdGhlIGRlbGltaXRlciByb3cuICBJZ25vcmUgcm93cyB0 aGF0IGNvbnRhaW4KK2NvbHVtbnMgYmV5b25kIHRoZSBkZWxpbWl0ZXIgcm93LgorSWYgbm90IGlu IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAobWFya2Rvd24t dHMtLWJhcmYtaWYtbm90LW1vZGUgJ21hcmtkb3duLXRzLXRhYmxlLWFsaWduLXRhYmxlKQorICAo d2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAg ICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAgIChiZWcgKHRy ZWVzaXQtbm9kZS1zdGFydCB0YWJsZSkpCisgICAgICAgICAgICAgIChlbmQgKHRyZWVzaXQtbm9k ZS1lbmQgdGFibGUpKQorICAgICAgICAgICAgICAoXyAobWFya2Rvd24tdHMtLXRhYmxlLXRpY2st c3RhbGUtcCBiZWcpKQorICAgICAgICAgICAgICAocm93cyAodHJlZXNpdC1ub2RlLWNoaWxkcmVu IHRhYmxlICduYW1lZCkpCisgICAgICAgICAgICAgIChucm93cyAobGVuZ3RoIHJvd3MpKQorICAg ICAgICAgICAgICAoZGVsaW1pdGVyLXJvdyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAg ICAgICAgICAgICAgICAgICAgIHRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYHBp cGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgICAgICAoYWxpZ25lcnMgKG1h cmtkb3duLXRzLS10YWJsZS1hbGlnbmVycyB0YWJsZSkpCisgICAgICAgICAgICAgIChjb2xzICh0 cmVlc2l0LW5vZGUtY2hpbGRyZW4gZGVsaW1pdGVyLXJvdyAnbmFtZWQpKQorICAgICAgICAgICAg ICAobmNvbHMgKGxlbmd0aCBjb2xzKSkKKyAgICAgICAgICAgICAgKGNvbC13aWR0aHMgKG1ha2Ut aGFzaC10YWJsZSA6c2l6ZSBuY29scyA6dGVzdCAnZXF1YWwpKQorICAgICAgICAgICAgICAoY2Vs bC10ZXh0IChtYWtlLWhhc2gtdGFibGUgOnNpemUgKCogbnJvd3MgbmNvbHMpIDp0ZXN0ICdlcXVh bCkpKQorICAgIChzZXRxIGFsaWduLWNlbGxzIChvciBhbGlnbi1jZWxscworICAgICAgICAgICAg ICAgICAgICAgICAgICBjdXJyZW50LXByZWZpeC1hcmcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1lbXEgJ2p1c3RpZnktY2VsbHMgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tZmVhdHVyZXMp KSkKKyAgICAod2l0aG91dC1yZXN0cmljdGlvbgorICAgICAgOzsgQ29sbGVjdCBjZWxsIHRleHQg YW5kIGNvbXB1dGUgbWF4IGNvbHVtbiB3aWR0aHMuCisgICAgICA7OyBEbyBub3QgdXNlIHRoZSBk ZWxpbWl0ZXIgcm93IGZvciB3aWR0aCBjb21wdXRhdGlvbi4KKyAgICAgIChkb3RpbWVzICh4IG5y b3dzKQorICAgICAgICAobGV0KiAoKHJvdyAobnRoIHggcm93cykpCisgICAgICAgICAgICAgICAo Y2VsbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkpCisgICAgICAgICAgKGRv dGltZXMgKHkgbmNvbHMpCisgICAgICAgICAgICA7OyBTa2lwIG5pbCBjZWxscy0tdGhlIHBhcnNl ciBnb3QgY29uZnVzZWQuCisgICAgICAgICAgICAod2hlbi1sZXQqICgoY2VsbCAobnRoIHkgY2Vs bHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHRleHQgKHN0cmluZy10cmltLXJpZ2h0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IGNlbGwgJ25v LXByb3BlcnR5KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAodyAobGVuZ3RoIHRleHQpKQor ICAgICAgICAgICAgICAgICAgICAgICAgKHcwIChvciAoZ2V0aGFzaCB5IGNvbC13aWR0aHMpIDAp KSkKKyAgICAgICAgICAgICAgOzsgRWxpZGUgZGVsaW1pdGVyIHdpZHRocy4KKyAgICAgICAgICAg ICAgKHVubGVzcyAoZXEgeCAxKQorICAgICAgICAgICAgICAgICh3aGVuICg+IHcgdzApCisgICAg ICAgICAgICAgICAgICAocHV0aGFzaCB5IHcgY29sLXdpZHRocykpKQorICAgICAgICAgICAgICAo cHV0aGFzaCAoY29ucyB4IHkpIHRleHQgY2VsbC10ZXh0KSkpKSkKKworICAgICAgKGxldCAoKHNv dXJjZS1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgICAgICh3aXRoLXRlbXAtYnVmZmVy CisgICAgICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgICAgICAoZG90aW1lcyAoeSBu Y29scykKKyAgICAgICAgICAgICAgKGxldCogKCh3aWR0aCAob3IgKGdldGhhc2ggeSBjb2wtd2lk dGhzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy10YWJsZS1k ZWZhdWx0LWNvbHVtbi13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAoYWxpZ24gKG9yIChw bGlzdC1nZXQgKG50aCB5IGFsaWduZXJzKSA6YWxpZ24pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICd1bnNwZWNpZmllZCkpCisgICAgICAgICAgICAgICAgICAgICA7OyBDb25mdXNl ZCBjZWxscyBoYXZlIG5pbCB0ZXh0LgorICAgICAgICAgICAgICAgICAgICAgKHRleHQgKG9yIChn ZXRoYXNoIChjb25zIHggeSkgY2VsbC10ZXh0KSAiIikpCisgICAgICAgICAgICAgICAgICAgICAo dGV4dDAgKG1hcmtkb3duLXRzLS10YWJsZS1hbGlnbi1jZWxsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRleHQgd2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGFs aWduLWNlbGxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNwZWNpZmllZCkpKSkKKyAgICAgICAgICAgICAg ICAoY29uZAorICAgICAgICAgICAgICAgICA7OyBIZWFkZXIgcm93LgorICAgICAgICAgICAgICAg ICAoKGVxIHggMCkKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQgInwiIHRleHQwKSkKKyAgICAg ICAgICAgICAgICAgOzsgRGVsaW1pdGVyIHJvdy4gIFVzZSB1bmFsaWduZWQgdGV4dC4KKyAgICAg ICAgICAgICAgICAgKChlcSB4IDEpCisgICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJ8IgorICAg ICAgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lciB3 aWR0aCBhbGlnbikpKQorICAgICAgICAgICAgICAgICA7OyBCb2R5IHJvdy4KKyAgICAgICAgICAg ICAgICAgKHQKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQgInwiIHRleHQwKSkpKSkKKyAgICAg ICAgICAgIChpbnNlcnQgInwiICJcbiIpKQorICAgICAgICAgIChsZXQgKCh0ZW1wLWJ1ZmZlciAo Y3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHNvdXJj ZS1idWZmZXIKKyAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIGJlZyBlbmQg dGVtcC1idWZmZXIpKSkpKSkKKyAgICAobWFya2Rvd24tdHMtLXRhYmxlLXRpY2stdXBkYXRlIGJl ZykpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtdHJhbnNwb3NlLXRhYmxlICgpCisgICJU cmFuc3Bvc2UgdGhlIHJvd3MgYW5kIGNvbHVtbnMgb2YgdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBv aW50LgorVXNlIHVuc3BlY2lmaWVkIGNvbHVtbiBhbGlnbm1lbnQgaW4gdGhlIHRyYW5zcG9zZWQg dGFibGUuCitJZiB0YWJsZSdzIHJvd3MgYXJlIG5vdCB1bmlmb3JtIHdpdGggdGhvc2Ugb24gdGhl IGRlbGltaXRlciByb3csIHNpZ25hbAorYW4gZXJyb3IuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8g bm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1t b2RlICdtYXJrZG93bi10cy10YWJsZS10cmFuc3Bvc2UtdGFibGUpCisgICh3aGVuLWxldCogKChh dC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgICh0 YWJsZSAoY2RyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKGJlZyAodHJlZXNpdC1ub2RlLXN0 YXJ0IHRhYmxlKSkKKyAgICAgICAgICAgICAgKGVuZCAodHJlZXNpdC1ub2RlLWVuZCB0YWJsZSkp CisgICAgICAgICAgICAgIChyb3dzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gdGFibGUgJ25hbWVk KSkKKyAgICAgICAgICAgICAgKG5yb3dzIChsZW5ndGggcm93cykpCisgICAgICAgICAgICAgIChk ZWxpbWl0ZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAgICAgICAg ICAgICAgdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9kZWxp bWl0ZXJfcm93XFwnIikpCisgICAgICAgICAgICAgIChhbGlnbmVycyAobWFya2Rvd24tdHMtLXRh YmxlLWFsaWduZXJzIHRhYmxlKSkKKyAgICAgICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1j aGlsZHJlbiBkZWxpbWl0ZXItcm93ICduYW1lZCkpCisgICAgICAgICAgICAgIChuY29scyAobGVu Z3RoIGNvbHMpKQorICAgICAgICAgICAgICAoY2VsbC10ZXh0IChtYWtlLWhhc2gtdGFibGUgOnNp emUgKCogbnJvd3MgbmNvbHMpIDp0ZXN0ICdlcXVhbCkpKQorICAgICh3aXRob3V0LXJlc3RyaWN0 aW9uCisgICAgICA7OyBDb2xsZWN0IGNlbGwgdGV4dCBhbmQgaW52ZXJ0IGNvb3JkaW5hdGVzLgor ICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgIChsZXQqICgocm93IChudGggeCByb3dz KSkKKyAgICAgICAgICAgICAgIChjZWxscyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHJvdyAnbmFt ZWQpKSkKKyAgICAgICAgICAoZG90aW1lcyAoeSBuY29scykKKyAgICAgICAgICAgIDs7IFNraXAg bmlsIGNlbGxzLS10aGUgcGFyc2VyIGdvdCBjb25mdXNlZC4KKyAgICAgICAgICAgICh3aGVuLWxl dCogKChjZWxsIChudGggeSBjZWxscykpCisgICAgICAgICAgICAgICAgICAgICAgICAodGV4dCAo c3RyaW5nLXRyaW0tcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNp dC1ub2RlLXRleHQgY2VsbCAnbm8tcHJvcGVydHkpKSkpCisgICAgICAgICAgICAgIChwdXRoYXNo IChjb25zIHkgeCkgdGV4dCBjZWxsLXRleHQpKSkpKQorCisgICAgICAobGV0ICgoc291cmNlLWJ1 ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAg ICAgICAoZG90aW1lcyAoeCBuY29scykKKyAgICAgICAgICAgIDs7IFN5bnRoZXNpemUgYSBkZWxp bWl0ZXIgcm93LgorICAgICAgICAgICAgKHdoZW4gKGVxIHggMSkKKyAgICAgICAgICAgICAgKGRv dGltZXMgKF95ICgxLSBucm93cykpCisgICAgICAgICAgICAgICAgKGluc2VydCAifCIKKyAgICAg ICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0tdGFibGUtbWFrZS1hbGlnbmVyCisgICAg ICAgICAgICAgICAgICAgICAgICAgKG1heCA1IG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1bHQtY29s dW1uLXdpZHRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNwZWNpZmllZCkpKQorICAg ICAgICAgICAgICAoaW5zZXJ0ICJ8IiAiXG4iKSkKKyAgICAgICAgICAgIChkb3RpbWVzICh5IG5y b3dzKQorICAgICAgICAgICAgICA7OyBTa2lwIHRoZSBvcmlnaW5hbCBkZWxpbWl0ZXIgcm93Lgor ICAgICAgICAgICAgICAodW5sZXNzIChlcSB5IDEpCisgICAgICAgICAgICAgICAgOzsgQ29uZnVz ZWQgY2VsbHMgaGF2ZSBuaWwgdGV4dC4KKyAgICAgICAgICAgICAgICAobGV0ICgodGV4dCAob3Ig KGdldGhhc2ggKGNvbnMgeCB5KSBjZWxsLXRleHQpICIiKSkpCisgICAgICAgICAgICAgICAgICAo aW5zZXJ0ICJ8IiB0ZXh0KSkpKQorICAgICAgICAgICAgKGluc2VydCAifCIgIlxuIikpCisgICAg ICAgICAgKGxldCAoKHRlbXAtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKQorICAgICAgICAgICAg KHdpdGgtY3VycmVudC1idWZmZXIgc291cmNlLWJ1ZmZlcgorICAgICAgICAgICAgICAocmVwbGFj ZS1yZWdpb24tY29udGVudHMgYmVnIGVuZCB0ZW1wLWJ1ZmZlcikpKSkpKQorICAgICh3aGVuIChv ciAoZXEgbWFya2Rvd24tdHMtdGFibGUtYXV0by1hbGlnbiB0KQorICAgICAgICAgICAgICAobWVt cSAndHJhbnNwb3NlIG1hcmtkb3duLXRzLXRhYmxlLWF1dG8tYWxpZ24pKQorICAgICAgKG1hcmtk b3duLXRzLXRhYmxlLWFsaWduLXRhYmxlKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUt Y29udmVydC1jc3YtcmVnaW9uICggYmVnIGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhlYWRlci1saW5lIHJlcGxhY2UpCisgICJDb252ZXJ0IHRoZSBj b21tYS1zZXBhcmF0ZWQgcmVnaW9uIEJFRyB0byBFTkQgdG8gYSBNYXJrZG93biB0YWJsZS4KK0lm IEhFQURFUi1MSU5FIGlzIG5vbi1uaWwsIHVzZSB0aGUgZmlyc3QgbGluZSBvZiB0aGUgcmVnaW9u IGFzIHRoZSB0YWJsZQorY29sdW1uIGhlYWRlci4gIElmIG5pbCwgaW5mZXIgdGhlIG51bWJlciBv ZiBjb2x1bW5zIGFuZCBzeW50aGVzaXplCitjb2x1bW4gbmFtZXMgZnJvbSB0aGUgZmlyc3QgbGlu ZS4KKworTm90ZTogQm9keSBjb2x1bW5zIGJleW9uZCB0aGUgcHJvdmlkZWQgb3IgaW5mZXJyZWQg bnVtYmVyIG9mIGNvbHVtbnMgYXJlCitkcm9wcGVkLgorCitJZiBSRVBMQUNFIGlzIG5vbi1uaWws IG92ZXJ3cml0ZSB0aGUgcmVnaW9uIEJFRyBFTkQgd2l0aCB0aGUgTWFya2Rvd24KK3RhYmxlLCBv dGhlcndpc2UgaW5zZXJ0IHRoZSB0YWJsZSBhZnRlciBFTkQuCisKK1dpdGggYSBzaW5nbGUgcHJl Zml4IGFyZ3VtZW50LCBIRUFERVItTElORSBpcyBub24tbmlsLgorV2l0aCBhIGRvdWJsZSBwcmVm aXggYXJndW1lbnQsIFJFUExBQ0UgaXMgbm9uLW5pbC4KK1dpdGggYSB0cmlwbGUgcHJlZml4IGFy Z3VtZW50LCBib3RoIGFyZSBub24tbmlsLiIKKyAgKGludGVyYWN0aXZlICJSIikKKyAgKG1hcmtk b3duLXRzLXRhYmxlLWNvbnZlcnQtcmVnaW9uIGJlZyBlbmQgaGVhZGVyLWxpbmUgcmVwbGFjZSAn Y3N2KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWNvbnZlcnQtdHN2LXJlZ2lvbiAoIGJl ZyBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0 aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFk ZXItbGluZSByZXBsYWNlKQorICAiQ29udmVydCB0aGUgdGFiLXNlcGFyYXRlZCByZWdpb24gQkVH IHRvIEVORCB0byBhIE1hcmtkb3duIHRhYmxlLgorSWYgSEVBREVSLUxJTkUgaXMgbm9uLW5pbCwg dXNlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSByZWdpb24gYXMgdGhlIHRhYmxlCitjb2x1bW4gaGVh ZGVyLiAgSWYgbmlsLCBpbmZlciB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW5kIHN5bnRoZXNpemUK K2NvbHVtbiBuYW1lcyBmcm9tIHRoZSBmaXJzdCBsaW5lLgorCitOb3RlOiBCb2R5IGNvbHVtbnMg YmV5b25kIHRoZSBwcm92aWRlZCBvciBpbmZlcnJlZCBudW1iZXIgb2YgY29sdW1ucyBhcmUKK2Ry b3BwZWQuCisKK0lmIFJFUExBQ0UgaXMgbm9uLW5pbCwgb3ZlcndyaXRlIHRoZSByZWdpb24gQkVH IEVORCB3aXRoIHRoZSBNYXJrZG93bgordGFibGUsIG90aGVyd2lzZSBpbnNlcnQgdGhlIHRhYmxl IGFmdGVyIEVORC4KKworV2l0aCBhIHNpbmdsZSBwcmVmaXggYXJndW1lbnQsIEhFQURFUi1MSU5F IGlzIG5vbi1uaWwuCitXaXRoIGEgZG91YmxlIHByZWZpeCBhcmd1bWVudCwgUkVQTEFDRSBpcyBu b24tbmlsLgorV2l0aCBhIHRyaXBsZSBwcmVmaXggYXJndW1lbnQsIGJvdGggYXJlIG5vbi1uaWwu IgorICAoaW50ZXJhY3RpdmUgIlIiKQorICAobWFya2Rvd24tdHMtdGFibGUtY29udmVydC1yZWdp b24gYmVnIGVuZCBoZWFkZXItbGluZSByZXBsYWNlICd0c3YpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtdGFibGUtY29udmVydC1yZWdpb24gKCBiZWcgZW5kCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhlYWRlci1saW5lIHJlcGxhY2UgZm9ybWF0KQorICAiQ29udmVydCB0 aGUgY29tbWEtc2VwYXJhdGVkIHJlZ2lvbiBCRUcgdG8gRU5EIHRvIGEgTWFya2Rvd24gdGFibGUu CitJZiBIRUFERVItTElORSBpcyBub24tbmlsLCB1c2UgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHJl Z2lvbiBhcyB0aGUgdGFibGUKK2NvbHVtbiBoZWFkZXIuICBJZiBuaWwsIGluZmVyIHRoZSBudW1i ZXIgb2YgY29sdW1ucyBhbmQgc3ludGhlc2l6ZQorY29sdW1uIG5hbWVzIGZyb20gdGhlIGZpcnN0 IGxpbmUuCisKK05vdGU6IEJvZHkgY29sdW1ucyBiZXlvbmQgdGhlIHByb3ZpZGVkIG9yIGluZmVy cmVkIG51bWJlciBvZiBjb2x1bW5zIGFyZQorZHJvcHBlZC4KKworSWYgUkVQTEFDRSBpcyBub24t bmlsLCBvdmVyd3JpdGUgdGhlIHJlZ2lvbiBCRUcgRU5EIHdpdGggdGhlIE1hcmtkb3duCit0YWJs ZSwgb3RoZXJ3aXNlIGluc2VydCB0aGUgdGFibGUgYWZ0ZXIgRU5ELgorCitGT1JNQVQgaXMgb25l IG9mIHRoZSBzeW1ib2xzIGBjc3YnIGZvciBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzLCBvciBgdHN2 JworZm9yIHRhYi1zZXBhcmF0ZWQgdmFsdWVzLiAgSWYgYW55IG90aGVyIHZhbHVlLCB1c2UgYGNz dicuCisKK1dpdGggYSBzaW5nbGUgcHJlZml4IGFyZ3VtZW50LCBIRUFERVItTElORSBpcyBub24t bmlsLgorV2l0aCBhIGRvdWJsZSBwcmVmaXggYXJndW1lbnQsIFJFUExBQ0UgaXMgbm9uLW5pbC4K K1dpdGggYSB0cmlwbGUgcHJlZml4IGFyZ3VtZW50LCBib3RoIGFyZSBub24tbmlsLiIKKyAgKGlu dGVyYWN0aXZlICJSIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93 bi10cy10YWJsZS1jb252ZXJ0LXJlZ2lvbikKKworICAoY29uZCAoKGVxdWFsIGN1cnJlbnQtcHJl Zml4LWFyZyAnKDQpKQorICAgICAgICAgKHNldHEgaGVhZGVyLWxpbmUgdCkpCisgICAgICAgICgo ZXF1YWwgY3VycmVudC1wcmVmaXgtYXJnICcoMTYpKQorICAgICAgICAgKHNldHEgcmVwbGFjZSB0 KSkKKyAgICAgICAgKChlcXVhbCBjdXJyZW50LXByZWZpeC1hcmcgJyg2NCkpCisgICAgICAgICAo c2V0cSBoZWFkZXItbGluZSB0CisgICAgICAgICAgICAgICByZXBsYWNlIHQpKSkKKyAgKGxldCAo cm93cykKKyAgICAoc2F2ZS1yZXN0cmljdGlvbgorICAgICAgKG5hcnJvdy10by1yZWdpb24gYmVn IGVuZCkKKyAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAod2hpbGUgKDwgKHBv aW50KSAocG9pbnQtbWF4KSkKKyAgICAgICAgKHBjYXNlIGZvcm1hdAorICAgICAgICAgICgndHN2 CisgICAgICAgICAgICAgKHB1c2gKKyAgICAgICAgICAgICAgKHNwbGl0LXN0cmluZworICAgICAg ICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQpIChwb3MtZW9s KSkgIlx0IikKKyAgICAgICAgICAgICAgcm93cykpCisgICAgICAgICAgIChfCisgICAgICAgICAg ICAobGV0IChyb3cpCisgICAgICAgICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQKKyAg ICAgICAgICAgICAgICAgICAgICAiXCJcXCg/OlteXCJdXFx8XCJcIlxcKSpcIlxcfFteLF0rXFx8 XCJcIiIKKyAgICAgICAgICAgICAgICAgICAgICAocG9zLWVvbCkgdCkKKyAgICAgICAgICAgICAg ICAocHVzaAorICAgICAgICAgICAgICAgICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCisgICAg ICAgICAgICAgICAgICAiXCJcIiIgIlwiIgorICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVn ZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICAgICJcXGBcIlxcKFwuKlxcKVwiXFwnIgor ICAgICAgICAgICAgICAgICAgICJcXDEiCisgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZy1u by1wcm9wZXJ0aWVzIChtYXRjaC1zdHJpbmcgMCkpKSkKKyAgICAgICAgICAgICAgICAgcm93KSkK KyAgICAgICAgICAgICAgKHB1c2ggKG5yZXZlcnNlIHJvdykgcm93cykpKSkKKyAgICAgICAgKGZv cndhcmQtbGluZSAxKSkKKyAgICAgICAgKHNldHEgcm93cyAobnJldmVyc2Ugcm93cykpCisgICAg ICAgIChjb25kIChyZXBsYWNlIChkZWxldGUtcmVnaW9uIGJlZyBlbmQpKQorICAgICAgICAgICAg ICAodCAoZ290by1jaGFyIGVuZCkpKQorICAgICAgICAoaWYgaGVhZGVyLWxpbmUKKyAgICAgICAg ICAgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgKDEtIChsZW5ndGggcm93cykpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggKGNhciBy b3dzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBy b3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIHJv d3MpKQorICAgICAgICAgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgKGxlbmd0aCBy b3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCAo Y2FyIHJvd3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmls CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzKSkpKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZS1jc3YgKCZvcHRpb25hbCBkaXNw bGF5KQorICAiRXhwb3J0IHRoZSBNYXJrZG93biB0YWJsZSBhdCBwb2ludCB0byBjb21tYS1zZXBh cmF0ZWQgaW4gYSBidWZmZXIuCitJZiBESVNQTEFZIGlzIG5vbi1uaWwsIG9yIHdpdGggYSBwcmVm aXggYXJndW1lbnQsIGRpc3BsYXkgdGhlIGV4cG9ydAorYnVmZmVyIGFmdGVyIGV4cG9ydGluZy4K K0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZl ICJQIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZSBkaXNwbGF5ICdjc3YpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlLXRzdiAoJm9wdGlvbmFsIGRp c3BsYXkpCisgICJFeHBvcnQgdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBvaW50IHRvIHRhYi1zZXBh cmF0ZWQgaW4gYSBidWZmZXIuCitJZiBESVNQTEFZIGlzIG5vbi1uaWwsIG9yIHdpdGggYSBwcmVm aXggYXJndW1lbnQsIGRpc3BsYXkgdGhlIGV4cG9ydAorYnVmZmVyIGFmdGVyIGV4cG9ydGluZy4K K0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZl ICJQIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZSBkaXNwbGF5ICd0c3YpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlICgmb3B0aW9uYWwgZGlzcGxh eSBmb3JtYXQpCisgICJFeHBvcnQgdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBvaW50IHRvIENTViBp biBhIGJ1ZmZlci4KK0lmIERJU1BMQVkgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1 bWVudCwgZGlzcGxheSB0aGUgZXhwb3J0CitidWZmZXIgYWZ0ZXIgZXhwb3J0aW5nLgorRk9STUFU IGlzIG9uZSBvZiB0aGUgc3ltYm9scyBgY3N2JyBmb3IgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyBh a2EgQ1NWLAorb3IgYHRzdicgZm9yIHRhYi1zZXBhcmF0ZWQgdmFsdWVzIGFrYSBUU1YuICBJZiBh bnkgb3RoZXIgdmFsdWUsIHVzZQorYGNzdicuICBJZiBUU1YsIHJlcGxhY2UgYW55IHRhYnMgd2l0 aGluIGEgZmllbGQgd2l0aCBhIHNwYWNlLgorRG8gbm90IGV4cG9ydCB0aGUgdGFibGUncyBoZWFk ZXIgZGVsaW1pdGVyIHJvdy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5n LiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2Rl ICdtYXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUpCisgICh3aGVuLWxldCogKChhdC10YWJs ZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgICh0YWJsZSAo Y2RyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKHJvd3MgKHRyZWVzaXQtbm9kZS1jaGlsZHJl biB0YWJsZSAnbmFtZWQpKQorICAgICAgICAgICAgICAoaGVhZGVyICh0cmVlc2l0LXNlYXJjaC1z dWJ0cmVlIHRhYmxlICJcXGBwaXBlX3RhYmxlX2hlYWRlclxcJyIpKQorICAgICAgICAgICAgICAo ZGVsaW1pdGVyLXJvdyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFibGUgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAg ICAgICAgICAgICAoZXhwb3J0LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC1idWZmZXIpKSkKKyAg ICAod2l0aC1jdXJyZW50LWJ1ZmZlciBleHBvcnQtYnVmZmVyCisgICAgICAoc3BlY2lhbC1tb2Rl KQorICAgICAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQpKQorICAgICAgICAod2lkZW4pCisg ICAgICAgIChlcmFzZS1idWZmZXIpCisgICAgICAgIChkb2xpc3QgKHJvdyByb3dzKQorICAgICAg ICAgICh1bmxlc3MgKGVxdWFsIHJvdyBkZWxpbWl0ZXItcm93KQorICAgICAgICAgICAgKGxldCog KChlbHRzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpCisgICAgICAgICAgICAg ICAgICAgKGxlbiAobGVuZ3RoIGVsdHMpKSkKKyAgICAgICAgICAgICAgKGRvdGltZXMgKHggbGVu KQorICAgICAgICAgICAgICAgIChsZXQgKChzIChzdHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRl eHQgKG50aCB4IGVsdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnbm8tcHJvcGVydHkpKSkpCisgICAgICAgICAgICAgICAgICAocGNh c2UgZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICgndHN2CisgICAgICAgICAgICAgICAgICAg ICAoaW5zZXJ0IChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIlx0IiAiXHMiIHMpKQorICAgICAg ICAgICAgICAgICAgICAgKHdoZW4gKDwgeCAoMS0gbGVuKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgKGluc2VydCAiXHQiKSkpCisgICAgICAgICAgICAgICAgICAgIChfCisgICAgICAgICAgICAg ICAgICAgICAoaW5zZXJ0CisgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2gg IltcIixdIiBzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJcIiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY29uY2F0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdpZGVudGl0eSAoc3BsaXQtc3RyaW5nIHMgIlwiIikgIlwiXCIi KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiIpCisgICAgICAgICAgICAg ICAgICAgICAgICBzKSkKKyAgICAgICAgICAgICAgICAgICAgICh3aGVuICg8IHggKDEtIGxlbikp CisgICAgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgIiwiKSkpKSkpCisgICAgICAgICAgICAg IChpbnNlcnQgIlxuIikpKSkKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkpKQorICAg ICh3aGVuIGRpc3BsYXkKKyAgICAgIChkaXNwbGF5LWJ1ZmZlciBleHBvcnQtYnVmZmVyKSkpKQor Cis7OzsgSGVscGVyczoKKworKGRlZnVuIG1hcmtkb3duLXRzLS1vdXRsaW5lLWludmlzaWJsZS1w IChwb3MpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBQT1MgaXMgaW5zaWRlIGFuIG91dGxpbmUtZm9s ZGVkIHJlZ2lvbi4iCisgIChjbC1zb21lIChsYW1iZGEgKG92KSAoZXEgKG92ZXJsYXktZ2V0IG92 ICdpbnZpc2libGUpICdvdXRsaW5lKSkKKyAgICAgICAgICAgKG92ZXJsYXlzLWF0IHBvcykpKQog CiAoZGVmdW4gbWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdzICgpCiAgICJSZXR1cm4gcmFuZ2Ug c2V0dGluZ3MgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCi0gICh0cmVlc2l0LXJhbmdlLXJ1bGVz Ci0gICA6ZW1iZWQgJ21hcmtkb3duLWlubGluZQotICAgOmhvc3QgJ21hcmtkb3duCi0gICA6cmFu Z2UtZm4gIyd0cmVlc2l0LXJhbmdlLWZuLWV4Y2x1ZGUtY2hpbGRyZW4KLSAgICcoKGlubGluZSkg QG1hcmtkb3duLWlubGluZSkKLQotICAgOmVtYmVkICMnbWFya2Rvd24tdHMtLWNvbnZlcnQtY29k ZS1ibG9jay1sYW5ndWFnZQotICAgOmhvc3QgJ21hcmtkb3duCi0gICA6bG9jYWwgdAotICAgJygo ZmVuY2VkX2NvZGVfYmxvY2sgKGluZm9fc3RyaW5nIChsYW5ndWFnZSkgQGxhbmd1YWdlKQotICAg ICAgICAgICAgICAgICAgICAgICAgKGNvZGVfZmVuY2VfY29udGVudCkgQGNvbnRlbnQpKSkpCisg IChhcHBseQorICAgIyd0cmVlc2l0LXJhbmdlLXJ1bGVzCisgICBgKDplbWJlZCBtYXJrZG93bi1p bmxpbmUKKyAgICAgOmhvc3QgbWFya2Rvd24KKyAgICAgKChpbmxpbmUpIEBtYXJrZG93bi1pbmxp bmUpCisgICAgICxAKHdoZW4gbWFya2Rvd24tdHMtZm9udGlmeS1jb2RlLWJsb2Nrcy1uYXRpdmVs eQorICAgICAgICAgJyg6ZW1iZWQgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UK KyAgICAgICAgICAgOmhvc3QgbWFya2Rvd24KKyAgICAgICAgICAgOmxvY2FsIHQKKyAgICAgICAg ICAgKChmZW5jZWRfY29kZV9ibG9jayAoaW5mb19zdHJpbmcgKGxhbmd1YWdlKSBAbGFuZ3VhZ2Up CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvZGVfZmVuY2VfY29udGVudCkgQGNv bnRlbnQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlz ICgpCisgICJSZW1vdmUgYWxsIGlubGluZSBpbWFnZSBvdmVybGF5cyBmcm9tIHRoZSBjdXJyZW50 IGJ1ZmZlci4iCisgIChkb2xpc3QgKG92IChvdmVybGF5cy1pbiAocG9pbnQtbWluKSAocG9pbnQt bWF4KSkpCisgICAgKHdoZW4gKG92ZXJsYXktZ2V0IG92ICdtYXJrZG93bi10cy1pbWFnZSkKKyAg ICAgIChkZWxldGUtb3ZlcmxheSBvdikpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1vdXRsaW5l LXZpZXctY2hhbmdlICgpCisgICJVcGRhdGUgaW1hZ2Ugb3ZlcmxheXMgYWZ0ZXIgb3V0bGluZSBm b2xkL3VuZm9sZC4KK1JlbW92ZXMgaW1hZ2Ugb3ZlcmxheXMgaW4gZm9sZGVkIHJlZ2lvbnMgYW5k IHRyaWdnZXJzCityZWZvbnRpZmljYXRpb24gc28gdGhhdCBpbWFnZXMgaW4gdW5mb2xkZWQgcmVn aW9ucyBhcmUgcmVjcmVhdGVkLiIKKyAgKHdoZW4gbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcwor ICAgIChtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlzKQorICAgIChmb250LWxvY2st Zmx1c2gpKSkKIAogKGRlZnVuIG1hcmtkb3duLXRzLS1zZXQtaGlkZS1tYXJrdXAgKHZhbHVlKQog ICAiU2V0IGhpZGluZyBvZiBNYXJrZG93biBtYXJrdXAgZGVsaW1pdGVycyBpbiB0aGUgY3VycmVu dCBidWZmZXIuCkBAIC0zNDgsNiArNDU5Niw4IEBAIG1hcmtkb3duLXRzLS1zZXQtaGlkZS1tYXJr dXAKICAgKGlmIHZhbHVlCiAgICAgICAoYWRkLXRvLWludmlzaWJpbGl0eS1zcGVjICdtYXJrZG93 bi10cy0tbWFya3VwKQogICAgIChyZW1vdmUtZnJvbS1pbnZpc2liaWxpdHktc3BlYyAnbWFya2Rv d24tdHMtLW1hcmt1cCkpCisgICh3aGVuIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMKKyAgICAo bWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cykpCiAgIChmb250LWxvY2stZmx1c2gp KQogCiAoZGVmdW4gbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUtbWFya3VwICgpCkBAIC0zNTYsMTIy ICs0NjA2LDcyNiBAQCBtYXJrZG93bi10cy10b2dnbGUtaGlkZS1tYXJrdXAKICAgKHNldHEgbWFy a2Rvd24tdHMtaGlkZS1tYXJrdXAgKG5vdCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkpCiAgICht YXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwKSkKIAor KGRlZnVuIG1hcmtkb3duLXRzLS1zZXQtaW5saW5lLWltYWdlcyAodmFsdWUpCisgICJTZXQgZGlz cGxheSBvZiBpbmxpbmUgaW1hZ2VzIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4KK1ZBTFVFIG5vbi1u aWwgZGlzcGxheXMgaW1hZ2VzLCBuaWwgcmVtb3ZlcyB0aGVtLiIKKyAgKGlmIHZhbHVlCisgICAg ICAodHJlZXNpdC1mb250LWxvY2stcmVjb21wdXRlLWZlYXR1cmVzICcoaW1hZ2UtcHJldmlldykp CisgICAgKHRyZWVzaXQtZm9udC1sb2NrLXJlY29tcHV0ZS1mZWF0dXJlcyBuaWwgJyhpbWFnZS1w cmV2aWV3KSkpCisgIChtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlzKQorICAoZm9u dC1sb2NrLWZsdXNoKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRvZ2dsZS1pbmxpbmUtaW1hZ2Vz ICgpCisgICJUb2dnbGUgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGluIHRoZSBjdXJyZW50IGJ1 ZmZlci4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHNldHEgbWFya2Rvd24tdHMtaW5saW5lLWltYWdl cyAobm90IG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMpKQorICAobWFya2Rvd24tdHMtLXNldC1p bmxpbmUtaW1hZ2VzIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMpCisgIChtZXNzYWdlICJJbmxp bmUgaW1hZ2VzICVzIiAoaWYgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJlbmFibGVkIiAiZGlzYWJsZWQiKSkpCisKKzs7OyBFbXBo YXNpczoKKworKGRlZnZhciBtYXJrZG93bi10cy1lbXBoYXNpcy1hbGlzdAorICAnKCg/YiAuICIq KiIpCisgICAgKD9CIC4gIl9fIikKKyAgICAoP2kgLiAiKiIpCisgICAgKD9JIC4gIl8iKQorICAg ICg/cyAuICJ+fiIpCisgICAgKD9jIC4gImAiKQorICAgICg/YSAuICIqKioiKSkKKyAgIkFsaXN0 IG9mIGVtcGhhc2lzIG1hcmtlcnMgZm9yIGBtYXJrZG93bi10cy1lbXBoYXNpemUnLgorRWFjaCBl bnRyeSBpcyAoS0VZIC4gTUFSS0VSKSB3aGVyZSBLRVkgaXMgYSBjaGFyYWN0ZXIgKG5vdCBhIHN0 cmluZykgYW5kCitNQVJLRVIgaXMgdGhlIE1hcmtkb3duIGVtcGhhc2l6ZWQgdGV4dCBwcmVmaXgv c3VmZml4LiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZW1waGFzaXMtbm9kZS1hdC1wb2ludCAo KQorICAiUmV0dXJuIHRoZSBlbXBoYXNpcyBub2RlIGF0IHBvaW50LCBvciBuaWwuCitGaW5kcyB0 aGUgaW5uZXJtb3N0IGBlbXBoYXNpcycsIGBzdHJvbmdfZW1waGFzaXMnLAorYHN0cmlrZXRocm91 Z2gnLCBvciBgY29kZV9zcGFuJyBub2RlLiIKKyAgKHdoZW4tbGV0KiAoKG5vZGUgKHRyZWVzaXQt bm9kZS1hdCAocG9pbnQpICdtYXJrZG93bi1pbmxpbmUpKSkKKyAgICAodHJlZXNpdC1wYXJlbnQt dW50aWwKKyAgICAgbm9kZSAobGFtYmRhIChuKQorICAgICAgICAgICAgKG1lbWJlciAodHJlZXNp dC1ub2RlLXR5cGUgbikKKyAgICAgICAgICAgICAgICAgICAgJygiZW1waGFzaXMiICJzdHJvbmdf ZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgInN0cmlrZXRocm91Z2giICJjb2RlX3Nw YW4iKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMgKCkKKyAgIlJl bW92ZSBlbXBoYXNpcyBhcm91bmQgcG9pbnQgb3IgcmVnaW9uLgorV2l0aCBhbiBhY3RpdmUgcmVn aW9uLCBzdHJpcCB0aGUgb3V0ZXJtb3N0IGVtcGhhc2lzIG1hcmtlcnMgZnJvbQordGhlIHNlbGVj dGVkIHRleHQuICBXaXRob3V0IGEgcmVnaW9uLCBmaW5kIHRoZSBlbXBoYXNpcyBub2RlIGF0Citw b2ludCB1c2luZyB0cmVlLXNpdHRlciBhbmQgcmVtb3ZlIGl0cyBtYXJrZXJzLiIKKyAgKGludGVy YWN0aXZlKQorICAoaWYgKHVzZS1yZWdpb24tcCkKKyAgICAgIChsZXQqICgoYmVnIChyZWdpb24t YmVnaW5uaW5nKSkKKyAgICAgICAgICAgICAoZW5kIChyZWdpb24tZW5kKSkKKyAgICAgICAgICAg ICAodGV4dCAoYnVmZmVyLXN1YnN0cmluZyBiZWcgZW5kKSkKKyAgICAgICAgICAgICAoc3RyaXBw ZWQgbmlsKSkKKyAgICAgICAgKGNsLWxvb3AgZm9yIChfa2V5IC4gbSkgaW4gKHNvcnQgKGNvcHkt c2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtk b3duLXRzLWVtcGhhc2lzLWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhIChhIGIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKD4gKGxlbmd0aCAoY2RyIGEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsZW5ndGggKGNkciBiKSkpKSkKKyAgICAgICAgICAgICAgICAg Zm9yIHJlID0gKGNvbmNhdCAiXFxgIiAocmVnZXhwLXF1b3RlIG0pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlxcKFxcKD86LlxcfFxuXFwpKlxcKSIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAocmVnZXhwLXF1b3RlIG0pICJcXCciKQorICAgICAgICAgICAg ICAgICB3aGVuIChzdHJpbmctbWF0Y2ggcmUgdGV4dCkKKyAgICAgICAgICAgICAgICAgZG8gKHNl dHEgc3RyaXBwZWQgKG1hdGNoLXN0cmluZyAxIHRleHQpKQorICAgICAgICAgICAgICAgICBhbmQg cmV0dXJuIG5pbCkKKyAgICAgICAgKHdoZW4gc3RyaXBwZWQKKyAgICAgICAgICAoZGVsZXRlLXJl Z2lvbiBiZWcgZW5kKQorICAgICAgICAgIChpbnNlcnQgc3RyaXBwZWQpKSkKKyAgICA7OyBGaW5k IHRoZSBvdXRlcm1vc3QgZW1waGFzaXMgbm9kZSBhdCBwb2ludC4KKyAgICAod2hlbi1sZXQqICgo aW5uZXIgKG1hcmtkb3duLXRzLS1lbXBoYXNpcy1ub2RlLWF0LXBvaW50KSkKKyAgICAgICAgICAg ICAgICAobm9kZSAobGV0ICgobiBpbm5lcikpCisgICAgICAgICAgICAgICAgICAgICAgICAod2hp bGUgKGxldCAoKHBhcmVudCAodHJlZXNpdC1ub2RlLXBhcmVudCBuKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIHBhcmVudAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtYmVyICh0cmVlc2l0LW5vZGUtdHlwZSBwYXJl bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JygiZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAic3Ryb25nX2VtcGhhc2lzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmlrZXRocm91Z2giCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29kZV9zcGFuIikpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBuIHBhcmVudCkpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIG4pKQorICAgICAgICAgICAgICAgIChzdGFydCAodHJlZXNp dC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAgIChlbmQgKHRyZWVzaXQtbm9kZS1l bmQgbm9kZSkpCisgICAgICAgICAgICAgICAgKHRleHQgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUg dCkpCisgICAgICAgICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAg ICAgICAgICAgICAgIChtbGVuIChwY2FzZSB0eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAo InN0cm9uZ19lbXBoYXNpcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1w cmVmaXgtcCAiXyIgdGV4dCkgMiAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICgiZW1waGFz aXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctcHJlZml4LXAgIl8iIHRl eHQpIDEgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoInN0cmlrZXRocm91Z2giIDIpCisg ICAgICAgICAgICAgICAgICAgICAgICAoImNvZGVfc3BhbiIgMSkpKQorICAgICAgICAgICAgICAg IChpbm5lci10ZXh0IChzdWJzdHJpbmcgdGV4dCBtbGVuICgtIChsZW5ndGggdGV4dCkgbWxlbikp KSkKKyAgICAgIChsZXQgKChvZmZzZXQgKC0gKHBvaW50KSBzdGFydCBtbGVuKSkpCisgICAgICAg IChkZWxldGUtcmVnaW9uIHN0YXJ0IGVuZCkKKyAgICAgICAgKGdvdG8tY2hhciBzdGFydCkKKyAg ICAgICAgKGluc2VydCBpbm5lci10ZXh0KQorICAgICAgICAoZ290by1jaGFyICgrIHN0YXJ0ICht YXggMCBvZmZzZXQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1lbXBoYXNpemUgKCZvcHRp b25hbCBjaGFyKQorICAiSW5zZXJ0IG9yIGNoYW5nZSBlbXBoYXNpcyBvbiB0ZXh0LgorSWYgdGhl cmUgaXMgYW4gYWN0aXZlIHJlZ2lvbiwgd3JhcCBpdCB3aXRoIGVtcGhhc2lzIG1hcmtlcnMuCitJ ZiB0aGVyZSBpcyBubyByZWdpb24sIGluc2VydCBtYXJrZXIgcGFpcnMgYW5kIHBsYWNlIHBvaW50 IGJldHdlZW4KK3RoZW0uICBDSEFSIHNlbGVjdHMgdGhlIGVtcGhhc2lzIHR5cGU6CisKKyAgYiAg ICoqYm9sZCoqICAgICAgIEIgIF9fYm9sZF9fCisgIGkgICAqaXRhbGljKiAgICAgICBJICBfaXRh bGljXworICBhICAgKioqYm9sZCtpdGFsaWMqKioKKyAgcyAgIH5+c3RyaWtldGhyb3VnaH5+Cisg IGMgICBgY29kZWAKKyAgU1BDIHJlbW92ZSBlbXBoYXNpcyBhdCBwb2ludCBvciByZWdpb24iCisg IChpbnRlcmFjdGl2ZQorICAgImNFbXBoYXNpcyBbYl1vbGQgW0Jdb2xkXyBbaV10YWxpYyBbSV10 YWxpY18gW2FdbGwgW3NddHJpa2UgW2Ndb2RlIFNQQyByZW1vdmU6IikKKyAgKGlmIChlcSBjaGFy ID9ccykKKyAgICAgIChtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMpCisgICAgKGlmLWxldCog KChtYXJrZXIgKGNkciAoYXNzcSBjaGFyIG1hcmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0KSkpKQor ICAgICAgICAoaWYgKHVzZS1yZWdpb24tcCkKKyAgICAgICAgICAgIChsZXQgKChiZWcgKHJlZ2lv bi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgICAgICAgKGVuZCAoY29weS1tYXJrZXIgKHJlZ2lv bi1lbmQpKSkpCisgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAg IChnb3RvLWNoYXIgZW5kKQorICAgICAgICAgICAgICAgIChpbnNlcnQgbWFya2VyKQorICAgICAg ICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgICAgICAgIChpbnNlcnQgbWFya2Vy KSkpCisgICAgICAgICAgKGlmLWxldCogKChib3VuZHMgKGJvdW5kcy1vZi10aGluZy1hdC1wb2lu dCAnd29yZCkpKQorICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChjZHIgYm91bmRzKSkKKyAgICAgICAgICAgICAgICAoaW5zZXJ0IG1hcmtl cikKKyAgICAgICAgICAgICAgICAoZ290by1jaGFyIChjYXIgYm91bmRzKSkKKyAgICAgICAgICAg ICAgICAoaW5zZXJ0IG1hcmtlcikpCisgICAgICAgICAgICAoaW5zZXJ0IG1hcmtlciBtYXJrZXIp CisgICAgICAgICAgICAoYmFja3dhcmQtY2hhciAobGVuZ3RoIG1hcmtlcikpKSkKKyAgICAgICh1 c2VyLWVycm9yICJObyBzdWNoIGVtcGhhc2lzIG1hcmtlcjogJWMiIGNoYXIpKSkpCisKKzs7OyBC bG9jayBzdHJ1Y3R1cmU6CisKKyhkZWZ1biBtYXJrZG93bi10cy1pbnNlcnQtc3RydWN0dXJlICgm b3B0aW9uYWwgY2hhcikKKyAgIkluc2VydCBhIGJsb2NrIHN0cnVjdHVyZS4KK0lmIHRoZXJlIGlz IGFuIGFjdGl2ZSByZWdpb24sIHdyYXAgaXQuICBPdGhlcndpc2UsIGluc2VydCBhbiBlbXB0eQor YmxvY2sgYW5kIHBsYWNlIHBvaW50IGluc2lkZS4gIENIQVIgc2VsZWN0cyB0aGUgc3RydWN0dXJl IHR5cGU6CisKKyAgYCAgZmVuY2VkIGNvZGUgYmxvY2sgKGBgYCkKKyAgfiAgdGlsZGUgZmVuY2Vk IGNvZGUgYmxvY2sgKH5+fikKKyAgcSAgYmxvY2sgcXVvdGUgKD4gKQorICBkICBob3Jpem9udGFs IGRpdmlkZXIvcnVsZSAoLS0tKQorICB0ICB0YWJsZSIKKyAgKGludGVyYWN0aXZlCisgICAiY1N0 cnVjdHVyZSBbYF1iYWNrLXRpY2sgY29kZSBibG9jayBbfl10aWxkZSBjb2RlIGJsb2NrIFtxXXVv dGUgW2RdaXZpZGVyIFt0XWFibGU6IikKKyAgKHBjYXNlIGNoYXIKKyAgICAoP2AgKG1hcmtkb3du LXRzLS1pbnNlcnQtY29kZS1ibG9jayA/YCkpCisgICAgKD9+IChtYXJrZG93bi10cy0taW5zZXJ0 LWNvZGUtYmxvY2sgP34pKQorICAgICg/cSAobWFya2Rvd24tdHMtLWluc2VydC1ibG9jay1xdW90 ZSkpCisgICAgKD9kIChtYXJrZG93bi10cy0taW5zZXJ0LWRpdmlkZXIpKQorICAgICg/dCAobWFy a2Rvd24tdHMtdGFibGUtaW5zZXJ0LXRhYmxlKSkKKyAgICAoXyAodXNlci1lcnJvciAiTm8gc3Vj aCBzdHJ1Y3R1cmU6ICVjIiBjaGFyKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWluc2VydC1j b2RlLWJsb2NrIChjaGFyICZvcHRpb25hbCBsYW5ndWFnZSkKKyAgIkluc2VydCBhIGZlbmNlZCBj b2RlIGJsb2NrIHVzaW5nIGEgQ0hBUiBzZXF1ZW5jZS4KK0NIQVIgc2hvdWxkIGJlIG9uZSBvZiBh IGJhY2t0aWNrIG9yIGEgdGlsZGUuCitMQU5HVUFHRSBpcyBhIHdoaXRlc3BhY2UgZnJlZSBsYW5n dWFnZSBzdHJpbmcuIgorICAoc2V0cSBsYW5ndWFnZQorICAgICAgICAob3IgbGFuZ3VhZ2UKKyAg ICAgICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAiW1s6Ymxh bms6XV0iICIiCisgICAgICAgICAgICAgKGxldCAoKGNvbXBsZXRpb24taWdub3JlLWNhc2Ugbmls KQorICAgICAgICAgICAgICAgICAgIChjYW5kaWRhdGVzCisgICAgICAgICAgICAgICAgICAgIChz ZXEtbWFwCisgICAgICAgICAgICAgICAgICAgICAjJ3N5bWJvbC1uYW1lCisgICAgICAgICAgICAg ICAgICAgICAoc2VxLXVuaXEKKyAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIChtYXBjYXIg IydjYXIgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2VzKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG1hcGNhciAjJ2NhciBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24t dHMtbW9kZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyICMnY2FyIG1h cmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMpKSkpKSkKKyAgICAgICAgICAgICAgIChjb21wbGV0 aW5nLXJlYWQKKyAgICAgICAgICAgICAgICAiQ29kZSBibG9jayBsYW5ndWFnZTogIgorICAgICAg ICAgICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAg ICAnY29uZmlybSA7IFByb21wdCBpZiB0aGUgbGFuZ3VhZ2UgaXMgbm90IG9uIG91ciBsaXN0Lgor ICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1sYW5ndWFn ZS1oaXN0b3J5KSkpKSkKKyAgKGxldCAoKGZlbmNlLXN0cmluZyAobWFrZS1zdHJpbmcgMyBjaGFy KSkpCisgICAgKGlmICh1c2UtcmVnaW9uLXApCisgICAgICAgIChsZXQgKChiZWcgKHJlZ2lvbi1i ZWdpbm5pbmcpKQorICAgICAgICAgICAgICAoZW5kIChyZWdpb24tZW5kKSkpCisgICAgICAgICAg KHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAoZ290by1jaGFyIGVuZCkKKyAgICAgICAgICAg ICh1bmxlc3MgKGJvbHApIChpbnNlcnQgIlxuIikpCisgICAgICAgICAgICAoaW5zZXJ0IGZlbmNl LXN0cmluZyAiXG4iKQorICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAgICAgICAo aW5zZXJ0IGZlbmNlLXN0cmluZyBsYW5ndWFnZSAiXG4iKSkpCisgICAgICAoaW5zZXJ0IGZlbmNl LXN0cmluZyBsYW5ndWFnZSAiXG5cbiIgZmVuY2Utc3RyaW5nKQorICAgICAgKGZvcndhcmQtbGlu ZSAtMSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbnNlcnQtYmxvY2stcXVvdGUgKCkKKyAg Ikluc2VydCBhIGJsb2NrIHF1b3RlLiIKKyAgKGlmICh1c2UtcmVnaW9uLXApCisgICAgICAobGV0 ICgoYmVnIChyZWdpb24tYmVnaW5uaW5nKSkKKyAgICAgICAgICAgIChlbmQgKGNvcHktbWFya2Vy IChyZWdpb24tZW5kKSkpKQorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAoZ290 by1jaGFyIGJlZykKKyAgICAgICAgICAod2hpbGUgKDwgKHBvaW50KSBlbmQpCisgICAgICAgICAg ICAoaW5zZXJ0ICI+ICIpCisgICAgICAgICAgICAoZm9yd2FyZC1saW5lIDEpKSkpCisgICAgKGlu c2VydCAiPiAiKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW5zZXJ0LWRpdmlkZXIgKCkKKyAg Ikluc2VydCBhIGhvcml6b250YWwgcnVsZS4iCisgICh1bmxlc3MgKGJvbHApIChpbnNlcnQgIlxu IikpCisgIChpbnNlcnQgIlxuLS0tXG5cbiIpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWFwcGx5 LWVsbGlwc2lzICgpCisgICJBcHBseSBgbWFya2Rvd24tdHMtZWxsaXBzaXMnIHRvIHRoZSBjdXJy ZW50IGJ1ZmZlcidzIGRpc3BsYXkgdGFibGUuIgorICAoaWYgKGFuZCAoc3RyaW5ncCBtYXJrZG93 bi10cy1lbGxpcHNpcykKKyAgICAgICAgICAgKG5vdCAoc3RyaW5nLWVtcHR5LXAgbWFya2Rvd24t dHMtZWxsaXBzaXMpKSkKKyAgICAgIChsZXQgKCh0YWJsZSAob3IgYnVmZmVyLWRpc3BsYXktdGFi bGUKKyAgICAgICAgICAgICAgICAgICAgICAgKG1ha2UtZGlzcGxheS10YWJsZSkpKSkKKyAgICAg ICAgKHNldC1kaXNwbGF5LXRhYmxlLXNsb3QKKyAgICAgICAgIHRhYmxlIDQKKyAgICAgICAgICh2 Y29uY2F0IChtYXBjYXIgKGxhbWJkYSAoYykgKG1ha2UtZ2x5cGgtY29kZSBjICdzaGFkb3cpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1lbGxpcHNpcykpKQorICAgICAg ICAoc2V0cSBidWZmZXItZGlzcGxheS10YWJsZSB0YWJsZSkpCisgICAgKHdoZW4gYnVmZmVyLWRp c3BsYXktdGFibGUKKyAgICAgIChzZXQtZGlzcGxheS10YWJsZS1zbG90IGJ1ZmZlci1kaXNwbGF5 LXRhYmxlIDQgbmlsKSkpKQorCis7OzsgTWFqb3IgbW9kZToKKworKGRlZnVuIG1hcmtkb3duLXRz LW91dGxpbmUtY3ljbGUgKCkKKyAgIkN5Y2xlIHZpc2liaWxpdHkgb2YgdGhlIGhlYWRpbmcgYXQg cG9pbnQuCitPbiBhIGhlYWRpbmcsIGNhbGwgYG91dGxpbmUtY3ljbGUnLiAgT3RoZXJ3aXNlIGRv IG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgICh3aGVuIChvdXRsaW5lLW9uLWhlYWRpbmct cCkKKyAgICAob3V0bGluZS1jeWNsZSkpKQorCisoZGVmdmFyLWtleW1hcCBtYXJrZG93bi10cy1t b2RlLW1hcAorICA6ZG9jICJLZXltYXAgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCisgICJNLTxs ZWZ0PiIgICAgIydtYXJrZG93bi10cy1wcm9tb3RlCisgICJNLTxyaWdodD4iICAgIydtYXJrZG93 bi10cy1kZW1vdGUKKyAgIk0tPHVwPiIgICAgICAjJ21hcmtkb3duLXRzLW1vdmUtc3VidHJlZS11 cAorICAiTS08ZG93bj4iICAgICMnbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLWRvd24KKyAgIkMt YyBDLW4iICAgICAjJ291dGxpbmUtbmV4dC1oZWFkaW5nCisgICJDLWMgQy1wIiAgICAgIydvdXRs aW5lLXByZXZpb3VzLWhlYWRpbmcKKyAgIkMtYyBDLXUiICAgICAjJ291dGxpbmUtdXAtaGVhZGlu ZworICAiQy1jIEMtZiIgICAgICMnb3V0bGluZS1mb3J3YXJkLXNhbWUtbGV2ZWwKKyAgIkMtYyBD LWIiICAgICAjJ291dGxpbmUtYmFja3dhcmQtc2FtZS1sZXZlbAorICAiQy1jIEMteCBDLWYiICMn bWFya2Rvd24tdHMtZW1waGFzaXplCisgICJDLWMgQy14IEMtbSIgIydtYXJrZG93bi10cy10b2dn bGUtaGlkZS1tYXJrdXAKKyAgIkMtYyBDLXggQy12IiAjJ21hcmtkb3duLXRzLXRvZ2dsZS1pbmxp bmUtaW1hZ2VzCisgICJDLWMgQy1jIiAgICAgIydtYXJrZG93bi10cy10b2dnbGUtY2hlY2tib3gK KyAgIkMtYyBDLXIiICAgICAjJ21hcmtkb3duLXRzLXJlbnVtYmVyLWxpc3QKKyAgIkMtYyBDLSwi ICAgICAjJ21hcmtkb3duLXRzLWluc2VydC1zdHJ1Y3R1cmUKKyAgIkMtYyBDLXYgbiIgICAjJ21h cmtkb3duLXRzLW1vdmUtdG8tbmV4dC1jb2RlLWJsb2NrCisgICJDLWMgQy12IHAiICAgIydtYXJr ZG93bi10cy1tb3ZlLXRvLXByZXZpb3VzLWNvZGUtYmxvY2sKKyAgIlJFVCIgICAgICAgICAjJ21h cmtkb3duLXRzLW5ld2xpbmUKKyAgIk0tUkVUIiAgICAgICAjJ21hcmtkb3duLXRzLWluc2VydC1s aXN0LWl0ZW0KKyAgIlRBQiIgICAgICAgICAjJ21hcmtkb3duLXRzLW91dGxpbmUtY3ljbGUpCisK KyhkZWZ2YXIta2V5bWFwIG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW1h cAorICA6ZG9jICJLZXltYXAgZm9yIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQt bW9kZScuCitUaGVzZSBvdmVycmlkZSBrZXlzIGluIGBtYXJrZG93bi10cy1tb2RlLW1hcCcgdG8g c3VwcG9ydCBleGVjdXRpbmcgdGhlaXIKK2NvbW1hbmRzIGluIGEgY29kZS1ibG9jayBjb250ZXh0 LiIKKyAgOnBhcmVudCBtYXJrZG93bi10cy1tb2RlLW1hcAorICA6bWVudSBuaWwKKyAgIk0tLiIg ICAgICAgICAjJ21hcmtkb3duLXRzLS1jb2RlLWJsb2NrLXhyZWYtZmluZC1kZWZpbml0aW9ucwor ICAiVEFCIiAgICAgICAgICMnaW5kZW50LWZvci10YWItY29tbWFuZAorICAiUkVUIiAgICAgICAg ICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiQy1qIiAgICAgICAgICMnbWFy a2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiTS1SRVQiICAgICAgICMnbWFya2Rvd24t dHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiTS1xIiAgICAgICAgICMnbWFya2Rvd24tdHMtLWNv ZGUtYmxvY2stZmlsbC1wYXJhZ3JhcGgpCisKKyhkZWZ2YXIta2V5bWFwIG1hcmtkb3duLXRzLWlu LXRhYmxlLW1vZGUtbWFwCisgIDpkb2MgIktleW1hcCBmb3IgYG1hcmtkb3duLXRzLWluLXRhYmxl LW1vZGUnLgorVGhlc2Ugb3ZlcnJpZGUga2V5cyBpbiBgbWFya2Rvd24tdHMtbW9kZS1tYXAnIHRv IHN1cHBvcnQgZXhlY3V0aW5nIHRoZWlyCitjb21tYW5kcyBpbiBhIHRhYmxlIGNvbnRleHQuIgor ICA6cGFyZW50IG1hcmtkb3duLXRzLW1vZGUtbWFwCisgIDptZW51IG5pbAorICAiPHJldHVybj4i ICAgICMnbWFya2Rvd24tdHMtdGFibGUtbmV4dC1yb3cKKyAgIlMtPHJldHVybj4iICAjJ21hcmtk b3duLXRzLXRhYmxlLXByZXZpb3VzLXJvdworICAiPHRhYj4iICAgICAgICMnbWFya2Rvd24tdHMt dGFibGUtbmV4dC1jZWxsCisgICI8YmFja3RhYj4iICAgIydtYXJrZG93bi10cy10YWJsZS1wcmV2 aW91cy1jZWxsCisgICJNLTx1cD4iICAgICAgIydtYXJrZG93bi10cy10YWJsZS1tb3ZlLXJvdy11 cAorICAiTS08ZG93bj4iICAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3ctZG93bgorICAi TS08bGVmdD4iICAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tbGVmdAorICAiTS08 cmlnaHQ+IiAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tcmlnaHQKKyAgIk0tUy08 dXA+IiAgICAjJ21hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYWJvdmUKKyAgIk0tUy08ZG93 bj4iICAjJ21hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1yb3cKKyAgIk0tUy08cmlnaHQ+IiAjJ21h cmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tbGVmdAorICAiTS1TLTxsZWZ0PiIgICMnbWFy a2Rvd24tdHMtdGFibGUtZGVsZXRlLWNvbHVtbgorICAiQy1jIEMtdCBhIiAgICMnbWFya2Rvd24t dHMtdGFibGUtYWxpZ24tY29sdW1uCisgICJDLWMgQy1jIiAgICAgIydtYXJrZG93bi10cy10YWJs ZS1hbGlnbi10YWJsZQorICAiQy1jIEMtdCB0IiAgICMnbWFya2Rvd24tdHMtdGFibGUtdHJhbnNw b3NlLXRhYmxlKQorCisoZWFzeS1tZW51LWRlZmluZSBtYXJrZG93bi10cy1tb2RlLW1lbnUgbWFy a2Rvd24tdHMtbW9kZS1tYXAKKyAgImBtYXJrZG93bi10cy1tb2RlJyBtZW51LiIKKyAgJygiTWFy a2Rvd24iIDp2aXNpYmxlIG1hcmtkb3duLXRzLW1lbnUtYmFyLXNob3cKKyAgICAiLS0iCisgICAg WyJDeWNsZSBPdXRsaW5lIFZpc2liaWxpdHkiICBtYXJrZG93bi10cy1vdXRsaW5lLWN5Y2xlICAg ICAgICAgICAgICA6aGVscCAiQ3ljbGUgaGVhZGluZyB2aXNpYmlsaXR5IGZyb20gcG9pbnQiXQor ICAgIFsiVG9nZ2xlIEhpZGUgTWFya3VwIiAgICAgICAgbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUt bWFya3VwICAgICAgICAgOmhlbHAgIlRvZ2dsZSBkaXNwbGF5IG9mIG1hcmt1cCBjaGFyYWN0ZXJz IiA6c3R5bGUgdG9nZ2xlIDpzZWxlY3RlZCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cF0KKyAgICBb IlRvZ2dsZSBJbmxpbmUgSW1hZ2VzIiAgICAgIG1hcmtkb3duLXRzLXRvZ2dsZS1pbmxpbmUtaW1h Z2VzICAgICAgIDpoZWxwICJUb2dnbGUgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGJlbG93IGxp bmtzIiA6c3R5bGUgdG9nZ2xlIDpzZWxlY3RlZCBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzXQor ICAgICItLSIKKyAgICBbIlVwIiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmUtdXAtaGVh ZGluZyAgICAgICAgICAgICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwYXJlbnQgaGVhZGlu ZyJdCisgICAgWyJOZXh0IiAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lLW5leHQtaGVhZGlu ZyAgICAgICAgICAgICAgICAgICA6aGVscCAiTW92ZSB0byB0aGUgbmV4dCBoZWFkaW5nIl0KKyAg ICBbIlByZXZpb3VzIiAgICAgICAgICAgICAgICAgIG91dGxpbmUtcHJldmlvdXMtaGVhZGluZyAg ICAgICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwcmV2aW91cyBoZWFkaW5nIl0KKyAgICBb Ik5leHQgU2FtZSBMZXZlbCIgICAgICAgICAgIG91dGxpbmUtZm9yd2FyZC1zYW1lLWxldmVsICAg ICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBuZXh0IGhlYWRpbmcgYXQgdGhlIHNhbWUgbGV2 ZWwiXQorICAgIFsiUHJldmlvdXMgU2FtZSBMZXZlbCIgICAgICAgb3V0bGluZS1iYWNrd2FyZC1z YW1lLWxldmVsICAgICAgICAgICAgOmhlbHAgIk1vdmUgdG8gdGhlIHByZXZpb3VzIGhlYWRpbmcg YXQgdGhlIHNhbWUgbGV2ZWwiXQorICAgICItLSIKKyAgICBbIkp1bXAiICAgICAgICAgICAgICAg ICAgICAgIGltZW51ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpoZWxwICJKdW1w IHRvIGEgaGVhZGluZyB2aWEgY29tcGxldGlvbiJdCisgICAgIi0tIgorICAgIFsiTW92ZSBTdWJ0 cmVlIFVwIiAgICAgICAgICAgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLXVwICAgICAgICAgICAg OmhlbHAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gdXAiXQorICAgIFsi TW92ZSBTdWJ0cmVlIERvd24iICAgICAgICAgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLWRvd24g ICAgICAgICAgOmhlbHAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gZG93 biJdCisgICAgWyJQcm9tb3RlIiAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1wcm9tb3Rl ICAgICAgICAgICAgICAgICAgICA6aGVscCAiUHJvbW90ZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSJd CisgICAgWyJEZW1vdGUiICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1kZW1vdGUgICAg ICAgICAgICAgICAgICAgICA6aGVscCAiRGVtb3RlIGhlYWRpbmcgb3IgbGlzdCBpdGVtIl0KKyAg ICAiLS0iCisgICAgWyJFbXBoYXNpcy4uLiIgICAgICAgICAgICAgICBtYXJrZG93bi10cy1lbXBo YXNpemUgICAgICAgICAgICAgICAgICA6aGVscCAiQWRkIG9yIGNoYW5nZSBlbXBoYXNpcyBvbiBy ZWdpb24iXQorICAgIFsiQWRkIEJsb2NrIFN0cnVjdHVyZSIgICAgICAgbWFya2Rvd24tdHMtaW5z ZXJ0LXN0cnVjdHVyZSAgICAgICAgICAgOmhlbHAgIkluc2VydCBhIGNvZGUgYmxvY2ssIHF1b3Rl LCBvciBvdGhlciBzdHJ1Y3R1cmUiXQorICAgICItLSIKKyAgICBbIlRvZ2dsZSBDaGVja2JveCIg ICAgICAgICAgIG1hcmtkb3duLXRzLXRvZ2dsZS1jaGVja2JveCAgICAgICAgICAgIDpoZWxwICJU b2dnbGUgdGFzayBsaXN0IGNoZWNrYm94IGF0IHBvaW50Il0KKyAgICBbIk5ldyBMaXN0IEl0ZW0i ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0gICAgICAgICAgIDpoZWxw ICJJbnNlcnQgYSBuZXcgbGlzdCBpdGVtIGFmdGVyIHRoZSBjdXJyZW50IG9uZSJdCisgICAgWyJS ZW51bWJlciBMaXN0IiAgICAgICAgICAgICBtYXJrZG93bi10cy1yZW51bWJlci1saXN0ICAgICAg ICAgICAgICA6aGVscCAiUmVudW1iZXIgdGhlIG9yZGVyZWQgbGlzdCBhdCBwb2ludCJdCisgICAg Ii0tIgorICAgICgiVGFibGUiCisgICAgIFsiSW5zZXJ0IHRhYmxlIiAgICAgICAgICAgICBtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgICAgICAgICA6aGVscCAiSW5zZXJ0IGFuIGVtcHR5 IHRhYmxlIGF0IHBvaW50Il0KKyAgICAgWyJEZWxldGUgdGFibGUiICAgICAgICAgICAgIG1hcmtk b3duLXRzLXRhYmxlLWRlbGV0ZS10YWJsZSAgICAgICAgIDpoZWxwICJEZWxldGUgdGhlIHRhYmxl IGF0IHBvaW50Il0KKyAgICAgIi0tIgorICAgICBbIk5leHQgY2VsbCIgICAgICAgICAgICAgICAg bWFya2Rvd24tdHMtdGFibGUtbmV4dC1jZWxsICAgICAgICAgICAgOmhlbHAgIk1vdmUgcG9pbnQg dG8gdGhlIG5leHQgY2VsbCJdCisgICAgIFsiUHJldmlvdXMgY2VsbCIgICAgICAgICAgICBtYXJr ZG93bi10cy10YWJsZS1wcmV2aW91cy1jZWxsICAgICAgICA6aGVscCAiTW92ZSBwb2ludCB0byB0 aGUgcHJldmlvdXMgY2VsbCJdCisgICAgICItLSIKKyAgICAgWyJOZXh0IHJvdyIgICAgICAgICAg ICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93ICAgICAgICAgICAgIDpoZWxwICJNb3Zl IHBvaW50IHRvIHRoZSBuZXh0IHJvdyJdCisgICAgIFsiUHJldmlvdXMgcm93IiAgICAgICAgICAg ICBtYXJrZG93bi10cy10YWJsZS1wcmV2aW91cy1yb3cgICAgICAgICA6aGVscCAiTW92ZSBwb2lu dCB0byB0aGUgcHJldmlvdXMgcm93Il0KKyAgICAgWyJJbnNlcnQgcm93IGJlbG93IiAgICAgICAg IG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYmVsb3cgICAgIDpoZWxwICJJbnNlcnQgYW4g ZW1wdHkgcm93IGJlbG93IHBvaW50Il0KKyAgICAgWyJJbnNlcnQgcm93IGFib3ZlIiAgICAgICAg IG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYWJvdmUgICAgIDpoZWxwICJJbnNlcnQgYW4g ZW1wdHkgcm93IGFib3ZlIHBvaW50Il0KKyAgICAgWyJDbG9uZSByb3cgYmVsb3ciICAgICAgICAg IG1hcmtkb3duLXRzLXRhYmxlLWNsb25lLXJvdy1iZWxvdyAgICAgIDpoZWxwICJDbG9uZSB0aGUg Y3VycmVudCByb3cgYmVsb3cgaXQiXQorICAgICBbIkNsb25lIHJvdyBhYm92ZSIgICAgICAgICAg bWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWFib3ZlICAgICAgOmhlbHAgIkNsb25lIHRoZSBj dXJyZW50IHJvdyBhYm92ZSBpdCJdCisgICAgIFsiTW92ZSByb3cgdXAiICAgICAgICAgICAgICBt YXJrZG93bi10cy10YWJsZS1tb3ZlLXJvdy11cCAgICAgICAgICA6aGVscCAiTW92ZSB0aGUgcm93 IGF0IHBvaW50IHVwIl0KKyAgICAgWyJNb3ZlIHJvdyBkb3duIiAgICAgICAgICAgIG1hcmtkb3du LXRzLXRhYmxlLW1vdmUtcm93LWRvd24gICAgICAgIDpoZWxwICJNb3ZlIHRoZSByb3cgYXQgcG9p bnQgZG93biJdCisgICAgIFsiRGVsZXRlIHJvdyIgICAgICAgICAgICAgICBtYXJrZG93bi10cy10 YWJsZS1kZWxldGUtcm93ICAgICAgICAgICA6aGVscCAiRGVsZXRlIHRoZSByb3cgYXQgcG9pbnQi XQorICAgICAiLS0iCisgICAgIFsiSW5zZXJ0IGNvbHVtbiBsZWZ0IiAgICAgICBtYXJrZG93bi10 cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQgICA6aGVscCAiSW5zZXJ0IGFuIGVtcHR5IGNvbHVt biB0byB0aGUgbGVmdCBvZiBwb2ludCJdCisgICAgIFsiSW5zZXJ0IGNvbHVtbiByaWdodCIgICAg ICBtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLXJpZ2h0ICA6aGVscCAiSW5zZXJ0IGFu IGVtcHR5IGNvbHVtbiB0byB0aGUgcmlnaHQgb2YgcG9pbnQiXQorICAgICBbIkNsb25lIGNvbHVt biBsZWZ0IiAgICAgICAgbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtY29sdW1uLWxlZnQgICAgOmhl bHAgIkluc2VydCBhbiBlbXB0eSBjb2x1bW4gdG8gdGhlIGxlZnQgb2YgcG9pbnQiXQorICAgICBb IkNsb25lIGNvbHVtbiByaWdodCIgICAgICAgbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtY29sdW1u LXJpZ2h0ICAgOmhlbHAgIkluc2VydCBhbiBlbXB0eSBjb2x1bW4gdG8gdGhlIHJpZ2h0IG9mIHBv aW50Il0KKyAgICAgWyJNb3ZlIGNvbHVtbiBsZWZ0IiAgICAgICAgIG1hcmtkb3duLXRzLXRhYmxl LW1vdmUtY29sdW1uLWxlZnQgICAgIDpoZWxwICJNb3ZlIHRoZSBjdXJyZW50IGNvbHVtbiB0byBp dHMgbGVmdCJdCisgICAgIFsiTW92ZSBjb2x1bW4gcmlnaHQiICAgICAgICBtYXJrZG93bi10cy10 YWJsZS1tb3ZlLWNvbHVtbi1yaWdodCAgICA6aGVscCAiTW92ZSB0aGUgY3VycmVudCBjb2x1bW4g dG8gaXRzIHJpZ2h0Il0KKyAgICAgWyJBbGlnbiBjb2x1bW4uLi4iICAgICAgICAgIG1hcmtkb3du LXRzLXRhYmxlLWFsaWduLWNvbHVtbiAgICAgICAgIDpoZWxwICJBbGlnbiBjb2x1bW4gYXQgcG9p bnQgdG8gdGhlIGxlZnQsIGNlbnRlciwgb3IgcmlnaHQiXQorICAgICBbIkRlbGV0ZSBjb2x1bW4i ICAgICAgICAgICAgbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLWNvbHVtbiAgICAgICAgOmhlbHAg IkRlbGV0ZSB0aGUgY29sdW1uIGF0IHBvaW50Il0KKyAgICAgIi0tIgorICAgICBbIkFsaWduIHRh YmxlIGNvbHVtbnMiICAgICAgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tdGFibGUgICAgICAgICAg OmhlbHAgIkFsaWduIHRoZSB0YWJsZSBhdCBwb2ludCBpbiBhbiBlYXN5LXRvLWVkaXQgZm9ybWF0 Il0KKyAgICAgWyJUcmFuc3Bvc2UgdGFibGUiICAgICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLXRy YW5zcG9zZS10YWJsZSAgICAgIDpoZWxwICJUcmFuc3Bvc2UgdGhlIHRhYmxlIGF0IHBvaW50IHN3 YXBwaW5nIGl0cyByb3dzIGFuZCBjb2x1bW5zIl0KKyAgICAgIi0tIgorICAgICBbIkNvbnZlcnQg Q1NWIHRvIHRhYmxlIiAgICAgbWFya2Rvd24tdHMtdGFibGUtY29udmVydC1jc3YtcmVnaW9uICAg OmhlbHAgIkNvbnZlcnQgYSByYW5nZSBvZiBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzIHRvIGEgbmV3 IHRhYmxlIGF0IHBvaW50Il0KKyAgICAgWyJDb252ZXJ0IFRTViB0byB0YWJsZSIgICAgIG1hcmtk b3duLXRzLXRhYmxlLWNvbnZlcnQtdHN2LXJlZ2lvbiAgIDpoZWxwICJDb252ZXJ0IGEgcmFuZ2Ug b2YgdGFiLXNlcGFyYXRlZCB2YWx1ZXMgdG8gYSBuZXcgdGFibGUgYXQgcG9pbnQiXQorICAgICBb IkV4cG9ydCB0YWJsZSB0byBDU1YiICAgICAgbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxl LWNzdiAgICAgOmhlbHAgIkV4cG9ydCB0aGUgdGFibGUgYXQgcG9pbnQgdG8gYSBjb21tYS1zZXBh cmF0ZWQgdmFsdWVzIGJ1ZmZlciJdCisgICAgIFsiRXhwb3J0IHRhYmxlIHRvIFRTViIgICAgICBt YXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUtdHN2ICAgICA6aGVscCAiRXhwb3J0IHRoZSB0 YWJsZSBhdCBwb2ludCB0byBhIHRhYi1zZXBhcmF0ZWQgdmFsdWVzIGJ1ZmZlciJdKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy0tc2V0LXVwICgpCisgICJTZXQgdXAgdGhlIGJ1ZmZlciBmb3IgYG1h cmtkb3duLXRzLW1vZGUnLgorSWYgYG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lJyBpcyBub24t bmlsLCB1c2UgYSBsaWdodHdlaWdodCBzZXQgdXAgZm9yCitlbWJlZGRlZCBpbmxpbmUgYG1hcmtk b3duLXRzLW1vZGUnIGJ1ZmZlcnMuCiAKLTs7OyBNYWpvciBtb2RlCitOT1RFOiBDYWxsIHRoaXMg ZnVuY3Rpb24gb25seSB3aGVuIHRoZSB0cmVlc2l0IGBtYXJrZG93bicgYW5kCitgbWFya2Rvd24t aW5saW5lJyBwYXJzZXJzIGFyZSBhdmFpbGFibGUuIgogCi0oZGVmdW4gbWFya2Rvd24tdHMtc2V0 dXAgKCkKLSAgIlNldHVwIHRyZWVzaXQgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCi0gIChtYWtl LWxvY2FsLXZhcmlhYmxlICdtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkKKyAgOzsgU2V0IHRoZXNl IHVwIGZvciBib3RoIG1hc3RlciBhbmQgaW5saW5lIGZvciBjb2RlLWJsb2NrIGJ1ZmZlcnMuCisg IChzZXRxLWxvY2FsIGNvbW1lbnQtc3RhcnQgIjwhLS0gIgorICAgICAgICAgICAgICBjb21tZW50 LWVuZCAiIC0tPiIKKyAgICAgICAgICAgICAgY29tbWVudC1zdGFydC1za2lwICI8IS0tWyBcdF0q IgorICAgICAgICAgICAgICBjb21tZW50LWVuZC1za2lwICJbIFx0XSotLT4iCisgICAgICAgICAg ICAgIGNvbW1lbnQtdXNlLXN5bnRheCBuaWwpCisKKyAgKHNldHEtbG9jYWwgZmlsbC1wYXJhZ3Jh cGgtZnVuY3Rpb24KKyAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tZmlsbC1wYXJhZ3JhcGgK KyAgICAgICAgICAgICAgZmlsbC1mb3J3YXJkLXBhcmFncmFwaC1mdW5jdGlvbgorICAgICAgICAg ICAgICAjJ21hcmtkb3duLXRzLS1maWxsLWZvcndhcmQtcGFyYWdyYXBoKQorCisgIDs7IGBhZGFw dGl2ZS1maWxsLWZ1bmN0aW9uJyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIKKyAgOzsgYGFkYXB0aXZl LWZpbGwtcmVnZXhwJzsgdGhlIGRlZmF1bHQgcmVnZXhwIGlzIGZpbmUgYXMgYQorICA7OyBmYWxs YmFjayBmb3IgcGxhaW4gKG5vbi1saXN0KSBwYXJhZ3JhcGhzLgorICAoc2V0cS1sb2NhbCBhZGFw dGl2ZS1maWxsLWZ1bmN0aW9uICMnbWFya2Rvd24tdHMtLWFkYXB0aXZlLWZpbGwpCisKKyAgOzsg Q3JlYXRlIGFuZCBjb25maWd1cmUgdGhlIHBhcnNlcnMuCisgICh0cmVlc2l0LXBhcnNlci1jcmVh dGUgJ21hcmtkb3duLWlubGluZSkKKyAgKHNldHEgdHJlZXNpdC1wcmltYXJ5LXBhcnNlcgorICAg ICAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdtYXJrZG93bikpCisKKyAgKHNldHEtbG9jYWwg Zm9udC1sb2NrLWRlZmF1bHRzIG5pbCkKICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2st c2V0dGluZ3MgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MpCi0gIChzZXRxLWxvY2FsIHRy ZWVzaXQtcmFuZ2Utc2V0dGluZ3MgKG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncykpCi0gIChh ZGQtdG8tbGlzdCAnZm9udC1sb2NrLWV4dHJhLW1hbmFnZWQtcHJvcHMgJ2ludmlzaWJsZSkKLQot ICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICdodG1sIHQpCi0gICAgKHRyZWVzaXQtcGFyc2VyLWNy ZWF0ZSAnaHRtbCkKLSAgICAocmVxdWlyZSAnaHRtbC10cy1tb2RlKQotICAgIChkZWZ2YXIgaHRt bC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciBodG1sLXRzLW1vZGUt LXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0 LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250 LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwtdHMtbW9kZS0tZm9u dC1sb2NrLXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0 dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250LWxvY2stZmVhdHVy ZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAot ICAgICAgICAgICAgICAgICBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUt bGlzdCkpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAg ICAgICAgIChhcHBlbmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAg ICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1i ZWQgJ2h0bWwKLSAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KLSAgICAg ICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAotICAgICAgICAgICAgICAgICAgICAgICAgICco KGh0bWxfYmxvY2spIEBodG1sKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVkICdo dG1sCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duLWlubGluZQotICAg ICAgICAgICAgICAgICAgICAgICAgICcoKGh0bWxfdGFnKSBAaHRtbCkpKSkpCi0KLSAgKHdoZW4g KHRyZWVzaXQtcmVhZHktcCAneWFtbCB0KQotICAgIChyZXF1aXJlICd5YW1sLXRzLW1vZGUpCi0g ICAgKGRlZnZhciB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykKLSAgICAoZGVmdmFy IHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKLSAgICAoc2V0cS1sb2NhbCB0 cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNp dC1mb250LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHlhbWwtdHMtbW9k ZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9j ay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250LWxvY2st ZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUt bGlzdAotICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxp c3QpKQotICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAg ICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAg ICAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVk ICd5YW1sCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duCi0gICAgICAg ICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAnKCht aW51c19tZXRhZGF0YSkgQHlhbWwpKSkpKQotCi0gICh3aGVuICh0cmVlc2l0LXJlYWR5LXAgJ3Rv bWwgdCkKLSAgICAocmVxdWlyZSAndG9tbC10cy1tb2RlKQotICAgIChkZWZ2YXIgdG9tbC10cy1t b2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciB0b21sLXRzLW1vZGUtLWZvbnQt bG9jay1mZWF0dXJlLWxpc3QpCi0gICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MK LSAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAg ICAgICAgICB0b21sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykpCi0gICAgKHNldHEtbG9j YWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgKHRyZWVz aXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAgICAgICB0cmVlc2l0 LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAgdG9tbC10cy1tb2RlLS1m b250LWxvY2stZmVhdHVyZS1saXN0KSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNl dHRpbmdzCi0gICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCi0g ICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcwotICAgICAgICAgICAg ICAgICAgICAgICAgIDplbWJlZCAndG9tbAotICAgICAgICAgICAgICAgICAgICAgICAgIDpob3N0 ICdtYXJrZG93bgotICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2NhbCB0Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgJygocGx1c19tZXRhZGF0YSkgQHRvbWwpKSkpKQorICAoc2V0cS1sb2Nh bCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QgJygoZGVsaW1pdGVyIGhlYWRpbmcpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhZ3JhcGgp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhZ3Jh cGgtaW5saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaW1hZ2UtcHJldmlldyBlcnJvcikpKQorCisgIChjb25kIChtYXJrZG93bi10cy0tc2V0LXVw LWlubGluZQorICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAg ICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAgICAgICAgICAg ICAgICAgICA6ZW1iZWQgJ21hcmtkb3duLWlubGluZQorICAgICAgICAgICAgICAgICAgICAgICA6 aG9zdCAnbWFya2Rvd24KKyAgICAgICAgICAgICAgICAgICAgICAgJygoaW5saW5lKSBAbWFya2Rv d24taW5saW5lKSkpKQorICAgICAgICAodAorICAgICAgICAgOzsgUmFuZ2Ugc2V0dGluZ3MgZGlm ZmVyIGluIHRoZSBtYXN0ZXIgYnVmZmVyIHZzLiBpbmxpbmUgYWJvdmUuCisgICAgICAgICAoc2V0 cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzIChtYXJrZG93bi10cy0tcmFuZ2Utc2V0dGlu Z3MpKQorCisgICAgICAgICA7OyBDb25maWd1cmUgZmVhdHVyZXMgbmVlZGVkIG9ubHkgaW4gdGhl IG1hc3RlciBidWZmZXIuCisKKyAgICAgICAgIDs7IEltZW51IHN1cHBvcnQuCisgICAgICAgICAo c2V0cS1sb2NhbCB0cmVlc2l0LXNpbXBsZS1pbWVudS1zZXR0aW5ncworICAgICAgICAgICAgICAg ICAgICAgYCgoIkhlYWRpbmdzIiAsIydtYXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1ub2RlLXAK KyAgICAgICAgICAgICAgICAgICAgICAgIG5pbCAsIydtYXJrZG93bi10cy0taW1lbnUtaGVhZGlu Zy1uYW1lLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAoIkNvZGUgQmxvY2tzIiAs IydtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1ub2RlLXAKKyAgICAgICAgICAgICAgICAg ICAgICAgIG5pbCAsIydtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1uYW1lLWZ1bmN0aW9u KSkpCisKKyAgICAgICAgIDs7IE91dGxpbmUgc3VwcG9ydC4KKyAgICAgICAgIChzZXRxLWxvY2Fs IHRyZWVzaXQtb3V0bGluZS1wcmVkaWNhdGUgIydtYXJrZG93bi10cy0tb3V0bGluZS1wcmVkaWNh dGUpCisgICAgICAgICAoc2V0cS1sb2NhbCBvdXRsaW5lLW1pbm9yLW1vZGUtY3ljbGUgdCkKKyAg ICAgICAgIChvdXRsaW5lLW1pbm9yLW1vZGUgMSkKKyAgICAgICAgIChtYXJrZG93bi10cy0tYXBw bHktZWxsaXBzaXMpCisKKyAgICAgICAgIDs7IE5PVEU6IGBvdXRsaW5lLXZpZXctY2hhbmdlLWhv b2snIHdhcyBvYnNvbGV0ZWQgaW4gMjkuMSAoY29tbWl0CisgICAgICAgICA7OyA1M2IxZTZmOTZj Yikgb24gdGhlIGdyb3VuZHMgdGhhdCBvbmx5IGxhenktbG9jayB1c2VkIGl0LCBidXQgbm8KKyAg ICAgICAgIDs7IHJlcGxhY2VtZW50IHdhcyBwcm92aWRlZCBhbmQgb3V0bGluZS5lbCBpdHNlbGYg c3RpbGwgcnVucyB0aGUgaG9vaworICAgICAgICAgOzsgaW4gMTArIHBsYWNlcy4KKyAgICAgICAg ICh3aXRoLXN1cHByZXNzZWQtd2FybmluZ3MgKChvYnNvbGV0ZSBvdXRsaW5lLXZpZXctY2hhbmdl LWhvb2spKQorICAgICAgICAgICAoYWRkLWhvb2sgJ291dGxpbmUtdmlldy1jaGFuZ2UtaG9vawor ICAgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tb3V0bGluZS12aWV3LWNoYW5nZSBu aWwgdCkpCisKKyAgICAgICAgIChwcm9nbgorICAgICAgICAgICAobWFrZS1sb2NhbC12YXJpYWJs ZSAnbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApCisgICAgICAgICAgIChtYWtlLWxvY2FsLXZhcmlh YmxlICdmb250LWxvY2stZXh0cmEtbWFuYWdlZC1wcm9wcykKKyAgICAgICAgICAgKGRvbGlzdCAo cHJvcCAnKGludmlzaWJsZSBkaXNwbGF5IGJ1dHRvbiBjYXRlZ29yeSBhY3Rpb24gaGVscC1lY2hv KSkKKyAgICAgICAgICAgICAoYWRkLXRvLWxpc3QgJ2ZvbnQtbG9jay1leHRyYS1tYW5hZ2VkLXBy b3BzIHByb3ApKSkKKworICAgICAgICAgKHdoZW4gKHRyZWVzaXQtcmVhZHktcCAnaHRtbCB0KQor ICAgICAgICAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdodG1sKQorICAgICAgICAgICAocmVx dWlyZSAnaHRtbC10cy1tb2RlKQorICAgICAgICAgICAoZGVmdmFyIGh0bWwtdHMtbW9kZS0tZm9u dC1sb2NrLXNldHRpbmdzKQorICAgICAgICAgICAoZGVmdmFyIGh0bWwtdHMtbW9kZS0tdHJlZXNp dC1mb250LWxvY2stZmVhdHVyZS1saXN0KQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0 LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVz aXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRt bC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0 cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHRy ZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAg ICAgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAg ICBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkpCisgICAgICAg ICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAg ICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOmVtYmVkICdodG1sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpo b3N0ICdtYXJrZG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChodG1sX2Jsb2NrKSBAaHRtbCkKKwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ2h0bWwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duLWlubGluZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnKChodG1sX3RhZykgQGh0bWwpKSkpKQorCisgICAgICAgICAo d2hlbiAodHJlZXNpdC1yZWFkeS1wICd5YW1sIHQpCisgICAgICAgICAgIChyZXF1aXJlICd5YW1s LXRzLW1vZGUpCisgICAgICAgICAgIChkZWZ2YXIgeWFtbC10cy1tb2RlLS1mb250LWxvY2stc2V0 dGluZ3MpCisgICAgICAgICAgIChkZWZ2YXIgeWFtbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVy ZS1saXN0KQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5n cworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRp bmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWFtbC10cy1tb2RlLS1mb250LWxv Y2stc2V0dGluZ3MpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1m ZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbWVyZ2UtZm9udC1s b2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgdHJlZXNpdC1mb250LWxv Y2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZv bnQtbG9jay1mZWF0dXJlLWxpc3QpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJh bmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1yYW5n ZS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LXJhbmdl LXJ1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJlZCAneWFtbAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygobWludXNfbWV0YWRhdGEpIEB5YW1sKSkpKSkKKworICAgICAgICAgKHdoZW4gKHRy ZWVzaXQtcmVhZHktcCAndG9tbCB0KQorICAgICAgICAgICAocmVxdWlyZSAndG9tbC10cy1tb2Rl KQorICAgICAgICAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKQor ICAgICAgICAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkK KyAgICAgICAgICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAgICAgICAg ICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAg ICAgICAgICAgIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKKyAgICAgICAgICAg KHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAg ICAgICAgICAgICh0cmVlc2l0LW1lcmdlLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAg ICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAg ICAgICAgICAgICAgICAgdG9tbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KSkKKyAg ICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAgICAgICAg ICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6ZW1iZWQgJ3RvbWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOmhvc3QgJ21hcmtkb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2Nh bCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKHBsdXNfbWV0YWRhdGEpIEB0 b21sKSkpKSkKKworICAgICAgICAgOzsgU3VwcG9ydCBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIGlu IGEgY29kZS1ibG9jayBjb250ZXh0LgorICAgICAgICAgKHdoZW4gbWFya2Rvd24tdHMtZW5hYmxl LWNvZGUtYmxvY2stY29udGV4dC1tb2RlCisgICAgICAgICAgIChtYXJrZG93bi10cy1jb2RlLWJs b2NrLWNvbnRleHQtbW9kZSkpCisKKyAgICAgICAgIDs7IFN1cHBvcnQgZm9yIHRhYmxlIG1vZGUu CisgICAgICAgICAod2hlbiBtYXJrZG93bi10cy1lbmFibGUtdGFibGUtbW9kZQorICAgICAgICAg ICAobWFya2Rvd24tdHMtdGFibGUtbW9kZSkpKSkKIAogICAodHJlZXNpdC1tYWpvci1tb2RlLXNl dHVwKQotICAobWFya2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1h cmt1cCkpCisKKyAgOzsgRG8gbm90IGVuYWJsZSBgaml0LWxvY2stbW9kZScgaW4gaW5kaXJlY3Qg YnVmZmVycyBzdWNoIGFzIHRoZSBvbmUKKyAgOzsgd2UgdXNlIGZvciBjb2RlIGJsb2NrIGNvbW1h bmRzLgorICAodW5sZXNzIChidWZmZXItYmFzZS1idWZmZXIpCisgICAgKGppdC1sb2NrLXJlZ2lz dGVyICMnbWFya2Rvd24tdHMtLWZvbnRpZnktYmFyZS11cmkpKQorCisgICh1bmxlc3MgbWFya2Rv d24tdHMtLXNldC11cC1pbmxpbmUKKyAgICA7OyBPcmRlciBtYXR0ZXJzOiBgbWFya2Rvd24tdHMt LXNldC1oaWRlLW1hcmt1cCcgY2FsbHMgYGZvbnQtbG9jay1mbHVzaCcKKyAgICA7OyAob25seSBt ZWFuaW5nZnVsIG9uY2UgYHRyZWVzaXQtbWFqb3ItbW9kZS1zZXR1cCcgaGFzIHdpcmVkIHVwCisg ICAgOzsgZm9udC1sb2NrKSwgYW5kIGBtYXJrZG93bi10cy1kZWZhdWx0LWZvbGRpbmcnIGNhbGxz IG91dGxpbmUKKyAgICA7OyBjb21tYW5kcyB0aGF0IHJlbHkgb24gYG91dGxpbmUtc2VhcmNoLWZ1 bmN0aW9uJywgd2hpY2gKKyAgICA7OyBgdHJlZXNpdC1tYWpvci1tb2RlLXNldHVwJyBpbnN0YWxs cyBmcm9tIGB0cmVlc2l0LW91dGxpbmUtcHJlZGljYXRlJy4KKyAgICAobWFya2Rvd24tdHMtLXNl dC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkKKyAgICA7OyBSZXNwZWN0IHRo ZSB1c2VyJ3MgZGVmYXVsdCBvdXRsaW5lIGZvbGRpbmcuCisgICAgKHBjYXNlIG1hcmtkb3duLXRz LWRlZmF1bHQtZm9sZGluZworICAgICAgKCdzaG93LWFsbCAoaWdub3JlKSkKKyAgICAgICgnZm9s ZC1hbGwgKG91dGxpbmUtaGlkZS1zdWJsZXZlbHMgMSkpCisgICAgICAoJ2ZvbGQtaGVhZGluZ3Mg KG91dGxpbmUtc2hvdy1hbGwpCisgICAgICAgICAgICAgICAgICAgICAgKG91dGxpbmUtaGlkZS1y ZWdpb24tYm9keSAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93 bi10cy1tb2RlLWluc3RhbGwtcGFyc2VycyAoYXJnKQorICAiSW5zdGFsbCBgbWFya2Rvd24tdHMt bW9kZScgdHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgcGFyc2Vycy4KK0lmIG5lZWRlZCwgaW5zdGFsbCB0 aGUgcmVxdWlyZWQgcGFyc2VycyBmb3IgYG1hcmtkb3duJyBhbmQgYG1hcmtkb3duLWlubGluZScu CitXaXRoIGEgcHJlZml4IGFyZ3VtZW50LCBBUkcsIGlmIG5lZWRlZCwgaW5zdGFsbCBwYXJzZXJz IGZvciBgaHRtbCcsCitgeWFtbCcsIGFuZCBgdG9tbCcuIgorICAoaW50ZXJhY3RpdmUgIlAiKQor ICAodW5sZXNzICh0cmVlc2l0LWxhbmd1YWdlLWF2YWlsYWJsZS1wICdtYXJrZG93bikKKyAgICAo dHJlZXNpdC1pbnN0YWxsLWxhbmd1YWdlLWdyYW1tYXIgJ21hcmtkb3duKSkKKyAgKHVubGVzcyAo dHJlZXNpdC1sYW5ndWFnZS1hdmFpbGFibGUtcCAnbWFya2Rvd24taW5saW5lKQorICAgICh0cmVl c2l0LWluc3RhbGwtbGFuZ3VhZ2UtZ3JhbW1hciAnbWFya2Rvd24taW5saW5lKSkKKyAgKHdoZW4g YXJnCisgICAgKHVubGVzcyAodHJlZXNpdC1sYW5ndWFnZS1hdmFpbGFibGUtcCAnaHRtbCkKKyAg ICAgIChyZXF1aXJlICdodG1sLXRzLW1vZGUpCisgICAgICAodHJlZXNpdC1pbnN0YWxsLWxhbmd1 YWdlLWdyYW1tYXIgJ2h0bWwpKQorICAgICh1bmxlc3MgKHRyZWVzaXQtbGFuZ3VhZ2UtYXZhaWxh YmxlLXAgJ3lhbWwpCisgICAgICAocmVxdWlyZSAneWFtbC10cy1tb2RlKQorICAgICAgKHRyZWVz aXQtaW5zdGFsbC1sYW5ndWFnZS1ncmFtbWFyICd5YW1sKSkKKyAgICAodW5sZXNzICh0cmVlc2l0 LWxhbmd1YWdlLWF2YWlsYWJsZS1wICd0b21sKQorICAgICAgKHJlcXVpcmUgJ3RvbWwtdHMtbW9k ZSkKKyAgICAgICh0cmVlc2l0LWluc3RhbGwtbGFuZ3VhZ2UtZ3JhbW1hciAndG9tbCkpKSkKIAog Ozs7IyMjYXV0b2xvYWQKIChkZWZpbmUtZGVyaXZlZC1tb2RlIG1hcmtkb3duLXRzLW1vZGUgdGV4 dC1tb2RlICJNYXJrZG93biIKLSAgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcgTWFya2Rvd24gdXNp bmcgdHJlZS1zaXR0ZXIgZ3JhbW1hci4iCisgICJNYWpvciBtb2RlIGZvciBlZGl0aW5nIE1hcmtk b3duIHVzaW5nIHRyZWUtc2l0dGVyIGdyYW1tYXIuCitOT1RFOiBTZWUgYG1hcmtkb3duLXRzLS1z ZXQtdXAtaW5saW5lJy4iCisgICh0cmVlc2l0LWVuc3VyZS1pbnN0YWxsZWQgJ21hcmtkb3duKQor ICAodHJlZXNpdC1lbnN1cmUtaW5zdGFsbGVkICdtYXJrZG93bi1pbmxpbmUpCisgIDs7IEJ5cGFz cyBgdHJlZXNpdC1tYXgtYnVmZmVyLXNpemUnIHNvIHRoZSBtb2RlIGFjdGl2YXRlcyBpbiBsYXJn ZQorICA7OyBidWZmZXJzIGluc3RlYWQgb2YgcmVmdXNpbmcuICBgdHJlZXNpdC1yZWFkeS1wJyB3 b3VsZCBvdGhlcndpc2UKKyAgOzsgcmVmdXNlIGFuZCBlbWl0IGEgbWlzbGVhZGluZyAicGFyc2Vy cyBub3QgZm91bmQiIG1lc3NhZ2UgZXZlbiB3aGVuCisgIDs7IHRoZXkgYXJlIGluc3RhbGxlZC4g IFJldmlzaXQgaWYgYHRyZWVzaXQtcGFyc2VyLWNyZWF0ZScgZ2FpbnMgaXRzCisgIDs7IG93biBi dWZmZXItc2l6ZSBndWFyZCAoc2VlIGJ1ZyM4MDkwOSkuCisgIChsZXQgKCh0cmVlc2l0LW1heC1i dWZmZXItc2l6ZSBtb3N0LXBvc2l0aXZlLWZpeG51bSkpCisgICAgKGlmICh0cmVlc2l0LXJlYWR5 LXAgJyhtYXJrZG93biBtYXJrZG93bi1pbmxpbmUpIHQpCisgICAgICAgIChtYXJrZG93bi10cy0t c2V0LXVwKQorICAgICAgKHdhcm4gIm1hcmtkb3duLXRzLW1vZGUgY2Fubm90IGJlIHNldCB1cDsg dXNpbmcgZnVuZGFtZW50YWwtbW9kZS4KK1RoZSB0cmVlLXNpdHRlciBwYXJzZXJzIGBtYXJrZG93 bicgYW5kIGBtYXJrZG93bi1pbmxpbmUnIHdlcmUgbm90IGZvdW5kLgorVXNlIHRoZSBjb21tYW5k IGBtYXJrZG93bi10cy1tb2RlLWluc3RhbGwtcGFyc2VycycgdG8gaW5zdGFsbCB0aGVtLgorV2l0 aCBhIHByZWZpeCBhcmd1bWVudCwgaXQgY2FuIGFsc28gaW5zdGFsbCBvcHRpb25hbCBwYXJzZXJz LiIpCisgICAgICAoZnVuZGFtZW50YWwtbW9kZSkpKSkKIAotICAoc2V0cS1sb2NhbCBjb21tZW50 LXN0YXJ0ICI8IS0tICIpCi0gIChzZXRxLWxvY2FsIGNvbW1lbnQtZW5kICIgLS0+IikKKyhkZXJp dmVkLW1vZGUtYWRkLXBhcmVudHMgJ21hcmtkb3duLXRzLW1vZGUgJyhtYXJrZG93bi1tb2RlKSkK IAotICAoc2V0cS1sb2NhbCBmb250LWxvY2stZGVmYXVsdHMgbmlsCi0JICAgICAgdHJlZXNpdC1m b250LWxvY2stZmVhdHVyZS1saXN0ICcoKGRlbGltaXRlciBoZWFkaW5nKQotCQkJCQkgICAgICAg KHBhcmFncmFwaCkKLQkJCQkJICAgICAgIChwYXJhZ3JhcGgtaW5saW5lKSkpCisoZGVmdW4gbWFy a2Rvd24tdHMtLWJhcmYtaWYtbm90LW1vZGUgKCZvcHRpb25hbCBjb250ZXh0KQorICAiU2lnbmFs IGFuIGVycm9yIGlmIHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBub3QgYSBgbWFya2Rvd24tdHMtbW9k ZScgYnVmZmVyLgorUHJlZml4IHRoZSBlcnJvciBtZXNzYWdlIHdpdGggQ09OVEVYVC4iCisgICh1 bmxlc3MgKGRlcml2ZWQtbW9kZS1wICdtYXJrZG93bi10cy1tb2RlKQorICAgICh1c2VyLWVycm9y ICIlc2lzIHZhbGlkIG9ubHkgaW4gYG1hcmtkb3duLXRzLW1vZGUnIGJ1ZmZlcnMiCisgICAgICAg ICAgICAgICAgKGlmIGNvbnRleHQgKGZvcm1hdCAiJXM6ICIgY29udGV4dCkgIiIpKSkpCiAKLSAg KHNldHEtbG9jYWwgdHJlZXNpdC1zaW1wbGUtaW1lbnUtc2V0dGluZ3MKLSAgICAgICAgICAgICAg YCgoIkhlYWRpbmdzIiAsIydtYXJrZG93bi10cy1pbWVudS1ub2RlLXAKLSAgICAgICAgICAgICAg ICAgbmlsICwjJ21hcmtkb3duLXRzLWltZW51LW5hbWUtZnVuY3Rpb24pKSkKLSAgKHNldHEtbG9j YWwgdHJlZXNpdC1vdXRsaW5lLXByZWRpY2F0ZSAjJ21hcmtkb3duLXRzLW91dGxpbmUtcHJlZGlj YXRlKQorKGRlZmluZS1taW5vci1tb2RlIG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4 dC1tb2RlCisgICJNaW5vciBtb2RlIGVuYWJsZWQgaWYgcG9pbnQgaXMgd2l0aGluIGEgZmVuY2Vk IGNvZGUgYmxvY2suCitUaGlzIGVuYWJsZXMgdGhlIGtleW1hcCBgbWFya2Rvd24tdHMtY29kZS1i bG9jay1pbi1jb250ZXh0LW1vZGUtbWFwJy4iCisgIDpncm91cCAnbWFya2Rvd24tdHMKKyAgOmxp Z2h0ZXIgbWFya2Rvd24tdHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtbGlnaHRlcgorICA6 aW50ZXJhY3RpdmUgbmlsCisgIChtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1v ZGUtdXBkYXRlLW92KSkKIAotICAod2hlbiAoYW5kICh0cmVlc2l0LWVuc3VyZS1pbnN0YWxsZWQg J21hcmtkb3duKQotICAgICAgICAgICAgICh0cmVlc2l0LWVuc3VyZS1pbnN0YWxsZWQgJ21hcmtk b3duLWlubGluZSkpCi0gICAgKHRyZWVzaXQtcGFyc2VyLWNyZWF0ZSAnbWFya2Rvd24taW5saW5l KQotICAgICh0cmVlc2l0LXBhcnNlci1jcmVhdGUgJ21hcmtkb3duKQotICAgIChtYXJrZG93bi10 cy1zZXR1cCkpKQorKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250 ZXh0LW1vZGUtb3YgbmlsKQogCi0oZGVyaXZlZC1tb2RlLWFkZC1wYXJlbnRzICdtYXJrZG93bi10 cy1tb2RlICcobWFya2Rvd24tbW9kZSkpCisoZGVmdW4gbWFya2Rvd24tdHMtLWNvZGUtYmxvY2st aW4tY29udGV4dC1tb2RlLXVwZGF0ZS1vdiAoKQorICAiTWFuYWdlIGBtYXJrZG93bi10cy0tY29k ZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YnLiIKKyAgKGNvbmQgKG1hcmtkb3duLXRzLWNvZGUt YmxvY2staW4tY29udGV4dC1tb2RlCisgICAgICAgICAobGV0ICgoYmVnIChnZXQtY2hhci1wcm9w ZXJ0eSAocG9pbnQpICdtYXJrZG93bi10cy1jb2RlLWJlZy1tYXJrZXIpKQorICAgICAgICAgICAg ICAgKGVuZCAoZ2V0LWNoYXItcHJvcGVydHkgKHBvaW50KSAnbWFya2Rvd24tdHMtY29kZS1lbmQt bWFya2VyKSkpCisgICAgICAgICAgIChpZiBtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250 ZXh0LW1vZGUtb3YKKyAgICAgICAgICAgICAgIChtb3ZlLW92ZXJsYXkgbWFya2Rvd24tdHMtLWNv ZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92IGJlZyBlbmQpCisgICAgICAgICAgICAgKHNldHEg bWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92CisgICAgICAgICAgICAg ICAgICAgKG1ha2Utb3ZlcmxheSBiZWcgZW5kIG5pbCB0IG5pbCkpKQorICAgICAgICAgICAob3Zl cmxheS1wdXQgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92CisgICAg ICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtaW4tY29kZS1ibG9jayB0KQorICAgICAg ICAgICAob3ZlcmxheS1wdXQgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2Rl LW92CisgICAgICAgICAgICAgICAgICAgICAgICAnZXZhcG9yYXRlIHQpCisgICAgICAgICAgIChv dmVybGF5LXB1dCBtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YKKyAg ICAgICAgICAgICAgICAgICAgICAgICdwcmlvcml0eSAnKG5pbCAuIDIwKSkKKyAgICAgICAgICAg KG92ZXJsYXktcHV0IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1vdgor ICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgJ21hcmtkb3duLXRzLWluLWNvZGUtYmxvY2sp KSkKKyAgICAgICAgKHQKKyAgICAgICAgICh3aGVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWlu LWNvbnRleHQtbW9kZS1vdgorICAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgbWFya2Rvd24tdHMt LWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92KSkpKSkKIAotOzs7IyMjYXV0b2xvYWQKLShk ZWZ1biBtYXJrZG93bi10cy1tb2RlLW1heWJlICgpCi0gICJFbmFibGUgYG1hcmtkb3duLXRzLW1v ZGUnIHdoZW4gaXRzIGdyYW1tYXIgaXMgYXZhaWxhYmxlLgotQWxzbyBwcm9wb3NlIHRvIGluc3Rh bGwgdGhlIGdyYW1tYXIgd2hlbiBgdHJlZXNpdC1lbmFibGVkLW1vZGVzJwotaXMgdCBvciBjb250 YWlucyB0aGUgbW9kZSBuYW1lLiIKLSAgKGRlY2xhcmUtZnVuY3Rpb24gdHJlZXNpdC1sYW5ndWFn ZS1hdmFpbGFibGUtcCAidHJlZXNpdC5jIikKLSAgKGlmIChvciAodHJlZXNpdC1sYW5ndWFnZS1h dmFpbGFibGUtcCAnbWFya2Rvd24pCi0gICAgICAgICAgKGVxIHRyZWVzaXQtZW5hYmxlZC1tb2Rl cyB0KQotICAgICAgICAgIChtZW1xICdtYXJrZG93bi10cy1tb2RlIHRyZWVzaXQtZW5hYmxlZC1t b2RlcykpCi0gICAgICAobWFya2Rvd24tdHMtbW9kZSkKLSAgICAoZnVuZGFtZW50YWwtbW9kZSkp KQorKGRlZmluZS1taW5vci1tb2RlIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29udGV4dC1tb2Rl CisgICJNaW5vciBtb2RlIHRvIGVuYWJsZSBjb21tYW5kcyBpbiBmZW5jZWQgY29kZSBibG9jayBj b250ZXh0LgorSWYgbm9uLW5pbCBhbmQgYHBvaW50JyBpcyBpbiBhIGZlbmNlZCBjb2RlIGJsb2Nr LCBydW4gYGluZGVudC1mb3ItdGFiLWNvbW1hbmQnLAorYG5ld2xpbmUnLCBldC5hbC4sIGluIHRo ZSBtb2RlIG9mIHRoZSBjb2RlIGJsb2NrLiIKKyAgOmdyb3VwICdtYXJrZG93bi10cworICA6aW50 ZXJhY3RpdmUgbmlsCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24t dHMtY29kZS1ibG9jay1jb250ZXh0LW1vZGUpCisgIChjb25kIChtYXJrZG93bi10cy1jb2RlLWJs b2NrLWNvbnRleHQtbW9kZQorICAgICAgICAgOzsgRW5hYmxlIHRoZSBtaW5vciBtb2RlIGBtYXJr ZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZScgYW5kCisgICAgICAgICA7OyBpdHMg a2V5bWFwIHdoZW4gcG9pbnQgaXMgd2l0aGluIGEgY29kZSBibG9jay4KKyAgICAgICAgIChhZGQt aG9vayAncG9zdC1jb21tYW5kLWhvb2sKKyAgICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRz LS1lbmFibGUtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUgbmlsICdsb2NhbCkKKyAgICAgICAg IDs7IElmIGBzYXZlLXBsYWNlLW1vZGUnIG9yIHNpbWlsYXIgaXMgdXNlZCwgcG9pbnQgY291bGQg c3RhcnQgd2l0aGluCisgICAgICAgICA7OyBhIGNvZGUgYmxvY2sgc28gaW5pdGlhbGl6ZSBmcm9t IHRoYXQgc3RhdGUuCisgICAgICAgICAocnVuLXdpdGgtdGltZXIgMC4wMSBuaWwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1lbmFibGUtY29kZS1ibG9jay1pbi1jb250 ZXh0LW1vZGUpCisgICAgICAgICA7OyBGb3IgZWFjaCBlbGlnaWJsZSBjb21tYW5kLCBleGVjdXRl IGl0IGluIGEgY29kZS1ibG9jayBjb250ZXh0LAorICAgICAgICAgOzsgb3RoZXJ3aXNlIGluIHRo ZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVyJ3MgY29udGV4dC4KKyAgICAgICAgIChhZGQtaG9v ayAncHJlLWNvbW1hbmQtaG9vaworICAgICAgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLW1h eWJlLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2sgbmlsICdsb2NhbCkKKyAgICAgICAgIDs7IFBy dW5lIHN0YWxlIGNvZGUgYmxvY2sgb3ZlcmxheXMgd2hlbiB0aGUgaG9zdCBwYXJzZSB0cmVlCisg ICAgICAgICA7OyBjaGFuZ2VzIChlLmcuLCB3aGVuIGZlbmNlZCBjb2RlIGJsb2NrIGRlbGltaXRl cnMgYXJlCisgICAgICAgICA7OyBkZWxldGVkIGJ1dCB0aGUgb3ZlcmxheSBmcm9tIGEgcHJpb3Ig Zm9udGlmaWNhdGlvbiByZW1haW5zKS4KKyAgICAgICAgICh0cmVlc2l0LXBhcnNlci1hZGQtbm90 aWZpZXIKKyAgICAgICAgICB0cmVlc2l0LXByaW1hcnktcGFyc2VyCisgICAgICAgICAgIydtYXJr ZG93bi10cy0taG9zdC1yYW5nZXMtbm90aWZpZXIpKQorICAgICAgICAodAorICAgICAgICAgKHJl bW92ZS1ob29rICdwb3N0LWNvbW1hbmQtaG9vaworICAgICAgICAgICAgICAgICAgICAgICMnbWFy a2Rvd24tdHMtLWVuYWJsZS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZSAnbG9jYWwpCisgICAg ICAgICAocmVtb3ZlLWhvb2sgJ3ByZS1jb21tYW5kLWhvb2sKKyAgICAgICAgICAgICAgICAgICAg ICAjJ21hcmtkb3duLXRzLS1tYXliZS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrICdsb2NhbCkK KyAgICAgICAgICh0cmVlc2l0LXBhcnNlci1yZW1vdmUtbm90aWZpZXIKKyAgICAgICAgICB0cmVl c2l0LXByaW1hcnktcGFyc2VyCisgICAgICAgICAgIydtYXJrZG93bi10cy0taG9zdC1yYW5nZXMt bm90aWZpZXIpKSkpCisKKyhkZWZpbmUtbWlub3ItbW9kZSBtYXJrZG93bi10cy1pbi10YWJsZS1t b2RlCisgICJNaW5vciBtb2RlIGVuYWJsZWQgaWYgcG9pbnQgaXMgd2l0aGluIGEgdGFibGUuCitU aGlzIGVuYWJsZXMgdGhlIGtleW1hcCBgbWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZS1tYXAnLiIK KyAgOmdyb3VwICdtYXJrZG93bi10cworICA6bGlnaHRlciBtYXJrZG93bi10cy1pbi10YWJsZS1t b2RlLWxpZ2h0ZXIKKyAgOmludGVyYWN0aXZlIG5pbAorICAobWFya2Rvd24tdHMtLWluLXRhYmxl LW1vZGUtdXBkYXRlLW92KSkKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0taW4tdGFibGUt bW9kZS1vdiBuaWwpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1nZXQtb3Yg KHBvcykKKyAgIlJldHVybiB0aGUgYG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUnIG92ZXJsYXkg YXQgUE9TLiIKKyAgKHNlcS1maW5kIChsYW1iZGEgKG92KQorICAgICAgICAgICAgICAod2hlbiAo b3ZlcmxheS1nZXQgb3YgJ21hcmtkb3duLXRzLWluLXRhYmxlKQorICAgICAgICAgICAgICAgIG92 KSkKKyAgICAgICAgICAgIChvdmVybGF5cy1hdCBwb3MpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS10YWJsZS10aWNrLXVwZGF0ZSAocG9zKQorICAiVXBkYXRlIHRoZSBgbWFya2Rvd24tdHMtaW4t dGFibGUtbW9kZScgb3ZlcmxheSB0aWNrIGF0IFBPUy4KK0lmIHRoZSBvdmVybGF5IGlzIG5vdCBm b3VuZCwgZG8gbm90aGluZy4iCisgICh3aGVuLWxldCogKChvdiAobWFya2Rvd24tdHMtLWluLXRh YmxlLW1vZGUtZ2V0LW92IHBvcykpKQorICAgIChvdmVybGF5LXB1dCBvdgorICAgICAgICAgICAg ICAgICAnbWFya2Rvd24tdHMtaW4tdGFibGUtdGljaworICAgICAgICAgICAgICAgICAoYnVmZmVy LWNoYXJzLW1vZGlmaWVkLXRpY2spKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtdGlj ay1zdGFsZS1wIChwb3MpCisgICJSZXR1cm4gbm9uLW5pbCBpZiB0aGUgdGFibGUgYXQgUE9TIG1p Z2h0IGhhdmUgY2hhbmdlZC4KK0l0IGlzIHVwIHRvIHRoaXMgZnVuY3Rpb24ncyBjYWxsZXJzIHRv IGNhbGwKK2BtYXJrZG93bi10cy0tdGFibGUtdGljay11cGRhdGUnLiIKKyAgKHdoZW4tbGV0KiAo KG92IChtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1nZXQtb3YgcG9zKSkpCisgICAgKG5vdCAo ZXEgKG92ZXJsYXktZ2V0IG92ICdtYXJrZG93bi10cy1pbi10YWJsZS10aWNrKQorICAgICAgICAg ICAgIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaykpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy0taW4tdGFibGUtbW9kZS11cGRhdGUtb3YgKCkKKyAgIk1hbmFnZSBgbWFya2Rvd24tdHMtLWlu LXRhYmxlLW1vZGUtb3YnLiIKKyAgKGNvbmQgKG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUKKyAg ICAgICAgICh3aGVuLWxldCogKChhdC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwg dCkpCisgICAgICAgICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAg ICAgICAgICAgICAgICAoYmVnICh0cmVlc2l0LW5vZGUtc3RhcnQgdGFibGUpKQorICAgICAgICAg ICAgICAgICAgICAgKGVuZCAodHJlZXNpdC1ub2RlLWVuZCB0YWJsZSkpKQorICAgICAgICAgICAo aWYgbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtb3YKKyAgICAgICAgICAgICAgIDs7IE1vdmUg dGhlIG92ZXJsYXksIGlmIG5lZWRlZCwgYW5kIHJlc2V0IHRoZSB0aWNrIGlmIHNvLgorICAgICAg ICAgICAgICAgKHdoZW4gKG5vdCAoZXEgKG92ZXJsYXktc3RhcnQgbWFya2Rvd24tdHMtLWluLXRh YmxlLW1vZGUtb3YpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWcpKQorICAgICAg ICAgICAgICAgICAobW92ZS1vdmVybGF5IG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLW92IGJl ZyBlbmQpCisgICAgICAgICAgICAgICAgIChvdmVybGF5LXB1dCBtYXJrZG93bi10cy0taW4tdGFi bGUtbW9kZS1vdgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWlu LXRhYmxlLXRpY2sgbmlsKSkKKyAgICAgICAgICAgICAoc2V0cSBtYXJrZG93bi10cy0taW4tdGFi bGUtbW9kZS1vdgorICAgICAgICAgICAgICAgICAgIChtYWtlLW92ZXJsYXkgYmVnIGVuZCBuaWwg dCBuaWwpKSkKKyAgICAgICAgICAgKG92ZXJsYXktcHV0IG1hcmtkb3duLXRzLS1pbi10YWJsZS1t b2RlLW92CisgICAgICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtaW4tdGFibGUgdCkK KyAgICAgICAgICAgKG92ZXJsYXktcHV0IG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLW92Cisg ICAgICAgICAgICAgICAgICAgICAgICAnZXZhcG9yYXRlIHQpCisgICAgICAgICAgIChvdmVybGF5 LXB1dCBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdgorICAgICAgICAgICAgICAgICAgICAg ICAgJ3ByaW9yaXR5ICcobmlsIC4gMjApKQorICAgICAgICAgICAob3ZlcmxheS1wdXQgbWFya2Rv d24tdHMtLWluLXRhYmxlLW1vZGUtb3YKKyAgICAgICAgICAgICAgICAgICAgICAgICdmYWNlICdt YXJrZG93bi10cy1pbi10YWJsZSkKKyAgICAgICAgICAgKSkKKyAgICAgICAgKHQKKyAgICAgICAg ICh3aGVuIG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLW92CisgICAgICAgICAgIChkZWxldGUt b3ZlcmxheSBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdikpKSkpCisKKyhkZWZpbmUtbWlu b3ItbW9kZSBtYXJrZG93bi10cy10YWJsZS1tb2RlCisgICJNaW5vciBtb2RlIHRvIGVuYWJsZSBj b21tYW5kcyBpbiB0YWJsZXMuCitJZiBub24tbmlsIGFuZCBgcG9pbnQnIGlzIGluIGEgdGFibGUs IGVuYWJsZQorYG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUnLiIKKyAgOmdyb3VwICdtYXJrZG93 bi10cworICA6aW50ZXJhY3RpdmUgbmlsCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9k ZSAnbWFya2Rvd24tdHMtdGFibGUtbW9kZSkKKyAgKGNvbmQgKG1hcmtkb3duLXRzLXRhYmxlLW1v ZGUKKyAgICAgICAgIDs7IEVuYWJsZSB0aGUgbWlub3IgbW9kZSBgbWFya2Rvd24tdHMtaW4tdGFi bGUtbW9kZScgYW5kCisgICAgICAgICA7OyBpdHMga2V5bWFwIHdoZW4gcG9pbnQgaXMgd2l0aGlu IGEgY29kZSBibG9jay4KKyAgICAgICAgIChhZGQtaG9vayAncG9zdC1jb21tYW5kLWhvb2sKKyAg ICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1lbmFibGUtaW4tdGFibGUtbW9kZSBuaWwg J2xvY2FsKQorICAgICAgICAgOzsgSWYgYHNhdmUtcGxhY2UtbW9kZScgb3Igc2ltaWxhciBpcyB1 c2VkLCBwb2ludCBjb3VsZCBzdGFydCB3aXRoaW4KKyAgICAgICAgIDs7IGEgdGFibGUsIHNvIGlu aXRpYWxpemUgZnJvbSB0aGF0IHN0YXRlLgorICAgICAgICAgKHJ1bi13aXRoLXRpbWVyIDAuMDEg bmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tZW5hYmxlLWluLXRh YmxlLW1vZGUpKQorICAgICAgICAodAorICAgICAgICAgKHJlbW92ZS1ob29rICdwb3N0LWNvbW1h bmQtaG9vaworICAgICAgICAgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLWVuYWJsZS1pbi10 YWJsZS1tb2RlICdsb2NhbCkpKSkKIAogOzs7IyMjYXV0b2xvYWQKICh3aGVuIChib3VuZHAgJ3Ry ZWVzaXQtbWFqb3ItbW9kZS1yZW1hcC1hbGlzdCkKLSAgKGFkZC10by1saXN0ICdhdXRvLW1vZGUt YWxpc3QgJygiXFwubWRcXCciIC4gbWFya2Rvd24tdHMtbW9kZS1tYXliZSkpCi0gIDs7IFRvIGJl IGFibGUgdG8gdG9nZ2xlIGJldHdlZW4gYW4gZXh0ZXJuYWwgcGFja2FnZSBhbmQgY29yZSB0cy1t b2RlOgorICAoYWRkLXRvLWxpc3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5tZFxcJyIgLiBtYXJr ZG93bi10cy1tb2RlKSkKKyAgKGFkZC10by1saXN0ICdhdXRvLW1vZGUtYWxpc3QgJygiXFwubWFy a2Rvd25cXCciIC4gbWFya2Rvd24tdHMtbW9kZSkpCisgIChhZGQtdG8tbGlzdCAnYXV0by1tb2Rl LWFsaXN0ICcoIlxcLm1keFxcJyIgLiBtYXJrZG93bi10cy1tb2RlKSkKICAgKGFkZC10by1saXN0 ICd0cmVlc2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QKICAgICAgICAgICAgICAgICcobWFya2Rv d24tbW9kZSAuIG1hcmtkb3duLXRzLW1vZGUpKSkKIAotLSAKMi41NC4wCgo= --=-=-=--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 1 May 2026 17:57:22 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 01 13:57:22 2026 Received: from localhost ([127.0.0.1]:38122 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wIs77-0002th-DV for submit <at> debbugs.gnu.org; Fri, 01 May 2026 13:57:22 -0400 Received: from mail-vs1-xe2e.google.com ([2607:f8b0:4864:20::e2e]:51478) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1wIs75-0002tY-DK for 80740 <at> debbugs.gnu.org; Fri, 01 May 2026 13:57:20 -0400 Received: by mail-vs1-xe2e.google.com with SMTP id ada2fe7eead31-605a3cff8d0so1259641137.3 for <80740 <at> debbugs.gnu.org>; Fri, 01 May 2026 10:57:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777658238; cv=none; d=google.com; s=arc-20240605; b=Z35xljUySOUhZcIYE+fbi/FBs7RIiXYXNLUUHUi/aLPCLovg0Td5bvjF+BLDA7G/QT 0ke5pQNmOlIfb7C8P0aRjVvvflFTc48hDpQIeEEnMX3piVSvc2Tvl7t9liasyy3Oky4y r+PAtGuQfvGhPayAw3KPnq/wTLXwESOsgNO10xLgDG4OGssjtGSjN7NinnG2YYyyd0I+ l0LpBmTRmjwjoec/Q5L+JeB0JVjBuo/M9Vc3IpFRKpC6kpKEc+KFhMFoYZyNUdw1U/l4 RKjL72X5AoTeE5q4r1ikgVcOTfnCowPmTdIpHCW7uEe4uaN6LDzO5TQnjVVsgI+9iO/t mepQ== 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=wxoz6zEv2sfWBzF6n4KewgSmdRCcN2kqMbXDRpFDcms=; fh=eKBMKJVzHciH19GVABvR1b7EE+XTssMG3Vg35Io71LM=; b=GfN/NjnWoVYy0aXdy2FovOhBBzO67qhE4wcPNna1zk65oM8x0iKRtG4sYBt/j6gQ7A YiGEsTLWZb3OwEo4FQmfMe35pqRK+kfcRSOp54S2m7VVffeou8R1VA/xDWmu9Kwt3xzK hS6tvvYugCwX5yv0ZFPUVER8Ono54JONf42nOR75FS4to6CN8Duk7wqPGMKu2WZmfjiE 8CrWgKHA+I4D8HMQnPRpimgIXwRytvo6+zDy23uuEs6XEJz57r4Wlkt5Z4PttGoMFi7b 0L1L/cU2ncNZqOGDQ1lsjOcTe1NlUGTk8gnQ62H3IAiASgScQvTEl7/LZ2WmeUwWW3wI lRkg==; 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=1777658238; x=1778263038; 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=wxoz6zEv2sfWBzF6n4KewgSmdRCcN2kqMbXDRpFDcms=; b=Fr2KcMC88MWklj7ztSbq7RMibpC83N+Wj1mEEuiPezHRTxSsuYKj6YF/0FAL4R43u2 rI7O5WNAxE/jC+xokj0/lhY1AIqcxgU1vSikrrJJD4etyDcjKyGqVBS3bR031gSiedOg vGn/5puHbP+68SSJBPYppaHscePv4A9/SDT+sq+QU4t7xpYnoiwiYsDHS5AQkx3cMv5b Brmhnjs8fQrxtFmuUIjRCKVPr5+h41/9TCusMnr6XzedzfWFEpSH0Dup21hXUy3q+R6R nMvfZ0nCcGqHvYG70B76LfIQKmf7uYlMmF60S7pZJmsl//ioMMVw9lB+VfXxvtLtesTc sJMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777658238; x=1778263038; 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=wxoz6zEv2sfWBzF6n4KewgSmdRCcN2kqMbXDRpFDcms=; b=NQFn5yKgDx/EvVfWbvnLzKZaDqnQp3ll/NJKh/JOAQEqQdyd2SQmfdCaf5SAyGFRLP zJCCLyA5XpKYr+GHhhitJKC8tTKxl0muJnaq4b1VIfil88Ywms9O7eJRnJHQYPpVdk++ +sZyOFNkcjzI/sF3dTzPzOEHMJ54VWKqHv182hxJRbnW9XZPhDN+9xWC70lpfxGd3y02 gF7LKYYzqRc932t5F8m4ccjKYac+PPHUee0hZDPL5PZPrtyVRNHz6hGdDMSdjz25plSZ aLt5Bqr65u8q1x4H33HETxVkFtpkOoFUdC2gERVyZUDvty5uEWArXaiLq56UoN64eLkJ ycTA== X-Forwarded-Encrypted: i=1; AFNElJ8HcNHHL83FXEdy4yM3wPyHsglTLy2IXWuBrdK62d1heBLWEm2dxmarMskDVJJB2oOOAhIafQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwlTL6l/p0e+VD+fLZhUI1hGP1E6KrbB00puA1E4QVSxygplBqA tZx/4K/xZ969xPEZdgEaAQYTWOJTnYa0cbTkLF1lbI6JXpKSrTskZWmDJ76cVPf2/7uv+iMtlAi abFb3OM5bCVEtTcX3QZuIIiN9aZSOU4I= X-Gm-Gg: AeBDietsx4ijqXId51UJSWO5mMWNK3aLb2G8Yw6B+hhLlL5BoljDYg/A0agrxrPYoVZ B312UlXFNgbHMbCJr7L0Evba33PiaAz3gBJvRgJD/4V799DwIZiYR5Ld2GQztLG3vSXa6hewF9d cWQn3UhBNfH3iZnbsyKBRdoyzyYpGYnQjscfkycnUp0e48/zV3FP8nhHBBz6yzKMhQN8PTkOh/p zAJhq8t/aNuc9Qbb7jTX6oyYQUjFS40Dyz16V6i498L7Ds1IH4BAM1YRNujd7L0OwHcF/44poGs KtlvHYvYD62fn9cjdy6VhayszYoILRnm32jBjhq/Nr8XUDtPomtBtrzV/YtAbspQ/RBOgdOJlTZ GREVmutmUPQ3WzWCoaIHOHZOl9Nd3aHOoSFZbTVijop8cq1GHmnDhS06LNA== X-Received: by 2002:a05:6102:3908:b0:607:7991:8edd with SMTP id ada2fe7eead31-62d86a1d095mr164680137.19.1777658238552; Fri, 01 May 2026 10:57:18 -0700 (PDT) MIME-Version: 1.0 References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN> <m2ik982h8d.fsf@HIDDEN> <871pfvtso9.fsf@HIDDEN> <m2lde3i4t8.fsf@HIDDEN> <CAN+1HbpfowV03Cyej3Do0pv+UOAZUPFXwR2jicBaUCGjy5oZ_Q@HIDDEN> <87cxzfkocq.fsf@HIDDEN> In-Reply-To: <87cxzfkocq.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Fri, 1 May 2026 13:57:06 -0400 X-Gm-Features: AVHnY4KxgFhzHZYS2vwxpXWmwAu7DMQjSoWtGUEh-rsKNBYKiTpFl2kvzPWpEwE Message-ID: <CAN+1HboiDuZVrFPmmPa8W0GsO8ePy+P-d3EvQHtmFyGmP6wP9g@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' To: Eshel Yaron <me@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000d74e340650c54f84" 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, Eli Zaretskii <eliz@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: 0.0 (/) --000000000000d74e340650c54f84 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, May 1, 2026 at 1:54=E2=80=AFPM Eshel Yaron <me@HIDDEN> wrot= e: > Hi, > > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > > On Fri, May 1, 2026 at 10:26=E2=80=AFAM Rahul Martim Juliato < > rahuljuliato@HIDDEN> wrote: > > > > Eshel Yaron <me@HIDDEN> writes: > > > > > Hi, > > > > > > Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > > > > > >> +(defun markdown-ts-mode-install-parsers (arg) > > >> + "Install `markdown-ts-mode' tree-sitter language parsers. > > >> +If needed, install the required parsers for `markdown' and > `markdown-inline'. > > >> +With a prefix argument, ARG, if needed, install parsers for `html'= , > > >> +`yaml', and `toml'." > > >> + (interactive "P") > > >> + (unless (treesit-ready-p 'markdown t) > > >> + (treesit-install-language-grammar 'markdown)) > > > > > > Note that this `treesit-ready-p' is not quite right, because > > > treesit-ready-p is sensitive to the current buffer. Namely, this wi= ll > > > return nil if you invoke this command in a large buffer of any kind, > > > even if the markdown parser is already installed. > > > Yes, treesit-ready-p is confusing. See also bug#80909. > > > > > >> + (unless (treesit-ready-p 'markdown-inline t) > > >> + (treesit-install-language-grammar 'markdown-inline)) > > >> + (when arg > > >> + (unless (treesit-ready-p 'html t) > > >> + (require 'html-ts-mode) > > >> + (treesit-install-language-grammar 'html)) > > >> + (unless (treesit-ready-p 'yaml t) > > >> + (require 'yaml-ts-mode) > > >> + (treesit-install-language-grammar 'yaml)) > > >> + (unless (treesit-ready-p 'toml t) > > >> + (require 'toml-ts-mode) > > >> + (treesit-install-language-grammar 'toml)))) > > >> > > >> ;;;###autoload > > >> (define-derived-mode markdown-ts-mode text-mode "Markdown" > > >> - "Major mode for editing Markdown using tree-sitter grammar." > > >> + "Major mode for editing Markdown using tree-sitter grammar. > > >> +NOTE: See `markdown-ts--set-up-inline'." > > >> + (if (and (treesit-ensure-installed 'markdown) > > >> + (treesit-ensure-installed 'markdown-inline)) > > >> + (markdown-ts--set-up) > > > > > > Here there is another, related problem: since commit d9691858, > > > treesit-ensure-installed no longer checks treesit-max-buffer-size, > > > so this will try to create a parser even in a buffer that is too big= . > > > (This problem is common to many TS-modes in core.) > > > > > > FWIW, my suggestion in bug#80909 was to move the buffer size check o= ut > > > of treesit-ready-p and into treesit-parser-create, which would have > > > nullified both of these issues. > > > > > > > > > Best, > > > > > > Eshel > > > > Hi! > > > > Eshel, thank you for noticing these issues, and for the pointer to > > bug#80909. I spent some time reading what you provided and digging in= to > > the recent change in d9691858. > > > > The attached patch (new) addresses both problems: > > > > - In markdown-ts-mode-install-parsers, replace treesit-ready-p with > > treesit-language-available-p. The install function only needs to > > know whether the grammar library is on disk, not whether the current > > buffer is within size limits. > > LGTM. > > > - In define-derived-mode markdown-ts-mode, separate the two concerns: > > call treesit-ensure-installed for both languages first (which handle= s > > auto-install if treesit-auto-install-grammar is set), then gate the > > actual mode setup on treesit-ready-p, which checks both language > > availability and buffer size. > > This one also look good, with a little caveat about this part: > > ;;;###autoload > (define-derived-mode markdown-ts-mode text-mode "Markdown" > - "Major mode for editing Markdown using tree-sitter grammar." > + "Major mode for editing Markdown using tree-sitter grammar. > +NOTE: See `markdown-ts--set-up-inline'." > + (treesit-ensure-installed 'markdown) > + (treesit-ensure-installed 'markdown-inline) > + (if (and (treesit-ready-p 'markdown t) > + (treesit-ready-p 'markdown-inline t)) > + (markdown-ts--set-up) > + (warn "markdown-ts-mode cannot be set up; using fundamental-mode. > +The tree-sitter parsers `markdown' and `markdown-inline' were not foun= d. > +Use the command `markdown-ts-mode-install-parsers' to install them. > +With a prefix argument, it can also install optional parsers.") > + (fundamental-mode))) > > Note that this triggers the warning also when the current buffer is too > large, in which case the first sentence is correct, but the rest might > be false (the parsers may be available, perhaps even just-installed.) > You could call treesit-ready-p without the QUIET=3Dt argument, and it > should yield the correct error message on failure. Of course, it > doesn't include the hint about markdown-ts-mode-install-parsers... > So maybe until treesit-max-buffer-size checking is better rationalized, we let bind treesit-max-buffer-size to most-positive-fixnum and provide a warning rather than refusal. > Yuan, St=C3=A9phane, Eshel, does this look right to you? > > > > Seems good at first glance. > > > > One can always let-bind treesit-max-buffer-size around treesit-ready-p > to avoid the buffer size > > restriction, though I'd prefer an argument be exposed to inhibit that > check, better invert it so that > > it's an extra check not the default check. One can install a parser in > a small buffer that grows beyond > > the size check which is a false sense of security. > --000000000000d74e340650c54f84 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, May 1, 2026 at 1:54=E2=80=AFPM Eshel Yaron <<a href=3D"mailto:me= @eshelyaron.com">me@HIDDEN</a>> wrote:</span></div></div><div cl= ass=3D"gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote"= style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p= adding-left:1ex">Hi,<br> <br> St=C3=A9phane Marks <<a href=3D"mailto:shipmints@HIDDEN" target=3D"_b= lank">shipmints@HIDDEN</a>> writes:<br> <br> > On Fri, May 1, 2026 at 10:26=E2=80=AFAM Rahul Martim Juliato <<a hr= ef=3D"mailto:rahuljuliato@HIDDEN" target=3D"_blank">rahuljuliato@HIDDEN= om</a>> wrote:<br> ><br> >=C2=A0 Eshel Yaron <<a href=3D"mailto:me@HIDDEN" target=3D"_= blank">me@HIDDEN</a>> writes:<br> ><br> >=C2=A0 > Hi,<br> >=C2=A0 ><br> >=C2=A0 > Rahul Martim Juliato <<a href=3D"mailto:rahuljuliato@gma= il.com" target=3D"_blank">rahuljuliato@HIDDEN</a>> writes:<br> >=C2=A0 ><br> >=C2=A0 >> +(defun markdown-ts-mode-install-parsers (arg)<br> >=C2=A0 >> +=C2=A0 "Install `markdown-ts-mode' tree-sitte= r language parsers.<br> >=C2=A0 >> +If needed, install the required parsers for `markdown&= #39; and `markdown-inline'.<br> >=C2=A0 >> +With a prefix argument, ARG, if needed, install parser= s for `html',<br> >=C2=A0 >> +`yaml', and `toml'."<br> >=C2=A0 >> +=C2=A0 (interactive "P")<br> >=C2=A0 >> +=C2=A0 (unless (treesit-ready-p 'markdown t)<br> >=C2=A0 >> +=C2=A0 =C2=A0 (treesit-install-language-grammar 'm= arkdown))<br> >=C2=A0 ><br> >=C2=A0 > Note that this `treesit-ready-p' is not quite right, be= cause<br> >=C2=A0 > treesit-ready-p is sensitive to the current buffer.=C2=A0 N= amely, this will<br> >=C2=A0 > return nil if you invoke this command in a large buffer of = any kind,<br> >=C2=A0 > even if the markdown parser is already installed.<br> >=C2=A0 > Yes, treesit-ready-p is confusing.=C2=A0 See also bug#80909= .<br> >=C2=A0 ><br> >=C2=A0 >> +=C2=A0 (unless (treesit-ready-p 'markdown-inline t= )<br> >=C2=A0 >> +=C2=A0 =C2=A0 (treesit-install-language-grammar 'm= arkdown-inline))<br> >=C2=A0 >> +=C2=A0 (when arg<br> >=C2=A0 >> +=C2=A0 =C2=A0 (unless (treesit-ready-p 'html t)<br= > >=C2=A0 >> +=C2=A0 =C2=A0 =C2=A0 (require 'html-ts-mode)<br> >=C2=A0 >> +=C2=A0 =C2=A0 =C2=A0 (treesit-install-language-grammar= 'html))<br> >=C2=A0 >> +=C2=A0 =C2=A0 (unless (treesit-ready-p 'yaml t)<br= > >=C2=A0 >> +=C2=A0 =C2=A0 =C2=A0 (require 'yaml-ts-mode)<br> >=C2=A0 >> +=C2=A0 =C2=A0 =C2=A0 (treesit-install-language-grammar= 'yaml))<br> >=C2=A0 >> +=C2=A0 =C2=A0 (unless (treesit-ready-p 'toml t)<br= > >=C2=A0 >> +=C2=A0 =C2=A0 =C2=A0 (require 'toml-ts-mode)<br> >=C2=A0 >> +=C2=A0 =C2=A0 =C2=A0 (treesit-install-language-grammar= 'toml))))<br> >=C2=A0 >>=C2=A0 <br> >=C2=A0 >>=C2=A0 ;;;###autoload<br> >=C2=A0 >>=C2=A0 (define-derived-mode markdown-ts-mode text-mode &= quot;Markdown"<br> >=C2=A0 >> -=C2=A0 "Major mode for editing Markdown using tre= e-sitter grammar."<br> >=C2=A0 >> +=C2=A0 "Major mode for editing Markdown using tre= e-sitter grammar.<br> >=C2=A0 >> +NOTE: See `markdown-ts--set-up-inline'."<br> >=C2=A0 >> +=C2=A0 (if (and (treesit-ensure-installed 'markdow= n)<br> >=C2=A0 >> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(treesit-ensu= re-installed 'markdown-inline))<br> >=C2=A0 >> +=C2=A0 =C2=A0 =C2=A0 (markdown-ts--set-up)<br> >=C2=A0 ><br> >=C2=A0 > Here there is another, related problem: since commit d96918= 58,<br> >=C2=A0 > treesit-ensure-installed no longer checks treesit-max-buffe= r-size, <br> >=C2=A0 > so this will try to create a parser even in a buffer that i= s too big.<br> >=C2=A0 > (This problem is common to many TS-modes in core.)<br> >=C2=A0 ><br> >=C2=A0 > FWIW, my suggestion in bug#80909 was to move the buffer siz= e check out<br> >=C2=A0 > of treesit-ready-p and into treesit-parser-create, which wo= uld have<br> >=C2=A0 > nullified both of these issues.<br> >=C2=A0 ><br> >=C2=A0 ><br> >=C2=A0 > Best,<br> >=C2=A0 ><br> >=C2=A0 > Eshel<br> ><br> >=C2=A0 Hi!<br> ><br> >=C2=A0 Eshel, thank you for noticing these issues, and for the pointer = to<br> >=C2=A0 bug#80909.=C2=A0 I spent some time reading what you provided and= digging into<br> >=C2=A0 the recent change in d9691858.<br> ><br> >=C2=A0 The attached patch (new) addresses both problems:<br> ><br> >=C2=A0 - In markdown-ts-mode-install-parsers, replace treesit-ready-p w= ith<br> >=C2=A0 =C2=A0 treesit-language-available-p.=C2=A0 The install function = only needs to<br> >=C2=A0 =C2=A0 know whether the grammar library is on disk, not whether = the current<br> >=C2=A0 =C2=A0 buffer is within size limits.<br> <br> LGTM.<br> <br> >=C2=A0 - In define-derived-mode markdown-ts-mode, separate the two conc= erns:<br> >=C2=A0 =C2=A0 call treesit-ensure-installed for both languages first (w= hich handles<br> >=C2=A0 =C2=A0 auto-install if treesit-auto-install-grammar is set), the= n gate the<br> >=C2=A0 =C2=A0 actual mode setup on treesit-ready-p, which checks both l= anguage<br> >=C2=A0 =C2=A0 availability and buffer size.<br> <br> This one also look good, with a little caveat about this part:<br> <br> =C2=A0 =C2=A0;;;###autoload<br> =C2=A0 =C2=A0(define-derived-mode markdown-ts-mode text-mode "Markdown= "<br> =C2=A0 -=C2=A0 "Major mode for editing Markdown using tree-sitter gram= mar."<br> =C2=A0 +=C2=A0 "Major mode for editing Markdown using tree-sitter gram= mar.<br> =C2=A0 +NOTE: See `markdown-ts--set-up-inline'."<br> =C2=A0 +=C2=A0 (treesit-ensure-installed 'markdown)<br> =C2=A0 +=C2=A0 (treesit-ensure-installed 'markdown-inline)<br> =C2=A0 +=C2=A0 (if (and (treesit-ready-p 'markdown t)<br> =C2=A0 +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(treesit-ready-p 'mark= down-inline t))<br> =C2=A0 +=C2=A0 =C2=A0 =C2=A0 (markdown-ts--set-up)<br> =C2=A0 +=C2=A0 =C2=A0 (warn "markdown-ts-mode cannot be set up; using = fundamental-mode.<br> =C2=A0 +The tree-sitter parsers `markdown' and `markdown-inline' we= re not found.<br> =C2=A0 +Use the command `markdown-ts-mode-install-parsers' to install t= hem.<br> =C2=A0 +With a prefix argument, it can also install optional parsers."= )<br> =C2=A0 +=C2=A0 =C2=A0 (fundamental-mode)))<br> <br> Note that this triggers the warning also when the current buffer is too<br> large, in which case the first sentence is correct, but the rest might<br> be false (the parsers may be available, perhaps even just-installed.)<br> You could call treesit-ready-p without the QUIET=3Dt argument, and it<br> should yield the correct error message on failure.=C2=A0 Of course, it<br> doesn't include the hint about markdown-ts-mode-install-parsers...<br><= /blockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font-= family:monospace">So maybe until treesit-max-buffer-size checking is better= rationalized, we let bind treesit-max-buffer-size to=C2=A0most-positive-fi= xnum and provide a warning rather than refusal.</div></div><div><br></div><= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex"> >=C2=A0 Yuan, St=C3=A9phane, Eshel, does this look right to you?<br> ><br> > Seems good at first glance.<br> ><br> > One can always let-bind treesit-max-buffer-size around treesit-ready-p= to avoid the buffer size<br> > restriction, though I'd prefer an argument be exposed to inhibit t= hat check,=C2=A0 better invert it so that<br> > it's an extra check not the default check.=C2=A0 One can install a= parser in a small buffer that grows beyond<br> > the size check which is a false sense of security.<br> </blockquote></div></div> --000000000000d74e340650c54f84--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 1 May 2026 17:54:06 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 01 13:54:06 2026 Received: from localhost ([127.0.0.1]:38098 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wIs3y-0002g8-6f for submit <at> debbugs.gnu.org; Fri, 01 May 2026 13:54:06 -0400 Received: from mail.eshelyaron.com ([107.175.124.16]:56914 helo=eshelyaron.com) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <me@HIDDEN>) id 1wIs3v-0002fv-KK for 80740 <at> debbugs.gnu.org; Fri, 01 May 2026 13:54:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eshelyaron.com; s=mail; t=1777658042; bh=wLe7S8Wvk2c+I3YM/Xp5qCnTmRywBvxiYBotoTb0Oi8=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=XQjykAW3gS2vV1fLMRTayU1hU3w05BBaKd5UhIJsfejWZfH0wL5td8rB7L1yP0SK0 FrPNQTY5dO93aXaRpCeO6kcXGyfSn+oYuQdU/hnVa9Tfj40YaSHawiw0Uffy/jcsRe m5gEmQn5huFNhff+B6OtRAVnqnAfSBMRXjoADH1DzIUebN8OEzPArfIOSUc3vID2pj N6eYZpkIX1mSSPxmeQArYB58ezIt856r4XX8vujDIH0FI8ikUphF8uoy0v4L2LuaRH OvD+7+UKBr8iUx008pH7YjT2BslCYPvjasa3wTuMy2YYh5ZTBkaQHmTBeQeSc8+wc6 w2eAB7WJjxCUw== From: Eshel Yaron <me@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+1HbpfowV03Cyej3Do0pv+UOAZUPFXwR2jicBaUCGjy5oZ_Q@HIDDEN> References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN> <m2ik982h8d.fsf@HIDDEN> <871pfvtso9.fsf@HIDDEN> <m2lde3i4t8.fsf@HIDDEN> <CAN+1HbpfowV03Cyej3Do0pv+UOAZUPFXwR2jicBaUCGjy5oZ_Q@HIDDEN> Date: Fri, 01 May 2026 19:53:57 +0200 Message-ID: <87cxzfkocq.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 80740 Cc: Yuan Fu <casouri@HIDDEN>, Rahul Martim Juliato <rahuljuliato@HIDDEN>, 80740 <at> debbugs.gnu.org, Eli Zaretskii <eliz@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.0 (-) Hi, St=C3=A9phane Marks <shipmints@HIDDEN> writes: > On Fri, May 1, 2026 at 10:26=E2=80=AFAM Rahul Martim Juliato <rahuljuliat= o@HIDDEN> wrote: > > Eshel Yaron <me@HIDDEN> writes: > > > Hi, > > > > Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > > > >> +(defun markdown-ts-mode-install-parsers (arg) > >> + "Install `markdown-ts-mode' tree-sitter language parsers. > >> +If needed, install the required parsers for `markdown' and `markdown= -inline'. > >> +With a prefix argument, ARG, if needed, install parsers for `html', > >> +`yaml', and `toml'." > >> + (interactive "P") > >> + (unless (treesit-ready-p 'markdown t) > >> + (treesit-install-language-grammar 'markdown)) > > > > Note that this `treesit-ready-p' is not quite right, because > > treesit-ready-p is sensitive to the current buffer. Namely, this will > > return nil if you invoke this command in a large buffer of any kind, > > even if the markdown parser is already installed. > > Yes, treesit-ready-p is confusing. See also bug#80909. > > > >> + (unless (treesit-ready-p 'markdown-inline t) > >> + (treesit-install-language-grammar 'markdown-inline)) > >> + (when arg > >> + (unless (treesit-ready-p 'html t) > >> + (require 'html-ts-mode) > >> + (treesit-install-language-grammar 'html)) > >> + (unless (treesit-ready-p 'yaml t) > >> + (require 'yaml-ts-mode) > >> + (treesit-install-language-grammar 'yaml)) > >> + (unless (treesit-ready-p 'toml t) > >> + (require 'toml-ts-mode) > >> + (treesit-install-language-grammar 'toml)))) > >>=20=20 > >> ;;;###autoload > >> (define-derived-mode markdown-ts-mode text-mode "Markdown" > >> - "Major mode for editing Markdown using tree-sitter grammar." > >> + "Major mode for editing Markdown using tree-sitter grammar. > >> +NOTE: See `markdown-ts--set-up-inline'." > >> + (if (and (treesit-ensure-installed 'markdown) > >> + (treesit-ensure-installed 'markdown-inline)) > >> + (markdown-ts--set-up) > > > > Here there is another, related problem: since commit d9691858, > > treesit-ensure-installed no longer checks treesit-max-buffer-size,=20 > > so this will try to create a parser even in a buffer that is too big. > > (This problem is common to many TS-modes in core.) > > > > FWIW, my suggestion in bug#80909 was to move the buffer size check out > > of treesit-ready-p and into treesit-parser-create, which would have > > nullified both of these issues. > > > > > > Best, > > > > Eshel > > Hi! > > Eshel, thank you for noticing these issues, and for the pointer to > bug#80909. I spent some time reading what you provided and digging into > the recent change in d9691858. > > The attached patch (new) addresses both problems: > > - In markdown-ts-mode-install-parsers, replace treesit-ready-p with > treesit-language-available-p. The install function only needs to > know whether the grammar library is on disk, not whether the current > buffer is within size limits. LGTM. > - In define-derived-mode markdown-ts-mode, separate the two concerns: > call treesit-ensure-installed for both languages first (which handles > auto-install if treesit-auto-install-grammar is set), then gate the > actual mode setup on treesit-ready-p, which checks both language > availability and buffer size. This one also look good, with a little caveat about this part: ;;;###autoload (define-derived-mode markdown-ts-mode text-mode "Markdown" - "Major mode for editing Markdown using tree-sitter grammar." + "Major mode for editing Markdown using tree-sitter grammar. +NOTE: See `markdown-ts--set-up-inline'." + (treesit-ensure-installed 'markdown) + (treesit-ensure-installed 'markdown-inline) + (if (and (treesit-ready-p 'markdown t) + (treesit-ready-p 'markdown-inline t)) + (markdown-ts--set-up) + (warn "markdown-ts-mode cannot be set up; using fundamental-mode. +The tree-sitter parsers `markdown' and `markdown-inline' were not found. +Use the command `markdown-ts-mode-install-parsers' to install them. +With a prefix argument, it can also install optional parsers.") + (fundamental-mode))) Note that this triggers the warning also when the current buffer is too large, in which case the first sentence is correct, but the rest might be false (the parsers may be available, perhaps even just-installed.) You could call treesit-ready-p without the QUIET=3Dt argument, and it should yield the correct error message on failure. Of course, it doesn't include the hint about markdown-ts-mode-install-parsers... > Yuan, St=C3=A9phane, Eshel, does this look right to you? > > Seems good at first glance. > > One can always let-bind treesit-max-buffer-size around treesit-ready-p to= avoid the buffer size > restriction, though I'd prefer an argument be exposed to inhibit that che= ck, better invert it so that > it's an extra check not the default check. One can install a parser in a= small buffer that grows beyond > the size check which is a false sense of security.
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 1 May 2026 14:52:11 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 01 10:52:11 2026 Received: from localhost ([127.0.0.1]:36707 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wIpDu-00044L-7q for submit <at> debbugs.gnu.org; Fri, 01 May 2026 10:52:11 -0400 Received: from mail-vs1-xe32.google.com ([2607:f8b0:4864:20::e32]:52331) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1wIpDr-00043j-1d for 80740 <at> debbugs.gnu.org; Fri, 01 May 2026 10:52:08 -0400 Received: by mail-vs1-xe32.google.com with SMTP id ada2fe7eead31-6201fc9ac0eso753798137.0 for <80740 <at> debbugs.gnu.org>; Fri, 01 May 2026 07:52:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777647126; cv=none; d=google.com; s=arc-20240605; b=hKXElz83BUrZsNIX5FZqjxpxK9l6h5vHuaPZEGdjOpMPnVlJlWnRhYtN+T+QAWcFgo 2apR1IUfLeNu7dpB0kpiNSKn9WQbHkaHegOHSFu2dZH+h2P3ycuYYqPz8i3ubXc1IwsO Jz2p+S0a1mzh6LZm89hjbSFjOjY/MY3UcE+WgKv0ISKAbM8eQ3QDTamxRBL6uVGJGCrJ DOpa7VKyZ2iWYJy7C4ms00QwH1pYMBVmy0FyEGuK3WJ5rwcYvjEWotxg1MAwuPNEkppG zcAoQwny8fBsMrH2TYQGskcNJaV5ClqP7fPbuKVMWq5AQEXmPXkcS9XJ0aRz7dek1bC/ qU0w== 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=iq9Cx0uWE2yioF24GX2qvBO7TddgelM1sftwcA87G3c=; fh=rZLVAdrmDhtTc7akXwQ1yJykSoLoxVy7MNzCMHsNz8k=; b=j6jkR1jGqwWqGPakEqLjiGK6lwSo8SilttywVqpKRLLCL3eRT0lvE3IC6Lw3uFBuou sCKTAtLM5QV6aBiOuQ0Sx4Znuknt19fsFZvFK3lDXr1KpWQA+gdhk1m9ZJfqVyPXtPmo MccFcDgw7hiCfrR8iiE3Uu1S8zCFwlZTmlAcjrtmRx7J86TV9WV/GPjr4A480IWR6DWY wy/p5isvSK8hQrmNNNsOgyKHf0+0/FRw9FaIKzfSiE4yxaSEZMwbrTq56qG9++T3Mp+d jIW/r1ffZaoxzCeFR0t+3hF8D3PIwOy6kmIA6kKhe+y7Wr+uchga6zM3Uv0sq1nv02q/ 3rtA==; 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=1777647126; x=1778251926; 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=iq9Cx0uWE2yioF24GX2qvBO7TddgelM1sftwcA87G3c=; b=K1akH4U0yEcxohaM7Qj3lUd5m4+A+FmvCExZPunuZuX+ktYrH4Y/KcP2tYcqHxXlYc PV53nrVqCYXouFbWlJclmU8Rr5cj1CxVtRwo5NDsbvw8V4BeAMKUzkOCXS1MZ9XUDRl2 E5iqs+MPcueJ7GfZ4MXCmgICPEkM/G0FTNwv27+vNm5+PR3p4tUpGvkWit0criqaKb19 Sz2ThZVVaQd1EifF/jNSWpSDSAhUv8a0/86Y9jne7K3xpTDEki8XtXy4+ZQnnB5zOn3J D1FOQgzYjYCs827VeeI07SzKQ7XGXFjSbbFn4h+ACTJw/8HjWlUjNZyRC50Zoc+obxSt treg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777647126; x=1778251926; 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=iq9Cx0uWE2yioF24GX2qvBO7TddgelM1sftwcA87G3c=; b=TnXNn3LPjcJoRaJpAsC+rpVRVaRo4obWmoqcgZTI1uVQUefj24/w0UcS4V3jMkzyfU Dir42EAX5olNicVRTfaEQefn/rlTnrQFv1rmDRe/8sYKAEfD06Ne6JJtP+4kY1KOYYht xpxLWg+Cp5y/upli+CGyLVV9b0FZpCE21HDVjy1EzZGGd1iWojnL/47KAsKVQUM4Je4z DMa577UpUNbGXN5HzBtW1yyBowvkXkfqvRB0a9fm7GvlV0XOZKl7riiutWYzaXIcAAk2 kqHQAJbfSrcOksL7l+a7SSMFBRWxfYegtmnHSyfYcrw81H+itAXJFPPXT0TfMGOru07a 7VOQ== X-Forwarded-Encrypted: i=1; AFNElJ9TXDnSj1KeZ2vze3BlSJbTR/4DHFMcgGzF1JlEqkhmgOuj0cygRe6H8Ffo/tpIqZd2oPoc/Q==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzZcVoAaF3v0dMR3zrhRY6u7K5qT5XZg0Cl3LAq3W89y1cFbekr Vkr7qTr+f8YoOhCCKB0MjmiJqLCULZLEhTE40EBArC2qBUz5sxEBHPAEY0p48VFkMq3rpehggzT T92IH07DsN1m1qa+ZH0nQgwaX+aJGMNU= X-Gm-Gg: AeBDievKW+Ui8NEnj18TqpkQzQyC2gqr8n3eMDUGhdGi84vBlisgCM6eNTIZFt/7Shw w4THHOsAHvSEtx7XJ852ayvmQJfHdN7I3qPeIFKtKyQ/KBWG73yyQWbLi/1FogMTQAvSqxR24GT MIHvGVX+ua1ZgFWe8YQPZBgXE8CzQLcJv/JHu2qKllYfuztOAzqQoAsEaG7NFhV8im988NdpQUD WD4Ih9irBDgFeZinvKRXy63FRDPORXqYFujvKiQFV8euBKuUtAOGXjZ4aWUYbQ/FsoDO4PZec2u 4OcqZYsBfM1oKcOnU+onBdhJ5tfVeegnTz/M7kwvOXFmKxk42Z+n91ntnYQEb5gb6vFvQbM38Mm 1eXYXOHGTNxWCz5WJtPtKTGfKYJj957Wv3hIaOqdncfHUrjW5NWLzt/cq+A== X-Received: by 2002:a05:6102:6a85:b0:607:4fe2:a647 with SMTP id ada2fe7eead31-62ad4467a63mr3922652137.21.1777647125954; Fri, 01 May 2026 07:52:05 -0700 (PDT) MIME-Version: 1.0 References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN> <m2ik982h8d.fsf@HIDDEN> <871pfvtso9.fsf@HIDDEN> <m2lde3i4t8.fsf@HIDDEN> In-Reply-To: <m2lde3i4t8.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Fri, 1 May 2026 10:51:53 -0400 X-Gm-Features: AVHnY4ICM6LPilwWL3P7Tq_blcltv-Wf6zdnti0FXV3c1LmOSxu-zx8SmKbriRQ Message-ID: <CAN+1HbpfowV03Cyej3Do0pv+UOAZUPFXwR2jicBaUCGjy5oZ_Q@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' To: Rahul Martim Juliato <rahuljuliato@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000007a83a50650c2b967" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80740 Cc: Eshel Yaron <me@HIDDEN>, Yuan Fu <casouri@HIDDEN>, 80740 <at> debbugs.gnu.org, Eli Zaretskii <eliz@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: 0.0 (/) --0000000000007a83a50650c2b967 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, May 1, 2026 at 10:26=E2=80=AFAM Rahul Martim Juliato <rahuljuliato@= gmail.com> wrote: > Eshel Yaron <me@HIDDEN> writes: > > > Hi, > > > > Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > > > >> +(defun markdown-ts-mode-install-parsers (arg) > >> + "Install `markdown-ts-mode' tree-sitter language parsers. > >> +If needed, install the required parsers for `markdown' and > `markdown-inline'. > >> +With a prefix argument, ARG, if needed, install parsers for `html', > >> +`yaml', and `toml'." > >> + (interactive "P") > >> + (unless (treesit-ready-p 'markdown t) > >> + (treesit-install-language-grammar 'markdown)) > > > > Note that this `treesit-ready-p' is not quite right, because > > treesit-ready-p is sensitive to the current buffer. Namely, this will > > return nil if you invoke this command in a large buffer of any kind, > > even if the markdown parser is already installed. > > Yes, treesit-ready-p is confusing. See also bug#80909. > > > >> + (unless (treesit-ready-p 'markdown-inline t) > >> + (treesit-install-language-grammar 'markdown-inline)) > >> + (when arg > >> + (unless (treesit-ready-p 'html t) > >> + (require 'html-ts-mode) > >> + (treesit-install-language-grammar 'html)) > >> + (unless (treesit-ready-p 'yaml t) > >> + (require 'yaml-ts-mode) > >> + (treesit-install-language-grammar 'yaml)) > >> + (unless (treesit-ready-p 'toml t) > >> + (require 'toml-ts-mode) > >> + (treesit-install-language-grammar 'toml)))) > >> > >> ;;;###autoload > >> (define-derived-mode markdown-ts-mode text-mode "Markdown" > >> - "Major mode for editing Markdown using tree-sitter grammar." > >> + "Major mode for editing Markdown using tree-sitter grammar. > >> +NOTE: See `markdown-ts--set-up-inline'." > >> + (if (and (treesit-ensure-installed 'markdown) > >> + (treesit-ensure-installed 'markdown-inline)) > >> + (markdown-ts--set-up) > > > > Here there is another, related problem: since commit d9691858, > > treesit-ensure-installed no longer checks treesit-max-buffer-size, > > so this will try to create a parser even in a buffer that is too big. > > (This problem is common to many TS-modes in core.) > > > > FWIW, my suggestion in bug#80909 was to move the buffer size check out > > of treesit-ready-p and into treesit-parser-create, which would have > > nullified both of these issues. > > > > > > Best, > > > > Eshel > > > Hi! > > Eshel, thank you for noticing these issues, and for the pointer to > bug#80909. I spent some time reading what you provided and digging into > the recent change in d9691858. > > The attached patch (new) addresses both problems: > > - In markdown-ts-mode-install-parsers, replace treesit-ready-p with > treesit-language-available-p. The install function only needs to > know whether the grammar library is on disk, not whether the current > buffer is within size limits. > > - In define-derived-mode markdown-ts-mode, separate the two concerns: > call treesit-ensure-installed for both languages first (which handles > auto-install if treesit-auto-install-grammar is set), then gate the > actual mode setup on treesit-ready-p, which checks both language > availability and buffer size. > > Yuan, St=C3=A9phane, Eshel, does this look right to you? > Seems good at first glance. One can always let-bind treesit-max-buffer-size around treesit-ready-p to avoid the buffer size restriction, though I'd prefer an argument be exposed to inhibit that check, better invert it so that it's an extra check not the default check. One can install a parser in a small buffer that grows beyond the size check which is a false sense of security. --0000000000007a83a50650c2b967 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, May 1, 2026 at 10:26=E2=80=AFAM 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">Eshel Yaron <<a href=3D"mailto:me@e= shelyaron.com" target=3D"_blank">me@HIDDEN</a>> writes:<br> <br> > Hi,<br> ><br> > Rahul Martim Juliato <<a href=3D"mailto:rahuljuliato@HIDDEN" tar= get=3D"_blank">rahuljuliato@HIDDEN</a>> writes:<br> ><br> >> +(defun markdown-ts-mode-install-parsers (arg)<br> >> +=C2=A0 "Install `markdown-ts-mode' tree-sitter language = parsers.<br> >> +If needed, install the required parsers for `markdown' and `m= arkdown-inline'.<br> >> +With a prefix argument, ARG, if needed, install parsers for `html= ',<br> >> +`yaml', and `toml'."<br> >> +=C2=A0 (interactive "P")<br> >> +=C2=A0 (unless (treesit-ready-p 'markdown t)<br> >> +=C2=A0 =C2=A0 (treesit-install-language-grammar 'markdown))<b= r> ><br> > Note that this `treesit-ready-p' is not quite right, because<br> > treesit-ready-p is sensitive to the current buffer.=C2=A0 Namely, this= will<br> > return nil if you invoke this command in a large buffer of any kind,<b= r> > even if the markdown parser is already installed.<br> > Yes, treesit-ready-p is confusing.=C2=A0 See also bug#80909.<br> ><br> >> +=C2=A0 (unless (treesit-ready-p 'markdown-inline t)<br> >> +=C2=A0 =C2=A0 (treesit-install-language-grammar 'markdown-inl= ine))<br> >> +=C2=A0 (when arg<br> >> +=C2=A0 =C2=A0 (unless (treesit-ready-p 'html t)<br> >> +=C2=A0 =C2=A0 =C2=A0 (require 'html-ts-mode)<br> >> +=C2=A0 =C2=A0 =C2=A0 (treesit-install-language-grammar 'html)= )<br> >> +=C2=A0 =C2=A0 (unless (treesit-ready-p 'yaml t)<br> >> +=C2=A0 =C2=A0 =C2=A0 (require 'yaml-ts-mode)<br> >> +=C2=A0 =C2=A0 =C2=A0 (treesit-install-language-grammar 'yaml)= )<br> >> +=C2=A0 =C2=A0 (unless (treesit-ready-p 'toml t)<br> >> +=C2=A0 =C2=A0 =C2=A0 (require 'toml-ts-mode)<br> >> +=C2=A0 =C2=A0 =C2=A0 (treesit-install-language-grammar 'toml)= )))<br> >>=C2=A0 <br> >>=C2=A0 ;;;###autoload<br> >>=C2=A0 (define-derived-mode markdown-ts-mode text-mode "Markdo= wn"<br> >> -=C2=A0 "Major mode for editing Markdown using tree-sitter gr= ammar."<br> >> +=C2=A0 "Major mode for editing Markdown using tree-sitter gr= ammar.<br> >> +NOTE: See `markdown-ts--set-up-inline'."<br> >> +=C2=A0 (if (and (treesit-ensure-installed 'markdown)<br> >> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(treesit-ensure-installe= d 'markdown-inline))<br> >> +=C2=A0 =C2=A0 =C2=A0 (markdown-ts--set-up)<br> ><br> > Here there is another, related problem: since commit d9691858,<br> > treesit-ensure-installed no longer checks treesit-max-buffer-size, <br= > > so this will try to create a parser even in a buffer that is too big.<= br> > (This problem is common to many TS-modes in core.)<br> ><br> > FWIW, my suggestion in bug#80909 was to move the buffer size check out= <br> > of treesit-ready-p and into treesit-parser-create, which would have<br= > > nullified both of these issues.<br> ><br> ><br> > Best,<br> ><br> > Eshel<br> <br> <br> Hi!<br> <br> Eshel, thank you for noticing these issues, and for the pointer to<br> bug#80909.=C2=A0 I spent some time reading what you provided and digging in= to<br> the recent change in d9691858.<br> <br> The attached patch (new) addresses both problems:<br> <br> - In markdown-ts-mode-install-parsers, replace treesit-ready-p with<br> =C2=A0 treesit-language-available-p.=C2=A0 The install function only needs = to<br> =C2=A0 know whether the grammar library is on disk, not whether the current= <br> =C2=A0 buffer is within size limits.<br> <br> - In define-derived-mode markdown-ts-mode, separate the two concerns:<br> =C2=A0 call treesit-ensure-installed for both languages first (which handle= s<br> =C2=A0 auto-install if treesit-auto-install-grammar is set), then gate the<= br> =C2=A0 actual mode setup on treesit-ready-p, which checks both language<br> =C2=A0 availability and buffer size.<br> <br> Yuan, St=C3=A9phane, Eshel, does this look right to you?<br></blockquote><d= iv><br></div><div class=3D"gmail_default" style=3D"font-family:monospace">S= eems good at first glance.</div><div class=3D"gmail_default" style=3D"font-= family:monospace"><br></div><div class=3D"gmail_default" style=3D"font-fami= ly:monospace">One can always let-bind=C2=A0treesit-max-buffer-size around t= reesit-ready-p=C2=A0to avoid the buffer size restriction, though I'd pr= efer an argument be exposed to inhibit that check,=C2=A0 better invert it s= o that it's an extra check not the default check.=C2=A0 One can install= a parser in a small buffer that grows beyond the size check which is a fal= se sense of security.</div></div></div> --0000000000007a83a50650c2b967--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 1 May 2026 14:26:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 01 10:26:58 2026 Received: from localhost ([127.0.0.1]:36652 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wIopW-0000Aj-Jb for submit <at> debbugs.gnu.org; Fri, 01 May 2026 10:26:58 -0400 Received: from mail-dy1-x132d.google.com ([2607:f8b0:4864:20::132d]:43151) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>) id 1wIopU-0000A8-6r for 80740 <at> debbugs.gnu.org; Fri, 01 May 2026 10:26:56 -0400 Received: by mail-dy1-x132d.google.com with SMTP id 5a478bee46e88-2dec803f9f0so1870391eec.0 for <80740 <at> debbugs.gnu.org>; Fri, 01 May 2026 07:26:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777645615; x=1778250415; 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=JFBMBoZNwjEzHQRMhYqriVjRDcXnD3zyQakLqla5iUE=; b=SFOoJeFke7M0rZVQU0htDhTAMCQ+mbtgYbdFxTZQfR6OZk0sTIxYOgE/aROFhcaGHK F0kDaiERa/f4xtAB85qh5kUvMOA2HaJfqNgyeSjX/t1xi/hX8ur4EnSoKTxawBUp17Vz gZbQdVIaHAQQb+DFlZ4Rp1WtRgGcYQ7dOWzDNIJF8PMUMQ+bcblRTPTms17wmpvb4CTc KAFuimrb+6M9zDQH6w7nZ19iIGi3c/9iQbbDxCaqkQQgSaY+p5Aqm8/w3rDCpk91eVoa qzRvpmPq+ibs7LfMSsxjqix0PK6ndLhFpJKnlIcqwet1+h/Q4XYdmFqPNd/QkTtu9R1d A+9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777645615; x=1778250415; 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=JFBMBoZNwjEzHQRMhYqriVjRDcXnD3zyQakLqla5iUE=; b=AHWvMZaXcnvND685JrwKtYqYcH7wOCBTI1dDg177mXUnJtoazLH3d75ScFfufKmq+u e6NghQ5g9aJsVnL3UwVB/1WVj3D4muXPTd41iSxkSDkmhMQfbFT/dHyyh3BJHtGnvpu4 EclDLtRopmDLnm3kntB3oftCcooVVFzGJ7I/69gK0scC+L21MNmHVBIEfs68N4X1XMg+ uA8bCUYiSxXwNVDtqO9rx6dnr78QixNL2dIS+v7vhdX5qDF/VyVnHncOamVzxmJYHP1S hVW7djchMtZpZl7GV9rBKOxUyipVieCMoXFgrkW7UGiTMx3lbr4Wu7BSwT+PGp58okB8 cu7w== X-Forwarded-Encrypted: i=1; AFNElJ+41HkzEN+8DmF62DMP0wb+qiUxRBMDnDTGmyhO3oY20fEC5nLY7d1bCTtYpMkjEY1iusOR2A==@debbugs.gnu.org X-Gm-Message-State: AOJu0YypsHkgBfJgoUPirL4VXcHyPDszpkXOkiyk7l8/5c3Lg93G5HHg tVHE8XxxwBqs0v3fw834TXOznRl6t6MZ8kgMjHsHIgEPkDl4OQELzXHo X-Gm-Gg: AeBDiesMtUXrVE6dwZLOlNoTzk2fT7yyS2nNP9tyabbfJldNtmjabuzncah7vezEuMc 7YJrsMAFcge6MFeyLL+RVwNnBtWAVehvqwnKZrbcl9vi/cnruFtbOJ0bTzPfYUcltqrcYw248hu FQ5zoeu2eQbC32gbPTKJ6BnGUtXzI9WQayatRTk4jvj1K9BqXtO5ia5Q2sofiKDkDZ5E6ah3mvE WfNdLP5wHUsXEtLL0n0Ux3jss7G0+sgi7F9WWScRxM+HkcIEYr/M9CcIZNVYNO/77H4pKgti5H+ BHfrtffvHgGLwUM5rM2IbUmVBp5kKJjRWvU3v+l75S3gU4uofrt/5aQcHGcR9Jxv1nNyzKDdK9E mwoCyWhLXtXwH6s6uqlnSOSuqWGjdYJwZ3ILBW/23tfdpdB0JpT5glOhpeyPOSiAZknDIkZWS3e SaVbcPTkSsMKNvivmgKx63m3ROlcQMISF/uxz09WHVN+IrrcF/GEx8iWX9tqcOES7G8k6o6IG6T v0MS/Db3lWroXEIDVwjv0YhuIIQkzu+8fF1XeObsYvWuT+dtNce11p6 X-Received: by 2002:a05:7300:2d24:b0:2e7:190:41d6 with SMTP id 5a478bee46e88-2ed4d51476fmr2977776eec.2.1777645614461; Fri, 01 May 2026 07:26:54 -0700 (PDT) Received: from MacBook-Pro.local (201-93-59-77.dial-up.telesp.net.br. [201.93.59.77]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3bf6811fsm4607153eec.29.2026.05.01.07.26.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 07:26:53 -0700 (PDT) From: Rahul Martim Juliato <rahuljuliato@HIDDEN> X-Google-Original-From: Rahul Martim Juliato <rahul.juliato@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' In-Reply-To: <871pfvtso9.fsf@HIDDEN> References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN> <m2ik982h8d.fsf@HIDDEN> <871pfvtso9.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: Fri, 01 May 2026 11:26:43 -0300 Message-ID: <m2lde3i4t8.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: Eshel Yaron <me@HIDDEN>, Eli Zaretskii <eliz@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 Eshel Yaron <me@HIDDEN> writes: > Hi, > > Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > >> +(defun markdown-ts-mode-install-parsers (arg) >> + "Install `markdown-ts-mode' tree-sitter language parsers. >> +If needed, install the required parsers for `markdown' and `markdown-in= line'. >> +With a prefix argument, ARG, if needed, install parsers for `html', >> +`yaml', and `toml'." >> + (interactive "P") >> + (unless (treesit-ready-p 'markdown t) >> + (treesit-install-language-grammar 'markdown)) > > Note that this `treesit-ready-p' is not quite right, because > treesit-ready-p is sensitive to the current buffer. Namely, this will > return nil if you invoke this command in a large buffer of any kind, > even if the markdown parser is already installed. > Yes, treesit-ready-p is confusing. See also bug#80909. > >> + (unless (treesit-ready-p 'markdown-inline t) >> + (treesit-install-language-grammar 'markdown-inline)) >> + (when arg >> + (unless (treesit-ready-p 'html t) >> + (require 'html-ts-mode) >> + (treesit-install-language-grammar 'html)) >> + (unless (treesit-ready-p 'yaml t) >> + (require 'yaml-ts-mode) >> + (treesit-install-language-grammar 'yaml)) >> + (unless (treesit-ready-p 'toml t) >> + (require 'toml-ts-mode) >> + (treesit-install-language-grammar 'toml)))) >>=20=20 >> ;;;###autoload >> (define-derived-mode markdown-ts-mode text-mode "Markdown" >> - "Major mode for editing Markdown using tree-sitter grammar." >> + "Major mode for editing Markdown using tree-sitter grammar. >> +NOTE: See `markdown-ts--set-up-inline'." >> + (if (and (treesit-ensure-installed 'markdown) >> + (treesit-ensure-installed 'markdown-inline)) >> + (markdown-ts--set-up) > > Here there is another, related problem: since commit d9691858, > treesit-ensure-installed no longer checks treesit-max-buffer-size,=20 > so this will try to create a parser even in a buffer that is too big. > (This problem is common to many TS-modes in core.) > > FWIW, my suggestion in bug#80909 was to move the buffer size check out > of treesit-ready-p and into treesit-parser-create, which would have > nullified both of these issues. > > > Best, > > Eshel Hi! Eshel, thank you for noticing these issues, and for the pointer to bug#80909. I spent some time reading what you provided and digging into the recent change in d9691858. The attached patch (new) addresses both problems: - In markdown-ts-mode-install-parsers, replace treesit-ready-p with treesit-language-available-p. The install function only needs to know whether the grammar library is on disk, not whether the current buffer is within size limits. - In define-derived-mode markdown-ts-mode, separate the two concerns: call treesit-ensure-installed for both languages first (which handles auto-install if treesit-auto-install-grammar is set), then gate the actual mode setup on treesit-ready-p, which checks both language availability and buffer size. Yuan, St=C3=A9phane, Eshel, does this look right to you? --=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 RnJvbSA1NWVhMDBkYWU3ZWQ2ZmU2NTAxYzgxYzQ2NWM5Y2MyZWRkN2QyODUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn bWFpbC5jb20+CkRhdGU6IEZyaSwgMyBBcHIgMjAyNiAyMzo0MTo0NyAtMDMwMApTdWJqZWN0OiBb UEFUQ0hdIEltcHJvdmUgJ21hcmtkb3duLXRzLW1vZGUnCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k aW5nOiA4Yml0CgpPdmVyaGF1bCAnbWFya2Rvd24tdHMtbW9kZScgd2l0aCBjb21wcmVoZW5zaXZl IGZvbnRpZmljYXRpb24sCmNvZGUgYmxvY2sgaGFuZGxpbmcsIGVkaXRpbmcgY29tbWFuZHMsIGZp bGwtcGFyYWdyYXBoIHN1cHBvcnQsCmlubGluZSBpbWFnZSBwcmV2aWV3cywgYSBtb2RlIG1lbnUs IGFuZCB0YWJsZSBlZGl0aW5nLiAgQWRkCidtYXJrZG93bi10cy1tb2RlLXguZWwnIHdpdGggY29u dmVyc2lvbi9leHBvcnQgYW5kIFRPQyBzdXBwb3J0LgoKKiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93 bi10cy1tb2RlLmVsOiBBZGQgVmVyc2lvbiwKUGFja2FnZS1SZXF1aXJlcywgYW5kIEtleXdvcmRz IGhlYWRlciBmaWVsZHMuICBFeHBhbmQgQ29tbWVudGFyeQp3aXRoIGRvY3VtZW50YXRpb24gZm9y IGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMsIGNvZGUgYmxvY2sKY29tbWFuZHMsIGJpZGlyZWN0 aW9uYWwgdGV4dCwgYW5kIGtub3duIHRyZWUtc2l0dGVyIGdyYW1tYXIKYnVncy4KKHJlcXVpcmUg J2dvdG8tYWRkciwgeHJlZiwgaWNvbnMpOiBOZXcgcmVxdWlyZW1lbnRzLgoobWFya2Rvd24tdHMp OiBOZXcgY3VzdG9taXphdGlvbiBncm91cCB3aXRoIDp2ZXJzaW9uIGFuZAo6cGFja2FnZS12ZXJz aW9uIHRhZ3MuCihtYXJrZG93bi10cy1oaWRlLW1hcmt1cCk6IEFkZCA6dmVyc2lvbiBhbmQgOnBh Y2thZ2UtdmVyc2lvbi4KKG1hcmtkb3duLXRzLWVsbGlwc2lzKTogTmV3IG9wdGlvbiBmb3IgZm9s ZGVkIGhlYWRpbmcgZWxsaXBzaXMuCihtYXJrZG93bi10cy1tZW51LWJhci1zaG93KTogTmV3IG9w dGlvbiB0byB0b2dnbGUgbW9kZSBtZW51LgoobWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nKTog TmV3IG9wdGlvbiBmb3IgZGVmYXVsdCBmb2xkCmxldmVsLgoobWFya2Rvd24tdHMtaW5saW5lLWlt YWdlcyk6IE5ldyBvcHRpb24gdG8gZGlzcGxheSBpbmxpbmUKaW1hZ2VzLgoobWFya2Rvd24tdHMt aW1hZ2UtbWF4LXdpZHRoKTogTmV3IG9wdGlvbiBmb3IgaW1hZ2UgbWF4IHdpZHRoLgoobWFya2Rv d24tdHMtZGlzcGxheS1yZW1vdGUtaW5saW5lLWltYWdlcyk6IE5ldyBvcHRpb24gZm9yCnJlbW90 ZSBpbWFnZSBoYW5kbGluZy4KKG1hcmtkb3duLXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUpOiBO ZXcgaGVscGVyIHRvIHJlc29sdmUKZGlzcGxheSB2YWx1ZXMgdXNpbmcgY2hhci1kaXNwbGF5YWJs ZS1wLgoobWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveCk6IE5ldyBvcHRpb24gZm9yIGNoZWNr ZWQgY2hlY2tib3gKZGlzcGxheSBzdHJpbmcgb3IgaWNvbi4KKG1hcmtkb3duLXRzLWNoZWNrZWQt Y2hlY2tib3gtaWNvbik6IE5ldyBpY29ucy5lbCBpY29uIGZvciB0aGUKY2hlY2tlZCB2YXJpYW50 LgoobWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94KTogTmV3IG9wdGlvbiBmb3IgdW5jaGVj a2VkCmNoZWNrYm94IGRpc3BsYXkgc3RyaW5nIG9yIGljb24uCihtYXJrZG93bi10cy11bmNoZWNr ZWQtY2hlY2tib3gtaWNvbik6IE5ldyBpY29ucy5lbCBpY29uIGZvciB0aGUKdW5jaGVja2VkIHZh cmlhbnQuCihtYXJrZG93bi10cy10aGVtYXRpYy1icmVhay1jaGFyYWN0ZXIpOiBOZXcgb3B0aW9u IGZvciB0aGVtYXRpYwpicmVhayBkaXNwbGF5IGNoYXJhY3Rlci4KKG1hcmtkb3duLXRzLWhhcmQt bGluZS1icmVhay1iYWNrc2xhc2gpOiBOZXcgb3B0aW9uIGZvciB0aGUKZ2x5cGggc2hvd24gaW4g cGxhY2Ugb2YgYSB0cmFpbGluZy1iYWNrc2xhc2ggaGFyZCBsaW5lIGJyZWFrCndoZW4gbWFya3Vw IGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZSk6IE5ldyBvcHRp b24gZm9yIHRoZSBnbHlwaApzaG93biBpbiBwbGFjZSBvZiBhIHRyYWlsaW5nLXNwYWNlcyBoYXJk IGxpbmUgYnJlYWsgd2hlbiBtYXJrdXAKaXMgaGlkZGVuLgoobWFya2Rvd24tdHMtY29kZS1ibG9j ay1pbi1jb250ZXh0LW1vZGUtbGlnaHRlcik6IE5ldyBvcHRpb24gZm9yCmNvZGUgYmxvY2sgY29u dGV4dCBtb2RlIGxpZ2h0ZXIgc3RyaW5nLgoobWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2Nr LW1vZGUtd2FybmluZ3MpOiBOZXcgb3B0aW9uIHRvCmluaGliaXQgY29kZS1ibG9jayBtYWpvci1t b2RlIG1lc3NhZ2VzIGFuZCB3YXJuaW5ncy4KKG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1bHQtY29s dW1uLXdpZHRoKTogTmV3IG9wdGlvbiBmb3IgZGVmYXVsdAp0YWJsZSBjb2x1bW4gd2lkdGguCiht YXJrZG93bi10cy1lbmFibGUtdGFibGUtbW9kZSk6IE5ldyBvcHRpb24gdG8gZW5hYmxlIHRhYmxl Cm1vZGUuCihtYXJrZG93bi10cy10YWJsZS1hdXRvLWFsaWduKTogTmV3IG9wdGlvbiBmb3IgdHJp Z2dlcnMgdGhhdApjYXVzZSBhdXRvbWF0aWMgdGFibGUgYWxpZ25tZW50LgoobWFya2Rvd24tdHMt dGFibGUtYWxpZ24tZmVhdHVyZXMpOiBOZXcgb3B0aW9uIGZvciB0YWJsZSBhbGlnbgpmZWF0dXJl cy4KKG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbGlnaHRlcik6IE5ldyBvcHRpb24gZm9yCm1h cmtkb3duLXRzLWluLXRhYmxlLW1vZGUgbGlnaHRlciBzdHJpbmcuCihtYXJrZG93bi10cy1lbXBo YXNpcywgbWFya2Rvd24tdHMtYm9sZCkKKG1hcmtkb3duLXRzLXN0cmlrZXRocm91Z2gsIG1hcmtk b3duLXRzLWxpbmspCihtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9uLCBtYXJrZG93bi10cy1j b2RlLXNwYW4pCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLCBtYXJrZG93bi10cy1jb2RlLWJsb2Nr LW1hcmt1cC1oaWRkZW4pCihtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2NrLCBtYXJrZG93 bi10cy1odG1sLXRhZykKKG1hcmtkb3duLXRzLWh0bWwtYmxvY2ssIG1hcmtkb3duLXRzLXRoZW1h dGljLWJyZWFrKQoobWFya2Rvd24tdHMtZW50aXR5LXJlZmVyZW5jZSkKKG1hcmtkb3duLXRzLW51 bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSwgbWFya2Rvd24tdHMtbGF0ZXgpCihtYXJrZG93bi10 cy10YWJsZS1oZWFkZXIsIG1hcmtkb3duLXRzLXRhYmxlLWNlbGwpCihtYXJrZG93bi10cy10YWJs ZS1kZWxpbWl0ZXItY2VsbCwgbWFya2Rvd24tdHMtdGFzay11bmNoZWNrZWQpCihtYXJrZG93bi10 cy10YXNrLWNoZWNrZWQpOiBOZXcgZmFjZXMuCihtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWst YmFja3NsYXNoKQoobWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaC1oaWRkZW4p CihtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UpCihtYXJrZG93bi10cy1oYXJkLWxp bmUtYnJlYWstc3BhY2UtaGlkZGVuKTogTmV3IGZhY2VzIGZvciB0aGUKdHdvIGhhcmQtbGluZS1i cmVhayB2YXJpYW50cywgd2l0aCBkaXN0aW5jdCBzaG93bi9oaWRkZW4KYXBwZWFyYW5jZXMuCiht YXJrZG93bi10cy1pbi1jb2RlLWJsb2NrKTogTmV3IGZhY2UgZm9yIHdoZW4gcG9pbnQgaXMgaW5z aWRlIGEKZmVuY2VkIGNvZGUgYmxvY2suCihtYXJrZG93bi10cy10YWJsZSk6IE5ldyBmYWNlIGZv ciBNYXJrZG93biBwaXBlIHRhYmxlCmJhY2tncm91bmQuCihtYXJrZG93bi10cy1pbi10YWJsZSk6 IE5ldyBmYWNlIGZvciBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlCndoZW4gcG9pbnQgaXMgaW4g YSB0YWJsZS4KKG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lKTogTmV3IHZhcmlhYmxlIGZvciBs aWdodHdlaWdodCBzZXR1cAppbiBlbWJlZGRlZCBpbmxpbmUgbWFya2Rvd24tdHMtbW9kZSBidWZm ZXJzIHVzZWQgYnkgY29kZSBibG9jawpjb21tYW5kcy4KKG1hcmtkb3duLXRzLWRlZmF1bHQtY29k ZS1ibG9jay1tb2RlKTogTmV3IHZhcmlhYmxlIHRvIGRlZmluZQpkZWZhdWx0IG1vZGUgZm9yIGFu b255bW91cyBjb2RlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLWZvbnRpZnktY29kZS1ibG9ja3MtbmF0 aXZlbHkpOiBOZXcgb3B0aW9uIHRvCmVuYWJsZS9kaXNhYmxlIG5hdGl2ZSBmb250aWZpY2F0aW9u IG9mIGZlbmNlZCBjb2RlIGJsb2NrCmNvbnRlbnRzLgoobWFya2Rvd24tdHMtZW5hYmxlLWNvZGUt YmxvY2stY29udGV4dC1tb2RlKTogTmV3IG9wdGlvbiB0bwplbmFibGUvZGlzYWJsZSBjb2RlIGJs b2NrIGNvbnRleHQgaW50ZWdyYXRpb24uCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKTog TmV3IHZhcmlhYmxlIHJlcGxhY2luZwptYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1t YXAgYW5kCm1hcmtkb3duLXRzLWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwIHdpdGggdW5pZmll ZCBsYW5ndWFnZSB0bwptb2RlIG1hcHBpbmcgaW5jbHVkaW5nIGhldXJpc3RpYyBsb29rdXAuCiht YXJrZG93bi10cy1jb2RlLWJsb2NrLWZvcmNlLWNvbnZlbnRpb25hbC1tb2Rlcyk6IE5ldyB2YXJp YWJsZQpsaXN0aW5nIHRyZWUtc2l0dGVyIG1vZGVzIHdob3NlIGZvbnRpZmljYXRpb24gb2YgY29k ZSBibG9jawpjb250ZW50IHNob3VsZCBiZSBoYXJ2ZXN0ZWQgdmlhIGEgdGVtcG9yYXJ5IGJ1ZmZl ci4KKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC1idWZmZXIpOiBOZXcgY29uc3RhbnQgZm9yIHRh YmxlIGV4cG9ydApvdXRwdXQgYnVmZmVyIG5hbWUuCihtYXJrZG93bi10cy0tdGFibGUtcm93LXR5 cGVzLCBtYXJrZG93bi10cy0tdGFibGUtY2VsbC10eXBlcykKKG1hcmtkb3duLXRzLS10YWJsZS1k ZWxpbWl0ZXItY2VsbC10eXBlcykKKG1hcmtkb3duLXRzLS10YWJsZS1kZWxpbWl0ZXItY2VsbC1z dWJ0eXBlcyk6IE5ldyBjb25zdGFudHMgZm9yCnBpcGUgdGFibGUgbm9kZSB0eXBlIGNsYXNzaWZp Y2F0aW9uLgoobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24pOiBOZXcgZnVuY3Rpb24gdG8g Y3JlYXRlCmNsaWNrYWJsZSBsaW5rIGJ1dHRvbnMgd2l0aCBtYWlsdG8sIGJyb3dzZS11cmwsIGFu ZCBmaW5kLWZpbGUKZGlzcGF0Y2guCihtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0 aW9uKTogTmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGxpbmsgZGVzdGluYXRpb25zIHdoZW4gbWFy a3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZSwgbWFya2Rvd24tdHMt LWxpbmstcmVmLWNhY2hlLXRpY2spCihtYXJrZG93bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMp CihtYXJrZG93bi10cy0tcmVzb2x2ZS1saW5rLXJlZik6IE5ldyBsaW5rIHJlZmVyZW5jZSBkZWZp bml0aW9uCmNhY2hlIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZyBwZXIgQ29tbW9uTWFy ayBzcGVjLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKTogTmV3IGZvbnRpZmllciBm b3IgaW5saW5lLApyZWZlcmVuY2UsIHNob3J0Y3V0LCBhbmQgY29sbGFwc2VkIGxpbmtzIGFzIGNs aWNrYWJsZSBidXR0b25zLgoobWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmspOiBOZXcgZm9u dGlmaWVyIGZvciBVUkkgYW5kIGVtYWlsCmF1dG9saW5rcyB3aXRoIGFuZ2xlIGJyYWNrZXQgaGlk aW5nLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1yZWYtbGFiZWwpCihtYXJrZG93bi10cy0t Zm9udGlmeS1saW5rLXJlZi1kZXN0aW5hdGlvbik6IE5ldyBmb250aWZpZXJzIGZvcgpsaW5rIHJl ZmVyZW5jZSBkZWZpbml0aW9ucy4KKG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1Yi1zdHJpcC1yZSwg bWFya2Rvd24tdHMtLXNsdWctZ2l0aHViKQoobWFya2Rvd24tdHMtLXNsdWctcGFuZG9jLCBtYXJr ZG93bi10cy0tZXhwbGljaXQtaWQtcmUpCihtYXJrZG93bi10cy0taGVhZGluZy10ZXh0LWFuZC1p ZCkKKG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkLWNhY2hlKQoobWFya2Rvd24tdHMtLWhlYWRpbmct aWQtY2FjaGUtdGljaykKKG1hcmtkb3duLXRzLS1idWlsZC1oZWFkaW5nLWlkcywgbWFya2Rvd24t dHMtLWhlYWRpbmctaWRzKQoobWFya2Rvd24tdHMtLWZvbGxvdy1mcmFnbWVudCk6IE5ldyBmcmFn bWVudCBsaW5rIHN1cHBvcnQgd2l0aApHaXRIdWIgYW5kIFBhbmRvYyBzbHVnIGFsZ29yaXRobXMu CihtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCkKKG1hcmtkb3duLXRzLS1mb250aWZ5 LWxhdGV4LWJsb2NrKTogTmV3IExhVGVYL21hdGggZm9udGlmaWVyCndpdGggY3Jvc3MtcGFyYWdy YXBoIHZhbGlkYXRpb24uCihtYXJrZG93bi10cy0tZm9udGlmeS1iYWNrc2xhc2gtZXNjYXBlKTog TmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGJhY2tzbGFzaCBpbiBlc2NhcGVzIGV4Y2VwdCBpbnNp ZGUgTGFUZVggYmxvY2tzLgoobWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHksIG1hcmtkb3duLXRz LS1mb250aWZ5LWVudGl0eSk6IE5ldwpIVE1MIGVudGl0eSBkZWNvZGVyIGFuZCBmb250aWZpZXIg dXNpbmcgb3JnLWVudGl0aWVzIGFuZApzZ21sLWNoYXItbmFtZXMgd2l0aCBkaXNwbGF5IHByb3Bl cnR5IGZvciBkZWNvZGVkIHZhbHVlcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94KTog TmV3IGZvbnRpZmllciBzaG93aW5nIHRoZQpjb25maWd1cmVkIGNoZWNrYm94IGdseXBoIHdoZW4g bWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWhhcmQtbGluZS1icmVhayk6 IE5ldyBmb250aWZpZXIgZm9yCidoYXJkX2xpbmVfYnJlYWsnIG5vZGVzLgoobWFya2Rvd24tdHMt LWZvbnRpZnktaGVhZGluZyk6IE5ldyBmb250aWZpZXIgZm9yIEFUWCBhbmQgU2V0ZXh0CmhlYWRp bmdzLgoobWFya2Rvd24tdHMtLWZvbnRpZnktdGhlbWF0aWMtYnJlYWspOiBOZXcgZm9udGlmaWVy IHNob3dpbmcKaG9yaXpvbnRhbCBsaW5lIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3du LXRzLS1mb250aWZ5LWNvZGUtYmxvY2spOiBOZXcgZm9udGlmaWVyIGFwcGx5aW5nCmJhY2tncm91 bmQgb3ZlcmxheSB0byBjb2RlIGJsb2NrcyB3aXRoIGxhbmd1YWdlIGFuZCBtb2RlCnByb3BlcnRp ZXMuCihtYXJrZG93bi10cy1hdC1jb2RlLWJsb2NrLXApCihtYXJrZG93bi10cy1jb2RlLWJsb2Nr LWxhbmd1YWdlLWF0KQoobWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLWF0KTogTmV3IGFjY2Vz c29ycyBmb3IgY29kZSBibG9jawpvdmVybGF5IHByb3BlcnRpZXMuCihtYXJrZG93bi10cy0taW1l bnUtY29kZS1ibG9jay1ub2RlLXApOiBOZXcgaGVscGVyIGZvciBpbWVudQpjb2RlIGJsb2NrIGRl dGVjdGlvbi4KKG1hcmtkb3duLXRzLS1pbWFnZS1hbG9uZS1vbi1saW5lLXApCihtYXJrZG93bi10 cy0tZm9udGlmeS1pbWFnZSk6IE5ldyBpbmxpbmUgaW1hZ2UgZGlzcGxheSB3aXRoCnN0YW5kYWxv bmUgYW5kIGlubGluZSBwb3NpdGlvbmluZy4KKG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHAp CihtYXJrZG93bi10cy0tYmFyZS1lbWFpbC11cmktcmVnZXhwKQoobWFya2Rvd24tdHMtLWZvbnRp ZnktYmFyZS11cmkpOiBOZXcgYmFyZSBVUkwvZW1haWwKZm9udGlmaWNhdGlvbiB2aWEgaml0LWxv Y2sgdXNpbmcgZ290by1hZGRyIHJlZ2V4cHMuCihtYXJrZG93bi10cy0tdHJlZXNpdC1zZXR0aW5n cyk6IFJld3JpdGUgd2l0aCBkZWRpY2F0ZWQgZmFjZXMsCmN1c3RvbSBmb250aWZpZXJzLCBhbmQg bmV3IGZvbnQtbG9jayBmZWF0dXJlcyBmb3IgYWxsIGlubGluZSBhbmQKYmxvY2sgZWxlbWVudHMu ICBBbHNvIGFkZCBhIG5ldyAnZXJyb3InIGZvbnQtbG9jayBmZWF0dXJlCmhpZ2hsaWdodGluZyB0 cmVlLXNpdHRlciBFUlJPUiBub2Rlcy4KKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdl cykKKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2Rlcyk6IE5ldyBidWZmZXItbG9j YWwgYWxpc3RzCmZvciBjb2RlIGJsb2NrIGxhbmd1YWdlIHRyYWNraW5nLgoobWFya2Rvd24tdHMt LWhhcnZlc3QtbW9kZS10cmVlc2l0LWNvbmZpZ3VyYXRpb24pOiBSZW5hbWUgZnJvbQptYXJrZG93 bi10cy0taGFydmVzdC10cmVlc2l0LWNvbmZpZ3Mgd2l0aCBkZWxheS1tb2RlLWhvb2tzLgoobWFy a2Rvd24tdHMtLWNvbmZpZ3VyZS1jdXJyZW50LWJ1ZmZlcik6IFJlbmFtZSBmcm9tCm1hcmtkb3du LXRzLS1hZGQtY29uZmlnLWZvci1tb2RlLgoobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUp OiBOZXcgaGVscGVyIGV4dHJhY3RpbmcgbGFuZ3VhZ2UKc3ltYm9sIGZyb20gY29kZV9mZW5jZV9j b250ZW50IG5vZGUuCihtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpOiBOZXcgYnVm ZmVyLWxvY2FsIGhhc2ggdGFibGUKY2FjaGluZyBmb250aWZpY2F0aW9uIHJlc3VsdHMgZm9yIG5v bi10cmVlLXNpdHRlciBjb2RlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1j b2xsZWN0LWZhY2VzKTogTmV3IGZ1bmN0aW9uCmhhcnZlc3RpbmcgZmFjZSBwcm9wZXJ0aWVzIGZy b20gYSBtb2RlIGluIGFuIGluZGlyZWN0IG9yCnRlbXBvcmFyeSBidWZmZXIuCihtYXJrZG93bi10 cy0tZm9udGlmeS1ub24tdHMtY29kZS1ibG9jayk6IE5ldyBmb250aWZpZXIgZm9yCm5vbi10cmVl LXNpdHRlciBtb2RlcyB2aWEgdGVtcG9yYXJ5IGJ1ZmZlciBmb250LWxvY2suCihtYXJrZG93bi10 cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2RlKTogTmV3IGZ1bmN0aW9uIHdpdGgKaGV1cmlzdGlj IG1vZGUgbmFtZSBwcm9iaW5nLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2Up OiBSZW5hbWUgZnJvbQptYXJrZG93bi10cy0tY29udmVydC1jb2RlLWJsb2NrLWxhbmd1YWdlIHdp dGggc3VwcG9ydCBmb3Igbm9uLXRzCm1vZGVzIGFuZCByZWN1cnNpdmUgbWFya2Rvd24gaGFuZGxp bmcuCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzKQoobWFya2Rvd24tdHMtY29kZS1i bG9jay10aGluZy1jb21tYW5kcykKKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stcmVnaW9uLWNvbW1h bmRzKTogTmV3IGNvbW1hbmQgbGlzdHMgZm9yCmNvZGUtYmxvY2sgY29udGV4dCBleGVjdXRpb24u CihtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlKQoobWFya2Rv d24tdHMtLW1heWJlLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2spCihtYXJrZG93bi10cy0tY29k ZS1ibG9jay14cmVmLWZpbmQtZGVmaW5pdGlvbnMpCihtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQt aW4tY29kZS1ibG9jayk6IE5ldyBjb2RlIGJsb2NrIG1pbm9yCm1vZGUgd2l0aCB0ZW1wLWJ1ZmZl ciBjb21tYW5kIGRpc3BhdGNoLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZSk6IE5l dyBjb21tYW5kIGZvciBuZXdsaW5lCmluc2lkZSBjb2RlIGJsb2NrcywgZGlzcGF0Y2hpbmcgdG8g dGhlIGJsb2NrJ3MgbW9kZS4KKG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncyk6IFVwZGF0ZSBy YW5nZSBjb25maWd1cmF0aW9uOwpyZW1vdmUgOnJhbmdlLWZuIHRyZWVzaXQtcmFuZ2UtZm4tZXhj bHVkZS1jaGlsZHJlbi4KKG1hcmtkb3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMpCihtYXJr ZG93bi10cy0tb3V0bGluZS12aWV3LWNoYW5nZSk6IE5ldyBoZWxwZXJzIGZvciBpbWFnZQpvdmVy bGF5IG1hbmFnZW1lbnQgZHVyaW5nIG91dGxpbmUgZm9sZC91bmZvbGQuCihtYXJrZG93bi10cy0t b3V0bGluZS1pbnZpc2libGUtcCk6IE5ldyBoZWxwZXIgdGVzdGluZyB3aGV0aGVyIGEKcG9zaXRp b24gaXMgaW5zaWRlIGFuIG91dGxpbmUtZm9sZGVkIHJlZ2lvbi4KKG1hcmtkb3duLXRzLS1ob3N0 LXJhbmdlcy1ub3RpZmllcik6IE5ldyBmdW5jdGlvbiBwcnVuaW5nIHN0YWxlCmNvZGUgYmxvY2sg b3ZlcmxheXMgd2hlbiB0aGUgaG9zdCBwYXJzZSB0cmVlIGNoYW5nZXMuCihtYXJrZG93bi10cy0t YmFyZi1pZi1ub3QtbW9kZSk6IE5ldyBoZWxwZXIgc2lnbmFsaW5nIGEKdXNlci1lcnJvciB3aGVu IHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBub3QgZGVyaXZlZCBmcm9tCm1hcmtkb3duLXRzLW1vZGUu CihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZSk6IE5ldyBtaW5vciBtb2Rl IGVuYWJsZWQKd2hlbiBwb2ludCBpcyB3aXRoaW4gYSBmZW5jZWQgY29kZSBibG9jaywgYWN0aXZh dGluZwptYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1tYXAgc28gZWxpZ2li bGUgY29tbWFuZHMKZGlzcGF0Y2ggdG8gdGhlIGJsb2NrJ3MgbWFqb3IgbW9kZS4KKG1hcmtkb3du LXRzLS1zZXQtaGlkZS1tYXJrdXApOiBDbGVhciBpbWFnZSBvdmVybGF5cyB3aGVuCnRvZ2dsaW5n IG1hcmt1cCB2aXNpYmlsaXR5LgoobWFya2Rvd24tdHMtLXNldC1pbmxpbmUtaW1hZ2VzKQoobWFy a2Rvd24tdHMtdG9nZ2xlLWlubGluZS1pbWFnZXMpOiBOZXcgZnVuY3Rpb25zIGZvciB0b2dnbGlu ZwppbmxpbmUgaW1hZ2UgZGlzcGxheS4KKG1hcmtkb3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgt bGV2ZWwpOiBOZXcgY29uc3RhbnQuCihtYXJrZG93bi10cy0taGVhZGluZy1hdC1wb2ludCwgbWFy a2Rvd24tdHMtLWhlYWRpbmctbGV2ZWwpCihtYXJrZG93bi10cy0tc2VjdGlvbi1hdC1wb2ludCk6 IE5ldyBoZWFkaW5nIG5hdmlnYXRpb24gaGVscGVycy4KKG1hcmtkb3duLXRzLXByb21vdGUsIG1h cmtkb3duLXRzLWRlbW90ZSk6IE5ldyBjb21tYW5kcyBmb3IKaGVhZGluZyBhbmQgbGlzdCBpdGVt IHByb21vdGlvbi9kZW1vdGlvbiB3aXRoIHJlZ2lvbiBzdXBwb3J0LgoobWFya2Rvd24tdHMtLXBy b21vdGUtb3ItZGVtb3RlKQoobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lvbik6 IE5ldyBoZWFkaW5nIGxldmVsCmFkanVzdG1lbnQgZnVuY3Rpb25zLgoobWFya2Rvd24tdHMtbW92 ZS1zdWJ0cmVlLXVwLCBtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtZG93bik6Ck5ldyBjb21tYW5k cyBmb3IgbW92aW5nIHNlY3Rpb25zIGFuZCBsaXN0IGl0ZW1zLgoobWFya2Rvd24tdHMtLXNlY3Rp b24tZm9sZGVkLXApCihtYXJrZG93bi10cy0tbW92ZS1zdWJ0cmVlLXVwLW9yLWRvd24pOiBOZXcg c3VidHJlZSBtb3ZlIHdpdGgKZm9sZGluZyBzdGF0ZSBwcmVzZXJ2YXRpb24uCihtYXJrZG93bi10 cy10b2dnbGUtY2hlY2tib3gpOiBOZXcgY29tbWFuZCB0byB0b2dnbGUgdGFzayBsaXN0CmNoZWNr Ym94ZXMuCihtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KTogTmV3IGhlbHBlciB3aXRo IGJsb2NrIHF1b3RlCm1hcmtlciBoYW5kbGluZy4KKG1hcmtkb3duLXRzLS1saXN0LW1hcmtlci13 aWR0aCwgbWFya2Rvd24tdHMtLWxpc3QtaXRlbS1yZWdpb24pCihtYXJrZG93bi10cy0tbGlzdC1v cmRlcmVkLWl0ZW0tcCk6IE5ldyBsaXN0IGl0ZW0gaGVscGVycy4KKG1hcmtkb3duLXRzLS1saXN0 LXByb21vdGUtb3ItZGVtb3RlKTogTmV3IGZ1bmN0aW9uIHdpdGggb3JkZXJlZApsaXN0IG5lc3Rp bmcgZ3VhcmQuCihtYXJrZG93bi10cy0tbGlzdC1ub2RlLWJvbCwgbWFya2Rvd24tdHMtLWxpc3Qt bW92ZSk6IE5ldyBsaXN0Cml0ZW0gbW92ZW1lbnQgZnVuY3Rpb25zLgoobWFya2Rvd24tdHMtcmVu dW1iZXItbGlzdCk6IE5ldyBjb21tYW5kIGZvciBzZXF1ZW50aWFsIGxpc3QKcmVudW1iZXJpbmcg d2l0aCBwcmVmaXggYXJndW1lbnQgc3VwcG9ydC4KKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3 LW1hcmtlcikKKG1hcmtkb3duLXRzLS1uZXctbWFya2VyLWZvci1saW5lKTogTmV3IG1hcmtlciBz dHJpbmcgZ2VuZXJhdG9ycwpmb3IgbGlzdCBpdGVtIGluc2VydGlvbi4KKG1hcmtkb3duLXRzLS1s aW5lLWJsb2NrLXF1b3RlLWRlcHRoKTogTmV3IGhlbHBlciBjb3VudGluZyBibG9jawpxdW90ZSBk ZXB0aC4KKG1hcmtkb3duLXRzLW5ld2xpbmUpOiBOZXcgUkVUIGNvbW1hbmQgZm9yIGNvbnRleHQt YXdhcmUKbmV3bGluZS4KKG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0pOiBOZXcgTS1SRVQg Y29tbWFuZCB0aGF0IGNyZWF0ZXMgYQpuZXcgbGlzdCBpdGVtLgoobWFya2Rvd24tdHMtLWZpbGwt dW5maWxsYWJsZS1ibG9jay1xdWVyeSk6IE5ldyB0cmVlLXNpdHRlcgpxdWVyeSBmb3IgdW5maWxs YWJsZSBibG9ja3MuCihtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uKTogTmV3IGhl bHBlciBmb3IgbGlzdCBpdGVtCnRleHQgYWxpZ25tZW50LgoobWFya2Rvd24tdHMtLWZpbGwtbGlz dC1pdGVtKTogTmV3IGZ1bmN0aW9uIGZpbGxpbmcgd2l0aGluIGxpc3QKaXRlbXMgd2l0aG91dCBt ZXJnaW5nIGFkamFjZW50IGl0ZW1zLgoobWFya2Rvd24tdHMtLWFkYXB0aXZlLWZpbGwpOiBOZXcg YWRhcHRpdmUgZmlsbCBmdW5jdGlvbiBmb3IKbGlzdCBpdGVtIGNvbnRpbnVhdGlvbi4KKG1hcmtk b3duLXRzLS1maWxsLWZvcndhcmQtcGFyYWdyYXBoKTogTmV3IHBhcmFncmFwaCBtb3Rpb24KcmVz cGVjdGluZyBsaXN0IGl0ZW1zIGFuZCB1bmZpbGxhYmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLWZp bGwtcGFyYWdyYXBoKTogTmV3IGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uIHdpdGgKY29uZCogZGlz cGF0Y2ggZm9yIGxpc3RzLCBibG9jayBxdW90ZXMsIEhUTUwgY29tbWVudHMsIGFuZAp1bmZpbGxh YmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1maWxsLWh0bWwtY29tbWVudCk6IE5ldyBIVE1MIGNv bW1lbnQgZmlsbGVyIHdpdGgKY29udGludWF0aW9uIGFsaWdubWVudC4KKG1hcmtkb3duLXRzLS1i bG9jay1xdW90ZS1wcmVmaXgpOiBOZXcgaGVscGVyIHByZXNlcnZpbmcKZXhpc3RpbmcgYmxvY2sg cXVvdGUgbWFya2VyIHN0eWxlLgoobWFya2Rvd24tdHMtLWZpbGwtYmxvY2stcXVvdGUpOiBOZXcg YmxvY2sgcXVvdGUgZmlsbGVyIHdpdGgKbGlzdCBpdGVtIHRleHQgY29sdW1uIGFsaWdubWVudC4K KG1hcmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0KTogTmV3IGFsaXN0IG9mIGVtcGhhc2lzIG1hcmtl cnMuCihtYXJrZG93bi10cy0tZW1waGFzaXMtbm9kZS1hdC1wb2ludCk6IE5ldyB0cmVlLXNpdHRl ciBiYXNlZAplbXBoYXNpcyBkZXRlY3Rpb24uCihtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMp OiBOZXcgY29tbWFuZCByZW1vdmluZyBlbXBoYXNpcyBhdApwb2ludCBvciByZWdpb24uCihtYXJr ZG93bi10cy1lbXBoYXNpemUpOiBOZXcgaW50ZXJhY3RpdmUgZW1waGFzaXMgaW5zZXJ0aW9uIHdp dGgKcmVnaW9uIHdyYXBwaW5nIGFuZCB3b3JkLWF0LXBvaW50IHN1cHBvcnQuCihtYXJrZG93bi10 cy1pbnNlcnQtc3RydWN0dXJlKTogTmV3IGNvbW1hbmQgZm9yIGluc2VydGluZyBjb2RlCmJsb2Nr cywgYmxvY2sgcXVvdGVzLCBhbmQgZGl2aWRlcnMuCihtYXJrZG93bi10cy0taW5zZXJ0LWNvZGUt YmxvY2spOiBOZXcgZnVuY3Rpb24gd2l0aCBsYW5ndWFnZQpjb21wbGV0aW9uIGZyb20ga25vd24g bW9kZXMuCihtYXJrZG93bi10cy0taW5zZXJ0LWJsb2NrLXF1b3RlKTogTmV3IGZ1bmN0aW9uIHdp dGggcmVnaW9uCndyYXBwaW5nLgoobWFya2Rvd24tdHMtLWluc2VydC1kaXZpZGVyKTogTmV3IGZ1 bmN0aW9uIGZvciBob3Jpem9udGFsCnJ1bGVzLgoobWFya2Rvd24tdHMtLWFwcGx5LWVsbGlwc2lz KTogTmV3IGZ1bmN0aW9uIGFwcGx5aW5nIGN1c3RvbQplbGxpcHNpcyB2aWEgZGlzcGxheSB0YWJs ZS4KKG1hcmtkb3duLXRzLS1zZXQtdXApOiBSZW5hbWUgZnJvbSBtYXJrZG93bi10cy1zZXR1cC4K KG1hcmtkb3duLXRzLW91dGxpbmUtY3ljbGUpOiBOZXcgVEFCIGNvbW1hbmQgY3ljbGluZyBvdXRs aW5lCnZpc2liaWxpdHkgb24gaGVhZGluZ3MuCihtYXJrZG93bi10cy1tb2RlLW1hcCk6IE5ldyBr ZXltYXAgZm9yIGNvZGUgYmxvY2sgbmF2aWdhdGlvbiwKYmluZGluZ3MgZm9yIGhlYWRpbmcgbmF2 aWdhdGlvbiwgc3RydWN0dXJlIGVkaXRpbmcsIGVtcGhhc2lzLAphbmQgbGlzdCBvcGVyYXRpb25z LgoobWFya2Rvd24tdHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtbWFwKTogTmV3IGtleW1h cCBmb3IKY29kZSBibG9jayBjb250ZXh0LgoobWFya2Rvd24tdHMtbW9kZS1tZW51KTogTmV3IG1l bnUgYmFyIHdpdGggU2hvdy9IaWRlLCBOYXZpZ2F0ZQpIZWFkaW5ncywgRWRpdCBTdHJ1Y3R1cmUs IGFuZCBFZGl0aW5nIHNlY3Rpb25zLgoobWFya2Rvd24tdHMtbW9kZSk6IEFkZCBvdXRsaW5lLW1p bm9yLW1vZGUsIGVsbGlwc2lzLCBmb2xkaW5nLApmaWxsLXBhcmFncmFwaCBpbnRlZ3JhdGlvbiwg Y29kZS1ibG9jay1jb250ZXh0LW1vZGUgaG9va3MsCmNvbW1lbnQgc2V0dGluZ3MsIGFuZCBvdXRs aW5lLXZpZXctY2hhbmdlLWhvb2suICBVc2UKbWFya2Rvd24tdHMtbW9kZSBkaXJlY3RseSBpbiBh dXRvLW1vZGUtYWxpc3QgaW5zdGVhZCBvZgptYXJrZG93bi10cy1tb2RlLW1heWJlLgoobWFya2Rv d24tdHMtbW9kZS1pbnN0YWxsLXBhcnNlcnMpOiBOZXcgY29tbWFuZCBmb3IgaW5zdGFsbGluZwpy ZXF1aXJlZCBhbmQgb3B0aW9uYWwgdHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgZ3JhbW1hcnMuCihtYXJr ZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZSk6IE5ldyBtaW5vciBtb2RlIGZvciBjb2Rl CmJsb2NrIGNvbnRleHQuCihtYXJrZG93bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlcikK KG1hcmtkb3duLXRzLS1maW5kLW5leHQtY29kZS1ibG9jay1kZWxpbWl0ZXIpOiBOZXcgaGVscGVy cyBmb3IKbG9jYXRpbmcgZmVuY2VkIGNvZGUgYmxvY2sgZGVsaW1pdGVyIG5vZGVzLgoobWFya2Rv d24tdHMtbW92ZS10by1uZXh0LWNvZGUtYmxvY2spCihtYXJrZG93bi10cy1tb3ZlLXRvLXByZXZp b3VzLWNvZGUtYmxvY2spOiBOZXcgY29tbWFuZHMgZm9yCm5hdmlnYXRpbmcgYmV0d2VlbiBmZW5j ZWQgY29kZSBibG9ja3MuCihtYXJrZG93bi10cy0tdGFibGUtYWJ1dHRpbmctcG9zLCBtYXJrZG93 bi10cy0tdGFibGUtbm9kZS1jZWxsKQoobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93LCBtYXJr ZG93bi10cy0tdGFibGUtcGFyc2UtZXJyb3ItcCk6Ck5ldyBwaXBlIHRhYmxlIG5vZGUgaGVscGVy cy4KKG1hcmtkb3duLXRzLWF0LXRhYmxlLXApOiBOZXcgcHJlZGljYXRlIHJldHVybmluZyBub24t bmlsIHdoZW4KcG9pbnQgaXMgYXQgb3Igd2l0aGluIGEgcGlwZSB0YWJsZS4KKG1hcmtkb3duLXRz LS1lbmFibGUtaW4tdGFibGUtbW9kZSk6IE5ldyBoZWxwZXIgZW5hYmxpbmcKbWFya2Rvd24tdHMt aW4tdGFibGUtbW9kZSBmcm9tIHBvc3QtY29tbWFuZC1ob29rLgoobWFya2Rvd24tdHMtLXRhYmxl LWJvZHktcm93LW5lYXItcG9zKTogTmV3IGhlbHBlciBsb2NhdGluZyB0aGUKbmVhcmVzdCBib2R5 IHJvdyB0byBhIHBvc2l0aW9uLgoobWFya2Rvd24tdHMtLXRhYmxlLWNvbXB1dGUtbm9kZS1jb2x1 bW4pCihtYXJrZG93bi10cy10YWJsZS0tZ290by1jb2x1bW4pOiBOZXcgaGVscGVycyBmb3IgY29s dW1uLWJhc2VkCnRhYmxlIG5hdmlnYXRpb24uCihtYXJrZG93bi10cy0tdGFibGUtYWxpZ25lcnMs IG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIpCihtYXJrZG93bi10cy0tdGFibGUtYWxp Z24tY2VsbCk6IE5ldyB0YWJsZSBjZWxsIGFsaWdubWVudApoZWxwZXJzLgoobWFya2Rvd24tdHMt dGFibGUtaW5zZXJ0LXRhYmxlKTogTmV3IGNvbW1hbmQgdG8gaW5zZXJ0IGEgcGlwZQp0YWJsZSB3 aXRoIGNvbmZpZ3VyYWJsZSByb3dzIGFuZCBjb2x1bW5zLgoobWFya2Rvd24tdHMtdGFibGUtZGVs ZXRlLXRhYmxlKTogTmV3IGNvbW1hbmQgdG8gZGVsZXRlIHRoZSBwaXBlCnRhYmxlIGF0IHBvaW50 LgoobWFya2Rvd24tdHMtdGFibGUtcHJldmlvdXMtcm93LCBtYXJrZG93bi10cy10YWJsZS1uZXh0 LXJvdykKKG1hcmtkb3duLXRzLXRhYmxlLXByZXZpb3VzLWNlbGwsIG1hcmtkb3duLXRzLXRhYmxl LW5leHQtY2VsbCk6Ck5ldyBjb21tYW5kcyBmb3IgbmF2aWdhdGluZyB0YWJsZSByb3dzIGFuZCBj ZWxscy4KKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYmVsb3cpCihtYXJrZG93bi10cy10 YWJsZS1pbnNlcnQtcm93LWFib3ZlKQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWJlbG93 KQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWFib3ZlKQoobWFya2Rvd24tdHMtdGFibGUt aW5zZXJ0LXJvdyk6IE5ldyBjb21tYW5kcyBmb3IgaW5zZXJ0aW5nIGFuZApjbG9uaW5nIHRhYmxl IHJvd3MuCihtYXJrZG93bi10cy10YWJsZS1kZWxldGUtcm93LCBtYXJrZG93bi10cy10YWJsZS1t b3ZlLXJvdy11cCkKKG1hcmtkb3duLXRzLXRhYmxlLW1vdmUtcm93LWRvd24sIG1hcmtkb3duLXRz LXRhYmxlLW1vdmUtcm93KToKTmV3IGNvbW1hbmRzIGZvciBkZWxldGluZyBhbmQgbW92aW5nIHRh YmxlIHJvd3MuCihtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQpCihtYXJrZG93 bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLXJpZ2h0KQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUt Y29sdW1uLWxlZnQpCihtYXJrZG93bi10cy10YWJsZS1jbG9uZS1jb2x1bW4tcmlnaHQpCihtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uKTogTmV3IGNvbW1hbmRzIGZvciBpbnNlcnRpbmcK YW5kIGNsb25pbmcgdGFibGUgY29sdW1ucy4KKG1hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1jb2x1 bW4pCihtYXJrZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbi1sZWZ0KQoobWFya2Rvd24tdHMtdGFi bGUtbW92ZS1jb2x1bW4tcmlnaHQpCihtYXJrZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbik6IE5l dyBjb21tYW5kcyBmb3IgZGVsZXRpbmcgYW5kCm1vdmluZyB0YWJsZSBjb2x1bW5zLgoobWFya2Rv d24tdHMtdGFibGUtYWxpZ24tY29sdW1uLWxlZnQpCihtYXJrZG93bi10cy10YWJsZS1hbGlnbi1j b2x1bW4tY2VudGVyKQoobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uLXJpZ2h0KQoobWFy a2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uKTogTmV3IGNvbW1hbmRzIGZvciBzZXR0aW5nCmNv bHVtbiBhbGlnbm1lbnQuCihtYXJrZG93bi10cy10YWJsZS1hbGlnbi10YWJsZSk6IE5ldyBjb21t YW5kIHRvIGFsaWduIGFsbApjb2x1bW5zIGluIHRoZSB0YWJsZSBhdCBwb2ludC4KKG1hcmtkb3du LXRzLXRhYmxlLXRyYW5zcG9zZS10YWJsZSk6IE5ldyBjb21tYW5kIHRvIHRyYW5zcG9zZQp0aGUg dGFibGUgYXQgcG9pbnQuCihtYXJrZG93bi10cy10YWJsZS1jb252ZXJ0LWNzdi1yZWdpb24pCiht YXJrZG93bi10cy10YWJsZS1jb252ZXJ0LXRzdi1yZWdpb24pCihtYXJrZG93bi10cy10YWJsZS1j b252ZXJ0LXJlZ2lvbik6IE5ldyBjb21tYW5kcyB0byBjb252ZXJ0CmRlbGltaXRlZCB0ZXh0IHJl Z2lvbnMgdG8gcGlwZSB0YWJsZXMuCihtYXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUtY3N2 KQoobWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlLXRzdikKKG1hcmtkb3duLXRzLXRhYmxl LWV4cG9ydC10YWJsZSk6IE5ldyBjb21tYW5kcyB0byBleHBvcnQgdGhlCnBpcGUgdGFibGUgYXQg cG9pbnQgdG8gQ1NWIG9yIFRTViBmb3JtYXQuCihtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlLW1h cCk6IE5ldyBrZXltYXAgZm9yCm1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUuCihtYXJrZG93bi10 cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YpOiBOZXcgYnVmZmVyLWxvY2FsCnZhcmlh YmxlIGZvciBjb2RlIGJsb2NrIGNvbnRleHQgb3ZlcmxheS4KKG1hcmtkb3duLXRzLS1jb2RlLWJs b2NrLWluLWNvbnRleHQtbW9kZS11cGRhdGUtb3YpOiBOZXcKZnVuY3Rpb24gdXBkYXRpbmcgdGhl IGNvZGUgYmxvY2sgY29udGV4dCBvdmVybGF5LgoobWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZSk6 IE5ldyBtaW5vciBtb2RlIGVuYWJsZWQgd2hlbiBwb2ludAppcyB3aXRoaW4gYSBwaXBlIHRhYmxl LCBhY3RpdmF0aW5nIG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbWFwLgoobWFya2Rvd24tdHMt LWluLXRhYmxlLW1vZGUtb3YpCihtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1nZXQtb3YpCiht YXJrZG93bi10cy0tdGFibGUtdGljay11cGRhdGUpCihtYXJrZG93bi10cy0tdGFibGUtdGljay1z dGFsZS1wKQoobWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtdXBkYXRlLW92KTogTmV3IGhlbHBl cnMgc3VwcG9ydGluZwptYXJrZG93bi10cy1pbi10YWJsZS1tb2RlIG92ZXJsYXkgbWFuYWdlbWVu dC4KKG1hcmtkb3duLXRzLXRhYmxlLW1vZGUpOiBOZXcgbWlub3IgbW9kZSBwcm92aWRpbmcgdGFi bGUgZWRpdGluZwpjb21tYW5kcyBhbmQgYXV0by1hbGlnbm1lbnQuCihtYXJrZG93bi10cy1tb2Rl LW1heWJlKTogUmVtb3ZlOyBhdXRvLW1vZGUtYWxpc3Qgbm93IHVzZXMKbWFya2Rvd24tdHMtbW9k ZSBkaXJlY3RseS4KQXV0by1tb2RlLWFsaXN0OiBBZGQgLm1hcmtkb3duIGFuZCAubWR4IGV4dGVu c2lvbnMuCgoqIGxpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbDogTmV3IGZpbGUg cHJvdmlkaW5nIGV4dHJhCmZlYXR1cmVzIGZvciBtYXJrZG93bi10cy1tb2RlLgoobWFya2Rvd24t dHMtY29tbW9ubWFyay1zcGVjLXVybCwgbWFya2Rvd24tdHMtZ2ZtLXNwZWMtdXJsKTogTmV3CmNv bnN0YW50cyBmb3IgQ29tbW9uTWFyayBhbmQgR0ZNIHNwZWNpZmljYXRpb24gVVJMcy4KKG1hcmtk b3duLXRzLWJyb3dzZS1jb21tb25tYXJrLXNwZWMpCihtYXJrZG93bi10cy1icm93c2UtZ2ZtLXNw ZWMpOiBOZXcgY29tbWFuZHMgdG8gYnJvd3NlIHRoZQpDb21tb25NYXJrIGFuZCBHRk0gc3BlY2lm aWNhdGlvbnMuCihtYXJrZG93bi10cy1jb252ZXJ0KTogTmV3IGN1c3RvbWl6YXRpb24gZ3JvdXAg Zm9yIE1hcmtkb3duCmNvbnZlcnNpb24vZXhwb3J0IGZlYXR1cmVzLgoobWFya2Rvd24tdHMtZGVm YXVsdC1jb252ZXJ0ZXIpOiBOZXcgb3B0aW9uIHRvIHNldCB0aGUgZGVmYXVsdApmb3JtYXQgYW5k IGNvbnZlcnRlciBmb3IgTWFya2Rvd24gZXhwb3J0LgoobWFya2Rvd24tdHMtY29udmVydC1kaXNw bGF5LWZ1bmN0aW9uKTogTmV3IG9wdGlvbiBzcGVjaWZ5aW5nCnRoZSBmdW5jdGlvbiB1c2VkIHRv IGRpc3BsYXkgY29udmVydGVkIG91dHB1dC4KKG1hcmtkb3duLXRzLWNvbnZlcnRlcnMpOiBOZXcg dmFyaWFibGUgbGlzdGluZyBmb3JtYXQvY29udmVydGVyCmNvbmZpZ3VyYXRpb25zIGZvciBwYW5k b2MsIGNtYXJrLCBjbWFyay1nZm0sIG1hcmtkb3duLCBhbmQKbWFya2Rvd24ucGwuCihtYXJrZG93 bi10cy1jb252ZXJ0LWZpbGUsIG1hcmtkb3duLXRzLWNvbnZlcnQpOiBOZXcgY29tbWFuZHMgdG8K Y29udmVydCBNYXJrZG93biBidWZmZXJzIG9yIGZpbGVzIHRvIEhUTUwsIFBERiwgYW5kIG90aGVy CmZvcm1hdHMgdmlhIGV4dGVybmFsIGNvbnZlcnRlcnMuCihtYXJrZG93bi10cy10b2MpOiBOZXcg Y3VzdG9taXphdGlvbiBncm91cCBmb3IgdGFibGUgb2YgY29udGVudHMKZmVhdHVyZXMuCihtYXJr ZG93bi10cy10b2MtZ2VuZXJhdGUtd2Fybi1pZi1ub25lKTogTmV3IG9wdGlvbiBjb250cm9sbGlu ZwpiZWhhdmlvciB3aGVuIG5vIFRPQyBpcyBmb3VuZCBkdXJpbmcgZ2VuZXJhdGlvbi4KKG1hcmtk b3duLXRzLXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZS1saWdodGVyKTogTmV3IG9wdGlvbgpm b3IgdGhlIGJlZm9yZS1zYXZlIFRPQyB1cGRhdGUgbWlub3IgbW9kZSBsaWdodGVyIHN0cmluZy4K KG1hcmtkb3duLXRzLXRvYy1zbHVnLWZ1bmN0aW9uKTogTmV3IG9wdGlvbiB0byBzZWxlY3QgdGhl IHNsdWcKYWxnb3JpdGhtIHVzZWQgZm9yIFRPQyBoZWFkaW5nIGFuY2hvcnMuCihtYXJrZG93bi10 cy0tdG9jLWhhbmRsZXMsIG1hcmtkb3duLXRzLS10b2MtaGFuZGxlLWNsYXNzZXMpOiBOZXcKdmFy aWFibGVzIGRlZmluaW5nIFRPQyBoYW5kbGUgdHlwZXMgYW5kIGNsYXNzZXMuCihtYXJrZG93bi10 cy0tdG9jLWV4cGFuZC1jYW5kaWRhdGUtaGFuZGxlcywgbWFya2Rvd24tdHMtLXRvY3MpCihtYXJr ZG93bi10cy0tdG9jcy1zYW5pdHktY2hlY2spCihtYXJrZG93bi10cy0tdG9jLWNvbGxlY3QtY2Fu ZGlkYXRlcykKKG1hcmtkb3duLXRzLS10b2MtbGlzdC1pdGVtLWRlcHRoKQoobWFya2Rvd24tdHMt LXRvYy1hdHhfaGVhZGVyLW5vcm1hbGl6ZSkKKG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxp emVycykKKG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxpemUpOiBOZXcgaW50ZXJuYWwgaGVs cGVycyBmb3IgVE9DCnBhcnNpbmcgYW5kIHRleHQgbm9ybWFsaXphdGlvbi4KKG1hcmtkb3duLXRz LXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZSk6IE5ldyBtaW5vciBtb2RlIHRoYXQKcmVnZW5l cmF0ZXMgdGFibGVzIG9mIGNvbnRlbnRzIGJlZm9yZSBzYXZpbmcuCihtYXJrZG93bi10cy10b2Mt Y2xlYXItYW5kLXJlbW92ZSwgbWFya2Rvd24tdHMtdG9jLWNsZWFyKTogTmV3CmNvbW1hbmRzIHRv IHJlbW92ZSBvciBjbGVhciBUT0MgYm9kaWVzLgoobWFya2Rvd24tdHMtdG9jLWluc2VydC10ZW1w bGF0ZSk6IE5ldyBjb21tYW5kIHRvIGluc2VydCBhIFRPQwp0ZW1wbGF0ZSBhdCBwb2ludC4KKG1h cmtkb3duLXRzLXRvYy1nZW5lcmF0ZSk6IE5ldyBjb21tYW5kIHRvIGdlbmVyYXRlIHRhYmxlcyBv Zgpjb250ZW50cyBpbiB0aGUgY3VycmVudCBidWZmZXIuCgpJbmNsdWRlcyBmaXhlcyBmb3I6IChi dWcjODA2MTMpIChidWcjODA2MjUpIChidWcjODA2OTApCgpDby1hdXRob3JlZC1ieTogU3TDqXBo YW5lIE1hcmtzIDxzaGlwbWludHNAZ21haWwuY29tPgotLS0KIGxpc3AvdGV4dG1vZGVzL21hcmtk b3duLXRzLW1vZGUteC5lbCB8IDExMzQgKysrKysrCiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10 cy1tb2RlLmVsICAgfCA1NDE5ICsrKysrKysrKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNo YW5nZWQsIDYyNjggaW5zZXJ0aW9ucygrKSwgMjg1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGxpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbAoKZGlmZiAtLWdpdCBh L2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbCBiL2xpc3AvdGV4dG1vZGVzL21h cmtkb3duLXRzLW1vZGUteC5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNzQwNTA3OGFiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3RleHRtb2Rlcy9tYXJrZG93 bi10cy1tb2RlLXguZWwKQEAgLTAsMCArMSwxMTM0IEBACis7OzsgbWFya2Rvd24tdHMtbW9kZS14 LmVsIC0tLSBtYXJrZG93bi10cy1tb2RlIGV4dHJhcyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0OyAt Ki0KKworOzsgQ29weXJpZ2h0IChDKSAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorCis7OyBBdXRob3IgICAgICAgICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1 bGlhdG9AZ21haWwuY29tPgorOzsgICAgICAgICAgICAgICAgICA6IFN0w6lwaGFuZSBNYXJrcyA8 c2hpcG1pbnRzQGdtYWlsLmNvbT4KKzs7IE1haW50YWluZXIgICAgICAgOiBSYWh1bCBNYXJ0aW0g SnVsaWF0byA8cmFodWwuanVsaWF0b0BnbWFpbC5jb20+Cis7OyBDcmVhdGVkICAgICAgICAgIDog QXByaWwgMjAyNgorOzsgVmVyc2lvbiAgICAgICAgICA6IDEuMAorOzsgUGFja2FnZS1SZXF1aXJl cyA6ICgoZW1hY3MgIjMxLjEiKSkKKzs7IEtleXdvcmRzICAgICAgICAgOiBtYXJrZG93biBtZCB0 ZXh0IGVkaXQgbGFuZ3VhZ2VzIHRyZWUtc2l0dGVyCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdOVSBFbWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor OzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNzIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUg PGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1lbnRhcnk6CisKKzs7 OyBDb2RlOgorCisocmVxdWlyZSAnbWFya2Rvd24tdHMtbW9kZSkKKworOzs7IENvbnZlbmllbmNl OgorCisoZGVmY29uc3QgbWFya2Rvd24tdHMtY29tbW9ubWFyay1zcGVjLXVybAorICAiaHR0cHM6 Ly9zcGVjLmNvbW1vbm1hcmsub3JnL2N1cnJlbnQvIikKKworKGRlZmNvbnN0IG1hcmtkb3duLXRz LWdmbS1zcGVjLXVybAorICAiaHR0cHM6Ly9naXRodWIuZ2l0aHViLmNvbS9nZm0vIikKKworKGRl ZnVuIG1hcmtkb3duLXRzLWJyb3dzZS1jb21tb25tYXJrLXNwZWMgKCkKKyAgIkJyb3dzZSB0aGUg Q29tbW9uTWFyayBNYXJrZG93biBzcGVjIGluIGEgd2ViIGJyb3dzZXIuIgorICAoaW50ZXJhY3Rp dmUpCisgIChicm93c2UtdXJsIG1hcmtkb3duLXRzLWNvbW1vbm1hcmstc3BlYy11cmwpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtYnJvd3NlLWdmbS1zcGVjICgpCisgICJCcm93c2UgdGhlIEdpdEh1 YiBGbGF2b3JlZCBNYXJrZG93biBzcGVjIGluIGEgd2ViIGJyb3dzZXIuIgorICAoaW50ZXJhY3Rp dmUpCisgIChicm93c2UtdXJsIG1hcmtkb3duLXRzLWdmbS1zcGVjLXVybCkpCisKKzs7OyBFeHBv cnQgYW5kIHByZXZpZXc6CisKKyhkZWZncm91cCBtYXJrZG93bi10cy1jb252ZXJ0IG5pbAorICAi Q29udmVydCBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycyBvciBmaWxlcy4iCisgIDpwcmVmaXgg Im1hcmtkb3duLXRzLWNvbnZlcnQtIgorICA6Z3JvdXAgJ3RleHQKKyAgOmdyb3VwICdlZGl0aW5n CisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1kZWZhdWx0LWNv bnZlcnRlciBuaWwKKyAgIkRlZmF1bHQgTWFya2Rvd24gZm9ybWF0IGFuZCBjb252ZXJ0ZXIuCitJ ZiBuaWwsIHlvdSB3aWxsIGJlIHByb21wdGVkIGZvciBhIGZvcm1hdCBhbmQgYSBjb252ZXJ0ZXIu CitTZWUgYG1hcmtkb3duLXRzLWNvbnZlcnRlcnMnLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0 IDp0YWcgIlByb21wdCBmb3IgZm9ybWF0IGFuZCBjb252ZXJ0ZXIiIG5pbCkKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIlBERiB2aWEgUGFuZG9jIiAocGRmIC4gcGFuZG9jKSkKKyAgICAg ICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkhUTUwgdmlhIFBhbmRvYyIgKGh0bWwgLiBwYW5kb2Mp KQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgY21hcmsiIChodG1sIC4g Y21hcmspKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgY21hcmstZ2Zt IChHaXRIdWIgYmVsbHMgYW5kIHdoaXN0bGVzKSIgKGh0bWwgLiBjbWFyay1nZm0pKQorICAgICAg ICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgbWFya2Rvd24iIChodG1sIC4gbWFya2Rv d24pKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgbWFya2Rvd24ucGwi IChodG1sIC4gbWFya2Rvd24ucGwpKQorICAgICAgICAgICAgICAgICAoY29ucyAgOnRhZyAiRm9y bWF0IGFuZCBDb252ZXJ0ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sIDp0YWcg IkZvcm1hdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sIDp0YWcgIkNvbnZlcnRl ciIpKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhk ZWZjdXN0b20gbWFya2Rvd24tdHMtY29udmVydC1kaXNwbGF5LWZ1bmN0aW9uICMnZXd3LW9wZW4t ZmlsZQorICAiRnVuY3Rpb24gdG8gZGlzcGxheSBjb252ZXJ0ZWQgTWFya2Rvd24gdGhlIG91dHB1 dCBmaWxlLgorVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudCwgdGhlIGZp bGUgbmFtZS4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJEaXNwbGF5IHVzaW5nIGBl d3cnIiBld3ctb3Blbi1maWxlKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxh eSBpbiBhIGJyb3dzZXIiIGJyb3dzZS11cmwtb2YtZmlsZSkKKyAgICAgICAgICAgICAgICAgKGNv bnN0IDp0YWcgIkRpc3BsYXkgb3V0cHV0IGZpbGUgaW4gYSBidWZmZXIiIGZpbmQtZmlsZS1vdGhl ci13aW5kb3cpCisgICAgICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJPdGhlciBmdW5jdGlv biIpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRl ZmNvbnN0IG1hcmtkb3duLXRzLS1jb252ZXJ0LWVycm9yLWJ1ZmZlcgorICAiKm1hcmtkb3duLXRz LWNvbnZlcnQgZXJyb3JzKiIpCisKKyhkZWZjb25zdCBtYXJrZG93bi10cy0tY29udmVydC1vdXRw dXQtYnVmZmVyCisgICIqbWFya2Rvd24tdHMtY29udmVydCBvdXRwdXQqIikKKworKGRlZnZhciBt YXJrZG93bi10cy1jb252ZXJ0ZXJzCisgIChsaXN0CisgICAoY29ucyAnaHRtbAorICAgICAgICAg KGxpc3QKKyAgICAgICAgICAoY29ucyAncGFuZG9jCisgICAgICAgICAgICAgICAgKGxpc3QgOmNv bW1hbmQgInBhbmRvYyIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5wdXQgJyhmaWxlIHN0ZGlu KQorICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhmaWxlKQorICAgICAgICAgICAgICAg ICAgICAgIDphcmd1bWVudHMtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRh IChpbnB1dC1maWxlIG91dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVu ZCAobGlzdCAiLWYiICJnZm0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICItdCIgImh0bWw1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1z dGFuZGFsb25lIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW8iIG91 dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBpbnB1dC1m aWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkp KSkpKQorICAgICAgICAgIChjb25zICdjbWFyaworICAgICAgICAgICAgICAgIChsaXN0IDpjb21t YW5kICJjbWFyayIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5wdXQgJyhmaWxlIHN0ZGluKQor ICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhzdGRvdXQpCisgICAgICAgICAgICAgICAg ICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEg KGlucHV0LWZpbGUgX291dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVu ZCAobGlzdCAiLXQiICJodG1sIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdo ZW4gaW5wdXQtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGlu cHV0LWZpbGUpKSkpKSkKKyAgICAgICAgICAoY29ucyAnY21hcmstZ2ZtCisgICAgICAgICAgICAg ICAgKGxpc3QgOmNvbW1hbmQgImNtYXJrLWdmbSIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5w dXQgJyhmaWxlIHN0ZGluKQorICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhzdGRvdXQp CisgICAgICAgICAgICAgICAgICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAgICAgICAgICAg ICAgICAgICAgIChsYW1iZGEgKGlucHV0LWZpbGUgX291dHB1dC1maWxlKQorICAgICAgICAgICAg ICAgICAgICAgICAgKGFwcGVuZCAobGlzdCAiLXQiICJodG1sIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBVc2UgR2l0SHViLXN0eWxlIDxwcmUgbGFuZz4gZm9yIGNv ZGUgYmxvY2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWdpdGh1 Yi1wcmUtbGFuZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSW5j bHVkZSByZW1haW5kZXIgb2YgY29kZSBibG9jayBpbmZvCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IHN0cmluZyBpbiBhIHNlcGFyYXRlIGF0dHJpYnV0ZS4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZnVsbC1pbmZvLXN0cmluZyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgVXNlIHN0eWxlIGF0dHJpYnV0 ZXMgdG8gYWxpZ24gdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgY2VsbHMgaW5zdGVhZCBvZiBhbGlnbiBhdHRyaWJ1dGVzLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLS10YWJsZS1wcmVmZXItc3R5bGUtYXR0cmlidXRlcyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5zaW9uIiAiZm9vdG5v dGVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1leHRlbnNpb24i ICJ0YWJsZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5z aW9uIiAic3RyaWtldGhyb3VnaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIi0tZXh0ZW5zaW9uIiAiYXV0b2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICItLWV4dGVuc2lvbiIgInRhZ2ZpbHRlciIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5zaW9uIiAidGFza2xpc3QiKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2hlbiBpbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkpKQorICAgICAgICAgIDs7ICdtYXJr ZG93bi5wbCBpcyB0aGUgc2FtZSBhcyAnbWFya2Rvd24gd2l0aCBhbm90aGVyIGNvbW1vbiBmaWxl CisgICAgICAgICAgOzsgbmFtZS4KKyAgICAgICAgICAoY29ucyAnbWFya2Rvd24ucGwKKyAgICAg ICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAibWFya2Rvd24ucGwiCisgICAgICAgICAgICAgICAg ICAgICAgOmlucHV0ICcoZmlsZSBzdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICA6b3V0cHV0 ICcoc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgIDphcmd1bWVudHMtZnVuY3Rpb24KKyAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmlsZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKGxpc3QgIi0taHRtbDR0YWdzIikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gaW5wdXQtZmlsZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICItLSIgaW5wdXQtZmlsZSkpKSkpKQorICAgICAg ICAgIDs7ICdtYXJrZG93biBpcyB0aGUgc2FtZSBhcyAnbWFya2Rvd24ucGwgd2l0aCBhbm90aGVy IGNvbW1vbiBmaWxlCisgICAgICAgICAgOzsgbmFtZS4KKyAgICAgICAgICAoY29ucyAnbWFya2Rv d24KKyAgICAgICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAibWFya2Rvd24iCisgICAgICAgICAg ICAgICAgICAgICAgOmlucHV0ICcoZmlsZSBzdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICA6 b3V0cHV0ICcoc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgIDphcmd1bWVudHMtZnVuY3Rp b24KKyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmls ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKGxpc3QgIi0taHRtbDR0YWdzIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gaW5wdXQtZmlsZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICItLSIgaW5wdXQtZmlsZSkpKSkpKSkp CisgICAoY29ucyAncGRmCisgICAgICAgICAobGlzdAorICAgICAgICAgIChjb25zICdwYW5kb2MK KyAgICAgICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAicGFuZG9jIgorICAgICAgICAgICAgICAg ICAgICAgIDppbnB1dCAnKGZpbGUgc3RkaW4pCisgICAgICAgICAgICAgICAgICAgICAgOm91dHB1 dCAnKGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAg ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGlucHV0LWZpbGUgb3V0cHV0LWZpbGUpCisgICAg ICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIChsaXN0ICItZiIgImdmbSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi10IiAicGRmIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLW8iIG91dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hlbiBpbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkpKSkpKQorICAiQW4gYWxpc3Qgb2YgZm9ybWF0 L2NvbnZlcnRlciBjb25maWd1cmF0aW9ucy4KK0l0IGlzIGEgdHdvIGxldmVsIGFsaXN0IHdpdGgg dGhlIGZpcnN0IGxldmVsIGJlaW5nIGZvcm1hdCwgZm9yIGV4YW1wbGUKK2BodG1sJyBvciBgcGRm JywgYW5kIHRoZSBzZWNvbmQgYmVpbmcgdGhlIGNvbnZlcnRlciBuYW1lLCBmb3IgZXhhbXBsZQor YHBhbmRvYycuICBBIGNvbnZlcnRlciBjb25maWd1cmF0aW9uIGVudHJ5IGlzIGEgcGxpc3Qgb2Yg dGhlIGZvcm06CisKKyAgXFw9Jyg6Y29tbWFuZCBcImNvbW1hbmQgbmFtZVwiCisgICAgOmlucHV0 IChmaWxlIHN0ZGluKSA7IGFjY2VwdHMgZmlsZSBuYW1lIG9yIHN0ZGluCisgICAgOm91dHB1dCAo c3Rkb3V0KSAgICA7IHByb2R1Y2VzIHN0ZG91dCBvbmx5CisgICAgOmFyZ3VtZW50cy1mdW5jdGlv biA7IGZ1bmN0aW9uOyBlLmcuLAorICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmls ZSkKKyAgICAgICAoYXBwZW5kIChsaXN0IFwiLXRcIiBcImh0bWxcIikKKyAgICAgICAgICAgICAg ICh3aGVuIGlucHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkp CisKK2Bhcmd1bWVudHMtZnVuY3Rpb24nIGlzIHBhc3NlZCB0d28gYXJndW1lbnRzLCBJTlBVVC1G SUxFIGFuZAorT1VUUFVULUZJTEUuICBJZiBJTlBVVC1GSUxFIGlzIG5pbCwgYXNzdW1lIHN0ZGlu LCBvciBpdCBpcyBhCitmdWxseS1xdWFsaWZpZWQgZmlsZSBuYW1lLiAgSWYgT1VUUFVULUZJTEUg aXMgbmlsLCBhc3N1bWUgc3Rkb3V0LCBvciBpdAoraXMgYSBmdWxseS1xdWFsaWZpZWQgZmlsZSBu YW1lLiAgSXQgc2hvdWxkIHJldHVybiBhIGxpc3Qgb2YKK2FyZ3VtZW50cyBzdWl0YWJsZSBmb3Ig YGNhbGwtcHJvY2VzcycuIikKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBtYXJrZG93bi10cy1j b252ZXJ0LWZpbGUgKGlucHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlzcGxheSBvdmVyd3JpdGUgcXVpZXQpCisgICJDb252ZXJ0IE1h cmtkb3duIElOUFVULUZJTEUgdG8gRk9STUFULgorSWYgb3B0aW9uYWwgRElTUExBWSBpcyBub24t bmlsLCBzaG93IHRoZSBvdXRwdXQgZmlsZSBpbiBhIGJ1ZmZlciwgaWYKK3Bvc3NpYmxlLCB1c2lu ZyB0aGUgZnVuY3Rpb24gYG1hcmtkb3duLXRzLWNvbnZlcnQtZGlzcGxheS1mdW5jdGlvbicuCisK K1dpdGggYSBwcmVmaXggYXJndW1lbnQsIERJU1BMQVkgd2lsbCBiZSBub24tbmlsLgorCitPcHRp b25hbCBGT1JNQVQgaXMgYSBmb3JtYXQvY29udmVydGVyIHBhaXIgc3BlY2lmaWVkIGFzIGEgY29u cworXFw9Jyhmb3JtYXQgLiBjb252ZXJ0ZXIpIGZvciBleGFtcGxlIFxcPScoaHRtbCAuIHBhbmRv YykuICBTZWUKK2BtYXJrZG93bi10cy1jb252ZXJ0ZXJzJy4gIElmIG5pbCwgcHJvbXB0IGZvciB0 aGUgZm9ybWF0IGFuZCBjb252ZXJ0ZXIuCisKK0lmIG9wdGlvbmFsIE9WRVJXUklURSBpcyBub24t bmlsLCBzaWxlbnRseSBvdmVyd3JpdGUgT1VUUFVULUZJTEUgaWYgaXQKK2V4aXN0cy4KKworSWYg UVVJRVQgaXMgbm9uLW5pbCwgaW5oaWJpdCBzaG93aW5nIGNvbnZlcnNpb24gd2FybmluZ3Mgb3Ig ZXJyb3JzLgorCitUaGUgZXh0ZXJuYWwgZXhlY3V0YWJsZSBzcGVjaWZpZWQgYnkgYSBjb252ZXJ0 ZXIgbXVzdCBiZSBpbnN0YWxsZWQgYW5kCitmb3VuZDsgc2VlIHRoZSB2YXJpYWJsZSBgZXhlYy1w YXRoJy4iCisgIChpbnRlcmFjdGl2ZSAiZkNvbnZlcnQgTWFya2Rvd24gZmlsZTogIikKKyAgKG1h cmtkb3duLXRzLWNvbnZlcnQgaW5wdXQtZmlsZSBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGRpc3BsYXkgY3VycmVu dC1wcmVmaXgtYXJnKQorICAgICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdGUKKyAgICAgICAg ICAgICAgICAgICAgICAgcXVpZXQpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIG1hcmtkb3du LXRzLWNvbnZlcnQgKCZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0 LWZpbGUgb3V0cHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgZGlz cGxheSBvdmVyd3JpdGUgcXVpZXQpCisgICJDb252ZXJ0IGEgYG1hcmtkb3duLXRzLW1vZGUnIGJ1 ZmZlciBvciBmaWxlIHRvIEZPUk1BVC4KK0NvbnZlcnQgSU5QVVQtRklMRSB0byBPVVRQVVQtRklM RS4KKworSWYgSU5QVVQtRklMRSBpcyBuaWwsIHVzZSB0aGUgY3VycmVudCBidWZmZXIuCisKK0lm IE9VVFBVVC1GSUxFIGlzIG5pbCwgcHJvbXB0IGZvciBhbiBvdXRwdXQgZmlsZS4KKworT3B0aW9u YWwgRk9STUFUIGlzIGEgZm9ybWF0L2NvbnZlcnRlciBwYWlyIHNwZWNpZmllZCBhcyBhIGNvbnMK K1xcPScoZm9ybWF0IC4gY29udmVydGVyKSBmb3IgZXhhbXBsZSBcXD0nKGh0bWwgLiBwYW5kb2Mp LiAgU2VlCitgbWFya2Rvd24tdHMtY29udmVydGVycycuICBJZiBuaWwsIHByb21wdCBmb3IgdGhl IGZvcm1hdCBhbmQgY29udmVydGVyLgorCitJZiBvcHRpb25hbCBESVNQTEFZIGlzIG5vbi1uaWws IHNob3cgdGhlIG91dHB1dCBmaWxlIGluIGEgYnVmZmVyLCBpZgorcG9zc2libGUsIHVzaW5nIHRo ZSBmdW5jdGlvbiBgbWFya2Rvd24tdHMtY29udmVydC1kaXNwbGF5LWZ1bmN0aW9uJy4KKworV2l0 aCBhIHByZWZpeCBhcmd1bWVudCwgRElTUExBWSB3aWxsIGJlIG5vbi1uaWwuCisKK0lmIG9wdGlv bmFsIE9WRVJXUklURSBpcyBub24tbmlsLCBzaWxlbnRseSBvdmVyd3JpdGUgT1VUUFVULUZJTEUg aWYgaXQKK2V4aXN0cy4KKworSWYgUVVJRVQgaXMgbm9uLW5pbCwgaW5oaWJpdCBzaG93aW5nIGNv bnZlcnNpb24gd2FybmluZ3Mgb3IgZXJyb3JzLgorCitUaGUgZXh0ZXJuYWwgZXhlY3V0YWJsZSBz cGVjaWZpZWQgYnkgYSBjb252ZXJ0ZXIgbXVzdCBiZSBpbnN0YWxsZWQgYW5kCitmb3VuZDsgc2Vl IHRoZSB2YXJpYWJsZSBgZXhlYy1wYXRoJy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHdoZW4gKGFu ZCBpbnB1dC1maWxlCisgICAgICAgICAgICAgKGVxdWFsIGJ1ZmZlci1maWxlLW5hbWUgKGV4cGFu ZC1maWxlLW5hbWUgaW5wdXQtZmlsZSkpCisgICAgICAgICAgICAgKGJ1ZmZlci1tb2RpZmllZC1w KSkKKyAgICAod2hlbiAoeWVzLW9yLW5vLXAgIlNhdmUgbW9kaWZpZWQgYnVmZmVyIGJlZm9yZSBj b252ZXJ0aW5nPyAiKQorICAgICAgKHNhdmUtYnVmZmVyKSkpCisgICh1bmxlc3MgaW5wdXQtZmls ZQorICAgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtY29udmVy dCkpCisKKyAgKHNldHEgZGlzcGxheSAob3IgZGlzcGxheSBjdXJyZW50LXByZWZpeC1hcmcpKQor CisgIChsZXQqICgoY29udmVydGVyLWZvcm1hdAorICAgICAgICAgIChvciAoY2FyIGZvcm1hdCkK KyAgICAgICAgICAgICAgKGNhciBtYXJrZG93bi10cy1kZWZhdWx0LWNvbnZlcnRlcikKKyAgICAg ICAgICAgICAgKGludGVybgorICAgICAgICAgICAgICAgKGNvbXBsZXRpbmctcmVhZAorICAgICAg ICAgICAgICAgICJTZWxlY3QgYW4gb3V0cHV0IGZvcm1hdDogIgorICAgICAgICAgICAgICAgICht YXBjYXIgKGxhbWJkYSAoZWx0KSAoc3ltYm9sLW5hbWUgKGNhciBlbHQpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWNvbnZlcnRlcnMpCisgICAgICAgICAgICAgICAgbmls CisgICAgICAgICAgICAgICAgdAorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAg ICdtYXJrZG93bi10cy1jb252ZXJ0ZXItZm9ybWF0KSkpKQorICAgICAgICAgKGNvbnZlcnRlcgor ICAgICAgICAgIChvciAoY2RyIGZvcm1hdCkKKyAgICAgICAgICAgICAgKGNkciBtYXJrZG93bi10 cy1kZWZhdWx0LWNvbnZlcnRlcikKKyAgICAgICAgICAgICAgKGludGVybgorICAgICAgICAgICAg ICAgKGNvbXBsZXRpbmctcmVhZAorICAgICAgICAgICAgICAgICJTZWxlY3QgYSBjb252ZXJ0ZXI6 ICIKKyAgICAgICAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKHN5bWJvbC1uYW1lIChj YXIgZWx0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoYWxpc3QtZ2V0IGNvbnZlcnRlci1m b3JtYXQgbWFya2Rvd24tdHMtY29udmVydGVycykpCisgICAgICAgICAgICAgICAgbmlsCisgICAg ICAgICAgICAgICAgdAorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICdtYXJr ZG93bi10cy1jb252ZXJ0ZXIpKSkpCisgICAgICAgICAoY29uZmlnIChhbGlzdC1nZXQgY29udmVy dGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsaXN0LWdldCBjb252ZXJ0ZXItZm9y bWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1j b252ZXJ0ZXJzKSkpCisgICAgICAgICAoY29tbWFuZCAocGxpc3QtZ2V0IGNvbmZpZyA6Y29tbWFu ZCkpCisgICAgICAgICAoY29tbWFuZC1pbnB1dCAocGxpc3QtZ2V0IGNvbmZpZyA6aW5wdXQpKQor ICAgICAgICAgKGNvbW1hbmQtb3V0cHV0IChwbGlzdC1nZXQgY29uZmlnIDpvdXRwdXQpKQorICAg ICAgICAgKHN0ZGluLW9ubHkgKGVxdWFsIGNvbW1hbmQtaW5wdXQgJyhzdGRpbikpKQorICAgICAg ICAgKHN0ZG91dC1vbmx5IChlcXVhbCBjb21tYW5kLW91dHB1dCAnKHN0ZG91dCkpKSkKKyAgICAo dW5sZXNzIG91dHB1dC1maWxlCisgICAgICAoc2V0cSBvdXRwdXQtZmlsZQorICAgICAgICAgICAg KHJlYWQtZmlsZS1uYW1lICJPdXRwdXQgZmlsZSBuYW1lOiAiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNh dCAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZpbGUtcmVsYXRpdmUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAob3IgaW5wdXQtZmlsZSBidWZmZXItZmlsZS1uYW1lKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzeW1ib2wtbmFtZSBjb252ZXJ0ZXItZm9ybWF0KSkpKQorICAgICAgKHVubGVz cyBvdXRwdXQtZmlsZQorICAgICAgICAodXNlci1lcnJvciAiT3V0cHV0IGZpbGUgbmFtZSBpcyBy ZXF1aXJlZCIpKSkKKyAgICAod2hlbiBvdXRwdXQtZmlsZQorICAgICAgKHdoZW4gKGFuZCAobm90 IG92ZXJ3cml0ZSkKKyAgICAgICAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgb3V0cHV0LWZpbGUp CisgICAgICAgICAgICAgICAgIChub3QgKHllcy1vci1uby1wIChmb3JtYXQgIiVzIGV4aXN0czsg b3ZlcndyaXRlPyIgb3V0cHV0LWZpbGUpKSkpCisgICAgICAgICh1c2VyLWVycm9yICJOb3Qgb3Zl cndyaXRpbmcgZXhpc3RpbmcgZmlsZTogJXMiIG91dHB1dC1maWxlKSkKKyAgICAgIChzZXRxIG91 dHB1dC1maWxlIChleHBhbmQtZmlsZS1uYW1lIG91dHB1dC1maWxlKSkpCisKKworICAgIChsZXQg KChjb21tYW5kLWFyZ3MgKGZ1bmNhbGwgKHBsaXN0LWdldCBjb25maWcgOmFyZ3VtZW50cy1mdW5j dGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIGlucHV0LWZpbGUg KGV4cGFuZC1maWxlLW5hbWUgaW5wdXQtZmlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdXRwdXQtZmlsZSkpKQorICAgICAgKHVubGVzcyAoZXhlY3V0YWJsZS1maW5kIGNv bW1hbmQpCisgICAgICAgICh1c2VyLWVycm9yICJgJXMnIGV4ZWN1dGFibGUgbm90IGZvdW5kIiBj b21tYW5kKSkKKyAgICAgIChsZXQgKChlcnJvci1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tY29udmVydC1lcnJvci1idWZm ZXIpKQorICAgICAgICAgICAgKGVycm9yLXRlbXAtZmlsZSAobWFrZS10ZW1wLWZpbGUgIm1hcmtk b3duLXRzLWNvbnZlcnQtc3RkZXJyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmlsICIubG9nIikpCisgICAgICAgICAgICAoc3Rkb3V0LWJ1ZmZlciAod2hl biBzdGRvdXQtb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0LWJ1ZmZlci1j cmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1jb252ZXJ0 LW91dHB1dC1idWZmZXIpKSkpCisgICAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgICAg KGxldCAoZXhpdC1zdGF0dXMpCisgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGVy cm9yLWJ1ZmZlcgorICAgICAgICAgICAgICAgIChzcGVjaWFsLW1vZGUpCisgICAgICAgICAgICAg ICAgKHNldHEgYnVmZmVyLXJlYWQtb25seSBuaWwpCisgICAgICAgICAgICAgICAgKHdpZGVuKQor ICAgICAgICAgICAgICAgIChlcmFzZS1idWZmZXIpKQorICAgICAgICAgICAgICAod2hlbiBzdGRv dXQtYnVmZmVyCisgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3Rkb3V0LWJ1 ZmZlcgorICAgICAgICAgICAgICAgICAgKHNwZWNpYWwtbW9kZSkKKyAgICAgICAgICAgICAgICAg IChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgbmlsKQorICAgICAgICAgICAgICAgICAgKHdpZGVuKQor ICAgICAgICAgICAgICAgICAgKGVyYXNlLWJ1ZmZlcikpKQorICAgICAgICAgICAgICAoY29uZAor ICAgICAgICAgICAgICAgKChhbmQgaW5wdXQtZmlsZSAobm90IHN0ZGluLW9ubHkpKQorICAgICAg ICAgICAgICAgIChzZXRxIGV4aXQtc3RhdHVzCisgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5 ICMnY2FsbC1wcm9jZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsaXN0IHN0ZG91dC1idWZmZXIgZXJyb3ItdGVtcC1maWxlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC1h cmdzKSkpCisgICAgICAgICAgICAgICAoKGFuZCBpbnB1dC1maWxlIHN0ZGluLW9ubHkpCisgICAg ICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQt ZmlsZS1jb250ZW50cyBpbnB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgKHNldHEgZXhpdC1z dGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2NhbGwtcHJvY2Vzcy1yZWdp b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpc3Qgc3Rkb3V0LWJ1ZmZlciBlcnJvci10ZW1wLWZpbGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tbWFuZC1hcmdzKSkpKQorICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAo d2l0aG91dC1yZXN0cmljdGlvbgorICAgICAgICAgICAgICAgICAgKHNldHEgZXhpdC1zdGF0dXMK KyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2NhbGwtcHJvY2Vzcy1yZWdpb24KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpc3Qgc3Rkb3V0LWJ1ZmZlciBlcnJvci10ZW1wLWZpbGUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t bWFuZC1hcmdzKSkpKSkKKyAgICAgICAgICAgICAgKGxldCAoKGVycm9yLXNpemUgKGZpbGUtYXR0 cmlidXRlLXNpemUgKGZpbGUtYXR0cmlidXRlcyBlcnJvci10ZW1wLWZpbGUpKSkpCisgICAgICAg ICAgICAgICAgKHdoZW4gKGFuZCBlcnJvci1zaXplICg+IGVycm9yLXNpemUgMCkpCisgICAgICAg ICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBlcnJvci1idWZmZXIKKyAgICAgICAgICAg ICAgICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGVycm9yLXRlbXAtZmlsZSkKKyAgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkpKSkKKyAgICAgICAgICAgICAgKGNv bmQgKChlcSAwIGV4aXQtc3RhdHVzKSA7IEludGVnZXIgb3Igc3RyaW5nLgorICAgICAgICAgICAg ICAgICAgICAgKHdoZW4gc3Rkb3V0LWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAod2l0 aC1jdXJyZW50LWJ1ZmZlciBzdGRvdXQtYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAg KHdyaXRlLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSBvdXRwdXQtZmlsZSkpKQorICAg ICAgICAgICAgICAgICAgICAgKHdoZW4gZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAgICAo ZnVuY2FsbCBtYXJrZG93bi10cy1jb252ZXJ0LWRpc3BsYXktZnVuY3Rpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LWZpbGUpKQorICAgICAgICAgICAgICAgICAgICAg KHdoZW4gKGFuZCAobm90IHF1aWV0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bm90ICh6ZXJvcCAoYnVmZmVyLXNpemUgZXJyb3ItYnVmZmVyKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh5ZXMtb3Itbm8tcAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGZvcm1hdC1tZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IkNvbnZlcnNpb24gZmlsZSBgJXMnIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIHdpdGggd2FybmluZ3M7 IGRpc3BsYXkgdGhlbT8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0 LWZpbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXktYnVmZmVyIGVycm9yLWJ1 ZmZlcikpCisgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiQ29udmVyc2lvbiBmaWxlIHN1 Y2Nlc3NmdWxseSBjcmVhdGVkIGAlcyclcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG91dHB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHplcm9wIChi dWZmZXItc2l6ZSBlcnJvci1idWZmZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiB3aXRoIHdh cm5pbmdzOyBzZWUgYnVmZmVyIGAlcyciIGVycm9yLWJ1ZmZlcikpKSkKKyAgICAgICAgICAgICAg ICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgIChpZiBxdWlldAorICAgICAgICAgICAgICAg ICAgICAgICAgIChlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udmVydGVyIGFi b3J0ZWQgd2l0aCBleGl0IGNvZGUgJVM7IHNlZSBidWZmZXIgYCVzJyBmb3IgZXJyb3JzIgorICAg ICAgICAgICAgICAgICAgICAgICAgICBleGl0LXN0YXR1cworICAgICAgICAgICAgICAgICAgICAg ICAgICBtYXJrZG93bi10cy0tY29udmVydC1lcnJvci1idWZmZXIpCisgICAgICAgICAgICAgICAg ICAgICAgICh3aGVuICh5ZXMtb3Itbm8tcCAoZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkNvbnZlcnRlciBhYm9ydGVkIHdpdGggZXhpdCBjb2RlICVT OyBkaXNwbGF5IGVycm9ycz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXhpdC1zdGF0dXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5LWJ1 ZmZlciBlcnJvci1idWZmZXIpKSkpKSkKKyAgICAgICAgICAoZGVsZXRlLWZpbGUgZXJyb3ItdGVt cC1maWxlKSkpKSkpCisKKzs7OyBUYWJsZSBvZiBjb250ZW50czoKKworKGRlZmdyb3VwIG1hcmtk b3duLXRzLXRvYyBuaWwKKyAgIlRhYmxlIG9mIGNvbnRlbnRzIGZvciBgbWFya2Rvd24tdHMtbW9k ZScgYnVmZmVycy4iCisgIDpwcmVmaXggIm1hcmtkb3duLXRzLXRvYy0iCisgIDpncm91cCAndGV4 dAorICA6Z3JvdXAgJ2VkaXRpbmcKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9tIG1h cmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUgJ2luc2VydC10ZW1wbGF0ZQorICAi V2FybiBpZiBubyB0YWJsZXMgd2VyZSBwcm9jZXNzZWQgd2hlbiBjYWxsaW5nIGBtYXJrZG93bi10 cy10b2MtZ2VuZXJhdGUnLgorSWYgbmlsLCBkbyBub3RoaW5nLiAgSWYgdGhlIHN5bWJvbCBgaW5z ZXJ0LXRlbXBsYXRlJyBhbmQKK2BtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUnIHdhcyBjYWxsZWQg aW50ZXJhY3RpdmVseSwgb2ZmZXIgdG8gaW5zZXJ0IGEKK3RlbXBsYXRlIGlmIHRoZXJlIGFyZSBu b25lLiAgSWYgYG5vLXRhYmxlcycsIHdhcm4gd2hlbiB0aGVyZSBhcmUgbm8KK3RhYmxlcyBpbiB0 aGUgYnVmZmVyLiAgYG5vLWFjdGl2ZS10YWJsZXMnLCBpcyB0aGUgc2FtZSBhcyBgbm8tdGFibGVz Jword2l0aCB0aGUgYWRkaXRpb24gb2YgYSB3YXJuaW5nIGlmIHRoZXJlIGFyZSB0YWJsZXMsIGJ1 dCBub25lIGFyZSBhY3RpdmUuIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiTm8gd2Fy bmluZ3MiIG5pbCkKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkluc2VydCBhIHRhYmxl IHRlbXBsYXRlIChpZiBpbnRlcmFjdGl2ZSkiIGluc2VydC10ZW1wbGF0ZSkKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIldhcm4gaWYgbm8gdGFibGVzIHdlcmUgcHJvY2Vzc2VkIiBuby10 YWJsZXMpCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJXYXJuIGlmIG5vIGFjdGl2ZSB0 YWJsZXMgd2VyZSBwcm9jZXNzZWQiIG5vLWFjdGl2ZS10YWJsZXMpKQorICA6dmVyc2lvbiAiMzEu MSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy10 b2MtdXBkYXRlLWJlZm9yZS1zYXZlLW1vZGUtbGlnaHRlciAiIFt0b2Mgb24gc2F2ZV0iCisgICJN aW5vci1tb2RlIFwibGlnaHRlclwiIGZvciBgbWFya2Rvd24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUt c2F2ZS1tb2RlJy4KK05vdGUgdGhlIHNpbmdsZSBzcGFjZSBwcmVmaXguIgorICA6dHlwZSAnKGNo b2ljZSAoY29uc3QgOnRhZyAiRGVmYXVsdCIgIiBbdG9jIG9uIHNhdmVdIikKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIk5vbmUiIG5pbCkKKyAgICAgICAgICAgICAgICAgKHN0cmluZyA6 dGFnICJPdGhlciBzdHJpbmciKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNp b24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtdG9jLXNsdWctZnVuY3Rpb24gIydt YXJrZG93bi10cy0tc2x1Zy1naXRodWIKKyAgIkZ1bmN0aW9uIHRvIGdlbmVyYXRlIE1hcmtkb3du IGhlYWRpbmcgXCJzbHVnc1wiIGluIHRhYmxlcyBvZiBjb250ZW50cy4iCisgIDp0eXBlICcoY2hv aWNlIChjb25zdCA6dGFnICJHaXRIdWIgc2x1ZyIgbWFya2Rvd24tdHMtLXNsdWctZ2l0aHViKQor ICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiUGFuZG9jIHNsdWciIG1hcmtkb3duLXRzLS1z bHVnLXBhbmRvYykKKyAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIDp0YWcgIk90aGVyIGZ1bmN0 aW9uIikpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCiso ZGVmdmFyIG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcworICAnKChoZWFkaW5nIC4gKGgxIGgyIGgz IGg0IGg1IGg2KSkKKyAgICAoc2V0ZXh0IC4gKHNoMSBzaDIpKQorICAgIChpdGVtIC4gKG1pbnVz IHBsdXMgc3RhcikpCisgICAgKG51bWJlcmVkLWl0ZW0gLiAoZG90IHBhcmVuKSkKKyAgICAoY29k ZSAuIChjb2RlKSkpCisgICJNYXAgaGlnaCBsZXZlbCBub2RlIGhhbmRsZXMgdG8gdGhlaXIgYmFz ZSBjb25zdGl0dWVudHMuCitUaGUgc3BlY2lhbCBzeW1ib2wgYGFsbCcgbWVhbnMgYWxsIGhhbmRs ZXMuIikKKworKGRlZnZhciBtYXJrZG93bi10cy0tdG9jLWhhbmRsZS1jbGFzc2VzCisgIChsZXQg KCh4KSkKKyAgICAoZG9saXN0IChlbHQgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzKQorICAgICAg KGRvbGlzdCAodmFsIChjZHIgZWx0KSkKKyAgICAgICAgKHB1c2ggYCgsdmFsIC4gLChjYXIgZWx0 KSkgeCkpKQorICAgIHgpCisiSW52ZXJzZSBvZiBgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzJy4i KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRvYy1leHBhbmQtY2FuZGlkYXRlLWhhbmRsZXMgKGhh bmRsZXMpCisgICJFeHBhbmQgY2FuZGlkYXRlIEhBTkRMRVMgYW5kIGtlZXAgb25seSBiYXNlIGhh bmRsZXMuCitTZWUgYG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcycuIgorICAobGV0ICgoZXhwYW5k ZWQgKG1ha2UtaGFzaC10YWJsZSkpCisgICAgICAgIChyZXMpKQorICAgICh1bmxlc3MgKGxpc3Rw IGhhbmRsZXMpCisgICAgICAoc2V0cSBoYW5kbGVzIChsaXN0IGhhbmRsZXMpKSkKKyAgICAod2hl biAoZXF1YWwgaGFuZGxlcyAnKGFsbCkpCisgICAgICAoc2V0cSBoYW5kbGVzIChtYXBjYXIgIydj YXIgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzKSkpCisgICAgKGRvbGlzdCAoZWx0IGhhbmRsZXMp CisgICAgICAoc2V0cSBlbHQgKGFsaXN0LWdldCBlbHQgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVz IGVsdCkpCisgICAgICAoY29uZCAoKGNvbnNwIGVsdCkKKyAgICAgICAgICAgICAoZG9saXN0IChr IGVsdCkgKHB1dGhhc2ggayB0IGV4cGFuZGVkKSkpCisgICAgICAgICAgICAodCAocHV0aGFzaCBl bHQgdCBleHBhbmRlZCkpKSkKKyAgICAobWFwaGFzaCAobGFtYmRhIChrIF92KSAocHVzaCBrIHJl cykpIGV4cGFuZGVkKQorICAgIHJlcykpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdG9jcyAoJm9w dGlvbmFsIGJlZyBlbmQpCisgICJTY2FuIHRoZSBjdXJyZW50IGJ1ZmZlciBmb3IgdG9jIGVudHJp ZXMgZnJvbSBCRUcgdG8gRU5ELgorSWYgQkVHIGlzIG5pbCwgdXNlIGBwb2ludC1taW4nLiAgSWYg RU5EIGlzIG5pbCwgdXNlIGBwb2ludC1tYXgnLgorCitSZXR1cm4gYW4gYWxpc3Qgb2YgdGhlIGZv cm06CisgIFxcPScoKGtleXdvcmQgKG5vZGUgYmVnIGVuZCB2YXJzKSkpCisKK1ZhcnMgYXJlIGV4 cGFuZGVkIHZpYSBgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lJy4KKworUmV0dXJuIHRo ZSBsaXN0IGluIHRoZSBvcmRlciBvZiBhcHBlYXJhbmNlIGluIHRoZSBidWZmZXIuIgorICA7OyBO T1RFOiBUaGlzIHNjYW5zIGFsbCBtYXRjaGluZyBub2RlcyBiZWxvdyBCRUcgd2l0aCBubyBtYXhp bXVtIGNvdW50CisgIDs7IGV2ZW4gd2hlbiB3ZSB3YW50IG9ubHkgYSBzaW5nbGUgbmV4dCBtYXRj aGluZyBpdGVtLiAgUGVyaGFwcworICA7OyBgdHJlZXNpdC1xdWVyeS1jYXB0dXJlJyBjb3VsZCBi ZSBpbXByb3ZlZCB0byBhY2NlcHQgYSBtYXgtY291bnQKKyAgOzsgYXJndW1lbnQuCisgIDs7Cisg IDs7IE1hdGNoICJtYXJrZG93bi10cy10b2M6IiwgIm1hcmtkb3duLXRzLXRvYy1hYmMxMjM6IiBi dXQgbm90CisgIDs7ICJtYXJrZG93bi10cy10b2N4eHg6Ii4KKyAgKGxldCAoKHJlcykpCisgICAg KGRvbGlzdCAobm9kZQorICAgICAgICAgICAgICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAg ICAgICAgICAgJ21hcmtkb3duCisgICAgICAgICAgICAgICcoKCgoaHRtbF9ibG9jaykgQG1hcmtk b3duLXRzLXRvYykKKyAgICAgICAgICAgICAgICAgKDptYXRjaCAiPCEtLVtbOmJsYW5rOl1dKm1h cmtkb3duLXRzLXRvY1xcKC1bWzphbG51bTpdXStcXCkqOiIgQG1hcmtkb3duLXRzLXRvYykpKQor ICAgICAgICAgICAgICAob3IgYmVnIChwb2ludC1taW4pKQorICAgICAgICAgICAgICAob3IgZW5k IChwb2ludC1tYXgpKQorICAgICAgICAgICAgICAnbm9kZS1vbmx5KSkKKyAgICAgIChsZXQqICgo cyAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSAnbm8tcHJvcGVydHkpKQorICAgICAgICAgICAgICht YXRjaCAoc3RyaW5nLW1hdGNoICJcXChtYXJrZG93bi10cy10b2NcXCgtW1s6YWxudW06XV0rXFwp KlxcKTouKiIgcykpCisgICAgICAgICAgICAgKGtleXdvcmQgKHdoZW4gbWF0Y2ggKG1hdGNoLXN0 cmluZyAxIHMpKSkpCisgICAgICAgIChsZXQgKCh2YXJzKSkKKyAgICAgICAgICAod2l0aC13b3Jr LWJ1ZmZlcgorICAgICAgICAgICAgKGluc2VydCBzKQorICAgICAgICAgICAgKHNldHEgdmFycyAo aGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lKSkpCisgICAgICAgICAgKHB1c2gKKyAgICAg ICAgICAgYCgsa2V5d29yZAorICAgICAgICAgICAgIChub2RlIC4gLG5vZGUpCisgICAgICAgICAg ICAgKGJlZyAuICwodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgIChlbmQg LiAsKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAgICAgKHZhcnMgLiAsdmFycykp CisgICAgICAgICAgIHJlcykpKSkKKyAgICAobnJldmVyc2UgcmVzKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tdG9jcy1zYW5pdHktY2hlY2sgKHRvY3MpCisgICJTYW5pdHkgY2hlY2sgVE9DUyBm b3IgcGFpcmVkIG1hcmtkb3duLXRzLXRvYzogbWFya2Rvd24tdHMtdG9jLWVuZDogbm9kZXMuCitT aWduYWwgYW4gZXJyb3IgaWYgVE9DUyBhcmUgaW5zYW5lLgorU2VlIGBtYXJrZG93bi10cy0tdG9j cycuIgorICAoc2VxLW1hcC1pbmRleGVkCisgICAobGFtYmRhIChlbHQgaWR4KQorICAgICAod2hl biAoZXF1YWwgIm1hcmtkb3duLXRzLXRvYyIgKGNhciBlbHQpKQorICAgICAgICh1bmxlc3MgKGVx dWFsICJtYXJrZG93bi10cy10b2MtZW5kIiAoY2FyIChudGggKDErIGlkeCkgdG9jcykpKQorICAg ICAgICAgKHVzZXItZXJyb3IKKyAgICAgICAgICAiXCJtYXJrZG93bi10cy10b2NcIiBhdCBwb3Np dGlvbiAlZCBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgbWF0Y2hpbmcgXCJtYXJrZG93bi10cy10b2Mt ZW5kXCIiCisgICAgICAgICAgKGFsaXN0LWdldCAnYmVnIGVsdCkpKSkpCisgICB0b2NzKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLS10b2MtY29sbGVjdC1jYW5kaWRhdGVzICh0b2Mtc3RhcnQtbm9k ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2MtZW5kLW5v ZGUgaGFuZGxlcyBmcm9tKQorICAiUmV0dXJuIGFuIGFsaXN0IG9mIHRvYyBlbnRyeSBjYW5kaWRh dGVzIGZyb20gdGhlIGN1cnJlbnQgYnVmZmVyLgorSEFORExFUyBpcyBhIGxpc3Qgb2YgYmFzZSBo YW5kbGVzOyBzZWUgYG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcycuCisKK1RPQy1TVEFSVC1OT0RF IGlzIHRoZSBcIm1hcmtkb3duLXRzLXRvYy1zdGFydFwiIG5vZGUuCitUT0MtRU5ELU5PREUgaXMg dGhlIFwibWFya2Rvd24tdHMtdG9jLWVuZFwiIG5vZGUuCisKK0lmIEZST00gaXMgdGhlIHN5bWJv bCBgYWJvdmUnLCBzb3VyY2UgY2FuZGlkYXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKK3RoZSBi dWZmZXIgdW50aWwgdGhlIHRvYyBzdGFydCBub2RlLiAgSWYgYGJlbG93Jywgc291cmNlIGNhbmRp ZGF0ZXMgZnJvbQordG9jIHN0YXJ0IG5vZGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAg SWYgYGFsbCcsIHVzZSB0aGUgd2hvbGUKK2J1ZmZlci4KKworUmVtb3ZlIGlnbm9yZWQgY2FuZGlk YXRlcyBjb250YWluaW5nIFwiPCEtLSBtYXJrZG93bi10cy1pZ25vcmU6IC0tPlwiLgorCitTb3J0 IHRoZSBsaXN0IGJ5IHRoZSBzdGFydGluZyBjaGFyYWN0ZXIgcG9zaXRpb25zIG9mIG5vZGVzLgor CitUaGUgYWxpc3QgaXMgb2YgdGhlIGZvcm06CisgIFxcPScoKGhhbmRsZSAuIG5vZGUpKSIKKyAg KGxldCAoY2FuZGlkYXRlcyBiZWcgZW5kKQorICAgIChwY2FzZSBmcm9tCisgICAgICAoJ2Fib3Zl CisgICAgICAgKHNldHEgYmVnIChwb2ludC1taW4pKQorICAgICAgIChzZXRxIGVuZCAodHJlZXNp dC1ub2RlLXN0YXJ0IHRvYy1zdGFydC1ub2RlKSkpCisgICAgICAoJ2JlbG93CisgICAgICAgKHNl dHEgYmVnICh0cmVlc2l0LW5vZGUtZW5kIHRvYy1lbmQtbm9kZSkpCisgICAgICAgKHNldHEgZW5k IChwb2ludC1tYXgpKSkKKyAgICAgICgnYWxsCisgICAgICAgKHNldHEgYmVnIChwb2ludC1taW4p KQorICAgICAgIChzZXRxIGVuZCAocG9pbnQtbWF4KSkpKQorCisgICAgOzsgSXQgbG9va3MgbGlr ZSB3ZSBjYW5ub3QgZ2V0IHRoZW0gaW4gb25lIGZlbGwgc3dvb3AuCisgICAgKGRvbGlzdCAoZWx0 IGhhbmRsZXMpCisgICAgICAoc2V0cQorICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAoYXBwZW5k CisgICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAgKHBjYXNlIGVsdAorICAgICAgICAgICgnaDEg KHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChhdHhf aGVhZGluZyAoYXR4X2gxX21hcmtlcikgKGlubGluZSkgQGgxKSkgYmVnIGVuZCkpCisgICAgICAg ICAgKCdoMiAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisgICAgICAgICAgICAgICAgJ21hcmtkb3du ICcoKGF0eF9oZWFkaW5nIChhdHhfaDJfbWFya2VyKSAoaW5saW5lKSBAaDIpKSBiZWcgZW5kKSkK KyAgICAgICAgICAoJ2gzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAn bWFya2Rvd24gJygoYXR4X2hlYWRpbmcgKGF0eF9oM19tYXJrZXIpIChpbmxpbmUpIEBoMykpIGJl ZyBlbmQpKQorICAgICAgICAgICgnaDQgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAg ICAgICAgICdtYXJrZG93biAnKChhdHhfaGVhZGluZyAoYXR4X2g0X21hcmtlcikgKGlubGluZSkg QGg0KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdoNSAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisg ICAgICAgICAgICAgICAgJ21hcmtkb3duICcoKGF0eF9oZWFkaW5nIChhdHhfaDVfbWFya2VyKSAo aW5saW5lKSBAaDUpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ2g2ICh0cmVlc2l0LXF1ZXJ5LWNh cHR1cmUKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygoYXR4X2hlYWRpbmcgKGF0eF9oNl9t YXJrZXIpIChpbmxpbmUpIEBoNikpIGJlZyBlbmQpKQorICAgICAgICAgICgnc2gxICh0cmVlc2l0 LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgJ21hcmtkb3duICcoKHNldGV4dF9oZWFk aW5nIGhlYWRpbmdfY29udGVudDogKF8pIEBzaDEgKHNldGV4dF9oMV91bmRlcmxpbmUpKSkgYmVn IGVuZCkpCisgICAgICAgICAgKCdzaDIgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAg ICAgICAgICAnbWFya2Rvd24gJygoc2V0ZXh0X2hlYWRpbmcgaGVhZGluZ19jb250ZW50OiAoXykg QHNoMiAoc2V0ZXh0X2gyX3VuZGVybGluZSkpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ21pbnVz ICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygo bGlzdF9pdGVtIChsaXN0X21hcmtlcl9taW51cykgKHBhcmFncmFwaCAoaW5saW5lKSBAbWludXMp KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdwbHVzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAg ICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BsdXMp IChwYXJhZ3JhcGggKGlubGluZSkgQHBsdXMpKSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdzdGFy ICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChs aXN0X2l0ZW0gKGxpc3RfbWFya2VyX3N0YXIpIChwYXJhZ3JhcGggKGlubGluZSkgQHN0YXIpKSkg YmVnIGVuZCkpCisgICAgICAgICAgKCdkb3QgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAg ICAgICAgICAgICAnbWFya2Rvd24gJygobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3QpIChwYXJh Z3JhcGggKGlubGluZSkgQGRvdCkpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ3BhcmVuICh0cmVl c2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygobGlzdF9p dGVtIChsaXN0X21hcmtlcl9wYXJlbnRoZXNpcykgKHBhcmFncmFwaCAoaW5saW5lKSBAcGFyZW4p KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdjb2RlICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAg ICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChmZW5jZWRfY29kZV9ibG9jayAoaW5mb19zdHJp bmcgKGxhbmd1YWdlKSkgQGNvZGUpKSBiZWcgZW5kKSkpKSkpCisgICAgKHNvcnQKKyAgICAgKHNl cS1yZW1vdmUKKyAgICAgIChsYW1iZGEgKGVsdCkKKyAgICAgICAgKHN0cmluZy1tYXRjaC1wICI8 IS0tW1s6Ymxhbms6XV0qbWFya2Rvd24tdHMtaWdub3JlOltbOmJsYW5rOl1dKi0tPiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCAoY2RyIGVsdCkgdCkpKQorICAg ICAgY2FuZGlkYXRlcykKKyAgICAgOmtleSAobGFtYmRhIChlbHQpCisgICAgICAgICAgICAodHJl ZXNpdC1ub2RlLXN0YXJ0IChjZHIgZWx0KSkpCisgICAgIDpsZXNzcCAjJzwKKyAgICAgOmluLXBs YWNlIHQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10b2MtbGlzdC1pdGVtLWRlcHRoIChub2Rl KQorICAiUmV0dXJuIE5PREUncyBpdGVtIGRlcHRoIHJlbGF0aXZlIHRvIGl0cyBwcmVkZWNlc3Nv cnMuCitJZiBOT0RFIGlzIG5vdCBwYXJ0IG9mIGEgbGlzdCwgcmV0dXJuIG5pbC4iCisgICAgKGxl dCAoKGRlcHRoIG5pbCkgKG4gKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpKQorICAgICAgKHdo aWxlIG4KKyAgICAgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAibGlzdCIp CisgICAgICAgICAgKHNldHEgZGVwdGggKDErIChvciBkZXB0aCAwKSkpKQorICAgICAgICAoc2V0 cSBuICh0cmVlc2l0LW5vZGUtcGFyZW50IG4pKSkKKyAgICAgIGRlcHRoKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUgKHRleHQpCisgICJSZW1vdmUgdHJh aWxpbmcgIyBmcm9tIFRFWFQgdW5sZXNzIHRoZXkgYXJlIGJhY2tzbGFzaCBlc2NhcGVkLgorRmly c3QgcmVtb3ZlIEhUTUwgY29tbWVudHMuIgorICAoaWYgKHN0cmluZy1tYXRjaC1wICJbWzpibGFu azpdXSpcXFxcKyMrW1s6Ymxhbms6XV0qXG4qXFwnIiB0ZXh0KQorICAgICAgdGV4dAorICAgIChy ZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIltbOmJsYW5rOl1dKiMrW1s6Ymxhbms6XV0qXG4qXFwn IiAiIiB0ZXh0KSkpCisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtLXRvYy10ZXh0LW5vcm1hbGl6ZXJz CisgIGAoKGhlYWRpbmcgLiBtYXJrZG93bi10cy0tdG9jLWF0eF9oZWFkZXItbm9ybWFsaXplKQor ICAgIChoMSAuIG1hcmtkb3duLXRzLS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUpCisgICAgKGgy IC4gbWFya2Rvd24tdHMtLXRvYy1hdHhfaGVhZGVyLW5vcm1hbGl6ZSkKKyAgICAoaDMgLiBtYXJr ZG93bi10cy0tdG9jLWF0eF9oZWFkZXItbm9ybWFsaXplKQorICAgIChoNCAuIG1hcmtkb3duLXRz LS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUpCisgICAgKGg1IC4gbWFya2Rvd24tdHMtLXRvYy1h dHhfaGVhZGVyLW5vcm1hbGl6ZSkKKyAgICAoaDYgLiBtYXJrZG93bi10cy0tdG9jLWF0eF9oZWFk ZXItbm9ybWFsaXplKSkKKyAgIk1hcCBub2RlIHR5cGUgaGFuZGxlcyB0byBmdW5jdGlvbnMgdGhh dCBub3JtYWxpemUgaXRzIHRleHQuCitTZWUgYG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxp emUnLgorRWFjaCBmdW5jdGlvbiBhY2NlcHRzIG9uZSBhcmd1bWVudCwgdGhlIHN0cmluZyBURVhU LCBhbmQgcmV0dXJucyBhIHN0cmluZy4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRvYy10ZXh0 LW5vcm1hbGl6ZSAoaGFuZGxlIG5vZGUgJm9wdGlvbmFsIHRleHQpCisgICJOb3JtYWxpemUgTk9E RSdzIFRFWFQgYWNjb3JkaW5nIHRvIGl0cyBIQU5ETEUuCitURVhUIHNob3VsZCBoYXZlIG5vIHRl eHQgcHJvcGVydGllcy4gIElmIFRFWFQgaXMgbmlsLCB1c2UgdGhlIE5PREUncwordGV4dC4gIFRo aXMgaXMgbm90IGFsd2F5cyBjb3JyZWN0IHNvIGl0J3MgYmVzdCB0byBwYXNzIFRFWFQgaWYgeW91 IGtub3cKK2l0IGluIHRoZSBjYWxsaW5nIGNvbnRleHQuCisKK0lmIG5vIG5vcm1hbGl6ZXIgaXMg Zm91bmQsIHJldHVybiBURVhULgorCitPbmUgZXhhbXBsZSBub3JtYWxpemF0aW9uIGlzIGF0eF9o ZWFkaW5nIHRleHQgdGhhdCBlbmRzIGluIHRyYWlsaW5nIGhhc2gKK3NpZ25zIHdoaWNoIGFyZSBp bnRlbmRlZCB0byBiZSBlbGlkZWQgc28gXCJIZWFkaW5nIFRleHQgIyNcIiBpcwordHJhbnNmb3Jt ZWQgaW50byBcIkhlYWRpbmcgVGV4dFwiLiIKKyAgKHNldHEgdGV4dCAob3IgdGV4dCAodHJlZXNp dC1ub2RlLXRleHQgbm9kZSAnbm8tcHJvcGVydHkpKSkKKyAgKGlmLWxldCogKChmaXhlciAoYWxp c3QtZ2V0IGhhbmRsZSBtYXJrZG93bi10cy0tdG9jLXRleHQtbm9ybWFsaXplcnMpKSkKKyAgICAg IChmdW5jYWxsIGZpeGVyIHRleHQpCisgICAgdGV4dCkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVm aW5lLW1pbm9yLW1vZGUgbWFya2Rvd24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUtc2F2ZS1tb2RlCisg ICJJZiBlbmFibGVkLCB1cGRhdGUgYG1hcmtkb3duLXRzLW1vZGUnIHRhYmxlcyBvZiBjb250ZW50 cyBiZWZvcmUgc2F2aW5nLiIKKyAgOmluaXQtdmFsdWUgbmlsCisgIDpnbG9iYWwgbmlsCisgIDps aWdodGVyIG1hcmtkb3duLXRzLXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZS1saWdodGVyCisg IChpZiAoZGVyaXZlZC1tb2RlLXAgJ21hcmtkb3duLXRzLW1vZGUpCisgICAgICAoaWYgbWFya2Rv d24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUtc2F2ZS1tb2RlCisgICAgICAgICAgKGFkZC1ob29rICdi ZWZvcmUtc2F2ZS1ob29rICMnbWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlIG5pbCAnbG9jYWwpCisg ICAgICAgIChyZW1vdmUtaG9vayAnYmVmb3JlLXNhdmUtaG9vayAjJ21hcmtkb3duLXRzLXRvYy1n ZW5lcmF0ZSAnbG9jYWwpKQorICAgIChzZXRxIG1hcmtkb3duLXRzLXRvYy11cGRhdGUtYmVmb3Jl LXNhdmUtbW9kZSBuaWwpCisgICAgKGx3YXJuICdtYXJrZG93bi10cy10b2MtdXBkYXRlLWJlZm9y ZS1zYXZlLW1vZGUKKyAgICAgICAgICAgOndhcm5pbmcKKyAgICAgICAgICAgIk1pbm9yIG1vZGUg dmFsaWQgb25seSBpbiBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycy4iKSkpCisKKzs7OyMjI2F1 dG9sb2FkCisoZGVmdW4gbWFya2Rvd24tdHMtdG9jLWNsZWFyLWFuZC1yZW1vdmUgKCZvcHRpb25h bCBiZWcgZW5kKQorICAiUmVtb3ZlIGBtYXJrZG93bi10cy1tb2RlJyB0YWJsZSBvZiBjb250ZW50 cyBib2RpZXMgYW5kIHRlbXBsYXRlcy4KK09wZXJhdGUgb24gdGhlIGFjdGl2ZSByZWdpb24gQkVH IHRvIEVORCwgb3RoZXJ3aXNlIG9wZXJhdGUgb24gdGhlCitidWZmZXIsIHdoaWNoIG1heSBiZSBu YXJyb3dlZC4iCisgIChpbnRlcmFjdGl2ZSAiUiIpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1u b3QtbW9kZSAnbWFya2Rvd24tdHMtdG9jLWNsZWFyLWFuZC1yZW1vdmUpCisgIChtYXJrZG93bi10 cy10b2MtY2xlYXIgYmVnIGVuZCAncmVtb3ZlKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBt YXJrZG93bi10cy10b2MtY2xlYXIgKCZvcHRpb25hbCBiZWcgZW5kIHJlbW92ZSkKKyAgIkNsZWFy IGBtYXJrZG93bi10cy1tb2RlJyB0YWJsZSBvZiBjb250ZW50cyBib2RpZXMuCitPcGVyYXRlIG9u IHRoZSBhY3RpdmUgcmVnaW9uIEJFRyB0byBFTkQsIG90aGVyd2lzZSBvcGVyYXRlIG9uIHRoZQor YnVmZmVyLCB3aGljaCBtYXkgYmUgbmFycm93ZWQuCitJZiBvcHRpb25hbCBSRU1PVkUgaXMgbm9u LW5pbCwgcmVtb3ZlIHRhYmxlcyBpbmNsdWRpbmcgdGhlaXIgdGVtcGxhdGVzLiIKKyAgKGludGVy YWN0aXZlICJSIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10 cy10b2MtY2xlYXIpCisgIChzZXRxIGJlZyAob3IgYmVnIChwb2ludC1taW4pKSkKKyAgKHNldHEg ZW5kIChvciBlbmQgKHBvaW50LW1heCkpKQorICAodW5sZXNzIChlcSBiZWcgZW5kKQorICAgIDs7 IENvbnZlcnQgbWFya2VycyB0byBhYnNvbHV0ZSBwb3NpdGlvbnMuCisgICAgKHNldHEgYmVnIChp ZiAobWFya2VycCBiZWcpIChtYXJrZXItcG9zaXRpb24gYmVnKSBiZWcpKQorICAgIChzZXRxIGVu ZCAoaWYgKG1hcmtlcnAgZW5kKSAobWFya2VyLXBvc2l0aW9uIGVuZCkgZW5kKSkKKyAgICA7OyBO T1RFOiBPcGVyYXRlIG9uIHRoZSB3aWRlbmVkIGJ1ZmZlciB0byBhdm9pZCB0cmVlc2l0ZXIgY3Jh c2ggaXNzdWVzLgorICAgICh3aXRob3V0LXJlc3RyaWN0aW9uCisgICAgICAobGV0ICgodG9jcykK KyAgICAgICAgICAgIChiZWctcG9zIGJlZykKKyAgICAgICAgICAgIChlbmQtcG9zIGVuZCkpCisg ICAgICAgIDs7IFdlIHNjYW4gZWFjaCBwYXNzIGJlY2F1c2UgdGhlaXIgcG9zaXRpb25zIGNoYW5n ZS4KKyAgICAgICAgKHdoaWxlIChhbmQgKDwgYmVnLXBvcyBlbmQtcG9zKQorICAgICAgICAgICAg ICAgICAgICAoc2V0cSB0b2NzIChtYXJrZG93bi10cy0tdG9jcyBiZWctcG9zIGVuZC1wb3MpKSkK KyAgICAgICAgICAobWFya2Rvd24tdHMtLXRvY3Mtc2FuaXR5LWNoZWNrIHRvY3MpCisgICAgICAg ICAgOzsgQWZ0ZXIgc2FuaXR5IGNoZWNraW5nLCB3ZSBrbm93IHRoZSBzZWNvbmQgZWxlbWVudCBp cyBhCisgICAgICAgICAgOzsgdG9jLWVuZC4KKyAgICAgICAgICAobGV0KiAoKHRvYyAobnRoIDAg dG9jcykpCisgICAgICAgICAgICAgICAgICh0b2MtZW5kIChudGggMSB0b2NzKSkKKyAgICAgICAg ICAgICAgICAgKHJlZy1iZWcgKGlmIHJlbW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGFsaXN0LWdldCAnYmVnIHRvYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxp c3QtZ2V0ICdlbmQgdG9jKSkpCisgICAgICAgICAgICAgICAgIChyZWctZW5kIChpZiByZW1vdmUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC1nZXQgJ2VuZCB0b2MtZW5kKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC1nZXQgJ2JlZyB0b2MtZW5kKSkpCisg ICAgICAgICAgICAgICAgIChyZWctc2l6ZSAoLSByZWctZW5kIHJlZy1iZWcpKSkKKyAgICAgICAg ICAgIChkZWxldGUtcmVnaW9uIHJlZy1iZWcgcmVnLWVuZCkKKyAgICAgICAgICAgIDs7IFN0YXJ0 IHRoZSBuZXh0IHBhc3MgYWZ0ZXIgdGhpcyB0b2MtZW5kLiAgQWRqdXN0IGZvciB0aGUKKyAgICAg ICAgICAgIDs7IGRlbGV0ZWQgcmVnaW9uLgorICAgICAgICAgICAgKHNldHEgYmVnLXBvcyAoLSAo YWxpc3QtZ2V0ICdlbmQgdG9jLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn LXNpemUpKQorICAgICAgICAgICAgKHNldHEgZW5kLXBvcyAobWluIChwb2ludC1tYXgpICgtIGVu ZC1wb3MgcmVnLXNpemUpKSkpKSkpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBtYXJrZG93 bi10cy10b2MtaW5zZXJ0LXRlbXBsYXRlICgmb3B0aW9uYWwgY2hhcikKKyAgIkluc2VydCBhIGBt YXJrZG93bi10cy1tb2RlYCB0YWJsZSBvZiBjb250ZW50cyB0ZW1wbGF0ZSBhdCBwb2ludC4KKwor Q0hBUiBpcyB0aGUgdGVtcGxhdGUgdHlwZSBcImJcIiBmb3IgYmFzaWMsIFwiY1wiIGZvciBjb21w bGV0ZS4gIElmIENIQVIKK2lzIG5pbCBhbmQgdGhlIGNvbW1hbmQgaXMgcnVuIGludGVyYWN0aXZl bHksIHByb21wdCBmb3IgYSB0ZW1wbGF0ZS4KKworVGhlIGJhc2ljIHRlbXBsYXRlIHVzZXMgYWxs IGRlZmF1bHRzIGFuZCBpcyBsaWtlbHkgdGhlIGJlc3QgY2hvaWNlIGZvcgorbW9zdCB1c2VzLiAg VGhlIGNvbXBsZXRlIHRlbXBsYXRlIGlsbHVzdHJhdGVzIGFsbCBwYXJhbWV0ZXJzIHNldCB0bwor dGhlaXIgZGVmYXVsdHMgYW5kIGlzIHVzZWZ1bCBhcyBhIHN0YXJ0aW5nIHBvaW50IHRvIGN1c3Rv bWl6ZSBhIHRhYmxlLiIKKyAgKGludGVyYWN0aXZlICJjVGVtcGxhdGUgW2JdYXNpYyBbY11vbXBs ZXRlOiIpCisgIChwY2FzZSBjaGFyCisgICAgKD9iCisgICAgIChpbnNlcnQgIjwhLS0gbWFya2Rv d24tdHMtdG9jOiAtLT5cbiIKKyAgICAgICAgICAgICAiPCEtLSBtYXJrZG93bi10cy10b2MtZW5k OiAtLT5cbiIpKQorICAgICg/YworICAgICAoaW5zZXJ0ICI8IS0tIG1hcmtkb3duLXRzLXRvYzog LSotICIKKyAgICAgICAgICAgICAibWluLWRlcHRoOiAxOyAiCisgICAgICAgICAgICAgIm1heC1k ZXB0aDogbmlsOyAiCisgICAgICAgICAgICAgImNhbmRpZGF0ZXM6IChoZWFkaW5nKTsgIgorICAg ICAgICAgICAgICJmcm9tOiBiZWxvdzsgIgorICAgICAgICAgICAgICJzdHlsZTogaXRlbTsgIgor ICAgICAgICAgICAgICJpbmRlbnQ6IDE7ICIKKyAgICAgICAgICAgICAibm8tbGluazogbmlsOyAi CisgICAgICAgICAgICAgInJlbGF0aXZlLWRlcHRoOiBuaWw7ICIKKyAgICAgICAgICAgICAiaWdu b3JlOiBuaWw7ICIKKyAgICAgICAgICAgICAiLSotIC0tPlxuIgorICAgICAgICAgICAgICI8IS0t IG1hcmtkb3duLXRzLXRvYy1lbmQ6IC0tPlxuIikpCisgICAgKF8gKHVzZXItZXJyb3IgIk5vIHN1 Y2ggdGVtcGxhdGUgdHlwZTogJWMiIGNoYXIpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4g bWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlICgmb3B0aW9uYWwgaW50ZXJhY3RpdmUgYmVnIGVuZCkK KyAgIkdlbmVyYXRlIHRhYmxlcyBvZiBjb250ZW50cyBpbiB0aGUgY3VycmVudCBidWZmZXIuCitg bWFya2Rvd24tdHMtbW9kZScgdXNlcyBNYXJrZG93biBIVE1MIGNvbW1lbnQgZWxlbWVudHMgdG8g aWRlbnRpZnkgdGFibGUKK29mIGNvbnRlbnRzIChha2EgdG9jKSBpbnNlcnRpb24gYm91bmRhcmll cyBhbmQgdGhlIHBhcmFtZXRlcnMgZm9yIGVhY2gKK3RhYmxlLiAgRGVyaXZlIHRhYmxlIGNvbnRl bnQgZnJvbSB0aGUgTWFya2Rvd24gZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQKK2J1ZmZlciB3aGlj aCBhcmUgdXN1YWxseSBoZWFkaW5ncyBidXQgY2FuIGFsc28gYmUgbGlzdCBpdGVtcywgc2V0ZXh0 CitoZWFkZXJzLCBuYW1lZCBjb2RlIGJsb2Nrcy4KKworT3BlcmF0ZSBvbiB0aGUgYWN0aXZlIHJl Z2lvbiBCRUcgdG8gRU5ELCBvdGhlcndpc2Ugb3BlcmF0ZSBvbiB0aGUKK2J1ZmZlciwgd2hpY2gg bWF5IGJlIG5hcnJvd2VkLgorCitFYWNoIHRpbWUgeW91IHJ1biB0aGlzIGNvbW1hbmQsIGV4aXN0 aW5nIHRhYmxlcyBvZiBjb250ZW50cyBhcmUgY2xlYXJlZAorYW5kIHJlZnJlc2hlZCB3aXRoIG5l dyBjb250ZW50LiAgU28gZG9uJ3QgcGxhY2UgdG9jIGVsZW1lbnRzIGFyb3VuZAoraW1wb3J0YW50 IHRleHQuCisKK1RoZSBidWZmZXIgY2FuIGhhdmUgb25lIG9yIG1vcmUgdG9jcy4gIEJ5IGRlZmF1 bHQsIHBvcHVsYXRlIGVhY2ggdG9jCit3aXRoIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBi dWZmZXIgYmVsb3cgdGhlIHRvYy4gIFRoZXJlZm9yZSwgdGhlCitlYXNpZXN0IHdheSB0byBpbnNl cnQgYSBjb21wbGV0ZSB0YWJsZSBvZiBjb250ZW50cywgaXMgdG8gcHV0IHRoZSB0b2MKK3RlbXBs YXRlIG5lYXIgdGhlIHRvcCBvZiB5b3VyIGJ1ZmZlci4KKworQSBiYXNpYyBlbXB0eSB0b2MgdGVt cGxhdGUgbG9va3MgbGlrZSB0aGlzOgorCitIZWFkZXIgdGV4dCB5b3Ugd2FudCBoZXJlLgorCis8 IS0tIG1hcmtkb3duLXRzLXRvYzogLS0+CitDb250ZW50cyBpbnNlcnRlZCBiZXR3ZWVuIHRoZXNl IGVsZW1lbnRzLgorPCEtLSBtYXJrZG93bi10cy10b2MtZW5kOiAtLT4KKworRm9vdGVyIHRleHQg eW91IHdhbnQgaGVyZS4KKworVXNlIHRoZSBjb21tYW5kIGBtYXJrZG93bi10cy10b2MtaW5zZXJ0 LXRlbXBsYXRlJyB0byBpbnNlcnQgYSB0YWJsZSBvZgorY29udGVudHMgdGVtcGxhdGUuCisKK1Vz ZSB0aGUgY29tbWFuZCBgbWFya2Rvd24tdHMtdG9jLWNsZWFyJyB0byBjbGVhciB0YWJsZSBjb250 ZW50LCBhbmQgdGhlCitjb21tYW5kIGBtYXJrZG93bi10cy10b2MtY2xlYXItYW5kLXJlbW92ZScg dG8gYm90aCBjbGVhciBhbmQgcmVtb3ZlCit0YWJsZSBjb250ZW50IGFuZCB0ZW1wbGF0ZXMuCisK K0J5IGRlZmF1bHQsIGEgdG9jIGluY2x1ZGVzIGhlYWRlcnMgYXQgYWxsIGxldmVscyBiZWxvdyB0 aGUgdG9jIHdoaWNoIGFyZQorcHJlc2VudGVkIGFzIGxpc3QgaXRlbXMgd2l0aCBsaW5rcy4KKwor VG8gaWdub3JlIGEgTWFya2Rvd24gZWxlbWVudCB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBpbmNs dWRlZCBpbiB0aGUKK3RvYywgYWRkIGEgdG9jIGlnbm9yZSBlbGVtZW50OgorCisjIyBJZ25vcmUg TWUgPCEtLSBtYXJrZG93bi10cy10b2MtaWdub3JlOiAtLT4KKworVGhlIHN0YXJ0aW5nIHRvYyBl bGVtZW50IGFjY2VwdHMgcGFyYW1ldGVycyBpbiB0aGUgc3ludGF4IG9mIEVtYWNzIGZpbGUKK3Zh cmlhYmxlcy4KKworRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGdlbmVyYXRlIGEgdGFibGUg b2YgY29udGVudHMgbGltaXRlZCB0bworaGVhZGluZ3MgdHdvIGxldmVscyBkZWVwOgorCis8IS0t IG1hcmtkb3duLXRzLXRvYzogLSotIG1heC1kZXB0aDogMjsgLSotIC0tPgorPCEtLSBtYXJrZG93 bi10cy10b2MtZW5kOiAtLT4KKworT3IgdXNlIG9ubHkgaGVhZGluZ3MgdHdvIGFuZCB0aHJlZSBs ZXZlbHMgZGVlcC4KKworPCEtLSBtYXJrZG93bi10cy10b2M6IC0qLSBtaW4tZGVwdGg6IDI7IG1h eC1kZXB0aDogMzsgLSotIC0tPgorPCEtLSBtYXJrZG93bi10cy10b2MtZW5kOiAtLT4KKworVGhl c2UgYXJlIHRoZSBzdXBwb3J0ZWQgcGFyYW1ldGVycyB3aGljaCBhcmUgb3B0aW9uYWwuICBUaGV5 IGVhY2ggbGlzdAordGhlaXIgZGVmYXVsdHMuCisKKyAgbWluLWRlcHRoOiAxICAgICAgICAgIDsg YW4gaW50ZWdlcgorICBtYXgtZGVwdGg6IG5pbCAgICAgICAgOyBhbiBpbnRlZ2VyCisgIGNhbmRp ZGF0ZXM6IChoZWFkaW5nKSA7IGEgbGlzdAorICBmcm9tOiBiZWxvdyAgICAgICAgICAgOyBhIHN5 bWJvbAorICBzdHlsZTogaXRlbSAgICAgICAgICAgOyBhIHN5bWJvbAorICBpbmRlbnQ6IDEgICAg ICAgICAgICAgOyBhIG51bWJlcgorICBuby1saW5rOiBuaWwgICAgICAgICAgOyBhIGJvb2xlYW4K KyAgcmVsYXRpdmUtZGVwdGg6IG5pbCAgIDsgYSBib29sZWFuCisgIGlnbm9yZTogbmlsICAgICAg ICAgICA7IGEgYm9vbGVhbgorCitgbWluLWRlcHRoJyBhbmQgYG1heC1kZXB0aCcgYm90aCBkZWZh dWx0IHRvIHVzaW5nIGFsbCBjYW5kaWRhdGVzIGF0CitldmVyeSBsZXZlbC4gIFVzZSBgbWluLWRl cHRoJyB0byBpZ25vcmUgbGV2ZWwgMSBoZWFkaW5ncyBsaWtlIFwiIworSGVhZGluZ1wiLCBieSB1 c2luZyAyLiAgVXNlIGBtYXgtZGVwdGgnIHRvIGNvbnRyb2wgaG93IGRlZXAgaW50byB0aGUKK2hl YWRpbmcgaGllcmFyY2h5IHlvdSBuZWVkIHlvdXIgdG9jIHRvIGdvLiAgVXNlIDMgdG8gc3RvcCBh dCBsZXZlbCB0aHJlZQoraGVhZGluZ3MuCisKK0hlYWRpbmdzIGRpY3RhdGUgdGhlIGxldmVsIG9m IHRoZWlyIGNoaWxkcmVuIGV2ZW4gaWYgaGVhZGluZ3MgYXJlCitleGNsdWRlZCBmcm9tIGNhbmRp ZGF0ZXMuICBPdGhlciBlbGVtZW50IHR5cGVzIGluaGVyaXQgdGhlIGxldmVsIG9mCit0aGVpciBw cmVjZWRpbmcgaGVhZGluZy4KKworYGNhbmRpZGF0ZXMnIGlzIGEgbGlzdCBhbmQgY2FuIGNvbnRh aW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgTWFya2Rvd24KK2VsZW1lbnQgc2hvcnRjdXQgbmFtZXMu ICBZb3UgY2FuIG1peCBoaWdoZXItbGV2ZWwgZ3JvdXBpbmcgc3ltYm9scyBhbmQKK2xvd2VyIGxl dmVsIHN5bWJvbHMuCisKKyAgYWxsIChpbmNsdWRlcyBldmVyeXRoaW5nKQorICBoZWFkaW5nIChp bmNsdWRlcyB0aGUgYmVsb3cpCisgICAgaDEgaDIgaDMgaDQgaDUgaDYKKyAgc2V0ZXh0IChpbmNs dWRlcyB0aGUgYmVsb3cpCisgICAgc2gxIHNoMgorICBpdGVtIChpbmNsdWRlcyB0aGUgYmVsb3cp CisgICAgbWludXMgcGx1cyBzdGFyCisgIG51bWJlcmVkLWl0ZW0gKGluY2x1ZGVzIHRoZSBiZWxv dykKKyAgICBkb3QgcGFyZW4KKyAgY29kZSAobmFtZWQgY29kZSBibG9ja3MpCisKK2Bmcm9tJyBj b250cm9scyB0aGUgZGlyZWN0aW9uIGFuZCBzY29wZSBmcm9tIHdoaWNoIGNhbmRpZGF0ZXMgYXJl CitzZWxlY3RlZC4gIFR5cGljYWxseSwgYSB0b2MgaXMgcGxhY2VkIGF0IHRoZSBiZWdpbm5pbmcg b2YgYSBidWZmZXIgYW5kCitgZnJvbScgaXMgYGJlbG93JyB0byBjYXB0dXJlIGVudHJ5IGNhbmRp ZGF0ZXMgYWZ0ZXIgdGhlIHRvYy4gIElmIHlvdSBzZXQKK2Bmcm9tJyB0byBgYWJvdmUnLCBjYW5k aWRhdGVzIGFyZSBzZWxlY3RlZCBmcm9tIGFib3ZlIHRoZSB0b2MuICBVc2UKK2BhbGwnIHRvIGNh cHR1cmUgZXZlcnkgZW50cnkgY2FuZGlkYXRlLiAgVGhpcyBpcyB1c2VmdWwgdG8gY3JlYXRlIGEK K2NvbXBsZXRlIHRvYyBhdCB0aGUgZW5kIG9mIHlvdXIgYnVmZmVyLgorCitUaGUgYHN0eWxlJyBw YXJhbWV0ZXIgY2FuIGJlIG5pbCwgYGl0ZW0nLCBgbnVtYmVyJyBvciBgbnVtYmVyLicuICBVbmRl cgorbmlsLCBlbnRyaWVzIGhhdmUgbm8gZGVjb3JhdGlvbnMuICBJZiBgaXRlbScsIGVudHJpZXMg YXJlIHByZWZpeGVkIHdpdGgKK1wiLVwiLiAgSWYgYGJ1bGxldCcsIHByZWZpeCB3aXRoIFwiKlwi LiAgSWYgYG51bWJlcicsIG51bWVyaWMgcHJlZml4ZXMKK2FyZSBnZW5lcmF0ZWQsIGZvciBleGFt cGxlIDEsIDEuMSwgMiwgMi4xLCAyLjEuMSwgMi4xLjIuICBVc2UgYG51bWJlci4nCit0byBhZGQg YSBwZXJpb2QgdG8gZWFjaCBlbnRyeSdzIG51bWJlci4KKworYGluZGVudCcgaXMgYW4gaW50ZWdl ciBiZXR3ZWVuIDAgYW5kIDEwLiAgMCBtZWFucyBub3RoaW5nIHNob3VsZCBiZQoraW5kZW50ZWQu ICBPdGhlcndpc2UsIGVhY2ggZW50cnkgaXMgaW5kZW50ZWQgYnkgdGhlIG51bWJlciBvZiBzcGFj ZXMgb2YKK2l0cyBNYXJrZG93biBsZXZlbCBtdWx0aXBsaWVkIGJ5IHRoaXMgdmFsdWUuICBDYW5k aWRhdGVzIHRoYXQgaGF2ZSBubworbmF0aXZlIGxldmVsIHN1Y2ggYXMgbGlzdCBpdGVtcyBpbmhl cml0IHRoZSBiYXNlIGluZGVudGF0aW9uIGxldmVsIG9mCitpdHMgcHJlY2VkaW5nIGhlYWRlci4g IExpc3QgaXRlbSBoaWVyYXJjaGllcyBhbmQgY29kZSBibG9ja3MgaW5kZW50Cit1bmRlciB0aGF0 IGJhc2UuCisKK1NldCBgbm8tbGluaycgdG8gdCBpZiB5b3UgZG8gbm90IHdhbnQgeW91ciBlbnRy aWVzIHRvIGhhdmUgaGVhZGVyIGxpbmtzLgorQnkgZGVmYXVsdCwgZWFjaCBlbnRyeSBkZXJpdmVk IGZyb20gYSBoZWFkaW5nIGlzIHByZXNlbnRlZCBhcyBhIGxpbmsgdG8KK2l0cyBzb3VyY2UgaGVh ZGluZy4gIE5PVEU6IFRoZSBlbGVtZW50cyByZXByZXNlbnRlZCBieSBgc2V0ZXh0JywgYGl0ZW0n LAorYG51bWJlcmVkLWl0ZW0nLCBgY29kZScgZG8gbm90IHN1cHBvcnQgbGlua3MuCisKK1VzZSBg cmVsYXRpdmUtZGVwdGgnIHRvIGNyZWF0ZSBhIHRvYyB1bmRlcm5lYXRoIGEgaGVhZGluZywgbGlt aXRpbmcgdGhlCit0b2MgdG8gaGVhZGluZyBkZXB0aHMgdW5kZXJuZWF0aCB0aGUgcHJlY2VkaW5n IGhlYWRlciBhbmQgc3BlY2lmeSB0aGUKK2xldmVscyByZWxhdGl2ZSB0byB0aGF0IGhlYWRlci4g IE1vcmUgY29uY3JldGVseSwgaWYgdGhlIHByZWNlZGluZworaGVhZGVyIGlzIGEgbGV2ZWwgMSBc IiNcIiBoZWFkZXIsIGBtaW4tZGVwdGgnIDEgYW5kIGBtYXgtZGVwdGgnIDIgd2lsbAorYmUgaW50 ZXJwcmV0ZWQgdG8gYmUgMiBhbmQgMy4gIElmIHlvdSBkZW1vdGUgdGhlIGhlYWRlciB0byBsZXZl bCAyCitcIiMjXCIgdGhleSB3aWxsIGJlIGludGVycHJldGVkIGFzIDMgYW5kIDQuICBUaGlzIGlz IHVzZWZ1bCB0byBhdm9pZAorZnVzc2luZyB3aXRoIHRvYyBjb25maWd1cmF0aW9ucyB1bmRlciBo ZWFkZXJzIHdoZW4geW91IGNoYW5nZSB0aGVpcgorbGV2ZWxzLgorCitGb3IgZXhhbXBsZToKKwor PCEtLSBtYXJrZG93bi10cy10b2M6IC0qLSByZWxhdGl2ZS1kZXB0aDogdDsgbWluLWRlcHRoOiAx OyBtYXgtZGVwdGg6IDI7IC0qLSAtLT4KKzwhLS0gbWFya2Rvd24tdHMtdG9jLWVuZDogLS0+CisK K0ZpbmFsbHksIGlmIGBpZ25vcmUnIGlzIHQsIHlvdSBjYW4ga2VlcCBhIHRvYyBlbGVtZW50IGlu IHBsYWNlIGFuZCBza2lwCitpdC4KKworSU5URVJBQ1RJVkUgd2lsbCBiZSBub24tbmlsIGlmIHRo aXMgY29tbWFuZCB3YXMgaW52b2tlZCBpbnRlcmFjdGl2ZWx5LgorCitTZWUgYG1hcmtkb3duLXRz LXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUnIHRvIGNvbmZpZ3VyZSB3YXJuaW5ncyBhYm91dAor dGFibGVzIG5vdCBiZWluZyBwcm9jZXNzZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4i CisgIChpbnRlcmFjdGl2ZSAicFxuUiIpCisgIDs7IE5PVEU6IElmIHBhcmFtZXRlcnMgb3IgdGhl aXIgZGVmYXVsdHMgY2hhbmdlLCBiZSBzdXJlIHRvIG1pcnJvcgorICA7OyB0aGVtIGluIGBtYXJr ZG93bi10cy10b2MtaW5zZXJ0LXRlbXBsYXRlJy4KKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5v dC1tb2RlICdtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUpCisgIChzZXRxIGJlZyAob3IgYmVnIChw b2ludC1taW4pKSkKKyAgKHNldHEgZW5kIChvciBlbmQgKHBvaW50LW1heCkpKQorICAodW5sZXNz IChlcSBiZWcgZW5kKQorICAgIDs7IENvbnZlcnQgbWFya2VycyB0byBhYnNvbHV0ZSBwb3NpdGlv bnMuCisgICAgKHNldHEgYmVnIChpZiAobWFya2VycCBiZWcpIChtYXJrZXItcG9zaXRpb24gYmVn KSBiZWcpKQorICAgIChzZXRxIGVuZCAoaWYgKG1hcmtlcnAgZW5kKSAobWFya2VyLXBvc2l0aW9u IGVuZCkgZW5kKSkKKyAgICA7OyBOT1RFOiBPcGVyYXRlIG9uIHRoZSB3aWRlbmVkIGJ1ZmZlciB0 byBhdm9pZCB0cmVlc2l0ZXIgY3Jhc2ggaXNzdWVzLgorICAgICh3aXRob3V0LXJlc3RyaWN0aW9u CisgICAgICAobGV0ICgodG9jcyAobWFya2Rvd24tdHMtLXRvY3MgYmVnIGVuZCkpKQorICAgICAg ICAodW5sZXNzIHRvY3MKKyAgICAgICAgICAoaWYgKGFuZCBpbnRlcmFjdGl2ZQorICAgICAgICAg ICAgICAgICAgIChlcSAnaW5zZXJ0LXRlbXBsYXRlIG1hcmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13 YXJuLWlmLW5vbmUpKQorICAgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAobWFy a2Rvd24tdHMtdG9jLWluc2VydC10ZW1wbGF0ZSkKKyAgICAgICAgICAgICAgICA7OyBJZiB0aGUg dXNlciBkaWRuJ3QgcXVpdCB0aGUgcHJvbXB0LCBhIHRlbXBsYXRlIG1heSBoYXZlCisgICAgICAg ICAgICAgICAgOzsgYmVlbiBhZGRlZCwgc28gcmVzY2FuIHRoZSBidWZmZXIuCisgICAgICAgICAg ICAgICAgKHNldHEgdG9jcyAobWFya2Rvd24tdHMtLXRvY3MpKSkKKyAgICAgICAgICAgICh3aGVu IChlcSAnbm8tdGFibGVzIG1hcmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUpCisg ICAgICAgICAgICAgIChsd2FybiAnbWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlCisgICAgICAgICAg ICAgICAgICAgICA6d2FybmluZworICAgICAgICAgICAgICAgICAgICAgIk5vIHRhYmxlcyBvZiBj b250ZW50cyBmb3VuZCBpbiAlcy4iCisgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLW5hbWUg KGN1cnJlbnQtYnVmZmVyKSkpKSkpCisgICAgICAgIChtYXJrZG93bi10cy0tdG9jcy1zYW5pdHkt Y2hlY2sgdG9jcykKKworICAgICAgICA7OyBTdHJhdGVneSBpcyBwcm9jZXNzIG9uZSB0b2MgYXQg YSB0aW1lIGZyb20gdGhlIHRvcCB0byB0aGUKKyAgICAgICAgOzsgYm90dG9tIG9mIHRoZSByYW5n ZSBCRUcgRU5ELiAgU3Vic2VxdWVudCB0b2MgYW5kIGVudHJ5CisgICAgICAgIDs7IGNhbmRpZGF0 ZSBub2RlIHBvc2l0aW9ucyBjaGFuZ2UgYXMgd2UgdXBkYXRlIGVhY2ggdG9jIHRleHQgc28KKyAg ICAgICAgOzsgd2UgaGF2ZSB0byByZXRyaWV2ZSB0aGVtIGZyZXNoIGZyb20gdGhlIGVuZCBvZiB0 aGUgbW9zdCByZWNlbnQKKyAgICAgICAgOzsgdG9jLgorICAgICAgICAobGV0ICgodG9jcykKKyAg ICAgICAgICAgICAgKG51bS10b2NzLXByb2Nlc3NlZCAwKQorICAgICAgICAgICAgICAodG9jKQor ICAgICAgICAgICAgICAodG9jLWVuZCkKKyAgICAgICAgICAgICAgKHRvYy1zaXplKQorICAgICAg ICAgICAgICA7OyBUaGVzZSBhcmUgYWRqdXN0ZWQgYnkgdGhlIHNpemUgb2YgaW5zZXJ0ZWQgdGV4 dCBlYWNoIHBhc3MuCisgICAgICAgICAgICAgIChiZWctcG9zIGJlZykKKyAgICAgICAgICAgICAg KGVuZC1wb3MgZW5kKQorICAgICAgICAgICAgICAoc291cmNlLWJ1ZmZlciAoY3VycmVudC1idWZm ZXIpKSkKKyAgICAgICAgICA7OyBGaW5kIGVhY2ggIm1hcmtkb3duLXRzLXRvYyIgaW4gc3VjY2Vz c2lvbiBzdGFydGluZyBhdCB0aGUgZW5kCisgICAgICAgICAgOzsgb2YgZWFjaCBwcmV2aW91cyBv bmUgd2UgZmluZCB3aXRoaW4gdGhlIHJlcXVlc3RlZCByZWdpb24uCisgICAgICAgICAgKHdoaWxl IChhbmQgKDwgYmVnLXBvcyBlbmQtcG9zKQorICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRv Y3MgKG1hcmtkb3duLXRzLS10b2NzIGJlZy1wb3MgZW5kLXBvcykpKQorICAgICAgICAgICAgKHNl dHEgdG9jIChjYXIgdG9jcykpCisgICAgICAgICAgICAoc2V0cSB0b2Mtc2l6ZSAwKQorCisgICAg ICAgICAgICAod2hlbiAoZXF1YWwgIm1hcmtkb3duLXRzLXRvYyIgKGNhciB0b2MpKQorICAgICAg ICAgICAgICA7OyBBZnRlciBzYW5pdHkgY2hlY2tpbmcsIHdlIGtub3cgdGhlIHNlY29uZCBlbGVt ZW50IGlzIGEKKyAgICAgICAgICAgICAgOzsgdG9jLWVuZC4KKyAgICAgICAgICAgICAgKHNldHEg dG9jLWVuZCAobnRoIDEgdG9jcykpCisgICAgICAgICAgICAgIChsZXQqICgodG9jLW5vZGUgKGFs aXN0LWdldCAnbm9kZSB0b2MpKQorICAgICAgICAgICAgICAgICAgICAgKHRvYy12YXJzIChhbGlz dC1nZXQgJ3ZhcnMgdG9jKSkKKyAgICAgICAgICAgICAgICAgICAgICh0b2MtaWdub3JlIChhbGlz dC1nZXQgJ2lnbm9yZSB0b2MtdmFycykpKQorICAgICAgICAgICAgICAgICh1bmxlc3MgdG9jLWln bm9yZQorICAgICAgICAgICAgICAgICAgOzsgQnVpbGQgdGhlIHRvYyBvbmUgY2FuZGlkYXRlIGF0 IGEgdGltZSwgdHJhY2tpbmcKKyAgICAgICAgICAgICAgICAgIDs7IGluZGVudGF0aW9uIGFuZCBj cmVhdGluZyBsaW5rcyBpZiBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAobGV0KiAoKHRvYy1l bmQtbm9kZSAoYWxpc3QtZ2V0ICdub2RlIHRvYy1lbmQpKQorICAgICAgICAgICAgICAgICAgICAg ICAgIChyZWctYmVnICh0cmVlc2l0LW5vZGUtZW5kIHRvYy1ub2RlKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAocmVnLWVuZCAodHJlZXNpdC1ub2RlLXN0YXJ0IHRvYy1lbmQtbm9kZSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1oYW5kbGVzIChtYXJrZG93bi10cy0tdG9jLWV4 cGFuZC1jYW5kaWRhdGUtaGFuZGxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG9yIChjZHItc2FmZSAoYXNzcSAnY2FuZGlkYXRlcyB0b2MtdmFycykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRpbmcpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBOb3cgYWRkIGhlYWRpbmdzIHRvIGFsd2F5cyByZXRyaWV2ZSBh bmQgZGVyaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgOzsgbGV2ZWxzIGV2ZW4gaWYgdGhl eSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgdG9jLgorICAgICAgICAgICAgICAgICAgICAgICAgIChz ZWVkLWhhbmRsZXMgKGNvcHktdHJlZSB0b2MtaGFuZGxlcykpCisgICAgICAgICAgICAgICAgICAg ICAgICAgKF8gKGRvbGlzdCAoZWx0IChhbGlzdC1nZXQgJ2hlYWRpbmcgbWFya2Rvd24tdHMtLXRv Yy1oYW5kbGVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1wdXNobmV3IGVs dCBzZWVkLWhhbmRsZXMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodG9jLWZyb20gKG9y IChjZHItc2FmZSAoYXNzcSAnZnJvbSB0b2MtdmFycykpICdiZWxvdykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKHRvYy1zdHlsZSAob3IgKGNkci1zYWZlIChhc3NxICdzdHlsZSB0b2MtdmFy cykpICdpdGVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodG9jLW5vLWxpbmsgKGFsaXN0 LWdldCAnbm8tbGluayB0b2MtdmFycykpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1p bmRlbnQgKG1pbiAxMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1heCAwIChvciAoY2RyLXNhZmUgKGFzc3EgJ2luZGVudCB0b2MtdmFycykpIDEpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKHRvYy1taW4tZGVwdGggKG1heCAxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGNkci1zYWZlIChhc3NxICdtaW4t ZGVwdGggdG9jLXZhcnMpKSAxKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1tYXgt ZGVwdGggKG1heCB0b2MtbWluLWRlcHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAob3IgKGNkci1zYWZlIChhc3NxICdtYXgtZGVwdGggdG9jLXZhcnMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vc3QtcG9z aXRpdmUtZml4bnVtKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1yZWxhdGl2ZS1k ZXB0aCAoY2RyLXNhZmUgKGFzc3EgJ3JlbGF0aXZlLWRlcHRoIHRvYy12YXJzKSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgKHRvYy1jYW5kaWRhdGVzIChtYXJrZG93bi10cy0tdG9jLWNvbGxl Y3QtY2FuZGlkYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dG9jLW5vZGUgdG9jLWVuZC1ub2RlIHNlZWQtaGFuZGxlcyB0b2MtZnJvbSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgKHRvYy1yZWxhdGl2ZS1oZWFkaW5nLWRlcHRoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICgxKyAob3IgKHNlcS1wb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnKCJhdHhfaDFfbWFya2VyIiAiYXR4X2gyX21hcmtlciIgImF0eF9oM19t YXJrZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0eF9oNF9tYXJr ZXIiICJhdHhfaDVfbWFya2VyIiAiYXR4X2g2X21hcmtlciIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdHlwZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRvYy1ub2RlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJhdHhfaGVhZGluZyIgJ2JhY2t3YXJkKSAwICduYW1lZCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnZXF1YWwpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLTEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2x1Zy10by1w b3MgKG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkcykpCisgICAgICAgICAgICAgICAgICAgICAgICAg KHBvcy10by1zbHVnCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChodCAobWFrZS1o YXNoLXRhYmxlIDpzaXplIChoYXNoLXRhYmxlLWNvdW50IHNsdWctdG8tcG9zKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dGVzdCAjJ2VxdWFs KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGhhc2ggKGxhbWJkYSAoayB2KSAo cHV0aGFzaCB2IGsgaHQpKSBzbHVnLXRvLXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBodCkpKQorCisgICAgICAgICAgICAgICAgICAgICh3aXRoLXdvcmstYnVmZmVyCisgICAgICAg ICAgICAgICAgICAgICAgKGluc2VydCAiPCEtLSBOT1RFOiBtYXJrZG93bi10cy10b2MgZ2VuZXJh dGVkIHRleHQgc2VjdGlvbiBtYXkgYmUgb3ZlcndyaXR0ZW4uIC0tPlxuIikKKyAgICAgICAgICAg ICAgICAgICAgICAobGV0ICgoaGFuZGxlKSAoaGFuZGxlLWNsYXNzKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmRlbnQg MCkgKGxldmVsIDEpIChsZXZlbC1wcmV2IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgSGVhZGluZyBsZXZlbCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgaXRlbXMgdW5kZXIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBpdC4gIElmIHRoZXJlIGFyZSBubyBoZWFkaW5ncywg aXQgd2lsbCByZW1haW4gMS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV2ZWwtaGVh ZGluZyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IEFkanVzdCBmb3Igbm9uIGhl YWRpbmdzIHVuZGVyIGhlYWRpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudW1i ZXItc3RhY2spKQorCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBDYW5kaWRhdGVzIHNob3Vs ZCBiZSBpbiBidWZmZXIgb3JkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAoZG9saXN0IChj YW5kaWRhdGUgdG9jLWNhbmRpZGF0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQg KChzbHVnLXBvcykgKHRleHQpIChsaW5rLXRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxldmVsLWFkaiAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBoYW5kbGUgKGNhciBjYW5kaWRhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGFuZGxlLWNsYXNzIChhbGlzdC1nZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhhbmRsZSBtYXJrZG93bi10cy0tdG9jLWhhbmRsZS1jbGFzc2Vz KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBub2RlIChjZHIgY2FuZGlkYXRl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzbHVnLXBvcyBuaWwpCisKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTdHJpcCB0cmFpbGluZyBuZXdsaW5lcy4gIEFk ZCB0aGVtIGNvbnNpc3RlbnRseSBiZWxvdy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c2V0cSB0ZXh0IChzdHJpbmctdHJpbS1yaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXJrZG93bi10cy0tdG9jLXRleHQtbm9ybWFsaXplCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSBub2RlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlICduby1w cm9wZXJ0eSkpKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IENhbmRpZGF0ZSBu b2RlIHR5cGUgbG9naWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlIGhhbmRs ZS1jbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdoZWFkaW5nCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHggKHNlcS1wb3NpdGlvbiAnKGgxIGgyIGgz IGg0IGg1IGg2KSBoYW5kbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXRxIHNsdWctcG9zICh0cmVlc2l0LW5vZGUtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1zZWFyY2gtZm9yd2FyZCBub2RlICJh dHhfaGVhZGluZyIgJ2JhY2t3YXJkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBsZXZlbCAoc2V0cSBsZXZlbC1oZWFkaW5nICgxKyB4KSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbC1hZGogMCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGluZGVudCAoMS0gbGV2ZWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGluay10YXJnZXQgdGV4dCkpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCdzZXRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobGV0ICgoeCAoc2VxLXBvc2l0aW9uICcoc2gxIHNoMikgaGFuZGxlKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbCAoMSsgeCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbC1hZGogMCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGluZGVudCAoMS0gbGV2ZWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGluay10YXJnZXQgbmlsKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKG9yICdpdGVtICdudW1iZXJlZC1pdGVtKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIGxldmVsIGxldmVsLWhlYWRpbmcpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwtYWRqIChtYXJrZG93bi10cy0tdG9jLWxp c3QtaXRlbS1kZXB0aCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBpbmRlbnQgKDEtICAoKyBsZXZlbCBsZXZlbC1hZGopKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0cSBsaW5rLXRhcmdldCBuaWwpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCdjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSW5oZXJp dCB0aGUgYW1iaWVudCBsZXZlbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBsZXZlbC1hZGogMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBpbmRl bnQgKDEtICAoKyBsZXZlbCBsZXZlbC1hZGopKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBsaW5rLXRhcmdldCBuaWwpKSkKKworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IEZpbHRlciBkZXNpcmVkIGhhbmRsZXMgYW5kIGxldmVscy4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hlbiAoYW5kIChtZW1xIGhhbmRsZSB0b2MtaGFuZGxlcykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg+PSBsZXZlbCAoKyB0b2MtbWluLWRl cHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIHRvYy1yZWxhdGl2ZS1kZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0b2MtcmVsYXRpdmUtaGVhZGluZy1kZXB0aCAwKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPD0gbGV2ZWwgKCsgdG9jLW1h eC1kZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiB0b2MtcmVsYXRpdmUtZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9jLXJlbGF0aXZlLWhlYWRpbmctZGVwdGggMCkp KSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQ3JlYXRlIHRoZSBlbnRyeSB3 aXRoIGluZGVudCwgaXRlbS9udW1iZXIgcHJlZml4LCBsaW5rLgorCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBDb3JuZXIgY2FzZTogaW5pdGlhbCBsZXZlbCBoaWdoZXIgdGhhbiAx LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoPiBsZXZlbCAxKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgbGV2ZWwtcHJldiAw KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwgMSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIChub3QgdG9jLW5vLWxpbmspIGxp bmstdGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTYW5pdGl6ZSB0 aGUgaWQgdG8gY29uZm9ybSB0byBDU1MgaWRlbnQgc3ludGF4LgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2V0cSB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChmb3JtYXQgIlslc10oIyVzKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmLWxldCogKChzbHVnIChnZXRoYXNoIHNsdWctcG9zIHBvcy10by1zbHVn KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs dWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5j YWxsIG1hcmtkb3duLXRzLXRvYy1zbHVnLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLXRhcmdldCkpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyAoKiAoMS0gKG1h eCBpbmRlbnQgMSkpIHRvYy1pbmRlbnQpID9ccykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBjYXNlIHRvYy1zdHlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgnaXRlbSAiLSAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgnYnVsbGV0ICIqICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKChvciAnbnVtYmVyICdudW1iZXIuKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobGV0ICgobGV2ZWwgKCsgbGV2ZWwgbGV2ZWwtYWRqKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChvciAobm90IG51 bWJlci1zdGFjaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICg+IGxldmVsIChjYWFyIG51bWJlci1zdGFjaykpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBgKCxsZXZlbCAuIDApIG51 bWJlci1zdGFjaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChhbmQgbnVtYmVyLXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKDwgbGV2ZWwgKGNhYXIgbnVtYmVyLXN0YWNrKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGlsZSAo YW5kIG51bWJlci1zdGFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoPCBsZXZlbCAoY2FhciBudW1iZXItc3RhY2spKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9wIG51 bWJlci1zdGFjaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1bmxlc3MgbnVtYmVyLXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggYCgsbGV2ZWwgLiAwKSBudW1iZXItc3RhY2sp KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0Y2RyIChj YXIgbnVtYmVyLXN0YWNrKSAoMSsgKGNkYXIgbnVtYmVyLXN0YWNrKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChzKSAobiAobGVuZ3RoIG51bWJlci1z dGFjaykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEt bWFwLWluZGV4ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGxhbWJkYSAoZWx0IGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbmNhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChmb3JtYXQgIiVkIiAoY2RyIGVsdCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgKDErIGlkeCkgbikg IiIgIi4iKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cmV2ZXJzZSBudW1iZXItc3RhY2spKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjb25jYXQgcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHdoZW4gKGVxIHRvYy1zdHlsZSAnbnVtYmVyLikgIi4iKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgIikpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfICIiKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBBZGQgYSBoYXJkIGxpbmUgYnJlYWsuICBCYWNrc2xhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgc2VlbXMgbGVzcyB3ZWxsIHN1cHBv cnRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyByZW5kZXJl cnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXN0cmluZyAy ID9ccykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwtcHJldiBsZXZlbCkpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAoc2V0cSB0b2Mtc2l6ZSAoYnVmZmVyLXNpemUpKQorICAgICAgICAg ICAgICAgICAgICAgIChsZXQgKCh0ZW1wLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHNvdXJjZS1idWZmZXIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIHJlZy1iZWcg cmVnLWVuZCB0ZW1wLWJ1ZmZlcikpKSkpCisgICAgICAgICAgICAgICAgICAoc2V0cSBudW0tdG9j cy1wcm9jZXNzZWQgKDErIG51bS10b2NzLXByb2Nlc3NlZCkpKSkpCisgICAgICAgICAgICA7OyBT dGFydCB0aGUgbmV4dCBwYXNzIGFmdGVyIHRoaXMgdG9jLWVuZC4gIEFkanVzdCBmb3IgdGhlCisg ICAgICAgICAgICA7OyBpbnNlcnRlZCB0ZXh0IHNpemUuCisgICAgICAgICAgICAoc2V0cSBiZWct cG9zICgrIChhbGlzdC1nZXQgJ2VuZCB0b2MtZW5kKSB0b2Mtc2l6ZSkpCisgICAgICAgICAgICAo c2V0cSBlbmQtcG9zIChtaW4gKHBvaW50LW1heCkgKCsgZW5kLXBvcyB0b2Mtc2l6ZSkpKSkKKyAg ICAgICAgICAod2hlbiAoYW5kIChlcSBudW0tdG9jcy1wcm9jZXNzZWQgMCkKKyAgICAgICAgICAg ICAgICAgICAgIChlcSAnbm8tYWN0aXZlLXRhYmxlcyBtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUt d2Fybi1pZi1ub25lKSkKKyAgICAgICAgICAgIChsd2FybiAnbWFya2Rvd24tdHMtdG9jLWdlbmVy YXRlCisgICAgICAgICAgICAgICAgICAgOndhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAiTm8g dGFibGVzIG9mIGNvbnRlbnRzIGdlbmVyYXRlZCBpbiAlcy4iCisgICAgICAgICAgICAgICAgICAg KGJ1ZmZlci1uYW1lIChjdXJyZW50LWJ1ZmZlcikpKSkpKSkpKQorCisocHJvdmlkZSAnbWFya2Rv d24tdHMtbW9kZS14KQorOzs7IG1hcmtkb3duLXRzLW1vZGUteC5lbCBlbmRzIGhlcmUKZGlmZiAt LWdpdCBhL2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUuZWwgYi9saXNwL3RleHRtb2Rl cy9tYXJrZG93bi10cy1tb2RlLmVsCmluZGV4IDY1N2Q2YmM0NjZkLi4wMTU5OGEyMGY3YyAxMDA2 NDQKLS0tIGEvbGlzcC90ZXh0bW9kZXMvbWFya2Rvd24tdHMtbW9kZS5lbAorKysgYi9saXNwL3Rl eHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsCkBAIC0xLDExICsxLDE0IEBACi07OzsgbWFya2Rv d24tdHMtbW9kZS5lbCAtLS0gdHJlZSBzaXR0ZXIgc3VwcG9ydCBmb3IgTWFya2Rvd24gIC0qLSBs ZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQorOzs7IG1hcmtkb3duLXRzLW1vZGUuZWwgLS0tIHRyZWUg c2l0dGVyIHN1cHBvcnQgZm9yIE1hcmtkb3duIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQog CiA7OyBDb3B5cmlnaHQgKEMpIDIwMjQtMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KIAotOzsgQXV0aG9yICAgICA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRv QGdtYWlsLmNvbT4KLTs7IE1haW50YWluZXIgOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwu anVsaWF0b0BnbWFpbC5jb20+Ci07OyBDcmVhdGVkICAgIDogQXByaWwgMjAyNAotOzsgS2V5d29y ZHMgICA6IG1hcmtkb3duIG1kIGxhbmd1YWdlcyB0cmVlLXNpdHRlcgorOzsgQXV0aG9yICAgICAg ICAgICA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRvQGdtYWlsLmNvbT4KKzs7 ICAgICAgICAgICAgICAgICAgOiBTdMOpcGhhbmUgTWFya3MgPHNoaXBtaW50c0BnbWFpbC5jb20+ Cis7OyBNYWludGFpbmVyICAgICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1bGlh dG9AZ21haWwuY29tPgorOzsgQ3JlYXRlZCAgICAgICAgICA6IEFwcmlsIDIwMjQKKzs7IFZlcnNp b24gICAgICAgICAgOiAxLjAKKzs7IFBhY2thZ2UtUmVxdWlyZXMgOiAoKGVtYWNzICIzMS4xIikp Cis7OyBLZXl3b3JkcyAgICAgICAgIDogbWFya2Rvd24gbWQgdGV4dCBlZGl0IGxhbmd1YWdlcyB0 cmVlLXNpdHRlcgogCiA7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCiAKQEAgLTIy LDEzOCArMjUsNzM4IEBACiA7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCi07OzsgVHJlZS1z aXR0ZXIgbGFuZ3VhZ2UgdmVyc2lvbnMKKzs7OyBDb21tZW50YXJ5OgorCis7Ozs7IFRyZWUtc2l0 dGVyIExhbmd1YWdlIFZlcnNpb25zCiA7OwogOzsgbWFya2Rvd24tdHMtbW9kZSBoYXMgYmVlbiB0 ZXN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGdyYW1tYXJzIGFuZCB2ZXJzaW9uOgogOzsgLSB0cmVl LXNpdHRlci1tYXJrZG93bjogdjAuNC4xCiA7OyAtIHRyZWUtc2l0dGVyLW1hcmtkb3duLWlubGlu ZTogdjAuNC4xCiA7OwotOzsgV2UgdHJ5IG91ciBiZXN0IHRvIG1ha2UgYnVpbHRpbiBtb2RlcyB3 b3JrIHdpdGggbGF0ZXN0IGdyYW1tYXIKLTs7IHZlcnNpb25zLCBzbyBhIG1vcmUgcmVjZW50IGdy YW1tYXIgaGFzIGEgZ29vZCBjaGFuY2UgdG8gd29yayB0b28uCi07OyBTZW5kIHVzIGEgYnVnIHJl cG9ydCBpZiBpdCBkb2Vzbid0LgotCi07OzsgQ29tbWVudGFyeToKKzs7IFdlIHRyeSBvdXIgYmVz dCB0byBtYWtlIGJ1aWx0LWluIG1vZGVzIHdvcmsgd2l0aCBsYXRlc3QgZ3JhbW1hcgorOzsgdmVy c2lvbnMsIHNvIGEgbW9yZSByZWNlbnQgZ3JhbW1hciBoYXMgYSBnb29kIGNoYW5jZSB0byB3b3Jr LiAgU2VuZAorOzsgdXMgYSBidWcgcmVwb3J0IGlmIGl0IGRvZXNuJ3QuCis7OworOzsgQmlkaXJl Y3Rpb25hbCBUZXh0IENvbnNpZGVyYXRpb25zCis7OworOzsgVGV4dCB3aXRoIG1hcmt1cCBtYXkg bmVlZCBhbiBleHRyYSBuZXdsaW5lIGJlZm9yZSBiaWRpcmVjdGlvbmFsIHRleHQKKzs7IGZvciBp dCB0byBzaG93IGNvcnJlY3RseS4gIFRoaXMgaXMgYSBsaW1pdGF0aW9uIGluIHRoZSBFbWFjcyBk aXNwbGF5Cis7OyBlbmdpbmUuCis7OworOzsgQ29kZSBCbG9jayBMYW5ndWFnZSBNb2RlIENvbnNp ZGVyYXRpb25zCis7OworOzsgRmVuY2VkIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMgYXJlIGRl cml2ZWQgZnJvbSB0aGUgdGFibGUKKzs7IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzJyBh bmQgaGV1cmlzdGljcyBhZGRpbmcgIi10cy1tb2RlIiBhbmQKKzs7ICItbW9kZSIgdG8gdGhlIGxh bmd1YWdlIG5hbWUuICBJZiB5b3VyIGxhbmd1YWdlJ3MgbW9kZSBpcyBub3QKKzs7IHByb3Blcmx5 IHJlY29nbml6ZWQsIGFkZCBpdCB0byBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcycsIHdo aWNoCis7OyBzZWUuCis7OworOzsgRWFjaCBsYW5ndWFnZSdzIG1ham9yIG1vZGUgaXMgZW5hYmxl ZCBvbmNlIHBlciBgbWFya2Rvd24tdHMtbW9kZScKKzs7IGJ1ZmZlciBpbiBhIHRlbXBvcmFyeSBi dWZmZXIgdG8gZXh0cmFjdCBpdHMgZGVmYXVsdCBmb250LWxvY2sgYW5kCis7OyB0cmVlLXNpdHRl ciBzZXR0aW5ncy4gIEluIGNvbnZlbnRpb25hbCBub24tdHJlZXNpdCBjb2RlIGJsb2NrcywgdGhl Cis7OyBtYWpvciBtb2RlIGlzIGVuYWJsZWQgZWFjaCB0aW1lIHRoZSBibG9jayBpcyBmb250aWZp ZWQuCis7OworOzsgTk9URTogTWFqb3IgbW9kZSBob29rcyBhcmUgbm90IHJ1biBhbmQgZm9udC1s b2NrLCB0cmVlc2l0LCBpbmRlbnQsCis7OyBjb21tZW50IHJlY29nbml0aW9uLCBldGMuIGN1c3Rv bWl6YXRpb25zIHRoYXQgeW91IG1pZ2h0IGhhdmUgaW4geW91cgorOzsgaG9va3MgYXJlIG5vdCBh cHBsaWVkLiAgQXMgYSByZXN1bHQsIHlvdXIgY29kZSBibG9ja3MgbWlnaHQgYXBwZWFyCis7OyBk aWZmZXJlbnQgaW4gYG1hcmtkb3duLXRzLW1vZGUnIG1vZGUgdGhhbiBpbiBuYXRpdmUgbWFqb3Ig bW9kZQorOzsgYnVmZmVycy4gIE5vdCBydW5uaW5nIGhvb2tzIGF2b2lkcyB0aGUgY29zdCBvZiBl YWNoIG1vZGUgaG9vayBhbmQKKzs7IGF2b2lkcyBwb3RlbnRpYWwgcmVjdXJzaXZlIHRyZWVzaXQg Y2FsbGJhY2sgaXNzdWVzLgorOzsKKzs7OzsgQ29kZSBCbG9jayBDb21tYW5kcworOzsKKzs7IFNv bWUgY29tbW9uIGNvbW1hbmRzIHdpbGwgb3BlcmF0ZSB3aXRoaW4gYSBjb2RlIGJsb2NrIGFuZCBp biBpdHMKKzs7IG1vZGUuICBUaGVzZSBvcGVyYXRlIGluIGFuIGluZGlyZWN0IGJ1ZmZlciBhbmQg c29tZSBjb21tYW5kcyBtYXkKKzs7IG9wZXJhdGUgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdG8gdGhl IHNhbWUgY29tbWFuZHMgaW52b2tlZCBpbiBhIG5hdGl2ZQorOzsgbW9kZSBidWZmZXIuICBgaW5k ZW50LWZvci10YWItY29tbWFuZCcgbWF5IGludm9rZQorOzsgYGNvbXBsZXRpb24tYXQtcG9pbnQn IHVuZGVyIHRoZSBjb3ZlcnMgYW5kIG1heSByZXR1cm4gcmVzdWx0cyBmcm9tCis7OyB0aGUgc3Vy cm91bmRpbmcgTWFya2Rvd24gYnVmZmVyIGluc3RlYWQgb2YgdGhlIGNvZGUgYmxvY2sncyBjb250 ZXh0LgorOzsgWW91IGNhbiBpbnZva2UgYGNvbXBsZXRpb24tYXQtcG9pbnQnIGRpcmVjdGx5IGJ5 IHVzaW5nIGl0cyBrZXkKKzs7IGJpbmRpbmcsIGBDLU0taWAuCis7OworOzs7OyBQaXBlIFRhYmxl cworOzsKKzs7IFRoZXNlIGFyZSBhIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biAoR0ZNKSBleHRl bnNpb24gYW5kIGFyZSBhIGRlCis7OyBmYWN0byBzdGFuZGFyZCBnaXZlbiB0aGVpciBwb3B1bGFy aXR5IGFuZCBpbXBsZW1lbnRhdGlvbnMgYWNyb3NzCis7OyBwcm9kdWN0cy4gIFRoZXkgbWlnaHQg YXMgd2VsbCBiZSBmb2xkZWQgaW50byB0aGUgQ29tbW9uTWFyayBzdGFuZGFyZC4KKzs7Cis7OyBB IHBpcGUgdGFibGUgaXMgYSByZWN0YW5nbGUgb2YgdGV4dCBzdXJyb3VuZGVkIHRvIHRoZSBlYXN0 IGFuZCB3ZXN0Cis7OyBieSBwaXBlIHN5bWJvbHMgYW5kIHdoZXJlIHBpcGVzIHNlcGFyYXRlIGNv bHVtbnMuICBJdCBoYXMgYSBoZWFkZXIKKzs7IHJvdyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBo ZWFkZXIgYWxpZ25tZW50IHJvdywgYm90aCBvZiB3aGljaCBtdXN0Cis7OyBjb250YWluIHRoZSBz YW1lIG51bWJlciBvZiBjZWxscy4gIEJvZHkgcm93cyBhcmUgb3B0aW9uYWwuICBBIHRhYmxlCis7 OyBlbmRzIHdpdGggYSBibGFuayBsaW5lIG9yIGF0IHRoZSBzdGFydCBvZiBhIG5ldyBNYXJrZG93 biBibG9jaworOzsgZWxlbWVudC4KKzs7Cis7OyBUaGUgaGVhZGVyIGFsaWdubWVudCByb3cgY29s dW1uIG11c3QgaGF2ZSBhIG1pbmltdW0gb2YgdGhyZWUgaHlwaGVucworOzsgd2hpY2ggaW5kaWNh dGVzIGRlZmF1bHQgYWxpZ25tZW50IChpLmUuLCB3aGF0ZXZlciBhIHJlbmRlcmVyCis7OyBjaG9v c2VzKS4gIFRvIGluZGljYXRlIGxlZnQgYWxpZ25tZW50LCBwcmVmaXggdGhlIGh5cGhlbiBzdHJp bmcgd2l0aAorOzsgYSBjb2xvbiBsaWtlIHRoaXMgOi0tLS4gIEZvciBjZW50ZXIgYWxpZ25tZW50 LCBwcmVmaXggYW5kIHN1ZmZpeCB3aXRoCis7OyBjb2xvbnMgbGlrZSB0aGlzIDotLS06LiAgRm9y IHJpZ2h0IGFsaWdubWVudCwgc3VmZml4IHdpdGggYSBjb2xvbgorOzsgbGlrZSB0aGlzIC0tLTou Cis7OworOzsgRWFjaCB0YWJsZSBoZWFkZXIgb3IgYm9keSBjZWxsIGNhbiBjb250YWluIHRoZSB1 c3VhbCBNYXJrZG93biBpbmxpbmUKKzs7IHN0eWxlIGluZGljYXRvcnMuICBBIGNlbGwgY2Fubm90 IGNvbnRhaW4gYSBibG9jayBlbGVtZW50IHN1Y2ggYXMgYQorOzsgaGVhZGluZ3MsIHRoZW1hdGlj IGJyZWFrcywgYmxvY2sgcXVvdGVzLCBmZW5jZWQgY29kZSBibG9ja3MuCis7OworOzsgVGFibGUg Y2VsbHMgZG8gbm90IG5lZWQgdG8gYWxpZ24gdmlzdWFsbHk7IGkuZS4sIHRoZSBwaXBlIHN5bWJv bHMgZG8KKzs7IG5vdCBuZWVkIHRvIGxpbmUgdXAgdmVydGljYWxseS4gIFRoZSB0cmVlLXNpdHRl ciBwYXJzZXIgYW5kIHJlbmRlcmVycworOzsgZGV0ZWN0IGNlbGwgYm91bmRhcmllcyB1c2luZyBw aXBlIHN5bWJvbHMsIG5vdCB0aGVpciByZWxhdGl2ZSBhbGlnbm1lbnQuCis7OworOzsgSWYgeW91 IHdhbnQgdG8gaW5jbHVkZSB3aGF0IGxvb2tzIGxpa2UgY29kZSwgeW91IGNhbiB1c2UgYmFja3Rp Y2tzIHRvCis7OyB3cmFwIHN1Y2ggdGV4dCBhbGEgYHRoaXMgaXMgY29kZWAuICBUaGlzIG1vZGUg d2lsbCBub3QgZm9udGlmeSBzdWNoCis7OyBjb2RlLgorOzsKKzs7IElmIHlvdSB3YW50IHRvIGlu Y2x1ZGUgYSBwaXBlIHN5bWJvbCBpbiBhIGNlbGwsIGVzY2FwZSBpdCB0aHVzbHkgXHwuCis7Owor OzsgVGVjaG5pY2FsbHksIGJvZHkgcm93cyBkbyBub3QgbmVlZCB0byBjb250YWluIHRoZSBzYW1l IG51bWJlciBvZgorOzsgY2VsbHMgYXMgdGhlIGhlYWRlciBoYXMgY29sdW1ucyBhbmQgcm93cyBk byBub3QgbmVlZCB0byBzaGFyZSB0aGUKKzs7IHNhbWUgbnVtYmVyIG9mIGNlbGxzIGFtb25nIHRo ZW1zZWx2ZXMuICBOb3RlOiBNYW55IHJlbmRlcmVycyBnZXQKKzs7IGNvbmZ1c2VkIGlmIHRoZSB0 YWJsZSBpcyAicmFnZ2VkIiB3aXRoIGFuIHVuZXZlbiBudW1iZXIgb2YgY29sdW1ucworOzsgYW1v bmcgcm93cy4gIFNvbWUgcmVuZGVyZXJzIHdpbGwgaW5zZXJ0IGVtcHR5IGNlbGxzIG9uIGEgcm93 IHRoYXQKKzs7IGNvbnRhaW5zIGZld2VyIGNlbGxzIHRoYW4gdGhlIGhlYWRlciBoYXMgY29sdW1u cy4gIFNvbWUgZWxpZGUgY2VsbHMKKzs7IHRoYXQgZXhjZWVkIHRoZSBudW1iZXIgb2YgY29sdW1u cyBpbiB0aGUgaGVhZGVyLgorOzsKKzs7OzsgUGlwZSBUYWJsZSBSZWNvbW1lbmRhdGlvbnMKKzs7 Cis7OyAtIEFsd2F5cyB1c2UgcGlwZSBzeW1ib2xzIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIGVh Y2ggdGFibGUgbGluZS4KKzs7IC0gVXNlIGEgdW5pZm9ybSBudW1iZXIgb2YgY29sdW1ucyBzcGFu bmluZyB0aGUgdGFibGUuCis7OyAtIElmIHlvdSBkZXRlY3QgYSBwYXJzaW5nIGVycm9yIHdoaWNo IHByZXNlbnRzIGFzIGRpZmZlcmVudAorOzsgICBmb250aWZpY2F0aW9uIGFuZCB3aGljaCBpcyBv ZnRlbiBjYXVzZWQgYnkgYW4gZW1wdHkgZmlyc3QgY2VsbCBvbiB0aGUKKzs7ICAgZmluYWwgcm93 LCB0cnkgcHV0dGluZyBzb21lIGNoYXJhY3RlcnMgaW4gdGhhdCBjZWxsLgorOzsgLSBSZW5kZXJl cnMgb2Z0ZW4gZXhjbHVkZSBjZXJ0YWluIGVtcHR5IGNlbGxzIHN1Y2ggYXMgYW4gImVtcHR5IiBm aW5hbAorOzsgICBjZWxsIGluIGEgdGFibGUuICBGb2xsb3cgdGhlIG5leHQgaXRlbSB0byBhdm9p ZCB0aGlzLgorOzsgLSBJZiB5b3UgbmVlZCB0aGF0IGNlbGwgdG8gYXBwZWFyIGJsYW5rIGFuZCBh cmUgY29udmVydGluZyB0byBIVE1MLAorOzsgICB0cnkgdXNpbmcgYSBub24tcHJpbnRpbmcgSFRN TCBlbnRpdHksIHN1Y2ggYXMgYSBub24tYnJlYWtpbmcgc3BhY2UKKzs7ICAgIiZuYnNwOyIsIHdo aWNoIHBhcnNlIGFzIGNvbmNyZXRlIGNoYXJhY3RlcnMgeWV0IHJlbmRlciBhcyBibGFuay4KKzs7 IC0gSFRNTCBjb21tZW50cyA8IS0tIC0tPiBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgbm9uLWJsYW5r IGNoYXJhY3RlcgorOzsgICBzdHJpbmcgdGhhdCBkb2VzIG5vdCBnZXQgcmVuZGVyZWQuICBUaGVz ZSBhcmUgY29uc2lkZXJlZCBjZWxsIHRleHQKKzs7ICAgYW5kIHdoZW4gcGxhY2VkIGF0IHRoZSBl bmQgb2YgYSByb3csIHRoYXQgcm93J3MgbnVtYmVyIG9mIGNvbHVtbnMgaXMKKzs7ICAgaW5jcmVh c2VkIGFuZCBtaWdodCBleGNlZWQgdGhlIG51bWJlciBvZiBoZWFkZXIgY29sdW1ucy4KKzs7IC0g VGhlcmUgYXJlIHRyZWUtc2l0dGVyIHBhcnNlciBxdWlya3MuICBDb21tYW5kcyBzdWNoIGFzCis7 OyAgIGBtYXJrZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uJyBhbmQgYG1hcmtkb3duLXRzLXRh YmxlLW1vdmUtY29sdW1uJworOzsgICBmb2xsb3cgdGhlIHBhcnNlciB0cmVlIGFuZCBjYW4gbGVh ZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMgc28gZm9sbG93Cis7OyAgIHRoZXNlIHJlY29tbWVuZGF0 aW9ucyBhbmQgdGFibGUgb3BlcmF0aW9ucyBzaG91bGQgYmUgYXMgZXhwZWN0ZWQuCis7OworOzs7 OyBUcmVlIFNpdHRlciBCdWdzCis7OworOzsgYG1hcmtkb3duLXRzLW1vZGUnIHJlbGllcyBvbiB0 aGUgdW5kZXJseWluZyB0cmVlLXNpdHRlciBsaWJyYXJ5IGluCis7OyBFbWFjcyAoY2hvc2VuIGF0 IGl0cyBidWlsZCB0aW1lKSwgYW5kIGxhbmd1YWdlIGdyYW1tYXJzIHlvdSBoYXZlCis7OyBpbnN0 YWxsZWQuICBUaGVyZSBhcmUga25vd24gYW5kIHJlcG9ydGVkIGJ1Z3Mgd2hpY2ggbmVnYXRpdmVs eSBhZmZlY3QKKzs7IGNlcnRhaW4gZmVhdHVyZXMuICBUaGlzIG1vZGUgc2hvdWxkIGJlbmVmaXQg YXMgdGhlc2UgYnVncyBhcmUgZml4ZWQKKzs7IG9yIHdvcmtlZCBhcm91bmQuCis7OworOzsgLSBU aGUgTWFya2Rvd24gZ3JhbW1hciBpbnNlcnRzIGJsb2NrX2NvbnRpbnVhdGlvbiBub2RlcyBhcyBj aGlsZHJlbgorOzsgICBvZiBjb2RlX2ZlbmNlX2NvbnRlbnQsIHdoaWNoIGNvbmZ1c2VzIGJvdGgg dGhlIGluc3BlY3RvciBhbmQgdGhlCis7OyAgIGVtYmVkZGVkIHBhcnNlci4gIFRoaXMgYWZmZWN0 cyBjb2RlIGJsb2NrcyBpbnNpZGUgYmxvY2sgcXVvdGVzLgorOzsKKzs7IC0gSFRNTCBibG9jayB0 eXBlIDQgKGA8IScgZm9sbG93ZWQgYnkgYW4gdXBwZXJjYXNlIGxldHRlciwgZS5nLiwKKzs7ICAg YDwhRE9DVFlQRSBodG1sPicpIGNhdXNlcyB0aGUgcGFyc2VyIHRvIGNvbnN1bWUgYWxsIHN1YnNl cXVlbnQKKzs7ICAgY29udGVudC4gIExvd2VyY2FzZSBgPCFkb2N0eXBlIGh0bWw+JyB3b3JrcyBh cyBhIHdvcmthcm91bmQuCis7OyAgIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVy LWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3duL2lzc3Vlcy8yMzM+LgorOzsKKzs7IC0gU3Vw ZXJzY3JpcHQgKGBedGV4dF4nKSBhbmQgc3Vic2NyaXB0IChgfnRleHR+Jykgc3ludGF4IGlzIG5v dAorOzsgICBzdXBwb3J0ZWQgYnkgdGhlIGdyYW1tYXIuICBObyBFWFRFTlNJT05fIGJ1aWxkIGZs YWcgZXhpc3RzIGZvcgorOzsgICB0aGlzLiAgVGhpcyBpcyBQYW5kb2MgLyBQSFAgTWFya2Rvd24g RXh0cmEgc3ludGF4LCBub3QgQ29tbW9uTWFyaworOzsgICBvciBHRk0uCis7OworOzsgLSBPcmRl cmVkIChudW1iZXJlZCkgbGlzdHMgZG8gbm90IG5lc3QgYnkgaW5kZW50YXRpb24uICBJbmRlbnRp bmcKKzs7ICAgYSBgMS4nIGl0ZW0gdW5kZXIgYW5vdGhlciBvcmRlcmVkIGl0ZW0gZG9lcyBub3Qg cHJvZHVjZSBhIG5lc3RlZAorOzsgICBsaXN0IG5vZGU7IHRoZSBwYXJzZXIgZWl0aGVyIHRyZWF0 cyBpdCBhcyBhIGZsYXQgc2libGluZyBvcgorOzsgICBhYnNvcmJzIGl0IGludG8gdGhlIHBhcmVu dCBpdGVtJ3MgcGFyYWdyYXBoIGFzIGEKKzs7ICAgYmxvY2tfY29udGludWF0aW9uLiAgVW5vcmRl cmVkIChgLScsIGAqJywgYCsnKSBsaXN0cyBuZXN0Cis7OyAgIGNvcnJlY3RseS4gIERlbW90ZS9w cm9tb3RlIG9mIG9yZGVyZWQgbGlzdCBpdGVtcyBpcyB0aGVyZWZvcmUKKzs7ICAgZGlzYWJsZWQu Cis7OworOzsgLSBSZW51bWJlcmluZyBvcmRlcmVkIGxpc3RzIChgbWFya2Rvd24tdHMtcmVudW1i ZXItbGlzdCcpIG1heSBvbmx5Cis7OyAgIGFmZmVjdCBpdGVtcyBmcm9tIHBvaW50IGRvd253YXJk IGlmIHRoZSBwYXJzZXIgc3BsaXRzIGEgc2luZ2xlCis7OyAgIGxpc3QgaW50byBzZXBhcmF0ZSBg bGlzdCcgbm9kZXMsIG9yIG1heSBjb250aW51ZSBudW1iZXJpbmcgYWNyb3NzCis7OyAgIHR3byBz ZXBhcmF0ZSBsaXN0cyBpZiB0aGUgcGFyc2VyIG1lcmdlcyB0aGVtIGludG8gb25lIG5vZGUuCis7 OworOzsgLSBFbXB0eSBsaW5lcyBmb2xsb3dpbmcgYW4gYGluZGVudGVkX2NvZGVfYmxvY2snIG1h eSBiZSBjbGFpbWVkIGJ5Cis7OyAgIHRoZSBwYXJzZXIgYXMgY29udGludWF0aW9uIGxpbmVzIG9m IHRoYXQgYmxvY2ssIHJhdGhlciB0aGFuIGJlaW5nCis7OyAgIHRyZWF0ZWQgYXMgYmxhbmsgc2Vw YXJhdG9ycy4KIDs7Cis7OyAtIFBpcGUgdGFibGVzIGFyZSBpbmNvbnNpc3RlbnRseSBwYXJzZWQu ICBXaGl0ZXNwYWNlIGlzIGNvcnJlY3RseQorOzsgICB0cmltbWVkIGF0IHRoZSBzdGFydCBvZiBh IGNlbGwgY29udGVudCBidXQgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcworOzsgICBpbmNvcnJlY3Rs eSBpbmNsdWRlZC4gIEVtcHR5IGNlbGxzIGNhbiBjb250YWluIHVuZXZlbiAicmFnZ2VkIiByb3cK Kzs7ICAgY29sdW1uIGNvbmZpZ3VyYXRpb25zIHRoYXQgY2FuIGNvbmZ1c2UgdGhlIHBhcnNlci4K Kzs7Cis7OyAgIE1hcmtkb3duIHBpcGUgdGFibGVzIHdpdGggcGFyc2luZyBpc3N1ZXM6Cis7Owor OzsgICB8Q29sdW1uIDF8Q29sdW1uIDJ8Q29sdW1uIDN8Cis7OyAgIHwtLS0tLS0tLXwtLS0tLS0t LXwtLS0tLS0tLXwKKzs7ICAgfCAgICAgICAgfCAgICAgICAgfCAgICAgICAgfAorOzsgICB8ICAg ICAgICB8ICAgICAgICB8ICAgICAgICB8IDwtLSBwYXJzZSBlcnJvcgorOzsKKzs7ICAgfENvbHVt biAxfENvbHVtbiAyfENvbHVtbiAzfAorOzsgICB8LS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS18 Cis7OyAgIHwgICAgICAgIHwgICAgICAgIHwgICAgICAgIHwKKzs7ICAgfCB4eHggICAgfCAgICAg ICAgfCAgICAgICAgfCA8LS0gcGFyc2VkIGNvcnJlY3RseQorOzsKKzs7ICAgfENvbHVtbiAxfENv bHVtbiAyfCA8LS0gMiBjb2x1bW5zIGNvcnJlY3QKKzs7ICAgfC0tLS0tLS0tfC0tLS0tLS0tfCA8 LS0gMiBjb2x1bW5zIGNvcnJlY3QKKzs7ICAgICAgICAgICAgfCAgICAgICAgfCA8LS0gMSBjb2x1 bW4gaW5jb3JyZWN0Cis7OyAgICAgICAgICAgIHwgICAgICAgIHwgPC0tIHBhcnNlIGVycm9yCis7 OyAgIHwgICAgICAgIHwgICAgICAgIHwgPC0tIG5vdCBhIHJvdyBhZnRlciB0aGUgZXJyb3IsIGFi b3ZlCis7OworOzsgICBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFy cy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMvMjQxPgorOzsgICAgICAgPGh0dHBzOi8vZ2l0 aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMv MjQyPgogCiA7OzsgQ29kZToKIAogKHJlcXVpcmUgJ3RyZWVzaXQpCiAocmVxdWlyZSAnc3Vici14 KQotKHJlcXVpcmUgJ291dGxpbmUpCiAocmVxdWlyZSAnc2VxKQorKHJlcXVpcmUgJ291dGxpbmUp CisocmVxdWlyZSAnZ290by1hZGRyKQorKHJlcXVpcmUgJ3hyZWYpCisocmVxdWlyZSAnaWNvbnMp CiAKLSh0cmVlc2l0LWRlY2xhcmUtdW5hdmFpbGFibGUtZnVuY3Rpb25zKQotCi0oYWRkLXRvLWxp c3QKLSAndHJlZXNpdC1sYW5ndWFnZS1zb3VyY2UtYWxpc3QKLSAnKG1hcmtkb3duCi0gICAiaHR0 cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVyLWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3du IgotICAgOmNvbW1pdCAiNDEzMjg1MjMxY2U4ZmE4YjExZTcwNzRiYmUyNjViNDhhYTcyNzdmOSIK LSAgIDpzb3VyY2UtZGlyICJ0cmVlLXNpdHRlci1tYXJrZG93bi9zcmMiKQotIHQpCi0oYWRkLXRv LWxpc3QKLSAndHJlZXNpdC1sYW5ndWFnZS1zb3VyY2UtYWxpc3QKLSAnKG1hcmtkb3duLWlubGlu ZQotICAgImh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRl ci1tYXJrZG93biIKLSAgIDpjb21taXQgIjQxMzI4NTIzMWNlOGZhOGIxMWU3MDc0YmJlMjY1YjQ4 YWE3Mjc3ZjkiCi0gICA6c291cmNlLWRpciAidHJlZS1zaXR0ZXItbWFya2Rvd24taW5saW5lL3Ny YyIpCi0gdCkKKzs7OyBDdXN0b21pemF0aW9uczoKIAotOzs7IEhlbHBlciBmdW5jdGlvbnMKLQot KGRlZnZhciBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tYXAKLSAgJygoImMrKyIg LiBjcHApCi0gICAgKCJjIyIgLiBjLXNoYXJwKQotICAgICgic2giIC4gYmFzaCkpCi0gICJBbGlz dCBtYXBwaW5nIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbmFtZXMgdG8gdHJlZS1zaXR0ZXIgbGFuZ3Vh Z2VzLgotCi1LZXlzIHNob3VsZCBiZSBzdHJpbmdzLCBhbmQgdmFsdWVzIHNob3VsZCBiZSBsYW5n dWFnZSBzeW1ib2xzLgotCi1Gb3IgZXhhbXBsZSwgXCJjKytcIiBpbgotCi0gICAgYGBgYysrCi0g ICAgaW50IG1haW4oKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBgYGAKLQotbWFw cyB0byB0cmVlLXNpdHRlciBsYW5ndWFnZSBgY3BwJy4iKQotCi0oZGVmdmFyIG1hcmtkb3duLXRz LWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwCi0gICcoKGJhc2ggLiBiYXNoLXRzLW1vZGUpCi0g ICAgKGMgLiBjLXRzLW1vZGUpCi0gICAgKGMtc2hhcnAgLiBjc2hhcnAtdHMtbW9kZSkKLSAgICAo Y21ha2UgLiBjbWFrZS10cy1tb2RlKQotICAgIChjcHAgLiBjKystdHMtbW9kZSkKLSAgICAoY3Nz IC4gY3NzLXRzLW1vZGUpCi0gICAgKGRvY2tlcmZpbGUgLiBkb2NrZXJmaWxlLXRzLW1vZGUpCi0g ICAgKGVsaXhpciAuIGVsaXhpci10cy1tb2RlKQotICAgIChnbyAuIGdvLXRzLW1vZGUpCi0gICAg KGdvbW9kIC4gZ28tbW9kLXRzLW1vZGUpCi0gICAgKGdvd29yayAuIGdvLXdvcmstdHMtbW9kZSkK LSAgICAoaGVleCAuIGhlZXgtdHMtbW9kZSkKLSAgICAoaHRtbCAuIGh0bWwtdHMtbW9kZSkKLSAg ICAoamF2YSAuIGphdmEtdHMtbW9kZSkKLSAgICAoamF2YXNjcmlwdCAuIGpzLXRzLW1vZGUpCi0g ICAgKGpzb24gLiBqc29uLXRzLW1vZGUpCi0gICAgKGx1YSAuIGx1YS10cy1tb2RlKQotICAgIChw aHAgLiBwaHAtdHMtbW9kZSkKLSAgICAocHl0aG9uIC4gcHl0aG9uLXRzLW1vZGUpCi0gICAgKHJ1 YnkgLiBydWJ5LXRzLW1vZGUpCi0gICAgKHJ1c3QgLiBydXN0LXRzLW1vZGUpCi0gICAgKHRvbWwg LiB0b21sLXRzLW1vZGUpCi0gICAgKHRzeCAuIHRzeC10cy1tb2RlKQotICAgICh0eXBlc2NyaXB0 IC4gdHlwZXNjcmlwdC10cy1tb2RlKQotICAgICh5YW1sIC4geWFtbC10cy1tb2RlKSkKLSAgIkFu IGFsaXN0IG9mIHN1cHBvcnRlZCBjb2RlIGJsb2NrIGxhbmd1YWdlcyBhbmQgdGhlaXIgbWFqb3Ig bW9kZS4iKQorKGRlZmdyb3VwIG1hcmtkb3duLXRzIG5pbAorICAiTWFqb3IgbW9kZSBmb3Igdmll d2luZyBhbmQgZWRpdGluZyBNYXJrZG93biBidWZmZXJzLiIKKyAgOnByZWZpeCAibWFya2Rvd24t dHMtIgorICA6Z3JvdXAgJ3RleHQKKyAgOmdyb3VwICdlZGl0aW5nCisgIDp2ZXJzaW9uICIzMS4x IikKIAogKGRlZmN1c3RvbSBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCBuaWwKICAgIk5vbi1uaWwg bWVhbnMgaGlkZSBNYXJrZG93biBtYXJrdXAgZGVsaW1pdGVycyBpbiB0aGlzIGJ1ZmZlci4iCiAg IDp0eXBlICdib29sZWFuCisgIDpsb2NhbCB0CiAgIDpzYWZlICMnYm9vbGVhbnAKLSAgOmdyb3Vw ICdtYXJrZG93bi10cykKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEu MCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZWxsaXBzaXMgbmlsCisgICJUaGUgZWxsaXBz aXMgdG8gdXNlIGluIGZvbGRlZCBoZWFkaW5ncy4KK1doZW4gbmlsLCB1c2UgdGhlIHN0YW5kYXJk IHRocmVlIGRvdHMuICBXaGVuIGEgbm9uLWVtcHR5IHN0cmluZywKK3VzZSB0aGF0IHN0cmluZyBp bnN0ZWFkLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0ICA6dGFnICJEZWZhdWx0ICguLi4pIiBu aWwpCisgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRhZyAiU3RyaW5nIiA6dmFsdWUgIiDijIQi KSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZj dXN0b20gbWFya2Rvd24tdHMtbWVudS1iYXItc2hvdyB0CisgICJOb24tbmlsIG1lYW5zIHNob3cg dGhlIE1hcmtkb3duIG1lbnUgaW4gdGhlIG1lbnUgYmFyLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAg OnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20g bWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nICdzaG93LWFsbAorICAiRGVmYXVsdCBoZWFkaW5n IGZvbGRpbmcgbGV2ZWwuIgorICA6dHlwZSAnKGNob2ljZQorICAgICAgICAgIChjb25zdCA6dGFn ICJTaG93IGV2ZXJ5dGhpbmciIHNob3ctYWxsKQorICAgICAgICAgIChjb25zdCA6dGFnICJGb2xk IGV2ZXJ5dGhpbmcsIHNob3dpbmcgdG9wLWxldmVsIGhlYWRpbmdzIiBmb2xkLWFsbCkKKyAgICAg ICAgICAoY29uc3QgOnRhZyAiRm9sZCBoZWFkaW5ncywgc2hvd2luZyBhbGwgaGVhZGluZyBsZXZl bHMiIGZvbGQtaGVhZGluZ3MpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lv biAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzIG5pbAorICAi Tm9uLW5pbCBtZWFucyBkaXNwbGF5IGlubGluZSBpbWFnZXMgYmVsb3cgaW1hZ2UgbGlua3MuIgor ICA6dHlwZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAi MS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbWFnZS1tYXgtd2lkdGggJ3dpbmRvdwor ICAiTWF4aW11bSB3aWR0aCBvZiBpbmxpbmUgaW1hZ2VzIGluIHBpeGVscy4KK1doZW4gYHdpbmRv dycsIHVzZSB0aGUgd2luZG93IGJvZHkgd2lkdGguICBXaGVuIGEgbnVtYmVyLCB1c2UKK3RoYXQg YXMgdGhlIG1heGltdW0gcGl4ZWwgd2lkdGguIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgIDp0 YWcgIldpbmRvdyB3aWR0aCIgd2luZG93KQorICAgICAgICAgICAgICAgICAobmF0bnVtIDp0YWcg IlBpeGVsIHdpZHRoIikpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIx LjAiKQogCi07OzsgRmFjZXMKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGlzcGxheS1yZW1vdGUt aW5saW5lLWltYWdlcyBuaWwKKyAgIkhvdyB0byBkaXNwbGF5IHJlbW90ZSBpbmxpbmUgaW1hZ2Vz LgorV2hlbiBuaWwsIGRvIG5vdCBkaXNwbGF5IHJlbW90ZSBpbWFnZXMuICBXaGVuIGBkb3dubG9h ZCcsIGZldGNoIHRoZQoraW1hZ2UgaW50byBhIHRlbXBvcmFyeSBidWZmZXIgYW5kIGRpc3BsYXkg aXQuCisKK1JlbW90ZSBpbWFnZXMgYXJlIHNraXBwZWQgYnkgZGVmYXVsdCBmb3Igc2VjdXJpdHku IgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiU2tpcCByZW1vdGUgaW1hZ2VzIiBuaWwp CisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJEb3dubG9hZCByZW1vdGUgaW1hZ2VzIiBk b3dubG9hZCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQor CisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3ggJygi4piRIiAuICIrIikK KyAgIklmIG1hcmt1cCBpcyBoaWRkZW4sIGRpc3BsYXkgdGhpcyBmb3IgYSBjaGVja2VkIHRhc2sg bGlzdCBtYXJrZXIuCitWYWx1ZSBmb3JtczoKKyAtIGNvbnMgKFBSRUZFUlJFRCAuIEZBTExCQUNL KTogUFJFRkVSUkVEIGlzIHVzZWQgaWYgaXRzIGZpcnN0IGNoYXJhY3RlcgorICAgcGFzc2VzIGBj aGFyLWRpc3BsYXlhYmxlLXAnLCBvdGhlcndpc2UgRkFMTEJBQ0suCisgLSBzeW1ib2wgYGljb24n OiBkZWZlciB0byB0aGUgaWNvbnMuZWwgaWNvbgorICAgYG1hcmtkb3duLXRzLWNoZWNrZWQtY2hl Y2tib3gtaWNvbic7IGN1c3RvbWl6ZSB2aWEKKyAgIFxcW2N1c3RvbWl6ZS1pY29uXS4KKyAtIG5p bDogZGlzcGxheSB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zIChzdHJp bmcgOnRhZyAiUHJlZmVycmVkIChHVUkpIikKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmlu ZyA6dGFnICJGYWxsYmFjayAoVFRZKSIpKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAi VXNlIGljb25zLmVsIGljb24iIGljb24pCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJE aXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNr YWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZpbmUtaWNvbiBtYXJrZG93bi10cy1jaGVja2VkLWNo ZWNrYm94LWljb24gbmlsCisgICcoKGltYWdlICJjaGVja2VkLnN2ZyIgOmhlaWdodCBsaW5lIDph c2NlbnQgY2VudGVyKQorICAgIChzeW1ib2wgIuKYkSIpCisgICAgKHRleHQgIisiKSkKKyAgIklj b24gdXNlZCBmb3IgYSBjaGVja2VkIHRhc2sgbGlzdCBtYXJrZXIgd2hlbiBtYXJrdXAgaXMgaGlk ZGVuLgorQ29uc3VsdGVkIG9ubHkgd2hlbiBgbWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveCcg aXMgdGhlIHN5bWJvbAorYGljb24nLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9t IG1hcmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveCAnKCLimJAiIC4gIi0iKQorICAiSWYgbWFy a3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGZvciBhbiB1bmNoZWNrZWQgdGFzayBsaXN0IG1h cmtlci4KK1ZhbHVlIGZvcm1zOgorIC0gY29ucyAoUFJFRkVSUkVEIC4gRkFMTEJBQ0spOiBQUkVG RVJSRUQgaXMgdXNlZCBpZiBpdHMgZmlyc3QgY2hhcmFjdGVyCisgICBwYXNzZXMgYGNoYXItZGlz cGxheWFibGUtcCcsIG90aGVyd2lzZSBGQUxMQkFDSy4KKyAtIHN5bWJvbCBgaWNvbic6IGRlZmVy IHRvIHRoZSBpY29ucy5lbCBpY29uCisgICBgbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94 LWljb24nOyBjdXN0b21pemUgdmlhCisgICBcXFtjdXN0b21pemUtaWNvbl0uCisgLSBuaWw6IGRp c3BsYXkgdGhlIHJhdyBtYXJrdXAuIgorICA6dHlwZSAnKGNob2ljZSAoY29ucyAoc3RyaW5nIDp0 YWcgIlByZWZlcnJlZCAoR1VJKSIpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRh ZyAiRmFsbGJhY2sgKFRUWSkiKSkKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIlVzZSBp Y29ucy5lbCBpY29uIiBpY29uKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxh eSBvcmlnaW5hbCBtYXJrdXAiIG5pbCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12 ZXJzaW9uICIxLjAiKQorCisoZGVmaW5lLWljb24gbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNr Ym94LWljb24gbmlsCisgICcoKGltYWdlICJ1bmNoZWNrZWQuc3ZnIiA6aGVpZ2h0IGxpbmUgOmFz Y2VudCBjZW50ZXIpCisgICAgKHN5bWJvbCAi4piQIikKKyAgICAodGV4dCAiLSIpKQorICAiSWNv biB1c2VkIGZvciBhbiB1bmNoZWNrZWQgdGFzayBsaXN0IG1hcmtlciB3aGVuIG1hcmt1cCBpcyBo aWRkZW4uCitDb25zdWx0ZWQgb25seSB3aGVuIGBtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2ti b3gnIGlzIHRoZSBzeW1ib2wKK2BpY29uJy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1 c3RvbSBtYXJrZG93bi10cy10aGVtYXRpYy1icmVhay1jaGFyYWN0ZXIgJyg/4pSAIC4gPy0pCisg ICJJZiBtYXJrdXAgaXMgaGlkZGVuLCBkaXNwbGF5IHRoaXMgY2hhcmFjdGVyIGZvciB0aGVtYXRp YyBicmVha3MuCitJdCBpcyByZXBlYXRlZCB0byBmaWxsIHRoZSB3aW5kb3cgd2lkdGguCitUaGUg dmFsdWUgaXMgYSBjb25zIChQUkVGRVJSRUQgLiBGQUxMQkFDSyk6IFBSRUZFUlJFRCBpcyB1c2Vk IGlmIGl0IHBhc3NlcworYGNoYXItZGlzcGxheWFibGUtcCcsIG90aGVyd2lzZSBGQUxMQkFDSyBp cyB1c2VkLgorbmlsIGRpc3BsYXlzIHRoZSByYXcgbWFya3VwLiIKKyAgOnR5cGUgJyhjaG9pY2Ug KGNvbnMgKGNoYXJhY3RlciA6dGFnICJQcmVmZXJyZWQgKEdVSSkiKQorICAgICAgICAgICAgICAg ICAgICAgICAoY2hhcmFjdGVyIDp0YWcgIkZhbGxiYWNrIChUVFkpIikpCisgICAgICAgICAgICAg ICAgIChjb25zdCA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnZlcnNp b24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rv d24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaCAnKD/CtiAuID98KQorICAiSWYgbWFya3Vw IGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGNoYXJhY3RlciBmb3IgYSBiYWNrc2xhc2ggaGFyZCBs aW5lIGJyZWFrLgorVGhlIHZhbHVlIGlzIGEgY29ucyAoUFJFRkVSUkVEIC4gRkFMTEJBQ0spOiBQ UkVGRVJSRUQgaXMgdXNlZCBpZiBpdCBwYXNzZXMKK2BjaGFyLWRpc3BsYXlhYmxlLXAnLCBvdGhl cndpc2UgRkFMTEJBQ0sgaXMgdXNlZC4KK25pbCBrZWVwcyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0 eXBlICcoY2hvaWNlIChjb25zIChjaGFyYWN0ZXIgOnRhZyAiUHJlZmVycmVkIChHVUkpIikKKyAg ICAgICAgICAgICAgICAgICAgICAgKGNoYXJhY3RlciA6dGFnICJGYWxsYmFjayAoVFRZKSIpKQor ICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxheSBvcmlnaW5hbCBtYXJrdXAiIG5p bCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVm Y3VzdG9tIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZQorICAobGFtYmRhIChuKQor ICAgIChsZXQqICgodmFsIChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVlCisgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpKQorICAg ICAgICAgICAoY2ggKGlmIChjaGFyYWN0ZXJwIHZhbCkgdmFsID98KSkpCisgICAgICAobWFrZS1z dHJpbmcgbiBjaCkpKQorICAiSWYgbWFya3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGZvciBh IHRyYWlsaW5nLXNwYWNlcyBoYXJkIGxpbmUgYnJlYWsuCitUaGUgdmFsdWUgY2FuIGJlOgorLSBh IGNoYXJhY3RlciBvciBzdHJpbmc6IHNob3duIG9uY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFp bGluZyBzcGFjZXMsCisgIHdpdGggbm8gcmVwZXRpdGlvbiAodGhlIHJlbWFpbmluZyBzcGFjZXMg c3RheSBpbnZpc2libGUpOworLSBhIGZ1bmN0aW9uOiBjYWxsZWQgd2l0aCBvbmUgYXJndW1lbnQs IHRoZSBudW1iZXIgb2YgdHJhaWxpbmcgc3BhY2VzLAorICBhbmQgbXVzdCByZXR1cm4gdGhlIHN0 cmluZyB0byBkaXNwbGF5IGluIHBsYWNlIG9mIHRoZSBydW47CistIG5pbDoga2VlcCB0aGUgcmF3 IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjaGFyYWN0ZXIgOnRhZyAiRGlzcGxheSBzcGVj aWZpZWQgY2hhcmFjdGVyIChubyByZXBldGl0aW9uKSIpCisgICAgICAgICAgICAgICAgIChzdHJp bmcgOnRhZyAiRGlzcGxheSBzcGVjaWZpZWQgc3RyaW5nIChubyByZXBldGl0aW9uKSIpCisgICAg ICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJGdW5jdGlvbiBmcm9tIGNvdW50IHRvIGRpc3Bs YXkgc3RyaW5nIikKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkRpc3BsYXkgb3JpZ2lu YWwgbWFya3VwIiBuaWwpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAi MS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1mb250aWZ5LWNvZGUtYmxvY2tzLW5hdGl2 ZWx5IHQKKyAgIk5vbi1uaWwgbWVhbnMgZm9udGlmeSBjb2RlIGJsb2NrIGNvbnRlbnRzIHVzaW5n IHRoZSBsYW5ndWFnZSdzIG1vZGUuCitXaGVuIG5vbi1uaWwsIGZlbmNlZCBjb2RlIGJsb2NrcyBh cmUgaGlnaGxpZ2h0ZWQgd2l0aCBzeW50YXggb2YgdGhlCitlbWJlZGRlZCBsYW5ndWFnZSAodmlh IHRyZWUtc2l0dGVyIGZvciBsYW5ndWFnZXMgd2l0aCBhIHRyZWUtc2l0dGVyCittb2RlLCBvciB2 aWEgY29udmVudGlvbmFsIGZvbnQtbG9jayBmb3IgdGhlIHJlc3QpLiAgV2hlbiBuaWwsIGNvZGUK K2Jsb2NrcyBrZWVwIG9ubHkgdGhlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrJyBiYWNrZ3JvdW5k IGZhY2UuICBUb2dnbGluZworZm9yIHRoZSB0cy1lbWJlZGRlZCBwYXRoIHRha2VzIGVmZmVjdCBh ZnRlciByZXN0YXJ0aW5nCitgbWFya2Rvd24tdHMtbW9kZScgaW4gdGhlIGJ1ZmZlci4iCisgIDp0 eXBlICdib29sZWFuCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAi KQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWVuYWJsZS1jb2RlLWJsb2NrLWNvbnRleHQtbW9k ZSB0CisgICJOb24tbmlsIGF1dG9tYXRpY2FsbHkgZW5hYmxlcyBgbWFya2Rvd24tdHMtY29kZS1i bG9jay1jb250ZXh0LW1vZGUnLgorSWYgbm9uLW5pbCBhbmQgYHBvaW50JyBpcyBpbiBhIGZlbmNl ZCBjb2RlIGJsb2NrLCB0aGlzIHJ1bnMKK2BpbmRlbnQtZm9yLXRhYi1jb21tYW5kJywgYG5ld2xp bmUnLCBldC5hbC4sIGluIHRoZSBtb2RlIG9mIHRoZSBjb2RlCitibG9jay4iCisgIDp0eXBlICdi b29sZWFuCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCiso ZGVmY3VzdG9tIG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLWxpZ2h0ZXIg IiBbY29kZV0iCisgICJNaW5vciBtb2RlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQt bW9kZScgbGlnaHRlciBzdHJpbmcuCitTZXQgdG8gbmlsIHRvIGRpc2FibGUgdGhlIGxpZ2h0ZXIu IgorICA6dHlwZSAnc3RyaW5nCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9u ICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWluaGliaXQtY29kZS1ibG9jay1tb2Rl LXdhcm5pbmdzIHQKKyAgIklmIG5vbi1uaWwsIGluaGliaXQgY29kZS1ibG9jayBtYWpvci1tb2Rl IG1lc3NhZ2VzIGFuZCB3YXJuaW5ncy4KK1NvbWUgZmVuY2VkIGNvZGUtYmxvY2sgbWFqb3IgbW9k ZXMgcHJvZHVjZSBtZXNzYWdlcyBvciB3YXJuaW5ncyB3aGljaAoraGF2ZSBsaXR0bGUgcmVsZXZh bmNlIHRvIE1hcmtkb3duIGJ1ZmZlcnMuICBVc2UgdGhpcyBvcHRpb24gdG8gaW5oaWJpdAordGhl bS4gIE1ham9yIG1vZGVzIG1heSBiZSBlbmFibGVkIGZvciBmb250aWZpY2F0aW9uIG9yIGVkaXRp bmcgaW4gdGhlCittb2RlJ3MgY29udGV4dC4iCisgIDp0eXBlICdib29sZWFuCisgIDp2ZXJzaW9u ICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmdmFyIHdhcm5pbmctbWlu aW11bS1sZXZlbCkKKworKGRlZm1hY3JvIG1hcmtkb3duLXRzLS1pbmhpYml0LW1lc3NhZ2VzLWFu ZC13YXJuaW5ncyAodmFyICZyZXN0IGJvZHkpCisgICJFeGVjdXRlIEJPRFkgd2l0aCBtZXNzYWdl cyBhbmQgd2FybmluZ3MgaW5oaWJpdGVkLgorVkFSIGlzIGEgdmFyaWFibGUncyBzeW1ib2w7IGUu Zy4sCitcXD0nbWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MuICBJ ZiB0aGUgc3ltYm9sJ3MgdmFsdWUKK2lzIG5vbi1uaWwsIGRvIHdoYXQgaXQgc2F5cyBvbiB0aGUg dGluLgorSW5oaWJpdCBtZXNzYWdlcyBpbiB0aGUgZWNobyBhcmVhLgorSW5oaWJpdCBtZXNzYWdl cyBpbiB0aGUgbG9nLgorSW5oaWJpdCB3YXJuaW5ncyB3aXRoIGxldmVsIDwgOmVycm9yLiIKKyAg KGRlY2xhcmUgKGluZGVudCBkZWZ1bikpCisgIGAobGV0KiAoKHZhbCAoc3ltYm9sLXZhbHVlICx2 YXIpKQorICAgICAgICAgIChpbmhpYml0LW1lc3NhZ2UgdmFsKQorICAgICAgICAgOzsgQWxzbyBp bmhpYml0IGxvZ2dpbmcgdG8gKk1lc3NhZ2VzKgorICAgICAgICAgKG1lc3NhZ2UtbG9nLW1heCAo aWYgdmFsIG5pbCBtZXNzYWdlLWxvZy1tYXgpKQorICAgICAgICAgKHdhcm5pbmctbWluaW11bS1s ZXZlbAorICAgICAgICAgIChpZiB2YWwgOmVycm9yIHdhcm5pbmctbWluaW11bS1sZXZlbCkpKQor ICAgICAocHJvZ24gLEBib2R5KSkpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGVmYXVsdC1j b2RlLWJsb2NrLW1vZGUgJ3RleHQtbW9kZQorICAiRGVmYXVsdCBtb2RlIGZvciBhbm9ueW1vdXMg Y29kZSBibG9ja3MuIgorICA6dHlwZSAnKGNob2ljZQorICAgICAgICAgIChjb25zdCAgOnRhZyAi VGV4dCBtb2RlIiB0ZXh0LW1vZGUpCisgICAgICAgICAgKGNvbnN0ICA6dGFnICJGdW5kYW1lbnRh bCBtb2RlIiBmdW5kYW1lbnRhbC1tb2RlKQorICAgICAgICAgIChzeW1ib2wgOnRhZyAiT3RoZXIg bW9kZSBzeW1ib2wiCisgICAgICAgICAgICAgICAgICA6dmFsaWRhdGUgKGxhbWJkYSAod2lkKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHZhbCAod2lkZ2V0LXZhbHVlIHdp ZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5sZXNzIChhbmQgdmFsIChl cSAnc3ltYm9sICh0eXBlLW9mIHZhbCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh3aWRnZXQtcHV0IHdpZCA6ZXJyb3IgIk11c3QgYmUgYSBub24tbmlsIHN5bWJvbCIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkKSkpKSkKKyAgOnZlcnNpb24gIjMx LjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMt dGFibGUtZGVmYXVsdC1jb2x1bW4td2lkdGggNQorICAiQ29sdW1uIHdpZHRoIGZvciBuZXcgY29s dW1ucy4KK1lvdSBtYXkgbWFrZSB0aGlzIHdpZGVyLCBidXQgc21hbGxlciB0aGFuIDUgaXMgbm90 IHJlY29tbWVuZGVkLiIKKyAgOnR5cGUgJ2ludGVnZXIKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpw YWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZW5hYmxlLXRh YmxlLW1vZGUgdAorICAiTm9uLW5pbCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYG1hcmtkb3duLXRz LXRhYmxlLW1vZGUnLgorSWYgbm9uLW5pbCwgZW5hYmxlIGBtYXJrZG93bi10cy10YWJsZS1tb2Rl JyBpZiBgcG9pbnQnIGlzIGluIGEgTWFya2Rvd24KK3RhYmxlLiIKKyAgOnR5cGUgJ2Jvb2xlYW4K KyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0 b20gbWFya2Rvd24tdHMtdGFibGUtYXV0by1hbGlnbiAnKGNlbGwtbmF2aWdhdGlvbiB0cmFuc3Bv c2UpCisgICJBdXRvbWF0aWNhbGx5IGFsaWduIHRoZSB0YWJsZSBhdCBwb2ludCBkdXJpbmcgdGhl c2Ugb3BlcmF0aW9ucy4KK0lmIHQsIHRyaWdnZXIgb24gYWxsIHN1cHBvcnRlZCBvcGVyYXRpb25z LgorSWYgbmlsLCBkbyBub3QgYXV0byBhbGlnbi4KK090aGVyd2lzZSwgaXQgaXMgYSBsaXN0IG9m IHN5bWJvbHMgcmVwcmVzZW50aW5nIHRhYmxlIG9wZXJhdGlvbnMuIgorICA6dHlwZSAnKGNob2lj ZQorICAgICAgICAgIChjb25zdCA6dGFnICJEbyBub3QgYXV0b21hdGljYWxseSBhbGlnbiIgbmls KQorICAgICAgICAgIChjb25zdCA6dGFnICJBbHdheXMgYXV0b21hdGljYWxseSBhbGlnbiIgdCkK KyAgICAgICAgICAoc2V0CisgICAgICAgICAgIChjb25zdCA6dGFnICJDZWxsIG5hdmlnYXRpb24i IGNlbGwtbmF2aWdhdGlvbikKKyAgICAgICAgICAgKGNvbnN0IDp0YWcgIlRyYW5zcG9zZSIgdHJh bnNwb3NlKSkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQor CisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWZlYXR1cmVzICcoanVzdGlmeS1j ZWxscykKKyAgIlVzZSB0aGVzZSBvcHRpb25hbCBmZWF0dXJlcyB3aGVuIGFsaWduaW5nIGEgdGFi bGUuCitBbGlnbmluZyBhIHRhYmxlIGFsaWducyBlYWNoIGNvbHVtbiB0byB0aGUgd2lkdGggb2Yg aXRzIHdpZGVzdCBjZWxsLiAgSXQKK2NhbiBhbHNvIGp1c3RpZnkgZWFjaCBjZWxsIGFjY29yZGlu ZyB0byB0aGUgdGFibGUncyBkZWxpbWl0ZXIgbGluZSBsZWZ0LAorY2VudGVyLCBvciByaWdodC1o YW5kIGp1c3RpZmljYXRpb24gcnVsZXMuCisKK0N1c3RvbWl6aW5nIHRoaXMgdXNlciBvcHRpb24g aXMgbW9zdCB1c2VmdWwgd2hlbiB0aGUgdXNlciBvcHRpb24KK2BtYXJrZG93bi10cy10YWJsZS1h dXRvLWFsaWduJyBpcyBlbmFibGVkIGFuZCB0byBhdm9pZCBoYXZpbmcgdG8gdXNlIGEKK3ByZWZp eCBhcmd1bWVudCBiZWZvcmUgZXZlcnkgYXV0by1hbGlnbm1lbnQgb3BlcmF0aW9uLgorCitJZiB0 LCBlbmFibGUgYWxsIG9wdGlvbmFsIGFsaWdubWVudCBvcGVyYXRpb25zLgorSWYgbmlsLCBvcGVy YXRpb25zIGFyZSBlbmFibGVkIGJleW9uZCBiYXNpYyBjb2x1bW4gYWxpZ25tZW50LgorT3RoZXJ3 aXNlLCBpdCBpcyBhIGxpc3Qgb2Ygc3ltYm9scy4iCisgIDp0eXBlICcoY2hvaWNlCisgICAgICAg ICAgKGNvbnN0IDp0YWcgIk5vIG9wdGlvbmFsIGZlYXR1cmVzIiBuaWwpCisgICAgICAgICAgKGNv bnN0IDp0YWcgIkFsbCBvcHRpb25hbCBmZWF0dXJlcyIgdCkKKyAgICAgICAgICAoc2V0CisgICAg ICAgICAgIChjb25zdCA6dGFnICJKdXN0aWZ5IGNlbGxzIiBqdXN0aWZ5LWNlbGxzKSkpCisgIDp2 ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1h cmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbGlnaHRlciAiIFt0YWJsZV0iCisgICJNaW5vciBtb2Rl IGBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlJyBsaWdodGVyIHN0cmluZy4KK1NldCB0byBuaWwg dG8gZGlzYWJsZSB0aGUgbGlnaHRlci4iCisgIDp0eXBlICdzdHJpbmcKKyAgOnZlcnNpb24gIjMx LjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKzs7OyBGYWNlczoKIAogKGRlZmdyb3Vw IG1hcmtkb3duLXRzLWZhY2VzIG5pbAotICAiRmFjZXMgdXNlZCBpbiBNYXJrZG93biBUUyBNb2Rl LiIKKyAgIkZhY2VzIHVzZWQgYnkgTWFya2Rvd24tVFMuIgogICA6Z3JvdXAgJ21hcmtkb3duLXRz LWZhY2VzCiAgIDpncm91cCAnZmFjZXMpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWRlbGltaXRl ciAnKCh0ICg6aW5oZXJpdCBzaGFkb3cpKSkKLSAgIkZhY2UgZm9yIHRoZSAjIGJlZm9yZSBNYXJr ZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3IgdGhlICMgYmVmb3JlIE1hcmtkb3duIGhlYWRp bmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5n LTEgJygodCAoOmluaGVyaXQgb3V0bGluZS0xKSkpCi0gICJGYWNlIGZvciBmaXJzdCBsZXZlbCBN YXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3IgZmlyc3QgbGV2ZWwgTWFya2Rvd24gaGVh ZGluZ3MuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLXNldGV4 dC1oZWFkaW5nICcoKHQgKDppbmhlcml0IG1hcmtkb3duLXRzLWhlYWRpbmctMSkpKQotICAiRmFj ZSBmb3Igc2V0ZXh0IE1hcmtkb3duIGhlYWRpbmdzIChoZWFkaW5ncyB1bmRlcmxpbmVkIGJ5ID09 PSBvciAtLS0pLiIpCisgICJGYWNlIGZvciBzZXRleHQgTWFya2Rvd24gaGVhZGluZ3MgKGhlYWRp bmdzIHVuZGVybGluZWQgYnkgPT09IG9yIC0tLSkuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChk ZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctMiAnKCh0ICg6aW5oZXJpdCBvdXRsaW5lLTIpKSkK LSAgIkZhY2UgZm9yIHNlY29uZCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBm b3Igc2Vjb25kIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQog CiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTMgJygodCAoOmluaGVyaXQgb3V0bGluZS0z KSkpCi0gICJGYWNlIGZvciB0aGlyZCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFj ZSBmb3IgdGhpcmQgbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAiMzEuMSIp CiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctNCAnKCh0ICg6aW5oZXJpdCBvdXRsaW5l LTQpKSkKLSAgIkZhY2UgZm9yIGZvdXJ0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAi RmFjZSBmb3IgZm91cnRoIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMx LjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTUgJygodCAoOmluaGVyaXQgb3V0 bGluZS01KSkpCi0gICJGYWNlIGZvciBmaWZ0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQor ICAiRmFjZSBmb3IgZmlmdGggbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAi MzEuMSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctNiAnKCh0ICg6aW5oZXJpdCBv dXRsaW5lLTYpKSkKLSAgIkZhY2UgZm9yIHNpeHRoIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIp CisgICJGYWNlIGZvciBzaXh0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iCisgIDp2ZXJzaW9u ICIzMS4xIikKIAotKGRlZmZhY2UgbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIgJygodCAoOmluaGVy aXQgc2hhZG93KSkpCi0gICJGYWNlIGZvciBNYXJrZG93biBsaXN0IG1hcmtlcnMgbGlrZSAtIGFu ZCAqLiIpCisoZGVmZmFjZSBtYXJrZG93bi10cy1lbXBoYXNpcyAnKCh0ICg6aW5oZXJpdCBpdGFs aWMpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGVtcGhhc2lzIChpdGFsaWMpIHRleHQuIgorICA6 dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWJvbGQgJygodCAoOmluaGVy aXQgYm9sZCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gc3Ryb25nIGVtcGhhc2lzIChib2xkKSB0 ZXh0LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1zdHJpa2V0 aHJvdWdoICcoKHQgKDpzdHJpa2UtdGhyb3VnaCB0KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBz dHJpa2V0aHJvdWdoIHRleHQuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZmYWNlIG1hcmtk b3duLXRzLWJsb2NrLXF1b3RlICcoKHQgKDppbmhlcml0IGl0YWxpYykpKQotICAiRmFjZSBmb3Ig TWFya2Rvd24gYmxvY2sgcXVvdGVzLiIpCisgICJGYWNlIGZvciBNYXJrZG93biBibG9jayBxdW90 ZXMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWxpbmsgJygo dCAoOmluaGVyaXQgbGluaykpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gbGluayB0ZXh0IGFuZCBp bWFnZSBkZXNjcmlwdGlvbnMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtk b3duLXRzLWxpbmstZGVzdGluYXRpb24gJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1m YWNlKSkpCisgICJGYWNlIGZvciBNYXJrZG93biBsaW5rIGRlc3RpbmF0aW9ucyAoVVJMcykuIgor ICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWNvZGUtc3BhbiAnKCh0 ICg6aW5oZXJpdCBmb250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3du IGlubGluZSBjb2RlIHNwYW5zLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJr ZG93bi10cy1jb2RlLWJsb2NrICcoKHQgKDpleHRlbmQgdCkpKQorICAiRmFjZSBmb3IgTWFya2Rv d24gZmVuY2VkIGNvZGUgYmxvY2sgY29udGVudC4KK0FsdGVyIHRoaXMgZmFjZSB0byBhZGQgYSBg OmJhY2tncm91bmQnIGZvciBhIHZpc3VhbGx5IGRpc3RpbmN0Citjb2RlIGJsb2NrIHJlZ2lvbiwg ZS5nLjoKKyAgKHNldC1mYWNlLWF0dHJpYnV0ZSBcXD0nbWFya2Rvd24tdHMtY29kZS1ibG9jayBu aWwgOmJhY2tncm91bmQgXCJncmF5OTVcIikiCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZh Y2UgbWFya2Rvd24tdHMtaW4tY29kZS1ibG9jayAnKCh0ICg6ZXh0ZW5kIHQpKSkKKyAgIkZhY2Ug Zm9yIHdoZW4gcG9pbnQgaXMgaW4gYSBNYXJrZG93biBjb2RlIGJsb2NrLgorU2VlIGBtYXJrZG93 bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZScuCitBbHRlciB0aGlzIGZhY2UgdG8gYWRk IGEgYDpiYWNrZ3JvdW5kJyBmb3IgYSB2aXN1YWxseSBkaXN0aW5jdCB0YWJsZQorcmVnaW9uLCBl LmcuOgorICAoc2V0LWZhY2UtYXR0cmlidXRlIFxcPSdtYXJrZG93bi10cy1pbi1jb2RlLWJsb2Nr IDpiYWNrZ3JvdW5kIFwiZ3JheTk1XCIpIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNl IG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbWFya3VwLWhpZGRlbgorICAnKCgoKGJhY2tncm91bmQg bGlnaHQpKSAoOmJhY2tncm91bmQgImdyYXk5NSIgOmV4dGVuZCB0KSkKKyAgICAoKChiYWNrZ3Jv dW5kIGRhcmspKSAgKDpiYWNrZ3JvdW5kICJncmF5MTUiIDpleHRlbmQgdCkpKQorICAiRmFjZSBm b3IgTWFya2Rvd24gZmVuY2VkIGNvZGUgYmxvY2sgY29udGVudCB3aGVuIG1hcmt1cCBpcyBoaWRk ZW4uCitVc2VkIGluc3RlYWQgb2YgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2snIHdoZW4gYG1hcmtk b3duLXRzLWhpZGUtbWFya3VwJworaXMgbm9uLW5pbC4iCisgIDp2ZXJzaW9uICIzMS4xIikKKwor KGRlZmZhY2UgbWFya2Rvd24tdHMtaW5kZW50ZWQtY29kZS1ibG9jayAnKCh0ICg6aW5oZXJpdCBm b250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGluZGVudGVkIGNv ZGUgYmxvY2tzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1o dG1sLXRhZyAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLW1hcmt1cC1mYWNlKSkpCisgICJG YWNlIGZvciBpbmxpbmUgSFRNTCB0YWdzIGluIE1hcmtkb3duLiIKKyAgOnZlcnNpb24gIjMxLjEi KQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1odG1sLWJsb2NrICcoKHQgKDppbmhlcml0IGZvbnQt bG9jay1kb2MtbWFya3VwLWZhY2UpKSkKKyAgIkZhY2UgZm9yIEhUTUwgYmxvY2tzIGluIE1hcmtk b3duLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10aGVtYXRp Yy1icmVhayAnKCh0ICg6aW5oZXJpdCBzaGFkb3cgOmV4dGVuZCB0KSkpCisgICJGYWNlIGZvciBN YXJrZG93biB0aGVtYXRpYyBicmVha3MgKGhvcml6b250YWwgcnVsZXMpLgorQ3VzdG9taXplIHRo aXMgZmFjZSB0byBhZGQgYSA6YmFja2dyb3VuZCBmb3IgYSBmdWxsLXdpZHRoIHZpc3VhbCBydWxl LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1lbnRpdHktcmVm ZXJlbmNlICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1idWlsdGluLWZhY2UpKSkKKyAgIkZhY2Ug Zm9yIG5hbWVkIEhUTUwgZW50aXR5IHJlZmVyZW5jZXMgbGlrZSAmYW1wOyBhbmQgJmNvcHk7LiIK KyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1udW1lcmljLWNoYXJh Y3Rlci1yZWZlcmVuY2UKKyAgJygodCAoOmluaGVyaXQgZm9udC1sb2NrLWVzY2FwZS1mYWNlKSkp CisgICJGYWNlIGZvciBudW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIGxpa2UgJiM2NTsgYW5k ICYjeDQxOy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtbGF0 ZXggJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1mYWNlKSkpCisgICJGYWNlIGZvciBM YVRlWCAvIG1hdGggY29udGVudCBpbiBNYXJrZG93biAoJC4uLiQgYW5kICQkLi4uJCQpLiIKKyAg OnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YWJsZS1oZWFkZXIgJygo dCAoOmluaGVyaXQgKGJvbGQgZm9udC1sb2NrLWRvYy1mYWNlKSkpKQorICAiRmFjZSBmb3IgTWFy a2Rvd24gcGlwZSB0YWJsZSBoZWFkZXIgY2VsbHMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhk ZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlLWNlbGwgJygodCAoOmluaGVyaXQgZGVmYXVsdCkpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gcGlwZSB0YWJsZSBkYXRhIGNlbGxzLiIKKyAgOnZlcnNpb24g IjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2VsbCAnKCh0 ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIHBp cGUgdGFibGUgZGVsaW1pdGVyIGNlbGxzICgtLS0gc2VwYXJhdG9ycykuIgorICA6dmVyc2lvbiAi MzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlICcoKHQgKDpleHRlbmQgdCkpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gdGFibGUuCitBbHRlciB0aGlzIGZhY2UgdG8gYWRkIGEgYDpi YWNrZ3JvdW5kJyBmb3IgYSB2aXN1YWxseSBkaXN0aW5jdCB0YWJsZQorcmVnaW9uLCBlLmcuOgor ICAoc2V0LWZhY2UtYXR0cmlidXRlIFxcPSdtYXJrZG93bi10cy10YWJsZSBuaWwgOmJhY2tncm91 bmQgXCJncmF5OTVcIikiCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24t dHMtaW4tdGFibGUgJygodCAoOmV4dGVuZCB0KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBgbWFy a2Rvd24tdHMtaW4tdGFibGUtbW9kZScgd2hlbiBwb2ludCBpcyBpbiBhIHRhYmxlLgorQWx0ZXIg dGhpcyBmYWNlIHRvIGFkZCBhIGA6YmFja2dyb3VuZCcgZm9yIGEgdmlzdWFsbHkgZGlzdGluY3Qg dGFibGUKK3JlZ2lvbiwgZS5nLjoKKyAgKHNldC1mYWNlLWF0dHJpYnV0ZSBcXD0nbWFya2Rvd24t dHMtaW4tdGFibGUgbmlsIDpiYWNrZ3JvdW5kIFwiZ3JheTk1XCIpIgorICA6dmVyc2lvbiAiMzEu 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 d24tdHMtbW9kZScgYnVmZmVycy4iKQorCisoZGVmdmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2st bW9kZXMKKyAgYCgoc2ggYmFzaC10cy1tb2RlKQorICAgIChzaGVsbCBiYXNoLXRzLW1vZGUpCisg ICAgKCwoaW50ZXJuICJjIyIpIGNzaGFycC10cy1tb2RlKQorICAgIChjcHAgYysrLXRzLW1vZGUp CisgICAgKGVsIGVtYWNzLWxpc3AtbW9kZSkKKyAgICAoZWxpc3AgZW1hY3MtbGlzcC1tb2RlKQor ICAgIChnb2xhbmcgZ28tdHMtbW9kZSkKKyAgICAoZ29tb2QgZ28tbW9kLXRzLW1vZGUpCisgICAg KGdvd29yayBnby13b3JrLXRzLW1vZGUpCisgICAgKGphdmFzY3JpcHQganMtdHMtbW9kZSkKKyAg ICAobWQgbWFya2Rvd24tdHMtbW9kZSkKKyAgICAocHkgcHl0aG9uLXRzLW1vZGUpCisgICAgKHJi IHJ1YnktdHMtbW9kZSkKKyAgICAocnMgcnVzdC10cy1tb2RlKQorICAgICh0ZXggbGF0ZXgtbW9k ZSkKKyAgICAodHMgdHlwZXNjcmlwdC10cy1tb2RlKQorICAgICh5bWwgeWFtbC10cy1tb2RlKSkK KyAgIkV4dHJhIG1hcHBpbmdzIGZyb20gY29kZSBibG9jayBsYW5ndWFnZSB0YWdzIHRvIG1ham9y IG1vZGVzLgogCi07OzsgRm9udC1sb2NrCitFbnRyaWVzIGhlcmUgYXJlIG9ubHkgbmVlZGVkIHdo ZW4gdGhlIGxhbmd1YWdlIHRhZyBpbiBhIGZlbmNlZCBjb2RlCitibG9jayBkb2VzIE5PVCBtYXRj aCB0aGUgY29udmVudGlvbmFsIG1vZGUgbmFtZSBkZXJpdmF0aW9uLCBlLmcuIHRoZQordXNlciB3 cml0ZXMgXFw9YFxcPWBcXD1gdHMgaW5zdGVhZCBvZiBcXD1gXFw9YFxcPWB0eXBlc2NyaXB0LCBv cgorXFw9YFxcPWBcXD1gcHkgaW5zdGVhZCBvZiBcXD1gXFw9YFxcPWBweXRob24uICBGb3IgdGFn cyB0aGF0IGFscmVhZHkKK3Jlc29sdmUgdmlhIHRoZSBzdGFuZGFyZCBcIi10cy1tb2RlXCIvXCIt bW9kZVwiIGhldXJpc3RpY3MgdGhlcmUgaXMgbm8KK25lZWQgdG8gYWRkIGFuIGVudHJ5LgorCitU aGUgYWxpc3QgaXMgb2YgdGhlIGZvcm0gKExBTkdVQUdFIE1BSk9SLU1PREUpLiBNQUpPUi1NT0RF IGNhbiBiZSBhCit0cmVlLXNpdHRlciBvciBhIGNvbnZlbnRpb25hbCBtb2RlLgorCitJZiB5b3Ug cHJlZmVyIGEgY29udmVudGlvbmFsIG1vZGUgb3ZlciBpdHMgdHJlZS1zaXR0ZXIgdmFyaWFudCwg YWRkIG9yCityZXBsYWNlIHJlbGV2YW50IGVudHJpZXMuICBGb3IgZXhhbXBsZToKKworICAgIChh ZGQtdG8tbGlzdCBcXD0nbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcworICAgICAgXFw9Jyhw eXRob24gcHl0aG9uLW1vZGUpKQorICAgIChzZXRmIChhbGlzdC1nZXQgXFw9J3B5IG1hcmtkb3du LXRzLWNvZGUtYmxvY2stbW9kZXMpCisgICAgICAgICAgXFw9JyhweXRob24tbW9kZSkpCisKK0Nv ZGUgYmxvY2tzIGZvciB0aGF0IG5vbiB0cmVlLXNpdHRlciBtb2RlcyB3aWxsIGJlIGZvbnRpZmll ZCB1c2luZyB0aGUKK21vZGUncyBjb252ZW50aW9uYWwgZm9udC1sb2NrIHJ1bGVzLiIpCisKKyhk ZWZ2YXIgbWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMKKyAg JyhtYXJrZG93bi10cy1tb2RlCisgICAgcGhwLXRzLW1vZGUpCisgICJUcmVhdCB0aGVzZSBjb2Rl IGJsb2NrIHRyZWUtc2l0dGVyIG1vZGVzIGFzIGNvbnZlbnRpb25hbC4KK1NvbWUgbW9kZXMgdGhh dCBlbWJlZCBtdWx0aXBsZSBgdHJlZXNpdCcgcGFyc2VycyBuZWVkIHRvIGJlIHRyZWF0ZWQgd2l0 aAorY29udmVudGlvbmFsIGZvbnQtbG9jay4gIGBtYXJrZG93bi10cy1tb2RlJyBpdHNlbGYgaXMg b25lIG9mIHRoZW0uIikKKworOzs7IEZvbnQtbG9jazoKIAogKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWRlbGltaXRlciAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKICAgIkZv bnRpZnkgZGVsaW1pdGVyIE5PREUgYW5kIG9wdGlvbmFsbHkgaGlkZSBpdHMgbWFya3VwLgpAQCAt MTY4LDIzICs3NzEsODMzIEBAIG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAgIChw dXQtdGV4dC1wcm9wZXJ0eSAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUt ZW5kIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRz LS1tYXJrdXApKSkKIAorKGRlZnZhciB1cmwtbWFpbC1jb21tYW5kKSA7IHVybC91cmwtdmFycy5l bAorCisoZGVmdW4gbWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24gKGJlZyBlbmQgdXJsKQor ICAiTWFrZSB0aGUgcmVnaW9uIGZyb20gQkVHIHRvIEVORCBhIGNsaWNrYWJsZSBidXR0b24gZm9y IFVSTC4KK0ZvciBtYWlsdG86IFVSSXMsIHVzZSBgdXJsLW1haWwtY29tbWFuZCcuICBGb3Igb3Ro ZXIgc2NoZW1lcworXChlLmcuLCBodHRwLCBmdHApLCBvcGVuIHdpdGggYGJyb3dzZS11cmwnLiAg T3RoZXJ3aXNlLCB0cmVhdCBhcworYSByZWxhdGl2ZSBmaWxlIHBhdGggYW5kIG9wZW4gd2l0aCBg ZmluZC1maWxlJy4KKworRG8gbm90IHBhc3MgYGZhY2UnIHRvIGBtYWtlLXRleHQtYnV0dG9uJzog dGhlIGxpbmsgZmFjZSBpcyBhbHJlYWR5CithcHBsaWVkIGJ5IGBtYXJrZG93bi10cy0tZm9udGlm eS1saW5rLW5vZGUnIHZpYQorYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJyAod2l0aCBg Om92ZXJyaWRlIGFwcGVuZCcpLCBhbmQKK2BhZGQtdGV4dC1wcm9wZXJ0aWVzJyB3b3VsZCBvdGhl cndpc2UgcmVwbGFjZSB0aGUgYXBwZW5kZWQgZmFjZQorbGlzdCB3aXRoIGEgc2luZ2xlIGBtYXJr ZG93bi10cy1saW5rJywgY2xvYmJlcmluZyBhbiBlbmNsb3NpbmcKK2hlYWRpbmcgZmFjZS4iCisg IDs7IE5PVEU6IFVSSSBzY2hlbWUgYW5kIGhvc3QgbmFtZSBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBw ZXIgUkZDIDM5ODYKKyAgOzsgYW5kIFJGQyA3MjMwLgorICAobGV0ICgoY2FzZS1mb2xkLXNlYXJj aCBuaWwpKQorICAgIChtYWtlLXRleHQtYnV0dG9uIGJlZyBlbmQKKyAgICAgICAgICAgICAgICAg ICAgICAnYWN0aW9uIChsYW1iZGEgKF9idXR0b24pCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1w cmVmaXgtcCAiIyIgdXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJr ZG93bi10cy0tZm9sbG93LWZyYWdtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdWJzdHJpbmcgdXJsIDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoc3RyaW5nLW1hdGNoLXAgIlxcYG1haWx0bzoiIHVybCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZnVuY2FsbCB1cmwtbWFpbC1jb21tYW5kCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgbWFpbHRvOiIgIiIg dXJsKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaC1w ICJcXGBbYS16XSs6IiB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJy b3dzZS11cmwgdXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChmaW5k LWZpbGUgdXJsKSkpKQorICAgICAgICAgICAgICAgICAgICAgICdoZWxwLWVjaG8gdXJsKSkpCisK KyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0aW9uIChub2RlIG92ZXJy aWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBsaW5rIGRlc3RpbmF0aW9uIE5PREUg YW5kIGhpZGUgaXQgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQg RU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRl Jy4iCisgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgKHRyZWVzaXQtbm9kZS1z dGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKQorICAgJ21hcmtkb3duLXRzLWxpbmst ZGVzdGluYXRpb24gb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAod2hlbiBtYXJrZG93bi10cy1oaWRl LW1hcmt1cAorICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUp ICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2li bGUgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0t bGluay1yZWYtY2FjaGUgbmlsCisgICJDYWNoZWQgYWxpc3Qgb2YgKExBQkVMIC4gVVJMKSBmcm9t IGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25zLgorRWFjaCBlbnRyeSBpcyBhIGNvbnMgY2VsbCBt YXBwaW5nIGEgZG93bmNhc2VkIGxhYmVsIHN0cmluZyB0byBpdHMKK2Rlc3RpbmF0aW9uIFVSTC4i KQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZS10aWNrIG5pbAor ICAiVmFsdWUgb2YgYGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrJyB3aGVuIHRoZSBjYWNoZSB3 YXMgYnVpbHQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saW5rLXJlZi1kZWZpbml0aW9ucyAo KQorICAiUmV0dXJuIGFuIGFsaXN0IG9mIChMQUJFTCAuIFVSTCkgZnJvbSBsaW5rIHJlZmVyZW5j ZSBkZWZpbml0aW9ucy4KK0xBQkVMIGlzIGRvd25jYXNlZCBmb3IgY2FzZS1pbnNlbnNpdGl2ZSBt YXRjaGluZy4gIFJlc3VsdHMgYXJlCitjYWNoZWQgYW5kIHJlYnVpbHQgb25seSB3aGVuIHRoZSBi dWZmZXIgY2hhbmdlcy4iCisgIChsZXQgKCh0aWNrIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGlj aykpKQorICAgICh1bmxlc3MgKGVxIHRpY2sgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlLXRp Y2spCisgICAgICAobGV0KiAoKHJvb3QgKHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rv d24pKQorICAgICAgICAgICAgIChtYXRjaGVzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAg ICAgICAgICAgICAgICAgICAgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAnKChsaW5rX3Jl ZmVyZW5jZV9kZWZpbml0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rX2xhYmVs KSBAbGFiZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmtfZGVzdGluYXRpb24pIEBk ZXN0KSkpKQorICAgICAgICAgICAgIGRlZnMpCisgICAgICAgICh3aGlsZSBtYXRjaGVzCisgICAg ICAgICAgKGxldCogKChsYWJlbC1wYWlyIChwb3AgbWF0Y2hlcykpCisgICAgICAgICAgICAgICAg IChkZXN0LXBhaXIgKHBvcCBtYXRjaGVzKSkKKyAgICAgICAgICAgICAgICAgKGxibC10ZXh0IChz dHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRleHQgKGNkciBsYWJlbC1wYWlyKSB0KQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXFsiICJcXF0iKSkpCisgICAgICAg ICAgICAocHVzaCAoY29ucyAoZG93bmNhc2UgbGJsLXRleHQpCisgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLXRleHQgKGNkciBkZXN0LXBhaXIpIHQpKQorICAgICAgICAgICAg ICAgICAgZGVmcykpKQorICAgICAgICAoc2V0cSBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUg KG5yZXZlcnNlIGRlZnMpCisgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNo ZS10aWNrIHRpY2spKSkKKyAgICBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUpKQorCisoZGVm dW4gbWFya2Rvd24tdHMtLXJlc29sdmUtbGluay1yZWYgKGxhYmVsKQorICAiUmVzb2x2ZSBMQUJF TCB0byBhIFVSTCB2aWEgbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbnMuCitMQUJFTCBzaG91bGQg YmUgdGhlIHRleHQgd2l0aG91dCBicmFja2V0cy4gIE1hdGNoaW5nIGlzCitjYXNlLWluc2Vuc2l0 aXZlIHBlciBDb21tb25NYXJrIHNwZWMgc2VjdGlvbiA0LjcuIgorICAoYWxpc3QtZ2V0IChkb3du Y2FzZSBsYWJlbCkgKG1hcmtkb3duLXRzLS1saW5rLXJlZi1kZWZpbml0aW9ucykKKyAgICAgICAg ICAgICBuaWwgbmlsICMnZXF1YWwpKQorCis7OzsgRnJhZ21lbnQgbGlua3M6CisKKyhkZWZjb25z dCBtYXJrZG93bi10cy0tc2x1Zy1naXRodWItc3RyaXAtcmUKKyAgIltdWyFcIiMkJSYnKCkqKywu Lzo7PD0+P0BcXF5ge3x9fl0iCisgICJQdW5jdHVhdGlvbiBzdHJpcHBlZCBieSBHaXRIdWIncyBn aC1zbHVnZ2VyIGJlZm9yZSBoeXBoZW5hdGlvbi4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXNs dWctZ2l0aHViICh0ZXh0KQorICAiUmV0dXJuIHRoZSBHaXRIdWItZmxhdm9yIHNsdWcgZm9yIGhl YWRpbmcgVEVYVC4KK01pcnJvcnMgdGhlIGdoLXNsdWdnZXIgYWxnb3JpdGhtOiBsb3dlcmNhc2Us IHN0cmlwIGEgZml4ZWQKK3B1bmN0dWF0aW9uIHNldCwgcmVwbGFjZSBzcGFjZXMgd2l0aCBoeXBo ZW5zLiIKKyAgKGxldCogKChsYyAoZG93bmNhc2UgdGV4dCkpCisgICAgICAgICAoc3RyaXBwZWQg KHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10 cy0tc2x1Zy1naXRodWItc3RyaXAtcmUgIiIgbGMpKSkKKyAgICAocmVwbGFjZS1yZWdleHAtaW4t c3RyaW5nICJbWzpibGFuazpdXSIgIi0iIHN0cmlwcGVkKSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy0tc2x1Zy1wYW5kb2MgKHRleHQpCisgICJSZXR1cm4gdGhlIFBhbmRvYy1mbGF2b3IgYXV0by1p ZCBzbHVnIGZvciBoZWFkaW5nIFRFWFQuCitNaXJyb3JzIFBhbmRvYydzIGFsZ29yaXRobTogZHJv cCBldmVyeXRoaW5nIGJlZm9yZSB0aGUgZmlyc3QKK2xldHRlciwga2VlcCBhbHBoYW51bWVyaWNz IGFuZCBgXy0uJywgY29sbGFwc2Ugd2hpdGVzcGFjZSBydW5zIHRvCitoeXBoZW5zLCBsb3dlcmNh c2UuICBGYWxscyBiYWNrIHRvIFwic2VjdGlvblwiIGlmIGVtcHR5LiIKKyAgKGxldCogKChsYyAo ZG93bmNhc2UgdGV4dCkpCisgICAgICAgICAoZnJvbS1sZXR0ZXIgKGlmIChzdHJpbmctbWF0Y2gg IltbOmFscGhhOl1dIiBsYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyBs YyAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAgICAgICAgICAgICAgICAgIiIpKQorICAg ICAgICAgKGtlcHQgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICJb Xls6YWxudW06XV8uXG5cdFs6Ymxhbms6XS1dIiAiIiBmcm9tLWxldHRlcikpCisgICAgICAgICAo aHlwaGVuYXRlZCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJbWzpibGFuazpdXHRcbl0rIiAi LSIga2VwdCkpCisgICAgICAgICAodHJpbW1lZCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICIt K1xcJyIgIiIgaHlwaGVuYXRlZCkpKQorICAgIChpZiAoc3RyaW5nLWVtcHR5LXAgdHJpbW1lZCkg InNlY3Rpb24iIHRyaW1tZWQpKSkKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS1leHBsaWNpdC1p ZC1yZQorICAiWyBcdF0qe1sgXHRdKiNcXChbXn0gXHRdK1xcKVsgXHRdKn1bIFx0XSpcXCciCisg ICJNYXRjaCBhIFBhbmRvYy1zdHlsZSB0cmFpbGluZyBgeyNpZH0nIG9uIGEgaGVhZGluZyBsaW5l LgorQ2FwdHVyZSBncm91cCAxIGlzIHRoZSBleHBsaWNpdCBpZC4iKQorCisoZGVmdW4gbWFya2Rv d24tdHMtLWhlYWRpbmctdGV4dC1hbmQtaWQgKHJhdykKKyAgIlNwbGl0IFJBVyBoZWFkaW5nIHRl eHQgaW50byAoVklTSUJMRSAuIEVYUExJQ0lULUlEKS4KK0VYUExJQ0lULUlEIGlzIG5vbi1uaWwg aWYgUkFXIGVuZHMgd2l0aCBhIFBhbmRvYy1zdHlsZSBgeyNpZH0nLAoraW4gd2hpY2ggY2FzZSBW SVNJQkxFIGlzIFJBVyB3aXRoIHRoYXQgc3VmZml4IHJlbW92ZWQuIgorICAoaWYgKHN0cmluZy1t YXRjaCBtYXJrZG93bi10cy0tZXhwbGljaXQtaWQtcmUgcmF3KQorICAgICAgKGNvbnMgKHN1YnN0 cmluZyByYXcgMCAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAgICAgKG1hdGNoLXN0cmlu ZyAxIHJhdykpCisgICAgKGNvbnMgcmF3IG5pbCkpKQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3du LXRzLS1oZWFkaW5nLWlkLWNhY2hlIG5pbAorICAiQ2FjaGVkIGhhc2ggdGFibGUgbWFwcGluZyBo ZWFkaW5nIHNsdWcgc3RyaW5ncyB0byBidWZmZXIgcG9zaXRpb25zLgorRWFjaCB2YWx1ZSBpcyB0 aGUgYnVmZmVyIHBvc2l0aW9uIG9mIHRoZSBzdGFydCBvZiB0aGUgbWF0Y2hpbmcKK2BhdHhfaGVh ZGluZycgb3IgYHNldGV4dF9oZWFkaW5nJyBub2RlLiAgQnVpbHQgbGF6aWx5IGJ5CitgbWFya2Rv d24tdHMtLWhlYWRpbmctaWRzJywgaW52YWxpZGF0ZWQgYnkgYnVmZmVyLXRpY2sgY2hhbmdlLiIp CisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUtdGljayBuaWwK KyAgIlZhbHVlIG9mIGBidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaycgd2hlbiB0aGUgaGVhZGlu Zy1pZCBjYWNoZSB3YXMgYnVpbHQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1idWlsZC1oZWFk aW5nLWlkcyAoKQorICAiV2FsayBhbGwgaGVhZGluZ3MgaW4gdGhlIGJ1ZmZlciBhbmQgcmV0dXJu IGEgaGFzaCB0YWJsZS4KK1doaWNoIG1hcHMgZWFjaCBzbHVnIHRvIHRoZSBidWZmZXIgcG9zaXRp b24gb2YgaXRzIGhlYWRpbmcuICBFYWNoCitoZWFkaW5nIGNvbnRyaWJ1dGVzIGl0cyBHaXRIdWIg c2x1ZywgaXRzIFBhbmRvYyBzbHVnLCBhbmQgaXRzIGV4cGxpY2l0CitgeyNpZH0nIGlmIHByZXNl bnQuICBCb3RoIHNsdWcgYWxnb3JpdGhtcyBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIGJ1ZmZlcgor YmVjYXVzZSBhIG1hcmtkb3duIGZpbGUgaXMgb2Z0ZW4gcHJldmlld2VkIGJ5IHNldmVyYWwgcmVu ZGVyZXJzIChHaXRIdWIKK3dlYiBVSSwgUGFuZG9jLCBtZEJvb2ssIEh1Z28sIGFuZCBzbyBvbikg YW5kIHRoZSBzYW1lIHNvdXJjZSBzaG91bGQKK3Jlc29sdmUgcmVnYXJkbGVzcyBvZiB3aGljaCBv bmUgdGhlIGF1dGhvciB3cm90ZSB0aGUgbGluayBmb3IuICBGb3IgbW9zdAoraGVhZGluZ3MgdGhl IHR3byBhbGdvcml0aG1zIHByb2R1Y2UgdGhlIHNhbWUgc2x1ZyBhbnl3YXkuCitEdXBsaWNhdGUg c2x1Z3MgKHdpdGhpbiBvbmUgYWxnb3JpdGhtKSBhcmUgZGlzYW1iaWd1YXRlZCBieSBhcHBlbmRp bmcKK2AtMScsIGAtMicsIGFuZCBzbyBvbiwgaW4gZG9jdW1lbnQgb3JkZXIsIG1hdGNoaW5nIEdp dEh1YidzIGJlaGF2aW9yLgorV2hlbiB0d28gZGlzdGluY3QgaGVhZGluZ3Mgd291bGQgb3RoZXJ3 aXNlIHNoYXJlIGEgc2x1ZywgdGhlIGZpcnN0CitvY2N1cnJlbmNlIGluIGRvY3VtZW50IG9yZGVy IHdpbnMuIgorICAobGV0ICgodGFibGUgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFsKSkK KyAgICAgICAgOzsgUGVyLWFsZ29yaXRobSBkZWR1cGUgY291bnRlcnM6IGhvdyBtYW55IHRpbWVz IHRoaXMgYmFzZSBzbHVnCisgICAgICAgIDs7IGhhcyBiZWVuIHNlZW4gc28gZmFyIGluIGRvY3Vt ZW50IG9yZGVyLgorICAgICAgICAoZ2gtY291bnRzIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydl cXVhbCkpCisgICAgICAgIChwZC1jb3VudHMgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFs KSkKKyAgICAgICAgKHJvb3QgKHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rvd24pKSkK KyAgICAoZG9saXN0IChjYXAgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAg ICAgcm9vdAorICAgICAgICAgICAgICAgICAgJygoKGF0eF9oZWFkaW5nKSBAaCkKKyAgICAgICAg ICAgICAgICAgICAgKChzZXRleHRfaGVhZGluZykgQGgpKSkpCisgICAgICAobGV0KiAoKG5vZGUg KGNkciBjYXApKQorICAgICAgICAgICAgIChwb3MgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkK KyAgICAgICAgICAgICAocmF3IChzdHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSB0 KSkpCisgICAgICAgICAgICAgOzsgU3RyaXAgdGhlIGxlYWRpbmcgbWFya2VyICgjIyMgb3IgPT09 PS8tLS0tKS4KKyAgICAgICAgICAgICA7OyBGb3IgYXR4LCBkcm9wIGxlYWRpbmcgIydzIGFuZCBm b2xsb3dpbmcgc3BhY2UuCisgICAgICAgICAgICAgOzsgRm9yIHNldGV4dCwgZHJvcCB0aGUgdHJh aWxpbmcgdW5kZXJsaW5lIGxpbmUuCisgICAgICAgICAgICAgKHRleHQgKGNvbmQKKyAgICAgICAg ICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIlxcYCMrWyBcdF0qXFwoLio/XFwpWyBcdF0qIypb IFx0XSpcXCciIHJhdykKKyAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMSByYXcp KQorICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXFxgXFwoLio/XFwpXG5bPS1d K1sgXHRdKlxcJyIgcmF3KQorICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmluZyAxIHJh dykpCisgICAgICAgICAgICAgICAgICAgICh0IHJhdykpKQorICAgICAgICAgICAgIChzcGxpdCAo bWFya2Rvd24tdHMtLWhlYWRpbmctdGV4dC1hbmQtaWQgdGV4dCkpCisgICAgICAgICAgICAgKHZp c2libGUgKGNhciBzcGxpdCkpCisgICAgICAgICAgICAgKGV4cGxpY2l0IChjZHIgc3BsaXQpKSkK KyAgICAgICAgOzsgRXhwbGljaXQgeyNpZH0gd2lucyBvdXRyaWdodDsgZmlyc3Qgb2NjdXJyZW5j ZSBrZWVwcyBpdC4KKyAgICAgICAgKHdoZW4gKGFuZCBleHBsaWNpdCAobm90IChnZXRoYXNoIGV4 cGxpY2l0IHRhYmxlKSkpCisgICAgICAgICAgKHB1dGhhc2ggZXhwbGljaXQgcG9zIHRhYmxlKSkK KyAgICAgICAgOzsgQXV0byBzbHVncyAoR2l0SHViICsgUGFuZG9jKSwgZGVkdXBlZCBwZXIgYWxn b3JpdGhtLgorICAgICAgICAobGV0KiAoKGdoLWJhc2UgKG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1 YiB2aXNpYmxlKSkKKyAgICAgICAgICAgICAgIChwZC1iYXNlIChtYXJrZG93bi10cy0tc2x1Zy1w YW5kb2MgdmlzaWJsZSkpCisgICAgICAgICAgICAgICAoZ2gtbiAoZ2V0aGFzaCBnaC1iYXNlIGdo LWNvdW50cyAwKSkKKyAgICAgICAgICAgICAgIChwZC1uIChnZXRoYXNoIHBkLWJhc2UgcGQtY291 bnRzIDApKQorICAgICAgICAgICAgICAgKGdoLWlkIChpZiAoemVyb3AgZ2gtbikgZ2gtYmFzZQor ICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMtJWQiIGdoLWJhc2UgZ2gtbikpKQor ICAgICAgICAgICAgICAgKHBkLWlkIChpZiAoemVyb3AgcGQtbikgcGQtYmFzZQorICAgICAgICAg ICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMtJWQiIHBkLWJhc2UgcGQtbikpKSkKKyAgICAgICAg ICAocHV0aGFzaCBnaC1iYXNlICgxKyBnaC1uKSBnaC1jb3VudHMpCisgICAgICAgICAgKHB1dGhh c2ggcGQtYmFzZSAoMSsgcGQtbikgcGQtY291bnRzKQorICAgICAgICAgIDs7IEZpcnN0LXdyaXRl ci13aW5zIHNvIGRvY3VtZW50IG9yZGVyIHRpZWJyZWFrcyBjb2xsaXNpb25zLgorICAgICAgICAg ICh1bmxlc3MgKGdldGhhc2ggZ2gtaWQgdGFibGUpIChwdXRoYXNoIGdoLWlkIHBvcyB0YWJsZSkp CisgICAgICAgICAgKHVubGVzcyAoZ2V0aGFzaCBwZC1pZCB0YWJsZSkgKHB1dGhhc2ggcGQtaWQg cG9zIHRhYmxlKSkpKSkKKyAgICB0YWJsZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taGVhZGlu Zy1pZHMgKCkKKyAgIlJldHVybiB0aGUgaGVhZGluZy1pZCBoYXNoIHRhYmxlIGZvciB0aGUgY3Vy cmVudCBidWZmZXIuCitDYWNoZSBpcyByZWJ1aWx0IG9ubHkgd2hlbiBgYnVmZmVyLWNoYXJzLW1v ZGlmaWVkLXRpY2snIGhhcyBhZHZhbmNlZAorc2luY2UgdGhlIGxhc3QgY2FsbCAobWlycm9ycyBg bWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlJykuIgorICAobGV0ICgodGljayAoYnVmZmVyLWNo YXJzLW1vZGlmaWVkLXRpY2spKSkKKyAgICAodW5sZXNzIChlcSB0aWNrIG1hcmtkb3duLXRzLS1o ZWFkaW5nLWlkLWNhY2hlLXRpY2spCisgICAgICAoc2V0cSBtYXJrZG93bi10cy0taGVhZGluZy1p ZC1jYWNoZSAobWFya2Rvd24tdHMtLWJ1aWxkLWhlYWRpbmctaWRzKQorICAgICAgICAgICAgbWFy a2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUtdGljayB0aWNrKSkKKyAgICBtYXJrZG93bi10cy0t aGVhZGluZy1pZC1jYWNoZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9sbG93LWZyYWdtZW50 IChpZCkKKyAgIkp1bXAgdG8gdGhlIGhlYWRpbmcgd2hvc2Ugc2x1ZyBtYXRjaGVzIElEICh3aXRo b3V0IGxlYWRpbmcgYCMnKS4KK1B1c2hlcyB0aGUgbWFyayBiZWZvcmUgbW92aW5nIHNvIGBDLXUg Qy1TUEMnIHJldHVybnMuICBTaWduYWxzCitgdXNlci1lcnJvcicgaWYgbm8gaGVhZGluZyBtYXRj aGVzLiIKKyAgKGlmLWxldCogKChwb3MgKGdldGhhc2ggaWQgKG1hcmtkb3duLXRzLS1oZWFkaW5n LWlkcykpKSkKKyAgICAgIChwcm9nbgorICAgICAgICAocHVzaC1tYXJrKQorICAgICAgICAoZ290 by1jaGFyIHBvcykKKyAgICAgICAgKHJlY2VudGVyKSkKKyAgICAodXNlci1lcnJvciAiTm8gaGVh ZGluZyBmb3IgZnJhZ21lbnQ6ICMlcyIgaWQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250 aWZ5LWhlYWRpbmcgKG5vZGUgX292ZXJyaWRlIF9zdGFydCBfZW5kICZyZXN0IF8pCisgICJBcHBs eSB0aGUgaGVhZGluZyBmYWNlIHRvIE5PREUncyBmdWxsIGV4dGVudC4KK1VzZSBgZm9udC1sb2Nr LWFwcGVuZC10ZXh0LXByb3BlcnR5JyBkaXJlY3RseSBzbyB0aGUgZmFjZSBpcyBhcHBsaWVkCith Y3Jvc3MgdGhlIGVudGlyZSBoZWFkaW5nIGV2ZW4gd2hlbiBjaGlsZCBzdWItbm9kZXMgKGUuZy4g YW4gaW5saW5lCitsaW5rKSB3b3VsZCBvdGhlcndpc2UgcHJldmVudCB0aGUgcmVndWxhciB0cmVl LXNpdHRlciBmYWNlIHJ1bGUgZnJvbQorY292ZXJpbmcgdGhlbS4KKworRm9yIEFUWCBoZWFkaW5n cywgYWxzbyBmb250aWZ5IGFueSBvcHRpb25hbCB0cmFpbGluZyBjbG9zaW5nLWAjJworc2VxdWVu Y2UgYXMgYSBkZWxpbWl0ZXIuICBUaGUgdHJlZS1zaXR0ZXIgZ3JhbW1hciBkb2VzIG5vdCBwcm9k dWNlIGEKK3NlcGFyYXRlIG5vZGUgZm9yIHRoZXNlOyBwZXIgQ29tbW9uTWFyayB0aGV5IGFyZSBk ZWNvcmF0aXZlIGFuZAorbXVzdCBiZSBwcmVjZWRlZCBieSBhIHNwYWNlIG9yIHRhYi4iCisgIChs ZXQqICgodHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkpCisgICAgICAgICAobi1zdGFydCAo dHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgKG4tZW5kICAgKHRyZWVzaXQtbm9k ZS1lbmQgbm9kZSkpCisgICAgICAgICAoZmFjZSAoY29uZAorICAgICAgICAgICAgICAgICgoZXF1 YWwgdHlwZSAic2V0ZXh0X2hlYWRpbmciKQorICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMt c2V0ZXh0LWhlYWRpbmcpCisgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgKGxl dCAoKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgMCkpKQorICAgICAgICAgICAgICAg ICAgIChpbnRlcm4gKGZvcm1hdCAibWFya2Rvd24tdHMtaGVhZGluZy0lZCIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCAodHJlZXNpdC1ub2RlLXRleHQgbWFya2Vy IHQpKSkpKSkpKSkKKyAgICAoZm9udC1sb2NrLWFwcGVuZC10ZXh0LXByb3BlcnR5IG4tc3RhcnQg bi1lbmQgJ2ZhY2UgZmFjZSkKKyAgICAod2hlbiAoc3RyaW5nLXByZWZpeC1wICJhdHhfIiB0eXBl KQorICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgIChnb3RvLWNoYXIgbi1lbmQpCisgICAg ICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHRcbiIgbi1zdGFydCkKKyAgICAgICAgKGxldCAo KGxpbmUtZW5kIChwb2ludCkpKQorICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQi IG4tc3RhcnQpCisgICAgICAgICAgKGxldCAoKHRyYWlsaW5nLWVuZCAocG9pbnQpKSkKKyAgICAg ICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIjIiBuLXN0YXJ0KQorICAgICAgICAgICAgKGxl dCAoKHRyYWlsaW5nLXN0YXJ0IChwb2ludCkpKQorICAgICAgICAgICAgICAod2hlbiAoYW5kICg8 IHRyYWlsaW5nLXN0YXJ0IHRyYWlsaW5nLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAo PiB0cmFpbGluZy1zdGFydCBuLXN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1x IChjaGFyLWJlZm9yZSB0cmFpbGluZy1zdGFydCkgJyg/XHMgP1x0KSkpCisgICAgICAgICAgICAg ICAgKGZvbnQtbG9jay1wcmVwZW5kLXRleHQtcHJvcGVydHkKKyAgICAgICAgICAgICAgICAgdHJh aWxpbmctc3RhcnQgdHJhaWxpbmctZW5kCisgICAgICAgICAgICAgICAgICdmYWNlICdtYXJrZG93 bi10cy1kZWxpbWl0ZXIpCisgICAgICAgICAgICAgICAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1t YXJrdXAKKyAgICAgICAgICAgICAgICAgIDs7IEFsc28gaGlkZSB0aGUgc3BhY2UocykgcHJlY2Vk aW5nIHRoZSBjbG9zZXIgYW5kIGFueQorICAgICAgICAgICAgICAgICAgOzsgdHJhaWxpbmcgd2hp dGVzcGFjZSwgc28gdGhlIGhlYWRpbmcgbG9va3MgY2xlYW4uCisgICAgICAgICAgICAgICAgICAo bGV0ICgoaGlkZS1zdGFydCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGdvdG8tY2hhciB0cmFpbGluZy1zdGFydCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIgbi1zdGFy dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKQorICAg ICAgICAgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgaGlkZS1zdGFydCBsaW5lLWVuZAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkp KSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlIChub2RlIG92 ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBsaW5rIG9yIGltYWdlIHRleHQg Tk9ERSBhcyBhIGNsaWNrYWJsZSBidXR0b24uCitXb3JrcyBmb3IgaW5saW5lIGxpbmtzLCByZWZl cmVuY2UgbGlua3MsIHNob3J0Y3V0IGxpbmtzLCBhbmQKK2ltYWdlIGRlc2NyaXB0aW9ucy4gIFRo ZSBVUkwgaXMgdGFrZW4gZnJvbSBhIHNpYmxpbmcKK2BsaW5rX2Rlc3RpbmF0aW9uJyBub2RlIHdo ZW4gcHJlc2VudCwgb3IgcmVzb2x2ZWQgZnJvbSBhCitsaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9u LCBvciB0aGUgbm9kZSB0ZXh0IGl0c2VsZiBpcyB1c2VkIGFzCitmYWxsYmFjay4gIE9WRVJSSURF LCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnkt d2l0aC1vdmVycmlkZScuIgorICAobGV0ICgocGFyZW50ICh0cmVlc2l0LW5vZGUtcGFyZW50IG5v ZGUpKSkKKyAgICA7OyBXaGVuIE5PREUgaXMgYSBsaW5rX2xhYmVsIGluc2lkZSBhIGZ1bGxfcmVm ZXJlbmNlX2xpbmsgdGhhdAorICAgIDs7IGFsc28gaGFzIGEgbGlua190ZXh0LCBza2lwIGl0LCBs aW5rX3RleHQgaGFuZGxlcyB0aGF0IGxpbmsuCisgICAgKHVubGVzcyAoYW5kIChzdHJpbmc9ICh0 cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAibGlua19sYWJlbCIpCisgICAgICAgICAgICAgICAgICh0 cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVudCAiXFxgbGlua190ZXh0XFwnIikpCisgICAgICAo dHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICAgJ21hcmtkb3duLXRzLWxpbmsg b3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgICAgKGxldCogKChkZXN0ICh0cmVlc2l0LXNlYXJjaC1z dWJ0cmVlIHBhcmVudCAiXFxgbGlua19kZXN0aW5hdGlvblxcJyIpKQorICAgICAgICAgICAgICh1 cmwgKGlmIGRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXRleHQgZGVz dCB0KQorICAgICAgICAgICAgICAgICAgICA7OyBSZWZlcmVuY2UgbGlua3M6IHJlc29sdmUgdmlh IGxpbmtfbGFiZWwgb3IgbGlua190ZXh0LgorICAgICAgICAgICAgICAgICAgICAobGV0KiAoKGxh YmVsLW5vZGUgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYXJlbnQgIlxcYGxpbmtfbGFiZWxcXCciKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsYWJlbCAoaWYgbGFiZWwtbm9kZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRyaW0gKHRyZWVzaXQtbm9kZS10ZXh0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtbm9k ZSB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlxcWyIgIlxcXSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNp dC1ub2RlLXRleHQgbm9kZSB0KSkpKQorICAgICAgICAgICAgICAgICAgICAgIChvciAobWFya2Rv d24tdHMtLXJlc29sdmUtbGluay1yZWYgbGFiZWwpCisgICAgICAgICAgICAgICAgICAgICAgICAg IGxhYmVsKSkpKSkKKyAgICAgICAgKG1hcmtkb3duLXRzLS1tYWtlLWxpbmstYnV0dG9uCisgICAg ICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpIHVy bCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1hdXRvbGluayAobm9kZSBvdmVy cmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgYXV0b2xpbmsgTk9ERSAoVVJJIG9y IGVtYWlsKSBhcyBhIGNsaWNrYWJsZSBidXR0b24uCitGb3IgZW1haWwgYXV0b2xpbmtzLCB0aGUg VVJMIGlzIHByZWZpeGVkIHdpdGggXCJtYWlsdG86XCIuCitBbmdsZSBicmFja2V0IGRlbGltaXRl cnMgYXJlIGhpZGRlbiB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFu ZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJp ZGUnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisg ICAgICAgICAobm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAoaW5u ZXIgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcworICAgICAgICAgICAgICAgICAoMSsg bm9kZS1zdGFydCkgKDEtIG5vZGUtZW5kKSkpCisgICAgICAgICAodXJsIChpZiAoc3RyaW5nPSAo dHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImVtYWlsX2F1dG9saW5rIikKKyAgICAgICAgICAgICAg ICAgIChjb25jYXQgIm1haWx0bzoiIGlubmVyKQorICAgICAgICAgICAgICAgIGlubmVyKSkpCisg ICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisgICAgIG5vZGUtc3RhcnQgbm9kZS1l bmQgJ21hcmtkb3duLXRzLWxpbmsgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChtYXJrZG93bi10 cy0tbWFrZS1saW5rLWJ1dHRvbiBub2RlLXN0YXJ0IG5vZGUtZW5kIHVybCkKKyAgICAod2hlbiBt YXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3Rh cnQgKDErIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAn bWFya2Rvd24tdHMtLW1hcmt1cCkKKyAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAoMS0gbm9kZS1l bmQpIG5vZGUtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rv d24tdHMtLW1hcmt1cCkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVm LWxhYmVsIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBsaW5r IHJlZmVyZW5jZSBkZWZpbml0aW9uIGxhYmVsIE5PREUgYXMgYSBjbGlja2FibGUgYnV0dG9uLgor VGhlIGJyYWNrZXRzIGFuZCBjb2xvbiBhcmUgaGlkZGVuIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4K K09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0 LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQt bm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBu b2RlKSkKKyAgICAgICAgIChwYXJlbnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpCisgICAg ICAgICAoZGVzdC1ub2RlICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVudCAiXFxgbGlua19k ZXN0aW5hdGlvblxcJyIpKQorICAgICAgICAgKHVybCAod2hlbiBkZXN0LW5vZGUgKHRyZWVzaXQt bm9kZS10ZXh0IGRlc3Qtbm9kZSB0KSkpKQorICAgIDs7IEZvbnRpZnkgdGhlIGxhYmVsIHRleHQg KGluc2lkZSBicmFja2V0cykuCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisg ICAgICgxKyBub2RlLXN0YXJ0KSAoMS0gbm9kZS1lbmQpCisgICAgICdtYXJrZG93bi10cy1saW5r IG92ZXJyaWRlIHN0YXJ0IGVuZCkKKyAgICA7OyBNYWtlIGl0IGEgY2xpY2thYmxlIGJ1dHRvbi4K KyAgICAod2hlbiB1cmwKKyAgICAgIChtYXJrZG93bi10cy0tbWFrZS1saW5rLWJ1dHRvbiAoMSsg bm9kZS1zdGFydCkgKDEtIG5vZGUtZW5kKSB1cmwpKQorICAgIDs7IEhpZGUgIlsiIGJlZm9yZSBs YWJlbCBhbmQgIl06ICIgYmV0d2VlbiBsYWJlbCBhbmQgZGVzdGluYXRpb24uCisgICAgKHdoZW4g bWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0 YXJ0ICgxKyBub2RlLXN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUg J21hcmtkb3duLXRzLS1tYXJrdXApCisgICAgICAobGV0ICgoY29sb24tZW5kIChpZiBkZXN0LW5v ZGUgKHRyZWVzaXQtbm9kZS1zdGFydCBkZXN0LW5vZGUpCisgICAgICAgICAgICAgICAgICAgICAg ICAgKDErIG5vZGUtZW5kKSkpKQorICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKDEtIG5vZGUt ZW5kKSBjb2xvbi1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21h cmtkb3duLXRzLS1tYXJrdXApKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbGlu ay1yZWYtZGVzdGluYXRpb24gKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3QgXykKKyAgIkZv bnRpZnkgbGluayByZWZlcmVuY2UgZGVzdGluYXRpb24gTk9ERSBhbmQgaGlkZSB3aGVuIG1hcmt1 cCBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRv CitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKHRyZWVzaXQtZm9udGlmeS13 aXRoLW92ZXJyaWRlCisgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUt ZW5kIG5vZGUpCisgICAnbWFya2Rvd24tdHMtbGluay1kZXN0aW5hdGlvbiBvdmVycmlkZSBzdGFy dCBlbmQpCisgICh3aGVuIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgKHB1dC10ZXh0LXBy b3BlcnR5ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkK KyAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rvd24tdHMtLW1hcmt1cCkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxhdGV4LWJsb2NrLXZhbGlkLXAgKG5vZGUpCisgICJS ZXR1cm4gbm9uLW5pbCBpZiBsYXRleCBibG9jayBOT0RFIGlzIHdpdGhpbiBhIHNpbmdsZSBpbmxp bmUgc2NvcGUuCitUaGUgZ2xvYmFsIGlubGluZSBwYXJzZXIgY2FuIGNyZWF0ZSBmYWxzZSBgbGF0 ZXhfYmxvY2snIG1hdGNoZXMKK3NwYW5uaW5nIGFjcm9zcyBwYXJhZ3JhcGggYm91bmRhcmllcy4g IENoZWNrIHRoYXQgdGhlIG9wZW5pbmcgYW5kCitjbG9zaW5nIGRlbGltaXRlcnMgc2hhcmUgdGhl IHNhbWUgbWFya2Rvd24gYGlubGluZScgYW5jZXN0b3IuIgorICAobGV0ICgobm9kZS1zdGFydCAo dHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1lbmQgKDEtICh0cmVlc2l0 LW5vZGUtZW5kIG5vZGUpKSkpCisgICAgKHdoZW4tbGV0KiAoKG1kLXN0YXJ0ICh0cmVlc2l0LW5v ZGUtYXQgbm9kZS1zdGFydCAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAgIChtZC1lbmQgKHRy ZWVzaXQtbm9kZS1hdCBub2RlLWVuZCAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAgIChpbmxp bmUtc3RhcnQgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWQtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChu KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUt dHlwZSBuKSAiaW5saW5lIikpKSkKKyAgICAgICAgICAgICAgICAoaW5saW5lLWVuZCAodHJlZXNp dC1wYXJlbnQtdW50aWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWQtZW5kCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG4pCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAiaW5saW5lIikpKSkpCisg ICAgICAoZXEgKHRyZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtc3RhcnQpCisgICAgICAgICAgKHRy ZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtZW5kKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWxhdGV4LWJsb2NrIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAi Rm9udGlmeSBsYXRleCBibG9jayBOT0RFIGFuZCBoaWRlIGl0cyBkZWxpbWl0ZXJzIHdoZW4gbWFy a3VwIGlzIGhpZGRlbi4KK1NraXAgZm9udGlmaWNhdGlvbiBmb3IgZmFsc2UgbWF0Y2hlcyB0aGF0 IHNwYW4gYWNyb3NzIHBhcmFncmFwaCBib3VuZGFyaWVzLgorT1ZFUlJJREUsIFNUQVJULCBhbmQg RU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRl Jy4iCisgICh3aGVuIChtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCBub2RlKQorICAg ICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICdtYXJrZG93bi10cy1sYXRleCBv dmVycmlkZSBzdGFydCBlbmQpCisgICAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAg ICAgIChkb3RpbWVzIChpICh0cmVlc2l0LW5vZGUtY2hpbGQtY291bnQgbm9kZSkpCisgICAgICAg IChsZXQgKChjaGlsZCAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgaSkpKQorICAgICAgICAgICh3 aGVuIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgY2hpbGQpICJsYXRleF9zcGFuX2RlbGltaXRl ciIpCisgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKHRyZWVzaXQtbm9kZS1zdGFydCBj aGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBj aGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93 bi10cy0tbWFya3VwKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktYmFja3Ns YXNoLWVzY2FwZSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkg YmFja3NsYXNoIGVzY2FwZSBOT0RFLCBoaWRpbmcgdGhlIGJhY2tzbGFzaCB3aGVuIG1hcmt1cCBp cyBoaWRkZW4uCitTa2lwIGhpZGluZyBpbnNpZGUgYGxhdGV4X2Jsb2NrJyB3aGVyZSBiYWNrc2xh c2hlcyBhcmUgTGFUZVggc3ludGF4LgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNz ZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQg KChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChpbi1sYXRl eCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICJsYXRleF9ibG9jayIpKSkKKyAgICAodHJlZXNpdC1m b250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgbm9kZS1zdGFydCAoMSsgbm9kZS1zdGFydCkKKyAg ICAgJ21hcmtkb3duLXRzLWRlbGltaXRlciBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKHdoZW4g KGFuZCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCAobm90IGluLWxhdGV4KSkKKyAgICAgIChwdXQt dGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0ICgxKyBub2RlLXN0YXJ0KQorICAgICAgICAgICAgICAg ICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkpCisKKyhkZWZ2YXIg c2dtbC1jaGFyLW5hbWVzKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVudGl0eS1nZXQgIm9yZy9v cmctZW50aXRpZXMuZWwiKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHkgKHRl eHQpCisgICJEZWNvZGUgSFRNTCBlbnRpdHkgVEVYVCAoZS5nLiwgXCImYW1wO1wiKSB0byBpdHMg Y2hhcmFjdGVyIHN0cmluZy4KK1JldHVybiB0aGUgZGVjb2RlZCBzdHJpbmcsIG9yIG5pbCBpZiB0 aGUgZW50aXR5IGlzIHVua25vd24uIgorICAoY29uZAorICAgOzsgTnVtZXJpYyBoZXggJiN4MUY0 QTk7CisgICAoKHN0cmluZy1tYXRjaCAiXFxgJiN4XFwoW1s6eGRpZ2l0Ol1dK1xcKTtcXCciIHRl eHQpCisgICAgKGNoYXItdG8tc3RyaW5nIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcg MSB0ZXh0KSAxNikpKQorICAgOzsgTnVtZXJpYyBkZWNpbWFsICYjMTIzOworICAgKChzdHJpbmct bWF0Y2ggIlxcYCYjXFwoW1s6ZGlnaXQ6XV0rXFwpO1xcJyIgdGV4dCkKKyAgICAoY2hhci10by1z dHJpbmcgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAxIHRleHQpKSkpCisgICA7OyBO YW1lZCAmYW1wOyAmY29weTsgdmlhIG9yZy1lbnRpdGllcywgZmFsbCBiYWNrIHRvIHNnbWwtY2hh ci1uYW1lcworICAgKChzdHJpbmctbWF0Y2ggIlxcYCZcXChbWzphbG51bTpdXStcXCk7XFwnIiB0 ZXh0KQorICAgIChsZXQgKChuYW1lIChtYXRjaC1zdHJpbmcgMSB0ZXh0KSkpCisgICAgICAocmVx dWlyZSAnb3JnLWVudGl0aWVzKQorICAgICAgKGlmLWxldCogKChlbnRyeSAob3JnLWVudGl0eS1n ZXQgbmFtZSkpCisgICAgICAgICAgICAgICAgKHV0ZjggKG50aCA2IGVudHJ5KSkpCisgICAgICAg ICAgdXRmOAorICAgICAgICAocmVxdWlyZSAnc2dtbC1tb2RlKQorICAgICAgICAod2hlbi1sZXQq ICgoY29kZSAoc2VxLXBvc2l0aW9uIHNnbWwtY2hhci1uYW1lcyBuYW1lICMnZXF1YWwpKSkKKyAg ICAgICAgICAoY2hhci10by1zdHJpbmcgY29kZSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1mb250aWZ5LWVudGl0eSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZv bnRpZnkgZW50aXR5IE5PREUgYW5kIHNob3cgaXRzIGRlY29kZWQgdmFsdWUgd2hlbiBtYXJrdXAg aXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0 bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQgKChub2RlLXN0YXJ0 ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1u b2RlLWVuZCBub2RlKSkKKyAgICAgICAgKGZhY2UgKGlmIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5 cGUgbm9kZSkgImVudGl0eV9yZWZlcmVuY2UiKQorICAgICAgICAgICAgICAgICAgJ21hcmtkb3du LXRzLWVudGl0eS1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtbnVtZXJp Yy1jaGFyYWN0ZXItcmVmZXJlbmNlKSkpCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJy aWRlIG5vZGUtc3RhcnQgbm9kZS1lbmQgZmFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKGlmIG1hcmtkb3duLXRzLWhpZGUtbWFy a3VwCisgICAgICAgICh3aGVuLWxldCogKChkZWNvZGVkIChtYXJrZG93bi10cy0tZGVjb2RlLWVu dGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IG5v ZGUgdCkpKQorICAgICAgICAgICAgICAgICAgICAoKGNoYXItZGlzcGxheWFibGUtcCAoYXJlZiBk ZWNvZGVkIDApKSkpCisgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3RhcnQgbm9k ZS1lbmQgJ2Rpc3BsYXkgZGVjb2RlZCkpCisgICAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyBu b2RlLXN0YXJ0IG5vZGUtZW5kICcoZGlzcGxheSBuaWwpKSkpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtLXJlc29sdmUtZGlzcGxheS12YWx1ZSAodmFsKQorICAiUmVzb2x2ZSBWQUwsIGEgY29ucyAo UFJFRkVSUkVEIC4gRkFMTEJBQ0spLCB0byBhIGRpc3BsYXlhYmxlIHZhbHVlLgorUmV0dXJuIFBS RUZFUlJFRCBpZiBpdHMgZmlyc3QgY2hhcmFjdGVyIHBhc3NlcyBgY2hhci1kaXNwbGF5YWJsZS1w JywKK290aGVyd2lzZSByZXR1cm4gRkFMTEJBQ0suICBSZXR1cm4gbmlsIGlmIFZBTCBpcyBuaWwu IgorICAod2hlbiB2YWwKKyAgICAobGV0KiAoKHByZWZlcnJlZCAoY2FyIHZhbCkpCisgICAgICAg ICAgIChjaCAoaWYgKGNoYXJhY3RlcnAgcHJlZmVycmVkKSBwcmVmZXJyZWQgKGFyZWYgcHJlZmVy cmVkIDApKSkpCisgICAgICAoaWYgKGNoYXItZGlzcGxheWFibGUtcCBjaCkgKGNhciB2YWwpIChj ZHIgdmFsKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94IChub2Rl IG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSB0YXNrIGxpc3QgY2hlY2ti b3ggTk9ERSwgc2hvdyBhIFVuaWNvZGUgc3ltYm9sIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK09W RVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZv bnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9k ZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2Rl KSkKKyAgICAgICAgIChjaGVja2VkIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgInRh c2tfbGlzdF9tYXJrZXJfY2hlY2tlZCIpKQorICAgICAgICAgKGZhY2UgKGlmIGNoZWNrZWQgJ21h cmtkb3duLXRzLXRhc2stY2hlY2tlZAorICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtdGFz ay11bmNoZWNrZWQpKQorICAgICAgICAgKHZhbHVlIChpZiBjaGVja2VkCisgICAgICAgICAgICAg ICAgICAgIG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3gKKyAgICAgICAgICAgICAgICAgIG1h cmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveCkpCisgICAgICAgICAocmVwbGFjZW1lbnQKKyAg ICAgICAgICAoY29uZCAoKGVxIHZhbHVlICdpY29uKQorICAgICAgICAgICAgICAgICAoaWNvbi1z dHJpbmcgKGlmIGNoZWNrZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFy a2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveC1pY29uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2tib3gtaWNvbikpKQorICAgICAgICAg ICAgICAgICh0IChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVlIHZhbHVlKSkpKQor ICAgICAgICAgOzsgSWYgYGljb24tc3RyaW5nJyByZXR1cm5lZCBhbiBpbWFnZSwgaXRzIGBkaXNw bGF5JyBwcm9wZXJ0eQorICAgICAgICAgOzsgb24gY2hhciAwIGhvbGRzIHRoZSBhY3R1YWwgaW1h Z2Ugc3BlYzsgbmVzdGVkIGBkaXNwbGF5JworICAgICAgICAgOzsgcHJvcHMgYXJlIG5vdCBob25v cmVkIHdoZW4gYSBzdHJpbmcgaXMgdGhlIHZhbHVlIG9mIGEKKyAgICAgICAgIDs7IGBkaXNwbGF5 JyB0ZXh0LXByb3BlcnR5LCBzbyBhcHBseSB0aGUgc3BlYyBkaXJlY3RseS4KKyAgICAgICAgIChk aXNwbGF5LXNwZWMKKyAgICAgICAgICAob3IgKGFuZCAoZXEgdmFsdWUgJ2ljb24pIHJlcGxhY2Vt ZW50CisgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5IDAgJ2Rpc3BsYXkgcmVw bGFjZW1lbnQpKQorICAgICAgICAgICAgICByZXBsYWNlbWVudCkpKQorICAgICh0cmVlc2l0LWZv bnRpZnktd2l0aC1vdmVycmlkZSBub2RlLXN0YXJ0IG5vZGUtZW5kIGZhY2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChpZiAoYW5k IG1hcmtkb3duLXRzLWhpZGUtbWFya3VwIHJlcGxhY2VtZW50CisgICAgICAgICAgICAgKG9yIChl cSB2YWx1ZSAnaWNvbikKKyAgICAgICAgICAgICAgICAgKGNoYXItZGlzcGxheWFibGUtcCAoYXJl ZiByZXBsYWNlbWVudCAwKSkpKQorICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgbm9kZS1zdGFy dCBub2RlLWVuZCAnZGlzcGxheSBkaXNwbGF5LXNwZWMpCisgICAgICAocmVtb3ZlLXRleHQtcHJv cGVydGllcyBub2RlLXN0YXJ0IG5vZGUtZW5kICcoZGlzcGxheSBuaWwpKSkpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWZvbnRpZnktaGFyZC1saW5lLWJyZWFrIChub2RlIG92ZXJyaWRlIHN0YXJ0 IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBoYXJkIGxpbmUgYnJlYWsgTk9ERTsgc2hvdyBhIFVu aWNvZGUgc3ltYm9sIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK0EgYmFja3NsYXNoIGJyZWFrIGdl dHMgYG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gnIChvciBpdHMKK2AtaGlk ZGVuJyB2YXJpYW50IHdoZW4gbWFya3VwIGlzIGhpZGRlbik7IGEgdHJhaWxpbmctc3BhY2VzIGJy ZWFrIGdldHMKK2BtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UnIChvciBgLWhpZGRl bicpLiAgV2hlbiBoaWRkZW4sIGEKK2JhY2tzbGFzaCBicmVhayBpcyByZXBsYWNlZCBieSBhIHNp bmdsZSBgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrJworZ2x5cGg7IGEgdHJhaWxpbmctc3Bh Y2VzIGJyZWFrIHJlcGxhY2VzIGVhY2ggc3BhY2Ugd2l0aCB0aGUgZ2x5cGgsIHNvIHRoZSBydW4K K29mIHBpbGNyb3dzIGZpbGxzIHRoZSBsaW5lIHVwIHRvIHRoZSBuZXdsaW5lLgorT1ZFUlJJREUs IFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13 aXRoLW92ZXJyaWRlJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0 IG5vZGUpKQorICAgICAgICAgKG5vZGUtZW5kICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisg ICAgICAgICAodGV4dCAgICAgICAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSB0KSkKKyAgICAgICAg IChiYWNrc2xhc2ggIChhbmQgKD4gKGxlbmd0aCB0ZXh0KSAwKSAoZXEgKGFyZWYgdGV4dCAwKSA/ XFwpKSkKKyAgICAgICAgIDs7IERldGVybWluZSB0aGUgYWN0dWFsIHJhbmdlIHRvIGZvbnRpZnkg YW5kIHJlcGxhY2UuICBUaGUKKyAgICAgICAgIDs7IGhhcmRfbGluZV9icmVhayBub2RlIG1heSBu b3QgY292ZXIgdGhlIGZ1bGwgcnVuIG9mIHRyYWlsaW5nCisgICAgICAgICA7OyBzcGFjZXMsIHNv IHdhbGsgYmFjayBmcm9tIGVuZC1vZi1saW5lIG91cnNlbHZlcyBmb3IgdGhlCisgICAgICAgICA7 OyBzcGFjZXMgdmFyaWFudC4KKyAgICAgICAgIChyZWdpb24gICAgIChpZiBiYWNrc2xhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAoY29ucyBub2RlLXN0YXJ0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGlmIChhbmQgKD4gbm9kZS1lbmQgbm9kZS1zdGFydCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGNoYXItYmVmb3JlIG5vZGUtZW5k KSA/XG4pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS0gbm9kZS1lbmQp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLWVuZCkpCisgICAgICAgICAg ICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgIChn b3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoZW9s IChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMg KHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgZW9sKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFy cy1iYWNrd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiIChsaW5l LWJlZ2lubmluZy1wb3NpdGlvbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlb2wpKSkpKQorICAg ICAgICAgKHJlZ2lvbi1zdGFydCAoY2FyIHJlZ2lvbikpCisgICAgICAgICAocmVnaW9uLWVuZCAg IChjZHIgcmVnaW9uKSkKKyAgICAgICAgIChmYWNlICAgICAgIChjb25kCisgICAgICAgICAgICAg ICAgICAgICAgKChhbmQgYmFja3NsYXNoIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwKQorICAgICAg ICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaC1o aWRkZW4pCisgICAgICAgICAgICAgICAgICAgICAgKGJhY2tzbGFzaCAnbWFya2Rvd24tdHMtaGFy ZC1saW5lLWJyZWFrLWJhY2tzbGFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24t dHMtaGlkZS1tYXJrdXAKKyAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWhhcmQt bGluZS1icmVhay1zcGFjZS1oaWRkZW4pCisgICAgICAgICAgICAgICAgICAgICAgKHQgJ21hcmtk b3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZSkpKSkKKyAgICAodHJlZXNpdC1mb250aWZ5LXdp dGgtb3ZlcnJpZGUgcmVnaW9uLXN0YXJ0IHJlZ2lvbi1lbmQgZmFjZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgOzsgQWx3YXlzIHN0 YXJ0IGJ5IGNsZWFyaW5nIGFueSBzdGFsZSBgZGlzcGxheScgcHJvcGVydHkuICBXZSBuZXZlcgor ICAgIDs7IHNwYW4gdGhlIHRyYWlsaW5nIG5ld2xpbmUgd2l0aCBgZGlzcGxheScgKGl0IGNvbmZ1 c2VzCisgICAgOzsgcmVkaXNwbGF5J3MgY3Vyc29yIHBsYWNlbWVudCksIGFuZCB3ZSBvbmx5IHBh aW50IGEgc2luZ2xlCisgICAgOzsgY29tYmluZWQgc3RyaW5nIG9udG8gdGhlIGZpcnN0IGNoYXJh Y3RlciBvZiB0aGUgcnVuLCBsZWF2aW5nCisgICAgOzsgdGhlIHJlc3Qgb2YgdGhlIG1hcmt1cCBh bG9uZS4KKyAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyByZWdpb24tc3RhcnQgcmVnaW9uLWVu ZCAnKGRpc3BsYXkgbmlsKSkKKyAgICAod2hlbiBtYXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAg ICAgKGxldCogKChzcGVjIChpZiBiYWNrc2xhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgKG1h cmtkb3duLXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAg IG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpCisgICAgICAgICAgICAgICAg ICAgICBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UpKQorICAgICAgICAgICAgIChz dHIgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAoKG51bGwgc3BlYykgbmlsKQorICAgICAgICAg ICAgICAgICAgICgoY2hhcmFjdGVycCBzcGVjKSAoY2hhci10by1zdHJpbmcgc3BlYykpCisgICAg ICAgICAgICAgICAgICAgKChzdHJpbmdwIHNwZWMpIHNwZWMpCisgICAgICAgICAgICAgICAgICAg KChmdW5jdGlvbnAgc3BlYykKKyAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc3BlYyAoLSBy ZWdpb24tZW5kIHJlZ2lvbi1zdGFydCkpKSkpKQorICAgICAgICAod2hlbiAoYW5kIChzdHJpbmdw IHN0cikKKyAgICAgICAgICAgICAgICAgICAoPiAobGVuZ3RoIHN0cikgMCkKKyAgICAgICAgICAg ICAgICAgICAoY2hhci1kaXNwbGF5YWJsZS1wIChhcmVmIHN0ciAwKSkpCisgICAgICAgICAgKHB1 dC10ZXh0LXByb3BlcnR5IHJlZ2lvbi1zdGFydCAoMSsgcmVnaW9uLXN0YXJ0KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSBzdHIpCisgICAgICAgICAgOzsgRm9yIHRoZSB0 cmFpbGluZy1zcGFjZXMgdmFyaWFudCwgaGlkZSB0aGUgcmVtYWluaW5nCisgICAgICAgICAgOzsg c3BhY2VzIGluIHRoZSBydW4gc28gdGhlIGxpbmUgZG9lc24ndCBlbmQgd2l0aCBsZWZ0b3Zlcgor ICAgICAgICAgIDs7IHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIHN1YnN0aXR1dGVkIGdseXBoLiAgRWFj aCBwb3NpdGlvbgorICAgICAgICAgIDs7IGdldHMgaXRzIG93biBlbXB0eS1zdHJpbmcgYGRpc3Bs YXknIHNvIGN1cnNvciBwbGFjZW1lbnQKKyAgICAgICAgICA7OyBzdGF5cyB1bmFtYmlndW91cy4K KyAgICAgICAgICAodW5sZXNzIGJhY2tzbGFzaAorICAgICAgICAgICAgKGxldCAoKGkgKDErIHJl Z2lvbi1zdGFydCkpKQorICAgICAgICAgICAgICAod2hpbGUgKDwgaSByZWdpb24tZW5kKQorICAg ICAgICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBpICgxKyBpKSAnZGlzcGxheSAiIikKKyAg ICAgICAgICAgICAgICAoc2V0cSBpICgxKyBpKSkpKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtLWZvbnRpZnktdGhlbWF0aWMtYnJlYWsgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0 IF8pCisgICJGb250aWZ5IHRoZW1hdGljIGJyZWFrIE5PREUgYW5kIHNob3cgYSBsaW5lIHdoZW4g bWFya3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRo cm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0ICgobm9k ZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1lbmQgKHRy ZWVzaXQtbm9kZS1lbmQgbm9kZSkpKQorICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlk ZSBub2RlLXN0YXJ0IG5vZGUtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdtYXJrZG93bi10cy10aGVtYXRpYy1icmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKGxldCAoKGNoYXIgKG1hcmtkb3duLXRz LS1yZXNvbHZlLWRpc3BsYXktdmFsdWUKKyAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtdGhl bWF0aWMtYnJlYWstY2hhcmFjdGVyKSkpCisgICAgICAoaWYgKGFuZCBtYXJrZG93bi10cy1oaWRl LW1hcmt1cCBjaGFyIChjaGFyLWRpc3BsYXlhYmxlLXAgY2hhcikpCisgICAgICAgICAgKGxldCog KChjb2wgKHNhdmUtZXhjdXJzaW9uIChnb3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCisgICAgICAgICAg ICAgICAgIDs7IFNwYW4gaWYgdGhlIGZhY2UgaGFzIG5vbi1uaWwgOmV4dGVuZC4KKyAgICAgICAg ICAgICAgICAgKHNwYW4tbGVuZ3RoIChpZiAoZmFjZS1hdHRyaWJ1dGUgJ21hcmtkb3duLXRzLXRo ZW1hdGljLWJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpleHRlbmQgbmlsICdkZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgtICh3aW5kb3ctYm9keS13aWR0aCkgY29sKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAxMikpKQorICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3Rh cnQgbm9kZS1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1ha2Utc3RyaW5nIHNwYW4tbGVuZ3RoIGNoYXIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJcbiIpKSkKKyAgICAgICAgKHJlbW92ZS10ZXh0LXByb3BlcnRp ZXMgbm9kZS1zdGFydCBub2RlLWVuZCAnKGRpc3BsYXkgbmlsKSkpKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tZm9udGlmeS1jb2RlLWJsb2NrIChub2RlIF9vdmVycmlkZSBfc3RhcnQgX2VuZCAm cmVzdCBfKQorICAiRm9udGlmeSBjb2RlIGJsb2NrIGNvbnRlbnQgTk9ERSB3aXRoIGEgYmFja2dy b3VuZCBvdmVybGF5LgorVXNlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1hcmt1cC1oaWRkZW4n IHdoZW4gbWFya3VwIGlzIGhpZGRlbiwKK2BtYXJrZG93bi10cy1jb2RlLWJsb2NrJyBvdGhlcndp c2UuICBVc2UgYW4gb3ZlcmxheSBzbyB0aGUKK2JhY2tncm91bmQgbGF5ZXJzIGl0c2VsZiBiZWhp bmQgbGFuZ3VhZ2Utc3BlY2lmaWMgZm9udGlmaWNhdGlvbi4KK1RoZSBvdmVybGF5IGFsc28gc3Rv cmVzIHRoZSBjb2RlIGJsb2NrIGxhbmd1YWdlIGFuZCBtb2RlIGFzCitwcm9wZXJ0aWVzIGBtYXJr ZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlJyBhbmQKK2BtYXJrZG93bi10cy1jb2RlLWJsb2Nr LW1vZGUnLCBhY2Nlc3NpYmxlIHZpYQorYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2Ut YXQnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAg ICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAg ICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKQorICAgICAgICAgKG5v ZGUtZW5kIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo dHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJz LWJhY2t3YXJkICIgXHQiKQorICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAg ICAoZmFjZSAoaWYgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgICAgICAgICAgICAgICAn bWFya2Rvd24tdHMtY29kZS1ibG9jay1tYXJrdXAtaGlkZGVuCisgICAgICAgICAgICAgICAgICdt YXJrZG93bi10cy1jb2RlLWJsb2NrKSkKKyAgICAgICAgIChsYW5nIChtYXJrZG93bi10cy0tbGFu Z3VhZ2UtYXQtbm9kZSBub2RlKSkKKyAgICAgICAgIChtb2RlICh3aGVuIGxhbmcKKyAgICAgICAg ICAgICAgICAgKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgbGFuZykpKQor ICAgICAgICAgKGV4aXN0aW5nIChzZXEtZmluZCAobGFtYmRhIChvdikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAob3ZlcmxheS1nZXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2sp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheXMtYXQgbm9kZS1zdGFydCkp KSkKKyAgICAoaWYgZXhpc3RpbmcKKyAgICAgICAgKHByb2duCisgICAgICAgICAgKG1vdmUtb3Zl cmxheSBleGlzdGluZyBub2RlLXN0YXJ0IG5vZGUtZW5kKQorICAgICAgICAgIChvdmVybGF5LXB1 dCBleGlzdGluZyAnZmFjZSBmYWNlKQorICAgICAgICAgIChvdmVybGF5LXB1dCBleGlzdGluZyAn bWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSBsYW5nKQorICAgICAgICAgIChvdmVybGF5 LXB1dCBleGlzdGluZyAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlIG1vZGUpKQorICAgICAg KGxldCAoKG92IChtYWtlLW92ZXJsYXkgbm9kZS1zdGFydCBub2RlLWVuZCBuaWwgdCBuaWwpKSkK KyAgICAgICAgOzsgTWFya2VycyBuZWVkIHRvIGJlIHNldCBvbmx5IG9uY2UuCisgICAgICAgIChv dmVybGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1iZWctbWFya2VyIChzZXQtbWFya2VyICht YWtlLW1hcmtlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbm9kZS1zdGFydCkpCisgICAgICAgIChvdmVybGF5LXB1dCBv diAnbWFya2Rvd24tdHMtY29kZS1lbmQtbWFya2VyIChzZXQtbWFya2VyIChtYWtlLW1hcmtlcikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbm9kZS1lbmQpKQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRz LWNvZGUtYmxvY2sgdCkKKyAgICAgICAgKG92ZXJsYXktcHV0IG92ICdmYWNlIGZhY2UpCisgICAg ICAgIChvdmVybGF5LXB1dCBvdiAncHJpb3JpdHkgJyhuaWwgLiAxMCkpCisgICAgICAgIChvdmVy bGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSBsYW5nKQorICAgICAg ICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZSBtb2RlKQorICAg ICAgICAob3ZlcmxheS1wdXQgb3YgJ2V2YXBvcmF0ZSB0KSkpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLWF0LWNvZGUtYmxvY2stcCAoJm9wdGlvbmFsIHBvcykKKyAgIlJldHVybiBub24gbmlsIGlm IHBvaW50IGlzIGluIGEgY29kZSBibG9jay4KK0lmIFBPUyBpcyBuaWwsIHVzZSBwb2ludC4iCisg IChnZXQtY2hhci1wcm9wZXJ0eSAob3IgcG9zIChwb2ludCkpICdtYXJrZG93bi10cy1jb2RlLWJs b2NrKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2UtYXQgKCZvcHRp b25hbCBwb3MpCisgICJSZXR1cm4gdGhlIGxhbmd1YWdlIHN5bWJvbCBvZiB0aGUgY29kZSBibG9j ayBhdCBQT1MuCitJZiBQT1MgaXMgbmlsLCB1c2UgcG9pbnQuICBSZXR1cm5zIG5pbCBpZiBQT1Mg aXMgbm90IGluc2lkZSBhIGZlbmNlZAorY29kZSBibG9jay4gIFRoaXMgd29ya3MgcmVnYXJkbGVz cyBvZiB3aGV0aGVyIGEgZ3Vlc3QgdHJlZS1zaXR0ZXIgcGFyc2VyCitpcyBhY3RpdmUsIHNpbmNl IHRoZSBsYW5ndWFnZSBpcyBzdG9yZWQgb24gdGhlIGNvZGUgYmxvY2sgb3ZlcmxheSBieSB0aGUK K2hvc3QgcGFyc2VyJ3MgZm9udGlmaWNhdGlvbi4iCisgIChnZXQtY2hhci1wcm9wZXJ0eSAob3Ig cG9zIChwb2ludCkpICdtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1hdCAoJm9wdGlvbmFsIHBvcykKKyAgIlJldHVy biB0aGUgbWFqb3IgbW9kZSBmb3IgdGhlIGNvZGUgYmxvY2sgYXQgUE9TLgorSWYgUE9TIGlzIG5p bCwgdXNlIHBvaW50LiAgUmV0dXJucyBuaWwgaWYgUE9TIGlzIG5vdCBpbnNpZGUgYSBmZW5jZWQK K2NvZGUgYmxvY2sgb3IgaWYgdGhlIGxhbmd1YWdlIGhhcyBubyByZWNvZ25pemVkIG1vZGUuIgor ICAod2hlbiAobWFya2Rvd24tdHMtYXQtY29kZS1ibG9jay1wIHBvcykKKyAgICAob3IgKGdldC1j aGFyLXByb3BlcnR5IChvciBwb3MgKHBvaW50KSkgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9k ZSkKKyAgICAgICAgbWFya2Rvd24tdHMtZGVmYXVsdC1jb2RlLWJsb2NrLW1vZGUpKSkKKworKGRl ZnVuIG1hcmtkb3duLXRzLS1ob3N0LXJhbmdlcy1ub3RpZmllciAocmFuZ2VzIF9wYXJzZXIpCisg ICJQcnVuZSBzdGFsZSBjb2RlIGJsb2NrIG92ZXJsYXlzIGFmdGVyIHRoZSBob3N0IHBhcnNlciBy ZXBhcnNlcy4KK1JBTkdFUyBpcyBhIGxpc3Qgb2YgKFNUQVJUIC4gRU5EKSBjb25zIGNlbGxzIG1h cmtpbmcgcmVnaW9ucyB3aGVyZQordGhlIG1hcmtkb3duIHBhcnNlIHRyZWUgY2hhbmdlZC4gIEZv ciBlYWNoIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrJworb3ZlcmxheSBpbnRlcnNlY3RpbmcgYSBj aGFuZ2VkIHJhbmdlLCB2ZXJpZnkgdGhhdCBhIGNvbnRhaW5pbmcKK2BmZW5jZWRfY29kZV9ibG9j aycgbm9kZSBzdGlsbCBleGlzdHMgaW4gdGhlIGhvc3QgdHJlZS4gIElmIG5vdCwKK3RoZSBmZW5j ZXMgd2VyZSBkZWxldGVkLCBzbyBkZWxldGUgdGhlIG92ZXJsYXkgdG8gYXZvaWQgcnVubmluZwor Y29tbWFuZHMgaW4gYSBzdGFsZSBibG9jayBjb250ZXh0LiIKKyAgKGRvbGlzdCAocmFuZ2UgcmFu Z2VzKQorICAgIChsZXQgKChiZWcgKGNhciByYW5nZSkpCisgICAgICAgICAgKGVuZCAoY2RyIHJh bmdlKSkpCisgICAgICAoZG9saXN0IChvdiAob3ZlcmxheXMtaW4gYmVnIGVuZCkpCisgICAgICAg ICh3aGVuIChvdmVybGF5LWdldCBvdiAnbWFya2Rvd24tdHMtY29kZS1ibG9jaykKKyAgICAgICAg ICAobGV0KiAoKG92LXN0YXJ0IChvdmVybGF5LXN0YXJ0IG92KSkKKyAgICAgICAgICAgICAgICAg KG5vZGUgKGFuZCBvdi1zdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0 LW5vZGUtYXQgb3Ytc3RhcnQgJ21hcmtkb3duKSkpKQorICAgICAgICAgICAgKHVubGVzcyAoYW5k IG5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSAiXFxgZmVuY2VkX2NvZGVfYmxvY2tcXCciIHQp KQorICAgICAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgb3YpKSkpKSkpKQorCis7OzsgSW1hZ2Ug aGFuZGxpbmc6CisKKyhkZWZ1biBtYXJrZG93bi10cy0taW1hZ2UtYWxvbmUtb24tbGluZS1wIChu b2RlKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgaW1hZ2UgTk9ERSBpcyB0aGUgb25seSBjb250ZW50 IG9uIGl0cyBsaW5lLgorV2hpdGVzcGFjZSwgYmxvY2sgcXVvdGUgbWFya2VycyAoYD4nKSwgYW5k IGxpc3QgbWFya2VycworXChgLScsIGAqJywgYCsnLCBgMS4nKSBiZWZvcmUgdGhlIGltYWdlIGFy ZSBpZ25vcmVkLiIKKyAgKGxldCAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2Rl KSkKKyAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAgICAoc2F2 ZS1leGN1cnNpb24KKyAgICAgIChnb3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgIChsZXQgKChi b2wgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkKKyAgICAgICAgICAgIChlb2wgKGxpbmUtZW5k LXBvc2l0aW9uKSkpCisgICAgICAgIDs7IEJlZm9yZSB0aGUgaW1hZ2U6IG9ubHkgYmxvY2sgcXVv dGUgbWFya2Vycywgd2hpdGVzcGFjZSwKKyAgICAgICAgOzsgYW5kIGFuIG9wdGlvbmFsIGxpc3Qg bWFya2VyIGFyZSBhbGxvd2VkLgorICAgICAgICAoYW5kIChzdHJpbmctbWF0Y2gtcAorICAgICAg ICAgICAgICAocnggYm9zCisgICAgICAgICAgICAgICAgICAoemVyby1vci1tb3JlIChhbnkgIj4g XHQiKSkKKyAgICAgICAgICAgICAgICAgIChvcHRpb25hbCAob3IgKHNlcSAoYW55ICItKisiKSAi ICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEgKG9uZS1vci1tb3JlIGRp Z2l0KSAoYW55ICIuKSIgKSAiICIpKSkKKyAgICAgICAgICAgICAgICAgIGVvcykKKyAgICAgICAg ICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBib2wgbm9kZS1zdGFydCkpCisg ICAgICAgICAgICAgOzsgQWZ0ZXIgdGhlIGltYWdlOiBvbmx5IHRyYWlsaW5nIHdoaXRlc3BhY2Ug YWxsb3dlZC4KKyAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoLXAKKyAgICAgICAgICAgICAgKHJ4 IGJvcyAoemVyby1vci1tb3JlIChhbnkgIiBcdCIpKSBlb3MpCisgICAgICAgICAgICAgIChidWZm ZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgbm9kZS1lbmQgZW9sKSkpKSkpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWZvbnRpZnktaW1hZ2UgKG5vZGUgX292ZXJyaWRlIF9zdGFydCBfZW5kICZy ZXN0IF8pCisgICJTaG93IGFuIGlubGluZSBpbWFnZSBhdCBOT0RFLgorV2hlbiBgbWFya2Rvd24t dHMtaW5saW5lLWltYWdlcycgaXMgbm9uLW5pbCwgZGlzcGxheSB0aGUgaW1hZ2UuCitJZiB0aGUg aW1hZ2UgbGluayBpcyB0aGUgb25seSBjb250ZW50IG9uIGl0cyBsaW5lLCBkaXNwbGF5IHRoZQor aW1hZ2UgYmVsb3cgdGhlIGxpbmsuICBJZiB0aGUgaW1hZ2UgaXMgaW5saW5lIHdpdGhpbiBhIHBh cmFncmFwaCwKK2Rpc3BsYXkgaXQgcmlnaHQgYWZ0ZXIgdGhlIGxpbmsgdGV4dC4KK1JlbW90ZSBp bWFnZXMgYXJlIGNvbnRyb2xsZWQgYnkKK2BtYXJrZG93bi10cy1kaXNwbGF5LXJlbW90ZS1pbmxp bmUtaW1hZ2VzJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5v ZGUpKQorICAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQorICAgICAg ICAgKGVvbCAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciBub2RlLWVuZCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICAgKHNlYXJj aC1lbmQgKG1pbiAoMSsgZW9sKSAocG9pbnQtbWF4KSkpKQorICAgIDs7IEFsd2F5cyBjbGVhciBz dGFsZSBvdmVybGF5cyBmb3IgdGhpcyBub2RlJ3MgcmFuZ2UuCisgICAgKGRvbGlzdCAob3YgKG92 ZXJsYXlzLWluIG5vZGUtc3RhcnQgc2VhcmNoLWVuZCkpCisgICAgICAod2hlbiAoYW5kIChvdmVy bGF5LWdldCBvdiAnbWFya2Rvd24tdHMtaW1hZ2UpCisgICAgICAgICAgICAgICAgICg+PSAob3Zl cmxheS1zdGFydCBvdikgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgKDw9IChvdmVybGF5 LWVuZCBvdikgc2VhcmNoLWVuZCkpCisgICAgICAgIChkZWxldGUtb3ZlcmxheSBvdikpKQorICAg ICh3aGVuIChhbmQgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcworICAgICAgICAgICAgICAgOzsg RG9uJ3QgY3JlYXRlIGltYWdlIG92ZXJsYXlzIGZvciBub2RlcyBpbnNpZGUKKyAgICAgICAgICAg ICAgIDs7IGZvbGRlZCAob3V0bGluZS1pbnZpc2libGUpIGhlYWRpbmdzLCBzaW5jZSB0aGUKKyAg ICAgICAgICAgICAgIDs7IGltYWdlcyB3b3VsZG4ndCBiZSB2aXNpYmxlIGFuZCBjb3VsZCBpbnRl cmZlcmUKKyAgICAgICAgICAgICAgIDs7IHdpdGggdGhlIGZvbGRlZCBkaXNwbGF5LgorICAgICAg ICAgICAgICAgKG5vdCAobWFya2Rvd24tdHMtLW91dGxpbmUtaW52aXNpYmxlLXAgbm9kZS1zdGFy dCkpKQorICAgICAgKGxldCogKChkZXN0ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIG5vZGUgIlxc YGxpbmtfZGVzdGluYXRpb25cXCciKSkKKyAgICAgICAgICAgICAodXJsIChhbmQgZGVzdCAodHJl ZXNpdC1ub2RlLXRleHQgZGVzdCB0KSkpCisgICAgICAgICAgICAgKHJlbW90ZXAgKGFuZCB1cmwg KHN0cmluZy1tYXRjaC1wICJcXGBodHRwcz86Ly8iIHVybCkpKQorICAgICAgICAgICAgIChkaXNw bGF5YWJsZQorICAgICAgICAgICAgICAod2hlbiB1cmwKKyAgICAgICAgICAgICAgICAoaWYgcmVt b3RlcAorICAgICAgICAgICAgICAgICAgICAod2hlbiAoZXEgbWFya2Rvd24tdHMtZGlzcGxheS1y ZW1vdGUtaW5saW5lLWltYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rvd25s b2FkKQorICAgICAgICAgICAgICAgICAgICAgIChpZ25vcmUtZXJyb3JzCisgICAgICAgICAgICAg ICAgICAgICAgICAocmVxdWlyZSAndXJsLWhhbmRsZXJzKQorICAgICAgICAgICAgICAgICAgICAg ICAgKHdpdGgtd29yay1idWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1idWZm ZXItbXVsdGlieXRlIG5pbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHVybC1pbnNlcnQt ZmlsZS1jb250ZW50cyB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Ry aW5nKSkpKQorICAgICAgICAgICAgICAgICAgKGxldCAoKGZpbGUgKGV4cGFuZC1maWxlLW5hbWUg dXJsKSkpCisgICAgICAgICAgICAgICAgICAgIChhbmQgKG5vdCAoZmlsZS1yZW1vdGUtcCBmaWxl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1leGlzdHMtcCBmaWxlKQorICAgICAg ICAgICAgICAgICAgICAgICAgIChpbWFnZS1zdXBwb3J0ZWQtZmlsZS1wIGZpbGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgZmlsZSkpKSkpCisgICAgICAgICAgICAgKG1heC13IChhbmQgZGlz cGxheWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGVxIG1hcmtkb3duLXRzLWlt YWdlLW1heC13aWR0aCAnd2luZG93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2lu ZG93LWJvZHktd2lkdGggbmlsIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93 bi10cy1pbWFnZS1tYXgtd2lkdGgpKSkKKyAgICAgICAgICAgICAoaW1nIChhbmQgbWF4LXcKKyAg ICAgICAgICAgICAgICAgICAgICAgKGNyZWF0ZS1pbWFnZSBkaXNwbGF5YWJsZSBuaWwgcmVtb3Rl cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXgtd2lkdGggbWF4LXcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2NhbGUgMSkpKSkKKyAgICAg ICAgKHdoZW4gaW1nCisgICAgICAgICAgKGxldCogKChhbG9uZSAobWFya2Rvd24tdHMtLWltYWdl LWFsb25lLW9uLWxpbmUtcCBub2RlKSkKKyAgICAgICAgICAgICAgICAgKHN0ciAoaWYgYWxvbmUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiXG4iIChwcm9wZXJ0aXplICIgIiAn ZGlzcGxheSBpbWcpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUgIiAiICdk aXNwbGF5IGltZykpKQorICAgICAgICAgICAgICAgICAob3YgKG1ha2Utb3ZlcmxheSAoMS0gbm9k ZS1lbmQpIG5vZGUtZW5kIG5pbCB0IG5pbCkpKQorICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92 ICdtYXJrZG93bi10cy1pbWFnZSB0KQorICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdhZnRl ci1zdHJpbmcgc3RyKQorICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdldmFwb3JhdGUgdCkp KSkpKSkKKworOzs7IFVSTC9VUkkgaGFuZGxpbmc6CisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtLWJh cmUtdXJsLXJlZ2V4cCBnb3RvLWFkZHJlc3MtdXJsLXJlZ2V4cAorICAiUmVnZXhwIG1hdGNoaW5n IGJhcmUgVVJMcyBub3Qgd3JhcHBlZCBpbiBhbmdsZSBicmFja2V0cyBvciBsaW5rIHN5bnRheC4i KQorCisoZGVmdmFyIG1hcmtkb3duLXRzLS1iYXJlLWVtYWlsLXVyaS1yZWdleHAgZ290by1hZGRy ZXNzLW1haWwtcmVnZXhwCisgICJSZWdleHAgbWF0Y2hpbmcgYmFyZSBlbWFpbCBhZGRyZXNzZXMg bm90IHdyYXBwZWQgaW4gYW5nbGUgYnJhY2tldHMuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWJhcmUtdXJpIChzdGFydCBlbmQpCisgICJGb250aWZ5IGJhcmUgVVJMIG9yIGVtYWls IFVSSSBiZXR3ZWVuIFNUQVJUIGFuZCBFTkQuCitTa2lwIG1hdGNoZXMgYWxyZWFkeSBpbnNpZGUg dHJlZS1zaXR0ZXIgbGluayBvciBhdXRvbGluayBub2Rlcy4iCisgIChkb2xpc3QgKHJlIChsaXN0 IG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHAKKyAgICAgICAgICAgICAgICAgICAgbWFya2Rv d24tdHMtLWJhcmUtZW1haWwtdXJpLXJlZ2V4cCkpCisgICAgKGdvdG8tY2hhciBzdGFydCkKKyAg ICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIHJlIGVuZCB0KQorICAgICAgKGxldCogKCh1cmkt c3RhcnQgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgICAgICAodXJpLWVuZCAobWF0Y2gt ZW5kIDApKQorICAgICAgICAgICAgICh1cmkgKG1hdGNoLXN0cmluZyAwKSkKKyAgICAgICAgICAg ICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IHVyaS1zdGFydCAnbWFya2Rvd24taW5saW5lKSkKKyAg ICAgICAgICAgICAocGFyZW50IChhbmQgbm9kZSAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkp CisgICAgICAgICAgICAgKHBhcmVudC10eXBlIChhbmQgcGFyZW50ICh0cmVlc2l0LW5vZGUtdHlw ZSBwYXJlbnQpKSkpCisgICAgICAgICh1bmxlc3MgKG9yIChtZW1iZXIgcGFyZW50LXR5cGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJpbmxpbmVfbGluayIgImZ1bGxfcmVmZXJlbmNl X2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sbGFwc2VkX3JlZmVyZW5j ZV9saW5rIiAic2hvcnRjdXRfbGluayIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJp bWFnZSIgInVyaV9hdXRvbGluayIgImVtYWlsX2F1dG9saW5rIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImxpbmtfZGVzdGluYXRpb24iKSkKKyAgICAgICAgICAgICAgICAgICAgKG1l bWJlciAoYW5kIG5vZGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcoInVyaV9hdXRvbGluayIgImVtYWlsX2F1dG9saW5rIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImxpbmtfZGVzdGluYXRpb24iICJjb2RlX3NwYW4iCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiY29kZV9mZW5jZV9jb250ZW50IiAiaW5mb19zdHJp bmciKSkKKyAgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5IHVyaS1zdGFydCAn YnV0dG9uKSkKKyAgICAgICAgICAobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24KKyAgICAg ICAgICAgdXJpLXN0YXJ0IHVyaS1lbmQKKyAgICAgICAgICAgKGlmIChlcSB1cmktc3RhcnQgMCkK KyAgICAgICAgICAgICAgIHVyaQorICAgICAgICAgICAgIChjb25jYXQgIm1haWx0bzoiIHVyaSkp KSkpKSkpCisKKzs7OyB0cmVlc2l0IHNldHRpbmdzOgorCiAoZGVmdmFyIG1hcmtkb3duLXRzLS10 cmVlc2l0LXNldHRpbmdzCiAgICh0cmVlc2l0LWZvbnQtbG9jay1ydWxlcworICAgOmxhbmd1YWdl ICdtYXJrZG93bgorICAgOmZlYXR1cmUgJ2Vycm9yCisgICA6b3ZlcnJpZGUgdAorICAgJygoRVJS T1IpIEBmb250LWxvY2std2FybmluZy1mYWNlKQorCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlu bGluZQogICAgOm92ZXJyaWRlIHQKICAgIDpmZWF0dXJlICdkZWxpbWl0ZXIKLSAgICcoKGlubGlu ZV9saW5rIFsgIlsiICJdIiAiKCIgIikiIF0gQHNoYWRvdykKLSAgICAgKGltYWdlIFsgIiEiICJb IiAiXSIgIigiICIpIiBdIEBzaGFkb3cpKQorICAgJygoaW5saW5lX2xpbmsgWyAiWyIgIl0iICIo IiAiKSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQorICAgICAoZnVsbF9yZWZl cmVuY2VfbGluayBbICJbIiAiXSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQor ICAgICAoY29sbGFwc2VkX3JlZmVyZW5jZV9saW5rIFsgIlsiICJdIiBdIEBtYXJrZG93bi10cy0t Zm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChzaG9ydGN1dF9saW5rIFsgIlsiICJdIiBdIEBtYXJr ZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChpbWFnZSBbICIhIiAiWyIgIl0iICIo IiAiKSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKSkKIAogICAgOmxhbmd1YWdl ICdtYXJrZG93bgogICAgOmZlYXR1cmUgJ2hlYWRpbmcKLSAgICcoKGF0eF9oZWFkaW5nIChhdHhf aDFfbWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctMQotICAgICAoYXR4X2hlYWRpbmcgKGF0 eF9oMl9tYXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy0yCi0gICAgIChhdHhfaGVhZGluZyAo YXR4X2gzX21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTMKLSAgICAgKGF0eF9oZWFkaW5n IChhdHhfaDRfbWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctNAotICAgICAoYXR4X2hlYWRp bmcgKGF0eF9oNV9tYXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy01Ci0gICAgIChhdHhfaGVh ZGluZyAoYXR4X2g2X21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTYKLSAgICAgKHNldGV4 dF9oZWFkaW5nKSBAbWFya2Rvd24tdHMtc2V0ZXh0LWhlYWRpbmcpCisgICAnKCgoYXR4X2hlYWRp bmcpICAgIEBtYXJrZG93bi10cy0tZm9udGlmeS1oZWFkaW5nKQorICAgICAoKHNldGV4dF9oZWFk aW5nKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktaGVhZGluZykpCiAKICAgIDpsYW5ndWFnZSAnbWFy a2Rvd24KICAgIDpmZWF0dXJlICdoZWFkaW5nCkBAIC0xOTQsMTYgKzE2MDcsNDAgQEAgbWFya2Rv d24tdHMtLXRyZWVzaXQtc2V0dGluZ3MKICAgICAgKGF0eF9oM19tYXJrZXIpIEBtYXJrZG93bi10 cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0eF9oNF9tYXJrZXIpIEBtYXJrZG93bi10cy0t Zm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0eF9oNV9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9u dGlmeS1kZWxpbWl0ZXIKLSAgICAgKGF0eF9oNl9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlm eS1kZWxpbWl0ZXIpCisgICAgIChhdHhfaDZfbWFya2VyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnkt ZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDFfdW5kZXJsaW5lKSBAbWFya2Rvd24tdHMtLWZvbnRp ZnktZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDJfdW5kZXJsaW5lKSBAbWFya2Rvd24tdHMtLWZv bnRpZnktZGVsaW1pdGVyKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCiAgICA6ZmVhdHVyZSAn cGFyYWdyYXBoCi0gICAnKCgodGhlbWF0aWNfYnJlYWspIEBtYXJrZG93bi10cy1kZWxpbWl0ZXIp Ci0gICAgICgoaW5kZW50ZWRfY29kZV9ibG9jaykgQGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAg ICcoKCh0aGVtYXRpY19icmVhaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LXRoZW1hdGljLWJyZWFr KQorICAgICAoKGh0bWxfYmxvY2spIEBtYXJrZG93bi10cy1odG1sLWJsb2NrKQorICAgICAoKGlu ZGVudGVkX2NvZGVfYmxvY2spIEBtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2NrKQogICAg ICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9zdGFyKSBAbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIp CiAgICAgIChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BsdXMpIEBtYXJrZG93bi10cy1saXN0LW1h cmtlcikKICAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfbWludXMpIEBtYXJrZG93bi10cy1s aXN0LW1hcmtlcikKLSAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfZG90KSBAbWFya2Rvd24t dHMtbGlzdC1tYXJrZXIpKQorICAgICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3QpIEBtYXJr ZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfcGFyZW50 aGVzaXMpIEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAodGFza19s aXN0X21hcmtlcl91bmNoZWNrZWQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1jaGVja2JveCkKKyAg ICAgKGxpc3RfaXRlbSAodGFza19saXN0X21hcmtlcl9jaGVja2VkKSBAbWFya2Rvd24tdHMtLWZv bnRpZnktY2hlY2tib3gpCisgICAgIChsaW5rX3JlZmVyZW5jZV9kZWZpbml0aW9uCisgICAgICAo bGlua19sYWJlbCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVmLWxhYmVsKQorICAgICAo bGlua19yZWZlcmVuY2VfZGVmaW5pdGlvbgorICAgICAgKGxpbmtfZGVzdGluYXRpb24pIEBtYXJr ZG93bi10cy0tZm9udGlmeS1saW5rLXJlZi1kZXN0aW5hdGlvbikKKyAgICAgKGxpbmtfcmVmZXJl bmNlX2RlZmluaXRpb24KKyAgICAgIChsaW5rX3RpdGxlKSBAbWFya2Rvd24tdHMtbGluay1kZXN0 aW5hdGlvbikpCisKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24KKyAgIDpmZWF0dXJlICdwYXJhZ3Jh cGgKKyAgIDpvdmVycmlkZSAncHJlcGVuZAorICAgJygocGlwZV90YWJsZV9oZWFkZXIgInwiIEBt YXJrZG93bi10cy10YWJsZS1oZWFkZXIpCisgICAgIChwaXBlX3RhYmxlX2hlYWRlciAocGlwZV90 YWJsZV9jZWxsKSBAbWFya2Rvd24tdHMtdGFibGUtaGVhZGVyKQorICAgICAocGlwZV90YWJsZV9y b3cgInwiIEBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2VsbCkKKyAgICAgKHBpcGVfdGFi bGVfcm93IChwaXBlX3RhYmxlX2NlbGwpIEBtYXJrZG93bi10cy10YWJsZS1jZWxsKQorICAgICAo cGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93ICJ8IiBAbWFya2Rvd24tdHMtdGFibGUtZGVsaW1pdGVy LWNlbGwpCisgICAgICgocGlwZV90YWJsZSkgQG1hcmtkb3duLXRzLXRhYmxlKQorICAgICAocGlw ZV90YWJsZV9kZWxpbWl0ZXJfcm93IChwaXBlX3RhYmxlX2RlbGltaXRlcl9jZWxsKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2Vs bCkpCiAKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24KICAgIDpmZWF0dXJlICdwYXJhZ3JhcGgKQEAg LTIxMiw4OSArMTY0OSw5OTkgQEAgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MKICAgICAg KGJsb2NrX3F1b3RlX21hcmtlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAg ICAoZmVuY2VkX2NvZGVfYmxvY2tfZGVsaW1pdGVyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVs aW1pdGVyCiAgICAgIChmZW5jZWRfY29kZV9ibG9jawotICAgICAgKGluZm9fc3RyaW5nIChsYW5n dWFnZSkgQG1hcmtkb3duLXRzLWxhbmd1YWdlLWtleXdvcmQpIEBtYXJrZG93bi10cy0tZm9udGlm eS1kZWxpbWl0ZXIpCisgICAgICAoaW5mb19zdHJpbmcgKGxhbmd1YWdlKSBAbWFya2Rvd24tdHMt bGFuZ3VhZ2Uta2V5d29yZCkKKyAgICAgIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIp CiAgICAgIChibG9ja19xdW90ZQogICAgICAgKGJsb2NrX3F1b3RlX21hcmtlcikgQG1hcmtkb3du LXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAgICAgKHBhcmFncmFwaCAoaW5saW5lIChibG9ja19j b250aW51YXRpb24pIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpKSkpCiAKKyAgIDps YW5ndWFnZSAnbWFya2Rvd24KKyAgIDpmZWF0dXJlICdwYXJhZ3JhcGgKKyAgIDpvdmVycmlkZSAn YXBwZW5kCisgICAnKChmZW5jZWRfY29kZV9ibG9jaworICAgICAgKGluZm9fc3RyaW5nIChsYW5n dWFnZSkpCisgICAgICAoY29kZV9mZW5jZV9jb250ZW50KSBAbWFya2Rvd24tdHMtLWZvbnRpZnkt bm9uLXRzLWNvZGUtYmxvY2spKQorCisgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCisgICA6ZmVhdHVy ZSAncGFyYWdyYXBoCisgICA6b3ZlcnJpZGUgJ2FwcGVuZAorICAgJygoZmVuY2VkX2NvZGVfYmxv Y2sgKGNvZGVfZmVuY2VfY29udGVudCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWNvZGUtYmxvY2sp KQorCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlubGluZQogICAgOm92ZXJyaWRlICdhcHBlbmQK ICAgIDpmZWF0dXJlICdwYXJhZ3JhcGgtaW5saW5lCi0gICAnKCgoaW1hZ2VfZGVzY3JpcHRpb24p IEBsaW5rKQotICAgICAoKGxpbmtfZGVzdGluYXRpb24pIEBmb250LWxvY2stc3RyaW5nLWZhY2Up Ci0gICAgICgoY29kZV9zcGFuKSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQorICAgJygoKGxpbmtf ZGVzdGluYXRpb24pIEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0aW9uKQorICAg ICAoKGNvZGVfc3BhbikgQG1hcmtkb3duLXRzLWNvZGUtc3BhbikKICAgICAgKChjb2RlX3NwYW5f ZGVsaW1pdGVyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQotICAgICAoKGVtcGhh c2lzKSBAaXRhbGljKQotICAgICAoKHN0cm9uZ19lbXBoYXNpcykgQGJvbGQpCi0gICAgIChpbmxp bmVfbGluayAobGlua190ZXh0KSBAbGluaykKLSAgICAgKGlubGluZV9saW5rIChsaW5rX2Rlc3Rp bmF0aW9uKSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQotICAgICAoc2hvcnRjdXRfbGluayAobGlu a190ZXh0KSBAbGluaykpCisgICAgICgoZW1waGFzaXMpIEBtYXJrZG93bi10cy1lbXBoYXNpcykK KyAgICAgKChzdHJvbmdfZW1waGFzaXMpIEBtYXJrZG93bi10cy1ib2xkKQorICAgICAoKHN0cmlr ZXRocm91Z2gpIEBtYXJrZG93bi10cy1zdHJpa2V0aHJvdWdoKQorICAgICAoaW5saW5lX2xpbmsg KGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAgKGZ1bGxf cmVmZXJlbmNlX2xpbmsgKGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9k ZSkKKyAgICAgKGZ1bGxfcmVmZXJlbmNlX2xpbmsgKGxpbmtfbGFiZWwpIEBtYXJrZG93bi10cy0t Zm9udGlmeS1saW5rLW5vZGUpCisgICAgIChjb2xsYXBzZWRfcmVmZXJlbmNlX2xpbmsgKGxpbmtf dGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAgKHNob3J0Y3V0X2xp bmsgKGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAgKGlt YWdlIChpbWFnZV9kZXNjcmlwdGlvbikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkK KyAgICAgKCh1cmlfYXV0b2xpbmspIEBtYXJrZG93bi10cy0tZm9udGlmeS1hdXRvbGluaykKKyAg ICAgKChlbWFpbF9hdXRvbGluaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LWF1dG9saW5rKQorICAg ICAoaW5saW5lX2xpbmsgKGxpbmtfdGl0bGUpIEBtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9u KQorICAgICAoKGJhY2tzbGFzaF9lc2NhcGUpIEBtYXJrZG93bi10cy0tZm9udGlmeS1iYWNrc2xh c2gtZXNjYXBlKQorICAgICAoKGVudGl0eV9yZWZlcmVuY2UpIEBtYXJrZG93bi10cy0tZm9udGlm eS1lbnRpdHkpCisgICAgICgobnVtZXJpY19jaGFyYWN0ZXJfcmVmZXJlbmNlKSBAbWFya2Rvd24t dHMtLWZvbnRpZnktZW50aXR5KQorICAgICAoKGh0bWxfdGFnKSBAbWFya2Rvd24tdHMtaHRtbC10 YWcpCisgICAgICgoaGFyZF9saW5lX2JyZWFrKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktaGFyZC1s aW5lLWJyZWFrKQorICAgICAoKGxhdGV4X2Jsb2NrKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGF0 ZXgtYmxvY2spKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlubGluZQogICAgOmZlYXR1cmUg J3BhcmFncmFwaC1pbmxpbmUKICAgIDpvdmVycmlkZSAnYXBwZW5kCiAgICAnKChlbXBoYXNpc19k ZWxpbWl0ZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCi0gICApKQogCi07Ozsg SW1lbnUKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24taW5saW5lCisgICA6ZmVhdHVyZSAnaW1hZ2Ut cHJldmlldworICAgOm92ZXJyaWRlICdhcHBlbmQKKyAgICcoKGltYWdlKSBAbWFya2Rvd24tdHMt LWZvbnRpZnktaW1hZ2UpKSkKKworOzs7IEltZW51OgogCi0oZGVmdW4gbWFya2Rvd24tdHMtaW1l bnUtbm9kZS1wIChub2RlKQorKGRlZnVuIG1hcmtkb3duLXRzLS1pbWVudS1oZWFkaW5nLW5vZGUt cCAobm9kZSkKICAgIkNoZWNrIGlmIE5PREUgaXMgYSB2YWxpZCBlbnRyeSB0byBpbWVudS4iCi0g IChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpCi0g ICAgICAgICAiYXR4X2hlYWRpbmciKSkKKyAgKGFuZCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBl IG5vZGUpICJpbmxpbmUiKQorICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgKHRyZWVz aXQtbm9kZS1wYXJlbnQgbm9kZSkpCisgICAgICAgICAgICAgICJhdHhfaGVhZGluZyIpKSkKIAot KGRlZnVuIG1hcmtkb3duLXRzLWltZW51LW5hbWUtZnVuY3Rpb24gKG5vZGUpCisoZGVmdW4gbWFy a2Rvd24tdHMtLWltZW51LWhlYWRpbmctbmFtZS1mdW5jdGlvbiAobm9kZSkKICAgIlJldHVybiBh biBpbWVudSBlbnRyeSBpZiBOT0RFIGlzIGEgdmFsaWQgaGVhZGVyLiIKICAgKGxldCAoKG5hbWUg KHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUpKSkKLSAgICAoaWYgKG1hcmtkb3duLXRzLWltZW51LW5v ZGUtcCBub2RlKQotCSh0aHJlYWQtZmlyc3QgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkgKHRy ZWVzaXQtbm9kZS10ZXh0KSkKKyAgICAoaWYgKG1hcmtkb3duLXRzLS1pbWVudS1oZWFkaW5nLW5v ZGUtcCBub2RlKQorICAgICAgICAoY2FyIChzcGxpdC1zdHJpbmcgKHRyZWVzaXQtbm9kZS10ZXh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIiB0ICIgIikpCiAgICAgICBuYW1lKSkpCiAK LShkZWZ1biBtYXJrZG93bi10cy1vdXRsaW5lLXByZWRpY2F0ZSAobm9kZSkKLSAgIk1hdGNoIGEg aGllcmFyY2hpY2FsIHNlY3Rpb24gdGhhdCBoYXMgYSBoZWFkaW5nLiIKKyhkZWZ1biBtYXJrZG93 bi10cy0taW1lbnUtY29kZS1ibG9jay1ub2RlLXAgKG5vZGUpCisgICJDaGVjayBpZiBOT0RFIGlz IGFuIGluZm9fc3RyaW5nIHdpdGggZGVzY3JpcHRpdmUgdGV4dCBhZnRlciB0aGUgbGFuZ3VhZ2Uu IgorICAoYW5kIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImluZm9fc3RyaW5nIikK KyAgICAgICAod2hlbi1sZXQqICgobGFuZy1ub2RlICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIG5v ZGUgImxhbmd1YWdlIikpCisgICAgICAgICAgICAgICAgICAgKCg8ICh0cmVlc2l0LW5vZGUtZW5k IGxhbmctbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9k ZSkpKSkKKyAgICAgICAgIChub3QgKHN0cmluZy1ibGFuay1wCisgICAgICAgICAgICAgICAoYnVm ZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9k ZS1lbmQgbGFuZy1ub2RlKQorICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUp KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1uYW1lLWZ1bmN0 aW9uIChub2RlKQorICAiUmV0dXJuIGFuIGltZW51IGVudHJ5IG5hbWUgZm9yIGEgY29kZSBibG9j ayBpbmZvX3N0cmluZyBOT0RFLgorVXNlcyB0aGUgZGVzY3JpcHRpdmUgdGV4dCBhZnRlciB0aGUg bGFuZ3VhZ2UgbmFtZS4iCisgICh3aGVuLWxldCogKChsYW5nLW5vZGUgKHRyZWVzaXQtc2VhcmNo LXN1YnRyZWUgbm9kZSAibGFuZ3VhZ2UiKSkKKyAgICAgICAgICAgICAgKGRlc2MgKHN0cmluZy10 cmltCisgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVz CisgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbGFuZy1ub2RlKQorICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkpKQorICAgIChmb3Jt YXQgIiVzOiAlcyIgKHRyZWVzaXQtbm9kZS10ZXh0IGxhbmctbm9kZSkgZGVzYykpKQorCisoZGVm dW4gbWFya2Rvd24tdHMtLW91dGxpbmUtcHJlZGljYXRlIChub2RlKQorICAiTWF0Y2ggTk9ERSBp ZiBpdCBpcyBhIGhpZXJhcmNoaWNhbCBzZWN0aW9uIHRoYXQgaGFzIGEgaGVhZGluZy4iCiAgIChh bmQgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAic2VjdGlvbiIpCiAgICAgICAgKHdo ZW4tbGV0KiAoKGNoaWxkICh0cmVlc2l0LW5vZGUtY2hpbGQgbm9kZSAwKSkpCiAgICAgICAgICAo ZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxkKSAiYXR4X2hlYWRpbmciKSkpKQogCi07Ozsg Q29kZSBibG9ja3MKKzs7OyBIZWFkaW5nIG1hbmlwdWxhdGlvbjoKKworKGRlZmNvbnN0IG1hcmtk b3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwgNgorICAiTWF4aW11bSBBVFggaGVhZGlu ZyBsZXZlbCBpbiBNYXJrZG93biAoaDEtaDYpLgorRGVmaW5lZCBieSB0aGUgQ29tbW9uTWFyayBz cGVjIGFuZCB0aGUgdHJlZS1zaXR0ZXIgZ3JhbW1hci4iKQogCi0oZGVmdmFyLWxvY2FsIG1hcmtk b3duLXRzLS1jb25maWd1cmVkLWxhbmd1YWdlcyBuaWwKLSAgIkEgbGlzdCBvZiBsYW5ndWFnZXMg dGhhdCBoYXZlIGJlZW4gc2V0dXAgaW4gdGhpcyBidWZmZXIuCisoZGVmdW4gbWFya2Rvd24tdHMt LWhlYWRpbmctYXQtcG9pbnQgKCkKKyAgIlJldHVybiB0aGUgYXR4X2hlYWRpbmcgbm9kZSBhdCBv ciBiZWZvcmUgcG9pbnQsIG9yIG5pbC4iCisgICh3aGVuLWxldCogKChub2RlICh0cmVlc2l0LW5v ZGUtYXQgKHBvaW50KSAnbWFya2Rvd24pKSkKKyAgICAoaWYgKGVxdWFsICh0cmVlc2l0LW5vZGUt dHlwZSBub2RlKSAiYXR4X2hlYWRpbmciKQorICAgICAgICBub2RlCisgICAgICAodHJlZXNpdC1w YXJlbnQtdW50aWwKKyAgICAgICBub2RlIChsYW1iZGEgKG4pIChlcXVhbCAodHJlZXNpdC1ub2Rl LXR5cGUgbikgImF0eF9oZWFkaW5nIikpKSkpKQogCi1XaGVuIGEgY29kZSBibG9jayBvZiBhIGxh bmd1YWdlIGFwcGVhcnMsIGBtYXJrZG93bi10cy1tb2RlJyBsb2FkcwotbGFuZ3VhZ2Ugc2V0dXBz IGxpa2UgZm9udC1sb2NrIGFuZCBpbmRlbnRhdGlvbiBmb3IgdGhhdCBsYW5ndWFnZSwgYW5kCi1h ZGRzIHRoYXQgbGFuZ3VhZ2UgdG8gdGhpcyBsaXN0LiIpCisoZGVmdW4gbWFya2Rvd24tdHMtLWhl YWRpbmctbGV2ZWwgKGhlYWRpbmcpCisgICJSZXR1cm4gSEVBRElORyBsZXZlbCAocmFuZ2UgMSB0 byBgbWFya2Rvd24tdHMtLXBhcnNlci1oZWFkaW5nLW1heC1sZXZlbCcpLiIKKyAgKGxldCAoKG1h cmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGhlYWRpbmcgMCkpKQorICAgIChsZW5ndGggKHRyZWVz aXQtbm9kZS10ZXh0IG1hcmtlciB0KSkpKQogCi0oZGVmdW4gbWFya2Rvd24tdHMtLWhhcnZlc3Qt dHJlZXNpdC1jb25maWdzIChtb2RlKQotICAiSGFydmVzdCB0cmVlLXNpdHRlciBjb25maWdzIGZy b20gTU9ERS4KLVJldHVybiBhIHBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGFuZCB2YWx1 ZToKKyhkZWZ1biBtYXJrZG93bi10cy0tc2VjdGlvbi1hdC1wb2ludCAoKQorICAiUmV0dXJuIHRo ZSBzZWN0aW9uIG5vZGUgY29udGFpbmluZyBwb2ludC4iCisgICh3aGVuLWxldCogKChub2RlICh0 cmVlc2l0LW5vZGUtYXQgKHBvaW50KSAnbWFya2Rvd24pKSkKKyAgICAodHJlZXNpdC1wYXJlbnQt dW50aWwKKyAgICAgbm9kZSAobGFtYmRhIChuKSAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4p ICJzZWN0aW9uIikpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1wcm9tb3RlICgpCisgICJQcm9t b3RlIHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBwb2ludC4KK0ZvciBoZWFkaW5ncywgZGVj cmVhc2UgdGhlIGxldmVsIChlLmcuLCAjIyB0byAjKS4KK0ZvciBsaXN0IGl0ZW1zLCBkZWNyZWFz ZSBuZXN0aW5nIChkZWRlbnQpLgorV2l0aCBgdHJhbnNpZW50LW1hcmstbW9kZScgb24gYW5kIG1h cmsgYWN0aXZlLCBwcm9tb3RlIGFsbAoraGVhZGluZ3MgaW4gdGhlIHJlZ2lvbi4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKGNvbmQKKyAgICgoYW5kIHRyYW5zaWVudC1tYXJrLW1vZGUgbWFyay1hY3Rp dmUpCisgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZS1yZWdpb24gLTEpKQorICAg KChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KQorICAgIChtYXJrZG93bi10cy0tbGlz dC1wcm9tb3RlLW9yLWRlbW90ZSBuaWwpKQorICAgKHQgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9y LWRlbW90ZSAtMSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWRlbW90ZSAoKQorICAiRGVtb3Rl IHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBwb2ludC4KK0ZvciBoZWFkaW5ncywgaW5jcmVh c2UgdGhlIGxldmVsIChlLmcuLCAjIHRvICMjKS4KK0ZvciBsaXN0IGl0ZW1zLCBpbmNyZWFzZSBu ZXN0aW5nIChpbmRlbnQpLgorV2l0aCBgdHJhbnNpZW50LW1hcmstbW9kZScgb24gYW5kIG1hcmsg YWN0aXZlLCBkZW1vdGUgYWxsIGhlYWRpbmdzCitpbiB0aGUgcmVnaW9uLiIKKyAgKGludGVyYWN0 aXZlKQorICAoY29uZAorICAgKChhbmQgdHJhbnNpZW50LW1hcmstbW9kZSBtYXJrLWFjdGl2ZSkK KyAgICAobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lvbiAxKSkKKyAgICgobWFy a2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkKKyAgICAobWFya2Rvd24tdHMtLWxpc3QtcHJv bW90ZS1vci1kZW1vdGUgdCkpCisgICAodCAobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3Rl IDEpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUgKGRlbHRhKQor ICAiQ2hhbmdlIHRoZSBoZWFkaW5nIGF0IHBvaW50IGJ5IERFTFRBIGxldmVscy4KK05lZ2F0aXZl IERFTFRBIHByb21vdGVzIChmZXdlciAjKSwgcG9zaXRpdmUgZGVtb3RlcyAobW9yZSAjKS4KK0lm IHRoZSBoZWFkaW5nIGhhcyBhbiBvcHRpb25hbCB0cmFpbGluZyBjbG9zaW5nLWAjJyBzZXF1ZW5j ZSwgdGhhdAorc2VxdWVuY2UgaXMgcmVzaXplZCB0byBtYXRjaCB0aGUgbmV3IGxldmVsLiIKKyAg KHdoZW4tbGV0KiAoKGhlYWRpbmcgKG1hcmtkb3duLXRzLS1oZWFkaW5nLWF0LXBvaW50KSkKKyAg ICAgICAgICAgICAgKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGhlYWRpbmcgMCkpCisgICAg ICAgICAgICAgIChsZXZlbCAobGVuZ3RoICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJrZXIgdCkpKQor ICAgICAgICAgICAgICAobmV3LWxldmVsICgrIGxldmVsIGRlbHRhKSkpCisgICAgKHdoZW4gKGFu ZCAoPj0gbmV3LWxldmVsIDEpCisgICAgICAgICAgICAgICAoPD0gbmV3LWxldmVsIG1hcmtkb3du LXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwpKQorICAgICAgKGxldCogKChvcGVuZXItYmVn ICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyKSkKKyAgICAgICAgICAgICAob3BlbmVyLWVuZCAo dHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIpKQorICAgICAgICAgICAgIChsaW5lLWVuZCAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9wZW5lci1lbmQp CisgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCisgICAgICAg ICAgICAgOzsgRGV0ZWN0IGEgQ29tbW9uTWFyayBjbG9zaW5nLWAjJyBzZXF1ZW5jZTogb3B0aW9u YWwKKyAgICAgICAgICAgICA7OyB0cmFpbGluZyB3aGl0ZXNwYWNlLCBhIHJ1biBvZiBgIycsIGFu ZCBhdCBsZWFzdCBvbmUKKyAgICAgICAgICAgICA7OyBzcGFjZS90YWIgYmV0d2VlbiBpdCBhbmQg dGhlIGhlYWRpbmcgdGV4dC4KKyAgICAgICAgICAgICAoY2xvc2VyIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGxpbmUtZW5kKQorICAgICAgICAgICAg ICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IiBvcGVuZXItZW5kKQorICAgICAg ICAgICAgICAgICAgICAgICAobGV0ICgoZW5kIChwb2ludCkpKQorICAgICAgICAgICAgICAgICAg ICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIjIiBvcGVuZXItZW5kKQorICAgICAgICAgICAg ICAgICAgICAgICAgIChsZXQgKChiZWcgKHBvaW50KSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAod2hlbiAoYW5kICg8IGJlZyBlbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICg+IGJlZyBvcGVuZXItZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobWVtcSAoY2hhci1iZWZvcmUgYmVnKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnKD9ccyA/XHQpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbnMgYmVnIGVuZCkpKSkpKSkKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisg ICAgICAgICAgOzsgUmVzaXplIHRoZSBjbG9zZXIgZmlyc3Qgc28gaXQgZG9lc24ndCBzaGlmdCB0 aGUgb3BlbmVyLgorICAgICAgICAgICh3aGVuIGNsb3NlcgorICAgICAgICAgICAgKGRlbGV0ZS1y ZWdpb24gKGNhciBjbG9zZXIpIChjZHIgY2xvc2VyKSkKKyAgICAgICAgICAgIChnb3RvLWNoYXIg KGNhciBjbG9zZXIpKQorICAgICAgICAgICAgKGluc2VydCAobWFrZS1zdHJpbmcgbmV3LWxldmVs ID8jKSkpCisgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gb3BlbmVyLWJlZyBvcGVuZXItZW5kKQor ICAgICAgICAgIChnb3RvLWNoYXIgb3BlbmVyLWJlZykKKyAgICAgICAgICAoaW5zZXJ0IChtYWtl LXN0cmluZyBuZXctbGV2ZWwgPyMpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcHJvbW90 ZS1vci1kZW1vdGUtcmVnaW9uIChkZWx0YSkKKyAgIkNoYW5nZSBhbGwgaGVhZGluZ3MgaW4gdGhl IGFjdGl2ZSByZWdpb24gYnkgREVMVEEgbGV2ZWxzLgorTmVnYXRpdmUgREVMVEEgcHJvbW90ZXMg KGZld2VyICMpLCBwb3NpdGl2ZSBkZW1vdGVzIChtb3JlICMpLiIKKyAgKGxldCAoKGJlZyAocmVn aW9uLWJlZ2lubmluZykpCisgICAgICAgIChlbmQgKHJlZ2lvbi1lbmQpKSkKKyAgICAoc2F2ZS1l eGN1cnNpb24KKyAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgKHdoaWxlICg8IChwb2ludCkg ZW5kKQorICAgICAgICAod2hlbiAobWFya2Rvd24tdHMtLWhlYWRpbmctYXQtcG9pbnQpCisgICAg ICAgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZSBkZWx0YSkpCisgICAgICAgIChm b3J3YXJkLWxpbmUgMSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtdXAg KCkKKyAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gdXAgcGFzdCB0aGUg cHJldmlvdXMgc2libGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGlmIChtYXJrZG93bi10cy0t bGlzdC1pdGVtLWF0LXBvaW50KQorICAgICAgKG1hcmtkb3duLXRzLS1saXN0LW1vdmUgdCkKKyAg ICAobWFya2Rvd24tdHMtLW1vdmUtc3VidHJlZS11cC1vci1kb3duIHQpKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duICgpCisgICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rp b24gb3IgbGlzdCBpdGVtIGRvd24gcGFzdCB0aGUgbmV4dCBzaWJsaW5nLiIKKyAgKGludGVyYWN0 aXZlKQorICAoaWYgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpCisgICAgICAobWFy a2Rvd24tdHMtLWxpc3QtbW92ZSBuaWwpCisgICAgKG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUt dXAtb3ItZG93biBuaWwpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1zZWN0aW9uLWZvbGRlZC1w IChzZWN0aW9uKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgU0VDVElPTidzIGhlYWRpbmcgaXMgZm9s ZGVkLgorQ2hlY2tzIHdoZXRoZXIgdGhlIGVuZCBvZiB0aGUgaGVhZGluZyBsaW5lIGhhcyBhbiBv dXRsaW5lCitpbnZpc2libGUgb3ZlcmxheS4iCisgIChsZXQgKChoZWFkaW5nICh0cmVlc2l0LW5v ZGUtY2hpbGQgc2VjdGlvbiAwKSkpCisgICAgKHdoZW4gKGFuZCBoZWFkaW5nCisgICAgICAgICAg ICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGhlYWRpbmcpICJhdHhfaGVhZGluZyIpKQor ICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1z dGFydCBoZWFkaW5nKSkKKyAgICAgICAgKG91dGxpbmUtaW52aXNpYmxlLXAgKHBvcy1lb2wpKSkp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUtdXAtb3ItZG93biAodXApCisg ICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rpb24gc3VidHJlZS4KK0lmIFVQIGlzIG5vbi1uaWwsIG1v dmUgcGFzdCB0aGUgcHJldmlvdXMgc2libGluZzsgb3RoZXJ3aXNlIG1vdmUgZG93bi4KK1ByZXNl cnZlcyB0aGUgZm9sZGluZyBzdGF0ZSBvZiBib3RoIHNlY3Rpb25zLiIKKyAgKHdoZW4tbGV0KiAo KHNlY3Rpb24gKG1hcmtkb3duLXRzLS1zZWN0aW9uLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAg KHNpYmxpbmcgKGlmIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LXByZXYtc2libGluZyBzZWN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0 LW5vZGUtbmV4dC1zaWJsaW5nIHNlY3Rpb24pKSkpCisgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0 LW5vZGUtdHlwZSBzaWJsaW5nKSAic2VjdGlvbiIpCisgICAgICAobGV0KiAoKGZpcnN0IChpZiB1 cCBzaWJsaW5nIHNlY3Rpb24pKQorICAgICAgICAgICAgIChzZWNvbmQgKGlmIHVwIHNlY3Rpb24g c2libGluZykpCisgICAgICAgICAgICAgKGZpcnN0LWZvbGRlZCAobWFya2Rvd24tdHMtLXNlY3Rp b24tZm9sZGVkLXAgZmlyc3QpKQorICAgICAgICAgICAgIChzZWNvbmQtZm9sZGVkIChtYXJrZG93 bi10cy0tc2VjdGlvbi1mb2xkZWQtcCBzZWNvbmQpKQorICAgICAgICAgICAgIChmaXJzdC1zdGFy dCAodHJlZXNpdC1ub2RlLXN0YXJ0IGZpcnN0KSkKKyAgICAgICAgICAgICAoc2Vjb25kLXN0YXJ0 ICh0cmVlc2l0LW5vZGUtc3RhcnQgc2Vjb25kKSkKKyAgICAgICAgICAgICAoc2Vjb25kLWVuZCAo dHJlZXNpdC1ub2RlLWVuZCBzZWNvbmQpKQorICAgICAgICAgICAgIDs7IEV4dHJhY3Qgc2VwYXJh dG9yIGJldHdlZW4gaXRlbXMgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgICAgICAgICAg KGZpcnN0LXJhdyAoYnVmZmVyLXN1YnN0cmluZyBmaXJzdC1zdGFydCBzZWNvbmQtc3RhcnQpKQor ICAgICAgICAgICAgIChmaXJzdC10ZXh0IChzdHJpbmctdHJpbS1yaWdodCBmaXJzdC1yYXcpKQor ICAgICAgICAgICAgIChzZXBhcmF0b3IgKHN1YnN0cmluZyBmaXJzdC1yYXcgKGxlbmd0aCBmaXJz dC10ZXh0KSkpCisgICAgICAgICAgICAgKHNlY29uZC1yYXcgKGJ1ZmZlci1zdWJzdHJpbmcgc2Vj b25kLXN0YXJ0IHNlY29uZC1lbmQpKQorICAgICAgICAgICAgIChzZWNvbmQtdGV4dCAoc3RyaW5n LXRyaW0tcmlnaHQgc2Vjb25kLXJhdykpCisgICAgICAgICAgICAgKHRyYWlsaW5nIChzdWJzdHJp bmcgc2Vjb25kLXJhdyAobGVuZ3RoIHNlY29uZC10ZXh0KSkpCisgICAgICAgICAgICAgKGxpbmUt b2Zmc2V0ICgtIChsaW5lLW51bWJlci1hdC1wb3MgKHBvaW50KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpbmUtbnVtYmVyLWF0LXBvcyAodHJlZXNpdC1ub2RlLXN0YXJ0IHNlY3Rp b24pKSkpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBmaXJzdC1zdGFydCBzZWNvbmQtZW5kKQor ICAgICAgICAoZ290by1jaGFyIGZpcnN0LXN0YXJ0KQorICAgICAgICAoaW5zZXJ0IHNlY29uZC10 ZXh0IHNlcGFyYXRvciBmaXJzdC10ZXh0IHRyYWlsaW5nKQorICAgICAgICA7OyBSZXN0b3JlIGZv bGRpbmcgc3RhdGUKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hh ciBmaXJzdC1zdGFydCkKKyAgICAgICAgICAod2hlbiAob3V0bGluZS1vbi1oZWFkaW5nLXApCisg ICAgICAgICAgICAoaWYgc2Vjb25kLWZvbGRlZAorICAgICAgICAgICAgICAgIChvdXRsaW5lLWhp ZGUtc3VidHJlZSkKKyAgICAgICAgICAgICAgKG91dGxpbmUtc2hvdy1zdWJ0cmVlKSkpCisgICAg ICAgICAgKG91dGxpbmUtbmV4dC1oZWFkaW5nKQorICAgICAgICAgICh3aGVuIChvdXRsaW5lLW9u LWhlYWRpbmctcCkKKyAgICAgICAgICAgIChpZiBmaXJzdC1mb2xkZWQKKyAgICAgICAgICAgICAg ICAob3V0bGluZS1oaWRlLXN1YnRyZWUpCisgICAgICAgICAgICAgIChvdXRsaW5lLXNob3ctc3Vi dHJlZSkpKSkKKyAgICAgICAgKGdvdG8tY2hhciAoaWYgdXAKKyAgICAgICAgICAgICAgICAgICAg ICAgZmlyc3Qtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICgrIGZpcnN0LXN0YXJ0IChsZW5n dGggc2Vjb25kLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoIHNlcGFyYXRv cikpKSkKKyAgICAgICAgKHdpdGgtc3VwcHJlc3NlZC13YXJuaW5ncyAoKGludGVyYWN0aXZlLW9u bHkgbmV4dC1saW5lKSkKKyAgICAgICAgICAobmV4dC1saW5lIGxpbmUtb2Zmc2V0KSkpKSkpCisK 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 KyAgICAgICAgICAgICAobGluZS1vZmZzZXQgKC0gKGxpbmUtbnVtYmVyLWF0LXBvcyAocG9pbnQp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZS1udW1iZXItYXQtcG9zCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pKSkpKQor ICAgICAgICAoZGVsZXRlLXJlZ2lvbiBmaXJzdC1zdGFydCBzZWNvbmQtZW5kKQorICAgICAgICAo Z290by1jaGFyIGZpcnN0LXN0YXJ0KQorICAgICAgICAoaW5zZXJ0IHNlY29uZC10ZXh0IHNlcGFy YXRvciBmaXJzdC10ZXh0IHRyYWlsaW5nKQorICAgICAgICAoZ290by1jaGFyIChpZiB1cAorICAg ICAgICAgICAgICAgICAgICAgICBmaXJzdC1zdGFydAorICAgICAgICAgICAgICAgICAgICAgKCsg Zmlyc3Qtc3RhcnQgKGxlbmd0aCBzZWNvbmQtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAg IChsZW5ndGggc2VwYXJhdG9yKSkpKQorICAgICAgICAod2l0aC1zdXBwcmVzc2VkLXdhcm5pbmdz ICgoaW50ZXJhY3RpdmUtb25seSBuZXh0LWxpbmUpKQorICAgICAgICAgIChuZXh0LWxpbmUgbGlu ZS1vZmZzZXQpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXJlbnVtYmVyLWxpc3QgKCZvcHRp b25hbCBzdGFydCkKKyAgIlJlbnVtYmVyIHRoZSBvcmRlcmVkIGxpc3QgYXQgcG9pbnQuCitOdW1i ZXJzIGFyZSBhc3NpZ25lZCBzZXF1ZW50aWFsbHkgc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgaXRl bSdzCitudW1iZXIuICBXaXRoIGEgcHJlZml4IGFyZ3VtZW50IFNUQVJULCBzdGFydCBudW1iZXJp bmcgZnJvbSB0aGF0Cit2YWx1ZSBpbnN0ZWFkLiAgRG9lcyBub3RoaW5nIGZvciB1bm9yZGVyZWQg bGlzdHMuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAod2hlbi1sZXQqICgoaXRlbSAobWFya2Rv d24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpCisgICAgICAgICAgICAgIChsaXN0LW5vZGUgKHRy ZWVzaXQtbm9kZS1wYXJlbnQgaXRlbSkpKQorICAgICh3aGVuIChlcXVhbCAodHJlZXNpdC1ub2Rl LXR5cGUgbGlzdC1ub2RlKSAibGlzdCIpCisgICAgICAobGV0KiAoKGNoaWxkcmVuICh0cmVlc2l0 LW5vZGUtY2hpbGRyZW4gbGlzdC1ub2RlKSkKKyAgICAgICAgICAgICAoaXRlbXMgKHNlcS1maWx0 ZXIgKGxhbWJkYSAobikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwg KHRyZWVzaXQtbm9kZS10eXBlIG4pICJsaXN0X2l0ZW0iKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2hpbGRyZW4pKQorICAgICAgICAgICAgIChmaXJzdC1tYXJrZXIgKHRyZWVz aXQtbm9kZS1jaGlsZCAoY2FyIGl0ZW1zKSAwKSkKKyAgICAgICAgICAgICAobWFya2VyLXR5cGUg KHRyZWVzaXQtbm9kZS10eXBlIGZpcnN0LW1hcmtlcikpKQorICAgICAgICAod2hlbiAobWVtYmVy IG1hcmtlci10eXBlICcoImxpc3RfbWFya2VyX2RvdCIgImxpc3RfbWFya2VyX3BhcmVudGhlc2lz IikpCisgICAgICAgICAgKGxldCogKChiYXNlIChpZiBzdGFydAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHByZWZpeC1udW1lcmljLXZhbHVlIHN0YXJ0KQorICAgICAgICAgICAgICAgICAg ICAgICAgIChzdHJpbmctdG8tbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVl c2l0LW5vZGUtdGV4dCBmaXJzdC1tYXJrZXIgdCkpKSkKKyAgICAgICAgICAgICAgICAgKGNvdW50 IChsZW5ndGggaXRlbXMpKQorICAgICAgICAgICAgICAgICA7OyBTdGFydCBmcm9tIHRoZSBsYXN0 IG51bWJlciBhbmQgd29yayBiYWNrd2FyZHMgc28KKyAgICAgICAgICAgICAgICAgOzsgdGhhdCBl YXJsaWVyIGJ1ZmZlciBwb3NpdGlvbnMgcmVtYWluIHZhbGlkLgorICAgICAgICAgICAgICAgICAo bnVtICgrIGJhc2UgY291bnQgLTEpKSkKKyAgICAgICAgICAgIChkb2xpc3QgKGl0IChyZXZlcnNl IGl0ZW1zKSkKKyAgICAgICAgICAgICAgKGxldCogKChtYXJrZXIgKHRyZWVzaXQtbm9kZS1jaGls ZCBpdCAwKSkKKyAgICAgICAgICAgICAgICAgICAgIChtYXJrZXItZW5kICh0cmVlc2l0LW5vZGUt ZW5kIG1hcmtlcikpCisgICAgICAgICAgICAgICAgICAgICAoYm9sIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFy dCBtYXJrZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1w b3NpdGlvbikpKQorICAgICAgICAgICAgICAgICAgICAgOzsgRnVsbCB0ZXh0IGZyb20gYm9sIHRv IGVuZCBvZiBtYXJrZXIgaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgIDs7IGFueSBsZWFk aW5nIHdoaXRlc3BhY2UsIHRoZSBudW1iZXIsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAg IDs7IHNlcGFyYXRvciAoZS5nLiwgIi4gIiBvciAiLlx0IikuCisgICAgICAgICAgICAgICAgICAg ICAoZnVsbC10ZXh0IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvbCBtYXJrZXItZW5kKSkKKyAgICAgICAgICAgICAgICAg ICAgIChpbmRlbnQtc3RyCisgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBcXChbWzpibGFuazpdXSpcXClbMC05XSIg ZnVsbC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDEgZnVs bC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgIiIpKQorICAgICAgICAgICAgICAgICAg ICAgKHN1ZmZpeC1zdHIKKyAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1tYXRjaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYFtbOmJsYW5rOl1dKlswLTldK1xcKC4qXFwp XFwnIiBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcg MSBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAiLiAiKSkKKyAgICAgICAgICAg ICAgICAgICAgIChuZXctdGV4dCAoY29uY2F0IGluZGVudC1zdHIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChudW1iZXItdG8tc3RyaW5nIG51bSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC1zdHIpKSkKKyAgICAgICAgICAgICAg ICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJvbCBt YXJrZXItZW5kKQorICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBib2wpCisgICAgICAgICAg ICAgICAgICAoaW5zZXJ0IG5ldy10ZXh0KSkpCisgICAgICAgICAgICAgIChjbC1kZWNmIG51bSkp CisgICAgICAgICAgICAobWVzc2FnZSAiUmVudW1iZXJlZCAlZCBpdGVtcyIgY291bnQpKSkpKSkp CisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIgKGl0ZW0pCisgICJS ZXR1cm4gdGhlIG1hcmtlciBzdHJpbmcgZm9yIGEgbmV3IGl0ZW0gZm9sbG93aW5nIElURU0uCitG b3IgdW5vcmRlcmVkIGl0ZW1zLCByZXVzZSB0aGUgc2FtZSBtYXJrZXIgY2hhcmFjdGVyLgorRm9y IG9yZGVyZWQgaXRlbXMsIGluY3JlbWVudCB0aGUgbnVtYmVyLiIKKyAgKGxldCogKChtYXJrZXIg KHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKQorICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9k ZS10eXBlIG1hcmtlcikpCisgICAgICAgICAoaW5kZW50IChzYXZlLWV4Y3Vyc2lvbgorICAgICAg ICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSkKKyAgICAg ICAgICAgICAgICAgICAoY3VycmVudC1pbmRlbnRhdGlvbikpKQorICAgICAgICAgKHByZWZpeCAo bWFrZS1zdHJpbmcgaW5kZW50ID9ccykpKQorICAgIChwY2FzZSB0eXBlCisgICAgICAoImxpc3Rf bWFya2VyX21pbnVzIiAoY29uY2F0IHByZWZpeCAiLSAiKSkKKyAgICAgICgibGlzdF9tYXJrZXJf cGx1cyIgIChjb25jYXQgcHJlZml4ICIrICIpKQorICAgICAgKCJsaXN0X21hcmtlcl9zdGFyIiAg KGNvbmNhdCBwcmVmaXggIiogIikpCisgICAgICAoImxpc3RfbWFya2VyX2RvdCIKKyAgICAgICAo bGV0ICgobnVtIChzdHJpbmctdG8tbnVtYmVyICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJrZXIgdCkp KSkKKyAgICAgICAgIChjb25jYXQgcHJlZml4IChudW1iZXItdG8tc3RyaW5nICgxKyBudW0pKSAi LiAiKSkpCisgICAgICAoImxpc3RfbWFya2VyX3BhcmVudGhlc2lzIgorICAgICAgIChsZXQgKChu dW0gKHN0cmluZy10by1udW1iZXIgKHRyZWVzaXQtbm9kZS10ZXh0IG1hcmtlciB0KSkpKQorICAg ICAgICAgKGNvbmNhdCBwcmVmaXggKG51bWJlci10by1zdHJpbmcgKDErIG51bSkpICIpICIpKSkK KyAgICAgIChfIChjb25jYXQgcHJlZml4ICItICIpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt LW5ldy1tYXJrZXItZm9yLWxpbmUgKGl0ZW0pCisgICJSZXR1cm4gdGhlIG1hcmtlciBzdHJpbmcg Zm9yIGEgbmV3IGl0ZW0gZm9sbG93aW5nIElURU0uCitXaGVuIHRoZSBjdXJyZW50IGxpbmUgaGFz IGEgbGlzdCBtYXJrZXIgcGF0dGVybiBhdCBhIGRpZmZlcmVudAoraW5kZW50YXRpb24gdGhhbiBJ VEVNIChlLmcuLCBhIG5lc3RlZCBtYXJrZXIgdGhhdCB0aGUgZ3JhbW1hciBkaWQKK25vdCByZWNv Z25pemUgYXMgYSBsaXN0X2l0ZW0pLCB1c2UgdGhlIGN1cnJlbnQgbGluZSdzIG1hcmtlci4KK090 aGVyd2lzZSwgZmFsbCBiYWNrIHRvIGBtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIn LiIKKyAgKGxldCAoKG1hcmtlci1ub2RlICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAwKSkpCisg ICAgKGlmICg9IChsaW5lLW51bWJlci1hdC1wb3MpCisgICAgICAgICAgICAobGluZS1udW1iZXIt YXQtcG9zICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyLW5vZGUpKSkKKyAgICAgICAgOzsgSXRl bSdzIG1hcmtlciBpcyBvbiB0aGUgY3VycmVudCBsaW5lOiB1c2UgaXQgbm9ybWFsbHkuCisgICAg ICAgIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIgaXRlbSkKKyAgICAgIDs7IEl0 ZW0ncyBtYXJrZXIgaXMgb24gYSBkaWZmZXJlbnQgbGluZS4gIFRoZSBwYXJzZXIgbWF5IGhhdmUK KyAgICAgIDs7IGZhaWxlZCB0byByZWNvZ25pemUgYSBuZXN0ZWQgbWFya2VyIChlLmcuLCBhIGxv bmUgYCAgLSAnCisgICAgICA7OyBwYXJzZWQgYXMgYSBzZXRleHQgaGVhZGluZykuICBSZWFkIHRo ZSBjdXJyZW50IGxpbmUuCisgICAgICAobGV0ICgobGluZSAoYnVmZmVyLXN1YnN0cmluZy1uby1w cm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAo bGluZS1lbmQtcG9zaXRpb24pKSkpCisgICAgICAgIChpZiAoc3RyaW5nLW1hdGNoCisgICAgICAg ICAgICAgIlxcYFxcKFtbOmJsYW5rOl1dKlxcKVxcKFstKitdIFxcfFxcKFswLTldK1xcKVxcKFsu KV0gXFwpXFwpIgorICAgICAgICAgICAgIGxpbmUpCisgICAgICAgICAgICAobGV0ICgoaW5kZW50 IChtYXRjaC1zdHJpbmcgMSBsaW5lKSkKKyAgICAgICAgICAgICAgICAgIChudW0gKG1hdGNoLXN0 cmluZyAzIGxpbmUpKQorICAgICAgICAgICAgICAgICAgKHN1ZmZpeCAobWF0Y2gtc3RyaW5nIDQg bGluZSkpCisgICAgICAgICAgICAgICAgICAodW5vcmRlcmVkIChtYXRjaC1zdHJpbmcgMiBsaW5l KSkpCisgICAgICAgICAgICAgIChpZiBudW0KKyAgICAgICAgICAgICAgICAgIChjb25jYXQgaW5k ZW50IChudW1iZXItdG8tc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KDErIChzdHJpbmctdG8tbnVtYmVyIG51bSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBz dWZmaXgpCisgICAgICAgICAgICAgICAgKGNvbmNhdCBpbmRlbnQgdW5vcmRlcmVkKSkpCisgICAg ICAgICAgOzsgTm8gbWFya2VyIHBhdHRlcm4gb24gY3VycmVudCBsaW5lOiB1c2UgaXRlbSdzIG1h cmtlci4KKyAgICAgICAgICAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1uZXctbWFya2VyIGl0ZW0p KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saW5lLWJsb2NrLXF1b3RlLWRlcHRoICgmb3B0 aW9uYWwgcG9zKQorICAiQ291bnQgdGhlIG51bWJlciBvZiBgPicgYmxvY2sgcXVvdGUgbWFya2Vy cyBvbiB0aGUgbGluZSBhdCBQT1MuIgorICAoc2F2ZS1leGN1cnNpb24KKyAgICAod2hlbiBwb3Mg KGdvdG8tY2hhciBwb3MpKQorICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAobGV0ICgoY291 bnQgMCkpCisgICAgICAod2hpbGUgKGFuZCAobm90IChlb2xwKSkKKyAgICAgICAgICAgICAgICAg IChtZW1xIChjaGFyLWFmdGVyKSAnKD8+ID9ccyA/XHQpKSkKKyAgICAgICAgKHdoZW4gKGVxIChj aGFyLWFmdGVyKSA/PikKKyAgICAgICAgICAoc2V0cSBjb3VudCAoMSsgY291bnQpKSkKKyAgICAg ICAgKGZvcndhcmQtY2hhciAxKSkKKyAgICAgIGNvdW50KSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy1uZXdsaW5lICgpCisgICJJbnNlcnQgYSBuZXdsaW5lLCBjb250aW51aW5nIHRoZSBjdXJyZW50 IGNvbnRleHQuCitJbnNpZGUgYSBsaXN0IGl0ZW0sIHRoZSBuZXcgbGluZSBpcyBpbmRlbnRlZCB0 byB0aGUgaXRlbSdzIHRleHQKK2NvbHVtbiBzbyB0aGUgcGFyYWdyYXBoIGNvbnRpbnVlcy4gIEEg c2Vjb25kIFJFVCBvbiBhIGJsYW5rCitjb250aW51YXRpb24gbGluZSByZW1vdmVzIHRoZSBpbmRl bnRhdGlvbiwgZHJvcHBpbmcgcG9pbnQgdG8KK2NvbHVtbiAwIHNvIHRoZSB0cmVlLXNpdHRlciBn cmFtbWFyIGVuZHMgdGhlIGxpc3QuCitJbnNpZGUgYSBibG9jayBxdW90ZSwgdGhlIG5ldyBsaW5l IGluY2x1ZGVzIHRoZSBxdW90ZSBwcmVmaXguCitPdGhlcndpc2UsIGluc2VydCBhIHBsYWluIG5l d2xpbmUuIgorICAoaW50ZXJhY3RpdmUpCisgIChsZXQqICgobm9kZSAodHJlZXNpdC1ub2RlLWF0 CisgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAo cG9pbnQpKQorICAgICAgICAgICAgICAgICdtYXJrZG93bikpCisgICAgICAgICA7OyBUcmVlLXNp dHRlciBtYXkgcmVwb3J0IGEgbm9kZSBpbnNpZGUgYSBibG9ja19xdW90ZSBldmVuCisgICAgICAg ICA7OyB3aGVuIHBvaW50IGlzIG9uIGEgYmxhbmsgbGluZSBwYXN0IHRoZSBxdW90ZSAodGhlIG5v ZGUKKyAgICAgICAgIDs7IHNwYW4gY2FuIGV4dGVuZCBiZXlvbmQgdGhlIGA+JyBsaW5lcykuICBP bmx5IHRyZWF0IHRoZQorICAgICAgICAgOzsgbGluZSBhcyBpbnNpZGUgYSBibG9jayBxdW90ZSBp ZiBpdCBhY3R1YWxseSBzdGFydHMgd2l0aAorICAgICAgICAgOzsgYSBgPicgbWFya2VyLgorICAg ICAgICAgKGluLWJxIChhbmQgKHRyZWVzaXQtcGFyZW50LXVudGlsIG5vZGUgIlxcYGJsb2NrX3F1 b3RlXFwnIikKKyAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAg ICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAg IChsb29raW5nLWF0LXAgIlsgXHRdKj4iKSkpKQorICAgICAgICAgKGl0ZW0gKG1hcmtkb3duLXRz LS1saXN0LWl0ZW0tYXQtcG9pbnQpKSkKKyAgICAoY29uZAorICAgICAoaXRlbQorICAgICAgKGxl dCogKChjb2wgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4gaXRlbSkpCisgICAg ICAgICAgICAgKGJxLXByZWZpeCAod2hlbiBpbi1icSAobWFya2Rvd24tdHMtLWJsb2NrLXF1b3Rl LXByZWZpeCkpKQorICAgICAgICAgICAgIDs7IGBjb2wnIGlzIHRoZSBhYnNvbHV0ZSBjb2x1bW4g b2YgdGhlIGl0ZW0ncyB0ZXh0LAorICAgICAgICAgICAgIDs7IHdoaWNoIGluc2lkZSBhIGJsb2Nr IHF1b3RlIGluY2x1ZGVzIHRoZSAiPiAiIHByZWZpeAorICAgICAgICAgICAgIDs7IHdpZHRoLiAg U2luY2Ugd2UgaW5zZXJ0IGBicS1wcmVmaXgnIHNlcGFyYXRlbHksIHdlCisgICAgICAgICAgICAg OzsgbXVzdCBzdWJ0cmFjdCBpdHMgbGVuZ3RoIHRvIGF2b2lkIGRvdWJsaW5nIGl0LgorICAgICAg ICAgICAgIChpbmRlbnQgKC0gY29sIChsZW5ndGggKG9yIGJxLXByZWZpeCAiIikpKSkKKyAgICAg ICAgICAgICA7OyBUaGUgY3VycmVudCBsaW5lIGlzICJibGFuayIgaWYgaXQgY29udGFpbnMgb25s eQorICAgICAgICAgICAgIDs7IHdoaXRlc3BhY2UgKG9yIHF1b3RlIHByZWZpeCArIHdoaXRlc3Bh Y2UpIGFuZCBubworICAgICAgICAgICAgIDs7IGFjdHVhbCB0ZXh0IGZyb20gYSBwcmV2aW91cyBS RVQncyBjb250aW51YXRpb24gaW5kZW50LgorICAgICAgICAgICAgIChibGFuay1saW5lLXAgKHNh dmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2Yt bGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQtcAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIl5bPiBcdF0qJCIpKSkKKyAgICAgICAgICAgICA7OyBQ b2ludCBpcyBiZWZvcmUgdGhlIGl0ZW0ncyB0ZXh0IChhdCBvciBiZWZvcmUgdGhlCisgICAgICAg ICAgICAgOzsgbWFya2VyKS4gIEEgcGxhaW4gbmV3bGluZSBpcyBhcHByb3ByaWF0ZSBoZXJlLCBh ZGRpbmcKKyAgICAgICAgICAgICA7OyBjb250aW51YXRpb24gaW5kZW50IHdvdWxkIHNoaWZ0IHRo ZSBleGlzdGluZyBjb250ZW50CisgICAgICAgICAgICAgOzsgdG8gdGhlIHJpZ2h0LgorICAgICAg ICAgICAgIChiZWZvcmUtdGV4dC1wICg8PSAoY3VycmVudC1jb2x1bW4pIGNvbCkpKQorICAgICAg ICAoY29uZAorICAgICAgICAgKGJsYW5rLWxpbmUtcAorICAgICAgICAgIDs7IFRoZSB1c2VyIHBy ZXNzZWQgUkVUIG9uIGFuIGFscmVhZHktYmxhbmsgY29udGludWF0aW9uCisgICAgICAgICAgOzsg bGluZS4gIEluc3RlYWQgb2YgYWRkaW5nIHlldCBhbm90aGVyIGluZGVudGVkIGJsYW5rCisgICAg ICAgICAgOzsgbGluZSwgcmVtb3ZlIHRoZSBpbmRlbnRhdGlvbiBhbmQgaW5zZXJ0IGEgcGxhaW4K KyAgICAgICAgICA7OyBuZXdsaW5lLiAgVGhpcyBkcm9wcyBwb2ludCB0byBjb2x1bW4gMCwgd2hp Y2ggaXMgdGhlCisgICAgICAgICAgOzsgb25seSB3YXkgdGhlIHRyZWUtc2l0dGVyIG1hcmtkb3du IGdyYW1tYXIgZW5kcyBhIGxpc3Q6CisgICAgICAgICAgOzsgYmxhbmsgbGluZXMgYWxvbmUgZG8g Tk9UIGVuZCBhIGxpc3QsIG9ubHkKKyAgICAgICAgICA7OyBub24taW5kZW50ZWQgY29udGVudCBk b2VzLiAgU28gdGhpcyBnaXZlcyB0aGUgdXNlciBhCisgICAgICAgICAgOzsgbmF0dXJhbCAiUkVU IFJFVCB0byBleGl0IHRoZSBsaXN0IiB3b3JrZmxvdy4KKyAgICAgICAgICAoZGVsZXRlLXJlZ2lv biAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikpCisgICAgICAg ICAgKG5ld2xpbmUpKQorICAgICAgICAgKGJlZm9yZS10ZXh0LXAKKyAgICAgICAgICA7OyBQb2lu dCBpcyBvbiBvciBiZWZvcmUgdGhlIGxpc3QgbWFya2VyOyBqdXN0IGluc2VydCBhCisgICAgICAg ICAgOzsgcGxhaW4gbmV3bGluZSBzbyB0aGUgaXRlbSBpcyBwdXNoZWQgZG93biB1bmNoYW5nZWQu CisgICAgICAgICAgKG5ld2xpbmUpKQorICAgICAgICAgKHQKKyAgICAgICAgICAoZGVsZXRlLWhv cml6b250YWwtc3BhY2UpCisgICAgICAgICAgKG5ld2xpbmUpCisgICAgICAgICAgKHdoZW4gYnEt cHJlZml4IChpbnNlcnQgYnEtcHJlZml4KSkKKyAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmlu ZyBpbmRlbnQgP1xzKSkpKSkpCisgICAgIChpbi1icQorICAgICAgKGxldCAoKGJxLXByZWZpeCAo bWFya2Rvd24tdHMtLWJsb2NrLXF1b3RlLXByZWZpeCkpCisgICAgICAgICAgICA7OyBBIGxpbmUg d2l0aCBvbmx5IHF1b3RlIG1hcmtlcnMgYW5kIHdoaXRlc3BhY2UgKGUuZy4sCisgICAgICAgICAg ICA7OyAiPiAiKSBpcyAiYmxhbmsiIGluc2lkZSB0aGUgcXVvdGUuICBSRVQgaGVyZSBleGl0cyB0 aGUKKyAgICAgICAgICAgIDs7IHF1b3RlLCBzYW1lIGFzIFJFVCBvbiBhIGJsYW5rIGNvbnRpbnVh dGlvbiBsaW5lIGV4aXRzIGEKKyAgICAgICAgICAgIDs7IGxpc3Q6IHJlbW92ZSB0aGUgcHJlZml4 IGFuZCBkcm9wIHRvIGNvbHVtbiAwLgorICAgICAgICAgICAgKGJsYW5rLWxpbmUtcCAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQtcCAiXls+IFx0XSokIikp KSkKKyAgICAgICAgKGlmIGJsYW5rLWxpbmUtcAorICAgICAgICAgICAgKHByb2duCisgICAgICAg ICAgICAgIChkZWxldGUtcmVnaW9uIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxpbmUtZW5k LXBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgKG5ld2xpbmUpKQorICAgICAgICAgIChkZWxldGUt aG9yaXpvbnRhbC1zcGFjZSkKKyAgICAgICAgICAobmV3bGluZSkKKyAgICAgICAgICAoaW5zZXJ0 IGJxLXByZWZpeCkpKSkKKyAgICAgOzsgRGVmYXVsdDogcGxhaW4gbmV3bGluZS4gIFRoaXMgYWxz byBoYW5kbGVzIGVtcHR5IGxpc3QgbWFya2VycworICAgICA7OyAoZS5nLiwgIi0gIiB3aXRoIG5v IHRleHQpIHRoYXQgdGhlIGdyYW1tYXIgcGFyc2VzIGFzIEVSUk9SCisgICAgIDs7IG5vZGVzIHJh dGhlciB0aGFuIGxpc3RfaXRlbSBub2Rlcy4KKyAgICAgOzsKKyAgICAgOzsgV2hlbiB0aGUgY3Vy cmVudCBsaW5lIGlzIGJsYW5rICh3aGl0ZXNwYWNlIG9ubHkpLCBpdCBpcyBhCisgICAgIDs7IGNv bnRpbnVhdGlvbi1pbmRlbnQgbGluZSBsZWZ0IGJ5IGEgcHJldmlvdXMgUkVUIHRoYXQKKyAgICAg OzsgdHJlZS1zaXR0ZXIgbm8gbG9uZ2VyIGNvbnNpZGVycyBwYXJ0IG9mIGEgbGlzdF9pdGVtLiAg Q2xlYXIKKyAgICAgOzsgdGhlIHdoaXRlc3BhY2Ugc28gbm8gdHJhaWxpbmcgc3BhY2VzIHJlbWFp biwgYW5kIGluc2VydCBhCisgICAgIDs7IHBsYWluIG5ld2xpbmUgYXQgY29sdW1uIDAgdG8gZXhp dCB0aGUgbGlzdCBjb250ZXh0LgorICAgICAodAorICAgICAgKHdoZW4gKHNhdmUtZXhjdXJzaW9u CisgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgKGxvb2tp bmctYXQtcCAiXlsgXHRdKyQiKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGxpbmUtYmVnaW5u aW5nLXBvc2l0aW9uKSAobGluZS1lbmQtcG9zaXRpb24pKSkKKyAgICAgIChuZXdsaW5lKSkpKSkK KworKGRlZnVuIG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0gKCkKKyAgIkluc2VydCBhIG5l dyBsaXN0IGl0ZW0sIHNwbGl0dGluZyB0ZXh0IGF0IHBvaW50LgorVGV4dCBhZnRlciBwb2ludCBt b3ZlcyB0byB0aGUgbmV3IGl0ZW0uICBBdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSwKK2FuIGVt cHR5IGl0ZW0gaXMgaW5zZXJ0ZWQgYWJvdmUgYW5kIHRoZSBjdXJyZW50IGNvbnRlbnQgaXMgcHVz aGVkIGRvd24uCitJbnNpZGUgYSBibG9jayBxdW90ZSwgdGhlIG5ldyBsaW5lIGluY2x1ZGVzIHRo ZSBxdW90ZSBwcmVmaXguCitGb3Igb3JkZXJlZCBsaXN0cywgdGhlIG51bWJlciBpcyBpbmNyZW1l bnRlZC4KK1doZW4gbm90IGluc2lkZSBhIGxpc3QsIGZhbGwgYmFjayB0byBgbWFya2Rvd24tdHMt bmV3bGluZScuIgorICAoaW50ZXJhY3RpdmUpCisgIChsZXQqICgobm9kZSAodHJlZXNpdC1ub2Rl LWF0CisgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9u KSAocG9pbnQpKQorICAgICAgICAgICAgICAgICdtYXJrZG93bikpCisgICAgICAgICAoaW4tYnEg KGFuZCAodHJlZXNpdC1wYXJlbnQtdW50aWwgbm9kZSAiXFxgYmxvY2tfcXVvdGVcXCciKQorICAg ICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAg IChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQt cCAiWyBcdF0qPiIpKSkpCisgICAgICAgICAoYnEtcHJlZml4ICh3aGVuIGluLWJxIChtYXJrZG93 bi10cy0tYmxvY2stcXVvdGUtcHJlZml4KSkpCisgICAgICAgICAoaXRlbSAobWFya2Rvd24tdHMt LWxpc3QtaXRlbS1hdC1wb2ludCkpKQorICAgIChjb25kCisgICAgICgoYW5kIGl0ZW0KKyAgICAg ICAgICAgKG9yIChub3QgaW4tYnEpCisgICAgICAgICAgICAgICAoPj0gKG1hcmtkb3duLXRzLS1s aW5lLWJsb2NrLXF1b3RlLWRlcHRoKQorICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0t bGluZS1ibG9jay1xdW90ZS1kZXB0aAorICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LXN0YXJ0ICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAwKSkpKSkpCisgICAgICAobGV0KiAoKG5l dy1tYXJrZXIgKG1hcmtkb3duLXRzLS1uZXctbWFya2VyLWZvci1saW5lIGl0ZW0pKQorICAgICAg ICAgICAgIChhdC1ib2wgKDw9IChjdXJyZW50LWNvbHVtbikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWNrLXRv LWluZGVudGF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1u KSkpKQorICAgICAgICAgICAgICh0YWlsICh3aGVuIChhbmQgKG5vdCBhdC1ib2wpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobm90IChsb29raW5nLWF0LXAgIlsgXHRdKiQiKSkpCisg ICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWFuZC1leHRyYWN0LXJlZ2lvbgorICAgICAgICAg ICAgICAgICAgICAgIChwb2ludCkgKGxpbmUtZW5kLXBvc2l0aW9uKSkpKSkKKyAgICAgICAgKGlm IGF0LWJvbAorICAgICAgICAgICAgOzsgQXQgQk9MOiBpbnNlcnQgZW1wdHkgaXRlbSBhYm92ZSwg cHVzaCBjdXJyZW50IGxpbmUgZG93bi4KKyAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAg ICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICh3aGVuIGJxLXByZWZpeCAoaW5z ZXJ0IGJxLXByZWZpeCkpCisgICAgICAgICAgICAgIChpbnNlcnQgbmV3LW1hcmtlciAiXG4iKQor ICAgICAgICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikpCisgICAgICAgICAgOzsgTWlkLWxp bmUgb3IgRU9MOiBuZXcgaXRlbSBiZWxvdyB3aXRoIHRhaWwgdGV4dC4KKyAgICAgICAgICAoZGVs ZXRlLWhvcml6b250YWwtc3BhY2UpCisgICAgICAgICAgKG5ld2xpbmUpCisgICAgICAgICAgKHdo ZW4gYnEtcHJlZml4IChpbnNlcnQgYnEtcHJlZml4KSkKKyAgICAgICAgICAoaW5zZXJ0IG5ldy1t YXJrZXIpCisgICAgICAgICAgKHdoZW4gdGFpbCAoc2F2ZS1leGN1cnNpb24gKGluc2VydCAoc3Ry aW5nLXRyaW0tbGVmdCB0YWlsKSkpKSkpKQorCisgICAgIDs7IE5vdCBpbiBhIGxpc3Q6IGZhbGwg YmFjayB0byBuZXdsaW5lIGJlaGF2aW9yLgorICAgICAodCAobWFya2Rvd24tdHMtbmV3bGluZSkp KSkpCisKKzs7OyBGaWxsaW5nOgorCis7OyBUT0RPOiBSZW1vdmUgdGhlIHBpcGVfdGFibGUgYmxv Y2sgaWYgd2UgaW1wbGVtZW50IHBpcGVfdGFibGUgZmlsbC4KKyhkZWZjb25zdCBtYXJrZG93bi10 cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5CisgICcoWyhmZW5jZWRfY29kZV9ibG9jaykg KGluZGVudGVkX2NvZGVfYmxvY2spIChwaXBlX3RhYmxlKV0gQGJsb2NrKQorICAiVHJlZS1zaXR0 ZXIgcXVlcnkgbWF0Y2hpbmcgYmxvY2tzIHdoZXJlIGZpbGxpbmcgaXMgaW5oaWJpdGVkLiIpCisK KyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIChpdGVtKQorICAiUmV0 dXJuIHRoZSBjb2x1bW4gd2hlcmUgdGhlIHRleHQgb2YgbGlzdCBJVEVNIHN0YXJ0cy4KK1RoaXMg aXMgdGhlIGNvbHVtbiBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoIG5vZGUgaW5zaWRlIElURU0sIG9y Cit0aGUgd2lkdGggb2YgdGhlIGxpc3QgbWFya2VyIGlmIG5vIHBhcmFncmFwaCBpcyBmb3VuZC4i CisgIChsZXQgKChwYXJhZ3JhcGggKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgaXRlbSAiXFxgcGFy YWdyYXBoXFwnIikpKQorICAgIChpZiBwYXJhZ3JhcGgKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9u CisgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IHBhcmFncmFwaCkpCisg ICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkKKyAgICAgIChsZXQgKChtYXJrZXIgKHRyZWVzaXQt bm9kZS1jaGlsZCBpdGVtIDApKSkKKyAgICAgICAgKC0gKHRyZWVzaXQtbm9kZS1lbmQgbWFya2Vy KQorICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpKSkpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWZpbGwtbGlzdC1pdGVtIChpdGVtIGp1c3RpZnkpCisgICJGaWxsIHRoZSBj b250ZW50cyBvZiBsaXN0IElURU0sIHByZXNlcnZpbmcgaXRzIGluZGVudGF0aW9uLgorTmFycm93 cyB0byBJVEVNJ3Mgb3duIHBhcmFncmFwaCBjb250ZW50IChleGNsdWRpbmcgbmVzdGVkIGxpc3Rz KQorYW5kIHNldHMgYGZpbGwtcHJlZml4JyB0byBhbGlnbiBjb250aW51YXRpb24gbGluZXMgd2l0 aCB0aGUgc3RhcnQKK29mIHRoZSBpdGVtJ3MgdGV4dC4gIEpVU1RJRlkgaXMgYXMgaW4gYGZpbGwt cGFyYWdyYXBoJy4iCisgIChsZXQqICgoZmlsbC1wcmVmaXggKG1ha2Utc3RyaW5nIChtYXJrZG93 bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgID9ccykpCisgICAgICAgICA7OyBGaW5kIHRoZSBpdGVtJ3Mgb3duIHBhcmFn cmFwaCAoZmlyc3QgcGFyYWdyYXBoIGNoaWxkKS4KKyAgICAgICAgIDs7IElmIHRoZSBpdGVtIGhh cyBuZXN0ZWQgbGlzdHMsIG5hcnJvdyB0byBqdXN0IHRoZQorICAgICAgICAgOzsgcGFyYWdyYXBo IHNvIHdlIGRvbid0IG1lcmdlIG5lc3RlZCBpdGVtcy4KKyAgICAgICAgIChwYXJhICh0cmVlc2l0 LXNlYXJjaC1zdWJ0cmVlIGl0ZW0gIlxcYHBhcmFncmFwaFxcJyIgbmlsIG5pbCAxKSkKKyAgICAg ICAgIChiZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSkKKyAgICAgICAgIChlbmQgKGlmIHBh cmEKKyAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHBhcmEpCisgICAgICAgICAg ICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgaXRlbSkpKQorICAgICAgICAgOzsgVXNlIGRlZmF1bHQg cGFyYWdyYXBoIG1vdGlvbiBpbnNpZGUgdGhlIG5hcnJvd2VkIHJlZ2lvbgorICAgICAgICAgOzsg c28gdGhhdCB0aGUgaW5uZXIgYGZpbGwtcGFyYWdyYXBoJyBkb2VzIG5vdCByZS1lbnRlciBvdXIK KyAgICAgICAgIDs7IGN1c3RvbSBwYXJhZ3JhcGgtZmluZGluZyBsb2dpYy4KKyAgICAgICAgIChm aWxsLWZvcndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJhZ3JhcGgpKQorICAg IChzYXZlLXJlc3RyaWN0aW9uCisgICAgICAobmFycm93LXRvLXJlZ2lvbiBiZWcgZW5kKQorICAg ICAgKGZpbGwtcGFyYWdyYXBoIGp1c3RpZnkpKQorICAgIDs7IFJldHVybiBub24tbmlsIHRvIHNp Z25hbCB0aGF0IGZpbGxpbmcgaGFzIGJlZW4gaGFuZGxlZCwKKyAgICA7OyBhcyBwZXIgdGhlIGNv bnRyYWN0IG9mIGBmaWxsLXBhcmFncmFwaC1mdW5jdGlvbicuCisgICAgdCkpCisKKyhkZWZ1biBt YXJrZG93bi10cy0tYWRhcHRpdmUtZmlsbCAoKQorICAiUmV0dXJuIHRoZSBmaWxsIHByZWZpeCBm b3IgdGhlIGN1cnJlbnQgbGluZSBpbiBNYXJrZG93bi4KK1doZW4gaW5zaWRlIGEgbGlzdCBpdGVt LCByZXR1cm4gc3BhY2VzIG1hdGNoaW5nIHRoZSBjb2x1bW4gd2hlcmUKK3RoZSBpdGVtJ3MgdGV4 dCBzdGFydHMuIgorICAoYW5kLWxldCogKChub2RlICh0cmVlc2l0LW5vZGUtYXQKKyAgICAgICAg ICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAocG9pbnQp KQorICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24pKQorICAgICAgICAgICAgIChpdGVtICh0 cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1cXCciKSkpCisgICAgKG1ha2Ut c3RyaW5nIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pID9ccykpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtZm9yd2FyZC1wYXJhZ3JhcGggKGFyZykKKyAgIk1v dmUgZm9yd2FyZCBieSBBUkcgcGFyYWdyYXBocywgcmVzcGVjdGluZyBNYXJrZG93biBzdHJ1Y3R1 cmUuCitMaXN0IGl0ZW1zIGFyZSB0cmVhdGVkIGFzIGluZGl2aWR1YWwgcGFyYWdyYXBocy4gIEJs b2NrcyBtYXRjaGVkCitieSBgbWFya2Rvd24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1xdWVy eScgYXJlIHNraXBwZWQ6IGJvdGgKK2ZvcndhcmQgYW5kIGJhY2t3YXJkIG1vdGlvbiBtb3ZlIHRv IHRoZSBlbmQgb2YgdGhlIGJsb2NrLCBzbworYGZpbGwtcmVnaW9uJyBzZWVzIGEgemVyby1sZW5n dGggcmVnaW9uIGFuZCBsZWF2ZXMgdGhlIGJsb2NrCit1bmZpbGxlZC4iCisgIChsZXQgKChkaXJl Y3Rpb24gKGlmICg+IGFyZyAwKSAxIC0xKSkKKyAgICAgICAgKGNvdW50IChhYnMgYXJnKSkKKyAg ICAgICAgKG1vdmVkIDApKQorICAgIChkb3RpbWVzIChfIGNvdW50KQorICAgICAgOzsgRm9yIGJh Y2t3YXJkIG1vdGlvbiwgc2tpcCBiYWNrIG92ZXIgd2hpdGVzcGFjZSB0byBmaW5kCisgICAgICA7 OyB0aGUgaXRlbSB3ZSBhcmUgbGVhdmluZywgbm90IHRoZSBuZXh0IG9uZS4KKyAgICAgIChsZXQq ICgocG9zIChpZiAoPCBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIg XHRcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAobWF4IChwb2ludC1taW4pICgxLSAocG9p bnQpKSkpCisgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQorICAgICAgICAgICAgIChibG9j ayAoY2FyICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg KHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rvd24pCisgICAgICAgICAgICAgICAgICAg ICAgICAgIG1hcmtkb3duLXRzLS1maWxsLXVuZmlsbGFibGUtYmxvY2stcXVlcnkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcG9zICgxKyBwb3MpKSkpCisgICAgICAgICAgICAgKGluZGVudGVk LXBvcyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8t Y2hhciBwb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0 aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkKKyAgICAgICAgICAg ICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IGluZGVudGVkLXBvcyAnbWFya2Rvd24pKQorICAgICAg ICAgICAgIChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1cXCci KSkpCisgICAgICAgIDs7IFdoZW4gbW92aW5nIGZvcndhcmQgZnJvbSB3aGl0ZXNwYWNlIGJldHdl ZW4gbGlzdCBpdGVtcywKKyAgICAgICAgOzsgc2tpcCB0byB0aGUgbmV4dCBub24tYmxhbmsgcG9z aXRpb24gYW5kIGNoZWNrIGFnYWluLgorICAgICAgICAod2hlbiAoYW5kIChub3QgaXRlbSkgKG5v dCBibG9jaykgKD4gZGlyZWN0aW9uIDApKQorICAgICAgICAgIChsZXQgKChuZXh0LXBvcyAoc2F2 ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3 YXJkICIgXHRcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKQorICAg ICAgICAgICAgKHNldHEgbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQtcG9zICdtYXJrZG93bikp CisgICAgICAgICAgICAoc2V0cSBpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBs aXN0X2l0ZW1cXCciKSkpKQorICAgICAgICAoY29uZAorICAgICAgICAgOzsgSW5zaWRlIGFuIHVu ZmlsbGFibGUgYmxvY2s6IHNraXAgb3ZlciBpdCBlbnRpcmVseS4KKyAgICAgICAgIChibG9jawor ICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgKGNkciBibG9jaykpKQorICAg ICAgICAgIChzZXRxIG1vdmVkICgxKyBtb3ZlZCkpKQorICAgICAgICAgOzsgSW5zaWRlIGEgbGlz dCBpdGVtOiB0cmVhdCBhcyBwYXJhZ3JhcGggYm91bmRhcnkuCisgICAgICAgICAoaXRlbQorICAg ICAgICAgIChpZiAoPiBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJl ZXNpdC1ub2RlLWVuZCBpdGVtKSkKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9k ZS1zdGFydCBpdGVtKSkpCisgICAgICAgICAgKHNldHEgbW92ZWQgKDErIG1vdmVkKSkpCisgICAg ICAgICA7OyBEZWZhdWx0OiB1c2Ugc3RhbmRhcmQgcGFyYWdyYXBoIG1vdGlvbi4KKyAgICAgICAg ICh0CisgICAgICAgICAgKGZvcndhcmQtcGFyYWdyYXBoIGRpcmVjdGlvbikKKyAgICAgICAgICAo c2V0cSBtb3ZlZCAoMSsgbW92ZWQpKSkpKSkKKyAgICA7OyBSZXR1cm4gdGhlIG51bWJlciBvZiBw YXJhZ3JhcGhzIGxlZnQgdG8gbW92ZSAoMCA9IGFsbCBkb25lKS4KKyAgICAoLSBjb3VudCBtb3Zl ZCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9uYWwganVz dGlmeSkKKyAgIkZpbGwgdGhlIGN1cnJlbnQgcGFyYWdyYXBoLCByZXNwZWN0aW5nIE1hcmtkb3du IGJsb2NrIHN0cnVjdHVyZS4KK1RoaXMgZnVuY3Rpb24gcHJldmVudHMgZmlsbGluZyBpbnNpZGUg YmxvY2tzIG1hdGNoZWQgYnkKK2BtYXJrZG93bi10cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1 ZXJ5JywgYW5kIGZpbGxzIHdpdGhpbiBsaXN0CitpdGVtcyB3aXRob3V0IG1lcmdpbmcgYWRqYWNl bnQgaXRlbXMuICBKVVNUSUZZIGlzIGFzIGluCitgZmlsbC1wYXJhZ3JhcGgnLiIKKyAgKGNvbmQq CisgICA7OyBEb24ndCBmaWxsIGluc2lkZSB1bmZpbGxhYmxlIGJsb2Nrcy4gIFVzZSBhIHF1ZXJ5 IGFnYWluc3QgdGhlCisgICA7OyByb290IG5vZGUgYmVjYXVzZSBgdHJlZXNpdC1ub2RlLWF0JyBt YXkgbm90IHJldHVybiBhIG5vZGUKKyAgIDs7IGluc2lkZSB0aGUgYmxvY2sgd2hlbiBwb2ludCBp cyBvbiBhbm9ueW1vdXMgKHVubmFtZWQpIHRleHQuCisgICAoKHRyZWVzaXQtcXVlcnktY2FwdHVy ZQorICAgICAodHJlZXNpdC1idWZmZXItcm9vdC1ub2RlICdtYXJrZG93bikKKyAgICAgbWFya2Rv d24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1xdWVyeQorICAgICAocG9pbnQpIChtaW4gKDEr IChwb2ludCkpIChwb2ludC1tYXgpKSkKKyAgICB0KQorICAgOzsgRmlsbCB3aXRoaW4gdGhlIGVu Y2xvc2luZyBsaXN0IGl0ZW0uICBVc2UKKyAgIDs7IGBtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0 LXBvaW50JyB3aGljaCBoYW5kbGVzIGJsb2NrIHF1b3RlCisgICA7OyBtYXJrZXJzLiAgV2hlbiB0 aGUgbGlzdCBpdGVtIGlzIGluc2lkZSBhIGJsb2NrIHF1b3RlLCBkZWxlZ2F0ZQorICAgOzsgdG8g dGhlIGJsb2NrIHF1b3RlIGZpbGxlciB3aGljaCBoYW5kbGVzIGA+ICcgcHJlZml4ZXMgY29ycmVj dGx5LgorICAgKChiaW5kLWFuZCogKGl0ZW0gKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9p bnQpKSkKKyAgICAoaWYgKHRyZWVzaXQtcGFyZW50LXVudGlsIGl0ZW0gIlxcYGJsb2NrX3F1b3Rl XFwnIikKKyAgICAgICAgKG1hcmtkb3duLXRzLS1maWxsLWJsb2NrLXF1b3RlIGp1c3RpZnkpCisg ICAgICAobWFya2Rvd24tdHMtLWZpbGwtbGlzdC1pdGVtIGl0ZW0ganVzdGlmeSkpKQorICAgOzsg UG9pbnQgaXMgb24gYSBibGFuayBsaW5lIGJlZm9yZSBhIGxpc3QuICBJZiB0aGUgbmV4dAorICAg Ozsgbm9uLXdoaXRlc3BhY2UgcG9zaXRpb24gZmFsbHMgaW5zaWRlIGEgbGlzdCBpdGVtLCBmaWxs IHRoYXQgaXRlbS4KKyAgICgoc2F2ZS1leGN1cnNpb24KKyAgICAgIChiZWdpbm5pbmctb2YtbGlu ZSkKKyAgICAgIChsb29raW5nLWF0LXAgIlsgXHRdKiQiKSkKKyAgICAoYW5kLWxldCogKChuZXh0 LXBvcyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNo YXJzLWZvcndhcmQgIiBcdFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkp KQorICAgICAgICAgICAgICAgKG5leHQtbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQtcG9zICdt YXJrZG93bikpCisgICAgICAgICAgICAgICAoaXRlbSAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAg ICAgICAgICAgICAgICAgICAgICBuZXh0LW5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkKKyAgICAg IChtYXJrZG93bi10cy0tZmlsbC1saXN0LWl0ZW0gaXRlbSBqdXN0aWZ5KSkpCisgICA7OyBGaWxs IHdpdGhpbiBhIGJsb2NrIHF1b3RlLiAgTmFycm93IHRvIHRoZSBwYXJhZ3JhcGggbm9kZSBhdAor ICAgOzsgcG9pbnQncyBuZXN0aW5nIGxldmVsIHNvIGxpbmVzIHdpdGggZGlmZmVyZW50IGA+ICcg ZGVwdGhzCisgICA7OyBhcmUgbm90IG1lcmdlZC4KKyAgICgodHJlZXNpdC1wYXJlbnQtdW50aWwK KyAgICAgKHRyZWVzaXQtbm9kZS1hdAorICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWlu ZGVudGF0aW9uKSAocG9pbnQpKQorICAgICAgJ21hcmtkb3duKQorICAgICAiXFxgYmxvY2tfcXVv dGVcXCciKQorICAgIChtYXJrZG93bi10cy0tZmlsbC1ibG9jay1xdW90ZSBqdXN0aWZ5KSkKKyAg IDs7IEZpbGwgd2l0aGluIGFuIEhUTUwgY29tbWVudC4gIFRoZSBub2RlIHR5cGUgaXMgImh0bWxf YmxvY2siCisgICA7OyBpbiBncmFtbWFyIHYwLjQueCBhbmQgImNvbW1lbnQiIGluIHNvbWUgb3Ro ZXIgdmVyc2lvbnMuCisgICAoKGJpbmQtYW5kKiAoYmxvY2sgKGxldCAoKG4gKHRyZWVzaXQtbm9k ZS1hdCAocG9pbnQpICdtYXJrZG93bikpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG9yICh0 cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICJcXGBc XCg/Omh0bWxfYmxvY2tcXHxjb21tZW50XFwpXFwnIikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoYW5kIChtZW1iZXIgKHRyZWVzaXQtbm9kZS10eXBlIG4pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICcoImh0bWxfYmxvY2siICJjb21tZW50IikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKSkpKSkKKyAgICAobWFya2Rvd24tdHMtLWZp bGwtaHRtbC1jb21tZW50IGJsb2NrIGp1c3RpZnkpKQorICAgOzsgRGVmYXVsdDogbGV0IGZpbGwt cGFyYWdyYXBoIGhhbmRsZSBpdC4KKyAgICh0IG5pbCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt LWZpbGwtaHRtbC1jb21tZW50IChub2RlIGp1c3RpZnkpCisgICJGaWxsIEhUTUwgY29tbWVudCBO T0RFLCBhbGlnbmluZyBjb250aW51YXRpb24gbGluZXMuCitSZXR1cm4gdCBpZiBOT0RFIGlzIGEg Y29tbWVudCBhbmQgd2FzIGZpbGxlZCwgbmlsIG90aGVyd2lzZS4KK0pVU1RJRlkgaXMgYXMgaW4g YGZpbGwtcGFyYWdyYXBoJy4iCisgICh3aGVuIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgIChn b3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgICAobG9va2luZy1h dC1wICI8IS0tIikpCisgICAgKGxldCAoKGZpbGwtcHJlZml4IChzYXZlLWV4Y3Vyc2lvbgorICAg ICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2Rl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgKCsgKGN1cnJlbnQtY29s dW1uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoICI8 IS0tICIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHMpKSkKKyAg ICAgICAgICAoYWRhcHRpdmUtZmlsbC1mdW5jdGlvbiBuaWwpCisgICAgICAgICAgKGZpbGwtZm9y d2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24gIydmb3J3YXJkLXBhcmFncmFwaCkKKyAgICAgICAgICAo ZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24gbmlsKSkKKyAgICAgIChzYXZlLXJlc3RyaWN0aW9uCisg ICAgICAgIChuYXJyb3ctdG8tcmVnaW9uICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgIChm aWxsLXBhcmFncmFwaCBqdXN0aWZ5KSkKKyAgICAgIHQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1ibG9jay1xdW90ZS1wcmVmaXggKCkKKyAgIlJldHVybiB0aGUgYmxvY2sgcXVvdGUgcHJlZml4 IHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxpbmUuCitSZWFkIHRoZSBhY3R1YWwgYD4nIG1hcmtl cnMgKHdpdGggd2hhdGV2ZXIgc3BhY2luZyB0aGUgdXNlciB3cm90ZSkKK2Zyb20gdGhlIGJlZ2lu bmluZyBvZiB0aGUgbGluZSBzbyB0aGF0IGZpbGwgcHJlc2VydmVzIHRoZSBleGlzdGluZworc3R5 bGUgKGUuZy4sIGA+Pj4gJyBzdGF5cyBgPj4+ICcsIGA+ID4gPiAnIHN0YXlzIGA+ID4gPiAnKS4i CisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAoaWYgKGxv b2tpbmctYXQgIlxcKFs+IFx0XSo+XFwpWyBcdF0qIikKKyAgICAgICAgKGNvbmNhdCAobWF0Y2gt c3RyaW5nIDApKQorICAgICAgIj4gIikpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtYmxv Y2stcXVvdGUgKGp1c3RpZnkpCisgICJGaWxsIHRoZSBwYXJhZ3JhcGggYXQgcG9pbnQgaW5zaWRl IGEgYmxvY2sgcXVvdGUuCitGaW5kIHRoZSBwYXJhZ3JhcGggbm9kZSBhdCBwb2ludCB3aXRoaW4g dGhlIGJsb2NrIHF1b3RlIGFuZCBmaWxsCitvbmx5IHRoYXQgcGFyYWdyYXBoLCBwcmVzZXJ2aW5n IHRoZSBgPiAnIHByZWZpeC4gIFdoZW4gdGhlCitwYXJhZ3JhcGggaXMgaW5zaWRlIGEgbGlzdCBp dGVtLCBhbGlnbiBjb250aW51YXRpb24gbGluZXMgd2l0aAordGhlIGl0ZW0ncyB0ZXh0IGNvbHVt bi4gIEpVU1RJRlkgaXMgYXMgaW4gYGZpbGwtcGFyYWdyYXBoJy4iCisgIDs7IFNraXAgcGFzdCBg PiAnIG1hcmtlcnMgYW5kIGFueSBsaXN0IG1hcmtlciB0byBsYW5kIGluc2lkZSB0aGUKKyAgOzsg Y29udGVudCwgd2hlcmUgdGhlIHBhcmFncmFwaCBub2RlIGxpdmVzLgorICAobGV0KiAoKGNvbnRl bnQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lubmlu Zy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAi PiBcdCIpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB3ZSBsYW5kIG9uIGEgbGlzdCBt YXJrZXIsIHNraXAgcGFzdCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChsb29r aW5nLWF0ICJbLSorXSBcXHxbMC05XStbLildXHMiKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG1p biAoMSsgKHBvaW50KSkgKHBvaW50LW1heCkpKSkKKyAgICAgICAgIChub2RlICh0cmVlc2l0LW5v ZGUtYXQgY29udGVudC1wb3MgJ21hcmtkb3duKSkKKyAgICAgICAgIChwYXJhICh0cmVlc2l0LXBh cmVudC11bnRpbAorICAgICAgICAgICAgICAgIG5vZGUgKGxhbWJkYSAobikKKyAgICAgICAgICAg ICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAicGFyYWdyYXBoIikpKSkp CisgICAgKHdoZW4gcGFyYQorICAgICAgOzsgVGhlIGdyYW1tYXIgbWF5IGluY2x1ZGUgdHJhaWxp bmcgYmxvY2tfY29udGludWF0aW9uIG5vZGVzCisgICAgICA7OyAoYmxhbmsgYD4gPicgbGluZXMp IGFzIGNoaWxkcmVuIG9mIHRoZSBwYXJhZ3JhcGguICBVc2UgdGhlCisgICAgICA7OyBlbmQgb2Yg dGhlIGxhc3QgaW5saW5lIGNoaWxkIHNvIGZpbGwgZG9lcyBub3QgbWVyZ2UgYWNyb3NzCisgICAg ICA7OyB3aGF0IHNob3VsZCBiZSBhIHBhcmFncmFwaCBib3VuZGFyeS4KKyAgICAgIChsZXQqICgo bGFzdC1pbmxpbmUKKyAgICAgICAgICAgICAgKHNlcS1maW5kIChsYW1iZGEgKGNoaWxkKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxkKSAi aW5saW5lIikpCisgICAgICAgICAgICAgICAgICAgICAgICAocmV2ZXJzZSAodHJlZXNpdC1ub2Rl LWNoaWxkcmVuIHBhcmEpKSkpCisgICAgICAgICAgICAgKHBhcmEtZW5kIChpZiBsYXN0LWlubGlu ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbGFzdC1pbmxp bmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgcGFyYSkpKQor ICAgICAgICAgICAgIChicS1wcmVmaXggKG1hcmtkb3duLXRzLS1ibG9jay1xdW90ZS1wcmVmaXgp KQorICAgICAgICAgICAgIDs7IFdoZW4gaW5zaWRlIGEgbGlzdCBpdGVtLCBleHRlbmQgdGhlIHBy ZWZpeCB3aXRoIHNwYWNlcworICAgICAgICAgICAgIDs7IHNvIGNvbnRpbnVhdGlvbiBsaW5lcyBh bGlnbiB3aXRoIHRoZSBpdGVtJ3MgdGV4dC4KKyAgICAgICAgICAgICAobGlzdC1pdGVtICh0cmVl c2l0LXBhcmVudC11bnRpbCBwYXJhICJcXGBsaXN0X2l0ZW1cXCciKSkKKyAgICAgICAgICAgICAo cHJlZml4IChpZiBsaXN0LWl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0KiAoKHRl eHQtY29sIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1pdGVtKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGV4dHJhIChtYXggMCAoLSB0ZXh0LWNvbCAobGVuZ3RoIGJxLXBy ZWZpeCkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGJxLXByZWZpeCAo bWFrZS1zdHJpbmcgZXh0cmEgP1xzKSkpCisgICAgICAgICAgICAgICAgICAgICAgIGJxLXByZWZp eCkpCisgICAgICAgICAgICAgKGFkYXB0aXZlLWZpbGwtZnVuY3Rpb24gbmlsKQorICAgICAgICAg ICAgIChmaWxsLWZvcndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJhZ3JhcGgp CisgICAgICAgICAgICAgKGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uIG5pbCkpCisgICAgICAgIChz YXZlLXJlc3RyaWN0aW9uCisgICAgICAgICAgOzsgTmFycm93IHRvIHRoZSBmdWxsIGxpbmVzIG9m IHRoZSBwYXJhZ3JhcGggc28gdGhhdCB0aGUKKyAgICAgICAgICA7OyBgPiAnIG1hcmtlcnMgYXJl IGluY2x1ZGVkIGluIHRoZSBmaWxsIHJlZ2lvbi4KKyAgICAgICAgICAobmFycm93LXRvLXJlZ2lv bgorICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAoZ290by1jaGFyICh0 cmVlc2l0LW5vZGUtc3RhcnQgcGFyYSkpCisgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5l KQorICAgICAgICAgICAgIChwb2ludCkpCisgICAgICAgICAgIHBhcmEtZW5kKQorICAgICAgICAg IChsZXQgKChmaWxsLXByZWZpeCBwcmVmaXgpKQorICAgICAgICAgICAgKGZpbGwtcGFyYWdyYXBo IGp1c3RpZnkpKSkpKSkKKyAgdCkKKworOzs7IENvZGUgYmxvY2tzOgorCisoZGVmdmFyLWxvY2Fs IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcyBuaWwKKyAgIkFsaXN0IG1hcHBpbmcg bGFuZ3VhZ2Ugbm9kZSBuYW1lcyB0byB0cyBsYW5ndWFnZS4KK0lmIGEgbGFuZ3VhZ2UgaXMgbm90 IGEgdHMgbGFuZ3VhZ2Ugb3IgaXMgbm90IG1hcHBlZCB0byBvbmUsIGl0IHdpbGwgYmUKK2luIGBt YXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMnLiIpCisKKyhkZWZ2YXItbG9jYWwg bWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzIG5pbAorICAiQWxpc3QgbWFwcGlu ZyBsYW5ndWFnZXMgdG8gbm9uLXRyZWUtc2l0dGVyIG1vZGVzIGZvciBjb2RlIGJsb2Nrcy4KK1Bv cHVsYXRlZCBieSBgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UnIHRvIGlkZW50 aWZ5IGEKK2NvZGUtYmxvY2sgbGFuZ3VhZ2UgbW9kZSB3aGljaCBpcyBub3QgYSB0cmVlLXNpdHRl ciBtb2RlIG9yIGZvciB3aGljaAordGhlIHRyZWUtc2l0dGVyIGdyYW1tYXIgaXMgdW5hdmFpbGFi bGUuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1oYXJ2ZXN0LW1vZGUtdHJlZXNpdC1jb25maWd1 cmF0aW9uIChtb2RlKQorICAiSGFydmVzdCB0cmVlLXNpdHRlciBjb25maWd1cmF0aW9uIGZyb20g TU9ERS4KK1JldHVybiBhIHBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGFuZCB2YWx1ZXM6 CiAKICAgICA6Zm9udC1sb2NrIChmcm9tIGB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncycpCiAg ICAgOnNpbXBsZS1pbmRlbnQgKGZyb20gYHRyZWVzaXQtc2ltcGxlLWluZGVudC1ydWxlcycpCiAg ICAgOnJhbmdlIChmcm9tIGB0cmVlc2l0LXJhbmdlLXNldHRpbmdzJykiCi0gICh3aXRoLXRlbXAt YnVmZmVyCi0gICAgKGZ1bmNhbGwgbW9kZSkKLSAgICAobGlzdCA6Zm9udC1sb2NrIHRyZWVzaXQt Zm9udC1sb2NrLXNldHRpbmdzCisgICh3aXRoLXdvcmstYnVmZmVyCisgICAgKG1hcmtkb3duLXRz LS1pbmhpYml0LW1lc3NhZ2VzLWFuZC13YXJuaW5ncworICAgICAgJ21hcmtkb3duLXRzLWluaGli aXQtY29kZS1ibG9jay1tb2RlLXdhcm5pbmdzCisgICAgICAoZGVsYXktbW9kZS1ob29rcyAoZnVu Y2FsbCBtb2RlKSkpCisgICAgKGxpc3QgOmxhbmd1YWdlICh0cmVlc2l0LWxhbmd1YWdlLWF0IChw b2ludC1taW4pKQorICAgICAgICAgIDpmb250LWxvY2sgdHJlZXNpdC1mb250LWxvY2stc2V0dGlu Z3MKICAgICAgICAgICA6c2ltcGxlLWluZGVudCB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMK ICAgICAgICAgICA6cmFuZ2UgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncykpKQogCi0oZGVmdW4gbWFy a2Rvd24tdHMtLWFkZC1jb25maWctZm9yLW1vZGUgKGxhbmd1YWdlIG1vZGUpCi0gICJBZGQgY29u ZmlndXJhdGlvbnMgZm9yIExBTkdVQUdFIGZyb20gTU9ERSB0byBjdXJyZW50IGJ1ZmZlci4KLQot Q29uZmlndXJhdGlvbiBpbmNsdWRlcyBmb250LWxvY2sgYW5kIGluZGVudC4gIEZvciBmb250LWxv Y2sgcnVsZXMsIHVzZQotdGhlIHNhbWUgZmVhdHVyZXMgZW5hYmxlZCBpbiBNT0RFLiIKLSAgKGxl dCAoKGNvbmZpZ3MgKG1hcmtkb3duLXRzLS1oYXJ2ZXN0LXRyZWVzaXQtY29uZmlncyBtb2RlKSkp Ci0gICAgKGlnbm9yZSBsYW5ndWFnZSkgOyBXZSBtaWdodCBtYWtlIHVzZSBvZiB0aGlzIGxhdGVy LgotICAgIChzZXRxIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAgKGFwcGVu ZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAgOzsgR2V0IGFs bCB0aGUgZm9udC1sb2NrIHNldHRpbmdzLCBpbmNsdWRpbmcgb25lcyB0aGF0Ci0gICAgICAgICAg ICAgICAgICA7OyBkb24ndCBwZXJ0YWluIHRvIExBTkdVQUdFLiAgVGhpcyB3YXkgd2UgZ2V0IGpz ZG9jCi0gICAgICAgICAgICAgICAgICA7OyBmcm9tIGpzLXRzLW1vZGUsIGZvciBleGFtcGxlLgot ICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWdzIDpmb250LWxvY2spKSkKLSAgICAo c2V0cSB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMKLSAgICAgICAgICAoYXBwZW5kIHRyZWVz aXQtc2ltcGxlLWluZGVudC1ydWxlcwotICAgICAgICAgICAgICAgICAgOzsgU2ltaWxhcmx5LCBn ZXQgYWxsIGluZGVudCBydWxlcy4KLSAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgY29uZmln cyA6c2ltcGxlLWluZGVudCkpKQorKGRlZnVuIG1hcmtkb3duLXRzLS1jb25maWd1cmUtY3VycmVu dC1idWZmZXIgKGNvbmZpZ3VyYXRpb24pCisgICJBZGQgQ09ORklHVVJBVElPTiB0byB0aGUgY3Vy cmVudCBidWZmZXIuCitDT05GSUdVUkFUSU9OIGluY2x1ZGVzIGZvbnQtbG9jayBhbmQgaW5kZW50 IHJ1bGVzLiAgRm9yIGZvbnQtbG9jayBydWxlcywKK3VzZSB0aGUgc2FtZSBmZWF0dXJlcyBlbmFi bGVkIGluIE1PREUuIgorICAoc2V0cSB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAg ICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgOzsg R2V0IGFsbCB0aGUgZm9udC1sb2NrIHNldHRpbmdzLCBpbmNsdWRpbmcgb25lcyB0aGF0CisgICAg ICAgICAgICAgICAgOzsgZG9uJ3QgcGVydGFpbiB0byBNT0RFLiAgVGhpcyB3YXksIHdlIGdldCBq c2RvYworICAgICAgICAgICAgICAgIDs7IGZyb20ganMtdHMtbW9kZSwgZm9yIGV4YW1wbGUuCisg ICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWd1cmF0aW9uIDpmb250LWxvY2spKSkKKyAg KHNldHEgdHJlZXNpdC1zaW1wbGUtaW5kZW50LXJ1bGVzCisgICAgICAgIChhcHBlbmQgdHJlZXNp dC1zaW1wbGUtaW5kZW50LXJ1bGVzCisgICAgICAgICAgICAgICAgOzsgU2ltaWxhcmx5LCBnZXQg YWxsIGluZGVudCBydWxlcy4KKyAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3VyYXRp b24gOnNpbXBsZS1pbmRlbnQpKSkKICAgICAoc2V0cSB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCiAg ICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCiAgICAgICAgICAgICAgICAg ICA7OyBGaWx0ZXIgb3V0IGZ1bmN0aW9uIHF1ZXJpZXMsIGJlY2F1c2UgdGhleSBhcmUKQEAgLTMw Miw0NSArMjY0OSwxOTQ2IEBAIG1hcmtkb3duLXRzLS1hZGQtY29uZmlnLWZvci1tb2RlCiAgICAg ICAgICAgICAgICAgICA7OyBDYXNlIGluIHBvaW50OiBjLXRzLW1vZGUncyByYW5nZSBzZXR0aW5n LgogICAgICAgICAgICAgICAgICAgKHNlcS1maWx0ZXIgKGxhbWJkYSAoc2V0dGluZykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZnVuY3Rpb25wIChjYXIgc2V0dGluZykp KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgY29uZmlncyA6cmFu Z2UpKSkpCi0gICAgKHNldHEtbG9jYWwgaW5kZW50LWxpbmUtZnVuY3Rpb24gIyd0cmVlc2l0LWlu ZGVudCkKLSAgICAoc2V0cS1sb2NhbCBpbmRlbnQtcmVnaW9uLWZ1bmN0aW9uICMndHJlZXNpdC1p bmRlbnQtcmVnaW9uKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0 IGNvbmZpZ3VyYXRpb24gOnJhbmdlKSkpKQorICAoc2V0cS1sb2NhbCBpbmRlbnQtbGluZS1mdW5j dGlvbiAjJ3RyZWVzaXQtaW5kZW50KQorICAoc2V0cS1sb2NhbCBpbmRlbnQtcmVnaW9uLWZ1bmN0 aW9uICMndHJlZXNpdC1pbmRlbnQtcmVnaW9uKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1sYW5n dWFnZS1hdC1ub2RlIChub2RlKQorICAiUmV0dXJuIHRoZSBsYW5ndWFnZSBzeW1ib2wgZm9yIGNv ZGVfZmVuY2VfY29udGVudCBOT0RFLiIKKyAgKHdoZW4tbGV0KiAoKHBhcmVudCAodHJlZXNpdC1u b2RlLXBhcmVudCBub2RlKSkKKyAgICAgICAgICAgICAgKGxhbmctbm9kZSAod2hlbiBwYXJlbnQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVu dCAiXFxgbGFuZ3VhZ2VcXCciKSkpKQorICAgIChpbnRlcm4gKHRyZWVzaXQtbm9kZS10ZXh0IGxh bmctbm9kZSB0KSkpKQogCi0oZGVmdW4gbWFya2Rvd24tdHMtLWNvbnZlcnQtY29kZS1ibG9jay1s YW5ndWFnZSAobm9kZSkKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5 LWNhY2hlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVhbCkKKyAgIkNhY2hlIGZvciBub24t dHJlZS1zaXR0ZXIgY29kZSBibG9jayBmb250aWZpY2F0aW9uLgorS2V5cyBhcmUgKExBTkcgLiBD T05URU5ULUhBU0gpIGNvbnMgY2VsbHMsIHZhbHVlcyBhcmUgbGlzdHMgb2YKK1woT0ZGU0VULVNU QVJUIE9GRlNFVC1FTkQgRkFDRSkgdHJpcGxlcy4iKQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3du LXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZS10aWNrIG5pbAorICAiRm9yIGJsdW50IGBidWZmZXIt Y2hhcnMtbW9kaWZpZWQtdGljaycgY2FjaGUgaW52YWxpZGF0aW9uLiIpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tZm9udGlmeS1ub24tdHMtY29kZS1ibG9jayAobm9kZSBvdmVycmlkZSBzdGFydCBl bmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgY29kZV9mZW5jZV9jb250ZW50IE5PREUgdXNpbmcgYSBu b24tdHJlZS1zaXR0ZXIgbW9kZS4KK0FwcGx5IHRoZSBjb2RlLWJsb2NrIG1vZGUncyBjb252ZW50 aW9uYWwgZm9udC1sb2NrIGluIGEgdGVtcG9yYXJ5CitidWZmZXIuICBPVkVSUklERSwgU1RBUlQs IGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3Zl cnJpZGUnLgorCitDYWNoZSByZXN1bHRzIHRvIGF2b2lkIGZvbnRpZmljYXRpb24gb2YgdW5jaGFu Z2VkIGNvZGUgYmxvY2tzLgorCitOT0RFIHNob3VsZCBhbHJlYWR5IGhhdmUgcGFzc2VkIHRocm91 Z2gKK2BtYXJrZG93bi10cy0tY29kZS1ibG9jay10cy1sYW5ndWFnZScgd2hpY2ggbWF5IGhhdmUg Y2xhc3NpZmllZCB0aGlzCitub2RlIGFzIGEgbm9uLXRzIG1vZGUuIgorICAod2hlbi1sZXQqICgo XyBtYXJrZG93bi10cy1mb250aWZ5LWNvZGUtYmxvY2tzLW5hdGl2ZWx5KQorICAgICAgICAgICAg ICAobGFuZyAobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUgbm9kZSkpCisgICAgICAgICAg ICAgIChtb2RlIChhbGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMt bW9kZXMpKQorICAgICAgICAgICAgICAodGljayAoYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2sp KQorICAgICAgICAgICAgICAoYmxvY2stc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkK KyAgICAgICAgICAgICAgOzsgQ2Fubm90IHVzZSBtYXJrZXJzICdtYXJrZG93bi10cy1jb2RlLWJl Zy1tYXJrZXIKKyAgICAgICAgICAgICAgOzsgJ21hcmtkb3duLXRzLWNvZGUtZW5kLW1hcmtlciB0 aGV5IGFyZSBzZXQgYWZ0ZXIgdGhpcworICAgICAgICAgICAgICA7OyBmdW5jdGlvbiBydW5zLgor ICAgICAgICAgICAgICAobm9kZS1zdGFydCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpCisgICAg ICAgICAgICAgIChub2RlLWVuZCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChwb2ludCkpKSkKKyAgICAod2hlbiAoPiBub2RlLWVuZCBub2RlLXN0YXJ0KQor ICAgICAgKHVubGVzcyAoZXEgdGljayBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUt dGljaykKKyAgICAgICAgKGNscmhhc2ggbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5LWNhY2hl KSkKKyAgICAgIChsZXQqICgoY2FjaGUta2V5IChjb25zIGxhbmcgKHNlY3VyZS1oYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMjU2CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpIG5vZGUtc3RhcnQgbm9kZS1lbmQp KSkKKyAgICAgICAgICAgICAocHJvcHMKKyAgICAgICAgICAgICAgKG9yIChnZXRoYXNoIGNhY2hl LWtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLW5vbi10cy1mb250 aWZ5LWNhY2hlKQorICAgICAgICAgICAgICAgICAgKGxldCAoKHJlc3VsdAorICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXJrZG93bi10cy0tZm9udGlmeS1ub24tdHMtY29sbGVjdC1mYWNlcwor ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlIG5vZGUtc3RhcnQgbm9kZS1lbmQpKSkKKyAg ICAgICAgICAgICAgICAgICAgKHB1dGhhc2ggY2FjaGUta2V5IHJlc3VsdAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpCisgICAg ICAgICAgICAgICAgICAgIChzZXRxIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZS10 aWNrIHRpY2spCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkpKSkKKyAgICAgICAgKGRvbGlz dCAocmFuZ2UgcHJvcHMpCisgICAgICAgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRl CisgICAgICAgICAgIChudGggMCByYW5nZSkKKyAgICAgICAgICAgKG50aCAxIHJhbmdlKQorICAg ICAgICAgICAobnRoIDIgcmFuZ2UpCisgICAgICAgICAgIG92ZXJyaWRlIHN0YXJ0IGVuZCkpKSkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbm9uLXRzLWNvbGxlY3QtZmFjZXMgKG1v ZGUgYmVnIGVuZCkKKyAgIlJ1biBNT0RFIG9uIHRoZSBCRUcuLkVORCByZWdpb24ncyB0ZXh0IGFu ZCBoYXJ2ZXN0IGZhY2UgcHJvcGVydGllcy4KK1JldHVybiBhIGxpc3Qgb2YgKEJVRi1CRUcgQlVG LUVORCBGQUNFKSB0cmlwbGVzIGluIGJhc2UtYnVmZmVyCitjb29yZGluYXRlcy4KKworRm9yIG5v bi10cmVlLXNpdHRlciBtb2RlcyB1c2UgYW4gaW5kaXJlY3QgYnVmZmVyIG5hcnJvd2VkIHRvIEJF Ry4uRU5EOgorcmVnZXgvc3ludGFjdGljIGZvbnQtbG9jayBob25vcnMgbmFycm93aW5nIGFuZCB0 aGUgaW5kaXJlY3QgYnVmZmVyCitzaGFyZXMgdGV4dCB3aXRoIHRoZSBiYXNlLCBzbyB0aGlzIGlz IGxlc3MgZXhwZW5zaXZlIGFuZCBjb3B5LWZyZWUuCisKK0ZvciB0cyBtb2RlcyBpbiBgbWFya2Rv d24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMnLCBmYWxsCitiYWNrIHRv IGEgdGVtcCBidWZmZXIuICBBIHBhcnNlciBjcmVhdGVkIGluIHRoZSBzb3VyY2UgYnVmZmVyIGRv ZXMgbm90CityZWFjdCB0byBuYXJyb3dpbmcgaW4gYW4gaW5kaXJlY3QgYnVmZmVyIGRlcml2ZWQg ZnJvbSBpdCAob25seSBwYXJzZXJzCitjcmVhdGVkIGluIHRoYXQgaW5kaXJlY3QgYnVmZmVyIHdv dWxkIGhvbm9yIGl0cyBuYXJyb3dpbmcpLCBzbyByZXVzaW5nCit0aGUgaG9zdCBwYXJzZXIgdmlh IGFuIGluZGlyZWN0IGJ1ZmZlciBpcyBub3QgYW4gb3B0aW9uIGhlcmUuICBBbmQgaW4KK3RoZSBo b3N0IGJ1ZmZlciBpdHNlbGYsIHRoZSBpbm5lciBjb250ZW50IG9mIGEgZmVuY2VkIGNvZGUgYmxv Y2sgaXMKK2p1c3Qgb3BhcXVlIHRleHQgaW5zaWRlIGEgYGNvZGVfZmVuY2VfY29udGVudCcgbm9k ZSwgbmV2ZXIgcmUtcGFyc2VkCithcyBhIGZyZXNoIGRvY3VtZW50LiAgQSB0ZW1wIGJ1ZmZlciB3 aXRoIGEgZnJlc2ggcGFyc2VyIHNlZXMgdGhlIGlubmVyCitjb250ZW50IGFzIGEgc3RhbmRhbG9u ZSBtYXJrZG93biBkb2N1bWVudCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LiIKKyAgKGNvbmQgKCht ZW1xIG1vZGUgbWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMp CisgICAgICAgICAobGV0ICgoY29udGVudCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVz IGJlZyBlbmQpKQorICAgICAgICAgICAgICAgcmVzKQorICAgICAgICAgICAod2l0aC13b3JrLWJ1 ZmZlcgorICAgICAgICAgICAgIChpbnNlcnQgY29udGVudCkKKyAgICAgICAgICAgICAobWFya2Rv d24tdHMtLWluaGliaXQtbWVzc2FnZXMtYW5kLXdhcm5pbmdzCisgICAgICAgICAgICAgICAnbWFy a2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MKKyAgICAgICAgICAgICAg IChkZWxheS1tb2RlLWhvb2tzCisgICAgICAgICAgICAgICAgIChsZXQgKChtYXJrZG93bi10cy0t c2V0LXVwLWlubGluZSB0KSkKKyAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtbW9kZSkp KSkKKyAgICAgICAgICAgICAoZm9udC1sb2NrLWVuc3VyZSkKKyAgICAgICAgICAgICAobGV0ICgo cG9zIChwb2ludC1taW4pKSkKKyAgICAgICAgICAgICAgICh3aGlsZSAoPCBwb3MgKHBvaW50LW1h eCkpCisgICAgICAgICAgICAgICAgIChsZXQgKChuZXh0IChuZXh0LXNpbmdsZS1wcm9wZXJ0eS1j aGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyAnZmFjZSBuaWwgKHBvaW50 LW1heCkpKQorICAgICAgICAgICAgICAgICAgICAgICAoZmFjZSAoZ2V0LXRleHQtcHJvcGVydHkg cG9zICdmYWNlKSkpCisgICAgICAgICAgICAgICAgICAgKHdoZW4gZmFjZQorICAgICAgICAgICAg ICAgICAgICAgOzsgVHJhbnNsYXRlIHRlbXAtYnVmZmVyIG9mZnNldHMgYmFjayB0byBiYXNlLWJ1 ZmZlcgorICAgICAgICAgICAgICAgICAgICAgOzsgcG9zaXRpb25zOiB0ZW1wIGBwb2ludC1taW4n IGNvcnJlc3BvbmRzIHRvIEJFRy4KKyAgICAgICAgICAgICAgICAgICAgIChwdXNoIChsaXN0ICgr IGJlZyAoMS0gcG9zKSkgKCsgYmVnICgxLSBuZXh0KSkgZmFjZSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlcykpCisgICAgICAgICAgICAgICAgICAgKHNldHEgcG9zIG5leHQpKSkpKQor ICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpCisgICAgICAgICh0CisgICAgICAgICAobGV0ICgo aW5kaXJlY3QtYnVmZmVyIChtYWtlLWluZGlyZWN0LWJ1ZmZlcgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdlbmVyYXRlLW5ldy1idWZmZXItbmFtZSAoYnVmZmVyLW5hbWUpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsICdpbmhpYml0LWJ1ZmZlci1ob29rcykpCisg ICAgICAgICAgICAgICByZXMpCisgICAgICAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAg ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgaW5kaXJlY3QtYnVmZmVyCisgICAgICAgICAgICAg ICAgIChtYXJrZG93bi10cy0taW5oaWJpdC1tZXNzYWdlcy1hbmQtd2FybmluZ3MKKyAgICAgICAg ICAgICAgICAgICAnbWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MK KyAgICAgICAgICAgICAgICAgICAoZGVsYXktbW9kZS1ob29rcyAoZnVuY2FsbCBtb2RlKSkpCisg ICAgICAgICAgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uIGJlZyBlbmQpCisgICAgICAgICAgICAg ICAgIChmb250LWxvY2stZW5zdXJlKQorICAgICAgICAgICAgICAgICAobGV0ICgocG9zIChwb2lu dC1taW4pKSkKKyAgICAgICAgICAgICAgICAgICAod2hpbGUgKDwgcG9zIChwb2ludC1tYXgpKQor ICAgICAgICAgICAgICAgICAgICAgKGxldCAoKG5leHQgKG5leHQtc2luZ2xlLXByb3BlcnR5LWNo YW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyAnZmFjZSBuaWwgKHBv aW50LW1heCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhY2UgKGdldC10ZXh0LXBy b3BlcnR5IHBvcyAnZmFjZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBmYWNlCisg ICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgcG9zIG5leHQgZmFjZSkgcmVzKSkK KyAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgcG9zIG5leHQpKSkpKQorICAgICAgICAgICAg IChraWxsLWJ1ZmZlciBpbmRpcmVjdC1idWZmZXIpKQorICAgICAgICAgICAobnJldmVyc2UgcmVz KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgKGxh bmcpCisgICJDb21wdXRlIGFuZCBjYWNoZSBhIG1vZGUgc3ltYm9sIGZyb20gTEFORywgYSBzeW1i b2wuCitDb25zdWx0IHRoZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcycgY2FjaGUsIG9y IGNvbnN1bHQKK2B0cmVlc2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QnIGFuZCBgbWFqb3ItbW9k ZS1yZW1hcC1hbGlzdCcsIG9yIGJydXRlCitmb3JjZSBtb2RlIHByb2JlLiAgUmV0dXJuIGEgdmFs aWQgbW9kZSBzeW1ib2wgb3IgbmlsLiIKKyAgKGlmLWxldCogKChtYXBwZWQtbW9kZSAoY2FyIChh bGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKSkpKQorICAgICAgbWFw cGVkLW1vZGUKKyAgICAobGV0KiAoKGxhbmctc3RyaW5nIChzeW1ib2wtbmFtZSBsYW5nKSkKKyAg ICAgICAgICAgKGxhbmctbW9kZSAoY29uY2F0IGxhbmctc3RyaW5nICItbW9kZSIpKQorICAgICAg ICAgICAobW9kZSkpCisgICAgICAoaWYgKHNldHEgbW9kZSAoYWxpc3QtZ2V0IGxhbmctbW9kZSB0 cmVlc2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QpKQorICAgICAgICAgIG1vZGUKKyAgICAgICAg KGlmIChzZXRxIG1vZGUgKGFsaXN0LWdldCBsYW5nLW1vZGUgbWFqb3ItbW9kZS1yZW1hcC1hbGlz dCkpCisgICAgICAgICAgICBtb2RlCisgICAgICAgICAgKGNhdGNoIDptb2RlCisgICAgICAgICAg ICAoZG9saXN0IChtb2RlCisgICAgICAgICAgICAgICAgICAgICAobGlzdAorICAgICAgICAgICAg ICAgICAgICAgIDs7IFRyeSBhIHRyZWVzaXQgbW9kZSB1c2luZyB0aGUgcmF3IHN0cmluZy4KKyAg ICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGxhbmctc3RyaW5nICItdHMtbW9kZSIpCisgICAg ICAgICAgICAgICAgICAgICAgOzsgVHJ5IGEgY29udmVudGlvbmFsIG1vZGUgdXNpbmcgdGhlIHJh dyBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgbGFuZy1tb2RlCisgICAgICAgICAgICAg ICAgICAgICAgOzsgVHJ5IGEgdHJlZXNpdCBtb2RlIHVzaW5nIHRoZSBkb3duY2FzZWQgc3RyaW5n LgorICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgKGRvd25jYXNlIGxhbmctc3RyaW5nKSAi LXRzLW1vZGUiKQorICAgICAgICAgICAgICAgICAgICAgIDs7IFRyeSBhIGNvbnZlbnRpb25hbCBt b2RlIHVzaW5nIHRoZSBkb3duY2FzZWQgc3RyaW5nLgorICAgICAgICAgICAgICAgICAgICAgIChj b25jYXQgKGRvd25jYXNlIGxhbmctc3RyaW5nKSAiLW1vZGUiKSkpCisgICAgICAgICAgICAgIChz ZXRxIG1vZGUgKGludGVybiBtb2RlKSkKKyAgICAgICAgICAgICAgKHdoZW4gKGZib3VuZHAgbW9k ZSkKKyAgICAgICAgICAgICAgICAocHVzaCAobGlzdCBsYW5nIG1vZGUpIG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stbW9kZXMpCisgICAgICAgICAgICAgICAgKHRocm93IDptb2RlIG1vZGUpKSkpKSkp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLXRzLWxhbmd1YWdlIChub2RlKQog ICAiQ29udmVydCBOT0RFIHRvIGEgbGFuZ3VhZ2UgZm9yIHRoZSBjb2RlIGJsb2NrLiIKLSAgKGxl dCogKChsYW5nLXN0cmluZyAoYWxpc3QtZ2V0ICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFu Z3VhZ2UtbWFwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LXRleHQgbm9kZSkgbmlsICMnZXF1YWwpKQotICAgICAgICAgKGxhbmcgKGlmIChzeW1ib2xwIGxh bmctc3RyaW5nKQotICAgICAgICAgICAgICAgICAgIGxhbmctc3RyaW5nCi0gICAgICAgICAgICAg ICAgIChpbnRlcm4gKGRvd25jYXNlIGxhbmctc3RyaW5nKSkpKSkKLSAgICA7OyBGSVhNRTogS2lu ZCBvZiBhIGhhY2sgaGVyZTogd2UgdXNlIHRoaXMgZnVuY3Rpb24gYXMgYSBob29rIGZvcgotICAg IDs7IGxvYWRpbmcgdXAgY29uZmlncyBmb3IgdGhlIGxhbmd1YWdlIGZvciB0aGUgY29kZSBibG9j ayBvbi1kZW1hbmQuCi0gICAgKGxldCAoKG1vZGUgKGFsaXN0LWdldCBsYW5nIG1hcmtkb3duLXRz LWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwKSkpCi0gICAgICA7OyBJZiB0aGVyZSdzIG5vIHN1 cHBvcnRlZCBtb2RlIGZvciB0aGUgbGFuZ3VhZ2UsIHJldHVybiBuaWwsCi0gICAgICA7OyB3aGlj aCBtYWtlcyBFbWFjcyBza2lwIHRoZSBjb2RlIGJsb2NrLgotICAgICAgKGlmIChub3QgKGFuZCBt b2RlIChmYm91bmRwIG1vZGUpKSkKLSAgICAgICAgICBuaWwKLSAgICAgICAgOzsgSWYgdGhlcmUn cyBhIG1ham9yIG1vZGUgZm9yIHRoZSBsYW5ndWFnZSwgc2V0IHVwIHRoZSBjb25maWcKLSAgICAg ICAgOzsgYW5kIHJldHVybiB0aGUgbGFuZ3VhZ2UuCi0gICAgICAgICh3aGVuIChub3QgKG1lbXEg bGFuZyBtYXJrZG93bi10cy0tY29uZmlndXJlZC1sYW5ndWFnZXMpKQotICAgICAgICAgIChtYXJr ZG93bi10cy0tYWRkLWNvbmZpZy1mb3ItbW9kZSBsYW5nIG1vZGUpCi0gICAgICAgICAgKHB1c2gg bGFuZyBtYXJrZG93bi10cy0tY29uZmlndXJlZC1sYW5ndWFnZXMpKQotICAgICAgICBsYW5nKSkp KQorICAobGV0KiAoKGxhbmcgKGludGVybiAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSkpKQorICAg ICAgICAgKG1vZGUgKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgbGFuZykp CisgICAgICAgICAodHMtbGFuZ3VhZ2UgKGFsaXN0LWdldCBsYW5nIG1hcmtkb3duLXRzLS1jb2Rl LWJsb2NrLWxhbmd1YWdlcykpCisgICAgICAgICAobm9uLXRzLWxhbmd1YWdlIChhbGlzdC1nZXQg bGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKSkKKyAgICAoY29uZAor ICAgICAoKGZib3VuZHAgbW9kZSkKKyAgICAgIChjb25kCisgICAgICAgOzsgUmV0dXJuIGtub3du IHRyZWVzaXQgbGFuZ3VhZ2UuCisgICAgICAgKHRzLWxhbmd1YWdlIHRzLWxhbmd1YWdlKQorICAg ICAgIDs7IFJldHVybiBuaWwgZm9yIGtub3duIG5vbi10cmVlc2l0IGxhbmd1YWdlIGZvciBmb250 LWxvY2suCisgICAgICAgKG5vbi10cy1sYW5ndWFnZSBuaWwpCisgICAgICAgOzsgTWFya2Rvd24g aXRzZWxmIG5lZWRzIHR3byBwYXJzZXJzIChtYXJrZG93biArCisgICAgICAgOzsgbWFya2Rvd24t aW5saW5lKSwgc28gdHJlZXNpdCBlbWJlZGRpbmcgKHdoaWNoIGNyZWF0ZXMgb25seQorICAgICAg IDs7IG9uZSkgY2Fubm90IGZ1bGx5IGZvbnRpZnkgaXQuICBSb3V0ZSB0aHJvdWdoIHRoZSBub24t dHMKKyAgICAgICA7OyBwYXRoIHNvIHRoZSB0ZW1wIGJ1ZmZlciBydW5zIHRoZSBmdWxsIG1vZGUg d2l0aCBib3RoCisgICAgICAgOzsgcGFyc2Vycy4KKyAgICAgICAoKHByb3ZpZGVkLW1vZGUtZGVy aXZlZC1wIG1vZGUgJ21hcmtkb3duLXRzLW1vZGUpCisgICAgICAgICh1bmxlc3MgKGFzc3EgbGFu ZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpCisgICAgICAgICAgKHB1c2gg KGNvbnMgbGFuZyBtb2RlKSBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKQor ICAgICAgICBuaWwpCisgICAgICAgKHQKKyAgICAgICAgKGxldCogKChjb25maWd1cmF0aW9uICht YXJrZG93bi10cy0taGFydmVzdC1tb2RlLXRyZWVzaXQtY29uZmlndXJhdGlvbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1vZGUpKQorICAgICAgICAgICAgICAgKHRzLWxhbmd1YWdl IChwbGlzdC1nZXQgY29uZmlndXJhdGlvbiA6bGFuZ3VhZ2UpKSkKKyAgICAgICAgICAoY29uZAor ICAgICAgICAgICAoKGFuZCB0cy1sYW5ndWFnZQorICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0 IGNvbmZpZ3VyYXRpb24gOmZvbnQtbG9jaykpCisgICAgICAgICAgICAobWFya2Rvd24tdHMtLWNv bmZpZ3VyZS1jdXJyZW50LWJ1ZmZlciBjb25maWd1cmF0aW9uKQorICAgICAgICAgICAgKHVubGVz cyAoYXNzcSBsYW5nIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcykKKyAgICAgICAg ICAgICAgKHB1c2ggKGNvbnMgbGFuZyB0cy1sYW5ndWFnZSkgbWFya2Rvd24tdHMtLWNvZGUtYmxv Y2stbGFuZ3VhZ2VzKSkKKyAgICAgICAgICAgIHRzLWxhbmd1YWdlKQorICAgICAgICAgICA7OyBP dGhlcndpc2UsIGNsYXNzaWZ5IG1vZGUgYXMgbm9uLXRyZWUtc2l0dGVyLgorICAgICAgICAgICAo dAorICAgICAgICAgICAgKHVubGVzcyAoYXNzcSBsYW5nIG1hcmtkb3duLXRzLS1jb2RlLWJsb2Nr LW5vbi10cy1tb2RlcykKKyAgICAgICAgICAgICAgKHB1c2ggKGNvbnMgbGFuZyBtb2RlKSBtYXJr ZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKQorICAgICAgICAgICAgbmlsKSkpKSkp CisgICAgICh0IG5pbCkpKSkKKworOzs7IENvZGUgYmxvY2sgbWlub3IgbW9kZSBzdXBwb3J0IGFu ZCBjb2RlLWJsb2NrIGNvbnRleHQgY29tbWFuZHM6CisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtY29k ZS1ibG9jay1jb21tYW5kcyAnKGluZGVudC1mb3ItdGFiLWNvbW1hbmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZWN0cmljLW5ld2xpbmUtYW5kLW1heWJlLWlu ZGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlv bi1hdC1wb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3 bGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudC1k d2ltCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LWxp bmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQtb3It dW5jb21tZW50LXJlZ2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stZmlsbC1wYXJhZ3JhcGgKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ctZmlsbC1yZWluZGVudC1kZWZ1bikKKyAg IkNvbW1hbmRzIHRvIGV4ZWN1dGUgaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQuCitTZWUgYG1hcmtk b3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4iKQorCisoZGVmdmFyIG1hcmtkb3du LXRzLWNvZGUtYmxvY2stdGhpbmctY29tbWFuZHMgJyh4cmVmLWZpbmQtZGVmaW5pdGlvbnMpCisg ICJDb21tYW5kcyB0aGF0IG5lZWQgYSBcInRoaW5nXCIgYXQgcG9pbnQgaW4gYSBjb2RlLWJsb2Nr IGNvbnRleHQuCitTZWUgYG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4i KQorCisoZGVmdmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stcmVnaW9uLWNvbW1hbmRzICcoY29t bWVudC1vci11bmNvbW1lbnQtcmVnaW9uKQorICAiQ29tbWFuZHMgdGhhdCBuZWVkIGEgcmVnaW9u IGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorU2VlIGBtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQt aW4tY29kZS1ibG9jaycuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1lbmFibGUtY29kZS1ibG9j ay1pbi1jb250ZXh0LW1vZGUgKCkKKyAgIkVuYWJsZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1p bi1jb250ZXh0LW1vZGUnIGlmIGluIGEgZmVuY2VkIGNvZGUgYmxvY2suIgorICAobWFya2Rvd24t dHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUKKyAgIChpZiAobWFya2Rvd24tdHMtYXQtY29k ZS1ibG9jay1wKSAxIC0xKSkpCisKKzs7IE5PVEU6IERvIG5vdCBhZGQgdGhpcyBjb21tYW5kIHRv IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzJy4KKyhkZWZ1biBtYXJrZG93bi10cy0t Y29kZS1ibG9jay1uZXdsaW5lICgmb3B0aW9uYWwgYXJnIGludGVyYWN0aXZlKQorICAiSW5zZXJ0 IGEgbmV3bGluZSwgYW5kIG1vdmUgdG8gbGVmdCBtYXJnaW4gb2YgdGhlIG5ldyBsaW5lLgorV2l0 aCBwcmVmaXggYXJndW1lbnQgQVJHLCBpbnNlcnQgdGhhdCBtYW55IG5ld2xpbmVzLgorCitJZiBg ZWxlY3RyaWMtaW5kZW50LW1vZGUnIGlzIGVuYWJsZWQsIHRoaXMgaW5kZW50cyB0aGUgZmluYWwg bmV3IGxpbmUKK3RoYXQgaXQgYWRkcywgYW5kIHJlaW5kZW50cyB0aGUgcHJlY2VkaW5nIGxpbmUu ICBUbyBqdXN0IGluc2VydAorYSBuZXdsaW5lLCB1c2UgXFxbZWxlY3RyaWMtaW5kZW50LWp1c3Qt bmV3bGluZV0uCisKK0lmIGBhdXRvLWZpbGwtbW9kZScgaXMgZW5hYmxlZCwgdGhpcyBtYXkgY2F1 c2UgYXV0b21hdGljIGxpbmUKK2JyZWFraW5nIG9mIHRoZSBwcmVjZWRpbmcgbGluZS4gIEEgbm9u LW5pbCBBUkcgaW5oaWJpdHMgdGhpcy4KKworSWYgdmFyaWFibGUgYHVzZS1oYXJkLW5ld2xpbmVz JyBpcyBlbmFibGVkLCB0aGUgbmV3bGluZSBpcyBtYXJrZWQgd2l0aAordGhlIHRleHQtcHJvcGVy dHkgYGhhcmQnLgorCitBIG5vbi1uaWwgSU5URVJBQ1RJVkUgYXJndW1lbnQgbWVhbnMgdG8gcnVu IHRoZSBgcG9zdC1zZWxmLWluc2VydC1ob29rJy4iCisgIChpbnRlcmFjdGl2ZSAiKlBcbnAiKQor ICAoaWYtbGV0KiAoKGJsb2NrLW1vZGUgKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1hdCkp CisgICAgICAgICAgICAoKGZib3VuZHAgYmxvY2stbW9kZSkpKQorICAgICAgKG1hcmtkb3duLXRz LS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrIGJsb2NrLW1vZGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ25ld2xpbmUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZSkKKyAgICAoZnVuY2FsbC1pbnRlcmFj dGl2ZWx5ICMnbmV3bGluZSBhcmcgaW50ZXJhY3RpdmUpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1jb2RlLWJsb2NrLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9uYWwganVzdGlmeSkKKyAgIlJlZmls bCBvciByZWluZGVudCB0aGUgbWFya2Rvd24gY29udGVudCB0aGF0IGNvbnRhaW5zIHBvaW50Lgor SWYgdGhlIHBvaW50IGlzIGluIGEgc3RyaW5nIG9yIGEgY29tbWVudCwgZmlsbCB0aGUgcGFyYWdy YXBoIHRoYXQKK2NvbnRhaW5zIHBvaW50IG9yIGZvbGxvd3MgcG9pbnQuCisKK090aGVyd2lzZSwg cmVpbmRlbnQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gdGhhdCBjb250YWlucyBwb2ludCBvcgor Zm9sbG93cyBwb2ludC4KKworSWYgSlVTVElGWSBpcyBub24tbmlsIChpbnRlcmFjdGl2ZWx5LCB3 aXRoIHByZWZpeCBhcmd1bWVudCksIGp1c3RpZnkgYXMKK3dlbGwuIgorICAoaW50ZXJhY3RpdmUg IlAiKQorICAoY29uZCAoKGRlcml2ZWQtbW9kZS1wICdwcm9nLW1vZGUpCisgICAgICAgICAoY2Fs bC1pbnRlcmFjdGl2ZWx5ICMncHJvZy1maWxsLXJlaW5kZW50LWRlZnVuIGp1c3RpZnkpKQorICAg ICAgICAodAorICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2ZpbGwtcGFyYWdyYXBoIGp1 c3RpZnkpKSkpCisKKzs7IE5PVEU6IERvIG5vdCBhZGQgdGhpcyBjb21tYW5kIHRvIGBtYXJrZG93 bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzJy4KKyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9j ay14cmVmLWZpbmQtZGVmaW5pdGlvbnMgKCZyZXN0IGFyZ3MpCisgICJIZWxwZXIgY29tbWFuZCBm b3IgYHhyZWYtZmluZC1kZWZpbml0aW9ucycgaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQuCitGaW5k IHRoaW5nIGF0IHBvaW50LgorQWRqdXN0IHRoZSByZWZlcmVuY2VzIG9uIHRoZSB4cmVmIHN0YWNr IHRvIHRoZSBiYXNlIGJ1ZmZlci4KK1Bhc3MgdGhyb3VnaCBBUkdTIGlmIG5vdCBpbiBhIGNvZGUg YmxvY2sgd2l0aCBhbiBhdmFpbGFibGUgbW9kZS4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGlmLWxl dCogKChibG9jay1tb2RlIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtYXQpKQorICAgICAg ICAgICAgKChmYm91bmRwIGJsb2NrLW1vZGUpKSkKKyAgICAgIChjb25kaXRpb24tY2FzZSBlcnIK KyAgICAgICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgICAgICAgKHByb2duCisgICAgICAg ICAgICAgICAgOzsgUmVjb3JkIGEgcGxhY2Vob2xkZXIgeHJlZiBtYXJrZXIgaW4gdGhlIGJhc2Ug YnVmZmVyLiAgVGhpcworICAgICAgICAgICAgICAgIDs7IHdpbGwgYmUgcmV0YWluZWQgaWYgdGhl IGNvbW1hbmQgc3VjY2VlZHMgdG8gcHVzaCBhIG1hcmtlciBpbgorICAgICAgICAgICAgICAgIDs7 IHRoZSBjb2RlLWJsb2NrIGJ1ZmZlciB3aGljaCB3ZSB3aWxsIHBvcC4KKyAgICAgICAgICAgICAg ICAoeHJlZi1wdXNoLW1hcmtlci1zdGFjaykKKyAgICAgICAgICAgICAgICA7OyBgeHJlZi1maW5k LWRlZmluaXRpb25zJyBpcyBhIHRoaW5nIGNvbW1hbmQgaW4KKyAgICAgICAgICAgICAgICA7OyBg bWFya2Rvd24tdHMtY29kZS1ibG9jay10aGluZy1jb21tYW5kcycuCisgICAgICAgICAgICAgICAg KG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrIGJsb2NrLW1vZGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyd4cmVm LWZpbmQtZGVmaW5pdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXJncykpCisgICAgICAgICAgICA7OyBQb3AgdGhlIHRvcCB4cmVm IG1hcmtlci4gIElmIHRoZSBjb21tYW5kIHN1Y2NlZWRlZCwgdGhlCisgICAgICAgICAgICA7OyB0 b3AgbWFya2VyIHdpbGwgYmUgdGhlIGNvZGUtYmxvY2sgYnVmZmVyIG1hcmtlci4gIElmIGl0Cisg ICAgICAgICAgICA7OyBmYWlsZWQsIHdlJ2xsIHBvcCB0aGUgcGxhY2Vob2xkZXIgd2hpY2ggaXMg bm93IG9mIG5vCisgICAgICAgICAgICA7OyB2YWx1ZS4KKyAgICAgICAgICAgIDs7IFRPRE86IFBy b3Bvc2UgYW4gYHhyZWYnIHBvcCBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgImdvCisgICAgICAgICAg ICA7OyBiYWNrIi4KKyAgICAgICAgICAgIChsZXQgKChoaXN0b3J5ICh4cmVmLS1nZXQtaGlzdG9y eSkpKQorICAgICAgICAgICAgICAodW5sZXNzIChudWxsIChjYXIgaGlzdG9yeSkpCisgICAgICAg ICAgICAgICAgKHBvcCAoY2FyIGhpc3RvcnkpKSkpKQorICAgICAgICAoZXJyb3IKKyAgICAgICAg IDs7IFByb3BhZ2F0ZSB0aGUgc2lnbmFsLgorICAgICAgICAgKHNpZ25hbCAoY2FyIGVycikgKGNk ciBlcnIpKSkpCisgICAgOzsgTm90IGluIGEgY29kZSBibG9jayBjb250ZXh0LiAgVGhpcyBzaG91 bGQgcmVhbGx5IG5ldmVyIGhhcHBlbi4KKyAgICAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5ICMneHJl Zi1maW5kLWRlZmluaXRpb25zIGFyZ3MpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1tYXliZS1y dW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrICgpCisgICJIZWxwZXIgZnVuY3Rpb24gdG8gd3JhcCBh IGNvbW1hbmQgZm9yIGEgY29kZS1ibG9jayBjb250ZXh0LgorSWYgYHRoaXMtY29tbWFuZCcgaXMg YSBtZW1iZXIgb2YgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFuZHMnIGFuZAorcG9pbnQg aXMgd2l0aGluIGEgY29kZSBibG9jayB3aXRoIGFuIGF2YWlsYWJsZSBtb2RlLCBpdCB3aWxsIHJ1 biBpbiB0aGF0Citjb2RlIGJsb2NrJ3MgbW9kZSBpbiBhIGJ1ZmZlciBuYXJyb3dlZCB0byBpdHMg Y29udGVudC4gIE90aGVyd2lzZSwgdGhlCitjb21tYW5kIHdpbGwgcnVuIGluIHRoZSBjb250ZXh0 IG9mIHRoZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVyLiIKKyAgKHdoZW4gKG1lbXEgdGhpcy1j b21tYW5kIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFuZHMpCisgICAgKHdoZW4tbGV0KiAo KGNvbW1hbmQgdGhpcy1jb21tYW5kKQorICAgICAgICAgICAgICAgIChibG9jay1tb2RlIChtYXJr ZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtYXQpKQorICAgICAgICAgICAgICAgICgoZmJvdW5kcCBi bG9jay1tb2RlKSkpCisgICAgICAoc2V0cSB0aGlzLWNvbW1hbmQgKGxhbWJkYSAoJnJlc3QgYXJn cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIChhcHBseSAjJ21hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2Rl LWJsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stbW9kZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhcmdzKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcnVuLWNv bW1hbmQtaW4tY29kZS1ibG9jayAoYmxvY2stbW9kZSBjb21tYW5kICZyZXN0IGFyZ3MpCisgICJS dW4gQ09NTUFORCBpbiBCTE9DSy1NT0RFLgorQVJHUyBhcmUgY2FwdHVyZWQgYnkgYG1hcmtkb3du LXRzLS1tYXliZS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4iCisgICh3aGVuLWxldCogKChi ZWcgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ21hcmtkb3duLXRzLWNvZGUtYmVnLW1hcmtl cikpCisgICAgICAgICAgICAgIChlbmQgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ21hcmtk b3duLXRzLWNvZGUtZW5kLW1hcmtlcikpCisgICAgICAgICAgICAgIChzdHIgKGJ1ZmZlci1zdWJz dHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkpCisgICAgOzsgVXNlIGEgdGVtcCAob3Igd29y aykgYnVmZmVyIGJlY2F1c2UgdHJlZXNpdCBjdXJyZW50bHkgY29uZnVzZXMKKyAgICA7OyBub2Rl cyBpbiBhbiBpbmRpcmVjdCBidWZmZXIgZXZlbiBpZiB0aGUgaW5kaXJlY3QgYnVmZmVyIGlzIG5v dAorICAgIDs7IG5hcnJvd2VkLgorICAgIChsZXQqICgodGVtcC1kZWFjdGl2YXRlLW1hcmspCisg ICAgICAgICAgIChvcmlnLXBvaW50IChwb2ludCkpCisgICAgICAgICAgIChvcmlnLW1hcmsgKG1h cmsgdCkpCisgICAgICAgICAgIChvcmlnLW1hcmstYWN0aXZlIG1hcmstYWN0aXZlKQorICAgICAg ICAgICAocmVnaW9uLWJlZyAodXNlLXJlZ2lvbi1iZWdpbm5pbmcpKQorICAgICAgICAgICAocmVn aW9uLWVuZCAodXNlLXJlZ2lvbi1lbmQpKQorICAgICAgICAgICAoYWRqLXBvaW50ICgxKyAoLSBv cmlnLXBvaW50IGJlZykpKQorICAgICAgICAgICAoYWRqLW1hcmsgKHdoZW4gb3JpZy1tYXJrICgx KyAoLSBvcmlnLW1hcmsgYmVnKSkpKQorICAgICAgICAgICAoYWRqLXJlZ2lvbi1iZWcgKHdoZW4g cmVnaW9uLWJlZyAoMSsgKC0gb3JpZy1wb2ludCByZWdpb24tYmVnKSkpKQorICAgICAgICAgICAo YWRqLXJlZ2lvbi1lbmQgKHdoZW4gcmVnaW9uLWVuZCAoMSsgKC0gb3JpZy1wb2ludCByZWdpb24t ZW5kKSkpKQorICAgICAgICAgICAocG9pbnQtZGVsdGEgMCkKKyAgICAgICAgICAgKHNvdXJjZS1i dWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgICAod2l0aC13b3JrLWJ1ZmZlcgorICAgICAg ICAoaW5zZXJ0IHN0cikKKyAgICAgICAgKGdvdG8tY2hhciBhZGotcG9pbnQpCisgICAgICAgIDs7 IFByb3BhZ2F0ZSBtYXJrIChhbmQgcmVnaW9uKS4KKyAgICAgICAgKHdoZW4gb3JpZy1tYXJrLWFj dGl2ZQorICAgICAgICAgIChzZXQtbWFyayBhZGotbWFyaykpCisgICAgICAgIChtYXJrZG93bi10 cy0taW5oaWJpdC1tZXNzYWdlcy1hbmQtd2FybmluZ3MKKyAgICAgICAgICAnbWFya2Rvd24tdHMt aW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MKKyAgICAgICAgICAoZGVsYXktbW9kZS1o b29rcworICAgICAgICAgICAgKGxldCAoKG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lCisgICAg ICAgICAgICAgICAgICAgKHByb3ZpZGVkLW1vZGUtZGVyaXZlZC1wIGJsb2NrLW1vZGUgJ21hcmtk b3duLXRzLW1vZGUpKSkKKyAgICAgICAgICAgICAgKGZ1bmNhbGwgYmxvY2stbW9kZSkpKSkKKyAg ICAgICAgKGxldCAoKHBvaW50IChwb2ludCkpCisgICAgICAgICAgICAgIChhcml0eSAoY2RyIChm dW5jLWFyaXR5IGNvbW1hbmQpKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgKChtZW1x IGNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9jay10aGluZy1jb21tYW5kcykKKyAgICAgICAg ICAgICh3aGVuLWxldCogKCh0aGluZyAodGhpbmctYXQtcG9pbnQgJ3N5bWJvbCkpKQorICAgICAg ICAgICAgICAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQgdGhpbmcpKSkKKyAgICAgICAg ICAgKChtZW1xIGNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9jay1yZWdpb24tY29tbWFuZHMp CisgICAgICAgICAgICAod2hlbiAoYW5kIGFkai1yZWdpb24tYmVnIGFkai1yZWdpb24tZW5kKQor ICAgICAgICAgICAgICAoYXBwbHkgIydmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZAorICAg ICAgICAgICAgICAgICAgICAgYWRqLXJlZ2lvbi1iZWcgYWRqLXJlZ2lvbi1lbmQgYXJncykpKQor ICAgICAgICAgICAoKHplcm9wIGFyaXR5KQorICAgICAgICAgICAgKGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kKSkKKyAgICAgICAgICAgKChlcSAxIGFyaXR5KQorICAgICAgICAgICAgKGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kIChjYXIgYXJncykpKQorICAgICAgICAgICAodAor ICAgICAgICAgICAgKGFwcGx5ICMnZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQgYXJncykp KQorICAgICAgICAgIChzZXRxIHN0ciAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChw b2ludC1taW4pIChwb2ludC1tYXgpKSkKKyAgICAgICAgICAoc2V0cSB0ZW1wLWRlYWN0aXZhdGUt bWFyayBkZWFjdGl2YXRlLW1hcmspCisgICAgICAgICAgKHNldHEgcG9pbnQtZGVsdGEgKC0gKHBv aW50KSBwb2ludCkpKQorICAgICAgICAobGV0ICgod29yay1idWZmZXIgKGN1cnJlbnQtYnVmZmVy KSkpCisgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc291cmNlLWJ1ZmZlcgorICAgICAg ICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIGJlZyBlbmQgd29yay1idWZmZXIpCisgICAg ICAgICAgICA7OyBQcm9wYWdhdGUgbWFyayBkZWFjdGl2YXRpb24gdG8gdGhlIHNvdXJjZSBidWZm ZXIuCisgICAgICAgICAgICAoc2V0cSBkZWFjdGl2YXRlLW1hcmsgdGVtcC1kZWFjdGl2YXRlLW1h cmspCisgICAgICAgICAgICA7OyBNb3ZlIHBvaW50IGlmIGl0IG1vdmVkIGluIHRoZSB0ZW1wIGJ1 ZmZlci4KKyAgICAgICAgICAgIChnb3RvLWNoYXIgKCsgb3JpZy1wb2ludCBwb2ludC1kZWx0YSkp CisgICAgICAgICAgICA7OyBSZWNvcmQgdGhlIG9yaWdpbmFsIGNvbW1hbmQuCisgICAgICAgICAg ICAoc2V0cSB0aGlzLWNvbW1hbmQgY29tbWFuZCkKKyAgICAgICAgICAgIDs7IFRoaXMgaGVscHMg bWFpbnRhaW4gZGlzY3JldGUgY29tbWFuZCBhY3Rpb25zLgorICAgICAgICAgICAgKHVuZG8tYm91 bmRhcnkpCisgICAgICAgICAgICA7OyBNYWtlIHN1cmUgdGhlIG9yaWdpbmF0aW5nIHJlZ2lvbiBp cyByZWZvbnRpZmllZC4KKyAgICAgICAgICAgIChmb250LWxvY2stZmx1c2ggYmVnIGVuZCkpKSkp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1maW5kLWNvZGUtYmxvY2stZGVsaW1pdGVyIChwb3Mg Jm9wdGlvbmFsIGJhY2t3YXJkKQorICAiUmV0dXJuIHRoZSBuZXh0IG9yIHByZXZpb3VzIGZlbmNl ZF9jb2RlX2Jsb2NrX2RlbGltaXRlciBub2RlLCBvciBuaWwuCitTZWFyY2ggc3RhcnRpbmcgYXQg UE9TLgorU2VhcmNoIGJhY2t3YXJkIGlmIEJBQ0tXQVJEIGlzIG5vbi1uaWwuIgorICAodHJlZXNp dC1zZWFyY2gtZm9yd2FyZCAodHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24pCisgICAgICAg ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN0cmluZz0gKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImZlbmNlZF9jb2RlX2Jsb2NrX2RlbGltaXRlciIpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZCkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t ZmluZC1uZXh0LWNvZGUtYmxvY2stZGVsaW1pdGVyICgmb3B0aW9uYWwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgYmFja3dhcmQgcmVtYWlu KQorICAiUmV0dXJuIHRoZSBuZXh0IG9yIHByZXZpb3VzIGZlbmNlZF9jb2RlX2Jsb2NrX2RlbGlt aXRlciBub2RlLCBvciBuaWwuCitTZWFyY2ggc3RhcnRpbmcgYXQgUE9TIG9yIGBwb2ludCcsIGlm IFBPUyBpcyBuaWwuCitTZWFyY2ggYmFja3dhcmQgaWYgQkFDS1dBUkQgaXMgbm9uLW5pbC4KK0lm IFJFTUFJTiBpcyBub24tbmlsLCBtb3ZlIHRvIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSBjdXJy ZW50IGNvZGUKK2Jsb2NrLCBpZiBpbiBvbmUuIgorICAoc2V0cSBwb3MgKG9yIHBvcyAocG9pbnQp KSkKKyAgKGFuZC1sZXQqICgobm9kZSAobWFya2Rvd24tdHMtLWZpbmQtY29kZS1ibG9jay1kZWxp bWl0ZXIgcG9zIGJhY2t3YXJkKSkpCisgICAgKGxldCAoKGluLWJsb2NrIChtYXJrZG93bi10cy1h dC1jb2RlLWJsb2NrLXAgcG9zKSkpCisgICAgICAoY29uZAorICAgICAgICgoYW5kIHJlbWFpbiBp bi1ibG9jaykKKyAgICAgICAgbm9kZSkKKyAgICAgICAocmVtYWluCisgICAgICAgIG5pbCkKKyAg ICAgICAodAorICAgICAgICAod2hpbGUgKGFuZCBub2RlCisgICAgICAgICAgICAgICAgICAgIDs7 IElmIGJhY2t3YXJkLCBza2lwIHRoZSBjdXJyZW50IGJsb2NrJ3MKKyAgICAgICAgICAgICAgICAg ICAgOzsgc3RhcnRpbmcgZGVsaW1pdGVyLgorICAgICAgICAgICAgICAgICAgICAob3IgKGFuZCBi YWNrd2FyZCBpbi1ibG9jayAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBub2RlKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgIChub3QgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcgbm9kZSkp KSkKKyAgICAgICAgICAoc2V0cSBpbi1ibG9jayAobWFya2Rvd24tdHMtYXQtY29kZS1ibG9jay1w IHBvcykpCisgICAgICAgICAgKHNldHEgcG9zIChpZiBiYWNrd2FyZAorICAgICAgICAgICAgICAg ICAgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKQorICAgICAgICAgICAgICAgICAgICAg ICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAgICAgICAgICAoc2V0cSBub2RlIChtYXJrZG93 bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlciBwb3MgYmFja3dhcmQpKSkKKyAgICAgICAg bm9kZSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1tb3ZlLXRvLW5leHQtY29kZS1ibG9jayAo YXJnKQorICAiTW92ZSBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY29kZSBibG9jay4K K1dpdGggdGhlIHByZWZpeCBhcmd1bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4gdGhlIGN1cnJlbnQg Y29kZSBibG9jay4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCogKChub2RlCisg ICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZpbmQtbmV4dC1jb2RlLWJsb2NrLWRlbGltaXRl ciBuaWwgbmlsIGFyZykpKQorICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2Rl KSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtbW92ZS10by1wcmV2aW91cy1jb2RlLWJsb2NrIChh cmcpCisgICJNb3ZlIHBvaW50IHRvIHRoZSBzdGFydCBvZiB0aGUgcHJldmlvdXMgY29kZSBibG9j ay4KK1dpdGggdGhlIHByZWZpeCBhcmd1bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4gdGhlIGN1cnJl bnQgY29kZSBibG9jay4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCogKChub2Rl CisgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZpbmQtbmV4dC1jb2RlLWJsb2NrLWRlbGlt aXRlciBuaWwgJ2JhY2t3YXJkIGFyZykpKQorICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1z dGFydCBub2RlKSkpKQorCis7OzsgVGFibGVzIGFrYSBwaXBlIHRhYmxlczoKKworOzs7OyBVdGls aXRpZXM6CisKKyhkZWZjb25zdCBtYXJrZG93bi10cy10YWJsZS1leHBvcnQtYnVmZmVyCisgICIq bWFya2Rvd24tdHMtdGFibGUtZXhwb3J0KiIpCisKKzs7IEluIGZyZXF1ZW5jeSBtYXRjaGluZyBv cmRlci4KKyhkZWZjb25zdCBtYXJrZG93bi10cy0tdGFibGUtcm93LXR5cGVzCisgICcoInBpcGVf dGFibGVfcm93IgorICAgICJwaXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciCisgICAgInBpcGVfdGFi bGVfaGVhZGVyIikpCisKKzs7IEluIGZyZXF1ZW5jeSBtYXRjaGluZyBvcmRlci4KKyhkZWZjb25z dCBtYXJrZG93bi10cy0tdGFibGUtY2VsbC10eXBlcworICAnKCJwaXBlX3RhYmxlX2NlbGwiCisg ICAgInBpcGVfdGFibGVfZGVsaW1pdGVyX2NlbGwiKSkKKworKGRlZmNvbnN0IG1hcmtkb3duLXRz LS10YWJsZS1kZWxpbWl0ZXItY2VsbC10eXBlcworICAnKCJwaXBlX3RhYmxlX2RlbGltaXRlcl9j ZWxsIgorICAgICJwaXBlX3RhYmxlX2FsaWduX2xlZnQiCisgICAgInBpcGVfdGFibGVfYWxpZ25f cmlnaHQiKSkKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS10YWJsZS1kZWxpbWl0ZXItY2VsbC1z dWJ0eXBlcworICAnKCJwaXBlX3RhYmxlX2FsaWduX2xlZnQiCisgICAgInBpcGVfdGFibGVfYWxp Z25fcmlnaHQiKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1hYnV0dGluZy1wb3MgKHBv cykKKyAgIkFkanVzdCBQT1MgdG8gYWJ1dCBpdHMgY2xvc2VzdCB0ZXh0LgorUmV0dXJuIHBvcyBh ZGp1c3RlZCB0byB0aGUgcG9zaXRpb24gb2YgdGhlIG5lYXJlc3Qgbm9uLWJsYW5rIGNoYXJhY3Rl ci4KK090aGVyd2lzZSwgcmV0dXJuIG5pbCwgZm9yIGV4YW1wbGUsIGlmIHRoZSBsaW5lIGlzIGVt cHR5LiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGdvdG8tY2hhciBwb3MpCisgICAgKHNraXAt Y2hhcnMtZm9yd2FyZCAiW1s6Ymxhbms6XV0iIChwb3MtZW9sKSkKKyAgICAoaWYgKGVxIHBvcyAo cG9zLWVvbCkpCisgICAgICAgIChwcm9nbgorICAgICAgICAgIChnb3RvLWNoYXIgcG9zKQorICAg ICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICJbWzpibGFuazpdXSIgKHBvcy1ib2wpKQorICAg ICAgICAgICh1bmxlc3MgKGVxIHBvcyAocG9zLWJvbCkpCisgICAgICAgICAgICAobWF4IChwb2lu dC1taW4pICgxLSAocG9pbnQpKSkpKQorICAgICAgKG1pbiAocG9pbnQtbWF4KSAoMSsgKHBvaW50 KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsICgmb3B0aW9uYWwg bm9kZSBwb3MgYWJ1dHRpbmcpCisgICJDb21wdXRlIHRhYmxlIGNlbGwgZnJvbSBuYW1lZCBOT0RF IGF0IFBPUy4KK0lmIE5PREUgaXMgbmlsLCB1c2UgdGhlIG5vZGUgYXQgUE9TLgorSWYgUE9TIGlz IG5pbCwgdXNlIGBwb2ludCcuCitJZiBOT0RFIGlzIGEgY2VsbCB0eXBlLCByZXR1cm4gaXQuCitJ ZiBOT0RFIGlzIGEgc3VidHlwZSwgcHJvbW90ZSBpdC4KK0lmIEFCVVRUSU5HIGlzIG5vbi1uaWws IGFkanVzdCBQT1MgdG8gdGhlIG5lYXJlc3Qgbm9uLWJsYW5rIGNoYXJhY3Rlci4KK090aGVyd2lz ZSwgcmV0dXJuIG5pbC4iCisgIDs7IFdlIGNvdWxkIHNhbml0eSBjaGVjayB2aWEgYHRyZWVzaXQt bm9kZS1uYW1lZCcgYW5kIGVycm9yIGlmIG5vdC4KKyAgKHNldHEgcG9zIChvciBwb3MgKHBvaW50 KSkpCisgICh3aGVuIGFidXR0aW5nCisgICAgKHNldHEgcG9zIChvciAobWFya2Rvd24tdHMtLXRh YmxlLWFidXR0aW5nLXBvcyBwb3MpIHBvcykpKQorICAod2hlbi1sZXQqICgobm9kZSAob3Igbm9k ZQorICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3du ICduYW1lZCkpKQorICAgICAgICAgICAgICAodHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkp KQorICAgIChjb25kICgobWVtYmVyIHR5cGUgbWFya2Rvd24tdHMtLXRhYmxlLWNlbGwtdHlwZXMp CisgICAgICAgICAgIG5vZGUpCisgICAgICAgICAgKChtZW1iZXIgdHlwZSBtYXJrZG93bi10cy0t dGFibGUtZGVsaW1pdGVyLWNlbGwtc3VidHlwZXMpCisgICAgICAgICAgICh0cmVlc2l0LW5vZGUt cGFyZW50IG5vZGUpKQorICAgICAgICAgICgobWVtYmVyIHR5cGUgbWFya2Rvd24tdHMtLXRhYmxl LXJvdy10eXBlcykKKyAgICAgICAgICAgKGNvbmQgKChlcSBhYnV0dGluZyAnbGVmdCkKKyAgICAg ICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtY2hpbGQgbm9kZSAwICduYW1lZCkpCisgICAgICAg ICAgICAgICAgIDs7IEFjY291bnQgZm9yICdyaWdodCBvciB0LgorICAgICAgICAgICAgICAgICAo dAorICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZCBub2RlIC0xICduYW1lZCkp KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLXJvdyAoJm9wdGlvbmFsIG5v ZGUgcG9zKQorICAiQ29tcHV0ZSB0YWJsZSByb3cgZnJvbSBuYW1lZCBOT0RFIGF0IFBPUy4KK0lm IE5PREUgaXMgbmlsLCB1c2UgdGhlIG5vZGUgYXQgUE9TLgorSWYgUE9TIGlzIG5pbCwgdXNlIGBw b2ludCcuCitJZiBOT0RFIGlzIGEgcm93IHR5cGUsIHJldHVybiBpdC4KK0lmIE5PREUgaXMgYSB0 YWJsZSBjZWxsIHR5cGUsIHJldHVybiBpdHMgcm93LgorT3RoZXJ3aXNlLCByZXR1cm4gbmlsLiIK KyAgOzsgV2UgY291bGQgc2FuaXR5IGNoZWNrIHZpYSBgdHJlZXNpdC1ub2RlLW5hbWVkJyBhbmQg ZXJyb3IgaWYgbm90LgorICAod2hlbi1sZXQqICgobm9kZSAob3Igbm9kZQorICAgICAgICAgICAg ICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1hdCAob3IgcG9zIChwb2ludCkpICdtYXJrZG93biAn bmFtZWQpKSkKKyAgICAgICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKSkK KyAgICAoaWYgKG1lbWJlciB0eXBlIG1hcmtkb3duLXRzLS10YWJsZS1yb3ctdHlwZXMpCisgICAg ICAgIG5vZGUKKyAgICAgICAodHJlZXNpdC1ub2RlLXBhcmVudCAobWFya2Rvd24tdHMtLXRhYmxl LW5vZGUtY2VsbCBub2RlKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1wYXJzZS1l cnJvci1wICgmb3B0aW9uYWwgbm9kZSBwb3MpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBuYW1lZCBO T0RFIGF0IFBPUyBpcyBpbiBhbiBcIkVSUk9SXCIgc3VidHJlZS4KK05PREUgbXVzdCBiZSBhIHRh YmxlIGVsZW1lbnQ7IGkuZS4sIGl0cyB0eXBlIHByZWZpeCBpcyBcInBpcGVfdGFibGVcIi4KK0lm IE5PREUgaXMgYSB0YWJsZSwgcmV0dXJuIG5pbCAoaXQgc2hvdWxkbid0IGJlIGluIEVSUk9SKS4K K0lmIE5PREUgaXMgbm90IGEgdGFibGUgZWxlbWVudCwgcmV0dXJuIG5pbC4KK0lmIE5PREUncyBu ZWFyYnkgYW5jZXN0b3IgaXMgYW4gXCJFUlJPUlwiIG5vZGUsIHJldHVybiB0LgorT3RoZXJ3aXNl LCByZXR1cm4gbmlsLiIKKyAgOzsgV2UgY291bGQgc2FuaXR5IGNoZWNrIHZpYSBgdHJlZXNpdC1u b2RlLW5hbWVkJyBhbmQgZXJyb3IgaWYgbm90LgorICAod2hlbi1sZXQqICgocm93IChtYXJrZG93 bi10cy0tdGFibGUtbm9kZS1yb3cgbm9kZSBwb3MpKQorICAgICAgICAgICAgICAodHlwZSAodHJl ZXNpdC1ub2RlLXR5cGUgcm93KSkKKyAgICAgICAgICAgICAgKHBhcmVudCAodHJlZXNpdC1ub2Rl LXBhcmVudCByb3cpKQorICAgICAgICAgICAgICAocGFyZW50LXR5cGUgKHRyZWVzaXQtbm9kZS10 eXBlIHBhcmVudCkpKQorICAgIChjb25kICgoZXF1YWwgdHlwZSAicGlwZV90YWJsZSIpCisgICAg ICAgICAgIG5pbCkKKyAgICAgICAgICAoKGVxdWFsIHBhcmVudC10eXBlICJwaXBlX3RhYmxlIikK KyAgICAgICAgICAgbmlsKQorICAgICAgICAgICgoZXF1YWwgcGFyZW50LXR5cGUgIkVSUk9SIikK KyAgICAgICAgICAgdCkKKyAgICAgICAgICAodAorICAgICAgICAgICAoZXJyb3IgIlNob3VsZCBu ZXZlciBoYXBwZW4iKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgKCZvcHRp b25hbCBwb3MgYWJ1dHRpbmcpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBQT1MgaXMgYXQgb3IgaW4g YSBwaXBlIHRhYmxlLgorSWYgUE9TIGlzIG5pbCwgdXNlIHBvaW50LgorUmV0dXJuIGNvbnMgKHBv cyAuIHRhYmxlLW5vZGUpIGlmIFBPUyBpcyB3aXRoaW4gYSB0YWJsZSwgb3RoZXJ3aXNlCityZXR1 cm4gbmlsLgoraWYgUE9TIGlzIHdpdGhpbiBhIHRhYmxlIGJ1dCB3aXRoIHBhcnNlIGVycm9ycywg c2lnbmFsIGFuIGVycm9yLgorSWYgQUJVVFRJTkcgaXMgbm9uLW5pbCwgYWRqdXN0IFBPUyB0byB0 aGUgbmVhcmVzdCBub24tYmxhbmsgY2hhcmFjdGVyLgorSWYgdGhlIHBhcnNlZCB0YWJsZSBpcyBp biBFUlJPUiwgcmV0dXJuIG5pbC4iCisgIChzZXRxIHBvcyAob3IgcG9zIChwb2ludCkpKQorICAo c2F2ZS1leGN1cnNpb24KKyAgICAoZ290by1jaGFyIHBvcykKKyAgICA7OyBJZiBwb2ludCBpcyBv biBhbiBlbXB0eSBsaW5lLCBpdCBpcyBuZXZlciBhIHRhYmxlLgorICAgICh1bmxlc3MgKGFuZCAo ZW9scCkgKGJvbHApKQorICAgICAgOzsgSWYgcG9pbnQgaXMgYm9sIG9yIGVvbCBpdCBtaWdodCBi ZSBhYnV0dGluZyBhIHBpcGUgc3ltYm9sIHNvCisgICAgICA7OyBsb29rIGZvcndhcmRzIG9yIGJh Y2t3YXJkcyBvbmUgY2hhcmFjdGVyIHRvIHRlc3QgaWYgdGhhdCBwb3MKKyAgICAgIDs7IGlzIGEg dGFibGUuCisgICAgICAod2hlbiBhYnV0dGluZworICAgICAgICAoc2V0cSBwb3MgKG9yIChtYXJr ZG93bi10cy0tdGFibGUtYWJ1dHRpbmctcG9zIHBvcykgcG9zKSkpCisgICAgICAod2hlbi1sZXQq ICgocm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgbmlsIHBvcykpKQorICAgICAgICAo aWYgKG1hcmtkb3duLXRzLS10YWJsZS1wYXJzZS1lcnJvci1wIHJvdykKKyAgICAgICAgICAgIDs7 IERvIG5vdCB1c2UgZXJyb3Igb3Igd2FybmluZyBoZXJlLiAgRXJyb3JzIGludGVyZmVyZSB3aXRo CisgICAgICAgICAgICA7OyB0aGUgY29tbWFuZCBsb29wLiAgV2FybmluZ3MgYXJlIGFubm95aW5n LgorICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAgIChtZXNzYWdlICJJbmNvcnJlY3Rs eSBmb3JtYXR0ZWQgTWFya2Rvd24gdGFibGUgKHBhcnNlciBlcnJvcikiKQorICAgICAgICAgICAg ICBuaWwpCisgICAgICAgICAgKGNvbnMgcG9zICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkCisgICAg ICAgICAgICAgICAgICAgICByb3cKKyAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxl XFwnIiAnYmFja3dhcmQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZW5hYmxlLWluLXRh YmxlLW1vZGUgKCkKKyAgIkVuYWJsZSBgbWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZScgaWYgaW4g YSB0YWJsZS4KK0EgdGFibGUgd2l0aCBhIHBhcnNlciBFUlJPUiBpcyBpbmVsaWdpYmxlLiIKKyAg KG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUKKyAgIChpZiAobWFya2Rvd24tdHMtYXQtdGFibGUt cCBuaWwgdCkgMSAtMSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLWJvZHktcm93LW5l YXItcG9zICgmb3B0aW9uYWwgcG9zIGFidXR0aW5nKQorICAiUmV0dXJuIHRoZSByb3cgbmVhciBQ T1MuCitSZXR1cm4gbmlsIGlmIG5vdCBhdCBhIHRhYmxlIG9yIHRoZXJlIGlzIG5vIHJvdy4KK090 aGVyd2lzZSByZXR1cm4gY29ucyAocm93IC4gaW4taGVhZGVyKSB3aGVyZSBpbi1oZWFkZXIgaXMg bmlsIG9yIHQuCitUaGlzIGlzIHVzZWZ1bCB0byBpbnNlcnQgYSBuZXcgcm93IGp1c3QgYmVsb3cg dGhlIGhlYWRlciBpbnN0ZWFkIG9mIGp1c3QKK2JlbG93IHRoZSBmaXJzdCByb3cuCitJZiBQT1Mg aXMgbmlsIHVzZSBgcG9pbnQnLgorSWYgQUJVVFRJTkcgaXMgbm9uLW5pbCwgdXNlICgxLSBQT1Mp IGlmIFBPUyBpcyBpbW1lZGlhdGVseSBhZnRlciBhIHBpcGUKK3N5bWJvbC4iCisgIChzZXRxIHBv cyAob3IgcG9zIChwb2ludCkpKQorICAobGV0IChpbi1oZWFkZXIpCisgICAgKHdoZW4tbGV0KiAo KGF0LXRhYmxlIChtYXJrZG93bi10cy1hdC10YWJsZS1wIHBvcyBhYnV0dGluZykpCisgICAgICAg ICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgICAodGFibGUgKGNk ciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICAgKGNlbGwgKG1hcmtkb3duLXRzLS10YWJsZS1u b2RlLWNlbGwgbmlsIHBvcyBhYnV0dGluZykpCisgICAgICAgICAgICAgICAgKGNlbGwtdHlwZSAo dHJlZXNpdC1ub2RlLXR5cGUgY2VsbCkpCisgICAgICAgICAgICAgICAgKHBhcmVudCAodHJlZXNp dC1ub2RlLXBhcmVudCBjZWxsKSkKKyAgICAgICAgICAgICAgICAocGFyZW50LXR5cGUgKHRyZWVz aXQtbm9kZS10eXBlIHBhcmVudCkpCisgICAgICAgICAgICAgICAgKGxpbmVhZ2UgKGxpc3QgY2Vs bC10eXBlIHBhcmVudC10eXBlKSkKKyAgICAgICAgICAgICAgICA7OyBGaW5kIHRoZSBmaXJzdCBy b3cgYWZ0ZXIgdGhlIGhlYWRlciBvciB0aGUgcm93IGF0IFBPUyBpcworICAgICAgICAgICAgICAg IDs7IG9uIGFuZCBpbiB0aGUgc2FtZSB0YWJsZS4KKyAgICAgICAgICAgICAgICAocm93IChjb25k ICgob3IgKG1lbWJlciAicGlwZV90YWJsZV9oZWFkZXIiIGxpbmVhZ2UpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtZW1iZXIgInBpcGVfdGFibGVfZGVsaW1pdGVyX3JvdyIgbGlu ZWFnZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgaW4taGVhZGVyIHQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQgY2VsbCAi XFxgcGlwZV90YWJsZV9yb3dcXCciKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXF1 YWwgY2VsbC10eXBlICJwaXBlX3RhYmxlX3JvdyIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2VsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXF1YWwgcGFyZW50LXR5cGUg InBpcGVfdGFibGVfcm93IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQpKSkp CisgICAgICAod2hlbiAodHJlZXNpdC1ub2RlLWVxIHRhYmxlICh0cmVlc2l0LXNlYXJjaC1mb3J3 YXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxlXFwnIiAnYmFja3dhcmQpKQor ICAgICAgICAoY29ucyByb3cgaW4taGVhZGVyKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10 YWJsZS1jb21wdXRlLW5vZGUtY29sdW1uIChyb3cgbm9kZSkKKyAgIkNvbXB1dGUgTk9ERSdzIGNv bHVtbiBpbiBST1cuCitSZXR1cm4gbmlsIGlmIE5PREUgaXMgbm90IGluIFJPVyAodGhpcyBzaG91 bGQgbm90IGhhcHBlbikuCitOT0RFIG11c3QgYmUgYSBub2RlIGluIFJPVy4KK1JPVyBtdXN0IGJl IGEgcGlwZV90YWJsZV9oZWFkZXIsIHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvdywgb3IKK3BpcGVf dGFibGVfcm93LiIKKyAgKGNhdGNoIDpjb2x1bW4KKyAgICAobGV0ICgoY291bnQgMCkpCisgICAg ICAoZG9saXN0IChjZWxsICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpCisgICAg ICAgICh3aGVuICh0cmVlc2l0LW5vZGUtZXEgbm9kZSBjZWxsKQorICAgICAgICAgICh0aHJvdyA6 Y29sdW1uIGNvdW50KSkKKyAgICAgICAgKHNldHEgY291bnQgKDErIGNvdW50KSkpKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy10YWJsZS0tZ290by1jb2x1bW4gKGNvbHVtbiAmb3B0aW9uYWwgbm8t ZXJyb3IpCisgICJNb3ZlIHBvaW50IG9uIHRoZSBjdXJyZW50IHJvdyB0byBDT0xVTU4uCitDT0xV TU4gaXMgYSAwLWJhc2VkIGluZGV4LgorUmV0dXJuIG5vbi1uaWwgaWYgc3VjY2Vzc2Z1bC4KK0lm IE5PLUVSUk9SIGlzIG5vbi1uaWwsIHJldHVybiBuaWwgaWYgdGhlIGN1cnJlbnQgcm93IGRvZXMg bm90IGV4dGVuZCB0bworQ09MVU1OLCBvdGhlcndpc2Ugc2lnbmFsIGFuIGVycm9yLgorU2lnbmFs IGFuIGVycm9yIGlmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLiIKKyAgKGlmLWxldCogKChjZWxs IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsIG5pbCBuaWwgdCkpCisgICAgICAgICAgICAo cm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgY2VsbCkpCisgICAgICAgICAgICAoY29s cyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHJvdyAnbmFtZWQpKSkKKyAgICAgIChpZi1sZXQqICgo dGFyZ2V0LWNlbGwgKG50aCBjb2x1bW4gY29scykpKQorICAgICAgICAgIChnb3RvLWNoYXIgKHRy ZWVzaXQtbm9kZS1zdGFydCB0YXJnZXQtY2VsbCkpCisgICAgICAgICh1bmxlc3Mgbm8tZXJyb3IK KyAgICAgICAgICAoZXJyb3IgIkNvbHVtbiAlUyBub3QgZm91bmQiIGNvbHVtbikpKQorICAgIChl cnJvciAiTm90IGF0IGEgdGFibGUiKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtYWxp Z25lcnMgKHRhYmxlKQorICAiRXh0cmFjdCB0aGUgaGVhZGVyIGxpbmUgYWxpZ25lcnMgZnJvbSBu b2RlIFRBQkxFLgorUmV0dXJuIGEgbGlzdCBvZiBsaXN0cyBvZiB0aGUgZm9ybToKKyAgKDpiZWcg eHh4IDplbmQgeHh4IDphbGlnbiBsZWZ0KQorOmFsaWduIGlzIG9uZSBvZiBgbGVmdCcgYGNlbnRl cicgYHJpZ2h0JyBgdW5zcGVjaWZpZWQnLiIKKyAgKGxldCogKChkZWxpbWl0ZXItcm93ICh0cmVl c2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93XFwnIikpCisg ICAgICAgICAoYWxpZ25lcnMKKyAgICAgICAgICAobGV0IChyZXMpCisgICAgICAgICAgICAoZG9s aXN0IChlbHQgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBkZWxpbWl0ZXItcm93ICduYW1lZCkpCisg ICAgICAgICAgICAgIChsZXQgKChhbGlnbi1iZWcgKHRyZWVzaXQtbm9kZS10eXBlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtY2hpbGQgZWx0IDAgJ25hbWUp KSkKKyAgICAgICAgICAgICAgICAgICAgKGFsaWduLWVuZCAodHJlZXNpdC1ub2RlLXR5cGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZCBlbHQgLTEg J25hbWUpKSkpCisgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QKKyAgICAgICAgICAgICAgICAg ICAgICAgOmJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IGVsdCkKKyAgICAgICAgICAgICAgICAgICAg ICAgOmVuZCAodHJlZXNpdC1ub2RlLWVuZCBlbHQpCisgICAgICAgICAgICAgICAgICAgICAgIDph bGlnbgorICAgICAgICAgICAgICAgICAgICAgICAoY29uZCAoKGFuZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChlcXVhbCBhbGlnbi1iZWcgInBpcGVfdGFibGVfYWxpZ25fbGVmdCIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsIGFsaWduLWVuZCAicGlwZV90 YWJsZV9hbGlnbl9sZWZ0IikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGVmdCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZXF1YWwgYWxpZ24tYmVnICJwaXBlX3RhYmxlX2FsaWduX2xlZnQiKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCBhbGlnbi1lbmQgInBpcGVfdGFibGVf YWxpZ25fcmlnaHQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZW50ZXIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGVxdWFsIGFsaWduLWJlZyAicGlwZV90YWJsZV9hbGlnbl9yaWdodCIpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsIGFsaWduLWVuZCAicGlwZV90YWJsZV9h bGlnbl9yaWdodCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodCAndW5zcGVjaWZpZWQpKSkKKyAgICAgICAgICAg ICAgICAgICAgICByZXMpKSkKKyAgICAgICAgICAgIChucmV2ZXJzZSByZXMpKSkpCisgICAgYWxp Z25lcnMpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lciAod2lkdGgg YWxpZ24pCisgICJNYWtlIGEgTWFya2Rvd24gY29sdW1uIGFsaWduZXIuCitXSURUSCBpcyB0aGUg Y29sdW1uIHdpZHRoLgorQUxJR04gaXMgb25lIG9mIGBsZWZ0JyBgY2VudGVyJyBgcmlnaHQnIGB1 bnNwZWNpZmllZCcuIgorICAocGNhc2UgYWxpZ24KKyAgICAoJ2xlZnQKKyAgICAgKGNvbmNhdCAi OiIgKG1ha2Utc3RyaW5nICgxLSB3aWR0aCkgPy0pKSkKKyAgICAoJ2NlbnRlcgorICAgICAoY29u Y2F0ICI6IiAobWFrZS1zdHJpbmcgKC0gd2lkdGggMikgPy0pICI6IikpCisgICAgKCdyaWdodAor ICAgICAoY29uY2F0IChtYWtlLXN0cmluZyAoMS0gd2lkdGgpID8tKSAiOiIpKQorICAgIChfCisg ICAgIChjb25jYXQgKG1ha2Utc3RyaW5nIHdpZHRoID8tKSkpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLS10YWJsZS1hbGlnbi1jZWxsICh0ZXh0IHdpZHRoIGFsaWduKQorICAiUmV0dXJuIFRFWFQg cGFkZGVkIHRvIFdJRFRIIGFsaWduZWQgdXNpbmcgQUxJR04uCitUcnVuY2F0ZSBURVhUIHdpZGVy IHRoYW4gV0lEVEguICBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8KK2Vuc3Vy ZSB0ZXh0IHdpbGwgZml0LgorQUxJR04gaXMgb25lIG9mIGBsZWZ0JyBgY2VudGVyJyBgcmlnaHQn IGB1bnNwZWNpZmllZCcuIgorICAobGV0KiAoKHN0cmxlbiAobGVuZ3RoIHRleHQpKQorICAgICAg ICAgKHN0cmxlbjAgKG1pbiB3aWR0aCBzdHJsZW4pKQorICAgICAgICAgKHRleHQwIChzdWJzdHJp bmcgdGV4dCAwIHN0cmxlbjApKQorICAgICAgICAgKHBhZCAoLSB3aWR0aCBzdHJsZW4wKSkpCisg ICAgKHBjYXNlIGFsaWduCisgICAgICAoJ2NlbnRlcgorICAgICAgIChsZXQqICgoaGFsZi1wYWQg KG1ha2Utc3RyaW5nIChmbG9vciAoLyBwYWQgMikpID9ccykpCisgICAgICAgICAgICAgIChzIChj b25jYXQKKyAgICAgICAgICAgICAgICAgIGhhbGYtcGFkCisgICAgICAgICAgICAgICAgICB0ZXh0 MAorICAgICAgICAgICAgICAgICAgaGFsZi1wYWQpKSkKKyAgICAgICAgIChzdHJpbmctcGFkCisg ICAgICAgICAgKHN1YnN0cmluZyBzIDAgKG1pbiAobGVuZ3RoIHMpIHdpZHRoKSkKKyAgICAgICAg ICB3aWR0aCkpKQorICAgICAgKCdyaWdodAorICAgICAgIChzdHJpbmctcGFkIHRleHQgd2lkdGgg bmlsICdzdGFydCkpCisgICAgICAoXworICAgICAgIChzdHJpbmctcGFkIHRleHQgd2lkdGgpKSkp KQorCis7Ozs7IENvbW1hbmRzOgorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXRh YmxlICgmb3B0aW9uYWwgbnJvd3MgbmNvbHMgaGVhZGluZ3MgYm9keSkKKyAgIkluc2VydCBhIE1h cmtkb3duIHBpcGUgdGFibGUuCitOUk9XUyBpcyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIG5l dyB0YWJsZSBhbmQgZGVmYXVsdHMgdG8gMy4KKworTkNPTFMgaXMgdGhlIG51bWJlciBvZiBjb2x1 bW5zIGFuZCBkZWZhdWx0cyB0byAzLgorCitIRUFESU5HUyBpcyBhIGxpc3Qgb2YgaGVhZGluZ3Mg YW5kIGRlZmF1bHRzIHRvIGxlZnQtYWxpZ25lZCBzeW50aGVzaXplZAorY29sdW1uIG5hbWVzLiAg SWYgTkNPTFMgaXMgbmlsLCB1c2UgSEVBRElOR1MgbGVuZ3RoLiAgSWYgYm90aCBOQ09MUyBhbmQK K0hFQURJTkdTIGFyZSBub24tbmlsLCB1c2UgdXAgdG8gTkNPTFMgaGVhZGluZ3MsIHN5bnRoZXNp emluZyB0aGUKK3JlbWFpbmRlci4KKworRWFjaCBoZWFkaW5nIGluIHRoZSBsaXN0IGNhbiBiZSBh IHN0cmluZyBjb2x1bW4gbmFtZSBvciBhIGNvbnMgb2YgdGhlCitmb3JtIChuYW1lIC4gYWxpZ25t ZW50KSB3aGVyZSBhbGlnbm1lbnQgaXMgb25lIG9mIHRoZSBzeW1ib2xzIGBsZWZ0JywKK2ByaWdo dCcsIG9yIGBjZW50ZXInLiAgSWYgYSBzdHJpbmcsIGRlZmF1bHQgYWxpZ25tZW50IGlzIHVuc3Bl Y2lmaWVkLgorCitJZiBCT0RZIGlzIG5vbi1uaWwsIGl0IGlzIGEgbGlzdCBvZiBOUk9XUyByb3dz IHdoZXJlIGVhY2ggcm93IGlzIGEgbGlzdAorb2YgTkNPTFMgYm9keSBjZWxscy4KKworRm9yIGNv bnZlbmllbmNlIGFuZCBhZXN0aGV0aWNzLCBwYWQgZWFjaCBib2R5IGNlbGwgdG8gdGhlIHdpZHRo IG9mIGl0cworY29sdW1uJ3MgaGVhZGVyLCBhbmQgYWNjb21tb2RhdGUgYWxpZ25tZW50IGluZGlj YXRvcnMuICBJZiBhIEJPRFkgY2VsbAoraXMgbG9uZ2VyIHRoYW4gaXRzIGNvbHVtbiBoZWFkZXIs IGluc2VydCBpdCB1bmNoYW5nZWQuCisKK05vdGU6IEEgYmxhbmsgbGluZSBpcyBuZWVkZWQgYmVm b3JlIHRoZSB0YWJsZSBmb3IgaXQgdG8gcHJvcGVybHkgcmVuZGVyLgorSWYgdGhlIGxpbmUgcHJl Y2VkaW5nIGBwb2ludCcgaXMgbm90IGJsYW5rLCBpbnNlcnQgb25lLgorCitOb3RlOiBEdWUgdG8g YW4gaXNzdWUgd2l0aCB0aGUgdHJlZS1zaXR0ZXIgTWFya2Rvd24gZ3JhbW1hciwgYSByb3cgb2YK K2VtcHR5IGNlbGxzIGNhdXNlcyBhIHBhcnNpbmcgZXJyb3IuICBUbyBhdm9pZCB0aGlzLCBhbiBl bXB0eSByb3cgd2lsbAorY29udGFpbiBhIHNpbmdsZSBwZXJpb2QgaW4gaXRzIGZpcnN0IGNlbGwu IgorICAoaW50ZXJhY3RpdmUpCisgIChzZXRxIG5yb3dzIChvciBucm93cyAzKSkKKyAgKHNldHEg bmNvbHMgKG9yIG5jb2xzIChhbmQgaGVhZGluZ3MgKGxlbmd0aCBoZWFkaW5ncykpIDMpKQorICAo c2V0cSBoZWFkaW5ncworICAgICAgICAobGV0IChyZXMpCisgICAgICAgICAgKGRvdGltZXMgKHgg bmNvbHMpCisgICAgICAgICAgICAocHVzaCAob3IgKG50aCB4IGhlYWRpbmdzKQorICAgICAgICAg ICAgICAgICAgICAgIChmb3JtYXQgIkNvbHVtbiAlZCIgKDErIHgpKSkKKyAgICAgICAgICAgICAg ICAgIHJlcykpCisgICAgICAgICAgKG5yZXZlcnNlIHJlcykpKQorICAobGV0ICgoaGVhZGluZy13 aWR0aHMKKyAgICAgICAgIChsZXQgKHJlcykKKyAgICAgICAgICAgKGRvbGlzdCAoZWx0IGhlYWRp bmdzKQorICAgICAgICAgICAgIChsZXQgKChzdHIgKGlmIChjb25zcCBlbHQpIChjYXIgZWx0KSBl bHQpKSkKKyAgICAgICAgICAgICAgIChwdXNoIChtYXggbWFya2Rvd24tdHMtdGFibGUtZGVmYXVs dC1jb2x1bW4td2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCBzdHIpKQor ICAgICAgICAgICAgICAgICAgICAgcmVzKSkpCisgICAgICAgICAgIChucmV2ZXJzZSByZXMpKSkp CisgICAgOzsgSWYgcG9pbnQgaXMgbm90IGF0IGJvbCwgaW5zZXJ0IGEgbmV3bGluZS4KKyAgICAo dW5sZXNzIChlcSAocG9pbnQpIChwb3MtYm9sKSkKKyAgICAgIChpbnNlcnQgIlxuIikpCisgICAg OzsgSW5zZXJ0IGFuIGVtcHR5IGxpbmUgaWYgbmVlZGVkLgorICAgICh1bmxlc3MgKHNhdmUtZXhj dXJzaW9uCisgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgLTEpCisgICAgICAgICAgICAgIChl cSAocG9zLWJvbCkgKHBvcy1lb2wpKSkKKyAgICAgIChpbnNlcnQgIlxuIikpCisgICAgOzsgSW5z ZXJ0IHBhZGRlZCBoZWFkaW5nIHRleHQuCisgICAgKGluc2VydCAifCIpCisgICAgKGRvdGltZXMg KHggbmNvbHMpCisgICAgICAobGV0KiAoKGVsdCAobnRoIHggaGVhZGluZ3MpKQorICAgICAgICAg ICAgIChzdHIgKGlmIChjb25zcCBlbHQpIChjYXIgZWx0KSBlbHQpKQorICAgICAgICAgICAgICh3 aWR0aCAobWF4IDMgKG50aCB4IGhlYWRpbmctd2lkdGhzKSkpCisgICAgICAgICAgICAgKHBhZC13 aWR0aCAoLSB3aWR0aCAobGVuZ3RoIHN0cikpKSkKKyAgICAgICAgKGluc2VydCBzdHIgKG1ha2Ut c3RyaW5nIHBhZC13aWR0aCA/XHMpICJ8IikpKQorICAgIChpbnNlcnQgIlxuIikKKyAgICA7OyBJ bnNlcnQgcGFkZGVkIGhlYWRpbmcgYWxpZ25lcnMuCisgICAgKGluc2VydCAifCIpCisgICAgKGRv dGltZXMgKHggbmNvbHMpCisgICAgICAobGV0KiAoKGVsdCAobnRoIHggaGVhZGluZ3MpKQorICAg ICAgICAgICAgIChhbGlnbiAoaWYgKGNvbnNwIGVsdCkgKGNkciBlbHQpICd1bnNwZWNpZmllZCkp CisgICAgICAgICAgICAgKHdpZHRoIChtYXggMyAobnRoIHggaGVhZGluZy13aWR0aHMpKSkpCisg ICAgICAgIChpbnNlcnQgKG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIgd2lkdGggYWxp Z24pKSkKKyAgICAgIChpbnNlcnQgInwiKSkKKyAgICAoaW5zZXJ0ICJcbiIpCisgICAgOzsgSW5z ZXJ0IEJPRFkgY2VsbHMgb3IgZW1wdHkgY2VsbHMuCisgICAgKGRvdGltZXMgKHkgbnJvd3MpCisg ICAgICAoaW5zZXJ0ICJ8IikKKyAgICAgIChsZXQgKChyb3cgKG50aCB5IGJvZHkpKSkKKyAgICAg ICAgKGRvdGltZXMgKHggbmNvbHMpCisgICAgICAgICAgOzsgVE9ETzogUmVtb3ZlIHRoZSBwbGFj ZWhvbGRlciBjaGFyYWN0ZXIgaWYgdGhlIHRyZWUtc2l0dGVyCisgICAgICAgICAgOzsgZ3JhbW1h ciBpcyByZXBhaXJlZC4KKyAgICAgICAgICAobGV0KiAoKHN0ciAob3IgKG50aCB4IHJvdykgKGFu ZCAoZXEgeCAwKSAiLiIpICIiKSkKKyAgICAgICAgICAgICAgICAgKHN0cmxlbiAobGVuZ3RoIHN0 cikpCisgICAgICAgICAgICAgICAgICh3aWR0aCAobnRoIHggaGVhZGluZy13aWR0aHMpKQorICAg ICAgICAgICAgICAgICAocGFkLXdpZHRoIChtYXggMCAoLSB3aWR0aCBzdHJsZW4pKSkpCisgICAg ICAgICAgICAoaW5zZXJ0IHN0cgorICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgcGFk LXdpZHRoID9ccykKKyAgICAgICAgICAgICAgICAgICAgInwiKSkpCisgICAgICAgIChpbnNlcnQg IlxuIikpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1kZWxldGUtdGFibGUgKCkKKyAg IlJlbW92ZSB0aGUgTWFya2Rvd24gdGFibGUgYXQgcG9pbnQuCitJZiBwb2ludCBpcyBub3QgYXQg YSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLS1i YXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJsZS1kZWxldGUtdGFibGUpCisgICh3aGVu LWxldCogKChhdC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAg ICAgICAgICh0YWJsZSAoY2RyIGF0LXRhYmxlKSkpCisgICAgOzsgVE9ETzogUmVtb3ZlIGFmdGVy IGJ1ZyMyMzkwMyBVbmRvIGFmdGVyIGtiIGRpZmZlcnMgZnJvbSBhZnRlciBNLXgKKyAgICAocHVz aCAocG9pbnQpIGJ1ZmZlci11bmRvLWxpc3QpCisgICAgKGRlbGV0ZS1yZWdpb24gKHRyZWVzaXQt bm9kZS1zdGFydCB0YWJsZSkgKHRyZWVzaXQtbm9kZS1lbmQgdGFibGUpKSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy10YWJsZS1wcmV2aW91cy1yb3cgKCkKKyAgIk1vdmUgdG8gdGhlIHByZXZpb3Vz IHJvdyBpbiB0aGUgdGFibGUuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChp bnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93IC0xKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93ICgmb3B0aW9uYWwgbikKKyAgIk1vdmUgdG8gdGhl IG5leHQgcm93IGluIHRoZSB0YWJsZS4KK0lmIE4gaXMgbmVnYXRpdmUsIG1vdmUgdG8gdGhlIHBy ZXZpb3VzIHJvdy4KK0lmIHBvaW50IGlzIG9uIHRoZSBsYXN0IHJvdyBvZiB0aGUgdGFibGUsIGlu c2VydCBhIG5ldyByb3cgYmVsb3cgYW5kCittb3ZlIGludG8gaXQuICBXaXRoIGEgcHJlZml4IGFy Z3VtZW50LCBjbG9uZSB0aGUgZmluYWwgcm93IGludG8gdGhlIG5ldworb25lLgorSWYgbm90IGlu IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0t YmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtbmV4dC1yb3cpCisgIChsZXQgKChi YWNrd2FyZHMgKGFuZCBuICg8IG4gMCkpKSkKKyAgICA7OyBEb24ndCB1c2UgYG1hcmtkb3duLXRz LS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcycgYmVjYXVzZSB3ZSB3YW50CisgICAgOzsgdG8gb3Bl cmF0ZSBpbiB0aGUgaGVhZGVyLgorICAgICh3aGVuLWxldCogKChhdC10YWJsZSAobWFya2Rvd24t dHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxl KSkKKyAgICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAg ICAgKHJvdyAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93IG5pbCBwb3MpKSkKKyAgICAgIDs7 IElmIG5vIG5leHQgb3IgcHJldiBzaWJsaW5nLCB3ZSdyZSBvbiB0aGUgbGFzdC9maXJzdCByb3cu CisgICAgICAobGV0ICgoY3VycmVudC1jb2x1bW4gKGN1cnJlbnQtY29sdW1uKSkKKyAgICAgICAg ICAgIChuZXh0LXJvdyAoaWYgYmFja3dhcmRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICh0 cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5nIHJvdyAnbmFtZWQpCisgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyByb3cgJ25hbWVkKSkpKQorICAgICAgICAo aWYgbmV4dC1yb3cKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBu ZXh0LXJvdykpCisgICAgICAgICAgKHVubGVzcyBiYWNrd2FyZHMKKyAgICAgICAgICAgIChtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtcm93LWJlbG93IGN1cnJlbnQtcHJlZml4LWFyZykpKQorICAg ICAgICAobW92ZS10by1jb2x1bW4gY3VycmVudC1jb2x1bW4pKSkpKQorCisoZGVmdW4gbWFya2Rv d24tdHMtdGFibGUtcHJldmlvdXMtY2VsbCAoKQorICAiTW92ZSB0byB0aGUgcHJldmlvdXMgY2Vs bCBpbiB0aGUgdGFibGUuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLW5leHQtY2VsbCAtMSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy10YWJsZS1uZXh0LWNlbGwgKCZvcHRpb25hbCBuKQorICAiTW92ZSB0byB0aGUg bmV4dCBjZWxsIGluIHRoZSB0YWJsZS4KK0lmIE4gaXMgbmVnYXRpdmUsIG1vdmUgdG8gdGhlIHBy ZXZpb3VzIGNlbGwuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFj dGl2ZSkKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJs ZS1uZXh0LWNlbGwpCisgIChsZXQgKChiYWNrd2FyZHMgKGFuZCBuICg8IG4gMCkpKSkKKyAgICAo d2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAg ICAgICAgICAgICAgIChwb3MgKGNhciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICAgKHRhYmxl IChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQg cG9zICdtYXJrZG93biAnbmFtZWQpKQorICAgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10 cy0tdGFibGUtbm9kZS1jZWxsIG5vZGUpKQorICAgICAgICAgICAgICAgIChjZWxsLXR5cGUgKHRy ZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAgICAgICAgICAgICAgIChyb3cgKG1hcmtkb3duLXRz LS10YWJsZS1ub2RlLXJvdyBjZWxsKSkKKyAgICAgICAgICAgICAgICAocm93LXR5cGUgKHRyZWVz aXQtbm9kZS10eXBlIHJvdykpCisgICAgICAgICAgICAgICAgKG5leHQtY2VsbAorICAgICAgICAg ICAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgOzsgSWYgaW4gYSBwaXBlX3RhYmxlX2Rl bGltaXRlcl9yb3cgYW5kIG5vdCB0aGUgZmlyc3QKKyAgICAgICAgICAgICAgICAgIDs7IG9yIGZp bmFsIGNlbGwgaW4gdGhlIHJvdywgc3RheSB3aXRoaW4gdGhlIHJvdworICAgICAgICAgICAgICAg ICAgOzsgb3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBjb25kaXRpb24gc2hvdWxkIG1hdGNoLgorICAg ICAgICAgICAgICAgICAgKChhbmQgKGVxdWFsIHJvdy10eXBlICJwaXBlX3RhYmxlX2RlbGltaXRl cl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGJhY2t3YXJkcworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5nIGNlbGwgJ25hbWVk KQorICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBj ZWxsICduYW1lZCkpKQorICAgICAgICAgICAgICAgICAgIChpZiBiYWNrd2FyZHMKKyAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1wcmV2LXNpYmxpbmcgY2VsbCAnbmFtZWQpCisg ICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBjZWxsICduYW1l ZCkpKQorICAgICAgICAgICAgICAgICAgOzsgSWYgb24gdGhlIGZpcnN0IHBpcGVfdGFibGVfcm93 J3MgZmlyc3QgY2VsbCBtb3ZpbmcKKyAgICAgICAgICAgICAgICAgIDs7IGJhY2t3YXJkcywgbW92 ZSBpbnRvIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgICAgOzsgcGlwZV90YWJsZV9kZWxpbWl0 ZXJfY2VsbC4KKyAgICAgICAgICAgICAgICAgICgoYW5kIChlcXVhbCBjZWxsLXR5cGUgInBpcGVf dGFibGVfY2VsbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9k ZS10eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtcHJl di1zaWJsaW5nIHJvdyAnbmFtZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJw aXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAo dHJlZXNpdC1ub2RlLXByZXYtc2libGluZyBjZWxsICduYW1lZCkpCisgICAgICAgICAgICAgICAg ICAgICAgICBiYWNrd2FyZHMpCisgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZv cndhcmQKKyAgICAgICAgICAgICAgICAgICAgY2VsbAorICAgICAgICAgICAgICAgICAgICAiXFxg cGlwZV90YWJsZV9kZWxpbWl0ZXJfY2VsbFxcJyIgYmFja3dhcmRzKSkKKyAgICAgICAgICAgICAg ICAgIDs7IElmIG9uIHRoZSBmaXJzdCBwaXBlX3RhYmxlX2hlYWRlcidzIGZpbmFsIGNlbGwKKyAg ICAgICAgICAgICAgICAgIDs7IG1vdmluZyBmb3J3YXJkcywgbW92ZSBpbnRvIHRoZSBmaXJzdAor ICAgICAgICAgICAgICAgICAgOzsgcGlwZV90YWJsZV9kZWxpbWl0ZXJfY2VsbC4KKyAgICAgICAg ICAgICAgICAgICgoYW5kIChlcXVhbCBjZWxsLXR5cGUgInBpcGVfdGFibGVfY2VsbCIpCisgICAg ICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIHJvdyAnbmFt ZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwaXBlX3RhYmxlX2RlbGltaXRl cl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAodHJlZXNpdC1ub2RlLW5leHQt c2libGluZyBjZWxsICduYW1lZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAobm90IGJhY2t3 YXJkcykpCisgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQKKyAgICAg ICAgICAgICAgICAgICAgY2VsbAorICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9k ZWxpbWl0ZXJfY2VsbFxcJyIgYmFja3dhcmRzKSkKKyAgICAgICAgICAgICAgICAgICh0CisgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQKKyAgICAgICAgICAgICAgICAg ICAgY2VsbAorICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9jZWxsXFwnIiBiYWNr d2FyZHMpKSkpKQorICAgICAgOzsgS2VlcCBwb2ludCB3aXRoaW4gdGhlIGN1cnJlbnQgdGFibGUu CisgICAgICAod2hlbiAodHJlZXNpdC1ub2RlLWVxIHRhYmxlICh0cmVlc2l0LXNlYXJjaC1mb3J3 YXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LWNlbGwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxlXFwnIiAnYmFja3dh cmQpKQorICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbmV4dC1jZWxsKSkp CisgICAgICAod2hlbiAob3IgKGVxIG1hcmtkb3duLXRzLXRhYmxlLWF1dG8tYWxpZ24gdCkKKyAg ICAgICAgICAgICAgICAobWVtcSAnY2VsbC1uYXZpZ2F0aW9uIG1hcmtkb3duLXRzLXRhYmxlLWF1 dG8tYWxpZ24pKQorICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tdGFibGUpKSkpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdy1iZWxvdyAoJm9wdGlvbmFsIGNs b25lKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGJlbG93IHBvaW50LgorSWYgcG9pbnQgaXMgaW4g dGhlIGhlYWRlciwgaW5zZXJ0IGJlbG93IHRoZSBmaXJzdCByb3cgb2YgdGhlIHRhYmxlLgorSWYg Q0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xvbmUgdGhlIGN1 cnJlbnQgcm93LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAo aW50ZXJhY3RpdmUgIlAiKQorICAoc2V0cSBjbG9uZSAob3IgY2xvbmUgY3VycmVudC1wcmVmaXgt YXJnKSkKKyAgICAobWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdyAnYmVsb3cgY2xvbmUpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdy1hYm92ZSAoJm9wdGlvbmFsIGNs b25lKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGFib3ZlIHBvaW50LgorSWYgcG9pbnQgaXMgaW4g dGhlIGhlYWRlciwgaW5zZXJ0IGFib3ZlIHRoZSBmaXJzdCByb3cgb2YgdGhlIHRhYmxlLgorSWYg Q0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xvbmUgdGhlIGN1 cnJlbnQgcm93LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAo aW50ZXJhY3RpdmUgIlAiKQorICAoc2V0cSBjbG9uZSAob3IgY2xvbmUgY3VycmVudC1wcmVmaXgt YXJnKSkKKyAgICAobWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdyAnYWJvdmUgY2xvbmUpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWJlbG93ICgpCisgICJJbnNlcnQg YSB0YWJsZSByb3cgYmVsb3cgcG9pbnQuCitJZiBwb2ludCBpcyBpbiB0aGUgaGVhZGVyLCBpbnNl cnQgYmVsb3cgdGhlIGZpcnN0IHJvdyBvZiB0aGUgdGFibGUuCitJZiBwb2ludCBpcyBub3QgYXQg YSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRh YmxlLWluc2VydC1yb3ctYmVsb3cgJ2Nsb25lKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxl LWNsb25lLXJvdy1hYm92ZSAoKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGFib3ZlIHBvaW50Lgor SWYgcG9pbnQgaXMgaW4gdGhlIGhlYWRlciwgaW5zZXJ0IGFib3ZlIHRoZSBmaXJzdCByb3cgb2Yg dGhlIHRhYmxlLgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAo aW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtcm93LWFib3ZlICdjbG9u ZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtcm93ICgmb3B0aW9uYWwgYWJv dmUgY2xvbmUpCisgICJJbnNlcnQgYSB0YWJsZSByb3cgYmVsb3cgcG9pbnQuCitJZiBwb2ludCBp cyBpbiB0aGUgaGVhZGVyLCBpbnNlcnQgYmVsb3cgdGhlIGZpcnN0IHJvdyBvZiB0aGUgdGFibGUu CitJZiBBQk9WRSBpcyBub24tbmlsIGFuZCBpcyBub3QgYGJlbG93Jywgb3Igd2l0aCBhIHByZWZp eCBhcmd1bWVudCwKK2luc2VydCB0aGUgcm93IGFib3ZlIHBvaW50LgorSWYgQ0xPTkUgaXMgbm9u LW5pbCwgY2xvbmUgdGhlIGN1cnJlbnQgcm93LCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5CitjZWxs cy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0 aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10 YWJsZS1pbnNlcnQtcm93KQorICAoc2V0cSBhYm92ZSAoY29uZCAoKGVxIGFib3ZlICdiZWxvdykg bmlsKQorICAgICAgICAgICAgICAgICAgICAoYWJvdmUgYWJvdmUpCisgICAgICAgICAgICAgICAg ICAgIChjdXJyZW50LXByZWZpeC1hcmcgdCkpKQorICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1h cmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAocG9zIChjYXIgYXQt dGFibGUpKQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAg ICAgIChkZWxpbWl0ZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxc YHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgICAgICAobmNvbHMgKHRy ZWVzaXQtbm9kZS1jaGlsZC1jb3VudCBkZWxpbWl0ZXItcm93ICduYW1lZCkpCisgICAgICAgICAg ICAgIChoZWFkaW5nLXdpZHRocworICAgICAgICAgICAgICAgKGxldCAocmVzKQorICAgICAgICAg ICAgICAgICAoZG9saXN0IChlbHQgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBkZWxpbWl0ZXItcm93 ICduYW1lZCkpCisgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxlbmd0aCAodHJlZXNpdC1ub2Rl LXRleHQgZWx0KSkgcmVzKSkKKyAgICAgICAgICAgICAgICAgKG5yZXZlcnNlIHJlcykpKSkKKyAg ICAobGV0KiAoKG5lYXIgKG1hcmtkb3duLXRzLS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcyBwb3Mp KQorICAgICAgICAgICAocm93IChjYXIgbmVhcikpCisgICAgICAgICAgIChjdXJyZW50LWNvbHVt biAoY3VycmVudC1jb2x1bW4pKSkKKyAgICAgIDs7IElmIHJvdyBpcyBuaWwsIHRoZXJlIGFyZSB6 ZXJvIHJvd3Mgc28gYWRkIG9uZSBiZWxvdyB0aGUKKyAgICAgIDs7IGRlbGltaXRlci1yb3cuCisg ICAgICAodW5sZXNzIHJvdworICAgICAgICAoc2V0cSBjbG9uZSBuaWwpCisgICAgICAgIChzZXRx IHJvdyBkZWxpbWl0ZXItcm93KQorICAgICAgICAoc2V0cSBhYm92ZSBuaWwpKQorICAgICAgKHNh dmUtZXhjdXJzaW9uCisgICAgICAgIChjb25kIChhYm92ZQorICAgICAgICAgICAgICAgKGdvdG8t Y2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IHJvdykpKQorICAgICAgICAgICAgICAodAorICAgICAg ICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCByb3cpKQorICAgICAgICAgICAg ICAgKGluc2VydCAiXG4iKSkpCisgICAgICAgIChjb25kIChjbG9uZQorICAgICAgICAgICAgICAg OzsgVGhlIGNsb25lIHN0cmF0ZWd5IGlzIFdZU0lXWUcuICBKdXN0IGNvcHkgdGhlIHRleHQKKyAg ICAgICAgICAgICAgIDs7IGFuZCBkb24ndCBmdXNzIHdpdGggY2VsbCBjb250ZW50IGFuZCBwaXBl IHN5bWJvbHMuCisgICAgICAgICAgICAgICA7OyBUaGUgZ3JhbW1hciBpbmNsdWRlcyB0aGUgZmlu YWwgbmV3bGluZSAoYW5kCisgICAgICAgICAgICAgICA7OyBzb21ldGltZXMgbm90KS4KKyAgICAg ICAgICAgICAgIChpbnNlcnQgKHN0cmluZy10cmltLXJpZ2h0CisgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLXRleHQgcm93ICduby1wcm9wZXJ0eSkgIlxuIikpKQorICAgICAg ICAgICAgICAodAorICAgICAgICAgICAgICAgKGluc2VydCAifCIpCisgICAgICAgICAgICAgICAo ZG90aW1lcyAoeCBuY29scykKKyAgICAgICAgICAgICAgICAgKGxldCAoKHBhZC13aWR0aCAobnRo IHggaGVhZGluZy13aWR0aHMpKSkKKyAgICAgICAgICAgICAgICAgICA7OyBUT0RPOiBSZW1vdmUg dGhlIHBsYWNlaG9sZGVyIGNoYXJhY3RlciBpZiB0aGUKKyAgICAgICAgICAgICAgICAgICA7OyB0 cmVlLXNpdHRlciBncmFtbWFyIGlzIHJlcGFpcmVkLgorICAgICAgICAgICAgICAgICAgIChpbnNl cnQgKGlmIChlcSB4IDApICIuIiAiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtl LXN0cmluZyAoLSBwYWQtd2lkdGggKGlmIChlcSB4IDApIDEgMCkpID9ccykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICJ8IikpKSkpCisgICAgICAgICh3aGVuIGFib3ZlCisgICAgICAgICAg KGluc2VydCAiXG4iKSkpCisgICAgICAoY29uZCAoYWJvdmUKKyAgICAgICAgICAgICAod2hlbiAo PiBjdXJyZW50LWNvbHVtbiAwKQorICAgICAgICAgICAgICAgKHdpdGgtc3VwcHJlc3NlZC13YXJu aW5ncyAoKGludGVyYWN0aXZlLW9ubHkgcHJldmlvdXMtbGluZSkpCisgICAgICAgICAgICAgICAg IChwcmV2aW91cy1saW5lKSkpKQorICAgICAgICAgICAgKHQgKHdpdGgtc3VwcHJlc3NlZC13YXJu aW5ncyAoKGludGVyYWN0aXZlLW9ubHkgbmV4dC1saW5lKSkKKyAgICAgICAgICAgICAgICAgKG5l eHQtbGluZSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1yb3cgKCkK KyAgIkRlbGV0ZSB0aGUgdGFibGUgcm93IGF0IHBvaW50LgorSWYgcG9pbnQgaXMgb24gdGhlIGhl YWRlciBvciBkZWxpbWl0ZXIgcm93LCBkbyBub3RoaW5nLgorSWYgcG9pbnQgaXMgbm90IGF0IGEg dGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFy Zi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLXJvdykKKyAgKHdoZW4tbGV0 KiAoKG5lYXIgKG1hcmtkb3duLXRzLS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcyBuaWwgdCkpCisg ICAgICAgICAgICAgIDs7IEJhaWwgaWYgcG9pbnQgaXMgb24gdGhlIGhlYWRlciBvciBkZWxpbWl0 ZXIgcm93IOKAlCBkbworICAgICAgICAgICAgICA7OyBub3Qgc2lsZW50bHkgZGVsZXRlIGEgYm9k eSByb3cgdGhlIHVzZXIgZGlkIG5vdCBzZWxlY3QuCisgICAgICAgICAgICAgICgobm90IChjZHIg bmVhcikpKQorICAgICAgICAgICAgICAocm93IChjYXIgbmVhcikpKQorICAgIChsZXQgKChjdXJy ZW50LWNvbHVtbiAoY3VycmVudC1jb2x1bW4pKSkKKyAgICAgIChkZWxldGUtcmVnaW9uICh0cmVl c2l0LW5vZGUtc3RhcnQgcm93KQorICAgICAgICAgICAgICAgICAgICAgKG1pbiAoMSsgKHRyZWVz aXQtbm9kZS1lbmQgcm93KSkgKHBvaW50LW1heCkpKQorICAgICAgKG1vdmUtdG8tY29sdW1uIGN1 cnJlbnQtY29sdW1uKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3ctdXAg KCkKKyAgIk1vdmUgdGhlIHJvdyBhdCBwb2ludCB1cCBvbmUgbGluZS4KK0lmIHBvaW50IGlzIG5v dCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24t dHMtdGFibGUtbW92ZS1yb3cpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3ct ZG93biAoKQorICAiTW92ZSB0aGUgcm93IGF0IHBvaW50IGRvd24gb25lIGxpbmUuCitJZiBwb2lu dCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1h cmtkb3duLXRzLXRhYmxlLW1vdmUtcm93ICdkb3duKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRh YmxlLW1vdmUtcm93ICgmb3B0aW9uYWwgZG93bikKKyAgIk1vdmUgdGhlIHJvdyBhdCBwb2ludCB1 cCBvbmUgbGluZS4KK0lmIERPV04gaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVu dCwgbW92ZSB0aGUgcm93IGRvd24gb25lCitsaW5lLgorSWYgcG9pbnQgaXMgb24gdGhlIGhlYWRl ciBvciBkZWxpbWl0ZXIgcm93LCBkbyBub3RoaW5nLgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFi bGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFyZi1p Zi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3cpCisgIChzZXRxIGRvd24gKG9y IGRvd24gY3VycmVudC1wcmVmaXgtYXJnKSkKKyAgKHdoZW4tbGV0KiAoKGF0LXRhYmxlIChtYXJr ZG93bi10cy1hdC10YWJsZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRh YmxlKSkKKyAgICAgICAgICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAg ICAobmVhciAobWFya2Rvd24tdHMtLXRhYmxlLWJvZHktcm93LW5lYXItcG9zIHBvcykpCisgICAg ICAgICAgICAgIDs7IEJhaWwgaWYgcG9pbnQgaXMgb24gdGhlIGhlYWRlciBvciBkZWxpbWl0ZXIg cm93IOKAlCBkbworICAgICAgICAgICAgICA7OyBub3Qgc2lsZW50bHkgbW92ZSBhIGJvZHkgcm93 IHRoZSB1c2VyIGRpZCBub3Qgc2VsZWN0LgorICAgICAgICAgICAgICAoKG5vdCAoY2RyIG5lYXIp KSkKKyAgICAgICAgICAgICAgKHJvdyAoY2FyIG5lYXIpKSkKKyAgICA7OyBEbyBub3QgbW92ZSBh Ym92ZSB0aGUgcGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93LgorICAgIDs7IERvIG5vdCBtb3ZlIGJl bG93IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLgorICAgICh1bmxlc3MgKG9yIChhbmQgKG5vdCBk b3duKQorICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXByZXYtc2libGluZyByb3cg J25hbWVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGlwZV90YWJsZV9kZWxpbWl0 ZXJfcm93IikpCisgICAgICAgICAgICAgICAgKGFuZCBkb3duCisgICAgICAgICAgICAgICAgICAg ICAobm90ICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIHJvdyAnbmFtZWQpKSkpCisgICAgICAo bGV0ICgocm93MiAoaWYgZG93bgorICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUt bmV4dC1zaWJsaW5nIHJvdyAnbmFtZWQpCisgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5v ZGUtcHJldi1zaWJsaW5nIHJvdyAnbmFtZWQpKSkKKyAgICAgICAgICAgIChyb3ctZW5kICh0cmVl c2l0LW5vZGUtZW5kIHJvdykpKQorICAgICAgICA7OyBUT0RPOiBSZW1vdmUgYWZ0ZXIgYnVnIzIz OTAzIFVuZG8gYWZ0ZXIga2IgZGlmZmVycyBmcm9tIGFmdGVyIE0teAorICAgICAgICAocHVzaCAo cG9pbnQpIGJ1ZmZlci11bmRvLWxpc3QpCisgICAgICAgIDs7IElmIHJvdyBwb2ludCBpcyBvdXRz aWRlIGl0cyBzb3VyY2UgcmVnaW9uLCBlLmcuLCBhdCBlb2wsIG1vdmUKKyAgICAgICAgOzsgaXQg aW5zaWRlIHRoZSByZWdpb24gZm9yIHN0YWJpbGl0eS4KKyAgICAgICAgKHdoZW4gKD49IChwb2lu dCkgcm93LWVuZCkKKyAgICAgICAgICAoZ290by1jaGFyIChtYXggKHBvaW50LW1pbikgKDEtIHJv dy1lbmQpKSkpCisgICAgICAgICh0cmFuc3Bvc2UtcmVnaW9ucyAodHJlZXNpdC1ub2RlLXN0YXJ0 IHJvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHJvdykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgcm93MikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHJvdzIpKSkpKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tbGVmdCAoJm9wdGlvbmFsIGNs b25lKQorICAiSW5zZXJ0IGEgdGFibGUgY29sdW1uIHRvIHRoZSBsZWZ0IG9mIHBvaW50J3MgY29s dW1uLgorSWYgQ0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xv bmUgdGhlIGN1cnJlbnQKK2NvbHVtbiwgb3RoZXJ3aXNlIGluc2VydCBlbXB0eSBjZWxscy4KK1Bv aW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVhZGVyIG9yIGJvZHkuCitJZiBwb2ludCBpcyBub3Qg YXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgIChtYXJrZG93 bi10cy10YWJsZS1pbnNlcnQtY29sdW1uICdsZWZ0IGNsb25lKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLXRhYmxlLWluc2VydC1jb2x1bW4tcmlnaHQgKCZvcHRpb25hbCBjbG9uZSkKKyAgIkluc2Vy dCBhIHRhYmxlIGNvbHVtbiB0byB0aGUgcmlnaHQgb2YgcG9pbnQncyBjb2x1bW4uCitJZiBDTE9O RSBpcyBub24tbmlsLCBvciB3aXRoIGEgcHJlZml4IGFyZ3VtZW50LCBjbG9uZSB0aGUgY3VycmVu dAorY29sdW1uLCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5IGNlbGxzLgorUG9pbnQgY2FuIGJlIGlu IHRoZSB0YWJsZSBoZWFkZXIgb3IgYm9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBk byBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWlu c2VydC1jb2x1bW4gJ3JpZ2h0IGNsb25lKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWNs b25lLWNvbHVtbi1sZWZ0ICgpCisgICJDbG9uZSB0aGUgY3VycmVudCBjb2x1bW4gdG8gaXRzIGxl ZnQuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQg aXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQgJ2Nsb25lKSkKKworKGRlZnVuIG1hcmtk b3duLXRzLXRhYmxlLWNsb25lLWNvbHVtbi1yaWdodCAoKQorICAiQ2xvbmUgdGhlIGN1cnJlbnQg Y29sdW1uIHRvIGl0cyByaWdodC4KK1BvaW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVhZGVyIG9y IGJvZHkuCitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tcmlnaHQgJ2Nsb25l KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4gKCZvcHRpb25hbCBs ZWZ0IGNsb25lKQorICAiSW5zZXJ0IGEgdGFibGUgY29sdW1uIGFmdGVyIHBvaW50J3MgY3VycmVu dCBjb2x1bW4uCitJZiBMRUZUIGlzIG5vbi1uaWwgYW5kIGlzIG5vdCBgcmlnaHQnLCBvciB3aXRo IGEgcHJlZml4IGFyZ3VtZW50LAoraW5zZXJ0IHRoZSBjb2x1bW4gdG8gdGhlIGxlZnQgb2YgdGhl IGN1cnJlbnQgY29sdW1uLgorSWYgQ0xPTkUgaXMgbm9uLW5pbCwgY2xvbmUgdGhlIGN1cnJlbnQg Y29sdW1uLCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5CitjZWxscy4KK0lmIENMT05FIGlzIGEgbGlz dCwgaXRzIGZpcnN0IGVsZW1lbnQgaXMgdGFyZ2V0LWNvbHVtbi1udW1iZXIuICBJdCBpcwordGhl IGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRoYXQgdGhpcyB2YWx1ZSBpcyB2YWxpZCBmb3IgdGhl IHRhYmxlLAordGhvdWdoIGl0IG1heSBiZSBpbnZhbGlkIGZvciBhIG5vbi11bmlmb3JtIHJhZ2dl ZCByb3cuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9p bnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgICht YXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LWNv bHVtbikKKyAgKHNldHEgbGVmdCAoY29uZCAoKGVxIGxlZnQgJ3JpZ2h0KSBuaWwpCisgICAgICAg ICAgICAgICAgICAgKGxlZnQgbGVmdCkKKyAgICAgICAgICAgICAgICAgICAoY3VycmVudC1wcmVm aXgtYXJnIHQpKSkKKyAgKHdoZW4tbGV0KiAoKGF0LXRhYmxlIChtYXJrZG93bi10cy1hdC10YWJs ZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxlKSkKKyAgICAgICAg ICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAoZGVsaW1pdGVyLXJv dyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFibGUgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgICAgICA7 OyBDb2x1bW4gcG9zIGZvciBpbnNlcnRpbmcgbWlzc2luZyBsZWFkaW5nIHBpcGVzLgorICAgICAg ICAgICAgICAoZGVsaW0wLXBpcGUtY29sCisgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24K KyAgICAgICAgICAgICAgICAgKGxldCogKChkZWxpbS1jZWxsICh0cmVlc2l0LW5vZGUtY2hpbGQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpbWl0ZXItcm93IDAgJ25h bWVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChiZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBk ZWxpbS1jZWxsKSkpCisgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciAocG9zLWJvbCkpCisgICAgICAgICAgICAgICAgICAgKGlm IChzZWFyY2gtZm9yd2FyZCAifCIgYmVnIHQpCisgICAgICAgICAgICAgICAgICAgICAgICgxLSAo Y3VycmVudC1jb2x1bW4pKQorICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisg ICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkpKQorICAgICAgICAgICAgICAo bm9kZSAodHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24gJ25hbWVkKSkKKyAgICAgICAgICAg ICAgKGNlbGwgKG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLWNlbGwgbm9kZSkpCisgICAgICAgICAg ICAgIChwb2ludC1yb3cgKG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLXJvdyBjZWxsKSkpCisgICAg KGxldCAoKHRhYmxlLWNvbHVtbiAobWFya2Rvd24tdHMtLXRhYmxlLWNvbXB1dGUtbm9kZS1jb2x1 bW4gcG9pbnQtcm93IGNlbGwpKSkKKyAgICAgICh1bmxlc3MgdGFibGUtY29sdW1uCisgICAgICAg IChlcnJvciAiQ291bGQgbm90IGNvbXB1dGUgdGhlIHRhYmxlIGNvbHVtbiIpKQorICAgICAgOzsg Tk9URTogR0ZNIHRhYmxlcyBhbGxvdyBub24tdW5pZm9ybSB0YWJsZSByb3dzLiAgVGhlIGN1cnJl bnQgcm93CisgICAgICA7OyBjb3VsZCBoYXZlIGEgZGlmZmVyaW5nIG51bWJlciBvZiBjb2x1bW5z IGZyb20gb3RoZXIgcm93cy4gIFdlCisgICAgICA7OyBzaWxlbnRseSBkbyBub3RoaW5nIHRvIGEg cm93IHRoYXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZQorICAgICAgOzsgY29tcHV0ZWQgY29sdW1u LgorICAgICAgOzsKKyAgICAgIDs7IE5PVEU6IFRoZSBncmFtbWFyIGFubm95aW5nbHkgaWdub3Jl cyBjZWxsIGxlYWRpbmcgd2hpdGVzcGFjZQorICAgICAgOzsgYnV0IGluY2x1ZGVzIHRyYWlsaW5n IHdoaXRlc3BhY2UsIHNvIGNlbGxzIGFyZSBib3VuZGVkIGJ5IHRoZQorICAgICAgOzsgZmlyc3Qg Z3JhcGggY2hhcmFjdGVyIHVwIHRvIHRoZSBsYXN0IGNoYXJhY3RlciBqdXN0IGJlZm9yZSB0aGUK KyAgICAgIDs7IHBpcGUgc3ltYm9sLCBpbmNsdWRpbmcgd2hpdGVzcGFjZS4gIFRoZSByZXN1bHQg aXMgdGhlIHJhbmdlCisgICAgICA7OyBkb2VzIG5vdCBzdGFydCBpbW1lZGlhdGVseSBhZnRlciB0 aGUgb3B0aW9uYWwgbGVhZGluZyBwaXBlCisgICAgICA7OyBzeW1ib2wgeWV0IGluY29uc2lzdGVu dGx5IGNvbnRpbnVlcyB1bnRpbCBqdXN0IGJlZm9yZSB0aGUKKyAgICAgIDs7IHRyYWlsaW5nIHBp cGUuCisgICAgICAobGV0KiAoKGFkaiAwKSA7IEFkanVzdCBub2RlIHBvc2l0aW9uIG9mZnNldHMg YnkgaW5zZXJ0ZWQgdGV4dC4KKyAgICAgICAgICAgICAod2lkdGggbWFya2Rvd24tdHMtdGFibGUt ZGVmYXVsdC1jb2x1bW4td2lkdGgpCisgICAgICAgICAgICAgKGVtcHR5IChtYWtlLXN0cmluZyB3 aWR0aCA/XHMpKQorICAgICAgICAgICAgIDs7IFRPRE86IFJlbW92ZSB0aGUgcGxhY2Vob2xkZXIg Y2hhcmFjdGVyIGlmIHRoZSB0cmVlLXNpdHRlcgorICAgICAgICAgICAgIDs7IGdyYW1tYXIgaXMg cmVwYWlyZWQuCisgICAgICAgICAgICAgKHBsYWNlaG9sZGVyIChjb25jYXQgIi4iIChtYWtlLXN0 cmluZyAoMS0gd2lkdGgpID9ccykpKQorICAgICAgICAgICAgIChkZWxpbSAobWFrZS1zdHJpbmcg d2lkdGggPy0pKQorICAgICAgICAgICAgIChyb3dzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gdGFi bGUgJ25hbWVkKSkKKyAgICAgICAgICAgICAobnJvd3MgKGxlbmd0aCByb3dzKSkKKyAgICAgICAg ICAgICAodGFyZ2V0LWNvbHVtbi1udW1iZXIgKGFuZCAobGlzdHAgY2xvbmUpIChjYXIgY2xvbmUp KSkKKyAgICAgICAgICAgICA7OyBQb3NpdGlvbiB0byBtb3ZlIHBvaW50IHRvIGFmdGVyIGFsbCBy b3dzIGhhdmUgYmVlbgorICAgICAgICAgICAgIDs7IHVwZGF0ZWQuICBEZXRlcm1pbmlzdGljIHBs YWNlbWVudCBhdm9pZHMgZGVwZW5kaW5nIG9uCisgICAgICAgICAgICAgOzsgdHJlZS1zaXR0ZXIg bmF2aWdhdGlvbiB0aHJvdWdoIGZyZXNobHktaW5zZXJ0ZWQgZW1wdHkKKyAgICAgICAgICAgICA7 OyBjZWxscywgd2hpY2ggdGhlIGdyYW1tYXIgZG9lcyBub3QgYWx3YXlzIHJlcGFyc2UgYXMKKyAg ICAgICAgICAgICA7OyBwaXBlX3RhYmxlX2NlbGwgbm9kZXMuCisgICAgICAgICAgICAgKHRhcmdl dC1wb3MpKQorICAgICAgICA7OyBUT0RPOiBSZW1vdmUgYWZ0ZXIgYnVnIzIzOTAzIFVuZG8gYWZ0 ZXIga2IgZGlmZmVycyBmcm9tIGFmdGVyIE0teAorICAgICAgICAocHVzaCAocG9pbnQpIGJ1ZmZl ci11bmRvLWxpc3QpCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICh3aXRob3V0 LXJlc3RyaWN0aW9uCisgICAgICAgICAgICAoZG90aW1lcyAoeCBucm93cykKKyAgICAgICAgICAg ICAgKHdoZW4tbGV0KiAoKHJvdyAobnRoIHggcm93cykpCisgICAgICAgICAgICAgICAgICAgICAg ICAgIChyb3ctdHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgcm93KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IHNvdXJjZS1jZWxsIHdpbGwgYmUgbmlsIGlmIHRhYmxlLWNvbHVtbiBp cyBiZXlvbmQgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICA7OyByb3cncyBjb2x1bW4g c2V0IGFuZCB0aGF0IHJvdyB3aWxsIGJlIHNraXBwZWQuCisgICAgICAgICAgICAgICAgICAgICAg ICAgIChzb3VyY2UtY2VsbCAobnRoIHRhYmxlLWNvbHVtbiBjb2xzKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgOzsgSWYgY2xvbmluZyB3aXRoIGEgc3BlY2lmaWVkIHRhcmdldC1jb2x1bW4t bnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0YXJnZXQtY2VsbCB3aWxsIGJl IG5pbCBhbmQgdGhlIHJvdyB3aWxsIGJlIHNraXBwZWQuCisgICAgICAgICAgICAgICAgICAgICAg ICAgICh0YXJnZXQtY2VsbCAoaWYgdGFyZ2V0LWNvbHVtbi1udW1iZXIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggdGFyZ2V0LWNvbHVtbi1udW1iZXIgY29s cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtY2VsbCkp CisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IENvbXB1dGUgdGhlIGluc2VydGlvbiBwb2lu dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZyAoY29uZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBJZiBjbG9uaW5nIHRvIGEgc3BlY2lmaWVkIHRhcmdldCwgdXNl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRhcmdldC1jZWxsJ3MgZW5kLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0LWNvbHVtbi1udW1iZXIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGFkagorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgdGFyZ2V0LWNlbGwpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgaW5zZXJ0aW5nIHRvIHRoZSBsZWZ0IG9m IHRoZSBmaXJzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBjb2x1bW4sIHVz ZSBzb3VyY2UgY2VsbCdzIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7 IGFkanVzdGVkIGZvciBpdHMgb3B0aW9uYWwgcGlwZSB0bworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7OyBjYXB0dXJlIGl0cyB3aGl0ZXNwYWNlLiAgSWYgdGhlcmUgaXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgbm8gcGlwZSwgdXNlIGJvbC4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQgbGVmdCAoZXEgdGFibGUtY29sdW1uIDApKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHAgKCsgYWRqCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IHNvdXJjZS1jZWxsKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290 by1jaGFyIHApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg KHBvcy1ib2wpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHNlYXJj aC1mb3J3YXJkICJ8IiBwIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBwICgxLSAocG9pbnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBwIChwb3MtYm9sKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBpbnNlcnRpbmcg bGVmdCBhbmQgYW55IG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGNv bHVtbiwgdXNlIHRoZSBlbmQgb2YgdGhlIHByaW9yCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IGNlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZWZ0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgxKyAodHJlZXNpdC1ub2RlLWVuZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoICgxLSB0YWJsZS1jb2x1bW4pIGNvbHMpKSkp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBpbnNlcnRpbmcgcmlnaHQs IHVzZSB0aGUgZW5kIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRoZSBj dXJyZW50IGNlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGoKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHNvdXJjZS1jZWxsKSkpKSkpCisgICAgICAg ICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAgICAgICAgICAgKGxldCogKChvcmlnLXBv aW50IChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgIChtaXNzaW5nLWxlYWRpbmctcGlw ZQorICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIHRhYmxlLWNvbHVtbiAwKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZ290by1jaGFyIChwb3MtYm9sKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodW5sZXNzIChzZWFyY2gtZm9yd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGFk aiAodHJlZXNpdC1ub2RlLXN0YXJ0IHNvdXJjZS1jZWxsKSkgdCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJ8IikpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHRleHQgKGNvbmQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IElmIGNsb25pbmcsIHJldHJpZXZlIHRo ZSBzb3VyY2UgY2VsbCB0ZXh0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb25l IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgQmFjayB1cCB0byBib2wgb3IgdGhlIHBpcGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgdG8gY2FwdHVyZSB0aGUgd2hpdGVzcGFjZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0aGUgZ3JhbW1hciBsZWF2 ZXMgb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1 cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGFkagorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IHNvdXJjZS1jZWxsKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHNraXAtY2hhcnMtYmFja3dhcmQgIltbOmJsYW5rOl1dIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3MtYm9sKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGogKHRyZWVzaXQtbm9kZS1lbmQgc291cmNl LWNlbGwpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBuZXcgY29sdW1u LCBhbmQgdGhpcyBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGRlbGlt aXRlciByb3csIGluc2VydCBhIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IGRlbGltaXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXF1YWwgcm93 LXR5cGUgInBpcGVfdGFibGVfZGVsaW1pdGVyX3JvdyIpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVsaW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBuZXcg Y29sdW1uLCBhbmQgdGhpcyBpcyB0aGUgYSBoZWFkZXIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IG9yIGJvZHkgcm93LCBpbnNlcnQgYSBkZWZhdWx0IGVtcHR5CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5KSkpKQorICAgICAg ICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAoY2xvbmUKKyAgICAgICAgICAg ICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgOzsgQ2xvbmUgdGhlIGZpcnN0IGNv bHVtbiB0byB0aGUgbGVmdC4gIElmIHRoZXJlIGlzCisgICAgICAgICAgICAgICAgICAgIDs7IG5v IHBpcGUgYmVmb3JlIHRoZSBjZWxsIGNvbnRlbnQsIGluc2VydCBvbmUuCisgICAgICAgICAgICAg ICAgICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gMCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAoaW5zZXJ0ICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciBtaXNzaW5nLWxlYWRpbmctcGlw ZSAiIikpKQorICAgICAgICAgICAgICAgICAgICA7OyBDbG9uZSB0aGUgZmlyc3QgY29sdW1uIHRv IHRoZSByaWdodC4KKyAgICAgICAgICAgICAgICAgICAgICgoYW5kIChub3QgbGVmdCkgKGVxIHRh YmxlLWNvbHVtbiAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJ8IgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICA7OyBG b3IgYSBwb3NpdGl2ZSB1c2VyIGV4cGVyaWVuY2UgZ2l2ZW4gZ3JhbW1hcgorICAgICAgICAgICAg ICAgICAgICAgIDs7IGJ1Z3MsIGFkZCBhIG1pc3NpbmcgbGVhZGluZyBwaXBlIHRvIHRoZSBmaXJz dAorICAgICAgICAgICAgICAgICAgICAgIDs7IGNlbGwgYXQgYSBwbGVhc2luZyBwb3NpdGlvbiBh ZnRlciBjbG9uaW5nLgorICAgICAgICAgICAgICAgICAgICAgICh3aGVuIG1pc3NpbmctbGVhZGlu Zy1waXBlCisgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1vdmUtdG8tY29sdW1uIGRlbGltMC1waXBlLWNvbCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKGluc2VydCAifCIpKSkpCisgICAgICAgICAgICAgICAgICAg IDs7IENsb25lIHRoZSBmaW5hbCBjb2x1bW4gdG8gdGhlIGxlZnQuCisgICAgICAgICAgICAgICAg ICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gKDEtIG5jb2xzKSkpCisgICAgICAgICAg ICAgICAgICAgICAgKGluc2VydCB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi fCIpKQorICAgICAgICAgICAgICAgICAgICAgOzsgQ2xvbmUgYSBtaWRkbGUgY29sdW1uIHRvIHRo ZSBsZWZ0LgorICAgICAgICAgICAgICAgICAgICAgKGxlZnQKKyAgICAgICAgICAgICAgICAgICAg ICAoaW5zZXJ0IHRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ8IikpCisgICAg ICAgICAgICAgICAgICAgICA7OyBDbG9uZSBhIG1pZGRsZSBvciBmaW5hbCBjb2x1bW4gdG8gdGhl IHJpZ2h0LgorICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAo aW5zZXJ0ICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCkpKSkKKworICAg ICAgICAgICAgICAgICAgIDs7IE5vdCBjbG9uaW5nLCBpbnNlcnQgYSBuZXcgY29sdW1uLgorICAg ICAgICAgICAgICAgICAgICgoYW5kIGxlZnQgKGVxIHRhYmxlLWNvbHVtbiAwKSAoZXEgeCAoMS0g bnJvd3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVxdWFsIHJvdy10eXBlICJw aXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciKSkpCisgICAgICAgICAgICAgICAgICAgOzsgVE9ETzog cmVtb3ZlIHBsYWNlaG9sZGVyIGxvZ2ljLgorICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0Cisg ICAgICAgICAgICAgICAgICAgICAifCIKKyAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVy CisgICAgICAgICAgICAgICAgICAgICAob3IgbWlzc2luZy1sZWFkaW5nLXBpcGUgIiIpKSkKKyAg ICAgICAgICAgICAgICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gMCkpCisgICAgICAg ICAgICAgICAgICAgICAgKGluc2VydAorICAgICAgICAgICAgICAgICAgICAgICAifCIKKyAgICAg ICAgICAgICAgICAgICAgICAgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAob3IgbWlzc2lu Zy1sZWFkaW5nLXBpcGUgIiIpKSkKKyAgICAgICAgICAgICAgICAgICAobGVmdAorICAgICAgICAg ICAgICAgICAgICAoaW5zZXJ0CisgICAgICAgICAgICAgICAgICAgICB0ZXh0CisgICAgICAgICAg ICAgICAgICAgICAifCIpKQorICAgICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAg ICAgIChpbnNlcnQKKyAgICAgICAgICAgICAgICAgICAgICJ8IgorICAgICAgICAgICAgICAgICAg ICAgdGV4dCkpKQorCisgICAgICAgICAgICAgICAgICA7OyBDYXB0dXJlIHRoZSBzdGFydCBvZiB0 aGUgbmV3IGNlbGwncyBjb250ZW50IGluCisgICAgICAgICAgICAgICAgICA7OyB0aGUgcm93IHRo YXQgb3JpZ2luYWxseSBjb250YWluZWQgcG9pbnQuCisgICAgICAgICAgICAgICAgICAod2hlbiAo YW5kIChub3QgdGFyZ2V0LXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVz aXQtbm9kZS1lcSByb3cgcG9pbnQtcm93KSkKKyAgICAgICAgICAgICAgICAgICAgKHNldHEgdGFy Z2V0LXBvcworICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHRhcmdldC1jb2x1bW4tbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCB0YXJnZXQtY2VsbCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYW5kIGxlZnQg KG5vdCAoZXEgdGFibGUtY29sdW1uIDApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgInRleHQgfCIgaW5zZXJ0ZWQgYXQgYmVnLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcmlnLXBvaW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBBbGwg b3RoZXIgYnJhbmNoZXMgaW5zZXJ0ICJ8IiBmaXJzdC4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgxKyBvcmlnLXBvaW50KSkpKSkpCisKKyAgICAgICAgICAgICAgICAgIDs7IEFkanVz dCBvZmZzZXQgZm9yIGRlbGV0ZWQgdGV4dC4KKyAgICAgICAgICAgICAgICAgIChzZXRxIGFkaiAo KyBhZGogKC0gKHBvaW50KSBvcmlnLXBvaW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9y aWctcG9pbnQgKHBvaW50KSkpKSkpKQorICAgICAgICAod2hlbiB0YXJnZXQtcG9zCisgICAgICAg ICAgKGdvdG8tY2hhciB0YXJnZXQtcG9zKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJs ZS1kZWxldGUtY29sdW1uICgpCisgICJEZWxldGUgdGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludC4K K1BvaW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVhZGVyIG9yIGJvZHkuCitJZiBwb2ludCBpcyBu b3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3du LXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uKQor ICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQor ICAgICAgICAgICAgICAocG9zIChjYXIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAodGFibGUg KGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10cy0tdGFibGUt bm9kZS1jZWxsIG5pbCBwb3MpKQorICAgICAgICAgICAgICAocm93IChtYXJrZG93bi10cy0tdGFi bGUtbm9kZS1yb3cgY2VsbCkpCisgICAgICAgICAgICAgIChjb2xzICh0cmVlc2l0LW5vZGUtY2hp bGRyZW4gcm93ICduYW1lZCkpCisgICAgICAgICAgICAgIChuY29scyAobGVuZ3RoIGNvbHMpKSkK KyAgICAobGV0ICgodGFibGUtY29sdW1uIChtYXJrZG93bi10cy0tdGFibGUtY29tcHV0ZS1ub2Rl LWNvbHVtbiByb3cgY2VsbCkpKQorICAgICAgKHVubGVzcyB0YWJsZS1jb2x1bW4KKyAgICAgICAg KGVycm9yICJDb3VsZCBub3QgY29tcHV0ZSB0aGUgdGFibGUgY29sdW1uIikpCisgICAgICA7OyBO T1RFOiBHRk0gdGFibGVzIGFsbG93IG5vbi11bmlmb3JtIHRhYmxlIHJvd3MuICBUaGUgY3VycmVu dCByb3cKKyAgICAgIDs7IGNvdWxkIGhhdmUgYSBkaWZmZXJpbmcgbnVtYmVyIG9mIGNvbHVtbnMg ZnJvbSBvdGhlciByb3dzLiAgV2UKKyAgICAgIDs7IHNpbGVudGx5IGRvIG5vdGhpbmcgdG8gYSBy b3cgdGhhdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlCisgICAgICA7OyBjb21wdXRlZCBjb2x1bW4u CisgICAgICA7OworICAgICAgOzsgTk9URTogVGhlIGdyYW1tYXIgYW5ub3lpbmdseSBpZ25vcmVz IGNlbGwgbGVhZGluZyB3aGl0ZXNwYWNlCisgICAgICA7OyBidXQgZG9lcyBpbmNsdWRlIHRyYWls aW5nIHdoaXRlc3BhY2Ugc28gY2VsbHMgYXJlIGJvdW5kZWQgYnkKKyAgICAgIDs7IHRoZSBmaXJz dCBncmFwaCBjaGFyYWN0ZXIgdXAgdG8gdGhlIGxhc3QgY2hhcmFjdGVyIGp1c3QgYmVmb3JlCisg ICAgICA7OyB0aGUgcGlwZSBzeW1ib2wsIGluY2x1ZGluZyB3aGl0ZXNwYWNlLgorICAgICAgOzsK KyAgICAgIDs7IFRoZSBncmFtbWFyIGFsc28gY29uc2lkZXJzIHRoZSB0cmFpbGluZyBwaXBlIHN5 bWJvbCB0byBiZSBhCisgICAgICA7OyBwYXJ0IG9mIGl0cyBwcmVjZWRpbmcgY2VsbCBzbyB0aGF0 J3Mgd2hhdCB3ZSBkZWxldGUgd2hlbiB3ZQorICAgICAgOzsgZGVsZXRlIGEgY29sdW1uJ3MgY2Vs bDsgaS5lLiwgaWYgdGhlcmUgaXMgYSBwaXBlIGJlZm9yZSB0aGUKKyAgICAgIDs7IGZpcnN0IGNv bHVtbiwgd2UgZGVsZXRlIGl0LgorICAgICAgKGxldCogKChhZGogMCkgOyBBZGp1c3Qgbm9kZSBw b3NpdGlvbiBvZmZzZXRzIGJ5IGRlbGV0ZWQgdGV4dC4KKyAgICAgICAgICAgICAocm93cyAodHJl ZXNpdC1ub2RlLWNoaWxkcmVuIHRhYmxlICduYW1lZCkpCisgICAgICAgICAgICAgKG5yb3dzIChs ZW5ndGggcm93cykpKQorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAod2l0aG91 dC1yZXN0cmljdGlvbgorICAgICAgICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgICAg ICAgIDs7IElmIGNlbGwgaXMgbmlsLCBpdCBpcyBiZXlvbmQgdGhlIHRhYmxlLWNvbHVtbiBhbmQg aXRzCisgICAgICAgICAgICAgIDs7IHJvdyBpcyBpZ25vcmVkLgorICAgICAgICAgICAgICAod2hl bi1sZXQqICgocm93IChudGggeCByb3dzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNv bHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpCisgICAgICAgICAgICAgICAgICAgICAgICAg IChjZWxsIChudGggdGFibGUtY29sdW1uIGNvbHMpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2VsbC1iZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBjZWxsKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNlbGwtZW5kICh0cmVlc2l0LW5vZGUtZW5kIGNlbGwpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBBZGp1c3QgYmVnIHRvIHRyaW0gdGhlIGdyYW1tYXIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgdW5hY2NvdW50ZWQtZm9yIGxlYWRpbmcgd2hpdGVzcGFjZS4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZyAoY29uZAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBJZiB0aGlzIGlzIHRoZSBzb2xlIGNvbHVtbiwgZGVsZXRlIGZyb20g Ym9sLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxIG5jb2xzIDEpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIGNlbGwtYmVnIGFkaikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9zLWJvbCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDs7IElmIHRoaXMgaXMgdGhlIGZpcnN0IGNvbHVtbiwgZGVs ZXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGZyb20gdGhlIHBpcGUsIGlm IHRoZXJlIGlzIG9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgb3RoZXJ3 aXNlIGNlbGwtYmVnLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxIHRhYmxl LWNvbHVtbiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHAgKC0g Y2VsbC1iZWcgYWRqKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo cG9zLWJvbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoc2VhcmNo LWZvcndhcmQgInwiIHAgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgxLSAocG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHApKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgdGhpcyBpcyB0aGUgZmluYWwg Y29sdW1uLCBkZWxldGUgZnJvbSB0aGUgcHJpb3IgcGlwZSBzeW1ib2wuCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoZXEgdGFibGUtY29sdW1uICgxLSBuY29scykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgocCAoLSAodHJlZXNpdC1ub2RlLWVuZAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggKDEtIHRh YmxlLWNvbHVtbikgY29scykpIGFkaikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZ290by1jaGFyIHApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp ZiAoc2VhcmNoLWZvcndhcmQgInwiICgtIGNlbGwtYmVnIGFkaikgdCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IE90 aGVyd2lzZSwgc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgcHJpb3IgY2VsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtICh0cmVlc2l0LW5vZGUtZW5k CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggKDEtIHRhYmxl LWNvbHVtbikgY29scykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGop KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IEFkanVzdCBlbmQgdG8gdHJpbSB0aGUg dHJhaWxpbmcgcGlwZSBzeW1ib2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgY29uc2lk ZXJlZCBieSB0aGUgZ3JhbW1hciB0byBiZSBwYXJ0IG9mIGl0cworICAgICAgICAgICAgICAgICAg ICAgICAgICA7OyBwcmVjZWRpbmcgY2VsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGVu ZCAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB0aGlzIGlzIHRo ZSBzb2xlIGNvbHVtbiwgZGVsZXRlIHVudGlsIGVvbC4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKChlcSBuY29scyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdvdG8tY2hhciAoLSBjZWxsLWJlZyBhZGopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBvcy1lb2wpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB0 aGlzIGlzIHRoZSBmaW5hbCBjb2x1bW4sIGRlbGV0ZSB1bnRpbCBlb2wuCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoZXEgdGFibGUtY29sdW1uICgxLSBuY29scykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIGNlbGwtZW5kIGFkaikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9zLWVvbCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDs7IE90aGVyd2lzZSwgbG9vayBmb3J3YXJkIGZyb20gY2VsbC1l bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgKHdoaWNoIGluY2x1ZGVzIHRo ZSBjZWxsJ3MgdHJhaWxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgd2hp dGVzcGFjZSkgZm9yIGEgcGlwZSBzeW1ib2wuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIGNl bGwtZW5kIGFkaikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHJlLXNl YXJjaC1mb3J3YXJkICJ8Kz8iIChwb3MtZW9sKSB0KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgxLSAocG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjZWxsLWVuZCkpKSkpCisgICAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVnIGVu ZCkKKyAgICAgICAgICAgICAgICAoc2V0cSBhZGogKCsgYWRqICgtIGVuZCBiZWcpKSkpKSkpKSkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tbGVmdCAoKQorICAiTW92 ZSB0aGUgdGFibGUgY29sdW1uIGF0IHBvaW50IHRvIGl0cyBsZWZ0LgorUG9pbnQgY2FuIGJlIGlu IHRoZSB0YWJsZSBoZWFkZXIgb3IgYm9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBk byBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24tdHMtdGFibGUtbW92ZS1j b2x1bW4gJ2xlZnQpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tcmln aHQgKCkKKyAgIk1vdmUgdGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludCB0byBpdHMgcmlnaHQuCitQ b2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQgaXMgbm90 IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10 cy10YWJsZS1tb3ZlLWNvbHVtbiAncmlnaHQpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUt bW92ZS1jb2x1bW4gKCZvcHRpb25hbCBsZWZ0KQorICAiTW92ZSB0aGUgdGFibGUgY29sdW1uIGF0 IHBvaW50IHJpZ2h0IG9yIGxlZnQuCitJZiBMRUZUIGlzIG5vbi1uaWwgYW5kIGlzIG5vdCBgcmln aHQnLCBvciB3aXRoIGEgcHJlZml4IGFyZ3VtZW50LAorbW92ZSB0aGUgY29sdW1uIHRvIGl0cyBs ZWZ0LgorRG8gbm90aGluZyBpZiBhIHJvdyBiZWluZyBtb3ZlZCBpcyBub3Qgd2l0aGluIHRoZSBj b2x1bW5zIG9mIHRoZSBoZWFkZXIuCitEbyBub3RoaW5nIGlmIG1vdmluZyBsZWZ0IGFuZCB0aGUg Y3VycmVudCBjb2x1bW4gaXMgdGhlIGZpcnN0IGNvbHVtbiBvZgordGhlIGN1cnJlbnQgcm93Lgor RG8gbm90aGluZyBpZiBtb3ZpbmcgcmlnaHQgYW5kIHRoZSBjdXJyZW50IGNvbHVtbiBpcyB0aGUg ZmluYWwgY29sdW1uIG9mCit0aGUgY3VycmVudCByb3cuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRh YmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhp bmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAn bWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4pCisgIChzZXRxIGxlZnQgKGNvbmQgKChlcSBs ZWZ0ICdyaWdodCkgbmlsKQorICAgICAgICAgICAgICAgICAgIChsZWZ0IGxlZnQpCisgICAgICAg ICAgICAgICAgICAgKGN1cnJlbnQtcHJlZml4LWFyZyB0KSkpCisgICh3aGVuLWxldCogKChhdC10 YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgIChwb3Mg KGNhciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICh0YWJsZSAoY2RyIGF0LXRhYmxlKSkKKyAg ICAgICAgICAgICAgKG5vZGUgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3duICduYW1lZCkp CisgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsIG5vZGUp KQorICAgICAgICAgICAgICAocm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgbm9kZSkp CisgICAgICAgICAgICAgIChoZWFkZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlxcYHBpcGVfdGFibGVfaGVhZGVyXFwnIikpCisgICAgICAgICAgICAgIChuaGVhZGVy cyAobGVuZ3RoICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gaGVhZGVyLXJvdyAnbmFtZWQpKSkKKyAg ICAgICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkKKyAg ICAgICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpKQorICAgIChsZXQgKCh0YWJsZS1jb2x1 bW4gKG1hcmtkb3duLXRzLS10YWJsZS1jb21wdXRlLW5vZGUtY29sdW1uIHJvdyBjZWxsKSkpCisg ICAgICAodW5sZXNzIHRhYmxlLWNvbHVtbgorICAgICAgICAoZXJyb3IgIkNvdWxkIG5vdCBjb21w dXRlIHRoZSB0YWJsZSBjb2x1bW4iKSkKKyAgICAgIChpZiAoPj0gdGFibGUtY29sdW1uIG5oZWFk ZXJzKQorICAgICAgICAgIChtZXNzYWdlICJSYWdnZWQvdW5ldmVuIGNvbHVtbiBjYW5ub3QgYmUg bW92ZWQiKQorICAgICAgICA7OyBBIEIgQyBEIC0+IEIgQSBDIEQKKyAgICAgICAgOzsgTW92ZSBB IGxlZnQ6IGRvIG5vdGhpbmcKKyAgICAgICAgOzsgTW92ZSBEIHJpZ2h0OiBkbyBub3RoaW5nCisg ICAgICAgIDs7IE1vdmUgY3VycmVudCBjb2x1bW4gbGVmdDoKKyAgICAgICAgOzsgICBzb3VyY2Ug Y29sdW1uID0gdCAtIDEKKyAgICAgICAgOzsgTW92ZSBjdXJyZW50IGNvbHVtbiByaWdodDoKKyAg ICAgICAgOzsgICBjbG9uZSB0IHRvIHQrMSBpZiB0aGUgZmluYWwgY29sdW1uLCBvdGhlcndpc2Ug dCsyCisgICAgICAgIDs7ICAgZGVsZXRlIHQKKyAgICAgICAgKGNvbmQgKChhbmQgbGVmdCAoZXEg dGFibGUtY29sdW1uIDApKQorICAgICAgICAgICAgICAgKG1lc3NhZ2UgIkxlZnRtb3N0IGNvbHVt biBjYW5ub3QgYmUgbW92ZWQgbGVmdCIpCisgICAgICAgICAgICAgICBuaWwpCisgICAgICAgICAg ICAgICgoYW5kIChub3QgbGVmdCkgKGVxIHRhYmxlLWNvbHVtbiAoMS0gbmNvbHMpKSkKKyAgICAg ICAgICAgICAgIChtZXNzYWdlICJSaWdodG1vc3QgY29sdW1uIGNhbm5vdCBiZSBtb3ZlZCByaWdo dCIpCisgICAgICAgICAgICAgICBuaWwpCisgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAg ICAobGV0ICgoc291cmNlLWNvbHVtbiAoaWYgbGVmdAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgxLSB0YWJsZS1jb2x1bW4pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhYmxlLWNvbHVtbikpCisgICAgICAgICAgICAgICAgICAgICAodGFy Z2V0LWNvbHVtbiAoaWYgbGVmdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhYmxlLWNvbHVtbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo MSsgdGFibGUtY29sdW1uKSkpKQorICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAg ICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtLWdvdG8tY29sdW1uIHNvdXJjZS1j b2x1bW4pCisgICAgICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1 bW4KKyAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0IChsaXN0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGFyZ2V0LWNvbHVtbikpKQorICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMt dGFibGUtLWdvdG8tY29sdW1uIHNvdXJjZS1jb2x1bW4pCisgICAgICAgICAgICAgICAgIChtYXJr ZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uKQorICAgICAgICAgICAgICAgICA7OyBFbXB0eSBj ZWxscyBjYW4gY29uZnVzZSB0aGUgZ3JhbW1hciwgc28gbm8tZXJyb3IgaGVyZS4KKyAgICAgICAg ICAgICAgICAgKGlmIGxlZnQKKyAgICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy10YWJs ZS0tZ290by1jb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtY29sdW1uICduby1l cnJvcikKKyAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtLWdvdG8tY29sdW1u CisgICAgICAgICAgICAgICAgICAgIHRhcmdldC1jb2x1bW4gJ25vLWVycm9yKSkpKSkpKSkpCisK KyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4tbGVmdCAoKQorICAiQWxpZ24g dGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludCB0byB0aGUgbGVmdC4KK0RvIHRoZSB3b3JrIHdpdGgg YG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWNvbHVtbicsIHdoaWNoIHNlZSBmb3IgbW9yZQorZGV0 YWlscy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWNvbHVt biAnbGVmdCkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4tY2VudGVy ICgpCisgICJBbGlnbiB0aGUgdGFibGUgY29sdW1uIGF0IHBvaW50IHRvIHRoZSBjZW50ZXIuCitE byB0aGUgd29yayB3aXRoIGBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4nLCB3aGljaCBz ZWUgZm9yIG1vcmUKK2RldGFpbHMuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy10 YWJsZS1hbGlnbi1jb2x1bW4gJ2NlbnRlcikpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1h bGlnbi1jb2x1bW4tcmlnaHQgKCkKKyAgIkFsaWduIHRoZSB0YWJsZSBjb2x1bW4gYXQgcG9pbnQg dG8gdGhlIHJpZ2h0LgorRG8gdGhlIHdvcmsgd2l0aCBgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24t Y29sdW1uJywgd2hpY2ggc2VlIGZvciBtb3JlCitkZXRhaWxzLiIKKyAgKGludGVyYWN0aXZlKQor ICAobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uICdyaWdodCkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4gKCZvcHRpb25hbCBhbGlnbikKKyAgIkFsdGVyIHRo ZSB0YWJsZSBjb2x1bW4gYWxpZ25tZW50IGF0IHBvaW50LgorQWx0ZXIgdGhlIGNvbHVtbiBwb2lu dCBpcyBpbi4KKworTm90ZTogVG8gY29tcHV0ZSB0aGUgY29sdW1uLCBwb2ludCBtdXN0IGJlIHdp dGhpbiB0aGUgY29sdW1uIGFuZCBjYW5ub3QKK2JlIG9uIHRoZSBsZWFkaW5nIG9yIHRyYWlsaW5n IHdoaXRlc3BhY2Ugb3Igb24gYSBjb2x1bW4gZGVsaW1pdGVyLgorCitBTElHTiBjYW4gYmUgb25l IG9mIHRoZSBzeW1ib2xzIGBsZWZ0JywgYGNlbnRlcicsIGByaWdodCcgb3IgbmlsIGZvcgordW5z cGVjaWZpZWQgb3IgdGhlIGNoYXJhY3RlcnMgbCwgYywgb3Igci4KKworSWYgQUxJR04gaXMgbmls LCBhc3N1bWUgdW5zcGVjaWZpZWQuICBNYWtlIHRoZSBhbGlnbm1lbnQgc3RyaW5nIGEKK21pbmlt dW0gb2YgNSBjaGFyYWN0ZXJzIHRvIGFjY29tbW9kYXRlIE1hcmtkb3duIGNvbnZlbnRpb25zLgor CitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2 ZSAiY0FsaWduIGNvbHVtbiBbbF1lZnQgW2NdZW50ZXIgW3JdaWdodCBbdV1uc3BlY2lmaWVkOiIp CisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtYWxp Z24tY29sdW1uKQorICAoc2V0cSBhbGlnbiAoaWYgKGNoYXJhY3RlcnAgYWxpZ24pCisgICAgICAg ICAgICAgICAgICAocGNhc2UgYWxpZ24gKD9sICdsZWZ0KSAoP2MgJ2NlbnRlcikgKD9yICdyaWdo dCkpCisgICAgICAgICAgICAgICAgYWxpZ24pKQorICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1h cmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAocG9zIChjYXIgYXQt dGFibGUpKQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAg ICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQgcG9zICdtYXJrZG93biAnbmFtZWQpKQorICAgICAg ICAgICAgICAoY2VsbCAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtY2VsbCBub2RlKSkKKyAgICAg ICAgICAgICAgKHJvdyAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93IGNlbGwpKQorICAgICAg ICAgICAgICAoYWxpZ25lcnMgKG1hcmtkb3duLXRzLS10YWJsZS1hbGlnbmVycyB0YWJsZSkpKQor ICAgIChsZXQgKCh0YWJsZS1jb2x1bW4gKG1hcmtkb3duLXRzLS10YWJsZS1jb21wdXRlLW5vZGUt Y29sdW1uIHJvdyBjZWxsKSkpCisgICAgICAodW5sZXNzIHRhYmxlLWNvbHVtbgorICAgICAgICAo ZXJyb3IgIkNvdWxkIG5vdCBjb21wdXRlIHRoZSB0YWJsZSBjb2x1bW4iKSkKKyAgICAgIDs7IE5P VEU6IEdGTSB0YWJsZXMgYWxsb3cgbm9uLXVuaWZvcm0gdGFibGUgcm93cy4gIFRoZSBjdXJyZW50 IHJvdworICAgICAgOzsgY291bGQgaGF2ZSBhIGRpZmZlcmluZyBudW1iZXIgb2YgY29sdW1ucyBm cm9tIHRoZSBoZWFkZXIuICBXZQorICAgICAgOzsgc2lsZW50bHkgZG8gbm90aGluZyBpZiB3ZSBj YW4ndCBmaW5kIGEgbWF0Y2hpbmcgaGVhZGVyIGNvbHVtbi4KKyAgICAgICh3aGVuLWxldCogKChh bGlnbmVyIChudGggdGFibGUtY29sdW1uIGFsaWduZXJzKSkKKyAgICAgICAgICAgICAgICAgIChi ZWcgKHBsaXN0LWdldCBhbGlnbmVyIDpiZWcpKQorICAgICAgICAgICAgICAgICAgKGVuZCAocGxp c3QtZ2V0IGFsaWduZXIgOmVuZCkpCisgICAgICAgICAgICAgICAgICAoc3RyIChidWZmZXItc3Vi c3RyaW5nLW5vLXByb3BlcnRpZXMgYmVnIGVuZCkpCisgICAgICAgICAgICAgICAgICAoc3RybGVu IChtYXggNSAobGVuZ3RoIHN0cikpKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVnIGVuZCkK KyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAg ICAgICAgKGluc2VydCAobWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lciBzdHJsZW4gYWxp Z24pKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi10YWJsZSAoJm9wdGlv bmFsIGFsaWduLWNlbGxzKQorICAiQWxpZ24gdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBvaW50Lgor QWRqdXN0IGVhY2ggY29sdW1uJ3Mgd2lkdGggdG8gYWNjb21tb2RhdGUgaXRzIHdpZGVzdCBjb25z dGl0dWVudCBjZWxsLgorSWYgQUxJR04tQ0VMTFMgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZp eCBhcmd1bWVudCwgYXBwbHkgdGhlCitkZWxpbWl0ZXIgcm93J3MgYWxpZ25tZW50IHRvIGNlbGwg Y29udGVudC4gIEFMSUdOLUNFTExTIGlzIG5vbi1uaWwgaWYKK3RoZSB1c2VyIG9wdGlvbiBgbWFy a2Rvd24tdHMtdGFibGUtYWxpZ24tZmVhdHVyZXMnIGluY2x1ZGVzCitganVzdGlmeS1jZWxscycu CitBbmNob3IgdGhlIGNvbHVtbnMgdG8gdGhlIGRlbGltaXRlciByb3cuICBJZ25vcmUgcm93cyB0 aGF0IGNvbnRhaW4KK2NvbHVtbnMgYmV5b25kIHRoZSBkZWxpbWl0ZXIgcm93LgorSWYgbm90IGlu IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAobWFya2Rvd24t dHMtLWJhcmYtaWYtbm90LW1vZGUgJ21hcmtkb3duLXRzLXRhYmxlLWFsaWduLXRhYmxlKQorICAo d2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAg ICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAgIChiZWcgKHRy ZWVzaXQtbm9kZS1zdGFydCB0YWJsZSkpCisgICAgICAgICAgICAgIChlbmQgKHRyZWVzaXQtbm9k ZS1lbmQgdGFibGUpKQorICAgICAgICAgICAgICAoXyAobWFya2Rvd24tdHMtLXRhYmxlLXRpY2st c3RhbGUtcCBiZWcpKQorICAgICAgICAgICAgICAocm93cyAodHJlZXNpdC1ub2RlLWNoaWxkcmVu IHRhYmxlICduYW1lZCkpCisgICAgICAgICAgICAgIChucm93cyAobGVuZ3RoIHJvd3MpKQorICAg ICAgICAgICAgICAoZGVsaW1pdGVyLXJvdyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAg ICAgICAgICAgICAgICAgICAgIHRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYHBp cGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgICAgICAoYWxpZ25lcnMgKG1h cmtkb3duLXRzLS10YWJsZS1hbGlnbmVycyB0YWJsZSkpCisgICAgICAgICAgICAgIChjb2xzICh0 cmVlc2l0LW5vZGUtY2hpbGRyZW4gZGVsaW1pdGVyLXJvdyAnbmFtZWQpKQorICAgICAgICAgICAg ICAobmNvbHMgKGxlbmd0aCBjb2xzKSkKKyAgICAgICAgICAgICAgKGNvbC13aWR0aHMgKG1ha2Ut aGFzaC10YWJsZSA6c2l6ZSBuY29scyA6dGVzdCAnZXF1YWwpKQorICAgICAgICAgICAgICAoY2Vs bC10ZXh0IChtYWtlLWhhc2gtdGFibGUgOnNpemUgKCogbnJvd3MgbmNvbHMpIDp0ZXN0ICdlcXVh bCkpKQorICAgIChzZXRxIGFsaWduLWNlbGxzIChvciBhbGlnbi1jZWxscworICAgICAgICAgICAg ICAgICAgICAgICAgICBjdXJyZW50LXByZWZpeC1hcmcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1lbXEgJ2p1c3RpZnktY2VsbHMgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tZmVhdHVyZXMp KSkKKyAgICAod2l0aG91dC1yZXN0cmljdGlvbgorICAgICAgOzsgQ29sbGVjdCBjZWxsIHRleHQg YW5kIGNvbXB1dGUgbWF4IGNvbHVtbiB3aWR0aHMuCisgICAgICA7OyBEbyBub3QgdXNlIHRoZSBk ZWxpbWl0ZXIgcm93IGZvciB3aWR0aCBjb21wdXRhdGlvbi4KKyAgICAgIChkb3RpbWVzICh4IG5y b3dzKQorICAgICAgICAobGV0KiAoKHJvdyAobnRoIHggcm93cykpCisgICAgICAgICAgICAgICAo Y2VsbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkpCisgICAgICAgICAgKGRv dGltZXMgKHkgbmNvbHMpCisgICAgICAgICAgICA7OyBTa2lwIG5pbCBjZWxscy0tdGhlIHBhcnNl ciBnb3QgY29uZnVzZWQuCisgICAgICAgICAgICAod2hlbi1sZXQqICgoY2VsbCAobnRoIHkgY2Vs bHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHRleHQgKHN0cmluZy10cmltLXJpZ2h0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IGNlbGwgJ25v LXByb3BlcnR5KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAodyAobGVuZ3RoIHRleHQpKQor ICAgICAgICAgICAgICAgICAgICAgICAgKHcwIChvciAoZ2V0aGFzaCB5IGNvbC13aWR0aHMpIDAp KSkKKyAgICAgICAgICAgICAgOzsgRWxpZGUgZGVsaW1pdGVyIHdpZHRocy4KKyAgICAgICAgICAg ICAgKHVubGVzcyAoZXEgeCAxKQorICAgICAgICAgICAgICAgICh3aGVuICg+IHcgdzApCisgICAg ICAgICAgICAgICAgICAocHV0aGFzaCB5IHcgY29sLXdpZHRocykpKQorICAgICAgICAgICAgICAo cHV0aGFzaCAoY29ucyB4IHkpIHRleHQgY2VsbC10ZXh0KSkpKSkKKworICAgICAgKGxldCAoKHNv dXJjZS1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgICAgICh3aXRoLXRlbXAtYnVmZmVy CisgICAgICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgICAgICAoZG90aW1lcyAoeSBu Y29scykKKyAgICAgICAgICAgICAgKGxldCogKCh3aWR0aCAob3IgKGdldGhhc2ggeSBjb2wtd2lk dGhzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy10YWJsZS1k ZWZhdWx0LWNvbHVtbi13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAoYWxpZ24gKG9yIChw bGlzdC1nZXQgKG50aCB5IGFsaWduZXJzKSA6YWxpZ24pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICd1bnNwZWNpZmllZCkpCisgICAgICAgICAgICAgICAgICAgICA7OyBDb25mdXNl ZCBjZWxscyBoYXZlIG5pbCB0ZXh0LgorICAgICAgICAgICAgICAgICAgICAgKHRleHQgKG9yIChn ZXRoYXNoIChjb25zIHggeSkgY2VsbC10ZXh0KSAiIikpCisgICAgICAgICAgICAgICAgICAgICAo dGV4dDAgKG1hcmtkb3duLXRzLS10YWJsZS1hbGlnbi1jZWxsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRleHQgd2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGFs aWduLWNlbGxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNwZWNpZmllZCkpKSkKKyAgICAgICAgICAgICAg ICAoY29uZAorICAgICAgICAgICAgICAgICA7OyBIZWFkZXIgcm93LgorICAgICAgICAgICAgICAg ICAoKGVxIHggMCkKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQgInwiIHRleHQwKSkKKyAgICAg ICAgICAgICAgICAgOzsgRGVsaW1pdGVyIHJvdy4gIFVzZSB1bmFsaWduZWQgdGV4dC4KKyAgICAg ICAgICAgICAgICAgKChlcSB4IDEpCisgICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJ8IgorICAg ICAgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lciB3 aWR0aCBhbGlnbikpKQorICAgICAgICAgICAgICAgICA7OyBCb2R5IHJvdy4KKyAgICAgICAgICAg ICAgICAgKHQKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQgInwiIHRleHQwKSkpKSkKKyAgICAg ICAgICAgIChpbnNlcnQgInwiICJcbiIpKQorICAgICAgICAgIChsZXQgKCh0ZW1wLWJ1ZmZlciAo Y3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHNvdXJj ZS1idWZmZXIKKyAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIGJlZyBlbmQg dGVtcC1idWZmZXIpKSkpKSkKKyAgICAobWFya2Rvd24tdHMtLXRhYmxlLXRpY2stdXBkYXRlIGJl ZykpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtdHJhbnNwb3NlLXRhYmxlICgpCisgICJU cmFuc3Bvc2UgdGhlIHJvd3MgYW5kIGNvbHVtbnMgb2YgdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBv aW50LgorVXNlIHVuc3BlY2lmaWVkIGNvbHVtbiBhbGlnbm1lbnQgaW4gdGhlIHRyYW5zcG9zZWQg dGFibGUuCitJZiB0YWJsZSdzIHJvd3MgYXJlIG5vdCB1bmlmb3JtIHdpdGggdGhvc2Ugb24gdGhl IGRlbGltaXRlciByb3csIHNpZ25hbAorYW4gZXJyb3IuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8g bm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1t b2RlICdtYXJrZG93bi10cy10YWJsZS10cmFuc3Bvc2UtdGFibGUpCisgICh3aGVuLWxldCogKChh dC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgICh0 YWJsZSAoY2RyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKGJlZyAodHJlZXNpdC1ub2RlLXN0 YXJ0IHRhYmxlKSkKKyAgICAgICAgICAgICAgKGVuZCAodHJlZXNpdC1ub2RlLWVuZCB0YWJsZSkp CisgICAgICAgICAgICAgIChyb3dzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gdGFibGUgJ25hbWVk KSkKKyAgICAgICAgICAgICAgKG5yb3dzIChsZW5ndGggcm93cykpCisgICAgICAgICAgICAgIChk ZWxpbWl0ZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAgICAgICAg ICAgICAgdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9kZWxp bWl0ZXJfcm93XFwnIikpCisgICAgICAgICAgICAgIChhbGlnbmVycyAobWFya2Rvd24tdHMtLXRh YmxlLWFsaWduZXJzIHRhYmxlKSkKKyAgICAgICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1j aGlsZHJlbiBkZWxpbWl0ZXItcm93ICduYW1lZCkpCisgICAgICAgICAgICAgIChuY29scyAobGVu Z3RoIGNvbHMpKQorICAgICAgICAgICAgICAoY2VsbC10ZXh0IChtYWtlLWhhc2gtdGFibGUgOnNp emUgKCogbnJvd3MgbmNvbHMpIDp0ZXN0ICdlcXVhbCkpKQorICAgICh3aXRob3V0LXJlc3RyaWN0 aW9uCisgICAgICA7OyBDb2xsZWN0IGNlbGwgdGV4dCBhbmQgaW52ZXJ0IGNvb3JkaW5hdGVzLgor ICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgIChsZXQqICgocm93IChudGggeCByb3dz KSkKKyAgICAgICAgICAgICAgIChjZWxscyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHJvdyAnbmFt ZWQpKSkKKyAgICAgICAgICAoZG90aW1lcyAoeSBuY29scykKKyAgICAgICAgICAgIDs7IFNraXAg bmlsIGNlbGxzLS10aGUgcGFyc2VyIGdvdCBjb25mdXNlZC4KKyAgICAgICAgICAgICh3aGVuLWxl dCogKChjZWxsIChudGggeSBjZWxscykpCisgICAgICAgICAgICAgICAgICAgICAgICAodGV4dCAo c3RyaW5nLXRyaW0tcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNp dC1ub2RlLXRleHQgY2VsbCAnbm8tcHJvcGVydHkpKSkpCisgICAgICAgICAgICAgIChwdXRoYXNo IChjb25zIHkgeCkgdGV4dCBjZWxsLXRleHQpKSkpKQorCisgICAgICAobGV0ICgoc291cmNlLWJ1 ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAg ICAgICAoZG90aW1lcyAoeCBuY29scykKKyAgICAgICAgICAgIDs7IFN5bnRoZXNpemUgYSBkZWxp bWl0ZXIgcm93LgorICAgICAgICAgICAgKHdoZW4gKGVxIHggMSkKKyAgICAgICAgICAgICAgKGRv dGltZXMgKF95ICgxLSBucm93cykpCisgICAgICAgICAgICAgICAgKGluc2VydCAifCIKKyAgICAg ICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0tdGFibGUtbWFrZS1hbGlnbmVyCisgICAg ICAgICAgICAgICAgICAgICAgICAgKG1heCA1IG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1bHQtY29s dW1uLXdpZHRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNwZWNpZmllZCkpKQorICAg ICAgICAgICAgICAoaW5zZXJ0ICJ8IiAiXG4iKSkKKyAgICAgICAgICAgIChkb3RpbWVzICh5IG5y b3dzKQorICAgICAgICAgICAgICA7OyBTa2lwIHRoZSBvcmlnaW5hbCBkZWxpbWl0ZXIgcm93Lgor ICAgICAgICAgICAgICAodW5sZXNzIChlcSB5IDEpCisgICAgICAgICAgICAgICAgOzsgQ29uZnVz ZWQgY2VsbHMgaGF2ZSBuaWwgdGV4dC4KKyAgICAgICAgICAgICAgICAobGV0ICgodGV4dCAob3Ig KGdldGhhc2ggKGNvbnMgeCB5KSBjZWxsLXRleHQpICIiKSkpCisgICAgICAgICAgICAgICAgICAo aW5zZXJ0ICJ8IiB0ZXh0KSkpKQorICAgICAgICAgICAgKGluc2VydCAifCIgIlxuIikpCisgICAg ICAgICAgKGxldCAoKHRlbXAtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKQorICAgICAgICAgICAg KHdpdGgtY3VycmVudC1idWZmZXIgc291cmNlLWJ1ZmZlcgorICAgICAgICAgICAgICAocmVwbGFj ZS1yZWdpb24tY29udGVudHMgYmVnIGVuZCB0ZW1wLWJ1ZmZlcikpKSkpKQorICAgICh3aGVuIChv ciAoZXEgbWFya2Rvd24tdHMtdGFibGUtYXV0by1hbGlnbiB0KQorICAgICAgICAgICAgICAobWVt cSAndHJhbnNwb3NlIG1hcmtkb3duLXRzLXRhYmxlLWF1dG8tYWxpZ24pKQorICAgICAgKG1hcmtk b3duLXRzLXRhYmxlLWFsaWduLXRhYmxlKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUt Y29udmVydC1jc3YtcmVnaW9uICggYmVnIGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhlYWRlci1saW5lIHJlcGxhY2UpCisgICJDb252ZXJ0IHRoZSBj b21tYS1zZXBhcmF0ZWQgcmVnaW9uIEJFRyB0byBFTkQgdG8gYSBNYXJrZG93biB0YWJsZS4KK0lm IEhFQURFUi1MSU5FIGlzIG5vbi1uaWwsIHVzZSB0aGUgZmlyc3QgbGluZSBvZiB0aGUgcmVnaW9u IGFzIHRoZSB0YWJsZQorY29sdW1uIGhlYWRlci4gIElmIG5pbCwgaW5mZXIgdGhlIG51bWJlciBv ZiBjb2x1bW5zIGFuZCBzeW50aGVzaXplCitjb2x1bW4gbmFtZXMgZnJvbSB0aGUgZmlyc3QgbGlu ZS4KKworTm90ZTogQm9keSBjb2x1bW5zIGJleW9uZCB0aGUgcHJvdmlkZWQgb3IgaW5mZXJyZWQg bnVtYmVyIG9mIGNvbHVtbnMgYXJlCitkcm9wcGVkLgorCitJZiBSRVBMQUNFIGlzIG5vbi1uaWws IG92ZXJ3cml0ZSB0aGUgcmVnaW9uIEJFRyBFTkQgd2l0aCB0aGUgTWFya2Rvd24KK3RhYmxlLCBv dGhlcndpc2UgaW5zZXJ0IHRoZSB0YWJsZSBhZnRlciBFTkQuCisKK1dpdGggYSBzaW5nbGUgcHJl Zml4IGFyZ3VtZW50LCBIRUFERVItTElORSBpcyBub24tbmlsLgorV2l0aCBhIGRvdWJsZSBwcmVm aXggYXJndW1lbnQsIFJFUExBQ0UgaXMgbm9uLW5pbC4KK1dpdGggYSB0cmlwbGUgcHJlZml4IGFy Z3VtZW50LCBib3RoIGFyZSBub24tbmlsLiIKKyAgKGludGVyYWN0aXZlICJSIikKKyAgKG1hcmtk b3duLXRzLXRhYmxlLWNvbnZlcnQtcmVnaW9uIGJlZyBlbmQgaGVhZGVyLWxpbmUgcmVwbGFjZSAn Y3N2KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWNvbnZlcnQtdHN2LXJlZ2lvbiAoIGJl ZyBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0 aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFk ZXItbGluZSByZXBsYWNlKQorICAiQ29udmVydCB0aGUgdGFiLXNlcGFyYXRlZCByZWdpb24gQkVH IHRvIEVORCB0byBhIE1hcmtkb3duIHRhYmxlLgorSWYgSEVBREVSLUxJTkUgaXMgbm9uLW5pbCwg dXNlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSByZWdpb24gYXMgdGhlIHRhYmxlCitjb2x1bW4gaGVh ZGVyLiAgSWYgbmlsLCBpbmZlciB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW5kIHN5bnRoZXNpemUK K2NvbHVtbiBuYW1lcyBmcm9tIHRoZSBmaXJzdCBsaW5lLgorCitOb3RlOiBCb2R5IGNvbHVtbnMg YmV5b25kIHRoZSBwcm92aWRlZCBvciBpbmZlcnJlZCBudW1iZXIgb2YgY29sdW1ucyBhcmUKK2Ry b3BwZWQuCisKK0lmIFJFUExBQ0UgaXMgbm9uLW5pbCwgb3ZlcndyaXRlIHRoZSByZWdpb24gQkVH IEVORCB3aXRoIHRoZSBNYXJrZG93bgordGFibGUsIG90aGVyd2lzZSBpbnNlcnQgdGhlIHRhYmxl IGFmdGVyIEVORC4KKworV2l0aCBhIHNpbmdsZSBwcmVmaXggYXJndW1lbnQsIEhFQURFUi1MSU5F IGlzIG5vbi1uaWwuCitXaXRoIGEgZG91YmxlIHByZWZpeCBhcmd1bWVudCwgUkVQTEFDRSBpcyBu b24tbmlsLgorV2l0aCBhIHRyaXBsZSBwcmVmaXggYXJndW1lbnQsIGJvdGggYXJlIG5vbi1uaWwu IgorICAoaW50ZXJhY3RpdmUgIlIiKQorICAobWFya2Rvd24tdHMtdGFibGUtY29udmVydC1yZWdp b24gYmVnIGVuZCBoZWFkZXItbGluZSByZXBsYWNlICd0c3YpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtdGFibGUtY29udmVydC1yZWdpb24gKCBiZWcgZW5kCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhlYWRlci1saW5lIHJlcGxhY2UgZm9ybWF0KQorICAiQ29udmVydCB0 aGUgY29tbWEtc2VwYXJhdGVkIHJlZ2lvbiBCRUcgdG8gRU5EIHRvIGEgTWFya2Rvd24gdGFibGUu CitJZiBIRUFERVItTElORSBpcyBub24tbmlsLCB1c2UgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHJl Z2lvbiBhcyB0aGUgdGFibGUKK2NvbHVtbiBoZWFkZXIuICBJZiBuaWwsIGluZmVyIHRoZSBudW1i ZXIgb2YgY29sdW1ucyBhbmQgc3ludGhlc2l6ZQorY29sdW1uIG5hbWVzIGZyb20gdGhlIGZpcnN0 IGxpbmUuCisKK05vdGU6IEJvZHkgY29sdW1ucyBiZXlvbmQgdGhlIHByb3ZpZGVkIG9yIGluZmVy cmVkIG51bWJlciBvZiBjb2x1bW5zIGFyZQorZHJvcHBlZC4KKworSWYgUkVQTEFDRSBpcyBub24t bmlsLCBvdmVyd3JpdGUgdGhlIHJlZ2lvbiBCRUcgRU5EIHdpdGggdGhlIE1hcmtkb3duCit0YWJs ZSwgb3RoZXJ3aXNlIGluc2VydCB0aGUgdGFibGUgYWZ0ZXIgRU5ELgorCitGT1JNQVQgaXMgb25l IG9mIHRoZSBzeW1ib2xzIGBjc3YnIGZvciBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzLCBvciBgdHN2 JworZm9yIHRhYi1zZXBhcmF0ZWQgdmFsdWVzLiAgSWYgYW55IG90aGVyIHZhbHVlLCB1c2UgYGNz dicuCisKK1dpdGggYSBzaW5nbGUgcHJlZml4IGFyZ3VtZW50LCBIRUFERVItTElORSBpcyBub24t bmlsLgorV2l0aCBhIGRvdWJsZSBwcmVmaXggYXJndW1lbnQsIFJFUExBQ0UgaXMgbm9uLW5pbC4K K1dpdGggYSB0cmlwbGUgcHJlZml4IGFyZ3VtZW50LCBib3RoIGFyZSBub24tbmlsLiIKKyAgKGlu dGVyYWN0aXZlICJSIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93 bi10cy10YWJsZS1jb252ZXJ0LXJlZ2lvbikKKworICAoY29uZCAoKGVxdWFsIGN1cnJlbnQtcHJl Zml4LWFyZyAnKDQpKQorICAgICAgICAgKHNldHEgaGVhZGVyLWxpbmUgdCkpCisgICAgICAgICgo ZXF1YWwgY3VycmVudC1wcmVmaXgtYXJnICcoMTYpKQorICAgICAgICAgKHNldHEgcmVwbGFjZSB0 KSkKKyAgICAgICAgKChlcXVhbCBjdXJyZW50LXByZWZpeC1hcmcgJyg2NCkpCisgICAgICAgICAo c2V0cSBoZWFkZXItbGluZSB0CisgICAgICAgICAgICAgICByZXBsYWNlIHQpKSkKKyAgKGxldCAo cm93cykKKyAgICAoc2F2ZS1yZXN0cmljdGlvbgorICAgICAgKG5hcnJvdy10by1yZWdpb24gYmVn IGVuZCkKKyAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAod2hpbGUgKDwgKHBv aW50KSAocG9pbnQtbWF4KSkKKyAgICAgICAgKHBjYXNlIGZvcm1hdAorICAgICAgICAgICgndHN2 CisgICAgICAgICAgICAgKHB1c2gKKyAgICAgICAgICAgICAgKHNwbGl0LXN0cmluZworICAgICAg ICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQpIChwb3MtZW9s KSkgIlx0IikKKyAgICAgICAgICAgICAgcm93cykpCisgICAgICAgICAgIChfCisgICAgICAgICAg ICAobGV0IChyb3cpCisgICAgICAgICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQKKyAg ICAgICAgICAgICAgICAgICAgICAiXCJcXCg/OlteXCJdXFx8XCJcIlxcKSpcIlxcfFteLF0rXFx8 XCJcIiIKKyAgICAgICAgICAgICAgICAgICAgICAocG9zLWVvbCkgdCkKKyAgICAgICAgICAgICAg ICAocHVzaAorICAgICAgICAgICAgICAgICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCisgICAg ICAgICAgICAgICAgICAiXCJcIiIgIlwiIgorICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVn ZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICAgICJcXGBcIlxcKFwuKlxcKVwiXFwnIgor ICAgICAgICAgICAgICAgICAgICJcXDEiCisgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZy1u by1wcm9wZXJ0aWVzIChtYXRjaC1zdHJpbmcgMCkpKSkKKyAgICAgICAgICAgICAgICAgcm93KSkK KyAgICAgICAgICAgICAgKHB1c2ggKG5yZXZlcnNlIHJvdykgcm93cykpKSkKKyAgICAgICAgKGZv cndhcmQtbGluZSAxKSkKKyAgICAgICAgKHNldHEgcm93cyAobnJldmVyc2Ugcm93cykpCisgICAg ICAgIChjb25kIChyZXBsYWNlIChkZWxldGUtcmVnaW9uIGJlZyBlbmQpKQorICAgICAgICAgICAg ICAodCAoZ290by1jaGFyIGVuZCkpKQorICAgICAgICAoaWYgaGVhZGVyLWxpbmUKKyAgICAgICAg ICAgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgKDEtIChsZW5ndGggcm93cykpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggKGNhciBy b3dzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBy b3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIHJv d3MpKQorICAgICAgICAgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgKGxlbmd0aCBy b3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCAo Y2FyIHJvd3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmls CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzKSkpKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZS1jc3YgKCZvcHRpb25hbCBkaXNw bGF5KQorICAiRXhwb3J0IHRoZSBNYXJrZG93biB0YWJsZSBhdCBwb2ludCB0byBjb21tYS1zZXBh cmF0ZWQgaW4gYSBidWZmZXIuCitJZiBESVNQTEFZIGlzIG5vbi1uaWwsIG9yIHdpdGggYSBwcmVm aXggYXJndW1lbnQsIGRpc3BsYXkgdGhlIGV4cG9ydAorYnVmZmVyIGFmdGVyIGV4cG9ydGluZy4K K0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZl ICJQIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZSBkaXNwbGF5ICdjc3YpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlLXRzdiAoJm9wdGlvbmFsIGRp c3BsYXkpCisgICJFeHBvcnQgdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBvaW50IHRvIHRhYi1zZXBh cmF0ZWQgaW4gYSBidWZmZXIuCitJZiBESVNQTEFZIGlzIG5vbi1uaWwsIG9yIHdpdGggYSBwcmVm aXggYXJndW1lbnQsIGRpc3BsYXkgdGhlIGV4cG9ydAorYnVmZmVyIGFmdGVyIGV4cG9ydGluZy4K K0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZl ICJQIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZSBkaXNwbGF5ICd0c3YpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlICgmb3B0aW9uYWwgZGlzcGxh eSBmb3JtYXQpCisgICJFeHBvcnQgdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBvaW50IHRvIENTViBp biBhIGJ1ZmZlci4KK0lmIERJU1BMQVkgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1 bWVudCwgZGlzcGxheSB0aGUgZXhwb3J0CitidWZmZXIgYWZ0ZXIgZXhwb3J0aW5nLgorRk9STUFU IGlzIG9uZSBvZiB0aGUgc3ltYm9scyBgY3N2JyBmb3IgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyBh a2EgQ1NWLAorb3IgYHRzdicgZm9yIHRhYi1zZXBhcmF0ZWQgdmFsdWVzIGFrYSBUU1YuICBJZiBh bnkgb3RoZXIgdmFsdWUsIHVzZQorYGNzdicuICBJZiBUU1YsIHJlcGxhY2UgYW55IHRhYnMgd2l0 aGluIGEgZmllbGQgd2l0aCBhIHNwYWNlLgorRG8gbm90IGV4cG9ydCB0aGUgdGFibGUncyBoZWFk ZXIgZGVsaW1pdGVyIHJvdy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5n LiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2Rl ICdtYXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUpCisgICh3aGVuLWxldCogKChhdC10YWJs ZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgICh0YWJsZSAo Y2RyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKHJvd3MgKHRyZWVzaXQtbm9kZS1jaGlsZHJl biB0YWJsZSAnbmFtZWQpKQorICAgICAgICAgICAgICAoaGVhZGVyICh0cmVlc2l0LXNlYXJjaC1z dWJ0cmVlIHRhYmxlICJcXGBwaXBlX3RhYmxlX2hlYWRlclxcJyIpKQorICAgICAgICAgICAgICAo ZGVsaW1pdGVyLXJvdyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFibGUgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAg ICAgICAgICAgICAoZXhwb3J0LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC1idWZmZXIpKSkKKyAg ICAod2l0aC1jdXJyZW50LWJ1ZmZlciBleHBvcnQtYnVmZmVyCisgICAgICAoc3BlY2lhbC1tb2Rl KQorICAgICAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQpKQorICAgICAgICAod2lkZW4pCisg ICAgICAgIChlcmFzZS1idWZmZXIpCisgICAgICAgIChkb2xpc3QgKHJvdyByb3dzKQorICAgICAg ICAgICh1bmxlc3MgKGVxdWFsIHJvdyBkZWxpbWl0ZXItcm93KQorICAgICAgICAgICAgKGxldCog KChlbHRzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpCisgICAgICAgICAgICAg ICAgICAgKGxlbiAobGVuZ3RoIGVsdHMpKSkKKyAgICAgICAgICAgICAgKGRvdGltZXMgKHggbGVu KQorICAgICAgICAgICAgICAgIChsZXQgKChzIChzdHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRl eHQgKG50aCB4IGVsdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnbm8tcHJvcGVydHkpKSkpCisgICAgICAgICAgICAgICAgICAocGNh c2UgZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICgndHN2CisgICAgICAgICAgICAgICAgICAg ICAoaW5zZXJ0IChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIlx0IiAiXHMiIHMpKQorICAgICAg ICAgICAgICAgICAgICAgKHdoZW4gKDwgeCAoMS0gbGVuKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgKGluc2VydCAiXHQiKSkpCisgICAgICAgICAgICAgICAgICAgIChfCisgICAgICAgICAgICAg ICAgICAgICAoaW5zZXJ0CisgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2gg IltcIixdIiBzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJcIiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY29uY2F0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdpZGVudGl0eSAoc3BsaXQtc3RyaW5nIHMgIlwiIikgIlwiXCIi KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiIpCisgICAgICAgICAgICAg ICAgICAgICAgICBzKSkKKyAgICAgICAgICAgICAgICAgICAgICh3aGVuICg8IHggKDEtIGxlbikp CisgICAgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgIiwiKSkpKSkpCisgICAgICAgICAgICAg IChpbnNlcnQgIlxuIikpKSkKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkpKQorICAg ICh3aGVuIGRpc3BsYXkKKyAgICAgIChkaXNwbGF5LWJ1ZmZlciBleHBvcnQtYnVmZmVyKSkpKQor Cis7OzsgSGVscGVyczoKKworKGRlZnVuIG1hcmtkb3duLXRzLS1vdXRsaW5lLWludmlzaWJsZS1w IChwb3MpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBQT1MgaXMgaW5zaWRlIGFuIG91dGxpbmUtZm9s ZGVkIHJlZ2lvbi4iCisgIChjbC1zb21lIChsYW1iZGEgKG92KSAoZXEgKG92ZXJsYXktZ2V0IG92 ICdpbnZpc2libGUpICdvdXRsaW5lKSkKKyAgICAgICAgICAgKG92ZXJsYXlzLWF0IHBvcykpKQog CiAoZGVmdW4gbWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdzICgpCiAgICJSZXR1cm4gcmFuZ2Ug c2V0dGluZ3MgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCi0gICh0cmVlc2l0LXJhbmdlLXJ1bGVz Ci0gICA6ZW1iZWQgJ21hcmtkb3duLWlubGluZQotICAgOmhvc3QgJ21hcmtkb3duCi0gICA6cmFu Z2UtZm4gIyd0cmVlc2l0LXJhbmdlLWZuLWV4Y2x1ZGUtY2hpbGRyZW4KLSAgICcoKGlubGluZSkg QG1hcmtkb3duLWlubGluZSkKLQotICAgOmVtYmVkICMnbWFya2Rvd24tdHMtLWNvbnZlcnQtY29k ZS1ibG9jay1sYW5ndWFnZQotICAgOmhvc3QgJ21hcmtkb3duCi0gICA6bG9jYWwgdAotICAgJygo ZmVuY2VkX2NvZGVfYmxvY2sgKGluZm9fc3RyaW5nIChsYW5ndWFnZSkgQGxhbmd1YWdlKQotICAg ICAgICAgICAgICAgICAgICAgICAgKGNvZGVfZmVuY2VfY29udGVudCkgQGNvbnRlbnQpKSkpCisg IChhcHBseQorICAgIyd0cmVlc2l0LXJhbmdlLXJ1bGVzCisgICBgKDplbWJlZCBtYXJrZG93bi1p bmxpbmUKKyAgICAgOmhvc3QgbWFya2Rvd24KKyAgICAgKChpbmxpbmUpIEBtYXJrZG93bi1pbmxp bmUpCisgICAgICxAKHdoZW4gbWFya2Rvd24tdHMtZm9udGlmeS1jb2RlLWJsb2Nrcy1uYXRpdmVs eQorICAgICAgICAgJyg6ZW1iZWQgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UK KyAgICAgICAgICAgOmhvc3QgbWFya2Rvd24KKyAgICAgICAgICAgOmxvY2FsIHQKKyAgICAgICAg ICAgKChmZW5jZWRfY29kZV9ibG9jayAoaW5mb19zdHJpbmcgKGxhbmd1YWdlKSBAbGFuZ3VhZ2Up CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvZGVfZmVuY2VfY29udGVudCkgQGNv bnRlbnQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlz ICgpCisgICJSZW1vdmUgYWxsIGlubGluZSBpbWFnZSBvdmVybGF5cyBmcm9tIHRoZSBjdXJyZW50 IGJ1ZmZlci4iCisgIChkb2xpc3QgKG92IChvdmVybGF5cy1pbiAocG9pbnQtbWluKSAocG9pbnQt bWF4KSkpCisgICAgKHdoZW4gKG92ZXJsYXktZ2V0IG92ICdtYXJrZG93bi10cy1pbWFnZSkKKyAg ICAgIChkZWxldGUtb3ZlcmxheSBvdikpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1vdXRsaW5l LXZpZXctY2hhbmdlICgpCisgICJVcGRhdGUgaW1hZ2Ugb3ZlcmxheXMgYWZ0ZXIgb3V0bGluZSBm b2xkL3VuZm9sZC4KK1JlbW92ZXMgaW1hZ2Ugb3ZlcmxheXMgaW4gZm9sZGVkIHJlZ2lvbnMgYW5k IHRyaWdnZXJzCityZWZvbnRpZmljYXRpb24gc28gdGhhdCBpbWFnZXMgaW4gdW5mb2xkZWQgcmVn aW9ucyBhcmUgcmVjcmVhdGVkLiIKKyAgKHdoZW4gbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcwor ICAgIChtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlzKQorICAgIChmb250LWxvY2st Zmx1c2gpKSkKIAogKGRlZnVuIG1hcmtkb3duLXRzLS1zZXQtaGlkZS1tYXJrdXAgKHZhbHVlKQog ICAiU2V0IGhpZGluZyBvZiBNYXJrZG93biBtYXJrdXAgZGVsaW1pdGVycyBpbiB0aGUgY3VycmVu dCBidWZmZXIuCkBAIC0zNDgsNiArNDU5Niw4IEBAIG1hcmtkb3duLXRzLS1zZXQtaGlkZS1tYXJr dXAKICAgKGlmIHZhbHVlCiAgICAgICAoYWRkLXRvLWludmlzaWJpbGl0eS1zcGVjICdtYXJrZG93 bi10cy0tbWFya3VwKQogICAgIChyZW1vdmUtZnJvbS1pbnZpc2liaWxpdHktc3BlYyAnbWFya2Rv d24tdHMtLW1hcmt1cCkpCisgICh3aGVuIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMKKyAgICAo bWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cykpCiAgIChmb250LWxvY2stZmx1c2gp KQogCiAoZGVmdW4gbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUtbWFya3VwICgpCkBAIC0zNTYsMTIy ICs0NjA2LDcyMSBAQCBtYXJrZG93bi10cy10b2dnbGUtaGlkZS1tYXJrdXAKICAgKHNldHEgbWFy a2Rvd24tdHMtaGlkZS1tYXJrdXAgKG5vdCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkpCiAgICht YXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwKSkKIAor KGRlZnVuIG1hcmtkb3duLXRzLS1zZXQtaW5saW5lLWltYWdlcyAodmFsdWUpCisgICJTZXQgZGlz cGxheSBvZiBpbmxpbmUgaW1hZ2VzIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4KK1ZBTFVFIG5vbi1u aWwgZGlzcGxheXMgaW1hZ2VzLCBuaWwgcmVtb3ZlcyB0aGVtLiIKKyAgKGlmIHZhbHVlCisgICAg ICAodHJlZXNpdC1mb250LWxvY2stcmVjb21wdXRlLWZlYXR1cmVzICcoaW1hZ2UtcHJldmlldykp CisgICAgKHRyZWVzaXQtZm9udC1sb2NrLXJlY29tcHV0ZS1mZWF0dXJlcyBuaWwgJyhpbWFnZS1w cmV2aWV3KSkpCisgIChtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlzKQorICAoZm9u dC1sb2NrLWZsdXNoKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRvZ2dsZS1pbmxpbmUtaW1hZ2Vz ICgpCisgICJUb2dnbGUgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGluIHRoZSBjdXJyZW50IGJ1 ZmZlci4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHNldHEgbWFya2Rvd24tdHMtaW5saW5lLWltYWdl cyAobm90IG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMpKQorICAobWFya2Rvd24tdHMtLXNldC1p bmxpbmUtaW1hZ2VzIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMpCisgIChtZXNzYWdlICJJbmxp bmUgaW1hZ2VzICVzIiAoaWYgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJlbmFibGVkIiAiZGlzYWJsZWQiKSkpCisKKzs7OyBFbXBo YXNpczoKKworKGRlZnZhciBtYXJrZG93bi10cy1lbXBoYXNpcy1hbGlzdAorICAnKCg/YiAuICIq KiIpCisgICAgKD9CIC4gIl9fIikKKyAgICAoP2kgLiAiKiIpCisgICAgKD9JIC4gIl8iKQorICAg ICg/cyAuICJ+fiIpCisgICAgKD9jIC4gImAiKQorICAgICg/YSAuICIqKioiKSkKKyAgIkFsaXN0 IG9mIGVtcGhhc2lzIG1hcmtlcnMgZm9yIGBtYXJrZG93bi10cy1lbXBoYXNpemUnLgorRWFjaCBl bnRyeSBpcyAoS0VZIC4gTUFSS0VSKSB3aGVyZSBLRVkgaXMgYSBjaGFyYWN0ZXIgKG5vdCBhIHN0 cmluZykgYW5kCitNQVJLRVIgaXMgdGhlIE1hcmtkb3duIGVtcGhhc2l6ZWQgdGV4dCBwcmVmaXgv c3VmZml4LiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZW1waGFzaXMtbm9kZS1hdC1wb2ludCAo KQorICAiUmV0dXJuIHRoZSBlbXBoYXNpcyBub2RlIGF0IHBvaW50LCBvciBuaWwuCitGaW5kcyB0 aGUgaW5uZXJtb3N0IGBlbXBoYXNpcycsIGBzdHJvbmdfZW1waGFzaXMnLAorYHN0cmlrZXRocm91 Z2gnLCBvciBgY29kZV9zcGFuJyBub2RlLiIKKyAgKHdoZW4tbGV0KiAoKG5vZGUgKHRyZWVzaXQt bm9kZS1hdCAocG9pbnQpICdtYXJrZG93bi1pbmxpbmUpKSkKKyAgICAodHJlZXNpdC1wYXJlbnQt dW50aWwKKyAgICAgbm9kZSAobGFtYmRhIChuKQorICAgICAgICAgICAgKG1lbWJlciAodHJlZXNp dC1ub2RlLXR5cGUgbikKKyAgICAgICAgICAgICAgICAgICAgJygiZW1waGFzaXMiICJzdHJvbmdf ZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgInN0cmlrZXRocm91Z2giICJjb2RlX3Nw YW4iKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMgKCkKKyAgIlJl bW92ZSBlbXBoYXNpcyBhcm91bmQgcG9pbnQgb3IgcmVnaW9uLgorV2l0aCBhbiBhY3RpdmUgcmVn aW9uLCBzdHJpcCB0aGUgb3V0ZXJtb3N0IGVtcGhhc2lzIG1hcmtlcnMgZnJvbQordGhlIHNlbGVj dGVkIHRleHQuICBXaXRob3V0IGEgcmVnaW9uLCBmaW5kIHRoZSBlbXBoYXNpcyBub2RlIGF0Citw b2ludCB1c2luZyB0cmVlLXNpdHRlciBhbmQgcmVtb3ZlIGl0cyBtYXJrZXJzLiIKKyAgKGludGVy YWN0aXZlKQorICAoaWYgKHVzZS1yZWdpb24tcCkKKyAgICAgIChsZXQqICgoYmVnIChyZWdpb24t YmVnaW5uaW5nKSkKKyAgICAgICAgICAgICAoZW5kIChyZWdpb24tZW5kKSkKKyAgICAgICAgICAg ICAodGV4dCAoYnVmZmVyLXN1YnN0cmluZyBiZWcgZW5kKSkKKyAgICAgICAgICAgICAoc3RyaXBw ZWQgbmlsKSkKKyAgICAgICAgKGNsLWxvb3AgZm9yIChfa2V5IC4gbSkgaW4gKHNvcnQgKGNvcHkt c2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtk b3duLXRzLWVtcGhhc2lzLWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhIChhIGIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKD4gKGxlbmd0aCAoY2RyIGEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsZW5ndGggKGNkciBiKSkpKSkKKyAgICAgICAgICAgICAgICAg Zm9yIHJlID0gKGNvbmNhdCAiXFxgIiAocmVnZXhwLXF1b3RlIG0pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlxcKFxcKD86LlxcfFxuXFwpKlxcKSIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAocmVnZXhwLXF1b3RlIG0pICJcXCciKQorICAgICAgICAgICAg ICAgICB3aGVuIChzdHJpbmctbWF0Y2ggcmUgdGV4dCkKKyAgICAgICAgICAgICAgICAgZG8gKHNl dHEgc3RyaXBwZWQgKG1hdGNoLXN0cmluZyAxIHRleHQpKQorICAgICAgICAgICAgICAgICBhbmQg cmV0dXJuIG5pbCkKKyAgICAgICAgKHdoZW4gc3RyaXBwZWQKKyAgICAgICAgICAoZGVsZXRlLXJl Z2lvbiBiZWcgZW5kKQorICAgICAgICAgIChpbnNlcnQgc3RyaXBwZWQpKSkKKyAgICA7OyBGaW5k IHRoZSBvdXRlcm1vc3QgZW1waGFzaXMgbm9kZSBhdCBwb2ludC4KKyAgICAod2hlbi1sZXQqICgo aW5uZXIgKG1hcmtkb3duLXRzLS1lbXBoYXNpcy1ub2RlLWF0LXBvaW50KSkKKyAgICAgICAgICAg ICAgICAobm9kZSAobGV0ICgobiBpbm5lcikpCisgICAgICAgICAgICAgICAgICAgICAgICAod2hp bGUgKGxldCAoKHBhcmVudCAodHJlZXNpdC1ub2RlLXBhcmVudCBuKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIHBhcmVudAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtYmVyICh0cmVlc2l0LW5vZGUtdHlwZSBwYXJl bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JygiZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAic3Ryb25nX2VtcGhhc2lzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmlrZXRocm91Z2giCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29kZV9zcGFuIikpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBuIHBhcmVudCkpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIG4pKQorICAgICAgICAgICAgICAgIChzdGFydCAodHJlZXNp dC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAgIChlbmQgKHRyZWVzaXQtbm9kZS1l bmQgbm9kZSkpCisgICAgICAgICAgICAgICAgKHRleHQgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUg dCkpCisgICAgICAgICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAg ICAgICAgICAgICAgIChtbGVuIChwY2FzZSB0eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAo InN0cm9uZ19lbXBoYXNpcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1w cmVmaXgtcCAiXyIgdGV4dCkgMiAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICgiZW1waGFz aXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctcHJlZml4LXAgIl8iIHRl eHQpIDEgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoInN0cmlrZXRocm91Z2giIDIpCisg ICAgICAgICAgICAgICAgICAgICAgICAoImNvZGVfc3BhbiIgMSkpKQorICAgICAgICAgICAgICAg IChpbm5lci10ZXh0IChzdWJzdHJpbmcgdGV4dCBtbGVuICgtIChsZW5ndGggdGV4dCkgbWxlbikp KSkKKyAgICAgIChsZXQgKChvZmZzZXQgKC0gKHBvaW50KSBzdGFydCBtbGVuKSkpCisgICAgICAg IChkZWxldGUtcmVnaW9uIHN0YXJ0IGVuZCkKKyAgICAgICAgKGdvdG8tY2hhciBzdGFydCkKKyAg ICAgICAgKGluc2VydCBpbm5lci10ZXh0KQorICAgICAgICAoZ290by1jaGFyICgrIHN0YXJ0ICht YXggMCBvZmZzZXQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1lbXBoYXNpemUgKCZvcHRp b25hbCBjaGFyKQorICAiSW5zZXJ0IG9yIGNoYW5nZSBlbXBoYXNpcyBvbiB0ZXh0LgorSWYgdGhl cmUgaXMgYW4gYWN0aXZlIHJlZ2lvbiwgd3JhcCBpdCB3aXRoIGVtcGhhc2lzIG1hcmtlcnMuCitJ ZiB0aGVyZSBpcyBubyByZWdpb24sIGluc2VydCBtYXJrZXIgcGFpcnMgYW5kIHBsYWNlIHBvaW50 IGJldHdlZW4KK3RoZW0uICBDSEFSIHNlbGVjdHMgdGhlIGVtcGhhc2lzIHR5cGU6CisKKyAgYiAg ICoqYm9sZCoqICAgICAgIEIgIF9fYm9sZF9fCisgIGkgICAqaXRhbGljKiAgICAgICBJICBfaXRh bGljXworICBhICAgKioqYm9sZCtpdGFsaWMqKioKKyAgcyAgIH5+c3RyaWtldGhyb3VnaH5+Cisg IGMgICBgY29kZWAKKyAgU1BDIHJlbW92ZSBlbXBoYXNpcyBhdCBwb2ludCBvciByZWdpb24iCisg IChpbnRlcmFjdGl2ZQorICAgImNFbXBoYXNpcyBbYl1vbGQgW0Jdb2xkXyBbaV10YWxpYyBbSV10 YWxpY18gW2FdbGwgW3NddHJpa2UgW2Ndb2RlIFNQQyByZW1vdmU6IikKKyAgKGlmIChlcSBjaGFy ID9ccykKKyAgICAgIChtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMpCisgICAgKGlmLWxldCog KChtYXJrZXIgKGNkciAoYXNzcSBjaGFyIG1hcmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0KSkpKQor ICAgICAgICAoaWYgKHVzZS1yZWdpb24tcCkKKyAgICAgICAgICAgIChsZXQgKChiZWcgKHJlZ2lv bi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgICAgICAgKGVuZCAoY29weS1tYXJrZXIgKHJlZ2lv bi1lbmQpKSkpCisgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAg IChnb3RvLWNoYXIgZW5kKQorICAgICAgICAgICAgICAgIChpbnNlcnQgbWFya2VyKQorICAgICAg ICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgICAgICAgIChpbnNlcnQgbWFya2Vy KSkpCisgICAgICAgICAgKGlmLWxldCogKChib3VuZHMgKGJvdW5kcy1vZi10aGluZy1hdC1wb2lu dCAnd29yZCkpKQorICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChjZHIgYm91bmRzKSkKKyAgICAgICAgICAgICAgICAoaW5zZXJ0IG1hcmtl cikKKyAgICAgICAgICAgICAgICAoZ290by1jaGFyIChjYXIgYm91bmRzKSkKKyAgICAgICAgICAg ICAgICAoaW5zZXJ0IG1hcmtlcikpCisgICAgICAgICAgICAoaW5zZXJ0IG1hcmtlciBtYXJrZXIp CisgICAgICAgICAgICAoYmFja3dhcmQtY2hhciAobGVuZ3RoIG1hcmtlcikpKSkKKyAgICAgICh1 c2VyLWVycm9yICJObyBzdWNoIGVtcGhhc2lzIG1hcmtlcjogJWMiIGNoYXIpKSkpCisKKzs7OyBC bG9jayBzdHJ1Y3R1cmU6CisKKyhkZWZ1biBtYXJrZG93bi10cy1pbnNlcnQtc3RydWN0dXJlICgm b3B0aW9uYWwgY2hhcikKKyAgIkluc2VydCBhIGJsb2NrIHN0cnVjdHVyZS4KK0lmIHRoZXJlIGlz IGFuIGFjdGl2ZSByZWdpb24sIHdyYXAgaXQuICBPdGhlcndpc2UsIGluc2VydCBhbiBlbXB0eQor YmxvY2sgYW5kIHBsYWNlIHBvaW50IGluc2lkZS4gIENIQVIgc2VsZWN0cyB0aGUgc3RydWN0dXJl IHR5cGU6CisKKyAgYCAgZmVuY2VkIGNvZGUgYmxvY2sgKGBgYCkKKyAgfiAgdGlsZGUgZmVuY2Vk IGNvZGUgYmxvY2sgKH5+fikKKyAgcSAgYmxvY2sgcXVvdGUgKD4gKQorICBkICBob3Jpem9udGFs IGRpdmlkZXIvcnVsZSAoLS0tKQorICB0ICB0YWJsZSIKKyAgKGludGVyYWN0aXZlCisgICAiY1N0 cnVjdHVyZSBbYF1iYWNrLXRpY2sgY29kZSBibG9jayBbfl10aWxkZSBjb2RlIGJsb2NrIFtxXXVv dGUgW2RdaXZpZGVyIFt0XWFibGU6IikKKyAgKHBjYXNlIGNoYXIKKyAgICAoP2AgKG1hcmtkb3du LXRzLS1pbnNlcnQtY29kZS1ibG9jayA/YCkpCisgICAgKD9+IChtYXJrZG93bi10cy0taW5zZXJ0 LWNvZGUtYmxvY2sgP34pKQorICAgICg/cSAobWFya2Rvd24tdHMtLWluc2VydC1ibG9jay1xdW90 ZSkpCisgICAgKD9kIChtYXJrZG93bi10cy0taW5zZXJ0LWRpdmlkZXIpKQorICAgICg/dCAobWFy a2Rvd24tdHMtdGFibGUtaW5zZXJ0LXRhYmxlKSkKKyAgICAoXyAodXNlci1lcnJvciAiTm8gc3Vj aCBzdHJ1Y3R1cmU6ICVjIiBjaGFyKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWluc2VydC1j b2RlLWJsb2NrIChjaGFyICZvcHRpb25hbCBsYW5ndWFnZSkKKyAgIkluc2VydCBhIGZlbmNlZCBj b2RlIGJsb2NrIHVzaW5nIGEgQ0hBUiBzZXF1ZW5jZS4KK0NIQVIgc2hvdWxkIGJlIG9uZSBvZiBh IGJhY2t0aWNrIG9yIGEgdGlsZGUuCitMQU5HVUFHRSBpcyBhIHdoaXRlc3BhY2UgZnJlZSBsYW5n dWFnZSBzdHJpbmcuIgorICAoc2V0cSBsYW5ndWFnZQorICAgICAgICAob3IgbGFuZ3VhZ2UKKyAg ICAgICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAiW1s6Ymxh bms6XV0iICIiCisgICAgICAgICAgICAgKGxldCAoKGNvbXBsZXRpb24taWdub3JlLWNhc2Ugbmls KQorICAgICAgICAgICAgICAgICAgIChjYW5kaWRhdGVzCisgICAgICAgICAgICAgICAgICAgIChz ZXEtbWFwCisgICAgICAgICAgICAgICAgICAgICAjJ3N5bWJvbC1uYW1lCisgICAgICAgICAgICAg ICAgICAgICAoc2VxLXVuaXEKKyAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIChtYXBjYXIg IydjYXIgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2VzKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG1hcGNhciAjJ2NhciBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24t dHMtbW9kZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyICMnY2FyIG1h cmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMpKSkpKSkKKyAgICAgICAgICAgICAgIChjb21wbGV0 aW5nLXJlYWQKKyAgICAgICAgICAgICAgICAiQ29kZSBibG9jayBsYW5ndWFnZTogIgorICAgICAg ICAgICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAg ICAnY29uZmlybSA7IFByb21wdCBpZiB0aGUgbGFuZ3VhZ2UgaXMgbm90IG9uIG91ciBsaXN0Lgor ICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1sYW5ndWFn ZS1oaXN0b3J5KSkpKSkKKyAgKGxldCAoKGZlbmNlLXN0cmluZyAobWFrZS1zdHJpbmcgMyBjaGFy KSkpCisgICAgKGlmICh1c2UtcmVnaW9uLXApCisgICAgICAgIChsZXQgKChiZWcgKHJlZ2lvbi1i ZWdpbm5pbmcpKQorICAgICAgICAgICAgICAoZW5kIChyZWdpb24tZW5kKSkpCisgICAgICAgICAg KHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAoZ290by1jaGFyIGVuZCkKKyAgICAgICAgICAg ICh1bmxlc3MgKGJvbHApIChpbnNlcnQgIlxuIikpCisgICAgICAgICAgICAoaW5zZXJ0IGZlbmNl LXN0cmluZyAiXG4iKQorICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAgICAgICAo aW5zZXJ0IGZlbmNlLXN0cmluZyBsYW5ndWFnZSAiXG4iKSkpCisgICAgICAoaW5zZXJ0IGZlbmNl LXN0cmluZyBsYW5ndWFnZSAiXG5cbiIgZmVuY2Utc3RyaW5nKQorICAgICAgKGZvcndhcmQtbGlu ZSAtMSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbnNlcnQtYmxvY2stcXVvdGUgKCkKKyAg Ikluc2VydCBhIGJsb2NrIHF1b3RlLiIKKyAgKGlmICh1c2UtcmVnaW9uLXApCisgICAgICAobGV0 ICgoYmVnIChyZWdpb24tYmVnaW5uaW5nKSkKKyAgICAgICAgICAgIChlbmQgKGNvcHktbWFya2Vy IChyZWdpb24tZW5kKSkpKQorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAoZ290 by1jaGFyIGJlZykKKyAgICAgICAgICAod2hpbGUgKDwgKHBvaW50KSBlbmQpCisgICAgICAgICAg ICAoaW5zZXJ0ICI+ICIpCisgICAgICAgICAgICAoZm9yd2FyZC1saW5lIDEpKSkpCisgICAgKGlu c2VydCAiPiAiKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW5zZXJ0LWRpdmlkZXIgKCkKKyAg Ikluc2VydCBhIGhvcml6b250YWwgcnVsZS4iCisgICh1bmxlc3MgKGJvbHApIChpbnNlcnQgIlxu IikpCisgIChpbnNlcnQgIlxuLS0tXG5cbiIpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWFwcGx5 LWVsbGlwc2lzICgpCisgICJBcHBseSBgbWFya2Rvd24tdHMtZWxsaXBzaXMnIHRvIHRoZSBjdXJy ZW50IGJ1ZmZlcidzIGRpc3BsYXkgdGFibGUuIgorICAoaWYgKGFuZCAoc3RyaW5ncCBtYXJrZG93 bi10cy1lbGxpcHNpcykKKyAgICAgICAgICAgKG5vdCAoc3RyaW5nLWVtcHR5LXAgbWFya2Rvd24t dHMtZWxsaXBzaXMpKSkKKyAgICAgIChsZXQgKCh0YWJsZSAob3IgYnVmZmVyLWRpc3BsYXktdGFi bGUKKyAgICAgICAgICAgICAgICAgICAgICAgKG1ha2UtZGlzcGxheS10YWJsZSkpKSkKKyAgICAg ICAgKHNldC1kaXNwbGF5LXRhYmxlLXNsb3QKKyAgICAgICAgIHRhYmxlIDQKKyAgICAgICAgICh2 Y29uY2F0IChtYXBjYXIgKGxhbWJkYSAoYykgKG1ha2UtZ2x5cGgtY29kZSBjICdzaGFkb3cpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1lbGxpcHNpcykpKQorICAgICAg ICAoc2V0cSBidWZmZXItZGlzcGxheS10YWJsZSB0YWJsZSkpCisgICAgKHdoZW4gYnVmZmVyLWRp c3BsYXktdGFibGUKKyAgICAgIChzZXQtZGlzcGxheS10YWJsZS1zbG90IGJ1ZmZlci1kaXNwbGF5 LXRhYmxlIDQgbmlsKSkpKQorCis7OzsgTWFqb3IgbW9kZToKKworKGRlZnVuIG1hcmtkb3duLXRz LW91dGxpbmUtY3ljbGUgKCkKKyAgIkN5Y2xlIHZpc2liaWxpdHkgb2YgdGhlIGhlYWRpbmcgYXQg cG9pbnQuCitPbiBhIGhlYWRpbmcsIGNhbGwgYG91dGxpbmUtY3ljbGUnLiAgT3RoZXJ3aXNlIGRv IG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgICh3aGVuIChvdXRsaW5lLW9uLWhlYWRpbmct cCkKKyAgICAob3V0bGluZS1jeWNsZSkpKQorCisoZGVmdmFyLWtleW1hcCBtYXJrZG93bi10cy1t b2RlLW1hcAorICA6ZG9jICJLZXltYXAgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCisgICJNLTxs ZWZ0PiIgICAgIydtYXJrZG93bi10cy1wcm9tb3RlCisgICJNLTxyaWdodD4iICAgIydtYXJrZG93 bi10cy1kZW1vdGUKKyAgIk0tPHVwPiIgICAgICAjJ21hcmtkb3duLXRzLW1vdmUtc3VidHJlZS11 cAorICAiTS08ZG93bj4iICAgICMnbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLWRvd24KKyAgIkMt YyBDLW4iICAgICAjJ291dGxpbmUtbmV4dC1oZWFkaW5nCisgICJDLWMgQy1wIiAgICAgIydvdXRs aW5lLXByZXZpb3VzLWhlYWRpbmcKKyAgIkMtYyBDLXUiICAgICAjJ291dGxpbmUtdXAtaGVhZGlu ZworICAiQy1jIEMtZiIgICAgICMnb3V0bGluZS1mb3J3YXJkLXNhbWUtbGV2ZWwKKyAgIkMtYyBD LWIiICAgICAjJ291dGxpbmUtYmFja3dhcmQtc2FtZS1sZXZlbAorICAiQy1jIEMteCBDLWYiICMn bWFya2Rvd24tdHMtZW1waGFzaXplCisgICJDLWMgQy14IEMtbSIgIydtYXJrZG93bi10cy10b2dn bGUtaGlkZS1tYXJrdXAKKyAgIkMtYyBDLXggQy12IiAjJ21hcmtkb3duLXRzLXRvZ2dsZS1pbmxp bmUtaW1hZ2VzCisgICJDLWMgQy1jIiAgICAgIydtYXJrZG93bi10cy10b2dnbGUtY2hlY2tib3gK KyAgIkMtYyBDLXIiICAgICAjJ21hcmtkb3duLXRzLXJlbnVtYmVyLWxpc3QKKyAgIkMtYyBDLSwi ICAgICAjJ21hcmtkb3duLXRzLWluc2VydC1zdHJ1Y3R1cmUKKyAgIkMtYyBDLXYgbiIgICAjJ21h cmtkb3duLXRzLW1vdmUtdG8tbmV4dC1jb2RlLWJsb2NrCisgICJDLWMgQy12IHAiICAgIydtYXJr ZG93bi10cy1tb3ZlLXRvLXByZXZpb3VzLWNvZGUtYmxvY2sKKyAgIlJFVCIgICAgICAgICAjJ21h cmtkb3duLXRzLW5ld2xpbmUKKyAgIk0tUkVUIiAgICAgICAjJ21hcmtkb3duLXRzLWluc2VydC1s aXN0LWl0ZW0KKyAgIlRBQiIgICAgICAgICAjJ21hcmtkb3duLXRzLW91dGxpbmUtY3ljbGUpCisK KyhkZWZ2YXIta2V5bWFwIG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW1h cAorICA6ZG9jICJLZXltYXAgZm9yIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQt bW9kZScuCitUaGVzZSBvdmVycmlkZSBrZXlzIGluIGBtYXJrZG93bi10cy1tb2RlLW1hcCcgdG8g c3VwcG9ydCBleGVjdXRpbmcgdGhlaXIKK2NvbW1hbmRzIGluIGEgY29kZS1ibG9jayBjb250ZXh0 LiIKKyAgOnBhcmVudCBtYXJrZG93bi10cy1tb2RlLW1hcAorICA6bWVudSBuaWwKKyAgIk0tLiIg ICAgICAgICAjJ21hcmtkb3duLXRzLS1jb2RlLWJsb2NrLXhyZWYtZmluZC1kZWZpbml0aW9ucwor ICAiVEFCIiAgICAgICAgICMnaW5kZW50LWZvci10YWItY29tbWFuZAorICAiUkVUIiAgICAgICAg ICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiQy1qIiAgICAgICAgICMnbWFy a2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiTS1SRVQiICAgICAgICMnbWFya2Rvd24t dHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiTS1xIiAgICAgICAgICMnbWFya2Rvd24tdHMtLWNv ZGUtYmxvY2stZmlsbC1wYXJhZ3JhcGgpCisKKyhkZWZ2YXIta2V5bWFwIG1hcmtkb3duLXRzLWlu LXRhYmxlLW1vZGUtbWFwCisgIDpkb2MgIktleW1hcCBmb3IgYG1hcmtkb3duLXRzLWluLXRhYmxl LW1vZGUnLgorVGhlc2Ugb3ZlcnJpZGUga2V5cyBpbiBgbWFya2Rvd24tdHMtbW9kZS1tYXAnIHRv IHN1cHBvcnQgZXhlY3V0aW5nIHRoZWlyCitjb21tYW5kcyBpbiBhIHRhYmxlIGNvbnRleHQuIgor ICA6cGFyZW50IG1hcmtkb3duLXRzLW1vZGUtbWFwCisgIDptZW51IG5pbAorICAiPHJldHVybj4i ICAgICMnbWFya2Rvd24tdHMtdGFibGUtbmV4dC1yb3cKKyAgIlMtPHJldHVybj4iICAjJ21hcmtk b3duLXRzLXRhYmxlLXByZXZpb3VzLXJvdworICAiPHRhYj4iICAgICAgICMnbWFya2Rvd24tdHMt dGFibGUtbmV4dC1jZWxsCisgICI8YmFja3RhYj4iICAgIydtYXJrZG93bi10cy10YWJsZS1wcmV2 aW91cy1jZWxsCisgICJNLTx1cD4iICAgICAgIydtYXJrZG93bi10cy10YWJsZS1tb3ZlLXJvdy11 cAorICAiTS08ZG93bj4iICAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3ctZG93bgorICAi TS08bGVmdD4iICAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tbGVmdAorICAiTS08 cmlnaHQ+IiAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tcmlnaHQKKyAgIk0tUy08 dXA+IiAgICAjJ21hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYWJvdmUKKyAgIk0tUy08ZG93 bj4iICAjJ21hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1yb3cKKyAgIk0tUy08cmlnaHQ+IiAjJ21h cmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tbGVmdAorICAiTS1TLTxsZWZ0PiIgICMnbWFy a2Rvd24tdHMtdGFibGUtZGVsZXRlLWNvbHVtbgorICAiQy1jIEMtdCBhIiAgICMnbWFya2Rvd24t dHMtdGFibGUtYWxpZ24tY29sdW1uCisgICJDLWMgQy1jIiAgICAgIydtYXJrZG93bi10cy10YWJs ZS1hbGlnbi10YWJsZQorICAiQy1jIEMtdCB0IiAgICMnbWFya2Rvd24tdHMtdGFibGUtdHJhbnNw b3NlLXRhYmxlKQorCisoZWFzeS1tZW51LWRlZmluZSBtYXJrZG93bi10cy1tb2RlLW1lbnUgbWFy a2Rvd24tdHMtbW9kZS1tYXAKKyAgImBtYXJrZG93bi10cy1tb2RlJyBtZW51LiIKKyAgJygiTWFy a2Rvd24iIDp2aXNpYmxlIG1hcmtkb3duLXRzLW1lbnUtYmFyLXNob3cKKyAgICAiLS0iCisgICAg WyJDeWNsZSBPdXRsaW5lIFZpc2liaWxpdHkiICBtYXJrZG93bi10cy1vdXRsaW5lLWN5Y2xlICAg ICAgICAgICAgICA6aGVscCAiQ3ljbGUgaGVhZGluZyB2aXNpYmlsaXR5IGZyb20gcG9pbnQiXQor ICAgIFsiVG9nZ2xlIEhpZGUgTWFya3VwIiAgICAgICAgbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUt bWFya3VwICAgICAgICAgOmhlbHAgIlRvZ2dsZSBkaXNwbGF5IG9mIG1hcmt1cCBjaGFyYWN0ZXJz IiA6c3R5bGUgdG9nZ2xlIDpzZWxlY3RlZCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cF0KKyAgICBb IlRvZ2dsZSBJbmxpbmUgSW1hZ2VzIiAgICAgIG1hcmtkb3duLXRzLXRvZ2dsZS1pbmxpbmUtaW1h Z2VzICAgICAgIDpoZWxwICJUb2dnbGUgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGJlbG93IGxp bmtzIiA6c3R5bGUgdG9nZ2xlIDpzZWxlY3RlZCBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzXQor ICAgICItLSIKKyAgICBbIlVwIiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmUtdXAtaGVh ZGluZyAgICAgICAgICAgICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwYXJlbnQgaGVhZGlu ZyJdCisgICAgWyJOZXh0IiAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lLW5leHQtaGVhZGlu ZyAgICAgICAgICAgICAgICAgICA6aGVscCAiTW92ZSB0byB0aGUgbmV4dCBoZWFkaW5nIl0KKyAg ICBbIlByZXZpb3VzIiAgICAgICAgICAgICAgICAgIG91dGxpbmUtcHJldmlvdXMtaGVhZGluZyAg ICAgICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwcmV2aW91cyBoZWFkaW5nIl0KKyAgICBb Ik5leHQgU2FtZSBMZXZlbCIgICAgICAgICAgIG91dGxpbmUtZm9yd2FyZC1zYW1lLWxldmVsICAg ICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBuZXh0IGhlYWRpbmcgYXQgdGhlIHNhbWUgbGV2 ZWwiXQorICAgIFsiUHJldmlvdXMgU2FtZSBMZXZlbCIgICAgICAgb3V0bGluZS1iYWNrd2FyZC1z YW1lLWxldmVsICAgICAgICAgICAgOmhlbHAgIk1vdmUgdG8gdGhlIHByZXZpb3VzIGhlYWRpbmcg YXQgdGhlIHNhbWUgbGV2ZWwiXQorICAgICItLSIKKyAgICBbIkp1bXAiICAgICAgICAgICAgICAg ICAgICAgIGltZW51ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpoZWxwICJKdW1w IHRvIGEgaGVhZGluZyB2aWEgY29tcGxldGlvbiJdCisgICAgIi0tIgorICAgIFsiTW92ZSBTdWJ0 cmVlIFVwIiAgICAgICAgICAgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLXVwICAgICAgICAgICAg OmhlbHAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gdXAiXQorICAgIFsi TW92ZSBTdWJ0cmVlIERvd24iICAgICAgICAgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLWRvd24g ICAgICAgICAgOmhlbHAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gZG93 biJdCisgICAgWyJQcm9tb3RlIiAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1wcm9tb3Rl ICAgICAgICAgICAgICAgICAgICA6aGVscCAiUHJvbW90ZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSJd CisgICAgWyJEZW1vdGUiICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1kZW1vdGUgICAg ICAgICAgICAgICAgICAgICA6aGVscCAiRGVtb3RlIGhlYWRpbmcgb3IgbGlzdCBpdGVtIl0KKyAg ICAiLS0iCisgICAgWyJFbXBoYXNpcy4uLiIgICAgICAgICAgICAgICBtYXJrZG93bi10cy1lbXBo YXNpemUgICAgICAgICAgICAgICAgICA6aGVscCAiQWRkIG9yIGNoYW5nZSBlbXBoYXNpcyBvbiBy ZWdpb24iXQorICAgIFsiQWRkIEJsb2NrIFN0cnVjdHVyZSIgICAgICAgbWFya2Rvd24tdHMtaW5z ZXJ0LXN0cnVjdHVyZSAgICAgICAgICAgOmhlbHAgIkluc2VydCBhIGNvZGUgYmxvY2ssIHF1b3Rl LCBvciBvdGhlciBzdHJ1Y3R1cmUiXQorICAgICItLSIKKyAgICBbIlRvZ2dsZSBDaGVja2JveCIg ICAgICAgICAgIG1hcmtkb3duLXRzLXRvZ2dsZS1jaGVja2JveCAgICAgICAgICAgIDpoZWxwICJU b2dnbGUgdGFzayBsaXN0IGNoZWNrYm94IGF0IHBvaW50Il0KKyAgICBbIk5ldyBMaXN0IEl0ZW0i ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0gICAgICAgICAgIDpoZWxw ICJJbnNlcnQgYSBuZXcgbGlzdCBpdGVtIGFmdGVyIHRoZSBjdXJyZW50IG9uZSJdCisgICAgWyJS ZW51bWJlciBMaXN0IiAgICAgICAgICAgICBtYXJrZG93bi10cy1yZW51bWJlci1saXN0ICAgICAg ICAgICAgICA6aGVscCAiUmVudW1iZXIgdGhlIG9yZGVyZWQgbGlzdCBhdCBwb2ludCJdCisgICAg Ii0tIgorICAgICgiVGFibGUiCisgICAgIFsiSW5zZXJ0IHRhYmxlIiAgICAgICAgICAgICBtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgICAgICAgICA6aGVscCAiSW5zZXJ0IGFuIGVtcHR5 IHRhYmxlIGF0IHBvaW50Il0KKyAgICAgWyJEZWxldGUgdGFibGUiICAgICAgICAgICAgIG1hcmtk b3duLXRzLXRhYmxlLWRlbGV0ZS10YWJsZSAgICAgICAgIDpoZWxwICJEZWxldGUgdGhlIHRhYmxl IGF0IHBvaW50Il0KKyAgICAgIi0tIgorICAgICBbIk5leHQgY2VsbCIgICAgICAgICAgICAgICAg bWFya2Rvd24tdHMtdGFibGUtbmV4dC1jZWxsICAgICAgICAgICAgOmhlbHAgIk1vdmUgcG9pbnQg dG8gdGhlIG5leHQgY2VsbCJdCisgICAgIFsiUHJldmlvdXMgY2VsbCIgICAgICAgICAgICBtYXJr ZG93bi10cy10YWJsZS1wcmV2aW91cy1jZWxsICAgICAgICA6aGVscCAiTW92ZSBwb2ludCB0byB0 aGUgcHJldmlvdXMgY2VsbCJdCisgICAgICItLSIKKyAgICAgWyJOZXh0IHJvdyIgICAgICAgICAg ICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93ICAgICAgICAgICAgIDpoZWxwICJNb3Zl IHBvaW50IHRvIHRoZSBuZXh0IHJvdyJdCisgICAgIFsiUHJldmlvdXMgcm93IiAgICAgICAgICAg ICBtYXJrZG93bi10cy10YWJsZS1wcmV2aW91cy1yb3cgICAgICAgICA6aGVscCAiTW92ZSBwb2lu dCB0byB0aGUgcHJldmlvdXMgcm93Il0KKyAgICAgWyJJbnNlcnQgcm93IGJlbG93IiAgICAgICAg IG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYmVsb3cgICAgIDpoZWxwICJJbnNlcnQgYW4g ZW1wdHkgcm93IGJlbG93IHBvaW50Il0KKyAgICAgWyJJbnNlcnQgcm93IGFib3ZlIiAgICAgICAg IG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYWJvdmUgICAgIDpoZWxwICJJbnNlcnQgYW4g ZW1wdHkgcm93IGFib3ZlIHBvaW50Il0KKyAgICAgWyJDbG9uZSByb3cgYmVsb3ciICAgICAgICAg IG1hcmtkb3duLXRzLXRhYmxlLWNsb25lLXJvdy1iZWxvdyAgICAgIDpoZWxwICJDbG9uZSB0aGUg Y3VycmVudCByb3cgYmVsb3cgaXQiXQorICAgICBbIkNsb25lIHJvdyBhYm92ZSIgICAgICAgICAg bWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWFib3ZlICAgICAgOmhlbHAgIkNsb25lIHRoZSBj dXJyZW50IHJvdyBhYm92ZSBpdCJdCisgICAgIFsiTW92ZSByb3cgdXAiICAgICAgICAgICAgICBt YXJrZG93bi10cy10YWJsZS1tb3ZlLXJvdy11cCAgICAgICAgICA6aGVscCAiTW92ZSB0aGUgcm93 IGF0IHBvaW50IHVwIl0KKyAgICAgWyJNb3ZlIHJvdyBkb3duIiAgICAgICAgICAgIG1hcmtkb3du LXRzLXRhYmxlLW1vdmUtcm93LWRvd24gICAgICAgIDpoZWxwICJNb3ZlIHRoZSByb3cgYXQgcG9p bnQgZG93biJdCisgICAgIFsiRGVsZXRlIHJvdyIgICAgICAgICAgICAgICBtYXJrZG93bi10cy10 YWJsZS1kZWxldGUtcm93ICAgICAgICAgICA6aGVscCAiRGVsZXRlIHRoZSByb3cgYXQgcG9pbnQi XQorICAgICAiLS0iCisgICAgIFsiSW5zZXJ0IGNvbHVtbiBsZWZ0IiAgICAgICBtYXJrZG93bi10 cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQgICA6aGVscCAiSW5zZXJ0IGFuIGVtcHR5IGNvbHVt biB0byB0aGUgbGVmdCBvZiBwb2ludCJdCisgICAgIFsiSW5zZXJ0IGNvbHVtbiByaWdodCIgICAg ICBtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLXJpZ2h0ICA6aGVscCAiSW5zZXJ0IGFu IGVtcHR5IGNvbHVtbiB0byB0aGUgcmlnaHQgb2YgcG9pbnQiXQorICAgICBbIkNsb25lIGNvbHVt biBsZWZ0IiAgICAgICAgbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtY29sdW1uLWxlZnQgICAgOmhl bHAgIkluc2VydCBhbiBlbXB0eSBjb2x1bW4gdG8gdGhlIGxlZnQgb2YgcG9pbnQiXQorICAgICBb IkNsb25lIGNvbHVtbiByaWdodCIgICAgICAgbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtY29sdW1u LXJpZ2h0ICAgOmhlbHAgIkluc2VydCBhbiBlbXB0eSBjb2x1bW4gdG8gdGhlIHJpZ2h0IG9mIHBv aW50Il0KKyAgICAgWyJNb3ZlIGNvbHVtbiBsZWZ0IiAgICAgICAgIG1hcmtkb3duLXRzLXRhYmxl LW1vdmUtY29sdW1uLWxlZnQgICAgIDpoZWxwICJNb3ZlIHRoZSBjdXJyZW50IGNvbHVtbiB0byBp dHMgbGVmdCJdCisgICAgIFsiTW92ZSBjb2x1bW4gcmlnaHQiICAgICAgICBtYXJrZG93bi10cy10 YWJsZS1tb3ZlLWNvbHVtbi1yaWdodCAgICA6aGVscCAiTW92ZSB0aGUgY3VycmVudCBjb2x1bW4g dG8gaXRzIHJpZ2h0Il0KKyAgICAgWyJBbGlnbiBjb2x1bW4uLi4iICAgICAgICAgIG1hcmtkb3du LXRzLXRhYmxlLWFsaWduLWNvbHVtbiAgICAgICAgIDpoZWxwICJBbGlnbiBjb2x1bW4gYXQgcG9p bnQgdG8gdGhlIGxlZnQsIGNlbnRlciwgb3IgcmlnaHQiXQorICAgICBbIkRlbGV0ZSBjb2x1bW4i ICAgICAgICAgICAgbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLWNvbHVtbiAgICAgICAgOmhlbHAg IkRlbGV0ZSB0aGUgY29sdW1uIGF0IHBvaW50Il0KKyAgICAgIi0tIgorICAgICBbIkFsaWduIHRh YmxlIGNvbHVtbnMiICAgICAgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tdGFibGUgICAgICAgICAg OmhlbHAgIkFsaWduIHRoZSB0YWJsZSBhdCBwb2ludCBpbiBhbiBlYXN5LXRvLWVkaXQgZm9ybWF0 Il0KKyAgICAgWyJUcmFuc3Bvc2UgdGFibGUiICAgICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLXRy YW5zcG9zZS10YWJsZSAgICAgIDpoZWxwICJUcmFuc3Bvc2UgdGhlIHRhYmxlIGF0IHBvaW50IHN3 YXBwaW5nIGl0cyByb3dzIGFuZCBjb2x1bW5zIl0KKyAgICAgIi0tIgorICAgICBbIkNvbnZlcnQg Q1NWIHRvIHRhYmxlIiAgICAgbWFya2Rvd24tdHMtdGFibGUtY29udmVydC1jc3YtcmVnaW9uICAg OmhlbHAgIkNvbnZlcnQgYSByYW5nZSBvZiBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzIHRvIGEgbmV3 IHRhYmxlIGF0IHBvaW50Il0KKyAgICAgWyJDb252ZXJ0IFRTViB0byB0YWJsZSIgICAgIG1hcmtk b3duLXRzLXRhYmxlLWNvbnZlcnQtdHN2LXJlZ2lvbiAgIDpoZWxwICJDb252ZXJ0IGEgcmFuZ2Ug b2YgdGFiLXNlcGFyYXRlZCB2YWx1ZXMgdG8gYSBuZXcgdGFibGUgYXQgcG9pbnQiXQorICAgICBb IkV4cG9ydCB0YWJsZSB0byBDU1YiICAgICAgbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxl LWNzdiAgICAgOmhlbHAgIkV4cG9ydCB0aGUgdGFibGUgYXQgcG9pbnQgdG8gYSBjb21tYS1zZXBh cmF0ZWQgdmFsdWVzIGJ1ZmZlciJdCisgICAgIFsiRXhwb3J0IHRhYmxlIHRvIFRTViIgICAgICBt YXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUtdHN2ICAgICA6aGVscCAiRXhwb3J0IHRoZSB0 YWJsZSBhdCBwb2ludCB0byBhIHRhYi1zZXBhcmF0ZWQgdmFsdWVzIGJ1ZmZlciJdKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy0tc2V0LXVwICgpCisgICJTZXQgdXAgdGhlIGJ1ZmZlciBmb3IgYG1h cmtkb3duLXRzLW1vZGUnLgorSWYgYG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lJyBpcyBub24t bmlsLCB1c2UgYSBsaWdodHdlaWdodCBzZXQgdXAgZm9yCitlbWJlZGRlZCBpbmxpbmUgYG1hcmtk b3duLXRzLW1vZGUnIGJ1ZmZlcnMuCisKK05PVEU6IENhbGwgdGhpcyBmdW5jdGlvbiBvbmx5IHdo ZW4gdGhlIHRyZWVzaXQgYG1hcmtkb3duJyBhbmQKK2BtYXJrZG93bi1pbmxpbmUnIHBhcnNlcnMg YXJlIGF2YWlsYWJsZS4iCisKKyAgOzsgU2V0IHRoZXNlIHVwIGZvciBib3RoIG1hc3RlciBhbmQg aW5saW5lIGZvciBjb2RlLWJsb2NrIGJ1ZmZlcnMuCisgIChzZXRxLWxvY2FsIGNvbW1lbnQtc3Rh cnQgIjwhLS0gIgorICAgICAgICAgICAgICBjb21tZW50LWVuZCAiIC0tPiIKKyAgICAgICAgICAg ICAgY29tbWVudC1zdGFydC1za2lwICI8IS0tWyBcdF0qIgorICAgICAgICAgICAgICBjb21tZW50 LWVuZC1za2lwICJbIFx0XSotLT4iCisgICAgICAgICAgICAgIGNvbW1lbnQtdXNlLXN5bnRheCBu aWwpCiAKLTs7OyBNYWpvciBtb2RlCisgIChzZXRxLWxvY2FsIGZpbGwtcGFyYWdyYXBoLWZ1bmN0 aW9uCisgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLWZpbGwtcGFyYWdyYXBoCisgICAgICAg ICAgICAgIGZpbGwtZm9yd2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24KKyAgICAgICAgICAgICAgIydt YXJrZG93bi10cy0tZmlsbC1mb3J3YXJkLXBhcmFncmFwaCkKIAotKGRlZnVuIG1hcmtkb3duLXRz LXNldHVwICgpCi0gICJTZXR1cCB0cmVlc2l0IGZvciBgbWFya2Rvd24tdHMtbW9kZScuIgotICAo bWFrZS1sb2NhbC12YXJpYWJsZSAnbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApCisgIDs7IGBhZGFw dGl2ZS1maWxsLWZ1bmN0aW9uJyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIKKyAgOzsgYGFkYXB0aXZl LWZpbGwtcmVnZXhwJzsgdGhlIGRlZmF1bHQgcmVnZXhwIGlzIGZpbmUgYXMgYQorICA7OyBmYWxs YmFjayBmb3IgcGxhaW4gKG5vbi1saXN0KSBwYXJhZ3JhcGhzLgorICAoc2V0cS1sb2NhbCBhZGFw dGl2ZS1maWxsLWZ1bmN0aW9uICMnbWFya2Rvd24tdHMtLWFkYXB0aXZlLWZpbGwpCisKKyAgOzsg Q3JlYXRlIGFuZCBjb25maWd1cmUgdGhlIHBhcnNlcnMuCisgICh0cmVlc2l0LXBhcnNlci1jcmVh dGUgJ21hcmtkb3duLWlubGluZSkKKyAgKHNldHEgdHJlZXNpdC1wcmltYXJ5LXBhcnNlcgorICAg ICAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdtYXJrZG93bikpCisKKyAgKHNldHEtbG9jYWwg Zm9udC1sb2NrLWRlZmF1bHRzIG5pbCkKICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2st c2V0dGluZ3MgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MpCi0gIChzZXRxLWxvY2FsIHRy ZWVzaXQtcmFuZ2Utc2V0dGluZ3MgKG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncykpCi0gIChh ZGQtdG8tbGlzdCAnZm9udC1sb2NrLWV4dHJhLW1hbmFnZWQtcHJvcHMgJ2ludmlzaWJsZSkKLQot ICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICdodG1sIHQpCi0gICAgKHRyZWVzaXQtcGFyc2VyLWNy ZWF0ZSAnaHRtbCkKLSAgICAocmVxdWlyZSAnaHRtbC10cy1tb2RlKQotICAgIChkZWZ2YXIgaHRt bC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciBodG1sLXRzLW1vZGUt LXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0 LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250 LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwtdHMtbW9kZS0tZm9u dC1sb2NrLXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0 dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250LWxvY2stZmVhdHVy ZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAot ICAgICAgICAgICAgICAgICBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUt bGlzdCkpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAg ICAgICAgIChhcHBlbmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAg ICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1i ZWQgJ2h0bWwKLSAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KLSAgICAg ICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAotICAgICAgICAgICAgICAgICAgICAgICAgICco KGh0bWxfYmxvY2spIEBodG1sKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVkICdo dG1sCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duLWlubGluZQotICAg ICAgICAgICAgICAgICAgICAgICAgICcoKGh0bWxfdGFnKSBAaHRtbCkpKSkpCi0KLSAgKHdoZW4g KHRyZWVzaXQtcmVhZHktcCAneWFtbCB0KQotICAgIChyZXF1aXJlICd5YW1sLXRzLW1vZGUpCi0g ICAgKGRlZnZhciB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykKLSAgICAoZGVmdmFy IHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKLSAgICAoc2V0cS1sb2NhbCB0 cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNp dC1mb250LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHlhbWwtdHMtbW9k ZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9j ay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250LWxvY2st ZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUt bGlzdAotICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxp c3QpKQotICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAg ICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAg ICAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVk ICd5YW1sCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duCi0gICAgICAg ICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAnKCht aW51c19tZXRhZGF0YSkgQHlhbWwpKSkpKQotCi0gICh3aGVuICh0cmVlc2l0LXJlYWR5LXAgJ3Rv bWwgdCkKLSAgICAocmVxdWlyZSAndG9tbC10cy1tb2RlKQotICAgIChkZWZ2YXIgdG9tbC10cy1t b2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciB0b21sLXRzLW1vZGUtLWZvbnQt bG9jay1mZWF0dXJlLWxpc3QpCi0gICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MK LSAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAg ICAgICAgICB0b21sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykpCi0gICAgKHNldHEtbG9j YWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgKHRyZWVz aXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAgICAgICB0cmVlc2l0 LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAgdG9tbC10cy1tb2RlLS1m b250LWxvY2stZmVhdHVyZS1saXN0KSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNl dHRpbmdzCi0gICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCi0g ICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcwotICAgICAgICAgICAg ICAgICAgICAgICAgIDplbWJlZCAndG9tbAotICAgICAgICAgICAgICAgICAgICAgICAgIDpob3N0 ICdtYXJrZG93bgotICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2NhbCB0Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgJygocGx1c19tZXRhZGF0YSkgQHRvbWwpKSkpKQorICAoc2V0cS1sb2Nh bCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QgJygoZGVsaW1pdGVyIGhlYWRpbmcpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhZ3JhcGgp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhZ3Jh cGgtaW5saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaW1hZ2UtcHJldmlldyBlcnJvcikpKQorCisgIChjb25kIChtYXJrZG93bi10cy0tc2V0LXVw LWlubGluZQorICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAg ICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAgICAgICAgICAg ICAgICAgICA6ZW1iZWQgJ21hcmtkb3duLWlubGluZQorICAgICAgICAgICAgICAgICAgICAgICA6 aG9zdCAnbWFya2Rvd24KKyAgICAgICAgICAgICAgICAgICAgICAgJygoaW5saW5lKSBAbWFya2Rv d24taW5saW5lKSkpKQorICAgICAgICAodAorICAgICAgICAgOzsgUmFuZ2Ugc2V0dGluZ3MgZGlm ZmVyIGluIHRoZSBtYXN0ZXIgYnVmZmVyIHZzLiBpbmxpbmUgYWJvdmUuCisgICAgICAgICAoc2V0 cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzIChtYXJrZG93bi10cy0tcmFuZ2Utc2V0dGlu Z3MpKQorCisgICAgICAgICA7OyBDb25maWd1cmUgZmVhdHVyZXMgbmVlZGVkIG9ubHkgaW4gdGhl IG1hc3RlciBidWZmZXIuCisKKyAgICAgICAgIDs7IEltZW51IHN1cHBvcnQuCisgICAgICAgICAo c2V0cS1sb2NhbCB0cmVlc2l0LXNpbXBsZS1pbWVudS1zZXR0aW5ncworICAgICAgICAgICAgICAg ICAgICAgYCgoIkhlYWRpbmdzIiAsIydtYXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1ub2RlLXAK KyAgICAgICAgICAgICAgICAgICAgICAgIG5pbCAsIydtYXJrZG93bi10cy0taW1lbnUtaGVhZGlu Zy1uYW1lLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAoIkNvZGUgQmxvY2tzIiAs IydtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1ub2RlLXAKKyAgICAgICAgICAgICAgICAg ICAgICAgIG5pbCAsIydtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1uYW1lLWZ1bmN0aW9u KSkpCisKKyAgICAgICAgIDs7IE91dGxpbmUgc3VwcG9ydC4KKyAgICAgICAgIChzZXRxLWxvY2Fs IHRyZWVzaXQtb3V0bGluZS1wcmVkaWNhdGUgIydtYXJrZG93bi10cy0tb3V0bGluZS1wcmVkaWNh dGUpCisgICAgICAgICAoc2V0cS1sb2NhbCBvdXRsaW5lLW1pbm9yLW1vZGUtY3ljbGUgdCkKKyAg ICAgICAgIChvdXRsaW5lLW1pbm9yLW1vZGUgMSkKKyAgICAgICAgIChtYXJrZG93bi10cy0tYXBw bHktZWxsaXBzaXMpCisKKyAgICAgICAgIDs7IE5PVEU6IGBvdXRsaW5lLXZpZXctY2hhbmdlLWhv b2snIHdhcyBvYnNvbGV0ZWQgaW4gMjkuMSAoY29tbWl0CisgICAgICAgICA7OyA1M2IxZTZmOTZj Yikgb24gdGhlIGdyb3VuZHMgdGhhdCBvbmx5IGxhenktbG9jayB1c2VkIGl0LCBidXQgbm8KKyAg ICAgICAgIDs7IHJlcGxhY2VtZW50IHdhcyBwcm92aWRlZCBhbmQgb3V0bGluZS5lbCBpdHNlbGYg c3RpbGwgcnVucyB0aGUgaG9vaworICAgICAgICAgOzsgaW4gMTArIHBsYWNlcy4KKyAgICAgICAg ICh3aXRoLXN1cHByZXNzZWQtd2FybmluZ3MgKChvYnNvbGV0ZSBvdXRsaW5lLXZpZXctY2hhbmdl LWhvb2spKQorICAgICAgICAgICAoYWRkLWhvb2sgJ291dGxpbmUtdmlldy1jaGFuZ2UtaG9vawor ICAgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tb3V0bGluZS12aWV3LWNoYW5nZSBu aWwgdCkpCisKKyAgICAgICAgIChwcm9nbgorICAgICAgICAgICAobWFrZS1sb2NhbC12YXJpYWJs ZSAnbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApCisgICAgICAgICAgIChtYWtlLWxvY2FsLXZhcmlh YmxlICdmb250LWxvY2stZXh0cmEtbWFuYWdlZC1wcm9wcykKKyAgICAgICAgICAgKGRvbGlzdCAo cHJvcCAnKGludmlzaWJsZSBkaXNwbGF5IGJ1dHRvbiBjYXRlZ29yeSBhY3Rpb24gaGVscC1lY2hv KSkKKyAgICAgICAgICAgICAoYWRkLXRvLWxpc3QgJ2ZvbnQtbG9jay1leHRyYS1tYW5hZ2VkLXBy b3BzIHByb3ApKSkKKworICAgICAgICAgKHdoZW4gKHRyZWVzaXQtcmVhZHktcCAnaHRtbCB0KQor ICAgICAgICAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdodG1sKQorICAgICAgICAgICAocmVx dWlyZSAnaHRtbC10cy1tb2RlKQorICAgICAgICAgICAoZGVmdmFyIGh0bWwtdHMtbW9kZS0tZm9u dC1sb2NrLXNldHRpbmdzKQorICAgICAgICAgICAoZGVmdmFyIGh0bWwtdHMtbW9kZS0tdHJlZXNp dC1mb250LWxvY2stZmVhdHVyZS1saXN0KQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0 LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVz aXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRt bC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0 cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHRy ZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAg ICAgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAg ICBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkpCisgICAgICAg ICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAg ICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOmVtYmVkICdodG1sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpo b3N0ICdtYXJrZG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChodG1sX2Jsb2NrKSBAaHRtbCkKKwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ2h0bWwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duLWlubGluZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnKChodG1sX3RhZykgQGh0bWwpKSkpKQorCisgICAgICAgICAo d2hlbiAodHJlZXNpdC1yZWFkeS1wICd5YW1sIHQpCisgICAgICAgICAgIChyZXF1aXJlICd5YW1s LXRzLW1vZGUpCisgICAgICAgICAgIChkZWZ2YXIgeWFtbC10cy1tb2RlLS1mb250LWxvY2stc2V0 dGluZ3MpCisgICAgICAgICAgIChkZWZ2YXIgeWFtbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVy ZS1saXN0KQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5n cworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRp bmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWFtbC10cy1tb2RlLS1mb250LWxv Y2stc2V0dGluZ3MpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1m ZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbWVyZ2UtZm9udC1s b2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgdHJlZXNpdC1mb250LWxv Y2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZv bnQtbG9jay1mZWF0dXJlLWxpc3QpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJh bmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1yYW5n ZS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LXJhbmdl LXJ1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJlZCAneWFtbAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygobWludXNfbWV0YWRhdGEpIEB5YW1sKSkpKSkKKworICAgICAgICAgKHdoZW4gKHRy ZWVzaXQtcmVhZHktcCAndG9tbCB0KQorICAgICAgICAgICAocmVxdWlyZSAndG9tbC10cy1tb2Rl KQorICAgICAgICAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKQor ICAgICAgICAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkK KyAgICAgICAgICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAgICAgICAg ICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAg ICAgICAgICAgIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKKyAgICAgICAgICAg KHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAg ICAgICAgICAgICh0cmVlc2l0LW1lcmdlLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAg ICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAg ICAgICAgICAgICAgICAgdG9tbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KSkKKyAg ICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAgICAgICAg ICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6ZW1iZWQgJ3RvbWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOmhvc3QgJ21hcmtkb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2Nh bCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKHBsdXNfbWV0YWRhdGEpIEB0 b21sKSkpKSkKKworICAgICAgICAgOzsgU3VwcG9ydCBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIGlu IGEgY29kZS1ibG9jayBjb250ZXh0LgorICAgICAgICAgKHdoZW4gbWFya2Rvd24tdHMtZW5hYmxl LWNvZGUtYmxvY2stY29udGV4dC1tb2RlCisgICAgICAgICAgIChtYXJrZG93bi10cy1jb2RlLWJs b2NrLWNvbnRleHQtbW9kZSkpCisKKyAgICAgICAgIDs7IFN1cHBvcnQgZm9yIHRhYmxlIG1vZGUu CisgICAgICAgICAod2hlbiBtYXJrZG93bi10cy1lbmFibGUtdGFibGUtbW9kZQorICAgICAgICAg ICAobWFya2Rvd24tdHMtdGFibGUtbW9kZSkpKSkKIAogICAodHJlZXNpdC1tYWpvci1tb2RlLXNl dHVwKQotICAobWFya2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1h cmt1cCkpCisKKyAgOzsgRG8gbm90IGVuYWJsZSBgaml0LWxvY2stbW9kZScgaW4gaW5kaXJlY3Qg YnVmZmVycyBzdWNoIGFzIHRoZSBvbmUKKyAgOzsgd2UgdXNlIGZvciBjb2RlIGJsb2NrIGNvbW1h bmRzLgorICAodW5sZXNzIChidWZmZXItYmFzZS1idWZmZXIpCisgICAgKGppdC1sb2NrLXJlZ2lz dGVyICMnbWFya2Rvd24tdHMtLWZvbnRpZnktYmFyZS11cmkpKQorCisgICh1bmxlc3MgbWFya2Rv d24tdHMtLXNldC11cC1pbmxpbmUKKyAgICA7OyBPcmRlciBtYXR0ZXJzOiBgbWFya2Rvd24tdHMt LXNldC1oaWRlLW1hcmt1cCcgY2FsbHMgYGZvbnQtbG9jay1mbHVzaCcKKyAgICA7OyAob25seSBt ZWFuaW5nZnVsIG9uY2UgYHRyZWVzaXQtbWFqb3ItbW9kZS1zZXR1cCcgaGFzIHdpcmVkIHVwCisg ICAgOzsgZm9udC1sb2NrKSwgYW5kIGBtYXJrZG93bi10cy1kZWZhdWx0LWZvbGRpbmcnIGNhbGxz IG91dGxpbmUKKyAgICA7OyBjb21tYW5kcyB0aGF0IHJlbHkgb24gYG91dGxpbmUtc2VhcmNoLWZ1 bmN0aW9uJywgd2hpY2gKKyAgICA7OyBgdHJlZXNpdC1tYWpvci1tb2RlLXNldHVwJyBpbnN0YWxs cyBmcm9tIGB0cmVlc2l0LW91dGxpbmUtcHJlZGljYXRlJy4KKyAgICAobWFya2Rvd24tdHMtLXNl dC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkKKyAgICA7OyBSZXNwZWN0IHRo ZSB1c2VyJ3MgZGVmYXVsdCBvdXRsaW5lIGZvbGRpbmcuCisgICAgKHBjYXNlIG1hcmtkb3duLXRz LWRlZmF1bHQtZm9sZGluZworICAgICAgKCdzaG93LWFsbCAoaWdub3JlKSkKKyAgICAgICgnZm9s ZC1hbGwgKG91dGxpbmUtaGlkZS1zdWJsZXZlbHMgMSkpCisgICAgICAoJ2ZvbGQtaGVhZGluZ3Mg KG91dGxpbmUtc2hvdy1hbGwpCisgICAgICAgICAgICAgICAgICAgICAgKG91dGxpbmUtaGlkZS1y ZWdpb24tYm9keSAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93 bi10cy1tb2RlLWluc3RhbGwtcGFyc2VycyAoYXJnKQorICAiSW5zdGFsbCBgbWFya2Rvd24tdHMt bW9kZScgdHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgcGFyc2Vycy4KK0lmIG5lZWRlZCwgaW5zdGFsbCB0 aGUgcmVxdWlyZWQgcGFyc2VycyBmb3IgYG1hcmtkb3duJyBhbmQgYG1hcmtkb3duLWlubGluZScu CitXaXRoIGEgcHJlZml4IGFyZ3VtZW50LCBBUkcsIGlmIG5lZWRlZCwgaW5zdGFsbCBwYXJzZXJz IGZvciBgaHRtbCcsCitgeWFtbCcsIGFuZCBgdG9tbCcuIgorICAoaW50ZXJhY3RpdmUgIlAiKQor ICAodW5sZXNzICh0cmVlc2l0LWxhbmd1YWdlLWF2YWlsYWJsZS1wICdtYXJrZG93bikKKyAgICAo dHJlZXNpdC1pbnN0YWxsLWxhbmd1YWdlLWdyYW1tYXIgJ21hcmtkb3duKSkKKyAgKHVubGVzcyAo dHJlZXNpdC1sYW5ndWFnZS1hdmFpbGFibGUtcCAnbWFya2Rvd24taW5saW5lKQorICAgICh0cmVl c2l0LWluc3RhbGwtbGFuZ3VhZ2UtZ3JhbW1hciAnbWFya2Rvd24taW5saW5lKSkKKyAgKHdoZW4g YXJnCisgICAgKHVubGVzcyAodHJlZXNpdC1sYW5ndWFnZS1hdmFpbGFibGUtcCAnaHRtbCkKKyAg ICAgIChyZXF1aXJlICdodG1sLXRzLW1vZGUpCisgICAgICAodHJlZXNpdC1pbnN0YWxsLWxhbmd1 YWdlLWdyYW1tYXIgJ2h0bWwpKQorICAgICh1bmxlc3MgKHRyZWVzaXQtbGFuZ3VhZ2UtYXZhaWxh YmxlLXAgJ3lhbWwpCisgICAgICAocmVxdWlyZSAneWFtbC10cy1tb2RlKQorICAgICAgKHRyZWVz aXQtaW5zdGFsbC1sYW5ndWFnZS1ncmFtbWFyICd5YW1sKSkKKyAgICAodW5sZXNzICh0cmVlc2l0 LWxhbmd1YWdlLWF2YWlsYWJsZS1wICd0b21sKQorICAgICAgKHJlcXVpcmUgJ3RvbWwtdHMtbW9k ZSkKKyAgICAgICh0cmVlc2l0LWluc3RhbGwtbGFuZ3VhZ2UtZ3JhbW1hciAndG9tbCkpKSkKIAog Ozs7IyMjYXV0b2xvYWQKIChkZWZpbmUtZGVyaXZlZC1tb2RlIG1hcmtkb3duLXRzLW1vZGUgdGV4 dC1tb2RlICJNYXJrZG93biIKLSAgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcgTWFya2Rvd24gdXNp bmcgdHJlZS1zaXR0ZXIgZ3JhbW1hci4iCisgICJNYWpvciBtb2RlIGZvciBlZGl0aW5nIE1hcmtk b3duIHVzaW5nIHRyZWUtc2l0dGVyIGdyYW1tYXIuCitOT1RFOiBTZWUgYG1hcmtkb3duLXRzLS1z ZXQtdXAtaW5saW5lJy4iCisgICh0cmVlc2l0LWVuc3VyZS1pbnN0YWxsZWQgJ21hcmtkb3duKQor ICAodHJlZXNpdC1lbnN1cmUtaW5zdGFsbGVkICdtYXJrZG93bi1pbmxpbmUpCisgIChpZiAoYW5k ICh0cmVlc2l0LXJlYWR5LXAgJ21hcmtkb3duIHQpCisgICAgICAgICAgICh0cmVlc2l0LXJlYWR5 LXAgJ21hcmtkb3duLWlubGluZSB0KSkKKyAgICAgIChtYXJrZG93bi10cy0tc2V0LXVwKQorICAg ICh3YXJuICJtYXJrZG93bi10cy1tb2RlIGNhbm5vdCBiZSBzZXQgdXA7IHVzaW5nIGZ1bmRhbWVu dGFsLW1vZGUuCitUaGUgdHJlZS1zaXR0ZXIgcGFyc2VycyBgbWFya2Rvd24nIGFuZCBgbWFya2Rv d24taW5saW5lJyB3ZXJlIG5vdCBmb3VuZC4KK1VzZSB0aGUgY29tbWFuZCBgbWFya2Rvd24tdHMt bW9kZS1pbnN0YWxsLXBhcnNlcnMnIHRvIGluc3RhbGwgdGhlbS4KK1dpdGggYSBwcmVmaXggYXJn dW1lbnQsIGl0IGNhbiBhbHNvIGluc3RhbGwgb3B0aW9uYWwgcGFyc2Vycy4iKQorICAgIChmdW5k YW1lbnRhbC1tb2RlKSkpCiAKLSAgKHNldHEtbG9jYWwgY29tbWVudC1zdGFydCAiPCEtLSAiKQot ICAoc2V0cS1sb2NhbCBjb21tZW50LWVuZCAiIC0tPiIpCisoZGVyaXZlZC1tb2RlLWFkZC1wYXJl bnRzICdtYXJrZG93bi10cy1tb2RlICcobWFya2Rvd24tbW9kZSkpCiAKLSAgKHNldHEtbG9jYWwg Zm9udC1sb2NrLWRlZmF1bHRzIG5pbAotCSAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUt bGlzdCAnKChkZWxpbWl0ZXIgaGVhZGluZykKLQkJCQkJICAgICAgIChwYXJhZ3JhcGgpCi0JCQkJ CSAgICAgICAocGFyYWdyYXBoLWlubGluZSkpKQorKGRlZnVuIG1hcmtkb3duLXRzLS1iYXJmLWlm LW5vdC1tb2RlICgmb3B0aW9uYWwgY29udGV4dCkKKyAgIlNpZ25hbCBhbiBlcnJvciBpZiB0aGUg Y3VycmVudCBidWZmZXIgaXMgbm90IGEgYG1hcmtkb3duLXRzLW1vZGUnIGJ1ZmZlci4KK1ByZWZp eCB0aGUgZXJyb3IgbWVzc2FnZSB3aXRoIENPTlRFWFQuIgorICAodW5sZXNzIChkZXJpdmVkLW1v ZGUtcCAnbWFya2Rvd24tdHMtbW9kZSkKKyAgICAodXNlci1lcnJvciAiJXNpcyB2YWxpZCBvbmx5 IGluIGBtYXJrZG93bi10cy1tb2RlJyBidWZmZXJzIgorICAgICAgICAgICAgICAgIChpZiBjb250 ZXh0IChmb3JtYXQgIiVzOiAiIGNvbnRleHQpICIiKSkpKQogCi0gIChzZXRxLWxvY2FsIHRyZWVz aXQtc2ltcGxlLWltZW51LXNldHRpbmdzCi0gICAgICAgICAgICAgIGAoKCJIZWFkaW5ncyIgLCMn bWFya2Rvd24tdHMtaW1lbnUtbm9kZS1wCi0gICAgICAgICAgICAgICAgIG5pbCAsIydtYXJrZG93 bi10cy1pbWVudS1uYW1lLWZ1bmN0aW9uKSkpCi0gIChzZXRxLWxvY2FsIHRyZWVzaXQtb3V0bGlu ZS1wcmVkaWNhdGUgIydtYXJrZG93bi10cy1vdXRsaW5lLXByZWRpY2F0ZSkKKyhkZWZpbmUtbWlu b3ItbW9kZSBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZQorICAiTWlub3Ig bW9kZSBlbmFibGVkIGlmIHBvaW50IGlzIHdpdGhpbiBhIGZlbmNlZCBjb2RlIGJsb2NrLgorVGhp cyBlbmFibGVzIHRoZSBrZXltYXAgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1t b2RlLW1hcCcuIgorICA6Z3JvdXAgJ21hcmtkb3duLXRzCisgIDpsaWdodGVyIG1hcmtkb3duLXRz LWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLWxpZ2h0ZXIKKyAgOmludGVyYWN0aXZlIG5pbAor ICAobWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLXVwZGF0ZS1vdikpCiAK LSAgKHdoZW4gKGFuZCAodHJlZXNpdC1lbnN1cmUtaW5zdGFsbGVkICdtYXJrZG93bikKLSAgICAg ICAgICAgICAodHJlZXNpdC1lbnN1cmUtaW5zdGFsbGVkICdtYXJrZG93bi1pbmxpbmUpKQotICAg ICh0cmVlc2l0LXBhcnNlci1jcmVhdGUgJ21hcmtkb3duLWlubGluZSkKLSAgICAodHJlZXNpdC1w YXJzZXItY3JlYXRlICdtYXJrZG93bikKLSAgICAobWFya2Rvd24tdHMtc2V0dXApKSkKKyhkZWZ2 YXItbG9jYWwgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92IG5pbCkK IAotKGRlcml2ZWQtbW9kZS1hZGQtcGFyZW50cyAnbWFya2Rvd24tdHMtbW9kZSAnKG1hcmtkb3du LW1vZGUpKQorKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS11 cGRhdGUtb3YgKCkKKyAgIk1hbmFnZSBgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4 dC1tb2RlLW92Jy4iCisgIChjb25kIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQt bW9kZQorICAgICAgICAgKGxldCAoKGJlZyAoZ2V0LWNoYXItcHJvcGVydHkgKHBvaW50KSAnbWFy a2Rvd24tdHMtY29kZS1iZWctbWFya2VyKSkKKyAgICAgICAgICAgICAgIChlbmQgKGdldC1jaGFy LXByb3BlcnR5IChwb2ludCkgJ21hcmtkb3duLXRzLWNvZGUtZW5kLW1hcmtlcikpKQorICAgICAg ICAgICAoaWYgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92CisgICAg ICAgICAgICAgICAobW92ZS1vdmVybGF5IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWluLWNvbnRl eHQtbW9kZS1vdiBiZWcgZW5kKQorICAgICAgICAgICAgIChzZXRxIG1hcmtkb3duLXRzLS1jb2Rl LWJsb2NrLWluLWNvbnRleHQtbW9kZS1vdgorICAgICAgICAgICAgICAgICAgIChtYWtlLW92ZXJs YXkgYmVnIGVuZCBuaWwgdCBuaWwpKSkKKyAgICAgICAgICAgKG92ZXJsYXktcHV0IG1hcmtkb3du LXRzLS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1vdgorICAgICAgICAgICAgICAgICAgICAg ICAgJ21hcmtkb3duLXRzLWluLWNvZGUtYmxvY2sgdCkKKyAgICAgICAgICAgKG92ZXJsYXktcHV0 IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1vdgorICAgICAgICAgICAg ICAgICAgICAgICAgJ2V2YXBvcmF0ZSB0KQorICAgICAgICAgICAob3ZlcmxheS1wdXQgbWFya2Rv d24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92CisgICAgICAgICAgICAgICAgICAg ICAgICAncHJpb3JpdHkgJyhuaWwgLiAyMCkpCisgICAgICAgICAgIChvdmVybGF5LXB1dCBtYXJr ZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YKKyAgICAgICAgICAgICAgICAg ICAgICAgICdmYWNlICdtYXJrZG93bi10cy1pbi1jb2RlLWJsb2NrKSkpCisgICAgICAgICh0Cisg ICAgICAgICAod2hlbiBtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YK KyAgICAgICAgICAgKGRlbGV0ZS1vdmVybGF5IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWluLWNv bnRleHQtbW9kZS1vdikpKSkpCiAKLTs7OyMjI2F1dG9sb2FkCi0oZGVmdW4gbWFya2Rvd24tdHMt bW9kZS1tYXliZSAoKQotICAiRW5hYmxlIGBtYXJrZG93bi10cy1tb2RlJyB3aGVuIGl0cyBncmFt bWFyIGlzIGF2YWlsYWJsZS4KLUFsc28gcHJvcG9zZSB0byBpbnN0YWxsIHRoZSBncmFtbWFyIHdo ZW4gYHRyZWVzaXQtZW5hYmxlZC1tb2RlcycKLWlzIHQgb3IgY29udGFpbnMgdGhlIG1vZGUgbmFt ZS4iCi0gIChkZWNsYXJlLWZ1bmN0aW9uIHRyZWVzaXQtbGFuZ3VhZ2UtYXZhaWxhYmxlLXAgInRy ZWVzaXQuYyIpCi0gIChpZiAob3IgKHRyZWVzaXQtbGFuZ3VhZ2UtYXZhaWxhYmxlLXAgJ21hcmtk b3duKQotICAgICAgICAgIChlcSB0cmVlc2l0LWVuYWJsZWQtbW9kZXMgdCkKLSAgICAgICAgICAo bWVtcSAnbWFya2Rvd24tdHMtbW9kZSB0cmVlc2l0LWVuYWJsZWQtbW9kZXMpKQotICAgICAgKG1h cmtkb3duLXRzLW1vZGUpCi0gICAgKGZ1bmRhbWVudGFsLW1vZGUpKSkKKyhkZWZpbmUtbWlub3It bW9kZSBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZQorICAiTWlub3IgbW9kZSB0 byBlbmFibGUgY29tbWFuZHMgaW4gZmVuY2VkIGNvZGUgYmxvY2sgY29udGV4dC4KK0lmIG5vbi1u aWwgYW5kIGBwb2ludCcgaXMgaW4gYSBmZW5jZWQgY29kZSBibG9jaywgcnVuIGBpbmRlbnQtZm9y LXRhYi1jb21tYW5kJywKK2BuZXdsaW5lJywgZXQuYWwuLCBpbiB0aGUgbW9kZSBvZiB0aGUgY29k ZSBibG9jay4iCisgIDpncm91cCAnbWFya2Rvd24tdHMKKyAgOmludGVyYWN0aXZlIG5pbAorICAo bWFya2Rvd24tdHMtLWJhcmYtaWYtbm90LW1vZGUgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2stY29u dGV4dC1tb2RlKQorICAoY29uZCAobWFya2Rvd24tdHMtY29kZS1ibG9jay1jb250ZXh0LW1vZGUK KyAgICAgICAgIDs7IEVuYWJsZSB0aGUgbWlub3IgbW9kZSBgbWFya2Rvd24tdHMtY29kZS1ibG9j ay1pbi1jb250ZXh0LW1vZGUnIGFuZAorICAgICAgICAgOzsgaXRzIGtleW1hcCB3aGVuIHBvaW50 IGlzIHdpdGhpbiBhIGNvZGUgYmxvY2suCisgICAgICAgICAoYWRkLWhvb2sgJ3Bvc3QtY29tbWFu ZC1ob29rCisgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxv Y2staW4tY29udGV4dC1tb2RlIG5pbCAnbG9jYWwpCisgICAgICAgICA7OyBJZiBgc2F2ZS1wbGFj ZS1tb2RlJyBvciBzaW1pbGFyIGlzIHVzZWQsIHBvaW50IGNvdWxkIHN0YXJ0IHdpdGhpbgorICAg ICAgICAgOzsgYSBjb2RlIGJsb2NrIHNvIGluaXRpYWxpemUgZnJvbSB0aGF0IHN0YXRlLgorICAg ICAgICAgKHJ1bi13aXRoLXRpbWVyIDAuMDEgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg IydtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlKQorICAgICAg ICAgOzsgRm9yIGVhY2ggZWxpZ2libGUgY29tbWFuZCwgZXhlY3V0ZSBpdCBpbiBhIGNvZGUtYmxv Y2sgY29udGV4dCwKKyAgICAgICAgIDs7IG90aGVyd2lzZSBpbiB0aGUgYG1hcmtkb3duLXRzLW1v ZGUnIGJ1ZmZlcidzIGNvbnRleHQuCisgICAgICAgICAoYWRkLWhvb2sgJ3ByZS1jb21tYW5kLWhv b2sKKyAgICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1tYXliZS1ydW4tY29tbWFuZC1p bi1jb2RlLWJsb2NrIG5pbCAnbG9jYWwpCisgICAgICAgICA7OyBQcnVuZSBzdGFsZSBjb2RlIGJs b2NrIG92ZXJsYXlzIHdoZW4gdGhlIGhvc3QgcGFyc2UgdHJlZQorICAgICAgICAgOzsgY2hhbmdl cyAoZS5nLiwgd2hlbiBmZW5jZWQgY29kZSBibG9jayBkZWxpbWl0ZXJzIGFyZQorICAgICAgICAg OzsgZGVsZXRlZCBidXQgdGhlIG92ZXJsYXkgZnJvbSBhIHByaW9yIGZvbnRpZmljYXRpb24gcmVt YWlucykuCisgICAgICAgICAodHJlZXNpdC1wYXJzZXItYWRkLW5vdGlmaWVyCisgICAgICAgICAg dHJlZXNpdC1wcmltYXJ5LXBhcnNlcgorICAgICAgICAgICMnbWFya2Rvd24tdHMtLWhvc3QtcmFu Z2VzLW5vdGlmaWVyKSkKKyAgICAgICAgKHQKKyAgICAgICAgIChyZW1vdmUtaG9vayAncG9zdC1j b21tYW5kLWhvb2sKKyAgICAgICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1lbmFibGUt Y29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUgJ2xvY2FsKQorICAgICAgICAgKHJlbW92ZS1ob29r ICdwcmUtY29tbWFuZC1ob29rCisgICAgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0t bWF5YmUtcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jayAnbG9jYWwpCisgICAgICAgICAodHJlZXNp dC1wYXJzZXItcmVtb3ZlLW5vdGlmaWVyCisgICAgICAgICAgdHJlZXNpdC1wcmltYXJ5LXBhcnNl cgorICAgICAgICAgICMnbWFya2Rvd24tdHMtLWhvc3QtcmFuZ2VzLW5vdGlmaWVyKSkpKQorCiso ZGVmaW5lLW1pbm9yLW1vZGUgbWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZQorICAiTWlub3IgbW9k ZSBlbmFibGVkIGlmIHBvaW50IGlzIHdpdGhpbiBhIHRhYmxlLgorVGhpcyBlbmFibGVzIHRoZSBr ZXltYXAgYG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbWFwJy4iCisgIDpncm91cCAnbWFya2Rv d24tdHMKKyAgOmxpZ2h0ZXIgbWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZS1saWdodGVyCisgIDpp bnRlcmFjdGl2ZSBuaWwKKyAgKG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLXVwZGF0ZS1vdikp CisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtb3YgbmlsKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtZ2V0LW92IChwb3MpCisgICJSZXR1cm4g dGhlIGBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlJyBvdmVybGF5IGF0IFBPUy4iCisgIChzZXEt ZmluZCAobGFtYmRhIChvdikKKyAgICAgICAgICAgICAgKHdoZW4gKG92ZXJsYXktZ2V0IG92ICdt YXJrZG93bi10cy1pbi10YWJsZSkKKyAgICAgICAgICAgICAgICBvdikpCisgICAgICAgICAgICAo b3ZlcmxheXMtYXQgcG9zKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtdGljay11cGRh dGUgKHBvcykKKyAgIlVwZGF0ZSB0aGUgYG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUnIG92ZXJs YXkgdGljayBhdCBQT1MuCitJZiB0aGUgb3ZlcmxheSBpcyBub3QgZm91bmQsIGRvIG5vdGhpbmcu IgorICAod2hlbi1sZXQqICgob3YgKG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLWdldC1vdiBw b3MpKSkKKyAgICAob3ZlcmxheS1wdXQgb3YKKyAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRz LWluLXRhYmxlLXRpY2sKKyAgICAgICAgICAgICAgICAgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10 aWNrKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLXRpY2stc3RhbGUtcCAocG9zKQor ICAiUmV0dXJuIG5vbi1uaWwgaWYgdGhlIHRhYmxlIGF0IFBPUyBtaWdodCBoYXZlIGNoYW5nZWQu CitJdCBpcyB1cCB0byB0aGlzIGZ1bmN0aW9uJ3MgY2FsbGVycyB0byBjYWxsCitgbWFya2Rvd24t dHMtLXRhYmxlLXRpY2stdXBkYXRlJy4iCisgICh3aGVuLWxldCogKChvdiAobWFya2Rvd24tdHMt LWluLXRhYmxlLW1vZGUtZ2V0LW92IHBvcykpKQorICAgIChub3QgKGVxIChvdmVybGF5LWdldCBv diAnbWFya2Rvd24tdHMtaW4tdGFibGUtdGljaykKKyAgICAgICAgICAgICAoYnVmZmVyLWNoYXJz LW1vZGlmaWVkLXRpY2spKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUt dXBkYXRlLW92ICgpCisgICJNYW5hZ2UgYG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLW92Jy4i CisgIChjb25kIChtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlCisgICAgICAgICAod2hlbi1sZXQq ICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAg ICAgICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAgICAgICAgKGJl ZyAodHJlZXNpdC1ub2RlLXN0YXJ0IHRhYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgIChlbmQg KHRyZWVzaXQtbm9kZS1lbmQgdGFibGUpKSkKKyAgICAgICAgICAgKGlmIG1hcmtkb3duLXRzLS1p bi10YWJsZS1tb2RlLW92CisgICAgICAgICAgICAgICA7OyBNb3ZlIHRoZSBvdmVybGF5LCBpZiBu ZWVkZWQsIGFuZCByZXNldCB0aGUgdGljayBpZiBzby4KKyAgICAgICAgICAgICAgICh3aGVuIChu b3QgKGVxIChvdmVybGF5LXN0YXJ0IG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLW92KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnKSkKKyAgICAgICAgICAgICAgICAgKG1vdmUt b3ZlcmxheSBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdiBiZWcgZW5kKQorICAgICAgICAg ICAgICAgICAob3ZlcmxheS1wdXQgbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtb3YKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1pbi10YWJsZS10aWNrIG5pbCkp CisgICAgICAgICAgICAgKHNldHEgbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtb3YKKyAgICAg ICAgICAgICAgICAgICAobWFrZS1vdmVybGF5IGJlZyBlbmQgbmlsIHQgbmlsKSkpCisgICAgICAg ICAgIChvdmVybGF5LXB1dCBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdgorICAgICAgICAg ICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWluLXRhYmxlIHQpCisgICAgICAgICAgIChvdmVy bGF5LXB1dCBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdgorICAgICAgICAgICAgICAgICAg ICAgICAgJ2V2YXBvcmF0ZSB0KQorICAgICAgICAgICAob3ZlcmxheS1wdXQgbWFya2Rvd24tdHMt LWluLXRhYmxlLW1vZGUtb3YKKyAgICAgICAgICAgICAgICAgICAgICAgICdwcmlvcml0eSAnKG5p bCAuIDIwKSkKKyAgICAgICAgICAgKG92ZXJsYXktcHV0IG1hcmtkb3duLXRzLS1pbi10YWJsZS1t b2RlLW92CisgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZSAnbWFya2Rvd24tdHMtaW4tdGFi bGUpCisgICAgICAgICAgICkpCisgICAgICAgICh0CisgICAgICAgICAod2hlbiBtYXJrZG93bi10 cy0taW4tdGFibGUtbW9kZS1vdgorICAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgbWFya2Rvd24t dHMtLWluLXRhYmxlLW1vZGUtb3YpKSkpKQorCisoZGVmaW5lLW1pbm9yLW1vZGUgbWFya2Rvd24t dHMtdGFibGUtbW9kZQorICAiTWlub3IgbW9kZSB0byBlbmFibGUgY29tbWFuZHMgaW4gdGFibGVz LgorSWYgbm9uLW5pbCBhbmQgYHBvaW50JyBpcyBpbiBhIHRhYmxlLCBlbmFibGUKK2BtYXJrZG93 bi10cy1pbi10YWJsZS1tb2RlJy4iCisgIDpncm91cCAnbWFya2Rvd24tdHMKKyAgOmludGVyYWN0 aXZlIG5pbAorICAobWFya2Rvd24tdHMtLWJhcmYtaWYtbm90LW1vZGUgJ21hcmtkb3duLXRzLXRh YmxlLW1vZGUpCisgIChjb25kIChtYXJrZG93bi10cy10YWJsZS1tb2RlCisgICAgICAgICA7OyBF bmFibGUgdGhlIG1pbm9yIG1vZGUgYG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUnIGFuZAorICAg ICAgICAgOzsgaXRzIGtleW1hcCB3aGVuIHBvaW50IGlzIHdpdGhpbiBhIGNvZGUgYmxvY2suCisg ICAgICAgICAoYWRkLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29rCisgICAgICAgICAgICAgICAgICAg IydtYXJrZG93bi10cy0tZW5hYmxlLWluLXRhYmxlLW1vZGUgbmlsICdsb2NhbCkKKyAgICAgICAg IDs7IElmIGBzYXZlLXBsYWNlLW1vZGUnIG9yIHNpbWlsYXIgaXMgdXNlZCwgcG9pbnQgY291bGQg c3RhcnQgd2l0aGluCisgICAgICAgICA7OyBhIHRhYmxlLCBzbyBpbml0aWFsaXplIGZyb20gdGhh dCBzdGF0ZS4KKyAgICAgICAgIChydW4td2l0aC10aW1lciAwLjAxIG5pbAorICAgICAgICAgICAg ICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLWVuYWJsZS1pbi10YWJsZS1tb2RlKSkKKyAgICAg ICAgKHQKKyAgICAgICAgIChyZW1vdmUtaG9vayAncG9zdC1jb21tYW5kLWhvb2sKKyAgICAgICAg ICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1lbmFibGUtaW4tdGFibGUtbW9kZSAnbG9jYWwp KSkpCiAKIDs7OyMjI2F1dG9sb2FkCiAod2hlbiAoYm91bmRwICd0cmVlc2l0LW1ham9yLW1vZGUt cmVtYXAtYWxpc3QpCi0gIChhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFsaXN0ICcoIlxcLm1kXFwn IiAuIG1hcmtkb3duLXRzLW1vZGUtbWF5YmUpKQotICA7OyBUbyBiZSBhYmxlIHRvIHRvZ2dsZSBi ZXR3ZWVuIGFuIGV4dGVybmFsIHBhY2thZ2UgYW5kIGNvcmUgdHMtbW9kZToKKyAgKGFkZC10by1s aXN0ICdhdXRvLW1vZGUtYWxpc3QgJygiXFwubWRcXCciIC4gbWFya2Rvd24tdHMtbW9kZSkpCisg IChhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFsaXN0ICcoIlxcLm1hcmtkb3duXFwnIiAuIG1hcmtk b3duLXRzLW1vZGUpKQorICAoYWRkLXRvLWxpc3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5tZHhc XCciIC4gbWFya2Rvd24tdHMtbW9kZSkpCiAgIChhZGQtdG8tbGlzdCAndHJlZXNpdC1tYWpvci1t b2RlLXJlbWFwLWFsaXN0CiAgICAgICAgICAgICAgICAnKG1hcmtkb3duLW1vZGUgLiBtYXJrZG93 bi10cy1tb2RlKSkpCiAKLS0gCjIuNTQuMAoK --=-=-=--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 1 May 2026 08:56:03 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 01 04:56:02 2026 Received: from localhost ([127.0.0.1]:34145 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wIjfF-0004Mc-Iz for submit <at> debbugs.gnu.org; Fri, 01 May 2026 04:56:02 -0400 Received: from mail.eshelyaron.com ([107.175.124.16]:42670 helo=eshelyaron.com) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <me@HIDDEN>) id 1wIjfB-0004Lv-G9 for 80740 <at> debbugs.gnu.org; Fri, 01 May 2026 04:55:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eshelyaron.com; s=mail; t=1777625756; bh=Gz9GdeiK3lIcnxlBCCqf64hjxwciKTwsTmFKZDV4Hnk=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=lzHmLutodGKcQbm4heLTBZjsoc5/FDtfItaCGtEJmwszWSGwwomI2kUSRyiRrMZyk e89xdMRlU8FjUhULEoqzKvPqhjLMxx+3P0sx6yyCjkRoJr09loscSqOY3uggVv1YZy rI6Lv8mH1LO5Jc01TG7MNWCdSj2+pl93FOXZhid0m+eL0VOKtw18+FLezNpjYHlOCo mwawz75c1CP0P7753JMiEWzEDYQ5ftibYXqvlhlqIrM+MS3fLG8GxKIuagQ6hycj73 dM2EQgTDXpKBxTmrV6OTzSEZK7FAIVySZdU7k55PeFtOTyurkUaMTbwD7SvQ+YCNED P8YFQKKLWPIRg== From: Eshel Yaron <me@HIDDEN> To: Rahul Martim Juliato <rahuljuliato@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' In-Reply-To: <m2ik982h8d.fsf@HIDDEN> References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN> <m2ik982h8d.fsf@HIDDEN> Date: Fri, 01 May 2026 10:55:50 +0200 Message-ID: <871pfvtso9.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 80740 Cc: Eli Zaretskii <eliz@HIDDEN>, 80740 <at> debbugs.gnu.org, casouri@HIDDEN, 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.0 (-) Hi, Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > +(defun markdown-ts-mode-install-parsers (arg) > + "Install `markdown-ts-mode' tree-sitter language parsers. > +If needed, install the required parsers for `markdown' and `markdown-inline'. > +With a prefix argument, ARG, if needed, install parsers for `html', > +`yaml', and `toml'." > + (interactive "P") > + (unless (treesit-ready-p 'markdown t) > + (treesit-install-language-grammar 'markdown)) Note that this `treesit-ready-p' is not quite right, because treesit-ready-p is sensitive to the current buffer. Namely, this will return nil if you invoke this command in a large buffer of any kind, even if the markdown parser is already installed. Yes, treesit-ready-p is confusing. See also bug#80909. > + (unless (treesit-ready-p 'markdown-inline t) > + (treesit-install-language-grammar 'markdown-inline)) > + (when arg > + (unless (treesit-ready-p 'html t) > + (require 'html-ts-mode) > + (treesit-install-language-grammar 'html)) > + (unless (treesit-ready-p 'yaml t) > + (require 'yaml-ts-mode) > + (treesit-install-language-grammar 'yaml)) > + (unless (treesit-ready-p 'toml t) > + (require 'toml-ts-mode) > + (treesit-install-language-grammar 'toml)))) > > ;;;###autoload > (define-derived-mode markdown-ts-mode text-mode "Markdown" > - "Major mode for editing Markdown using tree-sitter grammar." > + "Major mode for editing Markdown using tree-sitter grammar. > +NOTE: See `markdown-ts--set-up-inline'." > + (if (and (treesit-ensure-installed 'markdown) > + (treesit-ensure-installed 'markdown-inline)) > + (markdown-ts--set-up) Here there is another, related problem: since commit d9691858, treesit-ensure-installed no longer checks treesit-max-buffer-size, so this will try to create a parser even in a buffer that is too big. (This problem is common to many TS-modes in core.) FWIW, my suggestion in bug#80909 was to move the buffer size check out of treesit-ready-p and into treesit-parser-create, which would have nullified both of these issues. Best, Eshel
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.
Received: (at 80740) by debbugs.gnu.org; 30 Apr 2026 23:47:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 30 19:47:53 2026
Received: from localhost ([127.0.0.1]:59067 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wIb6m-0006Zm-Hh
for submit <at> debbugs.gnu.org; Thu, 30 Apr 2026 19:47:53 -0400
Received: from mail-ua1-x92c.google.com ([2607:f8b0:4864:20::92c]:44083)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1wIb6g-0006Yw-Uj
for 80740 <at> debbugs.gnu.org; Thu, 30 Apr 2026 19:47:50 -0400
Received: by mail-ua1-x92c.google.com with SMTP id
a1e0cc1a2514c-95cda04cfd0so336008241.0
for <80740 <at> debbugs.gnu.org>; Thu, 30 Apr 2026 16:47:46 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1777592866; cv=none;
d=google.com; s=arc-20240605;
b=LZ5svAoGieehYMKmwk7YEcRWpC6Rfbs6XuUmxsMaATyeNUVdZwtzsU9S7sx5hYV9z5
tBFJ2cOgVITnGgFqnUN6DjudAlpARzgn2eWUaEzPrnvg4u8c3vTwE4E96TvIyzmxMVBX
pV3U5UnqtW5LZzoeTJTUF8VPOY61QwMJ9gpIZkws3IYs4LVkoIyAACugI8/U9DS+bHlC
Ar/osGaEnRd/vSxv3l2HmKjedVxFhwFwuKy5NauDubNaKkk+jx5ep4huHO3Tua3Jv15o
pf/YP4ocYcCvv5o2D2T0Np8iJISZYF7+Eb+ndTd9SesqxYy1DkPLGqLUCiTRigEyppVy
sZOw==
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=eXkw15+yq+vdwRTKP+2RiZ+2j5wmPP0EtxY0MHiYM4Q=;
fh=HfnI/+1r/B3q7T6Djpf//NMCId+4lph1lfzehgTh1fU=;
b=QAKCmNO0eSiVq+fD9FirkSJv9UxTrOy949CZ6nirJnNMMnX3ykW+VeuYAM3AiLRZFO
EWEht1+IpQTG5Z8jf8HAfBzCl1ruGP8B3b/Isi6fzKsssCOq+heXLq5NexPu8PU0EO6d
bzpxB0TzegdyFenMKqGqFj+zKnM7KdajG34mEigmJ55OfBUm5i+jDnBvD6XlrEkHp21v
w5250Jds8ARtF+EWJKyJIbYF+zMVHBTOHRA3Cw78XwvFSk44ij4aY/1/dBMxWg2W4p9T
Pkj2TBUJYUcQ5qPxXN2s95dJyR8q4f8qp5j9KTqjmeg1iOYMLN1gMSgGrfRzMRpmVeZI
ZmHw==; 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=1777592866; x=1778197666; 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=eXkw15+yq+vdwRTKP+2RiZ+2j5wmPP0EtxY0MHiYM4Q=;
b=VBt4i3qzQA+p9YPoK3mJmUYCPWFDaUjN6Rr+d4qBIVIV6kAXUFlZfsneQJcPifnOCH
Xwx/FnDiPTOQ5F2FcaSevzIJaIX73mHLKbvxDglY5lSvCi3cnTiaD6eS3247FQOS1Wnn
uVAy32sicA/4E2ttXKr6Cv3py97jGfocBzTy8fx65ARD+WHcaZfu1+IZYWucRjXo9jYQ
pbt5I//mqtkxy4/gPTWaPi8d8D3rShD3eOMvZ2jyYcwNR8zhtFhlKmeocWJ6gYD5sTnz
mwa43g7ns8m7Zzg+AvRvHGRB/3S22sw6uBrDINmZf9JdR2geIf0jARrAwBQcQyFRsU8R
Iz1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1777592866; x=1778197666;
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=eXkw15+yq+vdwRTKP+2RiZ+2j5wmPP0EtxY0MHiYM4Q=;
b=FKZ6U1PzUlfYe5gDZ6Bfbn8fXb/aMFSVOBlxxBdbi6ZlAQB3TgBNJ3JpTAEawK5Z2f
+joRpxGid7v+mNRHZNAqjLndO1Ge9y75DDPPga39aToxCxd8myYOvYI2VMkCBO1S2PTZ
Di4yFeJiBFuahDoKiwp5xehjTf2xCMfQzalwhZ3/HzRJd06eIMZcwl0fVcs1yEdREiWf
p4h/6QbzxFBk5bpEEpybOVaOZxF5o5rPY0OSdtsQJ+YCYwuot9VCN3HiIltXHjva+rjW
7dJKd4irL/GTrF/sVZ6q+3bldvvlgyWvtu9bWC+PFbJT0KSjJ2fpSM5PSTN9encl0GP5
MzTw==
X-Forwarded-Encrypted: i=1;
AFNElJ/teH4r/ZFMVlyzroUISXGAc8phQmQ7zsjX5Au3zZqak2F1LEwDhBVHXYJAjI30hwW5cfMLuw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxahRVI5oJe2KEaaVi1djbOND1906u+/MvbWNc+SWq+LQpE/ZLj
0OX1tb0A5dNWPXa4/CA72i0Ysu6FidUQ6+TSxLPLMO39IAig2HNN+V2abDucVRXb8sF2QAxwRb4
oFXrK8zR3G9X8cRQYzNVShQNnmPcbGro=
X-Gm-Gg: AeBDiet/5O8TCVZOfDFUpAg3akC3beqxHDUo3hcbSq8SEN4gIPb8Glu9tu3FDG09h4V
Skx6dpFeVFVLuvvgzOSYSuq5kFd8EYvsKXa+oaa6TEvQqMya+/9fvcbFOK1FwYYfSEkYWIkzoWo
TrIXk8xGt4DX5SmEpJZYU+sLedhoRshO1asmzg0UinH3ihKPpiMqex4QwkLOFKYKQJQbXKnutc7
0TPtU2Ctq6AIqG9XA/pRVfRVVxVjHRV+Ik/cHryfhB+cVm0Je6MVyYJedR22EeRqT2eLt+CWbMx
u3WiEPfhr5ATHtHr+KqLH9pEzEARtMBxizAfx33YElhMLVCu+MpFRqP8RarcZ4ZJGnGa2zg7z9t
jd1mX7MevUPXISvcqVtNjGPS9NHYm+BvEYFa/KLXRUw/TYMXPxIXty8JmIw==
X-Received: by 2002:a05:6102:688d:b0:60c:fe65:7dbd with SMTP id
ada2fe7eead31-62ad9f3934fmr3312732137.5.1777592866231; Thu, 30 Apr 2026
16:47:46 -0700 (PDT)
MIME-Version: 1.0
References: <m2zf3jzamy.fsf@HIDDEN>
<CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN>
<m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN>
<E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN>
<C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN>
<m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.fsf@HIDDEN>
<m2ik982h8d.fsf@HIDDEN>
In-Reply-To: <m2ik982h8d.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Thu, 30 Apr 2026 19:47:35 -0400
X-Gm-Features: AVHnY4KrHXNo1gnYXOYh9FjnhYDr0Iy7QDocKNzSoCcSlIZOnwIY9R-DXXB2qHU
Message-ID: <CAN+1HbqwOyQBAPpH9e6awLnf-JaaW2FgKZ7ur_PeN=Y0_mpRhQ@HIDDEN>
Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode'
To: Rahul Martim Juliato <rahuljuliato@HIDDEN>
Content-Type: multipart/alternative; boundary="00000000000058d8cc0650b61762"
X-Spam-Score: 2.0 (++)
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 Thu, Apr 30, 2026 at 6:52 PM Rahul Martim Juliato wrote:
> Rahul Martim Juliato writes: > > > Eli Zaretskii writes: > > > >>> From:
Rahul Martim Juliato > >>> Cc: Yuan Fu , rahuljuliato@HIDDEN, > >>> shipmints@HIDDEN,
80740 <at> debbugs.gnu.org > >> [...]
Content analysis details: (2.0 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (shipmints[at]gmail.com)
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
-0.0 SPF_PASS SPF: sender matches SPF record
1.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received'
headers
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[2607:f8b0:4864:20:0:0:0:92c listed in]
[list.dnswl.org]
0.0 HTML_MESSAGE BODY: HTML included in message
1.0 FREEMAIL_REPLY From and body contain different freemails
X-Debbugs-Envelope-To: 80740
Cc: Eli Zaretskii <eliz@HIDDEN>, 80740 <at> debbugs.gnu.org, casouri@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: 0.0 (/)
--00000000000058d8cc0650b61762
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Thu, Apr 30, 2026 at 6:52=E2=80=AFPM Rahul Martim Juliato <rahuljuliato@=
gmail.com>
wrote:
> Rahul Martim Juliato <rahuljuliato@HIDDEN> writes:
>
> > Eli Zaretskii <eliz@HIDDEN> writes:
> >
> >>> From: Rahul Martim Juliato <rahuljuliato@HIDDEN>
> >>> Cc: Yuan Fu <casouri@HIDDEN>, rahuljuliato@HIDDEN,
> >>> shipmints@HIDDEN, 80740 <at> debbugs.gnu.org
> >>> Date: Sat, 18 Apr 2026 12:22:42 -0300
> >>>
> >>> Eli Zaretskii <eliz@HIDDEN> writes:
> >>>
> >>> >> From: Yuan Fu <casouri@HIDDEN>
> >>> >> Date: Fri, 17 Apr 2026 18:18:16 -0700
> >>> >> Cc: Eli Zaretskii <eliz@HIDDEN>,
> >>> >> shipmints@HIDDEN,
> >>> >> 80740 <at> debbugs.gnu.org
> >>> >>
> >>> >> Cool, thanks! I don=E2=80=99t see it merged though, is it merged?
> >>> >
> >>> > No. From what Rahul said, I deduced that an updated patch is in th=
e
> >>> > works. Did I misunderstand?
> >>>
> >>> Hi everyone,
> >>>
> >>> The last patch I sent
> >>> (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D80740#37) is in good
> >>> shape, and all previous comments have been addressed.
> >>>
> >>> However, since we decided to give it another week, we identified thre=
e
> >>> small edge-case bugs that we're currently working on.
> >>>
> >>> If you're willing to wait, we can send a refined update around the
> >>> middle of next week.
> >>
> >> Fine with me, will wait.
> >>
> >>> St=C3=A9phane is also working on a separate patch with additional
> >>> features. That will be submitted independently (I won't spoil it, but
> >>> it's good stuff).
> >>>
> >>> I'm also working on a test file to ensure that future changes to this
> >>> mode (including improvements or grammar updates) don't introduce
> >>> regressions, and that any issues can be detected and diagnosed early.
> >>> This will also be submitted separately.
> >>
> >> TIA.
> >
> > Hi Eli,
> >
> > Just a quick update: we're almost there, but will likely need a couple
> > more days.
> >
> > In addition to the fixes, we're also finishing up table editing support=
.
> >
> > We are now using with-work-buffer, as the upstream issues have been
> > resolved. We also moved to a cleaner implementation for the table
> > handling logic.
> >
> > We should have the updated patch ready very soon.
> >
> > Thanks for your patience.
>
>
> Hi Eli,
>
> Thanks again for your patience.
>
> The work now covers all the features we originally planned for this
> overhaul, and the implementation is complete.
>
> Since the last revision, we added table editing support, including row
> and column manipulation, alignment, navigation, and CSV/TSV import and
> export helpers.
>
> The companion file (markdown-ts-mode-x.el) is also ready, providing
> table-of-contents generation and conversion/export commands using common
> external tools such as Pandoc, cmark, cmark-gfm, and markdown.pl.
>
> We also addressed the edge cases discussed earlier and made several
> refinements to the implementation.
>
> A special thanks to St=C3=A9phane for all the work on this, especially ar=
ound
> the table support, TOC, exporters, and refinements.
>
> Please find the updated patch attached.
>
Yuan, I think you were in the "hot seat" for this patch. All your treesit
work was leveraged pretty heavily and I think we did it right.
Ping us with any questions.
-St=C3=A9phane
--00000000000058d8cc0650b61762
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 Thu, Apr 30, 2026 at 6:52=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">Rahul Martim Juliato <<a href=3D"ma=
ilto:rahuljuliato@HIDDEN" target=3D"_blank">rahuljuliato@HIDDEN</a>&g=
t; writes:<br>
<br>
> Eli Zaretskii <<a href=3D"mailto:eliz@HIDDEN" target=3D"_blank">el=
iz@HIDDEN</a>> writes:<br>
><br>
>>> From: Rahul Martim Juliato <<a href=3D"mailto:rahuljuliato@=
gmail.com" target=3D"_blank">rahuljuliato@HIDDEN</a>><br>
>>> Cc: Yuan Fu <<a href=3D"mailto:casouri@HIDDEN" target=3D=
"_blank">casouri@HIDDEN</a>>,=C2=A0 <a href=3D"mailto:rahuljuliato@gm=
ail.com" target=3D"_blank">rahuljuliato@HIDDEN</a>,<br>
>>>=C2=A0 =C2=A0<a href=3D"mailto:shipmints@HIDDEN" target=3D"_=
blank">shipmints@HIDDEN</a>,=C2=A0 <a href=3D"mailto:80740@HIDDEN=
rg" target=3D"_blank">80740 <at> debbugs.gnu.org</a><br>
>>> Date: Sat, 18 Apr 2026 12:22:42 -0300<br>
>>> <br>
>>> Eli Zaretskii <<a href=3D"mailto:eliz@HIDDEN" target=3D"_b=
lank">eliz@HIDDEN</a>> writes:<br>
>>> <br>
>>> >> From: Yuan Fu <<a href=3D"mailto:casouri@HIDDEN=
" target=3D"_blank">casouri@HIDDEN</a>><br>
>>> >> Date: Fri, 17 Apr 2026 18:18:16 -0700<br>
>>> >> Cc: Eli Zaretskii <<a href=3D"mailto:eliz@HIDDEN"=
target=3D"_blank">eliz@HIDDEN</a>>,<br>
>>> >>=C2=A0 <a href=3D"mailto:shipmints@HIDDEN" target=
=3D"_blank">shipmints@HIDDEN</a>,<br>
>>> >>=C2=A0 <a href=3D"mailto:80740 <at> debbugs.gnu.org" target=
=3D"_blank">80740 <at> debbugs.gnu.org</a><br>
>>> >><br>
>>> >> Cool, thanks! I don=E2=80=99t see it merged though, i=
s it merged?<br>
>>> ><br>
>>> > No.=C2=A0 From what Rahul said, I deduced that an updated=
patch is in the<br>
>>> > works.=C2=A0 Did I misunderstand?<br>
>>> <br>
>>> Hi everyone,<br>
>>> <br>
>>> The last patch I sent<br>
>>> (<a href=3D"https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D80=
740#37" rel=3D"noreferrer" target=3D"_blank">https://debbugs.gnu.org/cgi/bu=
greport.cgi?bug=3D80740#37</a>) is in good<br>
>>> shape, and all previous comments have been addressed.<br>
>>> <br>
>>> However, since we decided to give it another week, we identifi=
ed three<br>
>>> small edge-case bugs that we're currently working on.<br>
>>> <br>
>>> If you're willing to wait, we can send a refined update ar=
ound the<br>
>>> middle of next week.<br>
>><br>
>> Fine with me, will wait.<br>
>><br>
>>> St=C3=A9phane is also working on a separate patch with additio=
nal<br>
>>> features. That will be submitted independently (I won't sp=
oil it, but<br>
>>> it's good stuff).<br>
>>> <br>
>>> I'm also working on a test file to ensure that future chan=
ges to this<br>
>>> mode (including improvements or grammar updates) don't int=
roduce<br>
>>> regressions, and that any issues can be detected and diagnosed=
early.<br>
>>> This will also be submitted separately.<br>
>><br>
>> TIA.<br>
><br>
> Hi Eli,<br>
><br>
> Just a quick update: we're almost there, but will likely need a co=
uple<br>
> more days.<br>
><br>
> In addition to the fixes, we're also finishing up table editing su=
pport.<br>
><br>
> We are now using with-work-buffer, as the upstream issues have been<br=
>
> resolved. We also moved to a cleaner implementation for the table<br>
> handling logic.<br>
><br>
> We should have the updated patch ready very soon.<br>
><br>
> Thanks for your patience.<br>
<br>
<br>
Hi Eli,<br>
<br>
Thanks again for your patience.<br>
<br>
The work now covers all the features we originally planned for this<br>
overhaul, and the implementation is complete.<br>
<br>
Since the last revision, we added table editing support, including row<br>
and column manipulation, alignment, navigation, and CSV/TSV import and<br>
export helpers.<br>
<br>
The companion file (markdown-ts-mode-x.el) is also ready, providing<br>
table-of-contents generation and conversion/export commands using common<br=
>
external tools such as Pandoc, cmark, cmark-gfm, and <a href=3D"http://mark=
down.pl" rel=3D"noreferrer" target=3D"_blank">markdown.pl</a>.<br>
<br>
We also addressed the edge cases discussed earlier and made several<br>
refinements to the implementation.<br>
<br>
A special thanks to St=C3=A9phane for all the work on this, especially arou=
nd<br>
the table support, TOC, exporters, and refinements.<br>
<br>
Please find the updated patch attached.<br></blockquote><div><br></div><div=
class=3D"gmail_default" style=3D"font-family:monospace">Yuan, I think you =
were in the "hot seat" for this patch.=C2=A0 All your treesit wor=
k was leveraged pretty heavily and I think we did it right.</div><div class=
=3D"gmail_default" style=3D"font-family:monospace"><br></div><div class=3D"=
gmail_default" style=3D"font-family:monospace">Ping us with any questions.<=
/div><div class=3D"gmail_default" style=3D"font-family:monospace"><br></div=
><div class=3D"gmail_default" style=3D"font-family:monospace">-St=C3=A9phan=
e=C2=A0</div></div></div>
--00000000000058d8cc0650b61762--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 30 Apr 2026 22:53:01 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 30 18:53:01 2026 Received: from localhost ([127.0.0.1]:58391 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wIaFh-0000It-BN for submit <at> debbugs.gnu.org; Thu, 30 Apr 2026 18:53:01 -0400 Received: from mail-dl1-x1232.google.com ([2607:f8b0:4864:20::1232]:60641) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>) id 1wIaFe-0000IU-Am for 80740 <at> debbugs.gnu.org; Thu, 30 Apr 2026 18:52:58 -0400 Received: by mail-dl1-x1232.google.com with SMTP id a92af1059eb24-12c1a170a50so1983027c88.0 for <80740 <at> debbugs.gnu.org>; Thu, 30 Apr 2026 15:52:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777589577; x=1778194377; 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=0GdLR7UQZg3WrrCjF1u9vD9EmLUmZQaJZuUJd5sFO1k=; b=bQK/3YYvKoUgW3qJLwt8bMWizHHvYTtLrlU07p8dN6umc3Pa0VE1lczh2PwzMBfiQm 2HL32MRgKqwmt2k8teh8Y4VvGU3pDSjQoZCpeKG30b9GGgMmrUGVdEUTJxMnjc+shtL1 kQeTIUkXy7hXlwFuaG2FfaEhmGOEj5aPFmyrIrPlwqgrl5FrMq0yWMnVQ+u28bIvsV2e P+u68xSUV37tcAJF2fzbRhff1WjZtpEv4/FSVPDI4zen0Bb15737tzjncGORHWwToU5T mfL0x+MSknDv+FRER52UePTQ/xpjB4Eg1mzMy4wzFjqSscGmmE6W7xkEirsKFNIS/57C FJQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777589577; x=1778194377; 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=0GdLR7UQZg3WrrCjF1u9vD9EmLUmZQaJZuUJd5sFO1k=; b=O5q4pk9YKpE23kjcBlnQ/lvUw6HRWWyaTwI8uqOVCFJ7EiayKslrupRRn/HKiQ/Y6f cGVLEi8bNZaUHtV32BqC61JeiC5yH8kGmfqE/s0/8eAJevOXZxK4JlznXoiSeem/FGYe rtFOFXFU1FW/pSdwSsqFs+MHIRSrhNaeQbdroPYM0UMRosNep0sMbClnF0ll4m+ZkBV9 /bM7R7tWwhpKn/FABGnJlRBE/j4mTIb/1mFxmBTYSxipbPadvd6IG2ydfmBrsp5fib0s NKdfte763tJl0HYTtkqnQz8tLHqZ27qKbcgj3mkCQvmODLMHTTEBkvDq9z72GMOKw0Dd MiHA== X-Forwarded-Encrypted: i=1; AFNElJ+Ud2pgd3exuBp33A1OsocquoM7TGx8fwlRDKWru07rtgJkVRXjpV0D2pgROSJih70r+b654w==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxD6LfSxECzWgCm2r2wcj7rU3e6pTj+VpR+Xz/1A7CCwmfQOG5S wJkItPDCWL1ls+Qk9ivPlRE3yUxlLfY1tG1S0ghWwFLkNUbd3+Qh+vp0UunAjlvN4SE= X-Gm-Gg: AeBDieuk8hyCFRvwbZBXJtzWcZVCLbx2uumVeJ4SW2Y7x7NYg6eaxhHhmaVbaKtESiB IGBxZGYVn/MNdvfnue2dAtsNOL2WE4H3nEatGfyoXhkzfeNlOcPMjFZPg6x973mksT0jxWNeslr yqayZVaoWP9EfhYu3CI/Gluj/0r0kF+ZH6YZDfvtC/sqSRj4mbjBW/EAoMNO0SpFjxgQKFWoRb1 nJGEKuR4NbJfLQRTcLgq4En0qGETdZkVhYyXdagO7NC3H74HFtE61pddN/SGNBciIg8eA2Mxy7q wEHk7zfetAiwqEWqz0jt/faDrwOavJ9Ow78FwJofClFc7kqWNlNxhe7iXOeTl8RtsthFtmuMha0 R45Fbyp97mIya5R3U4lPjtl3OcOapmM0M1bX1QoYHwyl9gAKng33fJh9I+0q9doq1RYdBazA5OJ YgO/OGyUrGuiY/xhSiTOEgS3dF1aolRedDn0jLZb4oOE9HpB6cvBFCyH+tCTWXntyAFcelA/KEC nP8z6sGd/9ULX9kXXZ/Auf7ww/DZtyXU4zMRpsFwy8jwGWyKJK+Dxch X-Received: by 2002:a05:7022:6897:b0:12c:8b9:71d9 with SMTP id a92af1059eb24-12deacfefb8mr2446932c88.27.1777589576326; Thu, 30 Apr 2026 15:52:56 -0700 (PDT) Received: from MacBook-Pro.local (201-93-59-29.dial-up.telesp.net.br. [201.93.59.29]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12df8279e57sm610874c88.3.2026.04.30.15.52.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 15:52:55 -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: <m2fr4ldxl3.fsf@HIDDEN> References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.fsf@HIDDEN> <m2fr4ldxl3.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, 30 Apr 2026 19:52:50 -0300 Message-ID: <m2ik982h8d.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 Rahul Martim Juliato <rahuljuliato@HIDDEN> writes: > Eli Zaretskii <eliz@HIDDEN> writes: > >>> From: Rahul Martim Juliato <rahuljuliato@HIDDEN> >>> Cc: Yuan Fu <casouri@HIDDEN>, rahuljuliato@HIDDEN, >>> shipmints@HIDDEN, 80740 <at> debbugs.gnu.org >>> Date: Sat, 18 Apr 2026 12:22:42 -0300 >>>=20 >>> Eli Zaretskii <eliz@HIDDEN> writes: >>>=20 >>> >> From: Yuan Fu <casouri@HIDDEN> >>> >> Date: Fri, 17 Apr 2026 18:18:16 -0700 >>> >> Cc: Eli Zaretskii <eliz@HIDDEN>, >>> >> shipmints@HIDDEN, >>> >> 80740 <at> debbugs.gnu.org >>> >> >>> >> Cool, thanks! I don=E2=80=99t see it merged though, is it merged? >>> > >>> > No. From what Rahul said, I deduced that an updated patch is in the >>> > works. Did I misunderstand? >>>=20 >>> Hi everyone, >>>=20 >>> The last patch I sent >>> (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D80740#37) is in good >>> shape, and all previous comments have been addressed. >>>=20 >>> However, since we decided to give it another week, we identified three >>> small edge-case bugs that we're currently working on. >>>=20 >>> If you're willing to wait, we can send a refined update around the >>> middle of next week. >> >> Fine with me, will wait. >> >>> St=C3=A9phane is also working on a separate patch with additional >>> features. That will be submitted independently (I won't spoil it, but >>> it's good stuff). >>>=20 >>> I'm also working on a test file to ensure that future changes to this >>> mode (including improvements or grammar updates) don't introduce >>> regressions, and that any issues can be detected and diagnosed early. >>> This will also be submitted separately. >> >> TIA. > > Hi Eli, > > Just a quick update: we're almost there, but will likely need a couple > more days. > > In addition to the fixes, we're also finishing up table editing support. > > We are now using with-work-buffer, as the upstream issues have been > resolved. We also moved to a cleaner implementation for the table > handling logic. > > We should have the updated patch ready very soon. > > Thanks for your patience. Hi Eli, Thanks again for your patience. The work now covers all the features we originally planned for this overhaul, and the implementation is complete. Since the last revision, we added table editing support, including row and column manipulation, alignment, navigation, and CSV/TSV import and export helpers. The companion file (markdown-ts-mode-x.el) is also ready, providing table-of-contents generation and conversion/export commands using common external tools such as Pandoc, cmark, cmark-gfm, and markdown.pl. We also addressed the edge cases discussed earlier and made several refinements to the implementation. A special thanks to St=C3=A9phane for all the work on this, especially arou= nd the table support, TOC, exporters, and refinements. Please find the updated patch attached. --=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 RnJvbSA0YjQxYTZhNWMzNjU4OGJjZjE3MDNmZTlkNjkxNDUwMGNmZjNiYTUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn bWFpbC5jb20+CkRhdGU6IEZyaSwgMyBBcHIgMjAyNiAyMzo0MTo0NyAtMDMwMApTdWJqZWN0OiBb UEFUQ0hdIEltcHJvdmUgJ21hcmtkb3duLXRzLW1vZGUnCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k aW5nOiA4Yml0CgpPdmVyaGF1bCAnbWFya2Rvd24tdHMtbW9kZScgd2l0aCBjb21wcmVoZW5zaXZl IGZvbnRpZmljYXRpb24sCmNvZGUgYmxvY2sgaGFuZGxpbmcsIGVkaXRpbmcgY29tbWFuZHMsIGZp bGwtcGFyYWdyYXBoIHN1cHBvcnQsCmlubGluZSBpbWFnZSBwcmV2aWV3cywgYSBtb2RlIG1lbnUs IGFuZCB0YWJsZSBlZGl0aW5nLiAgQWRkCidtYXJrZG93bi10cy1tb2RlLXguZWwnIHdpdGggY29u dmVyc2lvbi9leHBvcnQgYW5kIFRPQyBzdXBwb3J0LgoKKiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93 bi10cy1tb2RlLmVsOiBBZGQgVmVyc2lvbiwKUGFja2FnZS1SZXF1aXJlcywgYW5kIEtleXdvcmRz IGhlYWRlciBmaWVsZHMuICBFeHBhbmQgQ29tbWVudGFyeQp3aXRoIGRvY3VtZW50YXRpb24gZm9y IGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMsIGNvZGUgYmxvY2sKY29tbWFuZHMsIGJpZGlyZWN0 aW9uYWwgdGV4dCwgYW5kIGtub3duIHRyZWUtc2l0dGVyIGdyYW1tYXIKYnVncy4KKHJlcXVpcmUg J2dvdG8tYWRkciwgeHJlZiwgaWNvbnMpOiBOZXcgcmVxdWlyZW1lbnRzLgoobWFya2Rvd24tdHMp OiBOZXcgY3VzdG9taXphdGlvbiBncm91cCB3aXRoIDp2ZXJzaW9uIGFuZAo6cGFja2FnZS12ZXJz aW9uIHRhZ3MuCihtYXJrZG93bi10cy1oaWRlLW1hcmt1cCk6IEFkZCA6dmVyc2lvbiBhbmQgOnBh Y2thZ2UtdmVyc2lvbi4KKG1hcmtkb3duLXRzLWVsbGlwc2lzKTogTmV3IG9wdGlvbiBmb3IgZm9s ZGVkIGhlYWRpbmcgZWxsaXBzaXMuCihtYXJrZG93bi10cy1tZW51LWJhci1zaG93KTogTmV3IG9w dGlvbiB0byB0b2dnbGUgbW9kZSBtZW51LgoobWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nKTog TmV3IG9wdGlvbiBmb3IgZGVmYXVsdCBmb2xkCmxldmVsLgoobWFya2Rvd24tdHMtaW5saW5lLWlt YWdlcyk6IE5ldyBvcHRpb24gdG8gZGlzcGxheSBpbmxpbmUKaW1hZ2VzLgoobWFya2Rvd24tdHMt aW1hZ2UtbWF4LXdpZHRoKTogTmV3IG9wdGlvbiBmb3IgaW1hZ2UgbWF4IHdpZHRoLgoobWFya2Rv d24tdHMtZGlzcGxheS1yZW1vdGUtaW5saW5lLWltYWdlcyk6IE5ldyBvcHRpb24gZm9yCnJlbW90 ZSBpbWFnZSBoYW5kbGluZy4KKG1hcmtkb3duLXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUpOiBO ZXcgaGVscGVyIHRvIHJlc29sdmUKZGlzcGxheSB2YWx1ZXMgdXNpbmcgY2hhci1kaXNwbGF5YWJs ZS1wLgoobWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveCk6IE5ldyBvcHRpb24gZm9yIGNoZWNr ZWQgY2hlY2tib3gKZGlzcGxheSBzdHJpbmcgb3IgaWNvbi4KKG1hcmtkb3duLXRzLWNoZWNrZWQt Y2hlY2tib3gtaWNvbik6IE5ldyBpY29ucy5lbCBpY29uIGZvciB0aGUKY2hlY2tlZCB2YXJpYW50 LgoobWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94KTogTmV3IG9wdGlvbiBmb3IgdW5jaGVj a2VkCmNoZWNrYm94IGRpc3BsYXkgc3RyaW5nIG9yIGljb24uCihtYXJrZG93bi10cy11bmNoZWNr ZWQtY2hlY2tib3gtaWNvbik6IE5ldyBpY29ucy5lbCBpY29uIGZvciB0aGUKdW5jaGVja2VkIHZh cmlhbnQuCihtYXJrZG93bi10cy10aGVtYXRpYy1icmVhay1jaGFyYWN0ZXIpOiBOZXcgb3B0aW9u IGZvciB0aGVtYXRpYwpicmVhayBkaXNwbGF5IGNoYXJhY3Rlci4KKG1hcmtkb3duLXRzLWhhcmQt bGluZS1icmVhay1iYWNrc2xhc2gpOiBOZXcgb3B0aW9uIGZvciB0aGUKZ2x5cGggc2hvd24gaW4g cGxhY2Ugb2YgYSB0cmFpbGluZy1iYWNrc2xhc2ggaGFyZCBsaW5lIGJyZWFrCndoZW4gbWFya3Vw IGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZSk6IE5ldyBvcHRp b24gZm9yIHRoZSBnbHlwaApzaG93biBpbiBwbGFjZSBvZiBhIHRyYWlsaW5nLXNwYWNlcyBoYXJk IGxpbmUgYnJlYWsgd2hlbiBtYXJrdXAKaXMgaGlkZGVuLgoobWFya2Rvd24tdHMtY29kZS1ibG9j ay1pbi1jb250ZXh0LW1vZGUtbGlnaHRlcik6IE5ldyBvcHRpb24gZm9yCmNvZGUgYmxvY2sgY29u dGV4dCBtb2RlIGxpZ2h0ZXIgc3RyaW5nLgoobWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2Nr LW1vZGUtd2FybmluZ3MpOiBOZXcgb3B0aW9uIHRvCmluaGliaXQgY29kZS1ibG9jayBtYWpvci1t b2RlIG1lc3NhZ2VzIGFuZCB3YXJuaW5ncy4KKG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1bHQtY29s dW1uLXdpZHRoKTogTmV3IG9wdGlvbiBmb3IgZGVmYXVsdAp0YWJsZSBjb2x1bW4gd2lkdGguCiht YXJrZG93bi10cy1lbmFibGUtdGFibGUtbW9kZSk6IE5ldyBvcHRpb24gdG8gZW5hYmxlIHRhYmxl Cm1vZGUuCihtYXJrZG93bi10cy10YWJsZS1hdXRvLWFsaWduKTogTmV3IG9wdGlvbiBmb3IgdHJp Z2dlcnMgdGhhdApjYXVzZSBhdXRvbWF0aWMgdGFibGUgYWxpZ25tZW50LgoobWFya2Rvd24tdHMt dGFibGUtYWxpZ24tZmVhdHVyZXMpOiBOZXcgb3B0aW9uIGZvciB0YWJsZSBhbGlnbgpmZWF0dXJl cy4KKG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbGlnaHRlcik6IE5ldyBvcHRpb24gZm9yCm1h cmtkb3duLXRzLWluLXRhYmxlLW1vZGUgbGlnaHRlciBzdHJpbmcuCihtYXJrZG93bi10cy1lbXBo YXNpcywgbWFya2Rvd24tdHMtYm9sZCkKKG1hcmtkb3duLXRzLXN0cmlrZXRocm91Z2gsIG1hcmtk b3duLXRzLWxpbmspCihtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9uLCBtYXJrZG93bi10cy1j b2RlLXNwYW4pCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLCBtYXJrZG93bi10cy1jb2RlLWJsb2Nr LW1hcmt1cC1oaWRkZW4pCihtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2NrLCBtYXJrZG93 bi10cy1odG1sLXRhZykKKG1hcmtkb3duLXRzLWh0bWwtYmxvY2ssIG1hcmtkb3duLXRzLXRoZW1h dGljLWJyZWFrKQoobWFya2Rvd24tdHMtZW50aXR5LXJlZmVyZW5jZSkKKG1hcmtkb3duLXRzLW51 bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSwgbWFya2Rvd24tdHMtbGF0ZXgpCihtYXJrZG93bi10 cy10YWJsZS1oZWFkZXIsIG1hcmtkb3duLXRzLXRhYmxlLWNlbGwpCihtYXJrZG93bi10cy10YWJs ZS1kZWxpbWl0ZXItY2VsbCwgbWFya2Rvd24tdHMtdGFzay11bmNoZWNrZWQpCihtYXJrZG93bi10 cy10YXNrLWNoZWNrZWQpOiBOZXcgZmFjZXMuCihtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWst YmFja3NsYXNoKQoobWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaC1oaWRkZW4p CihtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UpCihtYXJrZG93bi10cy1oYXJkLWxp bmUtYnJlYWstc3BhY2UtaGlkZGVuKTogTmV3IGZhY2VzIGZvciB0aGUKdHdvIGhhcmQtbGluZS1i cmVhayB2YXJpYW50cywgd2l0aCBkaXN0aW5jdCBzaG93bi9oaWRkZW4KYXBwZWFyYW5jZXMuCiht YXJrZG93bi10cy1pbi1jb2RlLWJsb2NrKTogTmV3IGZhY2UgZm9yIHdoZW4gcG9pbnQgaXMgaW5z aWRlIGEKZmVuY2VkIGNvZGUgYmxvY2suCihtYXJrZG93bi10cy10YWJsZSk6IE5ldyBmYWNlIGZv ciBNYXJrZG93biBwaXBlIHRhYmxlCmJhY2tncm91bmQuCihtYXJrZG93bi10cy1pbi10YWJsZSk6 IE5ldyBmYWNlIGZvciBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlCndoZW4gcG9pbnQgaXMgaW4g YSB0YWJsZS4KKG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lKTogTmV3IHZhcmlhYmxlIGZvciBs aWdodHdlaWdodCBzZXR1cAppbiBlbWJlZGRlZCBpbmxpbmUgbWFya2Rvd24tdHMtbW9kZSBidWZm ZXJzIHVzZWQgYnkgY29kZSBibG9jawpjb21tYW5kcy4KKG1hcmtkb3duLXRzLWRlZmF1bHQtY29k ZS1ibG9jay1tb2RlKTogTmV3IHZhcmlhYmxlIHRvIGRlZmluZQpkZWZhdWx0IG1vZGUgZm9yIGFu b255bW91cyBjb2RlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLWZvbnRpZnktY29kZS1ibG9ja3MtbmF0 aXZlbHkpOiBOZXcgb3B0aW9uIHRvCmVuYWJsZS9kaXNhYmxlIG5hdGl2ZSBmb250aWZpY2F0aW9u IG9mIGZlbmNlZCBjb2RlIGJsb2NrCmNvbnRlbnRzLgoobWFya2Rvd24tdHMtZW5hYmxlLWNvZGUt YmxvY2stY29udGV4dC1tb2RlKTogTmV3IG9wdGlvbiB0bwplbmFibGUvZGlzYWJsZSBjb2RlIGJs b2NrIGNvbnRleHQgaW50ZWdyYXRpb24uCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKTog TmV3IHZhcmlhYmxlIHJlcGxhY2luZwptYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1t YXAgYW5kCm1hcmtkb3duLXRzLWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwIHdpdGggdW5pZmll ZCBsYW5ndWFnZSB0bwptb2RlIG1hcHBpbmcgaW5jbHVkaW5nIGhldXJpc3RpYyBsb29rdXAuCiht YXJrZG93bi10cy1jb2RlLWJsb2NrLWZvcmNlLWNvbnZlbnRpb25hbC1tb2Rlcyk6IE5ldyB2YXJp YWJsZQpsaXN0aW5nIHRyZWUtc2l0dGVyIG1vZGVzIHdob3NlIGZvbnRpZmljYXRpb24gb2YgY29k ZSBibG9jawpjb250ZW50IHNob3VsZCBiZSBoYXJ2ZXN0ZWQgdmlhIGEgdGVtcG9yYXJ5IGJ1ZmZl ci4KKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC1idWZmZXIpOiBOZXcgY29uc3RhbnQgZm9yIHRh YmxlIGV4cG9ydApvdXRwdXQgYnVmZmVyIG5hbWUuCihtYXJrZG93bi10cy0tdGFibGUtcm93LXR5 cGVzLCBtYXJrZG93bi10cy0tdGFibGUtY2VsbC10eXBlcykKKG1hcmtkb3duLXRzLS10YWJsZS1k ZWxpbWl0ZXItY2VsbC10eXBlcykKKG1hcmtkb3duLXRzLS10YWJsZS1kZWxpbWl0ZXItY2VsbC1z dWJ0eXBlcyk6IE5ldyBjb25zdGFudHMgZm9yCnBpcGUgdGFibGUgbm9kZSB0eXBlIGNsYXNzaWZp Y2F0aW9uLgoobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24pOiBOZXcgZnVuY3Rpb24gdG8g Y3JlYXRlCmNsaWNrYWJsZSBsaW5rIGJ1dHRvbnMgd2l0aCBtYWlsdG8sIGJyb3dzZS11cmwsIGFu ZCBmaW5kLWZpbGUKZGlzcGF0Y2guCihtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0 aW9uKTogTmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGxpbmsgZGVzdGluYXRpb25zIHdoZW4gbWFy a3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZSwgbWFya2Rvd24tdHMt LWxpbmstcmVmLWNhY2hlLXRpY2spCihtYXJrZG93bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMp CihtYXJrZG93bi10cy0tcmVzb2x2ZS1saW5rLXJlZik6IE5ldyBsaW5rIHJlZmVyZW5jZSBkZWZp bml0aW9uCmNhY2hlIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZyBwZXIgQ29tbW9uTWFy ayBzcGVjLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKTogTmV3IGZvbnRpZmllciBm b3IgaW5saW5lLApyZWZlcmVuY2UsIHNob3J0Y3V0LCBhbmQgY29sbGFwc2VkIGxpbmtzIGFzIGNs aWNrYWJsZSBidXR0b25zLgoobWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmspOiBOZXcgZm9u dGlmaWVyIGZvciBVUkkgYW5kIGVtYWlsCmF1dG9saW5rcyB3aXRoIGFuZ2xlIGJyYWNrZXQgaGlk aW5nLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1yZWYtbGFiZWwpCihtYXJrZG93bi10cy0t Zm9udGlmeS1saW5rLXJlZi1kZXN0aW5hdGlvbik6IE5ldyBmb250aWZpZXJzIGZvcgpsaW5rIHJl ZmVyZW5jZSBkZWZpbml0aW9ucy4KKG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1Yi1zdHJpcC1yZSwg bWFya2Rvd24tdHMtLXNsdWctZ2l0aHViKQoobWFya2Rvd24tdHMtLXNsdWctcGFuZG9jLCBtYXJr ZG93bi10cy0tZXhwbGljaXQtaWQtcmUpCihtYXJrZG93bi10cy0taGVhZGluZy10ZXh0LWFuZC1p ZCkKKG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkLWNhY2hlKQoobWFya2Rvd24tdHMtLWhlYWRpbmct aWQtY2FjaGUtdGljaykKKG1hcmtkb3duLXRzLS1idWlsZC1oZWFkaW5nLWlkcywgbWFya2Rvd24t dHMtLWhlYWRpbmctaWRzKQoobWFya2Rvd24tdHMtLWZvbGxvdy1mcmFnbWVudCk6IE5ldyBmcmFn bWVudCBsaW5rIHN1cHBvcnQgd2l0aApHaXRIdWIgYW5kIFBhbmRvYyBzbHVnIGFsZ29yaXRobXMu CihtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCkKKG1hcmtkb3duLXRzLS1mb250aWZ5 LWxhdGV4LWJsb2NrKTogTmV3IExhVGVYL21hdGggZm9udGlmaWVyCndpdGggY3Jvc3MtcGFyYWdy YXBoIHZhbGlkYXRpb24uCihtYXJrZG93bi10cy0tZm9udGlmeS1iYWNrc2xhc2gtZXNjYXBlKTog TmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGJhY2tzbGFzaCBpbiBlc2NhcGVzIGV4Y2VwdCBpbnNp ZGUgTGFUZVggYmxvY2tzLgoobWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHksIG1hcmtkb3duLXRz LS1mb250aWZ5LWVudGl0eSk6IE5ldwpIVE1MIGVudGl0eSBkZWNvZGVyIGFuZCBmb250aWZpZXIg dXNpbmcgb3JnLWVudGl0aWVzIGFuZApzZ21sLWNoYXItbmFtZXMgd2l0aCBkaXNwbGF5IHByb3Bl cnR5IGZvciBkZWNvZGVkIHZhbHVlcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94KTog TmV3IGZvbnRpZmllciBzaG93aW5nIHRoZQpjb25maWd1cmVkIGNoZWNrYm94IGdseXBoIHdoZW4g bWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWhhcmQtbGluZS1icmVhayk6 IE5ldyBmb250aWZpZXIgZm9yCidoYXJkX2xpbmVfYnJlYWsnIG5vZGVzLgoobWFya2Rvd24tdHMt LWZvbnRpZnktaGVhZGluZyk6IE5ldyBmb250aWZpZXIgZm9yIEFUWCBhbmQgU2V0ZXh0CmhlYWRp bmdzLgoobWFya2Rvd24tdHMtLWZvbnRpZnktdGhlbWF0aWMtYnJlYWspOiBOZXcgZm9udGlmaWVy IHNob3dpbmcKaG9yaXpvbnRhbCBsaW5lIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3du LXRzLS1mb250aWZ5LWNvZGUtYmxvY2spOiBOZXcgZm9udGlmaWVyIGFwcGx5aW5nCmJhY2tncm91 bmQgb3ZlcmxheSB0byBjb2RlIGJsb2NrcyB3aXRoIGxhbmd1YWdlIGFuZCBtb2RlCnByb3BlcnRp ZXMuCihtYXJrZG93bi10cy1hdC1jb2RlLWJsb2NrLXApCihtYXJrZG93bi10cy1jb2RlLWJsb2Nr LWxhbmd1YWdlLWF0KQoobWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLWF0KTogTmV3IGFjY2Vz c29ycyBmb3IgY29kZSBibG9jawpvdmVybGF5IHByb3BlcnRpZXMuCihtYXJrZG93bi10cy0taW1l bnUtY29kZS1ibG9jay1ub2RlLXApOiBOZXcgaGVscGVyIGZvciBpbWVudQpjb2RlIGJsb2NrIGRl dGVjdGlvbi4KKG1hcmtkb3duLXRzLS1pbWFnZS1hbG9uZS1vbi1saW5lLXApCihtYXJrZG93bi10 cy0tZm9udGlmeS1pbWFnZSk6IE5ldyBpbmxpbmUgaW1hZ2UgZGlzcGxheSB3aXRoCnN0YW5kYWxv bmUgYW5kIGlubGluZSBwb3NpdGlvbmluZy4KKG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHAp CihtYXJrZG93bi10cy0tYmFyZS1lbWFpbC11cmktcmVnZXhwKQoobWFya2Rvd24tdHMtLWZvbnRp ZnktYmFyZS11cmkpOiBOZXcgYmFyZSBVUkwvZW1haWwKZm9udGlmaWNhdGlvbiB2aWEgaml0LWxv Y2sgdXNpbmcgZ290by1hZGRyIHJlZ2V4cHMuCihtYXJrZG93bi10cy0tdHJlZXNpdC1zZXR0aW5n cyk6IFJld3JpdGUgd2l0aCBkZWRpY2F0ZWQgZmFjZXMsCmN1c3RvbSBmb250aWZpZXJzLCBhbmQg bmV3IGZvbnQtbG9jayBmZWF0dXJlcyBmb3IgYWxsIGlubGluZSBhbmQKYmxvY2sgZWxlbWVudHMu ICBBbHNvIGFkZCBhIG5ldyAnZXJyb3InIGZvbnQtbG9jayBmZWF0dXJlCmhpZ2hsaWdodGluZyB0 cmVlLXNpdHRlciBFUlJPUiBub2Rlcy4KKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdl cykKKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2Rlcyk6IE5ldyBidWZmZXItbG9j YWwgYWxpc3RzCmZvciBjb2RlIGJsb2NrIGxhbmd1YWdlIHRyYWNraW5nLgoobWFya2Rvd24tdHMt LWhhcnZlc3QtbW9kZS10cmVlc2l0LWNvbmZpZ3VyYXRpb24pOiBSZW5hbWUgZnJvbQptYXJrZG93 bi10cy0taGFydmVzdC10cmVlc2l0LWNvbmZpZ3Mgd2l0aCBkZWxheS1tb2RlLWhvb2tzLgoobWFy a2Rvd24tdHMtLWNvbmZpZ3VyZS1jdXJyZW50LWJ1ZmZlcik6IFJlbmFtZSBmcm9tCm1hcmtkb3du LXRzLS1hZGQtY29uZmlnLWZvci1tb2RlLgoobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUp OiBOZXcgaGVscGVyIGV4dHJhY3RpbmcgbGFuZ3VhZ2UKc3ltYm9sIGZyb20gY29kZV9mZW5jZV9j b250ZW50IG5vZGUuCihtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpOiBOZXcgYnVm ZmVyLWxvY2FsIGhhc2ggdGFibGUKY2FjaGluZyBmb250aWZpY2F0aW9uIHJlc3VsdHMgZm9yIG5v bi10cmVlLXNpdHRlciBjb2RlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1j b2xsZWN0LWZhY2VzKTogTmV3IGZ1bmN0aW9uCmhhcnZlc3RpbmcgZmFjZSBwcm9wZXJ0aWVzIGZy b20gYSBtb2RlIGluIGFuIGluZGlyZWN0IG9yCnRlbXBvcmFyeSBidWZmZXIuCihtYXJrZG93bi10 cy0tZm9udGlmeS1ub24tdHMtY29kZS1ibG9jayk6IE5ldyBmb250aWZpZXIgZm9yCm5vbi10cmVl LXNpdHRlciBtb2RlcyB2aWEgdGVtcG9yYXJ5IGJ1ZmZlciBmb250LWxvY2suCihtYXJrZG93bi10 cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2RlKTogTmV3IGZ1bmN0aW9uIHdpdGgKaGV1cmlzdGlj IG1vZGUgbmFtZSBwcm9iaW5nLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2Up OiBSZW5hbWUgZnJvbQptYXJrZG93bi10cy0tY29udmVydC1jb2RlLWJsb2NrLWxhbmd1YWdlIHdp dGggc3VwcG9ydCBmb3Igbm9uLXRzCm1vZGVzIGFuZCByZWN1cnNpdmUgbWFya2Rvd24gaGFuZGxp bmcuCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzKQoobWFya2Rvd24tdHMtY29kZS1i bG9jay10aGluZy1jb21tYW5kcykKKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stcmVnaW9uLWNvbW1h bmRzKTogTmV3IGNvbW1hbmQgbGlzdHMgZm9yCmNvZGUtYmxvY2sgY29udGV4dCBleGVjdXRpb24u CihtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlKQoobWFya2Rv d24tdHMtLW1heWJlLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2spCihtYXJrZG93bi10cy0tY29k ZS1ibG9jay14cmVmLWZpbmQtZGVmaW5pdGlvbnMpCihtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQt aW4tY29kZS1ibG9jayk6IE5ldyBjb2RlIGJsb2NrIG1pbm9yCm1vZGUgd2l0aCB0ZW1wLWJ1ZmZl ciBjb21tYW5kIGRpc3BhdGNoLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZSk6IE5l dyBjb21tYW5kIGZvciBuZXdsaW5lCmluc2lkZSBjb2RlIGJsb2NrcywgZGlzcGF0Y2hpbmcgdG8g dGhlIGJsb2NrJ3MgbW9kZS4KKG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncyk6IFVwZGF0ZSBy YW5nZSBjb25maWd1cmF0aW9uOwpyZW1vdmUgOnJhbmdlLWZuIHRyZWVzaXQtcmFuZ2UtZm4tZXhj bHVkZS1jaGlsZHJlbi4KKG1hcmtkb3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMpCihtYXJr ZG93bi10cy0tb3V0bGluZS12aWV3LWNoYW5nZSk6IE5ldyBoZWxwZXJzIGZvciBpbWFnZQpvdmVy bGF5IG1hbmFnZW1lbnQgZHVyaW5nIG91dGxpbmUgZm9sZC91bmZvbGQuCihtYXJrZG93bi10cy0t b3V0bGluZS1pbnZpc2libGUtcCk6IE5ldyBoZWxwZXIgdGVzdGluZyB3aGV0aGVyIGEKcG9zaXRp b24gaXMgaW5zaWRlIGFuIG91dGxpbmUtZm9sZGVkIHJlZ2lvbi4KKG1hcmtkb3duLXRzLS1ob3N0 LXJhbmdlcy1ub3RpZmllcik6IE5ldyBmdW5jdGlvbiBwcnVuaW5nIHN0YWxlCmNvZGUgYmxvY2sg b3ZlcmxheXMgd2hlbiB0aGUgaG9zdCBwYXJzZSB0cmVlIGNoYW5nZXMuCihtYXJrZG93bi10cy0t YmFyZi1pZi1ub3QtbW9kZSk6IE5ldyBoZWxwZXIgc2lnbmFsaW5nIGEKdXNlci1lcnJvciB3aGVu IHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBub3QgZGVyaXZlZCBmcm9tCm1hcmtkb3duLXRzLW1vZGUu CihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZSk6IE5ldyBtaW5vciBtb2Rl IGVuYWJsZWQKd2hlbiBwb2ludCBpcyB3aXRoaW4gYSBmZW5jZWQgY29kZSBibG9jaywgYWN0aXZh dGluZwptYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1tYXAgc28gZWxpZ2li bGUgY29tbWFuZHMKZGlzcGF0Y2ggdG8gdGhlIGJsb2NrJ3MgbWFqb3IgbW9kZS4KKG1hcmtkb3du LXRzLS1zZXQtaGlkZS1tYXJrdXApOiBDbGVhciBpbWFnZSBvdmVybGF5cyB3aGVuCnRvZ2dsaW5n IG1hcmt1cCB2aXNpYmlsaXR5LgoobWFya2Rvd24tdHMtLXNldC1pbmxpbmUtaW1hZ2VzKQoobWFy a2Rvd24tdHMtdG9nZ2xlLWlubGluZS1pbWFnZXMpOiBOZXcgZnVuY3Rpb25zIGZvciB0b2dnbGlu ZwppbmxpbmUgaW1hZ2UgZGlzcGxheS4KKG1hcmtkb3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgt bGV2ZWwpOiBOZXcgY29uc3RhbnQuCihtYXJrZG93bi10cy0taGVhZGluZy1hdC1wb2ludCwgbWFy a2Rvd24tdHMtLWhlYWRpbmctbGV2ZWwpCihtYXJrZG93bi10cy0tc2VjdGlvbi1hdC1wb2ludCk6 IE5ldyBoZWFkaW5nIG5hdmlnYXRpb24gaGVscGVycy4KKG1hcmtkb3duLXRzLXByb21vdGUsIG1h cmtkb3duLXRzLWRlbW90ZSk6IE5ldyBjb21tYW5kcyBmb3IKaGVhZGluZyBhbmQgbGlzdCBpdGVt IHByb21vdGlvbi9kZW1vdGlvbiB3aXRoIHJlZ2lvbiBzdXBwb3J0LgoobWFya2Rvd24tdHMtLXBy b21vdGUtb3ItZGVtb3RlKQoobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lvbik6 IE5ldyBoZWFkaW5nIGxldmVsCmFkanVzdG1lbnQgZnVuY3Rpb25zLgoobWFya2Rvd24tdHMtbW92 ZS1zdWJ0cmVlLXVwLCBtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtZG93bik6Ck5ldyBjb21tYW5k cyBmb3IgbW92aW5nIHNlY3Rpb25zIGFuZCBsaXN0IGl0ZW1zLgoobWFya2Rvd24tdHMtLXNlY3Rp b24tZm9sZGVkLXApCihtYXJrZG93bi10cy0tbW92ZS1zdWJ0cmVlLXVwLW9yLWRvd24pOiBOZXcg c3VidHJlZSBtb3ZlIHdpdGgKZm9sZGluZyBzdGF0ZSBwcmVzZXJ2YXRpb24uCihtYXJrZG93bi10 cy10b2dnbGUtY2hlY2tib3gpOiBOZXcgY29tbWFuZCB0byB0b2dnbGUgdGFzayBsaXN0CmNoZWNr Ym94ZXMuCihtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KTogTmV3IGhlbHBlciB3aXRo IGJsb2NrIHF1b3RlCm1hcmtlciBoYW5kbGluZy4KKG1hcmtkb3duLXRzLS1saXN0LW1hcmtlci13 aWR0aCwgbWFya2Rvd24tdHMtLWxpc3QtaXRlbS1yZWdpb24pCihtYXJrZG93bi10cy0tbGlzdC1v cmRlcmVkLWl0ZW0tcCk6IE5ldyBsaXN0IGl0ZW0gaGVscGVycy4KKG1hcmtkb3duLXRzLS1saXN0 LXByb21vdGUtb3ItZGVtb3RlKTogTmV3IGZ1bmN0aW9uIHdpdGggb3JkZXJlZApsaXN0IG5lc3Rp bmcgZ3VhcmQuCihtYXJrZG93bi10cy0tbGlzdC1ub2RlLWJvbCwgbWFya2Rvd24tdHMtLWxpc3Qt bW92ZSk6IE5ldyBsaXN0Cml0ZW0gbW92ZW1lbnQgZnVuY3Rpb25zLgoobWFya2Rvd24tdHMtcmVu dW1iZXItbGlzdCk6IE5ldyBjb21tYW5kIGZvciBzZXF1ZW50aWFsIGxpc3QKcmVudW1iZXJpbmcg d2l0aCBwcmVmaXggYXJndW1lbnQgc3VwcG9ydC4KKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3 LW1hcmtlcikKKG1hcmtkb3duLXRzLS1uZXctbWFya2VyLWZvci1saW5lKTogTmV3IG1hcmtlciBz dHJpbmcgZ2VuZXJhdG9ycwpmb3IgbGlzdCBpdGVtIGluc2VydGlvbi4KKG1hcmtkb3duLXRzLS1s aW5lLWJsb2NrLXF1b3RlLWRlcHRoKTogTmV3IGhlbHBlciBjb3VudGluZyBibG9jawpxdW90ZSBk ZXB0aC4KKG1hcmtkb3duLXRzLW5ld2xpbmUpOiBOZXcgUkVUIGNvbW1hbmQgZm9yIGNvbnRleHQt YXdhcmUKbmV3bGluZS4KKG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0pOiBOZXcgTS1SRVQg Y29tbWFuZCB0aGF0IGNyZWF0ZXMgYQpuZXcgbGlzdCBpdGVtLgoobWFya2Rvd24tdHMtLWZpbGwt dW5maWxsYWJsZS1ibG9jay1xdWVyeSk6IE5ldyB0cmVlLXNpdHRlcgpxdWVyeSBmb3IgdW5maWxs YWJsZSBibG9ja3MuCihtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uKTogTmV3IGhl bHBlciBmb3IgbGlzdCBpdGVtCnRleHQgYWxpZ25tZW50LgoobWFya2Rvd24tdHMtLWZpbGwtbGlz dC1pdGVtKTogTmV3IGZ1bmN0aW9uIGZpbGxpbmcgd2l0aGluIGxpc3QKaXRlbXMgd2l0aG91dCBt ZXJnaW5nIGFkamFjZW50IGl0ZW1zLgoobWFya2Rvd24tdHMtLWFkYXB0aXZlLWZpbGwpOiBOZXcg YWRhcHRpdmUgZmlsbCBmdW5jdGlvbiBmb3IKbGlzdCBpdGVtIGNvbnRpbnVhdGlvbi4KKG1hcmtk b3duLXRzLS1maWxsLWZvcndhcmQtcGFyYWdyYXBoKTogTmV3IHBhcmFncmFwaCBtb3Rpb24KcmVz cGVjdGluZyBsaXN0IGl0ZW1zIGFuZCB1bmZpbGxhYmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLWZp bGwtcGFyYWdyYXBoKTogTmV3IGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uIHdpdGgKY29uZCogZGlz cGF0Y2ggZm9yIGxpc3RzLCBibG9jayBxdW90ZXMsIEhUTUwgY29tbWVudHMsIGFuZAp1bmZpbGxh YmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1maWxsLWh0bWwtY29tbWVudCk6IE5ldyBIVE1MIGNv bW1lbnQgZmlsbGVyIHdpdGgKY29udGludWF0aW9uIGFsaWdubWVudC4KKG1hcmtkb3duLXRzLS1i bG9jay1xdW90ZS1wcmVmaXgpOiBOZXcgaGVscGVyIHByZXNlcnZpbmcKZXhpc3RpbmcgYmxvY2sg cXVvdGUgbWFya2VyIHN0eWxlLgoobWFya2Rvd24tdHMtLWZpbGwtYmxvY2stcXVvdGUpOiBOZXcg YmxvY2sgcXVvdGUgZmlsbGVyIHdpdGgKbGlzdCBpdGVtIHRleHQgY29sdW1uIGFsaWdubWVudC4K KG1hcmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0KTogTmV3IGFsaXN0IG9mIGVtcGhhc2lzIG1hcmtl cnMuCihtYXJrZG93bi10cy0tZW1waGFzaXMtbm9kZS1hdC1wb2ludCk6IE5ldyB0cmVlLXNpdHRl ciBiYXNlZAplbXBoYXNpcyBkZXRlY3Rpb24uCihtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMp OiBOZXcgY29tbWFuZCByZW1vdmluZyBlbXBoYXNpcyBhdApwb2ludCBvciByZWdpb24uCihtYXJr ZG93bi10cy1lbXBoYXNpemUpOiBOZXcgaW50ZXJhY3RpdmUgZW1waGFzaXMgaW5zZXJ0aW9uIHdp dGgKcmVnaW9uIHdyYXBwaW5nIGFuZCB3b3JkLWF0LXBvaW50IHN1cHBvcnQuCihtYXJrZG93bi10 cy1pbnNlcnQtc3RydWN0dXJlKTogTmV3IGNvbW1hbmQgZm9yIGluc2VydGluZyBjb2RlCmJsb2Nr cywgYmxvY2sgcXVvdGVzLCBhbmQgZGl2aWRlcnMuCihtYXJrZG93bi10cy0taW5zZXJ0LWNvZGUt YmxvY2spOiBOZXcgZnVuY3Rpb24gd2l0aCBsYW5ndWFnZQpjb21wbGV0aW9uIGZyb20ga25vd24g bW9kZXMuCihtYXJrZG93bi10cy0taW5zZXJ0LWJsb2NrLXF1b3RlKTogTmV3IGZ1bmN0aW9uIHdp dGggcmVnaW9uCndyYXBwaW5nLgoobWFya2Rvd24tdHMtLWluc2VydC1kaXZpZGVyKTogTmV3IGZ1 bmN0aW9uIGZvciBob3Jpem9udGFsCnJ1bGVzLgoobWFya2Rvd24tdHMtLWFwcGx5LWVsbGlwc2lz KTogTmV3IGZ1bmN0aW9uIGFwcGx5aW5nIGN1c3RvbQplbGxpcHNpcyB2aWEgZGlzcGxheSB0YWJs ZS4KKG1hcmtkb3duLXRzLS1zZXQtdXApOiBSZW5hbWUgZnJvbSBtYXJrZG93bi10cy1zZXR1cC4K KG1hcmtkb3duLXRzLW91dGxpbmUtY3ljbGUpOiBOZXcgVEFCIGNvbW1hbmQgY3ljbGluZyBvdXRs aW5lCnZpc2liaWxpdHkgb24gaGVhZGluZ3MuCihtYXJrZG93bi10cy1tb2RlLW1hcCk6IE5ldyBr ZXltYXAgZm9yIGNvZGUgYmxvY2sgbmF2aWdhdGlvbiwKYmluZGluZ3MgZm9yIGhlYWRpbmcgbmF2 aWdhdGlvbiwgc3RydWN0dXJlIGVkaXRpbmcsIGVtcGhhc2lzLAphbmQgbGlzdCBvcGVyYXRpb25z LgoobWFya2Rvd24tdHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtbWFwKTogTmV3IGtleW1h cCBmb3IKY29kZSBibG9jayBjb250ZXh0LgoobWFya2Rvd24tdHMtbW9kZS1tZW51KTogTmV3IG1l bnUgYmFyIHdpdGggU2hvdy9IaWRlLCBOYXZpZ2F0ZQpIZWFkaW5ncywgRWRpdCBTdHJ1Y3R1cmUs IGFuZCBFZGl0aW5nIHNlY3Rpb25zLgoobWFya2Rvd24tdHMtbW9kZSk6IEFkZCBvdXRsaW5lLW1p bm9yLW1vZGUsIGVsbGlwc2lzLCBmb2xkaW5nLApmaWxsLXBhcmFncmFwaCBpbnRlZ3JhdGlvbiwg Y29kZS1ibG9jay1jb250ZXh0LW1vZGUgaG9va3MsCmNvbW1lbnQgc2V0dGluZ3MsIGFuZCBvdXRs aW5lLXZpZXctY2hhbmdlLWhvb2suICBVc2UKbWFya2Rvd24tdHMtbW9kZSBkaXJlY3RseSBpbiBh dXRvLW1vZGUtYWxpc3QgaW5zdGVhZCBvZgptYXJrZG93bi10cy1tb2RlLW1heWJlLgoobWFya2Rv d24tdHMtbW9kZS1pbnN0YWxsLXBhcnNlcnMpOiBOZXcgY29tbWFuZCBmb3IgaW5zdGFsbGluZwpy ZXF1aXJlZCBhbmQgb3B0aW9uYWwgdHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgZ3JhbW1hcnMuCihtYXJr ZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZSk6IE5ldyBtaW5vciBtb2RlIGZvciBjb2Rl CmJsb2NrIGNvbnRleHQuCihtYXJrZG93bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlcikK KG1hcmtkb3duLXRzLS1maW5kLW5leHQtY29kZS1ibG9jay1kZWxpbWl0ZXIpOiBOZXcgaGVscGVy cyBmb3IKbG9jYXRpbmcgZmVuY2VkIGNvZGUgYmxvY2sgZGVsaW1pdGVyIG5vZGVzLgoobWFya2Rv d24tdHMtbW92ZS10by1uZXh0LWNvZGUtYmxvY2spCihtYXJrZG93bi10cy1tb3ZlLXRvLXByZXZp b3VzLWNvZGUtYmxvY2spOiBOZXcgY29tbWFuZHMgZm9yCm5hdmlnYXRpbmcgYmV0d2VlbiBmZW5j ZWQgY29kZSBibG9ja3MuCihtYXJrZG93bi10cy0tdGFibGUtYWJ1dHRpbmctcG9zLCBtYXJrZG93 bi10cy0tdGFibGUtbm9kZS1jZWxsKQoobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93LCBtYXJr ZG93bi10cy0tdGFibGUtcGFyc2UtZXJyb3ItcCk6Ck5ldyBwaXBlIHRhYmxlIG5vZGUgaGVscGVy cy4KKG1hcmtkb3duLXRzLWF0LXRhYmxlLXApOiBOZXcgcHJlZGljYXRlIHJldHVybmluZyBub24t bmlsIHdoZW4KcG9pbnQgaXMgYXQgb3Igd2l0aGluIGEgcGlwZSB0YWJsZS4KKG1hcmtkb3duLXRz LS1lbmFibGUtaW4tdGFibGUtbW9kZSk6IE5ldyBoZWxwZXIgZW5hYmxpbmcKbWFya2Rvd24tdHMt aW4tdGFibGUtbW9kZSBmcm9tIHBvc3QtY29tbWFuZC1ob29rLgoobWFya2Rvd24tdHMtLXRhYmxl LWJvZHktcm93LW5lYXItcG9zKTogTmV3IGhlbHBlciBsb2NhdGluZyB0aGUKbmVhcmVzdCBib2R5 IHJvdyB0byBhIHBvc2l0aW9uLgoobWFya2Rvd24tdHMtLXRhYmxlLWNvbXB1dGUtbm9kZS1jb2x1 bW4pCihtYXJrZG93bi10cy10YWJsZS0tZ290by1jb2x1bW4pOiBOZXcgaGVscGVycyBmb3IgY29s dW1uLWJhc2VkCnRhYmxlIG5hdmlnYXRpb24uCihtYXJrZG93bi10cy0tdGFibGUtYWxpZ25lcnMs IG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIpCihtYXJrZG93bi10cy0tdGFibGUtYWxp Z24tY2VsbCk6IE5ldyB0YWJsZSBjZWxsIGFsaWdubWVudApoZWxwZXJzLgoobWFya2Rvd24tdHMt dGFibGUtaW5zZXJ0LXRhYmxlKTogTmV3IGNvbW1hbmQgdG8gaW5zZXJ0IGEgcGlwZQp0YWJsZSB3 aXRoIGNvbmZpZ3VyYWJsZSByb3dzIGFuZCBjb2x1bW5zLgoobWFya2Rvd24tdHMtdGFibGUtZGVs ZXRlLXRhYmxlKTogTmV3IGNvbW1hbmQgdG8gZGVsZXRlIHRoZSBwaXBlCnRhYmxlIGF0IHBvaW50 LgoobWFya2Rvd24tdHMtdGFibGUtcHJldmlvdXMtcm93LCBtYXJrZG93bi10cy10YWJsZS1uZXh0 LXJvdykKKG1hcmtkb3duLXRzLXRhYmxlLXByZXZpb3VzLWNlbGwsIG1hcmtkb3duLXRzLXRhYmxl LW5leHQtY2VsbCk6Ck5ldyBjb21tYW5kcyBmb3IgbmF2aWdhdGluZyB0YWJsZSByb3dzIGFuZCBj ZWxscy4KKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYmVsb3cpCihtYXJrZG93bi10cy10 YWJsZS1pbnNlcnQtcm93LWFib3ZlKQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWJlbG93 KQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWFib3ZlKQoobWFya2Rvd24tdHMtdGFibGUt aW5zZXJ0LXJvdyk6IE5ldyBjb21tYW5kcyBmb3IgaW5zZXJ0aW5nIGFuZApjbG9uaW5nIHRhYmxl IHJvd3MuCihtYXJrZG93bi10cy10YWJsZS1kZWxldGUtcm93LCBtYXJrZG93bi10cy10YWJsZS1t b3ZlLXJvdy11cCkKKG1hcmtkb3duLXRzLXRhYmxlLW1vdmUtcm93LWRvd24sIG1hcmtkb3duLXRz LXRhYmxlLW1vdmUtcm93KToKTmV3IGNvbW1hbmRzIGZvciBkZWxldGluZyBhbmQgbW92aW5nIHRh YmxlIHJvd3MuCihtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQpCihtYXJrZG93 bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLXJpZ2h0KQoobWFya2Rvd24tdHMtdGFibGUtY2xvbmUt Y29sdW1uLWxlZnQpCihtYXJrZG93bi10cy10YWJsZS1jbG9uZS1jb2x1bW4tcmlnaHQpCihtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uKTogTmV3IGNvbW1hbmRzIGZvciBpbnNlcnRpbmcK YW5kIGNsb25pbmcgdGFibGUgY29sdW1ucy4KKG1hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1jb2x1 bW4pCihtYXJrZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbi1sZWZ0KQoobWFya2Rvd24tdHMtdGFi bGUtbW92ZS1jb2x1bW4tcmlnaHQpCihtYXJrZG93bi10cy10YWJsZS1tb3ZlLWNvbHVtbik6IE5l dyBjb21tYW5kcyBmb3IgZGVsZXRpbmcgYW5kCm1vdmluZyB0YWJsZSBjb2x1bW5zLgoobWFya2Rv d24tdHMtdGFibGUtYWxpZ24tY29sdW1uLWxlZnQpCihtYXJrZG93bi10cy10YWJsZS1hbGlnbi1j b2x1bW4tY2VudGVyKQoobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uLXJpZ2h0KQoobWFy a2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uKTogTmV3IGNvbW1hbmRzIGZvciBzZXR0aW5nCmNv bHVtbiBhbGlnbm1lbnQuCihtYXJrZG93bi10cy10YWJsZS1hbGlnbi10YWJsZSk6IE5ldyBjb21t YW5kIHRvIGFsaWduIGFsbApjb2x1bW5zIGluIHRoZSB0YWJsZSBhdCBwb2ludC4KKG1hcmtkb3du LXRzLXRhYmxlLXRyYW5zcG9zZS10YWJsZSk6IE5ldyBjb21tYW5kIHRvIHRyYW5zcG9zZQp0aGUg dGFibGUgYXQgcG9pbnQuCihtYXJrZG93bi10cy10YWJsZS1jb252ZXJ0LWNzdi1yZWdpb24pCiht YXJrZG93bi10cy10YWJsZS1jb252ZXJ0LXRzdi1yZWdpb24pCihtYXJrZG93bi10cy10YWJsZS1j b252ZXJ0LXJlZ2lvbik6IE5ldyBjb21tYW5kcyB0byBjb252ZXJ0CmRlbGltaXRlZCB0ZXh0IHJl Z2lvbnMgdG8gcGlwZSB0YWJsZXMuCihtYXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUtY3N2 KQoobWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlLXRzdikKKG1hcmtkb3duLXRzLXRhYmxl LWV4cG9ydC10YWJsZSk6IE5ldyBjb21tYW5kcyB0byBleHBvcnQgdGhlCnBpcGUgdGFibGUgYXQg cG9pbnQgdG8gQ1NWIG9yIFRTViBmb3JtYXQuCihtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlLW1h cCk6IE5ldyBrZXltYXAgZm9yCm1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUuCihtYXJrZG93bi10 cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YpOiBOZXcgYnVmZmVyLWxvY2FsCnZhcmlh YmxlIGZvciBjb2RlIGJsb2NrIGNvbnRleHQgb3ZlcmxheS4KKG1hcmtkb3duLXRzLS1jb2RlLWJs b2NrLWluLWNvbnRleHQtbW9kZS11cGRhdGUtb3YpOiBOZXcKZnVuY3Rpb24gdXBkYXRpbmcgdGhl IGNvZGUgYmxvY2sgY29udGV4dCBvdmVybGF5LgoobWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZSk6 IE5ldyBtaW5vciBtb2RlIGVuYWJsZWQgd2hlbiBwb2ludAppcyB3aXRoaW4gYSBwaXBlIHRhYmxl LCBhY3RpdmF0aW5nIG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbWFwLgoobWFya2Rvd24tdHMt LWluLXRhYmxlLW1vZGUtb3YpCihtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1nZXQtb3YpCiht YXJrZG93bi10cy0tdGFibGUtdGljay11cGRhdGUpCihtYXJrZG93bi10cy0tdGFibGUtdGljay1z dGFsZS1wKQoobWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtdXBkYXRlLW92KTogTmV3IGhlbHBl cnMgc3VwcG9ydGluZwptYXJrZG93bi10cy1pbi10YWJsZS1tb2RlIG92ZXJsYXkgbWFuYWdlbWVu dC4KKG1hcmtkb3duLXRzLXRhYmxlLW1vZGUpOiBOZXcgbWlub3IgbW9kZSBwcm92aWRpbmcgdGFi bGUgZWRpdGluZwpjb21tYW5kcyBhbmQgYXV0by1hbGlnbm1lbnQuCihtYXJrZG93bi10cy1tb2Rl LW1heWJlKTogUmVtb3ZlOyBhdXRvLW1vZGUtYWxpc3Qgbm93IHVzZXMKbWFya2Rvd24tdHMtbW9k ZSBkaXJlY3RseS4KQXV0by1tb2RlLWFsaXN0OiBBZGQgLm1hcmtkb3duIGFuZCAubWR4IGV4dGVu c2lvbnMuCgoqIGxpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbDogTmV3IGZpbGUg cHJvdmlkaW5nIGV4dHJhCmZlYXR1cmVzIGZvciBtYXJrZG93bi10cy1tb2RlLgoobWFya2Rvd24t dHMtY29tbW9ubWFyay1zcGVjLXVybCwgbWFya2Rvd24tdHMtZ2ZtLXNwZWMtdXJsKTogTmV3CmNv bnN0YW50cyBmb3IgQ29tbW9uTWFyayBhbmQgR0ZNIHNwZWNpZmljYXRpb24gVVJMcy4KKG1hcmtk b3duLXRzLWJyb3dzZS1jb21tb25tYXJrLXNwZWMpCihtYXJrZG93bi10cy1icm93c2UtZ2ZtLXNw ZWMpOiBOZXcgY29tbWFuZHMgdG8gYnJvd3NlIHRoZQpDb21tb25NYXJrIGFuZCBHRk0gc3BlY2lm aWNhdGlvbnMuCihtYXJrZG93bi10cy1jb252ZXJ0KTogTmV3IGN1c3RvbWl6YXRpb24gZ3JvdXAg Zm9yIE1hcmtkb3duCmNvbnZlcnNpb24vZXhwb3J0IGZlYXR1cmVzLgoobWFya2Rvd24tdHMtZGVm YXVsdC1jb252ZXJ0ZXIpOiBOZXcgb3B0aW9uIHRvIHNldCB0aGUgZGVmYXVsdApmb3JtYXQgYW5k IGNvbnZlcnRlciBmb3IgTWFya2Rvd24gZXhwb3J0LgoobWFya2Rvd24tdHMtY29udmVydC1kaXNw bGF5LWZ1bmN0aW9uKTogTmV3IG9wdGlvbiBzcGVjaWZ5aW5nCnRoZSBmdW5jdGlvbiB1c2VkIHRv IGRpc3BsYXkgY29udmVydGVkIG91dHB1dC4KKG1hcmtkb3duLXRzLWNvbnZlcnRlcnMpOiBOZXcg dmFyaWFibGUgbGlzdGluZyBmb3JtYXQvY29udmVydGVyCmNvbmZpZ3VyYXRpb25zIGZvciBwYW5k b2MsIGNtYXJrLCBjbWFyay1nZm0sIG1hcmtkb3duLCBhbmQKbWFya2Rvd24ucGwuCihtYXJrZG93 bi10cy1jb252ZXJ0LWZpbGUsIG1hcmtkb3duLXRzLWNvbnZlcnQpOiBOZXcgY29tbWFuZHMgdG8K Y29udmVydCBNYXJrZG93biBidWZmZXJzIG9yIGZpbGVzIHRvIEhUTUwsIFBERiwgYW5kIG90aGVy CmZvcm1hdHMgdmlhIGV4dGVybmFsIGNvbnZlcnRlcnMuCihtYXJrZG93bi10cy10b2MpOiBOZXcg Y3VzdG9taXphdGlvbiBncm91cCBmb3IgdGFibGUgb2YgY29udGVudHMKZmVhdHVyZXMuCihtYXJr ZG93bi10cy10b2MtZ2VuZXJhdGUtd2Fybi1pZi1ub25lKTogTmV3IG9wdGlvbiBjb250cm9sbGlu ZwpiZWhhdmlvciB3aGVuIG5vIFRPQyBpcyBmb3VuZCBkdXJpbmcgZ2VuZXJhdGlvbi4KKG1hcmtk b3duLXRzLXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZS1saWdodGVyKTogTmV3IG9wdGlvbgpm b3IgdGhlIGJlZm9yZS1zYXZlIFRPQyB1cGRhdGUgbWlub3IgbW9kZSBsaWdodGVyIHN0cmluZy4K KG1hcmtkb3duLXRzLXRvYy1zbHVnLWZ1bmN0aW9uKTogTmV3IG9wdGlvbiB0byBzZWxlY3QgdGhl IHNsdWcKYWxnb3JpdGhtIHVzZWQgZm9yIFRPQyBoZWFkaW5nIGFuY2hvcnMuCihtYXJrZG93bi10 cy0tdG9jLWhhbmRsZXMsIG1hcmtkb3duLXRzLS10b2MtaGFuZGxlLWNsYXNzZXMpOiBOZXcKdmFy aWFibGVzIGRlZmluaW5nIFRPQyBoYW5kbGUgdHlwZXMgYW5kIGNsYXNzZXMuCihtYXJrZG93bi10 cy0tdG9jLWV4cGFuZC1jYW5kaWRhdGUtaGFuZGxlcywgbWFya2Rvd24tdHMtLXRvY3MpCihtYXJr ZG93bi10cy0tdG9jcy1zYW5pdHktY2hlY2spCihtYXJrZG93bi10cy0tdG9jLWNvbGxlY3QtY2Fu ZGlkYXRlcykKKG1hcmtkb3duLXRzLS10b2MtbGlzdC1pdGVtLWRlcHRoKQoobWFya2Rvd24tdHMt LXRvYy1hdHhfaGVhZGVyLW5vcm1hbGl6ZSkKKG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxp emVycykKKG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxpemUpOiBOZXcgaW50ZXJuYWwgaGVs cGVycyBmb3IgVE9DCnBhcnNpbmcgYW5kIHRleHQgbm9ybWFsaXphdGlvbi4KKG1hcmtkb3duLXRz LXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZSk6IE5ldyBtaW5vciBtb2RlIHRoYXQKcmVnZW5l cmF0ZXMgdGFibGVzIG9mIGNvbnRlbnRzIGJlZm9yZSBzYXZpbmcuCihtYXJrZG93bi10cy10b2Mt Y2xlYXItYW5kLXJlbW92ZSwgbWFya2Rvd24tdHMtdG9jLWNsZWFyKTogTmV3CmNvbW1hbmRzIHRv IHJlbW92ZSBvciBjbGVhciBUT0MgYm9kaWVzLgoobWFya2Rvd24tdHMtdG9jLWluc2VydC10ZW1w bGF0ZSk6IE5ldyBjb21tYW5kIHRvIGluc2VydCBhIFRPQwp0ZW1wbGF0ZSBhdCBwb2ludC4KKG1h cmtkb3duLXRzLXRvYy1nZW5lcmF0ZSk6IE5ldyBjb21tYW5kIHRvIGdlbmVyYXRlIHRhYmxlcyBv Zgpjb250ZW50cyBpbiB0aGUgY3VycmVudCBidWZmZXIuCgpJbmNsdWRlcyBmaXhlcyBmb3I6IChi dWcjODA2MTMpIChidWcjODA2MjUpIChidWcjODA2OTApCgpDby1hdXRob3JlZC1ieTogU3TDqXBo YW5lIE1hcmtzIDxzaGlwbWludHNAZ21haWwuY29tPgotLS0KIGxpc3AvdGV4dG1vZGVzL21hcmtk b3duLXRzLW1vZGUteC5lbCB8IDExMzQgKysrKysrCiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10 cy1tb2RlLmVsICAgfCA1NDE3ICsrKysrKysrKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNo YW5nZWQsIDYyNjYgaW5zZXJ0aW9ucygrKSwgMjg1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGxpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbAoKZGlmZiAtLWdpdCBh L2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUteC5lbCBiL2xpc3AvdGV4dG1vZGVzL21h cmtkb3duLXRzLW1vZGUteC5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNzQwNTA3OGFiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3RleHRtb2Rlcy9tYXJrZG93 bi10cy1tb2RlLXguZWwKQEAgLTAsMCArMSwxMTM0IEBACis7OzsgbWFya2Rvd24tdHMtbW9kZS14 LmVsIC0tLSBtYXJrZG93bi10cy1tb2RlIGV4dHJhcyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0OyAt Ki0KKworOzsgQ29weXJpZ2h0IChDKSAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorCis7OyBBdXRob3IgICAgICAgICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1 bGlhdG9AZ21haWwuY29tPgorOzsgICAgICAgICAgICAgICAgICA6IFN0w6lwaGFuZSBNYXJrcyA8 c2hpcG1pbnRzQGdtYWlsLmNvbT4KKzs7IE1haW50YWluZXIgICAgICAgOiBSYWh1bCBNYXJ0aW0g SnVsaWF0byA8cmFodWwuanVsaWF0b0BnbWFpbC5jb20+Cis7OyBDcmVhdGVkICAgICAgICAgIDog QXByaWwgMjAyNgorOzsgVmVyc2lvbiAgICAgICAgICA6IDEuMAorOzsgUGFja2FnZS1SZXF1aXJl cyA6ICgoZW1hY3MgIjMxLjEiKSkKKzs7IEtleXdvcmRzICAgICAgICAgOiBtYXJrZG93biBtZCB0 ZXh0IGVkaXQgbGFuZ3VhZ2VzIHRyZWUtc2l0dGVyCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdOVSBFbWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor OzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNzIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUg PGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1lbnRhcnk6CisKKzs7 OyBDb2RlOgorCisocmVxdWlyZSAnbWFya2Rvd24tdHMtbW9kZSkKKworOzs7IENvbnZlbmllbmNl OgorCisoZGVmY29uc3QgbWFya2Rvd24tdHMtY29tbW9ubWFyay1zcGVjLXVybAorICAiaHR0cHM6 Ly9zcGVjLmNvbW1vbm1hcmsub3JnL2N1cnJlbnQvIikKKworKGRlZmNvbnN0IG1hcmtkb3duLXRz LWdmbS1zcGVjLXVybAorICAiaHR0cHM6Ly9naXRodWIuZ2l0aHViLmNvbS9nZm0vIikKKworKGRl ZnVuIG1hcmtkb3duLXRzLWJyb3dzZS1jb21tb25tYXJrLXNwZWMgKCkKKyAgIkJyb3dzZSB0aGUg Q29tbW9uTWFyayBNYXJrZG93biBzcGVjIGluIGEgd2ViIGJyb3dzZXIuIgorICAoaW50ZXJhY3Rp dmUpCisgIChicm93c2UtdXJsIG1hcmtkb3duLXRzLWNvbW1vbm1hcmstc3BlYy11cmwpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtYnJvd3NlLWdmbS1zcGVjICgpCisgICJCcm93c2UgdGhlIEdpdEh1 YiBGbGF2b3JlZCBNYXJrZG93biBzcGVjIGluIGEgd2ViIGJyb3dzZXIuIgorICAoaW50ZXJhY3Rp dmUpCisgIChicm93c2UtdXJsIG1hcmtkb3duLXRzLWdmbS1zcGVjLXVybCkpCisKKzs7OyBFeHBv cnQgYW5kIHByZXZpZXc6CisKKyhkZWZncm91cCBtYXJrZG93bi10cy1jb252ZXJ0IG5pbAorICAi Q29udmVydCBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycyBvciBmaWxlcy4iCisgIDpwcmVmaXgg Im1hcmtkb3duLXRzLWNvbnZlcnQtIgorICA6Z3JvdXAgJ3RleHQKKyAgOmdyb3VwICdlZGl0aW5n CisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1kZWZhdWx0LWNv bnZlcnRlciBuaWwKKyAgIkRlZmF1bHQgTWFya2Rvd24gZm9ybWF0IGFuZCBjb252ZXJ0ZXIuCitJ ZiBuaWwsIHlvdSB3aWxsIGJlIHByb21wdGVkIGZvciBhIGZvcm1hdCBhbmQgYSBjb252ZXJ0ZXIu CitTZWUgYG1hcmtkb3duLXRzLWNvbnZlcnRlcnMnLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0 IDp0YWcgIlByb21wdCBmb3IgZm9ybWF0IGFuZCBjb252ZXJ0ZXIiIG5pbCkKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIlBERiB2aWEgUGFuZG9jIiAocGRmIC4gcGFuZG9jKSkKKyAgICAg ICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkhUTUwgdmlhIFBhbmRvYyIgKGh0bWwgLiBwYW5kb2Mp KQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgY21hcmsiIChodG1sIC4g Y21hcmspKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgY21hcmstZ2Zt IChHaXRIdWIgYmVsbHMgYW5kIHdoaXN0bGVzKSIgKGh0bWwgLiBjbWFyay1nZm0pKQorICAgICAg ICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgbWFya2Rvd24iIChodG1sIC4gbWFya2Rv d24pKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiSFRNTCB2aWEgbWFya2Rvd24ucGwi IChodG1sIC4gbWFya2Rvd24ucGwpKQorICAgICAgICAgICAgICAgICAoY29ucyAgOnRhZyAiRm9y bWF0IGFuZCBDb252ZXJ0ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sIDp0YWcg IkZvcm1hdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sIDp0YWcgIkNvbnZlcnRl ciIpKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhk ZWZjdXN0b20gbWFya2Rvd24tdHMtY29udmVydC1kaXNwbGF5LWZ1bmN0aW9uICMnZXd3LW9wZW4t ZmlsZQorICAiRnVuY3Rpb24gdG8gZGlzcGxheSBjb252ZXJ0ZWQgTWFya2Rvd24gdGhlIG91dHB1 dCBmaWxlLgorVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudCwgdGhlIGZp bGUgbmFtZS4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJEaXNwbGF5IHVzaW5nIGBl d3cnIiBld3ctb3Blbi1maWxlKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxh eSBpbiBhIGJyb3dzZXIiIGJyb3dzZS11cmwtb2YtZmlsZSkKKyAgICAgICAgICAgICAgICAgKGNv bnN0IDp0YWcgIkRpc3BsYXkgb3V0cHV0IGZpbGUgaW4gYSBidWZmZXIiIGZpbmQtZmlsZS1vdGhl ci13aW5kb3cpCisgICAgICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJPdGhlciBmdW5jdGlv biIpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRl ZmNvbnN0IG1hcmtkb3duLXRzLS1jb252ZXJ0LWVycm9yLWJ1ZmZlcgorICAiKm1hcmtkb3duLXRz LWNvbnZlcnQgZXJyb3JzKiIpCisKKyhkZWZjb25zdCBtYXJrZG93bi10cy0tY29udmVydC1vdXRw dXQtYnVmZmVyCisgICIqbWFya2Rvd24tdHMtY29udmVydCBvdXRwdXQqIikKKworKGRlZnZhciBt YXJrZG93bi10cy1jb252ZXJ0ZXJzCisgIChsaXN0CisgICAoY29ucyAnaHRtbAorICAgICAgICAg KGxpc3QKKyAgICAgICAgICAoY29ucyAncGFuZG9jCisgICAgICAgICAgICAgICAgKGxpc3QgOmNv bW1hbmQgInBhbmRvYyIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5wdXQgJyhmaWxlIHN0ZGlu KQorICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhmaWxlKQorICAgICAgICAgICAgICAg ICAgICAgIDphcmd1bWVudHMtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRh IChpbnB1dC1maWxlIG91dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVu ZCAobGlzdCAiLWYiICJnZm0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICItdCIgImh0bWw1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1z dGFuZGFsb25lIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW8iIG91 dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBpbnB1dC1m aWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkp KSkpKQorICAgICAgICAgIChjb25zICdjbWFyaworICAgICAgICAgICAgICAgIChsaXN0IDpjb21t YW5kICJjbWFyayIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5wdXQgJyhmaWxlIHN0ZGluKQor ICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhzdGRvdXQpCisgICAgICAgICAgICAgICAg ICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEg KGlucHV0LWZpbGUgX291dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVu ZCAobGlzdCAiLXQiICJodG1sIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdo ZW4gaW5wdXQtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGlu cHV0LWZpbGUpKSkpKSkKKyAgICAgICAgICAoY29ucyAnY21hcmstZ2ZtCisgICAgICAgICAgICAg ICAgKGxpc3QgOmNvbW1hbmQgImNtYXJrLWdmbSIKKyAgICAgICAgICAgICAgICAgICAgICA6aW5w dXQgJyhmaWxlIHN0ZGluKQorICAgICAgICAgICAgICAgICAgICAgIDpvdXRwdXQgJyhzdGRvdXQp CisgICAgICAgICAgICAgICAgICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAgICAgICAgICAg ICAgICAgICAgIChsYW1iZGEgKGlucHV0LWZpbGUgX291dHB1dC1maWxlKQorICAgICAgICAgICAg ICAgICAgICAgICAgKGFwcGVuZCAobGlzdCAiLXQiICJodG1sIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBVc2UgR2l0SHViLXN0eWxlIDxwcmUgbGFuZz4gZm9yIGNv ZGUgYmxvY2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWdpdGh1 Yi1wcmUtbGFuZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSW5j bHVkZSByZW1haW5kZXIgb2YgY29kZSBibG9jayBpbmZvCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IHN0cmluZyBpbiBhIHNlcGFyYXRlIGF0dHJpYnV0ZS4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZnVsbC1pbmZvLXN0cmluZyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgVXNlIHN0eWxlIGF0dHJpYnV0 ZXMgdG8gYWxpZ24gdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgY2VsbHMgaW5zdGVhZCBvZiBhbGlnbiBhdHRyaWJ1dGVzLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLS10YWJsZS1wcmVmZXItc3R5bGUtYXR0cmlidXRlcyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5zaW9uIiAiZm9vdG5v dGVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1leHRlbnNpb24i ICJ0YWJsZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5z aW9uIiAic3RyaWtldGhyb3VnaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIi0tZXh0ZW5zaW9uIiAiYXV0b2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICItLWV4dGVuc2lvbiIgInRhZ2ZpbHRlciIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi0tZXh0ZW5zaW9uIiAidGFza2xpc3QiKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2hlbiBpbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkpKQorICAgICAgICAgIDs7ICdtYXJr ZG93bi5wbCBpcyB0aGUgc2FtZSBhcyAnbWFya2Rvd24gd2l0aCBhbm90aGVyIGNvbW1vbiBmaWxl CisgICAgICAgICAgOzsgbmFtZS4KKyAgICAgICAgICAoY29ucyAnbWFya2Rvd24ucGwKKyAgICAg ICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAibWFya2Rvd24ucGwiCisgICAgICAgICAgICAgICAg ICAgICAgOmlucHV0ICcoZmlsZSBzdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICA6b3V0cHV0 ICcoc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgIDphcmd1bWVudHMtZnVuY3Rpb24KKyAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmlsZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKGxpc3QgIi0taHRtbDR0YWdzIikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gaW5wdXQtZmlsZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICItLSIgaW5wdXQtZmlsZSkpKSkpKQorICAgICAg ICAgIDs7ICdtYXJrZG93biBpcyB0aGUgc2FtZSBhcyAnbWFya2Rvd24ucGwgd2l0aCBhbm90aGVy IGNvbW1vbiBmaWxlCisgICAgICAgICAgOzsgbmFtZS4KKyAgICAgICAgICAoY29ucyAnbWFya2Rv d24KKyAgICAgICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAibWFya2Rvd24iCisgICAgICAgICAg ICAgICAgICAgICAgOmlucHV0ICcoZmlsZSBzdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICA6 b3V0cHV0ICcoc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgIDphcmd1bWVudHMtZnVuY3Rp b24KKyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmls ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKGxpc3QgIi0taHRtbDR0YWdzIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gaW5wdXQtZmlsZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICItLSIgaW5wdXQtZmlsZSkpKSkpKSkp CisgICAoY29ucyAncGRmCisgICAgICAgICAobGlzdAorICAgICAgICAgIChjb25zICdwYW5kb2MK KyAgICAgICAgICAgICAgICAobGlzdCA6Y29tbWFuZCAicGFuZG9jIgorICAgICAgICAgICAgICAg ICAgICAgIDppbnB1dCAnKGZpbGUgc3RkaW4pCisgICAgICAgICAgICAgICAgICAgICAgOm91dHB1 dCAnKGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgOmFyZ3VtZW50cy1mdW5jdGlvbgorICAg ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGlucHV0LWZpbGUgb3V0cHV0LWZpbGUpCisgICAg ICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIChsaXN0ICItZiIgImdmbSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi10IiAicGRmIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLW8iIG91dHB1dC1maWxlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hlbiBpbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkpKSkpKQorICAiQW4gYWxpc3Qgb2YgZm9ybWF0 L2NvbnZlcnRlciBjb25maWd1cmF0aW9ucy4KK0l0IGlzIGEgdHdvIGxldmVsIGFsaXN0IHdpdGgg dGhlIGZpcnN0IGxldmVsIGJlaW5nIGZvcm1hdCwgZm9yIGV4YW1wbGUKK2BodG1sJyBvciBgcGRm JywgYW5kIHRoZSBzZWNvbmQgYmVpbmcgdGhlIGNvbnZlcnRlciBuYW1lLCBmb3IgZXhhbXBsZQor YHBhbmRvYycuICBBIGNvbnZlcnRlciBjb25maWd1cmF0aW9uIGVudHJ5IGlzIGEgcGxpc3Qgb2Yg dGhlIGZvcm06CisKKyAgXFw9Jyg6Y29tbWFuZCBcImNvbW1hbmQgbmFtZVwiCisgICAgOmlucHV0 IChmaWxlIHN0ZGluKSA7IGFjY2VwdHMgZmlsZSBuYW1lIG9yIHN0ZGluCisgICAgOm91dHB1dCAo c3Rkb3V0KSAgICA7IHByb2R1Y2VzIHN0ZG91dCBvbmx5CisgICAgOmFyZ3VtZW50cy1mdW5jdGlv biA7IGZ1bmN0aW9uOyBlLmcuLAorICAgICAobGFtYmRhIChpbnB1dC1maWxlIF9vdXRwdXQtZmls ZSkKKyAgICAgICAoYXBwZW5kIChsaXN0IFwiLXRcIiBcImh0bWxcIikKKyAgICAgICAgICAgICAg ICh3aGVuIGlucHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgKGxpc3QgaW5wdXQtZmlsZSkpKSkp CisKK2Bhcmd1bWVudHMtZnVuY3Rpb24nIGlzIHBhc3NlZCB0d28gYXJndW1lbnRzLCBJTlBVVC1G SUxFIGFuZAorT1VUUFVULUZJTEUuICBJZiBJTlBVVC1GSUxFIGlzIG5pbCwgYXNzdW1lIHN0ZGlu LCBvciBpdCBpcyBhCitmdWxseS1xdWFsaWZpZWQgZmlsZSBuYW1lLiAgSWYgT1VUUFVULUZJTEUg aXMgbmlsLCBhc3N1bWUgc3Rkb3V0LCBvciBpdAoraXMgYSBmdWxseS1xdWFsaWZpZWQgZmlsZSBu YW1lLiAgSXQgc2hvdWxkIHJldHVybiBhIGxpc3Qgb2YKK2FyZ3VtZW50cyBzdWl0YWJsZSBmb3Ig YGNhbGwtcHJvY2VzcycuIikKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBtYXJrZG93bi10cy1j b252ZXJ0LWZpbGUgKGlucHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlzcGxheSBvdmVyd3JpdGUgcXVpZXQpCisgICJDb252ZXJ0IE1h cmtkb3duIElOUFVULUZJTEUgdG8gRk9STUFULgorSWYgb3B0aW9uYWwgRElTUExBWSBpcyBub24t bmlsLCBzaG93IHRoZSBvdXRwdXQgZmlsZSBpbiBhIGJ1ZmZlciwgaWYKK3Bvc3NpYmxlLCB1c2lu ZyB0aGUgZnVuY3Rpb24gYG1hcmtkb3duLXRzLWNvbnZlcnQtZGlzcGxheS1mdW5jdGlvbicuCisK K1dpdGggYSBwcmVmaXggYXJndW1lbnQsIERJU1BMQVkgd2lsbCBiZSBub24tbmlsLgorCitPcHRp b25hbCBGT1JNQVQgaXMgYSBmb3JtYXQvY29udmVydGVyIHBhaXIgc3BlY2lmaWVkIGFzIGEgY29u cworXFw9Jyhmb3JtYXQgLiBjb252ZXJ0ZXIpIGZvciBleGFtcGxlIFxcPScoaHRtbCAuIHBhbmRv YykuICBTZWUKK2BtYXJrZG93bi10cy1jb252ZXJ0ZXJzJy4gIElmIG5pbCwgcHJvbXB0IGZvciB0 aGUgZm9ybWF0IGFuZCBjb252ZXJ0ZXIuCisKK0lmIG9wdGlvbmFsIE9WRVJXUklURSBpcyBub24t bmlsLCBzaWxlbnRseSBvdmVyd3JpdGUgT1VUUFVULUZJTEUgaWYgaXQKK2V4aXN0cy4KKworSWYg UVVJRVQgaXMgbm9uLW5pbCwgaW5oaWJpdCBzaG93aW5nIGNvbnZlcnNpb24gd2FybmluZ3Mgb3Ig ZXJyb3JzLgorCitUaGUgZXh0ZXJuYWwgZXhlY3V0YWJsZSBzcGVjaWZpZWQgYnkgYSBjb252ZXJ0 ZXIgbXVzdCBiZSBpbnN0YWxsZWQgYW5kCitmb3VuZDsgc2VlIHRoZSB2YXJpYWJsZSBgZXhlYy1w YXRoJy4iCisgIChpbnRlcmFjdGl2ZSAiZkNvbnZlcnQgTWFya2Rvd24gZmlsZTogIikKKyAgKG1h cmtkb3duLXRzLWNvbnZlcnQgaW5wdXQtZmlsZSBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGRpc3BsYXkgY3VycmVu dC1wcmVmaXgtYXJnKQorICAgICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdGUKKyAgICAgICAg ICAgICAgICAgICAgICAgcXVpZXQpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIG1hcmtkb3du LXRzLWNvbnZlcnQgKCZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0 LWZpbGUgb3V0cHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgZGlz cGxheSBvdmVyd3JpdGUgcXVpZXQpCisgICJDb252ZXJ0IGEgYG1hcmtkb3duLXRzLW1vZGUnIGJ1 ZmZlciBvciBmaWxlIHRvIEZPUk1BVC4KK0NvbnZlcnQgSU5QVVQtRklMRSB0byBPVVRQVVQtRklM RS4KKworSWYgSU5QVVQtRklMRSBpcyBuaWwsIHVzZSB0aGUgY3VycmVudCBidWZmZXIuCisKK0lm IE9VVFBVVC1GSUxFIGlzIG5pbCwgcHJvbXB0IGZvciBhbiBvdXRwdXQgZmlsZS4KKworT3B0aW9u YWwgRk9STUFUIGlzIGEgZm9ybWF0L2NvbnZlcnRlciBwYWlyIHNwZWNpZmllZCBhcyBhIGNvbnMK K1xcPScoZm9ybWF0IC4gY29udmVydGVyKSBmb3IgZXhhbXBsZSBcXD0nKGh0bWwgLiBwYW5kb2Mp LiAgU2VlCitgbWFya2Rvd24tdHMtY29udmVydGVycycuICBJZiBuaWwsIHByb21wdCBmb3IgdGhl IGZvcm1hdCBhbmQgY29udmVydGVyLgorCitJZiBvcHRpb25hbCBESVNQTEFZIGlzIG5vbi1uaWws IHNob3cgdGhlIG91dHB1dCBmaWxlIGluIGEgYnVmZmVyLCBpZgorcG9zc2libGUsIHVzaW5nIHRo ZSBmdW5jdGlvbiBgbWFya2Rvd24tdHMtY29udmVydC1kaXNwbGF5LWZ1bmN0aW9uJy4KKworV2l0 aCBhIHByZWZpeCBhcmd1bWVudCwgRElTUExBWSB3aWxsIGJlIG5vbi1uaWwuCisKK0lmIG9wdGlv bmFsIE9WRVJXUklURSBpcyBub24tbmlsLCBzaWxlbnRseSBvdmVyd3JpdGUgT1VUUFVULUZJTEUg aWYgaXQKK2V4aXN0cy4KKworSWYgUVVJRVQgaXMgbm9uLW5pbCwgaW5oaWJpdCBzaG93aW5nIGNv bnZlcnNpb24gd2FybmluZ3Mgb3IgZXJyb3JzLgorCitUaGUgZXh0ZXJuYWwgZXhlY3V0YWJsZSBz cGVjaWZpZWQgYnkgYSBjb252ZXJ0ZXIgbXVzdCBiZSBpbnN0YWxsZWQgYW5kCitmb3VuZDsgc2Vl IHRoZSB2YXJpYWJsZSBgZXhlYy1wYXRoJy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHdoZW4gKGFu ZCBpbnB1dC1maWxlCisgICAgICAgICAgICAgKGVxdWFsIGJ1ZmZlci1maWxlLW5hbWUgKGV4cGFu ZC1maWxlLW5hbWUgaW5wdXQtZmlsZSkpCisgICAgICAgICAgICAgKGJ1ZmZlci1tb2RpZmllZC1w KSkKKyAgICAod2hlbiAoeWVzLW9yLW5vLXAgIlNhdmUgbW9kaWZpZWQgYnVmZmVyIGJlZm9yZSBj b252ZXJ0aW5nPyAiKQorICAgICAgKHNhdmUtYnVmZmVyKSkpCisgICh1bmxlc3MgaW5wdXQtZmls ZQorICAgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtY29udmVy dCkpCisKKyAgKHNldHEgZGlzcGxheSAob3IgZGlzcGxheSBjdXJyZW50LXByZWZpeC1hcmcpKQor CisgIChsZXQqICgoY29udmVydGVyLWZvcm1hdAorICAgICAgICAgIChvciAoY2FyIGZvcm1hdCkK KyAgICAgICAgICAgICAgKGNhciBtYXJrZG93bi10cy1kZWZhdWx0LWNvbnZlcnRlcikKKyAgICAg ICAgICAgICAgKGludGVybgorICAgICAgICAgICAgICAgKGNvbXBsZXRpbmctcmVhZAorICAgICAg ICAgICAgICAgICJTZWxlY3QgYW4gb3V0cHV0IGZvcm1hdDogIgorICAgICAgICAgICAgICAgICht YXBjYXIgKGxhbWJkYSAoZWx0KSAoc3ltYm9sLW5hbWUgKGNhciBlbHQpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWNvbnZlcnRlcnMpCisgICAgICAgICAgICAgICAgbmls CisgICAgICAgICAgICAgICAgdAorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAg ICdtYXJrZG93bi10cy1jb252ZXJ0ZXItZm9ybWF0KSkpKQorICAgICAgICAgKGNvbnZlcnRlcgor ICAgICAgICAgIChvciAoY2RyIGZvcm1hdCkKKyAgICAgICAgICAgICAgKGNkciBtYXJrZG93bi10 cy1kZWZhdWx0LWNvbnZlcnRlcikKKyAgICAgICAgICAgICAgKGludGVybgorICAgICAgICAgICAg ICAgKGNvbXBsZXRpbmctcmVhZAorICAgICAgICAgICAgICAgICJTZWxlY3QgYSBjb252ZXJ0ZXI6 ICIKKyAgICAgICAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKHN5bWJvbC1uYW1lIChj YXIgZWx0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoYWxpc3QtZ2V0IGNvbnZlcnRlci1m b3JtYXQgbWFya2Rvd24tdHMtY29udmVydGVycykpCisgICAgICAgICAgICAgICAgbmlsCisgICAg ICAgICAgICAgICAgdAorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICdtYXJr ZG93bi10cy1jb252ZXJ0ZXIpKSkpCisgICAgICAgICAoY29uZmlnIChhbGlzdC1nZXQgY29udmVy dGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsaXN0LWdldCBjb252ZXJ0ZXItZm9y bWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1j b252ZXJ0ZXJzKSkpCisgICAgICAgICAoY29tbWFuZCAocGxpc3QtZ2V0IGNvbmZpZyA6Y29tbWFu ZCkpCisgICAgICAgICAoY29tbWFuZC1pbnB1dCAocGxpc3QtZ2V0IGNvbmZpZyA6aW5wdXQpKQor ICAgICAgICAgKGNvbW1hbmQtb3V0cHV0IChwbGlzdC1nZXQgY29uZmlnIDpvdXRwdXQpKQorICAg ICAgICAgKHN0ZGluLW9ubHkgKGVxdWFsIGNvbW1hbmQtaW5wdXQgJyhzdGRpbikpKQorICAgICAg ICAgKHN0ZG91dC1vbmx5IChlcXVhbCBjb21tYW5kLW91dHB1dCAnKHN0ZG91dCkpKSkKKyAgICAo dW5sZXNzIG91dHB1dC1maWxlCisgICAgICAoc2V0cSBvdXRwdXQtZmlsZQorICAgICAgICAgICAg KHJlYWQtZmlsZS1uYW1lICJPdXRwdXQgZmlsZSBuYW1lOiAiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNh dCAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZpbGUtcmVsYXRpdmUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAob3IgaW5wdXQtZmlsZSBidWZmZXItZmlsZS1uYW1lKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzeW1ib2wtbmFtZSBjb252ZXJ0ZXItZm9ybWF0KSkpKQorICAgICAgKHVubGVz cyBvdXRwdXQtZmlsZQorICAgICAgICAodXNlci1lcnJvciAiT3V0cHV0IGZpbGUgbmFtZSBpcyBy ZXF1aXJlZCIpKSkKKyAgICAod2hlbiBvdXRwdXQtZmlsZQorICAgICAgKHdoZW4gKGFuZCAobm90 IG92ZXJ3cml0ZSkKKyAgICAgICAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgb3V0cHV0LWZpbGUp CisgICAgICAgICAgICAgICAgIChub3QgKHllcy1vci1uby1wIChmb3JtYXQgIiVzIGV4aXN0czsg b3ZlcndyaXRlPyIgb3V0cHV0LWZpbGUpKSkpCisgICAgICAgICh1c2VyLWVycm9yICJOb3Qgb3Zl cndyaXRpbmcgZXhpc3RpbmcgZmlsZTogJXMiIG91dHB1dC1maWxlKSkKKyAgICAgIChzZXRxIG91 dHB1dC1maWxlIChleHBhbmQtZmlsZS1uYW1lIG91dHB1dC1maWxlKSkpCisKKworICAgIChsZXQg KChjb21tYW5kLWFyZ3MgKGZ1bmNhbGwgKHBsaXN0LWdldCBjb25maWcgOmFyZ3VtZW50cy1mdW5j dGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIGlucHV0LWZpbGUg KGV4cGFuZC1maWxlLW5hbWUgaW5wdXQtZmlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdXRwdXQtZmlsZSkpKQorICAgICAgKHVubGVzcyAoZXhlY3V0YWJsZS1maW5kIGNv bW1hbmQpCisgICAgICAgICh1c2VyLWVycm9yICJgJXMnIGV4ZWN1dGFibGUgbm90IGZvdW5kIiBj b21tYW5kKSkKKyAgICAgIChsZXQgKChlcnJvci1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tY29udmVydC1lcnJvci1idWZm ZXIpKQorICAgICAgICAgICAgKGVycm9yLXRlbXAtZmlsZSAobWFrZS10ZW1wLWZpbGUgIm1hcmtk b3duLXRzLWNvbnZlcnQtc3RkZXJyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmlsICIubG9nIikpCisgICAgICAgICAgICAoc3Rkb3V0LWJ1ZmZlciAod2hl biBzdGRvdXQtb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0LWJ1ZmZlci1j cmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1jb252ZXJ0 LW91dHB1dC1idWZmZXIpKSkpCisgICAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgICAg KGxldCAoZXhpdC1zdGF0dXMpCisgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGVy cm9yLWJ1ZmZlcgorICAgICAgICAgICAgICAgIChzcGVjaWFsLW1vZGUpCisgICAgICAgICAgICAg ICAgKHNldHEgYnVmZmVyLXJlYWQtb25seSBuaWwpCisgICAgICAgICAgICAgICAgKHdpZGVuKQor ICAgICAgICAgICAgICAgIChlcmFzZS1idWZmZXIpKQorICAgICAgICAgICAgICAod2hlbiBzdGRv dXQtYnVmZmVyCisgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3Rkb3V0LWJ1 ZmZlcgorICAgICAgICAgICAgICAgICAgKHNwZWNpYWwtbW9kZSkKKyAgICAgICAgICAgICAgICAg IChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgbmlsKQorICAgICAgICAgICAgICAgICAgKHdpZGVuKQor ICAgICAgICAgICAgICAgICAgKGVyYXNlLWJ1ZmZlcikpKQorICAgICAgICAgICAgICAoY29uZAor ICAgICAgICAgICAgICAgKChhbmQgaW5wdXQtZmlsZSAobm90IHN0ZGluLW9ubHkpKQorICAgICAg ICAgICAgICAgIChzZXRxIGV4aXQtc3RhdHVzCisgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5 ICMnY2FsbC1wcm9jZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsaXN0IHN0ZG91dC1idWZmZXIgZXJyb3ItdGVtcC1maWxlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC1h cmdzKSkpCisgICAgICAgICAgICAgICAoKGFuZCBpbnB1dC1maWxlIHN0ZGluLW9ubHkpCisgICAg ICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQt ZmlsZS1jb250ZW50cyBpbnB1dC1maWxlKQorICAgICAgICAgICAgICAgICAgKHNldHEgZXhpdC1z dGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2NhbGwtcHJvY2Vzcy1yZWdp b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpc3Qgc3Rkb3V0LWJ1ZmZlciBlcnJvci10ZW1wLWZpbGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tbWFuZC1hcmdzKSkpKQorICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAo d2l0aG91dC1yZXN0cmljdGlvbgorICAgICAgICAgICAgICAgICAgKHNldHEgZXhpdC1zdGF0dXMK KyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2NhbGwtcHJvY2Vzcy1yZWdpb24KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpc3Qgc3Rkb3V0LWJ1ZmZlciBlcnJvci10ZW1wLWZpbGUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t bWFuZC1hcmdzKSkpKSkKKyAgICAgICAgICAgICAgKGxldCAoKGVycm9yLXNpemUgKGZpbGUtYXR0 cmlidXRlLXNpemUgKGZpbGUtYXR0cmlidXRlcyBlcnJvci10ZW1wLWZpbGUpKSkpCisgICAgICAg ICAgICAgICAgKHdoZW4gKGFuZCBlcnJvci1zaXplICg+IGVycm9yLXNpemUgMCkpCisgICAgICAg ICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBlcnJvci1idWZmZXIKKyAgICAgICAgICAg ICAgICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGVycm9yLXRlbXAtZmlsZSkKKyAgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkpKSkKKyAgICAgICAgICAgICAgKGNv bmQgKChlcSAwIGV4aXQtc3RhdHVzKSA7IEludGVnZXIgb3Igc3RyaW5nLgorICAgICAgICAgICAg ICAgICAgICAgKHdoZW4gc3Rkb3V0LWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAod2l0 aC1jdXJyZW50LWJ1ZmZlciBzdGRvdXQtYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAg KHdyaXRlLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSBvdXRwdXQtZmlsZSkpKQorICAg ICAgICAgICAgICAgICAgICAgKHdoZW4gZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAgICAo ZnVuY2FsbCBtYXJrZG93bi10cy1jb252ZXJ0LWRpc3BsYXktZnVuY3Rpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LWZpbGUpKQorICAgICAgICAgICAgICAgICAgICAg KHdoZW4gKGFuZCAobm90IHF1aWV0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bm90ICh6ZXJvcCAoYnVmZmVyLXNpemUgZXJyb3ItYnVmZmVyKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh5ZXMtb3Itbm8tcAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGZvcm1hdC1tZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IkNvbnZlcnNpb24gZmlsZSBgJXMnIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIHdpdGggd2FybmluZ3M7 IGRpc3BsYXkgdGhlbT8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0 LWZpbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXktYnVmZmVyIGVycm9yLWJ1 ZmZlcikpCisgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiQ29udmVyc2lvbiBmaWxlIHN1 Y2Nlc3NmdWxseSBjcmVhdGVkIGAlcyclcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG91dHB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHplcm9wIChi dWZmZXItc2l6ZSBlcnJvci1idWZmZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiB3aXRoIHdh cm5pbmdzOyBzZWUgYnVmZmVyIGAlcyciIGVycm9yLWJ1ZmZlcikpKSkKKyAgICAgICAgICAgICAg ICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgIChpZiBxdWlldAorICAgICAgICAgICAgICAg ICAgICAgICAgIChlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udmVydGVyIGFi b3J0ZWQgd2l0aCBleGl0IGNvZGUgJVM7IHNlZSBidWZmZXIgYCVzJyBmb3IgZXJyb3JzIgorICAg ICAgICAgICAgICAgICAgICAgICAgICBleGl0LXN0YXR1cworICAgICAgICAgICAgICAgICAgICAg ICAgICBtYXJrZG93bi10cy0tY29udmVydC1lcnJvci1idWZmZXIpCisgICAgICAgICAgICAgICAg ICAgICAgICh3aGVuICh5ZXMtb3Itbm8tcCAoZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkNvbnZlcnRlciBhYm9ydGVkIHdpdGggZXhpdCBjb2RlICVT OyBkaXNwbGF5IGVycm9ycz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXhpdC1zdGF0dXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5LWJ1 ZmZlciBlcnJvci1idWZmZXIpKSkpKSkKKyAgICAgICAgICAoZGVsZXRlLWZpbGUgZXJyb3ItdGVt cC1maWxlKSkpKSkpCisKKzs7OyBUYWJsZSBvZiBjb250ZW50czoKKworKGRlZmdyb3VwIG1hcmtk b3duLXRzLXRvYyBuaWwKKyAgIlRhYmxlIG9mIGNvbnRlbnRzIGZvciBgbWFya2Rvd24tdHMtbW9k ZScgYnVmZmVycy4iCisgIDpwcmVmaXggIm1hcmtkb3duLXRzLXRvYy0iCisgIDpncm91cCAndGV4 dAorICA6Z3JvdXAgJ2VkaXRpbmcKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9tIG1h cmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUgJ2luc2VydC10ZW1wbGF0ZQorICAi V2FybiBpZiBubyB0YWJsZXMgd2VyZSBwcm9jZXNzZWQgd2hlbiBjYWxsaW5nIGBtYXJrZG93bi10 cy10b2MtZ2VuZXJhdGUnLgorSWYgbmlsLCBkbyBub3RoaW5nLiAgSWYgdGhlIHN5bWJvbCBgaW5z ZXJ0LXRlbXBsYXRlJyBhbmQKK2BtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUnIHdhcyBjYWxsZWQg aW50ZXJhY3RpdmVseSwgb2ZmZXIgdG8gaW5zZXJ0IGEKK3RlbXBsYXRlIGlmIHRoZXJlIGFyZSBu b25lLiAgSWYgYG5vLXRhYmxlcycsIHdhcm4gd2hlbiB0aGVyZSBhcmUgbm8KK3RhYmxlcyBpbiB0 aGUgYnVmZmVyLiAgYG5vLWFjdGl2ZS10YWJsZXMnLCBpcyB0aGUgc2FtZSBhcyBgbm8tdGFibGVz Jword2l0aCB0aGUgYWRkaXRpb24gb2YgYSB3YXJuaW5nIGlmIHRoZXJlIGFyZSB0YWJsZXMsIGJ1 dCBub25lIGFyZSBhY3RpdmUuIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiTm8gd2Fy bmluZ3MiIG5pbCkKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkluc2VydCBhIHRhYmxl IHRlbXBsYXRlIChpZiBpbnRlcmFjdGl2ZSkiIGluc2VydC10ZW1wbGF0ZSkKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIldhcm4gaWYgbm8gdGFibGVzIHdlcmUgcHJvY2Vzc2VkIiBuby10 YWJsZXMpCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJXYXJuIGlmIG5vIGFjdGl2ZSB0 YWJsZXMgd2VyZSBwcm9jZXNzZWQiIG5vLWFjdGl2ZS10YWJsZXMpKQorICA6dmVyc2lvbiAiMzEu MSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy10 b2MtdXBkYXRlLWJlZm9yZS1zYXZlLW1vZGUtbGlnaHRlciAiIFt0b2Mgb24gc2F2ZV0iCisgICJN aW5vci1tb2RlIFwibGlnaHRlclwiIGZvciBgbWFya2Rvd24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUt c2F2ZS1tb2RlJy4KK05vdGUgdGhlIHNpbmdsZSBzcGFjZSBwcmVmaXguIgorICA6dHlwZSAnKGNo b2ljZSAoY29uc3QgOnRhZyAiRGVmYXVsdCIgIiBbdG9jIG9uIHNhdmVdIikKKyAgICAgICAgICAg ICAgICAgKGNvbnN0IDp0YWcgIk5vbmUiIG5pbCkKKyAgICAgICAgICAgICAgICAgKHN0cmluZyA6 dGFnICJPdGhlciBzdHJpbmciKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNp b24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtdG9jLXNsdWctZnVuY3Rpb24gIydt YXJrZG93bi10cy0tc2x1Zy1naXRodWIKKyAgIkZ1bmN0aW9uIHRvIGdlbmVyYXRlIE1hcmtkb3du IGhlYWRpbmcgXCJzbHVnc1wiIGluIHRhYmxlcyBvZiBjb250ZW50cy4iCisgIDp0eXBlICcoY2hv aWNlIChjb25zdCA6dGFnICJHaXRIdWIgc2x1ZyIgbWFya2Rvd24tdHMtLXNsdWctZ2l0aHViKQor ICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiUGFuZG9jIHNsdWciIG1hcmtkb3duLXRzLS1z bHVnLXBhbmRvYykKKyAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIDp0YWcgIk90aGVyIGZ1bmN0 aW9uIikpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCiso ZGVmdmFyIG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcworICAnKChoZWFkaW5nIC4gKGgxIGgyIGgz IGg0IGg1IGg2KSkKKyAgICAoc2V0ZXh0IC4gKHNoMSBzaDIpKQorICAgIChpdGVtIC4gKG1pbnVz IHBsdXMgc3RhcikpCisgICAgKG51bWJlcmVkLWl0ZW0gLiAoZG90IHBhcmVuKSkKKyAgICAoY29k ZSAuIChjb2RlKSkpCisgICJNYXAgaGlnaCBsZXZlbCBub2RlIGhhbmRsZXMgdG8gdGhlaXIgYmFz ZSBjb25zdGl0dWVudHMuCitUaGUgc3BlY2lhbCBzeW1ib2wgYGFsbCcgbWVhbnMgYWxsIGhhbmRs ZXMuIikKKworKGRlZnZhciBtYXJrZG93bi10cy0tdG9jLWhhbmRsZS1jbGFzc2VzCisgIChsZXQg KCh4KSkKKyAgICAoZG9saXN0IChlbHQgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzKQorICAgICAg KGRvbGlzdCAodmFsIChjZHIgZWx0KSkKKyAgICAgICAgKHB1c2ggYCgsdmFsIC4gLChjYXIgZWx0 KSkgeCkpKQorICAgIHgpCisiSW52ZXJzZSBvZiBgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzJy4i KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRvYy1leHBhbmQtY2FuZGlkYXRlLWhhbmRsZXMgKGhh bmRsZXMpCisgICJFeHBhbmQgY2FuZGlkYXRlIEhBTkRMRVMgYW5kIGtlZXAgb25seSBiYXNlIGhh bmRsZXMuCitTZWUgYG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcycuIgorICAobGV0ICgoZXhwYW5k ZWQgKG1ha2UtaGFzaC10YWJsZSkpCisgICAgICAgIChyZXMpKQorICAgICh1bmxlc3MgKGxpc3Rw IGhhbmRsZXMpCisgICAgICAoc2V0cSBoYW5kbGVzIChsaXN0IGhhbmRsZXMpKSkKKyAgICAod2hl biAoZXF1YWwgaGFuZGxlcyAnKGFsbCkpCisgICAgICAoc2V0cSBoYW5kbGVzIChtYXBjYXIgIydj YXIgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVzKSkpCisgICAgKGRvbGlzdCAoZWx0IGhhbmRsZXMp CisgICAgICAoc2V0cSBlbHQgKGFsaXN0LWdldCBlbHQgbWFya2Rvd24tdHMtLXRvYy1oYW5kbGVz IGVsdCkpCisgICAgICAoY29uZCAoKGNvbnNwIGVsdCkKKyAgICAgICAgICAgICAoZG9saXN0IChr IGVsdCkgKHB1dGhhc2ggayB0IGV4cGFuZGVkKSkpCisgICAgICAgICAgICAodCAocHV0aGFzaCBl bHQgdCBleHBhbmRlZCkpKSkKKyAgICAobWFwaGFzaCAobGFtYmRhIChrIF92KSAocHVzaCBrIHJl cykpIGV4cGFuZGVkKQorICAgIHJlcykpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdG9jcyAoJm9w dGlvbmFsIGJlZyBlbmQpCisgICJTY2FuIHRoZSBjdXJyZW50IGJ1ZmZlciBmb3IgdG9jIGVudHJp ZXMgZnJvbSBCRUcgdG8gRU5ELgorSWYgQkVHIGlzIG5pbCwgdXNlIGBwb2ludC1taW4nLiAgSWYg RU5EIGlzIG5pbCwgdXNlIGBwb2ludC1tYXgnLgorCitSZXR1cm4gYW4gYWxpc3Qgb2YgdGhlIGZv cm06CisgIFxcPScoKGtleXdvcmQgKG5vZGUgYmVnIGVuZCB2YXJzKSkpCisKK1ZhcnMgYXJlIGV4 cGFuZGVkIHZpYSBgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lJy4KKworUmV0dXJuIHRo ZSBsaXN0IGluIHRoZSBvcmRlciBvZiBhcHBlYXJhbmNlIGluIHRoZSBidWZmZXIuIgorICA7OyBO T1RFOiBUaGlzIHNjYW5zIGFsbCBtYXRjaGluZyBub2RlcyBiZWxvdyBCRUcgd2l0aCBubyBtYXhp bXVtIGNvdW50CisgIDs7IGV2ZW4gd2hlbiB3ZSB3YW50IG9ubHkgYSBzaW5nbGUgbmV4dCBtYXRj aGluZyBpdGVtLiAgUGVyaGFwcworICA7OyBgdHJlZXNpdC1xdWVyeS1jYXB0dXJlJyBjb3VsZCBi ZSBpbXByb3ZlZCB0byBhY2NlcHQgYSBtYXgtY291bnQKKyAgOzsgYXJndW1lbnQuCisgIDs7Cisg IDs7IE1hdGNoICJtYXJrZG93bi10cy10b2M6IiwgIm1hcmtkb3duLXRzLXRvYy1hYmMxMjM6IiBi dXQgbm90CisgIDs7ICJtYXJrZG93bi10cy10b2N4eHg6Ii4KKyAgKGxldCAoKHJlcykpCisgICAg KGRvbGlzdCAobm9kZQorICAgICAgICAgICAgICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAg ICAgICAgICAgJ21hcmtkb3duCisgICAgICAgICAgICAgICcoKCgoaHRtbF9ibG9jaykgQG1hcmtk b3duLXRzLXRvYykKKyAgICAgICAgICAgICAgICAgKDptYXRjaCAiPCEtLVtbOmJsYW5rOl1dKm1h cmtkb3duLXRzLXRvY1xcKC1bWzphbG51bTpdXStcXCkqOiIgQG1hcmtkb3duLXRzLXRvYykpKQor ICAgICAgICAgICAgICAob3IgYmVnIChwb2ludC1taW4pKQorICAgICAgICAgICAgICAob3IgZW5k IChwb2ludC1tYXgpKQorICAgICAgICAgICAgICAnbm9kZS1vbmx5KSkKKyAgICAgIChsZXQqICgo cyAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSAnbm8tcHJvcGVydHkpKQorICAgICAgICAgICAgICht YXRjaCAoc3RyaW5nLW1hdGNoICJcXChtYXJrZG93bi10cy10b2NcXCgtW1s6YWxudW06XV0rXFwp KlxcKTouKiIgcykpCisgICAgICAgICAgICAgKGtleXdvcmQgKHdoZW4gbWF0Y2ggKG1hdGNoLXN0 cmluZyAxIHMpKSkpCisgICAgICAgIChsZXQgKCh2YXJzKSkKKyAgICAgICAgICAod2l0aC13b3Jr LWJ1ZmZlcgorICAgICAgICAgICAgKGluc2VydCBzKQorICAgICAgICAgICAgKHNldHEgdmFycyAo aGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lKSkpCisgICAgICAgICAgKHB1c2gKKyAgICAg ICAgICAgYCgsa2V5d29yZAorICAgICAgICAgICAgIChub2RlIC4gLG5vZGUpCisgICAgICAgICAg ICAgKGJlZyAuICwodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgIChlbmQg LiAsKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAgICAgKHZhcnMgLiAsdmFycykp CisgICAgICAgICAgIHJlcykpKSkKKyAgICAobnJldmVyc2UgcmVzKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tdG9jcy1zYW5pdHktY2hlY2sgKHRvY3MpCisgICJTYW5pdHkgY2hlY2sgVE9DUyBm b3IgcGFpcmVkIG1hcmtkb3duLXRzLXRvYzogbWFya2Rvd24tdHMtdG9jLWVuZDogbm9kZXMuCitT aWduYWwgYW4gZXJyb3IgaWYgVE9DUyBhcmUgaW5zYW5lLgorU2VlIGBtYXJrZG93bi10cy0tdG9j cycuIgorICAoc2VxLW1hcC1pbmRleGVkCisgICAobGFtYmRhIChlbHQgaWR4KQorICAgICAod2hl biAoZXF1YWwgIm1hcmtkb3duLXRzLXRvYyIgKGNhciBlbHQpKQorICAgICAgICh1bmxlc3MgKGVx dWFsICJtYXJrZG93bi10cy10b2MtZW5kIiAoY2FyIChudGggKDErIGlkeCkgdG9jcykpKQorICAg ICAgICAgKHVzZXItZXJyb3IKKyAgICAgICAgICAiXCJtYXJrZG93bi10cy10b2NcIiBhdCBwb3Np dGlvbiAlZCBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgbWF0Y2hpbmcgXCJtYXJrZG93bi10cy10b2Mt ZW5kXCIiCisgICAgICAgICAgKGFsaXN0LWdldCAnYmVnIGVsdCkpKSkpCisgICB0b2NzKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLS10b2MtY29sbGVjdC1jYW5kaWRhdGVzICh0b2Mtc3RhcnQtbm9k ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2MtZW5kLW5v ZGUgaGFuZGxlcyBmcm9tKQorICAiUmV0dXJuIGFuIGFsaXN0IG9mIHRvYyBlbnRyeSBjYW5kaWRh dGVzIGZyb20gdGhlIGN1cnJlbnQgYnVmZmVyLgorSEFORExFUyBpcyBhIGxpc3Qgb2YgYmFzZSBo YW5kbGVzOyBzZWUgYG1hcmtkb3duLXRzLS10b2MtaGFuZGxlcycuCisKK1RPQy1TVEFSVC1OT0RF IGlzIHRoZSBcIm1hcmtkb3duLXRzLXRvYy1zdGFydFwiIG5vZGUuCitUT0MtRU5ELU5PREUgaXMg dGhlIFwibWFya2Rvd24tdHMtdG9jLWVuZFwiIG5vZGUuCisKK0lmIEZST00gaXMgdGhlIHN5bWJv bCBgYWJvdmUnLCBzb3VyY2UgY2FuZGlkYXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKK3RoZSBi dWZmZXIgdW50aWwgdGhlIHRvYyBzdGFydCBub2RlLiAgSWYgYGJlbG93Jywgc291cmNlIGNhbmRp ZGF0ZXMgZnJvbQordG9jIHN0YXJ0IG5vZGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAg SWYgYGFsbCcsIHVzZSB0aGUgd2hvbGUKK2J1ZmZlci4KKworUmVtb3ZlIGlnbm9yZWQgY2FuZGlk YXRlcyBjb250YWluaW5nIFwiPCEtLSBtYXJrZG93bi10cy1pZ25vcmU6IC0tPlwiLgorCitTb3J0 IHRoZSBsaXN0IGJ5IHRoZSBzdGFydGluZyBjaGFyYWN0ZXIgcG9zaXRpb25zIG9mIG5vZGVzLgor CitUaGUgYWxpc3QgaXMgb2YgdGhlIGZvcm06CisgIFxcPScoKGhhbmRsZSAuIG5vZGUpKSIKKyAg KGxldCAoY2FuZGlkYXRlcyBiZWcgZW5kKQorICAgIChwY2FzZSBmcm9tCisgICAgICAoJ2Fib3Zl CisgICAgICAgKHNldHEgYmVnIChwb2ludC1taW4pKQorICAgICAgIChzZXRxIGVuZCAodHJlZXNp dC1ub2RlLXN0YXJ0IHRvYy1zdGFydC1ub2RlKSkpCisgICAgICAoJ2JlbG93CisgICAgICAgKHNl dHEgYmVnICh0cmVlc2l0LW5vZGUtZW5kIHRvYy1lbmQtbm9kZSkpCisgICAgICAgKHNldHEgZW5k IChwb2ludC1tYXgpKSkKKyAgICAgICgnYWxsCisgICAgICAgKHNldHEgYmVnIChwb2ludC1taW4p KQorICAgICAgIChzZXRxIGVuZCAocG9pbnQtbWF4KSkpKQorCisgICAgOzsgSXQgbG9va3MgbGlr ZSB3ZSBjYW5ub3QgZ2V0IHRoZW0gaW4gb25lIGZlbGwgc3dvb3AuCisgICAgKGRvbGlzdCAoZWx0 IGhhbmRsZXMpCisgICAgICAoc2V0cQorICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAoYXBwZW5k CisgICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAgKHBjYXNlIGVsdAorICAgICAgICAgICgnaDEg KHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChhdHhf aGVhZGluZyAoYXR4X2gxX21hcmtlcikgKGlubGluZSkgQGgxKSkgYmVnIGVuZCkpCisgICAgICAg ICAgKCdoMiAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisgICAgICAgICAgICAgICAgJ21hcmtkb3du ICcoKGF0eF9oZWFkaW5nIChhdHhfaDJfbWFya2VyKSAoaW5saW5lKSBAaDIpKSBiZWcgZW5kKSkK KyAgICAgICAgICAoJ2gzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAn bWFya2Rvd24gJygoYXR4X2hlYWRpbmcgKGF0eF9oM19tYXJrZXIpIChpbmxpbmUpIEBoMykpIGJl ZyBlbmQpKQorICAgICAgICAgICgnaDQgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAg ICAgICAgICdtYXJrZG93biAnKChhdHhfaGVhZGluZyAoYXR4X2g0X21hcmtlcikgKGlubGluZSkg QGg0KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdoNSAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisg ICAgICAgICAgICAgICAgJ21hcmtkb3duICcoKGF0eF9oZWFkaW5nIChhdHhfaDVfbWFya2VyKSAo aW5saW5lKSBAaDUpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ2g2ICh0cmVlc2l0LXF1ZXJ5LWNh cHR1cmUKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygoYXR4X2hlYWRpbmcgKGF0eF9oNl9t YXJrZXIpIChpbmxpbmUpIEBoNikpIGJlZyBlbmQpKQorICAgICAgICAgICgnc2gxICh0cmVlc2l0 LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgJ21hcmtkb3duICcoKHNldGV4dF9oZWFk aW5nIGhlYWRpbmdfY29udGVudDogKF8pIEBzaDEgKHNldGV4dF9oMV91bmRlcmxpbmUpKSkgYmVn IGVuZCkpCisgICAgICAgICAgKCdzaDIgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAg ICAgICAgICAnbWFya2Rvd24gJygoc2V0ZXh0X2hlYWRpbmcgaGVhZGluZ19jb250ZW50OiAoXykg QHNoMiAoc2V0ZXh0X2gyX3VuZGVybGluZSkpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ21pbnVz ICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygo bGlzdF9pdGVtIChsaXN0X21hcmtlcl9taW51cykgKHBhcmFncmFwaCAoaW5saW5lKSBAbWludXMp KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdwbHVzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAg ICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BsdXMp IChwYXJhZ3JhcGggKGlubGluZSkgQHBsdXMpKSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdzdGFy ICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChs aXN0X2l0ZW0gKGxpc3RfbWFya2VyX3N0YXIpIChwYXJhZ3JhcGggKGlubGluZSkgQHN0YXIpKSkg YmVnIGVuZCkpCisgICAgICAgICAgKCdkb3QgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAg ICAgICAgICAgICAnbWFya2Rvd24gJygobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3QpIChwYXJh Z3JhcGggKGlubGluZSkgQGRvdCkpKSBiZWcgZW5kKSkKKyAgICAgICAgICAoJ3BhcmVuICh0cmVl c2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24gJygobGlzdF9p dGVtIChsaXN0X21hcmtlcl9wYXJlbnRoZXNpcykgKHBhcmFncmFwaCAoaW5saW5lKSBAcGFyZW4p KSkgYmVnIGVuZCkpCisgICAgICAgICAgKCdjb2RlICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAg ICAgICAgICAgICAgICAgICdtYXJrZG93biAnKChmZW5jZWRfY29kZV9ibG9jayAoaW5mb19zdHJp bmcgKGxhbmd1YWdlKSkgQGNvZGUpKSBiZWcgZW5kKSkpKSkpCisgICAgKHNvcnQKKyAgICAgKHNl cS1yZW1vdmUKKyAgICAgIChsYW1iZGEgKGVsdCkKKyAgICAgICAgKHN0cmluZy1tYXRjaC1wICI8 IS0tW1s6Ymxhbms6XV0qbWFya2Rvd24tdHMtaWdub3JlOltbOmJsYW5rOl1dKi0tPiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCAoY2RyIGVsdCkgdCkpKQorICAg ICAgY2FuZGlkYXRlcykKKyAgICAgOmtleSAobGFtYmRhIChlbHQpCisgICAgICAgICAgICAodHJl ZXNpdC1ub2RlLXN0YXJ0IChjZHIgZWx0KSkpCisgICAgIDpsZXNzcCAjJzwKKyAgICAgOmluLXBs YWNlIHQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10b2MtbGlzdC1pdGVtLWRlcHRoIChub2Rl KQorICAiUmV0dXJuIE5PREUncyBpdGVtIGRlcHRoIHJlbGF0aXZlIHRvIGl0cyBwcmVkZWNlc3Nv cnMuCitJZiBOT0RFIGlzIG5vdCBwYXJ0IG9mIGEgbGlzdCwgcmV0dXJuIG5pbC4iCisgICAgKGxl dCAoKGRlcHRoIG5pbCkgKG4gKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpKQorICAgICAgKHdo aWxlIG4KKyAgICAgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAibGlzdCIp CisgICAgICAgICAgKHNldHEgZGVwdGggKDErIChvciBkZXB0aCAwKSkpKQorICAgICAgICAoc2V0 cSBuICh0cmVlc2l0LW5vZGUtcGFyZW50IG4pKSkKKyAgICAgIGRlcHRoKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUgKHRleHQpCisgICJSZW1vdmUgdHJh aWxpbmcgIyBmcm9tIFRFWFQgdW5sZXNzIHRoZXkgYXJlIGJhY2tzbGFzaCBlc2NhcGVkLgorRmly c3QgcmVtb3ZlIEhUTUwgY29tbWVudHMuIgorICAoaWYgKHN0cmluZy1tYXRjaC1wICJbWzpibGFu azpdXSpcXFxcKyMrW1s6Ymxhbms6XV0qXG4qXFwnIiB0ZXh0KQorICAgICAgdGV4dAorICAgIChy ZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIltbOmJsYW5rOl1dKiMrW1s6Ymxhbms6XV0qXG4qXFwn IiAiIiB0ZXh0KSkpCisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtLXRvYy10ZXh0LW5vcm1hbGl6ZXJz CisgIGAoKGhlYWRpbmcgLiBtYXJrZG93bi10cy0tdG9jLWF0eF9oZWFkZXItbm9ybWFsaXplKQor ICAgIChoMSAuIG1hcmtkb3duLXRzLS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUpCisgICAgKGgy IC4gbWFya2Rvd24tdHMtLXRvYy1hdHhfaGVhZGVyLW5vcm1hbGl6ZSkKKyAgICAoaDMgLiBtYXJr ZG93bi10cy0tdG9jLWF0eF9oZWFkZXItbm9ybWFsaXplKQorICAgIChoNCAuIG1hcmtkb3duLXRz LS10b2MtYXR4X2hlYWRlci1ub3JtYWxpemUpCisgICAgKGg1IC4gbWFya2Rvd24tdHMtLXRvYy1h dHhfaGVhZGVyLW5vcm1hbGl6ZSkKKyAgICAoaDYgLiBtYXJrZG93bi10cy0tdG9jLWF0eF9oZWFk ZXItbm9ybWFsaXplKSkKKyAgIk1hcCBub2RlIHR5cGUgaGFuZGxlcyB0byBmdW5jdGlvbnMgdGhh dCBub3JtYWxpemUgaXRzIHRleHQuCitTZWUgYG1hcmtkb3duLXRzLS10b2MtdGV4dC1ub3JtYWxp emUnLgorRWFjaCBmdW5jdGlvbiBhY2NlcHRzIG9uZSBhcmd1bWVudCwgdGhlIHN0cmluZyBURVhU LCBhbmQgcmV0dXJucyBhIHN0cmluZy4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRvYy10ZXh0 LW5vcm1hbGl6ZSAoaGFuZGxlIG5vZGUgJm9wdGlvbmFsIHRleHQpCisgICJOb3JtYWxpemUgTk9E RSdzIFRFWFQgYWNjb3JkaW5nIHRvIGl0cyBIQU5ETEUuCitURVhUIHNob3VsZCBoYXZlIG5vIHRl eHQgcHJvcGVydGllcy4gIElmIFRFWFQgaXMgbmlsLCB1c2UgdGhlIE5PREUncwordGV4dC4gIFRo aXMgaXMgbm90IGFsd2F5cyBjb3JyZWN0IHNvIGl0J3MgYmVzdCB0byBwYXNzIFRFWFQgaWYgeW91 IGtub3cKK2l0IGluIHRoZSBjYWxsaW5nIGNvbnRleHQuCisKK0lmIG5vIG5vcm1hbGl6ZXIgaXMg Zm91bmQsIHJldHVybiBURVhULgorCitPbmUgZXhhbXBsZSBub3JtYWxpemF0aW9uIGlzIGF0eF9o ZWFkaW5nIHRleHQgdGhhdCBlbmRzIGluIHRyYWlsaW5nIGhhc2gKK3NpZ25zIHdoaWNoIGFyZSBp bnRlbmRlZCB0byBiZSBlbGlkZWQgc28gXCJIZWFkaW5nIFRleHQgIyNcIiBpcwordHJhbnNmb3Jt ZWQgaW50byBcIkhlYWRpbmcgVGV4dFwiLiIKKyAgKHNldHEgdGV4dCAob3IgdGV4dCAodHJlZXNp dC1ub2RlLXRleHQgbm9kZSAnbm8tcHJvcGVydHkpKSkKKyAgKGlmLWxldCogKChmaXhlciAoYWxp c3QtZ2V0IGhhbmRsZSBtYXJrZG93bi10cy0tdG9jLXRleHQtbm9ybWFsaXplcnMpKSkKKyAgICAg IChmdW5jYWxsIGZpeGVyIHRleHQpCisgICAgdGV4dCkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVm aW5lLW1pbm9yLW1vZGUgbWFya2Rvd24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUtc2F2ZS1tb2RlCisg ICJJZiBlbmFibGVkLCB1cGRhdGUgYG1hcmtkb3duLXRzLW1vZGUnIHRhYmxlcyBvZiBjb250ZW50 cyBiZWZvcmUgc2F2aW5nLiIKKyAgOmluaXQtdmFsdWUgbmlsCisgIDpnbG9iYWwgbmlsCisgIDps aWdodGVyIG1hcmtkb3duLXRzLXRvYy11cGRhdGUtYmVmb3JlLXNhdmUtbW9kZS1saWdodGVyCisg IChpZiAoZGVyaXZlZC1tb2RlLXAgJ21hcmtkb3duLXRzLW1vZGUpCisgICAgICAoaWYgbWFya2Rv d24tdHMtdG9jLXVwZGF0ZS1iZWZvcmUtc2F2ZS1tb2RlCisgICAgICAgICAgKGFkZC1ob29rICdi ZWZvcmUtc2F2ZS1ob29rICMnbWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlIG5pbCAnbG9jYWwpCisg ICAgICAgIChyZW1vdmUtaG9vayAnYmVmb3JlLXNhdmUtaG9vayAjJ21hcmtkb3duLXRzLXRvYy1n ZW5lcmF0ZSAnbG9jYWwpKQorICAgIChzZXRxIG1hcmtkb3duLXRzLXRvYy11cGRhdGUtYmVmb3Jl LXNhdmUtbW9kZSBuaWwpCisgICAgKGx3YXJuICdtYXJrZG93bi10cy10b2MtdXBkYXRlLWJlZm9y ZS1zYXZlLW1vZGUKKyAgICAgICAgICAgOndhcm5pbmcKKyAgICAgICAgICAgIk1pbm9yIG1vZGUg dmFsaWQgb25seSBpbiBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycy4iKSkpCisKKzs7OyMjI2F1 dG9sb2FkCisoZGVmdW4gbWFya2Rvd24tdHMtdG9jLWNsZWFyLWFuZC1yZW1vdmUgKCZvcHRpb25h bCBiZWcgZW5kKQorICAiUmVtb3ZlIGBtYXJrZG93bi10cy1tb2RlJyB0YWJsZSBvZiBjb250ZW50 cyBib2RpZXMgYW5kIHRlbXBsYXRlcy4KK09wZXJhdGUgb24gdGhlIGFjdGl2ZSByZWdpb24gQkVH IHRvIEVORCwgb3RoZXJ3aXNlIG9wZXJhdGUgb24gdGhlCitidWZmZXIsIHdoaWNoIG1heSBiZSBu YXJyb3dlZC4iCisgIChpbnRlcmFjdGl2ZSAiUiIpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1u b3QtbW9kZSAnbWFya2Rvd24tdHMtdG9jLWNsZWFyLWFuZC1yZW1vdmUpCisgIChtYXJrZG93bi10 cy10b2MtY2xlYXIgYmVnIGVuZCAncmVtb3ZlKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBt YXJrZG93bi10cy10b2MtY2xlYXIgKCZvcHRpb25hbCBiZWcgZW5kIHJlbW92ZSkKKyAgIkNsZWFy IGBtYXJrZG93bi10cy1tb2RlJyB0YWJsZSBvZiBjb250ZW50cyBib2RpZXMuCitPcGVyYXRlIG9u IHRoZSBhY3RpdmUgcmVnaW9uIEJFRyB0byBFTkQsIG90aGVyd2lzZSBvcGVyYXRlIG9uIHRoZQor YnVmZmVyLCB3aGljaCBtYXkgYmUgbmFycm93ZWQuCitJZiBvcHRpb25hbCBSRU1PVkUgaXMgbm9u LW5pbCwgcmVtb3ZlIHRhYmxlcyBpbmNsdWRpbmcgdGhlaXIgdGVtcGxhdGVzLiIKKyAgKGludGVy YWN0aXZlICJSIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10 cy10b2MtY2xlYXIpCisgIChzZXRxIGJlZyAob3IgYmVnIChwb2ludC1taW4pKSkKKyAgKHNldHEg ZW5kIChvciBlbmQgKHBvaW50LW1heCkpKQorICAodW5sZXNzIChlcSBiZWcgZW5kKQorICAgIDs7 IENvbnZlcnQgbWFya2VycyB0byBhYnNvbHV0ZSBwb3NpdGlvbnMuCisgICAgKHNldHEgYmVnIChp ZiAobWFya2VycCBiZWcpIChtYXJrZXItcG9zaXRpb24gYmVnKSBiZWcpKQorICAgIChzZXRxIGVu ZCAoaWYgKG1hcmtlcnAgZW5kKSAobWFya2VyLXBvc2l0aW9uIGVuZCkgZW5kKSkKKyAgICA7OyBO T1RFOiBPcGVyYXRlIG9uIHRoZSB3aWRlbmVkIGJ1ZmZlciB0byBhdm9pZCB0cmVlc2l0ZXIgY3Jh c2ggaXNzdWVzLgorICAgICh3aXRob3V0LXJlc3RyaWN0aW9uCisgICAgICAobGV0ICgodG9jcykK KyAgICAgICAgICAgIChiZWctcG9zIGJlZykKKyAgICAgICAgICAgIChlbmQtcG9zIGVuZCkpCisg ICAgICAgIDs7IFdlIHNjYW4gZWFjaCBwYXNzIGJlY2F1c2UgdGhlaXIgcG9zaXRpb25zIGNoYW5n ZS4KKyAgICAgICAgKHdoaWxlIChhbmQgKDwgYmVnLXBvcyBlbmQtcG9zKQorICAgICAgICAgICAg ICAgICAgICAoc2V0cSB0b2NzIChtYXJrZG93bi10cy0tdG9jcyBiZWctcG9zIGVuZC1wb3MpKSkK KyAgICAgICAgICAobWFya2Rvd24tdHMtLXRvY3Mtc2FuaXR5LWNoZWNrIHRvY3MpCisgICAgICAg ICAgOzsgQWZ0ZXIgc2FuaXR5IGNoZWNraW5nLCB3ZSBrbm93IHRoZSBzZWNvbmQgZWxlbWVudCBp cyBhCisgICAgICAgICAgOzsgdG9jLWVuZC4KKyAgICAgICAgICAobGV0KiAoKHRvYyAobnRoIDAg dG9jcykpCisgICAgICAgICAgICAgICAgICh0b2MtZW5kIChudGggMSB0b2NzKSkKKyAgICAgICAg ICAgICAgICAgKHJlZy1iZWcgKGlmIHJlbW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGFsaXN0LWdldCAnYmVnIHRvYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxp c3QtZ2V0ICdlbmQgdG9jKSkpCisgICAgICAgICAgICAgICAgIChyZWctZW5kIChpZiByZW1vdmUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC1nZXQgJ2VuZCB0b2MtZW5kKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC1nZXQgJ2JlZyB0b2MtZW5kKSkpCisg ICAgICAgICAgICAgICAgIChyZWctc2l6ZSAoLSByZWctZW5kIHJlZy1iZWcpKSkKKyAgICAgICAg ICAgIChkZWxldGUtcmVnaW9uIHJlZy1iZWcgcmVnLWVuZCkKKyAgICAgICAgICAgIDs7IFN0YXJ0 IHRoZSBuZXh0IHBhc3MgYWZ0ZXIgdGhpcyB0b2MtZW5kLiAgQWRqdXN0IGZvciB0aGUKKyAgICAg ICAgICAgIDs7IGRlbGV0ZWQgcmVnaW9uLgorICAgICAgICAgICAgKHNldHEgYmVnLXBvcyAoLSAo YWxpc3QtZ2V0ICdlbmQgdG9jLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn LXNpemUpKQorICAgICAgICAgICAgKHNldHEgZW5kLXBvcyAobWluIChwb2ludC1tYXgpICgtIGVu ZC1wb3MgcmVnLXNpemUpKSkpKSkpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBtYXJrZG93 bi10cy10b2MtaW5zZXJ0LXRlbXBsYXRlICgmb3B0aW9uYWwgY2hhcikKKyAgIkluc2VydCBhIGBt YXJrZG93bi10cy1tb2RlYCB0YWJsZSBvZiBjb250ZW50cyB0ZW1wbGF0ZSBhdCBwb2ludC4KKwor Q0hBUiBpcyB0aGUgdGVtcGxhdGUgdHlwZSBcImJcIiBmb3IgYmFzaWMsIFwiY1wiIGZvciBjb21w bGV0ZS4gIElmIENIQVIKK2lzIG5pbCBhbmQgdGhlIGNvbW1hbmQgaXMgcnVuIGludGVyYWN0aXZl bHksIHByb21wdCBmb3IgYSB0ZW1wbGF0ZS4KKworVGhlIGJhc2ljIHRlbXBsYXRlIHVzZXMgYWxs IGRlZmF1bHRzIGFuZCBpcyBsaWtlbHkgdGhlIGJlc3QgY2hvaWNlIGZvcgorbW9zdCB1c2VzLiAg VGhlIGNvbXBsZXRlIHRlbXBsYXRlIGlsbHVzdHJhdGVzIGFsbCBwYXJhbWV0ZXJzIHNldCB0bwor dGhlaXIgZGVmYXVsdHMgYW5kIGlzIHVzZWZ1bCBhcyBhIHN0YXJ0aW5nIHBvaW50IHRvIGN1c3Rv bWl6ZSBhIHRhYmxlLiIKKyAgKGludGVyYWN0aXZlICJjVGVtcGxhdGUgW2JdYXNpYyBbY11vbXBs ZXRlOiIpCisgIChwY2FzZSBjaGFyCisgICAgKD9iCisgICAgIChpbnNlcnQgIjwhLS0gbWFya2Rv d24tdHMtdG9jOiAtLT5cbiIKKyAgICAgICAgICAgICAiPCEtLSBtYXJrZG93bi10cy10b2MtZW5k OiAtLT5cbiIpKQorICAgICg/YworICAgICAoaW5zZXJ0ICI8IS0tIG1hcmtkb3duLXRzLXRvYzog LSotICIKKyAgICAgICAgICAgICAibWluLWRlcHRoOiAxOyAiCisgICAgICAgICAgICAgIm1heC1k ZXB0aDogbmlsOyAiCisgICAgICAgICAgICAgImNhbmRpZGF0ZXM6IChoZWFkaW5nKTsgIgorICAg ICAgICAgICAgICJmcm9tOiBiZWxvdzsgIgorICAgICAgICAgICAgICJzdHlsZTogaXRlbTsgIgor ICAgICAgICAgICAgICJpbmRlbnQ6IDE7ICIKKyAgICAgICAgICAgICAibm8tbGluazogbmlsOyAi CisgICAgICAgICAgICAgInJlbGF0aXZlLWRlcHRoOiBuaWw7ICIKKyAgICAgICAgICAgICAiaWdu b3JlOiBuaWw7ICIKKyAgICAgICAgICAgICAiLSotIC0tPlxuIgorICAgICAgICAgICAgICI8IS0t IG1hcmtkb3duLXRzLXRvYy1lbmQ6IC0tPlxuIikpCisgICAgKF8gKHVzZXItZXJyb3IgIk5vIHN1 Y2ggdGVtcGxhdGUgdHlwZTogJWMiIGNoYXIpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4g bWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlICgmb3B0aW9uYWwgaW50ZXJhY3RpdmUgYmVnIGVuZCkK KyAgIkdlbmVyYXRlIHRhYmxlcyBvZiBjb250ZW50cyBpbiB0aGUgY3VycmVudCBidWZmZXIuCitg bWFya2Rvd24tdHMtbW9kZScgdXNlcyBNYXJrZG93biBIVE1MIGNvbW1lbnQgZWxlbWVudHMgdG8g aWRlbnRpZnkgdGFibGUKK29mIGNvbnRlbnRzIChha2EgdG9jKSBpbnNlcnRpb24gYm91bmRhcmll cyBhbmQgdGhlIHBhcmFtZXRlcnMgZm9yIGVhY2gKK3RhYmxlLiAgRGVyaXZlIHRhYmxlIGNvbnRl bnQgZnJvbSB0aGUgTWFya2Rvd24gZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQKK2J1ZmZlciB3aGlj aCBhcmUgdXN1YWxseSBoZWFkaW5ncyBidXQgY2FuIGFsc28gYmUgbGlzdCBpdGVtcywgc2V0ZXh0 CitoZWFkZXJzLCBuYW1lZCBjb2RlIGJsb2Nrcy4KKworT3BlcmF0ZSBvbiB0aGUgYWN0aXZlIHJl Z2lvbiBCRUcgdG8gRU5ELCBvdGhlcndpc2Ugb3BlcmF0ZSBvbiB0aGUKK2J1ZmZlciwgd2hpY2gg bWF5IGJlIG5hcnJvd2VkLgorCitFYWNoIHRpbWUgeW91IHJ1biB0aGlzIGNvbW1hbmQsIGV4aXN0 aW5nIHRhYmxlcyBvZiBjb250ZW50cyBhcmUgY2xlYXJlZAorYW5kIHJlZnJlc2hlZCB3aXRoIG5l dyBjb250ZW50LiAgU28gZG9uJ3QgcGxhY2UgdG9jIGVsZW1lbnRzIGFyb3VuZAoraW1wb3J0YW50 IHRleHQuCisKK1RoZSBidWZmZXIgY2FuIGhhdmUgb25lIG9yIG1vcmUgdG9jcy4gIEJ5IGRlZmF1 bHQsIHBvcHVsYXRlIGVhY2ggdG9jCit3aXRoIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBi dWZmZXIgYmVsb3cgdGhlIHRvYy4gIFRoZXJlZm9yZSwgdGhlCitlYXNpZXN0IHdheSB0byBpbnNl cnQgYSBjb21wbGV0ZSB0YWJsZSBvZiBjb250ZW50cywgaXMgdG8gcHV0IHRoZSB0b2MKK3RlbXBs YXRlIG5lYXIgdGhlIHRvcCBvZiB5b3VyIGJ1ZmZlci4KKworQSBiYXNpYyBlbXB0eSB0b2MgdGVt cGxhdGUgbG9va3MgbGlrZSB0aGlzOgorCitIZWFkZXIgdGV4dCB5b3Ugd2FudCBoZXJlLgorCis8 IS0tIG1hcmtkb3duLXRzLXRvYzogLS0+CitDb250ZW50cyBpbnNlcnRlZCBiZXR3ZWVuIHRoZXNl IGVsZW1lbnRzLgorPCEtLSBtYXJrZG93bi10cy10b2MtZW5kOiAtLT4KKworRm9vdGVyIHRleHQg eW91IHdhbnQgaGVyZS4KKworVXNlIHRoZSBjb21tYW5kIGBtYXJrZG93bi10cy10b2MtaW5zZXJ0 LXRlbXBsYXRlJyB0byBpbnNlcnQgYSB0YWJsZSBvZgorY29udGVudHMgdGVtcGxhdGUuCisKK1Vz ZSB0aGUgY29tbWFuZCBgbWFya2Rvd24tdHMtdG9jLWNsZWFyJyB0byBjbGVhciB0YWJsZSBjb250 ZW50LCBhbmQgdGhlCitjb21tYW5kIGBtYXJrZG93bi10cy10b2MtY2xlYXItYW5kLXJlbW92ZScg dG8gYm90aCBjbGVhciBhbmQgcmVtb3ZlCit0YWJsZSBjb250ZW50IGFuZCB0ZW1wbGF0ZXMuCisK K0J5IGRlZmF1bHQsIGEgdG9jIGluY2x1ZGVzIGhlYWRlcnMgYXQgYWxsIGxldmVscyBiZWxvdyB0 aGUgdG9jIHdoaWNoIGFyZQorcHJlc2VudGVkIGFzIGxpc3QgaXRlbXMgd2l0aCBsaW5rcy4KKwor VG8gaWdub3JlIGEgTWFya2Rvd24gZWxlbWVudCB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBpbmNs dWRlZCBpbiB0aGUKK3RvYywgYWRkIGEgdG9jIGlnbm9yZSBlbGVtZW50OgorCisjIyBJZ25vcmUg TWUgPCEtLSBtYXJrZG93bi10cy10b2MtaWdub3JlOiAtLT4KKworVGhlIHN0YXJ0aW5nIHRvYyBl bGVtZW50IGFjY2VwdHMgcGFyYW1ldGVycyBpbiB0aGUgc3ludGF4IG9mIEVtYWNzIGZpbGUKK3Zh cmlhYmxlcy4KKworRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGdlbmVyYXRlIGEgdGFibGUg b2YgY29udGVudHMgbGltaXRlZCB0bworaGVhZGluZ3MgdHdvIGxldmVscyBkZWVwOgorCis8IS0t IG1hcmtkb3duLXRzLXRvYzogLSotIG1heC1kZXB0aDogMjsgLSotIC0tPgorPCEtLSBtYXJrZG93 bi10cy10b2MtZW5kOiAtLT4KKworT3IgdXNlIG9ubHkgaGVhZGluZ3MgdHdvIGFuZCB0aHJlZSBs ZXZlbHMgZGVlcC4KKworPCEtLSBtYXJrZG93bi10cy10b2M6IC0qLSBtaW4tZGVwdGg6IDI7IG1h eC1kZXB0aDogMzsgLSotIC0tPgorPCEtLSBtYXJrZG93bi10cy10b2MtZW5kOiAtLT4KKworVGhl c2UgYXJlIHRoZSBzdXBwb3J0ZWQgcGFyYW1ldGVycyB3aGljaCBhcmUgb3B0aW9uYWwuICBUaGV5 IGVhY2ggbGlzdAordGhlaXIgZGVmYXVsdHMuCisKKyAgbWluLWRlcHRoOiAxICAgICAgICAgIDsg YW4gaW50ZWdlcgorICBtYXgtZGVwdGg6IG5pbCAgICAgICAgOyBhbiBpbnRlZ2VyCisgIGNhbmRp ZGF0ZXM6IChoZWFkaW5nKSA7IGEgbGlzdAorICBmcm9tOiBiZWxvdyAgICAgICAgICAgOyBhIHN5 bWJvbAorICBzdHlsZTogaXRlbSAgICAgICAgICAgOyBhIHN5bWJvbAorICBpbmRlbnQ6IDEgICAg ICAgICAgICAgOyBhIG51bWJlcgorICBuby1saW5rOiBuaWwgICAgICAgICAgOyBhIGJvb2xlYW4K KyAgcmVsYXRpdmUtZGVwdGg6IG5pbCAgIDsgYSBib29sZWFuCisgIGlnbm9yZTogbmlsICAgICAg ICAgICA7IGEgYm9vbGVhbgorCitgbWluLWRlcHRoJyBhbmQgYG1heC1kZXB0aCcgYm90aCBkZWZh dWx0IHRvIHVzaW5nIGFsbCBjYW5kaWRhdGVzIGF0CitldmVyeSBsZXZlbC4gIFVzZSBgbWluLWRl cHRoJyB0byBpZ25vcmUgbGV2ZWwgMSBoZWFkaW5ncyBsaWtlIFwiIworSGVhZGluZ1wiLCBieSB1 c2luZyAyLiAgVXNlIGBtYXgtZGVwdGgnIHRvIGNvbnRyb2wgaG93IGRlZXAgaW50byB0aGUKK2hl YWRpbmcgaGllcmFyY2h5IHlvdSBuZWVkIHlvdXIgdG9jIHRvIGdvLiAgVXNlIDMgdG8gc3RvcCBh dCBsZXZlbCB0aHJlZQoraGVhZGluZ3MuCisKK0hlYWRpbmdzIGRpY3RhdGUgdGhlIGxldmVsIG9m IHRoZWlyIGNoaWxkcmVuIGV2ZW4gaWYgaGVhZGluZ3MgYXJlCitleGNsdWRlZCBmcm9tIGNhbmRp ZGF0ZXMuICBPdGhlciBlbGVtZW50IHR5cGVzIGluaGVyaXQgdGhlIGxldmVsIG9mCit0aGVpciBw cmVjZWRpbmcgaGVhZGluZy4KKworYGNhbmRpZGF0ZXMnIGlzIGEgbGlzdCBhbmQgY2FuIGNvbnRh aW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgTWFya2Rvd24KK2VsZW1lbnQgc2hvcnRjdXQgbmFtZXMu ICBZb3UgY2FuIG1peCBoaWdoZXItbGV2ZWwgZ3JvdXBpbmcgc3ltYm9scyBhbmQKK2xvd2VyIGxl dmVsIHN5bWJvbHMuCisKKyAgYWxsIChpbmNsdWRlcyBldmVyeXRoaW5nKQorICBoZWFkaW5nIChp bmNsdWRlcyB0aGUgYmVsb3cpCisgICAgaDEgaDIgaDMgaDQgaDUgaDYKKyAgc2V0ZXh0IChpbmNs dWRlcyB0aGUgYmVsb3cpCisgICAgc2gxIHNoMgorICBpdGVtIChpbmNsdWRlcyB0aGUgYmVsb3cp CisgICAgbWludXMgcGx1cyBzdGFyCisgIG51bWJlcmVkLWl0ZW0gKGluY2x1ZGVzIHRoZSBiZWxv dykKKyAgICBkb3QgcGFyZW4KKyAgY29kZSAobmFtZWQgY29kZSBibG9ja3MpCisKK2Bmcm9tJyBj b250cm9scyB0aGUgZGlyZWN0aW9uIGFuZCBzY29wZSBmcm9tIHdoaWNoIGNhbmRpZGF0ZXMgYXJl CitzZWxlY3RlZC4gIFR5cGljYWxseSwgYSB0b2MgaXMgcGxhY2VkIGF0IHRoZSBiZWdpbm5pbmcg b2YgYSBidWZmZXIgYW5kCitgZnJvbScgaXMgYGJlbG93JyB0byBjYXB0dXJlIGVudHJ5IGNhbmRp ZGF0ZXMgYWZ0ZXIgdGhlIHRvYy4gIElmIHlvdSBzZXQKK2Bmcm9tJyB0byBgYWJvdmUnLCBjYW5k aWRhdGVzIGFyZSBzZWxlY3RlZCBmcm9tIGFib3ZlIHRoZSB0b2MuICBVc2UKK2BhbGwnIHRvIGNh cHR1cmUgZXZlcnkgZW50cnkgY2FuZGlkYXRlLiAgVGhpcyBpcyB1c2VmdWwgdG8gY3JlYXRlIGEK K2NvbXBsZXRlIHRvYyBhdCB0aGUgZW5kIG9mIHlvdXIgYnVmZmVyLgorCitUaGUgYHN0eWxlJyBw YXJhbWV0ZXIgY2FuIGJlIG5pbCwgYGl0ZW0nLCBgbnVtYmVyJyBvciBgbnVtYmVyLicuICBVbmRl cgorbmlsLCBlbnRyaWVzIGhhdmUgbm8gZGVjb3JhdGlvbnMuICBJZiBgaXRlbScsIGVudHJpZXMg YXJlIHByZWZpeGVkIHdpdGgKK1wiLVwiLiAgSWYgYGJ1bGxldCcsIHByZWZpeCB3aXRoIFwiKlwi LiAgSWYgYG51bWJlcicsIG51bWVyaWMgcHJlZml4ZXMKK2FyZSBnZW5lcmF0ZWQsIGZvciBleGFt cGxlIDEsIDEuMSwgMiwgMi4xLCAyLjEuMSwgMi4xLjIuICBVc2UgYG51bWJlci4nCit0byBhZGQg YSBwZXJpb2QgdG8gZWFjaCBlbnRyeSdzIG51bWJlci4KKworYGluZGVudCcgaXMgYW4gaW50ZWdl ciBiZXR3ZWVuIDAgYW5kIDEwLiAgMCBtZWFucyBub3RoaW5nIHNob3VsZCBiZQoraW5kZW50ZWQu ICBPdGhlcndpc2UsIGVhY2ggZW50cnkgaXMgaW5kZW50ZWQgYnkgdGhlIG51bWJlciBvZiBzcGFj ZXMgb2YKK2l0cyBNYXJrZG93biBsZXZlbCBtdWx0aXBsaWVkIGJ5IHRoaXMgdmFsdWUuICBDYW5k aWRhdGVzIHRoYXQgaGF2ZSBubworbmF0aXZlIGxldmVsIHN1Y2ggYXMgbGlzdCBpdGVtcyBpbmhl cml0IHRoZSBiYXNlIGluZGVudGF0aW9uIGxldmVsIG9mCitpdHMgcHJlY2VkaW5nIGhlYWRlci4g IExpc3QgaXRlbSBoaWVyYXJjaGllcyBhbmQgY29kZSBibG9ja3MgaW5kZW50Cit1bmRlciB0aGF0 IGJhc2UuCisKK1NldCBgbm8tbGluaycgdG8gdCBpZiB5b3UgZG8gbm90IHdhbnQgeW91ciBlbnRy aWVzIHRvIGhhdmUgaGVhZGVyIGxpbmtzLgorQnkgZGVmYXVsdCwgZWFjaCBlbnRyeSBkZXJpdmVk IGZyb20gYSBoZWFkaW5nIGlzIHByZXNlbnRlZCBhcyBhIGxpbmsgdG8KK2l0cyBzb3VyY2UgaGVh ZGluZy4gIE5PVEU6IFRoZSBlbGVtZW50cyByZXByZXNlbnRlZCBieSBgc2V0ZXh0JywgYGl0ZW0n LAorYG51bWJlcmVkLWl0ZW0nLCBgY29kZScgZG8gbm90IHN1cHBvcnQgbGlua3MuCisKK1VzZSBg cmVsYXRpdmUtZGVwdGgnIHRvIGNyZWF0ZSBhIHRvYyB1bmRlcm5lYXRoIGEgaGVhZGluZywgbGlt aXRpbmcgdGhlCit0b2MgdG8gaGVhZGluZyBkZXB0aHMgdW5kZXJuZWF0aCB0aGUgcHJlY2VkaW5n IGhlYWRlciBhbmQgc3BlY2lmeSB0aGUKK2xldmVscyByZWxhdGl2ZSB0byB0aGF0IGhlYWRlci4g IE1vcmUgY29uY3JldGVseSwgaWYgdGhlIHByZWNlZGluZworaGVhZGVyIGlzIGEgbGV2ZWwgMSBc IiNcIiBoZWFkZXIsIGBtaW4tZGVwdGgnIDEgYW5kIGBtYXgtZGVwdGgnIDIgd2lsbAorYmUgaW50 ZXJwcmV0ZWQgdG8gYmUgMiBhbmQgMy4gIElmIHlvdSBkZW1vdGUgdGhlIGhlYWRlciB0byBsZXZl bCAyCitcIiMjXCIgdGhleSB3aWxsIGJlIGludGVycHJldGVkIGFzIDMgYW5kIDQuICBUaGlzIGlz IHVzZWZ1bCB0byBhdm9pZAorZnVzc2luZyB3aXRoIHRvYyBjb25maWd1cmF0aW9ucyB1bmRlciBo ZWFkZXJzIHdoZW4geW91IGNoYW5nZSB0aGVpcgorbGV2ZWxzLgorCitGb3IgZXhhbXBsZToKKwor PCEtLSBtYXJrZG93bi10cy10b2M6IC0qLSByZWxhdGl2ZS1kZXB0aDogdDsgbWluLWRlcHRoOiAx OyBtYXgtZGVwdGg6IDI7IC0qLSAtLT4KKzwhLS0gbWFya2Rvd24tdHMtdG9jLWVuZDogLS0+CisK K0ZpbmFsbHksIGlmIGBpZ25vcmUnIGlzIHQsIHlvdSBjYW4ga2VlcCBhIHRvYyBlbGVtZW50IGlu IHBsYWNlIGFuZCBza2lwCitpdC4KKworSU5URVJBQ1RJVkUgd2lsbCBiZSBub24tbmlsIGlmIHRo aXMgY29tbWFuZCB3YXMgaW52b2tlZCBpbnRlcmFjdGl2ZWx5LgorCitTZWUgYG1hcmtkb3duLXRz LXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUnIHRvIGNvbmZpZ3VyZSB3YXJuaW5ncyBhYm91dAor dGFibGVzIG5vdCBiZWluZyBwcm9jZXNzZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4i CisgIChpbnRlcmFjdGl2ZSAicFxuUiIpCisgIDs7IE5PVEU6IElmIHBhcmFtZXRlcnMgb3IgdGhl aXIgZGVmYXVsdHMgY2hhbmdlLCBiZSBzdXJlIHRvIG1pcnJvcgorICA7OyB0aGVtIGluIGBtYXJr ZG93bi10cy10b2MtaW5zZXJ0LXRlbXBsYXRlJy4KKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5v dC1tb2RlICdtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUpCisgIChzZXRxIGJlZyAob3IgYmVnIChw b2ludC1taW4pKSkKKyAgKHNldHEgZW5kIChvciBlbmQgKHBvaW50LW1heCkpKQorICAodW5sZXNz IChlcSBiZWcgZW5kKQorICAgIDs7IENvbnZlcnQgbWFya2VycyB0byBhYnNvbHV0ZSBwb3NpdGlv bnMuCisgICAgKHNldHEgYmVnIChpZiAobWFya2VycCBiZWcpIChtYXJrZXItcG9zaXRpb24gYmVn KSBiZWcpKQorICAgIChzZXRxIGVuZCAoaWYgKG1hcmtlcnAgZW5kKSAobWFya2VyLXBvc2l0aW9u IGVuZCkgZW5kKSkKKyAgICA7OyBOT1RFOiBPcGVyYXRlIG9uIHRoZSB3aWRlbmVkIGJ1ZmZlciB0 byBhdm9pZCB0cmVlc2l0ZXIgY3Jhc2ggaXNzdWVzLgorICAgICh3aXRob3V0LXJlc3RyaWN0aW9u CisgICAgICAobGV0ICgodG9jcyAobWFya2Rvd24tdHMtLXRvY3MgYmVnIGVuZCkpKQorICAgICAg ICAodW5sZXNzIHRvY3MKKyAgICAgICAgICAoaWYgKGFuZCBpbnRlcmFjdGl2ZQorICAgICAgICAg ICAgICAgICAgIChlcSAnaW5zZXJ0LXRlbXBsYXRlIG1hcmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13 YXJuLWlmLW5vbmUpKQorICAgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAobWFy a2Rvd24tdHMtdG9jLWluc2VydC10ZW1wbGF0ZSkKKyAgICAgICAgICAgICAgICA7OyBJZiB0aGUg dXNlciBkaWRuJ3QgcXVpdCB0aGUgcHJvbXB0LCBhIHRlbXBsYXRlIG1heSBoYXZlCisgICAgICAg ICAgICAgICAgOzsgYmVlbiBhZGRlZCwgc28gcmVzY2FuIHRoZSBidWZmZXIuCisgICAgICAgICAg ICAgICAgKHNldHEgdG9jcyAobWFya2Rvd24tdHMtLXRvY3MpKSkKKyAgICAgICAgICAgICh3aGVu IChlcSAnbm8tdGFibGVzIG1hcmtkb3duLXRzLXRvYy1nZW5lcmF0ZS13YXJuLWlmLW5vbmUpCisg ICAgICAgICAgICAgIChsd2FybiAnbWFya2Rvd24tdHMtdG9jLWdlbmVyYXRlCisgICAgICAgICAg ICAgICAgICAgICA6d2FybmluZworICAgICAgICAgICAgICAgICAgICAgIk5vIHRhYmxlcyBvZiBj b250ZW50cyBmb3VuZCBpbiAlcy4iCisgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLW5hbWUg KGN1cnJlbnQtYnVmZmVyKSkpKSkpCisgICAgICAgIChtYXJrZG93bi10cy0tdG9jcy1zYW5pdHkt Y2hlY2sgdG9jcykKKworICAgICAgICA7OyBTdHJhdGVneSBpcyBwcm9jZXNzIG9uZSB0b2MgYXQg YSB0aW1lIGZyb20gdGhlIHRvcCB0byB0aGUKKyAgICAgICAgOzsgYm90dG9tIG9mIHRoZSByYW5n ZSBCRUcgRU5ELiAgU3Vic2VxdWVudCB0b2MgYW5kIGVudHJ5CisgICAgICAgIDs7IGNhbmRpZGF0 ZSBub2RlIHBvc2l0aW9ucyBjaGFuZ2UgYXMgd2UgdXBkYXRlIGVhY2ggdG9jIHRleHQgc28KKyAg ICAgICAgOzsgd2UgaGF2ZSB0byByZXRyaWV2ZSB0aGVtIGZyZXNoIGZyb20gdGhlIGVuZCBvZiB0 aGUgbW9zdCByZWNlbnQKKyAgICAgICAgOzsgdG9jLgorICAgICAgICAobGV0ICgodG9jcykKKyAg ICAgICAgICAgICAgKG51bS10b2NzLXByb2Nlc3NlZCAwKQorICAgICAgICAgICAgICAodG9jKQor ICAgICAgICAgICAgICAodG9jLWVuZCkKKyAgICAgICAgICAgICAgKHRvYy1zaXplKQorICAgICAg ICAgICAgICA7OyBUaGVzZSBhcmUgYWRqdXN0ZWQgYnkgdGhlIHNpemUgb2YgaW5zZXJ0ZWQgdGV4 dCBlYWNoIHBhc3MuCisgICAgICAgICAgICAgIChiZWctcG9zIGJlZykKKyAgICAgICAgICAgICAg KGVuZC1wb3MgZW5kKQorICAgICAgICAgICAgICAoc291cmNlLWJ1ZmZlciAoY3VycmVudC1idWZm ZXIpKSkKKyAgICAgICAgICA7OyBGaW5kIGVhY2ggIm1hcmtkb3duLXRzLXRvYyIgaW4gc3VjY2Vz c2lvbiBzdGFydGluZyBhdCB0aGUgZW5kCisgICAgICAgICAgOzsgb2YgZWFjaCBwcmV2aW91cyBv bmUgd2UgZmluZCB3aXRoaW4gdGhlIHJlcXVlc3RlZCByZWdpb24uCisgICAgICAgICAgKHdoaWxl IChhbmQgKDwgYmVnLXBvcyBlbmQtcG9zKQorICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRv Y3MgKG1hcmtkb3duLXRzLS10b2NzIGJlZy1wb3MgZW5kLXBvcykpKQorICAgICAgICAgICAgKHNl dHEgdG9jIChjYXIgdG9jcykpCisgICAgICAgICAgICAoc2V0cSB0b2Mtc2l6ZSAwKQorCisgICAg ICAgICAgICAod2hlbiAoZXF1YWwgIm1hcmtkb3duLXRzLXRvYyIgKGNhciB0b2MpKQorICAgICAg ICAgICAgICA7OyBBZnRlciBzYW5pdHkgY2hlY2tpbmcsIHdlIGtub3cgdGhlIHNlY29uZCBlbGVt ZW50IGlzIGEKKyAgICAgICAgICAgICAgOzsgdG9jLWVuZC4KKyAgICAgICAgICAgICAgKHNldHEg dG9jLWVuZCAobnRoIDEgdG9jcykpCisgICAgICAgICAgICAgIChsZXQqICgodG9jLW5vZGUgKGFs aXN0LWdldCAnbm9kZSB0b2MpKQorICAgICAgICAgICAgICAgICAgICAgKHRvYy12YXJzIChhbGlz dC1nZXQgJ3ZhcnMgdG9jKSkKKyAgICAgICAgICAgICAgICAgICAgICh0b2MtaWdub3JlIChhbGlz dC1nZXQgJ2lnbm9yZSB0b2MtdmFycykpKQorICAgICAgICAgICAgICAgICh1bmxlc3MgdG9jLWln bm9yZQorICAgICAgICAgICAgICAgICAgOzsgQnVpbGQgdGhlIHRvYyBvbmUgY2FuZGlkYXRlIGF0 IGEgdGltZSwgdHJhY2tpbmcKKyAgICAgICAgICAgICAgICAgIDs7IGluZGVudGF0aW9uIGFuZCBj cmVhdGluZyBsaW5rcyBpZiBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAobGV0KiAoKHRvYy1l bmQtbm9kZSAoYWxpc3QtZ2V0ICdub2RlIHRvYy1lbmQpKQorICAgICAgICAgICAgICAgICAgICAg ICAgIChyZWctYmVnICh0cmVlc2l0LW5vZGUtZW5kIHRvYy1ub2RlKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAocmVnLWVuZCAodHJlZXNpdC1ub2RlLXN0YXJ0IHRvYy1lbmQtbm9kZSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1oYW5kbGVzIChtYXJrZG93bi10cy0tdG9jLWV4 cGFuZC1jYW5kaWRhdGUtaGFuZGxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG9yIChjZHItc2FmZSAoYXNzcSAnY2FuZGlkYXRlcyB0b2MtdmFycykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRpbmcpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBOb3cgYWRkIGhlYWRpbmdzIHRvIGFsd2F5cyByZXRyaWV2ZSBh bmQgZGVyaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgOzsgbGV2ZWxzIGV2ZW4gaWYgdGhl eSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgdG9jLgorICAgICAgICAgICAgICAgICAgICAgICAgIChz ZWVkLWhhbmRsZXMgKGNvcHktdHJlZSB0b2MtaGFuZGxlcykpCisgICAgICAgICAgICAgICAgICAg ICAgICAgKF8gKGRvbGlzdCAoZWx0IChhbGlzdC1nZXQgJ2hlYWRpbmcgbWFya2Rvd24tdHMtLXRv Yy1oYW5kbGVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1wdXNobmV3IGVs dCBzZWVkLWhhbmRsZXMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodG9jLWZyb20gKG9y IChjZHItc2FmZSAoYXNzcSAnZnJvbSB0b2MtdmFycykpICdiZWxvdykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKHRvYy1zdHlsZSAob3IgKGNkci1zYWZlIChhc3NxICdzdHlsZSB0b2MtdmFy cykpICdpdGVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodG9jLW5vLWxpbmsgKGFsaXN0 LWdldCAnbm8tbGluayB0b2MtdmFycykpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1p bmRlbnQgKG1pbiAxMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1heCAwIChvciAoY2RyLXNhZmUgKGFzc3EgJ2luZGVudCB0b2MtdmFycykpIDEpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKHRvYy1taW4tZGVwdGggKG1heCAxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGNkci1zYWZlIChhc3NxICdtaW4t ZGVwdGggdG9jLXZhcnMpKSAxKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1tYXgt ZGVwdGggKG1heCB0b2MtbWluLWRlcHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAob3IgKGNkci1zYWZlIChhc3NxICdtYXgtZGVwdGggdG9jLXZhcnMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vc3QtcG9z aXRpdmUtZml4bnVtKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRvYy1yZWxhdGl2ZS1k ZXB0aCAoY2RyLXNhZmUgKGFzc3EgJ3JlbGF0aXZlLWRlcHRoIHRvYy12YXJzKSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgKHRvYy1jYW5kaWRhdGVzIChtYXJrZG93bi10cy0tdG9jLWNvbGxl Y3QtY2FuZGlkYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dG9jLW5vZGUgdG9jLWVuZC1ub2RlIHNlZWQtaGFuZGxlcyB0b2MtZnJvbSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgKHRvYy1yZWxhdGl2ZS1oZWFkaW5nLWRlcHRoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICgxKyAob3IgKHNlcS1wb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnKCJhdHhfaDFfbWFya2VyIiAiYXR4X2gyX21hcmtlciIgImF0eF9oM19t YXJrZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0eF9oNF9tYXJr ZXIiICJhdHhfaDVfbWFya2VyIiAiYXR4X2g2X21hcmtlciIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdHlwZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRvYy1ub2RlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJhdHhfaGVhZGluZyIgJ2JhY2t3YXJkKSAwICduYW1lZCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnZXF1YWwpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLTEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2x1Zy10by1w b3MgKG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkcykpCisgICAgICAgICAgICAgICAgICAgICAgICAg KHBvcy10by1zbHVnCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChodCAobWFrZS1o YXNoLXRhYmxlIDpzaXplIChoYXNoLXRhYmxlLWNvdW50IHNsdWctdG8tcG9zKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dGVzdCAjJ2VxdWFs KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGhhc2ggKGxhbWJkYSAoayB2KSAo cHV0aGFzaCB2IGsgaHQpKSBzbHVnLXRvLXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBodCkpKQorCisgICAgICAgICAgICAgICAgICAgICh3aXRoLXdvcmstYnVmZmVyCisgICAgICAg ICAgICAgICAgICAgICAgKGluc2VydCAiPCEtLSBOT1RFOiBtYXJrZG93bi10cy10b2MgZ2VuZXJh dGVkIHRleHQgc2VjdGlvbiBtYXkgYmUgb3ZlcndyaXR0ZW4uIC0tPlxuIikKKyAgICAgICAgICAg ICAgICAgICAgICAobGV0ICgoaGFuZGxlKSAoaGFuZGxlLWNsYXNzKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmRlbnQg MCkgKGxldmVsIDEpIChsZXZlbC1wcmV2IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgSGVhZGluZyBsZXZlbCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgaXRlbXMgdW5kZXIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBpdC4gIElmIHRoZXJlIGFyZSBubyBoZWFkaW5ncywg aXQgd2lsbCByZW1haW4gMS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV2ZWwtaGVh ZGluZyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IEFkanVzdCBmb3Igbm9uIGhl YWRpbmdzIHVuZGVyIGhlYWRpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudW1i ZXItc3RhY2spKQorCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBDYW5kaWRhdGVzIHNob3Vs ZCBiZSBpbiBidWZmZXIgb3JkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAoZG9saXN0IChj YW5kaWRhdGUgdG9jLWNhbmRpZGF0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQg KChzbHVnLXBvcykgKHRleHQpIChsaW5rLXRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxldmVsLWFkaiAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBoYW5kbGUgKGNhciBjYW5kaWRhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGFuZGxlLWNsYXNzIChhbGlzdC1nZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhhbmRsZSBtYXJrZG93bi10cy0tdG9jLWhhbmRsZS1jbGFzc2Vz KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBub2RlIChjZHIgY2FuZGlkYXRl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzbHVnLXBvcyBuaWwpCisKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTdHJpcCB0cmFpbGluZyBuZXdsaW5lcy4gIEFk ZCB0aGVtIGNvbnNpc3RlbnRseSBiZWxvdy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c2V0cSB0ZXh0IChzdHJpbmctdHJpbS1yaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXJrZG93bi10cy0tdG9jLXRleHQtbm9ybWFsaXplCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSBub2RlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlICduby1w cm9wZXJ0eSkpKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IENhbmRpZGF0ZSBu b2RlIHR5cGUgbG9naWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlIGhhbmRs ZS1jbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdoZWFkaW5nCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHggKHNlcS1wb3NpdGlvbiAnKGgxIGgyIGgz IGg0IGg1IGg2KSBoYW5kbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXRxIHNsdWctcG9zICh0cmVlc2l0LW5vZGUtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1zZWFyY2gtZm9yd2FyZCBub2RlICJh dHhfaGVhZGluZyIgJ2JhY2t3YXJkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBsZXZlbCAoc2V0cSBsZXZlbC1oZWFkaW5nICgxKyB4KSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbC1hZGogMCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGluZGVudCAoMS0gbGV2ZWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGluay10YXJnZXQgdGV4dCkpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCdzZXRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobGV0ICgoeCAoc2VxLXBvc2l0aW9uICcoc2gxIHNoMikgaGFuZGxlKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbCAoMSsgeCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBsZXZlbC1hZGogMCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGluZGVudCAoMS0gbGV2ZWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGluay10YXJnZXQgbmlsKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKG9yICdpdGVtICdudW1iZXJlZC1pdGVtKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIGxldmVsIGxldmVsLWhlYWRpbmcpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwtYWRqIChtYXJrZG93bi10cy0tdG9jLWxp c3QtaXRlbS1kZXB0aCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBpbmRlbnQgKDEtICAoKyBsZXZlbCBsZXZlbC1hZGopKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0cSBsaW5rLXRhcmdldCBuaWwpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCdjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSW5oZXJp dCB0aGUgYW1iaWVudCBsZXZlbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBsZXZlbC1hZGogMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBpbmRl bnQgKDEtICAoKyBsZXZlbCBsZXZlbC1hZGopKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBsaW5rLXRhcmdldCBuaWwpKSkKKworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IEZpbHRlciBkZXNpcmVkIGhhbmRsZXMgYW5kIGxldmVscy4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hlbiAoYW5kIChtZW1xIGhhbmRsZSB0b2MtaGFuZGxlcykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg+PSBsZXZlbCAoKyB0b2MtbWluLWRl cHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIHRvYy1yZWxhdGl2ZS1kZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0b2MtcmVsYXRpdmUtaGVhZGluZy1kZXB0aCAwKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPD0gbGV2ZWwgKCsgdG9jLW1h eC1kZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiB0b2MtcmVsYXRpdmUtZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9jLXJlbGF0aXZlLWhlYWRpbmctZGVwdGggMCkp KSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQ3JlYXRlIHRoZSBlbnRyeSB3 aXRoIGluZGVudCwgaXRlbS9udW1iZXIgcHJlZml4LCBsaW5rLgorCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBDb3JuZXIgY2FzZTogaW5pdGlhbCBsZXZlbCBoaWdoZXIgdGhhbiAx LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoPiBsZXZlbCAxKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgbGV2ZWwtcHJldiAw KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwgMSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIChub3QgdG9jLW5vLWxpbmspIGxp bmstdGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTYW5pdGl6ZSB0 aGUgaWQgdG8gY29uZm9ybSB0byBDU1MgaWRlbnQgc3ludGF4LgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2V0cSB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChmb3JtYXQgIlslc10oIyVzKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmLWxldCogKChzbHVnIChnZXRoYXNoIHNsdWctcG9zIHBvcy10by1zbHVn KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs dWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5j YWxsIG1hcmtkb3duLXRzLXRvYy1zbHVnLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLXRhcmdldCkpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyAoKiAoMS0gKG1h eCBpbmRlbnQgMSkpIHRvYy1pbmRlbnQpID9ccykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBjYXNlIHRvYy1zdHlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgnaXRlbSAiLSAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgnYnVsbGV0ICIqICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKChvciAnbnVtYmVyICdudW1iZXIuKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobGV0ICgobGV2ZWwgKCsgbGV2ZWwgbGV2ZWwtYWRqKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChvciAobm90IG51 bWJlci1zdGFjaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICg+IGxldmVsIChjYWFyIG51bWJlci1zdGFjaykpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBgKCxsZXZlbCAuIDApIG51 bWJlci1zdGFjaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChhbmQgbnVtYmVyLXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKDwgbGV2ZWwgKGNhYXIgbnVtYmVyLXN0YWNrKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGlsZSAo YW5kIG51bWJlci1zdGFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoPCBsZXZlbCAoY2FhciBudW1iZXItc3RhY2spKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9wIG51 bWJlci1zdGFjaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1bmxlc3MgbnVtYmVyLXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggYCgsbGV2ZWwgLiAwKSBudW1iZXItc3RhY2sp KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0Y2RyIChj YXIgbnVtYmVyLXN0YWNrKSAoMSsgKGNkYXIgbnVtYmVyLXN0YWNrKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChzKSAobiAobGVuZ3RoIG51bWJlci1z dGFjaykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEt bWFwLWluZGV4ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGxhbWJkYSAoZWx0IGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbmNhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChmb3JtYXQgIiVkIiAoY2RyIGVsdCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgKDErIGlkeCkgbikg IiIgIi4iKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cmV2ZXJzZSBudW1iZXItc3RhY2spKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjb25jYXQgcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHdoZW4gKGVxIHRvYy1zdHlsZSAnbnVtYmVyLikgIi4iKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgIikpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfICIiKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBBZGQgYSBoYXJkIGxpbmUgYnJlYWsuICBCYWNrc2xhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgc2VlbXMgbGVzcyB3ZWxsIHN1cHBv cnRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyByZW5kZXJl cnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXN0cmluZyAy ID9ccykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGV2ZWwtcHJldiBsZXZlbCkpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAoc2V0cSB0b2Mtc2l6ZSAoYnVmZmVyLXNpemUpKQorICAgICAgICAg ICAgICAgICAgICAgIChsZXQgKCh0ZW1wLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHNvdXJjZS1idWZmZXIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIHJlZy1iZWcg cmVnLWVuZCB0ZW1wLWJ1ZmZlcikpKSkpCisgICAgICAgICAgICAgICAgICAoc2V0cSBudW0tdG9j cy1wcm9jZXNzZWQgKDErIG51bS10b2NzLXByb2Nlc3NlZCkpKSkpCisgICAgICAgICAgICA7OyBT dGFydCB0aGUgbmV4dCBwYXNzIGFmdGVyIHRoaXMgdG9jLWVuZC4gIEFkanVzdCBmb3IgdGhlCisg ICAgICAgICAgICA7OyBpbnNlcnRlZCB0ZXh0IHNpemUuCisgICAgICAgICAgICAoc2V0cSBiZWct cG9zICgrIChhbGlzdC1nZXQgJ2VuZCB0b2MtZW5kKSB0b2Mtc2l6ZSkpCisgICAgICAgICAgICAo c2V0cSBlbmQtcG9zIChtaW4gKHBvaW50LW1heCkgKCsgZW5kLXBvcyB0b2Mtc2l6ZSkpKSkKKyAg ICAgICAgICAod2hlbiAoYW5kIChlcSBudW0tdG9jcy1wcm9jZXNzZWQgMCkKKyAgICAgICAgICAg ICAgICAgICAgIChlcSAnbm8tYWN0aXZlLXRhYmxlcyBtYXJrZG93bi10cy10b2MtZ2VuZXJhdGUt d2Fybi1pZi1ub25lKSkKKyAgICAgICAgICAgIChsd2FybiAnbWFya2Rvd24tdHMtdG9jLWdlbmVy YXRlCisgICAgICAgICAgICAgICAgICAgOndhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAiTm8g dGFibGVzIG9mIGNvbnRlbnRzIGdlbmVyYXRlZCBpbiAlcy4iCisgICAgICAgICAgICAgICAgICAg KGJ1ZmZlci1uYW1lIChjdXJyZW50LWJ1ZmZlcikpKSkpKSkpKQorCisocHJvdmlkZSAnbWFya2Rv d24tdHMtbW9kZS14KQorOzs7IG1hcmtkb3duLXRzLW1vZGUteC5lbCBlbmRzIGhlcmUKZGlmZiAt LWdpdCBhL2xpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUuZWwgYi9saXNwL3RleHRtb2Rl cy9tYXJrZG93bi10cy1tb2RlLmVsCmluZGV4IDY1N2Q2YmM0NjZkLi5kNTU1M2JkNzM2MSAxMDA2 NDQKLS0tIGEvbGlzcC90ZXh0bW9kZXMvbWFya2Rvd24tdHMtbW9kZS5lbAorKysgYi9saXNwL3Rl eHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsCkBAIC0xLDExICsxLDE0IEBACi07OzsgbWFya2Rv d24tdHMtbW9kZS5lbCAtLS0gdHJlZSBzaXR0ZXIgc3VwcG9ydCBmb3IgTWFya2Rvd24gIC0qLSBs ZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQorOzs7IG1hcmtkb3duLXRzLW1vZGUuZWwgLS0tIHRyZWUg c2l0dGVyIHN1cHBvcnQgZm9yIE1hcmtkb3duIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQog CiA7OyBDb3B5cmlnaHQgKEMpIDIwMjQtMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KIAotOzsgQXV0aG9yICAgICA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRv QGdtYWlsLmNvbT4KLTs7IE1haW50YWluZXIgOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwu anVsaWF0b0BnbWFpbC5jb20+Ci07OyBDcmVhdGVkICAgIDogQXByaWwgMjAyNAotOzsgS2V5d29y ZHMgICA6IG1hcmtkb3duIG1kIGxhbmd1YWdlcyB0cmVlLXNpdHRlcgorOzsgQXV0aG9yICAgICAg ICAgICA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRvQGdtYWlsLmNvbT4KKzs7 ICAgICAgICAgICAgICAgICAgOiBTdMOpcGhhbmUgTWFya3MgPHNoaXBtaW50c0BnbWFpbC5jb20+ Cis7OyBNYWludGFpbmVyICAgICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1bGlh dG9AZ21haWwuY29tPgorOzsgQ3JlYXRlZCAgICAgICAgICA6IEFwcmlsIDIwMjQKKzs7IFZlcnNp b24gICAgICAgICAgOiAxLjAKKzs7IFBhY2thZ2UtUmVxdWlyZXMgOiAoKGVtYWNzICIzMS4xIikp Cis7OyBLZXl3b3JkcyAgICAgICAgIDogbWFya2Rvd24gbWQgdGV4dCBlZGl0IGxhbmd1YWdlcyB0 cmVlLXNpdHRlcgogCiA7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCiAKQEAgLTIy LDEzOCArMjUsNzM4IEBACiA7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCi07OzsgVHJlZS1z aXR0ZXIgbGFuZ3VhZ2UgdmVyc2lvbnMKKzs7OyBDb21tZW50YXJ5OgorCis7Ozs7IFRyZWUtc2l0 dGVyIExhbmd1YWdlIFZlcnNpb25zCiA7OwogOzsgbWFya2Rvd24tdHMtbW9kZSBoYXMgYmVlbiB0 ZXN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGdyYW1tYXJzIGFuZCB2ZXJzaW9uOgogOzsgLSB0cmVl LXNpdHRlci1tYXJrZG93bjogdjAuNC4xCiA7OyAtIHRyZWUtc2l0dGVyLW1hcmtkb3duLWlubGlu ZTogdjAuNC4xCiA7OwotOzsgV2UgdHJ5IG91ciBiZXN0IHRvIG1ha2UgYnVpbHRpbiBtb2RlcyB3 b3JrIHdpdGggbGF0ZXN0IGdyYW1tYXIKLTs7IHZlcnNpb25zLCBzbyBhIG1vcmUgcmVjZW50IGdy YW1tYXIgaGFzIGEgZ29vZCBjaGFuY2UgdG8gd29yayB0b28uCi07OyBTZW5kIHVzIGEgYnVnIHJl cG9ydCBpZiBpdCBkb2Vzbid0LgotCi07OzsgQ29tbWVudGFyeToKKzs7IFdlIHRyeSBvdXIgYmVz dCB0byBtYWtlIGJ1aWx0LWluIG1vZGVzIHdvcmsgd2l0aCBsYXRlc3QgZ3JhbW1hcgorOzsgdmVy c2lvbnMsIHNvIGEgbW9yZSByZWNlbnQgZ3JhbW1hciBoYXMgYSBnb29kIGNoYW5jZSB0byB3b3Jr LiAgU2VuZAorOzsgdXMgYSBidWcgcmVwb3J0IGlmIGl0IGRvZXNuJ3QuCis7OworOzsgQmlkaXJl Y3Rpb25hbCBUZXh0IENvbnNpZGVyYXRpb25zCis7OworOzsgVGV4dCB3aXRoIG1hcmt1cCBtYXkg bmVlZCBhbiBleHRyYSBuZXdsaW5lIGJlZm9yZSBiaWRpcmVjdGlvbmFsIHRleHQKKzs7IGZvciBp dCB0byBzaG93IGNvcnJlY3RseS4gIFRoaXMgaXMgYSBsaW1pdGF0aW9uIGluIHRoZSBFbWFjcyBk aXNwbGF5Cis7OyBlbmdpbmUuCis7OworOzsgQ29kZSBCbG9jayBMYW5ndWFnZSBNb2RlIENvbnNp ZGVyYXRpb25zCis7OworOzsgRmVuY2VkIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMgYXJlIGRl cml2ZWQgZnJvbSB0aGUgdGFibGUKKzs7IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzJyBh bmQgaGV1cmlzdGljcyBhZGRpbmcgIi10cy1tb2RlIiBhbmQKKzs7ICItbW9kZSIgdG8gdGhlIGxh bmd1YWdlIG5hbWUuICBJZiB5b3VyIGxhbmd1YWdlJ3MgbW9kZSBpcyBub3QKKzs7IHByb3Blcmx5 IHJlY29nbml6ZWQsIGFkZCBpdCB0byBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcycsIHdo aWNoCis7OyBzZWUuCis7OworOzsgRWFjaCBsYW5ndWFnZSdzIG1ham9yIG1vZGUgaXMgZW5hYmxl ZCBvbmNlIHBlciBgbWFya2Rvd24tdHMtbW9kZScKKzs7IGJ1ZmZlciBpbiBhIHRlbXBvcmFyeSBi dWZmZXIgdG8gZXh0cmFjdCBpdHMgZGVmYXVsdCBmb250LWxvY2sgYW5kCis7OyB0cmVlLXNpdHRl ciBzZXR0aW5ncy4gIEluIGNvbnZlbnRpb25hbCBub24tdHJlZXNpdCBjb2RlIGJsb2NrcywgdGhl Cis7OyBtYWpvciBtb2RlIGlzIGVuYWJsZWQgZWFjaCB0aW1lIHRoZSBibG9jayBpcyBmb250aWZp ZWQuCis7OworOzsgTk9URTogTWFqb3IgbW9kZSBob29rcyBhcmUgbm90IHJ1biBhbmQgZm9udC1s b2NrLCB0cmVlc2l0LCBpbmRlbnQsCis7OyBjb21tZW50IHJlY29nbml0aW9uLCBldGMuIGN1c3Rv bWl6YXRpb25zIHRoYXQgeW91IG1pZ2h0IGhhdmUgaW4geW91cgorOzsgaG9va3MgYXJlIG5vdCBh cHBsaWVkLiAgQXMgYSByZXN1bHQsIHlvdXIgY29kZSBibG9ja3MgbWlnaHQgYXBwZWFyCis7OyBk aWZmZXJlbnQgaW4gYG1hcmtkb3duLXRzLW1vZGUnIG1vZGUgdGhhbiBpbiBuYXRpdmUgbWFqb3Ig bW9kZQorOzsgYnVmZmVycy4gIE5vdCBydW5uaW5nIGhvb2tzIGF2b2lkcyB0aGUgY29zdCBvZiBl YWNoIG1vZGUgaG9vayBhbmQKKzs7IGF2b2lkcyBwb3RlbnRpYWwgcmVjdXJzaXZlIHRyZWVzaXQg Y2FsbGJhY2sgaXNzdWVzLgorOzsKKzs7OzsgQ29kZSBCbG9jayBDb21tYW5kcworOzsKKzs7IFNv bWUgY29tbW9uIGNvbW1hbmRzIHdpbGwgb3BlcmF0ZSB3aXRoaW4gYSBjb2RlIGJsb2NrIGFuZCBp biBpdHMKKzs7IG1vZGUuICBUaGVzZSBvcGVyYXRlIGluIGFuIGluZGlyZWN0IGJ1ZmZlciBhbmQg c29tZSBjb21tYW5kcyBtYXkKKzs7IG9wZXJhdGUgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdG8gdGhl IHNhbWUgY29tbWFuZHMgaW52b2tlZCBpbiBhIG5hdGl2ZQorOzsgbW9kZSBidWZmZXIuICBgaW5k ZW50LWZvci10YWItY29tbWFuZCcgbWF5IGludm9rZQorOzsgYGNvbXBsZXRpb24tYXQtcG9pbnQn IHVuZGVyIHRoZSBjb3ZlcnMgYW5kIG1heSByZXR1cm4gcmVzdWx0cyBmcm9tCis7OyB0aGUgc3Vy cm91bmRpbmcgTWFya2Rvd24gYnVmZmVyIGluc3RlYWQgb2YgdGhlIGNvZGUgYmxvY2sncyBjb250 ZXh0LgorOzsgWW91IGNhbiBpbnZva2UgYGNvbXBsZXRpb24tYXQtcG9pbnQnIGRpcmVjdGx5IGJ5 IHVzaW5nIGl0cyBrZXkKKzs7IGJpbmRpbmcsIGBDLU0taWAuCis7OworOzs7OyBQaXBlIFRhYmxl cworOzsKKzs7IFRoZXNlIGFyZSBhIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biAoR0ZNKSBleHRl bnNpb24gYW5kIGFyZSBhIGRlCis7OyBmYWN0byBzdGFuZGFyZCBnaXZlbiB0aGVpciBwb3B1bGFy aXR5IGFuZCBpbXBsZW1lbnRhdGlvbnMgYWNyb3NzCis7OyBwcm9kdWN0cy4gIFRoZXkgbWlnaHQg YXMgd2VsbCBiZSBmb2xkZWQgaW50byB0aGUgQ29tbW9uTWFyayBzdGFuZGFyZC4KKzs7Cis7OyBB IHBpcGUgdGFibGUgaXMgYSByZWN0YW5nbGUgb2YgdGV4dCBzdXJyb3VuZGVkIHRvIHRoZSBlYXN0 IGFuZCB3ZXN0Cis7OyBieSBwaXBlIHN5bWJvbHMgYW5kIHdoZXJlIHBpcGVzIHNlcGFyYXRlIGNv bHVtbnMuICBJdCBoYXMgYSBoZWFkZXIKKzs7IHJvdyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBo ZWFkZXIgYWxpZ25tZW50IHJvdywgYm90aCBvZiB3aGljaCBtdXN0Cis7OyBjb250YWluIHRoZSBz YW1lIG51bWJlciBvZiBjZWxscy4gIEJvZHkgcm93cyBhcmUgb3B0aW9uYWwuICBBIHRhYmxlCis7 OyBlbmRzIHdpdGggYSBibGFuayBsaW5lIG9yIGF0IHRoZSBzdGFydCBvZiBhIG5ldyBNYXJrZG93 biBibG9jaworOzsgZWxlbWVudC4KKzs7Cis7OyBUaGUgaGVhZGVyIGFsaWdubWVudCByb3cgY29s dW1uIG11c3QgaGF2ZSBhIG1pbmltdW0gb2YgdGhyZWUgaHlwaGVucworOzsgd2hpY2ggaW5kaWNh dGVzIGRlZmF1bHQgYWxpZ25tZW50IChpLmUuLCB3aGF0ZXZlciBhIHJlbmRlcmVyCis7OyBjaG9v c2VzKS4gIFRvIGluZGljYXRlIGxlZnQgYWxpZ25tZW50LCBwcmVmaXggdGhlIGh5cGhlbiBzdHJp bmcgd2l0aAorOzsgYSBjb2xvbiBsaWtlIHRoaXMgOi0tLS4gIEZvciBjZW50ZXIgYWxpZ25tZW50 LCBwcmVmaXggYW5kIHN1ZmZpeCB3aXRoCis7OyBjb2xvbnMgbGlrZSB0aGlzIDotLS06LiAgRm9y IHJpZ2h0IGFsaWdubWVudCwgc3VmZml4IHdpdGggYSBjb2xvbgorOzsgbGlrZSB0aGlzIC0tLTou Cis7OworOzsgRWFjaCB0YWJsZSBoZWFkZXIgb3IgYm9keSBjZWxsIGNhbiBjb250YWluIHRoZSB1 c3VhbCBNYXJrZG93biBpbmxpbmUKKzs7IHN0eWxlIGluZGljYXRvcnMuICBBIGNlbGwgY2Fubm90 IGNvbnRhaW4gYSBibG9jayBlbGVtZW50IHN1Y2ggYXMgYQorOzsgaGVhZGluZ3MsIHRoZW1hdGlj IGJyZWFrcywgYmxvY2sgcXVvdGVzLCBmZW5jZWQgY29kZSBibG9ja3MuCis7OworOzsgVGFibGUg Y2VsbHMgZG8gbm90IG5lZWQgdG8gYWxpZ24gdmlzdWFsbHk7IGkuZS4sIHRoZSBwaXBlIHN5bWJv bHMgZG8KKzs7IG5vdCBuZWVkIHRvIGxpbmUgdXAgdmVydGljYWxseS4gIFRoZSB0cmVlLXNpdHRl ciBwYXJzZXIgYW5kIHJlbmRlcmVycworOzsgZGV0ZWN0IGNlbGwgYm91bmRhcmllcyB1c2luZyBw aXBlIHN5bWJvbHMsIG5vdCB0aGVpciByZWxhdGl2ZSBhbGlnbm1lbnQuCis7OworOzsgSWYgeW91 IHdhbnQgdG8gaW5jbHVkZSB3aGF0IGxvb2tzIGxpa2UgY29kZSwgeW91IGNhbiB1c2UgYmFja3Rp Y2tzIHRvCis7OyB3cmFwIHN1Y2ggdGV4dCBhbGEgYHRoaXMgaXMgY29kZWAuICBUaGlzIG1vZGUg d2lsbCBub3QgZm9udGlmeSBzdWNoCis7OyBjb2RlLgorOzsKKzs7IElmIHlvdSB3YW50IHRvIGlu Y2x1ZGUgYSBwaXBlIHN5bWJvbCBpbiBhIGNlbGwsIGVzY2FwZSBpdCB0aHVzbHkgXHwuCis7Owor OzsgVGVjaG5pY2FsbHksIGJvZHkgcm93cyBkbyBub3QgbmVlZCB0byBjb250YWluIHRoZSBzYW1l IG51bWJlciBvZgorOzsgY2VsbHMgYXMgdGhlIGhlYWRlciBoYXMgY29sdW1ucyBhbmQgcm93cyBk byBub3QgbmVlZCB0byBzaGFyZSB0aGUKKzs7IHNhbWUgbnVtYmVyIG9mIGNlbGxzIGFtb25nIHRo ZW1zZWx2ZXMuICBOb3RlOiBNYW55IHJlbmRlcmVycyBnZXQKKzs7IGNvbmZ1c2VkIGlmIHRoZSB0 YWJsZSBpcyAicmFnZ2VkIiB3aXRoIGFuIHVuZXZlbiBudW1iZXIgb2YgY29sdW1ucworOzsgYW1v bmcgcm93cy4gIFNvbWUgcmVuZGVyZXJzIHdpbGwgaW5zZXJ0IGVtcHR5IGNlbGxzIG9uIGEgcm93 IHRoYXQKKzs7IGNvbnRhaW5zIGZld2VyIGNlbGxzIHRoYW4gdGhlIGhlYWRlciBoYXMgY29sdW1u cy4gIFNvbWUgZWxpZGUgY2VsbHMKKzs7IHRoYXQgZXhjZWVkIHRoZSBudW1iZXIgb2YgY29sdW1u cyBpbiB0aGUgaGVhZGVyLgorOzsKKzs7OzsgUGlwZSBUYWJsZSBSZWNvbW1lbmRhdGlvbnMKKzs7 Cis7OyAtIEFsd2F5cyB1c2UgcGlwZSBzeW1ib2xzIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIGVh Y2ggdGFibGUgbGluZS4KKzs7IC0gVXNlIGEgdW5pZm9ybSBudW1iZXIgb2YgY29sdW1ucyBzcGFu bmluZyB0aGUgdGFibGUuCis7OyAtIElmIHlvdSBkZXRlY3QgYSBwYXJzaW5nIGVycm9yIHdoaWNo IHByZXNlbnRzIGFzIGRpZmZlcmVudAorOzsgICBmb250aWZpY2F0aW9uIGFuZCB3aGljaCBpcyBv ZnRlbiBjYXVzZWQgYnkgYW4gZW1wdHkgZmlyc3QgY2VsbCBvbiB0aGUKKzs7ICAgZmluYWwgcm93 LCB0cnkgcHV0dGluZyBzb21lIGNoYXJhY3RlcnMgaW4gdGhhdCBjZWxsLgorOzsgLSBSZW5kZXJl cnMgb2Z0ZW4gZXhjbHVkZSBjZXJ0YWluIGVtcHR5IGNlbGxzIHN1Y2ggYXMgYW4gImVtcHR5IiBm aW5hbAorOzsgICBjZWxsIGluIGEgdGFibGUuICBGb2xsb3cgdGhlIG5leHQgaXRlbSB0byBhdm9p ZCB0aGlzLgorOzsgLSBJZiB5b3UgbmVlZCB0aGF0IGNlbGwgdG8gYXBwZWFyIGJsYW5rIGFuZCBh cmUgY29udmVydGluZyB0byBIVE1MLAorOzsgICB0cnkgdXNpbmcgYSBub24tcHJpbnRpbmcgSFRN TCBlbnRpdHksIHN1Y2ggYXMgYSBub24tYnJlYWtpbmcgc3BhY2UKKzs7ICAgIiZuYnNwOyIsIHdo aWNoIHBhcnNlIGFzIGNvbmNyZXRlIGNoYXJhY3RlcnMgeWV0IHJlbmRlciBhcyBibGFuay4KKzs7 IC0gSFRNTCBjb21tZW50cyA8IS0tIC0tPiBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgbm9uLWJsYW5r IGNoYXJhY3RlcgorOzsgICBzdHJpbmcgdGhhdCBkb2VzIG5vdCBnZXQgcmVuZGVyZWQuICBUaGVz ZSBhcmUgY29uc2lkZXJlZCBjZWxsIHRleHQKKzs7ICAgYW5kIHdoZW4gcGxhY2VkIGF0IHRoZSBl bmQgb2YgYSByb3csIHRoYXQgcm93J3MgbnVtYmVyIG9mIGNvbHVtbnMgaXMKKzs7ICAgaW5jcmVh c2VkIGFuZCBtaWdodCBleGNlZWQgdGhlIG51bWJlciBvZiBoZWFkZXIgY29sdW1ucy4KKzs7IC0g VGhlcmUgYXJlIHRyZWUtc2l0dGVyIHBhcnNlciBxdWlya3MuICBDb21tYW5kcyBzdWNoIGFzCis7 OyAgIGBtYXJrZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uJyBhbmQgYG1hcmtkb3duLXRzLXRh YmxlLW1vdmUtY29sdW1uJworOzsgICBmb2xsb3cgdGhlIHBhcnNlciB0cmVlIGFuZCBjYW4gbGVh ZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMgc28gZm9sbG93Cis7OyAgIHRoZXNlIHJlY29tbWVuZGF0 aW9ucyBhbmQgdGFibGUgb3BlcmF0aW9ucyBzaG91bGQgYmUgYXMgZXhwZWN0ZWQuCis7OworOzs7 OyBUcmVlIFNpdHRlciBCdWdzCis7OworOzsgYG1hcmtkb3duLXRzLW1vZGUnIHJlbGllcyBvbiB0 aGUgdW5kZXJseWluZyB0cmVlLXNpdHRlciBsaWJyYXJ5IGluCis7OyBFbWFjcyAoY2hvc2VuIGF0 IGl0cyBidWlsZCB0aW1lKSwgYW5kIGxhbmd1YWdlIGdyYW1tYXJzIHlvdSBoYXZlCis7OyBpbnN0 YWxsZWQuICBUaGVyZSBhcmUga25vd24gYW5kIHJlcG9ydGVkIGJ1Z3Mgd2hpY2ggbmVnYXRpdmVs eSBhZmZlY3QKKzs7IGNlcnRhaW4gZmVhdHVyZXMuICBUaGlzIG1vZGUgc2hvdWxkIGJlbmVmaXQg YXMgdGhlc2UgYnVncyBhcmUgZml4ZWQKKzs7IG9yIHdvcmtlZCBhcm91bmQuCis7OworOzsgLSBU aGUgTWFya2Rvd24gZ3JhbW1hciBpbnNlcnRzIGJsb2NrX2NvbnRpbnVhdGlvbiBub2RlcyBhcyBj aGlsZHJlbgorOzsgICBvZiBjb2RlX2ZlbmNlX2NvbnRlbnQsIHdoaWNoIGNvbmZ1c2VzIGJvdGgg dGhlIGluc3BlY3RvciBhbmQgdGhlCis7OyAgIGVtYmVkZGVkIHBhcnNlci4gIFRoaXMgYWZmZWN0 cyBjb2RlIGJsb2NrcyBpbnNpZGUgYmxvY2sgcXVvdGVzLgorOzsKKzs7IC0gSFRNTCBibG9jayB0 eXBlIDQgKGA8IScgZm9sbG93ZWQgYnkgYW4gdXBwZXJjYXNlIGxldHRlciwgZS5nLiwKKzs7ICAg YDwhRE9DVFlQRSBodG1sPicpIGNhdXNlcyB0aGUgcGFyc2VyIHRvIGNvbnN1bWUgYWxsIHN1YnNl cXVlbnQKKzs7ICAgY29udGVudC4gIExvd2VyY2FzZSBgPCFkb2N0eXBlIGh0bWw+JyB3b3JrcyBh cyBhIHdvcmthcm91bmQuCis7OyAgIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVy LWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3duL2lzc3Vlcy8yMzM+LgorOzsKKzs7IC0gU3Vw ZXJzY3JpcHQgKGBedGV4dF4nKSBhbmQgc3Vic2NyaXB0IChgfnRleHR+Jykgc3ludGF4IGlzIG5v dAorOzsgICBzdXBwb3J0ZWQgYnkgdGhlIGdyYW1tYXIuICBObyBFWFRFTlNJT05fIGJ1aWxkIGZs YWcgZXhpc3RzIGZvcgorOzsgICB0aGlzLiAgVGhpcyBpcyBQYW5kb2MgLyBQSFAgTWFya2Rvd24g RXh0cmEgc3ludGF4LCBub3QgQ29tbW9uTWFyaworOzsgICBvciBHRk0uCis7OworOzsgLSBPcmRl cmVkIChudW1iZXJlZCkgbGlzdHMgZG8gbm90IG5lc3QgYnkgaW5kZW50YXRpb24uICBJbmRlbnRp bmcKKzs7ICAgYSBgMS4nIGl0ZW0gdW5kZXIgYW5vdGhlciBvcmRlcmVkIGl0ZW0gZG9lcyBub3Qg cHJvZHVjZSBhIG5lc3RlZAorOzsgICBsaXN0IG5vZGU7IHRoZSBwYXJzZXIgZWl0aGVyIHRyZWF0 cyBpdCBhcyBhIGZsYXQgc2libGluZyBvcgorOzsgICBhYnNvcmJzIGl0IGludG8gdGhlIHBhcmVu dCBpdGVtJ3MgcGFyYWdyYXBoIGFzIGEKKzs7ICAgYmxvY2tfY29udGludWF0aW9uLiAgVW5vcmRl cmVkIChgLScsIGAqJywgYCsnKSBsaXN0cyBuZXN0Cis7OyAgIGNvcnJlY3RseS4gIERlbW90ZS9w cm9tb3RlIG9mIG9yZGVyZWQgbGlzdCBpdGVtcyBpcyB0aGVyZWZvcmUKKzs7ICAgZGlzYWJsZWQu Cis7OworOzsgLSBSZW51bWJlcmluZyBvcmRlcmVkIGxpc3RzIChgbWFya2Rvd24tdHMtcmVudW1i ZXItbGlzdCcpIG1heSBvbmx5Cis7OyAgIGFmZmVjdCBpdGVtcyBmcm9tIHBvaW50IGRvd253YXJk IGlmIHRoZSBwYXJzZXIgc3BsaXRzIGEgc2luZ2xlCis7OyAgIGxpc3QgaW50byBzZXBhcmF0ZSBg bGlzdCcgbm9kZXMsIG9yIG1heSBjb250aW51ZSBudW1iZXJpbmcgYWNyb3NzCis7OyAgIHR3byBz ZXBhcmF0ZSBsaXN0cyBpZiB0aGUgcGFyc2VyIG1lcmdlcyB0aGVtIGludG8gb25lIG5vZGUuCis7 OworOzsgLSBFbXB0eSBsaW5lcyBmb2xsb3dpbmcgYW4gYGluZGVudGVkX2NvZGVfYmxvY2snIG1h eSBiZSBjbGFpbWVkIGJ5Cis7OyAgIHRoZSBwYXJzZXIgYXMgY29udGludWF0aW9uIGxpbmVzIG9m IHRoYXQgYmxvY2ssIHJhdGhlciB0aGFuIGJlaW5nCis7OyAgIHRyZWF0ZWQgYXMgYmxhbmsgc2Vw YXJhdG9ycy4KIDs7Cis7OyAtIFBpcGUgdGFibGVzIGFyZSBpbmNvbnNpc3RlbnRseSBwYXJzZWQu ICBXaGl0ZXNwYWNlIGlzIGNvcnJlY3RseQorOzsgICB0cmltbWVkIGF0IHRoZSBzdGFydCBvZiBh IGNlbGwgY29udGVudCBidXQgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcworOzsgICBpbmNvcnJlY3Rs eSBpbmNsdWRlZC4gIEVtcHR5IGNlbGxzIGNhbiBjb250YWluIHVuZXZlbiAicmFnZ2VkIiByb3cK Kzs7ICAgY29sdW1uIGNvbmZpZ3VyYXRpb25zIHRoYXQgY2FuIGNvbmZ1c2UgdGhlIHBhcnNlci4K Kzs7Cis7OyAgIE1hcmtkb3duIHBpcGUgdGFibGVzIHdpdGggcGFyc2luZyBpc3N1ZXM6Cis7Owor OzsgICB8Q29sdW1uIDF8Q29sdW1uIDJ8Q29sdW1uIDN8Cis7OyAgIHwtLS0tLS0tLXwtLS0tLS0t LXwtLS0tLS0tLXwKKzs7ICAgfCAgICAgICAgfCAgICAgICAgfCAgICAgICAgfAorOzsgICB8ICAg ICAgICB8ICAgICAgICB8ICAgICAgICB8IDwtLSBwYXJzZSBlcnJvcgorOzsKKzs7ICAgfENvbHVt biAxfENvbHVtbiAyfENvbHVtbiAzfAorOzsgICB8LS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS18 Cis7OyAgIHwgICAgICAgIHwgICAgICAgIHwgICAgICAgIHwKKzs7ICAgfCB4eHggICAgfCAgICAg ICAgfCAgICAgICAgfCA8LS0gcGFyc2VkIGNvcnJlY3RseQorOzsKKzs7ICAgfENvbHVtbiAxfENv bHVtbiAyfCA8LS0gMiBjb2x1bW5zIGNvcnJlY3QKKzs7ICAgfC0tLS0tLS0tfC0tLS0tLS0tfCA8 LS0gMiBjb2x1bW5zIGNvcnJlY3QKKzs7ICAgICAgICAgICAgfCAgICAgICAgfCA8LS0gMSBjb2x1 bW4gaW5jb3JyZWN0Cis7OyAgICAgICAgICAgIHwgICAgICAgIHwgPC0tIHBhcnNlIGVycm9yCis7 OyAgIHwgICAgICAgIHwgICAgICAgIHwgPC0tIG5vdCBhIHJvdyBhZnRlciB0aGUgZXJyb3IsIGFi b3ZlCis7OworOzsgICBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFy cy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMvMjQxPgorOzsgICAgICAgPGh0dHBzOi8vZ2l0 aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMv MjQyPgogCiA7OzsgQ29kZToKIAogKHJlcXVpcmUgJ3RyZWVzaXQpCiAocmVxdWlyZSAnc3Vici14 KQotKHJlcXVpcmUgJ291dGxpbmUpCiAocmVxdWlyZSAnc2VxKQorKHJlcXVpcmUgJ291dGxpbmUp CisocmVxdWlyZSAnZ290by1hZGRyKQorKHJlcXVpcmUgJ3hyZWYpCisocmVxdWlyZSAnaWNvbnMp CiAKLSh0cmVlc2l0LWRlY2xhcmUtdW5hdmFpbGFibGUtZnVuY3Rpb25zKQotCi0oYWRkLXRvLWxp c3QKLSAndHJlZXNpdC1sYW5ndWFnZS1zb3VyY2UtYWxpc3QKLSAnKG1hcmtkb3duCi0gICAiaHR0 cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVyLWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3du IgotICAgOmNvbW1pdCAiNDEzMjg1MjMxY2U4ZmE4YjExZTcwNzRiYmUyNjViNDhhYTcyNzdmOSIK LSAgIDpzb3VyY2UtZGlyICJ0cmVlLXNpdHRlci1tYXJrZG93bi9zcmMiKQotIHQpCi0oYWRkLXRv LWxpc3QKLSAndHJlZXNpdC1sYW5ndWFnZS1zb3VyY2UtYWxpc3QKLSAnKG1hcmtkb3duLWlubGlu ZQotICAgImh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRl ci1tYXJrZG93biIKLSAgIDpjb21taXQgIjQxMzI4NTIzMWNlOGZhOGIxMWU3MDc0YmJlMjY1YjQ4 YWE3Mjc3ZjkiCi0gICA6c291cmNlLWRpciAidHJlZS1zaXR0ZXItbWFya2Rvd24taW5saW5lL3Ny YyIpCi0gdCkKKzs7OyBDdXN0b21pemF0aW9uczoKIAotOzs7IEhlbHBlciBmdW5jdGlvbnMKLQot KGRlZnZhciBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tYXAKLSAgJygoImMrKyIg LiBjcHApCi0gICAgKCJjIyIgLiBjLXNoYXJwKQotICAgICgic2giIC4gYmFzaCkpCi0gICJBbGlz dCBtYXBwaW5nIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbmFtZXMgdG8gdHJlZS1zaXR0ZXIgbGFuZ3Vh Z2VzLgotCi1LZXlzIHNob3VsZCBiZSBzdHJpbmdzLCBhbmQgdmFsdWVzIHNob3VsZCBiZSBsYW5n dWFnZSBzeW1ib2xzLgotCi1Gb3IgZXhhbXBsZSwgXCJjKytcIiBpbgotCi0gICAgYGBgYysrCi0g ICAgaW50IG1haW4oKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBgYGAKLQotbWFw cyB0byB0cmVlLXNpdHRlciBsYW5ndWFnZSBgY3BwJy4iKQotCi0oZGVmdmFyIG1hcmtkb3duLXRz LWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwCi0gICcoKGJhc2ggLiBiYXNoLXRzLW1vZGUpCi0g ICAgKGMgLiBjLXRzLW1vZGUpCi0gICAgKGMtc2hhcnAgLiBjc2hhcnAtdHMtbW9kZSkKLSAgICAo Y21ha2UgLiBjbWFrZS10cy1tb2RlKQotICAgIChjcHAgLiBjKystdHMtbW9kZSkKLSAgICAoY3Nz IC4gY3NzLXRzLW1vZGUpCi0gICAgKGRvY2tlcmZpbGUgLiBkb2NrZXJmaWxlLXRzLW1vZGUpCi0g ICAgKGVsaXhpciAuIGVsaXhpci10cy1tb2RlKQotICAgIChnbyAuIGdvLXRzLW1vZGUpCi0gICAg KGdvbW9kIC4gZ28tbW9kLXRzLW1vZGUpCi0gICAgKGdvd29yayAuIGdvLXdvcmstdHMtbW9kZSkK LSAgICAoaGVleCAuIGhlZXgtdHMtbW9kZSkKLSAgICAoaHRtbCAuIGh0bWwtdHMtbW9kZSkKLSAg ICAoamF2YSAuIGphdmEtdHMtbW9kZSkKLSAgICAoamF2YXNjcmlwdCAuIGpzLXRzLW1vZGUpCi0g ICAgKGpzb24gLiBqc29uLXRzLW1vZGUpCi0gICAgKGx1YSAuIGx1YS10cy1tb2RlKQotICAgIChw aHAgLiBwaHAtdHMtbW9kZSkKLSAgICAocHl0aG9uIC4gcHl0aG9uLXRzLW1vZGUpCi0gICAgKHJ1 YnkgLiBydWJ5LXRzLW1vZGUpCi0gICAgKHJ1c3QgLiBydXN0LXRzLW1vZGUpCi0gICAgKHRvbWwg LiB0b21sLXRzLW1vZGUpCi0gICAgKHRzeCAuIHRzeC10cy1tb2RlKQotICAgICh0eXBlc2NyaXB0 IC4gdHlwZXNjcmlwdC10cy1tb2RlKQotICAgICh5YW1sIC4geWFtbC10cy1tb2RlKSkKLSAgIkFu IGFsaXN0IG9mIHN1cHBvcnRlZCBjb2RlIGJsb2NrIGxhbmd1YWdlcyBhbmQgdGhlaXIgbWFqb3Ig bW9kZS4iKQorKGRlZmdyb3VwIG1hcmtkb3duLXRzIG5pbAorICAiTWFqb3IgbW9kZSBmb3Igdmll d2luZyBhbmQgZWRpdGluZyBNYXJrZG93biBidWZmZXJzLiIKKyAgOnByZWZpeCAibWFya2Rvd24t dHMtIgorICA6Z3JvdXAgJ3RleHQKKyAgOmdyb3VwICdlZGl0aW5nCisgIDp2ZXJzaW9uICIzMS4x IikKIAogKGRlZmN1c3RvbSBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCBuaWwKICAgIk5vbi1uaWwg bWVhbnMgaGlkZSBNYXJrZG93biBtYXJrdXAgZGVsaW1pdGVycyBpbiB0aGlzIGJ1ZmZlci4iCiAg IDp0eXBlICdib29sZWFuCisgIDpsb2NhbCB0CiAgIDpzYWZlICMnYm9vbGVhbnAKLSAgOmdyb3Vw ICdtYXJrZG93bi10cykKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEu MCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZWxsaXBzaXMgbmlsCisgICJUaGUgZWxsaXBz aXMgdG8gdXNlIGluIGZvbGRlZCBoZWFkaW5ncy4KK1doZW4gbmlsLCB1c2UgdGhlIHN0YW5kYXJk IHRocmVlIGRvdHMuICBXaGVuIGEgbm9uLWVtcHR5IHN0cmluZywKK3VzZSB0aGF0IHN0cmluZyBp bnN0ZWFkLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0ICA6dGFnICJEZWZhdWx0ICguLi4pIiBu aWwpCisgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRhZyAiU3RyaW5nIiA6dmFsdWUgIiDijIQi KSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZj dXN0b20gbWFya2Rvd24tdHMtbWVudS1iYXItc2hvdyB0CisgICJOb24tbmlsIG1lYW5zIHNob3cg dGhlIE1hcmtkb3duIG1lbnUgaW4gdGhlIG1lbnUgYmFyLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAg OnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20g bWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nICdzaG93LWFsbAorICAiRGVmYXVsdCBoZWFkaW5n IGZvbGRpbmcgbGV2ZWwuIgorICA6dHlwZSAnKGNob2ljZQorICAgICAgICAgIChjb25zdCA6dGFn ICJTaG93IGV2ZXJ5dGhpbmciIHNob3ctYWxsKQorICAgICAgICAgIChjb25zdCA6dGFnICJGb2xk IGV2ZXJ5dGhpbmcsIHNob3dpbmcgdG9wLWxldmVsIGhlYWRpbmdzIiBmb2xkLWFsbCkKKyAgICAg ICAgICAoY29uc3QgOnRhZyAiRm9sZCBoZWFkaW5ncywgc2hvd2luZyBhbGwgaGVhZGluZyBsZXZl bHMiIGZvbGQtaGVhZGluZ3MpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lv biAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzIG5pbAorICAi Tm9uLW5pbCBtZWFucyBkaXNwbGF5IGlubGluZSBpbWFnZXMgYmVsb3cgaW1hZ2UgbGlua3MuIgor ICA6dHlwZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAi MS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbWFnZS1tYXgtd2lkdGggJ3dpbmRvdwor ICAiTWF4aW11bSB3aWR0aCBvZiBpbmxpbmUgaW1hZ2VzIGluIHBpeGVscy4KK1doZW4gYHdpbmRv dycsIHVzZSB0aGUgd2luZG93IGJvZHkgd2lkdGguICBXaGVuIGEgbnVtYmVyLCB1c2UKK3RoYXQg YXMgdGhlIG1heGltdW0gcGl4ZWwgd2lkdGguIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgIDp0 YWcgIldpbmRvdyB3aWR0aCIgd2luZG93KQorICAgICAgICAgICAgICAgICAobmF0bnVtIDp0YWcg IlBpeGVsIHdpZHRoIikpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIx LjAiKQogCi07OzsgRmFjZXMKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGlzcGxheS1yZW1vdGUt aW5saW5lLWltYWdlcyBuaWwKKyAgIkhvdyB0byBkaXNwbGF5IHJlbW90ZSBpbmxpbmUgaW1hZ2Vz LgorV2hlbiBuaWwsIGRvIG5vdCBkaXNwbGF5IHJlbW90ZSBpbWFnZXMuICBXaGVuIGBkb3dubG9h ZCcsIGZldGNoIHRoZQoraW1hZ2UgaW50byBhIHRlbXBvcmFyeSBidWZmZXIgYW5kIGRpc3BsYXkg aXQuCisKK1JlbW90ZSBpbWFnZXMgYXJlIHNraXBwZWQgYnkgZGVmYXVsdCBmb3Igc2VjdXJpdHku IgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiU2tpcCByZW1vdGUgaW1hZ2VzIiBuaWwp CisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJEb3dubG9hZCByZW1vdGUgaW1hZ2VzIiBk b3dubG9hZCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQor CisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3ggJygi4piRIiAuICIrIikK KyAgIklmIG1hcmt1cCBpcyBoaWRkZW4sIGRpc3BsYXkgdGhpcyBmb3IgYSBjaGVja2VkIHRhc2sg bGlzdCBtYXJrZXIuCitWYWx1ZSBmb3JtczoKKyAtIGNvbnMgKFBSRUZFUlJFRCAuIEZBTExCQUNL KTogUFJFRkVSUkVEIGlzIHVzZWQgaWYgaXRzIGZpcnN0IGNoYXJhY3RlcgorICAgcGFzc2VzIGBj aGFyLWRpc3BsYXlhYmxlLXAnLCBvdGhlcndpc2UgRkFMTEJBQ0suCisgLSBzeW1ib2wgYGljb24n OiBkZWZlciB0byB0aGUgaWNvbnMuZWwgaWNvbgorICAgYG1hcmtkb3duLXRzLWNoZWNrZWQtY2hl Y2tib3gtaWNvbic7IGN1c3RvbWl6ZSB2aWEKKyAgIFxcW2N1c3RvbWl6ZS1pY29uXS4KKyAtIG5p bDogZGlzcGxheSB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zIChzdHJp bmcgOnRhZyAiUHJlZmVycmVkIChHVUkpIikKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmlu ZyA6dGFnICJGYWxsYmFjayAoVFRZKSIpKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAi VXNlIGljb25zLmVsIGljb24iIGljb24pCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJE aXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNr YWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZpbmUtaWNvbiBtYXJrZG93bi10cy1jaGVja2VkLWNo ZWNrYm94LWljb24gbmlsCisgICcoKGltYWdlICJjaGVja2VkLnN2ZyIgOmhlaWdodCBsaW5lIDph c2NlbnQgY2VudGVyKQorICAgIChzeW1ib2wgIuKYkSIpCisgICAgKHRleHQgIisiKSkKKyAgIklj b24gdXNlZCBmb3IgYSBjaGVja2VkIHRhc2sgbGlzdCBtYXJrZXIgd2hlbiBtYXJrdXAgaXMgaGlk ZGVuLgorQ29uc3VsdGVkIG9ubHkgd2hlbiBgbWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveCcg aXMgdGhlIHN5bWJvbAorYGljb24nLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9t IG1hcmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveCAnKCLimJAiIC4gIi0iKQorICAiSWYgbWFy a3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGZvciBhbiB1bmNoZWNrZWQgdGFzayBsaXN0IG1h cmtlci4KK1ZhbHVlIGZvcm1zOgorIC0gY29ucyAoUFJFRkVSUkVEIC4gRkFMTEJBQ0spOiBQUkVG RVJSRUQgaXMgdXNlZCBpZiBpdHMgZmlyc3QgY2hhcmFjdGVyCisgICBwYXNzZXMgYGNoYXItZGlz cGxheWFibGUtcCcsIG90aGVyd2lzZSBGQUxMQkFDSy4KKyAtIHN5bWJvbCBgaWNvbic6IGRlZmVy IHRvIHRoZSBpY29ucy5lbCBpY29uCisgICBgbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94 LWljb24nOyBjdXN0b21pemUgdmlhCisgICBcXFtjdXN0b21pemUtaWNvbl0uCisgLSBuaWw6IGRp c3BsYXkgdGhlIHJhdyBtYXJrdXAuIgorICA6dHlwZSAnKGNob2ljZSAoY29ucyAoc3RyaW5nIDp0 YWcgIlByZWZlcnJlZCAoR1VJKSIpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRh ZyAiRmFsbGJhY2sgKFRUWSkiKSkKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIlVzZSBp Y29ucy5lbCBpY29uIiBpY29uKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxh eSBvcmlnaW5hbCBtYXJrdXAiIG5pbCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12 ZXJzaW9uICIxLjAiKQorCisoZGVmaW5lLWljb24gbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNr Ym94LWljb24gbmlsCisgICcoKGltYWdlICJ1bmNoZWNrZWQuc3ZnIiA6aGVpZ2h0IGxpbmUgOmFz Y2VudCBjZW50ZXIpCisgICAgKHN5bWJvbCAi4piQIikKKyAgICAodGV4dCAiLSIpKQorICAiSWNv biB1c2VkIGZvciBhbiB1bmNoZWNrZWQgdGFzayBsaXN0IG1hcmtlciB3aGVuIG1hcmt1cCBpcyBo aWRkZW4uCitDb25zdWx0ZWQgb25seSB3aGVuIGBtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2ti b3gnIGlzIHRoZSBzeW1ib2wKK2BpY29uJy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1 c3RvbSBtYXJrZG93bi10cy10aGVtYXRpYy1icmVhay1jaGFyYWN0ZXIgJyg/4pSAIC4gPy0pCisg ICJJZiBtYXJrdXAgaXMgaGlkZGVuLCBkaXNwbGF5IHRoaXMgY2hhcmFjdGVyIGZvciB0aGVtYXRp YyBicmVha3MuCitJdCBpcyByZXBlYXRlZCB0byBmaWxsIHRoZSB3aW5kb3cgd2lkdGguCitUaGUg dmFsdWUgaXMgYSBjb25zIChQUkVGRVJSRUQgLiBGQUxMQkFDSyk6IFBSRUZFUlJFRCBpcyB1c2Vk IGlmIGl0IHBhc3NlcworYGNoYXItZGlzcGxheWFibGUtcCcsIG90aGVyd2lzZSBGQUxMQkFDSyBp cyB1c2VkLgorbmlsIGRpc3BsYXlzIHRoZSByYXcgbWFya3VwLiIKKyAgOnR5cGUgJyhjaG9pY2Ug KGNvbnMgKGNoYXJhY3RlciA6dGFnICJQcmVmZXJyZWQgKEdVSSkiKQorICAgICAgICAgICAgICAg ICAgICAgICAoY2hhcmFjdGVyIDp0YWcgIkZhbGxiYWNrIChUVFkpIikpCisgICAgICAgICAgICAg ICAgIChjb25zdCA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnZlcnNp b24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rv d24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaCAnKD/CtiAuID98KQorICAiSWYgbWFya3Vw IGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGNoYXJhY3RlciBmb3IgYSBiYWNrc2xhc2ggaGFyZCBs aW5lIGJyZWFrLgorVGhlIHZhbHVlIGlzIGEgY29ucyAoUFJFRkVSUkVEIC4gRkFMTEJBQ0spOiBQ UkVGRVJSRUQgaXMgdXNlZCBpZiBpdCBwYXNzZXMKK2BjaGFyLWRpc3BsYXlhYmxlLXAnLCBvdGhl cndpc2UgRkFMTEJBQ0sgaXMgdXNlZC4KK25pbCBrZWVwcyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0 eXBlICcoY2hvaWNlIChjb25zIChjaGFyYWN0ZXIgOnRhZyAiUHJlZmVycmVkIChHVUkpIikKKyAg ICAgICAgICAgICAgICAgICAgICAgKGNoYXJhY3RlciA6dGFnICJGYWxsYmFjayAoVFRZKSIpKQor ICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxheSBvcmlnaW5hbCBtYXJrdXAiIG5p bCkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVm Y3VzdG9tIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZQorICAobGFtYmRhIChuKQor ICAgIChsZXQqICgodmFsIChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVlCisgICAg ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpKQorICAg ICAgICAgICAoY2ggKGlmIChjaGFyYWN0ZXJwIHZhbCkgdmFsID98KSkpCisgICAgICAobWFrZS1z dHJpbmcgbiBjaCkpKQorICAiSWYgbWFya3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGZvciBh IHRyYWlsaW5nLXNwYWNlcyBoYXJkIGxpbmUgYnJlYWsuCitUaGUgdmFsdWUgY2FuIGJlOgorLSBh IGNoYXJhY3RlciBvciBzdHJpbmc6IHNob3duIG9uY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFp bGluZyBzcGFjZXMsCisgIHdpdGggbm8gcmVwZXRpdGlvbiAodGhlIHJlbWFpbmluZyBzcGFjZXMg c3RheSBpbnZpc2libGUpOworLSBhIGZ1bmN0aW9uOiBjYWxsZWQgd2l0aCBvbmUgYXJndW1lbnQs IHRoZSBudW1iZXIgb2YgdHJhaWxpbmcgc3BhY2VzLAorICBhbmQgbXVzdCByZXR1cm4gdGhlIHN0 cmluZyB0byBkaXNwbGF5IGluIHBsYWNlIG9mIHRoZSBydW47CistIG5pbDoga2VlcCB0aGUgcmF3 IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjaGFyYWN0ZXIgOnRhZyAiRGlzcGxheSBzcGVj aWZpZWQgY2hhcmFjdGVyIChubyByZXBldGl0aW9uKSIpCisgICAgICAgICAgICAgICAgIChzdHJp bmcgOnRhZyAiRGlzcGxheSBzcGVjaWZpZWQgc3RyaW5nIChubyByZXBldGl0aW9uKSIpCisgICAg ICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJGdW5jdGlvbiBmcm9tIGNvdW50IHRvIGRpc3Bs YXkgc3RyaW5nIikKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkRpc3BsYXkgb3JpZ2lu YWwgbWFya3VwIiBuaWwpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAi MS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1mb250aWZ5LWNvZGUtYmxvY2tzLW5hdGl2 ZWx5IHQKKyAgIk5vbi1uaWwgbWVhbnMgZm9udGlmeSBjb2RlIGJsb2NrIGNvbnRlbnRzIHVzaW5n IHRoZSBsYW5ndWFnZSdzIG1vZGUuCitXaGVuIG5vbi1uaWwsIGZlbmNlZCBjb2RlIGJsb2NrcyBh cmUgaGlnaGxpZ2h0ZWQgd2l0aCBzeW50YXggb2YgdGhlCitlbWJlZGRlZCBsYW5ndWFnZSAodmlh IHRyZWUtc2l0dGVyIGZvciBsYW5ndWFnZXMgd2l0aCBhIHRyZWUtc2l0dGVyCittb2RlLCBvciB2 aWEgY29udmVudGlvbmFsIGZvbnQtbG9jayBmb3IgdGhlIHJlc3QpLiAgV2hlbiBuaWwsIGNvZGUK K2Jsb2NrcyBrZWVwIG9ubHkgdGhlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrJyBiYWNrZ3JvdW5k IGZhY2UuICBUb2dnbGluZworZm9yIHRoZSB0cy1lbWJlZGRlZCBwYXRoIHRha2VzIGVmZmVjdCBh ZnRlciByZXN0YXJ0aW5nCitgbWFya2Rvd24tdHMtbW9kZScgaW4gdGhlIGJ1ZmZlci4iCisgIDp0 eXBlICdib29sZWFuCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAi KQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWVuYWJsZS1jb2RlLWJsb2NrLWNvbnRleHQtbW9k ZSB0CisgICJOb24tbmlsIGF1dG9tYXRpY2FsbHkgZW5hYmxlcyBgbWFya2Rvd24tdHMtY29kZS1i bG9jay1jb250ZXh0LW1vZGUnLgorSWYgbm9uLW5pbCBhbmQgYHBvaW50JyBpcyBpbiBhIGZlbmNl ZCBjb2RlIGJsb2NrLCB0aGlzIHJ1bnMKK2BpbmRlbnQtZm9yLXRhYi1jb21tYW5kJywgYG5ld2xp bmUnLCBldC5hbC4sIGluIHRoZSBtb2RlIG9mIHRoZSBjb2RlCitibG9jay4iCisgIDp0eXBlICdi b29sZWFuCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCiso ZGVmY3VzdG9tIG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLWxpZ2h0ZXIg IiBbY29kZV0iCisgICJNaW5vciBtb2RlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQt bW9kZScgbGlnaHRlciBzdHJpbmcuCitTZXQgdG8gbmlsIHRvIGRpc2FibGUgdGhlIGxpZ2h0ZXIu IgorICA6dHlwZSAnc3RyaW5nCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9u ICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWluaGliaXQtY29kZS1ibG9jay1tb2Rl LXdhcm5pbmdzIHQKKyAgIklmIG5vbi1uaWwsIGluaGliaXQgY29kZS1ibG9jayBtYWpvci1tb2Rl IG1lc3NhZ2VzIGFuZCB3YXJuaW5ncy4KK1NvbWUgZmVuY2VkIGNvZGUtYmxvY2sgbWFqb3IgbW9k ZXMgcHJvZHVjZSBtZXNzYWdlcyBvciB3YXJuaW5ncyB3aGljaAoraGF2ZSBsaXR0bGUgcmVsZXZh bmNlIHRvIE1hcmtkb3duIGJ1ZmZlcnMuICBVc2UgdGhpcyBvcHRpb24gdG8gaW5oaWJpdAordGhl bS4gIE1ham9yIG1vZGVzIG1heSBiZSBlbmFibGVkIGZvciBmb250aWZpY2F0aW9uIG9yIGVkaXRp bmcgaW4gdGhlCittb2RlJ3MgY29udGV4dC4iCisgIDp0eXBlICdib29sZWFuCisgIDp2ZXJzaW9u ICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmdmFyIHdhcm5pbmctbWlu aW11bS1sZXZlbCkKKworKGRlZm1hY3JvIG1hcmtkb3duLXRzLS1pbmhpYml0LW1lc3NhZ2VzLWFu ZC13YXJuaW5ncyAodmFyICZyZXN0IGJvZHkpCisgICJFeGVjdXRlIEJPRFkgd2l0aCBtZXNzYWdl cyBhbmQgd2FybmluZ3MgaW5oaWJpdGVkLgorVkFSIGlzIGEgdmFyaWFibGUncyBzeW1ib2w7IGUu Zy4sCitcXD0nbWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MuICBJ ZiB0aGUgc3ltYm9sJ3MgdmFsdWUKK2lzIG5vbi1uaWwsIGRvIHdoYXQgaXQgc2F5cyBvbiB0aGUg dGluLgorSW5oaWJpdCBtZXNzYWdlcyBpbiB0aGUgZWNobyBhcmVhLgorSW5oaWJpdCBtZXNzYWdl cyBpbiB0aGUgbG9nLgorSW5oaWJpdCB3YXJuaW5ncyB3aXRoIGxldmVsIDwgOmVycm9yLiIKKyAg KGRlY2xhcmUgKGluZGVudCBkZWZ1bikpCisgIGAobGV0KiAoKHZhbCAoc3ltYm9sLXZhbHVlICx2 YXIpKQorICAgICAgICAgIChpbmhpYml0LW1lc3NhZ2UgdmFsKQorICAgICAgICAgOzsgQWxzbyBp bmhpYml0IGxvZ2dpbmcgdG8gKk1lc3NhZ2VzKgorICAgICAgICAgKG1lc3NhZ2UtbG9nLW1heCAo aWYgdmFsIG5pbCBtZXNzYWdlLWxvZy1tYXgpKQorICAgICAgICAgKHdhcm5pbmctbWluaW11bS1s ZXZlbAorICAgICAgICAgIChpZiB2YWwgOmVycm9yIHdhcm5pbmctbWluaW11bS1sZXZlbCkpKQor ICAgICAocHJvZ24gLEBib2R5KSkpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGVmYXVsdC1j b2RlLWJsb2NrLW1vZGUgJ3RleHQtbW9kZQorICAiRGVmYXVsdCBtb2RlIGZvciBhbm9ueW1vdXMg Y29kZSBibG9ja3MuIgorICA6dHlwZSAnKGNob2ljZQorICAgICAgICAgIChjb25zdCAgOnRhZyAi VGV4dCBtb2RlIiB0ZXh0LW1vZGUpCisgICAgICAgICAgKGNvbnN0ICA6dGFnICJGdW5kYW1lbnRh bCBtb2RlIiBmdW5kYW1lbnRhbC1tb2RlKQorICAgICAgICAgIChzeW1ib2wgOnRhZyAiT3RoZXIg bW9kZSBzeW1ib2wiCisgICAgICAgICAgICAgICAgICA6dmFsaWRhdGUgKGxhbWJkYSAod2lkKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHZhbCAod2lkZ2V0LXZhbHVlIHdp ZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5sZXNzIChhbmQgdmFsIChl cSAnc3ltYm9sICh0eXBlLW9mIHZhbCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh3aWRnZXQtcHV0IHdpZCA6ZXJyb3IgIk11c3QgYmUgYSBub24tbmlsIHN5bWJvbCIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkKSkpKSkKKyAgOnZlcnNpb24gIjMx LjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMt dGFibGUtZGVmYXVsdC1jb2x1bW4td2lkdGggNQorICAiQ29sdW1uIHdpZHRoIGZvciBuZXcgY29s dW1ucy4KK1lvdSBtYXkgbWFrZSB0aGlzIHdpZGVyLCBidXQgc21hbGxlciB0aGFuIDUgaXMgbm90 IHJlY29tbWVuZGVkLiIKKyAgOnR5cGUgJ2ludGVnZXIKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpw YWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZW5hYmxlLXRh YmxlLW1vZGUgdAorICAiTm9uLW5pbCBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYG1hcmtkb3duLXRz LXRhYmxlLW1vZGUnLgorSWYgbm9uLW5pbCwgZW5hYmxlIGBtYXJrZG93bi10cy10YWJsZS1tb2Rl JyBpZiBgcG9pbnQnIGlzIGluIGEgTWFya2Rvd24KK3RhYmxlLiIKKyAgOnR5cGUgJ2Jvb2xlYW4K KyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0 b20gbWFya2Rvd24tdHMtdGFibGUtYXV0by1hbGlnbiAnKGNlbGwtbmF2aWdhdGlvbiB0cmFuc3Bv c2UpCisgICJBdXRvbWF0aWNhbGx5IGFsaWduIHRoZSB0YWJsZSBhdCBwb2ludCBkdXJpbmcgdGhl c2Ugb3BlcmF0aW9ucy4KK0lmIHQsIHRyaWdnZXIgb24gYWxsIHN1cHBvcnRlZCBvcGVyYXRpb25z LgorSWYgbmlsLCBkbyBub3QgYXV0byBhbGlnbi4KK090aGVyd2lzZSwgaXQgaXMgYSBsaXN0IG9m IHN5bWJvbHMgcmVwcmVzZW50aW5nIHRhYmxlIG9wZXJhdGlvbnMuIgorICA6dHlwZSAnKGNob2lj ZQorICAgICAgICAgIChjb25zdCA6dGFnICJEbyBub3QgYXV0b21hdGljYWxseSBhbGlnbiIgbmls KQorICAgICAgICAgIChjb25zdCA6dGFnICJBbHdheXMgYXV0b21hdGljYWxseSBhbGlnbiIgdCkK KyAgICAgICAgICAoc2V0CisgICAgICAgICAgIChjb25zdCA6dGFnICJDZWxsIG5hdmlnYXRpb24i IGNlbGwtbmF2aWdhdGlvbikKKyAgICAgICAgICAgKGNvbnN0IDp0YWcgIlRyYW5zcG9zZSIgdHJh bnNwb3NlKSkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQor CisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWZlYXR1cmVzICcoanVzdGlmeS1j ZWxscykKKyAgIlVzZSB0aGVzZSBvcHRpb25hbCBmZWF0dXJlcyB3aGVuIGFsaWduaW5nIGEgdGFi bGUuCitBbGlnbmluZyBhIHRhYmxlIGFsaWducyBlYWNoIGNvbHVtbiB0byB0aGUgd2lkdGggb2Yg aXRzIHdpZGVzdCBjZWxsLiAgSXQKK2NhbiBhbHNvIGp1c3RpZnkgZWFjaCBjZWxsIGFjY29yZGlu ZyB0byB0aGUgdGFibGUncyBkZWxpbWl0ZXIgbGluZSBsZWZ0LAorY2VudGVyLCBvciByaWdodC1o YW5kIGp1c3RpZmljYXRpb24gcnVsZXMuCisKK0N1c3RvbWl6aW5nIHRoaXMgdXNlciBvcHRpb24g aXMgbW9zdCB1c2VmdWwgd2hlbiB0aGUgdXNlciBvcHRpb24KK2BtYXJrZG93bi10cy10YWJsZS1h dXRvLWFsaWduJyBpcyBlbmFibGVkIGFuZCB0byBhdm9pZCBoYXZpbmcgdG8gdXNlIGEKK3ByZWZp eCBhcmd1bWVudCBiZWZvcmUgZXZlcnkgYXV0by1hbGlnbm1lbnQgb3BlcmF0aW9uLgorCitJZiB0 LCBlbmFibGUgYWxsIG9wdGlvbmFsIGFsaWdubWVudCBvcGVyYXRpb25zLgorSWYgbmlsLCBvcGVy YXRpb25zIGFyZSBlbmFibGVkIGJleW9uZCBiYXNpYyBjb2x1bW4gYWxpZ25tZW50LgorT3RoZXJ3 aXNlLCBpdCBpcyBhIGxpc3Qgb2Ygc3ltYm9scy4iCisgIDp0eXBlICcoY2hvaWNlCisgICAgICAg ICAgKGNvbnN0IDp0YWcgIk5vIG9wdGlvbmFsIGZlYXR1cmVzIiBuaWwpCisgICAgICAgICAgKGNv bnN0IDp0YWcgIkFsbCBvcHRpb25hbCBmZWF0dXJlcyIgdCkKKyAgICAgICAgICAoc2V0CisgICAg ICAgICAgIChjb25zdCA6dGFnICJKdXN0aWZ5IGNlbGxzIiBqdXN0aWZ5LWNlbGxzKSkpCisgIDp2 ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1h cmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbGlnaHRlciAiIFt0YWJsZV0iCisgICJNaW5vciBtb2Rl IGBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlJyBsaWdodGVyIHN0cmluZy4KK1NldCB0byBuaWwg dG8gZGlzYWJsZSB0aGUgbGlnaHRlci4iCisgIDp0eXBlICdzdHJpbmcKKyAgOnZlcnNpb24gIjMx LjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKzs7OyBGYWNlczoKIAogKGRlZmdyb3Vw IG1hcmtkb3duLXRzLWZhY2VzIG5pbAotICAiRmFjZXMgdXNlZCBpbiBNYXJrZG93biBUUyBNb2Rl LiIKKyAgIkZhY2VzIHVzZWQgYnkgTWFya2Rvd24tVFMuIgogICA6Z3JvdXAgJ21hcmtkb3duLXRz LWZhY2VzCiAgIDpncm91cCAnZmFjZXMpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWRlbGltaXRl ciAnKCh0ICg6aW5oZXJpdCBzaGFkb3cpKSkKLSAgIkZhY2UgZm9yIHRoZSAjIGJlZm9yZSBNYXJr ZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3IgdGhlICMgYmVmb3JlIE1hcmtkb3duIGhlYWRp bmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5n LTEgJygodCAoOmluaGVyaXQgb3V0bGluZS0xKSkpCi0gICJGYWNlIGZvciBmaXJzdCBsZXZlbCBN YXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3IgZmlyc3QgbGV2ZWwgTWFya2Rvd24gaGVh ZGluZ3MuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLXNldGV4 dC1oZWFkaW5nICcoKHQgKDppbmhlcml0IG1hcmtkb3duLXRzLWhlYWRpbmctMSkpKQotICAiRmFj ZSBmb3Igc2V0ZXh0IE1hcmtkb3duIGhlYWRpbmdzIChoZWFkaW5ncyB1bmRlcmxpbmVkIGJ5ID09 PSBvciAtLS0pLiIpCisgICJGYWNlIGZvciBzZXRleHQgTWFya2Rvd24gaGVhZGluZ3MgKGhlYWRp bmdzIHVuZGVybGluZWQgYnkgPT09IG9yIC0tLSkuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChk ZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctMiAnKCh0ICg6aW5oZXJpdCBvdXRsaW5lLTIpKSkK LSAgIkZhY2UgZm9yIHNlY29uZCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBm b3Igc2Vjb25kIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQog CiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTMgJygodCAoOmluaGVyaXQgb3V0bGluZS0z KSkpCi0gICJGYWNlIGZvciB0aGlyZCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFj ZSBmb3IgdGhpcmQgbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAiMzEuMSIp CiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctNCAnKCh0ICg6aW5oZXJpdCBvdXRsaW5l LTQpKSkKLSAgIkZhY2UgZm9yIGZvdXJ0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAi RmFjZSBmb3IgZm91cnRoIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMx LjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTUgJygodCAoOmluaGVyaXQgb3V0 bGluZS01KSkpCi0gICJGYWNlIGZvciBmaWZ0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQor ICAiRmFjZSBmb3IgZmlmdGggbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAi MzEuMSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctNiAnKCh0ICg6aW5oZXJpdCBv dXRsaW5lLTYpKSkKLSAgIkZhY2UgZm9yIHNpeHRoIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIp CisgICJGYWNlIGZvciBzaXh0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iCisgIDp2ZXJzaW9u ICIzMS4xIikKIAotKGRlZmZhY2UgbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIgJygodCAoOmluaGVy aXQgc2hhZG93KSkpCi0gICJGYWNlIGZvciBNYXJrZG93biBsaXN0IG1hcmtlcnMgbGlrZSAtIGFu ZCAqLiIpCisoZGVmZmFjZSBtYXJrZG93bi10cy1lbXBoYXNpcyAnKCh0ICg6aW5oZXJpdCBpdGFs aWMpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGVtcGhhc2lzIChpdGFsaWMpIHRleHQuIgorICA6 dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWJvbGQgJygodCAoOmluaGVy aXQgYm9sZCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gc3Ryb25nIGVtcGhhc2lzIChib2xkKSB0 ZXh0LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1zdHJpa2V0 aHJvdWdoICcoKHQgKDpzdHJpa2UtdGhyb3VnaCB0KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBz dHJpa2V0aHJvdWdoIHRleHQuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZmYWNlIG1hcmtk b3duLXRzLWJsb2NrLXF1b3RlICcoKHQgKDppbmhlcml0IGl0YWxpYykpKQotICAiRmFjZSBmb3Ig TWFya2Rvd24gYmxvY2sgcXVvdGVzLiIpCisgICJGYWNlIGZvciBNYXJrZG93biBibG9jayBxdW90 ZXMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWxpbmsgJygo dCAoOmluaGVyaXQgbGluaykpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gbGluayB0ZXh0IGFuZCBp bWFnZSBkZXNjcmlwdGlvbnMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtk b3duLXRzLWxpbmstZGVzdGluYXRpb24gJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1m YWNlKSkpCisgICJGYWNlIGZvciBNYXJrZG93biBsaW5rIGRlc3RpbmF0aW9ucyAoVVJMcykuIgor ICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWNvZGUtc3BhbiAnKCh0 ICg6aW5oZXJpdCBmb250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3du IGlubGluZSBjb2RlIHNwYW5zLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJr ZG93bi10cy1jb2RlLWJsb2NrICcoKHQgKDpleHRlbmQgdCkpKQorICAiRmFjZSBmb3IgTWFya2Rv d24gZmVuY2VkIGNvZGUgYmxvY2sgY29udGVudC4KK0FsdGVyIHRoaXMgZmFjZSB0byBhZGQgYSBg OmJhY2tncm91bmQnIGZvciBhIHZpc3VhbGx5IGRpc3RpbmN0Citjb2RlIGJsb2NrIHJlZ2lvbiwg ZS5nLjoKKyAgKHNldC1mYWNlLWF0dHJpYnV0ZSBcXD0nbWFya2Rvd24tdHMtY29kZS1ibG9jayBu aWwgOmJhY2tncm91bmQgXCJncmF5OTVcIikiCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZh Y2UgbWFya2Rvd24tdHMtaW4tY29kZS1ibG9jayAnKCh0ICg6ZXh0ZW5kIHQpKSkKKyAgIkZhY2Ug Zm9yIHdoZW4gcG9pbnQgaXMgaW4gYSBNYXJrZG93biBjb2RlIGJsb2NrLgorU2VlIGBtYXJrZG93 bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZScuCitBbHRlciB0aGlzIGZhY2UgdG8gYWRk IGEgYDpiYWNrZ3JvdW5kJyBmb3IgYSB2aXN1YWxseSBkaXN0aW5jdCB0YWJsZQorcmVnaW9uLCBl LmcuOgorICAoc2V0LWZhY2UtYXR0cmlidXRlIFxcPSdtYXJrZG93bi10cy1pbi1jb2RlLWJsb2Nr IDpiYWNrZ3JvdW5kIFwiZ3JheTk1XCIpIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNl IG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbWFya3VwLWhpZGRlbgorICAnKCgoKGJhY2tncm91bmQg bGlnaHQpKSAoOmJhY2tncm91bmQgImdyYXk5NSIgOmV4dGVuZCB0KSkKKyAgICAoKChiYWNrZ3Jv dW5kIGRhcmspKSAgKDpiYWNrZ3JvdW5kICJncmF5MTUiIDpleHRlbmQgdCkpKQorICAiRmFjZSBm b3IgTWFya2Rvd24gZmVuY2VkIGNvZGUgYmxvY2sgY29udGVudCB3aGVuIG1hcmt1cCBpcyBoaWRk ZW4uCitVc2VkIGluc3RlYWQgb2YgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2snIHdoZW4gYG1hcmtk b3duLXRzLWhpZGUtbWFya3VwJworaXMgbm9uLW5pbC4iCisgIDp2ZXJzaW9uICIzMS4xIikKKwor KGRlZmZhY2UgbWFya2Rvd24tdHMtaW5kZW50ZWQtY29kZS1ibG9jayAnKCh0ICg6aW5oZXJpdCBm b250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGluZGVudGVkIGNv ZGUgYmxvY2tzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1o dG1sLXRhZyAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLW1hcmt1cC1mYWNlKSkpCisgICJG YWNlIGZvciBpbmxpbmUgSFRNTCB0YWdzIGluIE1hcmtkb3duLiIKKyAgOnZlcnNpb24gIjMxLjEi KQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1odG1sLWJsb2NrICcoKHQgKDppbmhlcml0IGZvbnQt bG9jay1kb2MtbWFya3VwLWZhY2UpKSkKKyAgIkZhY2UgZm9yIEhUTUwgYmxvY2tzIGluIE1hcmtk b3duLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10aGVtYXRp Yy1icmVhayAnKCh0ICg6aW5oZXJpdCBzaGFkb3cgOmV4dGVuZCB0KSkpCisgICJGYWNlIGZvciBN YXJrZG93biB0aGVtYXRpYyBicmVha3MgKGhvcml6b250YWwgcnVsZXMpLgorQ3VzdG9taXplIHRo aXMgZmFjZSB0byBhZGQgYSA6YmFja2dyb3VuZCBmb3IgYSBmdWxsLXdpZHRoIHZpc3VhbCBydWxl LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1lbnRpdHktcmVm ZXJlbmNlICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1idWlsdGluLWZhY2UpKSkKKyAgIkZhY2Ug Zm9yIG5hbWVkIEhUTUwgZW50aXR5IHJlZmVyZW5jZXMgbGlrZSAmYW1wOyBhbmQgJmNvcHk7LiIK KyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1udW1lcmljLWNoYXJh Y3Rlci1yZWZlcmVuY2UKKyAgJygodCAoOmluaGVyaXQgZm9udC1sb2NrLWVzY2FwZS1mYWNlKSkp CisgICJGYWNlIGZvciBudW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIGxpa2UgJiM2NTsgYW5k ICYjeDQxOy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtbGF0 ZXggJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1mYWNlKSkpCisgICJGYWNlIGZvciBM YVRlWCAvIG1hdGggY29udGVudCBpbiBNYXJrZG93biAoJC4uLiQgYW5kICQkLi4uJCQpLiIKKyAg OnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YWJsZS1oZWFkZXIgJygo dCAoOmluaGVyaXQgKGJvbGQgZm9udC1sb2NrLWRvYy1mYWNlKSkpKQorICAiRmFjZSBmb3IgTWFy a2Rvd24gcGlwZSB0YWJsZSBoZWFkZXIgY2VsbHMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhk ZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlLWNlbGwgJygodCAoOmluaGVyaXQgZGVmYXVsdCkpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gcGlwZSB0YWJsZSBkYXRhIGNlbGxzLiIKKyAgOnZlcnNpb24g IjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2VsbCAnKCh0 ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIHBp cGUgdGFibGUgZGVsaW1pdGVyIGNlbGxzICgtLS0gc2VwYXJhdG9ycykuIgorICA6dmVyc2lvbiAi MzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlICcoKHQgKDpleHRlbmQgdCkpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gdGFibGUuCitBbHRlciB0aGlzIGZhY2UgdG8gYWRkIGEgYDpi YWNrZ3JvdW5kJyBmb3IgYSB2aXN1YWxseSBkaXN0aW5jdCB0YWJsZQorcmVnaW9uLCBlLmcuOgor ICAoc2V0LWZhY2UtYXR0cmlidXRlIFxcPSdtYXJrZG93bi10cy10YWJsZSBuaWwgOmJhY2tncm91 bmQgXCJncmF5OTVcIikiCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24t dHMtaW4tdGFibGUgJygodCAoOmV4dGVuZCB0KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBgbWFy a2Rvd24tdHMtaW4tdGFibGUtbW9kZScgd2hlbiBwb2ludCBpcyBpbiBhIHRhYmxlLgorQWx0ZXIg dGhpcyBmYWNlIHRvIGFkZCBhIGA6YmFja2dyb3VuZCcgZm9yIGEgdmlzdWFsbHkgZGlzdGluY3Qg dGFibGUKK3JlZ2lvbiwgZS5nLjoKKyAgKHNldC1mYWNlLWF0dHJpYnV0ZSBcXD0nbWFya2Rvd24t dHMtaW4tdGFibGUgbmlsIDpiYWNrZ3JvdW5kIFwiZ3JheTk1XCIpIgorICA6dmVyc2lvbiAiMzEu 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 d24tdHMtbW9kZScgYnVmZmVycy4iKQorCisoZGVmdmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2st bW9kZXMKKyAgYCgoc2ggYmFzaC10cy1tb2RlKQorICAgIChzaGVsbCBiYXNoLXRzLW1vZGUpCisg ICAgKCwoaW50ZXJuICJjIyIpIGNzaGFycC10cy1tb2RlKQorICAgIChjcHAgYysrLXRzLW1vZGUp CisgICAgKGVsIGVtYWNzLWxpc3AtbW9kZSkKKyAgICAoZWxpc3AgZW1hY3MtbGlzcC1tb2RlKQor ICAgIChnb2xhbmcgZ28tdHMtbW9kZSkKKyAgICAoZ29tb2QgZ28tbW9kLXRzLW1vZGUpCisgICAg KGdvd29yayBnby13b3JrLXRzLW1vZGUpCisgICAgKGphdmFzY3JpcHQganMtdHMtbW9kZSkKKyAg ICAobWQgbWFya2Rvd24tdHMtbW9kZSkKKyAgICAocHkgcHl0aG9uLXRzLW1vZGUpCisgICAgKHJi IHJ1YnktdHMtbW9kZSkKKyAgICAocnMgcnVzdC10cy1tb2RlKQorICAgICh0ZXggbGF0ZXgtbW9k ZSkKKyAgICAodHMgdHlwZXNjcmlwdC10cy1tb2RlKQorICAgICh5bWwgeWFtbC10cy1tb2RlKSkK KyAgIkV4dHJhIG1hcHBpbmdzIGZyb20gY29kZSBibG9jayBsYW5ndWFnZSB0YWdzIHRvIG1ham9y IG1vZGVzLgogCi07OzsgRm9udC1sb2NrCitFbnRyaWVzIGhlcmUgYXJlIG9ubHkgbmVlZGVkIHdo ZW4gdGhlIGxhbmd1YWdlIHRhZyBpbiBhIGZlbmNlZCBjb2RlCitibG9jayBkb2VzIE5PVCBtYXRj aCB0aGUgY29udmVudGlvbmFsIG1vZGUgbmFtZSBkZXJpdmF0aW9uLCBlLmcuIHRoZQordXNlciB3 cml0ZXMgXFw9YFxcPWBcXD1gdHMgaW5zdGVhZCBvZiBcXD1gXFw9YFxcPWB0eXBlc2NyaXB0LCBv cgorXFw9YFxcPWBcXD1gcHkgaW5zdGVhZCBvZiBcXD1gXFw9YFxcPWBweXRob24uICBGb3IgdGFn cyB0aGF0IGFscmVhZHkKK3Jlc29sdmUgdmlhIHRoZSBzdGFuZGFyZCBcIi10cy1tb2RlXCIvXCIt bW9kZVwiIGhldXJpc3RpY3MgdGhlcmUgaXMgbm8KK25lZWQgdG8gYWRkIGFuIGVudHJ5LgorCitU aGUgYWxpc3QgaXMgb2YgdGhlIGZvcm0gKExBTkdVQUdFIE1BSk9SLU1PREUpLiBNQUpPUi1NT0RF IGNhbiBiZSBhCit0cmVlLXNpdHRlciBvciBhIGNvbnZlbnRpb25hbCBtb2RlLgorCitJZiB5b3Ug cHJlZmVyIGEgY29udmVudGlvbmFsIG1vZGUgb3ZlciBpdHMgdHJlZS1zaXR0ZXIgdmFyaWFudCwg YWRkIG9yCityZXBsYWNlIHJlbGV2YW50IGVudHJpZXMuICBGb3IgZXhhbXBsZToKKworICAgIChh ZGQtdG8tbGlzdCBcXD0nbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcworICAgICAgXFw9Jyhw eXRob24gcHl0aG9uLW1vZGUpKQorICAgIChzZXRmIChhbGlzdC1nZXQgXFw9J3B5IG1hcmtkb3du LXRzLWNvZGUtYmxvY2stbW9kZXMpCisgICAgICAgICAgXFw9JyhweXRob24tbW9kZSkpCisKK0Nv ZGUgYmxvY2tzIGZvciB0aGF0IG5vbiB0cmVlLXNpdHRlciBtb2RlcyB3aWxsIGJlIGZvbnRpZmll ZCB1c2luZyB0aGUKK21vZGUncyBjb252ZW50aW9uYWwgZm9udC1sb2NrIHJ1bGVzLiIpCisKKyhk ZWZ2YXIgbWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMKKyAg JyhtYXJrZG93bi10cy1tb2RlCisgICAgcGhwLXRzLW1vZGUpCisgICJUcmVhdCB0aGVzZSBjb2Rl IGJsb2NrIHRyZWUtc2l0dGVyIG1vZGVzIGFzIGNvbnZlbnRpb25hbC4KK1NvbWUgbW9kZXMgdGhh dCBlbWJlZCBtdWx0aXBsZSBgdHJlZXNpdCcgcGFyc2VycyBuZWVkIHRvIGJlIHRyZWF0ZWQgd2l0 aAorY29udmVudGlvbmFsIGZvbnQtbG9jay4gIGBtYXJrZG93bi10cy1tb2RlJyBpdHNlbGYgaXMg b25lIG9mIHRoZW0uIikKKworOzs7IEZvbnQtbG9jazoKIAogKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWRlbGltaXRlciAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKICAgIkZv bnRpZnkgZGVsaW1pdGVyIE5PREUgYW5kIG9wdGlvbmFsbHkgaGlkZSBpdHMgbWFya3VwLgpAQCAt MTY4LDIzICs3NzEsODMzIEBAIG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAgIChw dXQtdGV4dC1wcm9wZXJ0eSAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUt ZW5kIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRz LS1tYXJrdXApKSkKIAorKGRlZnZhciB1cmwtbWFpbC1jb21tYW5kKSA7IHVybC91cmwtdmFycy5l bAorCisoZGVmdW4gbWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24gKGJlZyBlbmQgdXJsKQor ICAiTWFrZSB0aGUgcmVnaW9uIGZyb20gQkVHIHRvIEVORCBhIGNsaWNrYWJsZSBidXR0b24gZm9y IFVSTC4KK0ZvciBtYWlsdG86IFVSSXMsIHVzZSBgdXJsLW1haWwtY29tbWFuZCcuICBGb3Igb3Ro ZXIgc2NoZW1lcworXChlLmcuLCBodHRwLCBmdHApLCBvcGVuIHdpdGggYGJyb3dzZS11cmwnLiAg T3RoZXJ3aXNlLCB0cmVhdCBhcworYSByZWxhdGl2ZSBmaWxlIHBhdGggYW5kIG9wZW4gd2l0aCBg ZmluZC1maWxlJy4KKworRG8gbm90IHBhc3MgYGZhY2UnIHRvIGBtYWtlLXRleHQtYnV0dG9uJzog dGhlIGxpbmsgZmFjZSBpcyBhbHJlYWR5CithcHBsaWVkIGJ5IGBtYXJrZG93bi10cy0tZm9udGlm eS1saW5rLW5vZGUnIHZpYQorYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJyAod2l0aCBg Om92ZXJyaWRlIGFwcGVuZCcpLCBhbmQKK2BhZGQtdGV4dC1wcm9wZXJ0aWVzJyB3b3VsZCBvdGhl cndpc2UgcmVwbGFjZSB0aGUgYXBwZW5kZWQgZmFjZQorbGlzdCB3aXRoIGEgc2luZ2xlIGBtYXJr ZG93bi10cy1saW5rJywgY2xvYmJlcmluZyBhbiBlbmNsb3NpbmcKK2hlYWRpbmcgZmFjZS4iCisg IDs7IE5PVEU6IFVSSSBzY2hlbWUgYW5kIGhvc3QgbmFtZSBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBw ZXIgUkZDIDM5ODYKKyAgOzsgYW5kIFJGQyA3MjMwLgorICAobGV0ICgoY2FzZS1mb2xkLXNlYXJj aCBuaWwpKQorICAgIChtYWtlLXRleHQtYnV0dG9uIGJlZyBlbmQKKyAgICAgICAgICAgICAgICAg ICAgICAnYWN0aW9uIChsYW1iZGEgKF9idXR0b24pCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1w cmVmaXgtcCAiIyIgdXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJr ZG93bi10cy0tZm9sbG93LWZyYWdtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdWJzdHJpbmcgdXJsIDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoc3RyaW5nLW1hdGNoLXAgIlxcYG1haWx0bzoiIHVybCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZnVuY2FsbCB1cmwtbWFpbC1jb21tYW5kCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgbWFpbHRvOiIgIiIg dXJsKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaC1w ICJcXGBbYS16XSs6IiB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJy b3dzZS11cmwgdXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChmaW5k LWZpbGUgdXJsKSkpKQorICAgICAgICAgICAgICAgICAgICAgICdoZWxwLWVjaG8gdXJsKSkpCisK KyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0aW9uIChub2RlIG92ZXJy aWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBsaW5rIGRlc3RpbmF0aW9uIE5PREUg YW5kIGhpZGUgaXQgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQg RU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRl Jy4iCisgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgKHRyZWVzaXQtbm9kZS1z dGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKQorICAgJ21hcmtkb3duLXRzLWxpbmst ZGVzdGluYXRpb24gb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAod2hlbiBtYXJrZG93bi10cy1oaWRl LW1hcmt1cAorICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUp ICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2li bGUgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0t bGluay1yZWYtY2FjaGUgbmlsCisgICJDYWNoZWQgYWxpc3Qgb2YgKExBQkVMIC4gVVJMKSBmcm9t IGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25zLgorRWFjaCBlbnRyeSBpcyBhIGNvbnMgY2VsbCBt YXBwaW5nIGEgZG93bmNhc2VkIGxhYmVsIHN0cmluZyB0byBpdHMKK2Rlc3RpbmF0aW9uIFVSTC4i KQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZS10aWNrIG5pbAor ICAiVmFsdWUgb2YgYGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrJyB3aGVuIHRoZSBjYWNoZSB3 YXMgYnVpbHQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saW5rLXJlZi1kZWZpbml0aW9ucyAo KQorICAiUmV0dXJuIGFuIGFsaXN0IG9mIChMQUJFTCAuIFVSTCkgZnJvbSBsaW5rIHJlZmVyZW5j ZSBkZWZpbml0aW9ucy4KK0xBQkVMIGlzIGRvd25jYXNlZCBmb3IgY2FzZS1pbnNlbnNpdGl2ZSBt YXRjaGluZy4gIFJlc3VsdHMgYXJlCitjYWNoZWQgYW5kIHJlYnVpbHQgb25seSB3aGVuIHRoZSBi dWZmZXIgY2hhbmdlcy4iCisgIChsZXQgKCh0aWNrIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGlj aykpKQorICAgICh1bmxlc3MgKGVxIHRpY2sgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlLXRp Y2spCisgICAgICAobGV0KiAoKHJvb3QgKHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rv d24pKQorICAgICAgICAgICAgIChtYXRjaGVzICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAg ICAgICAgICAgICAgICAgICAgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAnKChsaW5rX3Jl ZmVyZW5jZV9kZWZpbml0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rX2xhYmVs KSBAbGFiZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmtfZGVzdGluYXRpb24pIEBk ZXN0KSkpKQorICAgICAgICAgICAgIGRlZnMpCisgICAgICAgICh3aGlsZSBtYXRjaGVzCisgICAg ICAgICAgKGxldCogKChsYWJlbC1wYWlyIChwb3AgbWF0Y2hlcykpCisgICAgICAgICAgICAgICAg IChkZXN0LXBhaXIgKHBvcCBtYXRjaGVzKSkKKyAgICAgICAgICAgICAgICAgKGxibC10ZXh0IChz dHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRleHQgKGNkciBsYWJlbC1wYWlyKSB0KQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXFsiICJcXF0iKSkpCisgICAgICAg ICAgICAocHVzaCAoY29ucyAoZG93bmNhc2UgbGJsLXRleHQpCisgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLXRleHQgKGNkciBkZXN0LXBhaXIpIHQpKQorICAgICAgICAgICAg ICAgICAgZGVmcykpKQorICAgICAgICAoc2V0cSBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUg KG5yZXZlcnNlIGRlZnMpCisgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNo ZS10aWNrIHRpY2spKSkKKyAgICBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUpKQorCisoZGVm dW4gbWFya2Rvd24tdHMtLXJlc29sdmUtbGluay1yZWYgKGxhYmVsKQorICAiUmVzb2x2ZSBMQUJF TCB0byBhIFVSTCB2aWEgbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbnMuCitMQUJFTCBzaG91bGQg YmUgdGhlIHRleHQgd2l0aG91dCBicmFja2V0cy4gIE1hdGNoaW5nIGlzCitjYXNlLWluc2Vuc2l0 aXZlIHBlciBDb21tb25NYXJrIHNwZWMgc2VjdGlvbiA0LjcuIgorICAoYWxpc3QtZ2V0IChkb3du Y2FzZSBsYWJlbCkgKG1hcmtkb3duLXRzLS1saW5rLXJlZi1kZWZpbml0aW9ucykKKyAgICAgICAg ICAgICBuaWwgbmlsICMnZXF1YWwpKQorCis7OzsgRnJhZ21lbnQgbGlua3M6CisKKyhkZWZjb25z dCBtYXJrZG93bi10cy0tc2x1Zy1naXRodWItc3RyaXAtcmUKKyAgIltdWyFcIiMkJSYnKCkqKywu Lzo7PD0+P0BcXF5ge3x9fl0iCisgICJQdW5jdHVhdGlvbiBzdHJpcHBlZCBieSBHaXRIdWIncyBn aC1zbHVnZ2VyIGJlZm9yZSBoeXBoZW5hdGlvbi4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXNs dWctZ2l0aHViICh0ZXh0KQorICAiUmV0dXJuIHRoZSBHaXRIdWItZmxhdm9yIHNsdWcgZm9yIGhl YWRpbmcgVEVYVC4KK01pcnJvcnMgdGhlIGdoLXNsdWdnZXIgYWxnb3JpdGhtOiBsb3dlcmNhc2Us IHN0cmlwIGEgZml4ZWQKK3B1bmN0dWF0aW9uIHNldCwgcmVwbGFjZSBzcGFjZXMgd2l0aCBoeXBo ZW5zLiIKKyAgKGxldCogKChsYyAoZG93bmNhc2UgdGV4dCkpCisgICAgICAgICAoc3RyaXBwZWQg KHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10 cy0tc2x1Zy1naXRodWItc3RyaXAtcmUgIiIgbGMpKSkKKyAgICAocmVwbGFjZS1yZWdleHAtaW4t c3RyaW5nICJbWzpibGFuazpdXSIgIi0iIHN0cmlwcGVkKSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy0tc2x1Zy1wYW5kb2MgKHRleHQpCisgICJSZXR1cm4gdGhlIFBhbmRvYy1mbGF2b3IgYXV0by1p ZCBzbHVnIGZvciBoZWFkaW5nIFRFWFQuCitNaXJyb3JzIFBhbmRvYydzIGFsZ29yaXRobTogZHJv cCBldmVyeXRoaW5nIGJlZm9yZSB0aGUgZmlyc3QKK2xldHRlciwga2VlcCBhbHBoYW51bWVyaWNz IGFuZCBgXy0uJywgY29sbGFwc2Ugd2hpdGVzcGFjZSBydW5zIHRvCitoeXBoZW5zLCBsb3dlcmNh c2UuICBGYWxscyBiYWNrIHRvIFwic2VjdGlvblwiIGlmIGVtcHR5LiIKKyAgKGxldCogKChsYyAo ZG93bmNhc2UgdGV4dCkpCisgICAgICAgICAoZnJvbS1sZXR0ZXIgKGlmIChzdHJpbmctbWF0Y2gg IltbOmFscGhhOl1dIiBsYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyBs YyAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAgICAgICAgICAgICAgICAgIiIpKQorICAg ICAgICAgKGtlcHQgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICJb Xls6YWxudW06XV8uXG5cdFs6Ymxhbms6XS1dIiAiIiBmcm9tLWxldHRlcikpCisgICAgICAgICAo aHlwaGVuYXRlZCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJbWzpibGFuazpdXHRcbl0rIiAi LSIga2VwdCkpCisgICAgICAgICAodHJpbW1lZCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICIt K1xcJyIgIiIgaHlwaGVuYXRlZCkpKQorICAgIChpZiAoc3RyaW5nLWVtcHR5LXAgdHJpbW1lZCkg InNlY3Rpb24iIHRyaW1tZWQpKSkKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS1leHBsaWNpdC1p ZC1yZQorICAiWyBcdF0qe1sgXHRdKiNcXChbXn0gXHRdK1xcKVsgXHRdKn1bIFx0XSpcXCciCisg ICJNYXRjaCBhIFBhbmRvYy1zdHlsZSB0cmFpbGluZyBgeyNpZH0nIG9uIGEgaGVhZGluZyBsaW5l LgorQ2FwdHVyZSBncm91cCAxIGlzIHRoZSBleHBsaWNpdCBpZC4iKQorCisoZGVmdW4gbWFya2Rv d24tdHMtLWhlYWRpbmctdGV4dC1hbmQtaWQgKHJhdykKKyAgIlNwbGl0IFJBVyBoZWFkaW5nIHRl eHQgaW50byAoVklTSUJMRSAuIEVYUExJQ0lULUlEKS4KK0VYUExJQ0lULUlEIGlzIG5vbi1uaWwg aWYgUkFXIGVuZHMgd2l0aCBhIFBhbmRvYy1zdHlsZSBgeyNpZH0nLAoraW4gd2hpY2ggY2FzZSBW SVNJQkxFIGlzIFJBVyB3aXRoIHRoYXQgc3VmZml4IHJlbW92ZWQuIgorICAoaWYgKHN0cmluZy1t YXRjaCBtYXJrZG93bi10cy0tZXhwbGljaXQtaWQtcmUgcmF3KQorICAgICAgKGNvbnMgKHN1YnN0 cmluZyByYXcgMCAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAgICAgKG1hdGNoLXN0cmlu ZyAxIHJhdykpCisgICAgKGNvbnMgcmF3IG5pbCkpKQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3du LXRzLS1oZWFkaW5nLWlkLWNhY2hlIG5pbAorICAiQ2FjaGVkIGhhc2ggdGFibGUgbWFwcGluZyBo ZWFkaW5nIHNsdWcgc3RyaW5ncyB0byBidWZmZXIgcG9zaXRpb25zLgorRWFjaCB2YWx1ZSBpcyB0 aGUgYnVmZmVyIHBvc2l0aW9uIG9mIHRoZSBzdGFydCBvZiB0aGUgbWF0Y2hpbmcKK2BhdHhfaGVh ZGluZycgb3IgYHNldGV4dF9oZWFkaW5nJyBub2RlLiAgQnVpbHQgbGF6aWx5IGJ5CitgbWFya2Rv d24tdHMtLWhlYWRpbmctaWRzJywgaW52YWxpZGF0ZWQgYnkgYnVmZmVyLXRpY2sgY2hhbmdlLiIp CisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUtdGljayBuaWwK KyAgIlZhbHVlIG9mIGBidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaycgd2hlbiB0aGUgaGVhZGlu Zy1pZCBjYWNoZSB3YXMgYnVpbHQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1idWlsZC1oZWFk aW5nLWlkcyAoKQorICAiV2FsayBhbGwgaGVhZGluZ3MgaW4gdGhlIGJ1ZmZlciBhbmQgcmV0dXJu IGEgaGFzaCB0YWJsZS4KK1doaWNoIG1hcHMgZWFjaCBzbHVnIHRvIHRoZSBidWZmZXIgcG9zaXRp b24gb2YgaXRzIGhlYWRpbmcuICBFYWNoCitoZWFkaW5nIGNvbnRyaWJ1dGVzIGl0cyBHaXRIdWIg c2x1ZywgaXRzIFBhbmRvYyBzbHVnLCBhbmQgaXRzIGV4cGxpY2l0CitgeyNpZH0nIGlmIHByZXNl bnQuICBCb3RoIHNsdWcgYWxnb3JpdGhtcyBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIGJ1ZmZlcgor YmVjYXVzZSBhIG1hcmtkb3duIGZpbGUgaXMgb2Z0ZW4gcHJldmlld2VkIGJ5IHNldmVyYWwgcmVu ZGVyZXJzIChHaXRIdWIKK3dlYiBVSSwgUGFuZG9jLCBtZEJvb2ssIEh1Z28sIGFuZCBzbyBvbikg YW5kIHRoZSBzYW1lIHNvdXJjZSBzaG91bGQKK3Jlc29sdmUgcmVnYXJkbGVzcyBvZiB3aGljaCBv bmUgdGhlIGF1dGhvciB3cm90ZSB0aGUgbGluayBmb3IuICBGb3IgbW9zdAoraGVhZGluZ3MgdGhl IHR3byBhbGdvcml0aG1zIHByb2R1Y2UgdGhlIHNhbWUgc2x1ZyBhbnl3YXkuCitEdXBsaWNhdGUg c2x1Z3MgKHdpdGhpbiBvbmUgYWxnb3JpdGhtKSBhcmUgZGlzYW1iaWd1YXRlZCBieSBhcHBlbmRp bmcKK2AtMScsIGAtMicsIGFuZCBzbyBvbiwgaW4gZG9jdW1lbnQgb3JkZXIsIG1hdGNoaW5nIEdp dEh1YidzIGJlaGF2aW9yLgorV2hlbiB0d28gZGlzdGluY3QgaGVhZGluZ3Mgd291bGQgb3RoZXJ3 aXNlIHNoYXJlIGEgc2x1ZywgdGhlIGZpcnN0CitvY2N1cnJlbmNlIGluIGRvY3VtZW50IG9yZGVy IHdpbnMuIgorICAobGV0ICgodGFibGUgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFsKSkK KyAgICAgICAgOzsgUGVyLWFsZ29yaXRobSBkZWR1cGUgY291bnRlcnM6IGhvdyBtYW55IHRpbWVz IHRoaXMgYmFzZSBzbHVnCisgICAgICAgIDs7IGhhcyBiZWVuIHNlZW4gc28gZmFyIGluIGRvY3Vt ZW50IG9yZGVyLgorICAgICAgICAoZ2gtY291bnRzIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydl cXVhbCkpCisgICAgICAgIChwZC1jb3VudHMgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFs KSkKKyAgICAgICAgKHJvb3QgKHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rvd24pKSkK KyAgICAoZG9saXN0IChjYXAgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAg ICAgcm9vdAorICAgICAgICAgICAgICAgICAgJygoKGF0eF9oZWFkaW5nKSBAaCkKKyAgICAgICAg ICAgICAgICAgICAgKChzZXRleHRfaGVhZGluZykgQGgpKSkpCisgICAgICAobGV0KiAoKG5vZGUg KGNkciBjYXApKQorICAgICAgICAgICAgIChwb3MgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkK KyAgICAgICAgICAgICAocmF3IChzdHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSB0 KSkpCisgICAgICAgICAgICAgOzsgU3RyaXAgdGhlIGxlYWRpbmcgbWFya2VyICgjIyMgb3IgPT09 PS8tLS0tKS4KKyAgICAgICAgICAgICA7OyBGb3IgYXR4LCBkcm9wIGxlYWRpbmcgIydzIGFuZCBm b2xsb3dpbmcgc3BhY2UuCisgICAgICAgICAgICAgOzsgRm9yIHNldGV4dCwgZHJvcCB0aGUgdHJh aWxpbmcgdW5kZXJsaW5lIGxpbmUuCisgICAgICAgICAgICAgKHRleHQgKGNvbmQKKyAgICAgICAg ICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIlxcYCMrWyBcdF0qXFwoLio/XFwpWyBcdF0qIypb IFx0XSpcXCciIHJhdykKKyAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMSByYXcp KQorICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXFxgXFwoLio/XFwpXG5bPS1d K1sgXHRdKlxcJyIgcmF3KQorICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmluZyAxIHJh dykpCisgICAgICAgICAgICAgICAgICAgICh0IHJhdykpKQorICAgICAgICAgICAgIChzcGxpdCAo bWFya2Rvd24tdHMtLWhlYWRpbmctdGV4dC1hbmQtaWQgdGV4dCkpCisgICAgICAgICAgICAgKHZp c2libGUgKGNhciBzcGxpdCkpCisgICAgICAgICAgICAgKGV4cGxpY2l0IChjZHIgc3BsaXQpKSkK KyAgICAgICAgOzsgRXhwbGljaXQgeyNpZH0gd2lucyBvdXRyaWdodDsgZmlyc3Qgb2NjdXJyZW5j ZSBrZWVwcyBpdC4KKyAgICAgICAgKHdoZW4gKGFuZCBleHBsaWNpdCAobm90IChnZXRoYXNoIGV4 cGxpY2l0IHRhYmxlKSkpCisgICAgICAgICAgKHB1dGhhc2ggZXhwbGljaXQgcG9zIHRhYmxlKSkK KyAgICAgICAgOzsgQXV0byBzbHVncyAoR2l0SHViICsgUGFuZG9jKSwgZGVkdXBlZCBwZXIgYWxn b3JpdGhtLgorICAgICAgICAobGV0KiAoKGdoLWJhc2UgKG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1 YiB2aXNpYmxlKSkKKyAgICAgICAgICAgICAgIChwZC1iYXNlIChtYXJrZG93bi10cy0tc2x1Zy1w YW5kb2MgdmlzaWJsZSkpCisgICAgICAgICAgICAgICAoZ2gtbiAoZ2V0aGFzaCBnaC1iYXNlIGdo LWNvdW50cyAwKSkKKyAgICAgICAgICAgICAgIChwZC1uIChnZXRoYXNoIHBkLWJhc2UgcGQtY291 bnRzIDApKQorICAgICAgICAgICAgICAgKGdoLWlkIChpZiAoemVyb3AgZ2gtbikgZ2gtYmFzZQor ICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMtJWQiIGdoLWJhc2UgZ2gtbikpKQor ICAgICAgICAgICAgICAgKHBkLWlkIChpZiAoemVyb3AgcGQtbikgcGQtYmFzZQorICAgICAgICAg ICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMtJWQiIHBkLWJhc2UgcGQtbikpKSkKKyAgICAgICAg ICAocHV0aGFzaCBnaC1iYXNlICgxKyBnaC1uKSBnaC1jb3VudHMpCisgICAgICAgICAgKHB1dGhh c2ggcGQtYmFzZSAoMSsgcGQtbikgcGQtY291bnRzKQorICAgICAgICAgIDs7IEZpcnN0LXdyaXRl ci13aW5zIHNvIGRvY3VtZW50IG9yZGVyIHRpZWJyZWFrcyBjb2xsaXNpb25zLgorICAgICAgICAg ICh1bmxlc3MgKGdldGhhc2ggZ2gtaWQgdGFibGUpIChwdXRoYXNoIGdoLWlkIHBvcyB0YWJsZSkp CisgICAgICAgICAgKHVubGVzcyAoZ2V0aGFzaCBwZC1pZCB0YWJsZSkgKHB1dGhhc2ggcGQtaWQg cG9zIHRhYmxlKSkpKSkKKyAgICB0YWJsZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taGVhZGlu Zy1pZHMgKCkKKyAgIlJldHVybiB0aGUgaGVhZGluZy1pZCBoYXNoIHRhYmxlIGZvciB0aGUgY3Vy cmVudCBidWZmZXIuCitDYWNoZSBpcyByZWJ1aWx0IG9ubHkgd2hlbiBgYnVmZmVyLWNoYXJzLW1v ZGlmaWVkLXRpY2snIGhhcyBhZHZhbmNlZAorc2luY2UgdGhlIGxhc3QgY2FsbCAobWlycm9ycyBg bWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlJykuIgorICAobGV0ICgodGljayAoYnVmZmVyLWNo YXJzLW1vZGlmaWVkLXRpY2spKSkKKyAgICAodW5sZXNzIChlcSB0aWNrIG1hcmtkb3duLXRzLS1o ZWFkaW5nLWlkLWNhY2hlLXRpY2spCisgICAgICAoc2V0cSBtYXJrZG93bi10cy0taGVhZGluZy1p ZC1jYWNoZSAobWFya2Rvd24tdHMtLWJ1aWxkLWhlYWRpbmctaWRzKQorICAgICAgICAgICAgbWFy a2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUtdGljayB0aWNrKSkKKyAgICBtYXJrZG93bi10cy0t aGVhZGluZy1pZC1jYWNoZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9sbG93LWZyYWdtZW50 IChpZCkKKyAgIkp1bXAgdG8gdGhlIGhlYWRpbmcgd2hvc2Ugc2x1ZyBtYXRjaGVzIElEICh3aXRo b3V0IGxlYWRpbmcgYCMnKS4KK1B1c2hlcyB0aGUgbWFyayBiZWZvcmUgbW92aW5nIHNvIGBDLXUg Qy1TUEMnIHJldHVybnMuICBTaWduYWxzCitgdXNlci1lcnJvcicgaWYgbm8gaGVhZGluZyBtYXRj aGVzLiIKKyAgKGlmLWxldCogKChwb3MgKGdldGhhc2ggaWQgKG1hcmtkb3duLXRzLS1oZWFkaW5n LWlkcykpKSkKKyAgICAgIChwcm9nbgorICAgICAgICAocHVzaC1tYXJrKQorICAgICAgICAoZ290 by1jaGFyIHBvcykKKyAgICAgICAgKHJlY2VudGVyKSkKKyAgICAodXNlci1lcnJvciAiTm8gaGVh ZGluZyBmb3IgZnJhZ21lbnQ6ICMlcyIgaWQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250 aWZ5LWhlYWRpbmcgKG5vZGUgX292ZXJyaWRlIF9zdGFydCBfZW5kICZyZXN0IF8pCisgICJBcHBs eSB0aGUgaGVhZGluZyBmYWNlIHRvIE5PREUncyBmdWxsIGV4dGVudC4KK1VzZSBgZm9udC1sb2Nr LWFwcGVuZC10ZXh0LXByb3BlcnR5JyBkaXJlY3RseSBzbyB0aGUgZmFjZSBpcyBhcHBsaWVkCith Y3Jvc3MgdGhlIGVudGlyZSBoZWFkaW5nIGV2ZW4gd2hlbiBjaGlsZCBzdWItbm9kZXMgKGUuZy4g YW4gaW5saW5lCitsaW5rKSB3b3VsZCBvdGhlcndpc2UgcHJldmVudCB0aGUgcmVndWxhciB0cmVl LXNpdHRlciBmYWNlIHJ1bGUgZnJvbQorY292ZXJpbmcgdGhlbS4KKworRm9yIEFUWCBoZWFkaW5n cywgYWxzbyBmb250aWZ5IGFueSBvcHRpb25hbCB0cmFpbGluZyBjbG9zaW5nLWAjJworc2VxdWVu Y2UgYXMgYSBkZWxpbWl0ZXIuICBUaGUgdHJlZS1zaXR0ZXIgZ3JhbW1hciBkb2VzIG5vdCBwcm9k dWNlIGEKK3NlcGFyYXRlIG5vZGUgZm9yIHRoZXNlOyBwZXIgQ29tbW9uTWFyayB0aGV5IGFyZSBk ZWNvcmF0aXZlIGFuZAorbXVzdCBiZSBwcmVjZWRlZCBieSBhIHNwYWNlIG9yIHRhYi4iCisgIChs ZXQqICgodHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkpCisgICAgICAgICAobi1zdGFydCAo dHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgKG4tZW5kICAgKHRyZWVzaXQtbm9k ZS1lbmQgbm9kZSkpCisgICAgICAgICAoZmFjZSAoY29uZAorICAgICAgICAgICAgICAgICgoZXF1 YWwgdHlwZSAic2V0ZXh0X2hlYWRpbmciKQorICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMt c2V0ZXh0LWhlYWRpbmcpCisgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgKGxl dCAoKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgMCkpKQorICAgICAgICAgICAgICAg ICAgIChpbnRlcm4gKGZvcm1hdCAibWFya2Rvd24tdHMtaGVhZGluZy0lZCIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCAodHJlZXNpdC1ub2RlLXRleHQgbWFya2Vy IHQpKSkpKSkpKSkKKyAgICAoZm9udC1sb2NrLWFwcGVuZC10ZXh0LXByb3BlcnR5IG4tc3RhcnQg bi1lbmQgJ2ZhY2UgZmFjZSkKKyAgICAod2hlbiAoc3RyaW5nLXByZWZpeC1wICJhdHhfIiB0eXBl KQorICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgIChnb3RvLWNoYXIgbi1lbmQpCisgICAg ICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHRcbiIgbi1zdGFydCkKKyAgICAgICAgKGxldCAo KGxpbmUtZW5kIChwb2ludCkpKQorICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQi IG4tc3RhcnQpCisgICAgICAgICAgKGxldCAoKHRyYWlsaW5nLWVuZCAocG9pbnQpKSkKKyAgICAg ICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIjIiBuLXN0YXJ0KQorICAgICAgICAgICAgKGxl dCAoKHRyYWlsaW5nLXN0YXJ0IChwb2ludCkpKQorICAgICAgICAgICAgICAod2hlbiAoYW5kICg8 IHRyYWlsaW5nLXN0YXJ0IHRyYWlsaW5nLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAo PiB0cmFpbGluZy1zdGFydCBuLXN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1x IChjaGFyLWJlZm9yZSB0cmFpbGluZy1zdGFydCkgJyg/XHMgP1x0KSkpCisgICAgICAgICAgICAg ICAgKGZvbnQtbG9jay1wcmVwZW5kLXRleHQtcHJvcGVydHkKKyAgICAgICAgICAgICAgICAgdHJh aWxpbmctc3RhcnQgdHJhaWxpbmctZW5kCisgICAgICAgICAgICAgICAgICdmYWNlICdtYXJrZG93 bi10cy1kZWxpbWl0ZXIpCisgICAgICAgICAgICAgICAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1t YXJrdXAKKyAgICAgICAgICAgICAgICAgIDs7IEFsc28gaGlkZSB0aGUgc3BhY2UocykgcHJlY2Vk aW5nIHRoZSBjbG9zZXIgYW5kIGFueQorICAgICAgICAgICAgICAgICAgOzsgdHJhaWxpbmcgd2hp dGVzcGFjZSwgc28gdGhlIGhlYWRpbmcgbG9va3MgY2xlYW4uCisgICAgICAgICAgICAgICAgICAo bGV0ICgoaGlkZS1zdGFydCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGdvdG8tY2hhciB0cmFpbGluZy1zdGFydCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIgbi1zdGFy dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKQorICAg ICAgICAgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgaGlkZS1zdGFydCBsaW5lLWVuZAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkp KSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlIChub2RlIG92 ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBsaW5rIG9yIGltYWdlIHRleHQg Tk9ERSBhcyBhIGNsaWNrYWJsZSBidXR0b24uCitXb3JrcyBmb3IgaW5saW5lIGxpbmtzLCByZWZl cmVuY2UgbGlua3MsIHNob3J0Y3V0IGxpbmtzLCBhbmQKK2ltYWdlIGRlc2NyaXB0aW9ucy4gIFRo ZSBVUkwgaXMgdGFrZW4gZnJvbSBhIHNpYmxpbmcKK2BsaW5rX2Rlc3RpbmF0aW9uJyBub2RlIHdo ZW4gcHJlc2VudCwgb3IgcmVzb2x2ZWQgZnJvbSBhCitsaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9u LCBvciB0aGUgbm9kZSB0ZXh0IGl0c2VsZiBpcyB1c2VkIGFzCitmYWxsYmFjay4gIE9WRVJSSURF LCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnkt d2l0aC1vdmVycmlkZScuIgorICAobGV0ICgocGFyZW50ICh0cmVlc2l0LW5vZGUtcGFyZW50IG5v ZGUpKSkKKyAgICA7OyBXaGVuIE5PREUgaXMgYSBsaW5rX2xhYmVsIGluc2lkZSBhIGZ1bGxfcmVm ZXJlbmNlX2xpbmsgdGhhdAorICAgIDs7IGFsc28gaGFzIGEgbGlua190ZXh0LCBza2lwIGl0LCBs aW5rX3RleHQgaGFuZGxlcyB0aGF0IGxpbmsuCisgICAgKHVubGVzcyAoYW5kIChzdHJpbmc9ICh0 cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAibGlua19sYWJlbCIpCisgICAgICAgICAgICAgICAgICh0 cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVudCAiXFxgbGlua190ZXh0XFwnIikpCisgICAgICAo dHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICAgJ21hcmtkb3duLXRzLWxpbmsg b3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgICAgKGxldCogKChkZXN0ICh0cmVlc2l0LXNlYXJjaC1z dWJ0cmVlIHBhcmVudCAiXFxgbGlua19kZXN0aW5hdGlvblxcJyIpKQorICAgICAgICAgICAgICh1 cmwgKGlmIGRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXRleHQgZGVz dCB0KQorICAgICAgICAgICAgICAgICAgICA7OyBSZWZlcmVuY2UgbGlua3M6IHJlc29sdmUgdmlh IGxpbmtfbGFiZWwgb3IgbGlua190ZXh0LgorICAgICAgICAgICAgICAgICAgICAobGV0KiAoKGxh YmVsLW5vZGUgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYXJlbnQgIlxcYGxpbmtfbGFiZWxcXCciKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsYWJlbCAoaWYgbGFiZWwtbm9kZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRyaW0gKHRyZWVzaXQtbm9kZS10ZXh0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtbm9k ZSB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlxcWyIgIlxcXSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNp dC1ub2RlLXRleHQgbm9kZSB0KSkpKQorICAgICAgICAgICAgICAgICAgICAgIChvciAobWFya2Rv d24tdHMtLXJlc29sdmUtbGluay1yZWYgbGFiZWwpCisgICAgICAgICAgICAgICAgICAgICAgICAg IGxhYmVsKSkpKSkKKyAgICAgICAgKG1hcmtkb3duLXRzLS1tYWtlLWxpbmstYnV0dG9uCisgICAg ICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpIHVy bCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1hdXRvbGluayAobm9kZSBvdmVy cmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgYXV0b2xpbmsgTk9ERSAoVVJJIG9y IGVtYWlsKSBhcyBhIGNsaWNrYWJsZSBidXR0b24uCitGb3IgZW1haWwgYXV0b2xpbmtzLCB0aGUg VVJMIGlzIHByZWZpeGVkIHdpdGggXCJtYWlsdG86XCIuCitBbmdsZSBicmFja2V0IGRlbGltaXRl cnMgYXJlIGhpZGRlbiB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFu ZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJp ZGUnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisg ICAgICAgICAobm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAoaW5u ZXIgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcworICAgICAgICAgICAgICAgICAoMSsg bm9kZS1zdGFydCkgKDEtIG5vZGUtZW5kKSkpCisgICAgICAgICAodXJsIChpZiAoc3RyaW5nPSAo dHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImVtYWlsX2F1dG9saW5rIikKKyAgICAgICAgICAgICAg ICAgIChjb25jYXQgIm1haWx0bzoiIGlubmVyKQorICAgICAgICAgICAgICAgIGlubmVyKSkpCisg ICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisgICAgIG5vZGUtc3RhcnQgbm9kZS1l bmQgJ21hcmtkb3duLXRzLWxpbmsgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChtYXJrZG93bi10 cy0tbWFrZS1saW5rLWJ1dHRvbiBub2RlLXN0YXJ0IG5vZGUtZW5kIHVybCkKKyAgICAod2hlbiBt YXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3Rh cnQgKDErIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAn bWFya2Rvd24tdHMtLW1hcmt1cCkKKyAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAoMS0gbm9kZS1l bmQpIG5vZGUtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rv d24tdHMtLW1hcmt1cCkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVm LWxhYmVsIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBsaW5r IHJlZmVyZW5jZSBkZWZpbml0aW9uIGxhYmVsIE5PREUgYXMgYSBjbGlja2FibGUgYnV0dG9uLgor VGhlIGJyYWNrZXRzIGFuZCBjb2xvbiBhcmUgaGlkZGVuIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4K K09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0 LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQt bm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBu b2RlKSkKKyAgICAgICAgIChwYXJlbnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpCisgICAg ICAgICAoZGVzdC1ub2RlICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVudCAiXFxgbGlua19k ZXN0aW5hdGlvblxcJyIpKQorICAgICAgICAgKHVybCAod2hlbiBkZXN0LW5vZGUgKHRyZWVzaXQt bm9kZS10ZXh0IGRlc3Qtbm9kZSB0KSkpKQorICAgIDs7IEZvbnRpZnkgdGhlIGxhYmVsIHRleHQg KGluc2lkZSBicmFja2V0cykuCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisg ICAgICgxKyBub2RlLXN0YXJ0KSAoMS0gbm9kZS1lbmQpCisgICAgICdtYXJrZG93bi10cy1saW5r IG92ZXJyaWRlIHN0YXJ0IGVuZCkKKyAgICA7OyBNYWtlIGl0IGEgY2xpY2thYmxlIGJ1dHRvbi4K KyAgICAod2hlbiB1cmwKKyAgICAgIChtYXJrZG93bi10cy0tbWFrZS1saW5rLWJ1dHRvbiAoMSsg bm9kZS1zdGFydCkgKDEtIG5vZGUtZW5kKSB1cmwpKQorICAgIDs7IEhpZGUgIlsiIGJlZm9yZSBs YWJlbCBhbmQgIl06ICIgYmV0d2VlbiBsYWJlbCBhbmQgZGVzdGluYXRpb24uCisgICAgKHdoZW4g bWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0 YXJ0ICgxKyBub2RlLXN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUg J21hcmtkb3duLXRzLS1tYXJrdXApCisgICAgICAobGV0ICgoY29sb24tZW5kIChpZiBkZXN0LW5v ZGUgKHRyZWVzaXQtbm9kZS1zdGFydCBkZXN0LW5vZGUpCisgICAgICAgICAgICAgICAgICAgICAg ICAgKDErIG5vZGUtZW5kKSkpKQorICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKDEtIG5vZGUt ZW5kKSBjb2xvbi1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21h cmtkb3duLXRzLS1tYXJrdXApKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbGlu ay1yZWYtZGVzdGluYXRpb24gKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3QgXykKKyAgIkZv bnRpZnkgbGluayByZWZlcmVuY2UgZGVzdGluYXRpb24gTk9ERSBhbmQgaGlkZSB3aGVuIG1hcmt1 cCBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRv CitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKHRyZWVzaXQtZm9udGlmeS13 aXRoLW92ZXJyaWRlCisgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUt ZW5kIG5vZGUpCisgICAnbWFya2Rvd24tdHMtbGluay1kZXN0aW5hdGlvbiBvdmVycmlkZSBzdGFy dCBlbmQpCisgICh3aGVuIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgKHB1dC10ZXh0LXBy b3BlcnR5ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkK KyAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rvd24tdHMtLW1hcmt1cCkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxhdGV4LWJsb2NrLXZhbGlkLXAgKG5vZGUpCisgICJS ZXR1cm4gbm9uLW5pbCBpZiBsYXRleCBibG9jayBOT0RFIGlzIHdpdGhpbiBhIHNpbmdsZSBpbmxp bmUgc2NvcGUuCitUaGUgZ2xvYmFsIGlubGluZSBwYXJzZXIgY2FuIGNyZWF0ZSBmYWxzZSBgbGF0 ZXhfYmxvY2snIG1hdGNoZXMKK3NwYW5uaW5nIGFjcm9zcyBwYXJhZ3JhcGggYm91bmRhcmllcy4g IENoZWNrIHRoYXQgdGhlIG9wZW5pbmcgYW5kCitjbG9zaW5nIGRlbGltaXRlcnMgc2hhcmUgdGhl IHNhbWUgbWFya2Rvd24gYGlubGluZScgYW5jZXN0b3IuIgorICAobGV0ICgobm9kZS1zdGFydCAo dHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1lbmQgKDEtICh0cmVlc2l0 LW5vZGUtZW5kIG5vZGUpKSkpCisgICAgKHdoZW4tbGV0KiAoKG1kLXN0YXJ0ICh0cmVlc2l0LW5v ZGUtYXQgbm9kZS1zdGFydCAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAgIChtZC1lbmQgKHRy ZWVzaXQtbm9kZS1hdCBub2RlLWVuZCAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAgIChpbmxp bmUtc3RhcnQgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWQtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChu KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUt dHlwZSBuKSAiaW5saW5lIikpKSkKKyAgICAgICAgICAgICAgICAoaW5saW5lLWVuZCAodHJlZXNp dC1wYXJlbnQtdW50aWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWQtZW5kCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG4pCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAiaW5saW5lIikpKSkpCisg ICAgICAoZXEgKHRyZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtc3RhcnQpCisgICAgICAgICAgKHRy ZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtZW5kKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWxhdGV4LWJsb2NrIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAi Rm9udGlmeSBsYXRleCBibG9jayBOT0RFIGFuZCBoaWRlIGl0cyBkZWxpbWl0ZXJzIHdoZW4gbWFy a3VwIGlzIGhpZGRlbi4KK1NraXAgZm9udGlmaWNhdGlvbiBmb3IgZmFsc2UgbWF0Y2hlcyB0aGF0 IHNwYW4gYWNyb3NzIHBhcmFncmFwaCBib3VuZGFyaWVzLgorT1ZFUlJJREUsIFNUQVJULCBhbmQg RU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRl Jy4iCisgICh3aGVuIChtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCBub2RlKQorICAg ICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICdtYXJrZG93bi10cy1sYXRleCBv dmVycmlkZSBzdGFydCBlbmQpCisgICAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAg ICAgIChkb3RpbWVzIChpICh0cmVlc2l0LW5vZGUtY2hpbGQtY291bnQgbm9kZSkpCisgICAgICAg IChsZXQgKChjaGlsZCAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgaSkpKQorICAgICAgICAgICh3 aGVuIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgY2hpbGQpICJsYXRleF9zcGFuX2RlbGltaXRl ciIpCisgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKHRyZWVzaXQtbm9kZS1zdGFydCBj aGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBj aGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93 bi10cy0tbWFya3VwKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktYmFja3Ns YXNoLWVzY2FwZSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkg YmFja3NsYXNoIGVzY2FwZSBOT0RFLCBoaWRpbmcgdGhlIGJhY2tzbGFzaCB3aGVuIG1hcmt1cCBp cyBoaWRkZW4uCitTa2lwIGhpZGluZyBpbnNpZGUgYGxhdGV4X2Jsb2NrJyB3aGVyZSBiYWNrc2xh c2hlcyBhcmUgTGFUZVggc3ludGF4LgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNz ZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQg KChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChpbi1sYXRl eCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICJsYXRleF9ibG9jayIpKSkKKyAgICAodHJlZXNpdC1m b250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgbm9kZS1zdGFydCAoMSsgbm9kZS1zdGFydCkKKyAg ICAgJ21hcmtkb3duLXRzLWRlbGltaXRlciBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKHdoZW4g KGFuZCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCAobm90IGluLWxhdGV4KSkKKyAgICAgIChwdXQt dGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0ICgxKyBub2RlLXN0YXJ0KQorICAgICAgICAgICAgICAg ICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkpCisKKyhkZWZ2YXIg c2dtbC1jaGFyLW5hbWVzKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVudGl0eS1nZXQgIm9yZy9v cmctZW50aXRpZXMuZWwiKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHkgKHRl eHQpCisgICJEZWNvZGUgSFRNTCBlbnRpdHkgVEVYVCAoZS5nLiwgXCImYW1wO1wiKSB0byBpdHMg Y2hhcmFjdGVyIHN0cmluZy4KK1JldHVybiB0aGUgZGVjb2RlZCBzdHJpbmcsIG9yIG5pbCBpZiB0 aGUgZW50aXR5IGlzIHVua25vd24uIgorICAoY29uZAorICAgOzsgTnVtZXJpYyBoZXggJiN4MUY0 QTk7CisgICAoKHN0cmluZy1tYXRjaCAiXFxgJiN4XFwoW1s6eGRpZ2l0Ol1dK1xcKTtcXCciIHRl eHQpCisgICAgKGNoYXItdG8tc3RyaW5nIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcg MSB0ZXh0KSAxNikpKQorICAgOzsgTnVtZXJpYyBkZWNpbWFsICYjMTIzOworICAgKChzdHJpbmct bWF0Y2ggIlxcYCYjXFwoW1s6ZGlnaXQ6XV0rXFwpO1xcJyIgdGV4dCkKKyAgICAoY2hhci10by1z dHJpbmcgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAxIHRleHQpKSkpCisgICA7OyBO YW1lZCAmYW1wOyAmY29weTsgdmlhIG9yZy1lbnRpdGllcywgZmFsbCBiYWNrIHRvIHNnbWwtY2hh ci1uYW1lcworICAgKChzdHJpbmctbWF0Y2ggIlxcYCZcXChbWzphbG51bTpdXStcXCk7XFwnIiB0 ZXh0KQorICAgIChsZXQgKChuYW1lIChtYXRjaC1zdHJpbmcgMSB0ZXh0KSkpCisgICAgICAocmVx dWlyZSAnb3JnLWVudGl0aWVzKQorICAgICAgKGlmLWxldCogKChlbnRyeSAob3JnLWVudGl0eS1n ZXQgbmFtZSkpCisgICAgICAgICAgICAgICAgKHV0ZjggKG50aCA2IGVudHJ5KSkpCisgICAgICAg ICAgdXRmOAorICAgICAgICAocmVxdWlyZSAnc2dtbC1tb2RlKQorICAgICAgICAod2hlbi1sZXQq ICgoY29kZSAoc2VxLXBvc2l0aW9uIHNnbWwtY2hhci1uYW1lcyBuYW1lICMnZXF1YWwpKSkKKyAg ICAgICAgICAoY2hhci10by1zdHJpbmcgY29kZSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1mb250aWZ5LWVudGl0eSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZv bnRpZnkgZW50aXR5IE5PREUgYW5kIHNob3cgaXRzIGRlY29kZWQgdmFsdWUgd2hlbiBtYXJrdXAg aXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0 bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQgKChub2RlLXN0YXJ0 ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1u b2RlLWVuZCBub2RlKSkKKyAgICAgICAgKGZhY2UgKGlmIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5 cGUgbm9kZSkgImVudGl0eV9yZWZlcmVuY2UiKQorICAgICAgICAgICAgICAgICAgJ21hcmtkb3du LXRzLWVudGl0eS1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtbnVtZXJp Yy1jaGFyYWN0ZXItcmVmZXJlbmNlKSkpCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJy aWRlIG5vZGUtc3RhcnQgbm9kZS1lbmQgZmFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKGlmIG1hcmtkb3duLXRzLWhpZGUtbWFy a3VwCisgICAgICAgICh3aGVuLWxldCogKChkZWNvZGVkIChtYXJrZG93bi10cy0tZGVjb2RlLWVu dGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IG5v ZGUgdCkpKQorICAgICAgICAgICAgICAgICAgICAoKGNoYXItZGlzcGxheWFibGUtcCAoYXJlZiBk ZWNvZGVkIDApKSkpCisgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3RhcnQgbm9k ZS1lbmQgJ2Rpc3BsYXkgZGVjb2RlZCkpCisgICAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyBu b2RlLXN0YXJ0IG5vZGUtZW5kICcoZGlzcGxheSBuaWwpKSkpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtLXJlc29sdmUtZGlzcGxheS12YWx1ZSAodmFsKQorICAiUmVzb2x2ZSBWQUwsIGEgY29ucyAo UFJFRkVSUkVEIC4gRkFMTEJBQ0spLCB0byBhIGRpc3BsYXlhYmxlIHZhbHVlLgorUmV0dXJuIFBS RUZFUlJFRCBpZiBpdHMgZmlyc3QgY2hhcmFjdGVyIHBhc3NlcyBgY2hhci1kaXNwbGF5YWJsZS1w JywKK290aGVyd2lzZSByZXR1cm4gRkFMTEJBQ0suICBSZXR1cm4gbmlsIGlmIFZBTCBpcyBuaWwu IgorICAod2hlbiB2YWwKKyAgICAobGV0KiAoKHByZWZlcnJlZCAoY2FyIHZhbCkpCisgICAgICAg ICAgIChjaCAoaWYgKGNoYXJhY3RlcnAgcHJlZmVycmVkKSBwcmVmZXJyZWQgKGFyZWYgcHJlZmVy cmVkIDApKSkpCisgICAgICAoaWYgKGNoYXItZGlzcGxheWFibGUtcCBjaCkgKGNhciB2YWwpIChj ZHIgdmFsKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94IChub2Rl IG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSB0YXNrIGxpc3QgY2hlY2ti b3ggTk9ERSwgc2hvdyBhIFVuaWNvZGUgc3ltYm9sIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK09W RVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZv bnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9k ZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2Rl KSkKKyAgICAgICAgIChjaGVja2VkIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgInRh c2tfbGlzdF9tYXJrZXJfY2hlY2tlZCIpKQorICAgICAgICAgKGZhY2UgKGlmIGNoZWNrZWQgJ21h cmtkb3duLXRzLXRhc2stY2hlY2tlZAorICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtdGFz ay11bmNoZWNrZWQpKQorICAgICAgICAgKHZhbHVlIChpZiBjaGVja2VkCisgICAgICAgICAgICAg ICAgICAgIG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3gKKyAgICAgICAgICAgICAgICAgIG1h cmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveCkpCisgICAgICAgICAocmVwbGFjZW1lbnQKKyAg ICAgICAgICAoY29uZCAoKGVxIHZhbHVlICdpY29uKQorICAgICAgICAgICAgICAgICAoaWNvbi1z dHJpbmcgKGlmIGNoZWNrZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFy a2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveC1pY29uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2tib3gtaWNvbikpKQorICAgICAgICAg ICAgICAgICh0IChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVlIHZhbHVlKSkpKQor ICAgICAgICAgOzsgSWYgYGljb24tc3RyaW5nJyByZXR1cm5lZCBhbiBpbWFnZSwgaXRzIGBkaXNw bGF5JyBwcm9wZXJ0eQorICAgICAgICAgOzsgb24gY2hhciAwIGhvbGRzIHRoZSBhY3R1YWwgaW1h Z2Ugc3BlYzsgbmVzdGVkIGBkaXNwbGF5JworICAgICAgICAgOzsgcHJvcHMgYXJlIG5vdCBob25v cmVkIHdoZW4gYSBzdHJpbmcgaXMgdGhlIHZhbHVlIG9mIGEKKyAgICAgICAgIDs7IGBkaXNwbGF5 JyB0ZXh0LXByb3BlcnR5LCBzbyBhcHBseSB0aGUgc3BlYyBkaXJlY3RseS4KKyAgICAgICAgIChk aXNwbGF5LXNwZWMKKyAgICAgICAgICAob3IgKGFuZCAoZXEgdmFsdWUgJ2ljb24pIHJlcGxhY2Vt ZW50CisgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5IDAgJ2Rpc3BsYXkgcmVw bGFjZW1lbnQpKQorICAgICAgICAgICAgICByZXBsYWNlbWVudCkpKQorICAgICh0cmVlc2l0LWZv bnRpZnktd2l0aC1vdmVycmlkZSBub2RlLXN0YXJ0IG5vZGUtZW5kIGZhY2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChpZiAoYW5k IG1hcmtkb3duLXRzLWhpZGUtbWFya3VwIHJlcGxhY2VtZW50CisgICAgICAgICAgICAgKG9yIChl cSB2YWx1ZSAnaWNvbikKKyAgICAgICAgICAgICAgICAgKGNoYXItZGlzcGxheWFibGUtcCAoYXJl ZiByZXBsYWNlbWVudCAwKSkpKQorICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgbm9kZS1zdGFy dCBub2RlLWVuZCAnZGlzcGxheSBkaXNwbGF5LXNwZWMpCisgICAgICAocmVtb3ZlLXRleHQtcHJv cGVydGllcyBub2RlLXN0YXJ0IG5vZGUtZW5kICcoZGlzcGxheSBuaWwpKSkpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWZvbnRpZnktaGFyZC1saW5lLWJyZWFrIChub2RlIG92ZXJyaWRlIHN0YXJ0 IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBoYXJkIGxpbmUgYnJlYWsgTk9ERTsgc2hvdyBhIFVu aWNvZGUgc3ltYm9sIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK0EgYmFja3NsYXNoIGJyZWFrIGdl dHMgYG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gnIChvciBpdHMKK2AtaGlk ZGVuJyB2YXJpYW50IHdoZW4gbWFya3VwIGlzIGhpZGRlbik7IGEgdHJhaWxpbmctc3BhY2VzIGJy ZWFrIGdldHMKK2BtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UnIChvciBgLWhpZGRl bicpLiAgV2hlbiBoaWRkZW4sIGEKK2JhY2tzbGFzaCBicmVhayBpcyByZXBsYWNlZCBieSBhIHNp bmdsZSBgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrJworZ2x5cGg7IGEgdHJhaWxpbmctc3Bh Y2VzIGJyZWFrIHJlcGxhY2VzIGVhY2ggc3BhY2Ugd2l0aCB0aGUgZ2x5cGgsIHNvIHRoZSBydW4K K29mIHBpbGNyb3dzIGZpbGxzIHRoZSBsaW5lIHVwIHRvIHRoZSBuZXdsaW5lLgorT1ZFUlJJREUs IFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13 aXRoLW92ZXJyaWRlJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0 IG5vZGUpKQorICAgICAgICAgKG5vZGUtZW5kICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisg ICAgICAgICAodGV4dCAgICAgICAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSB0KSkKKyAgICAgICAg IChiYWNrc2xhc2ggIChhbmQgKD4gKGxlbmd0aCB0ZXh0KSAwKSAoZXEgKGFyZWYgdGV4dCAwKSA/ XFwpKSkKKyAgICAgICAgIDs7IERldGVybWluZSB0aGUgYWN0dWFsIHJhbmdlIHRvIGZvbnRpZnkg YW5kIHJlcGxhY2UuICBUaGUKKyAgICAgICAgIDs7IGhhcmRfbGluZV9icmVhayBub2RlIG1heSBu b3QgY292ZXIgdGhlIGZ1bGwgcnVuIG9mIHRyYWlsaW5nCisgICAgICAgICA7OyBzcGFjZXMsIHNv IHdhbGsgYmFjayBmcm9tIGVuZC1vZi1saW5lIG91cnNlbHZlcyBmb3IgdGhlCisgICAgICAgICA7 OyBzcGFjZXMgdmFyaWFudC4KKyAgICAgICAgIChyZWdpb24gICAgIChpZiBiYWNrc2xhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAoY29ucyBub2RlLXN0YXJ0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGlmIChhbmQgKD4gbm9kZS1lbmQgbm9kZS1zdGFydCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGNoYXItYmVmb3JlIG5vZGUtZW5k KSA/XG4pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS0gbm9kZS1lbmQp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLWVuZCkpCisgICAgICAgICAg ICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgIChn b3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoZW9s IChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMg KHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgZW9sKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFy cy1iYWNrd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiIChsaW5l LWJlZ2lubmluZy1wb3NpdGlvbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlb2wpKSkpKQorICAg ICAgICAgKHJlZ2lvbi1zdGFydCAoY2FyIHJlZ2lvbikpCisgICAgICAgICAocmVnaW9uLWVuZCAg IChjZHIgcmVnaW9uKSkKKyAgICAgICAgIChmYWNlICAgICAgIChjb25kCisgICAgICAgICAgICAg ICAgICAgICAgKChhbmQgYmFja3NsYXNoIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwKQorICAgICAg ICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaC1o aWRkZW4pCisgICAgICAgICAgICAgICAgICAgICAgKGJhY2tzbGFzaCAnbWFya2Rvd24tdHMtaGFy ZC1saW5lLWJyZWFrLWJhY2tzbGFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24t dHMtaGlkZS1tYXJrdXAKKyAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWhhcmQt bGluZS1icmVhay1zcGFjZS1oaWRkZW4pCisgICAgICAgICAgICAgICAgICAgICAgKHQgJ21hcmtk b3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZSkpKSkKKyAgICAodHJlZXNpdC1mb250aWZ5LXdp dGgtb3ZlcnJpZGUgcmVnaW9uLXN0YXJ0IHJlZ2lvbi1lbmQgZmFjZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgOzsgQWx3YXlzIHN0 YXJ0IGJ5IGNsZWFyaW5nIGFueSBzdGFsZSBgZGlzcGxheScgcHJvcGVydHkuICBXZSBuZXZlcgor ICAgIDs7IHNwYW4gdGhlIHRyYWlsaW5nIG5ld2xpbmUgd2l0aCBgZGlzcGxheScgKGl0IGNvbmZ1 c2VzCisgICAgOzsgcmVkaXNwbGF5J3MgY3Vyc29yIHBsYWNlbWVudCksIGFuZCB3ZSBvbmx5IHBh aW50IGEgc2luZ2xlCisgICAgOzsgY29tYmluZWQgc3RyaW5nIG9udG8gdGhlIGZpcnN0IGNoYXJh Y3RlciBvZiB0aGUgcnVuLCBsZWF2aW5nCisgICAgOzsgdGhlIHJlc3Qgb2YgdGhlIG1hcmt1cCBh bG9uZS4KKyAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyByZWdpb24tc3RhcnQgcmVnaW9uLWVu ZCAnKGRpc3BsYXkgbmlsKSkKKyAgICAod2hlbiBtYXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAg ICAgKGxldCogKChzcGVjIChpZiBiYWNrc2xhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgKG1h cmtkb3duLXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAg IG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpCisgICAgICAgICAgICAgICAg ICAgICBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UpKQorICAgICAgICAgICAgIChz dHIgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAoKG51bGwgc3BlYykgbmlsKQorICAgICAgICAg ICAgICAgICAgICgoY2hhcmFjdGVycCBzcGVjKSAoY2hhci10by1zdHJpbmcgc3BlYykpCisgICAg ICAgICAgICAgICAgICAgKChzdHJpbmdwIHNwZWMpIHNwZWMpCisgICAgICAgICAgICAgICAgICAg KChmdW5jdGlvbnAgc3BlYykKKyAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc3BlYyAoLSBy ZWdpb24tZW5kIHJlZ2lvbi1zdGFydCkpKSkpKQorICAgICAgICAod2hlbiAoYW5kIChzdHJpbmdw IHN0cikKKyAgICAgICAgICAgICAgICAgICAoPiAobGVuZ3RoIHN0cikgMCkKKyAgICAgICAgICAg ICAgICAgICAoY2hhci1kaXNwbGF5YWJsZS1wIChhcmVmIHN0ciAwKSkpCisgICAgICAgICAgKHB1 dC10ZXh0LXByb3BlcnR5IHJlZ2lvbi1zdGFydCAoMSsgcmVnaW9uLXN0YXJ0KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSBzdHIpCisgICAgICAgICAgOzsgRm9yIHRoZSB0 cmFpbGluZy1zcGFjZXMgdmFyaWFudCwgaGlkZSB0aGUgcmVtYWluaW5nCisgICAgICAgICAgOzsg c3BhY2VzIGluIHRoZSBydW4gc28gdGhlIGxpbmUgZG9lc24ndCBlbmQgd2l0aCBsZWZ0b3Zlcgor ICAgICAgICAgIDs7IHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIHN1YnN0aXR1dGVkIGdseXBoLiAgRWFj aCBwb3NpdGlvbgorICAgICAgICAgIDs7IGdldHMgaXRzIG93biBlbXB0eS1zdHJpbmcgYGRpc3Bs YXknIHNvIGN1cnNvciBwbGFjZW1lbnQKKyAgICAgICAgICA7OyBzdGF5cyB1bmFtYmlndW91cy4K KyAgICAgICAgICAodW5sZXNzIGJhY2tzbGFzaAorICAgICAgICAgICAgKGxldCAoKGkgKDErIHJl Z2lvbi1zdGFydCkpKQorICAgICAgICAgICAgICAod2hpbGUgKDwgaSByZWdpb24tZW5kKQorICAg ICAgICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBpICgxKyBpKSAnZGlzcGxheSAiIikKKyAg ICAgICAgICAgICAgICAoc2V0cSBpICgxKyBpKSkpKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtLWZvbnRpZnktdGhlbWF0aWMtYnJlYWsgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0 IF8pCisgICJGb250aWZ5IHRoZW1hdGljIGJyZWFrIE5PREUgYW5kIHNob3cgYSBsaW5lIHdoZW4g bWFya3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRo cm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0ICgobm9k ZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1lbmQgKHRy ZWVzaXQtbm9kZS1lbmQgbm9kZSkpKQorICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlk ZSBub2RlLXN0YXJ0IG5vZGUtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdtYXJrZG93bi10cy10aGVtYXRpYy1icmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKGxldCAoKGNoYXIgKG1hcmtkb3duLXRz LS1yZXNvbHZlLWRpc3BsYXktdmFsdWUKKyAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtdGhl bWF0aWMtYnJlYWstY2hhcmFjdGVyKSkpCisgICAgICAoaWYgKGFuZCBtYXJrZG93bi10cy1oaWRl LW1hcmt1cCBjaGFyIChjaGFyLWRpc3BsYXlhYmxlLXAgY2hhcikpCisgICAgICAgICAgKGxldCog KChjb2wgKHNhdmUtZXhjdXJzaW9uIChnb3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCisgICAgICAgICAg ICAgICAgIDs7IFNwYW4gaWYgdGhlIGZhY2UgaGFzIG5vbi1uaWwgOmV4dGVuZC4KKyAgICAgICAg ICAgICAgICAgKHNwYW4tbGVuZ3RoIChpZiAoZmFjZS1hdHRyaWJ1dGUgJ21hcmtkb3duLXRzLXRo ZW1hdGljLWJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpleHRlbmQgbmlsICdkZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgtICh3aW5kb3ctYm9keS13aWR0aCkgY29sKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAxMikpKQorICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3Rh cnQgbm9kZS1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1ha2Utc3RyaW5nIHNwYW4tbGVuZ3RoIGNoYXIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJcbiIpKSkKKyAgICAgICAgKHJlbW92ZS10ZXh0LXByb3BlcnRp ZXMgbm9kZS1zdGFydCBub2RlLWVuZCAnKGRpc3BsYXkgbmlsKSkpKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tZm9udGlmeS1jb2RlLWJsb2NrIChub2RlIF9vdmVycmlkZSBfc3RhcnQgX2VuZCAm cmVzdCBfKQorICAiRm9udGlmeSBjb2RlIGJsb2NrIGNvbnRlbnQgTk9ERSB3aXRoIGEgYmFja2dy b3VuZCBvdmVybGF5LgorVXNlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1hcmt1cC1oaWRkZW4n IHdoZW4gbWFya3VwIGlzIGhpZGRlbiwKK2BtYXJrZG93bi10cy1jb2RlLWJsb2NrJyBvdGhlcndp c2UuICBVc2UgYW4gb3ZlcmxheSBzbyB0aGUKK2JhY2tncm91bmQgbGF5ZXJzIGl0c2VsZiBiZWhp bmQgbGFuZ3VhZ2Utc3BlY2lmaWMgZm9udGlmaWNhdGlvbi4KK1RoZSBvdmVybGF5IGFsc28gc3Rv cmVzIHRoZSBjb2RlIGJsb2NrIGxhbmd1YWdlIGFuZCBtb2RlIGFzCitwcm9wZXJ0aWVzIGBtYXJr ZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlJyBhbmQKK2BtYXJrZG93bi10cy1jb2RlLWJsb2Nr LW1vZGUnLCBhY2Nlc3NpYmxlIHZpYQorYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2Ut YXQnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAg ICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAg ICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKQorICAgICAgICAgKG5v ZGUtZW5kIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo dHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJz LWJhY2t3YXJkICIgXHQiKQorICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAg ICAoZmFjZSAoaWYgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgICAgICAgICAgICAgICAn bWFya2Rvd24tdHMtY29kZS1ibG9jay1tYXJrdXAtaGlkZGVuCisgICAgICAgICAgICAgICAgICdt YXJrZG93bi10cy1jb2RlLWJsb2NrKSkKKyAgICAgICAgIChsYW5nIChtYXJrZG93bi10cy0tbGFu Z3VhZ2UtYXQtbm9kZSBub2RlKSkKKyAgICAgICAgIChtb2RlICh3aGVuIGxhbmcKKyAgICAgICAg ICAgICAgICAgKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgbGFuZykpKQor ICAgICAgICAgKGV4aXN0aW5nIChzZXEtZmluZCAobGFtYmRhIChvdikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAob3ZlcmxheS1nZXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2sp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheXMtYXQgbm9kZS1zdGFydCkp KSkKKyAgICAoaWYgZXhpc3RpbmcKKyAgICAgICAgKHByb2duCisgICAgICAgICAgKG1vdmUtb3Zl cmxheSBleGlzdGluZyBub2RlLXN0YXJ0IG5vZGUtZW5kKQorICAgICAgICAgIChvdmVybGF5LXB1 dCBleGlzdGluZyAnZmFjZSBmYWNlKQorICAgICAgICAgIChvdmVybGF5LXB1dCBleGlzdGluZyAn bWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSBsYW5nKQorICAgICAgICAgIChvdmVybGF5 LXB1dCBleGlzdGluZyAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlIG1vZGUpKQorICAgICAg KGxldCAoKG92IChtYWtlLW92ZXJsYXkgbm9kZS1zdGFydCBub2RlLWVuZCBuaWwgdCBuaWwpKSkK KyAgICAgICAgOzsgTWFya2VycyBuZWVkIHRvIGJlIHNldCBvbmx5IG9uY2UuCisgICAgICAgIChv dmVybGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1iZWctbWFya2VyIChzZXQtbWFya2VyICht YWtlLW1hcmtlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbm9kZS1zdGFydCkpCisgICAgICAgIChvdmVybGF5LXB1dCBv diAnbWFya2Rvd24tdHMtY29kZS1lbmQtbWFya2VyIChzZXQtbWFya2VyIChtYWtlLW1hcmtlcikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbm9kZS1lbmQpKQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRz LWNvZGUtYmxvY2sgdCkKKyAgICAgICAgKG92ZXJsYXktcHV0IG92ICdmYWNlIGZhY2UpCisgICAg ICAgIChvdmVybGF5LXB1dCBvdiAncHJpb3JpdHkgJyhuaWwgLiAxMCkpCisgICAgICAgIChvdmVy bGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSBsYW5nKQorICAgICAg ICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZSBtb2RlKQorICAg ICAgICAob3ZlcmxheS1wdXQgb3YgJ2V2YXBvcmF0ZSB0KSkpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLWF0LWNvZGUtYmxvY2stcCAoJm9wdGlvbmFsIHBvcykKKyAgIlJldHVybiBub24gbmlsIGlm IHBvaW50IGlzIGluIGEgY29kZSBibG9jay4KK0lmIFBPUyBpcyBuaWwsIHVzZSBwb2ludC4iCisg IChnZXQtY2hhci1wcm9wZXJ0eSAob3IgcG9zIChwb2ludCkpICdtYXJrZG93bi10cy1jb2RlLWJs b2NrKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2UtYXQgKCZvcHRp b25hbCBwb3MpCisgICJSZXR1cm4gdGhlIGxhbmd1YWdlIHN5bWJvbCBvZiB0aGUgY29kZSBibG9j ayBhdCBQT1MuCitJZiBQT1MgaXMgbmlsLCB1c2UgcG9pbnQuICBSZXR1cm5zIG5pbCBpZiBQT1Mg aXMgbm90IGluc2lkZSBhIGZlbmNlZAorY29kZSBibG9jay4gIFRoaXMgd29ya3MgcmVnYXJkbGVz cyBvZiB3aGV0aGVyIGEgZ3Vlc3QgdHJlZS1zaXR0ZXIgcGFyc2VyCitpcyBhY3RpdmUsIHNpbmNl IHRoZSBsYW5ndWFnZSBpcyBzdG9yZWQgb24gdGhlIGNvZGUgYmxvY2sgb3ZlcmxheSBieSB0aGUK K2hvc3QgcGFyc2VyJ3MgZm9udGlmaWNhdGlvbi4iCisgIChnZXQtY2hhci1wcm9wZXJ0eSAob3Ig cG9zIChwb2ludCkpICdtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1hdCAoJm9wdGlvbmFsIHBvcykKKyAgIlJldHVy biB0aGUgbWFqb3IgbW9kZSBmb3IgdGhlIGNvZGUgYmxvY2sgYXQgUE9TLgorSWYgUE9TIGlzIG5p bCwgdXNlIHBvaW50LiAgUmV0dXJucyBuaWwgaWYgUE9TIGlzIG5vdCBpbnNpZGUgYSBmZW5jZWQK K2NvZGUgYmxvY2sgb3IgaWYgdGhlIGxhbmd1YWdlIGhhcyBubyByZWNvZ25pemVkIG1vZGUuIgor ICAod2hlbiAobWFya2Rvd24tdHMtYXQtY29kZS1ibG9jay1wIHBvcykKKyAgICAob3IgKGdldC1j aGFyLXByb3BlcnR5IChvciBwb3MgKHBvaW50KSkgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9k ZSkKKyAgICAgICAgbWFya2Rvd24tdHMtZGVmYXVsdC1jb2RlLWJsb2NrLW1vZGUpKSkKKworKGRl ZnVuIG1hcmtkb3duLXRzLS1ob3N0LXJhbmdlcy1ub3RpZmllciAocmFuZ2VzIF9wYXJzZXIpCisg ICJQcnVuZSBzdGFsZSBjb2RlIGJsb2NrIG92ZXJsYXlzIGFmdGVyIHRoZSBob3N0IHBhcnNlciBy ZXBhcnNlcy4KK1JBTkdFUyBpcyBhIGxpc3Qgb2YgKFNUQVJUIC4gRU5EKSBjb25zIGNlbGxzIG1h cmtpbmcgcmVnaW9ucyB3aGVyZQordGhlIG1hcmtkb3duIHBhcnNlIHRyZWUgY2hhbmdlZC4gIEZv ciBlYWNoIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrJworb3ZlcmxheSBpbnRlcnNlY3RpbmcgYSBj aGFuZ2VkIHJhbmdlLCB2ZXJpZnkgdGhhdCBhIGNvbnRhaW5pbmcKK2BmZW5jZWRfY29kZV9ibG9j aycgbm9kZSBzdGlsbCBleGlzdHMgaW4gdGhlIGhvc3QgdHJlZS4gIElmIG5vdCwKK3RoZSBmZW5j ZXMgd2VyZSBkZWxldGVkLCBzbyBkZWxldGUgdGhlIG92ZXJsYXkgdG8gYXZvaWQgcnVubmluZwor Y29tbWFuZHMgaW4gYSBzdGFsZSBibG9jayBjb250ZXh0LiIKKyAgKGRvbGlzdCAocmFuZ2UgcmFu Z2VzKQorICAgIChsZXQgKChiZWcgKGNhciByYW5nZSkpCisgICAgICAgICAgKGVuZCAoY2RyIHJh bmdlKSkpCisgICAgICAoZG9saXN0IChvdiAob3ZlcmxheXMtaW4gYmVnIGVuZCkpCisgICAgICAg ICh3aGVuIChvdmVybGF5LWdldCBvdiAnbWFya2Rvd24tdHMtY29kZS1ibG9jaykKKyAgICAgICAg ICAobGV0KiAoKG92LXN0YXJ0IChvdmVybGF5LXN0YXJ0IG92KSkKKyAgICAgICAgICAgICAgICAg KG5vZGUgKGFuZCBvdi1zdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0 LW5vZGUtYXQgb3Ytc3RhcnQgJ21hcmtkb3duKSkpKQorICAgICAgICAgICAgKHVubGVzcyAoYW5k IG5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSAiXFxgZmVuY2VkX2NvZGVfYmxvY2tcXCciIHQp KQorICAgICAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgb3YpKSkpKSkpKQorCis7OzsgSW1hZ2Ug aGFuZGxpbmc6CisKKyhkZWZ1biBtYXJrZG93bi10cy0taW1hZ2UtYWxvbmUtb24tbGluZS1wIChu b2RlKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgaW1hZ2UgTk9ERSBpcyB0aGUgb25seSBjb250ZW50 IG9uIGl0cyBsaW5lLgorV2hpdGVzcGFjZSwgYmxvY2sgcXVvdGUgbWFya2VycyAoYD4nKSwgYW5k IGxpc3QgbWFya2VycworXChgLScsIGAqJywgYCsnLCBgMS4nKSBiZWZvcmUgdGhlIGltYWdlIGFy ZSBpZ25vcmVkLiIKKyAgKGxldCAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2Rl KSkKKyAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAgICAoc2F2 ZS1leGN1cnNpb24KKyAgICAgIChnb3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgIChsZXQgKChi b2wgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkKKyAgICAgICAgICAgIChlb2wgKGxpbmUtZW5k LXBvc2l0aW9uKSkpCisgICAgICAgIDs7IEJlZm9yZSB0aGUgaW1hZ2U6IG9ubHkgYmxvY2sgcXVv dGUgbWFya2Vycywgd2hpdGVzcGFjZSwKKyAgICAgICAgOzsgYW5kIGFuIG9wdGlvbmFsIGxpc3Qg bWFya2VyIGFyZSBhbGxvd2VkLgorICAgICAgICAoYW5kIChzdHJpbmctbWF0Y2gtcAorICAgICAg ICAgICAgICAocnggYm9zCisgICAgICAgICAgICAgICAgICAoemVyby1vci1tb3JlIChhbnkgIj4g XHQiKSkKKyAgICAgICAgICAgICAgICAgIChvcHRpb25hbCAob3IgKHNlcSAoYW55ICItKisiKSAi ICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEgKG9uZS1vci1tb3JlIGRp Z2l0KSAoYW55ICIuKSIgKSAiICIpKSkKKyAgICAgICAgICAgICAgICAgIGVvcykKKyAgICAgICAg ICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBib2wgbm9kZS1zdGFydCkpCisg ICAgICAgICAgICAgOzsgQWZ0ZXIgdGhlIGltYWdlOiBvbmx5IHRyYWlsaW5nIHdoaXRlc3BhY2Ug YWxsb3dlZC4KKyAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoLXAKKyAgICAgICAgICAgICAgKHJ4 IGJvcyAoemVyby1vci1tb3JlIChhbnkgIiBcdCIpKSBlb3MpCisgICAgICAgICAgICAgIChidWZm ZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgbm9kZS1lbmQgZW9sKSkpKSkpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWZvbnRpZnktaW1hZ2UgKG5vZGUgX292ZXJyaWRlIF9zdGFydCBfZW5kICZy ZXN0IF8pCisgICJTaG93IGFuIGlubGluZSBpbWFnZSBhdCBOT0RFLgorV2hlbiBgbWFya2Rvd24t dHMtaW5saW5lLWltYWdlcycgaXMgbm9uLW5pbCwgZGlzcGxheSB0aGUgaW1hZ2UuCitJZiB0aGUg aW1hZ2UgbGluayBpcyB0aGUgb25seSBjb250ZW50IG9uIGl0cyBsaW5lLCBkaXNwbGF5IHRoZQor aW1hZ2UgYmVsb3cgdGhlIGxpbmsuICBJZiB0aGUgaW1hZ2UgaXMgaW5saW5lIHdpdGhpbiBhIHBh cmFncmFwaCwKK2Rpc3BsYXkgaXQgcmlnaHQgYWZ0ZXIgdGhlIGxpbmsgdGV4dC4KK1JlbW90ZSBp bWFnZXMgYXJlIGNvbnRyb2xsZWQgYnkKK2BtYXJrZG93bi10cy1kaXNwbGF5LXJlbW90ZS1pbmxp bmUtaW1hZ2VzJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5v ZGUpKQorICAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQorICAgICAg ICAgKGVvbCAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciBub2RlLWVuZCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICAgKHNlYXJj aC1lbmQgKG1pbiAoMSsgZW9sKSAocG9pbnQtbWF4KSkpKQorICAgIDs7IEFsd2F5cyBjbGVhciBz dGFsZSBvdmVybGF5cyBmb3IgdGhpcyBub2RlJ3MgcmFuZ2UuCisgICAgKGRvbGlzdCAob3YgKG92 ZXJsYXlzLWluIG5vZGUtc3RhcnQgc2VhcmNoLWVuZCkpCisgICAgICAod2hlbiAoYW5kIChvdmVy bGF5LWdldCBvdiAnbWFya2Rvd24tdHMtaW1hZ2UpCisgICAgICAgICAgICAgICAgICg+PSAob3Zl cmxheS1zdGFydCBvdikgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgKDw9IChvdmVybGF5 LWVuZCBvdikgc2VhcmNoLWVuZCkpCisgICAgICAgIChkZWxldGUtb3ZlcmxheSBvdikpKQorICAg ICh3aGVuIChhbmQgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcworICAgICAgICAgICAgICAgOzsg RG9uJ3QgY3JlYXRlIGltYWdlIG92ZXJsYXlzIGZvciBub2RlcyBpbnNpZGUKKyAgICAgICAgICAg ICAgIDs7IGZvbGRlZCAob3V0bGluZS1pbnZpc2libGUpIGhlYWRpbmdzLCBzaW5jZSB0aGUKKyAg ICAgICAgICAgICAgIDs7IGltYWdlcyB3b3VsZG4ndCBiZSB2aXNpYmxlIGFuZCBjb3VsZCBpbnRl cmZlcmUKKyAgICAgICAgICAgICAgIDs7IHdpdGggdGhlIGZvbGRlZCBkaXNwbGF5LgorICAgICAg ICAgICAgICAgKG5vdCAobWFya2Rvd24tdHMtLW91dGxpbmUtaW52aXNpYmxlLXAgbm9kZS1zdGFy dCkpKQorICAgICAgKGxldCogKChkZXN0ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIG5vZGUgIlxc YGxpbmtfZGVzdGluYXRpb25cXCciKSkKKyAgICAgICAgICAgICAodXJsIChhbmQgZGVzdCAodHJl ZXNpdC1ub2RlLXRleHQgZGVzdCB0KSkpCisgICAgICAgICAgICAgKHJlbW90ZXAgKGFuZCB1cmwg KHN0cmluZy1tYXRjaC1wICJcXGBodHRwcz86Ly8iIHVybCkpKQorICAgICAgICAgICAgIChkaXNw bGF5YWJsZQorICAgICAgICAgICAgICAod2hlbiB1cmwKKyAgICAgICAgICAgICAgICAoaWYgcmVt b3RlcAorICAgICAgICAgICAgICAgICAgICAod2hlbiAoZXEgbWFya2Rvd24tdHMtZGlzcGxheS1y ZW1vdGUtaW5saW5lLWltYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rvd25s b2FkKQorICAgICAgICAgICAgICAgICAgICAgIChpZ25vcmUtZXJyb3JzCisgICAgICAgICAgICAg ICAgICAgICAgICAocmVxdWlyZSAndXJsLWhhbmRsZXJzKQorICAgICAgICAgICAgICAgICAgICAg ICAgKHdpdGgtd29yay1idWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1idWZm ZXItbXVsdGlieXRlIG5pbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHVybC1pbnNlcnQt ZmlsZS1jb250ZW50cyB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Ry aW5nKSkpKQorICAgICAgICAgICAgICAgICAgKGxldCAoKGZpbGUgKGV4cGFuZC1maWxlLW5hbWUg dXJsKSkpCisgICAgICAgICAgICAgICAgICAgIChhbmQgKG5vdCAoZmlsZS1yZW1vdGUtcCBmaWxl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1leGlzdHMtcCBmaWxlKQorICAgICAg ICAgICAgICAgICAgICAgICAgIChpbWFnZS1zdXBwb3J0ZWQtZmlsZS1wIGZpbGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgZmlsZSkpKSkpCisgICAgICAgICAgICAgKG1heC13IChhbmQgZGlz cGxheWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGVxIG1hcmtkb3duLXRzLWlt YWdlLW1heC13aWR0aCAnd2luZG93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2lu ZG93LWJvZHktd2lkdGggbmlsIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93 bi10cy1pbWFnZS1tYXgtd2lkdGgpKSkKKyAgICAgICAgICAgICAoaW1nIChhbmQgbWF4LXcKKyAg ICAgICAgICAgICAgICAgICAgICAgKGNyZWF0ZS1pbWFnZSBkaXNwbGF5YWJsZSBuaWwgcmVtb3Rl cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXgtd2lkdGggbWF4LXcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2NhbGUgMSkpKSkKKyAgICAg ICAgKHdoZW4gaW1nCisgICAgICAgICAgKGxldCogKChhbG9uZSAobWFya2Rvd24tdHMtLWltYWdl LWFsb25lLW9uLWxpbmUtcCBub2RlKSkKKyAgICAgICAgICAgICAgICAgKHN0ciAoaWYgYWxvbmUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiXG4iIChwcm9wZXJ0aXplICIgIiAn ZGlzcGxheSBpbWcpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUgIiAiICdk aXNwbGF5IGltZykpKQorICAgICAgICAgICAgICAgICAob3YgKG1ha2Utb3ZlcmxheSAoMS0gbm9k ZS1lbmQpIG5vZGUtZW5kIG5pbCB0IG5pbCkpKQorICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92 ICdtYXJrZG93bi10cy1pbWFnZSB0KQorICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdhZnRl ci1zdHJpbmcgc3RyKQorICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdldmFwb3JhdGUgdCkp KSkpKSkKKworOzs7IFVSTC9VUkkgaGFuZGxpbmc6CisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtLWJh cmUtdXJsLXJlZ2V4cCBnb3RvLWFkZHJlc3MtdXJsLXJlZ2V4cAorICAiUmVnZXhwIG1hdGNoaW5n IGJhcmUgVVJMcyBub3Qgd3JhcHBlZCBpbiBhbmdsZSBicmFja2V0cyBvciBsaW5rIHN5bnRheC4i KQorCisoZGVmdmFyIG1hcmtkb3duLXRzLS1iYXJlLWVtYWlsLXVyaS1yZWdleHAgZ290by1hZGRy ZXNzLW1haWwtcmVnZXhwCisgICJSZWdleHAgbWF0Y2hpbmcgYmFyZSBlbWFpbCBhZGRyZXNzZXMg bm90IHdyYXBwZWQgaW4gYW5nbGUgYnJhY2tldHMuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1m b250aWZ5LWJhcmUtdXJpIChzdGFydCBlbmQpCisgICJGb250aWZ5IGJhcmUgVVJMIG9yIGVtYWls IFVSSSBiZXR3ZWVuIFNUQVJUIGFuZCBFTkQuCitTa2lwIG1hdGNoZXMgYWxyZWFkeSBpbnNpZGUg dHJlZS1zaXR0ZXIgbGluayBvciBhdXRvbGluayBub2Rlcy4iCisgIChkb2xpc3QgKHJlIChsaXN0 IG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHAKKyAgICAgICAgICAgICAgICAgICAgbWFya2Rv d24tdHMtLWJhcmUtZW1haWwtdXJpLXJlZ2V4cCkpCisgICAgKGdvdG8tY2hhciBzdGFydCkKKyAg ICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIHJlIGVuZCB0KQorICAgICAgKGxldCogKCh1cmkt c3RhcnQgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgICAgICAodXJpLWVuZCAobWF0Y2gt ZW5kIDApKQorICAgICAgICAgICAgICh1cmkgKG1hdGNoLXN0cmluZyAwKSkKKyAgICAgICAgICAg ICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IHVyaS1zdGFydCAnbWFya2Rvd24taW5saW5lKSkKKyAg ICAgICAgICAgICAocGFyZW50IChhbmQgbm9kZSAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkp CisgICAgICAgICAgICAgKHBhcmVudC10eXBlIChhbmQgcGFyZW50ICh0cmVlc2l0LW5vZGUtdHlw ZSBwYXJlbnQpKSkpCisgICAgICAgICh1bmxlc3MgKG9yIChtZW1iZXIgcGFyZW50LXR5cGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJpbmxpbmVfbGluayIgImZ1bGxfcmVmZXJlbmNl X2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sbGFwc2VkX3JlZmVyZW5j ZV9saW5rIiAic2hvcnRjdXRfbGluayIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJp bWFnZSIgInVyaV9hdXRvbGluayIgImVtYWlsX2F1dG9saW5rIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImxpbmtfZGVzdGluYXRpb24iKSkKKyAgICAgICAgICAgICAgICAgICAgKG1l bWJlciAoYW5kIG5vZGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcoInVyaV9hdXRvbGluayIgImVtYWlsX2F1dG9saW5rIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImxpbmtfZGVzdGluYXRpb24iICJjb2RlX3NwYW4iCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiY29kZV9mZW5jZV9jb250ZW50IiAiaW5mb19zdHJp bmciKSkKKyAgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5IHVyaS1zdGFydCAn YnV0dG9uKSkKKyAgICAgICAgICAobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24KKyAgICAg ICAgICAgdXJpLXN0YXJ0IHVyaS1lbmQKKyAgICAgICAgICAgKGlmIChlcSB1cmktc3RhcnQgMCkK KyAgICAgICAgICAgICAgIHVyaQorICAgICAgICAgICAgIChjb25jYXQgIm1haWx0bzoiIHVyaSkp KSkpKSkpCisKKzs7OyB0cmVlc2l0IHNldHRpbmdzOgorCiAoZGVmdmFyIG1hcmtkb3duLXRzLS10 cmVlc2l0LXNldHRpbmdzCiAgICh0cmVlc2l0LWZvbnQtbG9jay1ydWxlcworICAgOmxhbmd1YWdl ICdtYXJrZG93bgorICAgOmZlYXR1cmUgJ2Vycm9yCisgICA6b3ZlcnJpZGUgdAorICAgJygoRVJS T1IpIEBmb250LWxvY2std2FybmluZy1mYWNlKQorCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlu bGluZQogICAgOm92ZXJyaWRlIHQKICAgIDpmZWF0dXJlICdkZWxpbWl0ZXIKLSAgICcoKGlubGlu ZV9saW5rIFsgIlsiICJdIiAiKCIgIikiIF0gQHNoYWRvdykKLSAgICAgKGltYWdlIFsgIiEiICJb IiAiXSIgIigiICIpIiBdIEBzaGFkb3cpKQorICAgJygoaW5saW5lX2xpbmsgWyAiWyIgIl0iICIo IiAiKSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQorICAgICAoZnVsbF9yZWZl cmVuY2VfbGluayBbICJbIiAiXSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQor ICAgICAoY29sbGFwc2VkX3JlZmVyZW5jZV9saW5rIFsgIlsiICJdIiBdIEBtYXJrZG93bi10cy0t Zm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChzaG9ydGN1dF9saW5rIFsgIlsiICJdIiBdIEBtYXJr ZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChpbWFnZSBbICIhIiAiWyIgIl0iICIo IiAiKSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKSkKIAogICAgOmxhbmd1YWdl ICdtYXJrZG93bgogICAgOmZlYXR1cmUgJ2hlYWRpbmcKLSAgICcoKGF0eF9oZWFkaW5nIChhdHhf aDFfbWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctMQotICAgICAoYXR4X2hlYWRpbmcgKGF0 eF9oMl9tYXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy0yCi0gICAgIChhdHhfaGVhZGluZyAo YXR4X2gzX21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTMKLSAgICAgKGF0eF9oZWFkaW5n IChhdHhfaDRfbWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctNAotICAgICAoYXR4X2hlYWRp bmcgKGF0eF9oNV9tYXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy01Ci0gICAgIChhdHhfaGVh ZGluZyAoYXR4X2g2X21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTYKLSAgICAgKHNldGV4 dF9oZWFkaW5nKSBAbWFya2Rvd24tdHMtc2V0ZXh0LWhlYWRpbmcpCisgICAnKCgoYXR4X2hlYWRp bmcpICAgIEBtYXJrZG93bi10cy0tZm9udGlmeS1oZWFkaW5nKQorICAgICAoKHNldGV4dF9oZWFk aW5nKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktaGVhZGluZykpCiAKICAgIDpsYW5ndWFnZSAnbWFy a2Rvd24KICAgIDpmZWF0dXJlICdoZWFkaW5nCkBAIC0xOTQsMTYgKzE2MDcsNDAgQEAgbWFya2Rv d24tdHMtLXRyZWVzaXQtc2V0dGluZ3MKICAgICAgKGF0eF9oM19tYXJrZXIpIEBtYXJrZG93bi10 cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0eF9oNF9tYXJrZXIpIEBtYXJrZG93bi10cy0t Zm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0eF9oNV9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9u dGlmeS1kZWxpbWl0ZXIKLSAgICAgKGF0eF9oNl9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlm eS1kZWxpbWl0ZXIpCisgICAgIChhdHhfaDZfbWFya2VyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnkt ZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDFfdW5kZXJsaW5lKSBAbWFya2Rvd24tdHMtLWZvbnRp ZnktZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDJfdW5kZXJsaW5lKSBAbWFya2Rvd24tdHMtLWZv bnRpZnktZGVsaW1pdGVyKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCiAgICA6ZmVhdHVyZSAn cGFyYWdyYXBoCi0gICAnKCgodGhlbWF0aWNfYnJlYWspIEBtYXJrZG93bi10cy1kZWxpbWl0ZXIp Ci0gICAgICgoaW5kZW50ZWRfY29kZV9ibG9jaykgQGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAg ICcoKCh0aGVtYXRpY19icmVhaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LXRoZW1hdGljLWJyZWFr KQorICAgICAoKGh0bWxfYmxvY2spIEBtYXJrZG93bi10cy1odG1sLWJsb2NrKQorICAgICAoKGlu ZGVudGVkX2NvZGVfYmxvY2spIEBtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2NrKQogICAg ICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9zdGFyKSBAbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIp CiAgICAgIChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BsdXMpIEBtYXJrZG93bi10cy1saXN0LW1h cmtlcikKICAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfbWludXMpIEBtYXJrZG93bi10cy1s aXN0LW1hcmtlcikKLSAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfZG90KSBAbWFya2Rvd24t dHMtbGlzdC1tYXJrZXIpKQorICAgICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3QpIEBtYXJr ZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfcGFyZW50 aGVzaXMpIEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAodGFza19s aXN0X21hcmtlcl91bmNoZWNrZWQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1jaGVja2JveCkKKyAg ICAgKGxpc3RfaXRlbSAodGFza19saXN0X21hcmtlcl9jaGVja2VkKSBAbWFya2Rvd24tdHMtLWZv bnRpZnktY2hlY2tib3gpCisgICAgIChsaW5rX3JlZmVyZW5jZV9kZWZpbml0aW9uCisgICAgICAo bGlua19sYWJlbCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVmLWxhYmVsKQorICAgICAo bGlua19yZWZlcmVuY2VfZGVmaW5pdGlvbgorICAgICAgKGxpbmtfZGVzdGluYXRpb24pIEBtYXJr ZG93bi10cy0tZm9udGlmeS1saW5rLXJlZi1kZXN0aW5hdGlvbikKKyAgICAgKGxpbmtfcmVmZXJl bmNlX2RlZmluaXRpb24KKyAgICAgIChsaW5rX3RpdGxlKSBAbWFya2Rvd24tdHMtbGluay1kZXN0 aW5hdGlvbikpCisKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24KKyAgIDpmZWF0dXJlICdwYXJhZ3Jh cGgKKyAgIDpvdmVycmlkZSAncHJlcGVuZAorICAgJygocGlwZV90YWJsZV9oZWFkZXIgInwiIEBt YXJrZG93bi10cy10YWJsZS1oZWFkZXIpCisgICAgIChwaXBlX3RhYmxlX2hlYWRlciAocGlwZV90 YWJsZV9jZWxsKSBAbWFya2Rvd24tdHMtdGFibGUtaGVhZGVyKQorICAgICAocGlwZV90YWJsZV9y b3cgInwiIEBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2VsbCkKKyAgICAgKHBpcGVfdGFi bGVfcm93IChwaXBlX3RhYmxlX2NlbGwpIEBtYXJrZG93bi10cy10YWJsZS1jZWxsKQorICAgICAo cGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93ICJ8IiBAbWFya2Rvd24tdHMtdGFibGUtZGVsaW1pdGVy LWNlbGwpCisgICAgICgocGlwZV90YWJsZSkgQG1hcmtkb3duLXRzLXRhYmxlKQorICAgICAocGlw ZV90YWJsZV9kZWxpbWl0ZXJfcm93IChwaXBlX3RhYmxlX2RlbGltaXRlcl9jZWxsKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2Vs bCkpCiAKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24KICAgIDpmZWF0dXJlICdwYXJhZ3JhcGgKQEAg LTIxMiw4OSArMTY0OSw5OTkgQEAgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MKICAgICAg KGJsb2NrX3F1b3RlX21hcmtlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAg ICAoZmVuY2VkX2NvZGVfYmxvY2tfZGVsaW1pdGVyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVs aW1pdGVyCiAgICAgIChmZW5jZWRfY29kZV9ibG9jawotICAgICAgKGluZm9fc3RyaW5nIChsYW5n dWFnZSkgQG1hcmtkb3duLXRzLWxhbmd1YWdlLWtleXdvcmQpIEBtYXJrZG93bi10cy0tZm9udGlm eS1kZWxpbWl0ZXIpCisgICAgICAoaW5mb19zdHJpbmcgKGxhbmd1YWdlKSBAbWFya2Rvd24tdHMt bGFuZ3VhZ2Uta2V5d29yZCkKKyAgICAgIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIp CiAgICAgIChibG9ja19xdW90ZQogICAgICAgKGJsb2NrX3F1b3RlX21hcmtlcikgQG1hcmtkb3du LXRzLS1mb250aWZ5LWRlbGltaXRlcgogICAgICAgKHBhcmFncmFwaCAoaW5saW5lIChibG9ja19j b250aW51YXRpb24pIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpKSkpCiAKKyAgIDps YW5ndWFnZSAnbWFya2Rvd24KKyAgIDpmZWF0dXJlICdwYXJhZ3JhcGgKKyAgIDpvdmVycmlkZSAn YXBwZW5kCisgICAnKChmZW5jZWRfY29kZV9ibG9jaworICAgICAgKGluZm9fc3RyaW5nIChsYW5n dWFnZSkpCisgICAgICAoY29kZV9mZW5jZV9jb250ZW50KSBAbWFya2Rvd24tdHMtLWZvbnRpZnkt bm9uLXRzLWNvZGUtYmxvY2spKQorCisgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCisgICA6ZmVhdHVy ZSAncGFyYWdyYXBoCisgICA6b3ZlcnJpZGUgJ2FwcGVuZAorICAgJygoZmVuY2VkX2NvZGVfYmxv Y2sgKGNvZGVfZmVuY2VfY29udGVudCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWNvZGUtYmxvY2sp KQorCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlubGluZQogICAgOm92ZXJyaWRlICdhcHBlbmQK ICAgIDpmZWF0dXJlICdwYXJhZ3JhcGgtaW5saW5lCi0gICAnKCgoaW1hZ2VfZGVzY3JpcHRpb24p IEBsaW5rKQotICAgICAoKGxpbmtfZGVzdGluYXRpb24pIEBmb250LWxvY2stc3RyaW5nLWZhY2Up Ci0gICAgICgoY29kZV9zcGFuKSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQorICAgJygoKGxpbmtf ZGVzdGluYXRpb24pIEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0aW9uKQorICAg ICAoKGNvZGVfc3BhbikgQG1hcmtkb3duLXRzLWNvZGUtc3BhbikKICAgICAgKChjb2RlX3NwYW5f ZGVsaW1pdGVyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQotICAgICAoKGVtcGhh c2lzKSBAaXRhbGljKQotICAgICAoKHN0cm9uZ19lbXBoYXNpcykgQGJvbGQpCi0gICAgIChpbmxp bmVfbGluayAobGlua190ZXh0KSBAbGluaykKLSAgICAgKGlubGluZV9saW5rIChsaW5rX2Rlc3Rp bmF0aW9uKSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQotICAgICAoc2hvcnRjdXRfbGluayAobGlu a190ZXh0KSBAbGluaykpCisgICAgICgoZW1waGFzaXMpIEBtYXJrZG93bi10cy1lbXBoYXNpcykK KyAgICAgKChzdHJvbmdfZW1waGFzaXMpIEBtYXJrZG93bi10cy1ib2xkKQorICAgICAoKHN0cmlr ZXRocm91Z2gpIEBtYXJrZG93bi10cy1zdHJpa2V0aHJvdWdoKQorICAgICAoaW5saW5lX2xpbmsg KGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAgKGZ1bGxf cmVmZXJlbmNlX2xpbmsgKGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9k ZSkKKyAgICAgKGZ1bGxfcmVmZXJlbmNlX2xpbmsgKGxpbmtfbGFiZWwpIEBtYXJrZG93bi10cy0t Zm9udGlmeS1saW5rLW5vZGUpCisgICAgIChjb2xsYXBzZWRfcmVmZXJlbmNlX2xpbmsgKGxpbmtf dGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAgKHNob3J0Y3V0X2xp bmsgKGxpbmtfdGV4dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAgKGlt YWdlIChpbWFnZV9kZXNjcmlwdGlvbikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSkK KyAgICAgKCh1cmlfYXV0b2xpbmspIEBtYXJrZG93bi10cy0tZm9udGlmeS1hdXRvbGluaykKKyAg ICAgKChlbWFpbF9hdXRvbGluaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LWF1dG9saW5rKQorICAg ICAoaW5saW5lX2xpbmsgKGxpbmtfdGl0bGUpIEBtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9u KQorICAgICAoKGJhY2tzbGFzaF9lc2NhcGUpIEBtYXJrZG93bi10cy0tZm9udGlmeS1iYWNrc2xh c2gtZXNjYXBlKQorICAgICAoKGVudGl0eV9yZWZlcmVuY2UpIEBtYXJrZG93bi10cy0tZm9udGlm eS1lbnRpdHkpCisgICAgICgobnVtZXJpY19jaGFyYWN0ZXJfcmVmZXJlbmNlKSBAbWFya2Rvd24t dHMtLWZvbnRpZnktZW50aXR5KQorICAgICAoKGh0bWxfdGFnKSBAbWFya2Rvd24tdHMtaHRtbC10 YWcpCisgICAgICgoaGFyZF9saW5lX2JyZWFrKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktaGFyZC1s aW5lLWJyZWFrKQorICAgICAoKGxhdGV4X2Jsb2NrKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGF0 ZXgtYmxvY2spKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlubGluZQogICAgOmZlYXR1cmUg J3BhcmFncmFwaC1pbmxpbmUKICAgIDpvdmVycmlkZSAnYXBwZW5kCiAgICAnKChlbXBoYXNpc19k ZWxpbWl0ZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCi0gICApKQogCi07Ozsg SW1lbnUKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24taW5saW5lCisgICA6ZmVhdHVyZSAnaW1hZ2Ut cHJldmlldworICAgOm92ZXJyaWRlICdhcHBlbmQKKyAgICcoKGltYWdlKSBAbWFya2Rvd24tdHMt LWZvbnRpZnktaW1hZ2UpKSkKKworOzs7IEltZW51OgogCi0oZGVmdW4gbWFya2Rvd24tdHMtaW1l bnUtbm9kZS1wIChub2RlKQorKGRlZnVuIG1hcmtkb3duLXRzLS1pbWVudS1oZWFkaW5nLW5vZGUt cCAobm9kZSkKICAgIkNoZWNrIGlmIE5PREUgaXMgYSB2YWxpZCBlbnRyeSB0byBpbWVudS4iCi0g IChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpCi0g ICAgICAgICAiYXR4X2hlYWRpbmciKSkKKyAgKGFuZCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBl IG5vZGUpICJpbmxpbmUiKQorICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgKHRyZWVz aXQtbm9kZS1wYXJlbnQgbm9kZSkpCisgICAgICAgICAgICAgICJhdHhfaGVhZGluZyIpKSkKIAot KGRlZnVuIG1hcmtkb3duLXRzLWltZW51LW5hbWUtZnVuY3Rpb24gKG5vZGUpCisoZGVmdW4gbWFy a2Rvd24tdHMtLWltZW51LWhlYWRpbmctbmFtZS1mdW5jdGlvbiAobm9kZSkKICAgIlJldHVybiBh biBpbWVudSBlbnRyeSBpZiBOT0RFIGlzIGEgdmFsaWQgaGVhZGVyLiIKICAgKGxldCAoKG5hbWUg KHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUpKSkKLSAgICAoaWYgKG1hcmtkb3duLXRzLWltZW51LW5v ZGUtcCBub2RlKQotCSh0aHJlYWQtZmlyc3QgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkgKHRy ZWVzaXQtbm9kZS10ZXh0KSkKKyAgICAoaWYgKG1hcmtkb3duLXRzLS1pbWVudS1oZWFkaW5nLW5v ZGUtcCBub2RlKQorICAgICAgICAoY2FyIChzcGxpdC1zdHJpbmcgKHRyZWVzaXQtbm9kZS10ZXh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIiB0ICIgIikpCiAgICAgICBuYW1lKSkpCiAK LShkZWZ1biBtYXJrZG93bi10cy1vdXRsaW5lLXByZWRpY2F0ZSAobm9kZSkKLSAgIk1hdGNoIGEg aGllcmFyY2hpY2FsIHNlY3Rpb24gdGhhdCBoYXMgYSBoZWFkaW5nLiIKKyhkZWZ1biBtYXJrZG93 bi10cy0taW1lbnUtY29kZS1ibG9jay1ub2RlLXAgKG5vZGUpCisgICJDaGVjayBpZiBOT0RFIGlz IGFuIGluZm9fc3RyaW5nIHdpdGggZGVzY3JpcHRpdmUgdGV4dCBhZnRlciB0aGUgbGFuZ3VhZ2Uu IgorICAoYW5kIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImluZm9fc3RyaW5nIikK KyAgICAgICAod2hlbi1sZXQqICgobGFuZy1ub2RlICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIG5v ZGUgImxhbmd1YWdlIikpCisgICAgICAgICAgICAgICAgICAgKCg8ICh0cmVlc2l0LW5vZGUtZW5k IGxhbmctbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9k ZSkpKSkKKyAgICAgICAgIChub3QgKHN0cmluZy1ibGFuay1wCisgICAgICAgICAgICAgICAoYnVm ZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9k ZS1lbmQgbGFuZy1ub2RlKQorICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUp KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1uYW1lLWZ1bmN0 aW9uIChub2RlKQorICAiUmV0dXJuIGFuIGltZW51IGVudHJ5IG5hbWUgZm9yIGEgY29kZSBibG9j ayBpbmZvX3N0cmluZyBOT0RFLgorVXNlcyB0aGUgZGVzY3JpcHRpdmUgdGV4dCBhZnRlciB0aGUg bGFuZ3VhZ2UgbmFtZS4iCisgICh3aGVuLWxldCogKChsYW5nLW5vZGUgKHRyZWVzaXQtc2VhcmNo LXN1YnRyZWUgbm9kZSAibGFuZ3VhZ2UiKSkKKyAgICAgICAgICAgICAgKGRlc2MgKHN0cmluZy10 cmltCisgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVz CisgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbGFuZy1ub2RlKQorICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkpKQorICAgIChmb3Jt YXQgIiVzOiAlcyIgKHRyZWVzaXQtbm9kZS10ZXh0IGxhbmctbm9kZSkgZGVzYykpKQorCisoZGVm dW4gbWFya2Rvd24tdHMtLW91dGxpbmUtcHJlZGljYXRlIChub2RlKQorICAiTWF0Y2ggTk9ERSBp ZiBpdCBpcyBhIGhpZXJhcmNoaWNhbCBzZWN0aW9uIHRoYXQgaGFzIGEgaGVhZGluZy4iCiAgIChh bmQgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAic2VjdGlvbiIpCiAgICAgICAgKHdo ZW4tbGV0KiAoKGNoaWxkICh0cmVlc2l0LW5vZGUtY2hpbGQgbm9kZSAwKSkpCiAgICAgICAgICAo ZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxkKSAiYXR4X2hlYWRpbmciKSkpKQogCi07Ozsg Q29kZSBibG9ja3MKKzs7OyBIZWFkaW5nIG1hbmlwdWxhdGlvbjoKKworKGRlZmNvbnN0IG1hcmtk b3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwgNgorICAiTWF4aW11bSBBVFggaGVhZGlu ZyBsZXZlbCBpbiBNYXJrZG93biAoaDEtaDYpLgorRGVmaW5lZCBieSB0aGUgQ29tbW9uTWFyayBz cGVjIGFuZCB0aGUgdHJlZS1zaXR0ZXIgZ3JhbW1hci4iKQogCi0oZGVmdmFyLWxvY2FsIG1hcmtk b3duLXRzLS1jb25maWd1cmVkLWxhbmd1YWdlcyBuaWwKLSAgIkEgbGlzdCBvZiBsYW5ndWFnZXMg dGhhdCBoYXZlIGJlZW4gc2V0dXAgaW4gdGhpcyBidWZmZXIuCisoZGVmdW4gbWFya2Rvd24tdHMt LWhlYWRpbmctYXQtcG9pbnQgKCkKKyAgIlJldHVybiB0aGUgYXR4X2hlYWRpbmcgbm9kZSBhdCBv ciBiZWZvcmUgcG9pbnQsIG9yIG5pbC4iCisgICh3aGVuLWxldCogKChub2RlICh0cmVlc2l0LW5v ZGUtYXQgKHBvaW50KSAnbWFya2Rvd24pKSkKKyAgICAoaWYgKGVxdWFsICh0cmVlc2l0LW5vZGUt dHlwZSBub2RlKSAiYXR4X2hlYWRpbmciKQorICAgICAgICBub2RlCisgICAgICAodHJlZXNpdC1w YXJlbnQtdW50aWwKKyAgICAgICBub2RlIChsYW1iZGEgKG4pIChlcXVhbCAodHJlZXNpdC1ub2Rl LXR5cGUgbikgImF0eF9oZWFkaW5nIikpKSkpKQogCi1XaGVuIGEgY29kZSBibG9jayBvZiBhIGxh bmd1YWdlIGFwcGVhcnMsIGBtYXJrZG93bi10cy1tb2RlJyBsb2FkcwotbGFuZ3VhZ2Ugc2V0dXBz IGxpa2UgZm9udC1sb2NrIGFuZCBpbmRlbnRhdGlvbiBmb3IgdGhhdCBsYW5ndWFnZSwgYW5kCi1h ZGRzIHRoYXQgbGFuZ3VhZ2UgdG8gdGhpcyBsaXN0LiIpCisoZGVmdW4gbWFya2Rvd24tdHMtLWhl YWRpbmctbGV2ZWwgKGhlYWRpbmcpCisgICJSZXR1cm4gSEVBRElORyBsZXZlbCAocmFuZ2UgMSB0 byBgbWFya2Rvd24tdHMtLXBhcnNlci1oZWFkaW5nLW1heC1sZXZlbCcpLiIKKyAgKGxldCAoKG1h cmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGhlYWRpbmcgMCkpKQorICAgIChsZW5ndGggKHRyZWVz aXQtbm9kZS10ZXh0IG1hcmtlciB0KSkpKQogCi0oZGVmdW4gbWFya2Rvd24tdHMtLWhhcnZlc3Qt dHJlZXNpdC1jb25maWdzIChtb2RlKQotICAiSGFydmVzdCB0cmVlLXNpdHRlciBjb25maWdzIGZy b20gTU9ERS4KLVJldHVybiBhIHBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGFuZCB2YWx1 ZToKKyhkZWZ1biBtYXJrZG93bi10cy0tc2VjdGlvbi1hdC1wb2ludCAoKQorICAiUmV0dXJuIHRo ZSBzZWN0aW9uIG5vZGUgY29udGFpbmluZyBwb2ludC4iCisgICh3aGVuLWxldCogKChub2RlICh0 cmVlc2l0LW5vZGUtYXQgKHBvaW50KSAnbWFya2Rvd24pKSkKKyAgICAodHJlZXNpdC1wYXJlbnQt dW50aWwKKyAgICAgbm9kZSAobGFtYmRhIChuKSAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4p ICJzZWN0aW9uIikpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1wcm9tb3RlICgpCisgICJQcm9t b3RlIHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBwb2ludC4KK0ZvciBoZWFkaW5ncywgZGVj cmVhc2UgdGhlIGxldmVsIChlLmcuLCAjIyB0byAjKS4KK0ZvciBsaXN0IGl0ZW1zLCBkZWNyZWFz ZSBuZXN0aW5nIChkZWRlbnQpLgorV2l0aCBgdHJhbnNpZW50LW1hcmstbW9kZScgb24gYW5kIG1h cmsgYWN0aXZlLCBwcm9tb3RlIGFsbAoraGVhZGluZ3MgaW4gdGhlIHJlZ2lvbi4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKGNvbmQKKyAgICgoYW5kIHRyYW5zaWVudC1tYXJrLW1vZGUgbWFyay1hY3Rp dmUpCisgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZS1yZWdpb24gLTEpKQorICAg KChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KQorICAgIChtYXJrZG93bi10cy0tbGlz dC1wcm9tb3RlLW9yLWRlbW90ZSBuaWwpKQorICAgKHQgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9y LWRlbW90ZSAtMSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWRlbW90ZSAoKQorICAiRGVtb3Rl IHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBwb2ludC4KK0ZvciBoZWFkaW5ncywgaW5jcmVh c2UgdGhlIGxldmVsIChlLmcuLCAjIHRvICMjKS4KK0ZvciBsaXN0IGl0ZW1zLCBpbmNyZWFzZSBu ZXN0aW5nIChpbmRlbnQpLgorV2l0aCBgdHJhbnNpZW50LW1hcmstbW9kZScgb24gYW5kIG1hcmsg YWN0aXZlLCBkZW1vdGUgYWxsIGhlYWRpbmdzCitpbiB0aGUgcmVnaW9uLiIKKyAgKGludGVyYWN0 aXZlKQorICAoY29uZAorICAgKChhbmQgdHJhbnNpZW50LW1hcmstbW9kZSBtYXJrLWFjdGl2ZSkK KyAgICAobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lvbiAxKSkKKyAgICgobWFy a2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkKKyAgICAobWFya2Rvd24tdHMtLWxpc3QtcHJv bW90ZS1vci1kZW1vdGUgdCkpCisgICAodCAobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3Rl IDEpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUgKGRlbHRhKQor ICAiQ2hhbmdlIHRoZSBoZWFkaW5nIGF0IHBvaW50IGJ5IERFTFRBIGxldmVscy4KK05lZ2F0aXZl IERFTFRBIHByb21vdGVzIChmZXdlciAjKSwgcG9zaXRpdmUgZGVtb3RlcyAobW9yZSAjKS4KK0lm IHRoZSBoZWFkaW5nIGhhcyBhbiBvcHRpb25hbCB0cmFpbGluZyBjbG9zaW5nLWAjJyBzZXF1ZW5j ZSwgdGhhdAorc2VxdWVuY2UgaXMgcmVzaXplZCB0byBtYXRjaCB0aGUgbmV3IGxldmVsLiIKKyAg KHdoZW4tbGV0KiAoKGhlYWRpbmcgKG1hcmtkb3duLXRzLS1oZWFkaW5nLWF0LXBvaW50KSkKKyAg ICAgICAgICAgICAgKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGhlYWRpbmcgMCkpCisgICAg ICAgICAgICAgIChsZXZlbCAobGVuZ3RoICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJrZXIgdCkpKQor ICAgICAgICAgICAgICAobmV3LWxldmVsICgrIGxldmVsIGRlbHRhKSkpCisgICAgKHdoZW4gKGFu ZCAoPj0gbmV3LWxldmVsIDEpCisgICAgICAgICAgICAgICAoPD0gbmV3LWxldmVsIG1hcmtkb3du LXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwpKQorICAgICAgKGxldCogKChvcGVuZXItYmVn ICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyKSkKKyAgICAgICAgICAgICAob3BlbmVyLWVuZCAo dHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIpKQorICAgICAgICAgICAgIChsaW5lLWVuZCAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9wZW5lci1lbmQp CisgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCisgICAgICAg ICAgICAgOzsgRGV0ZWN0IGEgQ29tbW9uTWFyayBjbG9zaW5nLWAjJyBzZXF1ZW5jZTogb3B0aW9u YWwKKyAgICAgICAgICAgICA7OyB0cmFpbGluZyB3aGl0ZXNwYWNlLCBhIHJ1biBvZiBgIycsIGFu ZCBhdCBsZWFzdCBvbmUKKyAgICAgICAgICAgICA7OyBzcGFjZS90YWIgYmV0d2VlbiBpdCBhbmQg dGhlIGhlYWRpbmcgdGV4dC4KKyAgICAgICAgICAgICAoY2xvc2VyIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGxpbmUtZW5kKQorICAgICAgICAgICAg ICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IiBvcGVuZXItZW5kKQorICAgICAg ICAgICAgICAgICAgICAgICAobGV0ICgoZW5kIChwb2ludCkpKQorICAgICAgICAgICAgICAgICAg ICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIjIiBvcGVuZXItZW5kKQorICAgICAgICAgICAg ICAgICAgICAgICAgIChsZXQgKChiZWcgKHBvaW50KSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAod2hlbiAoYW5kICg8IGJlZyBlbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICg+IGJlZyBvcGVuZXItZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobWVtcSAoY2hhci1iZWZvcmUgYmVnKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnKD9ccyA/XHQpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbnMgYmVnIGVuZCkpKSkpKSkKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisg ICAgICAgICAgOzsgUmVzaXplIHRoZSBjbG9zZXIgZmlyc3Qgc28gaXQgZG9lc24ndCBzaGlmdCB0 aGUgb3BlbmVyLgorICAgICAgICAgICh3aGVuIGNsb3NlcgorICAgICAgICAgICAgKGRlbGV0ZS1y ZWdpb24gKGNhciBjbG9zZXIpIChjZHIgY2xvc2VyKSkKKyAgICAgICAgICAgIChnb3RvLWNoYXIg KGNhciBjbG9zZXIpKQorICAgICAgICAgICAgKGluc2VydCAobWFrZS1zdHJpbmcgbmV3LWxldmVs ID8jKSkpCisgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gb3BlbmVyLWJlZyBvcGVuZXItZW5kKQor ICAgICAgICAgIChnb3RvLWNoYXIgb3BlbmVyLWJlZykKKyAgICAgICAgICAoaW5zZXJ0IChtYWtl LXN0cmluZyBuZXctbGV2ZWwgPyMpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcHJvbW90 ZS1vci1kZW1vdGUtcmVnaW9uIChkZWx0YSkKKyAgIkNoYW5nZSBhbGwgaGVhZGluZ3MgaW4gdGhl IGFjdGl2ZSByZWdpb24gYnkgREVMVEEgbGV2ZWxzLgorTmVnYXRpdmUgREVMVEEgcHJvbW90ZXMg KGZld2VyICMpLCBwb3NpdGl2ZSBkZW1vdGVzIChtb3JlICMpLiIKKyAgKGxldCAoKGJlZyAocmVn aW9uLWJlZ2lubmluZykpCisgICAgICAgIChlbmQgKHJlZ2lvbi1lbmQpKSkKKyAgICAoc2F2ZS1l eGN1cnNpb24KKyAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgKHdoaWxlICg8IChwb2ludCkg ZW5kKQorICAgICAgICAod2hlbiAobWFya2Rvd24tdHMtLWhlYWRpbmctYXQtcG9pbnQpCisgICAg ICAgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZSBkZWx0YSkpCisgICAgICAgIChm b3J3YXJkLWxpbmUgMSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtdXAg KCkKKyAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gdXAgcGFzdCB0aGUg cHJldmlvdXMgc2libGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGlmIChtYXJrZG93bi10cy0t bGlzdC1pdGVtLWF0LXBvaW50KQorICAgICAgKG1hcmtkb3duLXRzLS1saXN0LW1vdmUgdCkKKyAg ICAobWFya2Rvd24tdHMtLW1vdmUtc3VidHJlZS11cC1vci1kb3duIHQpKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duICgpCisgICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rp b24gb3IgbGlzdCBpdGVtIGRvd24gcGFzdCB0aGUgbmV4dCBzaWJsaW5nLiIKKyAgKGludGVyYWN0 aXZlKQorICAoaWYgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpCisgICAgICAobWFy a2Rvd24tdHMtLWxpc3QtbW92ZSBuaWwpCisgICAgKG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUt dXAtb3ItZG93biBuaWwpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1zZWN0aW9uLWZvbGRlZC1w IChzZWN0aW9uKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgU0VDVElPTidzIGhlYWRpbmcgaXMgZm9s ZGVkLgorQ2hlY2tzIHdoZXRoZXIgdGhlIGVuZCBvZiB0aGUgaGVhZGluZyBsaW5lIGhhcyBhbiBv dXRsaW5lCitpbnZpc2libGUgb3ZlcmxheS4iCisgIChsZXQgKChoZWFkaW5nICh0cmVlc2l0LW5v ZGUtY2hpbGQgc2VjdGlvbiAwKSkpCisgICAgKHdoZW4gKGFuZCBoZWFkaW5nCisgICAgICAgICAg ICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGhlYWRpbmcpICJhdHhfaGVhZGluZyIpKQor ICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1z dGFydCBoZWFkaW5nKSkKKyAgICAgICAgKG91dGxpbmUtaW52aXNpYmxlLXAgKHBvcy1lb2wpKSkp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUtdXAtb3ItZG93biAodXApCisg ICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rpb24gc3VidHJlZS4KK0lmIFVQIGlzIG5vbi1uaWwsIG1v dmUgcGFzdCB0aGUgcHJldmlvdXMgc2libGluZzsgb3RoZXJ3aXNlIG1vdmUgZG93bi4KK1ByZXNl cnZlcyB0aGUgZm9sZGluZyBzdGF0ZSBvZiBib3RoIHNlY3Rpb25zLiIKKyAgKHdoZW4tbGV0KiAo KHNlY3Rpb24gKG1hcmtkb3duLXRzLS1zZWN0aW9uLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAg KHNpYmxpbmcgKGlmIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LXByZXYtc2libGluZyBzZWN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0 LW5vZGUtbmV4dC1zaWJsaW5nIHNlY3Rpb24pKSkpCisgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0 LW5vZGUtdHlwZSBzaWJsaW5nKSAic2VjdGlvbiIpCisgICAgICAobGV0KiAoKGZpcnN0IChpZiB1 cCBzaWJsaW5nIHNlY3Rpb24pKQorICAgICAgICAgICAgIChzZWNvbmQgKGlmIHVwIHNlY3Rpb24g c2libGluZykpCisgICAgICAgICAgICAgKGZpcnN0LWZvbGRlZCAobWFya2Rvd24tdHMtLXNlY3Rp b24tZm9sZGVkLXAgZmlyc3QpKQorICAgICAgICAgICAgIChzZWNvbmQtZm9sZGVkIChtYXJrZG93 bi10cy0tc2VjdGlvbi1mb2xkZWQtcCBzZWNvbmQpKQorICAgICAgICAgICAgIChmaXJzdC1zdGFy dCAodHJlZXNpdC1ub2RlLXN0YXJ0IGZpcnN0KSkKKyAgICAgICAgICAgICAoc2Vjb25kLXN0YXJ0 ICh0cmVlc2l0LW5vZGUtc3RhcnQgc2Vjb25kKSkKKyAgICAgICAgICAgICAoc2Vjb25kLWVuZCAo dHJlZXNpdC1ub2RlLWVuZCBzZWNvbmQpKQorICAgICAgICAgICAgIDs7IEV4dHJhY3Qgc2VwYXJh dG9yIGJldHdlZW4gaXRlbXMgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgICAgICAgICAg KGZpcnN0LXJhdyAoYnVmZmVyLXN1YnN0cmluZyBmaXJzdC1zdGFydCBzZWNvbmQtc3RhcnQpKQor ICAgICAgICAgICAgIChmaXJzdC10ZXh0IChzdHJpbmctdHJpbS1yaWdodCBmaXJzdC1yYXcpKQor ICAgICAgICAgICAgIChzZXBhcmF0b3IgKHN1YnN0cmluZyBmaXJzdC1yYXcgKGxlbmd0aCBmaXJz dC10ZXh0KSkpCisgICAgICAgICAgICAgKHNlY29uZC1yYXcgKGJ1ZmZlci1zdWJzdHJpbmcgc2Vj b25kLXN0YXJ0IHNlY29uZC1lbmQpKQorICAgICAgICAgICAgIChzZWNvbmQtdGV4dCAoc3RyaW5n LXRyaW0tcmlnaHQgc2Vjb25kLXJhdykpCisgICAgICAgICAgICAgKHRyYWlsaW5nIChzdWJzdHJp bmcgc2Vjb25kLXJhdyAobGVuZ3RoIHNlY29uZC10ZXh0KSkpCisgICAgICAgICAgICAgKGxpbmUt b2Zmc2V0ICgtIChsaW5lLW51bWJlci1hdC1wb3MgKHBvaW50KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpbmUtbnVtYmVyLWF0LXBvcyAodHJlZXNpdC1ub2RlLXN0YXJ0IHNlY3Rp b24pKSkpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBmaXJzdC1zdGFydCBzZWNvbmQtZW5kKQor ICAgICAgICAoZ290by1jaGFyIGZpcnN0LXN0YXJ0KQorICAgICAgICAoaW5zZXJ0IHNlY29uZC10 ZXh0IHNlcGFyYXRvciBmaXJzdC10ZXh0IHRyYWlsaW5nKQorICAgICAgICA7OyBSZXN0b3JlIGZv bGRpbmcgc3RhdGUKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hh ciBmaXJzdC1zdGFydCkKKyAgICAgICAgICAod2hlbiAob3V0bGluZS1vbi1oZWFkaW5nLXApCisg ICAgICAgICAgICAoaWYgc2Vjb25kLWZvbGRlZAorICAgICAgICAgICAgICAgIChvdXRsaW5lLWhp ZGUtc3VidHJlZSkKKyAgICAgICAgICAgICAgKG91dGxpbmUtc2hvdy1zdWJ0cmVlKSkpCisgICAg ICAgICAgKG91dGxpbmUtbmV4dC1oZWFkaW5nKQorICAgICAgICAgICh3aGVuIChvdXRsaW5lLW9u LWhlYWRpbmctcCkKKyAgICAgICAgICAgIChpZiBmaXJzdC1mb2xkZWQKKyAgICAgICAgICAgICAg ICAob3V0bGluZS1oaWRlLXN1YnRyZWUpCisgICAgICAgICAgICAgIChvdXRsaW5lLXNob3ctc3Vi dHJlZSkpKSkKKyAgICAgICAgKGdvdG8tY2hhciAoaWYgdXAKKyAgICAgICAgICAgICAgICAgICAg ICAgZmlyc3Qtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICgrIGZpcnN0LXN0YXJ0IChsZW5n dGggc2Vjb25kLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoIHNlcGFyYXRv cikpKSkKKyAgICAgICAgKHdpdGgtc3VwcHJlc3NlZC13YXJuaW5ncyAoKGludGVyYWN0aXZlLW9u bHkgbmV4dC1saW5lKSkKKyAgICAgICAgICAobmV4dC1saW5lIGxpbmUtb2Zmc2V0KSkpKSkpCisK 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 KyAgICAgICAgICAgICAobGluZS1vZmZzZXQgKC0gKGxpbmUtbnVtYmVyLWF0LXBvcyAocG9pbnQp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZS1udW1iZXItYXQtcG9zCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pKSkpKQor ICAgICAgICAoZGVsZXRlLXJlZ2lvbiBmaXJzdC1zdGFydCBzZWNvbmQtZW5kKQorICAgICAgICAo Z290by1jaGFyIGZpcnN0LXN0YXJ0KQorICAgICAgICAoaW5zZXJ0IHNlY29uZC10ZXh0IHNlcGFy YXRvciBmaXJzdC10ZXh0IHRyYWlsaW5nKQorICAgICAgICAoZ290by1jaGFyIChpZiB1cAorICAg ICAgICAgICAgICAgICAgICAgICBmaXJzdC1zdGFydAorICAgICAgICAgICAgICAgICAgICAgKCsg Zmlyc3Qtc3RhcnQgKGxlbmd0aCBzZWNvbmQtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAg IChsZW5ndGggc2VwYXJhdG9yKSkpKQorICAgICAgICAod2l0aC1zdXBwcmVzc2VkLXdhcm5pbmdz ICgoaW50ZXJhY3RpdmUtb25seSBuZXh0LWxpbmUpKQorICAgICAgICAgIChuZXh0LWxpbmUgbGlu ZS1vZmZzZXQpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXJlbnVtYmVyLWxpc3QgKCZvcHRp b25hbCBzdGFydCkKKyAgIlJlbnVtYmVyIHRoZSBvcmRlcmVkIGxpc3QgYXQgcG9pbnQuCitOdW1i ZXJzIGFyZSBhc3NpZ25lZCBzZXF1ZW50aWFsbHkgc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgaXRl bSdzCitudW1iZXIuICBXaXRoIGEgcHJlZml4IGFyZ3VtZW50IFNUQVJULCBzdGFydCBudW1iZXJp bmcgZnJvbSB0aGF0Cit2YWx1ZSBpbnN0ZWFkLiAgRG9lcyBub3RoaW5nIGZvciB1bm9yZGVyZWQg bGlzdHMuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAod2hlbi1sZXQqICgoaXRlbSAobWFya2Rv d24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpCisgICAgICAgICAgICAgIChsaXN0LW5vZGUgKHRy ZWVzaXQtbm9kZS1wYXJlbnQgaXRlbSkpKQorICAgICh3aGVuIChlcXVhbCAodHJlZXNpdC1ub2Rl LXR5cGUgbGlzdC1ub2RlKSAibGlzdCIpCisgICAgICAobGV0KiAoKGNoaWxkcmVuICh0cmVlc2l0 LW5vZGUtY2hpbGRyZW4gbGlzdC1ub2RlKSkKKyAgICAgICAgICAgICAoaXRlbXMgKHNlcS1maWx0 ZXIgKGxhbWJkYSAobikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwg KHRyZWVzaXQtbm9kZS10eXBlIG4pICJsaXN0X2l0ZW0iKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2hpbGRyZW4pKQorICAgICAgICAgICAgIChmaXJzdC1tYXJrZXIgKHRyZWVz aXQtbm9kZS1jaGlsZCAoY2FyIGl0ZW1zKSAwKSkKKyAgICAgICAgICAgICAobWFya2VyLXR5cGUg KHRyZWVzaXQtbm9kZS10eXBlIGZpcnN0LW1hcmtlcikpKQorICAgICAgICAod2hlbiAobWVtYmVy IG1hcmtlci10eXBlICcoImxpc3RfbWFya2VyX2RvdCIgImxpc3RfbWFya2VyX3BhcmVudGhlc2lz IikpCisgICAgICAgICAgKGxldCogKChiYXNlIChpZiBzdGFydAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHByZWZpeC1udW1lcmljLXZhbHVlIHN0YXJ0KQorICAgICAgICAgICAgICAgICAg ICAgICAgIChzdHJpbmctdG8tbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVl c2l0LW5vZGUtdGV4dCBmaXJzdC1tYXJrZXIgdCkpKSkKKyAgICAgICAgICAgICAgICAgKGNvdW50 IChsZW5ndGggaXRlbXMpKQorICAgICAgICAgICAgICAgICA7OyBTdGFydCBmcm9tIHRoZSBsYXN0 IG51bWJlciBhbmQgd29yayBiYWNrd2FyZHMgc28KKyAgICAgICAgICAgICAgICAgOzsgdGhhdCBl YXJsaWVyIGJ1ZmZlciBwb3NpdGlvbnMgcmVtYWluIHZhbGlkLgorICAgICAgICAgICAgICAgICAo bnVtICgrIGJhc2UgY291bnQgLTEpKSkKKyAgICAgICAgICAgIChkb2xpc3QgKGl0IChyZXZlcnNl IGl0ZW1zKSkKKyAgICAgICAgICAgICAgKGxldCogKChtYXJrZXIgKHRyZWVzaXQtbm9kZS1jaGls ZCBpdCAwKSkKKyAgICAgICAgICAgICAgICAgICAgIChtYXJrZXItZW5kICh0cmVlc2l0LW5vZGUt ZW5kIG1hcmtlcikpCisgICAgICAgICAgICAgICAgICAgICAoYm9sIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFy dCBtYXJrZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1w b3NpdGlvbikpKQorICAgICAgICAgICAgICAgICAgICAgOzsgRnVsbCB0ZXh0IGZyb20gYm9sIHRv IGVuZCBvZiBtYXJrZXIgaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgIDs7IGFueSBsZWFk aW5nIHdoaXRlc3BhY2UsIHRoZSBudW1iZXIsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAg IDs7IHNlcGFyYXRvciAoZS5nLiwgIi4gIiBvciAiLlx0IikuCisgICAgICAgICAgICAgICAgICAg ICAoZnVsbC10ZXh0IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvbCBtYXJrZXItZW5kKSkKKyAgICAgICAgICAgICAgICAg ICAgIChpbmRlbnQtc3RyCisgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBcXChbWzpibGFuazpdXSpcXClbMC05XSIg ZnVsbC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDEgZnVs bC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgIiIpKQorICAgICAgICAgICAgICAgICAg ICAgKHN1ZmZpeC1zdHIKKyAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1tYXRjaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYFtbOmJsYW5rOl1dKlswLTldK1xcKC4qXFwp XFwnIiBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcg MSBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAiLiAiKSkKKyAgICAgICAgICAg ICAgICAgICAgIChuZXctdGV4dCAoY29uY2F0IGluZGVudC1zdHIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChudW1iZXItdG8tc3RyaW5nIG51bSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC1zdHIpKSkKKyAgICAgICAgICAgICAg ICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJvbCBt YXJrZXItZW5kKQorICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBib2wpCisgICAgICAgICAg ICAgICAgICAoaW5zZXJ0IG5ldy10ZXh0KSkpCisgICAgICAgICAgICAgIChjbC1kZWNmIG51bSkp CisgICAgICAgICAgICAobWVzc2FnZSAiUmVudW1iZXJlZCAlZCBpdGVtcyIgY291bnQpKSkpKSkp CisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIgKGl0ZW0pCisgICJS ZXR1cm4gdGhlIG1hcmtlciBzdHJpbmcgZm9yIGEgbmV3IGl0ZW0gZm9sbG93aW5nIElURU0uCitG b3IgdW5vcmRlcmVkIGl0ZW1zLCByZXVzZSB0aGUgc2FtZSBtYXJrZXIgY2hhcmFjdGVyLgorRm9y IG9yZGVyZWQgaXRlbXMsIGluY3JlbWVudCB0aGUgbnVtYmVyLiIKKyAgKGxldCogKChtYXJrZXIg KHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKQorICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9k ZS10eXBlIG1hcmtlcikpCisgICAgICAgICAoaW5kZW50IChzYXZlLWV4Y3Vyc2lvbgorICAgICAg ICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSkKKyAgICAg ICAgICAgICAgICAgICAoY3VycmVudC1pbmRlbnRhdGlvbikpKQorICAgICAgICAgKHByZWZpeCAo bWFrZS1zdHJpbmcgaW5kZW50ID9ccykpKQorICAgIChwY2FzZSB0eXBlCisgICAgICAoImxpc3Rf bWFya2VyX21pbnVzIiAoY29uY2F0IHByZWZpeCAiLSAiKSkKKyAgICAgICgibGlzdF9tYXJrZXJf cGx1cyIgIChjb25jYXQgcHJlZml4ICIrICIpKQorICAgICAgKCJsaXN0X21hcmtlcl9zdGFyIiAg KGNvbmNhdCBwcmVmaXggIiogIikpCisgICAgICAoImxpc3RfbWFya2VyX2RvdCIKKyAgICAgICAo bGV0ICgobnVtIChzdHJpbmctdG8tbnVtYmVyICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJrZXIgdCkp KSkKKyAgICAgICAgIChjb25jYXQgcHJlZml4IChudW1iZXItdG8tc3RyaW5nICgxKyBudW0pKSAi LiAiKSkpCisgICAgICAoImxpc3RfbWFya2VyX3BhcmVudGhlc2lzIgorICAgICAgIChsZXQgKChu dW0gKHN0cmluZy10by1udW1iZXIgKHRyZWVzaXQtbm9kZS10ZXh0IG1hcmtlciB0KSkpKQorICAg ICAgICAgKGNvbmNhdCBwcmVmaXggKG51bWJlci10by1zdHJpbmcgKDErIG51bSkpICIpICIpKSkK KyAgICAgIChfIChjb25jYXQgcHJlZml4ICItICIpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt LW5ldy1tYXJrZXItZm9yLWxpbmUgKGl0ZW0pCisgICJSZXR1cm4gdGhlIG1hcmtlciBzdHJpbmcg Zm9yIGEgbmV3IGl0ZW0gZm9sbG93aW5nIElURU0uCitXaGVuIHRoZSBjdXJyZW50IGxpbmUgaGFz IGEgbGlzdCBtYXJrZXIgcGF0dGVybiBhdCBhIGRpZmZlcmVudAoraW5kZW50YXRpb24gdGhhbiBJ VEVNIChlLmcuLCBhIG5lc3RlZCBtYXJrZXIgdGhhdCB0aGUgZ3JhbW1hciBkaWQKK25vdCByZWNv Z25pemUgYXMgYSBsaXN0X2l0ZW0pLCB1c2UgdGhlIGN1cnJlbnQgbGluZSdzIG1hcmtlci4KK090 aGVyd2lzZSwgZmFsbCBiYWNrIHRvIGBtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIn LiIKKyAgKGxldCAoKG1hcmtlci1ub2RlICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAwKSkpCisg ICAgKGlmICg9IChsaW5lLW51bWJlci1hdC1wb3MpCisgICAgICAgICAgICAobGluZS1udW1iZXIt YXQtcG9zICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyLW5vZGUpKSkKKyAgICAgICAgOzsgSXRl bSdzIG1hcmtlciBpcyBvbiB0aGUgY3VycmVudCBsaW5lOiB1c2UgaXQgbm9ybWFsbHkuCisgICAg ICAgIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIgaXRlbSkKKyAgICAgIDs7IEl0 ZW0ncyBtYXJrZXIgaXMgb24gYSBkaWZmZXJlbnQgbGluZS4gIFRoZSBwYXJzZXIgbWF5IGhhdmUK KyAgICAgIDs7IGZhaWxlZCB0byByZWNvZ25pemUgYSBuZXN0ZWQgbWFya2VyIChlLmcuLCBhIGxv bmUgYCAgLSAnCisgICAgICA7OyBwYXJzZWQgYXMgYSBzZXRleHQgaGVhZGluZykuICBSZWFkIHRo ZSBjdXJyZW50IGxpbmUuCisgICAgICAobGV0ICgobGluZSAoYnVmZmVyLXN1YnN0cmluZy1uby1w cm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAo bGluZS1lbmQtcG9zaXRpb24pKSkpCisgICAgICAgIChpZiAoc3RyaW5nLW1hdGNoCisgICAgICAg ICAgICAgIlxcYFxcKFtbOmJsYW5rOl1dKlxcKVxcKFstKitdIFxcfFxcKFswLTldK1xcKVxcKFsu KV0gXFwpXFwpIgorICAgICAgICAgICAgIGxpbmUpCisgICAgICAgICAgICAobGV0ICgoaW5kZW50 IChtYXRjaC1zdHJpbmcgMSBsaW5lKSkKKyAgICAgICAgICAgICAgICAgIChudW0gKG1hdGNoLXN0 cmluZyAzIGxpbmUpKQorICAgICAgICAgICAgICAgICAgKHN1ZmZpeCAobWF0Y2gtc3RyaW5nIDQg bGluZSkpCisgICAgICAgICAgICAgICAgICAodW5vcmRlcmVkIChtYXRjaC1zdHJpbmcgMiBsaW5l KSkpCisgICAgICAgICAgICAgIChpZiBudW0KKyAgICAgICAgICAgICAgICAgIChjb25jYXQgaW5k ZW50IChudW1iZXItdG8tc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KDErIChzdHJpbmctdG8tbnVtYmVyIG51bSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBz dWZmaXgpCisgICAgICAgICAgICAgICAgKGNvbmNhdCBpbmRlbnQgdW5vcmRlcmVkKSkpCisgICAg ICAgICAgOzsgTm8gbWFya2VyIHBhdHRlcm4gb24gY3VycmVudCBsaW5lOiB1c2UgaXRlbSdzIG1h cmtlci4KKyAgICAgICAgICAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1uZXctbWFya2VyIGl0ZW0p KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saW5lLWJsb2NrLXF1b3RlLWRlcHRoICgmb3B0 aW9uYWwgcG9zKQorICAiQ291bnQgdGhlIG51bWJlciBvZiBgPicgYmxvY2sgcXVvdGUgbWFya2Vy cyBvbiB0aGUgbGluZSBhdCBQT1MuIgorICAoc2F2ZS1leGN1cnNpb24KKyAgICAod2hlbiBwb3Mg KGdvdG8tY2hhciBwb3MpKQorICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAobGV0ICgoY291 bnQgMCkpCisgICAgICAod2hpbGUgKGFuZCAobm90IChlb2xwKSkKKyAgICAgICAgICAgICAgICAg IChtZW1xIChjaGFyLWFmdGVyKSAnKD8+ID9ccyA/XHQpKSkKKyAgICAgICAgKHdoZW4gKGVxIChj aGFyLWFmdGVyKSA/PikKKyAgICAgICAgICAoc2V0cSBjb3VudCAoMSsgY291bnQpKSkKKyAgICAg ICAgKGZvcndhcmQtY2hhciAxKSkKKyAgICAgIGNvdW50KSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy1uZXdsaW5lICgpCisgICJJbnNlcnQgYSBuZXdsaW5lLCBjb250aW51aW5nIHRoZSBjdXJyZW50 IGNvbnRleHQuCitJbnNpZGUgYSBsaXN0IGl0ZW0sIHRoZSBuZXcgbGluZSBpcyBpbmRlbnRlZCB0 byB0aGUgaXRlbSdzIHRleHQKK2NvbHVtbiBzbyB0aGUgcGFyYWdyYXBoIGNvbnRpbnVlcy4gIEEg c2Vjb25kIFJFVCBvbiBhIGJsYW5rCitjb250aW51YXRpb24gbGluZSByZW1vdmVzIHRoZSBpbmRl bnRhdGlvbiwgZHJvcHBpbmcgcG9pbnQgdG8KK2NvbHVtbiAwIHNvIHRoZSB0cmVlLXNpdHRlciBn cmFtbWFyIGVuZHMgdGhlIGxpc3QuCitJbnNpZGUgYSBibG9jayBxdW90ZSwgdGhlIG5ldyBsaW5l IGluY2x1ZGVzIHRoZSBxdW90ZSBwcmVmaXguCitPdGhlcndpc2UsIGluc2VydCBhIHBsYWluIG5l d2xpbmUuIgorICAoaW50ZXJhY3RpdmUpCisgIChsZXQqICgobm9kZSAodHJlZXNpdC1ub2RlLWF0 CisgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAo cG9pbnQpKQorICAgICAgICAgICAgICAgICdtYXJrZG93bikpCisgICAgICAgICA7OyBUcmVlLXNp dHRlciBtYXkgcmVwb3J0IGEgbm9kZSBpbnNpZGUgYSBibG9ja19xdW90ZSBldmVuCisgICAgICAg ICA7OyB3aGVuIHBvaW50IGlzIG9uIGEgYmxhbmsgbGluZSBwYXN0IHRoZSBxdW90ZSAodGhlIG5v ZGUKKyAgICAgICAgIDs7IHNwYW4gY2FuIGV4dGVuZCBiZXlvbmQgdGhlIGA+JyBsaW5lcykuICBP bmx5IHRyZWF0IHRoZQorICAgICAgICAgOzsgbGluZSBhcyBpbnNpZGUgYSBibG9jayBxdW90ZSBp ZiBpdCBhY3R1YWxseSBzdGFydHMgd2l0aAorICAgICAgICAgOzsgYSBgPicgbWFya2VyLgorICAg ICAgICAgKGluLWJxIChhbmQgKHRyZWVzaXQtcGFyZW50LXVudGlsIG5vZGUgIlxcYGJsb2NrX3F1 b3RlXFwnIikKKyAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAg ICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAg IChsb29raW5nLWF0LXAgIlsgXHRdKj4iKSkpKQorICAgICAgICAgKGl0ZW0gKG1hcmtkb3duLXRz LS1saXN0LWl0ZW0tYXQtcG9pbnQpKSkKKyAgICAoY29uZAorICAgICAoaXRlbQorICAgICAgKGxl dCogKChjb2wgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4gaXRlbSkpCisgICAg ICAgICAgICAgKGJxLXByZWZpeCAod2hlbiBpbi1icSAobWFya2Rvd24tdHMtLWJsb2NrLXF1b3Rl LXByZWZpeCkpKQorICAgICAgICAgICAgIDs7IGBjb2wnIGlzIHRoZSBhYnNvbHV0ZSBjb2x1bW4g b2YgdGhlIGl0ZW0ncyB0ZXh0LAorICAgICAgICAgICAgIDs7IHdoaWNoIGluc2lkZSBhIGJsb2Nr IHF1b3RlIGluY2x1ZGVzIHRoZSAiPiAiIHByZWZpeAorICAgICAgICAgICAgIDs7IHdpZHRoLiAg U2luY2Ugd2UgaW5zZXJ0IGBicS1wcmVmaXgnIHNlcGFyYXRlbHksIHdlCisgICAgICAgICAgICAg OzsgbXVzdCBzdWJ0cmFjdCBpdHMgbGVuZ3RoIHRvIGF2b2lkIGRvdWJsaW5nIGl0LgorICAgICAg ICAgICAgIChpbmRlbnQgKC0gY29sIChsZW5ndGggKG9yIGJxLXByZWZpeCAiIikpKSkKKyAgICAg ICAgICAgICA7OyBUaGUgY3VycmVudCBsaW5lIGlzICJibGFuayIgaWYgaXQgY29udGFpbnMgb25s eQorICAgICAgICAgICAgIDs7IHdoaXRlc3BhY2UgKG9yIHF1b3RlIHByZWZpeCArIHdoaXRlc3Bh Y2UpIGFuZCBubworICAgICAgICAgICAgIDs7IGFjdHVhbCB0ZXh0IGZyb20gYSBwcmV2aW91cyBS RVQncyBjb250aW51YXRpb24gaW5kZW50LgorICAgICAgICAgICAgIChibGFuay1saW5lLXAgKHNh dmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2Yt bGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQtcAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIl5bPiBcdF0qJCIpKSkKKyAgICAgICAgICAgICA7OyBQ b2ludCBpcyBiZWZvcmUgdGhlIGl0ZW0ncyB0ZXh0IChhdCBvciBiZWZvcmUgdGhlCisgICAgICAg ICAgICAgOzsgbWFya2VyKS4gIEEgcGxhaW4gbmV3bGluZSBpcyBhcHByb3ByaWF0ZSBoZXJlLCBh ZGRpbmcKKyAgICAgICAgICAgICA7OyBjb250aW51YXRpb24gaW5kZW50IHdvdWxkIHNoaWZ0IHRo ZSBleGlzdGluZyBjb250ZW50CisgICAgICAgICAgICAgOzsgdG8gdGhlIHJpZ2h0LgorICAgICAg ICAgICAgIChiZWZvcmUtdGV4dC1wICg8PSAoY3VycmVudC1jb2x1bW4pIGNvbCkpKQorICAgICAg ICAoY29uZAorICAgICAgICAgKGJsYW5rLWxpbmUtcAorICAgICAgICAgIDs7IFRoZSB1c2VyIHBy ZXNzZWQgUkVUIG9uIGFuIGFscmVhZHktYmxhbmsgY29udGludWF0aW9uCisgICAgICAgICAgOzsg bGluZS4gIEluc3RlYWQgb2YgYWRkaW5nIHlldCBhbm90aGVyIGluZGVudGVkIGJsYW5rCisgICAg ICAgICAgOzsgbGluZSwgcmVtb3ZlIHRoZSBpbmRlbnRhdGlvbiBhbmQgaW5zZXJ0IGEgcGxhaW4K KyAgICAgICAgICA7OyBuZXdsaW5lLiAgVGhpcyBkcm9wcyBwb2ludCB0byBjb2x1bW4gMCwgd2hp Y2ggaXMgdGhlCisgICAgICAgICAgOzsgb25seSB3YXkgdGhlIHRyZWUtc2l0dGVyIG1hcmtkb3du IGdyYW1tYXIgZW5kcyBhIGxpc3Q6CisgICAgICAgICAgOzsgYmxhbmsgbGluZXMgYWxvbmUgZG8g Tk9UIGVuZCBhIGxpc3QsIG9ubHkKKyAgICAgICAgICA7OyBub24taW5kZW50ZWQgY29udGVudCBk b2VzLiAgU28gdGhpcyBnaXZlcyB0aGUgdXNlciBhCisgICAgICAgICAgOzsgbmF0dXJhbCAiUkVU IFJFVCB0byBleGl0IHRoZSBsaXN0IiB3b3JrZmxvdy4KKyAgICAgICAgICAoZGVsZXRlLXJlZ2lv biAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikpCisgICAgICAg ICAgKG5ld2xpbmUpKQorICAgICAgICAgKGJlZm9yZS10ZXh0LXAKKyAgICAgICAgICA7OyBQb2lu dCBpcyBvbiBvciBiZWZvcmUgdGhlIGxpc3QgbWFya2VyOyBqdXN0IGluc2VydCBhCisgICAgICAg ICAgOzsgcGxhaW4gbmV3bGluZSBzbyB0aGUgaXRlbSBpcyBwdXNoZWQgZG93biB1bmNoYW5nZWQu CisgICAgICAgICAgKG5ld2xpbmUpKQorICAgICAgICAgKHQKKyAgICAgICAgICAoZGVsZXRlLWhv cml6b250YWwtc3BhY2UpCisgICAgICAgICAgKG5ld2xpbmUpCisgICAgICAgICAgKHdoZW4gYnEt cHJlZml4IChpbnNlcnQgYnEtcHJlZml4KSkKKyAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmlu ZyBpbmRlbnQgP1xzKSkpKSkpCisgICAgIChpbi1icQorICAgICAgKGxldCAoKGJxLXByZWZpeCAo bWFya2Rvd24tdHMtLWJsb2NrLXF1b3RlLXByZWZpeCkpCisgICAgICAgICAgICA7OyBBIGxpbmUg d2l0aCBvbmx5IHF1b3RlIG1hcmtlcnMgYW5kIHdoaXRlc3BhY2UgKGUuZy4sCisgICAgICAgICAg ICA7OyAiPiAiKSBpcyAiYmxhbmsiIGluc2lkZSB0aGUgcXVvdGUuICBSRVQgaGVyZSBleGl0cyB0 aGUKKyAgICAgICAgICAgIDs7IHF1b3RlLCBzYW1lIGFzIFJFVCBvbiBhIGJsYW5rIGNvbnRpbnVh dGlvbiBsaW5lIGV4aXRzIGEKKyAgICAgICAgICAgIDs7IGxpc3Q6IHJlbW92ZSB0aGUgcHJlZml4 IGFuZCBkcm9wIHRvIGNvbHVtbiAwLgorICAgICAgICAgICAgKGJsYW5rLWxpbmUtcCAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQtcCAiXls+IFx0XSokIikp KSkKKyAgICAgICAgKGlmIGJsYW5rLWxpbmUtcAorICAgICAgICAgICAgKHByb2duCisgICAgICAg ICAgICAgIChkZWxldGUtcmVnaW9uIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxpbmUtZW5k LXBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgKG5ld2xpbmUpKQorICAgICAgICAgIChkZWxldGUt aG9yaXpvbnRhbC1zcGFjZSkKKyAgICAgICAgICAobmV3bGluZSkKKyAgICAgICAgICAoaW5zZXJ0 IGJxLXByZWZpeCkpKSkKKyAgICAgOzsgRGVmYXVsdDogcGxhaW4gbmV3bGluZS4gIFRoaXMgYWxz byBoYW5kbGVzIGVtcHR5IGxpc3QgbWFya2VycworICAgICA7OyAoZS5nLiwgIi0gIiB3aXRoIG5v IHRleHQpIHRoYXQgdGhlIGdyYW1tYXIgcGFyc2VzIGFzIEVSUk9SCisgICAgIDs7IG5vZGVzIHJh dGhlciB0aGFuIGxpc3RfaXRlbSBub2Rlcy4KKyAgICAgOzsKKyAgICAgOzsgV2hlbiB0aGUgY3Vy cmVudCBsaW5lIGlzIGJsYW5rICh3aGl0ZXNwYWNlIG9ubHkpLCBpdCBpcyBhCisgICAgIDs7IGNv bnRpbnVhdGlvbi1pbmRlbnQgbGluZSBsZWZ0IGJ5IGEgcHJldmlvdXMgUkVUIHRoYXQKKyAgICAg OzsgdHJlZS1zaXR0ZXIgbm8gbG9uZ2VyIGNvbnNpZGVycyBwYXJ0IG9mIGEgbGlzdF9pdGVtLiAg Q2xlYXIKKyAgICAgOzsgdGhlIHdoaXRlc3BhY2Ugc28gbm8gdHJhaWxpbmcgc3BhY2VzIHJlbWFp biwgYW5kIGluc2VydCBhCisgICAgIDs7IHBsYWluIG5ld2xpbmUgYXQgY29sdW1uIDAgdG8gZXhp dCB0aGUgbGlzdCBjb250ZXh0LgorICAgICAodAorICAgICAgKHdoZW4gKHNhdmUtZXhjdXJzaW9u CisgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgKGxvb2tp bmctYXQtcCAiXlsgXHRdKyQiKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGxpbmUtYmVnaW5u aW5nLXBvc2l0aW9uKSAobGluZS1lbmQtcG9zaXRpb24pKSkKKyAgICAgIChuZXdsaW5lKSkpKSkK KworKGRlZnVuIG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0gKCkKKyAgIkluc2VydCBhIG5l dyBsaXN0IGl0ZW0sIHNwbGl0dGluZyB0ZXh0IGF0IHBvaW50LgorVGV4dCBhZnRlciBwb2ludCBt b3ZlcyB0byB0aGUgbmV3IGl0ZW0uICBBdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSwKK2FuIGVt cHR5IGl0ZW0gaXMgaW5zZXJ0ZWQgYWJvdmUgYW5kIHRoZSBjdXJyZW50IGNvbnRlbnQgaXMgcHVz aGVkIGRvd24uCitJbnNpZGUgYSBibG9jayBxdW90ZSwgdGhlIG5ldyBsaW5lIGluY2x1ZGVzIHRo ZSBxdW90ZSBwcmVmaXguCitGb3Igb3JkZXJlZCBsaXN0cywgdGhlIG51bWJlciBpcyBpbmNyZW1l bnRlZC4KK1doZW4gbm90IGluc2lkZSBhIGxpc3QsIGZhbGwgYmFjayB0byBgbWFya2Rvd24tdHMt bmV3bGluZScuIgorICAoaW50ZXJhY3RpdmUpCisgIChsZXQqICgobm9kZSAodHJlZXNpdC1ub2Rl LWF0CisgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9u KSAocG9pbnQpKQorICAgICAgICAgICAgICAgICdtYXJrZG93bikpCisgICAgICAgICAoaW4tYnEg KGFuZCAodHJlZXNpdC1wYXJlbnQtdW50aWwgbm9kZSAiXFxgYmxvY2tfcXVvdGVcXCciKQorICAg ICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAg IChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQt cCAiWyBcdF0qPiIpKSkpCisgICAgICAgICAoYnEtcHJlZml4ICh3aGVuIGluLWJxIChtYXJrZG93 bi10cy0tYmxvY2stcXVvdGUtcHJlZml4KSkpCisgICAgICAgICAoaXRlbSAobWFya2Rvd24tdHMt LWxpc3QtaXRlbS1hdC1wb2ludCkpKQorICAgIChjb25kCisgICAgICgoYW5kIGl0ZW0KKyAgICAg ICAgICAgKG9yIChub3QgaW4tYnEpCisgICAgICAgICAgICAgICAoPj0gKG1hcmtkb3duLXRzLS1s aW5lLWJsb2NrLXF1b3RlLWRlcHRoKQorICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0t bGluZS1ibG9jay1xdW90ZS1kZXB0aAorICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LXN0YXJ0ICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAwKSkpKSkpCisgICAgICAobGV0KiAoKG5l dy1tYXJrZXIgKG1hcmtkb3duLXRzLS1uZXctbWFya2VyLWZvci1saW5lIGl0ZW0pKQorICAgICAg ICAgICAgIChhdC1ib2wgKDw9IChjdXJyZW50LWNvbHVtbikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWNrLXRv LWluZGVudGF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1u KSkpKQorICAgICAgICAgICAgICh0YWlsICh3aGVuIChhbmQgKG5vdCBhdC1ib2wpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobm90IChsb29raW5nLWF0LXAgIlsgXHRdKiQiKSkpCisg ICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWFuZC1leHRyYWN0LXJlZ2lvbgorICAgICAgICAg ICAgICAgICAgICAgIChwb2ludCkgKGxpbmUtZW5kLXBvc2l0aW9uKSkpKSkKKyAgICAgICAgKGlm IGF0LWJvbAorICAgICAgICAgICAgOzsgQXQgQk9MOiBpbnNlcnQgZW1wdHkgaXRlbSBhYm92ZSwg cHVzaCBjdXJyZW50IGxpbmUgZG93bi4KKyAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAg ICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICh3aGVuIGJxLXByZWZpeCAoaW5z ZXJ0IGJxLXByZWZpeCkpCisgICAgICAgICAgICAgIChpbnNlcnQgbmV3LW1hcmtlciAiXG4iKQor ICAgICAgICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikpCisgICAgICAgICAgOzsgTWlkLWxp bmUgb3IgRU9MOiBuZXcgaXRlbSBiZWxvdyB3aXRoIHRhaWwgdGV4dC4KKyAgICAgICAgICAoZGVs ZXRlLWhvcml6b250YWwtc3BhY2UpCisgICAgICAgICAgKG5ld2xpbmUpCisgICAgICAgICAgKHdo ZW4gYnEtcHJlZml4IChpbnNlcnQgYnEtcHJlZml4KSkKKyAgICAgICAgICAoaW5zZXJ0IG5ldy1t YXJrZXIpCisgICAgICAgICAgKHdoZW4gdGFpbCAoc2F2ZS1leGN1cnNpb24gKGluc2VydCAoc3Ry aW5nLXRyaW0tbGVmdCB0YWlsKSkpKSkpKQorCisgICAgIDs7IE5vdCBpbiBhIGxpc3Q6IGZhbGwg YmFjayB0byBuZXdsaW5lIGJlaGF2aW9yLgorICAgICAodCAobWFya2Rvd24tdHMtbmV3bGluZSkp KSkpCisKKzs7OyBGaWxsaW5nOgorCis7OyBUT0RPOiBSZW1vdmUgdGhlIHBpcGVfdGFibGUgYmxv Y2sgaWYgd2UgaW1wbGVtZW50IHBpcGVfdGFibGUgZmlsbC4KKyhkZWZjb25zdCBtYXJrZG93bi10 cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5CisgICcoWyhmZW5jZWRfY29kZV9ibG9jaykg KGluZGVudGVkX2NvZGVfYmxvY2spIChwaXBlX3RhYmxlKV0gQGJsb2NrKQorICAiVHJlZS1zaXR0 ZXIgcXVlcnkgbWF0Y2hpbmcgYmxvY2tzIHdoZXJlIGZpbGxpbmcgaXMgaW5oaWJpdGVkLiIpCisK KyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIChpdGVtKQorICAiUmV0 dXJuIHRoZSBjb2x1bW4gd2hlcmUgdGhlIHRleHQgb2YgbGlzdCBJVEVNIHN0YXJ0cy4KK1RoaXMg aXMgdGhlIGNvbHVtbiBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoIG5vZGUgaW5zaWRlIElURU0sIG9y Cit0aGUgd2lkdGggb2YgdGhlIGxpc3QgbWFya2VyIGlmIG5vIHBhcmFncmFwaCBpcyBmb3VuZC4i CisgIChsZXQgKChwYXJhZ3JhcGggKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgaXRlbSAiXFxgcGFy YWdyYXBoXFwnIikpKQorICAgIChpZiBwYXJhZ3JhcGgKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9u CisgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IHBhcmFncmFwaCkpCisg ICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkKKyAgICAgIChsZXQgKChtYXJrZXIgKHRyZWVzaXQt bm9kZS1jaGlsZCBpdGVtIDApKSkKKyAgICAgICAgKC0gKHRyZWVzaXQtbm9kZS1lbmQgbWFya2Vy KQorICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpKSkpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWZpbGwtbGlzdC1pdGVtIChpdGVtIGp1c3RpZnkpCisgICJGaWxsIHRoZSBj b250ZW50cyBvZiBsaXN0IElURU0sIHByZXNlcnZpbmcgaXRzIGluZGVudGF0aW9uLgorTmFycm93 cyB0byBJVEVNJ3Mgb3duIHBhcmFncmFwaCBjb250ZW50IChleGNsdWRpbmcgbmVzdGVkIGxpc3Rz KQorYW5kIHNldHMgYGZpbGwtcHJlZml4JyB0byBhbGlnbiBjb250aW51YXRpb24gbGluZXMgd2l0 aCB0aGUgc3RhcnQKK29mIHRoZSBpdGVtJ3MgdGV4dC4gIEpVU1RJRlkgaXMgYXMgaW4gYGZpbGwt cGFyYWdyYXBoJy4iCisgIChsZXQqICgoZmlsbC1wcmVmaXggKG1ha2Utc3RyaW5nIChtYXJrZG93 bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgID9ccykpCisgICAgICAgICA7OyBGaW5kIHRoZSBpdGVtJ3Mgb3duIHBhcmFn cmFwaCAoZmlyc3QgcGFyYWdyYXBoIGNoaWxkKS4KKyAgICAgICAgIDs7IElmIHRoZSBpdGVtIGhh cyBuZXN0ZWQgbGlzdHMsIG5hcnJvdyB0byBqdXN0IHRoZQorICAgICAgICAgOzsgcGFyYWdyYXBo IHNvIHdlIGRvbid0IG1lcmdlIG5lc3RlZCBpdGVtcy4KKyAgICAgICAgIChwYXJhICh0cmVlc2l0 LXNlYXJjaC1zdWJ0cmVlIGl0ZW0gIlxcYHBhcmFncmFwaFxcJyIgbmlsIG5pbCAxKSkKKyAgICAg ICAgIChiZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSkKKyAgICAgICAgIChlbmQgKGlmIHBh cmEKKyAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHBhcmEpCisgICAgICAgICAg ICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgaXRlbSkpKQorICAgICAgICAgOzsgVXNlIGRlZmF1bHQg cGFyYWdyYXBoIG1vdGlvbiBpbnNpZGUgdGhlIG5hcnJvd2VkIHJlZ2lvbgorICAgICAgICAgOzsg c28gdGhhdCB0aGUgaW5uZXIgYGZpbGwtcGFyYWdyYXBoJyBkb2VzIG5vdCByZS1lbnRlciBvdXIK KyAgICAgICAgIDs7IGN1c3RvbSBwYXJhZ3JhcGgtZmluZGluZyBsb2dpYy4KKyAgICAgICAgIChm aWxsLWZvcndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJhZ3JhcGgpKQorICAg IChzYXZlLXJlc3RyaWN0aW9uCisgICAgICAobmFycm93LXRvLXJlZ2lvbiBiZWcgZW5kKQorICAg ICAgKGZpbGwtcGFyYWdyYXBoIGp1c3RpZnkpKQorICAgIDs7IFJldHVybiBub24tbmlsIHRvIHNp Z25hbCB0aGF0IGZpbGxpbmcgaGFzIGJlZW4gaGFuZGxlZCwKKyAgICA7OyBhcyBwZXIgdGhlIGNv bnRyYWN0IG9mIGBmaWxsLXBhcmFncmFwaC1mdW5jdGlvbicuCisgICAgdCkpCisKKyhkZWZ1biBt YXJrZG93bi10cy0tYWRhcHRpdmUtZmlsbCAoKQorICAiUmV0dXJuIHRoZSBmaWxsIHByZWZpeCBm b3IgdGhlIGN1cnJlbnQgbGluZSBpbiBNYXJrZG93bi4KK1doZW4gaW5zaWRlIGEgbGlzdCBpdGVt LCByZXR1cm4gc3BhY2VzIG1hdGNoaW5nIHRoZSBjb2x1bW4gd2hlcmUKK3RoZSBpdGVtJ3MgdGV4 dCBzdGFydHMuIgorICAoYW5kLWxldCogKChub2RlICh0cmVlc2l0LW5vZGUtYXQKKyAgICAgICAg ICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAocG9pbnQp KQorICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24pKQorICAgICAgICAgICAgIChpdGVtICh0 cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1cXCciKSkpCisgICAgKG1ha2Ut c3RyaW5nIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pID9ccykpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtZm9yd2FyZC1wYXJhZ3JhcGggKGFyZykKKyAgIk1v dmUgZm9yd2FyZCBieSBBUkcgcGFyYWdyYXBocywgcmVzcGVjdGluZyBNYXJrZG93biBzdHJ1Y3R1 cmUuCitMaXN0IGl0ZW1zIGFyZSB0cmVhdGVkIGFzIGluZGl2aWR1YWwgcGFyYWdyYXBocy4gIEJs b2NrcyBtYXRjaGVkCitieSBgbWFya2Rvd24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1xdWVy eScgYXJlIHNraXBwZWQ6IGJvdGgKK2ZvcndhcmQgYW5kIGJhY2t3YXJkIG1vdGlvbiBtb3ZlIHRv IHRoZSBlbmQgb2YgdGhlIGJsb2NrLCBzbworYGZpbGwtcmVnaW9uJyBzZWVzIGEgemVyby1sZW5n dGggcmVnaW9uIGFuZCBsZWF2ZXMgdGhlIGJsb2NrCit1bmZpbGxlZC4iCisgIChsZXQgKChkaXJl Y3Rpb24gKGlmICg+IGFyZyAwKSAxIC0xKSkKKyAgICAgICAgKGNvdW50IChhYnMgYXJnKSkKKyAg ICAgICAgKG1vdmVkIDApKQorICAgIChkb3RpbWVzIChfIGNvdW50KQorICAgICAgOzsgRm9yIGJh Y2t3YXJkIG1vdGlvbiwgc2tpcCBiYWNrIG92ZXIgd2hpdGVzcGFjZSB0byBmaW5kCisgICAgICA7 OyB0aGUgaXRlbSB3ZSBhcmUgbGVhdmluZywgbm90IHRoZSBuZXh0IG9uZS4KKyAgICAgIChsZXQq ICgocG9zIChpZiAoPCBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIg XHRcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAobWF4IChwb2ludC1taW4pICgxLSAocG9p bnQpKSkpCisgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQorICAgICAgICAgICAgIChibG9j ayAoY2FyICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg KHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rvd24pCisgICAgICAgICAgICAgICAgICAg ICAgICAgIG1hcmtkb3duLXRzLS1maWxsLXVuZmlsbGFibGUtYmxvY2stcXVlcnkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcG9zICgxKyBwb3MpKSkpCisgICAgICAgICAgICAgKGluZGVudGVk LXBvcyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8t Y2hhciBwb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0 aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkKKyAgICAgICAgICAg ICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IGluZGVudGVkLXBvcyAnbWFya2Rvd24pKQorICAgICAg ICAgICAgIChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1cXCci KSkpCisgICAgICAgIDs7IFdoZW4gbW92aW5nIGZvcndhcmQgZnJvbSB3aGl0ZXNwYWNlIGJldHdl ZW4gbGlzdCBpdGVtcywKKyAgICAgICAgOzsgc2tpcCB0byB0aGUgbmV4dCBub24tYmxhbmsgcG9z aXRpb24gYW5kIGNoZWNrIGFnYWluLgorICAgICAgICAod2hlbiAoYW5kIChub3QgaXRlbSkgKG5v dCBibG9jaykgKD4gZGlyZWN0aW9uIDApKQorICAgICAgICAgIChsZXQgKChuZXh0LXBvcyAoc2F2 ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3 YXJkICIgXHRcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKQorICAg ICAgICAgICAgKHNldHEgbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQtcG9zICdtYXJrZG93bikp CisgICAgICAgICAgICAoc2V0cSBpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBs aXN0X2l0ZW1cXCciKSkpKQorICAgICAgICAoY29uZAorICAgICAgICAgOzsgSW5zaWRlIGFuIHVu ZmlsbGFibGUgYmxvY2s6IHNraXAgb3ZlciBpdCBlbnRpcmVseS4KKyAgICAgICAgIChibG9jawor ICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgKGNkciBibG9jaykpKQorICAg ICAgICAgIChzZXRxIG1vdmVkICgxKyBtb3ZlZCkpKQorICAgICAgICAgOzsgSW5zaWRlIGEgbGlz dCBpdGVtOiB0cmVhdCBhcyBwYXJhZ3JhcGggYm91bmRhcnkuCisgICAgICAgICAoaXRlbQorICAg ICAgICAgIChpZiAoPiBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJl ZXNpdC1ub2RlLWVuZCBpdGVtKSkKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9k ZS1zdGFydCBpdGVtKSkpCisgICAgICAgICAgKHNldHEgbW92ZWQgKDErIG1vdmVkKSkpCisgICAg ICAgICA7OyBEZWZhdWx0OiB1c2Ugc3RhbmRhcmQgcGFyYWdyYXBoIG1vdGlvbi4KKyAgICAgICAg ICh0CisgICAgICAgICAgKGZvcndhcmQtcGFyYWdyYXBoIGRpcmVjdGlvbikKKyAgICAgICAgICAo c2V0cSBtb3ZlZCAoMSsgbW92ZWQpKSkpKSkKKyAgICA7OyBSZXR1cm4gdGhlIG51bWJlciBvZiBw YXJhZ3JhcGhzIGxlZnQgdG8gbW92ZSAoMCA9IGFsbCBkb25lKS4KKyAgICAoLSBjb3VudCBtb3Zl ZCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9uYWwganVz dGlmeSkKKyAgIkZpbGwgdGhlIGN1cnJlbnQgcGFyYWdyYXBoLCByZXNwZWN0aW5nIE1hcmtkb3du IGJsb2NrIHN0cnVjdHVyZS4KK1RoaXMgZnVuY3Rpb24gcHJldmVudHMgZmlsbGluZyBpbnNpZGUg YmxvY2tzIG1hdGNoZWQgYnkKK2BtYXJrZG93bi10cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1 ZXJ5JywgYW5kIGZpbGxzIHdpdGhpbiBsaXN0CitpdGVtcyB3aXRob3V0IG1lcmdpbmcgYWRqYWNl bnQgaXRlbXMuICBKVVNUSUZZIGlzIGFzIGluCitgZmlsbC1wYXJhZ3JhcGgnLiIKKyAgKGNvbmQq CisgICA7OyBEb24ndCBmaWxsIGluc2lkZSB1bmZpbGxhYmxlIGJsb2Nrcy4gIFVzZSBhIHF1ZXJ5 IGFnYWluc3QgdGhlCisgICA7OyByb290IG5vZGUgYmVjYXVzZSBgdHJlZXNpdC1ub2RlLWF0JyBt YXkgbm90IHJldHVybiBhIG5vZGUKKyAgIDs7IGluc2lkZSB0aGUgYmxvY2sgd2hlbiBwb2ludCBp cyBvbiBhbm9ueW1vdXMgKHVubmFtZWQpIHRleHQuCisgICAoKHRyZWVzaXQtcXVlcnktY2FwdHVy ZQorICAgICAodHJlZXNpdC1idWZmZXItcm9vdC1ub2RlICdtYXJrZG93bikKKyAgICAgbWFya2Rv d24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1xdWVyeQorICAgICAocG9pbnQpIChtaW4gKDEr IChwb2ludCkpIChwb2ludC1tYXgpKSkKKyAgICB0KQorICAgOzsgRmlsbCB3aXRoaW4gdGhlIGVu Y2xvc2luZyBsaXN0IGl0ZW0uICBVc2UKKyAgIDs7IGBtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0 LXBvaW50JyB3aGljaCBoYW5kbGVzIGJsb2NrIHF1b3RlCisgICA7OyBtYXJrZXJzLiAgV2hlbiB0 aGUgbGlzdCBpdGVtIGlzIGluc2lkZSBhIGJsb2NrIHF1b3RlLCBkZWxlZ2F0ZQorICAgOzsgdG8g dGhlIGJsb2NrIHF1b3RlIGZpbGxlciB3aGljaCBoYW5kbGVzIGA+ICcgcHJlZml4ZXMgY29ycmVj dGx5LgorICAgKChiaW5kLWFuZCogKGl0ZW0gKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9p bnQpKSkKKyAgICAoaWYgKHRyZWVzaXQtcGFyZW50LXVudGlsIGl0ZW0gIlxcYGJsb2NrX3F1b3Rl XFwnIikKKyAgICAgICAgKG1hcmtkb3duLXRzLS1maWxsLWJsb2NrLXF1b3RlIGp1c3RpZnkpCisg ICAgICAobWFya2Rvd24tdHMtLWZpbGwtbGlzdC1pdGVtIGl0ZW0ganVzdGlmeSkpKQorICAgOzsg UG9pbnQgaXMgb24gYSBibGFuayBsaW5lIGJlZm9yZSBhIGxpc3QuICBJZiB0aGUgbmV4dAorICAg Ozsgbm9uLXdoaXRlc3BhY2UgcG9zaXRpb24gZmFsbHMgaW5zaWRlIGEgbGlzdCBpdGVtLCBmaWxs IHRoYXQgaXRlbS4KKyAgICgoc2F2ZS1leGN1cnNpb24KKyAgICAgIChiZWdpbm5pbmctb2YtbGlu ZSkKKyAgICAgIChsb29raW5nLWF0LXAgIlsgXHRdKiQiKSkKKyAgICAoYW5kLWxldCogKChuZXh0 LXBvcyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNo YXJzLWZvcndhcmQgIiBcdFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkp KQorICAgICAgICAgICAgICAgKG5leHQtbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQtcG9zICdt YXJrZG93bikpCisgICAgICAgICAgICAgICAoaXRlbSAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAg ICAgICAgICAgICAgICAgICAgICBuZXh0LW5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkKKyAgICAg IChtYXJrZG93bi10cy0tZmlsbC1saXN0LWl0ZW0gaXRlbSBqdXN0aWZ5KSkpCisgICA7OyBGaWxs IHdpdGhpbiBhIGJsb2NrIHF1b3RlLiAgTmFycm93IHRvIHRoZSBwYXJhZ3JhcGggbm9kZSBhdAor ICAgOzsgcG9pbnQncyBuZXN0aW5nIGxldmVsIHNvIGxpbmVzIHdpdGggZGlmZmVyZW50IGA+ICcg ZGVwdGhzCisgICA7OyBhcmUgbm90IG1lcmdlZC4KKyAgICgodHJlZXNpdC1wYXJlbnQtdW50aWwK KyAgICAgKHRyZWVzaXQtbm9kZS1hdAorICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWlu ZGVudGF0aW9uKSAocG9pbnQpKQorICAgICAgJ21hcmtkb3duKQorICAgICAiXFxgYmxvY2tfcXVv dGVcXCciKQorICAgIChtYXJrZG93bi10cy0tZmlsbC1ibG9jay1xdW90ZSBqdXN0aWZ5KSkKKyAg IDs7IEZpbGwgd2l0aGluIGFuIEhUTUwgY29tbWVudC4gIFRoZSBub2RlIHR5cGUgaXMgImh0bWxf YmxvY2siCisgICA7OyBpbiBncmFtbWFyIHYwLjQueCBhbmQgImNvbW1lbnQiIGluIHNvbWUgb3Ro ZXIgdmVyc2lvbnMuCisgICAoKGJpbmQtYW5kKiAoYmxvY2sgKGxldCAoKG4gKHRyZWVzaXQtbm9k ZS1hdCAocG9pbnQpICdtYXJrZG93bikpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG9yICh0 cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICJcXGBc XCg/Omh0bWxfYmxvY2tcXHxjb21tZW50XFwpXFwnIikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoYW5kIChtZW1iZXIgKHRyZWVzaXQtbm9kZS10eXBlIG4pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICcoImh0bWxfYmxvY2siICJjb21tZW50IikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKSkpKSkKKyAgICAobWFya2Rvd24tdHMtLWZp bGwtaHRtbC1jb21tZW50IGJsb2NrIGp1c3RpZnkpKQorICAgOzsgRGVmYXVsdDogbGV0IGZpbGwt cGFyYWdyYXBoIGhhbmRsZSBpdC4KKyAgICh0IG5pbCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt LWZpbGwtaHRtbC1jb21tZW50IChub2RlIGp1c3RpZnkpCisgICJGaWxsIEhUTUwgY29tbWVudCBO T0RFLCBhbGlnbmluZyBjb250aW51YXRpb24gbGluZXMuCitSZXR1cm4gdCBpZiBOT0RFIGlzIGEg Y29tbWVudCBhbmQgd2FzIGZpbGxlZCwgbmlsIG90aGVyd2lzZS4KK0pVU1RJRlkgaXMgYXMgaW4g YGZpbGwtcGFyYWdyYXBoJy4iCisgICh3aGVuIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgIChn b3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgICAobG9va2luZy1h dC1wICI8IS0tIikpCisgICAgKGxldCAoKGZpbGwtcHJlZml4IChzYXZlLWV4Y3Vyc2lvbgorICAg ICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2Rl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgKCsgKGN1cnJlbnQtY29s dW1uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoICI8 IS0tICIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHMpKSkKKyAg ICAgICAgICAoYWRhcHRpdmUtZmlsbC1mdW5jdGlvbiBuaWwpCisgICAgICAgICAgKGZpbGwtZm9y d2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24gIydmb3J3YXJkLXBhcmFncmFwaCkKKyAgICAgICAgICAo ZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24gbmlsKSkKKyAgICAgIChzYXZlLXJlc3RyaWN0aW9uCisg ICAgICAgIChuYXJyb3ctdG8tcmVnaW9uICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgIChm aWxsLXBhcmFncmFwaCBqdXN0aWZ5KSkKKyAgICAgIHQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1ibG9jay1xdW90ZS1wcmVmaXggKCkKKyAgIlJldHVybiB0aGUgYmxvY2sgcXVvdGUgcHJlZml4 IHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxpbmUuCitSZWFkIHRoZSBhY3R1YWwgYD4nIG1hcmtl cnMgKHdpdGggd2hhdGV2ZXIgc3BhY2luZyB0aGUgdXNlciB3cm90ZSkKK2Zyb20gdGhlIGJlZ2lu bmluZyBvZiB0aGUgbGluZSBzbyB0aGF0IGZpbGwgcHJlc2VydmVzIHRoZSBleGlzdGluZworc3R5 bGUgKGUuZy4sIGA+Pj4gJyBzdGF5cyBgPj4+ICcsIGA+ID4gPiAnIHN0YXlzIGA+ID4gPiAnKS4i CisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAoaWYgKGxv b2tpbmctYXQgIlxcKFs+IFx0XSo+XFwpWyBcdF0qIikKKyAgICAgICAgKGNvbmNhdCAobWF0Y2gt c3RyaW5nIDApKQorICAgICAgIj4gIikpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtYmxv Y2stcXVvdGUgKGp1c3RpZnkpCisgICJGaWxsIHRoZSBwYXJhZ3JhcGggYXQgcG9pbnQgaW5zaWRl IGEgYmxvY2sgcXVvdGUuCitGaW5kIHRoZSBwYXJhZ3JhcGggbm9kZSBhdCBwb2ludCB3aXRoaW4g dGhlIGJsb2NrIHF1b3RlIGFuZCBmaWxsCitvbmx5IHRoYXQgcGFyYWdyYXBoLCBwcmVzZXJ2aW5n IHRoZSBgPiAnIHByZWZpeC4gIFdoZW4gdGhlCitwYXJhZ3JhcGggaXMgaW5zaWRlIGEgbGlzdCBp dGVtLCBhbGlnbiBjb250aW51YXRpb24gbGluZXMgd2l0aAordGhlIGl0ZW0ncyB0ZXh0IGNvbHVt bi4gIEpVU1RJRlkgaXMgYXMgaW4gYGZpbGwtcGFyYWdyYXBoJy4iCisgIDs7IFNraXAgcGFzdCBg PiAnIG1hcmtlcnMgYW5kIGFueSBsaXN0IG1hcmtlciB0byBsYW5kIGluc2lkZSB0aGUKKyAgOzsg Y29udGVudCwgd2hlcmUgdGhlIHBhcmFncmFwaCBub2RlIGxpdmVzLgorICAobGV0KiAoKGNvbnRl bnQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lubmlu Zy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAi PiBcdCIpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB3ZSBsYW5kIG9uIGEgbGlzdCBt YXJrZXIsIHNraXAgcGFzdCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChsb29r aW5nLWF0ICJbLSorXSBcXHxbMC05XStbLildXHMiKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG1p biAoMSsgKHBvaW50KSkgKHBvaW50LW1heCkpKSkKKyAgICAgICAgIChub2RlICh0cmVlc2l0LW5v ZGUtYXQgY29udGVudC1wb3MgJ21hcmtkb3duKSkKKyAgICAgICAgIChwYXJhICh0cmVlc2l0LXBh cmVudC11bnRpbAorICAgICAgICAgICAgICAgIG5vZGUgKGxhbWJkYSAobikKKyAgICAgICAgICAg ICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAicGFyYWdyYXBoIikpKSkp CisgICAgKHdoZW4gcGFyYQorICAgICAgOzsgVGhlIGdyYW1tYXIgbWF5IGluY2x1ZGUgdHJhaWxp bmcgYmxvY2tfY29udGludWF0aW9uIG5vZGVzCisgICAgICA7OyAoYmxhbmsgYD4gPicgbGluZXMp IGFzIGNoaWxkcmVuIG9mIHRoZSBwYXJhZ3JhcGguICBVc2UgdGhlCisgICAgICA7OyBlbmQgb2Yg dGhlIGxhc3QgaW5saW5lIGNoaWxkIHNvIGZpbGwgZG9lcyBub3QgbWVyZ2UgYWNyb3NzCisgICAg ICA7OyB3aGF0IHNob3VsZCBiZSBhIHBhcmFncmFwaCBib3VuZGFyeS4KKyAgICAgIChsZXQqICgo bGFzdC1pbmxpbmUKKyAgICAgICAgICAgICAgKHNlcS1maW5kIChsYW1iZGEgKGNoaWxkKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxkKSAi aW5saW5lIikpCisgICAgICAgICAgICAgICAgICAgICAgICAocmV2ZXJzZSAodHJlZXNpdC1ub2Rl LWNoaWxkcmVuIHBhcmEpKSkpCisgICAgICAgICAgICAgKHBhcmEtZW5kIChpZiBsYXN0LWlubGlu ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbGFzdC1pbmxp bmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgcGFyYSkpKQor ICAgICAgICAgICAgIChicS1wcmVmaXggKG1hcmtkb3duLXRzLS1ibG9jay1xdW90ZS1wcmVmaXgp KQorICAgICAgICAgICAgIDs7IFdoZW4gaW5zaWRlIGEgbGlzdCBpdGVtLCBleHRlbmQgdGhlIHBy ZWZpeCB3aXRoIHNwYWNlcworICAgICAgICAgICAgIDs7IHNvIGNvbnRpbnVhdGlvbiBsaW5lcyBh bGlnbiB3aXRoIHRoZSBpdGVtJ3MgdGV4dC4KKyAgICAgICAgICAgICAobGlzdC1pdGVtICh0cmVl c2l0LXBhcmVudC11bnRpbCBwYXJhICJcXGBsaXN0X2l0ZW1cXCciKSkKKyAgICAgICAgICAgICAo cHJlZml4IChpZiBsaXN0LWl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0KiAoKHRl eHQtY29sIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1pdGVtKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGV4dHJhIChtYXggMCAoLSB0ZXh0LWNvbCAobGVuZ3RoIGJxLXBy ZWZpeCkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGJxLXByZWZpeCAo bWFrZS1zdHJpbmcgZXh0cmEgP1xzKSkpCisgICAgICAgICAgICAgICAgICAgICAgIGJxLXByZWZp eCkpCisgICAgICAgICAgICAgKGFkYXB0aXZlLWZpbGwtZnVuY3Rpb24gbmlsKQorICAgICAgICAg ICAgIChmaWxsLWZvcndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJhZ3JhcGgp CisgICAgICAgICAgICAgKGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uIG5pbCkpCisgICAgICAgIChz YXZlLXJlc3RyaWN0aW9uCisgICAgICAgICAgOzsgTmFycm93IHRvIHRoZSBmdWxsIGxpbmVzIG9m IHRoZSBwYXJhZ3JhcGggc28gdGhhdCB0aGUKKyAgICAgICAgICA7OyBgPiAnIG1hcmtlcnMgYXJl IGluY2x1ZGVkIGluIHRoZSBmaWxsIHJlZ2lvbi4KKyAgICAgICAgICAobmFycm93LXRvLXJlZ2lv bgorICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAoZ290by1jaGFyICh0 cmVlc2l0LW5vZGUtc3RhcnQgcGFyYSkpCisgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5l KQorICAgICAgICAgICAgIChwb2ludCkpCisgICAgICAgICAgIHBhcmEtZW5kKQorICAgICAgICAg IChsZXQgKChmaWxsLXByZWZpeCBwcmVmaXgpKQorICAgICAgICAgICAgKGZpbGwtcGFyYWdyYXBo IGp1c3RpZnkpKSkpKSkKKyAgdCkKKworOzs7IENvZGUgYmxvY2tzOgorCisoZGVmdmFyLWxvY2Fs IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcyBuaWwKKyAgIkFsaXN0IG1hcHBpbmcg bGFuZ3VhZ2Ugbm9kZSBuYW1lcyB0byB0cyBsYW5ndWFnZS4KK0lmIGEgbGFuZ3VhZ2UgaXMgbm90 IGEgdHMgbGFuZ3VhZ2Ugb3IgaXMgbm90IG1hcHBlZCB0byBvbmUsIGl0IHdpbGwgYmUKK2luIGBt YXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMnLiIpCisKKyhkZWZ2YXItbG9jYWwg bWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzIG5pbAorICAiQWxpc3QgbWFwcGlu ZyBsYW5ndWFnZXMgdG8gbm9uLXRyZWUtc2l0dGVyIG1vZGVzIGZvciBjb2RlIGJsb2Nrcy4KK1Bv cHVsYXRlZCBieSBgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UnIHRvIGlkZW50 aWZ5IGEKK2NvZGUtYmxvY2sgbGFuZ3VhZ2UgbW9kZSB3aGljaCBpcyBub3QgYSB0cmVlLXNpdHRl ciBtb2RlIG9yIGZvciB3aGljaAordGhlIHRyZWUtc2l0dGVyIGdyYW1tYXIgaXMgdW5hdmFpbGFi bGUuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1oYXJ2ZXN0LW1vZGUtdHJlZXNpdC1jb25maWd1 cmF0aW9uIChtb2RlKQorICAiSGFydmVzdCB0cmVlLXNpdHRlciBjb25maWd1cmF0aW9uIGZyb20g TU9ERS4KK1JldHVybiBhIHBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGFuZCB2YWx1ZXM6 CiAKICAgICA6Zm9udC1sb2NrIChmcm9tIGB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncycpCiAg ICAgOnNpbXBsZS1pbmRlbnQgKGZyb20gYHRyZWVzaXQtc2ltcGxlLWluZGVudC1ydWxlcycpCiAg ICAgOnJhbmdlIChmcm9tIGB0cmVlc2l0LXJhbmdlLXNldHRpbmdzJykiCi0gICh3aXRoLXRlbXAt YnVmZmVyCi0gICAgKGZ1bmNhbGwgbW9kZSkKLSAgICAobGlzdCA6Zm9udC1sb2NrIHRyZWVzaXQt Zm9udC1sb2NrLXNldHRpbmdzCisgICh3aXRoLXdvcmstYnVmZmVyCisgICAgKG1hcmtkb3duLXRz LS1pbmhpYml0LW1lc3NhZ2VzLWFuZC13YXJuaW5ncworICAgICAgJ21hcmtkb3duLXRzLWluaGli aXQtY29kZS1ibG9jay1tb2RlLXdhcm5pbmdzCisgICAgICAoZGVsYXktbW9kZS1ob29rcyAoZnVu Y2FsbCBtb2RlKSkpCisgICAgKGxpc3QgOmxhbmd1YWdlICh0cmVlc2l0LWxhbmd1YWdlLWF0IChw b2ludC1taW4pKQorICAgICAgICAgIDpmb250LWxvY2sgdHJlZXNpdC1mb250LWxvY2stc2V0dGlu Z3MKICAgICAgICAgICA6c2ltcGxlLWluZGVudCB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMK ICAgICAgICAgICA6cmFuZ2UgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncykpKQogCi0oZGVmdW4gbWFy a2Rvd24tdHMtLWFkZC1jb25maWctZm9yLW1vZGUgKGxhbmd1YWdlIG1vZGUpCi0gICJBZGQgY29u ZmlndXJhdGlvbnMgZm9yIExBTkdVQUdFIGZyb20gTU9ERSB0byBjdXJyZW50IGJ1ZmZlci4KLQot Q29uZmlndXJhdGlvbiBpbmNsdWRlcyBmb250LWxvY2sgYW5kIGluZGVudC4gIEZvciBmb250LWxv Y2sgcnVsZXMsIHVzZQotdGhlIHNhbWUgZmVhdHVyZXMgZW5hYmxlZCBpbiBNT0RFLiIKLSAgKGxl dCAoKGNvbmZpZ3MgKG1hcmtkb3duLXRzLS1oYXJ2ZXN0LXRyZWVzaXQtY29uZmlncyBtb2RlKSkp Ci0gICAgKGlnbm9yZSBsYW5ndWFnZSkgOyBXZSBtaWdodCBtYWtlIHVzZSBvZiB0aGlzIGxhdGVy LgotICAgIChzZXRxIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAgKGFwcGVu ZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAgOzsgR2V0IGFs bCB0aGUgZm9udC1sb2NrIHNldHRpbmdzLCBpbmNsdWRpbmcgb25lcyB0aGF0Ci0gICAgICAgICAg ICAgICAgICA7OyBkb24ndCBwZXJ0YWluIHRvIExBTkdVQUdFLiAgVGhpcyB3YXkgd2UgZ2V0IGpz ZG9jCi0gICAgICAgICAgICAgICAgICA7OyBmcm9tIGpzLXRzLW1vZGUsIGZvciBleGFtcGxlLgot ICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWdzIDpmb250LWxvY2spKSkKLSAgICAo c2V0cSB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMKLSAgICAgICAgICAoYXBwZW5kIHRyZWVz aXQtc2ltcGxlLWluZGVudC1ydWxlcwotICAgICAgICAgICAgICAgICAgOzsgU2ltaWxhcmx5LCBn ZXQgYWxsIGluZGVudCBydWxlcy4KLSAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgY29uZmln cyA6c2ltcGxlLWluZGVudCkpKQorKGRlZnVuIG1hcmtkb3duLXRzLS1jb25maWd1cmUtY3VycmVu dC1idWZmZXIgKGNvbmZpZ3VyYXRpb24pCisgICJBZGQgQ09ORklHVVJBVElPTiB0byB0aGUgY3Vy cmVudCBidWZmZXIuCitDT05GSUdVUkFUSU9OIGluY2x1ZGVzIGZvbnQtbG9jayBhbmQgaW5kZW50 IHJ1bGVzLiAgRm9yIGZvbnQtbG9jayBydWxlcywKK3VzZSB0aGUgc2FtZSBmZWF0dXJlcyBlbmFi bGVkIGluIE1PREUuIgorICAoc2V0cSB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAg ICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgOzsg R2V0IGFsbCB0aGUgZm9udC1sb2NrIHNldHRpbmdzLCBpbmNsdWRpbmcgb25lcyB0aGF0CisgICAg ICAgICAgICAgICAgOzsgZG9uJ3QgcGVydGFpbiB0byBNT0RFLiAgVGhpcyB3YXksIHdlIGdldCBq c2RvYworICAgICAgICAgICAgICAgIDs7IGZyb20ganMtdHMtbW9kZSwgZm9yIGV4YW1wbGUuCisg ICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWd1cmF0aW9uIDpmb250LWxvY2spKSkKKyAg KHNldHEgdHJlZXNpdC1zaW1wbGUtaW5kZW50LXJ1bGVzCisgICAgICAgIChhcHBlbmQgdHJlZXNp dC1zaW1wbGUtaW5kZW50LXJ1bGVzCisgICAgICAgICAgICAgICAgOzsgU2ltaWxhcmx5LCBnZXQg YWxsIGluZGVudCBydWxlcy4KKyAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3VyYXRp b24gOnNpbXBsZS1pbmRlbnQpKSkKICAgICAoc2V0cSB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCiAg ICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCiAgICAgICAgICAgICAgICAg ICA7OyBGaWx0ZXIgb3V0IGZ1bmN0aW9uIHF1ZXJpZXMsIGJlY2F1c2UgdGhleSBhcmUKQEAgLTMw Miw0NSArMjY0OSwxOTQ2IEBAIG1hcmtkb3duLXRzLS1hZGQtY29uZmlnLWZvci1tb2RlCiAgICAg ICAgICAgICAgICAgICA7OyBDYXNlIGluIHBvaW50OiBjLXRzLW1vZGUncyByYW5nZSBzZXR0aW5n LgogICAgICAgICAgICAgICAgICAgKHNlcS1maWx0ZXIgKGxhbWJkYSAoc2V0dGluZykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZnVuY3Rpb25wIChjYXIgc2V0dGluZykp KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgY29uZmlncyA6cmFu Z2UpKSkpCi0gICAgKHNldHEtbG9jYWwgaW5kZW50LWxpbmUtZnVuY3Rpb24gIyd0cmVlc2l0LWlu ZGVudCkKLSAgICAoc2V0cS1sb2NhbCBpbmRlbnQtcmVnaW9uLWZ1bmN0aW9uICMndHJlZXNpdC1p bmRlbnQtcmVnaW9uKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0 IGNvbmZpZ3VyYXRpb24gOnJhbmdlKSkpKQorICAoc2V0cS1sb2NhbCBpbmRlbnQtbGluZS1mdW5j dGlvbiAjJ3RyZWVzaXQtaW5kZW50KQorICAoc2V0cS1sb2NhbCBpbmRlbnQtcmVnaW9uLWZ1bmN0 aW9uICMndHJlZXNpdC1pbmRlbnQtcmVnaW9uKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1sYW5n dWFnZS1hdC1ub2RlIChub2RlKQorICAiUmV0dXJuIHRoZSBsYW5ndWFnZSBzeW1ib2wgZm9yIGNv ZGVfZmVuY2VfY29udGVudCBOT0RFLiIKKyAgKHdoZW4tbGV0KiAoKHBhcmVudCAodHJlZXNpdC1u b2RlLXBhcmVudCBub2RlKSkKKyAgICAgICAgICAgICAgKGxhbmctbm9kZSAod2hlbiBwYXJlbnQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVu dCAiXFxgbGFuZ3VhZ2VcXCciKSkpKQorICAgIChpbnRlcm4gKHRyZWVzaXQtbm9kZS10ZXh0IGxh bmctbm9kZSB0KSkpKQogCi0oZGVmdW4gbWFya2Rvd24tdHMtLWNvbnZlcnQtY29kZS1ibG9jay1s YW5ndWFnZSAobm9kZSkKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5 LWNhY2hlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVhbCkKKyAgIkNhY2hlIGZvciBub24t dHJlZS1zaXR0ZXIgY29kZSBibG9jayBmb250aWZpY2F0aW9uLgorS2V5cyBhcmUgKExBTkcgLiBD T05URU5ULUhBU0gpIGNvbnMgY2VsbHMsIHZhbHVlcyBhcmUgbGlzdHMgb2YKK1woT0ZGU0VULVNU QVJUIE9GRlNFVC1FTkQgRkFDRSkgdHJpcGxlcy4iKQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3du LXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZS10aWNrIG5pbAorICAiRm9yIGJsdW50IGBidWZmZXIt Y2hhcnMtbW9kaWZpZWQtdGljaycgY2FjaGUgaW52YWxpZGF0aW9uLiIpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tZm9udGlmeS1ub24tdHMtY29kZS1ibG9jayAobm9kZSBvdmVycmlkZSBzdGFydCBl bmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgY29kZV9mZW5jZV9jb250ZW50IE5PREUgdXNpbmcgYSBu b24tdHJlZS1zaXR0ZXIgbW9kZS4KK0FwcGx5IHRoZSBjb2RlLWJsb2NrIG1vZGUncyBjb252ZW50 aW9uYWwgZm9udC1sb2NrIGluIGEgdGVtcG9yYXJ5CitidWZmZXIuICBPVkVSUklERSwgU1RBUlQs IGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3Zl cnJpZGUnLgorCitDYWNoZSByZXN1bHRzIHRvIGF2b2lkIGZvbnRpZmljYXRpb24gb2YgdW5jaGFu Z2VkIGNvZGUgYmxvY2tzLgorCitOT0RFIHNob3VsZCBhbHJlYWR5IGhhdmUgcGFzc2VkIHRocm91 Z2gKK2BtYXJrZG93bi10cy0tY29kZS1ibG9jay10cy1sYW5ndWFnZScgd2hpY2ggbWF5IGhhdmUg Y2xhc3NpZmllZCB0aGlzCitub2RlIGFzIGEgbm9uLXRzIG1vZGUuIgorICAod2hlbi1sZXQqICgo XyBtYXJrZG93bi10cy1mb250aWZ5LWNvZGUtYmxvY2tzLW5hdGl2ZWx5KQorICAgICAgICAgICAg ICAobGFuZyAobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUgbm9kZSkpCisgICAgICAgICAg ICAgIChtb2RlIChhbGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMt bW9kZXMpKQorICAgICAgICAgICAgICAodGljayAoYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2sp KQorICAgICAgICAgICAgICAoYmxvY2stc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkK KyAgICAgICAgICAgICAgOzsgQ2Fubm90IHVzZSBtYXJrZXJzICdtYXJrZG93bi10cy1jb2RlLWJl Zy1tYXJrZXIKKyAgICAgICAgICAgICAgOzsgJ21hcmtkb3duLXRzLWNvZGUtZW5kLW1hcmtlciB0 aGV5IGFyZSBzZXQgYWZ0ZXIgdGhpcworICAgICAgICAgICAgICA7OyBmdW5jdGlvbiBydW5zLgor ICAgICAgICAgICAgICAobm9kZS1zdGFydCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpCisgICAg ICAgICAgICAgIChub2RlLWVuZCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChwb2ludCkpKSkKKyAgICAod2hlbiAoPiBub2RlLWVuZCBub2RlLXN0YXJ0KQor ICAgICAgKHVubGVzcyAoZXEgdGljayBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUt dGljaykKKyAgICAgICAgKGNscmhhc2ggbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5LWNhY2hl KSkKKyAgICAgIChsZXQqICgoY2FjaGUta2V5IChjb25zIGxhbmcgKHNlY3VyZS1oYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMjU2CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpIG5vZGUtc3RhcnQgbm9kZS1lbmQp KSkKKyAgICAgICAgICAgICAocHJvcHMKKyAgICAgICAgICAgICAgKG9yIChnZXRoYXNoIGNhY2hl LWtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLW5vbi10cy1mb250 aWZ5LWNhY2hlKQorICAgICAgICAgICAgICAgICAgKGxldCAoKHJlc3VsdAorICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXJrZG93bi10cy0tZm9udGlmeS1ub24tdHMtY29sbGVjdC1mYWNlcwor ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlIG5vZGUtc3RhcnQgbm9kZS1lbmQpKSkKKyAg ICAgICAgICAgICAgICAgICAgKHB1dGhhc2ggY2FjaGUta2V5IHJlc3VsdAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpCisgICAg ICAgICAgICAgICAgICAgIChzZXRxIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZS10 aWNrIHRpY2spCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkpKSkKKyAgICAgICAgKGRvbGlz dCAocmFuZ2UgcHJvcHMpCisgICAgICAgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRl CisgICAgICAgICAgIChudGggMCByYW5nZSkKKyAgICAgICAgICAgKG50aCAxIHJhbmdlKQorICAg ICAgICAgICAobnRoIDIgcmFuZ2UpCisgICAgICAgICAgIG92ZXJyaWRlIHN0YXJ0IGVuZCkpKSkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbm9uLXRzLWNvbGxlY3QtZmFjZXMgKG1v ZGUgYmVnIGVuZCkKKyAgIlJ1biBNT0RFIG9uIHRoZSBCRUcuLkVORCByZWdpb24ncyB0ZXh0IGFu ZCBoYXJ2ZXN0IGZhY2UgcHJvcGVydGllcy4KK1JldHVybiBhIGxpc3Qgb2YgKEJVRi1CRUcgQlVG LUVORCBGQUNFKSB0cmlwbGVzIGluIGJhc2UtYnVmZmVyCitjb29yZGluYXRlcy4KKworRm9yIG5v bi10cmVlLXNpdHRlciBtb2RlcyB1c2UgYW4gaW5kaXJlY3QgYnVmZmVyIG5hcnJvd2VkIHRvIEJF Ry4uRU5EOgorcmVnZXgvc3ludGFjdGljIGZvbnQtbG9jayBob25vcnMgbmFycm93aW5nIGFuZCB0 aGUgaW5kaXJlY3QgYnVmZmVyCitzaGFyZXMgdGV4dCB3aXRoIHRoZSBiYXNlLCBzbyB0aGlzIGlz IGxlc3MgZXhwZW5zaXZlIGFuZCBjb3B5LWZyZWUuCisKK0ZvciB0cyBtb2RlcyBpbiBgbWFya2Rv d24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMnLCBmYWxsCitiYWNrIHRv IGEgdGVtcCBidWZmZXIuICBBIHBhcnNlciBjcmVhdGVkIGluIHRoZSBzb3VyY2UgYnVmZmVyIGRv ZXMgbm90CityZWFjdCB0byBuYXJyb3dpbmcgaW4gYW4gaW5kaXJlY3QgYnVmZmVyIGRlcml2ZWQg ZnJvbSBpdCAob25seSBwYXJzZXJzCitjcmVhdGVkIGluIHRoYXQgaW5kaXJlY3QgYnVmZmVyIHdv dWxkIGhvbm9yIGl0cyBuYXJyb3dpbmcpLCBzbyByZXVzaW5nCit0aGUgaG9zdCBwYXJzZXIgdmlh IGFuIGluZGlyZWN0IGJ1ZmZlciBpcyBub3QgYW4gb3B0aW9uIGhlcmUuICBBbmQgaW4KK3RoZSBo b3N0IGJ1ZmZlciBpdHNlbGYsIHRoZSBpbm5lciBjb250ZW50IG9mIGEgZmVuY2VkIGNvZGUgYmxv Y2sgaXMKK2p1c3Qgb3BhcXVlIHRleHQgaW5zaWRlIGEgYGNvZGVfZmVuY2VfY29udGVudCcgbm9k ZSwgbmV2ZXIgcmUtcGFyc2VkCithcyBhIGZyZXNoIGRvY3VtZW50LiAgQSB0ZW1wIGJ1ZmZlciB3 aXRoIGEgZnJlc2ggcGFyc2VyIHNlZXMgdGhlIGlubmVyCitjb250ZW50IGFzIGEgc3RhbmRhbG9u ZSBtYXJrZG93biBkb2N1bWVudCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LiIKKyAgKGNvbmQgKCht ZW1xIG1vZGUgbWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMp CisgICAgICAgICAobGV0ICgoY29udGVudCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVz IGJlZyBlbmQpKQorICAgICAgICAgICAgICAgcmVzKQorICAgICAgICAgICAod2l0aC13b3JrLWJ1 ZmZlcgorICAgICAgICAgICAgIChpbnNlcnQgY29udGVudCkKKyAgICAgICAgICAgICAobWFya2Rv d24tdHMtLWluaGliaXQtbWVzc2FnZXMtYW5kLXdhcm5pbmdzCisgICAgICAgICAgICAgICAnbWFy a2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MKKyAgICAgICAgICAgICAg IChkZWxheS1tb2RlLWhvb2tzCisgICAgICAgICAgICAgICAgIChsZXQgKChtYXJrZG93bi10cy0t c2V0LXVwLWlubGluZSB0KSkKKyAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtbW9kZSkp KSkKKyAgICAgICAgICAgICAoZm9udC1sb2NrLWVuc3VyZSkKKyAgICAgICAgICAgICAobGV0ICgo cG9zIChwb2ludC1taW4pKSkKKyAgICAgICAgICAgICAgICh3aGlsZSAoPCBwb3MgKHBvaW50LW1h eCkpCisgICAgICAgICAgICAgICAgIChsZXQgKChuZXh0IChuZXh0LXNpbmdsZS1wcm9wZXJ0eS1j aGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyAnZmFjZSBuaWwgKHBvaW50 LW1heCkpKQorICAgICAgICAgICAgICAgICAgICAgICAoZmFjZSAoZ2V0LXRleHQtcHJvcGVydHkg cG9zICdmYWNlKSkpCisgICAgICAgICAgICAgICAgICAgKHdoZW4gZmFjZQorICAgICAgICAgICAg ICAgICAgICAgOzsgVHJhbnNsYXRlIHRlbXAtYnVmZmVyIG9mZnNldHMgYmFjayB0byBiYXNlLWJ1 ZmZlcgorICAgICAgICAgICAgICAgICAgICAgOzsgcG9zaXRpb25zOiB0ZW1wIGBwb2ludC1taW4n IGNvcnJlc3BvbmRzIHRvIEJFRy4KKyAgICAgICAgICAgICAgICAgICAgIChwdXNoIChsaXN0ICgr IGJlZyAoMS0gcG9zKSkgKCsgYmVnICgxLSBuZXh0KSkgZmFjZSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlcykpCisgICAgICAgICAgICAgICAgICAgKHNldHEgcG9zIG5leHQpKSkpKQor ICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpCisgICAgICAgICh0CisgICAgICAgICAobGV0ICgo aW5kaXJlY3QtYnVmZmVyIChtYWtlLWluZGlyZWN0LWJ1ZmZlcgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdlbmVyYXRlLW5ldy1idWZmZXItbmFtZSAoYnVmZmVyLW5hbWUpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsICdpbmhpYml0LWJ1ZmZlci1ob29rcykpCisg ICAgICAgICAgICAgICByZXMpCisgICAgICAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAg ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgaW5kaXJlY3QtYnVmZmVyCisgICAgICAgICAgICAg ICAgIChtYXJrZG93bi10cy0taW5oaWJpdC1tZXNzYWdlcy1hbmQtd2FybmluZ3MKKyAgICAgICAg ICAgICAgICAgICAnbWFya2Rvd24tdHMtaW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MK KyAgICAgICAgICAgICAgICAgICAoZGVsYXktbW9kZS1ob29rcyAoZnVuY2FsbCBtb2RlKSkpCisg ICAgICAgICAgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uIGJlZyBlbmQpCisgICAgICAgICAgICAg ICAgIChmb250LWxvY2stZW5zdXJlKQorICAgICAgICAgICAgICAgICAobGV0ICgocG9zIChwb2lu dC1taW4pKSkKKyAgICAgICAgICAgICAgICAgICAod2hpbGUgKDwgcG9zIChwb2ludC1tYXgpKQor ICAgICAgICAgICAgICAgICAgICAgKGxldCAoKG5leHQgKG5leHQtc2luZ2xlLXByb3BlcnR5LWNo YW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyAnZmFjZSBuaWwgKHBv aW50LW1heCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhY2UgKGdldC10ZXh0LXBy b3BlcnR5IHBvcyAnZmFjZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBmYWNlCisg ICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgcG9zIG5leHQgZmFjZSkgcmVzKSkK KyAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgcG9zIG5leHQpKSkpKQorICAgICAgICAgICAg IChraWxsLWJ1ZmZlciBpbmRpcmVjdC1idWZmZXIpKQorICAgICAgICAgICAobnJldmVyc2UgcmVz KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgKGxh bmcpCisgICJDb21wdXRlIGFuZCBjYWNoZSBhIG1vZGUgc3ltYm9sIGZyb20gTEFORywgYSBzeW1i b2wuCitDb25zdWx0IHRoZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcycgY2FjaGUsIG9y IGNvbnN1bHQKK2B0cmVlc2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QnIGFuZCBgbWFqb3ItbW9k ZS1yZW1hcC1hbGlzdCcsIG9yIGJydXRlCitmb3JjZSBtb2RlIHByb2JlLiAgUmV0dXJuIGEgdmFs aWQgbW9kZSBzeW1ib2wgb3IgbmlsLiIKKyAgKGlmLWxldCogKChtYXBwZWQtbW9kZSAoY2FyIChh bGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKSkpKQorICAgICAgbWFw cGVkLW1vZGUKKyAgICAobGV0KiAoKGxhbmctc3RyaW5nIChzeW1ib2wtbmFtZSBsYW5nKSkKKyAg ICAgICAgICAgKGxhbmctbW9kZSAoY29uY2F0IGxhbmctc3RyaW5nICItbW9kZSIpKQorICAgICAg ICAgICAobW9kZSkpCisgICAgICAoaWYgKHNldHEgbW9kZSAoYWxpc3QtZ2V0IGxhbmctbW9kZSB0 cmVlc2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QpKQorICAgICAgICAgIG1vZGUKKyAgICAgICAg KGlmIChzZXRxIG1vZGUgKGFsaXN0LWdldCBsYW5nLW1vZGUgbWFqb3ItbW9kZS1yZW1hcC1hbGlz dCkpCisgICAgICAgICAgICBtb2RlCisgICAgICAgICAgKGNhdGNoIDptb2RlCisgICAgICAgICAg ICAoZG9saXN0IChtb2RlCisgICAgICAgICAgICAgICAgICAgICAobGlzdAorICAgICAgICAgICAg ICAgICAgICAgIDs7IFRyeSBhIHRyZWVzaXQgbW9kZSB1c2luZyB0aGUgcmF3IHN0cmluZy4KKyAg ICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGxhbmctc3RyaW5nICItdHMtbW9kZSIpCisgICAg ICAgICAgICAgICAgICAgICAgOzsgVHJ5IGEgY29udmVudGlvbmFsIG1vZGUgdXNpbmcgdGhlIHJh dyBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgbGFuZy1tb2RlCisgICAgICAgICAgICAg ICAgICAgICAgOzsgVHJ5IGEgdHJlZXNpdCBtb2RlIHVzaW5nIHRoZSBkb3duY2FzZWQgc3RyaW5n LgorICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgKGRvd25jYXNlIGxhbmctc3RyaW5nKSAi LXRzLW1vZGUiKQorICAgICAgICAgICAgICAgICAgICAgIDs7IFRyeSBhIGNvbnZlbnRpb25hbCBt b2RlIHVzaW5nIHRoZSBkb3duY2FzZWQgc3RyaW5nLgorICAgICAgICAgICAgICAgICAgICAgIChj b25jYXQgKGRvd25jYXNlIGxhbmctc3RyaW5nKSAiLW1vZGUiKSkpCisgICAgICAgICAgICAgIChz ZXRxIG1vZGUgKGludGVybiBtb2RlKSkKKyAgICAgICAgICAgICAgKHdoZW4gKGZib3VuZHAgbW9k ZSkKKyAgICAgICAgICAgICAgICAocHVzaCAobGlzdCBsYW5nIG1vZGUpIG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stbW9kZXMpCisgICAgICAgICAgICAgICAgKHRocm93IDptb2RlIG1vZGUpKSkpKSkp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLXRzLWxhbmd1YWdlIChub2RlKQog ICAiQ29udmVydCBOT0RFIHRvIGEgbGFuZ3VhZ2UgZm9yIHRoZSBjb2RlIGJsb2NrLiIKLSAgKGxl dCogKChsYW5nLXN0cmluZyAoYWxpc3QtZ2V0ICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFu Z3VhZ2UtbWFwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl LXRleHQgbm9kZSkgbmlsICMnZXF1YWwpKQotICAgICAgICAgKGxhbmcgKGlmIChzeW1ib2xwIGxh bmctc3RyaW5nKQotICAgICAgICAgICAgICAgICAgIGxhbmctc3RyaW5nCi0gICAgICAgICAgICAg ICAgIChpbnRlcm4gKGRvd25jYXNlIGxhbmctc3RyaW5nKSkpKSkKLSAgICA7OyBGSVhNRTogS2lu ZCBvZiBhIGhhY2sgaGVyZTogd2UgdXNlIHRoaXMgZnVuY3Rpb24gYXMgYSBob29rIGZvcgotICAg IDs7IGxvYWRpbmcgdXAgY29uZmlncyBmb3IgdGhlIGxhbmd1YWdlIGZvciB0aGUgY29kZSBibG9j ayBvbi1kZW1hbmQuCi0gICAgKGxldCAoKG1vZGUgKGFsaXN0LWdldCBsYW5nIG1hcmtkb3duLXRz LWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwKSkpCi0gICAgICA7OyBJZiB0aGVyZSdzIG5vIHN1 cHBvcnRlZCBtb2RlIGZvciB0aGUgbGFuZ3VhZ2UsIHJldHVybiBuaWwsCi0gICAgICA7OyB3aGlj aCBtYWtlcyBFbWFjcyBza2lwIHRoZSBjb2RlIGJsb2NrLgotICAgICAgKGlmIChub3QgKGFuZCBt b2RlIChmYm91bmRwIG1vZGUpKSkKLSAgICAgICAgICBuaWwKLSAgICAgICAgOzsgSWYgdGhlcmUn cyBhIG1ham9yIG1vZGUgZm9yIHRoZSBsYW5ndWFnZSwgc2V0IHVwIHRoZSBjb25maWcKLSAgICAg ICAgOzsgYW5kIHJldHVybiB0aGUgbGFuZ3VhZ2UuCi0gICAgICAgICh3aGVuIChub3QgKG1lbXEg bGFuZyBtYXJrZG93bi10cy0tY29uZmlndXJlZC1sYW5ndWFnZXMpKQotICAgICAgICAgIChtYXJr ZG93bi10cy0tYWRkLWNvbmZpZy1mb3ItbW9kZSBsYW5nIG1vZGUpCi0gICAgICAgICAgKHB1c2gg bGFuZyBtYXJrZG93bi10cy0tY29uZmlndXJlZC1sYW5ndWFnZXMpKQotICAgICAgICBsYW5nKSkp KQorICAobGV0KiAoKGxhbmcgKGludGVybiAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSkpKQorICAg ICAgICAgKG1vZGUgKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgbGFuZykp CisgICAgICAgICAodHMtbGFuZ3VhZ2UgKGFsaXN0LWdldCBsYW5nIG1hcmtkb3duLXRzLS1jb2Rl LWJsb2NrLWxhbmd1YWdlcykpCisgICAgICAgICAobm9uLXRzLWxhbmd1YWdlIChhbGlzdC1nZXQg bGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKSkKKyAgICAoY29uZAor ICAgICAoKGZib3VuZHAgbW9kZSkKKyAgICAgIChjb25kCisgICAgICAgOzsgUmV0dXJuIGtub3du IHRyZWVzaXQgbGFuZ3VhZ2UuCisgICAgICAgKHRzLWxhbmd1YWdlIHRzLWxhbmd1YWdlKQorICAg ICAgIDs7IFJldHVybiBuaWwgZm9yIGtub3duIG5vbi10cmVlc2l0IGxhbmd1YWdlIGZvciBmb250 LWxvY2suCisgICAgICAgKG5vbi10cy1sYW5ndWFnZSBuaWwpCisgICAgICAgOzsgTWFya2Rvd24g aXRzZWxmIG5lZWRzIHR3byBwYXJzZXJzIChtYXJrZG93biArCisgICAgICAgOzsgbWFya2Rvd24t aW5saW5lKSwgc28gdHJlZXNpdCBlbWJlZGRpbmcgKHdoaWNoIGNyZWF0ZXMgb25seQorICAgICAg IDs7IG9uZSkgY2Fubm90IGZ1bGx5IGZvbnRpZnkgaXQuICBSb3V0ZSB0aHJvdWdoIHRoZSBub24t dHMKKyAgICAgICA7OyBwYXRoIHNvIHRoZSB0ZW1wIGJ1ZmZlciBydW5zIHRoZSBmdWxsIG1vZGUg d2l0aCBib3RoCisgICAgICAgOzsgcGFyc2Vycy4KKyAgICAgICAoKHByb3ZpZGVkLW1vZGUtZGVy aXZlZC1wIG1vZGUgJ21hcmtkb3duLXRzLW1vZGUpCisgICAgICAgICh1bmxlc3MgKGFzc3EgbGFu ZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpCisgICAgICAgICAgKHB1c2gg KGNvbnMgbGFuZyBtb2RlKSBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKQor ICAgICAgICBuaWwpCisgICAgICAgKHQKKyAgICAgICAgKGxldCogKChjb25maWd1cmF0aW9uICht YXJrZG93bi10cy0taGFydmVzdC1tb2RlLXRyZWVzaXQtY29uZmlndXJhdGlvbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1vZGUpKQorICAgICAgICAgICAgICAgKHRzLWxhbmd1YWdl IChwbGlzdC1nZXQgY29uZmlndXJhdGlvbiA6bGFuZ3VhZ2UpKSkKKyAgICAgICAgICAoY29uZAor ICAgICAgICAgICAoKGFuZCB0cy1sYW5ndWFnZQorICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0 IGNvbmZpZ3VyYXRpb24gOmZvbnQtbG9jaykpCisgICAgICAgICAgICAobWFya2Rvd24tdHMtLWNv bmZpZ3VyZS1jdXJyZW50LWJ1ZmZlciBjb25maWd1cmF0aW9uKQorICAgICAgICAgICAgKHVubGVz cyAoYXNzcSBsYW5nIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcykKKyAgICAgICAg ICAgICAgKHB1c2ggKGNvbnMgbGFuZyB0cy1sYW5ndWFnZSkgbWFya2Rvd24tdHMtLWNvZGUtYmxv Y2stbGFuZ3VhZ2VzKSkKKyAgICAgICAgICAgIHRzLWxhbmd1YWdlKQorICAgICAgICAgICA7OyBP dGhlcndpc2UsIGNsYXNzaWZ5IG1vZGUgYXMgbm9uLXRyZWUtc2l0dGVyLgorICAgICAgICAgICAo dAorICAgICAgICAgICAgKHVubGVzcyAoYXNzcSBsYW5nIG1hcmtkb3duLXRzLS1jb2RlLWJsb2Nr LW5vbi10cy1tb2RlcykKKyAgICAgICAgICAgICAgKHB1c2ggKGNvbnMgbGFuZyBtb2RlKSBtYXJr ZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKQorICAgICAgICAgICAgbmlsKSkpKSkp CisgICAgICh0IG5pbCkpKSkKKworOzs7IENvZGUgYmxvY2sgbWlub3IgbW9kZSBzdXBwb3J0IGFu ZCBjb2RlLWJsb2NrIGNvbnRleHQgY29tbWFuZHM6CisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtY29k ZS1ibG9jay1jb21tYW5kcyAnKGluZGVudC1mb3ItdGFiLWNvbW1hbmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZWN0cmljLW5ld2xpbmUtYW5kLW1heWJlLWlu ZGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlv bi1hdC1wb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3 bGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudC1k d2ltCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LWxp bmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQtb3It dW5jb21tZW50LXJlZ2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stZmlsbC1wYXJhZ3JhcGgKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ctZmlsbC1yZWluZGVudC1kZWZ1bikKKyAg IkNvbW1hbmRzIHRvIGV4ZWN1dGUgaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQuCitTZWUgYG1hcmtk b3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4iKQorCisoZGVmdmFyIG1hcmtkb3du LXRzLWNvZGUtYmxvY2stdGhpbmctY29tbWFuZHMgJyh4cmVmLWZpbmQtZGVmaW5pdGlvbnMpCisg ICJDb21tYW5kcyB0aGF0IG5lZWQgYSBcInRoaW5nXCIgYXQgcG9pbnQgaW4gYSBjb2RlLWJsb2Nr IGNvbnRleHQuCitTZWUgYG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4i KQorCisoZGVmdmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stcmVnaW9uLWNvbW1hbmRzICcoY29t bWVudC1vci11bmNvbW1lbnQtcmVnaW9uKQorICAiQ29tbWFuZHMgdGhhdCBuZWVkIGEgcmVnaW9u IGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorU2VlIGBtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQt aW4tY29kZS1ibG9jaycuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1lbmFibGUtY29kZS1ibG9j ay1pbi1jb250ZXh0LW1vZGUgKCkKKyAgIkVuYWJsZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1p bi1jb250ZXh0LW1vZGUnIGlmIGluIGEgZmVuY2VkIGNvZGUgYmxvY2suIgorICAobWFya2Rvd24t dHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUKKyAgIChpZiAobWFya2Rvd24tdHMtYXQtY29k ZS1ibG9jay1wKSAxIC0xKSkpCisKKzs7IE5PVEU6IERvIG5vdCBhZGQgdGhpcyBjb21tYW5kIHRv IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzJy4KKyhkZWZ1biBtYXJrZG93bi10cy0t Y29kZS1ibG9jay1uZXdsaW5lICgmb3B0aW9uYWwgYXJnIGludGVyYWN0aXZlKQorICAiSW5zZXJ0 IGEgbmV3bGluZSwgYW5kIG1vdmUgdG8gbGVmdCBtYXJnaW4gb2YgdGhlIG5ldyBsaW5lLgorV2l0 aCBwcmVmaXggYXJndW1lbnQgQVJHLCBpbnNlcnQgdGhhdCBtYW55IG5ld2xpbmVzLgorCitJZiBg ZWxlY3RyaWMtaW5kZW50LW1vZGUnIGlzIGVuYWJsZWQsIHRoaXMgaW5kZW50cyB0aGUgZmluYWwg bmV3IGxpbmUKK3RoYXQgaXQgYWRkcywgYW5kIHJlaW5kZW50cyB0aGUgcHJlY2VkaW5nIGxpbmUu ICBUbyBqdXN0IGluc2VydAorYSBuZXdsaW5lLCB1c2UgXFxbZWxlY3RyaWMtaW5kZW50LWp1c3Qt bmV3bGluZV0uCisKK0lmIGBhdXRvLWZpbGwtbW9kZScgaXMgZW5hYmxlZCwgdGhpcyBtYXkgY2F1 c2UgYXV0b21hdGljIGxpbmUKK2JyZWFraW5nIG9mIHRoZSBwcmVjZWRpbmcgbGluZS4gIEEgbm9u LW5pbCBBUkcgaW5oaWJpdHMgdGhpcy4KKworSWYgdmFyaWFibGUgYHVzZS1oYXJkLW5ld2xpbmVz JyBpcyBlbmFibGVkLCB0aGUgbmV3bGluZSBpcyBtYXJrZWQgd2l0aAordGhlIHRleHQtcHJvcGVy dHkgYGhhcmQnLgorCitBIG5vbi1uaWwgSU5URVJBQ1RJVkUgYXJndW1lbnQgbWVhbnMgdG8gcnVu IHRoZSBgcG9zdC1zZWxmLWluc2VydC1ob29rJy4iCisgIChpbnRlcmFjdGl2ZSAiKlBcbnAiKQor ICAoaWYtbGV0KiAoKGJsb2NrLW1vZGUgKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1hdCkp CisgICAgICAgICAgICAoKGZib3VuZHAgYmxvY2stbW9kZSkpKQorICAgICAgKG1hcmtkb3duLXRz LS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrIGJsb2NrLW1vZGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ25ld2xpbmUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZSkKKyAgICAoZnVuY2FsbC1pbnRlcmFj dGl2ZWx5ICMnbmV3bGluZSBhcmcgaW50ZXJhY3RpdmUpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1jb2RlLWJsb2NrLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9uYWwganVzdGlmeSkKKyAgIlJlZmls bCBvciByZWluZGVudCB0aGUgbWFya2Rvd24gY29udGVudCB0aGF0IGNvbnRhaW5zIHBvaW50Lgor SWYgdGhlIHBvaW50IGlzIGluIGEgc3RyaW5nIG9yIGEgY29tbWVudCwgZmlsbCB0aGUgcGFyYWdy YXBoIHRoYXQKK2NvbnRhaW5zIHBvaW50IG9yIGZvbGxvd3MgcG9pbnQuCisKK090aGVyd2lzZSwg cmVpbmRlbnQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gdGhhdCBjb250YWlucyBwb2ludCBvcgor Zm9sbG93cyBwb2ludC4KKworSWYgSlVTVElGWSBpcyBub24tbmlsIChpbnRlcmFjdGl2ZWx5LCB3 aXRoIHByZWZpeCBhcmd1bWVudCksIGp1c3RpZnkgYXMKK3dlbGwuIgorICAoaW50ZXJhY3RpdmUg IlAiKQorICAoY29uZCAoKGRlcml2ZWQtbW9kZS1wICdwcm9nLW1vZGUpCisgICAgICAgICAoY2Fs bC1pbnRlcmFjdGl2ZWx5ICMncHJvZy1maWxsLXJlaW5kZW50LWRlZnVuIGp1c3RpZnkpKQorICAg ICAgICAodAorICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2ZpbGwtcGFyYWdyYXBoIGp1 c3RpZnkpKSkpCisKKzs7IE5PVEU6IERvIG5vdCBhZGQgdGhpcyBjb21tYW5kIHRvIGBtYXJrZG93 bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzJy4KKyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9j ay14cmVmLWZpbmQtZGVmaW5pdGlvbnMgKCZyZXN0IGFyZ3MpCisgICJIZWxwZXIgY29tbWFuZCBm b3IgYHhyZWYtZmluZC1kZWZpbml0aW9ucycgaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQuCitGaW5k IHRoaW5nIGF0IHBvaW50LgorQWRqdXN0IHRoZSByZWZlcmVuY2VzIG9uIHRoZSB4cmVmIHN0YWNr IHRvIHRoZSBiYXNlIGJ1ZmZlci4KK1Bhc3MgdGhyb3VnaCBBUkdTIGlmIG5vdCBpbiBhIGNvZGUg YmxvY2sgd2l0aCBhbiBhdmFpbGFibGUgbW9kZS4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGlmLWxl dCogKChibG9jay1tb2RlIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtYXQpKQorICAgICAg ICAgICAgKChmYm91bmRwIGJsb2NrLW1vZGUpKSkKKyAgICAgIChjb25kaXRpb24tY2FzZSBlcnIK KyAgICAgICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgICAgICAgKHByb2duCisgICAgICAg ICAgICAgICAgOzsgUmVjb3JkIGEgcGxhY2Vob2xkZXIgeHJlZiBtYXJrZXIgaW4gdGhlIGJhc2Ug YnVmZmVyLiAgVGhpcworICAgICAgICAgICAgICAgIDs7IHdpbGwgYmUgcmV0YWluZWQgaWYgdGhl IGNvbW1hbmQgc3VjY2VlZHMgdG8gcHVzaCBhIG1hcmtlciBpbgorICAgICAgICAgICAgICAgIDs7 IHRoZSBjb2RlLWJsb2NrIGJ1ZmZlciB3aGljaCB3ZSB3aWxsIHBvcC4KKyAgICAgICAgICAgICAg ICAoeHJlZi1wdXNoLW1hcmtlci1zdGFjaykKKyAgICAgICAgICAgICAgICA7OyBgeHJlZi1maW5k LWRlZmluaXRpb25zJyBpcyBhIHRoaW5nIGNvbW1hbmQgaW4KKyAgICAgICAgICAgICAgICA7OyBg bWFya2Rvd24tdHMtY29kZS1ibG9jay10aGluZy1jb21tYW5kcycuCisgICAgICAgICAgICAgICAg KG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrIGJsb2NrLW1vZGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyd4cmVm LWZpbmQtZGVmaW5pdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXJncykpCisgICAgICAgICAgICA7OyBQb3AgdGhlIHRvcCB4cmVm IG1hcmtlci4gIElmIHRoZSBjb21tYW5kIHN1Y2NlZWRlZCwgdGhlCisgICAgICAgICAgICA7OyB0 b3AgbWFya2VyIHdpbGwgYmUgdGhlIGNvZGUtYmxvY2sgYnVmZmVyIG1hcmtlci4gIElmIGl0Cisg ICAgICAgICAgICA7OyBmYWlsZWQsIHdlJ2xsIHBvcCB0aGUgcGxhY2Vob2xkZXIgd2hpY2ggaXMg bm93IG9mIG5vCisgICAgICAgICAgICA7OyB2YWx1ZS4KKyAgICAgICAgICAgIDs7IFRPRE86IFBy b3Bvc2UgYW4gYHhyZWYnIHBvcCBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgImdvCisgICAgICAgICAg ICA7OyBiYWNrIi4KKyAgICAgICAgICAgIChsZXQgKChoaXN0b3J5ICh4cmVmLS1nZXQtaGlzdG9y eSkpKQorICAgICAgICAgICAgICAodW5sZXNzIChudWxsIChjYXIgaGlzdG9yeSkpCisgICAgICAg ICAgICAgICAgKHBvcCAoY2FyIGhpc3RvcnkpKSkpKQorICAgICAgICAoZXJyb3IKKyAgICAgICAg IDs7IFByb3BhZ2F0ZSB0aGUgc2lnbmFsLgorICAgICAgICAgKHNpZ25hbCAoY2FyIGVycikgKGNk ciBlcnIpKSkpCisgICAgOzsgTm90IGluIGEgY29kZSBibG9jayBjb250ZXh0LiAgVGhpcyBzaG91 bGQgcmVhbGx5IG5ldmVyIGhhcHBlbi4KKyAgICAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5ICMneHJl Zi1maW5kLWRlZmluaXRpb25zIGFyZ3MpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1tYXliZS1y dW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrICgpCisgICJIZWxwZXIgZnVuY3Rpb24gdG8gd3JhcCBh IGNvbW1hbmQgZm9yIGEgY29kZS1ibG9jayBjb250ZXh0LgorSWYgYHRoaXMtY29tbWFuZCcgaXMg YSBtZW1iZXIgb2YgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFuZHMnIGFuZAorcG9pbnQg aXMgd2l0aGluIGEgY29kZSBibG9jayB3aXRoIGFuIGF2YWlsYWJsZSBtb2RlLCBpdCB3aWxsIHJ1 biBpbiB0aGF0Citjb2RlIGJsb2NrJ3MgbW9kZSBpbiBhIGJ1ZmZlciBuYXJyb3dlZCB0byBpdHMg Y29udGVudC4gIE90aGVyd2lzZSwgdGhlCitjb21tYW5kIHdpbGwgcnVuIGluIHRoZSBjb250ZXh0 IG9mIHRoZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVyLiIKKyAgKHdoZW4gKG1lbXEgdGhpcy1j b21tYW5kIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFuZHMpCisgICAgKHdoZW4tbGV0KiAo KGNvbW1hbmQgdGhpcy1jb21tYW5kKQorICAgICAgICAgICAgICAgIChibG9jay1tb2RlIChtYXJr ZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtYXQpKQorICAgICAgICAgICAgICAgICgoZmJvdW5kcCBi bG9jay1tb2RlKSkpCisgICAgICAoc2V0cSB0aGlzLWNvbW1hbmQgKGxhbWJkYSAoJnJlc3QgYXJn cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIChhcHBseSAjJ21hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2Rl LWJsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stbW9kZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhcmdzKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcnVuLWNv bW1hbmQtaW4tY29kZS1ibG9jayAoYmxvY2stbW9kZSBjb21tYW5kICZyZXN0IGFyZ3MpCisgICJS dW4gQ09NTUFORCBpbiBCTE9DSy1NT0RFLgorQVJHUyBhcmUgY2FwdHVyZWQgYnkgYG1hcmtkb3du LXRzLS1tYXliZS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4iCisgICh3aGVuLWxldCogKChi ZWcgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ21hcmtkb3duLXRzLWNvZGUtYmVnLW1hcmtl cikpCisgICAgICAgICAgICAgIChlbmQgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ21hcmtk b3duLXRzLWNvZGUtZW5kLW1hcmtlcikpCisgICAgICAgICAgICAgIChzdHIgKGJ1ZmZlci1zdWJz dHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkpCisgICAgOzsgVXNlIGEgdGVtcCAob3Igd29y aykgYnVmZmVyIGJlY2F1c2UgdHJlZXNpdCBjdXJyZW50bHkgY29uZnVzZXMKKyAgICA7OyBub2Rl cyBpbiBhbiBpbmRpcmVjdCBidWZmZXIgZXZlbiBpZiB0aGUgaW5kaXJlY3QgYnVmZmVyIGlzIG5v dAorICAgIDs7IG5hcnJvd2VkLgorICAgIChsZXQqICgodGVtcC1kZWFjdGl2YXRlLW1hcmspCisg ICAgICAgICAgIChvcmlnLXBvaW50IChwb2ludCkpCisgICAgICAgICAgIChvcmlnLW1hcmsgKG1h cmsgdCkpCisgICAgICAgICAgIChvcmlnLW1hcmstYWN0aXZlIG1hcmstYWN0aXZlKQorICAgICAg ICAgICAocmVnaW9uLWJlZyAodXNlLXJlZ2lvbi1iZWdpbm5pbmcpKQorICAgICAgICAgICAocmVn aW9uLWVuZCAodXNlLXJlZ2lvbi1lbmQpKQorICAgICAgICAgICAoYWRqLXBvaW50ICgxKyAoLSBv cmlnLXBvaW50IGJlZykpKQorICAgICAgICAgICAoYWRqLW1hcmsgKHdoZW4gb3JpZy1tYXJrICgx KyAoLSBvcmlnLW1hcmsgYmVnKSkpKQorICAgICAgICAgICAoYWRqLXJlZ2lvbi1iZWcgKHdoZW4g cmVnaW9uLWJlZyAoMSsgKC0gb3JpZy1wb2ludCByZWdpb24tYmVnKSkpKQorICAgICAgICAgICAo YWRqLXJlZ2lvbi1lbmQgKHdoZW4gcmVnaW9uLWVuZCAoMSsgKC0gb3JpZy1wb2ludCByZWdpb24t ZW5kKSkpKQorICAgICAgICAgICAocG9pbnQtZGVsdGEgMCkKKyAgICAgICAgICAgKHNvdXJjZS1i dWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgICAod2l0aC13b3JrLWJ1ZmZlcgorICAgICAg ICAoaW5zZXJ0IHN0cikKKyAgICAgICAgKGdvdG8tY2hhciBhZGotcG9pbnQpCisgICAgICAgIDs7 IFByb3BhZ2F0ZSBtYXJrIChhbmQgcmVnaW9uKS4KKyAgICAgICAgKHdoZW4gb3JpZy1tYXJrLWFj dGl2ZQorICAgICAgICAgIChzZXQtbWFyayBhZGotbWFyaykpCisgICAgICAgIChtYXJrZG93bi10 cy0taW5oaWJpdC1tZXNzYWdlcy1hbmQtd2FybmluZ3MKKyAgICAgICAgICAnbWFya2Rvd24tdHMt aW5oaWJpdC1jb2RlLWJsb2NrLW1vZGUtd2FybmluZ3MKKyAgICAgICAgICAoZGVsYXktbW9kZS1o b29rcworICAgICAgICAgICAgKGxldCAoKG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lCisgICAg ICAgICAgICAgICAgICAgKHByb3ZpZGVkLW1vZGUtZGVyaXZlZC1wIGJsb2NrLW1vZGUgJ21hcmtk b3duLXRzLW1vZGUpKSkKKyAgICAgICAgICAgICAgKGZ1bmNhbGwgYmxvY2stbW9kZSkpKSkKKyAg ICAgICAgKGxldCAoKHBvaW50IChwb2ludCkpCisgICAgICAgICAgICAgIChhcml0eSAoY2RyIChm dW5jLWFyaXR5IGNvbW1hbmQpKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgKChtZW1x IGNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9jay10aGluZy1jb21tYW5kcykKKyAgICAgICAg ICAgICh3aGVuLWxldCogKCh0aGluZyAodGhpbmctYXQtcG9pbnQgJ3N5bWJvbCkpKQorICAgICAg ICAgICAgICAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQgdGhpbmcpKSkKKyAgICAgICAg ICAgKChtZW1xIGNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9jay1yZWdpb24tY29tbWFuZHMp CisgICAgICAgICAgICAod2hlbiAoYW5kIGFkai1yZWdpb24tYmVnIGFkai1yZWdpb24tZW5kKQor ICAgICAgICAgICAgICAoYXBwbHkgIydmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZAorICAg ICAgICAgICAgICAgICAgICAgYWRqLXJlZ2lvbi1iZWcgYWRqLXJlZ2lvbi1lbmQgYXJncykpKQor ICAgICAgICAgICAoKHplcm9wIGFyaXR5KQorICAgICAgICAgICAgKGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kKSkKKyAgICAgICAgICAgKChlcSAxIGFyaXR5KQorICAgICAgICAgICAgKGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kIChjYXIgYXJncykpKQorICAgICAgICAgICAodAor ICAgICAgICAgICAgKGFwcGx5ICMnZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQgYXJncykp KQorICAgICAgICAgIChzZXRxIHN0ciAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChw b2ludC1taW4pIChwb2ludC1tYXgpKSkKKyAgICAgICAgICAoc2V0cSB0ZW1wLWRlYWN0aXZhdGUt bWFyayBkZWFjdGl2YXRlLW1hcmspCisgICAgICAgICAgKHNldHEgcG9pbnQtZGVsdGEgKC0gKHBv aW50KSBwb2ludCkpKQorICAgICAgICAobGV0ICgod29yay1idWZmZXIgKGN1cnJlbnQtYnVmZmVy KSkpCisgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc291cmNlLWJ1ZmZlcgorICAgICAg ICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIGJlZyBlbmQgd29yay1idWZmZXIpCisgICAg ICAgICAgICA7OyBQcm9wYWdhdGUgbWFyayBkZWFjdGl2YXRpb24gdG8gdGhlIHNvdXJjZSBidWZm ZXIuCisgICAgICAgICAgICAoc2V0cSBkZWFjdGl2YXRlLW1hcmsgdGVtcC1kZWFjdGl2YXRlLW1h cmspCisgICAgICAgICAgICA7OyBNb3ZlIHBvaW50IGlmIGl0IG1vdmVkIGluIHRoZSB0ZW1wIGJ1 ZmZlci4KKyAgICAgICAgICAgIChnb3RvLWNoYXIgKCsgb3JpZy1wb2ludCBwb2ludC1kZWx0YSkp CisgICAgICAgICAgICA7OyBSZWNvcmQgdGhlIG9yaWdpbmFsIGNvbW1hbmQuCisgICAgICAgICAg ICAoc2V0cSB0aGlzLWNvbW1hbmQgY29tbWFuZCkKKyAgICAgICAgICAgIDs7IFRoaXMgaGVscHMg bWFpbnRhaW4gZGlzY3JldGUgY29tbWFuZCBhY3Rpb25zLgorICAgICAgICAgICAgKHVuZG8tYm91 bmRhcnkpCisgICAgICAgICAgICA7OyBNYWtlIHN1cmUgdGhlIG9yaWdpbmF0aW5nIHJlZ2lvbiBp cyByZWZvbnRpZmllZC4KKyAgICAgICAgICAgIChmb250LWxvY2stZmx1c2ggYmVnIGVuZCkpKSkp KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1maW5kLWNvZGUtYmxvY2stZGVsaW1pdGVyIChwb3Mg Jm9wdGlvbmFsIGJhY2t3YXJkKQorICAiUmV0dXJuIHRoZSBuZXh0IG9yIHByZXZpb3VzIGZlbmNl ZF9jb2RlX2Jsb2NrX2RlbGltaXRlciBub2RlLCBvciBuaWwuCitTZWFyY2ggc3RhcnRpbmcgYXQg UE9TLgorU2VhcmNoIGJhY2t3YXJkIGlmIEJBQ0tXQVJEIGlzIG5vbi1uaWwuIgorICAodHJlZXNp dC1zZWFyY2gtZm9yd2FyZCAodHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24pCisgICAgICAg ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN0cmluZz0gKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImZlbmNlZF9jb2RlX2Jsb2NrX2RlbGltaXRlciIpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZCkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t ZmluZC1uZXh0LWNvZGUtYmxvY2stZGVsaW1pdGVyICgmb3B0aW9uYWwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgYmFja3dhcmQgcmVtYWlu KQorICAiUmV0dXJuIHRoZSBuZXh0IG9yIHByZXZpb3VzIGZlbmNlZF9jb2RlX2Jsb2NrX2RlbGlt aXRlciBub2RlLCBvciBuaWwuCitTZWFyY2ggc3RhcnRpbmcgYXQgUE9TIG9yIGBwb2ludCcsIGlm IFBPUyBpcyBuaWwuCitTZWFyY2ggYmFja3dhcmQgaWYgQkFDS1dBUkQgaXMgbm9uLW5pbC4KK0lm IFJFTUFJTiBpcyBub24tbmlsLCBtb3ZlIHRvIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSBjdXJy ZW50IGNvZGUKK2Jsb2NrLCBpZiBpbiBvbmUuIgorICAoc2V0cSBwb3MgKG9yIHBvcyAocG9pbnQp KSkKKyAgKGFuZC1sZXQqICgobm9kZSAobWFya2Rvd24tdHMtLWZpbmQtY29kZS1ibG9jay1kZWxp bWl0ZXIgcG9zIGJhY2t3YXJkKSkpCisgICAgKGxldCAoKGluLWJsb2NrIChtYXJrZG93bi10cy1h dC1jb2RlLWJsb2NrLXAgcG9zKSkpCisgICAgICAoY29uZAorICAgICAgICgoYW5kIHJlbWFpbiBp bi1ibG9jaykKKyAgICAgICAgbm9kZSkKKyAgICAgICAocmVtYWluCisgICAgICAgIG5pbCkKKyAg ICAgICAodAorICAgICAgICAod2hpbGUgKGFuZCBub2RlCisgICAgICAgICAgICAgICAgICAgIDs7 IElmIGJhY2t3YXJkLCBza2lwIHRoZSBjdXJyZW50IGJsb2NrJ3MKKyAgICAgICAgICAgICAgICAg ICAgOzsgc3RhcnRpbmcgZGVsaW1pdGVyLgorICAgICAgICAgICAgICAgICAgICAob3IgKGFuZCBi YWNrd2FyZCBpbi1ibG9jayAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBub2RlKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgIChub3QgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcgbm9kZSkp KSkKKyAgICAgICAgICAoc2V0cSBpbi1ibG9jayAobWFya2Rvd24tdHMtYXQtY29kZS1ibG9jay1w IHBvcykpCisgICAgICAgICAgKHNldHEgcG9zIChpZiBiYWNrd2FyZAorICAgICAgICAgICAgICAg ICAgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKQorICAgICAgICAgICAgICAgICAgICAg ICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAgICAgICAgICAoc2V0cSBub2RlIChtYXJrZG93 bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlciBwb3MgYmFja3dhcmQpKSkKKyAgICAgICAg bm9kZSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1tb3ZlLXRvLW5leHQtY29kZS1ibG9jayAo YXJnKQorICAiTW92ZSBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY29kZSBibG9jay4K K1dpdGggdGhlIHByZWZpeCBhcmd1bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4gdGhlIGN1cnJlbnQg Y29kZSBibG9jay4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCogKChub2RlCisg ICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZpbmQtbmV4dC1jb2RlLWJsb2NrLWRlbGltaXRl ciBuaWwgbmlsIGFyZykpKQorICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2Rl KSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtbW92ZS10by1wcmV2aW91cy1jb2RlLWJsb2NrIChh cmcpCisgICJNb3ZlIHBvaW50IHRvIHRoZSBzdGFydCBvZiB0aGUgcHJldmlvdXMgY29kZSBibG9j ay4KK1dpdGggdGhlIHByZWZpeCBhcmd1bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4gdGhlIGN1cnJl bnQgY29kZSBibG9jay4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCogKChub2Rl CisgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZpbmQtbmV4dC1jb2RlLWJsb2NrLWRlbGlt aXRlciBuaWwgJ2JhY2t3YXJkIGFyZykpKQorICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1z dGFydCBub2RlKSkpKQorCis7OzsgVGFibGVzIGFrYSBwaXBlIHRhYmxlczoKKworOzs7OyBVdGls aXRpZXM6CisKKyhkZWZjb25zdCBtYXJrZG93bi10cy10YWJsZS1leHBvcnQtYnVmZmVyCisgICIq bWFya2Rvd24tdHMtdGFibGUtZXhwb3J0KiIpCisKKzs7IEluIGZyZXF1ZW5jeSBtYXRjaGluZyBv cmRlci4KKyhkZWZjb25zdCBtYXJrZG93bi10cy0tdGFibGUtcm93LXR5cGVzCisgICcoInBpcGVf dGFibGVfcm93IgorICAgICJwaXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciCisgICAgInBpcGVfdGFi bGVfaGVhZGVyIikpCisKKzs7IEluIGZyZXF1ZW5jeSBtYXRjaGluZyBvcmRlci4KKyhkZWZjb25z dCBtYXJrZG93bi10cy0tdGFibGUtY2VsbC10eXBlcworICAnKCJwaXBlX3RhYmxlX2NlbGwiCisg ICAgInBpcGVfdGFibGVfZGVsaW1pdGVyX2NlbGwiKSkKKworKGRlZmNvbnN0IG1hcmtkb3duLXRz LS10YWJsZS1kZWxpbWl0ZXItY2VsbC10eXBlcworICAnKCJwaXBlX3RhYmxlX2RlbGltaXRlcl9j ZWxsIgorICAgICJwaXBlX3RhYmxlX2FsaWduX2xlZnQiCisgICAgInBpcGVfdGFibGVfYWxpZ25f cmlnaHQiKSkKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS10YWJsZS1kZWxpbWl0ZXItY2VsbC1z dWJ0eXBlcworICAnKCJwaXBlX3RhYmxlX2FsaWduX2xlZnQiCisgICAgInBpcGVfdGFibGVfYWxp Z25fcmlnaHQiKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1hYnV0dGluZy1wb3MgKHBv cykKKyAgIkFkanVzdCBQT1MgdG8gYWJ1dCBpdHMgY2xvc2VzdCB0ZXh0LgorUmV0dXJuIHBvcyBh ZGp1c3RlZCB0byB0aGUgcG9zaXRpb24gb2YgdGhlIG5lYXJlc3Qgbm9uLWJsYW5rIGNoYXJhY3Rl ci4KK090aGVyd2lzZSwgcmV0dXJuIG5pbCwgZm9yIGV4YW1wbGUsIGlmIHRoZSBsaW5lIGlzIGVt cHR5LiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGdvdG8tY2hhciBwb3MpCisgICAgKHNraXAt Y2hhcnMtZm9yd2FyZCAiW1s6Ymxhbms6XV0iIChwb3MtZW9sKSkKKyAgICAoaWYgKGVxIHBvcyAo cG9zLWVvbCkpCisgICAgICAgIChwcm9nbgorICAgICAgICAgIChnb3RvLWNoYXIgcG9zKQorICAg ICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICJbWzpibGFuazpdXSIgKHBvcy1ib2wpKQorICAg ICAgICAgICh1bmxlc3MgKGVxIHBvcyAocG9zLWJvbCkpCisgICAgICAgICAgICAobWF4IChwb2lu dC1taW4pICgxLSAocG9pbnQpKSkpKQorICAgICAgKG1pbiAocG9pbnQtbWF4KSAoMSsgKHBvaW50 KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsICgmb3B0aW9uYWwg bm9kZSBwb3MgYWJ1dHRpbmcpCisgICJDb21wdXRlIHRhYmxlIGNlbGwgZnJvbSBuYW1lZCBOT0RF IGF0IFBPUy4KK0lmIE5PREUgaXMgbmlsLCB1c2UgdGhlIG5vZGUgYXQgUE9TLgorSWYgUE9TIGlz IG5pbCwgdXNlIGBwb2ludCcuCitJZiBOT0RFIGlzIGEgY2VsbCB0eXBlLCByZXR1cm4gaXQuCitJ ZiBOT0RFIGlzIGEgc3VidHlwZSwgcHJvbW90ZSBpdC4KK0lmIEFCVVRUSU5HIGlzIG5vbi1uaWws IGFkanVzdCBQT1MgdG8gdGhlIG5lYXJlc3Qgbm9uLWJsYW5rIGNoYXJhY3Rlci4KK090aGVyd2lz ZSwgcmV0dXJuIG5pbC4iCisgIDs7IFdlIGNvdWxkIHNhbml0eSBjaGVjayB2aWEgYHRyZWVzaXQt bm9kZS1uYW1lZCcgYW5kIGVycm9yIGlmIG5vdC4KKyAgKHNldHEgcG9zIChvciBwb3MgKHBvaW50 KSkpCisgICh3aGVuIGFidXR0aW5nCisgICAgKHNldHEgcG9zIChvciAobWFya2Rvd24tdHMtLXRh YmxlLWFidXR0aW5nLXBvcyBwb3MpIHBvcykpKQorICAod2hlbi1sZXQqICgobm9kZSAob3Igbm9k ZQorICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3du ICduYW1lZCkpKQorICAgICAgICAgICAgICAodHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkp KQorICAgIChjb25kICgobWVtYmVyIHR5cGUgbWFya2Rvd24tdHMtLXRhYmxlLWNlbGwtdHlwZXMp CisgICAgICAgICAgIG5vZGUpCisgICAgICAgICAgKChtZW1iZXIgdHlwZSBtYXJrZG93bi10cy0t dGFibGUtZGVsaW1pdGVyLWNlbGwtc3VidHlwZXMpCisgICAgICAgICAgICh0cmVlc2l0LW5vZGUt cGFyZW50IG5vZGUpKQorICAgICAgICAgICgobWVtYmVyIHR5cGUgbWFya2Rvd24tdHMtLXRhYmxl LXJvdy10eXBlcykKKyAgICAgICAgICAgKGNvbmQgKChlcSBhYnV0dGluZyAnbGVmdCkKKyAgICAg ICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtY2hpbGQgbm9kZSAwICduYW1lZCkpCisgICAgICAg ICAgICAgICAgIDs7IEFjY291bnQgZm9yICdyaWdodCBvciB0LgorICAgICAgICAgICAgICAgICAo dAorICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZCBub2RlIC0xICduYW1lZCkp KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLXJvdyAoJm9wdGlvbmFsIG5v ZGUgcG9zKQorICAiQ29tcHV0ZSB0YWJsZSByb3cgZnJvbSBuYW1lZCBOT0RFIGF0IFBPUy4KK0lm IE5PREUgaXMgbmlsLCB1c2UgdGhlIG5vZGUgYXQgUE9TLgorSWYgUE9TIGlzIG5pbCwgdXNlIGBw b2ludCcuCitJZiBOT0RFIGlzIGEgcm93IHR5cGUsIHJldHVybiBpdC4KK0lmIE5PREUgaXMgYSB0 YWJsZSBjZWxsIHR5cGUsIHJldHVybiBpdHMgcm93LgorT3RoZXJ3aXNlLCByZXR1cm4gbmlsLiIK KyAgOzsgV2UgY291bGQgc2FuaXR5IGNoZWNrIHZpYSBgdHJlZXNpdC1ub2RlLW5hbWVkJyBhbmQg ZXJyb3IgaWYgbm90LgorICAod2hlbi1sZXQqICgobm9kZSAob3Igbm9kZQorICAgICAgICAgICAg ICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1hdCAob3IgcG9zIChwb2ludCkpICdtYXJrZG93biAn bmFtZWQpKSkKKyAgICAgICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKSkK KyAgICAoaWYgKG1lbWJlciB0eXBlIG1hcmtkb3duLXRzLS10YWJsZS1yb3ctdHlwZXMpCisgICAg ICAgIG5vZGUKKyAgICAgICAodHJlZXNpdC1ub2RlLXBhcmVudCAobWFya2Rvd24tdHMtLXRhYmxl LW5vZGUtY2VsbCBub2RlKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10YWJsZS1wYXJzZS1l cnJvci1wICgmb3B0aW9uYWwgbm9kZSBwb3MpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBuYW1lZCBO T0RFIGF0IFBPUyBpcyBpbiBhbiBcIkVSUk9SXCIgc3VidHJlZS4KK05PREUgbXVzdCBiZSBhIHRh YmxlIGVsZW1lbnQ7IGkuZS4sIGl0cyB0eXBlIHByZWZpeCBpcyBcInBpcGVfdGFibGVcIi4KK0lm IE5PREUgaXMgYSB0YWJsZSwgcmV0dXJuIG5pbCAoaXQgc2hvdWxkbid0IGJlIGluIEVSUk9SKS4K K0lmIE5PREUgaXMgbm90IGEgdGFibGUgZWxlbWVudCwgcmV0dXJuIG5pbC4KK0lmIE5PREUncyBu ZWFyYnkgYW5jZXN0b3IgaXMgYW4gXCJFUlJPUlwiIG5vZGUsIHJldHVybiB0LgorT3RoZXJ3aXNl LCByZXR1cm4gbmlsLiIKKyAgOzsgV2UgY291bGQgc2FuaXR5IGNoZWNrIHZpYSBgdHJlZXNpdC1u b2RlLW5hbWVkJyBhbmQgZXJyb3IgaWYgbm90LgorICAod2hlbi1sZXQqICgocm93IChtYXJrZG93 bi10cy0tdGFibGUtbm9kZS1yb3cgbm9kZSBwb3MpKQorICAgICAgICAgICAgICAodHlwZSAodHJl ZXNpdC1ub2RlLXR5cGUgcm93KSkKKyAgICAgICAgICAgICAgKHBhcmVudCAodHJlZXNpdC1ub2Rl LXBhcmVudCByb3cpKQorICAgICAgICAgICAgICAocGFyZW50LXR5cGUgKHRyZWVzaXQtbm9kZS10 eXBlIHBhcmVudCkpKQorICAgIChjb25kICgoZXF1YWwgdHlwZSAicGlwZV90YWJsZSIpCisgICAg ICAgICAgIG5pbCkKKyAgICAgICAgICAoKGVxdWFsIHBhcmVudC10eXBlICJwaXBlX3RhYmxlIikK KyAgICAgICAgICAgbmlsKQorICAgICAgICAgICgoZXF1YWwgcGFyZW50LXR5cGUgIkVSUk9SIikK KyAgICAgICAgICAgdCkKKyAgICAgICAgICAodAorICAgICAgICAgICAoZXJyb3IgIlNob3VsZCBu ZXZlciBoYXBwZW4iKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgKCZvcHRp b25hbCBwb3MgYWJ1dHRpbmcpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBQT1MgaXMgYXQgb3IgaW4g YSBwaXBlIHRhYmxlLgorSWYgUE9TIGlzIG5pbCwgdXNlIHBvaW50LgorUmV0dXJuIGNvbnMgKHBv cyAuIHRhYmxlLW5vZGUpIGlmIFBPUyBpcyB3aXRoaW4gYSB0YWJsZSwgb3RoZXJ3aXNlCityZXR1 cm4gbmlsLgoraWYgUE9TIGlzIHdpdGhpbiBhIHRhYmxlIGJ1dCB3aXRoIHBhcnNlIGVycm9ycywg c2lnbmFsIGFuIGVycm9yLgorSWYgQUJVVFRJTkcgaXMgbm9uLW5pbCwgYWRqdXN0IFBPUyB0byB0 aGUgbmVhcmVzdCBub24tYmxhbmsgY2hhcmFjdGVyLgorSWYgdGhlIHBhcnNlZCB0YWJsZSBpcyBp biBFUlJPUiwgcmV0dXJuIG5pbC4iCisgIChzZXRxIHBvcyAob3IgcG9zIChwb2ludCkpKQorICAo c2F2ZS1leGN1cnNpb24KKyAgICAoZ290by1jaGFyIHBvcykKKyAgICA7OyBJZiBwb2ludCBpcyBv biBhbiBlbXB0eSBsaW5lLCBpdCBpcyBuZXZlciBhIHRhYmxlLgorICAgICh1bmxlc3MgKGFuZCAo ZW9scCkgKGJvbHApKQorICAgICAgOzsgSWYgcG9pbnQgaXMgYm9sIG9yIGVvbCBpdCBtaWdodCBi ZSBhYnV0dGluZyBhIHBpcGUgc3ltYm9sIHNvCisgICAgICA7OyBsb29rIGZvcndhcmRzIG9yIGJh Y2t3YXJkcyBvbmUgY2hhcmFjdGVyIHRvIHRlc3QgaWYgdGhhdCBwb3MKKyAgICAgIDs7IGlzIGEg dGFibGUuCisgICAgICAod2hlbiBhYnV0dGluZworICAgICAgICAoc2V0cSBwb3MgKG9yIChtYXJr ZG93bi10cy0tdGFibGUtYWJ1dHRpbmctcG9zIHBvcykgcG9zKSkpCisgICAgICAod2hlbi1sZXQq ICgocm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgbmlsIHBvcykpKQorICAgICAgICAo aWYgKG1hcmtkb3duLXRzLS10YWJsZS1wYXJzZS1lcnJvci1wIHJvdykKKyAgICAgICAgICAgIDs7 IERvIG5vdCB1c2UgZXJyb3Igb3Igd2FybmluZyBoZXJlLiAgRXJyb3JzIGludGVyZmVyZSB3aXRo CisgICAgICAgICAgICA7OyB0aGUgY29tbWFuZCBsb29wLiAgV2FybmluZ3MgYXJlIGFubm95aW5n LgorICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAgIChtZXNzYWdlICJJbmNvcnJlY3Rs eSBmb3JtYXR0ZWQgTWFya2Rvd24gdGFibGUgKHBhcnNlciBlcnJvcikiKQorICAgICAgICAgICAg ICBuaWwpCisgICAgICAgICAgKGNvbnMgcG9zICh0cmVlc2l0LXNlYXJjaC1mb3J3YXJkCisgICAg ICAgICAgICAgICAgICAgICByb3cKKyAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxl XFwnIiAnYmFja3dhcmQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZW5hYmxlLWluLXRh YmxlLW1vZGUgKCkKKyAgIkVuYWJsZSBgbWFya2Rvd24tdHMtaW4tdGFibGUtbW9kZScgaWYgaW4g YSB0YWJsZS4KK0EgdGFibGUgd2l0aCBhIHBhcnNlciBFUlJPUiBpcyBpbmVsaWdpYmxlLiIKKyAg KG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUKKyAgIChpZiAobWFya2Rvd24tdHMtYXQtdGFibGUt cCBuaWwgdCkgMSAtMSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLWJvZHktcm93LW5l YXItcG9zICgmb3B0aW9uYWwgcG9zIGFidXR0aW5nKQorICAiUmV0dXJuIHRoZSByb3cgbmVhciBQ T1MuCitSZXR1cm4gbmlsIGlmIG5vdCBhdCBhIHRhYmxlIG9yIHRoZXJlIGlzIG5vIHJvdy4KK090 aGVyd2lzZSByZXR1cm4gY29ucyAocm93IC4gaW4taGVhZGVyKSB3aGVyZSBpbi1oZWFkZXIgaXMg bmlsIG9yIHQuCitUaGlzIGlzIHVzZWZ1bCB0byBpbnNlcnQgYSBuZXcgcm93IGp1c3QgYmVsb3cg dGhlIGhlYWRlciBpbnN0ZWFkIG9mIGp1c3QKK2JlbG93IHRoZSBmaXJzdCByb3cuCitJZiBQT1Mg aXMgbmlsIHVzZSBgcG9pbnQnLgorSWYgQUJVVFRJTkcgaXMgbm9uLW5pbCwgdXNlICgxLSBQT1Mp IGlmIFBPUyBpcyBpbW1lZGlhdGVseSBhZnRlciBhIHBpcGUKK3N5bWJvbC4iCisgIChzZXRxIHBv cyAob3IgcG9zIChwb2ludCkpKQorICAobGV0IChpbi1oZWFkZXIpCisgICAgKHdoZW4tbGV0KiAo KGF0LXRhYmxlIChtYXJrZG93bi10cy1hdC10YWJsZS1wIHBvcyBhYnV0dGluZykpCisgICAgICAg ICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgICAodGFibGUgKGNk ciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICAgKGNlbGwgKG1hcmtkb3duLXRzLS10YWJsZS1u b2RlLWNlbGwgbmlsIHBvcyBhYnV0dGluZykpCisgICAgICAgICAgICAgICAgKGNlbGwtdHlwZSAo dHJlZXNpdC1ub2RlLXR5cGUgY2VsbCkpCisgICAgICAgICAgICAgICAgKHBhcmVudCAodHJlZXNp dC1ub2RlLXBhcmVudCBjZWxsKSkKKyAgICAgICAgICAgICAgICAocGFyZW50LXR5cGUgKHRyZWVz aXQtbm9kZS10eXBlIHBhcmVudCkpCisgICAgICAgICAgICAgICAgKGxpbmVhZ2UgKGxpc3QgY2Vs bC10eXBlIHBhcmVudC10eXBlKSkKKyAgICAgICAgICAgICAgICA7OyBGaW5kIHRoZSBmaXJzdCBy b3cgYWZ0ZXIgdGhlIGhlYWRlciBvciB0aGUgcm93IGF0IFBPUyBpcworICAgICAgICAgICAgICAg IDs7IG9uIGFuZCBpbiB0aGUgc2FtZSB0YWJsZS4KKyAgICAgICAgICAgICAgICAocm93IChjb25k ICgob3IgKG1lbWJlciAicGlwZV90YWJsZV9oZWFkZXIiIGxpbmVhZ2UpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtZW1iZXIgInBpcGVfdGFibGVfZGVsaW1pdGVyX3JvdyIgbGlu ZWFnZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgaW4taGVhZGVyIHQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQgY2VsbCAi XFxgcGlwZV90YWJsZV9yb3dcXCciKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXF1 YWwgY2VsbC10eXBlICJwaXBlX3RhYmxlX3JvdyIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2VsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXF1YWwgcGFyZW50LXR5cGUg InBpcGVfdGFibGVfcm93IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQpKSkp CisgICAgICAod2hlbiAodHJlZXNpdC1ub2RlLWVxIHRhYmxlICh0cmVlc2l0LXNlYXJjaC1mb3J3 YXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxlXFwnIiAnYmFja3dhcmQpKQor ICAgICAgICAoY29ucyByb3cgaW4taGVhZGVyKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS10 YWJsZS1jb21wdXRlLW5vZGUtY29sdW1uIChyb3cgbm9kZSkKKyAgIkNvbXB1dGUgTk9ERSdzIGNv bHVtbiBpbiBST1cuCitSZXR1cm4gbmlsIGlmIE5PREUgaXMgbm90IGluIFJPVyAodGhpcyBzaG91 bGQgbm90IGhhcHBlbikuCitOT0RFIG11c3QgYmUgYSBub2RlIGluIFJPVy4KK1JPVyBtdXN0IGJl IGEgcGlwZV90YWJsZV9oZWFkZXIsIHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvdywgb3IKK3BpcGVf dGFibGVfcm93LiIKKyAgKGNhdGNoIDpjb2x1bW4KKyAgICAobGV0ICgoY291bnQgMCkpCisgICAg ICAoZG9saXN0IChjZWxsICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpCisgICAg ICAgICh3aGVuICh0cmVlc2l0LW5vZGUtZXEgbm9kZSBjZWxsKQorICAgICAgICAgICh0aHJvdyA6 Y29sdW1uIGNvdW50KSkKKyAgICAgICAgKHNldHEgY291bnQgKDErIGNvdW50KSkpKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy10YWJsZS0tZ290by1jb2x1bW4gKGNvbHVtbiAmb3B0aW9uYWwgbm8t ZXJyb3IpCisgICJNb3ZlIHBvaW50IG9uIHRoZSBjdXJyZW50IHJvdyB0byBDT0xVTU4uCitDT0xV TU4gaXMgYSAwLWJhc2VkIGluZGV4LgorUmV0dXJuIG5vbi1uaWwgaWYgc3VjY2Vzc2Z1bC4KK0lm IE5PLUVSUk9SIGlzIG5vbi1uaWwsIHJldHVybiBuaWwgaWYgdGhlIGN1cnJlbnQgcm93IGRvZXMg bm90IGV4dGVuZCB0bworQ09MVU1OLCBvdGhlcndpc2Ugc2lnbmFsIGFuIGVycm9yLgorU2lnbmFs IGFuIGVycm9yIGlmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLiIKKyAgKGlmLWxldCogKChjZWxs IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsIG5pbCBuaWwgdCkpCisgICAgICAgICAgICAo cm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgY2VsbCkpCisgICAgICAgICAgICAoY29s cyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHJvdyAnbmFtZWQpKSkKKyAgICAgIChpZi1sZXQqICgo dGFyZ2V0LWNlbGwgKG50aCBjb2x1bW4gY29scykpKQorICAgICAgICAgIChnb3RvLWNoYXIgKHRy ZWVzaXQtbm9kZS1zdGFydCB0YXJnZXQtY2VsbCkpCisgICAgICAgICh1bmxlc3Mgbm8tZXJyb3IK KyAgICAgICAgICAoZXJyb3IgIkNvbHVtbiAlUyBub3QgZm91bmQiIGNvbHVtbikpKQorICAgIChl cnJvciAiTm90IGF0IGEgdGFibGUiKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tdGFibGUtYWxp Z25lcnMgKHRhYmxlKQorICAiRXh0cmFjdCB0aGUgaGVhZGVyIGxpbmUgYWxpZ25lcnMgZnJvbSBu b2RlIFRBQkxFLgorUmV0dXJuIGEgbGlzdCBvZiBsaXN0cyBvZiB0aGUgZm9ybToKKyAgKDpiZWcg eHh4IDplbmQgeHh4IDphbGlnbiBsZWZ0KQorOmFsaWduIGlzIG9uZSBvZiBgbGVmdCcgYGNlbnRl cicgYHJpZ2h0JyBgdW5zcGVjaWZpZWQnLiIKKyAgKGxldCogKChkZWxpbWl0ZXItcm93ICh0cmVl c2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93XFwnIikpCisg ICAgICAgICAoYWxpZ25lcnMKKyAgICAgICAgICAobGV0IChyZXMpCisgICAgICAgICAgICAoZG9s aXN0IChlbHQgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBkZWxpbWl0ZXItcm93ICduYW1lZCkpCisg ICAgICAgICAgICAgIChsZXQgKChhbGlnbi1iZWcgKHRyZWVzaXQtbm9kZS10eXBlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtY2hpbGQgZWx0IDAgJ25hbWUp KSkKKyAgICAgICAgICAgICAgICAgICAgKGFsaWduLWVuZCAodHJlZXNpdC1ub2RlLXR5cGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZCBlbHQgLTEg J25hbWUpKSkpCisgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QKKyAgICAgICAgICAgICAgICAg ICAgICAgOmJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IGVsdCkKKyAgICAgICAgICAgICAgICAgICAg ICAgOmVuZCAodHJlZXNpdC1ub2RlLWVuZCBlbHQpCisgICAgICAgICAgICAgICAgICAgICAgIDph bGlnbgorICAgICAgICAgICAgICAgICAgICAgICAoY29uZCAoKGFuZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChlcXVhbCBhbGlnbi1iZWcgInBpcGVfdGFibGVfYWxpZ25fbGVmdCIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsIGFsaWduLWVuZCAicGlwZV90 YWJsZV9hbGlnbl9sZWZ0IikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGVmdCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZXF1YWwgYWxpZ24tYmVnICJwaXBlX3RhYmxlX2FsaWduX2xlZnQiKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCBhbGlnbi1lbmQgInBpcGVfdGFibGVf YWxpZ25fcmlnaHQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZW50ZXIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGVxdWFsIGFsaWduLWJlZyAicGlwZV90YWJsZV9hbGlnbl9yaWdodCIpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsIGFsaWduLWVuZCAicGlwZV90YWJsZV9h bGlnbl9yaWdodCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodCAndW5zcGVjaWZpZWQpKSkKKyAgICAgICAgICAg ICAgICAgICAgICByZXMpKSkKKyAgICAgICAgICAgIChucmV2ZXJzZSByZXMpKSkpCisgICAgYWxp Z25lcnMpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lciAod2lkdGgg YWxpZ24pCisgICJNYWtlIGEgTWFya2Rvd24gY29sdW1uIGFsaWduZXIuCitXSURUSCBpcyB0aGUg Y29sdW1uIHdpZHRoLgorQUxJR04gaXMgb25lIG9mIGBsZWZ0JyBgY2VudGVyJyBgcmlnaHQnIGB1 bnNwZWNpZmllZCcuIgorICAocGNhc2UgYWxpZ24KKyAgICAoJ2xlZnQKKyAgICAgKGNvbmNhdCAi OiIgKG1ha2Utc3RyaW5nICgxLSB3aWR0aCkgPy0pKSkKKyAgICAoJ2NlbnRlcgorICAgICAoY29u Y2F0ICI6IiAobWFrZS1zdHJpbmcgKC0gd2lkdGggMikgPy0pICI6IikpCisgICAgKCdyaWdodAor ICAgICAoY29uY2F0IChtYWtlLXN0cmluZyAoMS0gd2lkdGgpID8tKSAiOiIpKQorICAgIChfCisg ICAgIChjb25jYXQgKG1ha2Utc3RyaW5nIHdpZHRoID8tKSkpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLS10YWJsZS1hbGlnbi1jZWxsICh0ZXh0IHdpZHRoIGFsaWduKQorICAiUmV0dXJuIFRFWFQg cGFkZGVkIHRvIFdJRFRIIGFsaWduZWQgdXNpbmcgQUxJR04uCitUcnVuY2F0ZSBURVhUIHdpZGVy IHRoYW4gV0lEVEguICBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8KK2Vuc3Vy ZSB0ZXh0IHdpbGwgZml0LgorQUxJR04gaXMgb25lIG9mIGBsZWZ0JyBgY2VudGVyJyBgcmlnaHQn IGB1bnNwZWNpZmllZCcuIgorICAobGV0KiAoKHN0cmxlbiAobGVuZ3RoIHRleHQpKQorICAgICAg ICAgKHN0cmxlbjAgKG1pbiB3aWR0aCBzdHJsZW4pKQorICAgICAgICAgKHRleHQwIChzdWJzdHJp bmcgdGV4dCAwIHN0cmxlbjApKQorICAgICAgICAgKHBhZCAoLSB3aWR0aCBzdHJsZW4wKSkpCisg ICAgKHBjYXNlIGFsaWduCisgICAgICAoJ2NlbnRlcgorICAgICAgIChsZXQqICgoaGFsZi1wYWQg KG1ha2Utc3RyaW5nIChmbG9vciAoLyBwYWQgMikpID9ccykpCisgICAgICAgICAgICAgIChzIChj b25jYXQKKyAgICAgICAgICAgICAgICAgIGhhbGYtcGFkCisgICAgICAgICAgICAgICAgICB0ZXh0 MAorICAgICAgICAgICAgICAgICAgaGFsZi1wYWQpKSkKKyAgICAgICAgIChzdHJpbmctcGFkCisg ICAgICAgICAgKHN1YnN0cmluZyBzIDAgKG1pbiAobGVuZ3RoIHMpIHdpZHRoKSkKKyAgICAgICAg ICB3aWR0aCkpKQorICAgICAgKCdyaWdodAorICAgICAgIChzdHJpbmctcGFkIHRleHQgd2lkdGgg bmlsICdzdGFydCkpCisgICAgICAoXworICAgICAgIChzdHJpbmctcGFkIHRleHQgd2lkdGgpKSkp KQorCis7Ozs7IENvbW1hbmRzOgorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXRh YmxlICgmb3B0aW9uYWwgbnJvd3MgbmNvbHMgaGVhZGluZ3MgYm9keSkKKyAgIkluc2VydCBhIE1h cmtkb3duIHBpcGUgdGFibGUuCitOUk9XUyBpcyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIG5l dyB0YWJsZSBhbmQgZGVmYXVsdHMgdG8gMy4KKworTkNPTFMgaXMgdGhlIG51bWJlciBvZiBjb2x1 bW5zIGFuZCBkZWZhdWx0cyB0byAzLgorCitIRUFESU5HUyBpcyBhIGxpc3Qgb2YgaGVhZGluZ3Mg YW5kIGRlZmF1bHRzIHRvIGxlZnQtYWxpZ25lZCBzeW50aGVzaXplZAorY29sdW1uIG5hbWVzLiAg SWYgTkNPTFMgaXMgbmlsLCB1c2UgSEVBRElOR1MgbGVuZ3RoLiAgSWYgYm90aCBOQ09MUyBhbmQK K0hFQURJTkdTIGFyZSBub24tbmlsLCB1c2UgdXAgdG8gTkNPTFMgaGVhZGluZ3MsIHN5bnRoZXNp emluZyB0aGUKK3JlbWFpbmRlci4KKworRWFjaCBoZWFkaW5nIGluIHRoZSBsaXN0IGNhbiBiZSBh IHN0cmluZyBjb2x1bW4gbmFtZSBvciBhIGNvbnMgb2YgdGhlCitmb3JtIChuYW1lIC4gYWxpZ25t ZW50KSB3aGVyZSBhbGlnbm1lbnQgaXMgb25lIG9mIHRoZSBzeW1ib2xzIGBsZWZ0JywKK2ByaWdo dCcsIG9yIGBjZW50ZXInLiAgSWYgYSBzdHJpbmcsIGRlZmF1bHQgYWxpZ25tZW50IGlzIHVuc3Bl Y2lmaWVkLgorCitJZiBCT0RZIGlzIG5vbi1uaWwsIGl0IGlzIGEgbGlzdCBvZiBOUk9XUyByb3dz IHdoZXJlIGVhY2ggcm93IGlzIGEgbGlzdAorb2YgTkNPTFMgYm9keSBjZWxscy4KKworRm9yIGNv bnZlbmllbmNlIGFuZCBhZXN0aGV0aWNzLCBwYWQgZWFjaCBib2R5IGNlbGwgdG8gdGhlIHdpZHRo IG9mIGl0cworY29sdW1uJ3MgaGVhZGVyLCBhbmQgYWNjb21tb2RhdGUgYWxpZ25tZW50IGluZGlj YXRvcnMuICBJZiBhIEJPRFkgY2VsbAoraXMgbG9uZ2VyIHRoYW4gaXRzIGNvbHVtbiBoZWFkZXIs IGluc2VydCBpdCB1bmNoYW5nZWQuCisKK05vdGU6IEEgYmxhbmsgbGluZSBpcyBuZWVkZWQgYmVm b3JlIHRoZSB0YWJsZSBmb3IgaXQgdG8gcHJvcGVybHkgcmVuZGVyLgorSWYgdGhlIGxpbmUgcHJl Y2VkaW5nIGBwb2ludCcgaXMgbm90IGJsYW5rLCBpbnNlcnQgb25lLgorCitOb3RlOiBEdWUgdG8g YW4gaXNzdWUgd2l0aCB0aGUgdHJlZS1zaXR0ZXIgTWFya2Rvd24gZ3JhbW1hciwgYSByb3cgb2YK K2VtcHR5IGNlbGxzIGNhdXNlcyBhIHBhcnNpbmcgZXJyb3IuICBUbyBhdm9pZCB0aGlzLCBhbiBl bXB0eSByb3cgd2lsbAorY29udGFpbiBhIHNpbmdsZSBwZXJpb2QgaW4gaXRzIGZpcnN0IGNlbGwu IgorICAoaW50ZXJhY3RpdmUpCisgIChzZXRxIG5yb3dzIChvciBucm93cyAzKSkKKyAgKHNldHEg bmNvbHMgKG9yIG5jb2xzIChhbmQgaGVhZGluZ3MgKGxlbmd0aCBoZWFkaW5ncykpIDMpKQorICAo c2V0cSBoZWFkaW5ncworICAgICAgICAobGV0IChyZXMpCisgICAgICAgICAgKGRvdGltZXMgKHgg bmNvbHMpCisgICAgICAgICAgICAocHVzaCAob3IgKG50aCB4IGhlYWRpbmdzKQorICAgICAgICAg ICAgICAgICAgICAgIChmb3JtYXQgIkNvbHVtbiAlZCIgKDErIHgpKSkKKyAgICAgICAgICAgICAg ICAgIHJlcykpCisgICAgICAgICAgKG5yZXZlcnNlIHJlcykpKQorICAobGV0ICgoaGVhZGluZy13 aWR0aHMKKyAgICAgICAgIChsZXQgKHJlcykKKyAgICAgICAgICAgKGRvbGlzdCAoZWx0IGhlYWRp bmdzKQorICAgICAgICAgICAgIChsZXQgKChzdHIgKGlmIChjb25zcCBlbHQpIChjYXIgZWx0KSBl bHQpKSkKKyAgICAgICAgICAgICAgIChwdXNoIChtYXggbWFya2Rvd24tdHMtdGFibGUtZGVmYXVs dC1jb2x1bW4td2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCBzdHIpKQor ICAgICAgICAgICAgICAgICAgICAgcmVzKSkpCisgICAgICAgICAgIChucmV2ZXJzZSByZXMpKSkp CisgICAgOzsgSWYgcG9pbnQgaXMgbm90IGF0IGJvbCwgaW5zZXJ0IGEgbmV3bGluZS4KKyAgICAo dW5sZXNzIChlcSAocG9pbnQpIChwb3MtYm9sKSkKKyAgICAgIChpbnNlcnQgIlxuIikpCisgICAg OzsgSW5zZXJ0IGFuIGVtcHR5IGxpbmUgaWYgbmVlZGVkLgorICAgICh1bmxlc3MgKHNhdmUtZXhj dXJzaW9uCisgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgLTEpCisgICAgICAgICAgICAgIChl cSAocG9zLWJvbCkgKHBvcy1lb2wpKSkKKyAgICAgIChpbnNlcnQgIlxuIikpCisgICAgOzsgSW5z ZXJ0IHBhZGRlZCBoZWFkaW5nIHRleHQuCisgICAgKGluc2VydCAifCIpCisgICAgKGRvdGltZXMg KHggbmNvbHMpCisgICAgICAobGV0KiAoKGVsdCAobnRoIHggaGVhZGluZ3MpKQorICAgICAgICAg ICAgIChzdHIgKGlmIChjb25zcCBlbHQpIChjYXIgZWx0KSBlbHQpKQorICAgICAgICAgICAgICh3 aWR0aCAobWF4IDMgKG50aCB4IGhlYWRpbmctd2lkdGhzKSkpCisgICAgICAgICAgICAgKHBhZC13 aWR0aCAoLSB3aWR0aCAobGVuZ3RoIHN0cikpKSkKKyAgICAgICAgKGluc2VydCBzdHIgKG1ha2Ut c3RyaW5nIHBhZC13aWR0aCA/XHMpICJ8IikpKQorICAgIChpbnNlcnQgIlxuIikKKyAgICA7OyBJ bnNlcnQgcGFkZGVkIGhlYWRpbmcgYWxpZ25lcnMuCisgICAgKGluc2VydCAifCIpCisgICAgKGRv dGltZXMgKHggbmNvbHMpCisgICAgICAobGV0KiAoKGVsdCAobnRoIHggaGVhZGluZ3MpKQorICAg ICAgICAgICAgIChhbGlnbiAoaWYgKGNvbnNwIGVsdCkgKGNkciBlbHQpICd1bnNwZWNpZmllZCkp CisgICAgICAgICAgICAgKHdpZHRoIChtYXggMyAobnRoIHggaGVhZGluZy13aWR0aHMpKSkpCisg ICAgICAgIChpbnNlcnQgKG1hcmtkb3duLXRzLS10YWJsZS1tYWtlLWFsaWduZXIgd2lkdGggYWxp Z24pKSkKKyAgICAgIChpbnNlcnQgInwiKSkKKyAgICAoaW5zZXJ0ICJcbiIpCisgICAgOzsgSW5z ZXJ0IEJPRFkgY2VsbHMgb3IgZW1wdHkgY2VsbHMuCisgICAgKGRvdGltZXMgKHkgbnJvd3MpCisg ICAgICAoaW5zZXJ0ICJ8IikKKyAgICAgIChsZXQgKChyb3cgKG50aCB5IGJvZHkpKSkKKyAgICAg ICAgKGRvdGltZXMgKHggbmNvbHMpCisgICAgICAgICAgOzsgVE9ETzogUmVtb3ZlIHRoZSBwbGFj ZWhvbGRlciBjaGFyYWN0ZXIgaWYgdGhlIHRyZWUtc2l0dGVyCisgICAgICAgICAgOzsgZ3JhbW1h ciBpcyByZXBhaXJlZC4KKyAgICAgICAgICAobGV0KiAoKHN0ciAob3IgKG50aCB4IHJvdykgKGFu ZCAoZXEgeCAwKSAiLiIpICIiKSkKKyAgICAgICAgICAgICAgICAgKHN0cmxlbiAobGVuZ3RoIHN0 cikpCisgICAgICAgICAgICAgICAgICh3aWR0aCAobnRoIHggaGVhZGluZy13aWR0aHMpKQorICAg ICAgICAgICAgICAgICAocGFkLXdpZHRoIChtYXggMCAoLSB3aWR0aCBzdHJsZW4pKSkpCisgICAg ICAgICAgICAoaW5zZXJ0IHN0cgorICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgcGFk LXdpZHRoID9ccykKKyAgICAgICAgICAgICAgICAgICAgInwiKSkpCisgICAgICAgIChpbnNlcnQg IlxuIikpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1kZWxldGUtdGFibGUgKCkKKyAg IlJlbW92ZSB0aGUgTWFya2Rvd24gdGFibGUgYXQgcG9pbnQuCitJZiBwb2ludCBpcyBub3QgYXQg YSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLS1i YXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJsZS1kZWxldGUtdGFibGUpCisgICh3aGVu LWxldCogKChhdC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAg ICAgICAgICh0YWJsZSAoY2RyIGF0LXRhYmxlKSkpCisgICAgOzsgVE9ETzogUmVtb3ZlIGFmdGVy IGJ1ZyMyMzkwMyBVbmRvIGFmdGVyIGtiIGRpZmZlcnMgZnJvbSBhZnRlciBNLXgKKyAgICAocHVz aCAocG9pbnQpIGJ1ZmZlci11bmRvLWxpc3QpCisgICAgKGRlbGV0ZS1yZWdpb24gKHRyZWVzaXQt bm9kZS1zdGFydCB0YWJsZSkgKHRyZWVzaXQtbm9kZS1lbmQgdGFibGUpKSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy10YWJsZS1wcmV2aW91cy1yb3cgKCkKKyAgIk1vdmUgdG8gdGhlIHByZXZpb3Vz IHJvdyBpbiB0aGUgdGFibGUuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChp bnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93IC0xKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93ICgmb3B0aW9uYWwgbikKKyAgIk1vdmUgdG8gdGhl IG5leHQgcm93IGluIHRoZSB0YWJsZS4KK0lmIE4gaXMgbmVnYXRpdmUsIG1vdmUgdG8gdGhlIHBy ZXZpb3VzIHJvdy4KK0lmIHBvaW50IGlzIG9uIHRoZSBsYXN0IHJvdyBvZiB0aGUgdGFibGUsIGlu c2VydCBhIG5ldyByb3cgYmVsb3cgYW5kCittb3ZlIGludG8gaXQuICBXaXRoIGEgcHJlZml4IGFy Z3VtZW50LCBjbG9uZSB0aGUgZmluYWwgcm93IGludG8gdGhlIG5ldworb25lLgorSWYgbm90IGlu IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0t YmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtbmV4dC1yb3cpCisgIChsZXQgKChi YWNrd2FyZHMgKGFuZCBuICg8IG4gMCkpKSkKKyAgICA7OyBEb24ndCB1c2UgYG1hcmtkb3duLXRz LS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcycgYmVjYXVzZSB3ZSB3YW50CisgICAgOzsgdG8gb3Bl cmF0ZSBpbiB0aGUgaGVhZGVyLgorICAgICh3aGVuLWxldCogKChhdC10YWJsZSAobWFya2Rvd24t dHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxl KSkKKyAgICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAg ICAgKHJvdyAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93IG5pbCBwb3MpKSkKKyAgICAgIDs7 IElmIG5vIG5leHQgb3IgcHJldiBzaWJsaW5nLCB3ZSdyZSBvbiB0aGUgbGFzdC9maXJzdCByb3cu CisgICAgICAobGV0ICgoY3VycmVudC1jb2x1bW4gKGN1cnJlbnQtY29sdW1uKSkKKyAgICAgICAg ICAgIChuZXh0LXJvdyAoaWYgYmFja3dhcmRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICh0 cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5nIHJvdyAnbmFtZWQpCisgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyByb3cgJ25hbWVkKSkpKQorICAgICAgICAo aWYgbmV4dC1yb3cKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBu ZXh0LXJvdykpCisgICAgICAgICAgKHVubGVzcyBiYWNrd2FyZHMKKyAgICAgICAgICAgIChtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtcm93LWJlbG93IGN1cnJlbnQtcHJlZml4LWFyZykpKQorICAg ICAgICAobW92ZS10by1jb2x1bW4gY3VycmVudC1jb2x1bW4pKSkpKQorCisoZGVmdW4gbWFya2Rv d24tdHMtdGFibGUtcHJldmlvdXMtY2VsbCAoKQorICAiTW92ZSB0byB0aGUgcHJldmlvdXMgY2Vs bCBpbiB0aGUgdGFibGUuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLW5leHQtY2VsbCAtMSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy10YWJsZS1uZXh0LWNlbGwgKCZvcHRpb25hbCBuKQorICAiTW92ZSB0byB0aGUg bmV4dCBjZWxsIGluIHRoZSB0YWJsZS4KK0lmIE4gaXMgbmVnYXRpdmUsIG1vdmUgdG8gdGhlIHBy ZXZpb3VzIGNlbGwuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFj dGl2ZSkKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJs ZS1uZXh0LWNlbGwpCisgIChsZXQgKChiYWNrd2FyZHMgKGFuZCBuICg8IG4gMCkpKSkKKyAgICAo d2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAg ICAgICAgICAgICAgIChwb3MgKGNhciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICAgKHRhYmxl IChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQg cG9zICdtYXJrZG93biAnbmFtZWQpKQorICAgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10 cy0tdGFibGUtbm9kZS1jZWxsIG5vZGUpKQorICAgICAgICAgICAgICAgIChjZWxsLXR5cGUgKHRy ZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAgICAgICAgICAgICAgIChyb3cgKG1hcmtkb3duLXRz LS10YWJsZS1ub2RlLXJvdyBjZWxsKSkKKyAgICAgICAgICAgICAgICAocm93LXR5cGUgKHRyZWVz aXQtbm9kZS10eXBlIHJvdykpCisgICAgICAgICAgICAgICAgKG5leHQtY2VsbAorICAgICAgICAg ICAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgOzsgSWYgaW4gYSBwaXBlX3RhYmxlX2Rl bGltaXRlcl9yb3cgYW5kIG5vdCB0aGUgZmlyc3QKKyAgICAgICAgICAgICAgICAgIDs7IG9yIGZp bmFsIGNlbGwgaW4gdGhlIHJvdywgc3RheSB3aXRoaW4gdGhlIHJvdworICAgICAgICAgICAgICAg ICAgOzsgb3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBjb25kaXRpb24gc2hvdWxkIG1hdGNoLgorICAg ICAgICAgICAgICAgICAgKChhbmQgKGVxdWFsIHJvdy10eXBlICJwaXBlX3RhYmxlX2RlbGltaXRl cl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGJhY2t3YXJkcworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5nIGNlbGwgJ25hbWVk KQorICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBj ZWxsICduYW1lZCkpKQorICAgICAgICAgICAgICAgICAgIChpZiBiYWNrd2FyZHMKKyAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1wcmV2LXNpYmxpbmcgY2VsbCAnbmFtZWQpCisg ICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBjZWxsICduYW1l ZCkpKQorICAgICAgICAgICAgICAgICAgOzsgSWYgb24gdGhlIGZpcnN0IHBpcGVfdGFibGVfcm93 J3MgZmlyc3QgY2VsbCBtb3ZpbmcKKyAgICAgICAgICAgICAgICAgIDs7IGJhY2t3YXJkcywgbW92 ZSBpbnRvIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgICAgOzsgcGlwZV90YWJsZV9kZWxpbWl0 ZXJfY2VsbC4KKyAgICAgICAgICAgICAgICAgICgoYW5kIChlcXVhbCBjZWxsLXR5cGUgInBpcGVf dGFibGVfY2VsbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9k ZS10eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtcHJl di1zaWJsaW5nIHJvdyAnbmFtZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJw aXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAo dHJlZXNpdC1ub2RlLXByZXYtc2libGluZyBjZWxsICduYW1lZCkpCisgICAgICAgICAgICAgICAg ICAgICAgICBiYWNrd2FyZHMpCisgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZv cndhcmQKKyAgICAgICAgICAgICAgICAgICAgY2VsbAorICAgICAgICAgICAgICAgICAgICAiXFxg cGlwZV90YWJsZV9kZWxpbWl0ZXJfY2VsbFxcJyIgYmFja3dhcmRzKSkKKyAgICAgICAgICAgICAg ICAgIDs7IElmIG9uIHRoZSBmaXJzdCBwaXBlX3RhYmxlX2hlYWRlcidzIGZpbmFsIGNlbGwKKyAg ICAgICAgICAgICAgICAgIDs7IG1vdmluZyBmb3J3YXJkcywgbW92ZSBpbnRvIHRoZSBmaXJzdAor ICAgICAgICAgICAgICAgICAgOzsgcGlwZV90YWJsZV9kZWxpbWl0ZXJfY2VsbC4KKyAgICAgICAg ICAgICAgICAgICgoYW5kIChlcXVhbCBjZWxsLXR5cGUgInBpcGVfdGFibGVfY2VsbCIpCisgICAg ICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIHJvdyAnbmFt ZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwaXBlX3RhYmxlX2RlbGltaXRl cl9yb3ciKQorICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAodHJlZXNpdC1ub2RlLW5leHQt c2libGluZyBjZWxsICduYW1lZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAobm90IGJhY2t3 YXJkcykpCisgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQKKyAgICAg ICAgICAgICAgICAgICAgY2VsbAorICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9k ZWxpbWl0ZXJfY2VsbFxcJyIgYmFja3dhcmRzKSkKKyAgICAgICAgICAgICAgICAgICh0CisgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNoLWZvcndhcmQKKyAgICAgICAgICAgICAgICAg ICAgY2VsbAorICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9jZWxsXFwnIiBiYWNr d2FyZHMpKSkpKQorICAgICAgOzsgS2VlcCBwb2ludCB3aXRoaW4gdGhlIGN1cnJlbnQgdGFibGUu CisgICAgICAod2hlbiAodHJlZXNpdC1ub2RlLWVxIHRhYmxlICh0cmVlc2l0LXNlYXJjaC1mb3J3 YXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LWNlbGwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBwaXBlX3RhYmxlXFwnIiAnYmFja3dh cmQpKQorICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbmV4dC1jZWxsKSkp CisgICAgICAod2hlbiAob3IgKGVxIG1hcmtkb3duLXRzLXRhYmxlLWF1dG8tYWxpZ24gdCkKKyAg ICAgICAgICAgICAgICAobWVtcSAnY2VsbC1uYXZpZ2F0aW9uIG1hcmtkb3duLXRzLXRhYmxlLWF1 dG8tYWxpZ24pKQorICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tdGFibGUpKSkpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdy1iZWxvdyAoJm9wdGlvbmFsIGNs b25lKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGJlbG93IHBvaW50LgorSWYgcG9pbnQgaXMgaW4g dGhlIGhlYWRlciwgaW5zZXJ0IGJlbG93IHRoZSBmaXJzdCByb3cgb2YgdGhlIHRhYmxlLgorSWYg Q0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xvbmUgdGhlIGN1 cnJlbnQgcm93LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAo aW50ZXJhY3RpdmUgIlAiKQorICAoc2V0cSBjbG9uZSAob3IgY2xvbmUgY3VycmVudC1wcmVmaXgt YXJnKSkKKyAgICAobWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdyAnYmVsb3cgY2xvbmUpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdy1hYm92ZSAoJm9wdGlvbmFsIGNs b25lKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGFib3ZlIHBvaW50LgorSWYgcG9pbnQgaXMgaW4g dGhlIGhlYWRlciwgaW5zZXJ0IGFib3ZlIHRoZSBmaXJzdCByb3cgb2YgdGhlIHRhYmxlLgorSWYg Q0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xvbmUgdGhlIGN1 cnJlbnQgcm93LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAo aW50ZXJhY3RpdmUgIlAiKQorICAoc2V0cSBjbG9uZSAob3IgY2xvbmUgY3VycmVudC1wcmVmaXgt YXJnKSkKKyAgICAobWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LXJvdyAnYWJvdmUgY2xvbmUpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWJlbG93ICgpCisgICJJbnNlcnQg YSB0YWJsZSByb3cgYmVsb3cgcG9pbnQuCitJZiBwb2ludCBpcyBpbiB0aGUgaGVhZGVyLCBpbnNl cnQgYmVsb3cgdGhlIGZpcnN0IHJvdyBvZiB0aGUgdGFibGUuCitJZiBwb2ludCBpcyBub3QgYXQg YSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRh YmxlLWluc2VydC1yb3ctYmVsb3cgJ2Nsb25lKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxl LWNsb25lLXJvdy1hYm92ZSAoKQorICAiSW5zZXJ0IGEgdGFibGUgcm93IGFib3ZlIHBvaW50Lgor SWYgcG9pbnQgaXMgaW4gdGhlIGhlYWRlciwgaW5zZXJ0IGFib3ZlIHRoZSBmaXJzdCByb3cgb2Yg dGhlIHRhYmxlLgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAo aW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtcm93LWFib3ZlICdjbG9u ZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtcm93ICgmb3B0aW9uYWwgYWJv dmUgY2xvbmUpCisgICJJbnNlcnQgYSB0YWJsZSByb3cgYmVsb3cgcG9pbnQuCitJZiBwb2ludCBp cyBpbiB0aGUgaGVhZGVyLCBpbnNlcnQgYmVsb3cgdGhlIGZpcnN0IHJvdyBvZiB0aGUgdGFibGUu CitJZiBBQk9WRSBpcyBub24tbmlsIGFuZCBpcyBub3QgYGJlbG93Jywgb3Igd2l0aCBhIHByZWZp eCBhcmd1bWVudCwKK2luc2VydCB0aGUgcm93IGFib3ZlIHBvaW50LgorSWYgQ0xPTkUgaXMgbm9u LW5pbCwgY2xvbmUgdGhlIGN1cnJlbnQgcm93LCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5CitjZWxs cy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0 aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10 YWJsZS1pbnNlcnQtcm93KQorICAoc2V0cSBhYm92ZSAoY29uZCAoKGVxIGFib3ZlICdiZWxvdykg bmlsKQorICAgICAgICAgICAgICAgICAgICAoYWJvdmUgYWJvdmUpCisgICAgICAgICAgICAgICAg ICAgIChjdXJyZW50LXByZWZpeC1hcmcgdCkpKQorICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1h cmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAocG9zIChjYXIgYXQt dGFibGUpKQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAg ICAgIChkZWxpbWl0ZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxc YHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgICAgICAobmNvbHMgKHRy ZWVzaXQtbm9kZS1jaGlsZC1jb3VudCBkZWxpbWl0ZXItcm93ICduYW1lZCkpCisgICAgICAgICAg ICAgIChoZWFkaW5nLXdpZHRocworICAgICAgICAgICAgICAgKGxldCAocmVzKQorICAgICAgICAg ICAgICAgICAoZG9saXN0IChlbHQgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBkZWxpbWl0ZXItcm93 ICduYW1lZCkpCisgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxlbmd0aCAodHJlZXNpdC1ub2Rl LXRleHQgZWx0KSkgcmVzKSkKKyAgICAgICAgICAgICAgICAgKG5yZXZlcnNlIHJlcykpKSkKKyAg ICAobGV0KiAoKG5lYXIgKG1hcmtkb3duLXRzLS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcyBwb3Mp KQorICAgICAgICAgICAocm93IChjYXIgbmVhcikpCisgICAgICAgICAgIChjdXJyZW50LWNvbHVt biAoY3VycmVudC1jb2x1bW4pKSkKKyAgICAgIDs7IElmIHJvdyBpcyBuaWwsIHRoZXJlIGFyZSB6 ZXJvIHJvd3Mgc28gYWRkIG9uZSBiZWxvdyB0aGUKKyAgICAgIDs7IGRlbGltaXRlci1yb3cuCisg ICAgICAodW5sZXNzIHJvdworICAgICAgICAoc2V0cSBjbG9uZSBuaWwpCisgICAgICAgIChzZXRx IHJvdyBkZWxpbWl0ZXItcm93KQorICAgICAgICAoc2V0cSBhYm92ZSBuaWwpKQorICAgICAgKHNh dmUtZXhjdXJzaW9uCisgICAgICAgIChjb25kIChhYm92ZQorICAgICAgICAgICAgICAgKGdvdG8t Y2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IHJvdykpKQorICAgICAgICAgICAgICAodAorICAgICAg ICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCByb3cpKQorICAgICAgICAgICAg ICAgKGluc2VydCAiXG4iKSkpCisgICAgICAgIChjb25kIChjbG9uZQorICAgICAgICAgICAgICAg OzsgVGhlIGNsb25lIHN0cmF0ZWd5IGlzIFdZU0lXWUcuICBKdXN0IGNvcHkgdGhlIHRleHQKKyAg ICAgICAgICAgICAgIDs7IGFuZCBkb24ndCBmdXNzIHdpdGggY2VsbCBjb250ZW50IGFuZCBwaXBl IHN5bWJvbHMuCisgICAgICAgICAgICAgICA7OyBUaGUgZ3JhbW1hciBpbmNsdWRlcyB0aGUgZmlu YWwgbmV3bGluZSAoYW5kCisgICAgICAgICAgICAgICA7OyBzb21ldGltZXMgbm90KS4KKyAgICAg ICAgICAgICAgIChpbnNlcnQgKHN0cmluZy10cmltLXJpZ2h0CisgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLXRleHQgcm93ICduby1wcm9wZXJ0eSkgIlxuIikpKQorICAgICAg ICAgICAgICAodAorICAgICAgICAgICAgICAgKGluc2VydCAifCIpCisgICAgICAgICAgICAgICAo ZG90aW1lcyAoeCBuY29scykKKyAgICAgICAgICAgICAgICAgKGxldCAoKHBhZC13aWR0aCAobnRo IHggaGVhZGluZy13aWR0aHMpKSkKKyAgICAgICAgICAgICAgICAgICA7OyBUT0RPOiBSZW1vdmUg dGhlIHBsYWNlaG9sZGVyIGNoYXJhY3RlciBpZiB0aGUKKyAgICAgICAgICAgICAgICAgICA7OyB0 cmVlLXNpdHRlciBncmFtbWFyIGlzIHJlcGFpcmVkLgorICAgICAgICAgICAgICAgICAgIChpbnNl cnQgKGlmIChlcSB4IDApICIuIiAiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtl LXN0cmluZyAoLSBwYWQtd2lkdGggKGlmIChlcSB4IDApIDEgMCkpID9ccykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICJ8IikpKSkpCisgICAgICAgICh3aGVuIGFib3ZlCisgICAgICAgICAg KGluc2VydCAiXG4iKSkpCisgICAgICAoY29uZCAoYWJvdmUKKyAgICAgICAgICAgICAod2hlbiAo PiBjdXJyZW50LWNvbHVtbiAwKQorICAgICAgICAgICAgICAgKHdpdGgtc3VwcHJlc3NlZC13YXJu aW5ncyAoKGludGVyYWN0aXZlLW9ubHkgcHJldmlvdXMtbGluZSkpCisgICAgICAgICAgICAgICAg IChwcmV2aW91cy1saW5lKSkpKQorICAgICAgICAgICAgKHQgKHdpdGgtc3VwcHJlc3NlZC13YXJu aW5ncyAoKGludGVyYWN0aXZlLW9ubHkgbmV4dC1saW5lKSkKKyAgICAgICAgICAgICAgICAgKG5l eHQtbGluZSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1yb3cgKCkK KyAgIkRlbGV0ZSB0aGUgdGFibGUgcm93IGF0IHBvaW50LgorSWYgcG9pbnQgaXMgb24gdGhlIGhl YWRlciBvciBkZWxpbWl0ZXIgcm93LCBkbyBub3RoaW5nLgorSWYgcG9pbnQgaXMgbm90IGF0IGEg dGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFy Zi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLXJvdykKKyAgKHdoZW4tbGV0 KiAoKG5lYXIgKG1hcmtkb3duLXRzLS10YWJsZS1ib2R5LXJvdy1uZWFyLXBvcyBuaWwgdCkpCisg ICAgICAgICAgICAgIDs7IEJhaWwgaWYgcG9pbnQgaXMgb24gdGhlIGhlYWRlciBvciBkZWxpbWl0 ZXIgcm93IOKAlCBkbworICAgICAgICAgICAgICA7OyBub3Qgc2lsZW50bHkgZGVsZXRlIGEgYm9k eSByb3cgdGhlIHVzZXIgZGlkIG5vdCBzZWxlY3QuCisgICAgICAgICAgICAgICgobm90IChjZHIg bmVhcikpKQorICAgICAgICAgICAgICAocm93IChjYXIgbmVhcikpKQorICAgIChsZXQgKChjdXJy ZW50LWNvbHVtbiAoY3VycmVudC1jb2x1bW4pKSkKKyAgICAgIChkZWxldGUtcmVnaW9uICh0cmVl c2l0LW5vZGUtc3RhcnQgcm93KQorICAgICAgICAgICAgICAgICAgICAgKG1pbiAoMSsgKHRyZWVz aXQtbm9kZS1lbmQgcm93KSkgKHBvaW50LW1heCkpKQorICAgICAgKG1vdmUtdG8tY29sdW1uIGN1 cnJlbnQtY29sdW1uKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3ctdXAg KCkKKyAgIk1vdmUgdGhlIHJvdyBhdCBwb2ludCB1cCBvbmUgbGluZS4KK0lmIHBvaW50IGlzIG5v dCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24t dHMtdGFibGUtbW92ZS1yb3cpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3ct ZG93biAoKQorICAiTW92ZSB0aGUgcm93IGF0IHBvaW50IGRvd24gb25lIGxpbmUuCitJZiBwb2lu dCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1h cmtkb3duLXRzLXRhYmxlLW1vdmUtcm93ICdkb3duKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRh YmxlLW1vdmUtcm93ICgmb3B0aW9uYWwgZG93bikKKyAgIk1vdmUgdGhlIHJvdyBhdCBwb2ludCB1 cCBvbmUgbGluZS4KK0lmIERPV04gaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVu dCwgbW92ZSB0aGUgcm93IGRvd24gb25lCitsaW5lLgorSWYgcG9pbnQgaXMgb24gdGhlIGhlYWRl ciBvciBkZWxpbWl0ZXIgcm93LCBkbyBub3RoaW5nLgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFi bGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFyZi1p Zi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3cpCisgIChzZXRxIGRvd24gKG9y IGRvd24gY3VycmVudC1wcmVmaXgtYXJnKSkKKyAgKHdoZW4tbGV0KiAoKGF0LXRhYmxlIChtYXJr ZG93bi10cy1hdC10YWJsZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRh YmxlKSkKKyAgICAgICAgICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAg ICAobmVhciAobWFya2Rvd24tdHMtLXRhYmxlLWJvZHktcm93LW5lYXItcG9zIHBvcykpCisgICAg ICAgICAgICAgIDs7IEJhaWwgaWYgcG9pbnQgaXMgb24gdGhlIGhlYWRlciBvciBkZWxpbWl0ZXIg cm93IOKAlCBkbworICAgICAgICAgICAgICA7OyBub3Qgc2lsZW50bHkgbW92ZSBhIGJvZHkgcm93 IHRoZSB1c2VyIGRpZCBub3Qgc2VsZWN0LgorICAgICAgICAgICAgICAoKG5vdCAoY2RyIG5lYXIp KSkKKyAgICAgICAgICAgICAgKHJvdyAoY2FyIG5lYXIpKSkKKyAgICA7OyBEbyBub3QgbW92ZSBh Ym92ZSB0aGUgcGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93LgorICAgIDs7IERvIG5vdCBtb3ZlIGJl bG93IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLgorICAgICh1bmxlc3MgKG9yIChhbmQgKG5vdCBk b3duKQorICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXByZXYtc2libGluZyByb3cg J25hbWVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGlwZV90YWJsZV9kZWxpbWl0 ZXJfcm93IikpCisgICAgICAgICAgICAgICAgKGFuZCBkb3duCisgICAgICAgICAgICAgICAgICAg ICAobm90ICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIHJvdyAnbmFtZWQpKSkpCisgICAgICAo bGV0ICgocm93MiAoaWYgZG93bgorICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUt bmV4dC1zaWJsaW5nIHJvdyAnbmFtZWQpCisgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5v ZGUtcHJldi1zaWJsaW5nIHJvdyAnbmFtZWQpKSkKKyAgICAgICAgICAgIChyb3ctZW5kICh0cmVl c2l0LW5vZGUtZW5kIHJvdykpKQorICAgICAgICA7OyBUT0RPOiBSZW1vdmUgYWZ0ZXIgYnVnIzIz OTAzIFVuZG8gYWZ0ZXIga2IgZGlmZmVycyBmcm9tIGFmdGVyIE0teAorICAgICAgICAocHVzaCAo cG9pbnQpIGJ1ZmZlci11bmRvLWxpc3QpCisgICAgICAgIDs7IElmIHJvdyBwb2ludCBpcyBvdXRz aWRlIGl0cyBzb3VyY2UgcmVnaW9uLCBlLmcuLCBhdCBlb2wsIG1vdmUKKyAgICAgICAgOzsgaXQg aW5zaWRlIHRoZSByZWdpb24gZm9yIHN0YWJpbGl0eS4KKyAgICAgICAgKHdoZW4gKD49IChwb2lu dCkgcm93LWVuZCkKKyAgICAgICAgICAoZ290by1jaGFyIChtYXggKHBvaW50LW1pbikgKDEtIHJv dy1lbmQpKSkpCisgICAgICAgICh0cmFuc3Bvc2UtcmVnaW9ucyAodHJlZXNpdC1ub2RlLXN0YXJ0 IHJvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHJvdykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgcm93MikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHJvdzIpKSkpKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tbGVmdCAoJm9wdGlvbmFsIGNs b25lKQorICAiSW5zZXJ0IGEgdGFibGUgY29sdW1uIHRvIHRoZSBsZWZ0IG9mIHBvaW50J3MgY29s dW1uLgorSWYgQ0xPTkUgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1bWVudCwgY2xv bmUgdGhlIGN1cnJlbnQKK2NvbHVtbiwgb3RoZXJ3aXNlIGluc2VydCBlbXB0eSBjZWxscy4KK1Bv aW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVhZGVyIG9yIGJvZHkuCitJZiBwb2ludCBpcyBub3Qg YXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgIChtYXJrZG93 bi10cy10YWJsZS1pbnNlcnQtY29sdW1uICdsZWZ0IGNsb25lKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLXRhYmxlLWluc2VydC1jb2x1bW4tcmlnaHQgKCZvcHRpb25hbCBjbG9uZSkKKyAgIkluc2Vy dCBhIHRhYmxlIGNvbHVtbiB0byB0aGUgcmlnaHQgb2YgcG9pbnQncyBjb2x1bW4uCitJZiBDTE9O RSBpcyBub24tbmlsLCBvciB3aXRoIGEgcHJlZml4IGFyZ3VtZW50LCBjbG9uZSB0aGUgY3VycmVu dAorY29sdW1uLCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5IGNlbGxzLgorUG9pbnQgY2FuIGJlIGlu IHRoZSB0YWJsZSBoZWFkZXIgb3IgYm9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBk byBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWlu c2VydC1jb2x1bW4gJ3JpZ2h0IGNsb25lKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWNs b25lLWNvbHVtbi1sZWZ0ICgpCisgICJDbG9uZSB0aGUgY3VycmVudCBjb2x1bW4gdG8gaXRzIGxl ZnQuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQg aXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQgJ2Nsb25lKSkKKworKGRlZnVuIG1hcmtk b3duLXRzLXRhYmxlLWNsb25lLWNvbHVtbi1yaWdodCAoKQorICAiQ2xvbmUgdGhlIGN1cnJlbnQg Y29sdW1uIHRvIGl0cyByaWdodC4KK1BvaW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVhZGVyIG9y IGJvZHkuCitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tcmlnaHQgJ2Nsb25l KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4gKCZvcHRpb25hbCBs ZWZ0IGNsb25lKQorICAiSW5zZXJ0IGEgdGFibGUgY29sdW1uIGFmdGVyIHBvaW50J3MgY3VycmVu dCBjb2x1bW4uCitJZiBMRUZUIGlzIG5vbi1uaWwgYW5kIGlzIG5vdCBgcmlnaHQnLCBvciB3aXRo IGEgcHJlZml4IGFyZ3VtZW50LAoraW5zZXJ0IHRoZSBjb2x1bW4gdG8gdGhlIGxlZnQgb2YgdGhl IGN1cnJlbnQgY29sdW1uLgorSWYgQ0xPTkUgaXMgbm9uLW5pbCwgY2xvbmUgdGhlIGN1cnJlbnQg Y29sdW1uLCBvdGhlcndpc2UgaW5zZXJ0IGVtcHR5CitjZWxscy4KK0lmIENMT05FIGlzIGEgbGlz dCwgaXRzIGZpcnN0IGVsZW1lbnQgaXMgdGFyZ2V0LWNvbHVtbi1udW1iZXIuICBJdCBpcwordGhl IGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRoYXQgdGhpcyB2YWx1ZSBpcyB2YWxpZCBmb3IgdGhl IHRhYmxlLAordGhvdWdoIGl0IG1heSBiZSBpbnZhbGlkIGZvciBhIG5vbi11bmlmb3JtIHJhZ2dl ZCByb3cuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9p bnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgICht YXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtaW5zZXJ0LWNv bHVtbikKKyAgKHNldHEgbGVmdCAoY29uZCAoKGVxIGxlZnQgJ3JpZ2h0KSBuaWwpCisgICAgICAg ICAgICAgICAgICAgKGxlZnQgbGVmdCkKKyAgICAgICAgICAgICAgICAgICAoY3VycmVudC1wcmVm aXgtYXJnIHQpKSkKKyAgKHdoZW4tbGV0KiAoKGF0LXRhYmxlIChtYXJrZG93bi10cy1hdC10YWJs ZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgKHBvcyAoY2FyIGF0LXRhYmxlKSkKKyAgICAgICAg ICAgICAgKHRhYmxlIChjZHIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAoZGVsaW1pdGVyLXJv dyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFibGUgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgICAgICA7 OyBDb2x1bW4gcG9zIGZvciBpbnNlcnRpbmcgbWlzc2luZyBsZWFkaW5nIHBpcGVzLgorICAgICAg ICAgICAgICAoZGVsaW0wLXBpcGUtY29sCisgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24K KyAgICAgICAgICAgICAgICAgKGxldCogKChkZWxpbS1jZWxsICh0cmVlc2l0LW5vZGUtY2hpbGQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpbWl0ZXItcm93IDAgJ25h bWVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChiZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBk ZWxpbS1jZWxsKSkpCisgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciAocG9zLWJvbCkpCisgICAgICAgICAgICAgICAgICAgKGlm IChzZWFyY2gtZm9yd2FyZCAifCIgYmVnIHQpCisgICAgICAgICAgICAgICAgICAgICAgICgxLSAo Y3VycmVudC1jb2x1bW4pKQorICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisg ICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkpKQorICAgICAgICAgICAgICAo bm9kZSAodHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24gJ25hbWVkKSkKKyAgICAgICAgICAg ICAgKGNlbGwgKG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLWNlbGwgbm9kZSkpCisgICAgICAgICAg ICAgIChwb2ludC1yb3cgKG1hcmtkb3duLXRzLS10YWJsZS1ub2RlLXJvdyBjZWxsKSkpCisgICAg KGxldCAoKHRhYmxlLWNvbHVtbiAobWFya2Rvd24tdHMtLXRhYmxlLWNvbXB1dGUtbm9kZS1jb2x1 bW4gcG9pbnQtcm93IGNlbGwpKSkKKyAgICAgICh1bmxlc3MgdGFibGUtY29sdW1uCisgICAgICAg IChlcnJvciAiQ291bGQgbm90IGNvbXB1dGUgdGhlIHRhYmxlIGNvbHVtbiIpKQorICAgICAgOzsg Tk9URTogR0ZNIHRhYmxlcyBhbGxvdyBub24tdW5pZm9ybSB0YWJsZSByb3dzLiAgVGhlIGN1cnJl bnQgcm93CisgICAgICA7OyBjb3VsZCBoYXZlIGEgZGlmZmVyaW5nIG51bWJlciBvZiBjb2x1bW5z IGZyb20gb3RoZXIgcm93cy4gIFdlCisgICAgICA7OyBzaWxlbnRseSBkbyBub3RoaW5nIHRvIGEg cm93IHRoYXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZQorICAgICAgOzsgY29tcHV0ZWQgY29sdW1u LgorICAgICAgOzsKKyAgICAgIDs7IE5PVEU6IFRoZSBncmFtbWFyIGFubm95aW5nbHkgaWdub3Jl cyBjZWxsIGxlYWRpbmcgd2hpdGVzcGFjZQorICAgICAgOzsgYnV0IGluY2x1ZGVzIHRyYWlsaW5n IHdoaXRlc3BhY2UsIHNvIGNlbGxzIGFyZSBib3VuZGVkIGJ5IHRoZQorICAgICAgOzsgZmlyc3Qg Z3JhcGggY2hhcmFjdGVyIHVwIHRvIHRoZSBsYXN0IGNoYXJhY3RlciBqdXN0IGJlZm9yZSB0aGUK KyAgICAgIDs7IHBpcGUgc3ltYm9sLCBpbmNsdWRpbmcgd2hpdGVzcGFjZS4gIFRoZSByZXN1bHQg aXMgdGhlIHJhbmdlCisgICAgICA7OyBkb2VzIG5vdCBzdGFydCBpbW1lZGlhdGVseSBhZnRlciB0 aGUgb3B0aW9uYWwgbGVhZGluZyBwaXBlCisgICAgICA7OyBzeW1ib2wgeWV0IGluY29uc2lzdGVu dGx5IGNvbnRpbnVlcyB1bnRpbCBqdXN0IGJlZm9yZSB0aGUKKyAgICAgIDs7IHRyYWlsaW5nIHBp cGUuCisgICAgICAobGV0KiAoKGFkaiAwKSA7IEFkanVzdCBub2RlIHBvc2l0aW9uIG9mZnNldHMg YnkgaW5zZXJ0ZWQgdGV4dC4KKyAgICAgICAgICAgICAod2lkdGggbWFya2Rvd24tdHMtdGFibGUt ZGVmYXVsdC1jb2x1bW4td2lkdGgpCisgICAgICAgICAgICAgKGVtcHR5IChtYWtlLXN0cmluZyB3 aWR0aCA/XHMpKQorICAgICAgICAgICAgIDs7IFRPRE86IFJlbW92ZSB0aGUgcGxhY2Vob2xkZXIg Y2hhcmFjdGVyIGlmIHRoZSB0cmVlLXNpdHRlcgorICAgICAgICAgICAgIDs7IGdyYW1tYXIgaXMg cmVwYWlyZWQuCisgICAgICAgICAgICAgKHBsYWNlaG9sZGVyIChjb25jYXQgIi4iIChtYWtlLXN0 cmluZyAoMS0gd2lkdGgpID9ccykpKQorICAgICAgICAgICAgIChkZWxpbSAobWFrZS1zdHJpbmcg d2lkdGggPy0pKQorICAgICAgICAgICAgIChyb3dzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gdGFi bGUgJ25hbWVkKSkKKyAgICAgICAgICAgICAobnJvd3MgKGxlbmd0aCByb3dzKSkKKyAgICAgICAg ICAgICAodGFyZ2V0LWNvbHVtbi1udW1iZXIgKGFuZCAobGlzdHAgY2xvbmUpIChjYXIgY2xvbmUp KSkKKyAgICAgICAgICAgICA7OyBQb3NpdGlvbiB0byBtb3ZlIHBvaW50IHRvIGFmdGVyIGFsbCBy b3dzIGhhdmUgYmVlbgorICAgICAgICAgICAgIDs7IHVwZGF0ZWQuICBEZXRlcm1pbmlzdGljIHBs YWNlbWVudCBhdm9pZHMgZGVwZW5kaW5nIG9uCisgICAgICAgICAgICAgOzsgdHJlZS1zaXR0ZXIg bmF2aWdhdGlvbiB0aHJvdWdoIGZyZXNobHktaW5zZXJ0ZWQgZW1wdHkKKyAgICAgICAgICAgICA7 OyBjZWxscywgd2hpY2ggdGhlIGdyYW1tYXIgZG9lcyBub3QgYWx3YXlzIHJlcGFyc2UgYXMKKyAg ICAgICAgICAgICA7OyBwaXBlX3RhYmxlX2NlbGwgbm9kZXMuCisgICAgICAgICAgICAgKHRhcmdl dC1wb3MpKQorICAgICAgICA7OyBUT0RPOiBSZW1vdmUgYWZ0ZXIgYnVnIzIzOTAzIFVuZG8gYWZ0 ZXIga2IgZGlmZmVycyBmcm9tIGFmdGVyIE0teAorICAgICAgICAocHVzaCAocG9pbnQpIGJ1ZmZl ci11bmRvLWxpc3QpCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICh3aXRob3V0 LXJlc3RyaWN0aW9uCisgICAgICAgICAgICAoZG90aW1lcyAoeCBucm93cykKKyAgICAgICAgICAg ICAgKHdoZW4tbGV0KiAoKHJvdyAobnRoIHggcm93cykpCisgICAgICAgICAgICAgICAgICAgICAg ICAgIChyb3ctdHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgcm93KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IHNvdXJjZS1jZWxsIHdpbGwgYmUgbmlsIGlmIHRhYmxlLWNvbHVtbiBp cyBiZXlvbmQgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICA7OyByb3cncyBjb2x1bW4g c2V0IGFuZCB0aGF0IHJvdyB3aWxsIGJlIHNraXBwZWQuCisgICAgICAgICAgICAgICAgICAgICAg ICAgIChzb3VyY2UtY2VsbCAobnRoIHRhYmxlLWNvbHVtbiBjb2xzKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgOzsgSWYgY2xvbmluZyB3aXRoIGEgc3BlY2lmaWVkIHRhcmdldC1jb2x1bW4t bnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0YXJnZXQtY2VsbCB3aWxsIGJl IG5pbCBhbmQgdGhlIHJvdyB3aWxsIGJlIHNraXBwZWQuCisgICAgICAgICAgICAgICAgICAgICAg ICAgICh0YXJnZXQtY2VsbCAoaWYgdGFyZ2V0LWNvbHVtbi1udW1iZXIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggdGFyZ2V0LWNvbHVtbi1udW1iZXIgY29s cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtY2VsbCkp CisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IENvbXB1dGUgdGhlIGluc2VydGlvbiBwb2lu dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZyAoY29uZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBJZiBjbG9uaW5nIHRvIGEgc3BlY2lmaWVkIHRhcmdldCwgdXNl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRhcmdldC1jZWxsJ3MgZW5kLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0LWNvbHVtbi1udW1iZXIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGFkagorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgdGFyZ2V0LWNlbGwpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgaW5zZXJ0aW5nIHRvIHRoZSBsZWZ0IG9m IHRoZSBmaXJzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBjb2x1bW4sIHVz ZSBzb3VyY2UgY2VsbCdzIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7 IGFkanVzdGVkIGZvciBpdHMgb3B0aW9uYWwgcGlwZSB0bworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7OyBjYXB0dXJlIGl0cyB3aGl0ZXNwYWNlLiAgSWYgdGhlcmUgaXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgbm8gcGlwZSwgdXNlIGJvbC4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQgbGVmdCAoZXEgdGFibGUtY29sdW1uIDApKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHAgKCsgYWRqCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IHNvdXJjZS1jZWxsKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290 by1jaGFyIHApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg KHBvcy1ib2wpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHNlYXJj aC1mb3J3YXJkICJ8IiBwIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBwICgxLSAocG9pbnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBwIChwb3MtYm9sKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBpbnNlcnRpbmcg bGVmdCBhbmQgYW55IG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGNv bHVtbiwgdXNlIHRoZSBlbmQgb2YgdGhlIHByaW9yCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IGNlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZWZ0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgxKyAodHJlZXNpdC1ub2RlLWVuZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoICgxLSB0YWJsZS1jb2x1bW4pIGNvbHMpKSkp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBpbnNlcnRpbmcgcmlnaHQs IHVzZSB0aGUgZW5kIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRoZSBj dXJyZW50IGNlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGoKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHNvdXJjZS1jZWxsKSkpKSkpCisgICAgICAg ICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAgICAgICAgICAgKGxldCogKChvcmlnLXBv aW50IChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgIChtaXNzaW5nLWxlYWRpbmctcGlw ZQorICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIHRhYmxlLWNvbHVtbiAwKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZ290by1jaGFyIChwb3MtYm9sKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodW5sZXNzIChzZWFyY2gtZm9yd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGFk aiAodHJlZXNpdC1ub2RlLXN0YXJ0IHNvdXJjZS1jZWxsKSkgdCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJ8IikpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHRleHQgKGNvbmQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IElmIGNsb25pbmcsIHJldHJpZXZlIHRo ZSBzb3VyY2UgY2VsbCB0ZXh0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb25l IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgQmFjayB1cCB0byBib2wgb3IgdGhlIHBpcGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgdG8gY2FwdHVyZSB0aGUgd2hpdGVzcGFjZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0aGUgZ3JhbW1hciBsZWF2 ZXMgb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1 cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGFkagorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0 IHNvdXJjZS1jZWxsKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHNraXAtY2hhcnMtYmFja3dhcmQgIltbOmJsYW5rOl1dIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3MtYm9sKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBhZGogKHRyZWVzaXQtbm9kZS1lbmQgc291cmNl LWNlbGwpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBuZXcgY29sdW1u LCBhbmQgdGhpcyBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGRlbGlt aXRlciByb3csIGluc2VydCBhIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IGRlbGltaXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXF1YWwgcm93 LXR5cGUgInBpcGVfdGFibGVfZGVsaW1pdGVyX3JvdyIpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVsaW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBuZXcg Y29sdW1uLCBhbmQgdGhpcyBpcyB0aGUgYSBoZWFkZXIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IG9yIGJvZHkgcm93LCBpbnNlcnQgYSBkZWZhdWx0IGVtcHR5CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5KSkpKQorICAgICAg ICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAoY2xvbmUKKyAgICAgICAgICAg ICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgOzsgQ2xvbmUgdGhlIGZpcnN0IGNv bHVtbiB0byB0aGUgbGVmdC4gIElmIHRoZXJlIGlzCisgICAgICAgICAgICAgICAgICAgIDs7IG5v IHBpcGUgYmVmb3JlIHRoZSBjZWxsIGNvbnRlbnQsIGluc2VydCBvbmUuCisgICAgICAgICAgICAg ICAgICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gMCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAoaW5zZXJ0ICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciBtaXNzaW5nLWxlYWRpbmctcGlw ZSAiIikpKQorICAgICAgICAgICAgICAgICAgICA7OyBDbG9uZSB0aGUgZmlyc3QgY29sdW1uIHRv IHRoZSByaWdodC4KKyAgICAgICAgICAgICAgICAgICAgICgoYW5kIChub3QgbGVmdCkgKGVxIHRh YmxlLWNvbHVtbiAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJ8IgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICA7OyBG b3IgYSBwb3NpdGl2ZSB1c2VyIGV4cGVyaWVuY2UgZ2l2ZW4gZ3JhbW1hcgorICAgICAgICAgICAg ICAgICAgICAgIDs7IGJ1Z3MsIGFkZCBhIG1pc3NpbmcgbGVhZGluZyBwaXBlIHRvIHRoZSBmaXJz dAorICAgICAgICAgICAgICAgICAgICAgIDs7IGNlbGwgYXQgYSBwbGVhc2luZyBwb3NpdGlvbiBh ZnRlciBjbG9uaW5nLgorICAgICAgICAgICAgICAgICAgICAgICh3aGVuIG1pc3NpbmctbGVhZGlu Zy1waXBlCisgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1vdmUtdG8tY29sdW1uIGRlbGltMC1waXBlLWNvbCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKGluc2VydCAifCIpKSkpCisgICAgICAgICAgICAgICAgICAg IDs7IENsb25lIHRoZSBmaW5hbCBjb2x1bW4gdG8gdGhlIGxlZnQuCisgICAgICAgICAgICAgICAg ICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gKDEtIG5jb2xzKSkpCisgICAgICAgICAg ICAgICAgICAgICAgKGluc2VydCB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi fCIpKQorICAgICAgICAgICAgICAgICAgICAgOzsgQ2xvbmUgYSBtaWRkbGUgY29sdW1uIHRvIHRo ZSBsZWZ0LgorICAgICAgICAgICAgICAgICAgICAgKGxlZnQKKyAgICAgICAgICAgICAgICAgICAg ICAoaW5zZXJ0IHRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ8IikpCisgICAg ICAgICAgICAgICAgICAgICA7OyBDbG9uZSBhIG1pZGRsZSBvciBmaW5hbCBjb2x1bW4gdG8gdGhl IHJpZ2h0LgorICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAo aW5zZXJ0ICJ8IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCkpKSkKKworICAg ICAgICAgICAgICAgICAgIDs7IE5vdCBjbG9uaW5nLCBpbnNlcnQgYSBuZXcgY29sdW1uLgorICAg ICAgICAgICAgICAgICAgICgoYW5kIGxlZnQgKGVxIHRhYmxlLWNvbHVtbiAwKSAoZXEgeCAoMS0g bnJvd3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVxdWFsIHJvdy10eXBlICJw aXBlX3RhYmxlX2RlbGltaXRlcl9yb3ciKSkpCisgICAgICAgICAgICAgICAgICAgOzsgVE9ETzog cmVtb3ZlIHBsYWNlaG9sZGVyIGxvZ2ljLgorICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0Cisg ICAgICAgICAgICAgICAgICAgICAifCIKKyAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVy CisgICAgICAgICAgICAgICAgICAgICAob3IgbWlzc2luZy1sZWFkaW5nLXBpcGUgIiIpKSkKKyAg ICAgICAgICAgICAgICAgICAoKGFuZCBsZWZ0IChlcSB0YWJsZS1jb2x1bW4gMCkpCisgICAgICAg ICAgICAgICAgICAgICAgKGluc2VydAorICAgICAgICAgICAgICAgICAgICAgICAifCIKKyAgICAg ICAgICAgICAgICAgICAgICAgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAob3IgbWlzc2lu Zy1sZWFkaW5nLXBpcGUgIiIpKSkKKyAgICAgICAgICAgICAgICAgICAobGVmdAorICAgICAgICAg ICAgICAgICAgICAoaW5zZXJ0CisgICAgICAgICAgICAgICAgICAgICB0ZXh0CisgICAgICAgICAg ICAgICAgICAgICAifCIpKQorICAgICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAg ICAgIChpbnNlcnQKKyAgICAgICAgICAgICAgICAgICAgICJ8IgorICAgICAgICAgICAgICAgICAg ICAgdGV4dCkpKQorCisgICAgICAgICAgICAgICAgICA7OyBDYXB0dXJlIHRoZSBzdGFydCBvZiB0 aGUgbmV3IGNlbGwncyBjb250ZW50IGluCisgICAgICAgICAgICAgICAgICA7OyB0aGUgcm93IHRo YXQgb3JpZ2luYWxseSBjb250YWluZWQgcG9pbnQuCisgICAgICAgICAgICAgICAgICAod2hlbiAo YW5kIChub3QgdGFyZ2V0LXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVz aXQtbm9kZS1lcSByb3cgcG9pbnQtcm93KSkKKyAgICAgICAgICAgICAgICAgICAgKHNldHEgdGFy Z2V0LXBvcworICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHRhcmdldC1jb2x1bW4tbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCB0YXJnZXQtY2VsbCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYW5kIGxlZnQg KG5vdCAoZXEgdGFibGUtY29sdW1uIDApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgInRleHQgfCIgaW5zZXJ0ZWQgYXQgYmVnLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcmlnLXBvaW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBBbGwg b3RoZXIgYnJhbmNoZXMgaW5zZXJ0ICJ8IiBmaXJzdC4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgxKyBvcmlnLXBvaW50KSkpKSkpCisKKyAgICAgICAgICAgICAgICAgIDs7IEFkanVz dCBvZmZzZXQgZm9yIGRlbGV0ZWQgdGV4dC4KKyAgICAgICAgICAgICAgICAgIChzZXRxIGFkaiAo KyBhZGogKC0gKHBvaW50KSBvcmlnLXBvaW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9y aWctcG9pbnQgKHBvaW50KSkpKSkpKQorICAgICAgICAod2hlbiB0YXJnZXQtcG9zCisgICAgICAg ICAgKGdvdG8tY2hhciB0YXJnZXQtcG9zKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJs ZS1kZWxldGUtY29sdW1uICgpCisgICJEZWxldGUgdGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludC4K K1BvaW50IGNhbiBiZSBpbiB0aGUgdGFibGUgaGVhZGVyIG9yIGJvZHkuCitJZiBwb2ludCBpcyBu b3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3du LXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uKQor ICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQor ICAgICAgICAgICAgICAocG9zIChjYXIgYXQtdGFibGUpKQorICAgICAgICAgICAgICAodGFibGUg KGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10cy0tdGFibGUt bm9kZS1jZWxsIG5pbCBwb3MpKQorICAgICAgICAgICAgICAocm93IChtYXJrZG93bi10cy0tdGFi bGUtbm9kZS1yb3cgY2VsbCkpCisgICAgICAgICAgICAgIChjb2xzICh0cmVlc2l0LW5vZGUtY2hp bGRyZW4gcm93ICduYW1lZCkpCisgICAgICAgICAgICAgIChuY29scyAobGVuZ3RoIGNvbHMpKSkK KyAgICAobGV0ICgodGFibGUtY29sdW1uIChtYXJrZG93bi10cy0tdGFibGUtY29tcHV0ZS1ub2Rl LWNvbHVtbiByb3cgY2VsbCkpKQorICAgICAgKHVubGVzcyB0YWJsZS1jb2x1bW4KKyAgICAgICAg KGVycm9yICJDb3VsZCBub3QgY29tcHV0ZSB0aGUgdGFibGUgY29sdW1uIikpCisgICAgICA7OyBO T1RFOiBHRk0gdGFibGVzIGFsbG93IG5vbi11bmlmb3JtIHRhYmxlIHJvd3MuICBUaGUgY3VycmVu dCByb3cKKyAgICAgIDs7IGNvdWxkIGhhdmUgYSBkaWZmZXJpbmcgbnVtYmVyIG9mIGNvbHVtbnMg ZnJvbSBvdGhlciByb3dzLiAgV2UKKyAgICAgIDs7IHNpbGVudGx5IGRvIG5vdGhpbmcgdG8gYSBy b3cgdGhhdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlCisgICAgICA7OyBjb21wdXRlZCBjb2x1bW4u CisgICAgICA7OworICAgICAgOzsgTk9URTogVGhlIGdyYW1tYXIgYW5ub3lpbmdseSBpZ25vcmVz IGNlbGwgbGVhZGluZyB3aGl0ZXNwYWNlCisgICAgICA7OyBidXQgZG9lcyBpbmNsdWRlIHRyYWls aW5nIHdoaXRlc3BhY2Ugc28gY2VsbHMgYXJlIGJvdW5kZWQgYnkKKyAgICAgIDs7IHRoZSBmaXJz dCBncmFwaCBjaGFyYWN0ZXIgdXAgdG8gdGhlIGxhc3QgY2hhcmFjdGVyIGp1c3QgYmVmb3JlCisg ICAgICA7OyB0aGUgcGlwZSBzeW1ib2wsIGluY2x1ZGluZyB3aGl0ZXNwYWNlLgorICAgICAgOzsK KyAgICAgIDs7IFRoZSBncmFtbWFyIGFsc28gY29uc2lkZXJzIHRoZSB0cmFpbGluZyBwaXBlIHN5 bWJvbCB0byBiZSBhCisgICAgICA7OyBwYXJ0IG9mIGl0cyBwcmVjZWRpbmcgY2VsbCBzbyB0aGF0 J3Mgd2hhdCB3ZSBkZWxldGUgd2hlbiB3ZQorICAgICAgOzsgZGVsZXRlIGEgY29sdW1uJ3MgY2Vs bDsgaS5lLiwgaWYgdGhlcmUgaXMgYSBwaXBlIGJlZm9yZSB0aGUKKyAgICAgIDs7IGZpcnN0IGNv bHVtbiwgd2UgZGVsZXRlIGl0LgorICAgICAgKGxldCogKChhZGogMCkgOyBBZGp1c3Qgbm9kZSBw b3NpdGlvbiBvZmZzZXRzIGJ5IGRlbGV0ZWQgdGV4dC4KKyAgICAgICAgICAgICAocm93cyAodHJl ZXNpdC1ub2RlLWNoaWxkcmVuIHRhYmxlICduYW1lZCkpCisgICAgICAgICAgICAgKG5yb3dzIChs ZW5ndGggcm93cykpKQorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAod2l0aG91 dC1yZXN0cmljdGlvbgorICAgICAgICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgICAg ICAgIDs7IElmIGNlbGwgaXMgbmlsLCBpdCBpcyBiZXlvbmQgdGhlIHRhYmxlLWNvbHVtbiBhbmQg aXRzCisgICAgICAgICAgICAgIDs7IHJvdyBpcyBpZ25vcmVkLgorICAgICAgICAgICAgICAod2hl bi1sZXQqICgocm93IChudGggeCByb3dzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNv bHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpCisgICAgICAgICAgICAgICAgICAgICAgICAg IChjZWxsIChudGggdGFibGUtY29sdW1uIGNvbHMpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2VsbC1iZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBjZWxsKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNlbGwtZW5kICh0cmVlc2l0LW5vZGUtZW5kIGNlbGwpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBBZGp1c3QgYmVnIHRvIHRyaW0gdGhlIGdyYW1tYXIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgdW5hY2NvdW50ZWQtZm9yIGxlYWRpbmcgd2hpdGVzcGFjZS4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZyAoY29uZAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBJZiB0aGlzIGlzIHRoZSBzb2xlIGNvbHVtbiwgZGVsZXRlIGZyb20g Ym9sLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxIG5jb2xzIDEpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIGNlbGwtYmVnIGFkaikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9zLWJvbCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDs7IElmIHRoaXMgaXMgdGhlIGZpcnN0IGNvbHVtbiwgZGVs ZXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGZyb20gdGhlIHBpcGUsIGlm IHRoZXJlIGlzIG9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgb3RoZXJ3 aXNlIGNlbGwtYmVnLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxIHRhYmxl LWNvbHVtbiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHAgKC0g Y2VsbC1iZWcgYWRqKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo cG9zLWJvbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoc2VhcmNo LWZvcndhcmQgInwiIHAgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgxLSAocG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHApKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgdGhpcyBpcyB0aGUgZmluYWwg Y29sdW1uLCBkZWxldGUgZnJvbSB0aGUgcHJpb3IgcGlwZSBzeW1ib2wuCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoZXEgdGFibGUtY29sdW1uICgxLSBuY29scykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgocCAoLSAodHJlZXNpdC1ub2RlLWVuZAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggKDEtIHRh YmxlLWNvbHVtbikgY29scykpIGFkaikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZ290by1jaGFyIHApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp ZiAoc2VhcmNoLWZvcndhcmQgInwiICgtIGNlbGwtYmVnIGFkaikgdCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IE90 aGVyd2lzZSwgc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgcHJpb3IgY2VsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtICh0cmVlc2l0LW5vZGUtZW5k CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggKDEtIHRhYmxl LWNvbHVtbikgY29scykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGop KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IEFkanVzdCBlbmQgdG8gdHJpbSB0aGUg dHJhaWxpbmcgcGlwZSBzeW1ib2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgY29uc2lk ZXJlZCBieSB0aGUgZ3JhbW1hciB0byBiZSBwYXJ0IG9mIGl0cworICAgICAgICAgICAgICAgICAg ICAgICAgICA7OyBwcmVjZWRpbmcgY2VsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGVu ZCAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB0aGlzIGlzIHRo ZSBzb2xlIGNvbHVtbiwgZGVsZXRlIHVudGlsIGVvbC4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKChlcSBuY29scyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdvdG8tY2hhciAoLSBjZWxsLWJlZyBhZGopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBvcy1lb2wpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB0 aGlzIGlzIHRoZSBmaW5hbCBjb2x1bW4sIGRlbGV0ZSB1bnRpbCBlb2wuCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoZXEgdGFibGUtY29sdW1uICgxLSBuY29scykpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIGNlbGwtZW5kIGFkaikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9zLWVvbCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDs7IE90aGVyd2lzZSwgbG9vayBmb3J3YXJkIGZyb20gY2VsbC1l bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgKHdoaWNoIGluY2x1ZGVzIHRo ZSBjZWxsJ3MgdHJhaWxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgd2hp dGVzcGFjZSkgZm9yIGEgcGlwZSBzeW1ib2wuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIGNl bGwtZW5kIGFkaikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHJlLXNl YXJjaC1mb3J3YXJkICJ8Kz8iIChwb3MtZW9sKSB0KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgxLSAocG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjZWxsLWVuZCkpKSkpCisgICAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVnIGVu ZCkKKyAgICAgICAgICAgICAgICAoc2V0cSBhZGogKCsgYWRqICgtIGVuZCBiZWcpKSkpKSkpKSkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tbGVmdCAoKQorICAiTW92 ZSB0aGUgdGFibGUgY29sdW1uIGF0IHBvaW50IHRvIGl0cyBsZWZ0LgorUG9pbnQgY2FuIGJlIGlu IHRoZSB0YWJsZSBoZWFkZXIgb3IgYm9keS4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBk byBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAobWFya2Rvd24tdHMtdGFibGUtbW92ZS1j b2x1bW4gJ2xlZnQpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tcmln aHQgKCkKKyAgIk1vdmUgdGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludCB0byBpdHMgcmlnaHQuCitQ b2ludCBjYW4gYmUgaW4gdGhlIHRhYmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQgaXMgbm90 IGF0IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10 cy10YWJsZS1tb3ZlLWNvbHVtbiAncmlnaHQpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUt bW92ZS1jb2x1bW4gKCZvcHRpb25hbCBsZWZ0KQorICAiTW92ZSB0aGUgdGFibGUgY29sdW1uIGF0 IHBvaW50IHJpZ2h0IG9yIGxlZnQuCitJZiBMRUZUIGlzIG5vbi1uaWwgYW5kIGlzIG5vdCBgcmln aHQnLCBvciB3aXRoIGEgcHJlZml4IGFyZ3VtZW50LAorbW92ZSB0aGUgY29sdW1uIHRvIGl0cyBs ZWZ0LgorRG8gbm90aGluZyBpZiBhIHJvdyBiZWluZyBtb3ZlZCBpcyBub3Qgd2l0aGluIHRoZSBj b2x1bW5zIG9mIHRoZSBoZWFkZXIuCitEbyBub3RoaW5nIGlmIG1vdmluZyBsZWZ0IGFuZCB0aGUg Y3VycmVudCBjb2x1bW4gaXMgdGhlIGZpcnN0IGNvbHVtbiBvZgordGhlIGN1cnJlbnQgcm93Lgor RG8gbm90aGluZyBpZiBtb3ZpbmcgcmlnaHQgYW5kIHRoZSBjdXJyZW50IGNvbHVtbiBpcyB0aGUg ZmluYWwgY29sdW1uIG9mCit0aGUgY3VycmVudCByb3cuCitQb2ludCBjYW4gYmUgaW4gdGhlIHRh YmxlIGhlYWRlciBvciBib2R5LgorSWYgcG9pbnQgaXMgbm90IGF0IGEgdGFibGUsIGRvIG5vdGhp bmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAn bWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4pCisgIChzZXRxIGxlZnQgKGNvbmQgKChlcSBs ZWZ0ICdyaWdodCkgbmlsKQorICAgICAgICAgICAgICAgICAgIChsZWZ0IGxlZnQpCisgICAgICAg ICAgICAgICAgICAgKGN1cnJlbnQtcHJlZml4LWFyZyB0KSkpCisgICh3aGVuLWxldCogKChhdC10 YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgIChwb3Mg KGNhciBhdC10YWJsZSkpCisgICAgICAgICAgICAgICh0YWJsZSAoY2RyIGF0LXRhYmxlKSkKKyAg ICAgICAgICAgICAgKG5vZGUgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3duICduYW1lZCkp CisgICAgICAgICAgICAgIChjZWxsIChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1jZWxsIG5vZGUp KQorICAgICAgICAgICAgICAocm93IChtYXJrZG93bi10cy0tdGFibGUtbm9kZS1yb3cgbm9kZSkp CisgICAgICAgICAgICAgIChoZWFkZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlxcYHBpcGVfdGFibGVfaGVhZGVyXFwnIikpCisgICAgICAgICAgICAgIChuaGVhZGVy cyAobGVuZ3RoICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gaGVhZGVyLXJvdyAnbmFtZWQpKSkKKyAg ICAgICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkKKyAg ICAgICAgICAgICAgKG5jb2xzIChsZW5ndGggY29scykpKQorICAgIChsZXQgKCh0YWJsZS1jb2x1 bW4gKG1hcmtkb3duLXRzLS10YWJsZS1jb21wdXRlLW5vZGUtY29sdW1uIHJvdyBjZWxsKSkpCisg ICAgICAodW5sZXNzIHRhYmxlLWNvbHVtbgorICAgICAgICAoZXJyb3IgIkNvdWxkIG5vdCBjb21w dXRlIHRoZSB0YWJsZSBjb2x1bW4iKSkKKyAgICAgIChpZiAoPj0gdGFibGUtY29sdW1uIG5oZWFk ZXJzKQorICAgICAgICAgIChtZXNzYWdlICJSYWdnZWQvdW5ldmVuIGNvbHVtbiBjYW5ub3QgYmUg bW92ZWQiKQorICAgICAgICA7OyBBIEIgQyBEIC0+IEIgQSBDIEQKKyAgICAgICAgOzsgTW92ZSBB IGxlZnQ6IGRvIG5vdGhpbmcKKyAgICAgICAgOzsgTW92ZSBEIHJpZ2h0OiBkbyBub3RoaW5nCisg ICAgICAgIDs7IE1vdmUgY3VycmVudCBjb2x1bW4gbGVmdDoKKyAgICAgICAgOzsgICBzb3VyY2Ug Y29sdW1uID0gdCAtIDEKKyAgICAgICAgOzsgTW92ZSBjdXJyZW50IGNvbHVtbiByaWdodDoKKyAg ICAgICAgOzsgICBjbG9uZSB0IHRvIHQrMSBpZiB0aGUgZmluYWwgY29sdW1uLCBvdGhlcndpc2Ug dCsyCisgICAgICAgIDs7ICAgZGVsZXRlIHQKKyAgICAgICAgKGNvbmQgKChhbmQgbGVmdCAoZXEg dGFibGUtY29sdW1uIDApKQorICAgICAgICAgICAgICAgKG1lc3NhZ2UgIkxlZnRtb3N0IGNvbHVt biBjYW5ub3QgYmUgbW92ZWQgbGVmdCIpCisgICAgICAgICAgICAgICBuaWwpCisgICAgICAgICAg ICAgICgoYW5kIChub3QgbGVmdCkgKGVxIHRhYmxlLWNvbHVtbiAoMS0gbmNvbHMpKSkKKyAgICAg ICAgICAgICAgIChtZXNzYWdlICJSaWdodG1vc3QgY29sdW1uIGNhbm5vdCBiZSBtb3ZlZCByaWdo dCIpCisgICAgICAgICAgICAgICBuaWwpCisgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAg ICAobGV0ICgoc291cmNlLWNvbHVtbiAoaWYgbGVmdAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgxLSB0YWJsZS1jb2x1bW4pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhYmxlLWNvbHVtbikpCisgICAgICAgICAgICAgICAgICAgICAodGFy Z2V0LWNvbHVtbiAoaWYgbGVmdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhYmxlLWNvbHVtbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo MSsgdGFibGUtY29sdW1uKSkpKQorICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAg ICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtLWdvdG8tY29sdW1uIHNvdXJjZS1j b2x1bW4pCisgICAgICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1 bW4KKyAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0IChsaXN0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGFyZ2V0LWNvbHVtbikpKQorICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMt dGFibGUtLWdvdG8tY29sdW1uIHNvdXJjZS1jb2x1bW4pCisgICAgICAgICAgICAgICAgIChtYXJr ZG93bi10cy10YWJsZS1kZWxldGUtY29sdW1uKQorICAgICAgICAgICAgICAgICA7OyBFbXB0eSBj ZWxscyBjYW4gY29uZnVzZSB0aGUgZ3JhbW1hciwgc28gbm8tZXJyb3IgaGVyZS4KKyAgICAgICAg ICAgICAgICAgKGlmIGxlZnQKKyAgICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy10YWJs ZS0tZ290by1jb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtY29sdW1uICduby1l cnJvcikKKyAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtdGFibGUtLWdvdG8tY29sdW1u CisgICAgICAgICAgICAgICAgICAgIHRhcmdldC1jb2x1bW4gJ25vLWVycm9yKSkpKSkpKSkpCisK KyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4tbGVmdCAoKQorICAiQWxpZ24g dGhlIHRhYmxlIGNvbHVtbiBhdCBwb2ludCB0byB0aGUgbGVmdC4KK0RvIHRoZSB3b3JrIHdpdGgg YG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWNvbHVtbicsIHdoaWNoIHNlZSBmb3IgbW9yZQorZGV0 YWlscy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWFsaWduLWNvbHVt biAnbGVmdCkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4tY2VudGVy ICgpCisgICJBbGlnbiB0aGUgdGFibGUgY29sdW1uIGF0IHBvaW50IHRvIHRoZSBjZW50ZXIuCitE byB0aGUgd29yayB3aXRoIGBtYXJrZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4nLCB3aGljaCBz ZWUgZm9yIG1vcmUKK2RldGFpbHMuIgorICAoaW50ZXJhY3RpdmUpCisgIChtYXJrZG93bi10cy10 YWJsZS1hbGlnbi1jb2x1bW4gJ2NlbnRlcikpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1h bGlnbi1jb2x1bW4tcmlnaHQgKCkKKyAgIkFsaWduIHRoZSB0YWJsZSBjb2x1bW4gYXQgcG9pbnQg dG8gdGhlIHJpZ2h0LgorRG8gdGhlIHdvcmsgd2l0aCBgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24t Y29sdW1uJywgd2hpY2ggc2VlIGZvciBtb3JlCitkZXRhaWxzLiIKKyAgKGludGVyYWN0aXZlKQor ICAobWFya2Rvd24tdHMtdGFibGUtYWxpZ24tY29sdW1uICdyaWdodCkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy10YWJsZS1hbGlnbi1jb2x1bW4gKCZvcHRpb25hbCBhbGlnbikKKyAgIkFsdGVyIHRo ZSB0YWJsZSBjb2x1bW4gYWxpZ25tZW50IGF0IHBvaW50LgorQWx0ZXIgdGhlIGNvbHVtbiBwb2lu dCBpcyBpbi4KKworTm90ZTogVG8gY29tcHV0ZSB0aGUgY29sdW1uLCBwb2ludCBtdXN0IGJlIHdp dGhpbiB0aGUgY29sdW1uIGFuZCBjYW5ub3QKK2JlIG9uIHRoZSBsZWFkaW5nIG9yIHRyYWlsaW5n IHdoaXRlc3BhY2Ugb3Igb24gYSBjb2x1bW4gZGVsaW1pdGVyLgorCitBTElHTiBjYW4gYmUgb25l IG9mIHRoZSBzeW1ib2xzIGBsZWZ0JywgYGNlbnRlcicsIGByaWdodCcgb3IgbmlsIGZvcgordW5z cGVjaWZpZWQgb3IgdGhlIGNoYXJhY3RlcnMgbCwgYywgb3Igci4KKworSWYgQUxJR04gaXMgbmls LCBhc3N1bWUgdW5zcGVjaWZpZWQuICBNYWtlIHRoZSBhbGlnbm1lbnQgc3RyaW5nIGEKK21pbmlt dW0gb2YgNSBjaGFyYWN0ZXJzIHRvIGFjY29tbW9kYXRlIE1hcmtkb3duIGNvbnZlbnRpb25zLgor CitJZiBwb2ludCBpcyBub3QgYXQgYSB0YWJsZSwgZG8gbm90aGluZy4iCisgIChpbnRlcmFjdGl2 ZSAiY0FsaWduIGNvbHVtbiBbbF1lZnQgW2NdZW50ZXIgW3JdaWdodCBbdV1uc3BlY2lmaWVkOiIp CisgIChtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAnbWFya2Rvd24tdHMtdGFibGUtYWxp Z24tY29sdW1uKQorICAoc2V0cSBhbGlnbiAoaWYgKGNoYXJhY3RlcnAgYWxpZ24pCisgICAgICAg ICAgICAgICAgICAocGNhc2UgYWxpZ24gKD9sICdsZWZ0KSAoP2MgJ2NlbnRlcikgKD9yICdyaWdo dCkpCisgICAgICAgICAgICAgICAgYWxpZ24pKQorICAod2hlbi1sZXQqICgoYXQtdGFibGUgKG1h cmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAgICAgICAgICAgICAocG9zIChjYXIgYXQt dGFibGUpKQorICAgICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAg ICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQgcG9zICdtYXJrZG93biAnbmFtZWQpKQorICAgICAg ICAgICAgICAoY2VsbCAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtY2VsbCBub2RlKSkKKyAgICAg ICAgICAgICAgKHJvdyAobWFya2Rvd24tdHMtLXRhYmxlLW5vZGUtcm93IGNlbGwpKQorICAgICAg ICAgICAgICAoYWxpZ25lcnMgKG1hcmtkb3duLXRzLS10YWJsZS1hbGlnbmVycyB0YWJsZSkpKQor ICAgIChsZXQgKCh0YWJsZS1jb2x1bW4gKG1hcmtkb3duLXRzLS10YWJsZS1jb21wdXRlLW5vZGUt Y29sdW1uIHJvdyBjZWxsKSkpCisgICAgICAodW5sZXNzIHRhYmxlLWNvbHVtbgorICAgICAgICAo ZXJyb3IgIkNvdWxkIG5vdCBjb21wdXRlIHRoZSB0YWJsZSBjb2x1bW4iKSkKKyAgICAgIDs7IE5P VEU6IEdGTSB0YWJsZXMgYWxsb3cgbm9uLXVuaWZvcm0gdGFibGUgcm93cy4gIFRoZSBjdXJyZW50 IHJvdworICAgICAgOzsgY291bGQgaGF2ZSBhIGRpZmZlcmluZyBudW1iZXIgb2YgY29sdW1ucyBm cm9tIHRoZSBoZWFkZXIuICBXZQorICAgICAgOzsgc2lsZW50bHkgZG8gbm90aGluZyBpZiB3ZSBj YW4ndCBmaW5kIGEgbWF0Y2hpbmcgaGVhZGVyIGNvbHVtbi4KKyAgICAgICh3aGVuLWxldCogKChh bGlnbmVyIChudGggdGFibGUtY29sdW1uIGFsaWduZXJzKSkKKyAgICAgICAgICAgICAgICAgIChi ZWcgKHBsaXN0LWdldCBhbGlnbmVyIDpiZWcpKQorICAgICAgICAgICAgICAgICAgKGVuZCAocGxp c3QtZ2V0IGFsaWduZXIgOmVuZCkpCisgICAgICAgICAgICAgICAgICAoc3RyIChidWZmZXItc3Vi c3RyaW5nLW5vLXByb3BlcnRpZXMgYmVnIGVuZCkpCisgICAgICAgICAgICAgICAgICAoc3RybGVu IChtYXggNSAobGVuZ3RoIHN0cikpKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVnIGVuZCkK KyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAg ICAgICAgKGluc2VydCAobWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lciBzdHJsZW4gYWxp Z24pKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy10YWJsZS1hbGlnbi10YWJsZSAoJm9wdGlv bmFsIGFsaWduLWNlbGxzKQorICAiQWxpZ24gdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBvaW50Lgor QWRqdXN0IGVhY2ggY29sdW1uJ3Mgd2lkdGggdG8gYWNjb21tb2RhdGUgaXRzIHdpZGVzdCBjb25z dGl0dWVudCBjZWxsLgorSWYgQUxJR04tQ0VMTFMgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZp eCBhcmd1bWVudCwgYXBwbHkgdGhlCitkZWxpbWl0ZXIgcm93J3MgYWxpZ25tZW50IHRvIGNlbGwg Y29udGVudC4gIEFMSUdOLUNFTExTIGlzIG5vbi1uaWwgaWYKK3RoZSB1c2VyIG9wdGlvbiBgbWFy a2Rvd24tdHMtdGFibGUtYWxpZ24tZmVhdHVyZXMnIGluY2x1ZGVzCitganVzdGlmeS1jZWxscycu CitBbmNob3IgdGhlIGNvbHVtbnMgdG8gdGhlIGRlbGltaXRlciByb3cuICBJZ25vcmUgcm93cyB0 aGF0IGNvbnRhaW4KK2NvbHVtbnMgYmV5b25kIHRoZSBkZWxpbWl0ZXIgcm93LgorSWYgbm90IGlu IGEgdGFibGUsIGRvIG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAobWFya2Rvd24t dHMtLWJhcmYtaWYtbm90LW1vZGUgJ21hcmtkb3duLXRzLXRhYmxlLWFsaWduLXRhYmxlKQorICAo d2hlbi1sZXQqICgoYXQtdGFibGUgKG1hcmtkb3duLXRzLWF0LXRhYmxlLXAgbmlsIHQpKQorICAg ICAgICAgICAgICAodGFibGUgKGNkciBhdC10YWJsZSkpCisgICAgICAgICAgICAgIChiZWcgKHRy ZWVzaXQtbm9kZS1zdGFydCB0YWJsZSkpCisgICAgICAgICAgICAgIChlbmQgKHRyZWVzaXQtbm9k ZS1lbmQgdGFibGUpKQorICAgICAgICAgICAgICAoXyAobWFya2Rvd24tdHMtLXRhYmxlLXRpY2st c3RhbGUtcCBiZWcpKQorICAgICAgICAgICAgICAocm93cyAodHJlZXNpdC1ub2RlLWNoaWxkcmVu IHRhYmxlICduYW1lZCkpCisgICAgICAgICAgICAgIChucm93cyAobGVuZ3RoIHJvd3MpKQorICAg ICAgICAgICAgICAoZGVsaW1pdGVyLXJvdyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAg ICAgICAgICAgICAgICAgICAgIHRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYHBp cGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAgICAgICAgICAgICAoYWxpZ25lcnMgKG1h cmtkb3duLXRzLS10YWJsZS1hbGlnbmVycyB0YWJsZSkpCisgICAgICAgICAgICAgIChjb2xzICh0 cmVlc2l0LW5vZGUtY2hpbGRyZW4gZGVsaW1pdGVyLXJvdyAnbmFtZWQpKQorICAgICAgICAgICAg ICAobmNvbHMgKGxlbmd0aCBjb2xzKSkKKyAgICAgICAgICAgICAgKGNvbC13aWR0aHMgKG1ha2Ut aGFzaC10YWJsZSA6c2l6ZSBuY29scyA6dGVzdCAnZXF1YWwpKQorICAgICAgICAgICAgICAoY2Vs bC10ZXh0IChtYWtlLWhhc2gtdGFibGUgOnNpemUgKCogbnJvd3MgbmNvbHMpIDp0ZXN0ICdlcXVh bCkpKQorICAgIChzZXRxIGFsaWduLWNlbGxzIChvciBhbGlnbi1jZWxscworICAgICAgICAgICAg ICAgICAgICAgICAgICBjdXJyZW50LXByZWZpeC1hcmcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1lbXEgJ2p1c3RpZnktY2VsbHMgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tZmVhdHVyZXMp KSkKKyAgICAod2l0aG91dC1yZXN0cmljdGlvbgorICAgICAgOzsgQ29sbGVjdCBjZWxsIHRleHQg YW5kIGNvbXB1dGUgbWF4IGNvbHVtbiB3aWR0aHMuCisgICAgICA7OyBEbyBub3QgdXNlIHRoZSBk ZWxpbWl0ZXIgcm93IGZvciB3aWR0aCBjb21wdXRhdGlvbi4KKyAgICAgIChkb3RpbWVzICh4IG5y b3dzKQorICAgICAgICAobGV0KiAoKHJvdyAobnRoIHggcm93cykpCisgICAgICAgICAgICAgICAo Y2VsbHMgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiByb3cgJ25hbWVkKSkpCisgICAgICAgICAgKGRv dGltZXMgKHkgbmNvbHMpCisgICAgICAgICAgICA7OyBTa2lwIG5pbCBjZWxscy0tdGhlIHBhcnNl ciBnb3QgY29uZnVzZWQuCisgICAgICAgICAgICAod2hlbi1sZXQqICgoY2VsbCAobnRoIHkgY2Vs bHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHRleHQgKHN0cmluZy10cmltLXJpZ2h0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IGNlbGwgJ25v LXByb3BlcnR5KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAodyAobGVuZ3RoIHRleHQpKQor ICAgICAgICAgICAgICAgICAgICAgICAgKHcwIChvciAoZ2V0aGFzaCB5IGNvbC13aWR0aHMpIDAp KSkKKyAgICAgICAgICAgICAgOzsgRWxpZGUgZGVsaW1pdGVyIHdpZHRocy4KKyAgICAgICAgICAg ICAgKHVubGVzcyAoZXEgeCAxKQorICAgICAgICAgICAgICAgICh3aGVuICg+IHcgdzApCisgICAg ICAgICAgICAgICAgICAocHV0aGFzaCB5IHcgY29sLXdpZHRocykpKQorICAgICAgICAgICAgICAo cHV0aGFzaCAoY29ucyB4IHkpIHRleHQgY2VsbC10ZXh0KSkpKSkKKworICAgICAgKGxldCAoKHNv dXJjZS1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgICAgICh3aXRoLXRlbXAtYnVmZmVy CisgICAgICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgICAgICAoZG90aW1lcyAoeSBu Y29scykKKyAgICAgICAgICAgICAgKGxldCogKCh3aWR0aCAob3IgKGdldGhhc2ggeSBjb2wtd2lk dGhzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy10YWJsZS1k ZWZhdWx0LWNvbHVtbi13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAoYWxpZ24gKG9yIChw bGlzdC1nZXQgKG50aCB5IGFsaWduZXJzKSA6YWxpZ24pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICd1bnNwZWNpZmllZCkpCisgICAgICAgICAgICAgICAgICAgICA7OyBDb25mdXNl ZCBjZWxscyBoYXZlIG5pbCB0ZXh0LgorICAgICAgICAgICAgICAgICAgICAgKHRleHQgKG9yIChn ZXRoYXNoIChjb25zIHggeSkgY2VsbC10ZXh0KSAiIikpCisgICAgICAgICAgICAgICAgICAgICAo dGV4dDAgKG1hcmtkb3duLXRzLS10YWJsZS1hbGlnbi1jZWxsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRleHQgd2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGFs aWduLWNlbGxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNwZWNpZmllZCkpKSkKKyAgICAgICAgICAgICAg ICAoY29uZAorICAgICAgICAgICAgICAgICA7OyBIZWFkZXIgcm93LgorICAgICAgICAgICAgICAg ICAoKGVxIHggMCkKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQgInwiIHRleHQwKSkKKyAgICAg ICAgICAgICAgICAgOzsgRGVsaW1pdGVyIHJvdy4gIFVzZSB1bmFsaWduZWQgdGV4dC4KKyAgICAg ICAgICAgICAgICAgKChlcSB4IDEpCisgICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJ8IgorICAg ICAgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLXRhYmxlLW1ha2UtYWxpZ25lciB3 aWR0aCBhbGlnbikpKQorICAgICAgICAgICAgICAgICA7OyBCb2R5IHJvdy4KKyAgICAgICAgICAg ICAgICAgKHQKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQgInwiIHRleHQwKSkpKSkKKyAgICAg ICAgICAgIChpbnNlcnQgInwiICJcbiIpKQorICAgICAgICAgIChsZXQgKCh0ZW1wLWJ1ZmZlciAo Y3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHNvdXJj ZS1idWZmZXIKKyAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnaW9uLWNvbnRlbnRzIGJlZyBlbmQg dGVtcC1idWZmZXIpKSkpKSkKKyAgICAobWFya2Rvd24tdHMtLXRhYmxlLXRpY2stdXBkYXRlIGJl ZykpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtdHJhbnNwb3NlLXRhYmxlICgpCisgICJU cmFuc3Bvc2UgdGhlIHJvd3MgYW5kIGNvbHVtbnMgb2YgdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBv aW50LgorVXNlIHVuc3BlY2lmaWVkIGNvbHVtbiBhbGlnbm1lbnQgaW4gdGhlIHRyYW5zcG9zZWQg dGFibGUuCitJZiB0YWJsZSdzIHJvd3MgYXJlIG5vdCB1bmlmb3JtIHdpdGggdGhvc2Ugb24gdGhl IGRlbGltaXRlciByb3csIHNpZ25hbAorYW4gZXJyb3IuCitJZiBub3QgaW4gYSB0YWJsZSwgZG8g bm90aGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1t b2RlICdtYXJrZG93bi10cy10YWJsZS10cmFuc3Bvc2UtdGFibGUpCisgICh3aGVuLWxldCogKChh dC10YWJsZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgICh0 YWJsZSAoY2RyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKGJlZyAodHJlZXNpdC1ub2RlLXN0 YXJ0IHRhYmxlKSkKKyAgICAgICAgICAgICAgKGVuZCAodHJlZXNpdC1ub2RlLWVuZCB0YWJsZSkp CisgICAgICAgICAgICAgIChyb3dzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gdGFibGUgJ25hbWVk KSkKKyAgICAgICAgICAgICAgKG5yb3dzIChsZW5ndGggcm93cykpCisgICAgICAgICAgICAgIChk ZWxpbWl0ZXItcm93ICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAgICAgICAg ICAgICAgdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgcGlwZV90YWJsZV9kZWxp bWl0ZXJfcm93XFwnIikpCisgICAgICAgICAgICAgIChhbGlnbmVycyAobWFya2Rvd24tdHMtLXRh YmxlLWFsaWduZXJzIHRhYmxlKSkKKyAgICAgICAgICAgICAgKGNvbHMgKHRyZWVzaXQtbm9kZS1j aGlsZHJlbiBkZWxpbWl0ZXItcm93ICduYW1lZCkpCisgICAgICAgICAgICAgIChuY29scyAobGVu Z3RoIGNvbHMpKQorICAgICAgICAgICAgICAoY2VsbC10ZXh0IChtYWtlLWhhc2gtdGFibGUgOnNp emUgKCogbnJvd3MgbmNvbHMpIDp0ZXN0ICdlcXVhbCkpKQorICAgICh3aXRob3V0LXJlc3RyaWN0 aW9uCisgICAgICA7OyBDb2xsZWN0IGNlbGwgdGV4dCBhbmQgaW52ZXJ0IGNvb3JkaW5hdGVzLgor ICAgICAgKGRvdGltZXMgKHggbnJvd3MpCisgICAgICAgIChsZXQqICgocm93IChudGggeCByb3dz KSkKKyAgICAgICAgICAgICAgIChjZWxscyAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHJvdyAnbmFt ZWQpKSkKKyAgICAgICAgICAoZG90aW1lcyAoeSBuY29scykKKyAgICAgICAgICAgIDs7IFNraXAg bmlsIGNlbGxzLS10aGUgcGFyc2VyIGdvdCBjb25mdXNlZC4KKyAgICAgICAgICAgICh3aGVuLWxl dCogKChjZWxsIChudGggeSBjZWxscykpCisgICAgICAgICAgICAgICAgICAgICAgICAodGV4dCAo c3RyaW5nLXRyaW0tcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNp dC1ub2RlLXRleHQgY2VsbCAnbm8tcHJvcGVydHkpKSkpCisgICAgICAgICAgICAgIChwdXRoYXNo IChjb25zIHkgeCkgdGV4dCBjZWxsLXRleHQpKSkpKQorCisgICAgICAobGV0ICgoc291cmNlLWJ1 ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAg ICAgICAoZG90aW1lcyAoeCBuY29scykKKyAgICAgICAgICAgIDs7IFN5bnRoZXNpemUgYSBkZWxp bWl0ZXIgcm93LgorICAgICAgICAgICAgKHdoZW4gKGVxIHggMSkKKyAgICAgICAgICAgICAgKGRv dGltZXMgKF95ICgxLSBucm93cykpCisgICAgICAgICAgICAgICAgKGluc2VydCAifCIKKyAgICAg ICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0tdGFibGUtbWFrZS1hbGlnbmVyCisgICAg ICAgICAgICAgICAgICAgICAgICAgKG1heCA1IG1hcmtkb3duLXRzLXRhYmxlLWRlZmF1bHQtY29s dW1uLXdpZHRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNwZWNpZmllZCkpKQorICAg ICAgICAgICAgICAoaW5zZXJ0ICJ8IiAiXG4iKSkKKyAgICAgICAgICAgIChkb3RpbWVzICh5IG5y b3dzKQorICAgICAgICAgICAgICA7OyBTa2lwIHRoZSBvcmlnaW5hbCBkZWxpbWl0ZXIgcm93Lgor ICAgICAgICAgICAgICAodW5sZXNzIChlcSB5IDEpCisgICAgICAgICAgICAgICAgOzsgQ29uZnVz ZWQgY2VsbHMgaGF2ZSBuaWwgdGV4dC4KKyAgICAgICAgICAgICAgICAobGV0ICgodGV4dCAob3Ig KGdldGhhc2ggKGNvbnMgeCB5KSBjZWxsLXRleHQpICIiKSkpCisgICAgICAgICAgICAgICAgICAo aW5zZXJ0ICJ8IiB0ZXh0KSkpKQorICAgICAgICAgICAgKGluc2VydCAifCIgIlxuIikpCisgICAg ICAgICAgKGxldCAoKHRlbXAtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKQorICAgICAgICAgICAg KHdpdGgtY3VycmVudC1idWZmZXIgc291cmNlLWJ1ZmZlcgorICAgICAgICAgICAgICAocmVwbGFj ZS1yZWdpb24tY29udGVudHMgYmVnIGVuZCB0ZW1wLWJ1ZmZlcikpKSkpKQorICAgICh3aGVuIChv ciAoZXEgbWFya2Rvd24tdHMtdGFibGUtYXV0by1hbGlnbiB0KQorICAgICAgICAgICAgICAobWVt cSAndHJhbnNwb3NlIG1hcmtkb3duLXRzLXRhYmxlLWF1dG8tYWxpZ24pKQorICAgICAgKG1hcmtk b3duLXRzLXRhYmxlLWFsaWduLXRhYmxlKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUt Y29udmVydC1jc3YtcmVnaW9uICggYmVnIGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhlYWRlci1saW5lIHJlcGxhY2UpCisgICJDb252ZXJ0IHRoZSBj b21tYS1zZXBhcmF0ZWQgcmVnaW9uIEJFRyB0byBFTkQgdG8gYSBNYXJrZG93biB0YWJsZS4KK0lm IEhFQURFUi1MSU5FIGlzIG5vbi1uaWwsIHVzZSB0aGUgZmlyc3QgbGluZSBvZiB0aGUgcmVnaW9u IGFzIHRoZSB0YWJsZQorY29sdW1uIGhlYWRlci4gIElmIG5pbCwgaW5mZXIgdGhlIG51bWJlciBv ZiBjb2x1bW5zIGFuZCBzeW50aGVzaXplCitjb2x1bW4gbmFtZXMgZnJvbSB0aGUgZmlyc3QgbGlu ZS4KKworTm90ZTogQm9keSBjb2x1bW5zIGJleW9uZCB0aGUgcHJvdmlkZWQgb3IgaW5mZXJyZWQg bnVtYmVyIG9mIGNvbHVtbnMgYXJlCitkcm9wcGVkLgorCitJZiBSRVBMQUNFIGlzIG5vbi1uaWws IG92ZXJ3cml0ZSB0aGUgcmVnaW9uIEJFRyBFTkQgd2l0aCB0aGUgTWFya2Rvd24KK3RhYmxlLCBv dGhlcndpc2UgaW5zZXJ0IHRoZSB0YWJsZSBhZnRlciBFTkQuCisKK1dpdGggYSBzaW5nbGUgcHJl Zml4IGFyZ3VtZW50LCBIRUFERVItTElORSBpcyBub24tbmlsLgorV2l0aCBhIGRvdWJsZSBwcmVm aXggYXJndW1lbnQsIFJFUExBQ0UgaXMgbm9uLW5pbC4KK1dpdGggYSB0cmlwbGUgcHJlZml4IGFy Z3VtZW50LCBib3RoIGFyZSBub24tbmlsLiIKKyAgKGludGVyYWN0aXZlICJSIikKKyAgKG1hcmtk b3duLXRzLXRhYmxlLWNvbnZlcnQtcmVnaW9uIGJlZyBlbmQgaGVhZGVyLWxpbmUgcmVwbGFjZSAn Y3N2KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWNvbnZlcnQtdHN2LXJlZ2lvbiAoIGJl ZyBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0 aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFk ZXItbGluZSByZXBsYWNlKQorICAiQ29udmVydCB0aGUgdGFiLXNlcGFyYXRlZCByZWdpb24gQkVH IHRvIEVORCB0byBhIE1hcmtkb3duIHRhYmxlLgorSWYgSEVBREVSLUxJTkUgaXMgbm9uLW5pbCwg dXNlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSByZWdpb24gYXMgdGhlIHRhYmxlCitjb2x1bW4gaGVh ZGVyLiAgSWYgbmlsLCBpbmZlciB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW5kIHN5bnRoZXNpemUK K2NvbHVtbiBuYW1lcyBmcm9tIHRoZSBmaXJzdCBsaW5lLgorCitOb3RlOiBCb2R5IGNvbHVtbnMg YmV5b25kIHRoZSBwcm92aWRlZCBvciBpbmZlcnJlZCBudW1iZXIgb2YgY29sdW1ucyBhcmUKK2Ry b3BwZWQuCisKK0lmIFJFUExBQ0UgaXMgbm9uLW5pbCwgb3ZlcndyaXRlIHRoZSByZWdpb24gQkVH IEVORCB3aXRoIHRoZSBNYXJrZG93bgordGFibGUsIG90aGVyd2lzZSBpbnNlcnQgdGhlIHRhYmxl IGFmdGVyIEVORC4KKworV2l0aCBhIHNpbmdsZSBwcmVmaXggYXJndW1lbnQsIEhFQURFUi1MSU5F IGlzIG5vbi1uaWwuCitXaXRoIGEgZG91YmxlIHByZWZpeCBhcmd1bWVudCwgUkVQTEFDRSBpcyBu b24tbmlsLgorV2l0aCBhIHRyaXBsZSBwcmVmaXggYXJndW1lbnQsIGJvdGggYXJlIG5vbi1uaWwu IgorICAoaW50ZXJhY3RpdmUgIlIiKQorICAobWFya2Rvd24tdHMtdGFibGUtY29udmVydC1yZWdp b24gYmVnIGVuZCBoZWFkZXItbGluZSByZXBsYWNlICd0c3YpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtdGFibGUtY29udmVydC1yZWdpb24gKCBiZWcgZW5kCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhlYWRlci1saW5lIHJlcGxhY2UgZm9ybWF0KQorICAiQ29udmVydCB0 aGUgY29tbWEtc2VwYXJhdGVkIHJlZ2lvbiBCRUcgdG8gRU5EIHRvIGEgTWFya2Rvd24gdGFibGUu CitJZiBIRUFERVItTElORSBpcyBub24tbmlsLCB1c2UgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHJl Z2lvbiBhcyB0aGUgdGFibGUKK2NvbHVtbiBoZWFkZXIuICBJZiBuaWwsIGluZmVyIHRoZSBudW1i ZXIgb2YgY29sdW1ucyBhbmQgc3ludGhlc2l6ZQorY29sdW1uIG5hbWVzIGZyb20gdGhlIGZpcnN0 IGxpbmUuCisKK05vdGU6IEJvZHkgY29sdW1ucyBiZXlvbmQgdGhlIHByb3ZpZGVkIG9yIGluZmVy cmVkIG51bWJlciBvZiBjb2x1bW5zIGFyZQorZHJvcHBlZC4KKworSWYgUkVQTEFDRSBpcyBub24t bmlsLCBvdmVyd3JpdGUgdGhlIHJlZ2lvbiBCRUcgRU5EIHdpdGggdGhlIE1hcmtkb3duCit0YWJs ZSwgb3RoZXJ3aXNlIGluc2VydCB0aGUgdGFibGUgYWZ0ZXIgRU5ELgorCitGT1JNQVQgaXMgb25l IG9mIHRoZSBzeW1ib2xzIGBjc3YnIGZvciBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzLCBvciBgdHN2 JworZm9yIHRhYi1zZXBhcmF0ZWQgdmFsdWVzLiAgSWYgYW55IG90aGVyIHZhbHVlLCB1c2UgYGNz dicuCisKK1dpdGggYSBzaW5nbGUgcHJlZml4IGFyZ3VtZW50LCBIRUFERVItTElORSBpcyBub24t bmlsLgorV2l0aCBhIGRvdWJsZSBwcmVmaXggYXJndW1lbnQsIFJFUExBQ0UgaXMgbm9uLW5pbC4K K1dpdGggYSB0cmlwbGUgcHJlZml4IGFyZ3VtZW50LCBib3RoIGFyZSBub24tbmlsLiIKKyAgKGlu dGVyYWN0aXZlICJSIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93 bi10cy10YWJsZS1jb252ZXJ0LXJlZ2lvbikKKworICAoY29uZCAoKGVxdWFsIGN1cnJlbnQtcHJl Zml4LWFyZyAnKDQpKQorICAgICAgICAgKHNldHEgaGVhZGVyLWxpbmUgdCkpCisgICAgICAgICgo ZXF1YWwgY3VycmVudC1wcmVmaXgtYXJnICcoMTYpKQorICAgICAgICAgKHNldHEgcmVwbGFjZSB0 KSkKKyAgICAgICAgKChlcXVhbCBjdXJyZW50LXByZWZpeC1hcmcgJyg2NCkpCisgICAgICAgICAo c2V0cSBoZWFkZXItbGluZSB0CisgICAgICAgICAgICAgICByZXBsYWNlIHQpKSkKKyAgKGxldCAo cm93cykKKyAgICAoc2F2ZS1yZXN0cmljdGlvbgorICAgICAgKG5hcnJvdy10by1yZWdpb24gYmVn IGVuZCkKKyAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAod2hpbGUgKDwgKHBv aW50KSAocG9pbnQtbWF4KSkKKyAgICAgICAgKHBjYXNlIGZvcm1hdAorICAgICAgICAgICgndHN2 CisgICAgICAgICAgICAgKHB1c2gKKyAgICAgICAgICAgICAgKHNwbGl0LXN0cmluZworICAgICAg ICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQpIChwb3MtZW9s KSkgIlx0IikKKyAgICAgICAgICAgICAgcm93cykpCisgICAgICAgICAgIChfCisgICAgICAgICAg ICAobGV0IChyb3cpCisgICAgICAgICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQKKyAg ICAgICAgICAgICAgICAgICAgICAiXCJcXCg/OlteXCJdXFx8XCJcIlxcKSpcIlxcfFteLF0rXFx8 XCJcIiIKKyAgICAgICAgICAgICAgICAgICAgICAocG9zLWVvbCkgdCkKKyAgICAgICAgICAgICAg ICAocHVzaAorICAgICAgICAgICAgICAgICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCisgICAg ICAgICAgICAgICAgICAiXCJcIiIgIlwiIgorICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVn ZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICAgICJcXGBcIlxcKFwuKlxcKVwiXFwnIgor ICAgICAgICAgICAgICAgICAgICJcXDEiCisgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZy1u by1wcm9wZXJ0aWVzIChtYXRjaC1zdHJpbmcgMCkpKSkKKyAgICAgICAgICAgICAgICAgcm93KSkK KyAgICAgICAgICAgICAgKHB1c2ggKG5yZXZlcnNlIHJvdykgcm93cykpKSkKKyAgICAgICAgKGZv cndhcmQtbGluZSAxKSkKKyAgICAgICAgKHNldHEgcm93cyAobnJldmVyc2Ugcm93cykpCisgICAg ICAgIChjb25kIChyZXBsYWNlIChkZWxldGUtcmVnaW9uIGJlZyBlbmQpKQorICAgICAgICAgICAg ICAodCAoZ290by1jaGFyIGVuZCkpKQorICAgICAgICAoaWYgaGVhZGVyLWxpbmUKKyAgICAgICAg ICAgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgKDEtIChsZW5ndGggcm93cykpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggKGNhciBy b3dzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBy b3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIHJv d3MpKQorICAgICAgICAgIChtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgKGxlbmd0aCBy b3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCAo Y2FyIHJvd3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmls CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzKSkpKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZS1jc3YgKCZvcHRpb25hbCBkaXNw bGF5KQorICAiRXhwb3J0IHRoZSBNYXJrZG93biB0YWJsZSBhdCBwb2ludCB0byBjb21tYS1zZXBh cmF0ZWQgaW4gYSBidWZmZXIuCitJZiBESVNQTEFZIGlzIG5vbi1uaWwsIG9yIHdpdGggYSBwcmVm aXggYXJndW1lbnQsIGRpc3BsYXkgdGhlIGV4cG9ydAorYnVmZmVyIGFmdGVyIGV4cG9ydGluZy4K K0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZl ICJQIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZSBkaXNwbGF5ICdjc3YpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlLXRzdiAoJm9wdGlvbmFsIGRp c3BsYXkpCisgICJFeHBvcnQgdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBvaW50IHRvIHRhYi1zZXBh cmF0ZWQgaW4gYSBidWZmZXIuCitJZiBESVNQTEFZIGlzIG5vbi1uaWwsIG9yIHdpdGggYSBwcmVm aXggYXJndW1lbnQsIGRpc3BsYXkgdGhlIGV4cG9ydAorYnVmZmVyIGFmdGVyIGV4cG9ydGluZy4K K0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZl ICJQIikKKyAgKG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC10YWJsZSBkaXNwbGF5ICd0c3YpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxlICgmb3B0aW9uYWwgZGlzcGxh eSBmb3JtYXQpCisgICJFeHBvcnQgdGhlIE1hcmtkb3duIHRhYmxlIGF0IHBvaW50IHRvIENTViBp biBhIGJ1ZmZlci4KK0lmIERJU1BMQVkgaXMgbm9uLW5pbCwgb3Igd2l0aCBhIHByZWZpeCBhcmd1 bWVudCwgZGlzcGxheSB0aGUgZXhwb3J0CitidWZmZXIgYWZ0ZXIgZXhwb3J0aW5nLgorRk9STUFU IGlzIG9uZSBvZiB0aGUgc3ltYm9scyBgY3N2JyBmb3IgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyBh a2EgQ1NWLAorb3IgYHRzdicgZm9yIHRhYi1zZXBhcmF0ZWQgdmFsdWVzIGFrYSBUU1YuICBJZiBh bnkgb3RoZXIgdmFsdWUsIHVzZQorYGNzdicuICBJZiBUU1YsIHJlcGxhY2UgYW55IHRhYnMgd2l0 aGluIGEgZmllbGQgd2l0aCBhIHNwYWNlLgorRG8gbm90IGV4cG9ydCB0aGUgdGFibGUncyBoZWFk ZXIgZGVsaW1pdGVyIHJvdy4KK0lmIHBvaW50IGlzIG5vdCBhdCBhIHRhYmxlLCBkbyBub3RoaW5n LiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKG1hcmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2Rl ICdtYXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUpCisgICh3aGVuLWxldCogKChhdC10YWJs ZSAobWFya2Rvd24tdHMtYXQtdGFibGUtcCBuaWwgdCkpCisgICAgICAgICAgICAgICh0YWJsZSAo Y2RyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgKHJvd3MgKHRyZWVzaXQtbm9kZS1jaGlsZHJl biB0YWJsZSAnbmFtZWQpKQorICAgICAgICAgICAgICAoaGVhZGVyICh0cmVlc2l0LXNlYXJjaC1z dWJ0cmVlIHRhYmxlICJcXGBwaXBlX3RhYmxlX2hlYWRlclxcJyIpKQorICAgICAgICAgICAgICAo ZGVsaW1pdGVyLXJvdyAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFibGUgIlxcYHBpcGVfdGFibGVfZGVsaW1pdGVyX3Jvd1xcJyIpKQorICAg ICAgICAgICAgICAoZXhwb3J0LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLWV4cG9ydC1idWZmZXIpKSkKKyAg ICAod2l0aC1jdXJyZW50LWJ1ZmZlciBleHBvcnQtYnVmZmVyCisgICAgICAoc3BlY2lhbC1tb2Rl KQorICAgICAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQpKQorICAgICAgICAod2lkZW4pCisg ICAgICAgIChlcmFzZS1idWZmZXIpCisgICAgICAgIChkb2xpc3QgKHJvdyByb3dzKQorICAgICAg ICAgICh1bmxlc3MgKGVxdWFsIHJvdyBkZWxpbWl0ZXItcm93KQorICAgICAgICAgICAgKGxldCog KChlbHRzICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcm93ICduYW1lZCkpCisgICAgICAgICAgICAg ICAgICAgKGxlbiAobGVuZ3RoIGVsdHMpKSkKKyAgICAgICAgICAgICAgKGRvdGltZXMgKHggbGVu KQorICAgICAgICAgICAgICAgIChsZXQgKChzIChzdHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRl eHQgKG50aCB4IGVsdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnbm8tcHJvcGVydHkpKSkpCisgICAgICAgICAgICAgICAgICAocGNh c2UgZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICgndHN2CisgICAgICAgICAgICAgICAgICAg ICAoaW5zZXJ0IChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIlx0IiAiXHMiIHMpKQorICAgICAg ICAgICAgICAgICAgICAgKHdoZW4gKDwgeCAoMS0gbGVuKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgKGluc2VydCAiXHQiKSkpCisgICAgICAgICAgICAgICAgICAgIChfCisgICAgICAgICAgICAg ICAgICAgICAoaW5zZXJ0CisgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2gg IltcIixdIiBzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJcIiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY29uY2F0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdpZGVudGl0eSAoc3BsaXQtc3RyaW5nIHMgIlwiIikgIlwiXCIi KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiIpCisgICAgICAgICAgICAg ICAgICAgICAgICBzKSkKKyAgICAgICAgICAgICAgICAgICAgICh3aGVuICg8IHggKDEtIGxlbikp CisgICAgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgIiwiKSkpKSkpCisgICAgICAgICAgICAg IChpbnNlcnQgIlxuIikpKSkKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkpKQorICAg ICh3aGVuIGRpc3BsYXkKKyAgICAgIChkaXNwbGF5LWJ1ZmZlciBleHBvcnQtYnVmZmVyKSkpKQor Cis7OzsgSGVscGVyczoKKworKGRlZnVuIG1hcmtkb3duLXRzLS1vdXRsaW5lLWludmlzaWJsZS1w IChwb3MpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBQT1MgaXMgaW5zaWRlIGFuIG91dGxpbmUtZm9s ZGVkIHJlZ2lvbi4iCisgIChjbC1zb21lIChsYW1iZGEgKG92KSAoZXEgKG92ZXJsYXktZ2V0IG92 ICdpbnZpc2libGUpICdvdXRsaW5lKSkKKyAgICAgICAgICAgKG92ZXJsYXlzLWF0IHBvcykpKQog CiAoZGVmdW4gbWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdzICgpCiAgICJSZXR1cm4gcmFuZ2Ug c2V0dGluZ3MgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCi0gICh0cmVlc2l0LXJhbmdlLXJ1bGVz Ci0gICA6ZW1iZWQgJ21hcmtkb3duLWlubGluZQotICAgOmhvc3QgJ21hcmtkb3duCi0gICA6cmFu Z2UtZm4gIyd0cmVlc2l0LXJhbmdlLWZuLWV4Y2x1ZGUtY2hpbGRyZW4KLSAgICcoKGlubGluZSkg QG1hcmtkb3duLWlubGluZSkKLQotICAgOmVtYmVkICMnbWFya2Rvd24tdHMtLWNvbnZlcnQtY29k ZS1ibG9jay1sYW5ndWFnZQotICAgOmhvc3QgJ21hcmtkb3duCi0gICA6bG9jYWwgdAotICAgJygo ZmVuY2VkX2NvZGVfYmxvY2sgKGluZm9fc3RyaW5nIChsYW5ndWFnZSkgQGxhbmd1YWdlKQotICAg ICAgICAgICAgICAgICAgICAgICAgKGNvZGVfZmVuY2VfY29udGVudCkgQGNvbnRlbnQpKSkpCisg IChhcHBseQorICAgIyd0cmVlc2l0LXJhbmdlLXJ1bGVzCisgICBgKDplbWJlZCBtYXJrZG93bi1p bmxpbmUKKyAgICAgOmhvc3QgbWFya2Rvd24KKyAgICAgKChpbmxpbmUpIEBtYXJrZG93bi1pbmxp bmUpCisgICAgICxAKHdoZW4gbWFya2Rvd24tdHMtZm9udGlmeS1jb2RlLWJsb2Nrcy1uYXRpdmVs eQorICAgICAgICAgJyg6ZW1iZWQgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UK KyAgICAgICAgICAgOmhvc3QgbWFya2Rvd24KKyAgICAgICAgICAgOmxvY2FsIHQKKyAgICAgICAg ICAgKChmZW5jZWRfY29kZV9ibG9jayAoaW5mb19zdHJpbmcgKGxhbmd1YWdlKSBAbGFuZ3VhZ2Up CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvZGVfZmVuY2VfY29udGVudCkgQGNv bnRlbnQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlz ICgpCisgICJSZW1vdmUgYWxsIGlubGluZSBpbWFnZSBvdmVybGF5cyBmcm9tIHRoZSBjdXJyZW50 IGJ1ZmZlci4iCisgIChkb2xpc3QgKG92IChvdmVybGF5cy1pbiAocG9pbnQtbWluKSAocG9pbnQt bWF4KSkpCisgICAgKHdoZW4gKG92ZXJsYXktZ2V0IG92ICdtYXJrZG93bi10cy1pbWFnZSkKKyAg ICAgIChkZWxldGUtb3ZlcmxheSBvdikpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1vdXRsaW5l LXZpZXctY2hhbmdlICgpCisgICJVcGRhdGUgaW1hZ2Ugb3ZlcmxheXMgYWZ0ZXIgb3V0bGluZSBm b2xkL3VuZm9sZC4KK1JlbW92ZXMgaW1hZ2Ugb3ZlcmxheXMgaW4gZm9sZGVkIHJlZ2lvbnMgYW5k IHRyaWdnZXJzCityZWZvbnRpZmljYXRpb24gc28gdGhhdCBpbWFnZXMgaW4gdW5mb2xkZWQgcmVn aW9ucyBhcmUgcmVjcmVhdGVkLiIKKyAgKHdoZW4gbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcwor ICAgIChtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlzKQorICAgIChmb250LWxvY2st Zmx1c2gpKSkKIAogKGRlZnVuIG1hcmtkb3duLXRzLS1zZXQtaGlkZS1tYXJrdXAgKHZhbHVlKQog ICAiU2V0IGhpZGluZyBvZiBNYXJrZG93biBtYXJrdXAgZGVsaW1pdGVycyBpbiB0aGUgY3VycmVu dCBidWZmZXIuCkBAIC0zNDgsNiArNDU5Niw4IEBAIG1hcmtkb3duLXRzLS1zZXQtaGlkZS1tYXJr dXAKICAgKGlmIHZhbHVlCiAgICAgICAoYWRkLXRvLWludmlzaWJpbGl0eS1zcGVjICdtYXJrZG93 bi10cy0tbWFya3VwKQogICAgIChyZW1vdmUtZnJvbS1pbnZpc2liaWxpdHktc3BlYyAnbWFya2Rv d24tdHMtLW1hcmt1cCkpCisgICh3aGVuIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMKKyAgICAo bWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cykpCiAgIChmb250LWxvY2stZmx1c2gp KQogCiAoZGVmdW4gbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUtbWFya3VwICgpCkBAIC0zNTYsMTIy ICs0NjA2LDcxOSBAQCBtYXJrZG93bi10cy10b2dnbGUtaGlkZS1tYXJrdXAKICAgKHNldHEgbWFy a2Rvd24tdHMtaGlkZS1tYXJrdXAgKG5vdCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkpCiAgICht YXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwKSkKIAor KGRlZnVuIG1hcmtkb3duLXRzLS1zZXQtaW5saW5lLWltYWdlcyAodmFsdWUpCisgICJTZXQgZGlz cGxheSBvZiBpbmxpbmUgaW1hZ2VzIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4KK1ZBTFVFIG5vbi1u aWwgZGlzcGxheXMgaW1hZ2VzLCBuaWwgcmVtb3ZlcyB0aGVtLiIKKyAgKGlmIHZhbHVlCisgICAg ICAodHJlZXNpdC1mb250LWxvY2stcmVjb21wdXRlLWZlYXR1cmVzICcoaW1hZ2UtcHJldmlldykp CisgICAgKHRyZWVzaXQtZm9udC1sb2NrLXJlY29tcHV0ZS1mZWF0dXJlcyBuaWwgJyhpbWFnZS1w cmV2aWV3KSkpCisgIChtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlzKQorICAoZm9u dC1sb2NrLWZsdXNoKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLXRvZ2dsZS1pbmxpbmUtaW1hZ2Vz ICgpCisgICJUb2dnbGUgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGluIHRoZSBjdXJyZW50IGJ1 ZmZlci4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHNldHEgbWFya2Rvd24tdHMtaW5saW5lLWltYWdl cyAobm90IG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMpKQorICAobWFya2Rvd24tdHMtLXNldC1p bmxpbmUtaW1hZ2VzIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMpCisgIChtZXNzYWdlICJJbmxp bmUgaW1hZ2VzICVzIiAoaWYgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJlbmFibGVkIiAiZGlzYWJsZWQiKSkpCisKKzs7OyBFbXBo YXNpczoKKworKGRlZnZhciBtYXJrZG93bi10cy1lbXBoYXNpcy1hbGlzdAorICAnKCg/YiAuICIq KiIpCisgICAgKD9CIC4gIl9fIikKKyAgICAoP2kgLiAiKiIpCisgICAgKD9JIC4gIl8iKQorICAg ICg/cyAuICJ+fiIpCisgICAgKD9jIC4gImAiKQorICAgICg/YSAuICIqKioiKSkKKyAgIkFsaXN0 IG9mIGVtcGhhc2lzIG1hcmtlcnMgZm9yIGBtYXJrZG93bi10cy1lbXBoYXNpemUnLgorRWFjaCBl bnRyeSBpcyAoS0VZIC4gTUFSS0VSKSB3aGVyZSBLRVkgaXMgYSBjaGFyYWN0ZXIgKG5vdCBhIHN0 cmluZykgYW5kCitNQVJLRVIgaXMgdGhlIE1hcmtkb3duIGVtcGhhc2l6ZWQgdGV4dCBwcmVmaXgv c3VmZml4LiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZW1waGFzaXMtbm9kZS1hdC1wb2ludCAo KQorICAiUmV0dXJuIHRoZSBlbXBoYXNpcyBub2RlIGF0IHBvaW50LCBvciBuaWwuCitGaW5kcyB0 aGUgaW5uZXJtb3N0IGBlbXBoYXNpcycsIGBzdHJvbmdfZW1waGFzaXMnLAorYHN0cmlrZXRocm91 Z2gnLCBvciBgY29kZV9zcGFuJyBub2RlLiIKKyAgKHdoZW4tbGV0KiAoKG5vZGUgKHRyZWVzaXQt bm9kZS1hdCAocG9pbnQpICdtYXJrZG93bi1pbmxpbmUpKSkKKyAgICAodHJlZXNpdC1wYXJlbnQt dW50aWwKKyAgICAgbm9kZSAobGFtYmRhIChuKQorICAgICAgICAgICAgKG1lbWJlciAodHJlZXNp dC1ub2RlLXR5cGUgbikKKyAgICAgICAgICAgICAgICAgICAgJygiZW1waGFzaXMiICJzdHJvbmdf ZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgInN0cmlrZXRocm91Z2giICJjb2RlX3Nw YW4iKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMgKCkKKyAgIlJl bW92ZSBlbXBoYXNpcyBhcm91bmQgcG9pbnQgb3IgcmVnaW9uLgorV2l0aCBhbiBhY3RpdmUgcmVn aW9uLCBzdHJpcCB0aGUgb3V0ZXJtb3N0IGVtcGhhc2lzIG1hcmtlcnMgZnJvbQordGhlIHNlbGVj dGVkIHRleHQuICBXaXRob3V0IGEgcmVnaW9uLCBmaW5kIHRoZSBlbXBoYXNpcyBub2RlIGF0Citw b2ludCB1c2luZyB0cmVlLXNpdHRlciBhbmQgcmVtb3ZlIGl0cyBtYXJrZXJzLiIKKyAgKGludGVy YWN0aXZlKQorICAoaWYgKHVzZS1yZWdpb24tcCkKKyAgICAgIChsZXQqICgoYmVnIChyZWdpb24t YmVnaW5uaW5nKSkKKyAgICAgICAgICAgICAoZW5kIChyZWdpb24tZW5kKSkKKyAgICAgICAgICAg ICAodGV4dCAoYnVmZmVyLXN1YnN0cmluZyBiZWcgZW5kKSkKKyAgICAgICAgICAgICAoc3RyaXBw ZWQgbmlsKSkKKyAgICAgICAgKGNsLWxvb3AgZm9yIChfa2V5IC4gbSkgaW4gKHNvcnQgKGNvcHkt c2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtk b3duLXRzLWVtcGhhc2lzLWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhIChhIGIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKD4gKGxlbmd0aCAoY2RyIGEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsZW5ndGggKGNkciBiKSkpKSkKKyAgICAgICAgICAgICAgICAg Zm9yIHJlID0gKGNvbmNhdCAiXFxgIiAocmVnZXhwLXF1b3RlIG0pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlxcKFxcKD86LlxcfFxuXFwpKlxcKSIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAocmVnZXhwLXF1b3RlIG0pICJcXCciKQorICAgICAgICAgICAg ICAgICB3aGVuIChzdHJpbmctbWF0Y2ggcmUgdGV4dCkKKyAgICAgICAgICAgICAgICAgZG8gKHNl dHEgc3RyaXBwZWQgKG1hdGNoLXN0cmluZyAxIHRleHQpKQorICAgICAgICAgICAgICAgICBhbmQg cmV0dXJuIG5pbCkKKyAgICAgICAgKHdoZW4gc3RyaXBwZWQKKyAgICAgICAgICAoZGVsZXRlLXJl Z2lvbiBiZWcgZW5kKQorICAgICAgICAgIChpbnNlcnQgc3RyaXBwZWQpKSkKKyAgICA7OyBGaW5k IHRoZSBvdXRlcm1vc3QgZW1waGFzaXMgbm9kZSBhdCBwb2ludC4KKyAgICAod2hlbi1sZXQqICgo aW5uZXIgKG1hcmtkb3duLXRzLS1lbXBoYXNpcy1ub2RlLWF0LXBvaW50KSkKKyAgICAgICAgICAg ICAgICAobm9kZSAobGV0ICgobiBpbm5lcikpCisgICAgICAgICAgICAgICAgICAgICAgICAod2hp bGUgKGxldCAoKHBhcmVudCAodHJlZXNpdC1ub2RlLXBhcmVudCBuKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIHBhcmVudAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtYmVyICh0cmVlc2l0LW5vZGUtdHlwZSBwYXJl bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JygiZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAic3Ryb25nX2VtcGhhc2lzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmlrZXRocm91Z2giCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29kZV9zcGFuIikpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBuIHBhcmVudCkpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIG4pKQorICAgICAgICAgICAgICAgIChzdGFydCAodHJlZXNp dC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAgIChlbmQgKHRyZWVzaXQtbm9kZS1l bmQgbm9kZSkpCisgICAgICAgICAgICAgICAgKHRleHQgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUg dCkpCisgICAgICAgICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAg ICAgICAgICAgICAgIChtbGVuIChwY2FzZSB0eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAo InN0cm9uZ19lbXBoYXNpcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1w cmVmaXgtcCAiXyIgdGV4dCkgMiAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICgiZW1waGFz aXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctcHJlZml4LXAgIl8iIHRl eHQpIDEgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoInN0cmlrZXRocm91Z2giIDIpCisg ICAgICAgICAgICAgICAgICAgICAgICAoImNvZGVfc3BhbiIgMSkpKQorICAgICAgICAgICAgICAg IChpbm5lci10ZXh0IChzdWJzdHJpbmcgdGV4dCBtbGVuICgtIChsZW5ndGggdGV4dCkgbWxlbikp KSkKKyAgICAgIChsZXQgKChvZmZzZXQgKC0gKHBvaW50KSBzdGFydCBtbGVuKSkpCisgICAgICAg IChkZWxldGUtcmVnaW9uIHN0YXJ0IGVuZCkKKyAgICAgICAgKGdvdG8tY2hhciBzdGFydCkKKyAg ICAgICAgKGluc2VydCBpbm5lci10ZXh0KQorICAgICAgICAoZ290by1jaGFyICgrIHN0YXJ0ICht YXggMCBvZmZzZXQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1lbXBoYXNpemUgKCZvcHRp b25hbCBjaGFyKQorICAiSW5zZXJ0IG9yIGNoYW5nZSBlbXBoYXNpcyBvbiB0ZXh0LgorSWYgdGhl cmUgaXMgYW4gYWN0aXZlIHJlZ2lvbiwgd3JhcCBpdCB3aXRoIGVtcGhhc2lzIG1hcmtlcnMuCitJ ZiB0aGVyZSBpcyBubyByZWdpb24sIGluc2VydCBtYXJrZXIgcGFpcnMgYW5kIHBsYWNlIHBvaW50 IGJldHdlZW4KK3RoZW0uICBDSEFSIHNlbGVjdHMgdGhlIGVtcGhhc2lzIHR5cGU6CisKKyAgYiAg ICoqYm9sZCoqICAgICAgIEIgIF9fYm9sZF9fCisgIGkgICAqaXRhbGljKiAgICAgICBJICBfaXRh bGljXworICBhICAgKioqYm9sZCtpdGFsaWMqKioKKyAgcyAgIH5+c3RyaWtldGhyb3VnaH5+Cisg IGMgICBgY29kZWAKKyAgU1BDIHJlbW92ZSBlbXBoYXNpcyBhdCBwb2ludCBvciByZWdpb24iCisg IChpbnRlcmFjdGl2ZQorICAgImNFbXBoYXNpcyBbYl1vbGQgW0Jdb2xkXyBbaV10YWxpYyBbSV10 YWxpY18gW2FdbGwgW3NddHJpa2UgW2Ndb2RlIFNQQyByZW1vdmU6IikKKyAgKGlmIChlcSBjaGFy ID9ccykKKyAgICAgIChtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMpCisgICAgKGlmLWxldCog KChtYXJrZXIgKGNkciAoYXNzcSBjaGFyIG1hcmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0KSkpKQor ICAgICAgICAoaWYgKHVzZS1yZWdpb24tcCkKKyAgICAgICAgICAgIChsZXQgKChiZWcgKHJlZ2lv bi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgICAgICAgKGVuZCAoY29weS1tYXJrZXIgKHJlZ2lv bi1lbmQpKSkpCisgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAg IChnb3RvLWNoYXIgZW5kKQorICAgICAgICAgICAgICAgIChpbnNlcnQgbWFya2VyKQorICAgICAg ICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgICAgICAgIChpbnNlcnQgbWFya2Vy KSkpCisgICAgICAgICAgKGlmLWxldCogKChib3VuZHMgKGJvdW5kcy1vZi10aGluZy1hdC1wb2lu dCAnd29yZCkpKQorICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChjZHIgYm91bmRzKSkKKyAgICAgICAgICAgICAgICAoaW5zZXJ0IG1hcmtl cikKKyAgICAgICAgICAgICAgICAoZ290by1jaGFyIChjYXIgYm91bmRzKSkKKyAgICAgICAgICAg ICAgICAoaW5zZXJ0IG1hcmtlcikpCisgICAgICAgICAgICAoaW5zZXJ0IG1hcmtlciBtYXJrZXIp CisgICAgICAgICAgICAoYmFja3dhcmQtY2hhciAobGVuZ3RoIG1hcmtlcikpKSkKKyAgICAgICh1 c2VyLWVycm9yICJObyBzdWNoIGVtcGhhc2lzIG1hcmtlcjogJWMiIGNoYXIpKSkpCisKKzs7OyBC bG9jayBzdHJ1Y3R1cmU6CisKKyhkZWZ1biBtYXJrZG93bi10cy1pbnNlcnQtc3RydWN0dXJlICgm b3B0aW9uYWwgY2hhcikKKyAgIkluc2VydCBhIGJsb2NrIHN0cnVjdHVyZS4KK0lmIHRoZXJlIGlz IGFuIGFjdGl2ZSByZWdpb24sIHdyYXAgaXQuICBPdGhlcndpc2UsIGluc2VydCBhbiBlbXB0eQor YmxvY2sgYW5kIHBsYWNlIHBvaW50IGluc2lkZS4gIENIQVIgc2VsZWN0cyB0aGUgc3RydWN0dXJl IHR5cGU6CisKKyAgYCAgZmVuY2VkIGNvZGUgYmxvY2sgKGBgYCkKKyAgfiAgdGlsZGUgZmVuY2Vk IGNvZGUgYmxvY2sgKH5+fikKKyAgcSAgYmxvY2sgcXVvdGUgKD4gKQorICBkICBob3Jpem9udGFs IGRpdmlkZXIvcnVsZSAoLS0tKQorICB0ICB0YWJsZSIKKyAgKGludGVyYWN0aXZlCisgICAiY1N0 cnVjdHVyZSBbYF1iYWNrLXRpY2sgY29kZSBibG9jayBbfl10aWxkZSBjb2RlIGJsb2NrIFtxXXVv dGUgW2RdaXZpZGVyIFt0XWFibGU6IikKKyAgKHBjYXNlIGNoYXIKKyAgICAoP2AgKG1hcmtkb3du LXRzLS1pbnNlcnQtY29kZS1ibG9jayA/YCkpCisgICAgKD9+IChtYXJrZG93bi10cy0taW5zZXJ0 LWNvZGUtYmxvY2sgP34pKQorICAgICg/cSAobWFya2Rvd24tdHMtLWluc2VydC1ibG9jay1xdW90 ZSkpCisgICAgKD9kIChtYXJrZG93bi10cy0taW5zZXJ0LWRpdmlkZXIpKQorICAgICg/dCAobWFy a2Rvd24tdHMtdGFibGUtaW5zZXJ0LXRhYmxlKSkKKyAgICAoXyAodXNlci1lcnJvciAiTm8gc3Vj aCBzdHJ1Y3R1cmU6ICVjIiBjaGFyKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWluc2VydC1j b2RlLWJsb2NrIChjaGFyICZvcHRpb25hbCBsYW5ndWFnZSkKKyAgIkluc2VydCBhIGZlbmNlZCBj b2RlIGJsb2NrIHVzaW5nIGEgQ0hBUiBzZXF1ZW5jZS4KK0NIQVIgc2hvdWxkIGJlIG9uZSBvZiBh IGJhY2t0aWNrIG9yIGEgdGlsZGUuCitMQU5HVUFHRSBpcyBhIHdoaXRlc3BhY2UgZnJlZSBsYW5n dWFnZSBzdHJpbmcuIgorICAoc2V0cSBsYW5ndWFnZQorICAgICAgICAob3IgbGFuZ3VhZ2UKKyAg ICAgICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAiW1s6Ymxh bms6XV0iICIiCisgICAgICAgICAgICAgKGxldCAoKGNvbXBsZXRpb24taWdub3JlLWNhc2Ugbmls KQorICAgICAgICAgICAgICAgICAgIChjYW5kaWRhdGVzCisgICAgICAgICAgICAgICAgICAgIChz ZXEtbWFwCisgICAgICAgICAgICAgICAgICAgICAjJ3N5bWJvbC1uYW1lCisgICAgICAgICAgICAg ICAgICAgICAoc2VxLXVuaXEKKyAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIChtYXBjYXIg IydjYXIgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2VzKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG1hcGNhciAjJ2NhciBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24t dHMtbW9kZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyICMnY2FyIG1h cmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMpKSkpKSkKKyAgICAgICAgICAgICAgIChjb21wbGV0 aW5nLXJlYWQKKyAgICAgICAgICAgICAgICAiQ29kZSBibG9jayBsYW5ndWFnZTogIgorICAgICAg ICAgICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAg ICAnY29uZmlybSA7IFByb21wdCBpZiB0aGUgbGFuZ3VhZ2UgaXMgbm90IG9uIG91ciBsaXN0Lgor ICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1sYW5ndWFn ZS1oaXN0b3J5KSkpKSkKKyAgKGxldCAoKGZlbmNlLXN0cmluZyAobWFrZS1zdHJpbmcgMyBjaGFy KSkpCisgICAgKGlmICh1c2UtcmVnaW9uLXApCisgICAgICAgIChsZXQgKChiZWcgKHJlZ2lvbi1i ZWdpbm5pbmcpKQorICAgICAgICAgICAgICAoZW5kIChyZWdpb24tZW5kKSkpCisgICAgICAgICAg KHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAoZ290by1jaGFyIGVuZCkKKyAgICAgICAgICAg ICh1bmxlc3MgKGJvbHApIChpbnNlcnQgIlxuIikpCisgICAgICAgICAgICAoaW5zZXJ0IGZlbmNl LXN0cmluZyAiXG4iKQorICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAgICAgICAo aW5zZXJ0IGZlbmNlLXN0cmluZyBsYW5ndWFnZSAiXG4iKSkpCisgICAgICAoaW5zZXJ0IGZlbmNl LXN0cmluZyBsYW5ndWFnZSAiXG5cbiIgZmVuY2Utc3RyaW5nKQorICAgICAgKGZvcndhcmQtbGlu ZSAtMSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbnNlcnQtYmxvY2stcXVvdGUgKCkKKyAg Ikluc2VydCBhIGJsb2NrIHF1b3RlLiIKKyAgKGlmICh1c2UtcmVnaW9uLXApCisgICAgICAobGV0 ICgoYmVnIChyZWdpb24tYmVnaW5uaW5nKSkKKyAgICAgICAgICAgIChlbmQgKGNvcHktbWFya2Vy IChyZWdpb24tZW5kKSkpKQorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAoZ290 by1jaGFyIGJlZykKKyAgICAgICAgICAod2hpbGUgKDwgKHBvaW50KSBlbmQpCisgICAgICAgICAg ICAoaW5zZXJ0ICI+ICIpCisgICAgICAgICAgICAoZm9yd2FyZC1saW5lIDEpKSkpCisgICAgKGlu c2VydCAiPiAiKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW5zZXJ0LWRpdmlkZXIgKCkKKyAg Ikluc2VydCBhIGhvcml6b250YWwgcnVsZS4iCisgICh1bmxlc3MgKGJvbHApIChpbnNlcnQgIlxu IikpCisgIChpbnNlcnQgIlxuLS0tXG5cbiIpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWFwcGx5 LWVsbGlwc2lzICgpCisgICJBcHBseSBgbWFya2Rvd24tdHMtZWxsaXBzaXMnIHRvIHRoZSBjdXJy ZW50IGJ1ZmZlcidzIGRpc3BsYXkgdGFibGUuIgorICAoaWYgKGFuZCAoc3RyaW5ncCBtYXJrZG93 bi10cy1lbGxpcHNpcykKKyAgICAgICAgICAgKG5vdCAoc3RyaW5nLWVtcHR5LXAgbWFya2Rvd24t dHMtZWxsaXBzaXMpKSkKKyAgICAgIChsZXQgKCh0YWJsZSAob3IgYnVmZmVyLWRpc3BsYXktdGFi bGUKKyAgICAgICAgICAgICAgICAgICAgICAgKG1ha2UtZGlzcGxheS10YWJsZSkpKSkKKyAgICAg ICAgKHNldC1kaXNwbGF5LXRhYmxlLXNsb3QKKyAgICAgICAgIHRhYmxlIDQKKyAgICAgICAgICh2 Y29uY2F0IChtYXBjYXIgKGxhbWJkYSAoYykgKG1ha2UtZ2x5cGgtY29kZSBjICdzaGFkb3cpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1lbGxpcHNpcykpKQorICAgICAg ICAoc2V0cSBidWZmZXItZGlzcGxheS10YWJsZSB0YWJsZSkpCisgICAgKHdoZW4gYnVmZmVyLWRp c3BsYXktdGFibGUKKyAgICAgIChzZXQtZGlzcGxheS10YWJsZS1zbG90IGJ1ZmZlci1kaXNwbGF5 LXRhYmxlIDQgbmlsKSkpKQorCis7OzsgTWFqb3IgbW9kZToKKworKGRlZnVuIG1hcmtkb3duLXRz LW91dGxpbmUtY3ljbGUgKCkKKyAgIkN5Y2xlIHZpc2liaWxpdHkgb2YgdGhlIGhlYWRpbmcgYXQg cG9pbnQuCitPbiBhIGhlYWRpbmcsIGNhbGwgYG91dGxpbmUtY3ljbGUnLiAgT3RoZXJ3aXNlIGRv IG5vdGhpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgICh3aGVuIChvdXRsaW5lLW9uLWhlYWRpbmct cCkKKyAgICAob3V0bGluZS1jeWNsZSkpKQorCisoZGVmdmFyLWtleW1hcCBtYXJrZG93bi10cy1t b2RlLW1hcAorICA6ZG9jICJLZXltYXAgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCisgICJNLTxs ZWZ0PiIgICAgIydtYXJrZG93bi10cy1wcm9tb3RlCisgICJNLTxyaWdodD4iICAgIydtYXJrZG93 bi10cy1kZW1vdGUKKyAgIk0tPHVwPiIgICAgICAjJ21hcmtkb3duLXRzLW1vdmUtc3VidHJlZS11 cAorICAiTS08ZG93bj4iICAgICMnbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLWRvd24KKyAgIkMt YyBDLW4iICAgICAjJ291dGxpbmUtbmV4dC1oZWFkaW5nCisgICJDLWMgQy1wIiAgICAgIydvdXRs aW5lLXByZXZpb3VzLWhlYWRpbmcKKyAgIkMtYyBDLXUiICAgICAjJ291dGxpbmUtdXAtaGVhZGlu ZworICAiQy1jIEMtZiIgICAgICMnb3V0bGluZS1mb3J3YXJkLXNhbWUtbGV2ZWwKKyAgIkMtYyBD LWIiICAgICAjJ291dGxpbmUtYmFja3dhcmQtc2FtZS1sZXZlbAorICAiQy1jIEMteCBDLWYiICMn bWFya2Rvd24tdHMtZW1waGFzaXplCisgICJDLWMgQy14IEMtbSIgIydtYXJrZG93bi10cy10b2dn bGUtaGlkZS1tYXJrdXAKKyAgIkMtYyBDLXggQy12IiAjJ21hcmtkb3duLXRzLXRvZ2dsZS1pbmxp bmUtaW1hZ2VzCisgICJDLWMgQy1jIiAgICAgIydtYXJrZG93bi10cy10b2dnbGUtY2hlY2tib3gK KyAgIkMtYyBDLXIiICAgICAjJ21hcmtkb3duLXRzLXJlbnVtYmVyLWxpc3QKKyAgIkMtYyBDLSwi ICAgICAjJ21hcmtkb3duLXRzLWluc2VydC1zdHJ1Y3R1cmUKKyAgIkMtYyBDLXYgbiIgICAjJ21h cmtkb3duLXRzLW1vdmUtdG8tbmV4dC1jb2RlLWJsb2NrCisgICJDLWMgQy12IHAiICAgIydtYXJr ZG93bi10cy1tb3ZlLXRvLXByZXZpb3VzLWNvZGUtYmxvY2sKKyAgIlJFVCIgICAgICAgICAjJ21h cmtkb3duLXRzLW5ld2xpbmUKKyAgIk0tUkVUIiAgICAgICAjJ21hcmtkb3duLXRzLWluc2VydC1s aXN0LWl0ZW0KKyAgIlRBQiIgICAgICAgICAjJ21hcmtkb3duLXRzLW91dGxpbmUtY3ljbGUpCisK KyhkZWZ2YXIta2V5bWFwIG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW1h cAorICA6ZG9jICJLZXltYXAgZm9yIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQt bW9kZScuCitUaGVzZSBvdmVycmlkZSBrZXlzIGluIGBtYXJrZG93bi10cy1tb2RlLW1hcCcgdG8g c3VwcG9ydCBleGVjdXRpbmcgdGhlaXIKK2NvbW1hbmRzIGluIGEgY29kZS1ibG9jayBjb250ZXh0 LiIKKyAgOnBhcmVudCBtYXJrZG93bi10cy1tb2RlLW1hcAorICA6bWVudSBuaWwKKyAgIk0tLiIg ICAgICAgICAjJ21hcmtkb3duLXRzLS1jb2RlLWJsb2NrLXhyZWYtZmluZC1kZWZpbml0aW9ucwor ICAiVEFCIiAgICAgICAgICMnaW5kZW50LWZvci10YWItY29tbWFuZAorICAiUkVUIiAgICAgICAg ICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiQy1qIiAgICAgICAgICMnbWFy a2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiTS1SRVQiICAgICAgICMnbWFya2Rvd24t dHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiTS1xIiAgICAgICAgICMnbWFya2Rvd24tdHMtLWNv ZGUtYmxvY2stZmlsbC1wYXJhZ3JhcGgpCisKKyhkZWZ2YXIta2V5bWFwIG1hcmtkb3duLXRzLWlu LXRhYmxlLW1vZGUtbWFwCisgIDpkb2MgIktleW1hcCBmb3IgYG1hcmtkb3duLXRzLWluLXRhYmxl LW1vZGUnLgorVGhlc2Ugb3ZlcnJpZGUga2V5cyBpbiBgbWFya2Rvd24tdHMtbW9kZS1tYXAnIHRv IHN1cHBvcnQgZXhlY3V0aW5nIHRoZWlyCitjb21tYW5kcyBpbiBhIHRhYmxlIGNvbnRleHQuIgor ICA6cGFyZW50IG1hcmtkb3duLXRzLW1vZGUtbWFwCisgIDptZW51IG5pbAorICAiPHJldHVybj4i ICAgICMnbWFya2Rvd24tdHMtdGFibGUtbmV4dC1yb3cKKyAgIlMtPHJldHVybj4iICAjJ21hcmtk b3duLXRzLXRhYmxlLXByZXZpb3VzLXJvdworICAiPHRhYj4iICAgICAgICMnbWFya2Rvd24tdHMt dGFibGUtbmV4dC1jZWxsCisgICI8YmFja3RhYj4iICAgIydtYXJrZG93bi10cy10YWJsZS1wcmV2 aW91cy1jZWxsCisgICJNLTx1cD4iICAgICAgIydtYXJrZG93bi10cy10YWJsZS1tb3ZlLXJvdy11 cAorICAiTS08ZG93bj4iICAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1yb3ctZG93bgorICAi TS08bGVmdD4iICAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tbGVmdAorICAiTS08 cmlnaHQ+IiAgICMnbWFya2Rvd24tdHMtdGFibGUtbW92ZS1jb2x1bW4tcmlnaHQKKyAgIk0tUy08 dXA+IiAgICAjJ21hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYWJvdmUKKyAgIk0tUy08ZG93 bj4iICAjJ21hcmtkb3duLXRzLXRhYmxlLWRlbGV0ZS1yb3cKKyAgIk0tUy08cmlnaHQ+IiAjJ21h cmtkb3duLXRzLXRhYmxlLWluc2VydC1jb2x1bW4tbGVmdAorICAiTS1TLTxsZWZ0PiIgICMnbWFy a2Rvd24tdHMtdGFibGUtZGVsZXRlLWNvbHVtbgorICAiQy1jIEMtdCBhIiAgICMnbWFya2Rvd24t dHMtdGFibGUtYWxpZ24tY29sdW1uCisgICJDLWMgQy1jIiAgICAgIydtYXJrZG93bi10cy10YWJs ZS1hbGlnbi10YWJsZQorICAiQy1jIEMtdCB0IiAgICMnbWFya2Rvd24tdHMtdGFibGUtdHJhbnNw b3NlLXRhYmxlKQorCisoZWFzeS1tZW51LWRlZmluZSBtYXJrZG93bi10cy1tb2RlLW1lbnUgbWFy a2Rvd24tdHMtbW9kZS1tYXAKKyAgImBtYXJrZG93bi10cy1tb2RlJyBtZW51LiIKKyAgJygiTWFy a2Rvd24iIDp2aXNpYmxlIG1hcmtkb3duLXRzLW1lbnUtYmFyLXNob3cKKyAgICAiLS0iCisgICAg WyJDeWNsZSBPdXRsaW5lIFZpc2liaWxpdHkiICBtYXJrZG93bi10cy1vdXRsaW5lLWN5Y2xlICAg ICAgICAgICAgICA6aGVscCAiQ3ljbGUgaGVhZGluZyB2aXNpYmlsaXR5IGZyb20gcG9pbnQiXQor ICAgIFsiVG9nZ2xlIEhpZGUgTWFya3VwIiAgICAgICAgbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUt bWFya3VwICAgICAgICAgOmhlbHAgIlRvZ2dsZSBkaXNwbGF5IG9mIG1hcmt1cCBjaGFyYWN0ZXJz IiA6c3R5bGUgdG9nZ2xlIDpzZWxlY3RlZCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cF0KKyAgICBb IlRvZ2dsZSBJbmxpbmUgSW1hZ2VzIiAgICAgIG1hcmtkb3duLXRzLXRvZ2dsZS1pbmxpbmUtaW1h Z2VzICAgICAgIDpoZWxwICJUb2dnbGUgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGJlbG93IGxp bmtzIiA6c3R5bGUgdG9nZ2xlIDpzZWxlY3RlZCBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzXQor ICAgICItLSIKKyAgICBbIlVwIiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmUtdXAtaGVh ZGluZyAgICAgICAgICAgICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwYXJlbnQgaGVhZGlu ZyJdCisgICAgWyJOZXh0IiAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lLW5leHQtaGVhZGlu ZyAgICAgICAgICAgICAgICAgICA6aGVscCAiTW92ZSB0byB0aGUgbmV4dCBoZWFkaW5nIl0KKyAg ICBbIlByZXZpb3VzIiAgICAgICAgICAgICAgICAgIG91dGxpbmUtcHJldmlvdXMtaGVhZGluZyAg ICAgICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwcmV2aW91cyBoZWFkaW5nIl0KKyAgICBb Ik5leHQgU2FtZSBMZXZlbCIgICAgICAgICAgIG91dGxpbmUtZm9yd2FyZC1zYW1lLWxldmVsICAg ICAgICAgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBuZXh0IGhlYWRpbmcgYXQgdGhlIHNhbWUgbGV2 ZWwiXQorICAgIFsiUHJldmlvdXMgU2FtZSBMZXZlbCIgICAgICAgb3V0bGluZS1iYWNrd2FyZC1z YW1lLWxldmVsICAgICAgICAgICAgOmhlbHAgIk1vdmUgdG8gdGhlIHByZXZpb3VzIGhlYWRpbmcg YXQgdGhlIHNhbWUgbGV2ZWwiXQorICAgICItLSIKKyAgICBbIkp1bXAiICAgICAgICAgICAgICAg ICAgICAgIGltZW51ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpoZWxwICJKdW1w IHRvIGEgaGVhZGluZyB2aWEgY29tcGxldGlvbiJdCisgICAgIi0tIgorICAgIFsiTW92ZSBTdWJ0 cmVlIFVwIiAgICAgICAgICAgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLXVwICAgICAgICAgICAg OmhlbHAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gdXAiXQorICAgIFsi TW92ZSBTdWJ0cmVlIERvd24iICAgICAgICAgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLWRvd24g ICAgICAgICAgOmhlbHAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gZG93 biJdCisgICAgWyJQcm9tb3RlIiAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1wcm9tb3Rl ICAgICAgICAgICAgICAgICAgICA6aGVscCAiUHJvbW90ZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSJd CisgICAgWyJEZW1vdGUiICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1kZW1vdGUgICAg ICAgICAgICAgICAgICAgICA6aGVscCAiRGVtb3RlIGhlYWRpbmcgb3IgbGlzdCBpdGVtIl0KKyAg ICAiLS0iCisgICAgWyJFbXBoYXNpcy4uLiIgICAgICAgICAgICAgICBtYXJrZG93bi10cy1lbXBo YXNpemUgICAgICAgICAgICAgICAgICA6aGVscCAiQWRkIG9yIGNoYW5nZSBlbXBoYXNpcyBvbiBy ZWdpb24iXQorICAgIFsiQWRkIEJsb2NrIFN0cnVjdHVyZSIgICAgICAgbWFya2Rvd24tdHMtaW5z ZXJ0LXN0cnVjdHVyZSAgICAgICAgICAgOmhlbHAgIkluc2VydCBhIGNvZGUgYmxvY2ssIHF1b3Rl LCBvciBvdGhlciBzdHJ1Y3R1cmUiXQorICAgICItLSIKKyAgICBbIlRvZ2dsZSBDaGVja2JveCIg ICAgICAgICAgIG1hcmtkb3duLXRzLXRvZ2dsZS1jaGVja2JveCAgICAgICAgICAgIDpoZWxwICJU b2dnbGUgdGFzayBsaXN0IGNoZWNrYm94IGF0IHBvaW50Il0KKyAgICBbIk5ldyBMaXN0IEl0ZW0i ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0gICAgICAgICAgIDpoZWxw ICJJbnNlcnQgYSBuZXcgbGlzdCBpdGVtIGFmdGVyIHRoZSBjdXJyZW50IG9uZSJdCisgICAgWyJS ZW51bWJlciBMaXN0IiAgICAgICAgICAgICBtYXJrZG93bi10cy1yZW51bWJlci1saXN0ICAgICAg ICAgICAgICA6aGVscCAiUmVudW1iZXIgdGhlIG9yZGVyZWQgbGlzdCBhdCBwb2ludCJdCisgICAg Ii0tIgorICAgICgiVGFibGUiCisgICAgIFsiSW5zZXJ0IHRhYmxlIiAgICAgICAgICAgICBtYXJr ZG93bi10cy10YWJsZS1pbnNlcnQtdGFibGUgICAgICAgICA6aGVscCAiSW5zZXJ0IGFuIGVtcHR5 IHRhYmxlIGF0IHBvaW50Il0KKyAgICAgWyJEZWxldGUgdGFibGUiICAgICAgICAgICAgIG1hcmtk b3duLXRzLXRhYmxlLWRlbGV0ZS10YWJsZSAgICAgICAgIDpoZWxwICJEZWxldGUgdGhlIHRhYmxl IGF0IHBvaW50Il0KKyAgICAgIi0tIgorICAgICBbIk5leHQgY2VsbCIgICAgICAgICAgICAgICAg bWFya2Rvd24tdHMtdGFibGUtbmV4dC1jZWxsICAgICAgICAgICAgOmhlbHAgIk1vdmUgcG9pbnQg dG8gdGhlIG5leHQgY2VsbCJdCisgICAgIFsiUHJldmlvdXMgY2VsbCIgICAgICAgICAgICBtYXJr ZG93bi10cy10YWJsZS1wcmV2aW91cy1jZWxsICAgICAgICA6aGVscCAiTW92ZSBwb2ludCB0byB0 aGUgcHJldmlvdXMgY2VsbCJdCisgICAgICItLSIKKyAgICAgWyJOZXh0IHJvdyIgICAgICAgICAg ICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLW5leHQtcm93ICAgICAgICAgICAgIDpoZWxwICJNb3Zl IHBvaW50IHRvIHRoZSBuZXh0IHJvdyJdCisgICAgIFsiUHJldmlvdXMgcm93IiAgICAgICAgICAg ICBtYXJrZG93bi10cy10YWJsZS1wcmV2aW91cy1yb3cgICAgICAgICA6aGVscCAiTW92ZSBwb2lu dCB0byB0aGUgcHJldmlvdXMgcm93Il0KKyAgICAgWyJJbnNlcnQgcm93IGJlbG93IiAgICAgICAg IG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYmVsb3cgICAgIDpoZWxwICJJbnNlcnQgYW4g ZW1wdHkgcm93IGJlbG93IHBvaW50Il0KKyAgICAgWyJJbnNlcnQgcm93IGFib3ZlIiAgICAgICAg IG1hcmtkb3duLXRzLXRhYmxlLWluc2VydC1yb3ctYWJvdmUgICAgIDpoZWxwICJJbnNlcnQgYW4g ZW1wdHkgcm93IGFib3ZlIHBvaW50Il0KKyAgICAgWyJDbG9uZSByb3cgYmVsb3ciICAgICAgICAg IG1hcmtkb3duLXRzLXRhYmxlLWNsb25lLXJvdy1iZWxvdyAgICAgIDpoZWxwICJDbG9uZSB0aGUg Y3VycmVudCByb3cgYmVsb3cgaXQiXQorICAgICBbIkNsb25lIHJvdyBhYm92ZSIgICAgICAgICAg bWFya2Rvd24tdHMtdGFibGUtY2xvbmUtcm93LWFib3ZlICAgICAgOmhlbHAgIkNsb25lIHRoZSBj dXJyZW50IHJvdyBhYm92ZSBpdCJdCisgICAgIFsiTW92ZSByb3cgdXAiICAgICAgICAgICAgICBt YXJrZG93bi10cy10YWJsZS1tb3ZlLXJvdy11cCAgICAgICAgICA6aGVscCAiTW92ZSB0aGUgcm93 IGF0IHBvaW50IHVwIl0KKyAgICAgWyJNb3ZlIHJvdyBkb3duIiAgICAgICAgICAgIG1hcmtkb3du LXRzLXRhYmxlLW1vdmUtcm93LWRvd24gICAgICAgIDpoZWxwICJNb3ZlIHRoZSByb3cgYXQgcG9p bnQgZG93biJdCisgICAgIFsiRGVsZXRlIHJvdyIgICAgICAgICAgICAgICBtYXJrZG93bi10cy10 YWJsZS1kZWxldGUtcm93ICAgICAgICAgICA6aGVscCAiRGVsZXRlIHRoZSByb3cgYXQgcG9pbnQi XQorICAgICAiLS0iCisgICAgIFsiSW5zZXJ0IGNvbHVtbiBsZWZ0IiAgICAgICBtYXJrZG93bi10 cy10YWJsZS1pbnNlcnQtY29sdW1uLWxlZnQgICA6aGVscCAiSW5zZXJ0IGFuIGVtcHR5IGNvbHVt biB0byB0aGUgbGVmdCBvZiBwb2ludCJdCisgICAgIFsiSW5zZXJ0IGNvbHVtbiByaWdodCIgICAg ICBtYXJrZG93bi10cy10YWJsZS1pbnNlcnQtY29sdW1uLXJpZ2h0ICA6aGVscCAiSW5zZXJ0IGFu IGVtcHR5IGNvbHVtbiB0byB0aGUgcmlnaHQgb2YgcG9pbnQiXQorICAgICBbIkNsb25lIGNvbHVt biBsZWZ0IiAgICAgICAgbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtY29sdW1uLWxlZnQgICAgOmhl bHAgIkluc2VydCBhbiBlbXB0eSBjb2x1bW4gdG8gdGhlIGxlZnQgb2YgcG9pbnQiXQorICAgICBb IkNsb25lIGNvbHVtbiByaWdodCIgICAgICAgbWFya2Rvd24tdHMtdGFibGUtY2xvbmUtY29sdW1u LXJpZ2h0ICAgOmhlbHAgIkluc2VydCBhbiBlbXB0eSBjb2x1bW4gdG8gdGhlIHJpZ2h0IG9mIHBv aW50Il0KKyAgICAgWyJNb3ZlIGNvbHVtbiBsZWZ0IiAgICAgICAgIG1hcmtkb3duLXRzLXRhYmxl LW1vdmUtY29sdW1uLWxlZnQgICAgIDpoZWxwICJNb3ZlIHRoZSBjdXJyZW50IGNvbHVtbiB0byBp dHMgbGVmdCJdCisgICAgIFsiTW92ZSBjb2x1bW4gcmlnaHQiICAgICAgICBtYXJrZG93bi10cy10 YWJsZS1tb3ZlLWNvbHVtbi1yaWdodCAgICA6aGVscCAiTW92ZSB0aGUgY3VycmVudCBjb2x1bW4g dG8gaXRzIHJpZ2h0Il0KKyAgICAgWyJBbGlnbiBjb2x1bW4uLi4iICAgICAgICAgIG1hcmtkb3du LXRzLXRhYmxlLWFsaWduLWNvbHVtbiAgICAgICAgIDpoZWxwICJBbGlnbiBjb2x1bW4gYXQgcG9p bnQgdG8gdGhlIGxlZnQsIGNlbnRlciwgb3IgcmlnaHQiXQorICAgICBbIkRlbGV0ZSBjb2x1bW4i ICAgICAgICAgICAgbWFya2Rvd24tdHMtdGFibGUtZGVsZXRlLWNvbHVtbiAgICAgICAgOmhlbHAg IkRlbGV0ZSB0aGUgY29sdW1uIGF0IHBvaW50Il0KKyAgICAgIi0tIgorICAgICBbIkFsaWduIHRh YmxlIGNvbHVtbnMiICAgICAgbWFya2Rvd24tdHMtdGFibGUtYWxpZ24tdGFibGUgICAgICAgICAg OmhlbHAgIkFsaWduIHRoZSB0YWJsZSBhdCBwb2ludCBpbiBhbiBlYXN5LXRvLWVkaXQgZm9ybWF0 Il0KKyAgICAgWyJUcmFuc3Bvc2UgdGFibGUiICAgICAgICAgIG1hcmtkb3duLXRzLXRhYmxlLXRy YW5zcG9zZS10YWJsZSAgICAgIDpoZWxwICJUcmFuc3Bvc2UgdGhlIHRhYmxlIGF0IHBvaW50IHN3 YXBwaW5nIGl0cyByb3dzIGFuZCBjb2x1bW5zIl0KKyAgICAgIi0tIgorICAgICBbIkNvbnZlcnQg Q1NWIHRvIHRhYmxlIiAgICAgbWFya2Rvd24tdHMtdGFibGUtY29udmVydC1jc3YtcmVnaW9uICAg OmhlbHAgIkNvbnZlcnQgYSByYW5nZSBvZiBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzIHRvIGEgbmV3 IHRhYmxlIGF0IHBvaW50Il0KKyAgICAgWyJDb252ZXJ0IFRTViB0byB0YWJsZSIgICAgIG1hcmtk b3duLXRzLXRhYmxlLWNvbnZlcnQtdHN2LXJlZ2lvbiAgIDpoZWxwICJDb252ZXJ0IGEgcmFuZ2Ug b2YgdGFiLXNlcGFyYXRlZCB2YWx1ZXMgdG8gYSBuZXcgdGFibGUgYXQgcG9pbnQiXQorICAgICBb IkV4cG9ydCB0YWJsZSB0byBDU1YiICAgICAgbWFya2Rvd24tdHMtdGFibGUtZXhwb3J0LXRhYmxl LWNzdiAgICAgOmhlbHAgIkV4cG9ydCB0aGUgdGFibGUgYXQgcG9pbnQgdG8gYSBjb21tYS1zZXBh cmF0ZWQgdmFsdWVzIGJ1ZmZlciJdCisgICAgIFsiRXhwb3J0IHRhYmxlIHRvIFRTViIgICAgICBt YXJrZG93bi10cy10YWJsZS1leHBvcnQtdGFibGUtdHN2ICAgICA6aGVscCAiRXhwb3J0IHRoZSB0 YWJsZSBhdCBwb2ludCB0byBhIHRhYi1zZXBhcmF0ZWQgdmFsdWVzIGJ1ZmZlciJdKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy0tc2V0LXVwICgpCisgICJTZXQgdXAgdGhlIGJ1ZmZlciBmb3IgYG1h cmtkb3duLXRzLW1vZGUnLgorSWYgYG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lJyBpcyBub24t bmlsLCB1c2UgYSBsaWdodHdlaWdodCBzZXQgdXAgZm9yCitlbWJlZGRlZCBpbmxpbmUgYG1hcmtk b3duLXRzLW1vZGUnIGJ1ZmZlcnMuCisKK05PVEU6IENhbGwgdGhpcyBmdW5jdGlvbiBvbmx5IHdo ZW4gdGhlIHRyZWVzaXQgYG1hcmtkb3duJyBhbmQKK2BtYXJrZG93bi1pbmxpbmUnIHBhcnNlcnMg YXJlIGF2YWlsYWJsZS4iCisKKyAgOzsgU2V0IHRoZXNlIHVwIGZvciBib3RoIG1hc3RlciBhbmQg aW5saW5lIGZvciBjb2RlLWJsb2NrIGJ1ZmZlcnMuCisgIChzZXRxLWxvY2FsIGNvbW1lbnQtc3Rh cnQgIjwhLS0gIgorICAgICAgICAgICAgICBjb21tZW50LWVuZCAiIC0tPiIKKyAgICAgICAgICAg ICAgY29tbWVudC1zdGFydC1za2lwICI8IS0tWyBcdF0qIgorICAgICAgICAgICAgICBjb21tZW50 LWVuZC1za2lwICJbIFx0XSotLT4iCisgICAgICAgICAgICAgIGNvbW1lbnQtdXNlLXN5bnRheCBu aWwpCiAKLTs7OyBNYWpvciBtb2RlCisgIChzZXRxLWxvY2FsIGZpbGwtcGFyYWdyYXBoLWZ1bmN0 aW9uCisgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLWZpbGwtcGFyYWdyYXBoCisgICAgICAg ICAgICAgIGZpbGwtZm9yd2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24KKyAgICAgICAgICAgICAgIydt YXJrZG93bi10cy0tZmlsbC1mb3J3YXJkLXBhcmFncmFwaCkKIAotKGRlZnVuIG1hcmtkb3duLXRz LXNldHVwICgpCi0gICJTZXR1cCB0cmVlc2l0IGZvciBgbWFya2Rvd24tdHMtbW9kZScuIgotICAo bWFrZS1sb2NhbC12YXJpYWJsZSAnbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApCisgIDs7IGBhZGFw dGl2ZS1maWxsLWZ1bmN0aW9uJyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIKKyAgOzsgYGFkYXB0aXZl LWZpbGwtcmVnZXhwJzsgdGhlIGRlZmF1bHQgcmVnZXhwIGlzIGZpbmUgYXMgYQorICA7OyBmYWxs YmFjayBmb3IgcGxhaW4gKG5vbi1saXN0KSBwYXJhZ3JhcGhzLgorICAoc2V0cS1sb2NhbCBhZGFw dGl2ZS1maWxsLWZ1bmN0aW9uICMnbWFya2Rvd24tdHMtLWFkYXB0aXZlLWZpbGwpCisKKyAgOzsg Q3JlYXRlIGFuZCBjb25maWd1cmUgdGhlIHBhcnNlcnMuCisgICh0cmVlc2l0LXBhcnNlci1jcmVh dGUgJ21hcmtkb3duLWlubGluZSkKKyAgKHNldHEgdHJlZXNpdC1wcmltYXJ5LXBhcnNlcgorICAg ICAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdtYXJrZG93bikpCisKKyAgKHNldHEtbG9jYWwg Zm9udC1sb2NrLWRlZmF1bHRzIG5pbCkKICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2st c2V0dGluZ3MgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MpCi0gIChzZXRxLWxvY2FsIHRy ZWVzaXQtcmFuZ2Utc2V0dGluZ3MgKG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncykpCi0gIChh ZGQtdG8tbGlzdCAnZm9udC1sb2NrLWV4dHJhLW1hbmFnZWQtcHJvcHMgJ2ludmlzaWJsZSkKLQot ICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICdodG1sIHQpCi0gICAgKHRyZWVzaXQtcGFyc2VyLWNy ZWF0ZSAnaHRtbCkKLSAgICAocmVxdWlyZSAnaHRtbC10cy1tb2RlKQotICAgIChkZWZ2YXIgaHRt bC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciBodG1sLXRzLW1vZGUt LXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0 LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250 LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwtdHMtbW9kZS0tZm9u dC1sb2NrLXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0 dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250LWxvY2stZmVhdHVy ZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAot ICAgICAgICAgICAgICAgICBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUt bGlzdCkpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAg ICAgICAgIChhcHBlbmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAg ICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1i ZWQgJ2h0bWwKLSAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KLSAgICAg ICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAotICAgICAgICAgICAgICAgICAgICAgICAgICco KGh0bWxfYmxvY2spIEBodG1sKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVkICdo dG1sCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duLWlubGluZQotICAg ICAgICAgICAgICAgICAgICAgICAgICcoKGh0bWxfdGFnKSBAaHRtbCkpKSkpCi0KLSAgKHdoZW4g KHRyZWVzaXQtcmVhZHktcCAneWFtbCB0KQotICAgIChyZXF1aXJlICd5YW1sLXRzLW1vZGUpCi0g ICAgKGRlZnZhciB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykKLSAgICAoZGVmdmFy IHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKLSAgICAoc2V0cS1sb2NhbCB0 cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNp dC1mb250LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHlhbWwtdHMtbW9k ZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9j ay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250LWxvY2st ZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUt bGlzdAotICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxp c3QpKQotICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAg ICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAg ICAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVk ICd5YW1sCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duCi0gICAgICAg ICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAnKCht aW51c19tZXRhZGF0YSkgQHlhbWwpKSkpKQotCi0gICh3aGVuICh0cmVlc2l0LXJlYWR5LXAgJ3Rv bWwgdCkKLSAgICAocmVxdWlyZSAndG9tbC10cy1tb2RlKQotICAgIChkZWZ2YXIgdG9tbC10cy1t b2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciB0b21sLXRzLW1vZGUtLWZvbnQt bG9jay1mZWF0dXJlLWxpc3QpCi0gICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MK LSAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAg ICAgICAgICB0b21sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykpCi0gICAgKHNldHEtbG9j YWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgKHRyZWVz aXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAgICAgICB0cmVlc2l0 LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAgdG9tbC10cy1tb2RlLS1m b250LWxvY2stZmVhdHVyZS1saXN0KSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNl dHRpbmdzCi0gICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCi0g ICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcwotICAgICAgICAgICAg ICAgICAgICAgICAgIDplbWJlZCAndG9tbAotICAgICAgICAgICAgICAgICAgICAgICAgIDpob3N0 ICdtYXJrZG93bgotICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2NhbCB0Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgJygocGx1c19tZXRhZGF0YSkgQHRvbWwpKSkpKQorICAoc2V0cS1sb2Nh bCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QgJygoZGVsaW1pdGVyIGhlYWRpbmcpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhZ3JhcGgp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhZ3Jh cGgtaW5saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaW1hZ2UtcHJldmlldyBlcnJvcikpKQorCisgIChjb25kIChtYXJrZG93bi10cy0tc2V0LXVw LWlubGluZQorICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAg ICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAgICAgICAgICAg ICAgICAgICA6ZW1iZWQgJ21hcmtkb3duLWlubGluZQorICAgICAgICAgICAgICAgICAgICAgICA6 aG9zdCAnbWFya2Rvd24KKyAgICAgICAgICAgICAgICAgICAgICAgJygoaW5saW5lKSBAbWFya2Rv d24taW5saW5lKSkpKQorICAgICAgICAodAorICAgICAgICAgOzsgUmFuZ2Ugc2V0dGluZ3MgZGlm ZmVyIGluIHRoZSBtYXN0ZXIgYnVmZmVyIHZzLiBpbmxpbmUgYWJvdmUuCisgICAgICAgICAoc2V0 cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzIChtYXJrZG93bi10cy0tcmFuZ2Utc2V0dGlu Z3MpKQorCisgICAgICAgICA7OyBDb25maWd1cmUgZmVhdHVyZXMgbmVlZGVkIG9ubHkgaW4gdGhl IG1hc3RlciBidWZmZXIuCisKKyAgICAgICAgIDs7IEltZW51IHN1cHBvcnQuCisgICAgICAgICAo c2V0cS1sb2NhbCB0cmVlc2l0LXNpbXBsZS1pbWVudS1zZXR0aW5ncworICAgICAgICAgICAgICAg ICAgICAgYCgoIkhlYWRpbmdzIiAsIydtYXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1ub2RlLXAK KyAgICAgICAgICAgICAgICAgICAgICAgIG5pbCAsIydtYXJrZG93bi10cy0taW1lbnUtaGVhZGlu Zy1uYW1lLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAoIkNvZGUgQmxvY2tzIiAs IydtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1ub2RlLXAKKyAgICAgICAgICAgICAgICAg ICAgICAgIG5pbCAsIydtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1uYW1lLWZ1bmN0aW9u KSkpCisKKyAgICAgICAgIDs7IE91dGxpbmUgc3VwcG9ydC4KKyAgICAgICAgIChzZXRxLWxvY2Fs IHRyZWVzaXQtb3V0bGluZS1wcmVkaWNhdGUgIydtYXJrZG93bi10cy0tb3V0bGluZS1wcmVkaWNh dGUpCisgICAgICAgICAoc2V0cS1sb2NhbCBvdXRsaW5lLW1pbm9yLW1vZGUtY3ljbGUgdCkKKyAg ICAgICAgIChvdXRsaW5lLW1pbm9yLW1vZGUgMSkKKyAgICAgICAgIChtYXJrZG93bi10cy0tYXBw bHktZWxsaXBzaXMpCisKKyAgICAgICAgIDs7IE5PVEU6IGBvdXRsaW5lLXZpZXctY2hhbmdlLWhv b2snIHdhcyBvYnNvbGV0ZWQgaW4gMjkuMSAoY29tbWl0CisgICAgICAgICA7OyA1M2IxZTZmOTZj Yikgb24gdGhlIGdyb3VuZHMgdGhhdCBvbmx5IGxhenktbG9jayB1c2VkIGl0LCBidXQgbm8KKyAg ICAgICAgIDs7IHJlcGxhY2VtZW50IHdhcyBwcm92aWRlZCBhbmQgb3V0bGluZS5lbCBpdHNlbGYg c3RpbGwgcnVucyB0aGUgaG9vaworICAgICAgICAgOzsgaW4gMTArIHBsYWNlcy4KKyAgICAgICAg ICh3aXRoLXN1cHByZXNzZWQtd2FybmluZ3MgKChvYnNvbGV0ZSBvdXRsaW5lLXZpZXctY2hhbmdl LWhvb2spKQorICAgICAgICAgICAoYWRkLWhvb2sgJ291dGxpbmUtdmlldy1jaGFuZ2UtaG9vawor ICAgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tb3V0bGluZS12aWV3LWNoYW5nZSBu aWwgdCkpCisKKyAgICAgICAgIChwcm9nbgorICAgICAgICAgICAobWFrZS1sb2NhbC12YXJpYWJs ZSAnbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApCisgICAgICAgICAgIChtYWtlLWxvY2FsLXZhcmlh YmxlICdmb250LWxvY2stZXh0cmEtbWFuYWdlZC1wcm9wcykKKyAgICAgICAgICAgKGRvbGlzdCAo cHJvcCAnKGludmlzaWJsZSBkaXNwbGF5IGJ1dHRvbiBjYXRlZ29yeSBhY3Rpb24gaGVscC1lY2hv KSkKKyAgICAgICAgICAgICAoYWRkLXRvLWxpc3QgJ2ZvbnQtbG9jay1leHRyYS1tYW5hZ2VkLXBy b3BzIHByb3ApKSkKKworICAgICAgICAgKHdoZW4gKHRyZWVzaXQtcmVhZHktcCAnaHRtbCB0KQor ICAgICAgICAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdodG1sKQorICAgICAgICAgICAocmVx dWlyZSAnaHRtbC10cy1tb2RlKQorICAgICAgICAgICAoZGVmdmFyIGh0bWwtdHMtbW9kZS0tZm9u dC1sb2NrLXNldHRpbmdzKQorICAgICAgICAgICAoZGVmdmFyIGh0bWwtdHMtbW9kZS0tdHJlZXNp dC1mb250LWxvY2stZmVhdHVyZS1saXN0KQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0 LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVz aXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRt bC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0 cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHRy ZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAg ICAgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAg ICBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkpCisgICAgICAg ICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAg ICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOmVtYmVkICdodG1sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpo b3N0ICdtYXJrZG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChodG1sX2Jsb2NrKSBAaHRtbCkKKwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ2h0bWwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duLWlubGluZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnKChodG1sX3RhZykgQGh0bWwpKSkpKQorCisgICAgICAgICAo d2hlbiAodHJlZXNpdC1yZWFkeS1wICd5YW1sIHQpCisgICAgICAgICAgIChyZXF1aXJlICd5YW1s LXRzLW1vZGUpCisgICAgICAgICAgIChkZWZ2YXIgeWFtbC10cy1tb2RlLS1mb250LWxvY2stc2V0 dGluZ3MpCisgICAgICAgICAgIChkZWZ2YXIgeWFtbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVy ZS1saXN0KQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5n cworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRp bmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWFtbC10cy1tb2RlLS1mb250LWxv Y2stc2V0dGluZ3MpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1m ZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbWVyZ2UtZm9udC1s b2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgdHJlZXNpdC1mb250LWxv Y2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZv bnQtbG9jay1mZWF0dXJlLWxpc3QpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJh bmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1yYW5n ZS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LXJhbmdl LXJ1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJlZCAneWFtbAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygobWludXNfbWV0YWRhdGEpIEB5YW1sKSkpKSkKKworICAgICAgICAgKHdoZW4gKHRy ZWVzaXQtcmVhZHktcCAndG9tbCB0KQorICAgICAgICAgICAocmVxdWlyZSAndG9tbC10cy1tb2Rl KQorICAgICAgICAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKQor ICAgICAgICAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkK KyAgICAgICAgICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAgICAgICAg ICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAg ICAgICAgICAgIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKKyAgICAgICAgICAg KHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAg ICAgICAgICAgICh0cmVlc2l0LW1lcmdlLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAg ICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAg ICAgICAgICAgICAgICAgdG9tbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KSkKKyAg ICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAgICAgICAg ICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6ZW1iZWQgJ3RvbWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOmhvc3QgJ21hcmtkb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2Nh bCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKHBsdXNfbWV0YWRhdGEpIEB0 b21sKSkpKSkKKworICAgICAgICAgOzsgU3VwcG9ydCBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIGlu IGEgY29kZS1ibG9jayBjb250ZXh0LgorICAgICAgICAgKHdoZW4gbWFya2Rvd24tdHMtZW5hYmxl LWNvZGUtYmxvY2stY29udGV4dC1tb2RlCisgICAgICAgICAgIChtYXJrZG93bi10cy1jb2RlLWJs b2NrLWNvbnRleHQtbW9kZSkpCisKKyAgICAgICAgIDs7IFN1cHBvcnQgZm9yIHRhYmxlIG1vZGUu CisgICAgICAgICAod2hlbiBtYXJrZG93bi10cy1lbmFibGUtdGFibGUtbW9kZQorICAgICAgICAg ICAobWFya2Rvd24tdHMtdGFibGUtbW9kZSkpKSkKIAogICAodHJlZXNpdC1tYWpvci1tb2RlLXNl dHVwKQotICAobWFya2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1h cmt1cCkpCisKKyAgOzsgRG8gbm90IGVuYWJsZSBgaml0LWxvY2stbW9kZScgaW4gaW5kaXJlY3Qg YnVmZmVycyBzdWNoIGFzIHRoZSBvbmUKKyAgOzsgd2UgdXNlIGZvciBjb2RlIGJsb2NrIGNvbW1h bmRzLgorICAodW5sZXNzIChidWZmZXItYmFzZS1idWZmZXIpCisgICAgKGppdC1sb2NrLXJlZ2lz dGVyICMnbWFya2Rvd24tdHMtLWZvbnRpZnktYmFyZS11cmkpKQorCisgICh1bmxlc3MgbWFya2Rv d24tdHMtLXNldC11cC1pbmxpbmUKKyAgICA7OyBPcmRlciBtYXR0ZXJzOiBgbWFya2Rvd24tdHMt LXNldC1oaWRlLW1hcmt1cCcgY2FsbHMgYGZvbnQtbG9jay1mbHVzaCcKKyAgICA7OyAob25seSBt ZWFuaW5nZnVsIG9uY2UgYHRyZWVzaXQtbWFqb3ItbW9kZS1zZXR1cCcgaGFzIHdpcmVkIHVwCisg ICAgOzsgZm9udC1sb2NrKSwgYW5kIGBtYXJrZG93bi10cy1kZWZhdWx0LWZvbGRpbmcnIGNhbGxz IG91dGxpbmUKKyAgICA7OyBjb21tYW5kcyB0aGF0IHJlbHkgb24gYG91dGxpbmUtc2VhcmNoLWZ1 bmN0aW9uJywgd2hpY2gKKyAgICA7OyBgdHJlZXNpdC1tYWpvci1tb2RlLXNldHVwJyBpbnN0YWxs cyBmcm9tIGB0cmVlc2l0LW91dGxpbmUtcHJlZGljYXRlJy4KKyAgICAobWFya2Rvd24tdHMtLXNl dC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkKKyAgICA7OyBSZXNwZWN0IHRo ZSB1c2VyJ3MgZGVmYXVsdCBvdXRsaW5lIGZvbGRpbmcuCisgICAgKHBjYXNlIG1hcmtkb3duLXRz LWRlZmF1bHQtZm9sZGluZworICAgICAgKCdzaG93LWFsbCAoaWdub3JlKSkKKyAgICAgICgnZm9s ZC1hbGwgKG91dGxpbmUtaGlkZS1zdWJsZXZlbHMgMSkpCisgICAgICAoJ2ZvbGQtaGVhZGluZ3Mg KG91dGxpbmUtc2hvdy1hbGwpCisgICAgICAgICAgICAgICAgICAgICAgKG91dGxpbmUtaGlkZS1y ZWdpb24tYm9keSAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93 bi10cy1tb2RlLWluc3RhbGwtcGFyc2VycyAoYXJnKQorICAiSW5zdGFsbCBgbWFya2Rvd24tdHMt bW9kZScgdHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgcGFyc2Vycy4KK0lmIG5lZWRlZCwgaW5zdGFsbCB0 aGUgcmVxdWlyZWQgcGFyc2VycyBmb3IgYG1hcmtkb3duJyBhbmQgYG1hcmtkb3duLWlubGluZScu CitXaXRoIGEgcHJlZml4IGFyZ3VtZW50LCBBUkcsIGlmIG5lZWRlZCwgaW5zdGFsbCBwYXJzZXJz IGZvciBgaHRtbCcsCitgeWFtbCcsIGFuZCBgdG9tbCcuIgorICAoaW50ZXJhY3RpdmUgIlAiKQor ICAodW5sZXNzICh0cmVlc2l0LXJlYWR5LXAgJ21hcmtkb3duIHQpCisgICAgKHRyZWVzaXQtaW5z dGFsbC1sYW5ndWFnZS1ncmFtbWFyICdtYXJrZG93bikpCisgICh1bmxlc3MgKHRyZWVzaXQtcmVh ZHktcCAnbWFya2Rvd24taW5saW5lIHQpCisgICAgKHRyZWVzaXQtaW5zdGFsbC1sYW5ndWFnZS1n cmFtbWFyICdtYXJrZG93bi1pbmxpbmUpKQorICAod2hlbiBhcmcKKyAgICAodW5sZXNzICh0cmVl c2l0LXJlYWR5LXAgJ2h0bWwgdCkKKyAgICAgIChyZXF1aXJlICdodG1sLXRzLW1vZGUpCisgICAg ICAodHJlZXNpdC1pbnN0YWxsLWxhbmd1YWdlLWdyYW1tYXIgJ2h0bWwpKQorICAgICh1bmxlc3Mg KHRyZWVzaXQtcmVhZHktcCAneWFtbCB0KQorICAgICAgKHJlcXVpcmUgJ3lhbWwtdHMtbW9kZSkK KyAgICAgICh0cmVlc2l0LWluc3RhbGwtbGFuZ3VhZ2UtZ3JhbW1hciAneWFtbCkpCisgICAgKHVu bGVzcyAodHJlZXNpdC1yZWFkeS1wICd0b21sIHQpCisgICAgICAocmVxdWlyZSAndG9tbC10cy1t b2RlKQorICAgICAgKHRyZWVzaXQtaW5zdGFsbC1sYW5ndWFnZS1ncmFtbWFyICd0b21sKSkpKQog CiA7OzsjIyNhdXRvbG9hZAogKGRlZmluZS1kZXJpdmVkLW1vZGUgbWFya2Rvd24tdHMtbW9kZSB0 ZXh0LW1vZGUgIk1hcmtkb3duIgotICAiTWFqb3IgbW9kZSBmb3IgZWRpdGluZyBNYXJrZG93biB1 c2luZyB0cmVlLXNpdHRlciBncmFtbWFyLiIKKyAgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcgTWFy a2Rvd24gdXNpbmcgdHJlZS1zaXR0ZXIgZ3JhbW1hci4KK05PVEU6IFNlZSBgbWFya2Rvd24tdHMt LXNldC11cC1pbmxpbmUnLiIKKyAgKGlmIChhbmQgKHRyZWVzaXQtZW5zdXJlLWluc3RhbGxlZCAn bWFya2Rvd24pCisgICAgICAgICAgICh0cmVlc2l0LWVuc3VyZS1pbnN0YWxsZWQgJ21hcmtkb3du LWlubGluZSkpCisgICAgICAobWFya2Rvd24tdHMtLXNldC11cCkKKyAgICAod2FybiAibWFya2Rv d24tdHMtbW9kZSBjYW5ub3QgYmUgc2V0IHVwOyB1c2luZyBmdW5kYW1lbnRhbC1tb2RlLgorVGhl IHRyZWUtc2l0dGVyIHBhcnNlcnMgYG1hcmtkb3duJyBhbmQgYG1hcmtkb3duLWlubGluZScgd2Vy ZSBub3QgZm91bmQuCitVc2UgdGhlIGNvbW1hbmQgYG1hcmtkb3duLXRzLW1vZGUtaW5zdGFsbC1w YXJzZXJzJyB0byBpbnN0YWxsIHRoZW0uCitXaXRoIGEgcHJlZml4IGFyZ3VtZW50LCBpdCBjYW4g YWxzbyBpbnN0YWxsIG9wdGlvbmFsIHBhcnNlcnMuIikKKyAgICAoZnVuZGFtZW50YWwtbW9kZSkp KQogCi0gIChzZXRxLWxvY2FsIGNvbW1lbnQtc3RhcnQgIjwhLS0gIikKLSAgKHNldHEtbG9jYWwg Y29tbWVudC1lbmQgIiAtLT4iKQorKGRlcml2ZWQtbW9kZS1hZGQtcGFyZW50cyAnbWFya2Rvd24t dHMtbW9kZSAnKG1hcmtkb3duLW1vZGUpKQogCi0gIChzZXRxLWxvY2FsIGZvbnQtbG9jay1kZWZh dWx0cyBuaWwKLQkgICAgICB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QgJygoZGVsaW1p dGVyIGhlYWRpbmcpCi0JCQkJCSAgICAgICAocGFyYWdyYXBoKQotCQkJCQkgICAgICAgKHBhcmFn cmFwaC1pbmxpbmUpKSkKKyhkZWZ1biBtYXJrZG93bi10cy0tYmFyZi1pZi1ub3QtbW9kZSAoJm9w dGlvbmFsIGNvbnRleHQpCisgICJTaWduYWwgYW4gZXJyb3IgaWYgdGhlIGN1cnJlbnQgYnVmZmVy IGlzIG5vdCBhIGBtYXJrZG93bi10cy1tb2RlJyBidWZmZXIuCitQcmVmaXggdGhlIGVycm9yIG1l c3NhZ2Ugd2l0aCBDT05URVhULiIKKyAgKHVubGVzcyAoZGVyaXZlZC1tb2RlLXAgJ21hcmtkb3du LXRzLW1vZGUpCisgICAgKHVzZXItZXJyb3IgIiVzaXMgdmFsaWQgb25seSBpbiBgbWFya2Rvd24t dHMtbW9kZScgYnVmZmVycyIKKyAgICAgICAgICAgICAgICAoaWYgY29udGV4dCAoZm9ybWF0ICIl czogIiBjb250ZXh0KSAiIikpKSkKIAotICAoc2V0cS1sb2NhbCB0cmVlc2l0LXNpbXBsZS1pbWVu dS1zZXR0aW5ncwotICAgICAgICAgICAgICBgKCgiSGVhZGluZ3MiICwjJ21hcmtkb3duLXRzLWlt ZW51LW5vZGUtcAotICAgICAgICAgICAgICAgICBuaWwgLCMnbWFya2Rvd24tdHMtaW1lbnUtbmFt ZS1mdW5jdGlvbikpKQotICAoc2V0cS1sb2NhbCB0cmVlc2l0LW91dGxpbmUtcHJlZGljYXRlICMn bWFya2Rvd24tdHMtb3V0bGluZS1wcmVkaWNhdGUpCisoZGVmaW5lLW1pbm9yLW1vZGUgbWFya2Rv d24tdHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUKKyAgIk1pbm9yIG1vZGUgZW5hYmxlZCBp ZiBwb2ludCBpcyB3aXRoaW4gYSBmZW5jZWQgY29kZSBibG9jay4KK1RoaXMgZW5hYmxlcyB0aGUg a2V5bWFwIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1tYXAnLiIKKyAg Omdyb3VwICdtYXJrZG93bi10cworICA6bGlnaHRlciBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWlu LWNvbnRleHQtbW9kZS1saWdodGVyCisgIDppbnRlcmFjdGl2ZSBuaWwKKyAgKG1hcmtkb3duLXRz LS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS11cGRhdGUtb3YpKQogCi0gICh3aGVuIChhbmQg KHRyZWVzaXQtZW5zdXJlLWluc3RhbGxlZCAnbWFya2Rvd24pCi0gICAgICAgICAgICAgKHRyZWVz aXQtZW5zdXJlLWluc3RhbGxlZCAnbWFya2Rvd24taW5saW5lKSkKLSAgICAodHJlZXNpdC1wYXJz ZXItY3JlYXRlICdtYXJrZG93bi1pbmxpbmUpCi0gICAgKHRyZWVzaXQtcGFyc2VyLWNyZWF0ZSAn bWFya2Rvd24pCi0gICAgKG1hcmtkb3duLXRzLXNldHVwKSkpCisoZGVmdmFyLWxvY2FsIG1hcmtk b3duLXRzLS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1vdiBuaWwpCiAKLShkZXJpdmVkLW1v ZGUtYWRkLXBhcmVudHMgJ21hcmtkb3duLXRzLW1vZGUgJyhtYXJrZG93bi1tb2RlKSkKKyhkZWZ1 biBtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtdXBkYXRlLW92ICgpCisg ICJNYW5hZ2UgYG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1vdicuIgor ICAoY29uZCAobWFya2Rvd24tdHMtY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUKKyAgICAgICAg IChsZXQgKChiZWcgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ21hcmtkb3duLXRzLWNvZGUt YmVnLW1hcmtlcikpCisgICAgICAgICAgICAgICAoZW5kIChnZXQtY2hhci1wcm9wZXJ0eSAocG9p bnQpICdtYXJrZG93bi10cy1jb2RlLWVuZC1tYXJrZXIpKSkKKyAgICAgICAgICAgKGlmIG1hcmtk b3duLXRzLS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZS1vdgorICAgICAgICAgICAgICAgKG1v dmUtb3ZlcmxheSBtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YgYmVn IGVuZCkKKyAgICAgICAgICAgICAoc2V0cSBtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250 ZXh0LW1vZGUtb3YKKyAgICAgICAgICAgICAgICAgICAobWFrZS1vdmVybGF5IGJlZyBlbmQgbmls IHQgbmlsKSkpCisgICAgICAgICAgIChvdmVybGF5LXB1dCBtYXJrZG93bi10cy0tY29kZS1ibG9j ay1pbi1jb250ZXh0LW1vZGUtb3YKKyAgICAgICAgICAgICAgICAgICAgICAgICdtYXJrZG93bi10 cy1pbi1jb2RlLWJsb2NrIHQpCisgICAgICAgICAgIChvdmVybGF5LXB1dCBtYXJrZG93bi10cy0t Y29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3YKKyAgICAgICAgICAgICAgICAgICAgICAgICdl dmFwb3JhdGUgdCkKKyAgICAgICAgICAgKG92ZXJsYXktcHV0IG1hcmtkb3duLXRzLS1jb2RlLWJs b2NrLWluLWNvbnRleHQtbW9kZS1vdgorICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5 ICcobmlsIC4gMjApKQorICAgICAgICAgICAob3ZlcmxheS1wdXQgbWFya2Rvd24tdHMtLWNvZGUt YmxvY2staW4tY29udGV4dC1tb2RlLW92CisgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZSAn bWFya2Rvd24tdHMtaW4tY29kZS1ibG9jaykpKQorICAgICAgICAodAorICAgICAgICAgKHdoZW4g bWFya2Rvd24tdHMtLWNvZGUtYmxvY2staW4tY29udGV4dC1tb2RlLW92CisgICAgICAgICAgIChk ZWxldGUtb3ZlcmxheSBtYXJrZG93bi10cy0tY29kZS1ibG9jay1pbi1jb250ZXh0LW1vZGUtb3Yp KSkpKQogCi07OzsjIyNhdXRvbG9hZAotKGRlZnVuIG1hcmtkb3duLXRzLW1vZGUtbWF5YmUgKCkK LSAgIkVuYWJsZSBgbWFya2Rvd24tdHMtbW9kZScgd2hlbiBpdHMgZ3JhbW1hciBpcyBhdmFpbGFi bGUuCi1BbHNvIHByb3Bvc2UgdG8gaW5zdGFsbCB0aGUgZ3JhbW1hciB3aGVuIGB0cmVlc2l0LWVu YWJsZWQtbW9kZXMnCi1pcyB0IG9yIGNvbnRhaW5zIHRoZSBtb2RlIG5hbWUuIgotICAoZGVjbGFy ZS1mdW5jdGlvbiB0cmVlc2l0LWxhbmd1YWdlLWF2YWlsYWJsZS1wICJ0cmVlc2l0LmMiKQotICAo aWYgKG9yICh0cmVlc2l0LWxhbmd1YWdlLWF2YWlsYWJsZS1wICdtYXJrZG93bikKLSAgICAgICAg ICAoZXEgdHJlZXNpdC1lbmFibGVkLW1vZGVzIHQpCi0gICAgICAgICAgKG1lbXEgJ21hcmtkb3du LXRzLW1vZGUgdHJlZXNpdC1lbmFibGVkLW1vZGVzKSkKLSAgICAgIChtYXJrZG93bi10cy1tb2Rl KQotICAgIChmdW5kYW1lbnRhbC1tb2RlKSkpCisoZGVmaW5lLW1pbm9yLW1vZGUgbWFya2Rvd24t dHMtY29kZS1ibG9jay1jb250ZXh0LW1vZGUKKyAgIk1pbm9yIG1vZGUgdG8gZW5hYmxlIGNvbW1h bmRzIGluIGZlbmNlZCBjb2RlIGJsb2NrIGNvbnRleHQuCitJZiBub24tbmlsIGFuZCBgcG9pbnQn IGlzIGluIGEgZmVuY2VkIGNvZGUgYmxvY2ssIHJ1biBgaW5kZW50LWZvci10YWItY29tbWFuZCcs CitgbmV3bGluZScsIGV0LmFsLiwgaW4gdGhlIG1vZGUgb2YgdGhlIGNvZGUgYmxvY2suIgorICA6 Z3JvdXAgJ21hcmtkb3duLXRzCisgIDppbnRlcmFjdGl2ZSBuaWwKKyAgKG1hcmtkb3duLXRzLS1i YXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZSkKKyAg KGNvbmQgKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29udGV4dC1tb2RlCisgICAgICAgICA7OyBF bmFibGUgdGhlIG1pbm9yIG1vZGUgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2staW4tY29udGV4dC1t b2RlJyBhbmQKKyAgICAgICAgIDs7IGl0cyBrZXltYXAgd2hlbiBwb2ludCBpcyB3aXRoaW4gYSBj b2RlIGJsb2NrLgorICAgICAgICAgKGFkZC1ob29rICdwb3N0LWNvbW1hbmQtaG9vaworICAgICAg ICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLWVuYWJsZS1jb2RlLWJsb2NrLWluLWNvbnRleHQt bW9kZSBuaWwgJ2xvY2FsKQorICAgICAgICAgOzsgSWYgYHNhdmUtcGxhY2UtbW9kZScgb3Igc2lt aWxhciBpcyB1c2VkLCBwb2ludCBjb3VsZCBzdGFydCB3aXRoaW4KKyAgICAgICAgIDs7IGEgY29k ZSBibG9jayBzbyBpbml0aWFsaXplIGZyb20gdGhhdCBzdGF0ZS4KKyAgICAgICAgIChydW4td2l0 aC10aW1lciAwLjAxIG5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMt LWVuYWJsZS1jb2RlLWJsb2NrLWluLWNvbnRleHQtbW9kZSkKKyAgICAgICAgIDs7IEZvciBlYWNo IGVsaWdpYmxlIGNvbW1hbmQsIGV4ZWN1dGUgaXQgaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQsCisg ICAgICAgICA7OyBvdGhlcndpc2UgaW4gdGhlIGBtYXJrZG93bi10cy1tb2RlJyBidWZmZXIncyBj b250ZXh0LgorICAgICAgICAgKGFkZC1ob29rICdwcmUtY29tbWFuZC1ob29rCisgICAgICAgICAg ICAgICAgICAgIydtYXJrZG93bi10cy0tbWF5YmUtcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jayBu aWwgJ2xvY2FsKQorICAgICAgICAgOzsgUHJ1bmUgc3RhbGUgY29kZSBibG9jayBvdmVybGF5cyB3 aGVuIHRoZSBob3N0IHBhcnNlIHRyZWUKKyAgICAgICAgIDs7IGNoYW5nZXMgKGUuZy4sIHdoZW4g ZmVuY2VkIGNvZGUgYmxvY2sgZGVsaW1pdGVycyBhcmUKKyAgICAgICAgIDs7IGRlbGV0ZWQgYnV0 IHRoZSBvdmVybGF5IGZyb20gYSBwcmlvciBmb250aWZpY2F0aW9uIHJlbWFpbnMpLgorICAgICAg ICAgKHRyZWVzaXQtcGFyc2VyLWFkZC1ub3RpZmllcgorICAgICAgICAgIHRyZWVzaXQtcHJpbWFy eS1wYXJzZXIKKyAgICAgICAgICAjJ21hcmtkb3duLXRzLS1ob3N0LXJhbmdlcy1ub3RpZmllcikp CisgICAgICAgICh0CisgICAgICAgICAocmVtb3ZlLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29rCisg ICAgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2staW4t Y29udGV4dC1tb2RlICdsb2NhbCkKKyAgICAgICAgIChyZW1vdmUtaG9vayAncHJlLWNvbW1hbmQt aG9vaworICAgICAgICAgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLW1heWJlLXJ1bi1jb21t YW5kLWluLWNvZGUtYmxvY2sgJ2xvY2FsKQorICAgICAgICAgKHRyZWVzaXQtcGFyc2VyLXJlbW92 ZS1ub3RpZmllcgorICAgICAgICAgIHRyZWVzaXQtcHJpbWFyeS1wYXJzZXIKKyAgICAgICAgICAj J21hcmtkb3duLXRzLS1ob3N0LXJhbmdlcy1ub3RpZmllcikpKSkKKworKGRlZmluZS1taW5vci1t b2RlIG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUKKyAgIk1pbm9yIG1vZGUgZW5hYmxlZCBpZiBw b2ludCBpcyB3aXRoaW4gYSB0YWJsZS4KK1RoaXMgZW5hYmxlcyB0aGUga2V5bWFwIGBtYXJrZG93 bi10cy1pbi10YWJsZS1tb2RlLW1hcCcuIgorICA6Z3JvdXAgJ21hcmtkb3duLXRzCisgIDpsaWdo dGVyIG1hcmtkb3duLXRzLWluLXRhYmxlLW1vZGUtbGlnaHRlcgorICA6aW50ZXJhY3RpdmUgbmls CisgIChtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS11cGRhdGUtb3YpKQorCisoZGVmdmFyLWxv Y2FsIG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLW92IG5pbCkKKworKGRlZnVuIG1hcmtkb3du LXRzLS1pbi10YWJsZS1tb2RlLWdldC1vdiAocG9zKQorICAiUmV0dXJuIHRoZSBgbWFya2Rvd24t dHMtaW4tdGFibGUtbW9kZScgb3ZlcmxheSBhdCBQT1MuIgorICAoc2VxLWZpbmQgKGxhbWJkYSAo b3YpCisgICAgICAgICAgICAgICh3aGVuIChvdmVybGF5LWdldCBvdiAnbWFya2Rvd24tdHMtaW4t dGFibGUpCisgICAgICAgICAgICAgICAgb3YpKQorICAgICAgICAgICAgKG92ZXJsYXlzLWF0IHBv cykpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXRhYmxlLXRpY2stdXBkYXRlIChwb3MpCisgICJV cGRhdGUgdGhlIGBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlJyBvdmVybGF5IHRpY2sgYXQgUE9T LgorSWYgdGhlIG92ZXJsYXkgaXMgbm90IGZvdW5kLCBkbyBub3RoaW5nLiIKKyAgKHdoZW4tbGV0 KiAoKG92IChtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1nZXQtb3YgcG9zKSkpCisgICAgKG92 ZXJsYXktcHV0IG92CisgICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1pbi10YWJsZS10aWNr CisgICAgICAgICAgICAgICAgIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaykpKSkKKworKGRl ZnVuIG1hcmtkb3duLXRzLS10YWJsZS10aWNrLXN0YWxlLXAgKHBvcykKKyAgIlJldHVybiBub24t bmlsIGlmIHRoZSB0YWJsZSBhdCBQT1MgbWlnaHQgaGF2ZSBjaGFuZ2VkLgorSXQgaXMgdXAgdG8g dGhpcyBmdW5jdGlvbidzIGNhbGxlcnMgdG8gY2FsbAorYG1hcmtkb3duLXRzLS10YWJsZS10aWNr LXVwZGF0ZScuIgorICAod2hlbi1sZXQqICgob3YgKG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2Rl LWdldC1vdiBwb3MpKSkKKyAgICAobm90IChlcSAob3ZlcmxheS1nZXQgb3YgJ21hcmtkb3duLXRz LWluLXRhYmxlLXRpY2spCisgICAgICAgICAgICAgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNr KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLXVwZGF0ZS1vdiAoKQor ICAiTWFuYWdlIGBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdicuIgorICAoY29uZCAobWFy a2Rvd24tdHMtaW4tdGFibGUtbW9kZQorICAgICAgICAgKHdoZW4tbGV0KiAoKGF0LXRhYmxlICht YXJrZG93bi10cy1hdC10YWJsZS1wIG5pbCB0KSkKKyAgICAgICAgICAgICAgICAgICAgICh0YWJs ZSAoY2RyIGF0LXRhYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgIChiZWcgKHRyZWVzaXQtbm9k ZS1zdGFydCB0YWJsZSkpCisgICAgICAgICAgICAgICAgICAgICAoZW5kICh0cmVlc2l0LW5vZGUt ZW5kIHRhYmxlKSkpCisgICAgICAgICAgIChpZiBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1v dgorICAgICAgICAgICAgICAgOzsgTW92ZSB0aGUgb3ZlcmxheSwgaWYgbmVlZGVkLCBhbmQgcmVz ZXQgdGhlIHRpY2sgaWYgc28uCisgICAgICAgICAgICAgICAod2hlbiAobm90IChlcSAob3Zlcmxh eS1zdGFydCBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJlZykpCisgICAgICAgICAgICAgICAgIChtb3ZlLW92ZXJsYXkgbWFya2Rv d24tdHMtLWluLXRhYmxlLW1vZGUtb3YgYmVnIGVuZCkKKyAgICAgICAgICAgICAgICAgKG92ZXJs YXktcHV0IG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLW92CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnbWFya2Rvd24tdHMtaW4tdGFibGUtdGljayBuaWwpKQorICAgICAgICAgICAg IChzZXRxIG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2RlLW92CisgICAgICAgICAgICAgICAgICAg KG1ha2Utb3ZlcmxheSBiZWcgZW5kIG5pbCB0IG5pbCkpKQorICAgICAgICAgICAob3ZlcmxheS1w dXQgbWFya2Rvd24tdHMtLWluLXRhYmxlLW1vZGUtb3YKKyAgICAgICAgICAgICAgICAgICAgICAg ICdtYXJrZG93bi10cy1pbi10YWJsZSB0KQorICAgICAgICAgICAob3ZlcmxheS1wdXQgbWFya2Rv d24tdHMtLWluLXRhYmxlLW1vZGUtb3YKKyAgICAgICAgICAgICAgICAgICAgICAgICdldmFwb3Jh dGUgdCkKKyAgICAgICAgICAgKG92ZXJsYXktcHV0IG1hcmtkb3duLXRzLS1pbi10YWJsZS1tb2Rl LW92CisgICAgICAgICAgICAgICAgICAgICAgICAncHJpb3JpdHkgJyhuaWwgLiAyMCkpCisgICAg ICAgICAgIChvdmVybGF5LXB1dCBtYXJrZG93bi10cy0taW4tdGFibGUtbW9kZS1vdgorICAgICAg ICAgICAgICAgICAgICAgICAgJ2ZhY2UgJ21hcmtkb3duLXRzLWluLXRhYmxlKQorICAgICAgICAg ICApKQorICAgICAgICAodAorICAgICAgICAgKHdoZW4gbWFya2Rvd24tdHMtLWluLXRhYmxlLW1v ZGUtb3YKKyAgICAgICAgICAgKGRlbGV0ZS1vdmVybGF5IG1hcmtkb3duLXRzLS1pbi10YWJsZS1t b2RlLW92KSkpKSkKKworKGRlZmluZS1taW5vci1tb2RlIG1hcmtkb3duLXRzLXRhYmxlLW1vZGUK KyAgIk1pbm9yIG1vZGUgdG8gZW5hYmxlIGNvbW1hbmRzIGluIHRhYmxlcy4KK0lmIG5vbi1uaWwg YW5kIGBwb2ludCcgaXMgaW4gYSB0YWJsZSwgZW5hYmxlCitgbWFya2Rvd24tdHMtaW4tdGFibGUt bW9kZScuIgorICA6Z3JvdXAgJ21hcmtkb3duLXRzCisgIDppbnRlcmFjdGl2ZSBuaWwKKyAgKG1h cmtkb3duLXRzLS1iYXJmLWlmLW5vdC1tb2RlICdtYXJrZG93bi10cy10YWJsZS1tb2RlKQorICAo Y29uZCAobWFya2Rvd24tdHMtdGFibGUtbW9kZQorICAgICAgICAgOzsgRW5hYmxlIHRoZSBtaW5v ciBtb2RlIGBtYXJrZG93bi10cy1pbi10YWJsZS1tb2RlJyBhbmQKKyAgICAgICAgIDs7IGl0cyBr ZXltYXAgd2hlbiBwb2ludCBpcyB3aXRoaW4gYSBjb2RlIGJsb2NrLgorICAgICAgICAgKGFkZC1o b29rICdwb3N0LWNvbW1hbmQtaG9vaworICAgICAgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMt LWVuYWJsZS1pbi10YWJsZS1tb2RlIG5pbCAnbG9jYWwpCisgICAgICAgICA7OyBJZiBgc2F2ZS1w bGFjZS1tb2RlJyBvciBzaW1pbGFyIGlzIHVzZWQsIHBvaW50IGNvdWxkIHN0YXJ0IHdpdGhpbgor ICAgICAgICAgOzsgYSB0YWJsZSwgc28gaW5pdGlhbGl6ZSBmcm9tIHRoYXQgc3RhdGUuCisgICAg ICAgICAocnVuLXdpdGgtdGltZXIgMC4wMSBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAj J21hcmtkb3duLXRzLS1lbmFibGUtaW4tdGFibGUtbW9kZSkpCisgICAgICAgICh0CisgICAgICAg ICAocmVtb3ZlLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29rCisgICAgICAgICAgICAgICAgICAgICAg IydtYXJrZG93bi10cy0tZW5hYmxlLWluLXRhYmxlLW1vZGUgJ2xvY2FsKSkpKQogCiA7OzsjIyNh dXRvbG9hZAogKHdoZW4gKGJvdW5kcCAndHJlZXNpdC1tYWpvci1tb2RlLXJlbWFwLWFsaXN0KQot ICAoYWRkLXRvLWxpc3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5tZFxcJyIgLiBtYXJrZG93bi10 cy1tb2RlLW1heWJlKSkKLSAgOzsgVG8gYmUgYWJsZSB0byB0b2dnbGUgYmV0d2VlbiBhbiBleHRl cm5hbCBwYWNrYWdlIGFuZCBjb3JlIHRzLW1vZGU6CisgIChhZGQtdG8tbGlzdCAnYXV0by1tb2Rl LWFsaXN0ICcoIlxcLm1kXFwnIiAuIG1hcmtkb3duLXRzLW1vZGUpKQorICAoYWRkLXRvLWxpc3Qg J2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5tYXJrZG93blxcJyIgLiBtYXJrZG93bi10cy1tb2RlKSkK KyAgKGFkZC10by1saXN0ICdhdXRvLW1vZGUtYWxpc3QgJygiXFwubWR4XFwnIiAuIG1hcmtkb3du LXRzLW1vZGUpKQogICAoYWRkLXRvLWxpc3QgJ3RyZWVzaXQtbWFqb3ItbW9kZS1yZW1hcC1hbGlz dAogICAgICAgICAgICAgICAgJyhtYXJrZG93bi1tb2RlIC4gbWFya2Rvd24tdHMtbW9kZSkpKQog Ci0tIAoyLjU0LjAKCg== --=-=-=--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 24 Apr 2026 00:13:59 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 23 20:13:59 2026 Received: from localhost ([127.0.0.1]:37099 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wG4BC-0003WM-MK for submit <at> debbugs.gnu.org; Thu, 23 Apr 2026 20:13:59 -0400 Received: from mail-dy1-x1331.google.com ([2607:f8b0:4864:20::1331]:54508) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>) id 1wG4B9-0003W9-Vo for 80740 <at> debbugs.gnu.org; Thu, 23 Apr 2026 20:13:57 -0400 Received: by mail-dy1-x1331.google.com with SMTP id 5a478bee46e88-2c15849aa2cso9887934eec.0 for <80740 <at> debbugs.gnu.org>; Thu, 23 Apr 2026 17:13:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776989634; x=1777594434; darn=debbugs.gnu.org; h=content-transfer-encoding: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=GeqeBppw8An3D4TvO7jBsC+zztzQFJVYf5kXOd5ZghU=; b=sEO9vzRY7iHOO5Wn/BN3baDaYxkbjdNFpqgR6u+wBokFbThMztIorNiVxuw94XV8V5 7SbFwAZ5m/vylHcwKiDuo+HCJHo8WF49doNqeBllrS4/HYPs9UW5pozYbQuJ4G0bKLPc W06KevWCfCkuKpxcak94cyde/Y+ss9VBY+U106TWXQeNRWSg7Me+5VoNAg83lpBVFMCe e4nJg2KUvs8cl22Wyczeut6g4dAMsUS+0QctWamvocDpls/rAiurqaDZj0sIn7W1c1CG LoT2cQfTigMh56+QZc33j4mmXdqNDLONB3I/D3llwnKlwu/sROUOdlQQ4bONe8PTZ4xU yblg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776989634; x=1777594434; h=content-transfer-encoding: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=GeqeBppw8An3D4TvO7jBsC+zztzQFJVYf5kXOd5ZghU=; b=lokqQ9pRKCfEIUKJoA7MwSzUXF7JFCfEMWL9xCBzmvGn05kgg+ZRE/WHk1JEHAN9Ae Cm1jqfcmG0SW7sfjGWitNkiTwHMVnGzVCBtZ+SszSfYLGvw9UmaO+OutoaSu4S68RS7X INAgtK4m9Aq/9qLhEMG+foxWOzahvI1BHKFY188aeQqkP2uAtTZ47qRYEnYDwfWzoS32 YakcrXSZPrpO4hFCGyG4xjEYqyvmEzMEapFA+c3UOsCskm10CVIxL3z6PrK8btITnsqp /aQuComZeZ/MSQdmcptL5m5b93kYIi00E4u414sgtjy3p5Ck8Wll5Gh5QR1P8Z1DYGUL g8yg== X-Forwarded-Encrypted: i=1; AFNElJ8jxdSjTljphHf+R/L+5polR6yyGtHTDVnPE9ZtYpETn+ODEsOm1lh3DLnCpQhyJdXrNOEMEA==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yzqslq0Qm1e7XzyXz0HmJX14C/9MkJ3xUoMweZHAEZczx4nT2LX 4+cCaoZSYaO2OHbd+l690pUk2ocV2N08S69e3rO0v1mGXjuucXs53KogxU7EHAGO0PCcqQ== X-Gm-Gg: AeBDiesJzlT9LQ0SR78moW097Tw9of8g1AWQa/5Nj/cqWNtO9LBBW558Yc1SdVBsinm jecqDMV1u00sBbmwzjZWKq+2rnuAn/y77hiK9H+6rMrLGA+3mIRf8VKMI4E9efdyiReswCUA5S6 uCuOHaR++TbIzUJuS6IwH4wKlfGs/qAHNSnwso9imJbeCsfV/+AuKKH24aSyIeiEYOuNpMZwCTL rfjfGehwlKMKyI6FYgG2DtGYZIenzJ5LdYQdEw9CeU9Jia5hf1yk+P1CTgvSynUzOZyBheyJQDc tA+4eqinYjHqy/wYXQ/RL0RJE8auM8/dq7U5vTn2HHW+aPqZhpdMfhMfxZVYQvtWBn+LUDHC3U8 KB0X9aTLzBMj8OAcyXf/IY7UzimmuVXUYcfmom3HgqVhE9tMtDMZ71CVAGPPe4Crsq3wZhvjaqU Abc/gWcXcIwCnyKcnGBe/fsKKYow4NQABfISjeI8nIN9ZKyr7A+Vu+nqQNpF4gNHsPsvg/7VhLl 3YLeBa75QBNox+EPrmTlGYDAH4OxQd5bps66gIO7hPIObsM2/XLfGqHjKJyc7Sdeys= X-Received: by 2002:a05:7300:3723:b0:2de:1508:937c with SMTP id 5a478bee46e88-2e478a2f091mr15668722eec.24.1776989634278; Thu, 23 Apr 2026 17:13:54 -0700 (PDT) Received: from MacBook-Pro.local (201-93-59-29.dial-up.telesp.net.br. [201.93.59.29]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2e53d8b3dd9sm29534290eec.27.2026.04.23.17.13.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 17:13:53 -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: <86qzocgu9t.fsf@HIDDEN> References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.fsf@HIDDEN> <86qzocgu9t.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, 23 Apr 2026 21:13:44 -0300 Message-ID: <m2fr4ldxl3.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 2.0 (++) 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: Eli Zaretskii writes: >> From: Rahul Martim Juliato >> Cc: Yuan Fu , rahuljuliato@HIDDEN, >> shipmints@HIDDEN, 80740 <at> debbugs.gnu.org >> Date: Sat, 18 Apr 2026 12:22:42 -0300 >> >> Eli Zaretskii writes: >> >> >> [...] Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 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 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rahuljuliato[at]gmail.com) -0.0 SPF_PASS SPF: sender matches 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:1331 listed in] [list.dnswl.org] 1.0 FREEMAIL_REPLY From and body contain different freemails 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> X-Spam-Score: 0.0 (/) Eli Zaretskii <eliz@HIDDEN> writes: >> From: Rahul Martim Juliato <rahuljuliato@HIDDEN> >> Cc: Yuan Fu <casouri@HIDDEN>, rahuljuliato@HIDDEN, >> shipmints@HIDDEN, 80740 <at> debbugs.gnu.org >> Date: Sat, 18 Apr 2026 12:22:42 -0300 >>=20 >> Eli Zaretskii <eliz@HIDDEN> writes: >>=20 >> >> From: Yuan Fu <casouri@HIDDEN> >> >> Date: Fri, 17 Apr 2026 18:18:16 -0700 >> >> Cc: Eli Zaretskii <eliz@HIDDEN>, >> >> shipmints@HIDDEN, >> >> 80740 <at> debbugs.gnu.org >> >> >> >> Cool, thanks! I don=E2=80=99t see it merged though, is it merged? >> > >> > No. From what Rahul said, I deduced that an updated patch is in the >> > works. Did I misunderstand? >>=20 >> Hi everyone, >>=20 >> The last patch I sent >> (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D80740#37) is in good >> shape, and all previous comments have been addressed. >>=20 >> However, since we decided to give it another week, we identified three >> small edge-case bugs that we're currently working on. >>=20 >> If you're willing to wait, we can send a refined update around the >> middle of next week. > > Fine with me, will wait. > >> St=C3=A9phane is also working on a separate patch with additional >> features. That will be submitted independently (I won't spoil it, but >> it's good stuff). >>=20 >> I'm also working on a test file to ensure that future changes to this >> mode (including improvements or grammar updates) don't introduce >> regressions, and that any issues can be detected and diagnosed early. >> This will also be submitted separately. > > TIA. Hi Eli, Just a quick update: we're almost there, but will likely need a couple more days. In addition to the fixes, we're also finishing up table editing support. We are now using with-work-buffer, as the upstream issues have been resolved. We also moved to a cleaner implementation for the table handling logic. We should have the updated patch ready very soon. Thanks for your patience. --=20 Rahul
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 18 Apr 2026 15:31:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 18 11:31:24 2026 Received: from localhost ([127.0.0.1]:52350 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wE7dj-0001Pj-BM for submit <at> debbugs.gnu.org; Sat, 18 Apr 2026 11:31:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48646) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wE7dg-0001P5-UZ for 80740 <at> debbugs.gnu.org; Sat, 18 Apr 2026 11:31:21 -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 1wE7db-0006wd-IO; Sat, 18 Apr 2026 11:31:15 -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=fCS0vlREiXgRGVgXryRerHCdhVb5S4AuBtIhXlsiZXA=; b=UOc/UPoKXAhdjt8F0dcP eqAB+MzD+LFviA77gWmY2dly3dG5Y5hQ72iwmk+AywT+Jxm5DuZoqPRTOlsqJnk4kVVYQjveoreDD 9Y4R6DVSkrPW7tTcXebF/gcMvtuncMvM949BkyADhzUZ1FaYNq2aelSymcgb3Bny1IaEWzvWcK6fs k1SiVJWbNq/rXimkQJDV0f8PqyT+c59BaElhJBsiHWWC8g5gFIp4W5OaWkzPmE8fJ7k4DD4sUOh5o cHQY8PwWwz4wsO35l0L7H0lmEhQGLorwrzcfWO9iISS1R5LJlYdi8S4ZmSRM+xMJwFm6RGuUdqH5t s1v6G5HNV778vg==; Date: Sat, 18 Apr 2026 18:31:10 +0300 Message-Id: <86qzocgu9t.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Rahul Martim Juliato <rahuljuliato@HIDDEN> In-Reply-To: <m2tst8jnst.fsf@HIDDEN> (message from Rahul Martim Juliato on Sat, 18 Apr 2026 12:22:42 -0300) Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.fsf@HIDDEN> <m2tst8jnst.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, 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> X-Spam-Score: -3.3 (---) > From: Rahul Martim Juliato <rahuljuliato@HIDDEN> > Cc: Yuan Fu <casouri@HIDDEN>, rahuljuliato@HIDDEN, > shipmints@HIDDEN, 80740 <at> debbugs.gnu.org > Date: Sat, 18 Apr 2026 12:22:42 -0300 > > Eli Zaretskii <eliz@HIDDEN> writes: > > >> From: Yuan Fu <casouri@HIDDEN> > >> Date: Fri, 17 Apr 2026 18:18:16 -0700 > >> Cc: Eli Zaretskii <eliz@HIDDEN>, > >> shipmints@HIDDEN, > >> 80740 <at> debbugs.gnu.org > >> > >> Cool, thanks! I don’t see it merged though, is it merged? > > > > No. From what Rahul said, I deduced that an updated patch is in the > > works. Did I misunderstand? > > Hi everyone, > > The last patch I sent > (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=80740#37) is in good > shape, and all previous comments have been addressed. > > However, since we decided to give it another week, we identified three > small edge-case bugs that we're currently working on. > > If you're willing to wait, we can send a refined update around the > middle of next week. Fine with me, will wait. > Stéphane is also working on a separate patch with additional > features. That will be submitted independently (I won't spoil it, but > it's good stuff). > > I'm also working on a test file to ensure that future changes to this > mode (including improvements or grammar updates) don't introduce > regressions, and that any issues can be detected and diagnosed early. > This will also be submitted separately. TIA.
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.
Received: (at 80740) by debbugs.gnu.org; 18 Apr 2026 15:22:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 18 11:22:56 2026
Received: from localhost ([127.0.0.1]:52259 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wE7VX-0000HF-Pb
for submit <at> debbugs.gnu.org; Sat, 18 Apr 2026 11:22:56 -0400
Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]:60701)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>)
id 1wE7VV-0000Gl-GN
for 80740 <at> debbugs.gnu.org; Sat, 18 Apr 2026 11:22:54 -0400
Received: by mail-vs1-xe30.google.com with SMTP id
ada2fe7eead31-6137374b106so1246372137.1
for <80740 <at> debbugs.gnu.org>; Sat, 18 Apr 2026 08:22:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1776525772; x=1777130572; darn=debbugs.gnu.org;
h=content-transfer-encoding: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=Zp2W9AyWrynrUb7oV5XW9Thv9SmrwOgrDlKD6KSmXEY=;
b=WT4JhPMpJMwEsitvNmMGVBWY2aFoa/O7kj3YLW8GepKYnbrmBt9gxBxhBInGQS5dq9
t80JMFw+AsqIFXyuvUofxvz0YxOcLt60dOd9Nj3981r94kFwQp6NgRmHAN2gQCnwE1wb
hOS3huc1wM1Zz2S6aXZqJxryFjN25N08TKNqFI2tOuNtFQ2rry8IEjLmyzBgcNsjPdqK
VNwBQvnWD2G5IX9C7Hs7uE2ZFtp6Vah5VInKiP1CmuKUNgp2vA0CnSJdSzW6z+sQdwW8
BwS4nb3+M+FCLfVPafIFHPImOuTNjqgNRe7J/+FB3DDogYUi2/MsGI4JSmQL20VdZfSW
oF1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1776525772; x=1777130572;
h=content-transfer-encoding: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=Zp2W9AyWrynrUb7oV5XW9Thv9SmrwOgrDlKD6KSmXEY=;
b=LvdC3ZeveFeFHobcagPhdWx55TVqJ6lX8DeCWQU5eXCMY+9AI6Hn0HJbrKDyYKfAjh
aER+iej2bYxLSIH7iOoTrh7s48RK3KBMkheb6MxHIzARMInHzI/f9t675xh+sOp9yqKN
rJg9N2glg1A4s9Uzdu+3l50DCNHe18hnD3dTNZkjkS7P+3HnV/JTpS9XBg6rc6wfq8x9
laFjUdBSr/tLbLLTSuisJyRHZpzKEKuYVsJ8hQS+81L9VR9QoQ9bk3XKoFmzgwGsQDJW
VbKQCSxI4JzZmh9ssnY2vGD7eaaNV7eeMtCBvSUXecatGGWZJpLYTyym8adHn/76YNtS
IhSw==
X-Forwarded-Encrypted: i=1;
AFNElJ+OJYlIOiWsCSQQBTfWiiVzPf2kXpTTgx0G1R2SfsSlWFkAdRKIMNZF1ZBLJgOV/ywsEEyyLg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YygWArSei4y4ZQCULZpo1SOow2C55LTwksPlHCl7q6XTJmLtY3g
tcDO2C7uQWSBjjnUakL0v2x85OgPHkyHRlGho1EQBwljy4ytkcLN0ynW/id/ryx8
X-Gm-Gg: AeBDietMdCxVyT0ka0TRxYOdD69mTB/N02viKndmMeEZzi5jjtUS/5C/sJrfSWly2Nh
V86qhW/W79J7AkzD2L/xig2+y5KPcBJsKmFh1jqqhkaJgD8HLWd7r55hkwq3EGoGi5RS0UTGafY
y4UxoTAHMz/X7XoGXHTHiqK0irhjFvP6JgFXWaeA87R4sOX4hJrjshK8dlXetAQkQjFUVxE/yvk
g1cSnL0hNp6sRfsZd6BA05Q+6wB6E3rahmTbbF+lwMQTwVaG/q9305a2i4DtCCTpGe8yme/lQpf
3116iXj5XLdfhzIhaXSJqW4EDUviQNv9KAvKLOv6UL0b3iKCjP9d637fx2a3ouqCGWrb8hJTOi5
vfa1111Lp4dh/lyR8Rp7jcsV869pZoibm6XjVqUULVdyzUpHkLLjHhKSuu5LuNy8EyrvDMFjGNy
cBzwpOO5QdIe1UvLbHOpA+cZzWGIMO66MHhiJUnVlSW6YCsRz0oP0Uuw31U3dKkY9GZHZRhz2kX
VidsmfxFNH3wJPb53sdi2D9t8BhfxmmMVQVgFy+whF+fXMuNMFIr+Z1m2w=
X-Received: by 2002:a05:6102:3581:b0:611:a5b6:f4d3 with SMTP id
ada2fe7eead31-616f73fa0e4mr3346199137.22.1776525772102;
Sat, 18 Apr 2026 08:22:52 -0700 (PDT)
Received: from MacBook-Pro.local (201-93-59-183.dial-up.telesp.net.br.
[201.93.59.183]) by smtp.gmail.com with ESMTPSA id
ada2fe7eead31-61747cb52c9sm2359645137.9.2026.04.18.08.22.48
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 18 Apr 2026 08:22:51 -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: <86ldekiucu.fsf@HIDDEN>
References: <m2zf3jzamy.fsf@HIDDEN>
<CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN>
<m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN>
<m2ldevgapc.fsf@HIDDEN>
<E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN>
<m2y0iparzm.fsf@HIDDEN>
<C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> <86ldekiucu.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: Sat, 18 Apr 2026 12:22:42 -0300
Message-ID: <m2tst8jnst.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 2.0 (++)
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: Eli Zaretskii writes: >> From: Yuan Fu >> Date: Fri, 17 Apr
2026 18:18:16 -0700 >> Cc: Eli Zaretskii , >> shipmints@HIDDEN, >> 80740 <at> debbugs.gnu.org
>> >> Cool, thanks! I don’t see it merged though, is it merged? > [...]
Content analysis details: (2.0 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
1.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received'
headers
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (rahuljuliato[at]gmail.com)
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[2607:f8b0:4864:20:0:0:0:e30 listed in]
[list.dnswl.org]
1.0 FREEMAIL_REPLY From and body contain different freemails
X-Debbugs-Envelope-To: 80740
Cc: Yuan Fu <casouri@HIDDEN>, 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>
X-Spam-Score: 0.0 (/)
Eli Zaretskii <eliz@HIDDEN> writes:
>> From: Yuan Fu <casouri@HIDDEN>
>> Date: Fri, 17 Apr 2026 18:18:16 -0700
>> Cc: Eli Zaretskii <eliz@HIDDEN>,
>> shipmints@HIDDEN,
>> 80740 <at> debbugs.gnu.org
>>
>> Cool, thanks! I don=E2=80=99t see it merged though, is it merged?
>
> No. From what Rahul said, I deduced that an updated patch is in the
> works. Did I misunderstand?
Hi everyone,
The last patch I sent
(https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D80740#37) is in good
shape, and all previous comments have been addressed.
However, since we decided to give it another week, we identified three
small edge-case bugs that we're currently working on.
If you're willing to wait, we can send a refined update around the
middle of next week.
St=C3=A9phane is also working on a separate patch with additional
features. That will be submitted independently (I won't spoil it, but
it's good stuff).
I'm also working on a test file to ensure that future changes to this
mode (including improvements or grammar updates) don't introduce
regressions, and that any issues can be detected and diagnosed early.
This will also be submitted separately.
--
Rahul Martim Juliato
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 18 Apr 2026 07:46:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 18 03:46:40 2026 Received: from localhost ([127.0.0.1]:47192 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wE0O0-0005he-Cg for submit <at> debbugs.gnu.org; Sat, 18 Apr 2026 03:46:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34354) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wE0Ny-0005hE-12 for 80740 <at> debbugs.gnu.org; Sat, 18 Apr 2026 03:46:38 -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 1wE0Ns-0003jn-Je; Sat, 18 Apr 2026 03:46:32 -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=OE0WtDA0Jp3n58vnpWoRFwA5YRFuCyEBS4jbwQ9RyN4=; b=rP7ZADRY+HINjoRBi33F Ni70qYi8xtQ+KEkQlE8BjlAWDmp9zLtRARFeG5Gnm84nsVyFfbk4RhXw7Ur5Uj6Rfx+WDQZDmUIOj ABMoaks/Mq+CtS2QLQ4aoRsVLRVlDk3V3yk8pQuqT49654a58XZrw4xXKYaImfQy5eLBlUbyIb2h3 W6tSir5SskHFMGGs74l24I44HpqcdjGMtoC0RWR9/sEGxhNCopYUvakE4LM3Y7HmmHDjkTlZM/zYD xyNdDVrubwghEzTUqjv6s3ELA8sQo6EwMX8k3XhkcPqMV/04VwD0Lse7eIsx+VGqV/UT2bGlyOUfU DKnwNJhVUMGr7w==; Date: Sat, 18 Apr 2026 10:46:25 +0300 Message-Id: <86ldekiucu.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Yuan Fu <casouri@HIDDEN> In-Reply-To: <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN> (message from Yuan Fu on Fri, 17 Apr 2026 18:18:16 -0700) Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN> <m2y0iparzm.fsf@HIDDEN> <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@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: 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> X-Spam-Score: -3.3 (---) > From: Yuan Fu <casouri@HIDDEN> > Date: Fri, 17 Apr 2026 18:18:16 -0700 > Cc: Eli Zaretskii <eliz@HIDDEN>, > shipmints@HIDDEN, > 80740 <at> debbugs.gnu.org > > Cool, thanks! I don’t see it merged though, is it merged? No. From what Rahul said, I deduced that an updated patch is in the works. Did I misunderstand?
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.
Received: (at 80740) by debbugs.gnu.org; 18 Apr 2026 01:18:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 17 21:18:36 2026
Received: from localhost ([127.0.0.1]:42594 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wDuKP-0008Ig-NV
for submit <at> debbugs.gnu.org; Fri, 17 Apr 2026 21:18:36 -0400
Received: from mail-dl1-x1233.google.com ([2607:f8b0:4864:20::1233]:44251)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <casouri@HIDDEN>) id 1wDuKM-0008Ht-0r
for 80740 <at> debbugs.gnu.org; Fri, 17 Apr 2026 21:18:31 -0400
Received: by mail-dl1-x1233.google.com with SMTP id
a92af1059eb24-12c7212836bso2811389c88.0
for <80740 <at> debbugs.gnu.org>; Fri, 17 Apr 2026 18:18:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1776475109; x=1777079909; 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=/ia390kStc51qxwkp7Xu59X5xNEexDaafz4H0htA2Oc=;
b=STysKU+jf4gMqWZsZCACj9+TzopFBM7+qb8YNRj2ogUgvVOs69dixc/iyWmslO7m6m
2pNbUhQuHq3rbdzoqaF3j/+MNW0sJgf8Q7kfTjaLOSjp444/du5L+g0ruNupb2IwQmOE
32+pDlDpwX0vkG7wWZ4lCMMmd6aKSE1SNZ8hLgD2CiZNMctJ3m2XINKfZDhrcfhq0i3s
GoHvhGt/E61Z0nimUykUJhs7vXHmvAtRf1QBE7XTLHlt8MrVkFXmttvGIId64WHuK4/+
ByWMw3zLkUX02A3kLlZagoAEOx1asT2dYqk4OTq6I3Q+tZbozGKfaUIDNDpHMvFQO36H
Unyg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1776475109; x=1777079909;
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=/ia390kStc51qxwkp7Xu59X5xNEexDaafz4H0htA2Oc=;
b=hzPGRekd8NPBgk/ofKtqheUV8gVIXEp1wVN/it3lTiCzQYfP1Z0loEtDCgqCoSCODr
g04GS/QEP8D42reStHSgGSkrk8KoRsnEl2WToREQ26jw6T0x7SjRY8ckcOzNh/yBCmNN
Ml3hzLM/KCURQ0Fato4tn0HykfSHcXXTAG062EsI8dP2WrLTlj0bVtRY3x7DI4u5rvzQ
hhnzUNxqdvOwMhYI3406gvxT4fz5EJ4hGAv/l9MTbqv7pyXUNegc4tCV/HNg0btG4szY
GBOI1nhfkk5/p65omIwp27dtpnVijRc1Qc76wqHha7yREFBs6c/N9j+kH1Fu4yy6Evig
xmwg==
X-Forwarded-Encrypted: i=1;
AFNElJ8cL7bHhjT9OHJ8BUVG9vJ+8Fu8Vqy7f20tKxr4SetyfE1eT67bCwW3kyf7mo3OdxJnH+/2Qw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YybyE9R8SsHAudN6HfNG1IkLAMhSZL6C19zOKNovrhs+pcM9YcS
MquTfREQ+qBo393Cex5aMf5VlwtuaSzitPPk/Ytp5TstYMW8Xq2ANwon
X-Gm-Gg: AeBDieuscu/H2UvDkLPD/xBH/4pdnHIU8kh98nQnQHem90GACOSXiPgkVKRwZ8fHVON
uTFti9OGHMJboAH4+nVweVhC/h3IS/cH7y/odupkO5qp9QhdDRaBL6winoTzkIaXV8eOhaglG61
mXTYIFnuSmVXm4Kkh/M9Nv1EX1vZIX7OWVTDJH7aWu7EKRwZlwLJKjrP1aO0n/LRMe0cpHnFgCE
6ffKgJmOPcIObf0GzfNnQhwMlvjqFp3CxnbWV8Gt9Z91xJ6Euo/Wo4MmW11SnJzy3uXrSPmydLy
Y/gMzN/ePFTWgzA7XDYaZf/pH6D4a2cb7OVLGuxHmkCUOxy9qLk6gEnmHH0Mb9ri3Tmm7RQH7X/
YEwiwFGIAKzeVEOzeaSgCUjSFHFfDmL11m6joOw+fTDmkgDXKFjHFPaCE6o/Lx2U5uCsFTdheMl
OldtWg5RfH5z+4RyXGrPm4JhvaLgc7GbFzSOaHyBG9FvMYKR2Xb8vCVddF
X-Received: by 2002:a05:7301:4185:b0:2d9:fa9c:87a9 with SMTP id
5a478bee46e88-2e464ea79b5mr2835631eec.5.1776475108411;
Fri, 17 Apr 2026 18:18:28 -0700 (PDT)
Received: from smtpclient.apple ([2601:645:c686:b320:e5b4:ad68:f329:dbbc])
by smtp.gmail.com with ESMTPSA id
5a478bee46e88-2e53ccd2564sm4774492eec.18.2026.04.17.18.18.27
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Fri, 17 Apr 2026 18:18:27 -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: <m2y0iparzm.fsf@HIDDEN>
Date: Fri, 17 Apr 2026 18:18:16 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <C51FFBBB-7466-4F48-AEAD-3C64DFCF6AF1@HIDDEN>
References: <m2zf3jzamy.fsf@HIDDEN>
<CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN>
<m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN>
<m2ldevgapc.fsf@HIDDEN> <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN>
<m2y0iparzm.fsf@HIDDEN>
To: Rahul Martim Juliato <rahuljuliato@HIDDEN>
X-Mailer: Apple Mail (2.3826.700.81)
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80740
Cc: Eli Zaretskii <eliz@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: 0.0 (/)
> On Apr 14, 2026, at 7:15=E2=80=AFPM, Rahul Martim Juliato =
<rahuljuliato@HIDDEN> wrote:
>=20
> Yuan Fu <casouri@HIDDEN> writes:
>=20
>>> On Apr 9, 2026, at 1:06=E2=80=AFPM, Rahul Martim Juliato =
<rahuljuliato@HIDDEN> wrote:
>>>=20
>>> Eli Zaretskii <eliz@HIDDEN> writes:
>>>=20
>>>>> 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
>>>>=20
>>>> 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.
>>>>=20
>>>=20
>>> Agreed.
>>>=20
>>> 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.
>>>=20
>>> I also added a resolver 'markdown-ts--resolve-display-value', to =
select
>>> and check the symbols.
>>>=20
>>>>> +(defcustom markdown-ts-hard-line-break-space
>>>>> + (lambda (n) (make-string n ?=C2=B6))
>>>>=20
>>>> Why is ?=C2=B6 hard-coded, instead of using
>>>> markdown-ts-hard-line-break-backslash?
>>>>=20
>>>=20
>>>=20
>>> It shouldn't be this way, you're right.
>>>=20
>>> 'markdown-ts-hard-line-break-space' now uses
>>> 'markdown-ts-hard-line-break-backslash' as the default character.
>>>=20
>>>=20
>>>>> +(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
>>>>> (defface markdown-ts-block-quote '((t (:inherit italic)))
>>>>> "Face for Markdown block quotes.")
>>>>>=20
>>>>> +(defface markdown-ts-link '((t (:inherit link)))
>>>>> + "Face for Markdown link text and image descriptions.")
>>>>=20
>>>> 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?
>>>>=20
>>>> Also, faces can (and I think should in this case) have the :version
>>>> tag.
>>>>=20
>>>=20
>>> 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.
>>>=20
>>> 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.
>>>=20
>>> 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.
>>>=20
>>> Added :version tag to all faces.
>>>=20
>>>>> +(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)))))))
>>>>=20
>>>> 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.
>>>>=20
>>>=20
>>> Done. It now also checks both 'treesit-major-mode-remap-alist' and
>>> 'major-mode-remap-alist'.
>>>=20
>>>>> +(define-minor-mode markdown-ts-code-block-mode
>>>>> + "Mode enabled if point is within a fenced code block."
>>>>> + :interactive nil)
>>>>=20
>>>> Does this mean this mode is enabled automatically?
>>>>=20
>>>> Thanks.
>>>=20
>>>=20
>>> 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.
>>>=20
>>> 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.
>>>=20
>>>=20
>>>=20
>>> Please find attached an updated patch.
>>>=20
>>> Thanks
>>>=20
>>> --=20
>>> Rahul Martim Juliato
>=20
>>=20
>> First of all, thanks for all the hard work! This is awesome, very
>> through and clean and well-documented code!
>=20
>=20
> Hi Yuan,
>=20
> Thanks for the kind words and for the careful review!
>=20
>=20
>>=20
>> The patch LGTM, and I think it can be merged as-is. Treat the =
comments
>> below more as discussion. And in any case, we should merge the patch
>> as-is and follow up with the points below. I didn=E2=80=99t read the =
code
>> line-by-line, I=E2=80=99m sure you=E2=80=99ve tested the =
functionality, I=E2=80=99m more
>> looking at general patterns and design, and the user interface.
>>=20
>=20
> Even though you suggested merging as-is and following up later, =
St=C3=A9phane
> and I went ahead and decided addressing your points before cementing =
the
> symbol names, so the merged patch already incorporates them.
>=20
>=20
>> Maybe variables like markdown-ts-checked-checkbox can make use of
>> icons.el? Just define the symbol and text variant, and there=E2=80=99s =
also a
>> builtin image variant you can use for checkboxes (the one that custom
>> uses).
>>=20
>=20
> Good idea.
>=20
> I took a hybrid approach so users can force their own string (like the
> default UTF symbol or something from NerdFonts) or the SVG icon (from
> icon.el) while at the same time not loosing the fallback Eli asked us =
to
> provide.
>=20
> `markdown-ts-checked-checkbox' / `markdown-ts-unchecked-checkbox' now
> accept three value forms:
>=20
> - cons (PREFERRED . FALLBACK) -- the default existing behavior
> - the symbol `icon' -- defer to a corresponding icons.el =
icon
> - nil -- show raw markup
>=20
> When the value is `icon', the renderer calls `icon-string' on
> `markdown-ts-checked-checkbox-icon' / =
`markdown-ts-unchecked-checkbox-icon',
> which we defined via `define-icon' with image / symbol / text variants
> (the image variant uses etc/images/checked.svg and unchecked.svg, the
> same files used by the custom checkbox widget). Users can configure
> the icons via `M-x customize-icon' or override globally via
> `icon-preference', and on TTY frames icons.el automatically degrades
> image -> symbol -> text.
>=20
>=20
>> Cons are fine too, but maybe a list for better future extensibility
>> instead of strictly car and cdr.
>=20
> Done. `markdown-ts-code-block-modes' entries are now lists `(LANGUAGE
> MAJOR-MODE)' instead of cons cells, so we can grow them later without
> breaking the data shape. The docstring example and all callsites were
> updated accordingly.
>=20
>>=20
>>> + (,(intern "c#") . c-sharp)
>>=20
>> Usually people use cs or csharp, I believe. And py, rb, rs, are
>> strange choices. Is markdown-ts-code-block-modes meant for =
non-conventional names?
>>=20
>=20
> Two fixes here. First, the value was actually wrong. `c-sharp' is not =
a
> real mode; I corrected it to `csharp-ts-mode'. Second, you're right
> that the alist's purpose was unclear, so I rewrote the docstring to =
lead
> with that purpose:
>=20
> Extra mappings from code block language tags to major modes.
> Entries here are only needed when the language tag in a fenced
> code block does NOT match the conventional mode name derivation,
> e.g. the user writes ```ts instead of ```typescript, or ```py
> instead of ```python. For tags that already resolve via the
> standard "-ts-mode"/"-mode" heuristics there is no need to add
> an entry.
>=20
> So `py', `rb', `rs', `ts' are exactly the non-conventional short tags
> the alist exists to map.
>=20
>=20
>> markdown-ts-code-block-at-p: markdown-ts-at-code-block-p or
>> markdown-ts-code-block-p sounds more idiomatic to me.
>>=20
>>> Tree-sitter parsers ignore indirect-buffer narrowing and parse the
>> full base-buffer text;
>>=20
>> If you add a parser in the indirect buffer, that parser will honor =
the
>> narowing in the indirect buffer. It=E2=80=99s just that the parser =
create in
>> the source buffer will not react to indirect buffer=E2=80=99s =
narrowing.
>>=20
>=20
> Good catch! The docstring on =
`markdown-ts--fontify-non-ts-collect-faces'
> was overstated. Updated it to clarify that it's the *source buffer's*
> parser (which is the one we have here) that ignores indirect-buffer
> narrowing; a parser created in the indirect buffer would honor it. =
This
> justifies why we fall back to a temp buffer rather than reusing the =
host
> parser via an indirect buffer for ts modes in
> `markdown-ts-code-block-force-conventional-modes'.
>=20
>=20
>>> + (add-hook 'post-command-hook
>>> + #'markdown-ts--enable-code-block-mode nil =
'local)
>>=20
>> I feel that we should have a user option to disable the code block
>> context mode. And maybe it can be named code-block-contex-mode, since
>> code-block-mode has another meaning in this file?
>>=20
>=20
> Both done.
>=20
> The minor mode (and its keymap, helper, and hook predicate) were
> renamed to `markdown-ts-code-block-context-mode' to avoid colliding
> with the per-block major-mode meaning of "code-block-mode" already
> used elsewhere in the file (e.g. the `markdown-ts-code-block-mode'
> overlay property and `markdown-ts-code-block-mode-at' accessor that
> return the major mode for a block).
>=20
> We also added a defcustom `markdown-ts-enable-code-block-context-mode'
> (default t). Setting it to nil suppresses installation of the
> post-command-hook, idle timer, and pre-command-hook in
> `markdown-ts--set-up', so the context mode never activates and the
> regular `markdown-ts-mode' bindings stay in effect inside code blocks.
>=20
> While we were in this area, St=C3=A9phane suggested a parallel option =
for
> fontification, modeled after `org-src-fontify-natively' /
> `markdown-fontify-code-blocks-natively'. We added
> `markdown-ts-fontify-code-blocks-natively' (default t). When nil, the
> per-block embedded-language range rule is omitted in
> `markdown-ts--range-settings' and
> `markdown-ts--fontify-non-ts-code-block' returns early, so code blocks
> keep only the `markdown-ts-code-block' background face. (The
> ts-embedded path takes effect after restarting the mode in the buffer;
> the non-ts path toggles at runtime.)
>=20
>=20
>> We can also add a command (and binding) for inserting inline `code`.
>> I=E2=80=99m sure I=E2=80=99m not the only person that enables =
electric-quote-mode so
>> pressing backtick inserts single quotes instead, in which case =
another
>> way to insert backtick is needed.
>>=20
>=20
> This is already covered by `markdown-ts-emphasize', bound to `C-c C-x
> C-f', specifically the 'c'(ode) option, so `C-c C-x C-f c' (modeled
> after the equivalent org-mode option, also available by the =
easy-menu),
> which both inserts and removes emphasis (code, italic, bold, ...). =
Its
> behavior:
>=20
> - with point on nothing: inserts the chosen markers and leaves
> point between them, like ``
> - with point on a word: wraps the word in the chosen markers, like
> `word`
> - with an active region: wraps the region, `like this`
>=20
> So `electric-quote-mode' users have a path that never goes through a
> literal backtick keypress. Happy to add a more direct binding too if
> you'd like a one-key shortcut for the inline-code variant =
specifically.
>=20
> Thanks again for the review. Please find attached the updated patch.
>=20
> --=20
> Rahul Martim Juliato
Cool, thanks! I don=E2=80=99t see it merged though, is it merged?
Yuan=
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.
Received: (at 80740) by debbugs.gnu.org; 15 Apr 2026 02:15:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 14 22:15:58 2026
Received: from localhost ([127.0.0.1]:59192 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wCpnK-0005JS-Gn
for submit <at> debbugs.gnu.org; Tue, 14 Apr 2026 22:15:58 -0400
Received: from mail-dl1-x122d.google.com ([2607:f8b0:4864:20::122d]:50515)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>)
id 1wCpnH-0005JB-Np
for 80740 <at> debbugs.gnu.org; Tue, 14 Apr 2026 22:15:56 -0400
Received: by mail-dl1-x122d.google.com with SMTP id
a92af1059eb24-12c45281a06so4814592c88.1
for <80740 <at> debbugs.gnu.org>; Tue, 14 Apr 2026 19:15:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1776219354; x=1776824154; 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=Ixt4st2MYYyHnxVkZtU0cSfSoJ9LqVAQ15YfM8b5KPk=;
b=E79TiCMiGeR60LRJNV9/BT1LLj5GLRDgFjYnMFgGaP5xIOI5wzLg+klzJ0m378y3n9
9m64alK+cYvEp36abl3L3zh0ekVI9689XrbjfP7rtUkvoj/4Zmli40ZmTguynJkgmVx5
iGeIdpwclQwzigqQXtGwoXJUxIDrtxWvqobyf6+yCO/NtXyaa/upffDU3/faXjXNyzgs
2X7jtNywVkY5sJBLTm8G0SXUt0yb4SsRjsONwl6qkOCHgGihhFlOVkxH4ZQMF+9U65UH
O84SLLQOyykBl1gkofSM7uBQSLFVQp0EhcPpGWGe07uNKD88RVRC0qo56Hl5aoym6xWS
Jp6g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1776219354; x=1776824154;
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=Ixt4st2MYYyHnxVkZtU0cSfSoJ9LqVAQ15YfM8b5KPk=;
b=d9Ed7p1iOMyOvuvZlqCKr1x0ypYJXEyTc2GVsSbK1S+qA6hHFRU5xhHO1ZttiKeYgN
l/e3kJqK/8WmewTMY3cbWBBI+NfL5o1hb3qx/spdfkxfR9E57K1pKe+qJGowcG1XEX4E
SMW2K8tb/6h4O0h85kiSYYYJzRvRojl33QQ7Z+y3PDTckkHrBciyNBftnmz22woxnDeN
eYwFqynUQ6RdHk9RUpLdOXdBiU4gWOI3O39ze0HaFitXPZzsAEaVf4yM1IcmBYB1iKLD
P18k9GnTfCDX/soVGnoM4eMtYqxjYyiP6qPn+8Je5yAvChuSS0jo1RKDG3TlWKm++7ml
WH9g==
X-Forwarded-Encrypted: i=1;
AFNElJ+xD7f5YgQsUsymEiaNbtBFmwatePNIUopBXg95iel7rKQ1e1qjQpeVXWz9MiWwyxS/JUHgKQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxkJpq/utjo4pEk5TPJmWnKhxddetZybNg73M2hOg+F1WKvnOpT
pz2BorEAIHlx5EJ5HmEoltzXgSccwPs7AmI3fxz9Dxja+AV42By53EtXWZ11pcCf+Ql0+A==
X-Gm-Gg: AeBDieudvFhXqCZcuUI2A1GdH8S4yyUBylD2/oBA5kolrXNik7dWDR1Is12MZUqS7p5
2ewYAEt4U8J9ML33nnBAnZM+pNwv9+wEOjI+Gb1BcqJ2pWvxapv5MkaGtIBvzi6Fy80x0ht3BwF
RL3dk5aab8/Yy0yeIYJiZsMG4ts56sY2ychEUn6xKbeS9xCp8S6LEkviuUe0DOaxldCPe85IkQs
TEjSQJoESMJR5mYM75bHF8yq5zNRhh0d9lb78Cv1gEGCubY9BjhktM7iTSOeRj1A/pAgcOSaRyB
HKL7d4M6dAlyPWh0DMoJZGwbi8lxI562vTKdGwWIwcd/0VuhE42X/Kv1+/DQzr2QvWovW+NJTRa
L0Il4v2tubVd14wMi3zxRsP9hw19KlkvA8Kc/KX46oq9un3fKO2WtPy91RMfQ49KgI/4zI3GNB5
r6YVLbrCeWqOAowsvIqw3lt/gN4DssjEMlbG8R8NAqBK65f6QBvmU3yZ4gd5dfLvdyLO20+SQqq
9i3JdRDpgo=
X-Received: by 2002:a05:7022:6725:b0:12a:6c4b:9d01 with SMTP id
a92af1059eb24-12c34e714cdmr9949963c88.7.1776219353827;
Tue, 14 Apr 2026 19:15:53 -0700 (PDT)
Received: from MacBook-Pro.local ([185.153.176.73])
by smtp.gmail.com with ESMTPSA id
a92af1059eb24-12c5e62b9d1sm287267c88.5.2026.04.14.19.15.49
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Tue, 14 Apr 2026 19:15:52 -0700 (PDT)
From: Rahul Martim Juliato <rahuljuliato@HIDDEN>
X-Google-Original-From: Rahul Martim Juliato <rahul.juliato@HIDDEN>
To: Yuan Fu <casouri@HIDDEN>
Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode'
In-Reply-To: <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN>
References: <m2zf3jzamy.fsf@HIDDEN>
<CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN>
<m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN>
<m2ldevgapc.fsf@HIDDEN>
<E23DE437-F9DC-4EBD-8694-AD5293E4C088@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: Tue, 14 Apr 2026 23:15:41 -0300
Message-ID: <m2y0iparzm.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: Eli Zaretskii <eliz@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
Yuan Fu <casouri@HIDDEN> writes:
>> On Apr 9, 2026, at 1:06=E2=80=AFPM, Rahul Martim Juliato <rahuljuliato@g=
mail.com> wrote:
>>=20
>> Eli Zaretskii <eliz@HIDDEN> writes:
>>=20
>>>> Cc: Yuan Fu <casouri@HIDDEN>, Rahul Martim Juliato <rahuljuliato@gm=
ail.com>,
>>>> 80740 <at> debbugs.gnu.org
>>>> From: Rahul Martim Juliato <rahuljuliato@HIDDEN>
>>>> Date: Wed, 08 Apr 2026 21:01:50 -0300
>>>=20
>>> 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.
>>>=20
>>=20
>> Agreed.
>>=20
>> 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.
>>=20
>> I also added a resolver 'markdown-ts--resolve-display-value', to select
>> and check the symbols.
>>=20
>>>> +(defcustom markdown-ts-hard-line-break-space
>>>> + (lambda (n) (make-string n ?=C2=B6))
>>>=20
>>> Why is ?=C2=B6 hard-coded, instead of using
>>> markdown-ts-hard-line-break-backslash?
>>>=20
>>=20
>>=20
>> It shouldn't be this way, you're right.
>>=20
>> 'markdown-ts-hard-line-break-space' now uses
>> 'markdown-ts-hard-line-break-backslash' as the default character.
>>=20
>>=20
>>>> +(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
>>>> (defface markdown-ts-block-quote '((t (:inherit italic)))
>>>> "Face for Markdown block quotes.")
>>>>=20
>>>> +(defface markdown-ts-link '((t (:inherit link)))
>>>> + "Face for Markdown link text and image descriptions.")
>>>=20
>>> 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?
>>>=20
>>> Also, faces can (and I think should in this case) have the :version
>>> tag.
>>>=20
>>=20
>> 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.
>>=20
>> 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.
>>=20
>> 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.
>>=20
>> Added :version tag to all faces.
>>=20
>>>> +(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 stri=
ng.
>>>> + (concat (downcase lang-string) "-mode")))
>>>> + (setq mode (intern mode))
>>>> + (when (fboundp mode)
>>>> + (push (cons lang mode) markdown-ts-code-block-modes)
>>>> + (throw :mode mode)))))))
>>>=20
>>> 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.
>>>=20
>>=20
>> Done. It now also checks both 'treesit-major-mode-remap-alist' and
>> 'major-mode-remap-alist'.
>>=20
>>>> +(define-minor-mode markdown-ts-code-block-mode
>>>> + "Mode enabled if point is within a fenced code block."
>>>> + :interactive nil)
>>>=20
>>> Does this mean this mode is enabled automatically?
>>>=20
>>> Thanks.
>>=20
>>=20
>> 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.
>>=20
>> 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.
>>=20
>>=20
>>=20
>> Please find attached an updated patch.
>>=20
>> Thanks
>>=20
>> --=20
>> Rahul Martim Juliato
>
> First of all, thanks for all the hard work! This is awesome, very
> through and clean and well-documented code!
Hi Yuan,
Thanks for the kind words and for the careful review!
>
> The patch LGTM, and I think it can be merged as-is. Treat the comments
> below more as discussion. And in any case, we should merge the patch
> as-is and follow up with the points below. I didn=E2=80=99t read the code
> line-by-line, I=E2=80=99m sure you=E2=80=99ve tested the functionality, I=
=E2=80=99m more
> looking at general patterns and design, and the user interface.
>
Even though you suggested merging as-is and following up later, St=C3=A9pha=
ne
and I went ahead and decided addressing your points before cementing the
symbol names, so the merged patch already incorporates them.
> Maybe variables like markdown-ts-checked-checkbox can make use of
> icons.el? Just define the symbol and text variant, and there=E2=80=99s al=
so a
> builtin image variant you can use for checkboxes (the one that custom
> uses).
>
Good idea.
I took a hybrid approach so users can force their own string (like the
default UTF symbol or something from NerdFonts) or the SVG icon (from
icon.el) while at the same time not loosing the fallback Eli asked us to
provide.
`markdown-ts-checked-checkbox' / `markdown-ts-unchecked-checkbox' now
accept three value forms:
- cons (PREFERRED . FALLBACK) -- the default existing behavior
- the symbol `icon' -- defer to a corresponding icons.el icon
- nil -- show raw markup
When the value is `icon', the renderer calls `icon-string' on
`markdown-ts-checked-checkbox-icon' / `markdown-ts-unchecked-checkbox-icon',
which we defined via `define-icon' with image / symbol / text variants
(the image variant uses etc/images/checked.svg and unchecked.svg, the
same files used by the custom checkbox widget). Users can configure
the icons via `M-x customize-icon' or override globally via
`icon-preference', and on TTY frames icons.el automatically degrades
image -> symbol -> text.
> Cons are fine too, but maybe a list for better future extensibility
> instead of strictly car and cdr.
Done. `markdown-ts-code-block-modes' entries are now lists `(LANGUAGE
MAJOR-MODE)' instead of cons cells, so we can grow them later without
breaking the data shape. The docstring example and all callsites were
updated accordingly.
>
>> + (,(intern "c#") . c-sharp)
>
> Usually people use cs or csharp, I believe. And py, rb, rs, are
> strange choices. Is markdown-ts-code-block-modes meant for non-convention=
al names?
>
Two fixes here. First, the value was actually wrong. `c-sharp' is not a
real mode; I corrected it to `csharp-ts-mode'. Second, you're right
that the alist's purpose was unclear, so I rewrote the docstring to lead
with that purpose:
Extra mappings from code block language tags to major modes.
Entries here are only needed when the language tag in a fenced
code block does NOT match the conventional mode name derivation,
e.g. the user writes ```ts instead of ```typescript, or ```py
instead of ```python. For tags that already resolve via the
standard "-ts-mode"/"-mode" heuristics there is no need to add
an entry.
So `py', `rb', `rs', `ts' are exactly the non-conventional short tags
the alist exists to map.
> markdown-ts-code-block-at-p: markdown-ts-at-code-block-p or
> markdown-ts-code-block-p sounds more idiomatic to me.
>
>> Tree-sitter parsers ignore indirect-buffer narrowing and parse the
> full base-buffer text;
>
> If you add a parser in the indirect buffer, that parser will honor the
> narowing in the indirect buffer. It=E2=80=99s just that the parser create=
in
> the source buffer will not react to indirect buffer=E2=80=99s narrowing.
>
Good catch! The docstring on `markdown-ts--fontify-non-ts-collect-faces'
was overstated. Updated it to clarify that it's the *source buffer's*
parser (which is the one we have here) that ignores indirect-buffer
narrowing; a parser created in the indirect buffer would honor it. This
justifies why we fall back to a temp buffer rather than reusing the host
parser via an indirect buffer for ts modes in
`markdown-ts-code-block-force-conventional-modes'.
>> + (add-hook 'post-command-hook
>> + #'markdown-ts--enable-code-block-mode nil 'local)
>
> I feel that we should have a user option to disable the code block
> context mode. And maybe it can be named code-block-contex-mode, since
> code-block-mode has another meaning in this file?
>
Both done.
The minor mode (and its keymap, helper, and hook predicate) were
renamed to `markdown-ts-code-block-context-mode' to avoid colliding
with the per-block major-mode meaning of "code-block-mode" already
used elsewhere in the file (e.g. the `markdown-ts-code-block-mode'
overlay property and `markdown-ts-code-block-mode-at' accessor that
return the major mode for a block).
We also added a defcustom `markdown-ts-enable-code-block-context-mode'
(default t). Setting it to nil suppresses installation of the
post-command-hook, idle timer, and pre-command-hook in
`markdown-ts--set-up', so the context mode never activates and the
regular `markdown-ts-mode' bindings stay in effect inside code blocks.
While we were in this area, St=C3=A9phane suggested a parallel option for
fontification, modeled after `org-src-fontify-natively' /
`markdown-fontify-code-blocks-natively'. We added
`markdown-ts-fontify-code-blocks-natively' (default t). When nil, the
per-block embedded-language range rule is omitted in
`markdown-ts--range-settings' and
`markdown-ts--fontify-non-ts-code-block' returns early, so code blocks
keep only the `markdown-ts-code-block' background face. (The
ts-embedded path takes effect after restarting the mode in the buffer;
the non-ts path toggles at runtime.)
> We can also add a command (and binding) for inserting inline `code`.
> I=E2=80=99m sure I=E2=80=99m not the only person that enables electric-qu=
ote-mode so
> pressing backtick inserts single quotes instead, in which case another
> way to insert backtick is needed.
>
This is already covered by `markdown-ts-emphasize', bound to `C-c C-x
C-f', specifically the 'c'(ode) option, so `C-c C-x C-f c' (modeled
after the equivalent org-mode option, also available by the easy-menu),
which both inserts and removes emphasis (code, italic, bold, ...). Its
behavior:
- with point on nothing: inserts the chosen markers and leaves
point between them, like ``
- with point on a word: wraps the word in the chosen markers, like
`word`
- with an active region: wraps the region, `like this`
So `electric-quote-mode' users have a path that never goes through a
literal backtick keypress. Happy to add a more direct binding too if
you'd like a one-key shortcut for the inline-code variant specifically.
Thanks again for the review. Please find attached the updated patch.
--=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
RnJvbSA2Mzk2M2I4NWU0YjI0NGIzZDU5MjMzNjM3ZGE4OWM2MmVmYTE4OTI2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn
bWFpbC5jb20+CkRhdGU6IEZyaSwgMyBBcHIgMjAyNiAyMzo0MTo0NyAtMDMwMApTdWJqZWN0OiBb
UEFUQ0hdIEltcHJvdmUgJ21hcmtkb3duLXRzLW1vZGUnCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl
bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k
aW5nOiA4Yml0CgpPdmVyaGF1bCAnbWFya2Rvd24tdHMtbW9kZScgd2l0aCBjb21wcmVoZW5zaXZl
IGZvbnRpZmljYXRpb24sCmNvZGUgYmxvY2sgaGFuZGxpbmcsIGVkaXRpbmcgY29tbWFuZHMsIGZp
bGwtcGFyYWdyYXBoIHN1cHBvcnQsCmlubGluZSBpbWFnZSBwcmV2aWV3cywgYW5kIGEgbW9kZSBt
ZW51LgoKKiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsOiBBZGQgVmVyc2lvbiwK
UGFja2FnZS1SZXF1aXJlcywgYW5kIEtleXdvcmRzIGhlYWRlciBmaWVsZHMuICBFeHBhbmQgQ29t
bWVudGFyeQp3aXRoIGRvY3VtZW50YXRpb24gZm9yIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMs
IGNvZGUgYmxvY2sKY29tbWFuZHMsIGJpZGlyZWN0aW9uYWwgdGV4dCwgYW5kIGtub3duIHRyZWUt
c2l0dGVyIGdyYW1tYXIKYnVncy4KKHJlcXVpcmUgJ2dvdG8tYWRkciwgeHJlZiwgaWNvbnMpOiBO
ZXcgcmVxdWlyZW1lbnRzLgoobWFya2Rvd24tdHMpOiBOZXcgY3VzdG9taXphdGlvbiBncm91cCB3
aXRoIDp2ZXJzaW9uIGFuZAo6cGFja2FnZS12ZXJzaW9uIHRhZ3MuCihtYXJrZG93bi10cy1oaWRl
LW1hcmt1cCk6IEFkZCA6dmVyc2lvbiBhbmQgOnBhY2thZ2UtdmVyc2lvbi4KKG1hcmtkb3duLXRz
LWVsbGlwc2lzKTogTmV3IG9wdGlvbiBmb3IgZm9sZGVkIGhlYWRpbmcgZWxsaXBzaXMuCihtYXJr
ZG93bi10cy1tZW51LWJhci1zaG93KTogTmV3IG9wdGlvbiB0byB0b2dnbGUgbW9kZSBtZW51Lgoo
bWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nKTogTmV3IG9wdGlvbiBmb3IgZGVmYXVsdCBmb2xk
CmxldmVsLgoobWFya2Rvd24tdHMtaW5saW5lLWltYWdlcyk6IE5ldyBvcHRpb24gdG8gZGlzcGxh
eSBpbmxpbmUKaW1hZ2VzLgoobWFya2Rvd24tdHMtaW1hZ2UtbWF4LXdpZHRoKTogTmV3IG9wdGlv
biBmb3IgaW1hZ2UgbWF4IHdpZHRoLgoobWFya2Rvd24tdHMtZGlzcGxheS1yZW1vdGUtaW5saW5l
LWltYWdlcyk6IE5ldyBvcHRpb24gZm9yCnJlbW90ZSBpbWFnZSBoYW5kbGluZy4KKG1hcmtkb3du
LXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUpOiBOZXcgaGVscGVyIHRvIHJlc29sdmUKZGlzcGxh
eSB2YWx1ZXMgdXNpbmcgY2hhci1kaXNwbGF5YWJsZS1wLgoobWFya2Rvd24tdHMtY2hlY2tlZC1j
aGVja2JveCk6IE5ldyBvcHRpb24gZm9yIGNoZWNrZWQgY2hlY2tib3gKZGlzcGxheSBzdHJpbmcg
b3IgaWNvbi4KKG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3gtaWNvbik6IE5ldyBpY29ucy5l
bCBpY29uIGZvciB0aGUgY2hlY2tlZAp2YXJpYW50LgoobWFya2Rvd24tdHMtdW5jaGVja2VkLWNo
ZWNrYm94KTogTmV3IG9wdGlvbiBmb3IgdW5jaGVja2VkCmNoZWNrYm94IGRpc3BsYXkgc3RyaW5n
IG9yIGljb24uCihtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2tib3gtaWNvbik6IE5ldyBpY29u
cy5lbCBpY29uIGZvcgp0aGUgdW5jaGVja2VkIHZhcmlhbnQuCihtYXJrZG93bi10cy10aGVtYXRp
Yy1icmVhay1jaGFyYWN0ZXIpOiBOZXcgb3B0aW9uIGZvciB0aGVtYXRpYwpicmVhayBkaXNwbGF5
IGNoYXJhY3Rlci4KKG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpOiBOZXcg
b3B0aW9uIGZvciB0aGUKZ2x5cGggc2hvd24gaW4gcGxhY2Ugb2YgYSB0cmFpbGluZy1iYWNrc2xh
c2ggaGFyZCBsaW5lIGJyZWFrCndoZW4gbWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLWhh
cmQtbGluZS1icmVhay1zcGFjZSk6IE5ldyBvcHRpb24gZm9yIHRoZSBnbHlwaApzaG93biBpbiBw
bGFjZSBvZiBhIHRyYWlsaW5nLXNwYWNlcyBoYXJkIGxpbmUgYnJlYWsgd2hlbiBtYXJrdXAKaXMg
aGlkZGVuLgoobWFya2Rvd24tdHMtZW1waGFzaXMsIG1hcmtkb3duLXRzLWJvbGQpCihtYXJrZG93
bi10cy1zdHJpa2V0aHJvdWdoLCBtYXJrZG93bi10cy1saW5rKQoobWFya2Rvd24tdHMtbGluay1k
ZXN0aW5hdGlvbiwgbWFya2Rvd24tdHMtY29kZS1zcGFuKQoobWFya2Rvd24tdHMtY29kZS1ibG9j
aywgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tYXJrdXAtaGlkZGVuKQoobWFya2Rvd24tdHMtaW5k
ZW50ZWQtY29kZS1ibG9jaywgbWFya2Rvd24tdHMtaHRtbC10YWcpCihtYXJrZG93bi10cy1odG1s
LWJsb2NrLCBtYXJrZG93bi10cy10aGVtYXRpYy1icmVhaykKKG1hcmtkb3duLXRzLWVudGl0eS1y
ZWZlcmVuY2UpCihtYXJrZG93bi10cy1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UsIG1hcmtk
b3duLXRzLWxhdGV4KQoobWFya2Rvd24tdHMtdGFibGUtaGVhZGVyLCBtYXJrZG93bi10cy10YWJs
ZS1jZWxsKQoobWFya2Rvd24tdHMtdGFibGUtZGVsaW1pdGVyLWNlbGwsIG1hcmtkb3duLXRzLXRh
c2stdW5jaGVja2VkKQoobWFya2Rvd24tdHMtdGFzay1jaGVja2VkKTogTmV3IGZhY2VzLgoobWFy
a2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaCkKKG1hcmtkb3duLXRzLWhhcmQtbGlu
ZS1icmVhay1iYWNrc2xhc2gtaGlkZGVuKQoobWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLXNw
YWNlKQoobWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLXNwYWNlLWhpZGRlbik6IE5ldyBmYWNl
cyBmb3IgdGhlCnR3byBoYXJkLWxpbmUtYnJlYWsgdmFyaWFudHMsIHdpdGggZGlzdGluY3Qgc2hv
d24vaGlkZGVuCmFwcGVhcmFuY2VzLgoobWFya2Rvd24tdHMtLXNldC11cC1pbmxpbmUpOiBOZXcg
dmFyaWFibGUgZm9yIGxpZ2h0d2VpZ2h0IHNldHVwCmluIGVtYmVkZGVkIGlubGluZSBtYXJrZG93
bi10cy1tb2RlIGJ1ZmZlcnMgdXNlZCBieSBjb2RlIGJsb2NrCmNvbW1hbmRzLgoobWFya2Rvd24t
dHMtZGVmYXVsdC1jb2RlLWJsb2NrLW1vZGUpOiBOZXcgdmFyaWFibGUgdG8gZGVmaW5lCmRlZmF1
bHQgbW9kZSBmb3IgYW5vbnltb3VzIGNvZGUgYmxvY2tzLgoobWFya2Rvd24tdHMtZm9udGlmeS1j
b2RlLWJsb2Nrcy1uYXRpdmVseSk6IE5ldyBvcHRpb24gdG8KZW5hYmxlL2Rpc2FibGUgbmF0aXZl
IGZvbnRpZmljYXRpb24gb2YgZmVuY2VkIGNvZGUgYmxvY2sKY29udGVudHMuCihtYXJrZG93bi10
cy1lbmFibGUtY29kZS1ibG9jay1jb250ZXh0LW1vZGUpOiBOZXcgb3B0aW9uIHRvCmVuYWJsZS9k
aXNhYmxlIGNvZGUgYmxvY2sgY29udGV4dCBpbnRlZ3JhdGlvbi4KKG1hcmtkb3duLXRzLWNvZGUt
YmxvY2stbW9kZXMpOiBOZXcgdmFyaWFibGUgcmVwbGFjaW5nCm1hcmtkb3duLXRzLS1jb2RlLWJs
b2NrLWxhbmd1YWdlLW1hcCBhbmQKbWFya2Rvd24tdHMtY29kZS1ibG9jay1zb3VyY2UtbW9kZS1t
YXAgd2l0aCB1bmlmaWVkIGxhbmd1YWdlIHRvCm1vZGUgbWFwcGluZyBpbmNsdWRpbmcgaGV1cmlz
dGljIGxvb2t1cC4KKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stZm9yY2UtY29udmVudGlvbmFsLW1v
ZGVzKTogTmV3IHZhcmlhYmxlCmxpc3RpbmcgdHJlZS1zaXR0ZXIgbW9kZXMgd2hvc2UgZm9udGlm
aWNhdGlvbiBvZiBjb2RlIGJsb2NrCmNvbnRlbnQgc2hvdWxkIGJlIGhhcnZlc3RlZCB2aWEgYSB0
ZW1wb3JhcnkgYnVmZmVyLgoobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24pOiBOZXcgZnVu
Y3Rpb24gdG8gY3JlYXRlCmNsaWNrYWJsZSBsaW5rIGJ1dHRvbnMgd2l0aCBtYWlsdG8sIGJyb3dz
ZS11cmwsIGFuZCBmaW5kLWZpbGUKZGlzcGF0Y2guCihtYXJrZG93bi10cy0tZm9udGlmeS1saW5r
LWRlc3RpbmF0aW9uKTogTmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGxpbmsgZGVzdGluYXRpb25z
IHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZSwgbWFy
a2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlLXRpY2spCihtYXJrZG93bi10cy0tbGluay1yZWYtZGVm
aW5pdGlvbnMpCihtYXJrZG93bi10cy0tcmVzb2x2ZS1saW5rLXJlZik6IE5ldyBsaW5rIHJlZmVy
ZW5jZSBkZWZpbml0aW9uCmNhY2hlIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZyBwZXIg
Q29tbW9uTWFyayBzcGVjLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKTogTmV3IGZv
bnRpZmllciBmb3IgaW5saW5lLApyZWZlcmVuY2UsIHNob3J0Y3V0LCBhbmQgY29sbGFwc2VkIGxp
bmtzIGFzIGNsaWNrYWJsZSBidXR0b25zLgoobWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmsp
OiBOZXcgZm9udGlmaWVyIGZvciBVUkkgYW5kIGVtYWlsCmF1dG9saW5rcyB3aXRoIGFuZ2xlIGJy
YWNrZXQgaGlkaW5nLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1yZWYtbGFiZWwpCihtYXJr
ZG93bi10cy0tZm9udGlmeS1saW5rLXJlZi1kZXN0aW5hdGlvbik6IE5ldyBmb250aWZpZXJzIGZv
cgpsaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9ucy4KKG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1Yi1z
dHJpcC1yZSwgbWFya2Rvd24tdHMtLXNsdWctZ2l0aHViKQoobWFya2Rvd24tdHMtLXNsdWctcGFu
ZG9jLCBtYXJrZG93bi10cy0tZXhwbGljaXQtaWQtcmUpCihtYXJrZG93bi10cy0taGVhZGluZy10
ZXh0LWFuZC1pZCk6KG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkLWNhY2hlLAptYXJrZG93bi10cy0t
aGVhZGluZy1pZC1jYWNoZS10aWNrKQoobWFya2Rvd24tdHMtLWJ1aWxkLWhlYWRpbmctaWRzLCBt
YXJrZG93bi10cy0taGVhZGluZy1pZHMpCihtYXJrZG93bi10cy0tZm9sbG93LWZyYWdtZW50KTog
TmV3IGZyYWdtZW50IGxpbmsgc3VwcG9ydCB3aXRoCkdpdEh1YiBhbmQgUGFuZG9jIHNsdWcgYWxn
b3JpdGhtcy4KKG1hcmtkb3duLXRzLS1sYXRleC1ibG9jay12YWxpZC1wKQoobWFya2Rvd24tdHMt
LWZvbnRpZnktbGF0ZXgtYmxvY2spOiBOZXcgTGFUZVgvbWF0aCBmb250aWZpZXIKd2l0aCBjcm9z
cy1wYXJhZ3JhcGggdmFsaWRhdGlvbi4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWJhY2tzbGFzaC1l
c2NhcGUpOiBOZXcgZm9udGlmaWVyIHRoYXQKaGlkZXMgYmFja3NsYXNoIGluIGVzY2FwZXMgZXhj
ZXB0IGluc2lkZSBMYVRlWCBibG9ja3MuCihtYXJrZG93bi10cy0tZGVjb2RlLWVudGl0eSwgbWFy
a2Rvd24tdHMtLWZvbnRpZnktZW50aXR5KTogTmV3CkhUTUwgZW50aXR5IGRlY29kZXIgYW5kIGZv
bnRpZmllciB1c2luZyBvcmctZW50aXRpZXMgYW5kCnNnbWwtY2hhci1uYW1lcyB3aXRoIGRpc3Bs
YXkgcHJvcGVydHkgZm9yIGRlY29kZWQgdmFsdWVzLgoobWFya2Rvd24tdHMtLWZvbnRpZnktY2hl
Y2tib3gpOiBOZXcgZm9udGlmaWVyIHNob3dpbmcgdGhlCmNvbmZpZ3VyZWQgY2hlY2tib3ggZ2x5
cGggd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgoobWFya2Rvd24tdHMtLWZvbnRpZnktaGFyZC1saW5l
LWJyZWFrKTogTmV3IGZvbnRpZmllciBmb3IKJ2hhcmRfbGluZV9icmVhaycgbm9kZXMuCihtYXJr
ZG93bi10cy0tZm9udGlmeS1oZWFkaW5nKTogTmV3IGZvbnRpZmllciBmb3IgQVRYIGFuZCBTZXRl
eHQKaGVhZGluZ3MuCihtYXJrZG93bi10cy0tZm9udGlmeS10aGVtYXRpYy1icmVhayk6IE5ldyBm
b250aWZpZXIgc2hvd2luZwpob3Jpem9udGFsIGxpbmUgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgoo
bWFya2Rvd24tdHMtLWZvbnRpZnktY29kZS1ibG9jayk6IE5ldyBmb250aWZpZXIgYXBwbHlpbmcK
YmFja2dyb3VuZCBvdmVybGF5IHRvIGNvZGUgYmxvY2tzIHdpdGggbGFuZ3VhZ2UgYW5kIG1vZGUK
cHJvcGVydGllcy4KKG1hcmtkb3duLXRzLWF0LWNvZGUtYmxvY2stcCwgbWFya2Rvd24tdHMtY29k
ZS1ibG9jay1sYW5ndWFnZS1hdCkKKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1hdCk6IE5l
dyBhY2Nlc3NvcnMgZm9yIGNvZGUgYmxvY2sKb3ZlcmxheSBwcm9wZXJ0aWVzLgoobWFya2Rvd24t
dHMtLWltZW51LWNvZGUtYmxvY2stbm9kZS1wKTogTmV3IGhlbHBlciBmb3IgaW1lbnUKY29kZSBi
bG9jayBkZXRlY3Rpb24uCihtYXJrZG93bi10cy0taW1hZ2UtYWxvbmUtb24tbGluZS1wLAptYXJr
ZG93bi10cy0tZm9udGlmeS1pbWFnZSk6IE5ldyBpbmxpbmUgaW1hZ2UgZGlzcGxheSB3aXRoCnN0
YW5kYWxvbmUgYW5kIGlubGluZSBwb3NpdGlvbmluZy4KKG1hcmtkb3duLXRzLS1iYXJlLXVybC1y
ZWdleHApCihtYXJrZG93bi10cy0tYmFyZS1lbWFpbC11cmktcmVnZXhwKQoobWFya2Rvd24tdHMt
LWZvbnRpZnktYmFyZS11cmkpOiBOZXcgYmFyZSBVUkwvZW1haWwKZm9udGlmaWNhdGlvbiB2aWEg
aml0LWxvY2sgdXNpbmcgZ290by1hZGRyIHJlZ2V4cHMuCihtYXJrZG93bi10cy0tdHJlZXNpdC1z
ZXR0aW5ncyk6IFJld3JpdGUgd2l0aCBkZWRpY2F0ZWQgZmFjZXMsCmN1c3RvbSBmb250aWZpZXJz
LCBhbmQgbmV3IGZvbnQtbG9jayBmZWF0dXJlcyBmb3IgYWxsIGlubGluZSBhbmQKYmxvY2sgZWxl
bWVudHMuCihtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZXMpCihtYXJrZG93bi10cy0t
Y29kZS1ibG9jay1ub24tdHMtbW9kZXMpOiBOZXcgYnVmZmVyLWxvY2FsIGFsaXN0cwpmb3IgY29k
ZSBibG9jayBsYW5ndWFnZSB0cmFja2luZy4KKG1hcmtkb3duLXRzLS1oYXJ2ZXN0LW1vZGUtdHJl
ZXNpdC1jb25maWd1cmF0aW9uKTogUmVuYW1lZCBmcm9tCm1hcmtkb3duLXRzLS1oYXJ2ZXN0LXRy
ZWVzaXQtY29uZmlncyB3aXRoIGRlbGF5LW1vZGUtaG9va3MuCihtYXJrZG93bi10cy0tY29uZmln
dXJlLWN1cnJlbnQtYnVmZmVyKTogUmVuYW1lZCBmcm9tCm1hcmtkb3duLXRzLS1hZGQtY29uZmln
LWZvci1tb2RlLgoobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUpOiBOZXcgaGVscGVyIGV4
dHJhY3RpbmcgbGFuZ3VhZ2UKc3ltYm9sIGZyb20gY29kZV9mZW5jZV9jb250ZW50IG5vZGUuCiht
YXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpOiBOZXcgYnVmZmVyLWxvY2FsIGhhc2gg
dGFibGUKY2FjaGluZyBmb250aWZpY2F0aW9uIHJlc3VsdHMgZm9yIG5vbi10cmVlLXNpdHRlciBj
b2RlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1jb2xsZWN0LWZhY2VzKTog
TmV3IGZ1bmN0aW9uCmhhcnZlc3RpbmcgZmFjZSBwcm9wZXJ0aWVzIGZyb20gYSBtb2RlIGluIGFu
IGluZGlyZWN0IG9yCnRlbXBvcmFyeSBidWZmZXIuCihtYXJrZG93bi10cy0tZm9udGlmeS1ub24t
dHMtY29kZS1ibG9jayk6IE5ldyBmb250aWZpZXIgZm9yCm5vbi10cmVlLXNpdHRlciBtb2RlcyB2
aWEgdGVtcG9yYXJ5IGJ1ZmZlciBmb250LWxvY2suCihtYXJrZG93bi10cy0tY29kZS1ibG9jay1s
YW5ndWFnZS1tb2RlKTogTmV3IGZ1bmN0aW9uIHdpdGgKaGV1cmlzdGljIG1vZGUgbmFtZSBwcm9i
aW5nLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UpOiBSZW5hbWVkIGZyb20K
bWFya2Rvd24tdHMtLWNvbnZlcnQtY29kZS1ibG9jay1sYW5ndWFnZSB3aXRoIHN1cHBvcnQgZm9y
IG5vbi10cwptb2RlcyBhbmQgcmVjdXJzaXZlIG1hcmtkb3duIGhhbmRsaW5nLgoobWFya2Rvd24t
dHMtY29kZS1ibG9jay1jb21tYW5kcykKKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stdGhpbmctY29t
bWFuZHMpCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLXJlZ2lvbi1jb21tYW5kcyk6IE5ldyBjb21t
YW5kIGxpc3RzIGZvcgpjb2RlLWJsb2NrIGNvbnRleHQgZXhlY3V0aW9uLgoobWFya2Rvd24tdHMt
LWVuYWJsZS1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZSkKKG1hcmtkb3duLXRzLS1tYXliZS1ydW4t
Y29tbWFuZC1pbi1jb2RlLWJsb2NrKQoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2steHJlZi1maW5k
LWRlZmluaXRpb25zKQoobWFya2Rvd24tdHMtLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2spOiBO
ZXcgY29kZSBibG9jayBtaW5vcgptb2RlIHdpdGggaW5kaXJlY3QgYnVmZmVyIGNvbW1hbmQgZGlz
cGF0Y2guCihtYXJrZG93bi10cy0tY29kZS1ibG9jay1uZXdsaW5lKTogTmV3IGNvbW1hbmQgZm9y
IG5ld2xpbmUKaW5zaWRlIGNvZGUgYmxvY2tzLCBkaXNwYXRjaGluZyB0byB0aGUgYmxvY2sncyBt
b2RlLgoobWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdzKTogVXBkYXRlIHJhbmdlIGNvbmZpZ3Vy
YXRpb247CnJlbW92ZSA6cmFuZ2UtZm4gdHJlZXNpdC1yYW5nZS1mbi1leGNsdWRlLWNoaWxkcmVu
LgoobWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cykKKG1hcmtkb3duLXRzLS1vdXRs
aW5lLXZpZXctY2hhbmdlKTogTmV3IGhlbHBlcnMgZm9yIGltYWdlCm92ZXJsYXkgbWFuYWdlbWVu
dCBkdXJpbmcgb3V0bGluZSBmb2xkL3VuZm9sZC4KKG1hcmtkb3duLXRzLS1vdXRsaW5lLWludmlz
aWJsZS1wKTogTmV3IGhlbHBlciB0ZXN0aW5nIHdoZXRoZXIgYQpwb3NpdGlvbiBpcyBpbnNpZGUg
YW4gb3V0bGluZS1mb2xkZWQgcmVnaW9uLgoobWFya2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCk6
IENsZWFyIGltYWdlIG92ZXJsYXlzIHdoZW4KdG9nZ2xpbmcgbWFya3VwIHZpc2liaWxpdHkuCiht
YXJrZG93bi10cy0tc2V0LWlubGluZS1pbWFnZXMpCihtYXJrZG93bi10cy10b2dnbGUtaW5saW5l
LWltYWdlcyk6IE5ldyBmdW5jdGlvbnMgZm9yIHRvZ2dsaW5nCmlubGluZSBpbWFnZSBkaXNwbGF5
LgoobWFya2Rvd24tdHMtLXBhcnNlci1oZWFkaW5nLW1heC1sZXZlbCk6IE5ldyBjb25zdGFudC4K
KG1hcmtkb3duLXRzLS1oZWFkaW5nLWF0LXBvaW50LCBtYXJrZG93bi10cy0taGVhZGluZy1sZXZl
bCkKKG1hcmtkb3duLXRzLS1zZWN0aW9uLWF0LXBvaW50KTogTmV3IGhlYWRpbmcgbmF2aWdhdGlv
biBoZWxwZXJzLgoobWFya2Rvd24tdHMtcHJvbW90ZSwgbWFya2Rvd24tdHMtZGVtb3RlKTogTmV3
IGNvbW1hbmRzIGZvcgpoZWFkaW5nIGFuZCBsaXN0IGl0ZW0gcHJvbW90aW9uL2RlbW90aW9uIHdp
dGggcmVnaW9uIHN1cHBvcnQuCihtYXJrZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUpCihtYXJr
ZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUtcmVnaW9uKTogTmV3IGhlYWRpbmcgbGV2ZWwKYWRq
dXN0bWVudCBmdW5jdGlvbnMuCihtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtdXAsIG1hcmtkb3du
LXRzLW1vdmUtc3VidHJlZS1kb3duKToKTmV3IGNvbW1hbmRzIGZvciBtb3Zpbmcgc2VjdGlvbnMg
YW5kIGxpc3QgaXRlbXMuCihtYXJrZG93bi10cy0tc2VjdGlvbi1mb2xkZWQtcCkKKG1hcmtkb3du
LXRzLS1tb3ZlLXN1YnRyZWUtdXAtb3ItZG93bik6IE5ldyBzdWJ0cmVlIG1vdmUgd2l0aApmb2xk
aW5nIHN0YXRlIHByZXNlcnZhdGlvbi4KKG1hcmtkb3duLXRzLXRvZ2dsZS1jaGVja2JveCk6IE5l
dyBjb21tYW5kIHRvIHRvZ2dsZSB0YXNrIGxpc3QKY2hlY2tib3hlcy4KKG1hcmtkb3duLXRzLS1s
aXN0LWl0ZW0tYXQtcG9pbnQpOiBOZXcgaGVscGVyIHdpdGggYmxvY2sgcXVvdGUKbWFya2VyIGhh
bmRsaW5nLgoobWFya2Rvd24tdHMtLWxpc3QtbWFya2VyLXdpZHRoLCBtYXJrZG93bi10cy0tbGlz
dC1pdGVtLXJlZ2lvbikKKG1hcmtkb3duLXRzLS1saXN0LW9yZGVyZWQtaXRlbS1wKTogTmV3IGxp
c3QgaXRlbSBoZWxwZXJzLgoobWFya2Rvd24tdHMtLWxpc3QtcHJvbW90ZS1vci1kZW1vdGUpOiBO
ZXcgZnVuY3Rpb24gd2l0aCBvcmRlcmVkCmxpc3QgbmVzdGluZyBndWFyZC4KKG1hcmtkb3duLXRz
LS1saXN0LW5vZGUtYm9sLCBtYXJrZG93bi10cy0tbGlzdC1tb3ZlKTogTmV3IGxpc3QKaXRlbSBt
b3ZlbWVudCBmdW5jdGlvbnMuCihtYXJrZG93bi10cy1yZW51bWJlci1saXN0KTogTmV3IGNvbW1h
bmQgZm9yIHNlcXVlbnRpYWwgbGlzdApyZW51bWJlcmluZyB3aXRoIHByZWZpeCBhcmd1bWVudCBz
dXBwb3J0LgoobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1uZXctbWFya2VyKQoobWFya2Rvd24tdHMt
LW5ldy1tYXJrZXItZm9yLWxpbmUpOiBOZXcgbWFya2VyIHN0cmluZyBnZW5lcmF0b3JzCmZvciBs
aXN0IGl0ZW0gaW5zZXJ0aW9uLgoobWFya2Rvd24tdHMtLWxpbmUtYmxvY2stcXVvdGUtZGVwdGgp
OiBOZXcgaGVscGVyIGNvdW50aW5nIGJsb2NrCnF1b3RlIGRlcHRoLgoobWFya2Rvd24tdHMtbmV3
bGluZSk6IE5ldyBSRVQgY29tbWFuZCBmb3IgY29udGV4dC1hd2FyZQpuZXdsaW5lLgoobWFya2Rv
d24tdHMtaW5zZXJ0LWxpc3QtaXRlbSk6IE5ldyBNLVJFVCBjb21tYW5kIHRoYXQgY3JlYXRlcyBh
Cm5ldyBsaXN0IGl0ZW0uCihtYXJrZG93bi10cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5
KTogTmV3IHRyZWUtc2l0dGVyCnF1ZXJ5IGZvciB1bmZpbGxhYmxlIGJsb2Nrcy4KKG1hcmtkb3du
LXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4pOiBOZXcgaGVscGVyIGZvciBsaXN0IGl0ZW0KdGV4
dCBhbGlnbm1lbnQuCihtYXJrZG93bi10cy0tZmlsbC1saXN0LWl0ZW0pOiBOZXcgZnVuY3Rpb24g
ZmlsbGluZyB3aXRoaW4gbGlzdAppdGVtcyB3aXRob3V0IG1lcmdpbmcgYWRqYWNlbnQgaXRlbXMu
CihtYXJrZG93bi10cy0tYWRhcHRpdmUtZmlsbCk6IE5ldyBhZGFwdGl2ZSBmaWxsIGZ1bmN0aW9u
IGZvcgpsaXN0IGl0ZW0gY29udGludWF0aW9uLgoobWFya2Rvd24tdHMtLWZpbGwtZm9yd2FyZC1w
YXJhZ3JhcGgpOiBOZXcgcGFyYWdyYXBoIG1vdGlvbgpyZXNwZWN0aW5nIGxpc3QgaXRlbXMgYW5k
IHVuZmlsbGFibGUgYmxvY2tzLgoobWFya2Rvd24tdHMtZmlsbC1wYXJhZ3JhcGgpOiBOZXcgZmls
bC1wYXJhZ3JhcGgtZnVuY3Rpb24gd2l0aApjb25kKiBkaXNwYXRjaCBmb3IgbGlzdHMsIGJsb2Nr
IHF1b3RlcywgSFRNTCBjb21tZW50cywgYW5kCnVuZmlsbGFibGUgYmxvY2tzLgoobWFya2Rvd24t
dHMtLWZpbGwtaHRtbC1jb21tZW50KTogTmV3IEhUTUwgY29tbWVudCBmaWxsZXIgd2l0aApjb250
aW51YXRpb24gYWxpZ25tZW50LgoobWFya2Rvd24tdHMtLWJsb2NrLXF1b3RlLXByZWZpeCk6IE5l
dyBoZWxwZXIgcHJlc2VydmluZwpleGlzdGluZyBibG9jayBxdW90ZSBtYXJrZXIgc3R5bGUuCiht
YXJrZG93bi10cy0tZmlsbC1ibG9jay1xdW90ZSk6IE5ldyBibG9jayBxdW90ZSBmaWxsZXIgd2l0
aApsaXN0IGl0ZW0gdGV4dCBjb2x1bW4gYWxpZ25tZW50LgoobWFya2Rvd24tdHMtZW1waGFzaXMt
YWxpc3QpOiBOZXcgYWxpc3Qgb2YgZW1waGFzaXMgbWFya2Vycy4KKG1hcmtkb3duLXRzLS1lbXBo
YXNpcy1ub2RlLWF0LXBvaW50KTogTmV3IHRyZWUtc2l0dGVyIGJhc2VkCmVtcGhhc2lzIGRldGVj
dGlvbi4KKG1hcmtkb3duLXRzLXJlbW92ZS1lbXBoYXNpcyk6IE5ldyBjb21tYW5kIHJlbW92aW5n
IGVtcGhhc2lzIGF0CnBvaW50IG9yIHJlZ2lvbi4KKG1hcmtkb3duLXRzLWVtcGhhc2l6ZSk6IE5l
dyBpbnRlcmFjdGl2ZSBlbXBoYXNpcyBpbnNlcnRpb24gd2l0aApyZWdpb24gd3JhcHBpbmcgYW5k
IHdvcmQtYXQtcG9pbnQgc3VwcG9ydC4KKG1hcmtkb3duLXRzLWluc2VydC1zdHJ1Y3R1cmUpOiBO
ZXcgY29tbWFuZCBmb3IgaW5zZXJ0aW5nIGNvZGUKYmxvY2tzLCBibG9jayBxdW90ZXMsIGFuZCBk
aXZpZGVycy4KKG1hcmtkb3duLXRzLS1pbnNlcnQtY29kZS1ibG9jayk6IE5ldyBmdW5jdGlvbiB3
aXRoIGxhbmd1YWdlCmNvbXBsZXRpb24gZnJvbSBrbm93biBtb2Rlcy4KKG1hcmtkb3duLXRzLS1p
bnNlcnQtYmxvY2stcXVvdGUpOiBOZXcgZnVuY3Rpb24gd2l0aCByZWdpb24Kd3JhcHBpbmcuCiht
YXJrZG93bi10cy0taW5zZXJ0LWRpdmlkZXIpOiBOZXcgZnVuY3Rpb24gZm9yIGhvcml6b250YWwK
cnVsZXMuCihtYXJrZG93bi10cy0tYXBwbHktZWxsaXBzaXMpOiBOZXcgZnVuY3Rpb24gYXBwbHlp
bmcgY3VzdG9tCmVsbGlwc2lzIHZpYSBkaXNwbGF5IHRhYmxlLgoobWFya2Rvd24tdHMtLXNldC11
cCk6IFJlbmFtZWQgZnJvbSBtYXJrZG93bi10cy1zZXR1cC4KKG1hcmtkb3duLXRzLW91dGxpbmUt
Y3ljbGUpOiBOZXcgVEFCIGNvbW1hbmQgY3ljbGluZyBvdXRsaW5lCnZpc2liaWxpdHkgb24gaGVh
ZGluZ3MuCihtYXJrZG93bi10cy1tb2RlLW1hcCk6IE5ldyBrZXltYXAgZm9yIGNvZGUgYmxvY2sg
bmF2aWdhdGlvbiwKYmluZGluZ3MgZm9yIGhlYWRpbmcgbmF2aWdhdGlvbiwgc3RydWN0dXJlIGVk
aXRpbmcsIGVtcGhhc2lzLAphbmQgbGlzdCBvcGVyYXRpb25zLgoobWFya2Rvd24tdHMtY29kZS1i
bG9jay1jb250ZXh0LW1vZGUtbWFwKTogTmV3IGtleW1hcCBmb3IgY29kZQpibG9jayBjb250ZXh0
LgoobWFya2Rvd24tdHMtbW9kZS1tZW51KTogTmV3IG1lbnUgYmFyIHdpdGggU2hvdy9IaWRlLCBO
YXZpZ2F0ZQpIZWFkaW5ncywgRWRpdCBTdHJ1Y3R1cmUsIGFuZCBFZGl0aW5nIHNlY3Rpb25zLgoo
bWFya2Rvd24tdHMtbW9kZSk6IEFkZCBvdXRsaW5lLW1pbm9yLW1vZGUsIGVsbGlwc2lzLCBmb2xk
aW5nLApmaWxsLXBhcmFncmFwaCBpbnRlZ3JhdGlvbiwgY29kZS1ibG9jay1jb250ZXh0LW1vZGUg
aG9va3MsCmNvbW1lbnQgc2V0dGluZ3MsIGFuZCBvdXRsaW5lLXZpZXctY2hhbmdlLWhvb2suICBV
c2UKbWFya2Rvd24tdHMtbW9kZSBkaXJlY3RseSBpbiBhdXRvLW1vZGUtYWxpc3QgaW5zdGVhZCBv
ZgptYXJrZG93bi10cy1tb2RlLW1heWJlLgoobWFya2Rvd24tdHMtbW9kZS1pbnN0YWxsLXBhcnNl
cnMpOiBOZXcgY29tbWFuZCBmb3IgaW5zdGFsbGluZwpyZXF1aXJlZCBhbmQgb3B0aW9uYWwgdHJl
ZS1zaXR0ZXIgbGFuZ3VhZ2UgZ3JhbW1hcnMuCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbnRl
eHQtbW9kZSk6IE5ldyBtaW5vciBtb2RlIGZvciBjb2RlCmJsb2NrIGNvbnRleHQgKHJlbmFtZWQg
ZnJvbSBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUgdG8gYXZvaWQKY29sbGlzaW9uIHdpdGgg
dGhlIHBlci1ibG9jayBtYWpvciBtb2RlIG1lYW5pbmcgb2YKYGNvZGUtYmxvY2stbW9kZScpLgoo
bWFya2Rvd24tdHMtLWZpbmQtY29kZS1ibG9jay1kZWxpbWl0ZXIpCihtYXJrZG93bi10cy0tZmlu
ZC1uZXh0LWNvZGUtYmxvY2stZGVsaW1pdGVyKTogTmV3IGhlbHBlcnMgZm9yCmxvY2F0aW5nIGZl
bmNlZCBjb2RlIGJsb2NrIGRlbGltaXRlciBub2Rlcy4KKG1hcmtkb3duLXRzLW1vdmUtdG8tbmV4
dC1jb2RlLWJsb2NrKQoobWFya2Rvd24tdHMtbW92ZS10by1wcmV2aW91cy1jb2RlLWJsb2NrKTog
TmV3IGNvbW1hbmRzIGZvcgpuYXZpZ2F0aW5nIGJldHdlZW4gZmVuY2VkIGNvZGUgYmxvY2tzLgoo
bWFya2Rvd24tdHMtbW9kZS1tYXliZSk6IFJlbW92ZTsgYXV0by1tb2RlLWFsaXN0IG5vdyB1c2Vz
Cm1hcmtkb3duLXRzLW1vZGUgZGlyZWN0bHkuCkF1dG8tbW9kZS1hbGlzdDogQWRkIC5tYXJrZG93
biBhbmQgLm1keCBleHRlbnNpb25zLgpJbmNsdWRlcyBmaXhlcyBmb3I6IChidWcjODA2MTMpIChi
dWcjODA2MjUpIChidWcjODA2OTApCgpDby1hdXRob3JlZC1ieTogU3TDqXBoYW5lIE1hcmtzIDxz
aGlwbWludHNAZ21haWwuY29tPgotLS0KIGxpc3AvdGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUu
ZWwgfCAzNTUyICsrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAz
MjYxIGluc2VydGlvbnMoKyksIDI5MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL3Rl
eHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsIGIvbGlzcC90ZXh0bW9kZXMvbWFya2Rvd24tdHMt
bW9kZS5lbAppbmRleCA2NTdkNmJjNDY2ZC4uNTY0ZjRjYzhjZjAgMTAwNjQ0Ci0tLSBhL2xpc3Av
dGV4dG1vZGVzL21hcmtkb3duLXRzLW1vZGUuZWwKKysrIGIvbGlzcC90ZXh0bW9kZXMvbWFya2Rv
d24tdHMtbW9kZS5lbApAQCAtMSwxMSArMSwxMyBAQAotOzs7IG1hcmtkb3duLXRzLW1vZGUuZWwg
LS0tIHRyZWUgc2l0dGVyIHN1cHBvcnQgZm9yIE1hcmtkb3duICAtKi0gbGV4aWNhbC1iaW5kaW5n
OiB0OyAtKi0KKzs7OyBtYXJrZG93bi10cy1tb2RlLmVsIC0tLSB0cmVlIHNpdHRlciBzdXBwb3J0
IGZvciBNYXJrZG93biAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0OyAtKi0KIAogOzsgQ29weXJpZ2h0
IChDKSAyMDI0LTIwMjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLTs7IEF1dGhv
ciAgICAgOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0BnbWFpbC5jb20+Ci07
OyBNYWludGFpbmVyIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1bGlhdG9AZ21haWwu
Y29tPgotOzsgQ3JlYXRlZCAgICA6IEFwcmlsIDIwMjQKLTs7IEtleXdvcmRzICAgOiBtYXJrZG93
biBtZCBsYW5ndWFnZXMgdHJlZS1zaXR0ZXIKKzs7IEF1dGhvciAgICAgICAgICAgOiBSYWh1bCBN
YXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0BnbWFpbC5jb20+Cis7OyBNYWludGFpbmVyICAg
ICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1bGlhdG9AZ21haWwuY29tPgorOzsg
Q3JlYXRlZCAgICAgICAgICA6IEFwcmlsIDIwMjQKKzs7IFZlcnNpb24gICAgICAgICAgOiAgMS4w
Cis7OyBQYWNrYWdlLVJlcXVpcmVzIDogKChlbWFjcyAiMzEuMSIpKQorOzsgS2V5d29yZHMgICAg
ICAgICA6IG1hcmtkb3duIG1kIHRleHQgZWRpdCBsYW5ndWFnZXMgdHJlZS1zaXR0ZXIKIAogOzsg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgogCkBAIC0yMiwxMzggKzI0LDU1MCBAQAog
OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKIDs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBz
Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAotOzs7IFRyZWUtc2l0dGVyIGxhbmd1YWdlIHZl
cnNpb25zCis7OzsgQ29tbWVudGFyeToKKworOzsgVHJlZS1zaXR0ZXIgTGFuZ3VhZ2UgVmVyc2lv
bnMKIDs7CiA7OyBtYXJrZG93bi10cy1tb2RlIGhhcyBiZWVuIHRlc3RlZCB3aXRoIHRoZSBmb2xs
b3dpbmcgZ3JhbW1hcnMgYW5kIHZlcnNpb246CiA7OyAtIHRyZWUtc2l0dGVyLW1hcmtkb3duOiB2
MC40LjEKIDs7IC0gdHJlZS1zaXR0ZXItbWFya2Rvd24taW5saW5lOiB2MC40LjEKIDs7Ci07OyBX
ZSB0cnkgb3VyIGJlc3QgdG8gbWFrZSBidWlsdGluIG1vZGVzIHdvcmsgd2l0aCBsYXRlc3QgZ3Jh
bW1hcgotOzsgdmVyc2lvbnMsIHNvIGEgbW9yZSByZWNlbnQgZ3JhbW1hciBoYXMgYSBnb29kIGNo
YW5jZSB0byB3b3JrIHRvby4KLTs7IFNlbmQgdXMgYSBidWcgcmVwb3J0IGlmIGl0IGRvZXNuJ3Qu
Ci0KLTs7OyBDb21tZW50YXJ5OgorOzsgV2UgdHJ5IG91ciBiZXN0IHRvIG1ha2UgYnVpbHQtaW4g
bW9kZXMgd29yayB3aXRoIGxhdGVzdCBncmFtbWFyCis7OyB2ZXJzaW9ucywgc28gYSBtb3JlIHJl
Y2VudCBncmFtbWFyIGhhcyBhIGdvb2QgY2hhbmNlIHRvIHdvcmsuICBTZW5kCis7OyB1cyBhIGJ1
ZyByZXBvcnQgaWYgaXQgZG9lc24ndC4KKzs7Cis7OyBCaWRpcmVjdGlvbmFsIFRleHQgQ29uc2lk
ZXJhdGlvbnMKKzs7Cis7OyBUZXh0IHdpdGggbWFya3VwIG1heSBuZWVkIGFuIGV4dHJhIG5ld2xp
bmUgYmVmb3JlIGJpZGlyZWN0aW9uYWwgdGV4dAorOzsgZm9yIGl0IHRvIHNob3cgY29ycmVjdGx5
LiAgVGhpcyBpcyBhIGxpbWl0YXRpb24gaW4gdGhlIEVtYWNzIGRpc3BsYXkKKzs7IGVuZ2luZS4K
Kzs7Cis7OyBDb2RlIEJsb2NrIExhbmd1YWdlIE1vZGUgQ29uc2lkZXJhdGlvbnMKKzs7Cis7OyBG
ZW5jZWQgY29kZSBibG9jayBsYW5ndWFnZSBtb2RlcyBhcmUgZGVyaXZlZCBmcm9tIHRoZSB0YWJs
ZQorOzsgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMnIGFuZCBoZXVyaXN0aWNzIGFkZGlu
ZyAiLXRzLW1vZGUiIGFuZAorOzsgIi1tb2RlIiB0byB0aGUgbGFuZ3VhZ2UgbmFtZS4gIElmIHlv
dXIgbGFuZ3VhZ2UncyBtb2RlIGlzIG5vdAorOzsgcHJvcGVybHkgcmVjb2duaXplZCwgYWRkIGl0
IHRvIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzJywgd2hpY2gKKzs7IHNlZS4KKzs7Cis7
OyBFYWNoIGxhbmd1YWdlJ3MgbWFqb3IgbW9kZSBpcyBlbmFibGVkIG9uY2UgcGVyIGBtYXJrZG93
bi10cy1tb2RlJworOzsgYnVmZmVyIGluIGEgdGVtcG9yYXJ5IGJ1ZmZlciB0byBleHRyYWN0IGl0
cyBkZWZhdWx0IGZvbnQtbG9jayBhbmQKKzs7IHRyZWUtc2l0dGVyIHNldHRpbmdzLiAgSW4gY29u
dmVudGlvbmFsIG5vbi10cmVlc2l0IGNvZGUgYmxvY2tzLCB0aGUKKzs7IG1ham9yIG1vZGUgaXMg
ZW5hYmxlZCBlYWNoIHRpbWUgdGhlIGJsb2NrIGlzIGZvbnRpZmllZC4KKzs7Cis7OyBOT1RFOiBN
YWpvciBtb2RlIGhvb2tzIGFyZSBub3QgcnVuIGFuZCBmb250LWxvY2ssIHRyZWVzaXQsIGluZGVu
dCwKKzs7IGNvbW1lbnQgcmVjb2duaXRpb24sIGV0Yy4gY3VzdG9taXphdGlvbnMgeW91IG1pZ2h0
IGhhdmUgaW4geW91ciBob29rcworOzsgYXJlIG5vdCBhcHBsaWVkLiAgQXMgYSByZXN1bHQsIHlv
dXIgY29kZSBibG9ja3MgbWlnaHQgYXBwZWFyCis7OyBkaWZmZXJlbnQgaW4gYG1hcmtkb3duLXRz
LW1vZGUnIG1vZGUgdGhhbiBpbiBuYXRpdmUgbGFuZ3VhZ2UgbWFqb3IKKzs7IG1vZGUgYnVmZmVy
cy4gIE5vdCBydW5uaW5nIGhvb2tzIGF2b2lkcyB0aGUgY29zdCBvZiBlYWNoIG1vZGUgaG9vawor
OzsgYW5kIGF2b2lkcyBjZXJ0YWluIHJlY3Vyc2l2ZSB0cmVlc2l0IGNhbGxiYWNrIGlzc3Vlcy4K
Kzs7Cis7OyBDb2RlIEJsb2NrIENvbW1hbmRzCis7OworOzsgU29tZSBjb21tb24gY29tbWFuZHMg
d2lsbCBvcGVyYXRlIHdpdGhpbiBhIGNvZGUgYmxvY2sgYW5kIGluIGl0cworOzsgbW9kZS4gIFRo
aXMgaXMgaW1wbGVtZW50ZWQgdXNpbmcgYW4gaW5kaXJlY3QgYnVmZmVyIGFuZCBzb21lIGNvbW1h
bmRzCis7OyBtYXkgb3BlcmF0ZSBzbGlnaHRseSBkaWZmZXJlbnRseSB0byB0aGUgc2FtZSBjb21t
YW5kcyBpbnZva2VkIGluIGEKKzs7IG5hdGl2ZSBtb2RlIGJ1ZmZlci4KKzs7Cis7OyBUcmVlIFNp
dHRlciBCdWdzCis7OworOzsgYG1hcmtkb3duLXRzLW1vZGUnIHJlbGllcyBvbiB0aGUgdW5kZXJs
eWluZyB0cmVlLXNpdHRlciBsaWJyYXJ5IGluCis7OyBFbWFjcyAoY2hvc2VuIGF0IGl0cyBidWls
ZCB0aW1lKSwgYW5kIGxhbmd1YWdlIGdyYW1tYXJzIHlvdSBoYXZlCis7OyBpbnN0YWxsZWQuICBU
aGVyZSBhcmUga25vd24gYW5kIHJlcG9ydGVkIGJ1Z3Mgd2hpY2ggbmVnYXRpdmVseSBhZmZlY3QK
Kzs7IGNlcnRhaW4gZmVhdHVyZXMuICBUaGlzIG1vZGUgc2hvdWxkIGJlbmVmaXQgYXMgdGhlc2Ug
YnVncyBhcmUgZml4ZWQKKzs7IG9yIHdvcmtlZCBhcm91bmQuCis7OworOzsgLSBUaGUgTWFya2Rv
d24gZ3JhbW1hciBpbnNlcnRzIGJsb2NrX2NvbnRpbnVhdGlvbiBub2RlcyBhcyBjaGlsZHJlbgor
OzsgICBvZiBjb2RlX2ZlbmNlX2NvbnRlbnQsIHdoaWNoIGNvbmZ1c2VzIGJvdGggdGhlIGluc3Bl
Y3RvciBhbmQgdGhlCis7OyAgIGVtYmVkZGVkIHBhcnNlci4gIFRoaXMgYWZmZWN0cyBjb2RlIGJs
b2NrcyBpbnNpZGUgYmxvY2sgcXVvdGVzLgorOzsKKzs7IC0gSFRNTCBibG9jayB0eXBlIDQgKGA8
IScgZm9sbG93ZWQgYnkgYW4gdXBwZXJjYXNlIGxldHRlciwgZS5nLiwKKzs7ICAgYDwhRE9DVFlQ
RSBodG1sPicpIGNhdXNlcyB0aGUgcGFyc2VyIHRvIGNvbnN1bWUgYWxsIHN1YnNlcXVlbnQKKzs7
ICAgY29udGVudC4gIExvd2VyY2FzZSBgPCFkb2N0eXBlIGh0bWw+JyB3b3JrcyBhcyBhIHdvcmth
cm91bmQuCis7OyAgIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVyLWdyYW1tYXJz
L3RyZWUtc2l0dGVyLW1hcmtkb3duL2lzc3Vlcy8yMzM+LgorOzsKKzs7IC0gU3VwZXJzY3JpcHQg
KGBedGV4dF4nKSBhbmQgc3Vic2NyaXB0IChgfnRleHR+Jykgc3ludGF4IGlzIG5vdAorOzsgICBz
dXBwb3J0ZWQgYnkgdGhlIGdyYW1tYXIuICBObyBFWFRFTlNJT05fIGJ1aWxkIGZsYWcgZXhpc3Rz
IGZvcgorOzsgICB0aGlzLiAgVGhpcyBpcyBQYW5kb2MgLyBQSFAgTWFya2Rvd24gRXh0cmEgc3lu
dGF4LCBub3QgQ29tbW9uTWFyaworOzsgICBvciBHRk0uCis7OworOzsgLSBPcmRlcmVkIChudW1i
ZXJlZCkgbGlzdHMgZG8gbm90IG5lc3QgYnkgaW5kZW50YXRpb24uICBJbmRlbnRpbmcKKzs7ICAg
YSBgMS4nIGl0ZW0gdW5kZXIgYW5vdGhlciBvcmRlcmVkIGl0ZW0gZG9lcyBub3QgcHJvZHVjZSBh
IG5lc3RlZAorOzsgICBsaXN0IG5vZGU7IHRoZSBwYXJzZXIgZWl0aGVyIHRyZWF0cyBpdCBhcyBh
IGZsYXQgc2libGluZyBvcgorOzsgICBhYnNvcmJzIGl0IGludG8gdGhlIHBhcmVudCBpdGVtJ3Mg
cGFyYWdyYXBoIGFzIGEKKzs7ICAgYmxvY2tfY29udGludWF0aW9uLiAgVW5vcmRlcmVkIChgLScs
IGAqJywgYCsnKSBsaXN0cyBuZXN0Cis7OyAgIGNvcnJlY3RseS4gIERlbW90ZS9wcm9tb3RlIG9m
IG9yZGVyZWQgbGlzdCBpdGVtcyBpcyB0aGVyZWZvcmUKKzs7ICAgZGlzYWJsZWQuCiA7OworOzsg
LSBSZW51bWJlcmluZyBvcmRlcmVkIGxpc3RzIChgbWFya2Rvd24tdHMtcmVudW1iZXItbGlzdCcp
IG1heSBvbmx5Cis7OyAgIGFmZmVjdCBpdGVtcyBmcm9tIHBvaW50IGRvd253YXJkIGlmIHRoZSBw
YXJzZXIgc3BsaXRzIGEgc2luZ2xlCis7OyAgIGxpc3QgaW50byBzZXBhcmF0ZSBgbGlzdCcgbm9k
ZXMsIG9yIG1heSBjb250aW51ZSBudW1iZXJpbmcgYWNyb3NzCis7OyAgIHR3byBzZXBhcmF0ZSBs
aXN0cyBpZiB0aGUgcGFyc2VyIG1lcmdlcyB0aGVtIGludG8gb25lIG5vZGUuCis7OworOzsgLSBF
bXB0eSBsaW5lcyBmb2xsb3dpbmcgYW4gYGluZGVudGVkX2NvZGVfYmxvY2snIG1heSBiZSBjbGFp
bWVkIGJ5Cis7OyAgIHRoZSBwYXJzZXIgYXMgY29udGludWF0aW9uIGxpbmVzIG9mIHRoYXQgYmxv
Y2ssIHJhdGhlciB0aGFuIGJlaW5nCis7OyAgIHRyZWF0ZWQgYXMgYmxhbmsgc2VwYXJhdG9ycy4K
IAogOzs7IENvZGU6CiAKIChyZXF1aXJlICd0cmVlc2l0KQogKHJlcXVpcmUgJ3N1YnIteCkKLShy
ZXF1aXJlICdvdXRsaW5lKQogKHJlcXVpcmUgJ3NlcSkKKyhyZXF1aXJlICdvdXRsaW5lKQorKHJl
cXVpcmUgJ2dvdG8tYWRkcikKKyhyZXF1aXJlICd4cmVmKQorKHJlcXVpcmUgJ2ljb25zKQogCi0o
dHJlZXNpdC1kZWNsYXJlLXVuYXZhaWxhYmxlLWZ1bmN0aW9ucykKLQotKGFkZC10by1saXN0Ci0g
J3RyZWVzaXQtbGFuZ3VhZ2Utc291cmNlLWFsaXN0Ci0gJyhtYXJrZG93bgotICAgImh0dHBzOi8v
Z2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRlci1tYXJrZG93biIKLSAg
IDpjb21taXQgIjQxMzI4NTIzMWNlOGZhOGIxMWU3MDc0YmJlMjY1YjQ4YWE3Mjc3ZjkiCi0gICA6
c291cmNlLWRpciAidHJlZS1zaXR0ZXItbWFya2Rvd24vc3JjIikKLSB0KQotKGFkZC10by1saXN0
Ci0gJ3RyZWVzaXQtbGFuZ3VhZ2Utc291cmNlLWFsaXN0Ci0gJyhtYXJrZG93bi1pbmxpbmUKLSAg
ICJodHRwczovL2dpdGh1Yi5jb20vdHJlZS1zaXR0ZXItZ3JhbW1hcnMvdHJlZS1zaXR0ZXItbWFy
a2Rvd24iCi0gICA6Y29tbWl0ICI0MTMyODUyMzFjZThmYThiMTFlNzA3NGJiZTI2NWI0OGFhNzI3
N2Y5IgotICAgOnNvdXJjZS1kaXIgInRyZWUtc2l0dGVyLW1hcmtkb3duLWlubGluZS9zcmMiKQot
IHQpCis7OzsgQ3VzdG9taXphdGlvbnM6CiAKLTs7OyBIZWxwZXIgZnVuY3Rpb25zCi0KLShkZWZ2
YXIgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2UtbWFwCi0gICcoKCJjKysiIC4gY3Bw
KQotICAgICgiYyMiIC4gYy1zaGFycCkKLSAgICAoInNoIiAuIGJhc2gpKQotICAiQWxpc3QgbWFw
cGluZyBjb2RlIGJsb2NrIGxhbmd1YWdlIG5hbWVzIHRvIHRyZWUtc2l0dGVyIGxhbmd1YWdlcy4K
LQotS2V5cyBzaG91bGQgYmUgc3RyaW5ncywgYW5kIHZhbHVlcyBzaG91bGQgYmUgbGFuZ3VhZ2Ug
c3ltYm9scy4KLQotRm9yIGV4YW1wbGUsIFwiYysrXCIgaW4KLQotICAgIGBgYGMrKwotICAgIGlu
dCBtYWluKCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgYGBgCi0KLW1hcHMgdG8g
dHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgYGNwcCcuIikKLQotKGRlZnZhciBtYXJrZG93bi10cy1jb2Rl
LWJsb2NrLXNvdXJjZS1tb2RlLW1hcAotICAnKChiYXNoIC4gYmFzaC10cy1tb2RlKQotICAgIChj
IC4gYy10cy1tb2RlKQotICAgIChjLXNoYXJwIC4gY3NoYXJwLXRzLW1vZGUpCi0gICAgKGNtYWtl
IC4gY21ha2UtdHMtbW9kZSkKLSAgICAoY3BwIC4gYysrLXRzLW1vZGUpCi0gICAgKGNzcyAuIGNz
cy10cy1tb2RlKQotICAgIChkb2NrZXJmaWxlIC4gZG9ja2VyZmlsZS10cy1tb2RlKQotICAgIChl
bGl4aXIgLiBlbGl4aXItdHMtbW9kZSkKLSAgICAoZ28gLiBnby10cy1tb2RlKQotICAgIChnb21v
ZCAuIGdvLW1vZC10cy1tb2RlKQotICAgIChnb3dvcmsgLiBnby13b3JrLXRzLW1vZGUpCi0gICAg
KGhlZXggLiBoZWV4LXRzLW1vZGUpCi0gICAgKGh0bWwgLiBodG1sLXRzLW1vZGUpCi0gICAgKGph
dmEgLiBqYXZhLXRzLW1vZGUpCi0gICAgKGphdmFzY3JpcHQgLiBqcy10cy1tb2RlKQotICAgIChq
c29uIC4ganNvbi10cy1tb2RlKQotICAgIChsdWEgLiBsdWEtdHMtbW9kZSkKLSAgICAocGhwIC4g
cGhwLXRzLW1vZGUpCi0gICAgKHB5dGhvbiAuIHB5dGhvbi10cy1tb2RlKQotICAgIChydWJ5IC4g
cnVieS10cy1tb2RlKQotICAgIChydXN0IC4gcnVzdC10cy1tb2RlKQotICAgICh0b21sIC4gdG9t
bC10cy1tb2RlKQotICAgICh0c3ggLiB0c3gtdHMtbW9kZSkKLSAgICAodHlwZXNjcmlwdCAuIHR5
cGVzY3JpcHQtdHMtbW9kZSkKLSAgICAoeWFtbCAuIHlhbWwtdHMtbW9kZSkpCi0gICJBbiBhbGlz
dCBvZiBzdXBwb3J0ZWQgY29kZSBibG9jayBsYW5ndWFnZXMgYW5kIHRoZWlyIG1ham9yIG1vZGUu
IikKKyhkZWZncm91cCBtYXJrZG93bi10cyBuaWwKKyAgIk1ham9yIG1vZGUgZm9yIHZpZXdpbmcg
YW5kIGVkaXRpbmcgTWFya2Rvd24gYnVmZmVycy4iCisgIDpwcmVmaXggIm1hcmtkb3duLXRzLSIK
KyAgOmdyb3VwICd0ZXh0CisgIDpncm91cCAnZWRpdGluZworICA6dmVyc2lvbiAiMzEuMSIpCiAK
IChkZWZjdXN0b20gbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAgbmlsCiAgICJOb24tbmlsIG1lYW5z
IGhpZGUgTWFya2Rvd24gbWFya3VwIGRlbGltaXRlcnMgaW4gdGhpcyBidWZmZXIuIgogICA6dHlw
ZSAnYm9vbGVhbgogICA6c2FmZSAjJ2Jvb2xlYW5wCi0gIDpncm91cCAnbWFya2Rvd24tdHMpCi0K
LTs7OyBGYWNlcworICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikK
KworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1lbGxpcHNpcyBuaWwKKyAgIlRoZSBlbGxpcHNpcyB0
byB1c2UgaW4gZm9sZGVkIGhlYWRpbmdzLgorV2hlbiBuaWwsIHVzZSB0aGUgc3RhbmRhcmQgdGhy
ZWUgZG90cy4gIFdoZW4gYSBub24tZW1wdHkgc3RyaW5nLAordXNlIHRoYXQgc3RyaW5nIGluc3Rl
YWQuIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgIDp0YWcgIkRlZmF1bHQgKC4uLikiIG5pbCkK
KyAgICAgICAgICAgICAgICAgKHN0cmluZyA6dGFnICJTdHJpbmciIDp2YWx1ZSAiIOKMhCIpKQor
ICA6c2FmZSAjJ3N0cmluZy1vci1udWxsLXAKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdl
LXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtbWVudS1iYXItc2hvdyB0
CisgICJOb24tbmlsIG1lYW5zIHNob3cgdGhlIE1hcmtkb3duIG1lbnUgaW4gdGhlIG1lbnUgYmFy
LiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOnNhZmUgIydib29sZWFucAorICA6dmVyc2lvbiAiMzEu
MSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1k
ZWZhdWx0LWZvbGRpbmcgJ3Nob3ctYWxsCisgICJEZWZhdWx0IGhlYWRpbmcgZm9sZGluZyBsZXZl
bC4iCisgIDp0eXBlICcoY2hvaWNlCisgICAgICAgICAgKGNvbnN0IDp0YWcgIlNob3cgZXZlcnl0
aGluZyIgc2hvdy1hbGwpCisgICAgICAgICAgKGNvbnN0IDp0YWcgIkZvbGQgZXZlcnl0aGluZywg
c2hvd2luZyB0b3AtbGV2ZWwgaGVhZGluZ3MiIGZvbGQtYWxsKQorICAgICAgICAgIChjb25zdCA6
dGFnICJGb2xkIGhlYWRpbmdzLCBzaG93aW5nIGFsbCBoZWFkaW5nIGxldmVscyIgZm9sZC1oZWFk
aW5ncykpCisgIDpzYWZlICMnc3ltYm9scAorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2Ut
dmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzIG5p
bAorICAiTm9uLW5pbCBtZWFucyBkaXNwbGF5IGlubGluZSBpbWFnZXMgYmVsb3cgaW1hZ2UgbGlu
a3MuIgorICA6dHlwZSAnYm9vbGVhbgorICA6c2FmZSAjJ2Jvb2xlYW5wCisgIDp2ZXJzaW9uICIz
MS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRz
LWltYWdlLW1heC13aWR0aCAnd2luZG93CisgICJNYXhpbXVtIHdpZHRoIG9mIGlubGluZSBpbWFn
ZXMgaW4gcGl4ZWxzLgorV2hlbiBgd2luZG93JywgdXNlIHRoZSB3aW5kb3cgYm9keSB3aWR0aC4g
IFdoZW4gYSBudW1iZXIsIHVzZQordGhhdCBhcyB0aGUgbWF4aW11bSBwaXhlbCB3aWR0aC4iCisg
IDp0eXBlICcoY2hvaWNlIChjb25zdCAgOnRhZyAiV2luZG93IHdpZHRoIiB3aW5kb3cpCisgICAg
ICAgICAgICAgICAgIChuYXRudW0gOnRhZyAiUGl4ZWwgd2lkdGgiKSkKKyAgOnNhZmUgKGxhbWJk
YSAodikgKG9yIChlcSB2ICd3aW5kb3cpIChuYXRudW1wIHYpKSkKKyAgOnZlcnNpb24gIjMxLjEi
CisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGlz
cGxheS1yZW1vdGUtaW5saW5lLWltYWdlcyBuaWwKKyAgIkhvdyB0byBkaXNwbGF5IHJlbW90ZSBp
bmxpbmUgaW1hZ2VzLgorV2hlbiBuaWwsIGRvIG5vdCBkaXNwbGF5IHJlbW90ZSBpbWFnZXMuICBX
aGVuIGBkb3dubG9hZCcsIGZldGNoIHRoZQoraW1hZ2UgaW50byBhIHRlbXBvcmFyeSBidWZmZXIg
YW5kIGRpc3BsYXkgaXQuCisKK1JlbW90ZSBpbWFnZXMgYXJlIHNraXBwZWQgYnkgZGVmYXVsdCBm
b3Igc2VjdXJpdHkuIgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiU2tpcCByZW1vdGUg
aW1hZ2VzIiBuaWwpCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJEb3dubG9hZCByZW1v
dGUgaW1hZ2VzIiBkb3dubG9hZCkpCisgIDpzYWZlICMnc3ltYm9scAorICA6dmVyc2lvbiAiMzEu
MSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1j
aGVja2VkLWNoZWNrYm94ICcoIuKYkSIgLiAiKyIpCisgICJJZiBtYXJrdXAgaXMgaGlkZGVuLCBk
aXNwbGF5IHRoaXMgZm9yIGEgY2hlY2tlZCB0YXNrIGxpc3QgbWFya2VyLgorVmFsdWUgZm9ybXM6
CisgLSBjb25zIChQUkVGRVJSRUQgLiBGQUxMQkFDSyk6IFBSRUZFUlJFRCBpcyB1c2VkIGlmIGl0
cyBmaXJzdCBjaGFyYWN0ZXIKKyAgIHBhc3NlcyBgY2hhci1kaXNwbGF5YWJsZS1wJywgb3RoZXJ3
aXNlIEZBTExCQUNLLgorIC0gc3ltYm9sIGBpY29uJzogZGVmZXIgdG8gdGhlIGljb25zLmVsIGlj
b24KKyAgIGBtYXJrZG93bi10cy1jaGVja2VkLWNoZWNrYm94LWljb24nOyBjdXN0b21pemUgdmlh
CisgICBcXFtjdXN0b21pemUtaWNvbl0uCisgLSBuaWw6IGRpc3BsYXkgdGhlIHJhdyBtYXJrdXAu
IgorICA6dHlwZSAnKGNob2ljZSAoY29ucyAoc3RyaW5nIDp0YWcgIlByZWZlcnJlZCAoR1VJKSIp
CisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRhZyAiRmFsbGJhY2sgKFRUWSkiKSkK
KyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIlVzZSBpY29ucy5lbCBpY29uIiBpY29uKQor
ICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlzcGxheSBvcmlnaW5hbCBtYXJrdXAiIG5p
bCkpCisgIDpzYWZlIChsYW1iZGEgKHYpIChvciAobnVsbCB2KQorICAgICAgICAgICAgICAgICAg
ICAgICAgKGVxIHYgJ2ljb24pCisgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChjb25zcCB2
KSAoc3RyaW5ncCAoY2FyIHYpKSAoc3RyaW5ncCAoY2RyIHYpKSkpKQorICA6dmVyc2lvbiAiMzEu
MSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmluZS1pY29uIG1hcmtkb3duLXRz
LWNoZWNrZWQtY2hlY2tib3gtaWNvbiBuaWwKKyAgJygoaW1hZ2UgImNoZWNrZWQuc3ZnIiA6aGVp
Z2h0IGxpbmUgOmFzY2VudCBjZW50ZXIpCisgICAgKHN5bWJvbCAi4piRIikKKyAgICAodGV4dCAi
KyIpKQorICAiSWNvbiB1c2VkIGZvciBhIGNoZWNrZWQgdGFzayBsaXN0IG1hcmtlciB3aGVuIG1h
cmt1cCBpcyBoaWRkZW4uCitDb25zdWx0ZWQgb25seSB3aGVuIGBtYXJrZG93bi10cy1jaGVja2Vk
LWNoZWNrYm94JyBpcyB0aGUgc3ltYm9sCitgaWNvbicuIgorICA6dmVyc2lvbiAiMzEuMSIpCisK
KyhkZWZjdXN0b20gbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94ICcoIuKYkCIgLiAiLSIp
CisgICJJZiBtYXJrdXAgaXMgaGlkZGVuLCBkaXNwbGF5IHRoaXMgZm9yIGFuIHVuY2hlY2tlZCB0
YXNrIGxpc3QgbWFya2VyLgorVmFsdWUgZm9ybXM6CisgLSBjb25zIChQUkVGRVJSRUQgLiBGQUxM
QkFDSyk6IFBSRUZFUlJFRCBpcyB1c2VkIGlmIGl0cyBmaXJzdCBjaGFyYWN0ZXIKKyAgIHBhc3Nl
cyBgY2hhci1kaXNwbGF5YWJsZS1wJywgb3RoZXJ3aXNlIEZBTExCQUNLLgorIC0gc3ltYm9sIGBp
Y29uJzogZGVmZXIgdG8gdGhlIGljb25zLmVsIGljb24KKyAgIGBtYXJrZG93bi10cy11bmNoZWNr
ZWQtY2hlY2tib3gtaWNvbic7IGN1c3RvbWl6ZSB2aWEKKyAgIFxcW2N1c3RvbWl6ZS1pY29uXS4K
KyAtIG5pbDogZGlzcGxheSB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjb25z
IChzdHJpbmcgOnRhZyAiUHJlZmVycmVkIChHVUkpIikKKyAgICAgICAgICAgICAgICAgICAgICAg
KHN0cmluZyA6dGFnICJGYWxsYmFjayAoVFRZKSIpKQorICAgICAgICAgICAgICAgICAoY29uc3Qg
OnRhZyAiVXNlIGljb25zLmVsIGljb24iIGljb24pCisgICAgICAgICAgICAgICAgIChjb25zdCA6
dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnNhZmUgKGxhbWJkYSAodikg
KG9yIChudWxsIHYpCisgICAgICAgICAgICAgICAgICAgICAgICAoZXEgdiAnaWNvbikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIChhbmQgKGNvbnNwIHYpIChzdHJpbmdwIChjYXIgdikpIChzdHJp
bmdwIChjZHIgdikpKSkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIx
LjAiKQorCisoZGVmaW5lLWljb24gbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94LWljb24g
bmlsCisgICcoKGltYWdlICJ1bmNoZWNrZWQuc3ZnIiA6aGVpZ2h0IGxpbmUgOmFzY2VudCBjZW50
ZXIpCisgICAgKHN5bWJvbCAi4piQIikKKyAgICAodGV4dCAiLSIpKQorICAiSWNvbiB1c2VkIGZv
ciBhbiB1bmNoZWNrZWQgdGFzayBsaXN0IG1hcmtlciB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitD
b25zdWx0ZWQgb25seSB3aGVuIGBtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2tib3gnIGlzIHRo
ZSBzeW1ib2wKK2BpY29uJy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1c3RvbSBtYXJr
ZG93bi10cy10aGVtYXRpYy1icmVhay1jaGFyYWN0ZXIgJyg/4pSAIC4gPy0pCisgICJJZiBtYXJr
dXAgaXMgaGlkZGVuLCBkaXNwbGF5IHRoaXMgY2hhcmFjdGVyIGZvciB0aGVtYXRpYyBicmVha3Mu
CitJdCBpcyByZXBlYXRlZCB0byBmaWxsIHRoZSB3aW5kb3cgd2lkdGguCitUaGUgdmFsdWUgaXMg
YSBjb25zIChQUkVGRVJSRUQgLiBGQUxMQkFDSyk6IFBSRUZFUlJFRCBpcyB1c2VkIGlmIGl0IHBh
c3NlcworYGNoYXItZGlzcGxheWFibGUtcCcsIG90aGVyd2lzZSBGQUxMQkFDSyBpcyB1c2VkLgor
bmlsIGRpc3BsYXlzIHRoZSByYXcgbWFya3VwLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnMgKGNo
YXJhY3RlciA6dGFnICJQcmVmZXJyZWQgKEdVSSkiKQorICAgICAgICAgICAgICAgICAgICAgICAo
Y2hhcmFjdGVyIDp0YWcgIkZhbGxiYWNrIChUVFkpIikpCisgICAgICAgICAgICAgICAgIChjb25z
dCA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnNhZmUgKGxhbWJkYSAo
dikgKG9yIChudWxsIHYpCisgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChjb25zcCB2KSAo
Y2hhcmFjdGVycCAoY2FyIHYpKSAoY2hhcmFjdGVycCAoY2RyIHYpKSkpKQorICA6dmVyc2lvbiAi
MzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10
cy1oYXJkLWxpbmUtYnJlYWstYmFja3NsYXNoICcoP8K2IC4gP3wpCisgICJJZiBtYXJrdXAgaXMg
aGlkZGVuLCBkaXNwbGF5IHRoaXMgY2hhcmFjdGVyIGZvciBhIGJhY2tzbGFzaCBoYXJkIGxpbmUg
YnJlYWsuCitUaGUgdmFsdWUgaXMgYSBjb25zIChQUkVGRVJSRUQgLiBGQUxMQkFDSyk6IFBSRUZF
UlJFRCBpcyB1c2VkIGlmIGl0IHBhc3NlcworYGNoYXItZGlzcGxheWFibGUtcCcsIG90aGVyd2lz
ZSBGQUxMQkFDSyBpcyB1c2VkLgorbmlsIGtlZXBzIHRoZSByYXcgbWFya3VwLiIKKyAgOnR5cGUg
JyhjaG9pY2UgKGNvbnMgKGNoYXJhY3RlciA6dGFnICJQcmVmZXJyZWQgKEdVSSkiKQorICAgICAg
ICAgICAgICAgICAgICAgICAoY2hhcmFjdGVyIDp0YWcgIkZhbGxiYWNrIChUVFkpIikpCisgICAg
ICAgICAgICAgICAgIChjb25zdCA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkK
KyAgOnNhZmUgKGxhbWJkYSAodikgKG9yIChudWxsIG5pbCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIChhbmQgKGNvbnNwIHYpIChjaGFyYWN0ZXJwIChjYXIgdikpIChjaGFyYWN0ZXJwIChjZHIg
dikpKSkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCiso
ZGVmY3VzdG9tIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZQorICAobGFtYmRhIChu
KQorICAgIChsZXQqICgodmFsIChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVlCisg
ICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpKQor
ICAgICAgICAgICAoY2ggKGlmIChjaGFyYWN0ZXJwIHZhbCkgdmFsID98KSkpCisgICAgICAobWFr
ZS1zdHJpbmcgbiBjaCkpKQorICAiSWYgbWFya3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGZv
ciBhIHRyYWlsaW5nLXNwYWNlcyBoYXJkIGxpbmUgYnJlYWsuCitUaGUgdmFsdWUgY2FuIGJlOgor
LSBhIGNoYXJhY3RlciBvciBzdHJpbmc6IHNob3duIG9uY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0
cmFpbGluZyBzcGFjZXMsCisgIHdpdGggbm8gcmVwZXRpdGlvbiAodGhlIHJlbWFpbmluZyBzcGFj
ZXMgc3RheSBpbnZpc2libGUpOworLSBhIGZ1bmN0aW9uOiBjYWxsZWQgd2l0aCBvbmUgYXJndW1l
bnQsIHRoZSBudW1iZXIgb2YgdHJhaWxpbmcgc3BhY2VzLAorICBhbmQgbXVzdCByZXR1cm4gdGhl
IHN0cmluZyB0byBkaXNwbGF5IGluIHBsYWNlIG9mIHRoZSBydW47CistIG5pbDoga2VlcCB0aGUg
cmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjaGFyYWN0ZXIgOnRhZyAiRGlzcGxheSBz
cGVjaWZpZWQgY2hhcmFjdGVyIChubyByZXBldGl0aW9uKSIpCisgICAgICAgICAgICAgICAgIChz
dHJpbmcgOnRhZyAiRGlzcGxheSBzcGVjaWZpZWQgc3RyaW5nIChubyByZXBldGl0aW9uKSIpCisg
ICAgICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJGdW5jdGlvbiBmcm9tIGNvdW50IHRvIGRp
c3BsYXkgc3RyaW5nIikKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkRpc3BsYXkgb3Jp
Z2luYWwgbWFya3VwIiBuaWwpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lv
biAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1mb250aWZ5LWNvZGUtYmxvY2tzLW5h
dGl2ZWx5IHQKKyAgIk5vbi1uaWwgbWVhbnMgZm9udGlmeSBjb2RlIGJsb2NrIGNvbnRlbnRzIHVz
aW5nIHRoZSBsYW5ndWFnZSdzIG1vZGUuCitXaGVuIG5vbi1uaWwsIGZlbmNlZCBjb2RlIGJsb2Nr
cyBhcmUgaGlnaGxpZ2h0ZWQgd2l0aCBzeW50YXggb2YgdGhlCitlbWJlZGRlZCBsYW5ndWFnZSAo
dmlhIHRyZWUtc2l0dGVyIGZvciBsYW5ndWFnZXMgd2l0aCBhIHRyZWUtc2l0dGVyCittb2RlLCBv
ciB2aWEgY29udmVudGlvbmFsIGZvbnQtbG9jayBmb3IgdGhlIHJlc3QpLiAgV2hlbiBuaWwsIGNv
ZGUKK2Jsb2NrcyBrZWVwIG9ubHkgdGhlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrJyBiYWNrZ3Jv
dW5kIGZhY2UuICBUb2dnbGluZworZm9yIHRoZSB0cy1lbWJlZGRlZCBwYXRoIHRha2VzIGVmZmVj
dCBhZnRlciByZXN0YXJ0aW5nCitgbWFya2Rvd24tdHMtbW9kZScgaW4gdGhlIGJ1ZmZlci4iCisg
IDp0eXBlICdib29sZWFuCisgIDpzYWZlICMnYm9vbGVhbnAKKyAgOnZlcnNpb24gIjMxLjEiCisg
IDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZW5hYmxl
LWNvZGUtYmxvY2stY29udGV4dC1tb2RlIHQKKyAgIk5vbi1uaWwgZW5hYmxlcyBgbWFya2Rvd24t
dHMtY29kZS1ibG9jay1jb250ZXh0LW1vZGUnIGludGVncmF0aW9uLgorV2hlbiBub24tbmlsLCBw
b2ludCBlbnRlcmluZyBhIGZlbmNlZCBjb2RlIGJsb2NrIGFjdGl2YXRlcyBhIG1pbm9yCittb2Rl
IHRoYXQgc3dhcHMgdGhlIGtleW1hcCBhbmQgZGlzcGF0Y2hlcyBlbGlnaWJsZSBjb21tYW5kcyB0
byB0aGUKK2Jsb2NrJ3MgbWFqb3IgbW9kZSB2aWEgYW4gaW5kaXJlY3QgYnVmZmVyLiAgU2V0IHRv
IG5pbCB0byBkaXNhYmxlCit0aGlzIGJlaGF2aW9yIGVudGlyZWx5OyB0aGUgbWlub3IgbW9kZSB3
aWxsIG5vdCBiZSBlbmFibGVkIGFuZAorYG1hcmtkb3duLXRzLW1vZGUnIGJpbmRpbmdzIHJlbWFp
biBhY3RpdmUgaW5zaWRlIGNvZGUgYmxvY2tzLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOnNhZmUg
Iydib29sZWFucAorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikK
KworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1kZWZhdWx0LWNvZGUtYmxvY2stbW9kZSAndGV4dC1t
b2RlCisgICJEZWZhdWx0IG1vZGUgZm9yIGFub255bW91cyBjb2RlIGJsb2Nrcy4iCisgIDp0eXBl
ICcoY2hvaWNlCisgICAgICAgICAgKGNvbnN0ICA6dGFnICJUZXh0IG1vZGUiIHRleHQtbW9kZSkK
KyAgICAgICAgICAoY29uc3QgIDp0YWcgIkZ1bmRhbWVudGFsIG1vZGUiIGZ1bmRhbWVudGFsLW1v
ZGUpCisgICAgICAgICAgKHN5bWJvbCA6dGFnICJPdGhlciBtb2RlIHN5bWJvbCIKKyAgICAgICAg
ICAgICAgICAgIDp2YWxpZGF0ZSAobGFtYmRhICh3aWQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAobGV0ICgodmFsICh3aWRnZXQtdmFsdWUgd2lkKSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICh1bmxlc3MgKGFuZCB2YWwgKGVxICdzeW1ib2wgKHR5cGUtb2YgdmFs
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpZGdldC1wdXQgd2lkIDpl
cnJvciAiTXVzdCBiZSBhIG5vbi1uaWwgc3ltYm9sIikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aWQpKSkpKQorICA6c2FmZSAjJ3N5bWJvbHAKKyAgOnZlcnNpb24gIjMxLjEi
CisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKzs7OyBGYWNlczoKIAogKGRlZmdyb3VwIG1h
cmtkb3duLXRzLWZhY2VzIG5pbAotICAiRmFjZXMgdXNlZCBpbiBNYXJrZG93biBUUyBNb2RlLiIK
KyAgIkZhY2VzIHVzZWQgYnkgTWFya2Rvd24tVFMuIgogICA6Z3JvdXAgJ21hcmtkb3duLXRzLWZh
Y2VzCiAgIDpncm91cCAnZmFjZXMpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWRlbGltaXRlciAn
KCh0ICg6aW5oZXJpdCBzaGFkb3cpKSkKLSAgIkZhY2UgZm9yIHRoZSAjIGJlZm9yZSBNYXJrZG93
biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3IgdGhlICMgYmVmb3JlIE1hcmtkb3duIGhlYWRpbmdz
LiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTEg
JygodCAoOmluaGVyaXQgb3V0bGluZS0xKSkpCi0gICJGYWNlIGZvciBmaXJzdCBsZXZlbCBNYXJr
ZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3IgZmlyc3QgbGV2ZWwgTWFya2Rvd24gaGVhZGlu
Z3MuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLXNldGV4dC1o
ZWFkaW5nICcoKHQgKDppbmhlcml0IG1hcmtkb3duLXRzLWhlYWRpbmctMSkpKQotICAiRmFjZSBm
b3Igc2V0ZXh0IE1hcmtkb3duIGhlYWRpbmdzIChoZWFkaW5ncyB1bmRlcmxpbmVkIGJ5ID09PSBv
ciAtLS0pLiIpCisgICJGYWNlIGZvciBzZXRleHQgTWFya2Rvd24gaGVhZGluZ3MgKGhlYWRpbmdz
IHVuZGVybGluZWQgYnkgPT09IG9yIC0tLSkuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZm
YWNlIG1hcmtkb3duLXRzLWhlYWRpbmctMiAnKCh0ICg6aW5oZXJpdCBvdXRsaW5lLTIpKSkKLSAg
IkZhY2UgZm9yIHNlY29uZCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBmb3Ig
c2Vjb25kIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAo
ZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTMgJygodCAoOmluaGVyaXQgb3V0bGluZS0zKSkp
Ci0gICJGYWNlIGZvciB0aGlyZCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFjZSBm
b3IgdGhpcmQgbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAK
IChkZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctNCAnKCh0ICg6aW5oZXJpdCBvdXRsaW5lLTQp
KSkKLSAgIkZhY2UgZm9yIGZvdXJ0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAiRmFj
ZSBmb3IgZm91cnRoIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMxLjEi
KQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTUgJygodCAoOmluaGVyaXQgb3V0bGlu
ZS01KSkpCi0gICJGYWNlIGZvciBmaWZ0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAi
RmFjZSBmb3IgZmlmdGggbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAiMzEu
MSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctNiAnKCh0ICg6aW5oZXJpdCBvdXRs
aW5lLTYpKSkKLSAgIkZhY2UgZm9yIHNpeHRoIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIpCisg
ICJGYWNlIGZvciBzaXh0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iCisgIDp2ZXJzaW9uICIz
MS4xIikKIAotKGRlZmZhY2UgbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIgJygodCAoOmluaGVyaXQg
c2hhZG93KSkpCi0gICJGYWNlIGZvciBNYXJrZG93biBsaXN0IG1hcmtlcnMgbGlrZSAtIGFuZCAq
LiIpCisoZGVmZmFjZSBtYXJrZG93bi10cy1lbXBoYXNpcyAnKCh0ICg6aW5oZXJpdCBpdGFsaWMp
KSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGVtcGhhc2lzIChpdGFsaWMpIHRleHQuIgorICA6dmVy
c2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWJvbGQgJygodCAoOmluaGVyaXQg
Ym9sZCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gc3Ryb25nIGVtcGhhc2lzIChib2xkKSB0ZXh0
LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1zdHJpa2V0aHJv
dWdoICcoKHQgKDpzdHJpa2UtdGhyb3VnaCB0KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBzdHJp
a2V0aHJvdWdoIHRleHQuIgorICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZmYWNlIG1hcmtkb3du
LXRzLWJsb2NrLXF1b3RlICcoKHQgKDppbmhlcml0IGl0YWxpYykpKQotICAiRmFjZSBmb3IgTWFy
a2Rvd24gYmxvY2sgcXVvdGVzLiIpCisgICJGYWNlIGZvciBNYXJrZG93biBibG9jayBxdW90ZXMu
IgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWxpbmsgJygodCAo
OmluaGVyaXQgbGluaykpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gbGluayB0ZXh0IGFuZCBpbWFn
ZSBkZXNjcmlwdGlvbnMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3du
LXRzLWxpbmstZGVzdGluYXRpb24gJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1mYWNl
KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBsaW5rIGRlc3RpbmF0aW9ucyAoVVJMcykuIgorICA6
dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWNvZGUtc3BhbiAnKCh0ICg6
aW5oZXJpdCBmb250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGlu
bGluZSBjb2RlIHNwYW5zLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93
bi10cy1jb2RlLWJsb2NrICcoKHQgKDpleHRlbmQgdCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24g
ZmVuY2VkIGNvZGUgYmxvY2sgY29udGVudC4KK0FsdGVyIHRoaXMgZmFjZSB0byBhZGQgYSBgOmJh
Y2tncm91bmQnIGZvciBhIHZpc3VhbGx5IGRpc3RpbmN0Citjb2RlIGJsb2NrIHJlZ2lvbiwgZS5n
LjoKKyAgKHNldC1mYWNlLWF0dHJpYnV0ZSBcXD0nbWFya2Rvd24tdHMtY29kZS1ibG9jayBuaWwg
OmJhY2tncm91bmQgXCJncmF5OTVcIikiCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2Ug
bWFya2Rvd24tdHMtY29kZS1ibG9jay1tYXJrdXAtaGlkZGVuCisgICcoKCgoYmFja2dyb3VuZCBs
aWdodCkpICg6YmFja2dyb3VuZCAiZ3JheTk1IiA6ZXh0ZW5kIHQpKQorICAgICgoKGJhY2tncm91
bmQgZGFyaykpICAoOmJhY2tncm91bmQgImdyYXkxNSIgOmV4dGVuZCB0KSkpCisgICJGYWNlIGZv
ciBNYXJrZG93biBmZW5jZWQgY29kZSBibG9jayBjb250ZW50IHdoZW4gbWFya3VwIGlzIGhpZGRl
bi4KK1VzZWQgaW5zdGVhZCBvZiBgbWFya2Rvd24tdHMtY29kZS1ibG9jaycgd2hlbiBgbWFya2Rv
d24tdHMtaGlkZS1tYXJrdXAnCitpcyBub24tbmlsLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCiso
ZGVmZmFjZSBtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2NrICcoKHQgKDppbmhlcml0IGZv
bnQtbG9jay1zdHJpbmctZmFjZSkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gaW5kZW50ZWQgY29k
ZSBibG9ja3MuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWh0
bWwtdGFnICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1kb2MtbWFya3VwLWZhY2UpKSkKKyAgIkZh
Y2UgZm9yIGlubGluZSBIVE1MIHRhZ3MgaW4gTWFya2Rvd24uIgorICA6dmVyc2lvbiAiMzEuMSIp
CisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWh0bWwtYmxvY2sgJygodCAoOmluaGVyaXQgZm9udC1s
b2NrLWRvYy1tYXJrdXAtZmFjZSkpKQorICAiRmFjZSBmb3IgSFRNTCBibG9ja3MgaW4gTWFya2Rv
d24uIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLXRoZW1hdGlj
LWJyZWFrICcoKHQgKDppbmhlcml0IHNoYWRvdyA6ZXh0ZW5kIHQpKSkKKyAgIkZhY2UgZm9yIE1h
cmtkb3duIHRoZW1hdGljIGJyZWFrcyAoaG9yaXpvbnRhbCBydWxlcykuCitDdXN0b21pemUgdGhp
cyBmYWNlIHRvIGFkZCBhIDpiYWNrZ3JvdW5kIGZvciBhIGZ1bGwtd2lkdGggdmlzdWFsIHJ1bGUu
IgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWVudGl0eS1yZWZl
cmVuY2UgJygodCAoOmluaGVyaXQgZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSkpKQorICAiRmFjZSBm
b3IgbmFtZWQgSFRNTCBlbnRpdHkgcmVmZXJlbmNlcyBsaWtlICZhbXA7IGFuZCAmY29weTsuIgor
ICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLW51bWVyaWMtY2hhcmFj
dGVyLXJlZmVyZW5jZQorICAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stZXNjYXBlLWZhY2UpKSkK
KyAgIkZhY2UgZm9yIG51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgbGlrZSAmIzY1OyBhbmQg
JiN4NDE7LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1sYXRl
eCAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2UgZm9yIExh
VGVYIC8gbWF0aCBjb250ZW50IGluIE1hcmtkb3duICgkLi4uJCBhbmQgJCQuLi4kJCkuIgorICA6
dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlLWhlYWRlciAnKCh0
ICg6aW5oZXJpdCAoYm9sZCBmb250LWxvY2stZG9jLWZhY2UpKSkpCisgICJGYWNlIGZvciBNYXJr
ZG93biBwaXBlIHRhYmxlIGhlYWRlciBjZWxscy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRl
ZmZhY2UgbWFya2Rvd24tdHMtdGFibGUtY2VsbCAnKCh0ICg6aW5oZXJpdCBkZWZhdWx0KSkpCisg
ICJGYWNlIGZvciBNYXJrZG93biBwaXBlIHRhYmxlIGRhdGEgY2VsbHMuIgorICA6dmVyc2lvbiAi
MzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlLWRlbGltaXRlci1jZWxsICcoKHQg
KDppbmhlcml0IGZvbnQtbG9jay1kb2MtZmFjZSkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gcGlw
ZSB0YWJsZSBkZWxpbWl0ZXIgY2VsbHMgKC0tLSBzZXBhcmF0b3JzKS4iCisgIDp2ZXJzaW9uICIz
MS4xIikKIAogKGRlZmZhY2UgbWFya2Rvd24tdHMtbGFuZ3VhZ2Uta2V5d29yZCAnKCh0ICg6aW5o
ZXJpdCBmb250LWxvY2sta2V5d29yZC1mYWNlKSkpCi0gICJGYWNlIGZvciB0aGUgbGFuZ3VhZ2Ug
a2V5d29yZCBmb3IgTWFya2Rvd24gY29kZSBibG9ja3MuIikKKyAgIkZhY2UgZm9yIHRoZSBsYW5n
dWFnZSBrZXl3b3JkIGZvciBNYXJrZG93biBjb2RlIGJsb2Nrcy4iCisgIDp2ZXJzaW9uICIzMS4x
IikKIAotOzs7IEZvbnQtbG9jaworKGRlZmZhY2UgbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIgJygo
dCAoOmluaGVyaXQgc2hhZG93KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBsaXN0IG1hcmtlcnMg
bGlrZSAtIGFuZCAqLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10
cy1oYXJkLWxpbmUtYnJlYWstYmFja3NsYXNoCisgICcoKHQgKDppbmhlcml0IG91dGxpbmUtNCA6
d2VpZ2h0IGJvbGQpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGhhcmQgbGluZSBicmVha3MgaW50
cm9kdWNlZCBieSBhIHRyYWlsaW5nIGJhY2tzbGFzaC4iCisgIDp2ZXJzaW9uICIzMS4xIikKKwor
KGRlZmZhY2UgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaC1oaWRkZW4KKyAg
JygodCAoOmluaGVyaXQgb3V0bGluZS00IDp3ZWlnaHQgYm9sZCkpKQorICAiRmFjZSBmb3IgdHJh
aWxpbmctYmFja3NsYXNoIGhhcmQgbGluZSBicmVhayB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uIgor
ICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVh
ay1zcGFjZQorICAnKCgoKGJhY2tncm91bmQgbGlnaHQpKSAoOmJhY2tncm91bmQgImdyYXk3MCIg
OndlaWdodCBib2xkKSkKKyAgICAoKChiYWNrZ3JvdW5kIGRhcmspKSAgKDpiYWNrZ3JvdW5kICJn
cmF5NDAiIDp3ZWlnaHQgYm9sZCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gaGFyZCBsaW5lIGJy
ZWFrcyBpbnRyb2R1Y2VkIGJ5IHR3byB0cmFpbGluZyBzcGFjZXMuCitUaGUgdHJhaWxpbmcgc3Bh
Y2VzIGFyZSBvdGhlcndpc2UgaW52aXNpYmxlLCBzbyB0aGV5IGFyZSBzaG93biBhcyBhCitzaGFk
b3ctY29sb3JlZCBibG9jay4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rv
d24tdHMtaGFyZC1saW5lLWJyZWFrLXNwYWNlLWhpZGRlbgorICAnKCh0ICg6aW5oZXJpdCBvdXRs
aW5lLTQgOndlaWdodCBib2xkKSkpCisgICJGYWNlIGZvciB0cmFpbGluZy1zcGFjZXMgaGFyZCBs
aW5lIGJyZWFrIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4iCisgIDp2ZXJzaW9uICIzMS4xIikKKwor
KGRlZmZhY2UgbWFya2Rvd24tdHMtdGFzay11bmNoZWNrZWQgJygodCAoOmluaGVyaXQgbWFya2Rv
d24tdHMtbGlzdC1tYXJrZXIpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIHVuY2hlY2tlZCB0YXNr
IGxpc3QgbWFya2Vycy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24t
dHMtdGFzay1jaGVja2VkICcoKHQgKDppbmhlcml0IG1hcmtkb3duLXRzLWxpc3QtbWFya2VyKSkp
CisgICJGYWNlIGZvciBNYXJrZG93biBjaGVja2VkIHRhc2sgbGlzdCBtYXJrZXJzLiIKKyAgOnZl
cnNpb24gIjMxLjEiKQorCisodHJlZXNpdC1kZWNsYXJlLXVuYXZhaWxhYmxlLWZ1bmN0aW9ucykK
KworKGFkZC10by1saXN0CisgJ3RyZWVzaXQtbGFuZ3VhZ2Utc291cmNlLWFsaXN0CisgJyhtYXJr
ZG93bgorICAgImh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFtbWFycy90cmVlLXNp
dHRlci1tYXJrZG93biIKKyAgIDpjb21taXQgIjQxMzI4NTIzMWNlOGZhOGIxMWU3MDc0YmJlMjY1
YjQ4YWE3Mjc3ZjkiCisgICA6c291cmNlLWRpciAidHJlZS1zaXR0ZXItbWFya2Rvd24vc3JjIikK
KyB0KQorCisoYWRkLXRvLWxpc3QKKyAndHJlZXNpdC1sYW5ndWFnZS1zb3VyY2UtYWxpc3QKKyAn
KG1hcmtkb3duLWlubGluZQorICAgImh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1ncmFt
bWFycy90cmVlLXNpdHRlci1tYXJrZG93biIKKyAgIDpjb21taXQgIjQxMzI4NTIzMWNlOGZhOGIx
MWU3MDc0YmJlMjY1YjQ4YWE3Mjc3ZjkiCisgICA6c291cmNlLWRpciAidHJlZS1zaXR0ZXItbWFy
a2Rvd24taW5saW5lL3NyYyIpCisgdCkKKworOzs7IFZhcmlhYmxlczoKKworKGRlZnZhciBtYXJr
ZG93bi10cy0tc2V0LXVwLWlubGluZSBuaWwKKyAgIkxldCBiaW5kIHRoaXMgdG8gbm9uLW5pbCBm
b3IgaW5saW5lIGBtYXJrZG93bi10cy1tb2RlJyBidWZmZXJzLiIpCisKKyhkZWZ2YXIgbWFya2Rv
d24tdHMtY29kZS1ibG9jay1tb2RlcworICBgKChzaCBiYXNoLXRzLW1vZGUpCisgICAgKHNoZWxs
IGJhc2gtdHMtbW9kZSkKKyAgICAoLChpbnRlcm4gImMjIikgY3NoYXJwLXRzLW1vZGUpCisgICAg
KGNwcCBjKystdHMtbW9kZSkKKyAgICAoZWwgZW1hY3MtbGlzcC1tb2RlKQorICAgIChlbGlzcCBl
bWFjcy1saXNwLW1vZGUpCisgICAgKGdvbGFuZyBnby10cy1tb2RlKQorICAgIChnb21vZCBnby1t
b2QtdHMtbW9kZSkKKyAgICAoZ293b3JrIGdvLXdvcmstdHMtbW9kZSkKKyAgICAoamF2YXNjcmlw
dCBqcy10cy1tb2RlKQorICAgIChtZCBtYXJrZG93bi10cy1tb2RlKQorICAgIChweSBweXRob24t
dHMtbW9kZSkKKyAgICAocmIgcnVieS10cy1tb2RlKQorICAgIChycyBydXN0LXRzLW1vZGUpCisg
ICAgKHRleCBsYXRleC1tb2RlKQorICAgICh0cyB0eXBlc2NyaXB0LXRzLW1vZGUpCisgICAgKHlt
bCB5YW1sLXRzLW1vZGUpKQorICAiRXh0cmEgbWFwcGluZ3MgZnJvbSBjb2RlIGJsb2NrIGxhbmd1
YWdlIHRhZ3MgdG8gbWFqb3IgbW9kZXMuCisKK0VudHJpZXMgaGVyZSBhcmUgb25seSBuZWVkZWQg
d2hlbiB0aGUgbGFuZ3VhZ2UgdGFnIGluIGEgZmVuY2VkIGNvZGUKK2Jsb2NrIGRvZXMgTk9UIG1h
dGNoIHRoZSBjb252ZW50aW9uYWwgbW9kZSBuYW1lIGRlcml2YXRpb24sIGUuZy4gdGhlCit1c2Vy
IHdyaXRlcyBcXD1gXFw9YFxcPWB0cyBpbnN0ZWFkIG9mIFxcPWBcXD1gXFw9YHR5cGVzY3JpcHQs
IG9yCitcXD1gXFw9YFxcPWBweSBpbnN0ZWFkIG9mIFxcPWBcXD1gXFw9YHB5dGhvbi4gIEZvciB0
YWdzIHRoYXQgYWxyZWFkeQorcmVzb2x2ZSB2aWEgdGhlIHN0YW5kYXJkIFwiLXRzLW1vZGVcIi9c
Ii1tb2RlXCIgaGV1cmlzdGljcyB0aGVyZSBpcyBubworbmVlZCB0byBhZGQgYW4gZW50cnkuCisK
K1RoZSBhbGlzdCBpcyBvZiB0aGUgZm9ybSAoTEFOR1VBR0UgTUFKT1ItTU9ERSkuIE1BSk9SLU1P
REUgY2FuIGJlIGEKK3RyZWUtc2l0dGVyIG9yIGEgY29udmVudGlvbmFsIG1vZGUuCisKK0lmIHlv
dSBwcmVmZXIgYSBjb252ZW50aW9uYWwgbW9kZSBvdmVyIGl0cyB0cmVlLXNpdHRlciB2YXJpYW50
LCBhZGQgb3IKK3JlcGxhY2UgcmVsZXZhbnQgZW50cmllcy4gIEZvciBleGFtcGxlOgorCisgICAg
KGFkZC10by1saXN0IFxcPSdtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzCisgICAgICBcXD0n
KHB5dGhvbiBweXRob24tbW9kZSkpCisgICAgKHNldGYgKGFsaXN0LWdldCBcXD0ncHkgbWFya2Rv
d24tdHMtY29kZS1ibG9jay1tb2RlcykKKyAgICAgICAgICBcXD0nKHB5dGhvbi1tb2RlKSkKKwor
Q29kZSBibG9ja3MgZm9yIHRoYXQgbm9uIHRyZWUtc2l0dGVyIG1vZGVzIHdpbGwgYmUgZm9udGlm
aWVkIHVzaW5nIHRoZQorbW9kZSdzIGNvbnZlbnRpb25hbCBmb250LWxvY2sgcnVsZXMuIikKKwor
KGRlZnZhciBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWZvcmNlLWNvbnZlbnRpb25hbC1tb2Rlcwor
ICAnKG1hcmtkb3duLXRzLW1vZGUKKyAgICBwaHAtdHMtbW9kZSkKKyAgIlRyZWF0IHRoZXNlIGNv
ZGUgYmxvY2sgdHJlZS1zaXR0ZXIgbW9kZXMgYXMgY29udmVudGlvbmFsLgorU29tZSBtb2RlcyB0
aGF0IGVtYmVkIG11bHRpcGxlIGB0cmVlc2l0JyBwYXJzZXJzIG5lZWQgdG8gYmUgdHJlYXRlZCB3
aXRoCitjb252ZW50aW9uYWwgZm9udC1sb2NrLiAgYG1hcmtkb3duLXRzLW1vZGUnIGl0c2VsZiBp
cyBvbmUgb2YgdGhlbS4iKQorCis7OzsgRm9udC1sb2NrOgogCiAoZGVmdW4gbWFya2Rvd24tdHMt
LWZvbnRpZnktZGVsaW1pdGVyIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQogICAi
Rm9udGlmeSBkZWxpbWl0ZXIgTk9ERSBhbmQgb3B0aW9uYWxseSBoaWRlIGl0cyBtYXJrdXAuCkBA
IC0xNjgsMjMgKzU4Miw4MDYgQEAgbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyCiAgICAg
KHB1dC10ZXh0LXByb3BlcnR5ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQtbm9k
ZS1lbmQgbm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rvd24t
dHMtLW1hcmt1cCkpKQogCisoZGVmdmFyIHVybC1tYWlsLWNvbW1hbmQpIDsgdXJsL3VybC12YXJz
LmVsCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbWFrZS1saW5rLWJ1dHRvbiAoYmVnIGVuZCB1cmwp
CisgICJNYWtlIHRoZSByZWdpb24gZnJvbSBCRUcgdG8gRU5EIGEgY2xpY2thYmxlIGJ1dHRvbiBm
b3IgVVJMLgorRm9yIG1haWx0bzogVVJJcywgdXNlIGB1cmwtbWFpbC1jb21tYW5kJy4gIEZvciBv
dGhlciBzY2hlbWVzCitcKGUuZy4sIGh0dHAsIGZ0cCksIG9wZW4gd2l0aCBgYnJvd3NlLXVybCcu
ICBPdGhlcndpc2UsIHRyZWF0IGFzCithIHJlbGF0aXZlIGZpbGUgcGF0aCBhbmQgb3BlbiB3aXRo
IGBmaW5kLWZpbGUnLgorCitEbyBub3QgcGFzcyBgZmFjZScgdG8gYG1ha2UtdGV4dC1idXR0b24n
OiB0aGUgbGluayBmYWNlIGlzIGFscmVhZHkKK2FwcGxpZWQgYnkgYG1hcmtkb3duLXRzLS1mb250
aWZ5LWxpbmstbm9kZScgdmlhCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnICh3aXRo
IGA6b3ZlcnJpZGUgYXBwZW5kJyksIGFuZAorYGFkZC10ZXh0LXByb3BlcnRpZXMnIHdvdWxkIG90
aGVyd2lzZSByZXBsYWNlIHRoZSBhcHBlbmRlZCBmYWNlCitsaXN0IHdpdGggYSBzaW5nbGUgYG1h
cmtkb3duLXRzLWxpbmsnLCBjbG9iYmVyaW5nIGFuIGVuY2xvc2luZworaGVhZGluZyBmYWNlLiIK
KyAgOzsgTk9URTogVVJJIHNjaGVtZSBhbmQgaG9zdCBuYW1lIGFyZSBjYXNlLWluc2Vuc2l0aXZl
IHBlciBSRkMgMzk4NgorICA7OyBhbmQgUkZDIDcyMzAuCisgIChsZXQgKChjYXNlLWZvbGQtc2Vh
cmNoIG5pbCkpCisgICAgKG1ha2UtdGV4dC1idXR0b24gYmVnIGVuZAorICAgICAgICAgICAgICAg
ICAgICAgICdhY3Rpb24gKGxhbWJkYSAoX2J1dHRvbikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3RyaW5n
LXByZWZpeC1wICIjIiB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1h
cmtkb3duLXRzLS1mb2xsb3ctZnJhZ21lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHN1YnN0cmluZyB1cmwgMSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKChzdHJpbmctbWF0Y2gtcCAiXFxgbWFpbHRvOiIgdXJsKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChmdW5jYWxsIHVybC1tYWlsLWNvbW1hbmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBtYWlsdG86IiAi
IiB1cmwpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3RyaW5nLW1hdGNo
LXAgIlxcYFthLXpdKzoiIHVybCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YnJvd3NlLXVybCB1cmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQgKGZp
bmQtZmlsZSB1cmwpKSkpCisgICAgICAgICAgICAgICAgICAgICAgJ2hlbHAtZWNobyB1cmwpKSkK
KworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstZGVzdGluYXRpb24gKG5vZGUgb3Zl
cnJpZGUgc3RhcnQgZW5kICZyZXN0IF8pCisgICJGb250aWZ5IGxpbmsgZGVzdGluYXRpb24gTk9E
RSBhbmQgaGlkZSBpdCB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFu
ZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJp
ZGUnLiIKKyAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisgICAodHJlZXNpdC1ub2Rl
LXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAnbWFya2Rvd24tdHMtbGlu
ay1kZXN0aW5hdGlvbiBvdmVycmlkZSBzdGFydCBlbmQpCisgICh3aGVuIG1hcmtkb3duLXRzLWhp
ZGUtbWFya3VwCisgICAgKHB1dC10ZXh0LXByb3BlcnR5ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9k
ZSkgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlz
aWJsZSAnbWFya2Rvd24tdHMtLW1hcmt1cCkpKQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRz
LS1saW5rLXJlZi1jYWNoZSBuaWwKKyAgIkNhY2hlZCBhbGlzdCBvZiAoTEFCRUwgLiBVUkwpIGZy
b20gbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbnMuCitFYWNoIGVudHJ5IGlzIGEgY29ucyBjZWxs
IG1hcHBpbmcgYSBkb3duY2FzZWQgbGFiZWwgc3RyaW5nIHRvIGl0cworZGVzdGluYXRpb24gVVJM
LiIpCisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlLXRpY2sgbmls
CisgICJWYWx1ZSBvZiBgYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2snIHdoZW4gdGhlIGNhY2hl
IHdhcyBidWlsdC4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxpbmstcmVmLWRlZmluaXRpb25z
ICgpCisgICJSZXR1cm4gYW4gYWxpc3Qgb2YgKExBQkVMIC4gVVJMKSBmcm9tIGxpbmsgcmVmZXJl
bmNlIGRlZmluaXRpb25zLgorTEFCRUwgaXMgZG93bmNhc2VkIGZvciBjYXNlLWluc2Vuc2l0aXZl
IG1hdGNoaW5nLiAgUmVzdWx0cyBhcmUKK2NhY2hlZCBhbmQgcmVidWlsdCBvbmx5IHdoZW4gdGhl
IGJ1ZmZlciBjaGFuZ2VzLiIKKyAgKGxldCAoKHRpY2sgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10
aWNrKSkpCisgICAgKHVubGVzcyAoZXEgdGljayBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUt
dGljaykKKyAgICAgIChsZXQqICgocm9vdCAodHJlZXNpdC1idWZmZXItcm9vdC1ub2RlICdtYXJr
ZG93bikpCisgICAgICAgICAgICAgKG1hdGNoZXMgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAg
ICAgICAgICAgICAgICAgICAgICByb290CisgICAgICAgICAgICAgICAgICAgICAgICcoKGxpbmtf
cmVmZXJlbmNlX2RlZmluaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmtfbGFi
ZWwpIEBsYWJlbAorICAgICAgICAgICAgICAgICAgICAgICAgICAobGlua19kZXN0aW5hdGlvbikg
QGRlc3QpKSkpCisgICAgICAgICAgICAgZGVmcykKKyAgICAgICAgKHdoaWxlIG1hdGNoZXMKKyAg
ICAgICAgICAobGV0KiAoKGxhYmVsLXBhaXIgKHBvcCBtYXRjaGVzKSkKKyAgICAgICAgICAgICAg
ICAgKGRlc3QtcGFpciAocG9wIG1hdGNoZXMpKQorICAgICAgICAgICAgICAgICAobGJsLXRleHQg
KHN0cmluZy10cmltICh0cmVlc2l0LW5vZGUtdGV4dCAoY2RyIGxhYmVsLXBhaXIpIHQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcWyIgIlxcXSIpKSkKKyAgICAg
ICAgICAgIChwdXNoIChjb25zIChkb3duY2FzZSBsYmwtdGV4dCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCAoY2RyIGRlc3QtcGFpcikgdCkpCisgICAgICAgICAg
ICAgICAgICBkZWZzKSkpCisgICAgICAgIChzZXRxIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNo
ZSAobnJldmVyc2UgZGVmcykKKyAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNh
Y2hlLXRpY2sgdGljaykpKQorICAgIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZSkpCisKKyhk
ZWZ1biBtYXJrZG93bi10cy0tcmVzb2x2ZS1saW5rLXJlZiAobGFiZWwpCisgICJSZXNvbHZlIExB
QkVMIHRvIGEgVVJMIHZpYSBsaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9ucy4KK0xBQkVMIHNob3Vs
ZCBiZSB0aGUgdGV4dCB3aXRob3V0IGJyYWNrZXRzLiAgTWF0Y2hpbmcgaXMKK2Nhc2UtaW5zZW5z
aXRpdmUgcGVyIENvbW1vbk1hcmsgc3BlYyBzZWN0aW9uIDQuNy4iCisgIChhbGlzdC1nZXQgKGRv
d25jYXNlIGxhYmVsKSAobWFya2Rvd24tdHMtLWxpbmstcmVmLWRlZmluaXRpb25zKQorICAgICAg
ICAgICAgIG5pbCBuaWwgIydlcXVhbCkpCisKKzs7OyBGcmFnbWVudCBsaW5rczoKKworKGRlZmNv
bnN0IG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1Yi1zdHJpcC1yZQorICAiW11bIVwiIyQlJicoKSor
LC4vOjs8PT4/QFxcXmB7fH1+XSIKKyAgIlB1bmN0dWF0aW9uIHN0cmlwcGVkIGJ5IEdpdEh1Yidz
IGdoLXNsdWdnZXIgYmVmb3JlIGh5cGhlbmF0aW9uLiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t
c2x1Zy1naXRodWIgKHRleHQpCisgICJSZXR1cm4gdGhlIEdpdEh1Yi1mbGF2b3Igc2x1ZyBmb3Ig
aGVhZGluZyBURVhULgorTWlycm9ycyB0aGUgZ2gtc2x1Z2dlciBhbGdvcml0aG06IGxvd2VyY2Fz
ZSwgc3RyaXAgYSBmaXhlZAorcHVuY3R1YXRpb24gc2V0LCByZXBsYWNlIHNwYWNlcyB3aXRoIGh5
cGhlbnMuIgorICAobGV0KiAoKGxjIChkb3duY2FzZSB0ZXh0KSkKKyAgICAgICAgIChzdHJpcHBl
ZCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCisgICAgICAgICAgICAgICAgICAgIG1hcmtkb3du
LXRzLS1zbHVnLWdpdGh1Yi1zdHJpcC1yZSAiIiBsYykpKQorICAgIChyZXBsYWNlLXJlZ2V4cC1p
bi1zdHJpbmcgIltbOmJsYW5rOl1dIiAiLSIgc3RyaXBwZWQpKSkKKworKGRlZnVuIG1hcmtkb3du
LXRzLS1zbHVnLXBhbmRvYyAodGV4dCkKKyAgIlJldHVybiB0aGUgUGFuZG9jLWZsYXZvciBhdXRv
LWlkIHNsdWcgZm9yIGhlYWRpbmcgVEVYVC4KK01pcnJvcnMgUGFuZG9jJ3MgYWxnb3JpdGhtOiBk
cm9wIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBmaXJzdAorbGV0dGVyLCBrZWVwIGFscGhhbnVtZXJp
Y3MgYW5kIGBfLS4nLCBjb2xsYXBzZSB3aGl0ZXNwYWNlIHJ1bnMgdG8KK2h5cGhlbnMsIGxvd2Vy
Y2FzZS4gIEZhbGxzIGJhY2sgdG8gXCJzZWN0aW9uXCIgaWYgZW1wdHkuIgorICAobGV0KiAoKGxj
IChkb3duY2FzZSB0ZXh0KSkKKyAgICAgICAgIChmcm9tLWxldHRlciAoaWYgKHN0cmluZy1tYXRj
aCAiW1s6YWxwaGE6XV0iIGxjKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Vic3RyaW5n
IGxjIChtYXRjaC1iZWdpbm5pbmcgMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAiIikpCisg
ICAgICAgICAoa2VwdCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCisgICAgICAgICAgICAgICAg
IlteWzphbG51bTpdXy5cblx0WzpibGFuazpdLV0iICIiIGZyb20tbGV0dGVyKSkKKyAgICAgICAg
IChoeXBoZW5hdGVkIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIltbOmJsYW5rOl1cdFxuXSsi
ICItIiBrZXB0KSkKKyAgICAgICAgICh0cmltbWVkIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcg
Ii0rXFwnIiAiIiBoeXBoZW5hdGVkKSkpCisgICAgKGlmIChzdHJpbmctZW1wdHktcCB0cmltbWVk
KSAic2VjdGlvbiIgdHJpbW1lZCkpKQorCisoZGVmY29uc3QgbWFya2Rvd24tdHMtLWV4cGxpY2l0
LWlkLXJlCisgICJbIFx0XSp7WyBcdF0qI1xcKFtefSBcdF0rXFwpWyBcdF0qfVsgXHRdKlxcJyIK
KyAgIk1hdGNoIGEgUGFuZG9jLXN0eWxlIHRyYWlsaW5nIGB7I2lkfScgb24gYSBoZWFkaW5nIGxp
bmUuCitDYXB0dXJlIGdyb3VwIDEgaXMgdGhlIGV4cGxpY2l0IGlkLiIpCisKKyhkZWZ1biBtYXJr
ZG93bi10cy0taGVhZGluZy10ZXh0LWFuZC1pZCAocmF3KQorICAiU3BsaXQgUkFXIGhlYWRpbmcg
dGV4dCBpbnRvIChWSVNJQkxFIC4gRVhQTElDSVQtSUQpLgorRVhQTElDSVQtSUQgaXMgbm9uLW5p
bCBpZiBSQVcgZW5kcyB3aXRoIGEgUGFuZG9jLXN0eWxlIGB7I2lkfScsCitpbiB3aGljaCBjYXNl
IFZJU0lCTEUgaXMgUkFXIHdpdGggdGhhdCBzdWZmaXggcmVtb3ZlZC4iCisgIChpZiAoc3RyaW5n
LW1hdGNoIG1hcmtkb3duLXRzLS1leHBsaWNpdC1pZC1yZSByYXcpCisgICAgICAoY29ucyAoc3Vi
c3RyaW5nIHJhdyAwIChtYXRjaC1iZWdpbm5pbmcgMCkpCisgICAgICAgICAgICAobWF0Y2gtc3Ry
aW5nIDEgcmF3KSkKKyAgICAoY29ucyByYXcgbmlsKSkpCisKKyhkZWZ2YXItbG9jYWwgbWFya2Rv
d24tdHMtLWhlYWRpbmctaWQtY2FjaGUgbmlsCisgICJDYWNoZWQgaGFzaCB0YWJsZSBtYXBwaW5n
IGhlYWRpbmcgc2x1ZyBzdHJpbmdzIHRvIGJ1ZmZlciBwb3NpdGlvbnMuCitFYWNoIHZhbHVlIGlz
IHRoZSBidWZmZXIgcG9zaXRpb24gb2YgdGhlIHN0YXJ0IG9mIHRoZSBtYXRjaGluZworYGF0eF9o
ZWFkaW5nJyBvciBgc2V0ZXh0X2hlYWRpbmcnIG5vZGUuICBCdWlsdCBsYXppbHkgYnkKK2BtYXJr
ZG93bi10cy0taGVhZGluZy1pZHMnLCBpbnZhbGlkYXRlZCBieSBidWZmZXItdGljayBjaGFuZ2Uu
IikKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0taGVhZGluZy1pZC1jYWNoZS10aWNrIG5p
bAorICAiVmFsdWUgb2YgYGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrJyB3aGVuIHRoZSBoZWFk
aW5nLWlkIGNhY2hlIHdhcyBidWlsdC4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWJ1aWxkLWhl
YWRpbmctaWRzICgpCisgICJXYWxrIGFsbCBoZWFkaW5ncyBpbiB0aGUgYnVmZmVyIGFuZCByZXR1
cm4gYSBoYXNoIHRhYmxlLgorV2hpY2ggbWFwcyBlYWNoIHNsdWcgdG8gdGhlIGJ1ZmZlciBwb3Np
dGlvbiBvZiBpdHMgaGVhZGluZy4gIEVhY2gKK2hlYWRpbmcgY29udHJpYnV0ZXMgaXRzIEdpdEh1
YiBzbHVnLCBpdHMgUGFuZG9jIHNsdWcsIGFuZCBpdHMgZXhwbGljaXQKK2B7I2lkfScgaWYgcHJl
c2VudC4gIEJvdGggc2x1ZyBhbGdvcml0aG1zIGFyZSBzdG9yZWQgaW4gdGhlIHNhbWUgYnVmZmVy
CitiZWNhdXNlIGEgbWFya2Rvd24gZmlsZSBpcyBvZnRlbiBwcmV2aWV3ZWQgYnkgc2V2ZXJhbCBy
ZW5kZXJlcnMgKEdpdEh1Ygord2ViIFVJLCBQYW5kb2MsIG1kQm9vaywgSHVnbywgYW5kIHNvIG9u
KSBhbmQgdGhlIHNhbWUgc291cmNlIHNob3VsZAorcmVzb2x2ZSByZWdhcmRsZXNzIG9mIHdoaWNo
IG9uZSB0aGUgYXV0aG9yIHdyb3RlIHRoZSBsaW5rIGZvci4gIEZvciBtb3N0CitoZWFkaW5ncyB0
aGUgdHdvIGFsZ29yaXRobXMgcHJvZHVjZSB0aGUgc2FtZSBzbHVnIGFueXdheS4KK0R1cGxpY2F0
ZSBzbHVncyAod2l0aGluIG9uZSBhbGdvcml0aG0pIGFyZSBkaXNhbWJpZ3VhdGVkIGJ5IGFwcGVu
ZGluZworYC0xJywgYC0yJywgYW5kIHNvIG9uLCBpbiBkb2N1bWVudCBvcmRlciwgbWF0Y2hpbmcg
R2l0SHViJ3MgYmVoYXZpb3IuCitXaGVuIHR3byBkaXN0aW5jdCBoZWFkaW5ncyB3b3VsZCBvdGhl
cndpc2Ugc2hhcmUgYSBzbHVnLCB0aGUgZmlyc3QKK29jY3VycmVuY2UgaW4gZG9jdW1lbnQgb3Jk
ZXIgd2lucy4iCisgIChsZXQgKCh0YWJsZSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXF1YWwp
KQorICAgICAgICA7OyBQZXItYWxnb3JpdGhtIGRlZHVwZSBjb3VudGVyczogaG93IG1hbnkgdGlt
ZXMgdGhpcyBiYXNlIHNsdWcKKyAgICAgICAgOzsgaGFzIGJlZW4gc2VlbiBzbyBmYXIgaW4gZG9j
dW1lbnQgb3JkZXIuCisgICAgICAgIChnaC1jb3VudHMgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAj
J2VxdWFsKSkKKyAgICAgICAgKHBkLWNvdW50cyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXF1
YWwpKQorICAgICAgICAocm9vdCAodHJlZXNpdC1idWZmZXItcm9vdC1ub2RlICdtYXJrZG93bikp
KQorICAgIChkb2xpc3QgKGNhcCAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisgICAgICAgICAgICAg
ICAgICByb290CisgICAgICAgICAgICAgICAgICAnKCgoYXR4X2hlYWRpbmcpIEBoKQorICAgICAg
ICAgICAgICAgICAgICAoKHNldGV4dF9oZWFkaW5nKSBAaCkpKSkKKyAgICAgIChsZXQqICgobm9k
ZSAoY2RyIGNhcCkpCisgICAgICAgICAgICAgKHBvcyAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUp
KQorICAgICAgICAgICAgIChyYXcgKHN0cmluZy10cmltICh0cmVlc2l0LW5vZGUtdGV4dCBub2Rl
IHQpKSkKKyAgICAgICAgICAgICA7OyBTdHJpcCB0aGUgbGVhZGluZyBtYXJrZXIgKCMjIyBvciA9
PT09Ly0tLS0pLgorICAgICAgICAgICAgIDs7IEZvciBhdHgsIGRyb3AgbGVhZGluZyAjJ3MgYW5k
IGZvbGxvd2luZyBzcGFjZS4KKyAgICAgICAgICAgICA7OyBGb3Igc2V0ZXh0LCBkcm9wIHRoZSB0
cmFpbGluZyB1bmRlcmxpbmUgbGluZS4KKyAgICAgICAgICAgICAodGV4dCAoY29uZAorICAgICAg
ICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXFxgIytbIFx0XSpcXCguKj9cXClbIFx0XSoj
KlsgXHRdKlxcJyIgcmF3KQorICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmluZyAxIHJh
dykpCisgICAgICAgICAgICAgICAgICAgICgoc3RyaW5nLW1hdGNoICJcXGBcXCguKj9cXClcbls9
LV0rWyBcdF0qXFwnIiByYXcpCisgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDEg
cmF3KSkKKyAgICAgICAgICAgICAgICAgICAgKHQgcmF3KSkpCisgICAgICAgICAgICAgKHNwbGl0
IChtYXJrZG93bi10cy0taGVhZGluZy10ZXh0LWFuZC1pZCB0ZXh0KSkKKyAgICAgICAgICAgICAo
dmlzaWJsZSAoY2FyIHNwbGl0KSkKKyAgICAgICAgICAgICAoZXhwbGljaXQgKGNkciBzcGxpdCkp
KQorICAgICAgICA7OyBFeHBsaWNpdCB7I2lkfSB3aW5zIG91dHJpZ2h0OyBmaXJzdCBvY2N1cnJl
bmNlIGtlZXBzIGl0LgorICAgICAgICAod2hlbiAoYW5kIGV4cGxpY2l0IChub3QgKGdldGhhc2gg
ZXhwbGljaXQgdGFibGUpKSkKKyAgICAgICAgICAocHV0aGFzaCBleHBsaWNpdCBwb3MgdGFibGUp
KQorICAgICAgICA7OyBBdXRvIHNsdWdzIChHaXRIdWIgKyBQYW5kb2MpLCBkZWR1cGVkIHBlciBh
bGdvcml0aG0uCisgICAgICAgIChsZXQqICgoZ2gtYmFzZSAobWFya2Rvd24tdHMtLXNsdWctZ2l0
aHViIHZpc2libGUpKQorICAgICAgICAgICAgICAgKHBkLWJhc2UgKG1hcmtkb3duLXRzLS1zbHVn
LXBhbmRvYyB2aXNpYmxlKSkKKyAgICAgICAgICAgICAgIChnaC1uIChnZXRoYXNoIGdoLWJhc2Ug
Z2gtY291bnRzIDApKQorICAgICAgICAgICAgICAgKHBkLW4gKGdldGhhc2ggcGQtYmFzZSBwZC1j
b3VudHMgMCkpCisgICAgICAgICAgICAgICAoZ2gtaWQgKGlmICh6ZXJvcCBnaC1uKSBnaC1iYXNl
CisgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICIlcy0lZCIgZ2gtYmFzZSBnaC1uKSkp
CisgICAgICAgICAgICAgICAocGQtaWQgKGlmICh6ZXJvcCBwZC1uKSBwZC1iYXNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAoZm9ybWF0ICIlcy0lZCIgcGQtYmFzZSBwZC1uKSkpKQorICAgICAg
ICAgIChwdXRoYXNoIGdoLWJhc2UgKDErIGdoLW4pIGdoLWNvdW50cykKKyAgICAgICAgICAocHV0
aGFzaCBwZC1iYXNlICgxKyBwZC1uKSBwZC1jb3VudHMpCisgICAgICAgICAgOzsgRmlyc3Qtd3Jp
dGVyLXdpbnMgc28gZG9jdW1lbnQgb3JkZXIgdGllYnJlYWtzIGNvbGxpc2lvbnMuCisgICAgICAg
ICAgKHVubGVzcyAoZ2V0aGFzaCBnaC1pZCB0YWJsZSkgKHB1dGhhc2ggZ2gtaWQgcG9zIHRhYmxl
KSkKKyAgICAgICAgICAodW5sZXNzIChnZXRoYXNoIHBkLWlkIHRhYmxlKSAocHV0aGFzaCBwZC1p
ZCBwb3MgdGFibGUpKSkpKQorICAgIHRhYmxlKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1oZWFk
aW5nLWlkcyAoKQorICAiUmV0dXJuIHRoZSBoZWFkaW5nLWlkIGhhc2ggdGFibGUgZm9yIHRoZSBj
dXJyZW50IGJ1ZmZlci4KK0NhY2hlIGlzIHJlYnVpbHQgb25seSB3aGVuIGBidWZmZXItY2hhcnMt
bW9kaWZpZWQtdGljaycgaGFzIGFkdmFuY2VkCitzaW5jZSB0aGUgbGFzdCBjYWxsIChtaXJyb3Jz
IGBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUnKS4iCisgIChsZXQgKCh0aWNrIChidWZmZXIt
Y2hhcnMtbW9kaWZpZWQtdGljaykpKQorICAgICh1bmxlc3MgKGVxIHRpY2sgbWFya2Rvd24tdHMt
LWhlYWRpbmctaWQtY2FjaGUtdGljaykKKyAgICAgIChzZXRxIG1hcmtkb3duLXRzLS1oZWFkaW5n
LWlkLWNhY2hlIChtYXJrZG93bi10cy0tYnVpbGQtaGVhZGluZy1pZHMpCisgICAgICAgICAgICBt
YXJrZG93bi10cy0taGVhZGluZy1pZC1jYWNoZS10aWNrIHRpY2spKQorICAgIG1hcmtkb3duLXRz
LS1oZWFkaW5nLWlkLWNhY2hlKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb2xsb3ctZnJhZ21l
bnQgKGlkKQorICAiSnVtcCB0byB0aGUgaGVhZGluZyB3aG9zZSBzbHVnIG1hdGNoZXMgSUQgKHdp
dGhvdXQgbGVhZGluZyBgIycpLgorUHVzaGVzIHRoZSBtYXJrIGJlZm9yZSBtb3Zpbmcgc28gYEMt
dSBDLVNQQycgcmV0dXJucy4gIFNpZ25hbHMKK2B1c2VyLWVycm9yJyBpZiBubyBoZWFkaW5nIG1h
dGNoZXMuIgorICAoaWYtbGV0KiAoKHBvcyAoZ2V0aGFzaCBpZCAobWFya2Rvd24tdHMtLWhlYWRp
bmctaWRzKSkpKQorICAgICAgKHByb2duCisgICAgICAgIChwdXNoLW1hcmspCisgICAgICAgIChn
b3RvLWNoYXIgcG9zKQorICAgICAgICAocmVjZW50ZXIpKQorICAgICh1c2VyLWVycm9yICJObyBo
ZWFkaW5nIGZvciBmcmFnbWVudDogIyVzIiBpZCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZv
bnRpZnktaGVhZGluZyAobm9kZSBfb3ZlcnJpZGUgX3N0YXJ0IF9lbmQgJnJlc3QgXykKKyAgIkFw
cGx5IHRoZSBoZWFkaW5nIGZhY2UgdG8gTk9ERSdzIGZ1bGwgZXh0ZW50LgorVXNlIGBmb250LWxv
Y2stYXBwZW5kLXRleHQtcHJvcGVydHknIGRpcmVjdGx5IHNvIHRoZSBmYWNlIGlzIGFwcGxpZWQK
K2Fjcm9zcyB0aGUgZW50aXJlIGhlYWRpbmcgZXZlbiB3aGVuIGNoaWxkIHN1Yi1ub2RlcyAoZS5n
LiBhbiBpbmxpbmUKK2xpbmspIHdvdWxkIG90aGVyd2lzZSBwcmV2ZW50IHRoZSByZWd1bGFyIHRy
ZWUtc2l0dGVyIGZhY2UgcnVsZSBmcm9tCitjb3ZlcmluZyB0aGVtLgorCitGb3IgQVRYIGhlYWRp
bmdzLCBhbHNvIGZvbnRpZnkgYW55IG9wdGlvbmFsIHRyYWlsaW5nIGNsb3NpbmctYCMnCitzZXF1
ZW5jZSBhcyBhIGRlbGltaXRlci4gIFRoZSB0cmVlLXNpdHRlciBncmFtbWFyIGRvZXMgbm90IHBy
b2R1Y2UgYQorc2VwYXJhdGUgbm9kZSBmb3IgdGhlc2U7IHBlciBDb21tb25NYXJrIHRoZXkgYXJl
IGRlY29yYXRpdmUgYW5kCittdXN0IGJlIHByZWNlZGVkIGJ5IGEgc3BhY2Ugb3IgdGFiLiIKKyAg
KGxldCogKCh0eXBlICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSkKKyAgICAgICAgIChuLXN0YXJ0
ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAobi1lbmQgICAodHJlZXNpdC1u
b2RlLWVuZCBub2RlKSkKKyAgICAgICAgIChmYWNlIChjb25kCisgICAgICAgICAgICAgICAgKChl
cXVhbCB0eXBlICJzZXRleHRfaGVhZGluZyIpCisgICAgICAgICAgICAgICAgICdtYXJrZG93bi10
cy1zZXRleHQtaGVhZGluZykKKyAgICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAo
bGV0ICgobWFya2VyICh0cmVlc2l0LW5vZGUtY2hpbGQgbm9kZSAwKSkpCisgICAgICAgICAgICAg
ICAgICAgKGludGVybiAoZm9ybWF0ICJtYXJrZG93bi10cy1oZWFkaW5nLSVkIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJr
ZXIgdCkpKSkpKSkpKQorICAgIChmb250LWxvY2stYXBwZW5kLXRleHQtcHJvcGVydHkgbi1zdGFy
dCBuLWVuZCAnZmFjZSBmYWNlKQorICAgICh3aGVuIChzdHJpbmctcHJlZml4LXAgImF0eF8iIHR5
cGUpCisgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgKGdvdG8tY2hhciBuLWVuZCkKKyAg
ICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdFxuIiBuLXN0YXJ0KQorICAgICAgICAobGV0
ICgobGluZS1lbmQgKHBvaW50KSkpCisgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBc
dCIgbi1zdGFydCkKKyAgICAgICAgICAobGV0ICgodHJhaWxpbmctZW5kIChwb2ludCkpKQorICAg
ICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiMiIG4tc3RhcnQpCisgICAgICAgICAgICAo
bGV0ICgodHJhaWxpbmctc3RhcnQgKHBvaW50KSkpCisgICAgICAgICAgICAgICh3aGVuIChhbmQg
KDwgdHJhaWxpbmctc3RhcnQgdHJhaWxpbmctZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICg+IHRyYWlsaW5nLXN0YXJ0IG4tc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKG1l
bXEgKGNoYXItYmVmb3JlIHRyYWlsaW5nLXN0YXJ0KSAnKD9ccyA/XHQpKSkKKyAgICAgICAgICAg
ICAgICAoZm9udC1sb2NrLXByZXBlbmQtdGV4dC1wcm9wZXJ0eQorICAgICAgICAgICAgICAgICB0
cmFpbGluZy1zdGFydCB0cmFpbGluZy1lbmQKKyAgICAgICAgICAgICAgICAgJ2ZhY2UgJ21hcmtk
b3duLXRzLWRlbGltaXRlcikKKyAgICAgICAgICAgICAgICAod2hlbiBtYXJrZG93bi10cy1oaWRl
LW1hcmt1cAorICAgICAgICAgICAgICAgICAgOzsgQWxzbyBoaWRlIHRoZSBzcGFjZShzKSBwcmVj
ZWRpbmcgdGhlIGNsb3NlciBhbmQgYW55CisgICAgICAgICAgICAgICAgICA7OyB0cmFpbGluZyB3
aGl0ZXNwYWNlLCBzbyB0aGUgaGVhZGluZyBsb29rcyBjbGVhbi4KKyAgICAgICAgICAgICAgICAg
IChsZXQgKChoaWRlLXN0YXJ0IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHRyYWlsaW5nLXN0YXJ0KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IiBuLXN0
YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkpCisg
ICAgICAgICAgICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBoaWRlLXN0YXJ0IGxpbmUtZW5k
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtLW1hcmt1cCkp
KSkpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUgKG5vZGUg
b3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0IF8pCisgICJGb250aWZ5IGxpbmsgb3IgaW1hZ2UgdGV4
dCBOT0RFIGFzIGEgY2xpY2thYmxlIGJ1dHRvbi4KK1dvcmtzIGZvciBpbmxpbmUgbGlua3MsIHJl
ZmVyZW5jZSBsaW5rcywgc2hvcnRjdXQgbGlua3MsIGFuZAoraW1hZ2UgZGVzY3JpcHRpb25zLiAg
VGhlIFVSTCBpcyB0YWtlbiBmcm9tIGEgc2libGluZworYGxpbmtfZGVzdGluYXRpb24nIG5vZGUg
d2hlbiBwcmVzZW50LCBvciByZXNvbHZlZCBmcm9tIGEKK2xpbmsgcmVmZXJlbmNlIGRlZmluaXRp
b24sIG9yIHRoZSBub2RlIHRleHQgaXRzZWxmIGlzIHVzZWQgYXMKK2ZhbGxiYWNrLiAgT1ZFUlJJ
REUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlm
eS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQgKChwYXJlbnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQg
bm9kZSkpKQorICAgIDs7IFdoZW4gTk9ERSBpcyBhIGxpbmtfbGFiZWwgaW5zaWRlIGEgZnVsbF9y
ZWZlcmVuY2VfbGluayB0aGF0CisgICAgOzsgYWxzbyBoYXMgYSBsaW5rX3RleHQsIHNraXAgaXQs
IGxpbmtfdGV4dCBoYW5kbGVzIHRoYXQgbGluay4KKyAgICAodW5sZXNzIChhbmQgKHN0cmluZz0g
KHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpICJsaW5rX2xhYmVsIikKKyAgICAgICAgICAgICAgICAg
KHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgcGFyZW50ICJcXGBsaW5rX3RleHRcXCciKSkKKyAgICAg
ICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICAgICh0cmVlc2l0LW5vZGUtc3Rh
cnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkKKyAgICAgICAnbWFya2Rvd24tdHMtbGlu
ayBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgICAobGV0KiAoKGRlc3QgKHRyZWVzaXQtc2VhcmNo
LXN1YnRyZWUgcGFyZW50ICJcXGBsaW5rX2Rlc3RpbmF0aW9uXFwnIikpCisgICAgICAgICAgICAg
KHVybCAoaWYgZGVzdAorICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCBk
ZXN0IHQpCisgICAgICAgICAgICAgICAgICAgIDs7IFJlZmVyZW5jZSBsaW5rczogcmVzb2x2ZSB2
aWEgbGlua19sYWJlbCBvciBsaW5rX3RleHQuCisgICAgICAgICAgICAgICAgICAgIChsZXQqICgo
bGFiZWwtbm9kZSAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmVudCAiXFxgbGlua19sYWJlbFxcJyIpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGxhYmVsIChpZiBsYWJlbC1ub2RlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRleHQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1u
b2RlIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiXFxbIiAiXFxdIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVl
c2l0LW5vZGUtdGV4dCBub2RlIHQpKSkpCisgICAgICAgICAgICAgICAgICAgICAgKG9yIChtYXJr
ZG93bi10cy0tcmVzb2x2ZS1saW5rLXJlZiBsYWJlbCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGFiZWwpKSkpKQorICAgICAgICAobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24KKyAg
ICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkg
dXJsKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWF1dG9saW5rIChub2RlIG92
ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBhdXRvbGluayBOT0RFIChVUkkg
b3IgZW1haWwpIGFzIGEgY2xpY2thYmxlIGJ1dHRvbi4KK0ZvciBlbWFpbCBhdXRvbGlua3MsIHRo
ZSBVUkwgaXMgcHJlZml4ZWQgd2l0aCBcIm1haWx0bzpcIi4KK0FuZ2xlIGJyYWNrZXQgZGVsaW1p
dGVycyBhcmUgaGlkZGVuIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwg
YW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVy
cmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkK
KyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgIChp
bm5lciAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICgx
KyBub2RlLXN0YXJ0KSAoMS0gbm9kZS1lbmQpKSkKKyAgICAgICAgICh1cmwgKGlmIChzdHJpbmc9
ICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAiZW1haWxfYXV0b2xpbmsiKQorICAgICAgICAgICAg
ICAgICAgKGNvbmNhdCAibWFpbHRvOiIgaW5uZXIpCisgICAgICAgICAgICAgICAgaW5uZXIpKSkK
KyAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgbm9kZS1zdGFydCBub2Rl
LWVuZCAnbWFya2Rvd24tdHMtbGluayBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKG1hcmtkb3du
LXRzLS1tYWtlLWxpbmstYnV0dG9uIG5vZGUtc3RhcnQgbm9kZS1lbmQgdXJsKQorICAgICh3aGVu
IG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgICAocHV0LXRleHQtcHJvcGVydHkgbm9kZS1z
dGFydCAoMSsgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxl
ICdtYXJrZG93bi10cy0tbWFya3VwKQorICAgICAgKHB1dC10ZXh0LXByb3BlcnR5ICgxLSBub2Rl
LWVuZCkgbm9kZS1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJr
ZG93bi10cy0tbWFya3VwKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1y
ZWYtbGFiZWwgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0IF8pCisgICJGb250aWZ5IGxp
bmsgcmVmZXJlbmNlIGRlZmluaXRpb24gbGFiZWwgTk9ERSBhcyBhIGNsaWNrYWJsZSBidXR0b24u
CitUaGUgYnJhY2tldHMgYW5kIGNvbG9uIGFyZSBoaWRkZW4gd2hlbiBtYXJrdXAgaXMgaGlkZGVu
LgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVz
aXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNp
dC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5k
IG5vZGUpKQorICAgICAgICAgKHBhcmVudCAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkKKyAg
ICAgICAgIChkZXN0LW5vZGUgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgcGFyZW50ICJcXGBsaW5r
X2Rlc3RpbmF0aW9uXFwnIikpCisgICAgICAgICAodXJsICh3aGVuIGRlc3Qtbm9kZSAodHJlZXNp
dC1ub2RlLXRleHQgZGVzdC1ub2RlIHQpKSkpCisgICAgOzsgRm9udGlmeSB0aGUgbGFiZWwgdGV4
dCAoaW5zaWRlIGJyYWNrZXRzKS4KKyAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUK
KyAgICAgKDErIG5vZGUtc3RhcnQpICgxLSBub2RlLWVuZCkKKyAgICAgJ21hcmtkb3duLXRzLWxp
bmsgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIDs7IE1ha2UgaXQgYSBjbGlja2FibGUgYnV0dG9u
LgorICAgICh3aGVuIHVybAorICAgICAgKG1hcmtkb3duLXRzLS1tYWtlLWxpbmstYnV0dG9uICgx
KyBub2RlLXN0YXJ0KSAoMS0gbm9kZS1lbmQpIHVybCkpCisgICAgOzsgSGlkZSAiWyIgYmVmb3Jl
IGxhYmVsIGFuZCAiXTogIiBiZXR3ZWVuIGxhYmVsIGFuZCBkZXN0aW5hdGlvbi4KKyAgICAod2hl
biBtYXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUt
c3RhcnQgKDErIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJs
ZSAnbWFya2Rvd24tdHMtLW1hcmt1cCkKKyAgICAgIChsZXQgKChjb2xvbi1lbmQgKGlmIGRlc3Qt
bm9kZSAodHJlZXNpdC1ub2RlLXN0YXJ0IGRlc3Qtbm9kZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAoMSsgbm9kZS1lbmQpKSkpCisgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAoMS0gbm9k
ZS1lbmQpIGNvbG9uLWVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAn
bWFya2Rvd24tdHMtLW1hcmt1cCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1s
aW5rLXJlZi1kZXN0aW5hdGlvbiAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdCBfKQorICAi
Rm9udGlmeSBsaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9uIGRlc3RpbmF0aW9uIE5PREUgYW5kIGhp
ZGUgd2hlbiBtYXJrdXAgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNz
ZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgICh0cmVl
c2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAo
dHJlZXNpdC1ub2RlLWVuZCBub2RlKQorICAgJ21hcmtkb3duLXRzLWxpbmstZGVzdGluYXRpb24g
b3ZlcnJpZGUgc3RhcnQgZW5kKQorICAod2hlbiBtYXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAg
IChwdXQtdGV4dC1wcm9wZXJ0eSAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5v
ZGUtZW5kIG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3du
LXRzLS1tYXJrdXApKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1sYXRleC1ibG9jay12YWxpZC1w
IChub2RlKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgbGF0ZXggYmxvY2sgTk9ERSBpcyB3aXRoaW4g
YSBzaW5nbGUgaW5saW5lIHNjb3BlLgorVGhlIGdsb2JhbCBpbmxpbmUgcGFyc2VyIGNhbiBjcmVh
dGUgZmFsc2UgYGxhdGV4X2Jsb2NrJyBtYXRjaGVzCitzcGFubmluZyBhY3Jvc3MgcGFyYWdyYXBo
IGJvdW5kYXJpZXMuICBDaGVjayB0aGF0IHRoZSBvcGVuaW5nIGFuZAorY2xvc2luZyBkZWxpbWl0
ZXJzIHNoYXJlIHRoZSBzYW1lIG1hcmtkb3duIGBpbmxpbmUnIGFuY2VzdG9yLiIKKyAgKGxldCAo
KG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgKG5vZGUtZW5k
ICgxLSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkpKQorICAgICh3aGVuLWxldCogKChtZC1zdGFy
dCAodHJlZXNpdC1ub2RlLWF0IG5vZGUtc3RhcnQgJ21hcmtkb3duKSkKKyAgICAgICAgICAgICAg
ICAobWQtZW5kICh0cmVlc2l0LW5vZGUtYXQgbm9kZS1lbmQgJ21hcmtkb3duKSkKKyAgICAgICAg
ICAgICAgICAoaW5saW5lLXN0YXJ0ICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1kLXN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGxhbWJkYSAobikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAo
dHJlZXNpdC1ub2RlLXR5cGUgbikgImlubGluZSIpKSkpCisgICAgICAgICAgICAgICAgKGlubGlu
ZS1lbmQgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1kLWVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChuKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImlu
bGluZSIpKSkpKQorICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtc3RhcnQgaW5saW5lLXN0YXJ0
KQorICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgaW5saW5lLWVuZCkpKSkpCisKKyhk
ZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1sYXRleC1ibG9jayAobm9kZSBvdmVycmlkZSBzdGFy
dCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgbGF0ZXggYmxvY2sgTk9ERSBhbmQgaGlkZSBpdHMg
ZGVsaW1pdGVycyB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitTa2lwIGZvbnRpZmljYXRpb24gZm9y
IGZhbHNlIG1hdGNoZXMgdGhhdCBzcGFuIGFjcm9zcyBwYXJhZ3JhcGggYm91bmRhcmllcy4KK09W
RVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZv
bnRpZnktd2l0aC1vdmVycmlkZScuIgorICAod2hlbiAobWFya2Rvd24tdHMtLWxhdGV4LWJsb2Nr
LXZhbGlkLXAgbm9kZSkKKyAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAg
KHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKQorICAgICAn
bWFya2Rvd24tdHMtbGF0ZXggb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgICh3aGVuIG1hcmtkb3du
LXRzLWhpZGUtbWFya3VwCisgICAgICAoZG90aW1lcyAoaSAodHJlZXNpdC1ub2RlLWNoaWxkLWNv
dW50IG5vZGUpKQorICAgICAgICAobGV0ICgoY2hpbGQgKHRyZWVzaXQtbm9kZS1jaGlsZCBub2Rl
IGkpKSkKKyAgICAgICAgICAod2hlbiAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxkKSAi
bGF0ZXhfc3Bhbl9kZWxpbWl0ZXIiKQorICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5ICh0
cmVlc2l0LW5vZGUtc3RhcnQgY2hpbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHRyZWVzaXQtbm9kZS1lbmQgY2hpbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2ludmlzaWJsZSAnbWFya2Rvd24tdHMtLW1hcmt1cCkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3du
LXRzLS1mb250aWZ5LWJhY2tzbGFzaC1lc2NhcGUgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZy
ZXN0IF8pCisgICJGb250aWZ5IGJhY2tzbGFzaCBlc2NhcGUgTk9ERSwgaGlkaW5nIHRoZSBiYWNr
c2xhc2ggd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorU2tpcCBoaWRpbmcgaW5zaWRlIGBsYXRleF9i
bG9jaycgd2hlcmUgYmFja3NsYXNoZXMgYXJlIExhVGVYIHN5bnRheC4KK09WRVJSSURFLCBTVEFS
VCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1v
dmVycmlkZScuIgorICAobGV0ICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUp
KQorICAgICAgICAoaW4tbGF0ZXggKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSAodHJlZXNpdC1u
b2RlLXBhcmVudCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAibGF0ZXhfYmxvY2si
KSkpCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisgICAgIG5vZGUtc3RhcnQg
KDErIG5vZGUtc3RhcnQpCisgICAgICdtYXJrZG93bi10cy1kZWxpbWl0ZXIgb3ZlcnJpZGUgc3Rh
cnQgZW5kKQorICAgICh3aGVuIChhbmQgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAgKG5vdCBpbi1s
YXRleCkpCisgICAgICAocHV0LXRleHQtcHJvcGVydHkgbm9kZS1zdGFydCAoMSsgbm9kZS1zdGFy
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93bi10cy0tbWFy
a3VwKSkpKQorCisoZGVmdmFyIHNnbWwtY2hhci1uYW1lcykKKyhkZWNsYXJlLWZ1bmN0aW9uIG9y
Zy1lbnRpdHktZ2V0ICJvcmcvb3JnLWVudGl0aWVzLmVsIikKKworKGRlZnVuIG1hcmtkb3duLXRz
LS1kZWNvZGUtZW50aXR5ICh0ZXh0KQorICAiRGVjb2RlIEhUTUwgZW50aXR5IFRFWFQgKGUuZy4s
IFwiJmFtcDtcIikgdG8gaXRzIGNoYXJhY3RlciBzdHJpbmcuCitSZXR1cm4gdGhlIGRlY29kZWQg
c3RyaW5nLCBvciBuaWwgaWYgdGhlIGVudGl0eSBpcyB1bmtub3duLiIKKyAgKGNvbmQKKyAgIDs7
IE51bWVyaWMgaGV4ICYjeDFGNEE5OworICAgKChzdHJpbmctbWF0Y2ggIlxcYCYjeFxcKFtbOnhk
aWdpdDpdXStcXCk7XFwnIiB0ZXh0KQorICAgIChjaGFyLXRvLXN0cmluZyAoc3RyaW5nLXRvLW51
bWJlciAobWF0Y2gtc3RyaW5nIDEgdGV4dCkgMTYpKSkKKyAgIDs7IE51bWVyaWMgZGVjaW1hbCAm
IzEyMzsKKyAgICgoc3RyaW5nLW1hdGNoICJcXGAmI1xcKFtbOmRpZ2l0Ol1dK1xcKTtcXCciIHRl
eHQpCisgICAgKGNoYXItdG8tc3RyaW5nIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcg
MSB0ZXh0KSkpKQorICAgOzsgTmFtZWQgJmFtcDsgJmNvcHk7IHZpYSBvcmctZW50aXRpZXMsIGZh
bGwgYmFjayB0byBzZ21sLWNoYXItbmFtZXMKKyAgICgoc3RyaW5nLW1hdGNoICJcXGAmXFwoW1s6
YWxudW06XV0rXFwpO1xcJyIgdGV4dCkKKyAgICAobGV0ICgobmFtZSAobWF0Y2gtc3RyaW5nIDEg
dGV4dCkpKQorICAgICAgKHJlcXVpcmUgJ29yZy1lbnRpdGllcykKKyAgICAgIChpZi1sZXQqICgo
ZW50cnkgKG9yZy1lbnRpdHktZ2V0IG5hbWUpKQorICAgICAgICAgICAgICAgICh1dGY4IChudGgg
NiBlbnRyeSkpKQorICAgICAgICAgIHV0ZjgKKyAgICAgICAgKHJlcXVpcmUgJ3NnbWwtbW9kZSkK
KyAgICAgICAgKHdoZW4tbGV0KiAoKGNvZGUgKHNlcS1wb3NpdGlvbiBzZ21sLWNoYXItbmFtZXMg
bmFtZSAjJ2VxdWFsKSkpCisgICAgICAgICAgKGNoYXItdG8tc3RyaW5nIGNvZGUpKSkpKSkpCisK
KyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1lbnRpdHkgKG5vZGUgb3ZlcnJpZGUgc3RhcnQg
ZW5kICZyZXN0IF8pCisgICJGb250aWZ5IGVudGl0eSBOT0RFIGFuZCBzaG93IGl0cyBkZWNvZGVk
IHZhbHVlIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBh
cmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgor
ICAobGV0ICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAo
bm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgIChmYWNlIChpZiAoZXF1
YWwgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpICJlbnRpdHlfcmVmZXJlbmNlIikKKyAgICAgICAg
ICAgICAgICAgICdtYXJrZG93bi10cy1lbnRpdHktcmVmZXJlbmNlCisgICAgICAgICAgICAgICAg
J21hcmtkb3duLXRzLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSkpKQorICAgICh0cmVlc2l0
LWZvbnRpZnktd2l0aC1vdmVycmlkZSBub2RlLXN0YXJ0IG5vZGUtZW5kIGZhY2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChpZiBt
YXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAgICAgICAod2hlbi1sZXQqICgoZGVjb2RlZCAobWFy
a2Rvd24tdHMtLWRlY29kZS1lbnRpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0
cmVlc2l0LW5vZGUtdGV4dCBub2RlIHQpKSkKKyAgICAgICAgICAgICAgICAgICAgKChjaGFyLWRp
c3BsYXlhYmxlLXAgKGFyZWYgZGVjb2RlZCAwKSkpKQorICAgICAgICAgIChwdXQtdGV4dC1wcm9w
ZXJ0eSBub2RlLXN0YXJ0IG5vZGUtZW5kICdkaXNwbGF5IGRlY29kZWQpKQorICAgICAgKHJlbW92
ZS10ZXh0LXByb3BlcnRpZXMgbm9kZS1zdGFydCBub2RlLWVuZCAnKGRpc3BsYXkgbmlsKSkpKSkK
KworKGRlZnVuIG1hcmtkb3duLXRzLS1yZXNvbHZlLWRpc3BsYXktdmFsdWUgKHZhbCkKKyAgIlJl
c29sdmUgVkFMLCBhIGNvbnMgKFBSRUZFUlJFRCAuIEZBTExCQUNLKSwgdG8gYSBkaXNwbGF5YWJs
ZSB2YWx1ZS4KK1JldHVybiBQUkVGRVJSRUQgaWYgaXRzIGZpcnN0IGNoYXJhY3RlciBwYXNzZXMg
YGNoYXItZGlzcGxheWFibGUtcCcsCitvdGhlcndpc2UgcmV0dXJuIEZBTExCQUNLLiAgUmV0dXJu
IG5pbCBpZiBWQUwgaXMgbmlsLiIKKyAgKHdoZW4gdmFsCisgICAgKGxldCogKChwcmVmZXJyZWQg
KGNhciB2YWwpKQorICAgICAgICAgICAoY2ggKGlmIChjaGFyYWN0ZXJwIHByZWZlcnJlZCkgcHJl
ZmVycmVkIChhcmVmIHByZWZlcnJlZCAwKSkpKQorICAgICAgKGlmIChjaGFyLWRpc3BsYXlhYmxl
LXAgY2gpIChjYXIgdmFsKSAoY2RyIHZhbCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9u
dGlmeS1jaGVja2JveCAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRp
ZnkgdGFzayBsaXN0IGNoZWNrYm94IE5PREUsIHNob3cgYSBVbmljb2RlIHN5bWJvbCB3aGVuIG1h
cmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJv
dWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKGxldCogKChub2Rl
LXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAobm9kZS1lbmQgKHRy
ZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAoY2hlY2tlZCAoZXF1YWwgKHRyZWVzaXQt
bm9kZS10eXBlIG5vZGUpICJ0YXNrX2xpc3RfbWFya2VyX2NoZWNrZWQiKSkKKyAgICAgICAgIChm
YWNlIChpZiBjaGVja2VkICdtYXJrZG93bi10cy10YXNrLWNoZWNrZWQKKyAgICAgICAgICAgICAg
ICAgJ21hcmtkb3duLXRzLXRhc2stdW5jaGVja2VkKSkKKyAgICAgICAgICh2YWx1ZSAoaWYgY2hl
Y2tlZAorICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1jaGVja2VkLWNoZWNrYm94Cisg
ICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2tib3gpKQorICAgICAg
ICAgKHJlcGxhY2VtZW50CisgICAgICAgICAgKGNvbmQgKChlcSB2YWx1ZSAnaWNvbikKKyAgICAg
ICAgICAgICAgICAgKGljb24tc3RyaW5nIChpZiBjaGVja2VkCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3gtaWNvbgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94
LWljb24pKSkKKyAgICAgICAgICAgICAgICAodCAobWFya2Rvd24tdHMtLXJlc29sdmUtZGlzcGxh
eS12YWx1ZSB2YWx1ZSkpKSkKKyAgICAgICAgIDs7IElmIGBpY29uLXN0cmluZycgcmV0dXJuZWQg
YW4gaW1hZ2UsIGl0cyBgZGlzcGxheScgcHJvcGVydHkKKyAgICAgICAgIDs7IG9uIGNoYXIgMCBo
b2xkcyB0aGUgYWN0dWFsIGltYWdlIHNwZWM7IG5lc3RlZCBgZGlzcGxheScKKyAgICAgICAgIDs7
IHByb3BzIGFyZSBub3QgaG9ub3JlZCB3aGVuIGEgc3RyaW5nIGlzIHRoZSB2YWx1ZSBvZiBhCisg
ICAgICAgICA7OyBgZGlzcGxheScgdGV4dC1wcm9wZXJ0eSwgc28gYXBwbHkgdGhlIHNwZWMgZGly
ZWN0bHkuCisgICAgICAgICAoZGlzcGxheS1zcGVjCisgICAgICAgICAgKG9yIChhbmQgKGVxIHZh
bHVlICdpY29uKSByZXBsYWNlbWVudAorICAgICAgICAgICAgICAgICAgIChnZXQtdGV4dC1wcm9w
ZXJ0eSAwICdkaXNwbGF5IHJlcGxhY2VtZW50KSkKKyAgICAgICAgICAgICAgcmVwbGFjZW1lbnQp
KSkKKyAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUgbm9kZS1zdGFydCBub2RlLWVu
ZCBmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlIHN0YXJ0
IGVuZCkKKyAgICAoaWYgKGFuZCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCByZXBsYWNlbWVudAor
ICAgICAgICAgICAgIChvciAoZXEgdmFsdWUgJ2ljb24pCisgICAgICAgICAgICAgICAgIChjaGFy
LWRpc3BsYXlhYmxlLXAgKGFyZWYgcmVwbGFjZW1lbnQgMCkpKSkKKyAgICAgICAgKHB1dC10ZXh0
LXByb3BlcnR5IG5vZGUtc3RhcnQgbm9kZS1lbmQgJ2Rpc3BsYXkgZGlzcGxheS1zcGVjKQorICAg
ICAgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgbm9kZS1zdGFydCBub2RlLWVuZCAnKGRpc3BsYXkg
bmlsKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWhhcmQtbGluZS1icmVhayAo
bm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgaGFyZCBsaW5lIGJy
ZWFrIE5PREU7IHNob3cgYSBVbmljb2RlIHN5bWJvbCB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitB
IGJhY2tzbGFzaCBicmVhayBnZXRzIGBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstYmFja3Ns
YXNoJyAob3IgaXRzCitgLWhpZGRlbicgdmFyaWFudCB3aGVuIG1hcmt1cCBpcyBoaWRkZW4pOyBh
IHRyYWlsaW5nLXNwYWNlcyBicmVhayBnZXRzCitgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFr
LXNwYWNlJyAob3IgYC1oaWRkZW4nKS4gIFdoZW4gaGlkZGVuLCBhCitiYWNrc2xhc2ggYnJlYWsg
aXMgcmVwbGFjZWQgYnkgYSBzaW5nbGUgYG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhaycKK2ds
eXBoOyBhIHRyYWlsaW5nLXNwYWNlcyBicmVhayByZXBsYWNlcyBlYWNoIHNwYWNlIHdpdGggdGhl
IGdseXBoLCBzbyB0aGUgcnVuCitvZiBwaWxjcm93cyBmaWxscyB0aGUgbGluZSB1cCB0byB0aGUg
bmV3bGluZS4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8K
K2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQg
KHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVuZCAgICh0cmVlc2l0
LW5vZGUtZW5kIG5vZGUpKQorICAgICAgICAgKHRleHQgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0
IG5vZGUgdCkpCisgICAgICAgICAoYmFja3NsYXNoICAoYW5kICg+IChsZW5ndGggdGV4dCkgMCkg
KGVxIChhcmVmIHRleHQgMCkgP1xcKSkpCisgICAgICAgICA7OyBEZXRlcm1pbmUgdGhlIGFjdHVh
bCByYW5nZSB0byBmb250aWZ5IGFuZCByZXBsYWNlLiAgVGhlCisgICAgICAgICA7OyBoYXJkX2xp
bmVfYnJlYWsgbm9kZSBtYXkgbm90IGNvdmVyIHRoZSBmdWxsIHJ1biBvZiB0cmFpbGluZworICAg
ICAgICAgOzsgc3BhY2VzLCBzbyB3YWxrIGJhY2sgZnJvbSBlbmQtb2YtbGluZSBvdXJzZWx2ZXMg
Zm9yIHRoZQorICAgICAgICAgOzsgc3BhY2VzIHZhcmlhbnQuCisgICAgICAgICAocmVnaW9uICAg
ICAoaWYgYmFja3NsYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgbm9kZS1zdGFy
dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYW5kICg+IG5vZGUtZW5kIG5v
ZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxIChj
aGFyLWJlZm9yZSBub2RlLWVuZCkgP1xuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKDEtIG5vZGUtZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS1lbmQpKQorICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgKGxldCAoKGVvbCAobGluZS1lbmQtcG9zaXRpb24pKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChjb25zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZ290by1jaGFyIGVvbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgIiAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAocG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW9sKSkpKSkKKyAgICAgICAgIChyZWdpb24tc3RhcnQgKGNhciByZWdpb24pKQorICAg
ICAgICAgKHJlZ2lvbi1lbmQgICAoY2RyIHJlZ2lvbikpCisgICAgICAgICAoZmFjZSAgICAgICAo
Y29uZAorICAgICAgICAgICAgICAgICAgICAgICgoYW5kIGJhY2tzbGFzaCBtYXJrZG93bi10cy1o
aWRlLW1hcmt1cCkKKyAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWhhcmQtbGlu
ZS1icmVhay1iYWNrc2xhc2gtaGlkZGVuKQorICAgICAgICAgICAgICAgICAgICAgIChiYWNrc2xh
c2ggJ21hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpCisgICAgICAgICAgICAg
ICAgICAgICAgKG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgICAgICAgICAgICAgICAgICAg
ICdtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UtaGlkZGVuKQorICAgICAgICAgICAg
ICAgICAgICAgICh0ICdtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UpKSkpCisgICAg
KHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlIHJlZ2lvbi1zdGFydCByZWdpb24tZW5kIGZh
Y2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5k
KQorICAgIDs7IEFsd2F5cyBzdGFydCBieSBjbGVhcmluZyBhbnkgc3RhbGUgYGRpc3BsYXknIHBy
b3BlcnR5LiAgV2UgbmV2ZXIKKyAgICA7OyBzcGFuIHRoZSB0cmFpbGluZyBuZXdsaW5lIHdpdGgg
YGRpc3BsYXknIChpdCBjb25mdXNlcworICAgIDs7IHJlZGlzcGxheSdzIGN1cnNvciBwbGFjZW1l
bnQpLCBhbmQgd2Ugb25seSBwYWludCBhIHNpbmdsZQorICAgIDs7IGNvbWJpbmVkIHN0cmluZyBv
bnRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHJ1biwgbGVhdmluZworICAgIDs7IHRoZSBy
ZXN0IG9mIHRoZSBtYXJrdXAgYWxvbmUuCisgICAgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgcmVn
aW9uLXN0YXJ0IHJlZ2lvbi1lbmQgJyhkaXNwbGF5IG5pbCkpCisgICAgKHdoZW4gbWFya2Rvd24t
dHMtaGlkZS1tYXJrdXAKKyAgICAgIChsZXQqICgoc3BlYyAoaWYgYmFja3NsYXNoCisgICAgICAg
ICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVlCisgICAg
ICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstYmFja3NsYXNo
KQorICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLXNwYWNl
KSkKKyAgICAgICAgICAgICAoc3RyIChjb25kCisgICAgICAgICAgICAgICAgICAgKChudWxsIHNw
ZWMpIG5pbCkKKyAgICAgICAgICAgICAgICAgICAoKGNoYXJhY3RlcnAgc3BlYykgKGNoYXItdG8t
c3RyaW5nIHNwZWMpKQorICAgICAgICAgICAgICAgICAgICgoc3RyaW5ncCBzcGVjKSBzcGVjKQor
ICAgICAgICAgICAgICAgICAgICgoZnVuY3Rpb25wIHNwZWMpCisgICAgICAgICAgICAgICAgICAg
IChmdW5jYWxsIHNwZWMgKC0gcmVnaW9uLWVuZCByZWdpb24tc3RhcnQpKSkpKSkKKyAgICAgICAg
KHdoZW4gKGFuZCAoc3RyaW5ncCBzdHIpCisgICAgICAgICAgICAgICAgICAgKD4gKGxlbmd0aCBz
dHIpIDApCisgICAgICAgICAgICAgICAgICAgKGNoYXItZGlzcGxheWFibGUtcCAoYXJlZiBzdHIg
MCkpKQorICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSByZWdpb24tc3RhcnQgKDErIHJlZ2lv
bi1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXkgc3RyKQorICAg
ICAgICAgIDs7IEZvciB0aGUgdHJhaWxpbmctc3BhY2VzIHZhcmlhbnQsIGhpZGUgdGhlIHJlbWFp
bmluZworICAgICAgICAgIDs7IHNwYWNlcyBpbiB0aGUgcnVuIHNvIHRoZSBsaW5lIGRvZXNuJ3Qg
ZW5kIHdpdGggbGVmdG92ZXIKKyAgICAgICAgICA7OyB3aGl0ZXNwYWNlIGFmdGVyIHRoZSBzdWJz
dGl0dXRlZCBnbHlwaC4gIEVhY2ggcG9zaXRpb24KKyAgICAgICAgICA7OyBnZXRzIGl0cyBvd24g
ZW1wdHktc3RyaW5nIGBkaXNwbGF5JyBzbyBjdXJzb3IgcGxhY2VtZW50CisgICAgICAgICAgOzsg
c3RheXMgdW5hbWJpZ3VvdXMuCisgICAgICAgICAgKHVubGVzcyBiYWNrc2xhc2gKKyAgICAgICAg
ICAgIChsZXQgKChpICgxKyByZWdpb24tc3RhcnQpKSkKKyAgICAgICAgICAgICAgKHdoaWxlICg8
IGkgcmVnaW9uLWVuZCkKKyAgICAgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgaSAoMSsg
aSkgJ2Rpc3BsYXkgIiIpCisgICAgICAgICAgICAgICAgKHNldHEgaSAoMSsgaSkpKSkpKSkpKSkK
KworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LXRoZW1hdGljLWJyZWFrIChub2RlIG92ZXJy
aWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSB0aGVtYXRpYyBicmVhayBOT0RFIGFu
ZCBzaG93IGEgbGluZSB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFu
ZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJp
ZGUnLiIKKyAgKGxldCAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAg
ICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAgICAodHJlZXNpdC1m
b250aWZ5LXdpdGgtb3ZlcnJpZGUgbm9kZS1zdGFydCBub2RlLWVuZAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtdGhlbWF0aWMtYnJlYWsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChsZXQg
KChjaGFyIChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVlCisgICAgICAgICAgICAg
ICAgIG1hcmtkb3duLXRzLXRoZW1hdGljLWJyZWFrLWNoYXJhY3RlcikpKQorICAgICAgKGlmIChh
bmQgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAgY2hhciAoY2hhci1kaXNwbGF5YWJsZS1wIGNoYXIp
KQorICAgICAgICAgIChsZXQqICgoY29sIChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFyIG5vZGUt
c3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNv
bHVtbikpKQorICAgICAgICAgICAgICAgICA7OyBTcGFuIGlmIHRoZSBmYWNlIGhhcyBub24tbmls
IDpleHRlbmQuCisgICAgICAgICAgICAgICAgIChzcGFuLWxlbmd0aCAoaWYgKGZhY2UtYXR0cmli
dXRlICdtYXJrZG93bi10cy10aGVtYXRpYy1icmVhaworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ZXh0ZW5kIG5pbCAnZGVmYXVsdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoLSAod2luZG93LWJvZHktd2lkdGgpIGNvbCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIpKSkKKyAgICAgICAgICAgIChwdXQtdGV4
dC1wcm9wZXJ0eSBub2RlLXN0YXJ0IG5vZGUtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2Rpc3BsYXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXN0cmluZyBzcGFuLWxlbmd0aCBj
aGFyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iKSkpCisgICAgICAgIChy
ZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIG5vZGUtc3RhcnQgbm9kZS1lbmQgJyhkaXNwbGF5IG5pbCkp
KSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktY29kZS1ibG9jayAobm9kZSBfb3Zl
cnJpZGUgX3N0YXJ0IF9lbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgY29kZSBibG9jayBjb250ZW50
IE5PREUgd2l0aCBhIGJhY2tncm91bmQgb3ZlcmxheS4KK1VzZSBgbWFya2Rvd24tdHMtY29kZS1i
bG9jay1tYXJrdXAtaGlkZGVuJyB3aGVuIG1hcmt1cCBpcyBoaWRkZW4sCitgbWFya2Rvd24tdHMt
Y29kZS1ibG9jaycgb3RoZXJ3aXNlLiAgVXNlIGFuIG92ZXJsYXkgc28gdGhlCitiYWNrZ3JvdW5k
IGxheWVycyBpdHNlbGYgYmVoaW5kIGxhbmd1YWdlLXNwZWNpZmljIGZvbnRpZmljYXRpb24uCitU
aGUgb3ZlcmxheSBhbHNvIHN0b3JlcyB0aGUgY29kZSBibG9jayBsYW5ndWFnZSBhbmQgbW9kZSBh
cworcHJvcGVydGllcyBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZScgYW5kCitgbWFy
a2Rvd24tdHMtY29kZS1ibG9jay1tb2RlJywgYWNjZXNzaWJsZSB2aWEKK2BtYXJrZG93bi10cy1j
b2RlLWJsb2NrLWxhbmd1YWdlLWF0Jy4iCisgIChsZXQqICgobm9kZS1zdGFydCAoc2F2ZS1leGN1
cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0
YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAobGluZS1iZWdpbm5pbmctcG9zaXRp
b24pKSkKKyAgICAgICAgIChub2RlLWVuZCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAg
ICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAgICAg
ICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IikKKyAgICAgICAgICAgICAgICAgICAg
IChwb2ludCkpKQorICAgICAgICAgKGZhY2UgKGlmIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisg
ICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2stbWFya3VwLWhpZGRlbgor
ICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtY29kZS1ibG9jaykpCisgICAgICAgICAobGFu
ZyAobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUgbm9kZSkpCisgICAgICAgICAobW9kZSAo
d2hlbiBsYW5nCisgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5n
dWFnZS1tb2RlIGxhbmcpKSkKKyAgICAgICAgIChleGlzdGluZyAoc2VxLWZpbmQgKGxhbWJkYSAo
b3YpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG92ZXJsYXktZ2V0IG92ICdtYXJr
ZG93bi10cy1jb2RlLWJsb2NrKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG92ZXJs
YXlzLWF0IG5vZGUtc3RhcnQpKSkpCisgICAgKGlmIGV4aXN0aW5nCisgICAgICAgIChwcm9nbgor
ICAgICAgICAgIChtb3ZlLW92ZXJsYXkgZXhpc3Rpbmcgbm9kZS1zdGFydCBub2RlLWVuZCkKKyAg
ICAgICAgICAob3ZlcmxheS1wdXQgZXhpc3RpbmcgJ2ZhY2UgZmFjZSkKKyAgICAgICAgICAob3Zl
cmxheS1wdXQgZXhpc3RpbmcgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2UgbGFuZykK
KyAgICAgICAgICAob3ZlcmxheS1wdXQgZXhpc3RpbmcgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2st
bW9kZSBtb2RlKSkKKyAgICAgIChsZXQgKChvdiAobWFrZS1vdmVybGF5IG5vZGUtc3RhcnQgbm9k
ZS1lbmQgbmlsIHQgbmlsKSkpCisgICAgICAgIDs7IE1hcmtlcnMgbmVlZCB0byBiZSBzZXQgb25s
eSBvbmNlLgorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmVnLW1h
cmtlciAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtc3RhcnQpKQorICAg
ICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtZW5kLW1hcmtlciAoc2V0LW1h
cmtlciAobWFrZS1tYXJrZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtZW5kKSkKKyAgICAgICAgKG92ZXJsYXkt
cHV0IG92ICdtYXJrZG93bi10cy1jb2RlLWJsb2NrIHQpCisgICAgICAgIChvdmVybGF5LXB1dCBv
diAnZmFjZSBmYWNlKQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRzLWNvZGUt
YmxvY2stbGFuZ3VhZ2UgbGFuZykKKyAgICAgICAgKG92ZXJsYXktcHV0IG92ICdtYXJrZG93bi10
cy1jb2RlLWJsb2NrLW1vZGUgbW9kZSkKKyAgICAgICAgKG92ZXJsYXktcHV0IG92ICdldmFwb3Jh
dGUgdCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1hdC1jb2RlLWJsb2NrLXAgKCZvcHRpb25h
bCBwb3MpCisgICJSZXR1cm4gbm9uIG5pbCBpZiBwb2ludCBpcyBpbiBhIGNvZGUgYmxvY2suCitJ
ZiBQT1MgaXMgbmlsLCB1c2UgcG9pbnQuIgorICAoZ2V0LWNoYXItcHJvcGVydHkgKG9yIHBvcyAo
cG9pbnQpKSAnbWFya2Rvd24tdHMtY29kZS1ibG9jaykpCisKKyhkZWZ1biBtYXJrZG93bi10cy1j
b2RlLWJsb2NrLWxhbmd1YWdlLWF0ICgmb3B0aW9uYWwgcG9zKQorICAiUmV0dXJuIHRoZSBsYW5n
dWFnZSBzeW1ib2wgb2YgdGhlIGNvZGUgYmxvY2sgYXQgUE9TLgorSWYgUE9TIGlzIG5pbCwgdXNl
IHBvaW50LiAgUmV0dXJucyBuaWwgaWYgUE9TIGlzIG5vdCBpbnNpZGUgYSBmZW5jZWQKK2NvZGUg
YmxvY2suICBUaGlzIHdvcmtzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhIGd1ZXN0IHRyZWUtc2l0
dGVyIHBhcnNlcgoraXMgYWN0aXZlLCBzaW5jZSB0aGUgbGFuZ3VhZ2UgaXMgc3RvcmVkIG9uIHRo
ZSBjb2RlIGJsb2NrIG92ZXJsYXkgYnkgdGhlCitob3N0IHBhcnNlcidzIGZvbnRpZmljYXRpb24u
IgorICAoZ2V0LWNoYXItcHJvcGVydHkgKG9yIHBvcyAocG9pbnQpKSAnbWFya2Rvd24tdHMtY29k
ZS1ibG9jay1sYW5ndWFnZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUt
YXQgKCZvcHRpb25hbCBwb3MpCisgICJSZXR1cm4gdGhlIG1ham9yIG1vZGUgZm9yIHRoZSBjb2Rl
IGJsb2NrIGF0IFBPUy4KK0lmIFBPUyBpcyBuaWwsIHVzZSBwb2ludC4gIFJldHVybnMgbmlsIGlm
IFBPUyBpcyBub3QgaW5zaWRlIGEgZmVuY2VkCitjb2RlIGJsb2NrIG9yIGlmIHRoZSBsYW5ndWFn
ZSBoYXMgbm8gcmVjb2duaXplZCBtb2RlLiIKKyAgKHdoZW4gKG1hcmtkb3duLXRzLWF0LWNvZGUt
YmxvY2stcCBwb3MpCisgICAgKG9yIChnZXQtY2hhci1wcm9wZXJ0eSAob3IgcG9zIChwb2ludCkp
ICdtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUpCisgICAgICAgIG1hcmtkb3duLXRzLWRlZmF1
bHQtY29kZS1ibG9jay1tb2RlKSkpCisKKzs7OyBJbWFnZSBoYW5kbGluZzoKKworKGRlZnVuIG1h
cmtkb3duLXRzLS1pbWFnZS1hbG9uZS1vbi1saW5lLXAgKG5vZGUpCisgICJSZXR1cm4gbm9uLW5p
bCBpZiBpbWFnZSBOT0RFIGlzIHRoZSBvbmx5IGNvbnRlbnQgb24gaXRzIGxpbmUuCitXaGl0ZXNw
YWNlLCBibG9jayBxdW90ZSBtYXJrZXJzIChgPicpLCBhbmQgbGlzdCBtYXJrZXJzCitcKGAtJywg
YConLCBgKycsIGAxLicpIGJlZm9yZSB0aGUgaW1hZ2UgYXJlIGlnbm9yZWQuIgorICAobGV0ICgo
bm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1lbmQg
KHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpKQorICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKGdv
dG8tY2hhciBub2RlLXN0YXJ0KQorICAgICAgKGxldCAoKGJvbCAobGluZS1iZWdpbm5pbmctcG9z
aXRpb24pKQorICAgICAgICAgICAgKGVvbCAobGluZS1lbmQtcG9zaXRpb24pKSkKKyAgICAgICAg
OzsgQmVmb3JlIHRoZSBpbWFnZTogb25seSBibG9jayBxdW90ZSBtYXJrZXJzLCB3aGl0ZXNwYWNl
LAorICAgICAgICA7OyBhbmQgYW4gb3B0aW9uYWwgbGlzdCBtYXJrZXIgYXJlIGFsbG93ZWQuCisg
ICAgICAgIChhbmQgKHN0cmluZy1tYXRjaC1wCisgICAgICAgICAgICAgIChyeCBib3MKKyAgICAg
ICAgICAgICAgICAgICh6ZXJvLW9yLW1vcmUgKGFueSAiPiBcdCIpKQorICAgICAgICAgICAgICAg
ICAgKG9wdGlvbmFsIChvciAoc2VxIChhbnkgIi0qKyIpICIgIikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHNlcSAob25lLW9yLW1vcmUgZGlnaXQpIChhbnkgIi4pIiApICIgIikp
KQorICAgICAgICAgICAgICAgICAgZW9zKQorICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmlu
Zy1uby1wcm9wZXJ0aWVzIGJvbCBub2RlLXN0YXJ0KSkKKyAgICAgICAgICAgICA7OyBBZnRlciB0
aGUgaW1hZ2U6IG9ubHkgdHJhaWxpbmcgd2hpdGVzcGFjZSBhbGxvd2VkLgorICAgICAgICAgICAg
IChzdHJpbmctbWF0Y2gtcAorICAgICAgICAgICAgICAocnggYm9zICh6ZXJvLW9yLW1vcmUgKGFu
eSAiIFx0IikpIGVvcykKKyAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVy
dGllcyBub2RlLWVuZCBlb2wpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1p
bWFnZSAobm9kZSBfb3ZlcnJpZGUgX3N0YXJ0IF9lbmQgJnJlc3QgXykKKyAgIlNob3cgYW4gaW5s
aW5lIGltYWdlIGF0IE5PREUuCitXaGVuIGBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzJyBpcyBu
b24tbmlsLCBkaXNwbGF5IHRoZSBpbWFnZS4KK0lmIHRoZSBpbWFnZSBsaW5rIGlzIHRoZSBvbmx5
IGNvbnRlbnQgb24gaXRzIGxpbmUsIGRpc3BsYXkgdGhlCitpbWFnZSBiZWxvdyB0aGUgbGluay4g
IElmIHRoZSBpbWFnZSBpcyBpbmxpbmUgd2l0aGluIGEgcGFyYWdyYXBoLAorZGlzcGxheSBpdCBy
aWdodCBhZnRlciB0aGUgbGluayB0ZXh0LgorUmVtb3RlIGltYWdlcyBhcmUgY29udHJvbGxlZCBi
eQorYG1hcmtkb3duLXRzLWRpc3BsYXktcmVtb3RlLWlubGluZS1pbWFnZXMnLiIKKyAgKGxldCog
KChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAobm9kZS1l
bmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAoZW9sIChzYXZlLWV4Y3Vyc2lv
biAoZ290by1jaGFyIG5vZGUtZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxp
bmUtZW5kLXBvc2l0aW9uKSkpCisgICAgICAgICAoc2VhcmNoLWVuZCAobWluICgxKyBlb2wpIChw
b2ludC1tYXgpKSkpCisgICAgOzsgQWx3YXlzIGNsZWFyIHN0YWxlIG92ZXJsYXlzIGZvciB0aGlz
IG5vZGUncyByYW5nZS4KKyAgICAoZG9saXN0IChvdiAob3ZlcmxheXMtaW4gbm9kZS1zdGFydCBz
ZWFyY2gtZW5kKSkKKyAgICAgICh3aGVuIChhbmQgKG92ZXJsYXktZ2V0IG92ICdtYXJrZG93bi10
cy1pbWFnZSkKKyAgICAgICAgICAgICAgICAgKD49IChvdmVybGF5LXN0YXJ0IG92KSBub2RlLXN0
YXJ0KQorICAgICAgICAgICAgICAgICAoPD0gKG92ZXJsYXktZW5kIG92KSBzZWFyY2gtZW5kKSkK
KyAgICAgICAgKGRlbGV0ZS1vdmVybGF5IG92KSkpCisgICAgKHdoZW4gKGFuZCBtYXJrZG93bi10
cy1pbmxpbmUtaW1hZ2VzCisgICAgICAgICAgICAgICA7OyBEb24ndCBjcmVhdGUgaW1hZ2Ugb3Zl
cmxheXMgZm9yIG5vZGVzIGluc2lkZQorICAgICAgICAgICAgICAgOzsgZm9sZGVkIChvdXRsaW5l
LWludmlzaWJsZSkgaGVhZGluZ3MsIHNpbmNlIHRoZQorICAgICAgICAgICAgICAgOzsgaW1hZ2Vz
IHdvdWxkbid0IGJlIHZpc2libGUgYW5kIGNvdWxkIGludGVyZmVyZQorICAgICAgICAgICAgICAg
Ozsgd2l0aCB0aGUgZm9sZGVkIGRpc3BsYXkuCisgICAgICAgICAgICAgICAobm90IChtYXJrZG93
bi10cy0tb3V0bGluZS1pbnZpc2libGUtcCBub2RlLXN0YXJ0KSkpCisgICAgICAobGV0KiAoKGRl
c3QgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgbm9kZSAiXFxgbGlua19kZXN0aW5hdGlvblxcJyIp
KQorICAgICAgICAgICAgICh1cmwgKGFuZCBkZXN0ICh0cmVlc2l0LW5vZGUtdGV4dCBkZXN0IHQp
KSkKKyAgICAgICAgICAgICAocmVtb3RlcCAoYW5kIHVybCAoc3RyaW5nLW1hdGNoLXAgIlxcYGh0
dHBzPzovLyIgdXJsKSkpCisgICAgICAgICAgICAgKGRpc3BsYXlhYmxlCisgICAgICAgICAgICAg
ICh3aGVuIHVybAorICAgICAgICAgICAgICAgIChpZiByZW1vdGVwCisgICAgICAgICAgICAgICAg
ICAgICh3aGVuIChlcSBtYXJrZG93bi10cy1kaXNwbGF5LXJlbW90ZS1pbmxpbmUtaW1hZ2VzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG93bmxvYWQpCisgICAgICAgICAgICAgICAg
ICAgICAgKGlnbm9yZS1lcnJvcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1aXJlICd1
cmwtaGFuZGxlcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgbmlsKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAodXJsLWluc2VydC1maWxlLWNvbnRlbnRzIHVybCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdHJpbmcpKSkpCisgICAgICAgICAgICAg
ICAgICAobGV0ICgoZmlsZSAoZXhwYW5kLWZpbGUtbmFtZSB1cmwpKSkKKyAgICAgICAgICAgICAg
ICAgICAgKGFuZCAobm90IChmaWxlLXJlbW90ZS1wIGZpbGUpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgIChmaWxlLWV4aXN0cy1wIGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGlt
YWdlLXN1cHBvcnRlZC1maWxlLXAgZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBmaWxl
KSkpKSkKKyAgICAgICAgICAgICAobWF4LXcgKGFuZCBkaXNwbGF5YWJsZQorICAgICAgICAgICAg
ICAgICAgICAgICAgIChpZiAoZXEgbWFya2Rvd24tdHMtaW1hZ2UtbWF4LXdpZHRoICd3aW5kb3cp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aW5kb3ctYm9keS13aWR0aCBuaWwgdCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLWltYWdlLW1heC13aWR0aCkp
KQorICAgICAgICAgICAgIChpbWcgKGFuZCBtYXgtdworICAgICAgICAgICAgICAgICAgICAgICAo
Y3JlYXRlLWltYWdlIGRpc3BsYXlhYmxlIG5pbCByZW1vdGVwCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOm1heC13aWR0aCBtYXgtdworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDpzY2FsZSAxKSkpKQorICAgICAgICAod2hlbiBpbWcKKyAgICAgICAg
ICAobGV0KiAoKGFsb25lIChtYXJrZG93bi10cy0taW1hZ2UtYWxvbmUtb24tbGluZS1wIG5vZGUp
KQorICAgICAgICAgICAgICAgICAoc3RyIChpZiBhbG9uZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAoY29uY2F0ICJcbiIgKHByb3BlcnRpemUgIiAiICdkaXNwbGF5IGltZykpCisgICAgICAg
ICAgICAgICAgICAgICAgICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkgaW1nKSkpCisgICAgICAg
ICAgICAgICAgIChvdiAobWFrZS1vdmVybGF5ICgxLSBub2RlLWVuZCkgbm9kZS1lbmQgbmlsIHQg
bmlsKSkpCisgICAgICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRzLWltYWdlIHQp
CisgICAgICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ2FmdGVyLXN0cmluZyBzdHIpCisgICAgICAg
ICAgICAob3ZlcmxheS1wdXQgb3YgJ2V2YXBvcmF0ZSB0KSkpKSkpKQorCis7OzsgVVJML1VSSSBo
YW5kbGluZzoKKworKGRlZnZhciBtYXJrZG93bi10cy0tYmFyZS11cmwtcmVnZXhwIGdvdG8tYWRk
cmVzcy11cmwtcmVnZXhwCisgICJSZWdleHAgbWF0Y2hpbmcgYmFyZSBVUkxzIG5vdCB3cmFwcGVk
IGluIGFuZ2xlIGJyYWNrZXRzIG9yIGxpbmsgc3ludGF4LiIpCisKKyhkZWZ2YXIgbWFya2Rvd24t
dHMtLWJhcmUtZW1haWwtdXJpLXJlZ2V4cCBnb3RvLWFkZHJlc3MtbWFpbC1yZWdleHAKKyAgIlJl
Z2V4cCBtYXRjaGluZyBiYXJlIGVtYWlsIGFkZHJlc3NlcyBub3Qgd3JhcHBlZCBpbiBhbmdsZSBi
cmFja2V0cy4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktYmFyZS11cmkgKHN0YXJ0
IGVuZCkKKyAgIkZvbnRpZnkgYmFyZSBVUkwgb3IgZW1haWwgVVJJIGJldHdlZW4gU1RBUlQgYW5k
IEVORC4KK1NraXAgbWF0Y2hlcyBhbHJlYWR5IGluc2lkZSB0cmVlLXNpdHRlciBsaW5rIG9yIGF1
dG9saW5rIG5vZGVzLiIKKyAgKGRvbGlzdCAocmUgKGxpc3QgbWFya2Rvd24tdHMtLWJhcmUtdXJs
LXJlZ2V4cAorICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tYmFyZS1lbWFpbC11cmkt
cmVnZXhwKSkKKyAgICAoZ290by1jaGFyIHN0YXJ0KQorICAgICh3aGlsZSAocmUtc2VhcmNoLWZv
cndhcmQgcmUgZW5kIHQpCisgICAgICAobGV0KiAoKHVyaS1zdGFydCAobWF0Y2gtYmVnaW5uaW5n
IDApKQorICAgICAgICAgICAgICh1cmktZW5kIChtYXRjaC1lbmQgMCkpCisgICAgICAgICAgICAg
KHVyaSAobWF0Y2gtc3RyaW5nIDApKQorICAgICAgICAgICAgIChub2RlICh0cmVlc2l0LW5vZGUt
YXQgdXJpLXN0YXJ0ICdtYXJrZG93bi1pbmxpbmUpKQorICAgICAgICAgICAgIChwYXJlbnQgKGFu
ZCBub2RlICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKSkKKyAgICAgICAgICAgICAocGFyZW50
LXR5cGUgKGFuZCBwYXJlbnQgKHRyZWVzaXQtbm9kZS10eXBlIHBhcmVudCkpKSkKKyAgICAgICAg
KHVubGVzcyAob3IgKG1lbWJlciBwYXJlbnQtdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcoImlubGluZV9saW5rIiAiZnVsbF9yZWZlcmVuY2VfbGluayIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJjb2xsYXBzZWRfcmVmZXJlbmNlX2xpbmsiICJzaG9ydGN1dF9saW5r
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltYWdlIiAidXJpX2F1dG9saW5rIiAi
ZW1haWxfYXV0b2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlua19kZXN0
aW5hdGlvbiIpKQorICAgICAgICAgICAgICAgICAgICAobWVtYmVyIChhbmQgbm9kZSAodHJlZXNp
dC1ub2RlLXR5cGUgbm9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygidXJpX2F1
dG9saW5rIiAiZW1haWxfYXV0b2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
bGlua19kZXN0aW5hdGlvbiIgImNvZGVfc3BhbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJjb2RlX2ZlbmNlX2NvbnRlbnQiICJpbmZvX3N0cmluZyIpKQorICAgICAgICAgICAgICAg
ICAgICAoZ2V0LXRleHQtcHJvcGVydHkgdXJpLXN0YXJ0ICdidXR0b24pKQorICAgICAgICAgICht
YXJrZG93bi10cy0tbWFrZS1saW5rLWJ1dHRvbgorICAgICAgICAgICB1cmktc3RhcnQgdXJpLWVu
ZAorICAgICAgICAgICAoaWYgKGVxIHVyaS1zdGFydCAwKQorICAgICAgICAgICAgICAgdXJpCisg
ICAgICAgICAgICAgKGNvbmNhdCAibWFpbHRvOiIgdXJpKSkpKSkpKSkKKworOzs7IHRyZWVzaXQg
c2V0dGluZ3M6CisKIChkZWZ2YXIgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MKICAgKHRy
ZWVzaXQtZm9udC1sb2NrLXJ1bGVzCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlubGluZQogICAg
Om92ZXJyaWRlIHQKICAgIDpmZWF0dXJlICdkZWxpbWl0ZXIKLSAgICcoKGlubGluZV9saW5rIFsg
IlsiICJdIiAiKCIgIikiIF0gQHNoYWRvdykKLSAgICAgKGltYWdlIFsgIiEiICJbIiAiXSIgIigi
ICIpIiBdIEBzaGFkb3cpKQorICAgJygoaW5saW5lX2xpbmsgWyAiWyIgIl0iICIoIiAiKSIgXSBA
bWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQorICAgICAoZnVsbF9yZWZlcmVuY2VfbGlu
ayBbICJbIiAiXSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQorICAgICAoY29s
bGFwc2VkX3JlZmVyZW5jZV9saW5rIFsgIlsiICJdIiBdIEBtYXJrZG93bi10cy0tZm9udGlmeS1k
ZWxpbWl0ZXIpCisgICAgIChzaG9ydGN1dF9saW5rIFsgIlsiICJdIiBdIEBtYXJrZG93bi10cy0t
Zm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChpbWFnZSBbICIhIiAiWyIgIl0iICIoIiAiKSIgXSBA
bWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKSkKIAogICAgOmxhbmd1YWdlICdtYXJrZG93
bgogICAgOmZlYXR1cmUgJ2hlYWRpbmcKLSAgICcoKGF0eF9oZWFkaW5nIChhdHhfaDFfbWFya2Vy
KSkgQG1hcmtkb3duLXRzLWhlYWRpbmctMQotICAgICAoYXR4X2hlYWRpbmcgKGF0eF9oMl9tYXJr
ZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy0yCi0gICAgIChhdHhfaGVhZGluZyAoYXR4X2gzX21h
cmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTMKLSAgICAgKGF0eF9oZWFkaW5nIChhdHhfaDRf
bWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctNAotICAgICAoYXR4X2hlYWRpbmcgKGF0eF9o
NV9tYXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy01Ci0gICAgIChhdHhfaGVhZGluZyAoYXR4
X2g2X21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTYKLSAgICAgKHNldGV4dF9oZWFkaW5n
KSBAbWFya2Rvd24tdHMtc2V0ZXh0LWhlYWRpbmcpCisgICAnKCgoYXR4X2hlYWRpbmcpICAgIEBt
YXJrZG93bi10cy0tZm9udGlmeS1oZWFkaW5nKQorICAgICAoKHNldGV4dF9oZWFkaW5nKSBAbWFy
a2Rvd24tdHMtLWZvbnRpZnktaGVhZGluZykpCiAKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24KICAg
IDpmZWF0dXJlICdoZWFkaW5nCkBAIC0xOTQsMTYgKzEzOTEsMzQgQEAgbWFya2Rvd24tdHMtLXRy
ZWVzaXQtc2V0dGluZ3MKICAgICAgKGF0eF9oM19tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlm
eS1kZWxpbWl0ZXIKICAgICAgKGF0eF9oNF9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1k
ZWxpbWl0ZXIKICAgICAgKGF0eF9oNV9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxp
bWl0ZXIKLSAgICAgKGF0eF9oNl9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0
ZXIpCisgICAgIChhdHhfaDZfbWFya2VyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVy
CisgICAgIChzZXRleHRfaDFfdW5kZXJsaW5lKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1p
dGVyCisgICAgIChzZXRleHRfaDJfdW5kZXJsaW5lKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVs
aW1pdGVyKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCiAgICA6ZmVhdHVyZSAncGFyYWdyYXBo
Ci0gICAnKCgodGhlbWF0aWNfYnJlYWspIEBtYXJrZG93bi10cy1kZWxpbWl0ZXIpCi0gICAgICgo
aW5kZW50ZWRfY29kZV9ibG9jaykgQGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAgICcoKCh0aGVt
YXRpY19icmVhaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LXRoZW1hdGljLWJyZWFrKQorICAgICAo
KGh0bWxfYmxvY2spIEBtYXJrZG93bi10cy1odG1sLWJsb2NrKQorICAgICAoKGluZGVudGVkX2Nv
ZGVfYmxvY2spIEBtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2NrKQogICAgICAobGlzdF9p
dGVtIChsaXN0X21hcmtlcl9zdGFyKSBAbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIpCiAgICAgIChs
aXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BsdXMpIEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKICAg
ICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfbWludXMpIEBtYXJrZG93bi10cy1saXN0LW1hcmtl
cikKLSAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfZG90KSBAbWFya2Rvd24tdHMtbGlzdC1t
YXJrZXIpKQorICAgICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3QpIEBtYXJrZG93bi10cy1s
aXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfcGFyZW50aGVzaXMpIEBt
YXJrZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAodGFza19saXN0X21hcmtl
cl91bmNoZWNrZWQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1jaGVja2JveCkKKyAgICAgKGxpc3Rf
aXRlbSAodGFza19saXN0X21hcmtlcl9jaGVja2VkKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktY2hl
Y2tib3gpCisgICAgIChwaXBlX3RhYmxlX2hlYWRlciAifCIgQG1hcmtkb3duLXRzLXRhYmxlLWhl
YWRlcikKKyAgICAgKHBpcGVfdGFibGVfaGVhZGVyIChwaXBlX3RhYmxlX2NlbGwpIEBtYXJrZG93
bi10cy10YWJsZS1oZWFkZXIpCisgICAgIChwaXBlX3RhYmxlX3JvdyAifCIgQG1hcmtkb3duLXRz
LXRhYmxlLWRlbGltaXRlci1jZWxsKQorICAgICAocGlwZV90YWJsZV9yb3cgKHBpcGVfdGFibGVf
Y2VsbCkgQG1hcmtkb3duLXRzLXRhYmxlLWNlbGwpCisgICAgIChwaXBlX3RhYmxlX2RlbGltaXRl
cl9yb3cgInwiIEBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2VsbCkKKyAgICAgKGxpbmtf
cmVmZXJlbmNlX2RlZmluaXRpb24KKyAgICAgIChsaW5rX2xhYmVsKSBAbWFya2Rvd24tdHMtLWZv
bnRpZnktbGluay1yZWYtbGFiZWwpCisgICAgIChsaW5rX3JlZmVyZW5jZV9kZWZpbml0aW9uCisg
ICAgICAobGlua19kZXN0aW5hdGlvbikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVmLWRl
c3RpbmF0aW9uKQorICAgICAobGlua19yZWZlcmVuY2VfZGVmaW5pdGlvbgorICAgICAgKGxpbmtf
dGl0bGUpIEBtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9uKQorICAgICAocGlwZV90YWJsZV9k
ZWxpbWl0ZXJfcm93IChwaXBlX3RhYmxlX2RlbGltaXRlcl9jZWxsKSBAbWFya2Rvd24tdHMtdGFi
bGUtZGVsaW1pdGVyLWNlbGwpKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCiAgICA6ZmVhdHVy
ZSAncGFyYWdyYXBoCkBAIC0yMTcsODQgKzE0MzIsOTkyIEBAIG1hcmtkb3duLXRzLS10cmVlc2l0
LXNldHRpbmdzCiAgICAgICAoYmxvY2tfcXVvdGVfbWFya2VyKSBAbWFya2Rvd24tdHMtLWZvbnRp
ZnktZGVsaW1pdGVyCiAgICAgICAocGFyYWdyYXBoIChpbmxpbmUgKGJsb2NrX2NvbnRpbnVhdGlv
bikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcikpKSkKIAorICAgOmxhbmd1YWdlICdt
YXJrZG93bgorICAgOmZlYXR1cmUgJ3BhcmFncmFwaAorICAgOm92ZXJyaWRlICdhcHBlbmQKKyAg
ICcoKGZlbmNlZF9jb2RlX2Jsb2NrCisgICAgICAoaW5mb19zdHJpbmcgKGxhbmd1YWdlKSkKKyAg
ICAgIChjb2RlX2ZlbmNlX2NvbnRlbnQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1ub24tdHMtY29k
ZS1ibG9jaykpCisKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24KKyAgIDpmZWF0dXJlICdwYXJhZ3Jh
cGgKKyAgIDpvdmVycmlkZSAnYXBwZW5kCisgICAnKChmZW5jZWRfY29kZV9ibG9jayAoY29kZV9m
ZW5jZV9jb250ZW50KSBAbWFya2Rvd24tdHMtLWZvbnRpZnktY29kZS1ibG9jaykpCisKICAgIDps
YW5ndWFnZSAnbWFya2Rvd24taW5saW5lCiAgICA6b3ZlcnJpZGUgJ2FwcGVuZAogICAgOmZlYXR1
cmUgJ3BhcmFncmFwaC1pbmxpbmUKLSAgICcoKChpbWFnZV9kZXNjcmlwdGlvbikgQGxpbmspCi0g
ICAgICgobGlua19kZXN0aW5hdGlvbikgQGZvbnQtbG9jay1zdHJpbmctZmFjZSkKLSAgICAgKChj
b2RlX3NwYW4pIEBmb250LWxvY2stc3RyaW5nLWZhY2UpCisgICAnKCgobGlua19kZXN0aW5hdGlv
bikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstZGVzdGluYXRpb24pCisgICAgICgoY29kZV9z
cGFuKSBAbWFya2Rvd24tdHMtY29kZS1zcGFuKQogICAgICAoKGNvZGVfc3Bhbl9kZWxpbWl0ZXIp
IEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCi0gICAgICgoZW1waGFzaXMpIEBpdGFs
aWMpCi0gICAgICgoc3Ryb25nX2VtcGhhc2lzKSBAYm9sZCkKLSAgICAgKGlubGluZV9saW5rIChs
aW5rX3RleHQpIEBsaW5rKQotICAgICAoaW5saW5lX2xpbmsgKGxpbmtfZGVzdGluYXRpb24pIEBm
b250LWxvY2stc3RyaW5nLWZhY2UpCi0gICAgIChzaG9ydGN1dF9saW5rIChsaW5rX3RleHQpIEBs
aW5rKSkKKyAgICAgKChlbXBoYXNpcykgQG1hcmtkb3duLXRzLWVtcGhhc2lzKQorICAgICAoKHN0
cm9uZ19lbXBoYXNpcykgQG1hcmtkb3duLXRzLWJvbGQpCisgICAgICgoc3RyaWtldGhyb3VnaCkg
QG1hcmtkb3duLXRzLXN0cmlrZXRocm91Z2gpCisgICAgIChpbmxpbmVfbGluayAobGlua190ZXh0
KSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKQorICAgICAoZnVsbF9yZWZlcmVuY2Vf
bGluayAobGlua190ZXh0KSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKQorICAgICAo
ZnVsbF9yZWZlcmVuY2VfbGluayAobGlua19sYWJlbCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxp
bmstbm9kZSkKKyAgICAgKGNvbGxhcHNlZF9yZWZlcmVuY2VfbGluayAobGlua190ZXh0KSBAbWFy
a2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKQorICAgICAoc2hvcnRjdXRfbGluayAobGlua190
ZXh0KSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKQorICAgICAoaW1hZ2UgKGltYWdl
X2Rlc2NyaXB0aW9uKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKQorICAgICAoKHVy
aV9hdXRvbGluaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LWF1dG9saW5rKQorICAgICAoKGVtYWls
X2F1dG9saW5rKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmspCisgICAgIChpbmxpbmVf
bGluayAobGlua190aXRsZSkgQG1hcmtkb3duLXRzLWxpbmstZGVzdGluYXRpb24pCisgICAgICgo
YmFja3NsYXNoX2VzY2FwZSkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWJhY2tzbGFzaC1lc2NhcGUp
CisgICAgICgoZW50aXR5X3JlZmVyZW5jZSkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWVudGl0eSkK
KyAgICAgKChudW1lcmljX2NoYXJhY3Rlcl9yZWZlcmVuY2UpIEBtYXJrZG93bi10cy0tZm9udGlm
eS1lbnRpdHkpCisgICAgICgoaHRtbF90YWcpIEBtYXJrZG93bi10cy1odG1sLXRhZykKKyAgICAg
KChoYXJkX2xpbmVfYnJlYWspIEBtYXJrZG93bi10cy0tZm9udGlmeS1oYXJkLWxpbmUtYnJlYWsp
CisgICAgICgobGF0ZXhfYmxvY2spIEBtYXJrZG93bi10cy0tZm9udGlmeS1sYXRleC1ibG9jaykp
CiAKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24taW5saW5lCiAgICA6ZmVhdHVyZSAncGFyYWdyYXBo
LWlubGluZQogICAgOm92ZXJyaWRlICdhcHBlbmQKICAgICcoKGVtcGhhc2lzX2RlbGltaXRlcikg
QG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcikKLSAgICkpCiAKLTs7OyBJbWVudQorICAg
Omxhbmd1YWdlICdtYXJrZG93bi1pbmxpbmUKKyAgIDpmZWF0dXJlICdpbWFnZS1wcmV2aWV3Cisg
ICA6b3ZlcnJpZGUgJ2FwcGVuZAorICAgJygoaW1hZ2UpIEBtYXJrZG93bi10cy0tZm9udGlmeS1p
bWFnZSkpKQorCis7OzsgSW1lbnU6CiAKLShkZWZ1biBtYXJrZG93bi10cy1pbWVudS1ub2RlLXAg
KG5vZGUpCisoZGVmdW4gbWFya2Rvd24tdHMtLWltZW51LWhlYWRpbmctbm9kZS1wIChub2RlKQog
ICAiQ2hlY2sgaWYgTk9ERSBpcyBhIHZhbGlkIGVudHJ5IHRvIGltZW51LiIKLSAgKGVxdWFsICh0
cmVlc2l0LW5vZGUtdHlwZSAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkKLSAgICAgICAgICJh
dHhfaGVhZGluZyIpKQorICAoYW5kIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImlu
bGluZSIpCisgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSAodHJlZXNpdC1ub2RlLXBh
cmVudCBub2RlKSkKKyAgICAgICAgICAgICAgImF0eF9oZWFkaW5nIikpKQogCi0oZGVmdW4gbWFy
a2Rvd24tdHMtaW1lbnUtbmFtZS1mdW5jdGlvbiAobm9kZSkKKyhkZWZ1biBtYXJrZG93bi10cy0t
aW1lbnUtaGVhZGluZy1uYW1lLWZ1bmN0aW9uIChub2RlKQogICAiUmV0dXJuIGFuIGltZW51IGVu
dHJ5IGlmIE5PREUgaXMgYSB2YWxpZCBoZWFkZXIuIgogICAobGV0ICgobmFtZSAodHJlZXNpdC1u
b2RlLXRleHQgbm9kZSkpKQotICAgIChpZiAobWFya2Rvd24tdHMtaW1lbnUtbm9kZS1wIG5vZGUp
Ci0JKHRocmVhZC1maXJzdCAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSAodHJlZXNpdC1ub2Rl
LXRleHQpKQorICAgIChpZiAobWFya2Rvd24tdHMtLWltZW51LWhlYWRpbmctbm9kZS1wIG5vZGUp
CisgICAgICAgIChjYXIgKHNwbGl0LXN0cmluZyAodHJlZXNpdC1ub2RlLXRleHQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iIHQgIiAiKSkKICAgICAgIG5hbWUpKSkKIAotKGRlZnVuIG1h
cmtkb3duLXRzLW91dGxpbmUtcHJlZGljYXRlIChub2RlKQotICAiTWF0Y2ggYSBoaWVyYXJjaGlj
YWwgc2VjdGlvbiB0aGF0IGhhcyBhIGhlYWRpbmcuIgorKGRlZnVuIG1hcmtkb3duLXRzLS1pbWVu
dS1jb2RlLWJsb2NrLW5vZGUtcCAobm9kZSkKKyAgIkNoZWNrIGlmIE5PREUgaXMgYW4gaW5mb19z
dHJpbmcgd2l0aCBkZXNjcmlwdGl2ZSB0ZXh0IGFmdGVyIHRoZSBsYW5ndWFnZS4iCisgIChhbmQg
KGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAiaW5mb19zdHJpbmciKQorICAgICAgICh3
aGVuLWxldCogKChsYW5nLW5vZGUgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgbm9kZSAibGFuZ3Vh
Z2UiKSkKKyAgICAgICAgICAgICAgICAgICAoKDwgKHRyZWVzaXQtbm9kZS1lbmQgbGFuZy1ub2Rl
KQorICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkpKQorICAg
ICAgICAgKG5vdCAoc3RyaW5nLWJsYW5rLXAKKyAgICAgICAgICAgICAgIChidWZmZXItc3Vic3Ry
aW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBsYW5n
LW5vZGUpCisgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpKSkpKSkKKwor
KGRlZnVuIG1hcmtkb3duLXRzLS1pbWVudS1jb2RlLWJsb2NrLW5hbWUtZnVuY3Rpb24gKG5vZGUp
CisgICJSZXR1cm4gYW4gaW1lbnUgZW50cnkgbmFtZSBmb3IgYSBjb2RlIGJsb2NrIGluZm9fc3Ry
aW5nIE5PREUuCitVc2VzIHRoZSBkZXNjcmlwdGl2ZSB0ZXh0IGFmdGVyIHRoZSBsYW5ndWFnZSBu
YW1lLiIKKyAgKHdoZW4tbGV0KiAoKGxhbmctbm9kZSAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBu
b2RlICJsYW5ndWFnZSIpKQorICAgICAgICAgICAgICAoZGVzYyAoc3RyaW5nLXRyaW0KKyAgICAg
ICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAg
ICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBsYW5nLW5vZGUpCisgICAgICAgICAgICAg
ICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpKSkpCisgICAgKGZvcm1hdCAiJXM6ICVz
IiAodHJlZXNpdC1ub2RlLXRleHQgbGFuZy1ub2RlKSBkZXNjKSkpCisKKyhkZWZ1biBtYXJrZG93
bi10cy0tb3V0bGluZS1wcmVkaWNhdGUgKG5vZGUpCisgICJNYXRjaCBOT0RFIGlmIGl0IGlzIGEg
aGllcmFyY2hpY2FsIHNlY3Rpb24gdGhhdCBoYXMgYSBoZWFkaW5nLiIKICAgKGFuZCAoZXF1YWwg
KHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpICJzZWN0aW9uIikKICAgICAgICAod2hlbi1sZXQqICgo
Y2hpbGQgKHRyZWVzaXQtbm9kZS1jaGlsZCBub2RlIDApKSkKICAgICAgICAgIChlcXVhbCAodHJl
ZXNpdC1ub2RlLXR5cGUgY2hpbGQpICJhdHhfaGVhZGluZyIpKSkpCiAKLTs7OyBDb2RlIGJsb2Nr
cwotCi0oZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1jb25maWd1cmVkLWxhbmd1YWdlcyBuaWwK
LSAgIkEgbGlzdCBvZiBsYW5ndWFnZXMgdGhhdCBoYXZlIGJlZW4gc2V0dXAgaW4gdGhpcyBidWZm
ZXIuCi0KLVdoZW4gYSBjb2RlIGJsb2NrIG9mIGEgbGFuZ3VhZ2UgYXBwZWFycywgYG1hcmtkb3du
LXRzLW1vZGUnIGxvYWRzCi1sYW5ndWFnZSBzZXR1cHMgbGlrZSBmb250LWxvY2sgYW5kIGluZGVu
dGF0aW9uIGZvciB0aGF0IGxhbmd1YWdlLCBhbmQKLWFkZHMgdGhhdCBsYW5ndWFnZSB0byB0aGlz
IGxpc3QuIikKKzs7OyBIZWFkaW5nIG1hbmlwdWxhdGlvbjoKKworKGRlZmNvbnN0IG1hcmtkb3du
LXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwgNgorICAiTWF4aW11bSBBVFggaGVhZGluZyBs
ZXZlbCBpbiBNYXJrZG93biAoaDEtaDYpLgorRGVmaW5lZCBieSB0aGUgQ29tbW9uTWFyayBzcGVj
IGFuZCB0aGUgdHJlZS1zaXR0ZXIgZ3JhbW1hci4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWhl
YWRpbmctYXQtcG9pbnQgKCkKKyAgIlJldHVybiB0aGUgYXR4X2hlYWRpbmcgbm9kZSBhdCBvciBi
ZWZvcmUgcG9pbnQsIG9yIG5pbC4iCisgICh3aGVuLWxldCogKChub2RlICh0cmVlc2l0LW5vZGUt
YXQgKHBvaW50KSAnbWFya2Rvd24pKSkKKyAgICAoaWYgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlw
ZSBub2RlKSAiYXR4X2hlYWRpbmciKQorICAgICAgICBub2RlCisgICAgICAodHJlZXNpdC1wYXJl
bnQtdW50aWwKKyAgICAgICBub2RlIChsYW1iZGEgKG4pIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5
cGUgbikgImF0eF9oZWFkaW5nIikpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWhlYWRpbmct
bGV2ZWwgKGhlYWRpbmcpCisgICJSZXR1cm4gdGhlIGxldmVsIG9mIEhFQURJTkcgbm9kZSAoMSB0
byBgbWFya2Rvd24tdHMtLXBhcnNlci1oZWFkaW5nLW1heC1sZXZlbCcpLiIKKyAgKGxldCAoKG1h
cmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGhlYWRpbmcgMCkpKQorICAgIChsZW5ndGggKHRyZWVz
aXQtbm9kZS10ZXh0IG1hcmtlciB0KSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXNlY3Rpb24t
YXQtcG9pbnQgKCkKKyAgIlJldHVybiB0aGUgc2VjdGlvbiBub2RlIGNvbnRhaW5pbmcgcG9pbnQu
IgorICAod2hlbi1sZXQqICgobm9kZSAodHJlZXNpdC1ub2RlLWF0IChwb2ludCkgJ21hcmtkb3du
KSkpCisgICAgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgIG5vZGUgKGxhbWJkYSAobikgKGVx
dWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAic2VjdGlvbiIpKSkpKQorCisoZGVmdW4gbWFya2Rv
d24tdHMtcHJvbW90ZSAoKQorICAiUHJvbW90ZSB0aGUgaGVhZGluZyBvciBsaXN0IGl0ZW0gYXQg
cG9pbnQuCitGb3IgaGVhZGluZ3MsIGRlY3JlYXNlIHRoZSBsZXZlbCAoZS5nLiwgIyMgdG8gIyku
CitGb3IgbGlzdCBpdGVtcywgZGVjcmVhc2UgbmVzdGluZyAoZGVkZW50KS4KK1dpdGggYHRyYW5z
aWVudC1tYXJrLW1vZGUnIG9uIGFuZCBtYXJrIGFjdGl2ZSwgcHJvbW90ZSBhbGwKK2hlYWRpbmdz
IGluIHRoZSByZWdpb24uIgorICAoaW50ZXJhY3RpdmUpCisgIChjb25kCisgICAoKGFuZCB0cmFu
c2llbnQtbWFyay1tb2RlIG1hcmstYWN0aXZlKQorICAgIChtYXJrZG93bi10cy0tcHJvbW90ZS1v
ci1kZW1vdGUtcmVnaW9uIC0xKSkKKyAgICgobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2lu
dCkKKyAgICAobWFya2Rvd24tdHMtLWxpc3QtcHJvbW90ZS1vci1kZW1vdGUgbmlsKSkKKyAgICh0
IChtYXJrZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUgLTEpKSkpCisKKyhkZWZ1biBtYXJrZG93
bi10cy1kZW1vdGUgKCkKKyAgIkRlbW90ZSB0aGUgaGVhZGluZyBvciBsaXN0IGl0ZW0gYXQgcG9p
bnQuCitGb3IgaGVhZGluZ3MsIGluY3JlYXNlIHRoZSBsZXZlbCAoZS5nLiwgIyB0byAjIykuCitG
b3IgbGlzdCBpdGVtcywgaW5jcmVhc2UgbmVzdGluZyAoaW5kZW50KS4KK1dpdGggYHRyYW5zaWVu
dC1tYXJrLW1vZGUnIG9uIGFuZCBtYXJrIGFjdGl2ZSwgZGVtb3RlIGFsbCBoZWFkaW5ncworaW4g
dGhlIHJlZ2lvbi4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGNvbmQKKyAgICgoYW5kIHRyYW5zaWVu
dC1tYXJrLW1vZGUgbWFyay1hY3RpdmUpCisgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRl
bW90ZS1yZWdpb24gMSkpCisgICAoKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpCisg
ICAgKG1hcmtkb3duLXRzLS1saXN0LXByb21vdGUtb3ItZGVtb3RlIHQpKQorICAgKHQgKG1hcmtk
b3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZSAxKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXBy
b21vdGUtb3ItZGVtb3RlIChkZWx0YSkKKyAgIkNoYW5nZSB0aGUgaGVhZGluZyBhdCBwb2ludCBi
eSBERUxUQSBsZXZlbHMuCitOZWdhdGl2ZSBERUxUQSBwcm9tb3RlcyAoZmV3ZXIgIyksIHBvc2l0
aXZlIGRlbW90ZXMgKG1vcmUgIykuCitJZiB0aGUgaGVhZGluZyBoYXMgYW4gb3B0aW9uYWwgdHJh
aWxpbmcgY2xvc2luZy1gIycgc2VxdWVuY2UsIHRoYXQKK3NlcXVlbmNlIGlzIHJlc2l6ZWQgdG8g
bWF0Y2ggdGhlIG5ldyBsZXZlbC4iCisgICh3aGVuLWxldCogKChoZWFkaW5nIChtYXJrZG93bi10
cy0taGVhZGluZy1hdC1wb2ludCkpCisgICAgICAgICAgICAgIChtYXJrZXIgKHRyZWVzaXQtbm9k
ZS1jaGlsZCBoZWFkaW5nIDApKQorICAgICAgICAgICAgICAobGV2ZWwgKGxlbmd0aCAodHJlZXNp
dC1ub2RlLXRleHQgbWFya2VyIHQpKSkKKyAgICAgICAgICAgICAgKG5ldy1sZXZlbCAoKyBsZXZl
bCBkZWx0YSkpKQorICAgICh3aGVuIChhbmQgKD49IG5ldy1sZXZlbCAxKQorICAgICAgICAgICAg
ICAgKDw9IG5ldy1sZXZlbCBtYXJrZG93bi10cy0tcGFyc2VyLWhlYWRpbmctbWF4LWxldmVsKSkK
KyAgICAgIChsZXQqICgob3BlbmVyLWJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpCisg
ICAgICAgICAgICAgKG9wZW5lci1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbWFya2VyKSkKKyAgICAg
ICAgICAgICAobGluZS1lbmQgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAg
ICAgKGdvdG8tY2hhciBvcGVuZXItZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5l
LWVuZC1wb3NpdGlvbikpKQorICAgICAgICAgICAgIDs7IERldGVjdCBhIENvbW1vbk1hcmsgY2xv
c2luZy1gIycgc2VxdWVuY2U6IG9wdGlvbmFsCisgICAgICAgICAgICAgOzsgdHJhaWxpbmcgd2hp
dGVzcGFjZSwgYSBydW4gb2YgYCMnLCBhbmQgYXQgbGVhc3Qgb25lCisgICAgICAgICAgICAgOzsg
c3BhY2UvdGFiIGJldHdlZW4gaXQgYW5kIHRoZSBoZWFkaW5nIHRleHQuCisgICAgICAgICAgICAg
KGNsb3NlciAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hh
ciBsaW5lLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQg
IiBcdCIgb3BlbmVyLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGVuZCAocG9p
bnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIyIg
b3BlbmVyLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoYmVnIChwb2ludCkp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoPCBiZWcgZW5kKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPiBiZWcgb3BlbmVyLWVuZCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbXEgKGNoYXItYmVmb3JlIGJl
ZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyg/XHMgP1x0
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIGJlZyBlbmQpKSkpKSkpCisg
ICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgIDs7IFJlc2l6ZSB0aGUgY2xvc2VyIGZp
cnN0IHNvIGl0IGRvZXNuJ3Qgc2hpZnQgdGhlIG9wZW5lci4KKyAgICAgICAgICAod2hlbiBjbG9z
ZXIKKyAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIChjYXIgY2xvc2VyKSAoY2RyIGNsb3Nlcikp
CisgICAgICAgICAgICAoZ290by1jaGFyIChjYXIgY2xvc2VyKSkKKyAgICAgICAgICAgIChpbnNl
cnQgKG1ha2Utc3RyaW5nIG5ldy1sZXZlbCA/IykpKQorICAgICAgICAgIChkZWxldGUtcmVnaW9u
IG9wZW5lci1iZWcgb3BlbmVyLWVuZCkKKyAgICAgICAgICAoZ290by1jaGFyIG9wZW5lci1iZWcp
CisgICAgICAgICAgKGluc2VydCAobWFrZS1zdHJpbmcgbmV3LWxldmVsID8jKSkpKSkpKQorCiso
ZGVmdW4gbWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lvbiAoZGVsdGEpCisgICJD
aGFuZ2UgYWxsIGhlYWRpbmdzIGluIHRoZSBhY3RpdmUgcmVnaW9uIGJ5IERFTFRBIGxldmVscy4K
K05lZ2F0aXZlIERFTFRBIHByb21vdGVzIChmZXdlciAjKSwgcG9zaXRpdmUgZGVtb3RlcyAobW9y
ZSAjKS4iCisgIChsZXQgKChiZWcgKHJlZ2lvbi1iZWdpbm5pbmcpKQorICAgICAgICAoZW5kIChy
ZWdpb24tZW5kKSkpCisgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAoZ290by1jaGFyIGJlZykK
KyAgICAgICh3aGlsZSAoPCAocG9pbnQpIGVuZCkKKyAgICAgICAgKHdoZW4gKG1hcmtkb3duLXRz
LS1oZWFkaW5nLWF0LXBvaW50KQorICAgICAgICAgIChtYXJrZG93bi10cy0tcHJvbW90ZS1vci1k
ZW1vdGUgZGVsdGEpKQorICAgICAgICAoZm9yd2FyZC1saW5lIDEpKSkpKQorCisoZGVmdW4gbWFy
a2Rvd24tdHMtbW92ZS1zdWJ0cmVlLXVwICgpCisgICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rpb24g
b3IgbGlzdCBpdGVtIHVwIHBhc3QgdGhlIHByZXZpb3VzIHNpYmxpbmcuIgorICAoaW50ZXJhY3Rp
dmUpCisgIChpZiAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkKKyAgICAgIChtYXJr
ZG93bi10cy0tbGlzdC1tb3ZlIHQpCisgICAgKG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUtdXAt
b3ItZG93biB0KSkpCiAKLShkZWZ1biBtYXJrZG93bi10cy0taGFydmVzdC10cmVlc2l0LWNvbmZp
Z3MgKG1vZGUpCi0gICJIYXJ2ZXN0IHRyZWUtc2l0dGVyIGNvbmZpZ3MgZnJvbSBNT0RFLgotUmV0
dXJuIGEgcGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIGtleXMgYW5kIHZhbHVlOgorKGRlZnVuIG1h
cmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duICgpCisgICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rp
b24gb3IgbGlzdCBpdGVtIGRvd24gcGFzdCB0aGUgbmV4dCBzaWJsaW5nLiIKKyAgKGludGVyYWN0
aXZlKQorICAoaWYgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpCisgICAgICAobWFy
a2Rvd24tdHMtLWxpc3QtbW92ZSBuaWwpCisgICAgKG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUt
dXAtb3ItZG93biBuaWwpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1zZWN0aW9uLWZvbGRlZC1w
IChzZWN0aW9uKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgU0VDVElPTidzIGhlYWRpbmcgaXMgZm9s
ZGVkLgorQ2hlY2tzIHdoZXRoZXIgdGhlIGVuZCBvZiB0aGUgaGVhZGluZyBsaW5lIGhhcyBhbiBv
dXRsaW5lCitpbnZpc2libGUgb3ZlcmxheS4iCisgIChsZXQgKChoZWFkaW5nICh0cmVlc2l0LW5v
ZGUtY2hpbGQgc2VjdGlvbiAwKSkpCisgICAgKHdoZW4gKGFuZCBoZWFkaW5nCisgICAgICAgICAg
ICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGhlYWRpbmcpICJhdHhfaGVhZGluZyIpKQor
ICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1z
dGFydCBoZWFkaW5nKSkKKyAgICAgICAgKG91dGxpbmUtaW52aXNpYmxlLXAgKHBvcy1lb2wpKSkp
KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUtdXAtb3ItZG93biAodXApCisg
ICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rpb24gc3VidHJlZS4KK0lmIFVQIGlzIG5vbi1uaWwsIG1v
dmUgcGFzdCB0aGUgcHJldmlvdXMgc2libGluZzsgb3RoZXJ3aXNlIG1vdmUgZG93bi4KK1ByZXNl
cnZlcyB0aGUgZm9sZGluZyBzdGF0ZSBvZiBib3RoIHNlY3Rpb25zLiIKKyAgKHdoZW4tbGV0KiAo
KHNlY3Rpb24gKG1hcmtkb3duLXRzLS1zZWN0aW9uLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAg
KHNpYmxpbmcgKGlmIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2Rl
LXByZXYtc2libGluZyBzZWN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0
LW5vZGUtbmV4dC1zaWJsaW5nIHNlY3Rpb24pKSkpCisgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0
LW5vZGUtdHlwZSBzaWJsaW5nKSAic2VjdGlvbiIpCisgICAgICAobGV0KiAoKGZpcnN0IChpZiB1
cCBzaWJsaW5nIHNlY3Rpb24pKQorICAgICAgICAgICAgIChzZWNvbmQgKGlmIHVwIHNlY3Rpb24g
c2libGluZykpCisgICAgICAgICAgICAgKGZpcnN0LWZvbGRlZCAobWFya2Rvd24tdHMtLXNlY3Rp
b24tZm9sZGVkLXAgZmlyc3QpKQorICAgICAgICAgICAgIChzZWNvbmQtZm9sZGVkIChtYXJrZG93
bi10cy0tc2VjdGlvbi1mb2xkZWQtcCBzZWNvbmQpKQorICAgICAgICAgICAgIChmaXJzdC1zdGFy
dCAodHJlZXNpdC1ub2RlLXN0YXJ0IGZpcnN0KSkKKyAgICAgICAgICAgICAoc2Vjb25kLXN0YXJ0
ICh0cmVlc2l0LW5vZGUtc3RhcnQgc2Vjb25kKSkKKyAgICAgICAgICAgICAoc2Vjb25kLWVuZCAo
dHJlZXNpdC1ub2RlLWVuZCBzZWNvbmQpKQorICAgICAgICAgICAgIDs7IEV4dHJhY3Qgc2VwYXJh
dG9yIGJldHdlZW4gaXRlbXMgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgICAgICAgICAg
KGZpcnN0LXJhdyAoYnVmZmVyLXN1YnN0cmluZyBmaXJzdC1zdGFydCBzZWNvbmQtc3RhcnQpKQor
ICAgICAgICAgICAgIChmaXJzdC10ZXh0IChzdHJpbmctdHJpbS1yaWdodCBmaXJzdC1yYXcpKQor
ICAgICAgICAgICAgIChzZXBhcmF0b3IgKHN1YnN0cmluZyBmaXJzdC1yYXcgKGxlbmd0aCBmaXJz
dC10ZXh0KSkpCisgICAgICAgICAgICAgKHNlY29uZC1yYXcgKGJ1ZmZlci1zdWJzdHJpbmcgc2Vj
b25kLXN0YXJ0IHNlY29uZC1lbmQpKQorICAgICAgICAgICAgIChzZWNvbmQtdGV4dCAoc3RyaW5n
LXRyaW0tcmlnaHQgc2Vjb25kLXJhdykpCisgICAgICAgICAgICAgKHRyYWlsaW5nIChzdWJzdHJp
bmcgc2Vjb25kLXJhdyAobGVuZ3RoIHNlY29uZC10ZXh0KSkpCisgICAgICAgICAgICAgKGNvbCAo
Y3VycmVudC1jb2x1bW4pKQorICAgICAgICAgICAgIChsaW5lLW9mZnNldCAoLSAobGluZS1udW1i
ZXItYXQtcG9zIChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLW51
bWJlci1hdC1wb3MgKHRyZWVzaXQtbm9kZS1zdGFydCBzZWN0aW9uKSkpKSkKKyAgICAgICAgKGRl
bGV0ZS1yZWdpb24gZmlyc3Qtc3RhcnQgc2Vjb25kLWVuZCkKKyAgICAgICAgKGdvdG8tY2hhciBm
aXJzdC1zdGFydCkKKyAgICAgICAgKGluc2VydCBzZWNvbmQtdGV4dCBzZXBhcmF0b3IgZmlyc3Qt
dGV4dCB0cmFpbGluZykKKyAgICAgICAgOzsgUmVzdG9yZSBmb2xkaW5nIHN0YXRlCisgICAgICAg
IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgIChnb3RvLWNoYXIgZmlyc3Qtc3RhcnQpCisgICAg
ICAgICAgKHdoZW4gKG91dGxpbmUtb24taGVhZGluZy1wKQorICAgICAgICAgICAgKGlmIHNlY29u
ZC1mb2xkZWQKKyAgICAgICAgICAgICAgICAob3V0bGluZS1oaWRlLXN1YnRyZWUpCisgICAgICAg
ICAgICAgIChvdXRsaW5lLXNob3ctc3VidHJlZSkpKQorICAgICAgICAgIChvdXRsaW5lLW5leHQt
aGVhZGluZykKKyAgICAgICAgICAod2hlbiAob3V0bGluZS1vbi1oZWFkaW5nLXApCisgICAgICAg
ICAgICAoaWYgZmlyc3QtZm9sZGVkCisgICAgICAgICAgICAgICAgKG91dGxpbmUtaGlkZS1zdWJ0
cmVlKQorICAgICAgICAgICAgICAob3V0bGluZS1zaG93LXN1YnRyZWUpKSkpCisgICAgICAgIChn
b3RvLWNoYXIgKGlmIHVwCisgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LXN0YXJ0CisgICAg
ICAgICAgICAgICAgICAgICAoKyBmaXJzdC1zdGFydCAobGVuZ3RoIHNlY29uZC10ZXh0KQorICAg
ICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCBzZXBhcmF0b3IpKSkpCisgICAgICAgIChmb3J3
YXJkLWxpbmUgbGluZS1vZmZzZXQpCisgICAgICAgIChtb3ZlLXRvLWNvbHVtbiBjb2wpKSkpKQor
Cis7OzsgTGlzdCBtYW5pcHVsYXRpb246CisKKyhkZWZ1biBtYXJrZG93bi10cy10b2dnbGUtY2hl
Y2tib3ggKCkKKyAgIlRvZ2dsZSB0aGUgdGFzayBsaXN0IGNoZWNrYm94IG9uIHRoZSBjdXJyZW50
IGxpbmUuCitTd2l0Y2hlcyBiZXR3ZWVuIGBbIF0nIGFuZCBgW3hdJy4iCisgIChpbnRlcmFjdGl2
ZSkKKyAgKHdoZW4tbGV0KiAoKHBvcyAoc2F2ZS1leGN1cnNpb24gKGJhY2stdG8taW5kZW50YXRp
b24pIChwb2ludCkpKQorICAgICAgICAgICAgICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IHBvcyAn
bWFya2Rvd24pKQorICAgICAgICAgICAgICAoaXRlbSAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAg
ICAgICAgICAgICAgICAgICAgIG5vZGUgKGxhbWJkYSAobikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4pICJsaXN0X2l0ZW0iKSkpKSkKKyAg
ICAod2hlbi1sZXQqICgobWFya2VyIChzZXEtZmluZAorICAgICAgICAgICAgICAgICAgICAgICAg
IChsYW1iZGEgKGNoaWxkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbWJlciAodHJl
ZXNpdC1ub2RlLXR5cGUgY2hpbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcoInRhc2tfbGlzdF9tYXJrZXJfY2hlY2tlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAidGFza19saXN0X21hcmtlcl91bmNoZWNrZWQiKSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBpdGVtKSkpKQorICAgICAgKGxldCAo
KGJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpCisgICAgICAgICAgICAoZW5kICh0cmVl
c2l0LW5vZGUtZW5kIG1hcmtlcikpCisgICAgICAgICAgICAoY2hlY2tlZCAoZXF1YWwgKHRyZWVz
aXQtbm9kZS10eXBlIG1hcmtlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFza19s
aXN0X21hcmtlcl9jaGVja2VkIikpKQorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAg
ICAoZ290by1jaGFyIGJlZykKKyAgICAgICAgICAoZGVsZXRlLXJlZ2lvbiBiZWcgZW5kKQorICAg
ICAgICAgIChpbnNlcnQgKGlmIGNoZWNrZWQgIlsgXSIgIlt4XSIpKSkpKSkpCisKKyhkZWZ1biBt
YXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50ICgpCisgICJSZXR1cm4gdGhlIGlubmVybW9z
dCBsaXN0X2l0ZW0gbm9kZSBjb250YWluaW5nIHBvaW50LCBvciBuaWwuCitVc2VzIHRoZSBwb3Np
dGlvbiBhZnRlciBgYmFjay10by1pbmRlbnRhdGlvbicgc28gdGhhdCBwb2ludCBpbgorYSBsaW5l
J3MgbGVhZGluZyB3aGl0ZXNwYWNlIHJlc29sdmVzIHRvIHRoZSBpdGVtIG9uIHRoYXQgbGluZSwK
K25vdCB0byBhIHByZWNlZGluZyBpdGVtIHdob3NlIG5vZGUgc3BhbnMgdGhlIHdoaXRlc3BhY2Uu
CitJbnNpZGUgYmxvY2sgcXVvdGVzLCBhbHNvIHRyeSBmcm9tIHRoZSBjb250ZW50IHBvc2l0aW9u
IHBhc3QKK3RoZSBgPicgbWFya2Vycy4iCisgICh3aGVuLWxldCogKChwb3MgKHNhdmUtZXhjdXJz
aW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAocG9pbnQpKSkKKyAgICAgICAgICAgICAgKG5vZGUg
KHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3duKSkKKyAgICAgICAgICAgICAgKGJvbCAobGlu
ZS1iZWdpbm5pbmctcG9zaXRpb24pKQorICAgICAgICAgICAgICAoZW9sIChsaW5lLWVuZC1wb3Np
dGlvbikpKQorICAgIChvciAobGV0ICgoaXRlbSAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICAg
ICAgICAgICAgICAgICAgIG5vZGUgKGxhbWJkYSAobikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4pICJsaXN0X2l0ZW0iKSkpKSkKKyAgICAg
ICAgICA7OyBWZXJpZnkgdGhlIGN1cnJlbnQgbGluZSBpcyB3aXRoaW4gdGhlIGl0ZW0ncyByYW5n
ZS4KKyAgICAgICAgICA7OyBgdHJlZXNpdC1ub2RlLWF0JyBjYW4gcmV0dXJuIGEgbm9kZSBpbnNp
ZGUgYSBsaXN0X2l0ZW0KKyAgICAgICAgICA7OyBldmVuIHdoZW4gcG9pbnQgaXMgb24gYSBwcmVj
ZWRpbmcgbGluZS4KKyAgICAgICAgICAod2hlbiAoYW5kIGl0ZW0KKyAgICAgICAgICAgICAgICAg
ICAgICg8PSAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pIGVvbCkKKyAgICAgICAgICAgICAgICAg
ICAgICg+PSAodHJlZXNpdC1ub2RlLWVuZCBpdGVtKSBib2wpKQorICAgICAgICAgICAgaXRlbSkp
CisgICAgICAgIDs7IFdoZW4gYmFjay10by1pbmRlbnRhdGlvbiBsYW5kcyBvbiBibG9jayBxdW90
ZSBtYXJrZXJzLAorICAgICAgICA7OyBza2lwIHBhc3QgdGhlbSBhbmQgdHJ5IGZyb20gdGhlIGNv
bnRlbnQgcG9zaXRpb24uCisgICAgICAgIChsZXQgKChjb250ZW50LXBvcyAoc2F2ZS1leGN1cnNp
b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICI+IFx0IikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKQorICAgICAgICAgICh3aGVuICg+
IGNvbnRlbnQtcG9zIHBvcykKKyAgICAgICAgICAgICh3aGVuLWxldCogKChjbm9kZSAodHJlZXNp
dC1ub2RlLWF0IGNvbnRlbnQtcG9zICdtYXJrZG93bikpKQorICAgICAgICAgICAgICAobGV0ICgo
aXRlbSAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNu
b2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChuKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4pICJsaXN0X2l0ZW0i
KSkpKSkKKyAgICAgICAgICAgICAgICAod2hlbiAoYW5kIGl0ZW0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICg8PSAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pIGVvbCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICg+PSAodHJlZXNpdC1ub2RlLWVuZCBpdGVtKSBib2wpKQorICAgICAg
ICAgICAgICAgICAgaXRlbSkpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1tYXJr
ZXItd2lkdGggKGl0ZW0pCisgICJSZXR1cm4gdGhlIHdpZHRoIG9mIElURU0ncyBsaXN0IG1hcmtl
ciBpbmNsdWRpbmcgdHJhaWxpbmcgc3BhY2UuIgorICAobGV0ICgobWFya2VyICh0cmVlc2l0LW5v
ZGUtY2hpbGQgaXRlbSAwKSkpCisgICAgKC0gKHRyZWVzaXQtbm9kZS1lbmQgbWFya2VyKSAodHJl
ZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LWl0
ZW0tcmVnaW9uIChpdGVtKQorICAiUmV0dXJuIHRoZSAoQkVHIC4gRU5EKSByZWdpb24gZm9yIElU
RU0sIGNsYW1wZWQgdG8gZnVsbCBsaW5lcy4KK0JFRyBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBv
ZiB0aGUgbGluZSBjb250YWluaW5nIHRoZSBpdGVtLgorRU5EIGlzIGNsYW1wZWQgc28gaXQgZG9l
cyBub3QgZXh0ZW5kIGludG8gdGhlIG5leHQgbGluZSdzCitpbmRlbnRhdGlvbiwgd2hpY2ggdHJl
ZS1zaXR0ZXIgbWF5IGluY2x1ZGUgaW4gdGhlIG5vZGUuIgorICAobGV0ICgoYmVnIChzYXZlLWV4
Y3Vyc2lvbgorICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0
ZW0pKQorICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpCisgICAgICAg
IChlbmQgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0
LW5vZGUtZW5kIGl0ZW0pKQorICAgICAgICAgICAgICAgKGlmIChib2xwKSAocG9pbnQpIChsaW5l
LWJlZ2lubmluZy1wb3NpdGlvbikpKSkpCisgICAgKGNvbnMgYmVnIGVuZCkpKQorCisoZGVmdW4g
bWFya2Rvd24tdHMtLWxpc3Qtb3JkZXJlZC1pdGVtLXAgKGl0ZW0pCisgICJSZXR1cm4gbm9uLW5p
bCBpZiBJVEVNIGlzIGFuIG9yZGVyZWQgKG51bWJlcmVkKSBsaXN0IGl0ZW0uIgorICAobGV0ICgo
bWFya2VyICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAwKSkpCisgICAgKGVxdWFsICh0cmVlc2l0
LW5vZGUtdHlwZSBtYXJrZXIpICJsaXN0X21hcmtlcl9kb3QiKSkpCisKKyhkZWZ1biBtYXJrZG93
bi10cy0tbGlzdC1wcm9tb3RlLW9yLWRlbW90ZSAoZGVtb3RlKQorICAiQ2hhbmdlIG5lc3Rpbmcg
b2YgdGhlIGxpc3QgaXRlbSBhdCBwb2ludC4KK0lmIERFTU9URSBpcyBub24tbmlsLCBkZW1vdGUg
KGluZGVudCk7IG90aGVyd2lzZSBwcm9tb3RlIChkZWRlbnQpLgorT3JkZXJlZCAobnVtYmVyZWQp
IGxpc3QgaXRlbXMgYXJlIHNraXBwZWQgYmVjYXVzZSB0aGUgZ3JhbW1hciBkb2VzCitub3Qgc3Vw
cG9ydCBuZXN0aW5nIHRoZW0gYnkgaW5kZW50YXRpb24uIgorICAod2hlbi1sZXQqICgoaXRlbSAo
bWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpCisgICAgICAgICAgICAgIChyZWdpb24g
KG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tcmVnaW9uIGl0ZW0pKQorICAgICAgICAgICAgICAoYmVn
IChjYXIgcmVnaW9uKSkKKyAgICAgICAgICAgICAgKGVuZCAoY2RyIHJlZ2lvbikpKQorICAgICh3
aGVuIChtYXJrZG93bi10cy0tbGlzdC1vcmRlcmVkLWl0ZW0tcCBpdGVtKQorICAgICAgKHVzZXIt
ZXJyb3IgIk9yZGVyZWQgbGlzdCBpdGVtcyBjYW5ub3QgYmUgbmVzdGVkIChncmFtbWFyIGxpbWl0
YXRpb24pIikpCisgICAgKGlmIGRlbW90ZQorICAgICAgICA7OyBEZW1vdGU6IGluZGVudCBieSBt
YXJrZXIgd2lkdGgsIG9ubHkgaWYgdGhlcmUgaXMgYSBwcmV2aW91cworICAgICAgICA7OyBzaWJs
aW5nIHRvIG5lc3QgdW5kZXIgKGxpa2Ugb3JnLW1vZGUpLgorICAgICAgICAod2hlbiAodHJlZXNp
dC1ub2RlLXByZXYtc2libGluZyBpdGVtKQorICAgICAgICAgIChpbmRlbnQtcmlnaWRseSBiZWcg
ZW5kIChtYXJrZG93bi10cy0tbGlzdC1tYXJrZXItd2lkdGggaXRlbSkpKQorICAgICAgOzsgUHJv
bW90ZTogZGVkZW50IHRvIGdyYW5kcGFyZW50IGxldmVsLgorICAgICAgKGxldCogKChwYXJlbnQt
bGlzdCAodHJlZXNpdC1ub2RlLXBhcmVudCBpdGVtKSkKKyAgICAgICAgICAgICAoZ3JhbmRwYXJl
bnQgKGFuZCBwYXJlbnQtbGlzdCAodHJlZXNpdC1ub2RlLXBhcmVudCBwYXJlbnQtbGlzdCkpKQor
ICAgICAgICAgICAgIChpdGVtLWNvbCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAoZ290by1jaGFyIGJlZykgKGN1cnJlbnQtaW5kZW50YXRpb24pKSkpCisgICAgICAg
ICh3aGVuIChhbmQgZ3JhbmRwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVz
aXQtbm9kZS10eXBlIGdyYW5kcGFyZW50KSAibGlzdF9pdGVtIikKKyAgICAgICAgICAgICAgICAg
ICAoPiBpdGVtLWNvbCAwKSkKKyAgICAgICAgICAobGV0ICgoZ3AtY29sIChzYXZlLWV4Y3Vyc2lv
bgorICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3Rh
cnQgZ3JhbmRwYXJlbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1pbmRl
bnRhdGlvbikpKSkKKyAgICAgICAgICAgIChpbmRlbnQtcmlnaWRseSBiZWcgZW5kICgtIGdwLWNv
bCBpdGVtLWNvbCkpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1ub2RlLWJvbCAo
bm9kZSkKKyAgIlJldHVybiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGNvbnRhaW5pbmcgTk9E
RSdzIHN0YXJ0LiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGdvdG8tY2hhciAodHJlZXNpdC1u
b2RlLXN0YXJ0IG5vZGUpKQorICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKQorCisoZGVm
dW4gbWFya2Rvd24tdHMtLWxpc3QtbW92ZSAodXApCisgICJNb3ZlIHRoZSBsaXN0IGl0ZW0gYXQg
cG9pbnQuCitJZiBVUCBpcyBub24tbmlsLCBtb3ZlIHBhc3QgdGhlIHByZXZpb3VzIHNpYmxpbmc7
IG90aGVyd2lzZSBtb3ZlIGRvd24uIgorICAod2hlbi1sZXQqICgoaXRlbSAobWFya2Rvd24tdHMt
LWxpc3QtaXRlbS1hdC1wb2ludCkpCisgICAgICAgICAgICAgIChzaWJsaW5nIChpZiB1cAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1wcmV2LXNpYmxpbmcgaXRlbSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBpdGVt
KSkpKQorICAgICh3aGVuIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgc2libGluZykgImxpc3Rf
aXRlbSIpCisgICAgICAobGV0KiAoKGZpcnN0IChpZiB1cCBzaWJsaW5nIGl0ZW0pKQorICAgICAg
ICAgICAgIChzZWNvbmQgKGlmIHVwIGl0ZW0gc2libGluZykpCisgICAgICAgICAgICAgKGZpcnN0
LXN0YXJ0IChtYXJrZG93bi10cy0tbGlzdC1ub2RlLWJvbCBmaXJzdCkpCisgICAgICAgICAgICAg
KHNlY29uZC1zdGFydCAobWFya2Rvd24tdHMtLWxpc3Qtbm9kZS1ib2wgc2Vjb25kKSkKKyAgICAg
ICAgICAgICAoc2Vjb25kLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBzZWNvbmQpKQorICAgICAgICAg
ICAgIDs7IEV4dHJhY3Qgc2VwYXJhdG9yIGJldHdlZW4gaXRlbXMgYW5kIHRyYWlsaW5nIHdoaXRl
c3BhY2UuCisgICAgICAgICAgICAgKGZpcnN0LXJhdyAoYnVmZmVyLXN1YnN0cmluZyBmaXJzdC1z
dGFydCBzZWNvbmQtc3RhcnQpKQorICAgICAgICAgICAgIChmaXJzdC10ZXh0IChzdHJpbmctdHJp
bS1yaWdodCBmaXJzdC1yYXcpKQorICAgICAgICAgICAgIChzZXBhcmF0b3IgKHN1YnN0cmluZyBm
aXJzdC1yYXcgKGxlbmd0aCBmaXJzdC10ZXh0KSkpCisgICAgICAgICAgICAgKHNlY29uZC1yYXcg
KGJ1ZmZlci1zdWJzdHJpbmcgc2Vjb25kLXN0YXJ0IHNlY29uZC1lbmQpKQorICAgICAgICAgICAg
IChzZWNvbmQtdGV4dCAoc3RyaW5nLXRyaW0tcmlnaHQgc2Vjb25kLXJhdykpCisgICAgICAgICAg
ICAgKHRyYWlsaW5nIChzdWJzdHJpbmcgc2Vjb25kLXJhdyAobGVuZ3RoIHNlY29uZC10ZXh0KSkp
CisgICAgICAgICAgICAgKGNvbCAoY3VycmVudC1jb2x1bW4pKQorICAgICAgICAgICAgIChsaW5l
LW9mZnNldCAoLSAobGluZS1udW1iZXItYXQtcG9zIChwb2ludCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChsaW5lLW51bWJlci1hdC1wb3MKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgaXRlbSkpKSkpCisgICAgICAgIChkZWxldGUtcmVn
aW9uIGZpcnN0LXN0YXJ0IHNlY29uZC1lbmQpCisgICAgICAgIChnb3RvLWNoYXIgZmlyc3Qtc3Rh
cnQpCisgICAgICAgIChpbnNlcnQgc2Vjb25kLXRleHQgc2VwYXJhdG9yIGZpcnN0LXRleHQgdHJh
aWxpbmcpCisgICAgICAgIChnb3RvLWNoYXIgKGlmIHVwCisgICAgICAgICAgICAgICAgICAgICAg
IGZpcnN0LXN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAoKyBmaXJzdC1zdGFydCAobGVuZ3Ro
IHNlY29uZC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCBzZXBhcmF0b3Ip
KSkpCisgICAgICAgIChmb3J3YXJkLWxpbmUgbGluZS1vZmZzZXQpCisgICAgICAgIChtb3ZlLXRv
LWNvbHVtbiBjb2wpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtcmVudW1iZXItbGlzdCAoJm9w
dGlvbmFsIHN0YXJ0KQorICAiUmVudW1iZXIgdGhlIG9yZGVyZWQgbGlzdCBhdCBwb2ludC4KK051
bWJlcnMgYXJlIGFzc2lnbmVkIHNlcXVlbnRpYWxseSBzdGFydGluZyBmcm9tIHRoZSBmaXJzdCBp
dGVtJ3MKK251bWJlci4gIFdpdGggYSBwcmVmaXggYXJndW1lbnQgU1RBUlQsIHN0YXJ0IG51bWJl
cmluZyBmcm9tIHRoYXQKK3ZhbHVlIGluc3RlYWQuICBEb2VzIG5vdGhpbmcgZm9yIHVub3JkZXJl
ZCBsaXN0cy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCogKChpdGVtIChtYXJr
ZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAgKGxpc3Qtbm9kZSAo
dHJlZXNpdC1ub2RlLXBhcmVudCBpdGVtKSkpCisgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0LW5v
ZGUtdHlwZSBsaXN0LW5vZGUpICJsaXN0IikKKyAgICAgIChsZXQqICgoY2hpbGRyZW4gKHRyZWVz
aXQtbm9kZS1jaGlsZHJlbiBsaXN0LW5vZGUpKQorICAgICAgICAgICAgIChpdGVtcyAoc2VxLWZp
bHRlciAobGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVh
bCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImxpc3RfaXRlbSIpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGlsZHJlbikpCisgICAgICAgICAgICAgKGZpcnN0LW1hcmtlciAodHJl
ZXNpdC1ub2RlLWNoaWxkIChjYXIgaXRlbXMpIDApKQorICAgICAgICAgICAgIChtYXJrZXItdHlw
ZSAodHJlZXNpdC1ub2RlLXR5cGUgZmlyc3QtbWFya2VyKSkpCisgICAgICAgICh3aGVuIChtZW1i
ZXIgbWFya2VyLXR5cGUgJygibGlzdF9tYXJrZXJfZG90IiAibGlzdF9tYXJrZXJfcGFyZW50aGVz
aXMiKSkKKyAgICAgICAgICAobGV0KiAoKGJhc2UgKGlmIHN0YXJ0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAocHJlZml4LW51bWVyaWMtdmFsdWUgc3RhcnQpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgKHN0cmluZy10by1udW1iZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHRy
ZWVzaXQtbm9kZS10ZXh0IGZpcnN0LW1hcmtlciB0KSkpKQorICAgICAgICAgICAgICAgICAoY291
bnQgKGxlbmd0aCBpdGVtcykpCisgICAgICAgICAgICAgICAgIDs7IFN0YXJ0IGZyb20gdGhlIGxh
c3QgbnVtYmVyIGFuZCB3b3JrIGJhY2t3YXJkcyBzbworICAgICAgICAgICAgICAgICA7OyB0aGF0
IGVhcmxpZXIgYnVmZmVyIHBvc2l0aW9ucyByZW1haW4gdmFsaWQuCisgICAgICAgICAgICAgICAg
IChudW0gKCsgYmFzZSBjb3VudCAtMSkpKQorICAgICAgICAgICAgKGRvbGlzdCAoaXQgKHJldmVy
c2UgaXRlbXMpKQorICAgICAgICAgICAgICAobGV0KiAoKG1hcmtlciAodHJlZXNpdC1ub2RlLWNo
aWxkIGl0IDApKQorICAgICAgICAgICAgICAgICAgICAgKG1hcmtlci1lbmQgKHRyZWVzaXQtbm9k
ZS1lbmQgbWFya2VyKSkKKyAgICAgICAgICAgICAgICAgICAgIChib2wgKHNhdmUtZXhjdXJzaW9u
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0
YXJ0IG1hcmtlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5n
LXBvc2l0aW9uKSkpCisgICAgICAgICAgICAgICAgICAgICA7OyBGdWxsIHRleHQgZnJvbSBib2wg
dG8gZW5kIG9mIG1hcmtlciBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICAgOzsgYW55IGxl
YWRpbmcgd2hpdGVzcGFjZSwgdGhlIG51bWJlciwgYW5kIHRoZQorICAgICAgICAgICAgICAgICAg
ICAgOzsgc2VwYXJhdG9yIChlLmcuLCAiLiAiIG9yICIuXHQiKS4KKyAgICAgICAgICAgICAgICAg
ICAgIChmdWxsLXRleHQgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9sIG1hcmtlci1lbmQpKQorICAgICAgICAgICAgICAg
ICAgICAgKGluZGVudC1zdHIKKyAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1tYXRj
aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYFxcKFtbOmJsYW5rOl1dKlxcKVswLTld
IiBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMSBm
dWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAiIikpCisgICAgICAgICAgICAgICAg
ICAgICAoc3VmZml4LXN0cgorICAgICAgICAgICAgICAgICAgICAgIChpZiAoc3RyaW5nLW1hdGNo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgW1s6Ymxhbms6XV0qWzAtOV0rXFwoLipc
XClcXCciIGZ1bGwtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmlu
ZyAxIGZ1bGwtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICIuICIpKQorICAgICAgICAg
ICAgICAgICAgICAgKG5ldy10ZXh0IChjb25jYXQgaW5kZW50LXN0cgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG51bWJlci10by1zdHJpbmcgbnVtKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4LXN0cikpKQorICAgICAgICAgICAg
ICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gYm9s
IG1hcmtlci1lbmQpCisgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGJvbCkKKyAgICAgICAg
ICAgICAgICAgIChpbnNlcnQgbmV3LXRleHQpKSkKKyAgICAgICAgICAgICAgKGNsLWRlY2YgbnVt
KSkKKyAgICAgICAgICAgIChtZXNzYWdlICJSZW51bWJlcmVkICVkIGl0ZW1zIiBjb3VudCkpKSkp
KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3LW1hcmtlciAoaXRlbSkKKyAg
IlJldHVybiB0aGUgbWFya2VyIHN0cmluZyBmb3IgYSBuZXcgaXRlbSBmb2xsb3dpbmcgSVRFTS4K
K0ZvciB1bm9yZGVyZWQgaXRlbXMsIHJldXNlIHRoZSBzYW1lIG1hcmtlciBjaGFyYWN0ZXIuCitG
b3Igb3JkZXJlZCBpdGVtcywgaW5jcmVtZW50IHRoZSBudW1iZXIuIgorICAobGV0KiAoKG1hcmtl
ciAodHJlZXNpdC1ub2RlLWNoaWxkIGl0ZW0gMCkpCisgICAgICAgICAodHlwZSAodHJlZXNpdC1u
b2RlLXR5cGUgbWFya2VyKSkKKyAgICAgICAgIChpbmRlbnQgKHNhdmUtZXhjdXJzaW9uCisgICAg
ICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pKQorICAg
ICAgICAgICAgICAgICAgIChjdXJyZW50LWluZGVudGF0aW9uKSkpCisgICAgICAgICAocHJlZml4
IChtYWtlLXN0cmluZyBpbmRlbnQgP1xzKSkpCisgICAgKHBjYXNlIHR5cGUKKyAgICAgICgibGlz
dF9tYXJrZXJfbWludXMiIChjb25jYXQgcHJlZml4ICItICIpKQorICAgICAgKCJsaXN0X21hcmtl
cl9wbHVzIiAgKGNvbmNhdCBwcmVmaXggIisgIikpCisgICAgICAoImxpc3RfbWFya2VyX3N0YXIi
ICAoY29uY2F0IHByZWZpeCAiKiAiKSkKKyAgICAgICgibGlzdF9tYXJrZXJfZG90IgorICAgICAg
IChsZXQgKChudW0gKHN0cmluZy10by1udW1iZXIgKHRyZWVzaXQtbm9kZS10ZXh0IG1hcmtlciB0
KSkpKQorICAgICAgICAgKGNvbmNhdCBwcmVmaXggKG51bWJlci10by1zdHJpbmcgKDErIG51bSkp
ICIuICIpKSkKKyAgICAgICgibGlzdF9tYXJrZXJfcGFyZW50aGVzaXMiCisgICAgICAgKGxldCAo
KG51bSAoc3RyaW5nLXRvLW51bWJlciAodHJlZXNpdC1ub2RlLXRleHQgbWFya2VyIHQpKSkpCisg
ICAgICAgICAoY29uY2F0IHByZWZpeCAobnVtYmVyLXRvLXN0cmluZyAoMSsgbnVtKSkgIikgIikp
KQorICAgICAgKF8gKGNvbmNhdCBwcmVmaXggIi0gIikpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10
cy0tbmV3LW1hcmtlci1mb3ItbGluZSAoaXRlbSkKKyAgIlJldHVybiB0aGUgbWFya2VyIHN0cmlu
ZyBmb3IgYSBuZXcgaXRlbSBmb2xsb3dpbmcgSVRFTS4KK1doZW4gdGhlIGN1cnJlbnQgbGluZSBo
YXMgYSBsaXN0IG1hcmtlciBwYXR0ZXJuIGF0IGEgZGlmZmVyZW50CitpbmRlbnRhdGlvbiB0aGFu
IElURU0gKGUuZy4sIGEgbmVzdGVkIG1hcmtlciB0aGF0IHRoZSBncmFtbWFyIGRpZAorbm90IHJl
Y29nbml6ZSBhcyBhIGxpc3RfaXRlbSksIHVzZSB0aGUgY3VycmVudCBsaW5lJ3MgbWFya2VyLgor
T3RoZXJ3aXNlLCBmYWxsIGJhY2sgdG8gYG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3LW1hcmtl
cicuIgorICAobGV0ICgobWFya2VyLW5vZGUgKHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKSkK
KyAgICAoaWYgKD0gKGxpbmUtbnVtYmVyLWF0LXBvcykKKyAgICAgICAgICAgIChsaW5lLW51bWJl
ci1hdC1wb3MgKHRyZWVzaXQtbm9kZS1zdGFydCBtYXJrZXItbm9kZSkpKQorICAgICAgICA7OyBJ
dGVtJ3MgbWFya2VyIGlzIG9uIHRoZSBjdXJyZW50IGxpbmU6IHVzZSBpdCBub3JtYWxseS4KKyAg
ICAgICAgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3LW1hcmtlciBpdGVtKQorICAgICAgOzsg
SXRlbSdzIG1hcmtlciBpcyBvbiBhIGRpZmZlcmVudCBsaW5lLiAgVGhlIHBhcnNlciBtYXkgaGF2
ZQorICAgICAgOzsgZmFpbGVkIHRvIHJlY29nbml6ZSBhIG5lc3RlZCBtYXJrZXIgKGUuZy4sIGEg
bG9uZSBgICAtICcKKyAgICAgIDs7IHBhcnNlZCBhcyBhIHNldGV4dCBoZWFkaW5nKS4gIFJlYWQg
dGhlIGN1cnJlbnQgbGluZS4KKyAgICAgIChsZXQgKChsaW5lIChidWZmZXItc3Vic3RyaW5nLW5v
LXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgICAobGluZS1iZWdpbm5pbmctcG9zaXRpb24p
IChsaW5lLWVuZC1wb3NpdGlvbikpKSkKKyAgICAgICAgKGlmIChzdHJpbmctbWF0Y2gKKyAgICAg
ICAgICAgICAiXFxgXFwoW1s6Ymxhbms6XV0qXFwpXFwoWy0qK10gXFx8XFwoWzAtOV0rXFwpXFwo
Wy4pXSBcXClcXCkiCisgICAgICAgICAgICAgbGluZSkKKyAgICAgICAgICAgIChsZXQgKChpbmRl
bnQgKG1hdGNoLXN0cmluZyAxIGxpbmUpKQorICAgICAgICAgICAgICAgICAgKG51bSAobWF0Y2gt
c3RyaW5nIDMgbGluZSkpCisgICAgICAgICAgICAgICAgICAoc3VmZml4IChtYXRjaC1zdHJpbmcg
NCBsaW5lKSkKKyAgICAgICAgICAgICAgICAgICh1bm9yZGVyZWQgKG1hdGNoLXN0cmluZyAyIGxp
bmUpKSkKKyAgICAgICAgICAgICAgKGlmIG51bQorICAgICAgICAgICAgICAgICAgKGNvbmNhdCBp
bmRlbnQgKG51bWJlci10by1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoMSsgKHN0cmluZy10by1udW1iZXIgbnVtKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHN1ZmZpeCkKKyAgICAgICAgICAgICAgICAoY29uY2F0IGluZGVudCB1bm9yZGVyZWQpKSkKKyAg
ICAgICAgICA7OyBObyBtYXJrZXIgcGF0dGVybiBvbiBjdXJyZW50IGxpbmU6IHVzZSBpdGVtJ3Mg
bWFya2VyLgorICAgICAgICAgIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIgaXRl
bSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxpbmUtYmxvY2stcXVvdGUtZGVwdGggKCZv
cHRpb25hbCBwb3MpCisgICJDb3VudCB0aGUgbnVtYmVyIG9mIGA+JyBibG9jayBxdW90ZSBtYXJr
ZXJzIG9uIHRoZSBsaW5lIGF0IFBPUy4iCisgIChzYXZlLWV4Y3Vyc2lvbgorICAgICh3aGVuIHBv
cyAoZ290by1jaGFyIHBvcykpCisgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgIChsZXQgKChj
b3VudCAwKSkKKyAgICAgICh3aGlsZSAoYW5kIChub3QgKGVvbHApKQorICAgICAgICAgICAgICAg
ICAgKG1lbXEgKGNoYXItYWZ0ZXIpICcoPz4gP1xzID9cdCkpKQorICAgICAgICAod2hlbiAoZXEg
KGNoYXItYWZ0ZXIpID8+KQorICAgICAgICAgIChzZXRxIGNvdW50ICgxKyBjb3VudCkpKQorICAg
ICAgICAoZm9yd2FyZC1jaGFyIDEpKQorICAgICAgY291bnQpKSkKKworKGRlZnVuIG1hcmtkb3du
LXRzLW5ld2xpbmUgKCkKKyAgIkluc2VydCBhIG5ld2xpbmUsIGNvbnRpbnVpbmcgdGhlIGN1cnJl
bnQgY29udGV4dC4KK0luc2lkZSBhIGxpc3QgaXRlbSwgdGhlIG5ldyBsaW5lIGlzIGluZGVudGVk
IHRvIHRoZSBpdGVtJ3MgdGV4dAorY29sdW1uIHNvIHRoZSBwYXJhZ3JhcGggY29udGludWVzLiAg
QSBzZWNvbmQgUkVUIG9uIGEgYmxhbmsKK2NvbnRpbnVhdGlvbiBsaW5lIHJlbW92ZXMgdGhlIGlu
ZGVudGF0aW9uLCBkcm9wcGluZyBwb2ludCB0bworY29sdW1uIDAgc28gdGhlIHRyZWUtc2l0dGVy
IGdyYW1tYXIgZW5kcyB0aGUgbGlzdC4KK0luc2lkZSBhIGJsb2NrIHF1b3RlLCB0aGUgbmV3IGxp
bmUgaW5jbHVkZXMgdGhlIHF1b3RlIHByZWZpeC4KK090aGVyd2lzZSwgaW5zZXJ0IGEgcGxhaW4g
bmV3bGluZS4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGxldCogKChub2RlICh0cmVlc2l0LW5vZGUt
YXQKKyAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24gKGJhY2stdG8taW5kZW50YXRpb24p
IChwb2ludCkpCisgICAgICAgICAgICAgICAgJ21hcmtkb3duKSkKKyAgICAgICAgIDs7IFRyZWUt
c2l0dGVyIG1heSByZXBvcnQgYSBub2RlIGluc2lkZSBhIGJsb2NrX3F1b3RlIGV2ZW4KKyAgICAg
ICAgIDs7IHdoZW4gcG9pbnQgaXMgb24gYSBibGFuayBsaW5lIHBhc3QgdGhlIHF1b3RlICh0aGUg
bm9kZQorICAgICAgICAgOzsgc3BhbiBjYW4gZXh0ZW5kIGJleW9uZCB0aGUgYD4nIGxpbmVzKS4g
IE9ubHkgdHJlYXQgdGhlCisgICAgICAgICA7OyBsaW5lIGFzIGluc2lkZSBhIGJsb2NrIHF1b3Rl
IGlmIGl0IGFjdHVhbGx5IHN0YXJ0cyB3aXRoCisgICAgICAgICA7OyBhIGA+JyBtYXJrZXIuCisg
ICAgICAgICAoaW4tYnEgKGFuZCAodHJlZXNpdC1wYXJlbnQtdW50aWwgbm9kZSAiXFxgYmxvY2tf
cXVvdGVcXCciKQorICAgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAg
ICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgKGxvb2tpbmctYXQtcCAiWyBcdF0qPiIpKSkpCisgICAgICAgICAoaXRlbSAobWFya2Rvd24t
dHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpKQorICAgIChjb25kCisgICAgIChpdGVtCisgICAgICAo
bGV0KiAoKGNvbCAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS10ZXh0LWNvbHVtbiBpdGVtKSkKKyAg
ICAgICAgICAgICAoYnEtcHJlZml4ICh3aGVuIGluLWJxIChtYXJrZG93bi10cy0tYmxvY2stcXVv
dGUtcHJlZml4KSkpCisgICAgICAgICAgICAgOzsgYGNvbCcgaXMgdGhlIGFic29sdXRlIGNvbHVt
biBvZiB0aGUgaXRlbSdzIHRleHQsCisgICAgICAgICAgICAgOzsgd2hpY2ggaW5zaWRlIGEgYmxv
Y2sgcXVvdGUgaW5jbHVkZXMgdGhlICI+ICIgcHJlZml4CisgICAgICAgICAgICAgOzsgd2lkdGgu
ICBTaW5jZSB3ZSBpbnNlcnQgYGJxLXByZWZpeCcgc2VwYXJhdGVseSwgd2UKKyAgICAgICAgICAg
ICA7OyBtdXN0IHN1YnRyYWN0IGl0cyBsZW5ndGggdG8gYXZvaWQgZG91YmxpbmcgaXQuCisgICAg
ICAgICAgICAgKGluZGVudCAoLSBjb2wgKGxlbmd0aCAob3IgYnEtcHJlZml4ICIiKSkpKQorICAg
ICAgICAgICAgIDs7IFRoZSBjdXJyZW50IGxpbmUgaXMgImJsYW5rIiBpZiBpdCBjb250YWlucyBv
bmx5CisgICAgICAgICAgICAgOzsgd2hpdGVzcGFjZSAob3IgcXVvdGUgcHJlZml4ICsgd2hpdGVz
cGFjZSkgYW5kIG5vCisgICAgICAgICAgICAgOzsgYWN0dWFsIHRleHQgZnJvbSBhIHByZXZpb3Vz
IFJFVCdzIGNvbnRpbnVhdGlvbiBpbmRlbnQuCisgICAgICAgICAgICAgKGJsYW5rLWxpbmUtcCAo
c2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lubmluZy1v
Zi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9va2luZy1hdC1wCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXls+IFx0XSokIikpKQorICAgICAgICAgICAgIDs7
IFBvaW50IGlzIGJlZm9yZSB0aGUgaXRlbSdzIHRleHQgKGF0IG9yIGJlZm9yZSB0aGUKKyAgICAg
ICAgICAgICA7OyBtYXJrZXIpLiAgQSBwbGFpbiBuZXdsaW5lIGlzIGFwcHJvcHJpYXRlIGhlcmUs
IGFkZGluZworICAgICAgICAgICAgIDs7IGNvbnRpbnVhdGlvbiBpbmRlbnQgd291bGQgc2hpZnQg
dGhlIGV4aXN0aW5nIGNvbnRlbnQKKyAgICAgICAgICAgICA7OyB0byB0aGUgcmlnaHQuCisgICAg
ICAgICAgICAgKGJlZm9yZS10ZXh0LXAgKDw9IChjdXJyZW50LWNvbHVtbikgY29sKSkpCisgICAg
ICAgIChjb25kCisgICAgICAgICAoYmxhbmstbGluZS1wCisgICAgICAgICAgOzsgVGhlIHVzZXIg
cHJlc3NlZCBSRVQgb24gYW4gYWxyZWFkeS1ibGFuayBjb250aW51YXRpb24KKyAgICAgICAgICA7
OyBsaW5lLiAgSW5zdGVhZCBvZiBhZGRpbmcgeWV0IGFub3RoZXIgaW5kZW50ZWQgYmxhbmsKKyAg
ICAgICAgICA7OyBsaW5lLCByZW1vdmUgdGhlIGluZGVudGF0aW9uIGFuZCBpbnNlcnQgYSBwbGFp
bgorICAgICAgICAgIDs7IG5ld2xpbmUuICBUaGlzIGRyb3BzIHBvaW50IHRvIGNvbHVtbiAwLCB3
aGljaCBpcyB0aGUKKyAgICAgICAgICA7OyBvbmx5IHdheSB0aGUgdHJlZS1zaXR0ZXIgbWFya2Rv
d24gZ3JhbW1hciBlbmRzIGEgbGlzdDoKKyAgICAgICAgICA7OyBibGFuayBsaW5lcyBhbG9uZSBk
byBOT1QgZW5kIGEgbGlzdCwgb25seQorICAgICAgICAgIDs7IG5vbi1pbmRlbnRlZCBjb250ZW50
IGRvZXMuICBTbyB0aGlzIGdpdmVzIHRoZSB1c2VyIGEKKyAgICAgICAgICA7OyBuYXR1cmFsICJS
RVQgUkVUIHRvIGV4aXQgdGhlIGxpc3QiIHdvcmtmbG93LgorICAgICAgICAgIChkZWxldGUtcmVn
aW9uIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxpbmUtZW5kLXBvc2l0aW9uKSkKKyAgICAg
ICAgICAobmV3bGluZSkpCisgICAgICAgICAoYmVmb3JlLXRleHQtcAorICAgICAgICAgIDs7IFBv
aW50IGlzIG9uIG9yIGJlZm9yZSB0aGUgbGlzdCBtYXJrZXI7IGp1c3QgaW5zZXJ0IGEKKyAgICAg
ICAgICA7OyBwbGFpbiBuZXdsaW5lIHNvIHRoZSBpdGVtIGlzIHB1c2hlZCBkb3duIHVuY2hhbmdl
ZC4KKyAgICAgICAgICAobmV3bGluZSkpCisgICAgICAgICAodAorICAgICAgICAgIChkZWxldGUt
aG9yaXpvbnRhbC1zcGFjZSkKKyAgICAgICAgICAobmV3bGluZSkKKyAgICAgICAgICAod2hlbiBi
cS1wcmVmaXggKGluc2VydCBicS1wcmVmaXgpKQorICAgICAgICAgIChpbnNlcnQgKG1ha2Utc3Ry
aW5nIGluZGVudCA/XHMpKSkpKSkKKyAgICAgKGluLWJxCisgICAgICAobGV0ICgoYnEtcHJlZml4
IChtYXJrZG93bi10cy0tYmxvY2stcXVvdGUtcHJlZml4KSkKKyAgICAgICAgICAgIDs7IEEgbGlu
ZSB3aXRoIG9ubHkgcXVvdGUgbWFya2VycyBhbmQgd2hpdGVzcGFjZSAoZS5nLiwKKyAgICAgICAg
ICAgIDs7ICI+ICIpIGlzICJibGFuayIgaW5zaWRlIHRoZSBxdW90ZS4gIFJFVCBoZXJlIGV4aXRz
IHRoZQorICAgICAgICAgICAgOzsgcXVvdGUsIHNhbWUgYXMgUkVUIG9uIGEgYmxhbmsgY29udGlu
dWF0aW9uIGxpbmUgZXhpdHMgYQorICAgICAgICAgICAgOzsgbGlzdDogcmVtb3ZlIHRoZSBwcmVm
aXggYW5kIGRyb3AgdG8gY29sdW1uIDAuCisgICAgICAgICAgICAoYmxhbmstbGluZS1wIChzYXZl
LWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGlu
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9va2luZy1hdC1wICJeWz4gXHRdKiQi
KSkpKQorICAgICAgICAoaWYgYmxhbmstbGluZS1wCisgICAgICAgICAgICAocHJvZ24KKyAgICAg
ICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAobGluZS1l
bmQtcG9zaXRpb24pKQorICAgICAgICAgICAgICAobmV3bGluZSkpCisgICAgICAgICAgKGRlbGV0
ZS1ob3Jpem9udGFsLXNwYWNlKQorICAgICAgICAgIChuZXdsaW5lKQorICAgICAgICAgIChpbnNl
cnQgYnEtcHJlZml4KSkpKQorICAgICA7OyBEZWZhdWx0OiBwbGFpbiBuZXdsaW5lLiAgVGhpcyBh
bHNvIGhhbmRsZXMgZW1wdHkgbGlzdCBtYXJrZXJzCisgICAgIDs7IChlLmcuLCAiLSAiIHdpdGgg
bm8gdGV4dCkgdGhhdCB0aGUgZ3JhbW1hciBwYXJzZXMgYXMgRVJST1IKKyAgICAgOzsgbm9kZXMg
cmF0aGVyIHRoYW4gbGlzdF9pdGVtIG5vZGVzLgorICAgICA7OworICAgICA7OyBXaGVuIHRoZSBj
dXJyZW50IGxpbmUgaXMgYmxhbmsgKHdoaXRlc3BhY2Ugb25seSksIGl0IGlzIGEKKyAgICAgOzsg
Y29udGludWF0aW9uLWluZGVudCBsaW5lIGxlZnQgYnkgYSBwcmV2aW91cyBSRVQgdGhhdAorICAg
ICA7OyB0cmVlLXNpdHRlciBubyBsb25nZXIgY29uc2lkZXJzIHBhcnQgb2YgYSBsaXN0X2l0ZW0u
ICBDbGVhcgorICAgICA7OyB0aGUgd2hpdGVzcGFjZSBzbyBubyB0cmFpbGluZyBzcGFjZXMgcmVt
YWluLCBhbmQgaW5zZXJ0IGEKKyAgICAgOzsgcGxhaW4gbmV3bGluZSBhdCBjb2x1bW4gMCB0byBl
eGl0IHRoZSBsaXN0IGNvbnRleHQuCisgICAgICh0CisgICAgICAod2hlbiAoc2F2ZS1leGN1cnNp
b24KKyAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAobG9v
a2luZy1hdC1wICJeWyBcdF0rJCIpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiAobGluZS1iZWdp
bm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgKG5ld2xpbmUpKSkp
KQorCisoZGVmdW4gbWFya2Rvd24tdHMtaW5zZXJ0LWxpc3QtaXRlbSAoKQorICAiSW5zZXJ0IGEg
bmV3IGxpc3QgaXRlbSwgc3BsaXR0aW5nIHRleHQgYXQgcG9pbnQuCitUZXh0IGFmdGVyIHBvaW50
IG1vdmVzIHRvIHRoZSBuZXcgaXRlbS4gIEF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLAorYW4g
ZW1wdHkgaXRlbSBpcyBpbnNlcnRlZCBhYm92ZSBhbmQgdGhlIGN1cnJlbnQgY29udGVudCBpcyBw
dXNoZWQgZG93bi4KK0luc2lkZSBhIGJsb2NrIHF1b3RlLCB0aGUgbmV3IGxpbmUgaW5jbHVkZXMg
dGhlIHF1b3RlIHByZWZpeC4KK0ZvciBvcmRlcmVkIGxpc3RzLCB0aGUgbnVtYmVyIGlzIGluY3Jl
bWVudGVkLgorV2hlbiBub3QgaW5zaWRlIGEgbGlzdCwgZmFsbCBiYWNrIHRvIGBtYXJrZG93bi10
cy1uZXdsaW5lJy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGxldCogKChub2RlICh0cmVlc2l0LW5v
ZGUtYXQKKyAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24gKGJhY2stdG8taW5kZW50YXRp
b24pIChwb2ludCkpCisgICAgICAgICAgICAgICAgJ21hcmtkb3duKSkKKyAgICAgICAgIChpbi1i
cSAoYW5kICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBibG9ja19xdW90ZVxcJyIpCisg
ICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAg
ICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAobG9va2luZy1h
dC1wICJbIFx0XSo+IikpKSkKKyAgICAgICAgIChicS1wcmVmaXggKHdoZW4gaW4tYnEgKG1hcmtk
b3duLXRzLS1ibG9jay1xdW90ZS1wcmVmaXgpKSkKKyAgICAgICAgIChpdGVtIChtYXJrZG93bi10
cy0tbGlzdC1pdGVtLWF0LXBvaW50KSkpCisgICAgKGNvbmQKKyAgICAgKChhbmQgaXRlbQorICAg
ICAgICAgICAob3IgKG5vdCBpbi1icSkKKyAgICAgICAgICAgICAgICg+PSAobWFya2Rvd24tdHMt
LWxpbmUtYmxvY2stcXVvdGUtZGVwdGgpCisgICAgICAgICAgICAgICAgICAgKG1hcmtkb3duLXRz
LS1saW5lLWJsb2NrLXF1b3RlLWRlcHRoCisgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5v
ZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKSkpKSkKKyAgICAgIChsZXQqICgo
bmV3LW1hcmtlciAobWFya2Rvd24tdHMtLW5ldy1tYXJrZXItZm9yLWxpbmUgaXRlbSkpCisgICAg
ICAgICAgICAgKGF0LWJvbCAoPD0gKGN1cnJlbnQtY29sdW1uKQorICAgICAgICAgICAgICAgICAg
ICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhY2st
dG8taW5kZW50YXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1
bW4pKSkpCisgICAgICAgICAgICAgKHRhaWwgKHdoZW4gKGFuZCAobm90IGF0LWJvbCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGxvb2tpbmctYXQtcCAiWyBcdF0qJCIpKSkK
KyAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtYW5kLWV4dHJhY3QtcmVnaW9uCisgICAgICAg
ICAgICAgICAgICAgICAgKHBvaW50KSAobGluZS1lbmQtcG9zaXRpb24pKSkpKQorICAgICAgICAo
aWYgYXQtYm9sCisgICAgICAgICAgICA7OyBBdCBCT0w6IGluc2VydCBlbXB0eSBpdGVtIGFib3Zl
LCBwdXNoIGN1cnJlbnQgbGluZSBkb3duLgorICAgICAgICAgICAgKHByb2duCisgICAgICAgICAg
ICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgKHdoZW4gYnEtcHJlZml4IChp
bnNlcnQgYnEtcHJlZml4KSkKKyAgICAgICAgICAgICAgKGluc2VydCBuZXctbWFya2VyICJcbiIp
CisgICAgICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0aW9uKSkKKyAgICAgICAgICA7OyBNaWQt
bGluZSBvciBFT0w6IG5ldyBpdGVtIGJlbG93IHdpdGggdGFpbCB0ZXh0LgorICAgICAgICAgIChk
ZWxldGUtaG9yaXpvbnRhbC1zcGFjZSkKKyAgICAgICAgICAobmV3bGluZSkKKyAgICAgICAgICAo
d2hlbiBicS1wcmVmaXggKGluc2VydCBicS1wcmVmaXgpKQorICAgICAgICAgIChpbnNlcnQgbmV3
LW1hcmtlcikKKyAgICAgICAgICAod2hlbiB0YWlsIChzYXZlLWV4Y3Vyc2lvbiAoaW5zZXJ0IChz
dHJpbmctdHJpbS1sZWZ0IHRhaWwpKSkpKSkpCisKKyAgICAgOzsgTm90IGluIGEgbGlzdDogZmFs
bCBiYWNrIHRvIG5ld2xpbmUgYmVoYXZpb3IuCisgICAgICh0IChtYXJrZG93bi10cy1uZXdsaW5l
KSkpKSkKKworOzs7IEZpbGxpbmc6CisKKyhkZWZjb25zdCBtYXJrZG93bi10cy0tZmlsbC11bmZp
bGxhYmxlLWJsb2NrLXF1ZXJ5CisgICcoWyhmZW5jZWRfY29kZV9ibG9jaykgKGluZGVudGVkX2Nv
ZGVfYmxvY2spIChwaXBlX3RhYmxlKV0gQGJsb2NrKQorICAiVHJlZS1zaXR0ZXIgcXVlcnkgbWF0
Y2hpbmcgYmxvY2tzIHdoZXJlIGZpbGxpbmcgaXMgaW5oaWJpdGVkLiIpCisKKyhkZWZ1biBtYXJr
ZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIChpdGVtKQorICAiUmV0dXJuIHRoZSBjb2x1
bW4gd2hlcmUgdGhlIHRleHQgb2YgbGlzdCBJVEVNIHN0YXJ0cy4KK1RoaXMgaXMgdGhlIGNvbHVt
biBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoIG5vZGUgaW5zaWRlIElURU0sIG9yCit0aGUgd2lkdGgg
b2YgdGhlIGxpc3QgbWFya2VyIGlmIG5vIHBhcmFncmFwaCBpcyBmb3VuZC4iCisgIChsZXQgKChw
YXJhZ3JhcGggKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgaXRlbSAiXFxgcGFyYWdyYXBoXFwnIikp
KQorICAgIChpZiBwYXJhZ3JhcGgKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAg
KGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IHBhcmFncmFwaCkpCisgICAgICAgICAgKGN1
cnJlbnQtY29sdW1uKSkKKyAgICAgIChsZXQgKChtYXJrZXIgKHRyZWVzaXQtbm9kZS1jaGlsZCBp
dGVtIDApKSkKKyAgICAgICAgKC0gKHRyZWVzaXQtbm9kZS1lbmQgbWFya2VyKQorICAgICAgICAg
ICAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt
LWZpbGwtbGlzdC1pdGVtIChpdGVtIGp1c3RpZnkpCisgICJGaWxsIHRoZSBjb250ZW50cyBvZiBs
aXN0IElURU0sIHByZXNlcnZpbmcgaXRzIGluZGVudGF0aW9uLgorTmFycm93cyB0byBJVEVNJ3Mg
b3duIHBhcmFncmFwaCBjb250ZW50IChleGNsdWRpbmcgbmVzdGVkIGxpc3RzKQorYW5kIHNldHMg
YGZpbGwtcHJlZml4JyB0byBhbGlnbiBjb250aW51YXRpb24gbGluZXMgd2l0aCB0aGUgc3RhcnQK
K29mIHRoZSBpdGVtJ3MgdGV4dC4gIEpVU1RJRlkgaXMgYXMgaW4gYGZpbGwtcGFyYWdyYXBoJy4i
CisgIChsZXQqICgoZmlsbC1wcmVmaXggKG1ha2Utc3RyaW5nIChtYXJrZG93bi10cy0tbGlzdC1p
dGVtLXRleHQtY29sdW1uIGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID9ccykpCisgICAgICAgICA7OyBGaW5kIHRoZSBpdGVtJ3Mgb3duIHBhcmFncmFwaCAoZmlyc3Qg
cGFyYWdyYXBoIGNoaWxkKS4KKyAgICAgICAgIDs7IElmIHRoZSBpdGVtIGhhcyBuZXN0ZWQgbGlz
dHMsIG5hcnJvdyB0byBqdXN0IHRoZQorICAgICAgICAgOzsgcGFyYWdyYXBoIHNvIHdlIGRvbid0
IG1lcmdlIG5lc3RlZCBpdGVtcy4KKyAgICAgICAgIChwYXJhICh0cmVlc2l0LXNlYXJjaC1zdWJ0
cmVlIGl0ZW0gIlxcYHBhcmFncmFwaFxcJyIgbmlsIG5pbCAxKSkKKyAgICAgICAgIChiZWcgKHRy
ZWVzaXQtbm9kZS1zdGFydCBpdGVtKSkKKyAgICAgICAgIChlbmQgKGlmIHBhcmEKKyAgICAgICAg
ICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHBhcmEpCisgICAgICAgICAgICAgICAgKHRyZWVz
aXQtbm9kZS1lbmQgaXRlbSkpKQorICAgICAgICAgOzsgVXNlIGRlZmF1bHQgcGFyYWdyYXBoIG1v
dGlvbiBpbnNpZGUgdGhlIG5hcnJvd2VkIHJlZ2lvbgorICAgICAgICAgOzsgc28gdGhhdCB0aGUg
aW5uZXIgYGZpbGwtcGFyYWdyYXBoJyBkb2VzIG5vdCByZS1lbnRlciBvdXIKKyAgICAgICAgIDs7
IGN1c3RvbSBwYXJhZ3JhcGgtZmluZGluZyBsb2dpYy4KKyAgICAgICAgIChmaWxsLWZvcndhcmQt
cGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJhZ3JhcGgpKQorICAgIChzYXZlLXJlc3Ry
aWN0aW9uCisgICAgICAobmFycm93LXRvLXJlZ2lvbiBiZWcgZW5kKQorICAgICAgKGZpbGwtcGFy
YWdyYXBoIGp1c3RpZnkpKQorICAgIDs7IFJldHVybiBub24tbmlsIHRvIHNpZ25hbCB0aGF0IGZp
bGxpbmcgaGFzIGJlZW4gaGFuZGxlZCwKKyAgICA7OyBhcyBwZXIgdGhlIGNvbnRyYWN0IG9mIGBm
aWxsLXBhcmFncmFwaC1mdW5jdGlvbicuCisgICAgdCkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t
YWRhcHRpdmUtZmlsbCAoKQorICAiUmV0dXJuIHRoZSBmaWxsIHByZWZpeCBmb3IgdGhlIGN1cnJl
bnQgbGluZSBpbiBNYXJrZG93bi4KK1doZW4gaW5zaWRlIGEgbGlzdCBpdGVtLCByZXR1cm4gc3Bh
Y2VzIG1hdGNoaW5nIHRoZSBjb2x1bW4gd2hlcmUKK3RoZSBpdGVtJ3MgdGV4dCBzdGFydHMuIgor
ICAoYW5kLWxldCogKChub2RlICh0cmVlc2l0LW5vZGUtYXQKKyAgICAgICAgICAgICAgICAgICAg
KHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAocG9pbnQpKQorICAgICAgICAg
ICAgICAgICAgICAnbWFya2Rvd24pKQorICAgICAgICAgICAgIChpdGVtICh0cmVlc2l0LXBhcmVu
dC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1cXCciKSkpCisgICAgKG1ha2Utc3RyaW5nIChtYXJr
ZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pID9ccykpKQorCisoZGVmdW4gbWFy
a2Rvd24tdHMtLWZpbGwtZm9yd2FyZC1wYXJhZ3JhcGggKGFyZykKKyAgIk1vdmUgZm9yd2FyZCBi
eSBBUkcgcGFyYWdyYXBocywgcmVzcGVjdGluZyBNYXJrZG93biBzdHJ1Y3R1cmUuCitMaXN0IGl0
ZW1zIGFyZSB0cmVhdGVkIGFzIGluZGl2aWR1YWwgcGFyYWdyYXBocy4gIEJsb2NrcyBtYXRjaGVk
CitieSBgbWFya2Rvd24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1xdWVyeScgYXJlIHNraXBw
ZWQ6IGJvdGgKK2ZvcndhcmQgYW5kIGJhY2t3YXJkIG1vdGlvbiBtb3ZlIHRvIHRoZSBlbmQgb2Yg
dGhlIGJsb2NrLCBzbworYGZpbGwtcmVnaW9uJyBzZWVzIGEgemVyby1sZW5ndGggcmVnaW9uIGFu
ZCBsZWF2ZXMgdGhlIGJsb2NrCit1bmZpbGxlZC4iCisgIChsZXQgKChkaXJlY3Rpb24gKGlmICg+
IGFyZyAwKSAxIC0xKSkKKyAgICAgICAgKGNvdW50IChhYnMgYXJnKSkKKyAgICAgICAgKG1vdmVk
IDApKQorICAgIChkb3RpbWVzIChfIGNvdW50KQorICAgICAgOzsgRm9yIGJhY2t3YXJkIG1vdGlv
biwgc2tpcCBiYWNrIG92ZXIgd2hpdGVzcGFjZSB0byBmaW5kCisgICAgICA7OyB0aGUgaXRlbSB3
ZSBhcmUgbGVhdmluZywgbm90IHRoZSBuZXh0IG9uZS4KKyAgICAgIChsZXQqICgocG9zIChpZiAo
PCBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAg
ICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHRcbiIpCisgICAg
ICAgICAgICAgICAgICAgICAgICAobWF4IChwb2ludC1taW4pICgxLSAocG9pbnQpKSkpCisgICAg
ICAgICAgICAgICAgICAgIChwb2ludCkpKQorICAgICAgICAgICAgIChibG9jayAoY2FyICh0cmVl
c2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtYnVm
ZmVyLXJvb3Qtbm9kZSAnbWFya2Rvd24pCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtk
b3duLXRzLS1maWxsLXVuZmlsbGFibGUtYmxvY2stcXVlcnkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgcG9zICgxKyBwb3MpKSkpCisgICAgICAgICAgICAgKGluZGVudGVkLXBvcyAoc2F2ZS1l
eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBwb3MpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0aW9uKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkKKyAgICAgICAgICAgICAobm9kZSAodHJl
ZXNpdC1ub2RlLWF0IGluZGVudGVkLXBvcyAnbWFya2Rvd24pKQorICAgICAgICAgICAgIChpdGVt
ICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1cXCciKSkpCisgICAgICAg
IDs7IFdoZW4gbW92aW5nIGZvcndhcmQgZnJvbSB3aGl0ZXNwYWNlIGJldHdlZW4gbGlzdCBpdGVt
cywKKyAgICAgICAgOzsgc2tpcCB0byB0aGUgbmV4dCBub24tYmxhbmsgcG9zaXRpb24gYW5kIGNo
ZWNrIGFnYWluLgorICAgICAgICAod2hlbiAoYW5kIChub3QgaXRlbSkgKG5vdCBibG9jaykgKD4g
ZGlyZWN0aW9uIDApKQorICAgICAgICAgIChsZXQgKChuZXh0LXBvcyAoc2F2ZS1leGN1cnNpb24K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHRcbiIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKQorICAgICAgICAgICAgKHNl
dHEgbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQtcG9zICdtYXJrZG93bikpCisgICAgICAgICAg
ICAoc2V0cSBpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1cXCci
KSkpKQorICAgICAgICAoY29uZAorICAgICAgICAgOzsgSW5zaWRlIGFuIHVuZmlsbGFibGUgYmxv
Y2s6IHNraXAgb3ZlciBpdCBlbnRpcmVseS4KKyAgICAgICAgIChibG9jaworICAgICAgICAgIChn
b3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgKGNkciBibG9jaykpKQorICAgICAgICAgIChzZXRx
IG1vdmVkICgxKyBtb3ZlZCkpKQorICAgICAgICAgOzsgSW5zaWRlIGEgbGlzdCBpdGVtOiB0cmVh
dCBhcyBwYXJhZ3JhcGggYm91bmRhcnkuCisgICAgICAgICAoaXRlbQorICAgICAgICAgIChpZiAo
PiBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVu
ZCBpdGVtKSkKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVt
KSkpCisgICAgICAgICAgKHNldHEgbW92ZWQgKDErIG1vdmVkKSkpCisgICAgICAgICA7OyBEZWZh
dWx0OiB1c2Ugc3RhbmRhcmQgcGFyYWdyYXBoIG1vdGlvbi4KKyAgICAgICAgICh0CisgICAgICAg
ICAgKGZvcndhcmQtcGFyYWdyYXBoIGRpcmVjdGlvbikKKyAgICAgICAgICAoc2V0cSBtb3ZlZCAo
MSsgbW92ZWQpKSkpKSkKKyAgICA7OyBSZXR1cm4gdGhlIG51bWJlciBvZiBwYXJhZ3JhcGhzIGxl
ZnQgdG8gbW92ZSAoMCA9IGFsbCBkb25lKS4KKyAgICAoLSBjb3VudCBtb3ZlZCkpKQorCisoZGVm
dW4gbWFya2Rvd24tdHMtLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9uYWwganVzdGlmeSkKKyAgIkZp
bGwgdGhlIGN1cnJlbnQgcGFyYWdyYXBoLCByZXNwZWN0aW5nIE1hcmtkb3duIGJsb2NrIHN0cnVj
dHVyZS4KK1RoaXMgZnVuY3Rpb24gcHJldmVudHMgZmlsbGluZyBpbnNpZGUgYmxvY2tzIG1hdGNo
ZWQgYnkKK2BtYXJrZG93bi10cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5JywgYW5kIGZp
bGxzIHdpdGhpbiBsaXN0CitpdGVtcyB3aXRob3V0IG1lcmdpbmcgYWRqYWNlbnQgaXRlbXMuICBK
VVNUSUZZIGlzIGFzIGluCitgZmlsbC1wYXJhZ3JhcGgnLiIKKyAgKGNvbmQqCisgICA7OyBEb24n
dCBmaWxsIGluc2lkZSB1bmZpbGxhYmxlIGJsb2Nrcy4gIFVzZSBhIHF1ZXJ5IGFnYWluc3QgdGhl
CisgICA7OyByb290IG5vZGUgYmVjYXVzZSBgdHJlZXNpdC1ub2RlLWF0JyBtYXkgbm90IHJldHVy
biBhIG5vZGUKKyAgIDs7IGluc2lkZSB0aGUgYmxvY2sgd2hlbiBwb2ludCBpcyBvbiBhbm9ueW1v
dXMgKHVubmFtZWQpIHRleHQuCisgICAoKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAodHJl
ZXNpdC1idWZmZXItcm9vdC1ub2RlICdtYXJrZG93bikKKyAgICAgbWFya2Rvd24tdHMtLWZpbGwt
dW5maWxsYWJsZS1ibG9jay1xdWVyeQorICAgICAocG9pbnQpIChtaW4gKDErIChwb2ludCkpIChw
b2ludC1tYXgpKSkKKyAgICB0KQorICAgOzsgRmlsbCB3aXRoaW4gdGhlIGVuY2xvc2luZyBsaXN0
IGl0ZW0uICBVc2UKKyAgIDs7IGBtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50JyB3aGlj
aCBoYW5kbGVzIGJsb2NrIHF1b3RlCisgICA7OyBtYXJrZXJzLiAgV2hlbiB0aGUgbGlzdCBpdGVt
IGlzIGluc2lkZSBhIGJsb2NrIHF1b3RlLCBkZWxlZ2F0ZQorICAgOzsgdG8gdGhlIGJsb2NrIHF1
b3RlIGZpbGxlciB3aGljaCBoYW5kbGVzIGA+ICcgcHJlZml4ZXMgY29ycmVjdGx5LgorICAgKChi
aW5kLWFuZCogKGl0ZW0gKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpKSkKKyAgICAo
aWYgKHRyZWVzaXQtcGFyZW50LXVudGlsIGl0ZW0gIlxcYGJsb2NrX3F1b3RlXFwnIikKKyAgICAg
ICAgKG1hcmtkb3duLXRzLS1maWxsLWJsb2NrLXF1b3RlIGp1c3RpZnkpCisgICAgICAobWFya2Rv
d24tdHMtLWZpbGwtbGlzdC1pdGVtIGl0ZW0ganVzdGlmeSkpKQorICAgOzsgUG9pbnQgaXMgb24g
YSBibGFuayBsaW5lIGJlZm9yZSBhIGxpc3QuICBJZiB0aGUgbmV4dAorICAgOzsgbm9uLXdoaXRl
c3BhY2UgcG9zaXRpb24gZmFsbHMgaW5zaWRlIGEgbGlzdCBpdGVtLCBmaWxsIHRoYXQgaXRlbS4K
KyAgICgoc2F2ZS1leGN1cnNpb24KKyAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgIChs
b29raW5nLWF0LXAgIlsgXHRdKiQiKSkKKyAgICAoYW5kLWxldCogKChuZXh0LXBvcyAoc2F2ZS1l
eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQg
IiBcdFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQorICAgICAgICAg
ICAgICAgKG5leHQtbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQtcG9zICdtYXJrZG93bikpCisg
ICAgICAgICAgICAgICAoaXRlbSAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICAgICAgICAgICAg
ICAgICAgICBuZXh0LW5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkKKyAgICAgIChtYXJrZG93bi10
cy0tZmlsbC1saXN0LWl0ZW0gaXRlbSBqdXN0aWZ5KSkpCisgICA7OyBGaWxsIHdpdGhpbiBhIGJs
b2NrIHF1b3RlLiAgTmFycm93IHRvIHRoZSBwYXJhZ3JhcGggbm9kZSBhdAorICAgOzsgcG9pbnQn
cyBuZXN0aW5nIGxldmVsIHNvIGxpbmVzIHdpdGggZGlmZmVyZW50IGA+ICcgZGVwdGhzCisgICA7
OyBhcmUgbm90IG1lcmdlZC4KKyAgICgodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICAgKHRyZWVz
aXQtbm9kZS1hdAorICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAo
cG9pbnQpKQorICAgICAgJ21hcmtkb3duKQorICAgICAiXFxgYmxvY2tfcXVvdGVcXCciKQorICAg
IChtYXJrZG93bi10cy0tZmlsbC1ibG9jay1xdW90ZSBqdXN0aWZ5KSkKKyAgIDs7IEZpbGwgd2l0
aGluIGFuIEhUTUwgY29tbWVudC4gIFRoZSBub2RlIHR5cGUgaXMgImh0bWxfYmxvY2siCisgICA7
OyBpbiBncmFtbWFyIHYwLjQueCBhbmQgImNvbW1lbnQiIGluIHNvbWUgb3RoZXIgdmVyc2lvbnMu
CisgICAoKGJpbmQtYW5kKiAoYmxvY2sgKGxldCAoKG4gKHRyZWVzaXQtbm9kZS1hdCAocG9pbnQp
ICdtYXJrZG93bikpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG9yICh0cmVlc2l0LXBhcmVu
dC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICJcXGBcXCg/Omh0bWxfYmxv
Y2tcXHxjb21tZW50XFwpXFwnIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kICht
ZW1iZXIgKHRyZWVzaXQtbm9kZS10eXBlIG4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcoImh0bWxfYmxvY2siICJjb21tZW50IikpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuKSkpKSkKKyAgICAobWFya2Rvd24tdHMtLWZpbGwtaHRtbC1jb21t
ZW50IGJsb2NrIGp1c3RpZnkpKQorICAgOzsgRGVmYXVsdDogbGV0IGZpbGwtcGFyYWdyYXBoIGhh
bmRsZSBpdC4KKyAgICh0IG5pbCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtaHRtbC1j
b21tZW50IChub2RlIGp1c3RpZnkpCisgICJGaWxsIEhUTUwgY29tbWVudCBOT0RFLCBhbGlnbmlu
ZyBjb250aW51YXRpb24gbGluZXMuCitSZXR1cm4gdCBpZiBOT0RFIGlzIGEgY29tbWVudCBhbmQg
d2FzIGZpbGxlZCwgbmlsIG90aGVyd2lzZS4KK0pVU1RJRlkgaXMgYXMgaW4gYGZpbGwtcGFyYWdy
YXBoJy4iCisgICh3aGVuIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgIChnb3RvLWNoYXIgKHRy
ZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgICAobG9va2luZy1hdC1wICI8IS0tIikp
CisgICAgKGxldCAoKGZpbGwtcHJlZml4IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAg
ICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgKCsgKGN1cnJlbnQtY29sdW1uKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoICI8IS0tICIpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHMpKSkKKyAgICAgICAgICAoYWRh
cHRpdmUtZmlsbC1mdW5jdGlvbiBuaWwpCisgICAgICAgICAgKGZpbGwtZm9yd2FyZC1wYXJhZ3Jh
cGgtZnVuY3Rpb24gIydmb3J3YXJkLXBhcmFncmFwaCkKKyAgICAgICAgICAoZmlsbC1wYXJhZ3Jh
cGgtZnVuY3Rpb24gbmlsKSkKKyAgICAgIChzYXZlLXJlc3RyaWN0aW9uCisgICAgICAgIChuYXJy
b3ctdG8tcmVnaW9uICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgIChmaWxsLXBhcmFncmFw
aCBqdXN0aWZ5KSkKKyAgICAgIHQpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1ibG9jay1xdW90
ZS1wcmVmaXggKCkKKyAgIlJldHVybiB0aGUgYmxvY2sgcXVvdGUgcHJlZml4IHN0cmluZyBmcm9t
IHRoZSBjdXJyZW50IGxpbmUuCitSZWFkIHRoZSBhY3R1YWwgYD4nIG1hcmtlcnMgKHdpdGggd2hh
dGV2ZXIgc3BhY2luZyB0aGUgdXNlciB3cm90ZSkKK2Zyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUg
bGluZSBzbyB0aGF0IGZpbGwgcHJlc2VydmVzIHRoZSBleGlzdGluZworc3R5bGUgKGUuZy4sIGA+
Pj4gJyBzdGF5cyBgPj4+ICcsIGA+ID4gPiAnIHN0YXlzIGA+ID4gPiAnKS4iCisgIChzYXZlLWV4
Y3Vyc2lvbgorICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAoaWYgKGxvb2tpbmctYXQgIlxc
KFs+IFx0XSo+XFwpWyBcdF0qIikKKyAgICAgICAgKGNvbmNhdCAobWF0Y2gtc3RyaW5nIDApKQor
ICAgICAgIj4gIikpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtYmxvY2stcXVvdGUgKGp1
c3RpZnkpCisgICJGaWxsIHRoZSBwYXJhZ3JhcGggYXQgcG9pbnQgaW5zaWRlIGEgYmxvY2sgcXVv
dGUuCitGaW5kIHRoZSBwYXJhZ3JhcGggbm9kZSBhdCBwb2ludCB3aXRoaW4gdGhlIGJsb2NrIHF1
b3RlIGFuZCBmaWxsCitvbmx5IHRoYXQgcGFyYWdyYXBoLCBwcmVzZXJ2aW5nIHRoZSBgPiAnIHBy
ZWZpeC4gIFdoZW4gdGhlCitwYXJhZ3JhcGggaXMgaW5zaWRlIGEgbGlzdCBpdGVtLCBhbGlnbiBj
b250aW51YXRpb24gbGluZXMgd2l0aAordGhlIGl0ZW0ncyB0ZXh0IGNvbHVtbi4gIEpVU1RJRlkg
aXMgYXMgaW4gYGZpbGwtcGFyYWdyYXBoJy4iCisgIDs7IFNraXAgcGFzdCBgPiAnIG1hcmtlcnMg
YW5kIGFueSBsaXN0IG1hcmtlciB0byBsYW5kIGluc2lkZSB0aGUKKyAgOzsgY29udGVudCwgd2hl
cmUgdGhlIHBhcmFncmFwaCBub2RlIGxpdmVzLgorICAobGV0KiAoKGNvbnRlbnQtcG9zIChzYXZl
LWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQor
ICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiPiBcdCIpCisgICAg
ICAgICAgICAgICAgICAgICAgICA7OyBJZiB3ZSBsYW5kIG9uIGEgbGlzdCBtYXJrZXIsIHNraXAg
cGFzdCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChsb29raW5nLWF0ICJbLSor
XSBcXHxbMC05XStbLildXHMiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy
IChtYXRjaC1lbmQgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAoMSsgKHBvaW50
KSkgKHBvaW50LW1heCkpKSkKKyAgICAgICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQgY29udGVu
dC1wb3MgJ21hcmtkb3duKSkKKyAgICAgICAgIChwYXJhICh0cmVlc2l0LXBhcmVudC11bnRpbAor
ICAgICAgICAgICAgICAgIG5vZGUgKGxhbWJkYSAobikKKyAgICAgICAgICAgICAgICAgICAgICAg
KGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAicGFyYWdyYXBoIikpKSkpCisgICAgKHdoZW4g
cGFyYQorICAgICAgOzsgVGhlIGdyYW1tYXIgbWF5IGluY2x1ZGUgdHJhaWxpbmcgYmxvY2tfY29u
dGludWF0aW9uIG5vZGVzCisgICAgICA7OyAoYmxhbmsgYD4gPicgbGluZXMpIGFzIGNoaWxkcmVu
IG9mIHRoZSBwYXJhZ3JhcGguICBVc2UgdGhlCisgICAgICA7OyBlbmQgb2YgdGhlIGxhc3QgaW5s
aW5lIGNoaWxkIHNvIGZpbGwgZG9lcyBub3QgbWVyZ2UgYWNyb3NzCisgICAgICA7OyB3aGF0IHNo
b3VsZCBiZSBhIHBhcmFncmFwaCBib3VuZGFyeS4KKyAgICAgIChsZXQqICgobGFzdC1pbmxpbmUK
KyAgICAgICAgICAgICAgKHNlcS1maW5kIChsYW1iZGEgKGNoaWxkKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxkKSAiaW5saW5lIikpCisg
ICAgICAgICAgICAgICAgICAgICAgICAocmV2ZXJzZSAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIHBh
cmEpKSkpCisgICAgICAgICAgICAgKHBhcmEtZW5kIChpZiBsYXN0LWlubGluZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbGFzdC1pbmxpbmUpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgcGFyYSkpKQorICAgICAgICAgICAg
IChicS1wcmVmaXggKG1hcmtkb3duLXRzLS1ibG9jay1xdW90ZS1wcmVmaXgpKQorICAgICAgICAg
ICAgIDs7IFdoZW4gaW5zaWRlIGEgbGlzdCBpdGVtLCBleHRlbmQgdGhlIHByZWZpeCB3aXRoIHNw
YWNlcworICAgICAgICAgICAgIDs7IHNvIGNvbnRpbnVhdGlvbiBsaW5lcyBhbGlnbiB3aXRoIHRo
ZSBpdGVtJ3MgdGV4dC4KKyAgICAgICAgICAgICAobGlzdC1pdGVtICh0cmVlc2l0LXBhcmVudC11
bnRpbCBwYXJhICJcXGBsaXN0X2l0ZW1cXCciKSkKKyAgICAgICAgICAgICAocHJlZml4IChpZiBs
aXN0LWl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0KiAoKHRleHQtY29sIChtYXJr
ZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGlzdC1pdGVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGV4dHJhIChtYXggMCAoLSB0ZXh0LWNvbCAobGVuZ3RoIGJxLXByZWZpeCkpKSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGJxLXByZWZpeCAobWFrZS1zdHJpbmcg
ZXh0cmEgP1xzKSkpCisgICAgICAgICAgICAgICAgICAgICAgIGJxLXByZWZpeCkpCisgICAgICAg
ICAgICAgKGFkYXB0aXZlLWZpbGwtZnVuY3Rpb24gbmlsKQorICAgICAgICAgICAgIChmaWxsLWZv
cndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJhZ3JhcGgpCisgICAgICAgICAg
ICAgKGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uIG5pbCkpCisgICAgICAgIChzYXZlLXJlc3RyaWN0
aW9uCisgICAgICAgICAgOzsgTmFycm93IHRvIHRoZSBmdWxsIGxpbmVzIG9mIHRoZSBwYXJhZ3Jh
cGggc28gdGhhdCB0aGUKKyAgICAgICAgICA7OyBgPiAnIG1hcmtlcnMgYXJlIGluY2x1ZGVkIGlu
IHRoZSBmaWxsIHJlZ2lvbi4KKyAgICAgICAgICAobmFycm93LXRvLXJlZ2lvbgorICAgICAgICAg
ICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUt
c3RhcnQgcGFyYSkpCisgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAg
ICAgIChwb2ludCkpCisgICAgICAgICAgIHBhcmEtZW5kKQorICAgICAgICAgIChsZXQgKChmaWxs
LXByZWZpeCBwcmVmaXgpKQorICAgICAgICAgICAgKGZpbGwtcGFyYWdyYXBoIGp1c3RpZnkpKSkp
KSkKKyAgdCkKKworOzs7IENvZGUgYmxvY2tzOgorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRz
LS1jb2RlLWJsb2NrLWxhbmd1YWdlcyBuaWwKKyAgIkFsaXN0IG1hcHBpbmcgbGFuZ3VhZ2Ugbm9k
ZSBuYW1lcyB0byB0cyBsYW5ndWFnZS4KK0lmIGEgbGFuZ3VhZ2UgaXMgbm90IGEgdHMgbGFuZ3Vh
Z2Ugb3IgaXMgbm90IG1hcHBlZCB0byBvbmUsIGl0IHdpbGwgYmUKK2luIGBtYXJrZG93bi10cy0t
Y29kZS1ibG9jay1ub24tdHMtbW9kZXMnLiIpCisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMt
LWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzIG5pbAorICAiQWxpc3QgbWFwcGluZyBsYW5ndWFnZXMg
dG8gbm9uLXRyZWUtc2l0dGVyIG1vZGVzIGZvciBjb2RlIGJsb2Nrcy4KK1BvcHVsYXRlZCBieSBg
bWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UnIHRvIGlkZW50aWZ5IGEKK2NvZGUt
YmxvY2sgbGFuZ3VhZ2UgbW9kZSB3aGljaCBpcyBub3QgYSB0cmVlLXNpdHRlciBtb2RlIG9yIGZv
ciB3aGljaAordGhlIHRyZWUtc2l0dGVyIGdyYW1tYXIgaXMgdW5hdmFpbGFibGUuIikKKworKGRl
ZnVuIG1hcmtkb3duLXRzLS1oYXJ2ZXN0LW1vZGUtdHJlZXNpdC1jb25maWd1cmF0aW9uIChtb2Rl
KQorICAiSGFydmVzdCB0cmVlLXNpdHRlciBjb25maWd1cmF0aW9uIGZyb20gTU9ERS4KK1JldHVy
biBhIHBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGFuZCB2YWx1ZXM6CiAKICAgICA6Zm9u
dC1sb2NrIChmcm9tIGB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncycpCiAgICAgOnNpbXBsZS1p
bmRlbnQgKGZyb20gYHRyZWVzaXQtc2ltcGxlLWluZGVudC1ydWxlcycpCiAgICAgOnJhbmdlIChm
cm9tIGB0cmVlc2l0LXJhbmdlLXNldHRpbmdzJykiCiAgICh3aXRoLXRlbXAtYnVmZmVyCi0gICAg
KGZ1bmNhbGwgbW9kZSkKLSAgICAobGlzdCA6Zm9udC1sb2NrIHRyZWVzaXQtZm9udC1sb2NrLXNl
dHRpbmdzCisgICAgKGRlbGF5LW1vZGUtaG9va3MgKGZ1bmNhbGwgbW9kZSkpCisgICAgKGxpc3Qg
Omxhbmd1YWdlICh0cmVlc2l0LWxhbmd1YWdlLWF0IChwb2ludC1taW4pKQorICAgICAgICAgIDpm
b250LWxvY2sgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKICAgICAgICAgICA6c2ltcGxlLWlu
ZGVudCB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMKICAgICAgICAgICA6cmFuZ2UgdHJlZXNp
dC1yYW5nZS1zZXR0aW5ncykpKQogCi0oZGVmdW4gbWFya2Rvd24tdHMtLWFkZC1jb25maWctZm9y
LW1vZGUgKGxhbmd1YWdlIG1vZGUpCi0gICJBZGQgY29uZmlndXJhdGlvbnMgZm9yIExBTkdVQUdF
IGZyb20gTU9ERSB0byBjdXJyZW50IGJ1ZmZlci4KLQotQ29uZmlndXJhdGlvbiBpbmNsdWRlcyBm
b250LWxvY2sgYW5kIGluZGVudC4gIEZvciBmb250LWxvY2sgcnVsZXMsIHVzZQotdGhlIHNhbWUg
ZmVhdHVyZXMgZW5hYmxlZCBpbiBNT0RFLiIKLSAgKGxldCAoKGNvbmZpZ3MgKG1hcmtkb3duLXRz
LS1oYXJ2ZXN0LXRyZWVzaXQtY29uZmlncyBtb2RlKSkpCi0gICAgKGlnbm9yZSBsYW5ndWFnZSkg
OyBXZSBtaWdodCBtYWtlIHVzZSBvZiB0aGlzIGxhdGVyLgotICAgIChzZXRxIHRyZWVzaXQtZm9u
dC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0
aW5ncwotICAgICAgICAgICAgICAgICAgOzsgR2V0IGFsbCB0aGUgZm9udC1sb2NrIHNldHRpbmdz
LCBpbmNsdWRpbmcgb25lcyB0aGF0Ci0gICAgICAgICAgICAgICAgICA7OyBkb24ndCBwZXJ0YWlu
IHRvIExBTkdVQUdFLiAgVGhpcyB3YXkgd2UgZ2V0IGpzZG9jCi0gICAgICAgICAgICAgICAgICA7
OyBmcm9tIGpzLXRzLW1vZGUsIGZvciBleGFtcGxlLgotICAgICAgICAgICAgICAgICAgKHBsaXN0
LWdldCBjb25maWdzIDpmb250LWxvY2spKSkKLSAgICAoc2V0cSB0cmVlc2l0LXNpbXBsZS1pbmRl
bnQtcnVsZXMKLSAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtc2ltcGxlLWluZGVudC1ydWxlcwot
ICAgICAgICAgICAgICAgICAgOzsgU2ltaWxhcmx5LCBnZXQgYWxsIGluZGVudCBydWxlcy4KLSAg
ICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgY29uZmlncyA6c2ltcGxlLWluZGVudCkpKQorKGRl
ZnVuIG1hcmtkb3duLXRzLS1jb25maWd1cmUtY3VycmVudC1idWZmZXIgKGNvbmZpZ3VyYXRpb24p
CisgICJBZGQgQ09ORklHVVJBVElPTiB0byB0aGUgY3VycmVudCBidWZmZXIuCitDT05GSUdVUkFU
SU9OIGluY2x1ZGVzIGZvbnQtbG9jayBhbmQgaW5kZW50IHJ1bGVzLiAgRm9yIGZvbnQtbG9jayBy
dWxlcywKK3VzZSB0aGUgc2FtZSBmZWF0dXJlcyBlbmFibGVkIGluIE1PREUuIgorICAoc2V0cSB0
cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1s
b2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgOzsgR2V0IGFsbCB0aGUgZm9udC1sb2NrIHNl
dHRpbmdzLCBpbmNsdWRpbmcgb25lcyB0aGF0CisgICAgICAgICAgICAgICAgOzsgZG9uJ3QgcGVy
dGFpbiB0byBNT0RFLiAgVGhpcyB3YXksIHdlIGdldCBqc2RvYworICAgICAgICAgICAgICAgIDs7
IGZyb20ganMtdHMtbW9kZSwgZm9yIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgKHBsaXN0LWdl
dCBjb25maWd1cmF0aW9uIDpmb250LWxvY2spKSkKKyAgKHNldHEgdHJlZXNpdC1zaW1wbGUtaW5k
ZW50LXJ1bGVzCisgICAgICAgIChhcHBlbmQgdHJlZXNpdC1zaW1wbGUtaW5kZW50LXJ1bGVzCisg
ICAgICAgICAgICAgICAgOzsgU2ltaWxhcmx5LCBnZXQgYWxsIGluZGVudCBydWxlcy4KKyAgICAg
ICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3VyYXRpb24gOnNpbXBsZS1pbmRlbnQpKSkKICAg
ICAoc2V0cSB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCiAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0
LXJhbmdlLXNldHRpbmdzCiAgICAgICAgICAgICAgICAgICA7OyBGaWx0ZXIgb3V0IGZ1bmN0aW9u
IHF1ZXJpZXMsIGJlY2F1c2UgdGhleSBhcmUKQEAgLTMwMiw0NSArMjQyNSw0ODEgQEAgbWFya2Rv
d24tdHMtLWFkZC1jb25maWctZm9yLW1vZGUKICAgICAgICAgICAgICAgICAgIDs7IENhc2UgaW4g
cG9pbnQ6IGMtdHMtbW9kZSdzIHJhbmdlIHNldHRpbmcuCiAgICAgICAgICAgICAgICAgICAoc2Vx
LWZpbHRlciAobGFtYmRhIChzZXR0aW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobm90IChmdW5jdGlvbnAgKGNhciBzZXR0aW5nKSkpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHBsaXN0LWdldCBjb25maWdzIDpyYW5nZSkpKSkKLSAgICAoc2V0cS1sb2NhbCBp
bmRlbnQtbGluZS1mdW5jdGlvbiAjJ3RyZWVzaXQtaW5kZW50KQotICAgIChzZXRxLWxvY2FsIGlu
ZGVudC1yZWdpb24tZnVuY3Rpb24gIyd0cmVlc2l0LWluZGVudC1yZWdpb24pKSkKLQotKGRlZnVu
IG1hcmtkb3duLXRzLS1jb252ZXJ0LWNvZGUtYmxvY2stbGFuZ3VhZ2UgKG5vZGUpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3VyYXRpb24gOnJhbmdlKSkp
KQorICAoc2V0cS1sb2NhbCBpbmRlbnQtbGluZS1mdW5jdGlvbiAjJ3RyZWVzaXQtaW5kZW50KQor
ICAoc2V0cS1sb2NhbCBpbmRlbnQtcmVnaW9uLWZ1bmN0aW9uICMndHJlZXNpdC1pbmRlbnQtcmVn
aW9uKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1sYW5ndWFnZS1hdC1ub2RlIChub2RlKQorICAi
UmV0dXJuIHRoZSBsYW5ndWFnZSBzeW1ib2wgZm9yIGNvZGVfZmVuY2VfY29udGVudCBOT0RFLiIK
KyAgKHdoZW4tbGV0KiAoKHBhcmVudCAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkKKyAgICAg
ICAgICAgICAgKGxhbmctbm9kZSAod2hlbiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVudCAiXFxgbGFuZ3VhZ2VcXCciKSkpKQor
ICAgIChpbnRlcm4gKHRyZWVzaXQtbm9kZS10ZXh0IGxhbmctbm9kZSB0KSkpKQorCisoZGVmdmFy
LWxvY2FsIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZSAobWFrZS1oYXNoLXRhYmxl
IDp0ZXN0ICMnZXF1YWwpCisgICJDYWNoZSBmb3Igbm9uLXRyZWUtc2l0dGVyIGNvZGUgYmxvY2sg
Zm9udGlmaWNhdGlvbi4KK0tleXMgYXJlIChMQU5HIC4gQ09OVEVOVC1IQVNIKSBjb25zIGNlbGxz
LCB2YWx1ZXMgYXJlIGxpc3RzIG9mCitcKE9GRlNFVC1TVEFSVCBPRkZTRVQtRU5EIEZBQ0UpIHRy
aXBsZXMuIikKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2Fj
aGUtdGljayBuaWwKKyAgIkZvciBibHVudCBgYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2snIGNh
Y2hlIGludmFsaWRhdGlvbi4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbm9uLXRz
LWNvZGUtYmxvY2sgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0IF8pCisgICJGb250aWZ5
IGNvZGVfZmVuY2VfY29udGVudCBOT0RFIHVzaW5nIGEgbm9uLXRyZWUtc2l0dGVyIG1vZGUuCitB
cHBseSB0aGUgY29kZS1ibG9jayBtb2RlJ3MgY29udmVudGlvbmFsIGZvbnQtbG9jayBpbiBhIHRl
bXBvcmFyeQorYnVmZmVyLiAgT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhy
b3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4KKworQ2FjaGUgcmVzdWx0
cyB0byBhdm9pZCBmb250aWZpY2F0aW9uIG9mIHVuY2hhbmdlZCBjb2RlIGJsb2Nrcy4KKworTk9E
RSBzaG91bGQgYWxyZWFkeSBoYXZlIHBhc3NlZCB0aHJvdWdoCitgbWFya2Rvd24tdHMtLWNvZGUt
YmxvY2stdHMtbGFuZ3VhZ2UnIHdoaWNoIG1heSBoYXZlIGNsYXNzaWZpZWQgdGhpcworbm9kZSBh
cyBhIG5vbi10cyBtb2RlLiIKKyAgKHdoZW4tbGV0KiAoKF8gbWFya2Rvd24tdHMtZm9udGlmeS1j
b2RlLWJsb2Nrcy1uYXRpdmVseSkKKyAgICAgICAgICAgICAgKGxhbmcgKG1hcmtkb3duLXRzLS1s
YW5ndWFnZS1hdC1ub2RlIG5vZGUpKQorICAgICAgICAgICAgICAobW9kZSAoYWxpc3QtZ2V0IGxh
bmcgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKSkKKyAgICAgICAgICAgICAg
KHRpY2sgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrKSkKKyAgICAgICAgICAgICAgKGJsb2Nr
LXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAgICAgIDs7IENhbm5v
dCB1c2UgbWFya2VycyAnbWFya2Rvd24tdHMtY29kZS1iZWctbWFya2VyCisgICAgICAgICAgICAg
IDs7ICdtYXJrZG93bi10cy1jb2RlLWVuZC1tYXJrZXIgdGhleSBhcmUgc2V0IGFmdGVyIHRoaXMK
KyAgICAgICAgICAgICAgOzsgZnVuY3Rpb24gcnVucy4KKyAgICAgICAgICAgICAgKG5vZGUtc3Rh
cnQgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hh
ciAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKQorICAgICAgICAgICAgICAobm9kZS1lbmQgKHNh
dmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVz
aXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJz
LWJhY2t3YXJkICIgXHQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkpCisg
ICAgKHdoZW4gKD4gbm9kZS1lbmQgbm9kZS1zdGFydCkKKyAgICAgICh1bmxlc3MgKGVxIHRpY2sg
bWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5LWNhY2hlLXRpY2spCisgICAgICAgIChjbHJoYXNo
IG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZSkpCisgICAgICAobGV0KiAoKGNhY2hl
LWtleSAoY29ucyBsYW5nIChzZWN1cmUtaGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3NoYTI1NgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1
cnJlbnQtYnVmZmVyKSBub2RlLXN0YXJ0IG5vZGUtZW5kKSkpCisgICAgICAgICAgICAgKHByb3Bz
CisgICAgICAgICAgICAgIChvciAoZ2V0aGFzaCBjYWNoZS1rZXkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZSkKKyAgICAgICAgICAg
ICAgICAgIChsZXQgKChyZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24t
dHMtLWZvbnRpZnktbm9uLXRzLWNvbGxlY3QtZmFjZXMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kZSBub2RlLXN0YXJ0IG5vZGUtZW5kKSkpCisgICAgICAgICAgICAgICAgICAgIChwdXRo
YXNoIGNhY2hlLWtleSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rv
d24tdHMtLW5vbi10cy1mb250aWZ5LWNhY2hlKQorICAgICAgICAgICAgICAgICAgICAoc2V0cSBt
YXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUtdGljayB0aWNrKQorICAgICAgICAgICAg
ICAgICAgICByZXN1bHQpKSkpCisgICAgICAgIChkb2xpc3QgKHJhbmdlIHByb3BzKQorICAgICAg
ICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICAgICAgICAobnRoIDAgcmFu
Z2UpCisgICAgICAgICAgIChudGggMSByYW5nZSkKKyAgICAgICAgICAgKG50aCAyIHJhbmdlKQor
ICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz
LS1mb250aWZ5LW5vbi10cy1jb2xsZWN0LWZhY2VzIChtb2RlIGJlZyBlbmQpCisgICJSdW4gTU9E
RSBvbiB0aGUgQkVHLi5FTkQgcmVnaW9uJ3MgdGV4dCBhbmQgaGFydmVzdCBmYWNlIHByb3BlcnRp
ZXMuCitSZXR1cm4gYSBsaXN0IG9mIChCVUYtQkVHIEJVRi1FTkQgRkFDRSkgdHJpcGxlcyBpbiBi
YXNlLWJ1ZmZlcgorY29vcmRpbmF0ZXMuCisKK0ZvciBub24tdHJlZS1zaXR0ZXIgbW9kZXMgdXNl
IGFuIGluZGlyZWN0IGJ1ZmZlciBuYXJyb3dlZCB0byBCRUcuLkVORDoKK3JlZ2V4L3N5bnRhY3Rp
YyBmb250LWxvY2sgaG9ub3JzIG5hcnJvd2luZyBhbmQgdGhlIGluZGlyZWN0IGJ1ZmZlcgorc2hh
cmVzIHRleHQgd2l0aCB0aGUgYmFzZSwgc28gdGhpcyBpcyBsZXNzIGV4cGVuc2l2ZSBhbmQgY29w
eS1mcmVlLgorCitGb3IgdHMgbW9kZXMgaW4gYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stZm9yY2Ut
Y29udmVudGlvbmFsLW1vZGVzJywgZmFsbAorYmFjayB0byBhIHRlbXAgYnVmZmVyLiAgQSBwYXJz
ZXIgY3JlYXRlZCBpbiB0aGUgc291cmNlIGJ1ZmZlciBkb2VzIG5vdAorcmVhY3QgdG8gbmFycm93
aW5nIGluIGFuIGluZGlyZWN0IGJ1ZmZlciBkZXJpdmVkIGZyb20gaXQgKG9ubHkgcGFyc2Vycwor
Y3JlYXRlZCBpbiB0aGF0IGluZGlyZWN0IGJ1ZmZlciB3b3VsZCBob25vciBpdHMgbmFycm93aW5n
KSwgc28gcmV1c2luZwordGhlIGhvc3QgcGFyc2VyIHZpYSBhbiBpbmRpcmVjdCBidWZmZXIgaXMg
bm90IGFuIG9wdGlvbiBoZXJlLiAgQW5kIGluCit0aGUgaG9zdCBidWZmZXIgaXRzZWxmLCB0aGUg
aW5uZXIgY29udGVudCBvZiBhIGZlbmNlZCBjb2RlIGJsb2NrIGlzCitqdXN0IG9wYXF1ZSB0ZXh0
IGluc2lkZSBhIGBjb2RlX2ZlbmNlX2NvbnRlbnQnIG5vZGUsIG5ldmVyIHJlLXBhcnNlZAorYXMg
YSBmcmVzaCBkb2N1bWVudC4gIEEgdGVtcCBidWZmZXIgd2l0aCBhIGZyZXNoIHBhcnNlciBzZWVz
IHRoZSBpbm5lcgorY29udGVudCBhcyBhIHN0YW5kYWxvbmUgbWFya2Rvd24gZG9jdW1lbnQsIHdo
aWNoIGlzIHdoYXQgd2Ugd2FudC4iCisgIChjb25kICgobWVtcSBtb2RlIG1hcmtkb3duLXRzLWNv
ZGUtYmxvY2stZm9yY2UtY29udmVudGlvbmFsLW1vZGVzKQorICAgICAgICAgKGxldCAoKGNvbnRl
bnQgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkKKyAgICAgICAgICAg
ICAgIHJlcykKKyAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAgICAgICAoaW5z
ZXJ0IGNvbnRlbnQpCisgICAgICAgICAgICAgKGRlbGF5LW1vZGUtaG9va3MKKyAgICAgICAgICAg
ICAgIChsZXQgKChtYXJrZG93bi10cy0tc2V0LXVwLWlubGluZSB0KSkKKyAgICAgICAgICAgICAg
ICAgKG1hcmtkb3duLXRzLW1vZGUpKSkKKyAgICAgICAgICAgICAoZm9udC1sb2NrLWVuc3VyZSkK
KyAgICAgICAgICAgICAobGV0ICgocG9zIChwb2ludC1taW4pKSkKKyAgICAgICAgICAgICAgICh3
aGlsZSAoPCBwb3MgKHBvaW50LW1heCkpCisgICAgICAgICAgICAgICAgIChsZXQgKChuZXh0IChu
ZXh0LXNpbmdsZS1wcm9wZXJ0eS1jaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBvcyAnZmFjZSBuaWwgKHBvaW50LW1heCkpKQorICAgICAgICAgICAgICAgICAgICAgICAoZmFj
ZSAoZ2V0LXRleHQtcHJvcGVydHkgcG9zICdmYWNlKSkpCisgICAgICAgICAgICAgICAgICAgKHdo
ZW4gZmFjZQorICAgICAgICAgICAgICAgICAgICAgOzsgVHJhbnNsYXRlIHRlbXAtYnVmZmVyIG9m
ZnNldHMgYmFjayB0byBiYXNlLWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgOzsgcG9zaXRp
b25zOiB0ZW1wIGBwb2ludC1taW4nIGNvcnJlc3BvbmRzIHRvIEJFRy4KKyAgICAgICAgICAgICAg
ICAgICAgIChwdXNoIChsaXN0ICgrIGJlZyAoMS0gcG9zKSkgKCsgYmVnICgxLSBuZXh0KSkgZmFj
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcykpCisgICAgICAgICAgICAgICAgICAg
KHNldHEgcG9zIG5leHQpKSkpKQorICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpCisgICAgICAg
ICh0CisgICAgICAgICAobGV0ICgoaW5kaXJlY3QtYnVmZmVyIChtYWtlLWluZGlyZWN0LWJ1ZmZl
cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdlbmVyYXRlLW5ldy1idWZmZXItbmFtZSAo
YnVmZmVyLW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsICdpbmhp
Yml0LWJ1ZmZlci1ob29rcykpCisgICAgICAgICAgICAgICByZXMpCisgICAgICAgICAgICh1bndp
bmQtcHJvdGVjdAorICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgaW5kaXJlY3Qt
YnVmZmVyCisgICAgICAgICAgICAgICAgIChkZWxheS1tb2RlLWhvb2tzIChmdW5jYWxsIG1vZGUp
KQorICAgICAgICAgICAgICAgICAobmFycm93LXRvLXJlZ2lvbiBiZWcgZW5kKQorICAgICAgICAg
ICAgICAgICAoZm9udC1sb2NrLWVuc3VyZSkKKyAgICAgICAgICAgICAgICAgKGxldCAoKHBvcyAo
cG9pbnQtbWluKSkpCisgICAgICAgICAgICAgICAgICAgKHdoaWxlICg8IHBvcyAocG9pbnQtbWF4
KSkKKyAgICAgICAgICAgICAgICAgICAgIChsZXQgKChuZXh0IChuZXh0LXNpbmdsZS1wcm9wZXJ0
eS1jaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgJ2ZhY2Ugbmls
IChwb2ludC1tYXgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChmYWNlIChnZXQtdGV4
dC1wcm9wZXJ0eSBwb3MgJ2ZhY2UpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gZmFj
ZQorICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChsaXN0IHBvcyBuZXh0IGZhY2UpIHJl
cykpCisgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHBvcyBuZXh0KSkpKSkKKyAgICAgICAg
ICAgICAoa2lsbC1idWZmZXIgaW5kaXJlY3QtYnVmZmVyKSkKKyAgICAgICAgICAgKG5yZXZlcnNl
IHJlcykpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2Rl
IChsYW5nKQorICAiQ29tcHV0ZSBhbmQgY2FjaGUgYSBtb2RlIHN5bWJvbCBmcm9tIExBTkcsIGEg
c3ltYm9sLgorQ29uc3VsdCB0aGUgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbWFwJyBjYWNoZSwg
b3IgY29uc3VsdAorYHRyZWVzaXQtbWFqb3ItbW9kZS1yZW1hcC1hbGlzdCcgYW5kIGBtYWpvci1t
b2RlLXJlbWFwLWFsaXN0Jywgb3IgYnJ1dGUKK2ZvcmNlIG1vZGUgcHJvYmUuICBSZXR1cm4gYSB2
YWxpZCBtb2RlIHN5bWJvbCBvciBuaWwuIgorICAoaWYtbGV0KiAoKG1hcHBlZC1tb2RlIChjYXIg
KGFsaXN0LWdldCBsYW5nIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMpKSkpCisgICAgICBt
YXBwZWQtbW9kZQorICAgIChsZXQqICgobGFuZy1zdHJpbmcgKHN5bWJvbC1uYW1lIGxhbmcpKQor
ICAgICAgICAgICAobGFuZy1tb2RlIChjb25jYXQgbGFuZy1zdHJpbmcgIi1tb2RlIikpCisgICAg
ICAgICAgIChtb2RlKSkKKyAgICAgIChpZiAoc2V0cSBtb2RlIChhbGlzdC1nZXQgbGFuZy1tb2Rl
IHRyZWVzaXQtbWFqb3ItbW9kZS1yZW1hcC1hbGlzdCkpCisgICAgICAgICAgbW9kZQorICAgICAg
ICAoaWYgKHNldHEgbW9kZSAoYWxpc3QtZ2V0IGxhbmctbW9kZSBtYWpvci1tb2RlLXJlbWFwLWFs
aXN0KSkKKyAgICAgICAgICAgIG1vZGUKKyAgICAgICAgICAoY2F0Y2ggOm1vZGUKKyAgICAgICAg
ICAgIChkb2xpc3QgKG1vZGUKKyAgICAgICAgICAgICAgICAgICAgIChsaXN0CisgICAgICAgICAg
ICAgICAgICAgICAgOzsgVHJ5IGEgdHJlZXNpdCBtb2RlIHVzaW5nIHRoZSByYXcgc3RyaW5nLgor
ICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgbGFuZy1zdHJpbmcgIi10cy1tb2RlIikKKyAg
ICAgICAgICAgICAgICAgICAgICA7OyBUcnkgYSBjb252ZW50aW9uYWwgbW9kZSB1c2luZyB0aGUg
cmF3IHN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICBsYW5nLW1vZGUKKyAgICAgICAgICAg
ICAgICAgICAgICA7OyBUcnkgYSB0cmVlc2l0IG1vZGUgdXNpbmcgdGhlIGRvd25jYXNlZCBzdHJp
bmcuCisgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAoZG93bmNhc2UgbGFuZy1zdHJpbmcp
ICItdHMtbW9kZSIpCisgICAgICAgICAgICAgICAgICAgICAgOzsgVHJ5IGEgY29udmVudGlvbmFs
IG1vZGUgdXNpbmcgdGhlIGRvd25jYXNlZCBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAg
KGNvbmNhdCAoZG93bmNhc2UgbGFuZy1zdHJpbmcpICItbW9kZSIpKSkKKyAgICAgICAgICAgICAg
KHNldHEgbW9kZSAoaW50ZXJuIG1vZGUpKQorICAgICAgICAgICAgICAod2hlbiAoZmJvdW5kcCBt
b2RlKQorICAgICAgICAgICAgICAgIChwdXNoIChsaXN0IGxhbmcgbW9kZSkgbWFya2Rvd24tdHMt
Y29kZS1ibG9jay1tb2RlcykKKyAgICAgICAgICAgICAgICAodGhyb3cgOm1vZGUgbW9kZSkpKSkp
KSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UgKG5vZGUp
CiAgICJDb252ZXJ0IE5PREUgdG8gYSBsYW5ndWFnZSBmb3IgdGhlIGNvZGUgYmxvY2suIgotICAo
bGV0KiAoKGxhbmctc3RyaW5nIChhbGlzdC1nZXQgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tY29kZS1ibG9jay1s
YW5ndWFnZS1tYXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5v
ZGUtdGV4dCBub2RlKSBuaWwgIydlcXVhbCkpCi0gICAgICAgICAobGFuZyAoaWYgKHN5bWJvbHAg
bGFuZy1zdHJpbmcpCi0gICAgICAgICAgICAgICAgICAgbGFuZy1zdHJpbmcKLSAgICAgICAgICAg
ICAgICAgKGludGVybiAoZG93bmNhc2UgbGFuZy1zdHJpbmcpKSkpKQotICAgIDs7IEZJWE1FOiBL
aW5kIG9mIGEgaGFjayBoZXJlOiB3ZSB1c2UgdGhpcyBmdW5jdGlvbiBhcyBhIGhvb2sgZm9yCi0g
ICAgOzsgbG9hZGluZyB1cCBjb25maWdzIGZvciB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb2RlIGJs
b2NrIG9uLWRlbWFuZC4KLSAgICAobGV0ICgobW9kZSAoYWxpc3QtZ2V0IGxhbmcgbWFya2Rvd24t
dHMtY29kZS1ibG9jay1zb3VyY2UtbW9kZS1tYXApKSkKLSAgICAgIDs7IElmIHRoZXJlJ3Mgbm8g
c3VwcG9ydGVkIG1vZGUgZm9yIHRoZSBsYW5ndWFnZSwgcmV0dXJuIG5pbCwKLSAgICAgIDs7IHdo
aWNoIG1ha2VzIEVtYWNzIHNraXAgdGhlIGNvZGUgYmxvY2suCi0gICAgICAoaWYgKG5vdCAoYW5k
IG1vZGUgKGZib3VuZHAgbW9kZSkpKQotICAgICAgICAgIG5pbAotICAgICAgICA7OyBJZiB0aGVy
ZSdzIGEgbWFqb3IgbW9kZSBmb3IgdGhlIGxhbmd1YWdlLCBzZXQgdXAgdGhlIGNvbmZpZwotICAg
ICAgICA7OyBhbmQgcmV0dXJuIHRoZSBsYW5ndWFnZS4KLSAgICAgICAgKHdoZW4gKG5vdCAobWVt
cSBsYW5nIG1hcmtkb3duLXRzLS1jb25maWd1cmVkLWxhbmd1YWdlcykpCi0gICAgICAgICAgKG1h
cmtkb3duLXRzLS1hZGQtY29uZmlnLWZvci1tb2RlIGxhbmcgbW9kZSkKLSAgICAgICAgICAocHVz
aCBsYW5nIG1hcmtkb3duLXRzLS1jb25maWd1cmVkLWxhbmd1YWdlcykpCi0gICAgICAgIGxhbmcp
KSkpCisgIChsZXQqICgobGFuZyAoaW50ZXJuICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlKSkpCisg
ICAgICAgICAobW9kZSAobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2UtbW9kZSBsYW5n
KSkKKyAgICAgICAgICh0cy1sYW5ndWFnZSAoYWxpc3QtZ2V0IGxhbmcgbWFya2Rvd24tdHMtLWNv
ZGUtYmxvY2stbGFuZ3VhZ2VzKSkKKyAgICAgICAgIChub24tdHMtbGFuZ3VhZ2UgKGFsaXN0LWdl
dCBsYW5nIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2RlcykpKQorICAgIChjb25k
CisgICAgICgoZmJvdW5kcCBtb2RlKQorICAgICAgKGNvbmQKKyAgICAgICA7OyBSZXR1cm4ga25v
d24gdHJlZXNpdCBsYW5ndWFnZS4KKyAgICAgICAodHMtbGFuZ3VhZ2UgdHMtbGFuZ3VhZ2UpCisg
ICAgICAgOzsgUmV0dXJuIG5pbCBmb3Iga25vd24gbm9uLXRyZWVzaXQgbGFuZ3VhZ2UgZm9yIGZv
bnQtbG9jay4KKyAgICAgICAobm9uLXRzLWxhbmd1YWdlIG5pbCkKKyAgICAgICA7OyBNYXJrZG93
biBpdHNlbGYgbmVlZHMgdHdvIHBhcnNlcnMgKG1hcmtkb3duICsKKyAgICAgICA7OyBtYXJrZG93
bi1pbmxpbmUpLCBzbyB0cmVlc2l0IGVtYmVkZGluZyAod2hpY2ggY3JlYXRlcyBvbmx5CisgICAg
ICAgOzsgb25lKSBjYW5ub3QgZnVsbHkgZm9udGlmeSBpdC4gIFJvdXRlIHRocm91Z2ggdGhlIG5v
bi10cworICAgICAgIDs7IHBhdGggc28gdGhlIHRlbXAgYnVmZmVyIHJ1bnMgdGhlIGZ1bGwgbW9k
ZSB3aXRoIGJvdGgKKyAgICAgICA7OyBwYXJzZXJzLgorICAgICAgICgoZXEgbW9kZSAnbWFya2Rv
d24tdHMtbW9kZSkKKyAgICAgICAgKHVubGVzcyAoYXNzcSBsYW5nIG1hcmtkb3duLXRzLS1jb2Rl
LWJsb2NrLW5vbi10cy1tb2RlcykKKyAgICAgICAgICAocHVzaCAoY29ucyBsYW5nIG1vZGUpIG1h
cmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2RlcykpCisgICAgICAgIG5pbCkKKyAgICAg
ICAodAorICAgICAgICAobGV0KiAoKGNvbmZpZ3VyYXRpb24gKG1hcmtkb3duLXRzLS1oYXJ2ZXN0
LW1vZGUtdHJlZXNpdC1jb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kZSkpCisgICAgICAgICAgICAgICAodHMtbGFuZ3VhZ2UgKHBsaXN0LWdldCBjb25maWd1
cmF0aW9uIDpsYW5ndWFnZSkpKQorICAgICAgICAgIChjb25kCisgICAgICAgICAgICgoYW5kIHRz
LWxhbmd1YWdlCisgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgY29uZmlndXJhdGlvbiA6Zm9u
dC1sb2NrKSkKKyAgICAgICAgICAgIChtYXJrZG93bi10cy0tY29uZmlndXJlLWN1cnJlbnQtYnVm
ZmVyIGNvbmZpZ3VyYXRpb24pCisgICAgICAgICAgICAodW5sZXNzIChhc3NxIGxhbmcgbWFya2Rv
d24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2VzKQorICAgICAgICAgICAgICAocHVzaCAoY29ucyBs
YW5nIHRzLWxhbmd1YWdlKSBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZXMpKQorICAg
ICAgICAgICAgdHMtbGFuZ3VhZ2UpCisgICAgICAgICAgIDs7IE90aGVyd2lzZSwgY2xhc3NpZnkg
bW9kZSBhcyBub24tdHJlZS1zaXR0ZXIuCisgICAgICAgICAgICh0CisgICAgICAgICAgICAodW5s
ZXNzIChhc3NxIGxhbmcgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKQorICAg
ICAgICAgICAgICAocHVzaCAoY29ucyBsYW5nIG1vZGUpIG1hcmtkb3duLXRzLS1jb2RlLWJsb2Nr
LW5vbi10cy1tb2RlcykpCisgICAgICAgICAgICBuaWwpKSkpKSkKKyAgICAgKHQgbmlsKSkpKQor
Cis7OzsgQ29kZSBibG9jayBtaW5vciBtb2RlIHN1cHBvcnQgYW5kIGNvZGUtYmxvY2sgY29udGV4
dCBjb21tYW5kczoKKworKGRlZnZhciBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzICco
aW5kZW50LWZvci10YWItY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxlY3RyaWMtbmV3bGluZS1hbmQtbWF5YmUtaW5kZW50CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LWR3aW0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQtbGluZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWVudC1vci11bmNvbW1lbnQtcmVnaW9uCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tY29kZS1ibG9j
ay1maWxsLXBhcmFncmFwaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvZy1maWxsLXJlaW5kZW50LWRlZnVuKQorICAiQ29tbWFuZHMgdG8gZXhlY3V0ZSBpbiBh
IGNvZGUtYmxvY2sgY29udGV4dC4KK1NlZSBgbWFya2Rvd24tdHMtLXJ1bi1jb21tYW5kLWluLWNv
ZGUtYmxvY2snLiIpCisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtY29kZS1ibG9jay10aGluZy1jb21t
YW5kcyAnKHhyZWYtZmluZC1kZWZpbml0aW9ucykKKyAgIkNvbW1hbmRzIHRoYXQgbmVlZCBhIFwi
dGhpbmdcIiBhdCBwb2ludCBpbiBhIGNvZGUtYmxvY2sgY29udGV4dC4KK1NlZSBgbWFya2Rvd24t
dHMtLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2snLiIpCisKKyhkZWZ2YXIgbWFya2Rvd24tdHMt
Y29kZS1ibG9jay1yZWdpb24tY29tbWFuZHMgJyhjb21tZW50LW9yLXVuY29tbWVudC1yZWdpb24p
CisgICJDb21tYW5kcyB0aGF0IG5lZWQgYSByZWdpb24gaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQu
CitTZWUgYG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4iKQorCisoZGVm
dW4gbWFya2Rvd24tdHMtLWVuYWJsZS1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZSAoKQorICAiRW5h
YmxlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZScgd2hlbiBpZiBhIGZlbmNl
ZCBjb2RlIGJsb2NrLiIKKyAgKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29udGV4dC1tb2RlIChp
ZiAobWFya2Rvd24tdHMtYXQtY29kZS1ibG9jay1wKSAxIC0xKSkpCisKKzs7IE5PVEU6IERvIG5v
dCBhZGQgdGhpcyBjb21tYW5kIHRvIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzJy4K
KyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9jay1uZXdsaW5lICgmb3B0aW9uYWwgYXJnIGlu
dGVyYWN0aXZlKQorICAgIkluc2VydCBhIG5ld2xpbmUsIGFuZCBtb3ZlIHRvIGxlZnQgbWFyZ2lu
IG9mIHRoZSBuZXcgbGluZS4KK1dpdGggcHJlZml4IGFyZ3VtZW50IEFSRywgaW5zZXJ0IHRoYXQg
bWFueSBuZXdsaW5lcy4KKworSWYgYGVsZWN0cmljLWluZGVudC1tb2RlJyBpcyBlbmFibGVkLCB0
aGlzIGluZGVudHMgdGhlIGZpbmFsIG5ldyBsaW5lCit0aGF0IGl0IGFkZHMsIGFuZCByZWluZGVu
dHMgdGhlIHByZWNlZGluZyBsaW5lLiAgVG8ganVzdCBpbnNlcnQKK2EgbmV3bGluZSwgdXNlIFxc
W2VsZWN0cmljLWluZGVudC1qdXN0LW5ld2xpbmVdLgorCitJZiBgYXV0by1maWxsLW1vZGUnIGlz
IGVuYWJsZWQsIHRoaXMgbWF5IGNhdXNlIGF1dG9tYXRpYyBsaW5lCiticmVha2luZyBvZiB0aGUg
cHJlY2VkaW5nIGxpbmUuICBBIG5vbi1uaWwgQVJHIGluaGliaXRzIHRoaXMuCisKK0lmIHZhcmlh
YmxlIGB1c2UtaGFyZC1uZXdsaW5lcycgaXMgZW5hYmxlZCwgdGhlIG5ld2xpbmUgaXMgbWFya2Vk
IHdpdGgKK3RoZSB0ZXh0LXByb3BlcnR5IGBoYXJkJy4KKworQSBub24tbmlsIElOVEVSQUNUSVZF
IGFyZ3VtZW50IG1lYW5zIHRvIHJ1biB0aGUgYHBvc3Qtc2VsZi1pbnNlcnQtaG9vaycuIgorICAg
KGludGVyYWN0aXZlICIqUFxucCIpCisgICAoaWYtbGV0KiAoKGJsb2NrLW1vZGUgKG1hcmtkb3du
LXRzLWNvZGUtYmxvY2stbW9kZS1hdCkpCisgICAgICAgICAgICAgKChmYm91bmRwIGJsb2NrLW1v
ZGUpKSkKKyAgICAgICAobWFya2Rvd24tdHMtLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2sgYmxv
Y2stbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
J25ld2xpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVy
YWN0aXZlKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9jay1maWxsLXBhcmFncmFw
aCAoJm9wdGlvbmFsIGp1c3RpZnkpCisgICJSZWZpbGwgb3IgcmVpbmRlbnQgdGhlIG1hcmtkb3du
IGNvbnRlbnQgdGhhdCBjb250YWlucyBwb2ludC4KK0lmIHRoZSBwb2ludCBpcyBpbiBhIHN0cmlu
ZyBvciBhIGNvbW1lbnQsIGZpbGwgdGhlIHBhcmFncmFwaCB0aGF0Citjb250YWlucyBwb2ludCBv
ciBmb2xsb3dzIHBvaW50LgorCitPdGhlcndpc2UsIHJlaW5kZW50IHRoZSBmdW5jdGlvbiBkZWZp
bml0aW9uIHRoYXQgY29udGFpbnMgcG9pbnQgb3IKK2ZvbGxvd3MgcG9pbnQuCisKK0lmIEpVU1RJ
RlkgaXMgbm9uLW5pbCAoaW50ZXJhY3RpdmVseSwgd2l0aCBwcmVmaXggYXJndW1lbnQpLCBqdXN0
aWZ5IGFzCit3ZWxsLiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKGNvbmQgKChkZXJpdmVkLW1v
ZGUtcCAncHJvZy1tb2RlKQorICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ3Byb2ctZmls
bC1yZWluZGVudC1kZWZ1biBqdXN0aWZ5KSkKKyAgICAgICAgKHQKKyAgICAgICAgIChjYWxsLWlu
dGVyYWN0aXZlbHkgIydmaWxsLXBhcmFncmFwaCBqdXN0aWZ5KSkpKQorCis7OyBOT1RFOiBEbyBu
b3QgYWRkIHRoaXMgY29tbWFuZCB0byBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1jb21tYW5kcycu
CisoZGVmdW4gbWFya2Rvd24tdHMtLWNvZGUtYmxvY2steHJlZi1maW5kLWRlZmluaXRpb25zICgm
cmVzdCBhcmdzKQorICAiSGVscGVyIGNvbW1hbmQgZm9yIGB4cmVmLWZpbmQtZGVmaW5pdGlvbnMn
IGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorRmluZCB0aGluZyBhdCBwb2ludC4KK0FkanVzdCB0
aGUgcmVmZXJlbmNlcyBvbiB0aGUgeHJlZiBzdGFjayB0byB0aGUgYmFzZSBidWZmZXIuCitQYXNz
IHRocm91Z2ggQVJHUyBpZiBub3QgaW4gYSBjb2RlIGJsb2NrIHdpdGggYW4gYXZhaWxhYmxlIG1v
ZGUuIgorICAoaW50ZXJhY3RpdmUpCisgIChpZi1sZXQqICgoYmxvY2stbW9kZSAobWFya2Rvd24t
dHMtY29kZS1ibG9jay1tb2RlLWF0KSkKKyAgICAgICAgICAgICgoZmJvdW5kcCBibG9jay1tb2Rl
KSkpCisgICAgICAoY29uZGl0aW9uLWNhc2UgZXJyCisgICAgICAgICAgKHVud2luZC1wcm90ZWN0
CisgICAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgICAgIDs7IFJlY29yZCBhIHBsYWNl
aG9sZGVyIHhyZWYgbWFya2VyIGluIHRoZSBiYXNlIGJ1ZmZlci4gIFRoaXMKKyAgICAgICAgICAg
ICAgICA7OyB3aWxsIGJlIHJldGFpbmVkIGlmIHRoZSBjb21tYW5kIHN1Y2NlZWRzIHRvIHB1c2gg
YSBtYXJrZXIgaW4KKyAgICAgICAgICAgICAgICA7OyB0aGUgaW5kaXJlY3QgYnVmZmVyIHdoaWNo
IHdlIHdpbGwgcG9wLgorICAgICAgICAgICAgICAgICh4cmVmLXB1c2gtbWFya2VyLXN0YWNrKQor
ICAgICAgICAgICAgICAgIDs7IGB4cmVmLWZpbmQtZGVmaW5pdGlvbnMnIGlzIGEgdGhpbmcgY29t
bWFuZCBpbgorICAgICAgICAgICAgICAgIDs7IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLXRoaW5n
LWNvbW1hbmRzJy4KKyAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLXJ1bi1jb21tYW5kLWlu
LWNvZGUtYmxvY2sgYmxvY2stbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjJ3hyZWYtZmluZC1kZWZpbml0aW9ucworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzKSkKKyAg
ICAgICAgICAgIDs7IFBvcCB0aGUgdG9wIHhyZWYgbWFya2VyLiAgSWYgdGhlIGNvbW1hbmQgc3Vj
Y2VlZGVkLCB0aGUKKyAgICAgICAgICAgIDs7IHRvcCBtYXJrZXIgd2lsbCBiZSB0aGUgaW5kaXJl
Y3QgYnVmZmVyIG1hcmtlci4gIElmIGl0CisgICAgICAgICAgICA7OyBmYWlsZWQsIHdlJ2xsIHBv
cCB0aGUgcGxhY2Vob2xkZXIgd2hpY2ggaXMgbm93IG9mIG5vCisgICAgICAgICAgICA7OyB2YWx1
ZTwKKyAgICAgICAgICAgIDs7IFRPRE86IFByb3Bvc2UgYW4gYHhyZWYnIHBvcCBmdW5jdGlvbiB0
aGF0IGRvZXNuJ3QgImdvCisgICAgICAgICAgICA7OyBiYWNrIi4KKyAgICAgICAgICAgIChsZXQg
KChoaXN0b3J5ICh4cmVmLS1nZXQtaGlzdG9yeSkpKQorICAgICAgICAgICAgICAodW5sZXNzIChu
dWxsIChjYXIgaGlzdG9yeSkpCisgICAgICAgICAgICAgICAgKHBvcCAoY2FyIGhpc3RvcnkpKSkp
KQorICAgICAgICAoZXJyb3IKKyAgICAgICAgIDs7IFByb3BhZ2F0ZSB0aGUgc2lnbmFsLgorICAg
ICAgICAgKHNpZ25hbCAoY2FyIGVycikgKGNkciBlcnIpKSkpCisgICAgOzsgTm90IGluIGEgY29k
ZSBibG9jayBjb250ZXh0LiAgVGhpcyBzaG91bGQgcmVhbGx5IG5ldmVyIGhhcHBlbi4KKyAgICAo
ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5ICMneHJlZi1maW5kLWRlZmluaXRpb25zIGFyZ3MpKSkKKwor
KGRlZnVuIG1hcmtkb3duLXRzLS1tYXliZS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrICgpCisg
ICJIZWxwZXIgZnVuY3Rpb24gdG8gd3JhcCBhIGNvbW1hbmQgZm9yIGEgY29kZS1ibG9jayBjb250
ZXh0LgorSWYgYHRoaXMtY29tbWFuZCcgaXMgYSBtZW1iZXIgb2YgYG1hcmtkb3duLXRzLWNvZGUt
YmxvY2stY29tbWFuZHMnIGFuZAorcG9pbnQgaXMgd2l0aGluIGEgY29kZSBibG9jayB3aXRoIGFu
IGF2YWlsYWJsZSBtb2RlLCBpdCB3aWxsIHJ1biBpbiB0aGF0Citjb2RlIGJsb2NrJ3MgbW9kZSBp
biBhIGJ1ZmZlciBuYXJyb3dlZCB0byBpdHMgY29udGVudC4gIE90aGVyd2lzZSwgdGhlCitjb21t
YW5kIHdpbGwgcnVuIGluIHRoZSBjb250ZXh0IG9mIHRoZSBgbWFya2Rvd24tdHMtbW9kZScgYnVm
ZmVyLiIKKyAgKHdoZW4gKG1lbXEgdGhpcy1jb21tYW5kIG1hcmtkb3duLXRzLWNvZGUtYmxvY2st
Y29tbWFuZHMpCisgICAgKHdoZW4tbGV0KiAoKGNvbW1hbmQgdGhpcy1jb21tYW5kKQorICAgICAg
ICAgICAgICAgIChibG9jay1tb2RlIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtYXQpKQor
ICAgICAgICAgICAgICAgICgoZmJvdW5kcCBibG9jay1tb2RlKSkpCisgICAgICAoc2V0cSB0aGlz
LWNvbW1hbmQgKGxhbWJkYSAoJnJlc3QgYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IChpbnRlcmFjdGl2ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ21hcmtk
b3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmxvY2stbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzKSkpKSkpCisK
KyhkZWZ1biBtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jayAoYmxvY2stbW9k
ZSBjb21tYW5kICZyZXN0IGFyZ3MpCisgICJSdW4gQ09NTUFORCBpbiBCTE9DSy1NT0RFLgorQVJH
UyBhcmUgY2FwdHVyZWQgYnkgYG1hcmtkb3duLXRzLS1tYXliZS1ydW4tY29tbWFuZC1pbi1jb2Rl
LWJsb2NrJy4iCisgICh3aGVuLWxldCogKChiZWcgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkg
J21hcmtkb3duLXRzLWNvZGUtYmVnLW1hcmtlcikpCisgICAgICAgICAgICAgIChlbmQgKGdldC1j
aGFyLXByb3BlcnR5IChwb2ludCkgJ21hcmtkb3duLXRzLWNvZGUtZW5kLW1hcmtlcikpKQorICAg
IChsZXQgKChyZWdpb24tYmVnICh1c2UtcmVnaW9uLWJlZ2lubmluZykpCisgICAgICAgICAgKHJl
Z2lvbi1lbmQgKHVzZS1yZWdpb24tZW5kKSkpCisgICAgICA7OyBVc2UgYSBub24tY2xvbmVkIGlu
ZGlyZWN0IGJ1ZmZlciB0byBhdm9pZCBjaGFuZ2luZyBtYWpvciBtb2RlCisgICAgICA7OyBpbiB0
aGUgcGFyZW50IGJ1ZmZlciAod2hpY2ggd291bGQgdHJhc2ggbG9jYWwgdmFyaWFibGVzKS4gIFRo
aXMKKyAgICAgIDs7IGFsc28gZW5zdXJlcyB0cmVlc2l0IHNldHVwIGlzIG5vdCBjb3BpZWQgb3Zl
ciBvciBpdCBnZXRzCisgICAgICA7OyBjb25mdXNlZC4KKyAgICAgIChsZXQgKChpbmRpcmVjdC1i
dWZmZXIgKG1ha2UtaW5kaXJlY3QtYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoY3VycmVudC1idWZmZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2VuZXJh
dGUtbmV3LWJ1ZmZlci1uYW1lIChidWZmZXItbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuaWwgJ2luaGliaXQtYnVmZmVyLWhvb2tzKSkKKyAgICAgICAgICAgIChpbmRpcmVj
dC1kZWFjdGl2YXRlLW1hcmspCisgICAgICAgICAgICAocG9pbnQtZGVsdGEgMCkpCisgICAgICAg
ICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgaW5kaXJl
Y3QtYnVmZmVyCisgICAgICAgICAgICAgIDs7IENvcHkgdGhlIGJhc2UgYnVmZmVyJ3MgcmVnaW9u
LCBpZiB0aGVyZSBpcyBvbmUuCisgICAgICAgICAgICAgICh3aGVuIChhbmQgcmVnaW9uLWJlZyBy
ZWdpb24tZW5kKQorICAgICAgICAgICAgICAgIChzZXQtbWFyayAoaWYgKDwgKHBvaW50KSByZWdp
b24tZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLWVuZAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi1iZWcpKQorICAgICAgICAgICAgICAgIChhY3Rp
dmF0ZS1tYXJrKSkKKyAgICAgICAgICAgICAgKGRlbGF5LW1vZGUtaG9va3MKKyAgICAgICAgICAg
ICAgICAobGV0ICgobWFya2Rvd24tdHMtLXNldC11cC1pbmxpbmUKKyAgICAgICAgICAgICAgICAg
ICAgICAgKGVxIGJsb2NrLW1vZGUgJ21hcmtkb3duLXRzLW1vZGUpKSkKKyAgICAgICAgICAgICAg
ICAgIChmdW5jYWxsIGJsb2NrLW1vZGUpKQorICAgICAgICAgICAgICAgIChyZWFkLW9ubHktbW9k
ZSAtMSkKKyAgICAgICAgICAgICAgICAobmFycm93LXRvLXJlZ2lvbiBiZWcgZW5kKQorICAgICAg
ICAgICAgICAgIChsZXQgKChwb2ludCAocG9pbnQpKQorICAgICAgICAgICAgICAgICAgICAgIChw
b2ludC1tYXJrZXIgKHBvaW50LW1hcmtlcikpKQorICAgICAgICAgICAgICAgICAgICAoY29uZAor
ICAgICAgICAgICAgICAgICAgICAgKChtZW1xIGNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9j
ay10aGluZy1jb21tYW5kcykKKyAgICAgICAgICAgICAgICAgICAgICAod2hlbi1sZXQqICgodGhp
bmcgKHRoaW5nLWF0LXBvaW50ICdzeW1ib2wpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChm
dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZCB0aGluZykpKQorICAgICAgICAgICAgICAgICAg
ICAgKChtZW1xIGNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9jay1yZWdpb24tY29tbWFuZHMp
CisgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCByZWdpb24tYmVnIHJlZ2lvbi1lbmQp
CisgICAgICAgICAgICAgICAgICAgICAgICAoYXBwbHkgIydmdW5jYWxsLWludGVyYWN0aXZlbHkg
Y29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi1iZWcgcmVnaW9u
LWVuZCBhcmdzKSkpCisgICAgICAgICAgICAgICAgICAgICAoKHplcm9wIChjZHIgKGZ1bmMtYXJp
dHkgY29tbWFuZCkpKQorICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsLWludGVyYWN0aXZl
bHkgY29tbWFuZCkpCisgICAgICAgICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAg
ICAgIChjYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZCkpKQorICAgICAgICAgICAgICAgICAgICAo
c2V0cSBpbmRpcmVjdC1kZWFjdGl2YXRlLW1hcmsgZGVhY3RpdmF0ZS1tYXJrKQorICAgICAgICAg
ICAgICAgICAgICA7OyBUaGUgaGV1cmlzdGljIG9mIHdoZW4gdG8gbW92ZSBwb2ludC4KKyAgICAg
ICAgICAgICAgICAgICAgOzsgZGVhY3RpdmF0ZS1tYXJrIHAoZCk9cG0oZCkgZGVsdGEKKyAgICAg
ICAgICAgICAgICAgICAgOzsgbmlsICAgICAgICAgICAgIG5vICAgICAgICAgMCAgIDsgY2xhc3Mg
QQorICAgICAgICAgICAgICAgICAgICA7OyBuaWwgICAgICAgICAgICAgeWVzICAgICAgICB5ZXMg
OyBjbGFzcyBCCisgICAgICAgICAgICAgICAgICAgIDs7IHQgICAgICAgICAgICAgICBubyAgICAg
ICAgIDAgICA7IGNsYXNzIEMKKyAgICAgICAgICAgICAgICAgICAgOzsgdCAgICAgICAgICAgICAg
IHllcyAgICAgICAgeWVzIDsgY2xhc3MgRAorICAgICAgICAgICAgICAgICAgICA7OyBBOiBuaWwK
KyAgICAgICAgICAgICAgICAgICAgOzsgQjogaW5kZW50LWZvci10YWItY29tbWFuZAorICAgICAg
ICAgICAgICAgICAgICA7OyBDOiBjb21tZW50LW9yLXVuY29tbWVudC1yZWdpb24KKyAgICAgICAg
ICAgICAgICAgICAgOzsgRDogY29tbWVudC1kd2ltIG5ld2xpbmUgZWxlY3RyaWMtbmV3bGluZS1h
bmQtbWF5YmUtaW5kZW50CisgICAgICAgICAgICAgICAgICAgIDs7ICAgIG1hcmtkb3duLXRzLS1j
b2RlLWJsb2NrLWZpbGwtcGFyYWdyYXBoCisgICAgICAgICAgICAgICAgICAoc2V0cSBwb2ludC1k
ZWx0YSAoLSAocG9pbnQpIHBvaW50KSkKKyAgICAgICAgICAgICAgICAgICh3aGVuIChub3QgKGVx
IHBvaW50LWRlbHRhICgtIChwb2ludC1tYXJrZXIpIHBvaW50LW1hcmtlcikpKQorICAgICAgICAg
ICAgICAgICAgICAoc2V0cSBwb2ludC1kZWx0YSAwKSkpKSkKKyAgICAgICAgICAoa2lsbC1idWZm
ZXIgaW5kaXJlY3QtYnVmZmVyKQorICAgICAgICAgIDs7IFByb3BhZ2F0ZSBtYXJrIGRlYWN0aXZh
dGlvbiB0byB0aGUgYmFzZSBidWZmZXIuCisgICAgICAgICAgKHNldHEgZGVhY3RpdmF0ZS1tYXJr
IGluZGlyZWN0LWRlYWN0aXZhdGUtbWFyaykKKyAgICAgICAgICA7OyBNb3ZlIGJhc2UgYnVmZmVy
IHBvaW50IGlmIGl0IG1vdmVkIGluIHRoZSBpbmRpcmVjdCBidWZmZXIuCisgICAgICAgICAgKGdv
dG8tY2hhciAoKyAocG9pbnQpIHBvaW50LWRlbHRhKSkKKyAgICAgICAgICA7OyBSZWNvcmQgdGhl
IG9yaWdpbmFsIGNvbW1hbmQuCisgICAgICAgICAgKHNldHEgdGhpcy1jb21tYW5kIGNvbW1hbmQp
CisgICAgICAgICAgOzsgTWFrZSBzdXJlIHRoZSBvcmlnaW5hdGluZyByZWdpb24gaXMgcmVmb250
aWZpZWQuCisgICAgICAgICAgKGZvbnQtbG9jay1mbHVzaCBiZWcgZW5kKSkpKSkpCisKKyhkZWZ1
biBtYXJrZG93bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlciAocG9zICZvcHRpb25hbCBi
YWNrd2FyZCkKKyAgIlJldHVybiB0aGUgbmV4dCBvciBwcmV2aW91cyBmZW5jZWRfY29kZV9ibG9j
a19kZWxpbWl0ZXIgbm9kZSwgb3IgbmlsLgorU2VhcmNoIHN0YXJ0aW5nIGF0IFBPUy4KK1NlYXJj
aCBiYWNrd2FyZCBpZiBCQUNLV0FSRCBpcyBub24tbmlsLiIKKyAgKHRyZWVzaXQtc2VhcmNoLWZv
cndhcmQgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3duKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAobGFtYmRhIChub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJp
bmc9ICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmZW5jZWRfY29kZV9ibG9ja19kZWxpbWl0ZXIiKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFja3dhcmQpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbmQtbmV4dC1j
b2RlLWJsb2NrLWRlbGltaXRlciAoJm9wdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zIGJhY2t3YXJkIHJlbWFpbikKKyAgIlJldHVy
biB0aGUgbmV4dCBvciBwcmV2aW91cyBmZW5jZWRfY29kZV9ibG9ja19kZWxpbWl0ZXIgbm9kZSwg
b3IgbmlsLgorU2VhcmNoIHN0YXJ0aW5nIGF0IFBPUyBvciBgcG9pbnQnLCBpZiBQT1MgaXMgbmls
LgorU2VhcmNoIGJhY2t3YXJkIGlmIEJBQ0tXQVJEIGlzIG5vbi1uaWwuCitJZiBSRU1BSU4gaXMg
bm9uLW5pbCwgbW92ZSB0byB0aGUgdG9wIG9yIGJvdHRvbSBvZiB0aGUgY3VycmVudCBjb2RlCiti
bG9jaywgaWYgaW4gb25lLiIKKyAgKHNldHEgcG9zIChvciBwb3MgKHBvaW50KSkpCisgIChhbmQt
bGV0KiAoKG5vZGUgKG1hcmtkb3duLXRzLS1maW5kLWNvZGUtYmxvY2stZGVsaW1pdGVyIHBvcyBi
YWNrd2FyZCkpKQorICAgIChsZXQgKChpbi1ibG9jayAobWFya2Rvd24tdHMtYXQtY29kZS1ibG9j
ay1wIHBvcykpKQorICAgICAgKGNvbmQKKyAgICAgICAoKGFuZCByZW1haW4gaW4tYmxvY2spCisg
ICAgICAgIG5vZGUpCisgICAgICAgKHJlbWFpbgorICAgICAgICBuaWwpCisgICAgICAgKHQKKyAg
ICAgICAgKHdoaWxlIChhbmQgbm9kZQorICAgICAgICAgICAgICAgICAgICA7OyBJZiBiYWNrd2Fy
ZCwgc2tpcCB0aGUgY3VycmVudCBibG9jaydzCisgICAgICAgICAgICAgICAgICAgIDs7IHN0YXJ0
aW5nIGRlbGltaXRlci4KKyAgICAgICAgICAgICAgICAgICAgKG9yIChhbmQgYmFja3dhcmQgaW4t
YmxvY2sgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcgbm9kZSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAobm90ICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIG5vZGUpKSkpCisgICAgICAg
ICAgKHNldHEgaW4tYmxvY2sgKG1hcmtkb3duLXRzLWF0LWNvZGUtYmxvY2stcCBwb3MpKQorICAg
ICAgICAgIChzZXRxIHBvcyAoaWYgYmFja3dhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICh0
cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1u
b2RlLWVuZCBub2RlKSkpCisgICAgICAgICAgKHNldHEgbm9kZSAobWFya2Rvd24tdHMtLWZpbmQt
Y29kZS1ibG9jay1kZWxpbWl0ZXIgcG9zIGJhY2t3YXJkKSkpCisgICAgICAgIG5vZGUpKSkpKQor
CisoZGVmdW4gbWFya2Rvd24tdHMtbW92ZS10by1uZXh0LWNvZGUtYmxvY2sgKGFyZykKKyAgIk1v
dmUgcG9pbnQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGNvZGUgYmxvY2suCitXaXRoIHRoZSBw
cmVmaXggYXJndW1lbnQgQVJHLCByZW1haW4gd2l0aGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2su
IgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAod2hlbi1sZXQqICgobm9kZQorICAgICAgICAgICAg
ICAgKG1hcmtkb3duLXRzLS1maW5kLW5leHQtY29kZS1ibG9jay1kZWxpbWl0ZXIgbmlsIG5pbCBh
cmcpKSkKKyAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpKSkKKworKGRl
ZnVuIG1hcmtkb3duLXRzLW1vdmUtdG8tcHJldmlvdXMtY29kZS1ibG9jayAoYXJnKQorICAiTW92
ZSBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIHByZXZpb3VzIGNvZGUgYmxvY2suCitXaXRoIHRo
ZSBwcmVmaXggYXJndW1lbnQgQVJHLCByZW1haW4gd2l0aGluIHRoZSBjdXJyZW50IGNvZGUgYmxv
Y2suIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAod2hlbi1sZXQqICgobm9kZQorICAgICAgICAg
ICAgICAgKG1hcmtkb3duLXRzLS1maW5kLW5leHQtY29kZS1ibG9jay1kZWxpbWl0ZXIgbmlsICdi
YWNrd2FyZCBhcmcpKSkKKyAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkp
KSkKKworOzs7IEhlbHBlcnM6CisKKyhkZWZ1biBtYXJrZG93bi10cy0tb3V0bGluZS1pbnZpc2li
bGUtcCAocG9zKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgUE9TIGlzIGluc2lkZSBhbiBvdXRsaW5l
LWZvbGRlZCByZWdpb24uIgorICAoY2wtc29tZSAobGFtYmRhIChvdikgKGVxIChvdmVybGF5LWdl
dCBvdiAnaW52aXNpYmxlKSAnb3V0bGluZSkpCisgICAgICAgICAgIChvdmVybGF5cy1hdCBwb3Mp
KSkKIAogKGRlZnVuIG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncyAoKQogICAiUmV0dXJuIHJh
bmdlIHNldHRpbmdzIGZvciBgbWFya2Rvd24tdHMtbW9kZScuIgotICAodHJlZXNpdC1yYW5nZS1y
dWxlcwotICAgOmVtYmVkICdtYXJrZG93bi1pbmxpbmUKLSAgIDpob3N0ICdtYXJrZG93bgotICAg
OnJhbmdlLWZuICMndHJlZXNpdC1yYW5nZS1mbi1leGNsdWRlLWNoaWxkcmVuCi0gICAnKChpbmxp
bmUpIEBtYXJrZG93bi1pbmxpbmUpCi0KLSAgIDplbWJlZCAjJ21hcmtkb3duLXRzLS1jb252ZXJ0
LWNvZGUtYmxvY2stbGFuZ3VhZ2UKLSAgIDpob3N0ICdtYXJrZG93bgotICAgOmxvY2FsIHQKLSAg
ICcoKGZlbmNlZF9jb2RlX2Jsb2NrIChpbmZvX3N0cmluZyAobGFuZ3VhZ2UpIEBsYW5ndWFnZSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIChjb2RlX2ZlbmNlX2NvbnRlbnQpIEBjb250ZW50KSkp
KQorICAoYXBwbHkKKyAgICMndHJlZXNpdC1yYW5nZS1ydWxlcworICAgYCg6ZW1iZWQgbWFya2Rv
d24taW5saW5lCisgICAgIDpob3N0IG1hcmtkb3duCisgICAgICgoaW5saW5lKSBAbWFya2Rvd24t
aW5saW5lKQorICAgICAsQCh3aGVuIG1hcmtkb3duLXRzLWZvbnRpZnktY29kZS1ibG9ja3MtbmF0
aXZlbHkKKyAgICAgICAgICcoOmVtYmVkIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLXRzLWxhbmd1
YWdlCisgICAgICAgICAgIDpob3N0IG1hcmtkb3duCisgICAgICAgICAgIDpsb2NhbCB0CisgICAg
ICAgICAgICgoZmVuY2VkX2NvZGVfYmxvY2sgKGluZm9fc3RyaW5nIChsYW5ndWFnZSkgQGxhbmd1
YWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2RlX2ZlbmNlX2NvbnRlbnQp
IEBjb250ZW50KSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVy
bGF5cyAoKQorICAiUmVtb3ZlIGFsbCBpbmxpbmUgaW1hZ2Ugb3ZlcmxheXMgZnJvbSB0aGUgY3Vy
cmVudCBidWZmZXIuIgorICAoZG9saXN0IChvdiAob3ZlcmxheXMtaW4gKHBvaW50LW1pbikgKHBv
aW50LW1heCkpKQorICAgICh3aGVuIChvdmVybGF5LWdldCBvdiAnbWFya2Rvd24tdHMtaW1hZ2Up
CisgICAgICAoZGVsZXRlLW92ZXJsYXkgb3YpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tb3V0
bGluZS12aWV3LWNoYW5nZSAoKQorICAiVXBkYXRlIGltYWdlIG92ZXJsYXlzIGFmdGVyIG91dGxp
bmUgZm9sZC91bmZvbGQuCitSZW1vdmVzIGltYWdlIG92ZXJsYXlzIGluIGZvbGRlZCByZWdpb25z
IGFuZCB0cmlnZ2VycworcmVmb250aWZpY2F0aW9uIHNvIHRoYXQgaW1hZ2VzIGluIHVuZm9sZGVk
IHJlZ2lvbnMgYXJlIHJlY3JlYXRlZC4iCisgICh3aGVuIG1hcmtkb3duLXRzLWlubGluZS1pbWFn
ZXMKKyAgICAobWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cykKKyAgICAoZm9udC1s
b2NrLWZsdXNoKSkpCiAKIChkZWZ1biBtYXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwICh2YWx1
ZSkKICAgIlNldCBoaWRpbmcgb2YgTWFya2Rvd24gbWFya3VwIGRlbGltaXRlcnMgaW4gdGhlIGN1
cnJlbnQgYnVmZmVyLgpAQCAtMzQ4LDYgKzI5MDcsOCBAQCBtYXJrZG93bi10cy0tc2V0LWhpZGUt
bWFya3VwCiAgIChpZiB2YWx1ZQogICAgICAgKGFkZC10by1pbnZpc2liaWxpdHktc3BlYyAnbWFy
a2Rvd24tdHMtLW1hcmt1cCkKICAgICAocmVtb3ZlLWZyb20taW52aXNpYmlsaXR5LXNwZWMgJ21h
cmtkb3duLXRzLS1tYXJrdXApKQorICAod2hlbiBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzCisg
ICAgKG1hcmtkb3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMpKQogICAoZm9udC1sb2NrLWZs
dXNoKSkKIAogKGRlZnVuIG1hcmtkb3duLXRzLXRvZ2dsZS1oaWRlLW1hcmt1cCAoKQpAQCAtMzU2
LDEyMiArMjkxNyw1MzEgQEAgbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUtbWFya3VwCiAgIChzZXRx
IG1hcmtkb3duLXRzLWhpZGUtbWFya3VwIChub3QgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApKQog
ICAobWFya2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkp
CiAKKyhkZWZ1biBtYXJrZG93bi10cy0tc2V0LWlubGluZS1pbWFnZXMgKHZhbHVlKQorICAiU2V0
IGRpc3BsYXkgb2YgaW5saW5lIGltYWdlcyBpbiB0aGUgY3VycmVudCBidWZmZXIuCitWQUxVRSBu
b24tbmlsIGRpc3BsYXlzIGltYWdlcywgbmlsIHJlbW92ZXMgdGhlbS4iCisgIChpZiB2YWx1ZQor
ICAgICAgKHRyZWVzaXQtZm9udC1sb2NrLXJlY29tcHV0ZS1mZWF0dXJlcyAnKGltYWdlLXByZXZp
ZXcpKQorICAgICh0cmVlc2l0LWZvbnQtbG9jay1yZWNvbXB1dGUtZmVhdHVyZXMgbmlsICcoaW1h
Z2UtcHJldmlldykpKQorICAobWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cykKKyAg
KGZvbnQtbG9jay1mbHVzaCkpCiAKLTs7OyBNYWpvciBtb2RlCi0KLShkZWZ1biBtYXJrZG93bi10
cy1zZXR1cCAoKQotICAiU2V0dXAgdHJlZXNpdCBmb3IgYG1hcmtkb3duLXRzLW1vZGUnLiIKLSAg
KG1ha2UtbG9jYWwtdmFyaWFibGUgJ21hcmtkb3duLXRzLWhpZGUtbWFya3VwKQorKGRlZnVuIG1h
cmtkb3duLXRzLXRvZ2dsZS1pbmxpbmUtaW1hZ2VzICgpCisgICJUb2dnbGUgZGlzcGxheSBvZiBp
bmxpbmUgaW1hZ2VzIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4iCisgIChpbnRlcmFjdGl2ZSkKKyAg
KHNldHEgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcyAobm90IG1hcmtkb3duLXRzLWlubGluZS1p
bWFnZXMpKQorICAobWFya2Rvd24tdHMtLXNldC1pbmxpbmUtaW1hZ2VzIG1hcmtkb3duLXRzLWlu
bGluZS1pbWFnZXMpCisgIChtZXNzYWdlICJJbmxpbmUgaW1hZ2VzICVzIiAoaWYgbWFya2Rvd24t
dHMtaW5saW5lLWltYWdlcyAiZW5hYmxlZCIgImRpc2FibGVkIikpKQorCis7OzsgRW1waGFzaXM6
CisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtZW1waGFzaXMtYWxpc3QKKyAgJygoP2IgLiAiKioiKQor
ICAgICg/QiAuICJfXyIpCisgICAgKD9pIC4gIioiKQorICAgICg/SSAuICJfIikKKyAgICAoP3Mg
LiAifn4iKQorICAgICg/YyAuICJgIikKKyAgICAoP2EgLiAiKioqIikpCisgICJBbGlzdCBvZiBl
bXBoYXNpcyBtYXJrZXJzIGZvciBgbWFya2Rvd24tdHMtZW1waGFzaXplJy4KK0VhY2ggZW50cnkg
aXMgKEtFWSAuIE1BUktFUikgd2hlcmUgS0VZIGlzIGEgY2hhcmFjdGVyIChub3QgYSBzdHJpbmcp
IGFuZAorTUFSS0VSIGlzIHRoZSBNYXJrZG93biBlbXBoYXNpemVkIHRleHQgcHJlZml4L3N1ZmZp
eC4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWVtcGhhc2lzLW5vZGUtYXQtcG9pbnQgKCkKKyAg
IlJldHVybiB0aGUgZW1waGFzaXMgbm9kZSBhdCBwb2ludCwgb3IgbmlsLgorRmluZHMgdGhlIGlu
bmVybW9zdCBgZW1waGFzaXMnLCBgc3Ryb25nX2VtcGhhc2lzJywKK2BzdHJpa2V0aHJvdWdoJywg
b3IgYGNvZGVfc3Bhbicgbm9kZS4iCisgICh3aGVuLWxldCogKChub2RlICh0cmVlc2l0LW5vZGUt
YXQgKHBvaW50KSAnbWFya2Rvd24taW5saW5lKSkpCisgICAgKHRyZWVzaXQtcGFyZW50LXVudGls
CisgICAgIG5vZGUgKGxhbWJkYSAobikKKyAgICAgICAgICAgIChtZW1iZXIgKHRyZWVzaXQtbm9k
ZS10eXBlIG4pCisgICAgICAgICAgICAgICAgICAgICcoImVtcGhhc2lzIiAic3Ryb25nX2VtcGhh
c2lzIgorICAgICAgICAgICAgICAgICAgICAgICJzdHJpa2V0aHJvdWdoIiAiY29kZV9zcGFuIikp
KSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtcmVtb3ZlLWVtcGhhc2lzICgpCisgICJSZW1vdmUg
ZW1waGFzaXMgYXJvdW5kIHBvaW50IG9yIHJlZ2lvbi4KK1dpdGggYW4gYWN0aXZlIHJlZ2lvbiwg
c3RyaXAgdGhlIG91dGVybW9zdCBlbXBoYXNpcyBtYXJrZXJzIGZyb20KK3RoZSBzZWxlY3RlZCB0
ZXh0LiAgV2l0aG91dCBhIHJlZ2lvbiwgZmluZCB0aGUgZW1waGFzaXMgbm9kZSBhdAorcG9pbnQg
dXNpbmcgdHJlZS1zaXR0ZXIgYW5kIHJlbW92ZSBpdHMgbWFya2Vycy4iCisgIChpbnRlcmFjdGl2
ZSkKKyAgKGlmICh1c2UtcmVnaW9uLXApCisgICAgICAobGV0KiAoKGJlZyAocmVnaW9uLWJlZ2lu
bmluZykpCisgICAgICAgICAgICAgKGVuZCAocmVnaW9uLWVuZCkpCisgICAgICAgICAgICAgKHRl
eHQgKGJ1ZmZlci1zdWJzdHJpbmcgYmVnIGVuZCkpCisgICAgICAgICAgICAgKHN0cmlwcGVkIG5p
bCkpCisgICAgICAgIChjbC1sb29wIGZvciAoX2tleSAuIG0pIGluIChzb3J0IChjb3B5LXNlcXVl
bmNlIG1hcmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAobGFtYmRhIChhIGIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKD4gKGxlbmd0aCAoY2RyIGEpKSAobGVuZ3RoIChjZHIgYikpKSkp
CisgICAgICAgICAgICAgICAgIGZvciByZSA9IChjb25jYXQgIlxcYCIgKHJlZ2V4cC1xdW90ZSBt
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXChcXCg/Oi5cXHxcblxcKSpc
XCkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlZ2V4cC1xdW90ZSBtKSAi
XFwnIikKKyAgICAgICAgICAgICAgICAgd2hlbiAoc3RyaW5nLW1hdGNoIHJlIHRleHQpCisgICAg
ICAgICAgICAgICAgIGRvIChzZXRxIHN0cmlwcGVkIChtYXRjaC1zdHJpbmcgMSB0ZXh0KSkKKyAg
ICAgICAgICAgICAgICAgYW5kIHJldHVybiBuaWwpCisgICAgICAgICh3aGVuIHN0cmlwcGVkCisg
ICAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVnIGVuZCkKKyAgICAgICAgICAoaW5zZXJ0IHN0cmlw
cGVkKSkpCisgICAgOzsgRmluZCB0aGUgb3V0ZXJtb3N0IGVtcGhhc2lzIG5vZGUgYXQgcG9pbnQu
CisgICAgKHdoZW4tbGV0KiAoKGlubmVyIChtYXJrZG93bi10cy0tZW1waGFzaXMtbm9kZS1hdC1w
b2ludCkpCisgICAgICAgICAgICAgICAgKG5vZGUgKGxldCAoKG4gaW5uZXIpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgKHdoaWxlIChsZXQgKChwYXJlbnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQg
bikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCBwYXJlbnQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbWJlciAodHJl
ZXNpdC1ub2RlLXR5cGUgcGFyZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcoImVtcGhhc2lzIiAic3Ryb25nX2VtcGhhc2lzIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmlrZXRo
cm91Z2giICJjb2RlX3NwYW4iKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzZXRxIG4gcGFyZW50KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgbikpCisgICAgICAg
ICAgICAgICAgKHN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAgICAg
ICAgKGVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgICAgICAgICAodGV4dCAo
dHJlZXNpdC1ub2RlLXRleHQgbm9kZSB0KSkKKyAgICAgICAgICAgICAgICAodHlwZSAodHJlZXNp
dC1ub2RlLXR5cGUgbm9kZSkpCisgICAgICAgICAgICAgICAgKG1sZW4gKHBjYXNlIHR5cGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICgic3Ryb25nX2VtcGhhc2lzIgorICAgICAgICAgICAgICAg
ICAgICAgICAgIChpZiAoc3RyaW5nLXByZWZpeC1wICJfIiB0ZXh0KSAyIDIpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgKCJlbXBoYXNpcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYg
KHN0cmluZy1wcmVmaXgtcCAiXyIgdGV4dCkgMSAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICgic3RyaWtldGhyb3VnaCIgMikKKyAgICAgICAgICAgICAgICAgICAgICAgICgiY29kZV9zcGFu
IiAxKSkpCisgICAgICAgICAgICAgICAgKGlubmVyLXRleHQgKHN1YnN0cmluZyB0ZXh0IG1sZW4g
KC0gKGxlbmd0aCB0ZXh0KSBtbGVuKSkpKQorICAgICAgKGxldCAoKG9mZnNldCAoLSAocG9pbnQp
IHN0YXJ0IG1sZW4pKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gc3RhcnQgZW5kKQorICAgICAg
ICAoZ290by1jaGFyIHN0YXJ0KQorICAgICAgICAoaW5zZXJ0IGlubmVyLXRleHQpCisgICAgICAg
IChnb3RvLWNoYXIgKCsgc3RhcnQgKG1heCAwIG9mZnNldCkpKSkpKSkKKworKGRlZnVuIG1hcmtk
b3duLXRzLWVtcGhhc2l6ZSAoJm9wdGlvbmFsIGNoYXIpCisgICJJbnNlcnQgb3IgY2hhbmdlIGVt
cGhhc2lzIG9uIHRleHQuCitJZiB0aGVyZSBpcyBhbiBhY3RpdmUgcmVnaW9uLCB3cmFwIGl0IHdp
dGggZW1waGFzaXMgbWFya2Vycy4KK0lmIHRoZXJlIGlzIG5vIHJlZ2lvbiwgaW5zZXJ0IG1hcmtl
ciBwYWlycyBhbmQgcGxhY2UgcG9pbnQgYmV0d2VlbgordGhlbS4gIENIQVIgc2VsZWN0cyB0aGUg
ZW1waGFzaXMgdHlwZToKKworICBiICAgKipib2xkKiogICAgICAgQiAgX19ib2xkX18KKyAgaSAg
ICppdGFsaWMqICAgICAgIEkgIF9pdGFsaWNfCisgIGEgICAqKipib2xkK2l0YWxpYyoqKgorICBz
ICAgfn5zdHJpa2V0aHJvdWdofn4KKyAgYyAgIGBjb2RlYAorICBTUEMgcmVtb3ZlIGVtcGhhc2lz
IGF0IHBvaW50IG9yIHJlZ2lvbiIKKyAgKGludGVyYWN0aXZlCisgICAiY0VtcGhhc2lzIFtiXW9s
ZCBbQl1vbGRfIFtpXXRhbGljIFtJXXRhbGljXyBbYV1sbCBbc110cmlrZSBbY11vZGUgU1BDIHJl
bW92ZToiKQorICAoaWYgKGVxIGNoYXIgP1xzKQorICAgICAgKG1hcmtkb3duLXRzLXJlbW92ZS1l
bXBoYXNpcykKKyAgICAoaWYtbGV0KiAoKG1hcmtlciAoY2RyIChhc3NxIGNoYXIgbWFya2Rvd24t
dHMtZW1waGFzaXMtYWxpc3QpKSkpCisgICAgICAgIChpZiAodXNlLXJlZ2lvbi1wKQorICAgICAg
ICAgICAgKGxldCAoKGJlZyAocmVnaW9uLWJlZ2lubmluZykpCisgICAgICAgICAgICAgICAgICAo
ZW5kIChjb3B5LW1hcmtlciAocmVnaW9uLWVuZCkpKSkKKyAgICAgICAgICAgICAgKHNhdmUtZXhj
dXJzaW9uCisgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBlbmQpCisgICAgICAgICAgICAgICAg
KGluc2VydCBtYXJrZXIpCisgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAg
ICAgICAgICAgKGluc2VydCBtYXJrZXIpKSkKKyAgICAgICAgICAoaWYtbGV0KiAoKGJvdW5kcyAo
Ym91bmRzLW9mLXRoaW5nLWF0LXBvaW50ICd3b3JkKSkpCisgICAgICAgICAgICAgIChzYXZlLWV4
Y3Vyc2lvbgorICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKGNkciBib3VuZHMpKQorICAgICAg
ICAgICAgICAgIChpbnNlcnQgbWFya2VyKQorICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKGNh
ciBib3VuZHMpKQorICAgICAgICAgICAgICAgIChpbnNlcnQgbWFya2VyKSkKKyAgICAgICAgICAg
IChpbnNlcnQgbWFya2VyIG1hcmtlcikKKyAgICAgICAgICAgIChiYWNrd2FyZC1jaGFyIChsZW5n
dGggbWFya2VyKSkpKQorICAgICAgKHVzZXItZXJyb3IgIk5vIHN1Y2ggZW1waGFzaXMgbWFya2Vy
OiAlYyIgY2hhcikpKSkKKworOzs7IEJsb2NrIHN0cnVjdHVyZToKKworKGRlZnVuIG1hcmtkb3du
LXRzLWluc2VydC1zdHJ1Y3R1cmUgKCZvcHRpb25hbCBjaGFyKQorICAiSW5zZXJ0IGEgYmxvY2sg
c3RydWN0dXJlLgorSWYgdGhlcmUgaXMgYW4gYWN0aXZlIHJlZ2lvbiwgd3JhcCBpdC4gIE90aGVy
d2lzZSwgaW5zZXJ0IGFuIGVtcHR5CitibG9jayBhbmQgcGxhY2UgcG9pbnQgaW5zaWRlLiAgQ0hB
UiBzZWxlY3RzIHRoZSBzdHJ1Y3R1cmUgdHlwZToKKworICBjICBmZW5jZWQgY29kZSBibG9jayAo
YGBgKQorICB0ICB0aWxkZSBmZW5jZWQgY29kZSBibG9jayAofn5+KQorICBxICBibG9jayBxdW90
ZSAoPiApCisgIGQgIGhvcml6b250YWwgZGl2aWRlci9ydWxlICgtLS0pIgorICAoaW50ZXJhY3Rp
dmUgImNTdHJ1Y3R1cmUgW2Ndb2RlIGJsb2NrIFt0XWlsZGUgY29kZSBibG9jayBbcV11b3RlIFtk
XWl2aWRlcjoiKQorICAocGNhc2UgY2hhcgorICAgICg/YyAobWFya2Rvd24tdHMtLWluc2VydC1j
b2RlLWJsb2NrID9gKSkKKyAgICAoP3QgKG1hcmtkb3duLXRzLS1pbnNlcnQtY29kZS1ibG9jayA/
fikpCisgICAgKD9xIChtYXJrZG93bi10cy0taW5zZXJ0LWJsb2NrLXF1b3RlKSkKKyAgICAoP2Qg
KG1hcmtkb3duLXRzLS1pbnNlcnQtZGl2aWRlcikpCisgICAgKF8gKHVzZXItZXJyb3IgIk5vIHN1
Y2ggc3RydWN0dXJlOiAlYyIgY2hhcikpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbnNlcnQt
Y29kZS1ibG9jayAoY2hhciAmb3B0aW9uYWwgbGFuZ3VhZ2UpCisgICJJbnNlcnQgYSBmZW5jZWQg
Y29kZSBibG9jayB1c2luZyBhIENIQVIgc2VxdWVuY2UuCitDSEFSIHNob3VsZCBiZSBvbmUgb2Yg
YSBiYWNrdGljayBvciBhIHRpbGRlLgorTEFOR1VBR0UgaXMgYSB3aGl0ZXNwYWNlIGZyZWUgbGFu
Z3VhZ2Ugc3RyaW5nLiIKKyAgKHNldHEgbGFuZ3VhZ2UKKyAgICAgICAgKG9yIGxhbmd1YWdlCisg
ICAgICAgICAgICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCisgICAgICAgICAgICAgIltbOmJs
YW5rOl1dIiAiIgorICAgICAgICAgICAgIChsZXQgKChjb21wbGV0aW9uLWlnbm9yZS1jYXNlIG5p
bCkKKyAgICAgICAgICAgICAgICAgICAoY2FuZGlkYXRlcworICAgICAgICAgICAgICAgICAgICAo
c2VxLW1hcAorICAgICAgICAgICAgICAgICAgICAgIydzeW1ib2wtbmFtZQorICAgICAgICAgICAg
ICAgICAgICAgKHNlcS11bmlxCisgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCAobWFwY2Fy
ICMnY2FyIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChtYXBjYXIgIydjYXIgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9u
LXRzLW1vZGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAjJ2NhciBt
YXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKSkpKSkpCisgICAgICAgICAgICAgICAoY29tcGxl
dGluZy1yZWFkCisgICAgICAgICAgICAgICAgIkNvZGUgYmxvY2sgbGFuZ3VhZ2U6ICIKKyAgICAg
ICAgICAgICAgICBjYW5kaWRhdGVzCisgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAg
ICAgJ2NvbmZpcm0gOyBQcm9tcHQgaWYgdGhlIGxhbmd1YWdlIGlzIG5vdCBvbiBvdXIgbGlzdC4K
KyAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtbGFuZ3Vh
Z2UtaGlzdG9yeSkpKSkpCisgIChsZXQgKChmZW5jZS1zdHJpbmcgKG1ha2Utc3RyaW5nIDMgY2hh
cikpKQorICAgIChpZiAodXNlLXJlZ2lvbi1wKQorICAgICAgICAobGV0ICgoYmVnIChyZWdpb24t
YmVnaW5uaW5nKSkKKyAgICAgICAgICAgICAgKGVuZCAocmVnaW9uLWVuZCkpKQorICAgICAgICAg
IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgKGdvdG8tY2hhciBlbmQpCisgICAgICAgICAg
ICAodW5sZXNzIChib2xwKSAoaW5zZXJ0ICJcbiIpKQorICAgICAgICAgICAgKGluc2VydCBmZW5j
ZS1zdHJpbmcgIlxuIikKKyAgICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgICAg
KGluc2VydCBmZW5jZS1zdHJpbmcgbGFuZ3VhZ2UgIlxuIikpKQorICAgICAgKGluc2VydCBmZW5j
ZS1zdHJpbmcgbGFuZ3VhZ2UgIlxuXG4iIGZlbmNlLXN0cmluZykKKyAgICAgIChmb3J3YXJkLWxp
bmUgLTEpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW5zZXJ0LWJsb2NrLXF1b3RlICgpCisg
ICJJbnNlcnQgYSBibG9jayBxdW90ZS4iCisgIChpZiAodXNlLXJlZ2lvbi1wKQorICAgICAgKGxl
dCAoKGJlZyAocmVnaW9uLWJlZ2lubmluZykpCisgICAgICAgICAgICAoZW5kIChjb3B5LW1hcmtl
ciAocmVnaW9uLWVuZCkpKSkKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdv
dG8tY2hhciBiZWcpCisgICAgICAgICAgKHdoaWxlICg8IChwb2ludCkgZW5kKQorICAgICAgICAg
ICAgKGluc2VydCAiPiAiKQorICAgICAgICAgICAgKGZvcndhcmQtbGluZSAxKSkpKQorICAgIChp
bnNlcnQgIj4gIikpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWluc2VydC1kaXZpZGVyICgpCisg
ICJJbnNlcnQgYSBob3Jpem9udGFsIHJ1bGUuIgorICAodW5sZXNzIChib2xwKSAoaW5zZXJ0ICJc
biIpKQorICAoaW5zZXJ0ICJcbi0tLVxuXG4iKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1hcHBs
eS1lbGxpcHNpcyAoKQorICAiQXBwbHkgYG1hcmtkb3duLXRzLWVsbGlwc2lzJyB0byB0aGUgY3Vy
cmVudCBidWZmZXIncyBkaXNwbGF5IHRhYmxlLiIKKyAgKGlmIChhbmQgKHN0cmluZ3AgbWFya2Rv
d24tdHMtZWxsaXBzaXMpCisgICAgICAgICAgIChub3QgKHN0cmluZy1lbXB0eS1wIG1hcmtkb3du
LXRzLWVsbGlwc2lzKSkpCisgICAgICAobGV0ICgodGFibGUgKG9yIGJ1ZmZlci1kaXNwbGF5LXRh
YmxlCisgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLWRpc3BsYXktdGFibGUpKSkpCisgICAg
ICAgIChzZXQtZGlzcGxheS10YWJsZS1zbG90CisgICAgICAgICB0YWJsZSA0CisgICAgICAgICAo
dmNvbmNhdCAobWFwY2FyIChsYW1iZGEgKGMpIChtYWtlLWdseXBoLWNvZGUgYyAnc2hhZG93KSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtZWxsaXBzaXMpKSkKKyAgICAg
ICAgKHNldHEgYnVmZmVyLWRpc3BsYXktdGFibGUgdGFibGUpKQorICAgICh3aGVuIGJ1ZmZlci1k
aXNwbGF5LXRhYmxlCisgICAgICAoc2V0LWRpc3BsYXktdGFibGUtc2xvdCBidWZmZXItZGlzcGxh
eS10YWJsZSA0IG5pbCkpKSkKKworOzs7IE1ham9yIG1vZGU6CisKKyhkZWZ1biBtYXJrZG93bi10
cy1vdXRsaW5lLWN5Y2xlICgpCisgICJDeWNsZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWFkaW5nIGF0
IHBvaW50LgorT24gYSBoZWFkaW5nLCBjYWxsIGBvdXRsaW5lLWN5Y2xlJy4gIE90aGVyd2lzZSBk
byBub3RoaW5nLiIKKyAgKGludGVyYWN0aXZlKQorICAod2hlbiAob3V0bGluZS1vbi1oZWFkaW5n
LXApCisgICAgKG91dGxpbmUtY3ljbGUpKSkKKworKGRlZnZhci1rZXltYXAgbWFya2Rvd24tdHMt
bW9kZS1tYXAKKyAgOmRvYyAiS2V5bWFwIGZvciBgbWFya2Rvd24tdHMtbW9kZScuIgorICAiTS08
bGVmdD4iICAgICMnbWFya2Rvd24tdHMtcHJvbW90ZQorICAiTS08cmlnaHQ+IiAgICMnbWFya2Rv
d24tdHMtZGVtb3RlCisgICJNLTx1cD4iICAgICAgIydtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUt
dXAKKyAgIk0tPGRvd24+IiAgICAjJ21hcmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duCisgICJD
LWMgQy1uIiAgICAgIydvdXRsaW5lLW5leHQtaGVhZGluZworICAiQy1jIEMtcCIgICAgICMnb3V0
bGluZS1wcmV2aW91cy1oZWFkaW5nCisgICJDLWMgQy11IiAgICAgIydvdXRsaW5lLXVwLWhlYWRp
bmcKKyAgIkMtYyBDLWYiICAgICAjJ291dGxpbmUtZm9yd2FyZC1zYW1lLWxldmVsCisgICJDLWMg
Qy1iIiAgICAgIydvdXRsaW5lLWJhY2t3YXJkLXNhbWUtbGV2ZWwKKyAgIkMtYyBDLXggQy1mIiAj
J21hcmtkb3duLXRzLWVtcGhhc2l6ZQorICAiQy1jIEMteCBDLW0iICMnbWFya2Rvd24tdHMtdG9n
Z2xlLWhpZGUtbWFya3VwCisgICJDLWMgQy14IEMtdiIgIydtYXJrZG93bi10cy10b2dnbGUtaW5s
aW5lLWltYWdlcworICAiQy1jIEMtYyIgICAgICMnbWFya2Rvd24tdHMtdG9nZ2xlLWNoZWNrYm94
CisgICJDLWMgQy1yIiAgICAgIydtYXJrZG93bi10cy1yZW51bWJlci1saXN0CisgICJDLWMgQy0s
IiAgICAgIydtYXJrZG93bi10cy1pbnNlcnQtc3RydWN0dXJlCisgICJDLWMgQy12IG4iICAgIydt
YXJrZG93bi10cy1tb3ZlLXRvLW5leHQtY29kZS1ibG9jaworICAiQy1jIEMtdiBwIiAgICMnbWFy
a2Rvd24tdHMtbW92ZS10by1wcmV2aW91cy1jb2RlLWJsb2NrCisgICJSRVQiICAgICAgICAgIydt
YXJrZG93bi10cy1uZXdsaW5lCisgICJNLVJFVCIgICAgICAgIydtYXJrZG93bi10cy1pbnNlcnQt
bGlzdC1pdGVtCisgICJUQUIiICAgICAgICAgIydtYXJrZG93bi10cy1vdXRsaW5lLWN5Y2xlKQor
CisoZGVmdmFyLWtleW1hcCBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZS1tYXAK
KyAgOmRvYyAiS2V5bWFwIGZvciBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1jb250ZXh0LW1vZGUn
LgorVGhlc2Ugb3ZlcnJpZGUga2V5cyBpbiBgbWFya2Rvd24tdHMtbW9kZS1tYXAnIHRvIHN1cHBv
cnQgZXhlY3V0aW5nIHRoZWlyCitjb21tYW5kcyBpbiBhIGNvZGUtYmxvY2sgY29udGV4dC4iCisg
IDpwYXJlbnQgbWFya2Rvd24tdHMtbW9kZS1tYXAKKyAgIk0tLiIgICAgICAgICAjJ21hcmtkb3du
LXRzLS1jb2RlLWJsb2NrLXhyZWYtZmluZC1kZWZpbml0aW9ucworICAiVEFCIiAgICAgICAgICMn
aW5kZW50LWZvci10YWItY29tbWFuZAorICAiUkVUIiAgICAgICAgICMnbWFya2Rvd24tdHMtLWNv
ZGUtYmxvY2stbmV3bGluZQorICAiQy1qIiAgICAgICAgICMnbWFya2Rvd24tdHMtLWNvZGUtYmxv
Y2stbmV3bGluZQorICAiTS1SRVQiICAgICAgICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3
bGluZQorICAiTS1xIiAgICAgICAgICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stZmlsbC1wYXJh
Z3JhcGgpCisKKyhlYXN5LW1lbnUtZGVmaW5lIG1hcmtkb3duLXRzLW1vZGUtbWVudSBtYXJrZG93
bi10cy1tb2RlLW1hcAorICAiYG1hcmtkb3duLXRzLW1vZGUnIG1lbnUuIgorICAnKCJNYXJrZG93
biIgOnZpc2libGUgbWFya2Rvd24tdHMtbWVudS1iYXItc2hvdworICAgICItLSIKKyAgICBbIkN5
Y2xlIE91dGxpbmUgVmlzaWJpbGl0eSIgbWFya2Rvd24tdHMtb3V0bGluZS1jeWNsZQorICAgICA6
aGVscCAiQ3ljbGUgaGVhZGluZyB2aXNpYmlsaXR5IGZyb20gcG9pbnQiXQorICAgIFsiVG9nZ2xl
IEhpZGUgTWFya3VwIiBtYXJrZG93bi10cy10b2dnbGUtaGlkZS1tYXJrdXAKKyAgICAgOnN0eWxl
IHRvZ2dsZSA6c2VsZWN0ZWQgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgOmhlbHAgIlRv
Z2dsZSBkaXNwbGF5IG9mIG1hcmt1cCBjaGFyYWN0ZXJzIl0KKyAgICBbIlRvZ2dsZSBJbmxpbmUg
SW1hZ2VzIiBtYXJrZG93bi10cy10b2dnbGUtaW5saW5lLWltYWdlcworICAgICA6c3R5bGUgdG9n
Z2xlIDpzZWxlY3RlZCBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzCisgICAgIDpoZWxwICJUb2dn
bGUgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGJlbG93IGxpbmtzIl0KKyAgICAiLS0iCisgICAg
WyJVcCIgb3V0bGluZS11cC1oZWFkaW5nCisgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwYXJlbnQg
aGVhZGluZyJdCisgICAgWyJOZXh0IiBvdXRsaW5lLW5leHQtaGVhZGluZworICAgICA6aGVscCAi
TW92ZSB0byB0aGUgbmV4dCBoZWFkaW5nIl0KKyAgICBbIlByZXZpb3VzIiBvdXRsaW5lLXByZXZp
b3VzLWhlYWRpbmcKKyAgICAgOmhlbHAgIk1vdmUgdG8gdGhlIHByZXZpb3VzIGhlYWRpbmciXQor
ICAgIFsiTmV4dCBTYW1lIExldmVsIiBvdXRsaW5lLWZvcndhcmQtc2FtZS1sZXZlbAorICAgICA6
aGVscCAiTW92ZSB0byB0aGUgbmV4dCBoZWFkaW5nIGF0IHRoZSBzYW1lIGxldmVsIl0KKyAgICBb
IlByZXZpb3VzIFNhbWUgTGV2ZWwiIG91dGxpbmUtYmFja3dhcmQtc2FtZS1sZXZlbAorICAgICA6
aGVscCAiTW92ZSB0byB0aGUgcHJldmlvdXMgaGVhZGluZyBhdCB0aGUgc2FtZSBsZXZlbCJdCisg
ICAgIi0tIgorICAgIFsiSnVtcCIgaW1lbnUKKyAgICAgOmhlbHAgIkp1bXAgdG8gYSBoZWFkaW5n
IHZpYSBjb21wbGV0aW9uIl0KKyAgICAiLS0iCisgICAgWyJNb3ZlIFN1YnRyZWUgVXAiIG1hcmtk
b3duLXRzLW1vdmUtc3VidHJlZS11cAorICAgICA6aGVscCAiTW92ZSB0aGUgY3VycmVudCBzZWN0
aW9uIG9yIGxpc3QgaXRlbSB1cCJdCisgICAgWyJNb3ZlIFN1YnRyZWUgRG93biIgbWFya2Rvd24t
dHMtbW92ZS1zdWJ0cmVlLWRvd24KKyAgICAgOmhlbHAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlv
biBvciBsaXN0IGl0ZW0gZG93biJdCisgICAgWyJQcm9tb3RlIiBtYXJrZG93bi10cy1wcm9tb3Rl
CisgICAgIDpoZWxwICJQcm9tb3RlIGhlYWRpbmcgb3IgbGlzdCBpdGVtIl0KKyAgICBbIkRlbW90
ZSIgbWFya2Rvd24tdHMtZGVtb3RlCisgICAgIDpoZWxwICJEZW1vdGUgaGVhZGluZyBvciBsaXN0
IGl0ZW0iXQorICAgICItLSIKKyAgICBbIkVtcGhhc2lzLi4uIiBtYXJrZG93bi10cy1lbXBoYXNp
emUKKyAgICAgOmhlbHAgIkFkZCBvciBjaGFuZ2UgZW1waGFzaXMgb24gcmVnaW9uIl0KKyAgICBb
IkFkZCBCbG9jayBTdHJ1Y3R1cmUiIG1hcmtkb3duLXRzLWluc2VydC1zdHJ1Y3R1cmUKKyAgICAg
OmhlbHAgIkluc2VydCBhIGNvZGUgYmxvY2ssIHF1b3RlLCBvciBvdGhlciBzdHJ1Y3R1cmUiXQor
ICAgICItLSIKKyAgICBbIlRvZ2dsZSBDaGVja2JveCIgbWFya2Rvd24tdHMtdG9nZ2xlLWNoZWNr
Ym94CisgICAgIDpoZWxwICJUb2dnbGUgdGFzayBsaXN0IGNoZWNrYm94IGF0IHBvaW50Il0KKyAg
ICBbIk5ldyBMaXN0IEl0ZW0iIG1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0KKyAgICAgOmhl
bHAgIkluc2VydCBhIG5ldyBsaXN0IGl0ZW0gYWZ0ZXIgdGhlIGN1cnJlbnQgb25lIl0KKyAgICBb
IlJlbnVtYmVyIExpc3QiIG1hcmtkb3duLXRzLXJlbnVtYmVyLWxpc3QKKyAgICAgOmhlbHAgIlJl
bnVtYmVyIHRoZSBvcmRlcmVkIGxpc3QgYXQgcG9pbnQiXSkpCisKKyhkZWZ1biBtYXJrZG93bi10
cy0tc2V0LXVwICgpCisgICJTZXQgdXAgdGhlIGJ1ZmZlciBmb3IgYG1hcmtkb3duLXRzLW1vZGUn
LgorSWYgYG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lJyBpcyBub24tbmlsLCB1c2UgYSBsaWdo
dHdlaWdodCBzZXQgdXAgZm9yCitlbWJlZGRlZCBpbmxpbmUgYG1hcmtkb3duLXRzLW1vZGUnIGJ1
ZmZlcnMuCisKK05PVEU6IENhbGwgdGhpcyBmdW5jdGlvbiBvbmx5IHdoZW4gdGhlIHRyZWVzaXQg
YG1hcmtkb3duJyBhbmQKK2BtYXJrZG93bi1pbmxpbmUnIHBhcnNlcnMgYXJlIGF2YWlsYWJsZS4i
CisKKyAgOzsgU2V0IHRoZXNlIHVwIGZvciBib3RoIG1hc3RlciBhbmQgaW5saW5lIGZvciBjb2Rl
LWJsb2NrIGJ1ZmZlcnMuCisgIChzZXRxLWxvY2FsIGNvbW1lbnQtc3RhcnQgIjwhLS0gIgorICAg
ICAgICAgICAgICBjb21tZW50LWVuZCAiIC0tPiIKKyAgICAgICAgICAgICAgY29tbWVudC1zdGFy
dC1za2lwICI8IS0tWyBcdF0qIgorICAgICAgICAgICAgICBjb21tZW50LWVuZC1za2lwICJbIFx0
XSotLT4iCisgICAgICAgICAgICAgIGNvbW1lbnQtdXNlLXN5bnRheCBuaWwpCisKKyAgKHNldHEt
bG9jYWwgZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24KKyAgICAgICAgICAgICAgIydtYXJrZG93bi10
cy0tZmlsbC1wYXJhZ3JhcGgKKyAgICAgICAgICAgICAgZmlsbC1mb3J3YXJkLXBhcmFncmFwaC1m
dW5jdGlvbgorICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1maWxsLWZvcndhcmQtcGFyYWdy
YXBoKQorCisgIDs7IGBhZGFwdGl2ZS1maWxsLWZ1bmN0aW9uJyB0YWtlcyBwcmVjZWRlbmNlIG92
ZXIKKyAgOzsgYGFkYXB0aXZlLWZpbGwtcmVnZXhwJzsgdGhlIGRlZmF1bHQgcmVnZXhwIGlzIGZp
bmUgYXMgYQorICA7OyBmYWxsYmFjayBmb3IgcGxhaW4gKG5vbi1saXN0KSBwYXJhZ3JhcGhzLgor
ICAoc2V0cS1sb2NhbCBhZGFwdGl2ZS1maWxsLWZ1bmN0aW9uICMnbWFya2Rvd24tdHMtLWFkYXB0
aXZlLWZpbGwpCisKKyAgOzsgQ3JlYXRlIGFuZCBjb25maWd1cmUgdGhlIHBhcnNlcnMuCisgICh0
cmVlc2l0LXBhcnNlci1jcmVhdGUgJ21hcmtkb3duLWlubGluZSkKKyAgKHNldHEgdHJlZXNpdC1w
cmltYXJ5LXBhcnNlcgorICAgICAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdtYXJrZG93bikp
CisKKyAgKHNldHEtbG9jYWwgZm9udC1sb2NrLWRlZmF1bHRzIG5pbCkKICAgKHNldHEtbG9jYWwg
dHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3Mp
Ci0gIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MgKG1hcmtkb3duLXRzLS1yYW5n
ZS1zZXR0aW5ncykpCi0gIChhZGQtdG8tbGlzdCAnZm9udC1sb2NrLWV4dHJhLW1hbmFnZWQtcHJv
cHMgJ2ludmlzaWJsZSkKLQotICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICdodG1sIHQpCi0gICAg
KHRyZWVzaXQtcGFyc2VyLWNyZWF0ZSAnaHRtbCkKLSAgICAocmVxdWlyZSAnaHRtbC10cy1tb2Rl
KQotICAgIChkZWZ2YXIgaHRtbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRl
ZnZhciBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKLSAgICAo
c2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChh
cHBlbmQgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAg
IGh0bWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVl
c2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJn
ZS1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1s
b2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAgICAgICBodG1sLXRzLW1vZGUtLXRyZWVzaXQt
Zm9udC1sb2NrLWZlYXR1cmUtbGlzdCkpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1z
ZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwot
ICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKLSAgICAgICAgICAg
ICAgICAgICAgICAgICA6ZW1iZWQgJ2h0bWwKLSAgICAgICAgICAgICAgICAgICAgICAgICA6aG9z
dCAnbWFya2Rvd24KLSAgICAgICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAotICAgICAgICAg
ICAgICAgICAgICAgICAgICcoKGh0bWxfYmxvY2spIEBodG1sKQotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgOmVtYmVkICdodG1sCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21h
cmtkb3duLWlubGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICcoKGh0bWxfdGFnKSBAaHRt
bCkpKSkpCi0KLSAgKHdoZW4gKHRyZWVzaXQtcmVhZHktcCAneWFtbCB0KQotICAgIChyZXF1aXJl
ICd5YW1sLXRzLW1vZGUpCi0gICAgKGRlZnZhciB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0
aW5ncykKLSAgICAoZGVmdmFyIHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkK
LSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAg
ICAgIChhcHBlbmQgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2Nh
bCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAodHJlZXNp
dC1tZXJnZS1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQt
Zm9udC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZv
bnQtbG9jay1mZWF0dXJlLWxpc3QpKQotICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0
dGluZ3MKLSAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAg
ICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgOmVtYmVkICd5YW1sCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3Qg
J21hcmtkb3duCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnKChtaW51c19tZXRhZGF0YSkgQHlhbWwpKSkpKQotCi0gICh3aGVuICh0
cmVlc2l0LXJlYWR5LXAgJ3RvbWwgdCkKLSAgICAocmVxdWlyZSAndG9tbC10cy1tb2RlKQotICAg
IChkZWZ2YXIgdG9tbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciB0
b21sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpCi0gICAgKHNldHEgdHJlZXNpdC1m
b250LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNl
dHRpbmdzCi0gICAgICAgICAgICAgICAgICB0b21sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5n
cykpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAg
ICAgICAgICAgICAgKHRyZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAg
ICAgICAgICAgICB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAg
ICAgdG9tbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KSkKLSAgICAoc2V0cS1sb2Nh
bCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0
LXJhbmdlLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1y
dWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJlZCAndG9tbAotICAgICAgICAgICAg
ICAgICAgICAgICAgIDpob3N0ICdtYXJrZG93bgotICAgICAgICAgICAgICAgICAgICAgICAgIDps
b2NhbCB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJygocGx1c19tZXRhZGF0YSkgQHRvbWwp
KSkpKQorICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QgJygoZGVs
aW1pdGVyIGhlYWRpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChwYXJhZ3JhcGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChwYXJhZ3JhcGgtaW5saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoaW1hZ2UtcHJldmlldykpKQorCisgIChjb25kIChtYXJrZG93
bi10cy0tc2V0LXVwLWlubGluZQorICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Ut
c2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAg
ICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ21hcmtkb3duLWlubGluZQorICAgICAgICAgICAg
ICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KKyAgICAgICAgICAgICAgICAgICAgICAgJygoaW5s
aW5lKSBAbWFya2Rvd24taW5saW5lKSkpKQorICAgICAgICAodAorICAgICAgICAgOzsgUmFuZ2Ug
c2V0dGluZ3MgZGlmZmVyIGluIHRoZSBtYXN0ZXIgYnVmZmVyIHZzLiBpbmxpbmUgYWJvdmUuCisg
ICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzIChtYXJrZG93bi10cy0t
cmFuZ2Utc2V0dGluZ3MpKQorCisgICAgICAgICA7OyBDb25maWd1cmUgZmVhdHVyZXMgbmVlZGVk
IG9ubHkgaW4gdGhlIG1hc3RlciBidWZmZXIuCisKKyAgICAgICAgIDs7IEltZW51IHN1cHBvcnQu
CisgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXNpbXBsZS1pbWVudS1zZXR0aW5ncworICAg
ICAgICAgICAgICAgICAgICAgYCgoIkhlYWRpbmdzIiAsIydtYXJrZG93bi10cy0taW1lbnUtaGVh
ZGluZy1ub2RlLXAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pbCAsIydtYXJrZG93bi10cy0t
aW1lbnUtaGVhZGluZy1uYW1lLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAoIkNv
ZGUgQmxvY2tzIiAsIydtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1ub2RlLXAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5pbCAsIydtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1u
YW1lLWZ1bmN0aW9uKSkpCisKKyAgICAgICAgIDs7IE91dGxpbmUgc3VwcG9ydC4KKyAgICAgICAg
IChzZXRxLWxvY2FsIHRyZWVzaXQtb3V0bGluZS1wcmVkaWNhdGUgIydtYXJrZG93bi10cy0tb3V0
bGluZS1wcmVkaWNhdGUpCisgICAgICAgICAoc2V0cS1sb2NhbCBvdXRsaW5lLW1pbm9yLW1vZGUt
Y3ljbGUgdCkKKyAgICAgICAgIChvdXRsaW5lLW1pbm9yLW1vZGUgMSkKKyAgICAgICAgIChtYXJr
ZG93bi10cy0tYXBwbHktZWxsaXBzaXMpCisKKyAgICAgICAgIDs7IE5PVEU6IGBvdXRsaW5lLXZp
ZXctY2hhbmdlLWhvb2snIHdhcyBvYnNvbGV0ZWQgaW4gMjkuMSAoY29tbWl0CisgICAgICAgICA7
OyA1M2IxZTZmOTZjYikgb24gdGhlIGdyb3VuZHMgdGhhdCBvbmx5IGxhenktbG9jayB1c2VkIGl0
LCBidXQgbm8KKyAgICAgICAgIDs7IHJlcGxhY2VtZW50IHdhcyBwcm92aWRlZCBhbmQgb3V0bGlu
ZS5lbCBpdHNlbGYgc3RpbGwgcnVucyB0aGUgaG9vaworICAgICAgICAgOzsgaW4gMTArIHBsYWNl
cy4KKyAgICAgICAgICh3aXRoLXN1cHByZXNzZWQtd2FybmluZ3MgKChvYnNvbGV0ZSBvdXRsaW5l
LXZpZXctY2hhbmdlLWhvb2spKQorICAgICAgICAgICAoYWRkLWhvb2sgJ291dGxpbmUtdmlldy1j
aGFuZ2UtaG9vaworICAgICAgICAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tb3V0bGluZS12
aWV3LWNoYW5nZSBuaWwgdCkpCisKKyAgICAgICAgIChwcm9nbgorICAgICAgICAgICAobWFrZS1s
b2NhbC12YXJpYWJsZSAnbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApCisgICAgICAgICAgIChtYWtl
LWxvY2FsLXZhcmlhYmxlICdmb250LWxvY2stZXh0cmEtbWFuYWdlZC1wcm9wcykKKyAgICAgICAg
ICAgKGRvbGlzdCAocHJvcCAnKGludmlzaWJsZSBkaXNwbGF5IGJ1dHRvbiBjYXRlZ29yeSBhY3Rp
b24gaGVscC1lY2hvKSkKKyAgICAgICAgICAgICAoYWRkLXRvLWxpc3QgJ2ZvbnQtbG9jay1leHRy
YS1tYW5hZ2VkLXByb3BzIHByb3ApKSkKKworICAgICAgICAgKHdoZW4gKHRyZWVzaXQtcmVhZHkt
cCAnaHRtbCB0KQorICAgICAgICAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdodG1sKQorICAg
ICAgICAgICAocmVxdWlyZSAnaHRtbC10cy1tb2RlKQorICAgICAgICAgICAoZGVmdmFyIGh0bWwt
dHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKQorICAgICAgICAgICAoZGVmdmFyIGh0bWwtdHMt
bW9kZS0tdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0KQorICAgICAgICAgICAoc2V0cS1s
b2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAo
YXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaHRtbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpKQorICAgICAgICAgICAo
c2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAg
ICAgICAgICAgKHRyZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAg
ICAgICAgICAgICAgICAgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAg
ICAgICAgICAgICAgICBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlz
dCkpCisgICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAg
ICAgICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOmVtYmVkICdodG1sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDpob3N0ICdtYXJrZG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6bG9jYWwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChodG1sX2Jsb2Nr
KSBAaHRtbCkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ2h0bWwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duLWlubGluZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChodG1sX3RhZykgQGh0bWwpKSkpKQor
CisgICAgICAgICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICd5YW1sIHQpCisgICAgICAgICAgIChy
ZXF1aXJlICd5YW1sLXRzLW1vZGUpCisgICAgICAgICAgIChkZWZ2YXIgeWFtbC10cy1tb2RlLS1m
b250LWxvY2stc2V0dGluZ3MpCisgICAgICAgICAgIChkZWZ2YXIgeWFtbC10cy1tb2RlLS1mb250
LWxvY2stZmVhdHVyZS1saXN0KQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQt
bG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9u
dC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWFtbC10cy1t
b2RlLS1mb250LWxvY2stc2V0dGluZ3MpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0
LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQt
bWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgdHJl
ZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAgICB5YW1s
LXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpKQorICAgICAgICAgICAoc2V0cS1sb2Nh
bCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQg
dHJlZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0
cmVlc2l0LXJhbmdlLXJ1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJl
ZCAneWFtbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJygobWludXNfbWV0YWRhdGEpIEB5YW1sKSkpKSkKKworICAgICAg
ICAgKHdoZW4gKHRyZWVzaXQtcmVhZHktcCAndG9tbCB0KQorICAgICAgICAgICAocmVxdWlyZSAn
dG9tbC10cy1tb2RlKQorICAgICAgICAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2Nr
LXNldHRpbmdzKQorICAgICAgICAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZl
YXR1cmUtbGlzdCkKKyAgICAgICAgICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MK
KyAgICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKSkK
KyAgICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Cisg
ICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW1lcmdlLWZvbnQtbG9jay1mZWF0dXJlLWxp
c3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlz
dAorICAgICAgICAgICAgICAgICAgICAgICAgdG9tbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVy
ZS1saXN0KSkKKyAgICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwor
ICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ3RvbWwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDpsb2NhbCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKHBsdXNf
bWV0YWRhdGEpIEB0b21sKSkpKSkKKworICAgICAgICAgOzsgU3VwcG9ydCBmb3IgZXhlY3V0aW5n
IGNvbW1hbmRzIGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorICAgICAgICAgOzsgR2F0ZWQgYnkg
YG1hcmtkb3duLXRzLWVuYWJsZS1jb2RlLWJsb2NrLWNvbnRleHQtbW9kZScuCisgICAgICAgICAo
d2hlbiBtYXJrZG93bi10cy1lbmFibGUtY29kZS1ibG9jay1jb250ZXh0LW1vZGUKKyAgICAgICAg
ICAgOzsgRW5hYmxlIHRoZSBtaW5vciBtb2RlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbnRl
eHQtbW9kZScgYW5kCisgICAgICAgICAgIDs7IGl0cyBrZXltYXAgd2hlbiBwb2ludCBpcyB3aXRo
aW4gYSBjb2RlIGJsb2NrLgorICAgICAgICAgICAoYWRkLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29r
CisgICAgICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1lbmFibGUtY29kZS1ibG9jay1j
b250ZXh0LW1vZGUgbmlsICdsb2NhbCkKKyAgICAgICAgICAgOzsgSWYgYHNhdmUtcGxhY2UtbW9k
ZScgb3Igc2ltaWxhciBpcyB1c2VkLCBwb2ludCBjb3VsZCBzdGFydCB3aXRoaW4KKyAgICAgICAg
ICAgOzsgYSBjb2RlIGJsb2NrIHNvIGluaXRpYWxpemUgdGhhdCBzdGF0ZS4KKyAgICAgICAgICAg
KHJ1bi13aXRoLWlkbGUtdGltZXIgMC4wMSBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIydtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2stY29udGV4dC1tb2RlKQorICAg
ICAgICAgICA7OyBGb3IgZWFjaCBlbGlnaWJsZSBjb21tYW5kLCBleGVjdXRlIGl0IGluIGEgY29k
ZS1ibG9jayBjb250ZXh0LAorICAgICAgICAgICA7OyBvdGhlcndpc2UgaW4gdGhlIGBtYXJrZG93
bi10cy1tb2RlJyBidWZmZXIncyBjb250ZXh0LgorICAgICAgICAgICAoYWRkLWhvb2sgJ3ByZS1j
b21tYW5kLWhvb2sKKyAgICAgICAgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLW1heWJlLXJ1
bi1jb21tYW5kLWluLWNvZGUtYmxvY2sgbmlsICdsb2NhbCkpKSkKIAogICAodHJlZXNpdC1tYWpv
ci1tb2RlLXNldHVwKQotICAobWFya2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCBtYXJrZG93bi10
cy1oaWRlLW1hcmt1cCkpCisKKyAgOzsgRG8gbm90IGVuYWJsZSBgaml0LWxvY2stbW9kZScgaW4g
aW5kaXJlY3QgYnVmZmVycyBzdWNoIGFzIHRoZSBvbmUKKyAgOzsgd2UgdXNlIGZvciBjb2RlIGJs
b2NrIGNvbW1hbmRzLgorICAodW5sZXNzIChidWZmZXItYmFzZS1idWZmZXIpCisgICAgKGppdC1s
b2NrLXJlZ2lzdGVyICMnbWFya2Rvd24tdHMtLWZvbnRpZnktYmFyZS11cmkpKQorCisgICh1bmxl
c3MgbWFya2Rvd24tdHMtLXNldC11cC1pbmxpbmUKKyAgICA7OyBPcmRlciBtYXR0ZXJzOiBgbWFy
a2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCcgY2FsbHMgYGZvbnQtbG9jay1mbHVzaCcKKyAgICA7
OyAob25seSBtZWFuaW5nZnVsIG9uY2UgYHRyZWVzaXQtbWFqb3ItbW9kZS1zZXR1cCcgaGFzIHdp
cmVkIHVwCisgICAgOzsgZm9udC1sb2NrKSwgYW5kIGBtYXJrZG93bi10cy1kZWZhdWx0LWZvbGRp
bmcnIGNhbGxzIG91dGxpbmUKKyAgICA7OyBjb21tYW5kcyB0aGF0IHJlbHkgb24gYG91dGxpbmUt
c2VhcmNoLWZ1bmN0aW9uJywgd2hpY2gKKyAgICA7OyBgdHJlZXNpdC1tYWpvci1tb2RlLXNldHVw
JyBpbnN0YWxscyBmcm9tIGB0cmVlc2l0LW91dGxpbmUtcHJlZGljYXRlJy4KKyAgICAobWFya2Rv
d24tdHMtLXNldC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkKKyAgICA7OyBS
ZXNwZWN0IHRoZSB1c2VyJ3MgZGVmYXVsdCBvdXRsaW5lIGZvbGRpbmcuCisgICAgKHBjYXNlIG1h
cmtkb3duLXRzLWRlZmF1bHQtZm9sZGluZworICAgICAgKCdzaG93LWFsbCAoaWdub3JlKSkKKyAg
ICAgICgnZm9sZC1hbGwgKG91dGxpbmUtaGlkZS1zdWJsZXZlbHMgMSkpCisgICAgICAoJ2ZvbGQt
aGVhZGluZ3MgKG91dGxpbmUtc2hvdy1hbGwpCisgICAgICAgICAgICAgICAgICAgICAgKG91dGxp
bmUtaGlkZS1yZWdpb24tYm9keSAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKSkpCisKKyhkZWZ1
biBtYXJrZG93bi10cy1tb2RlLWluc3RhbGwtcGFyc2VycyAoYXJnKQorICAiSW5zdGFsbCBgbWFy
a2Rvd24tdHMtbW9kZScgdHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgcGFyc2Vycy4KK0lmIG5lZWRlZCwg
aW5zdGFsbCB0aGUgcmVxdWlyZWQgcGFyc2VycyBmb3IgYG1hcmtkb3duJyBhbmQgYG1hcmtkb3du
LWlubGluZScuCitXaXRoIGEgcHJlZml4IGFyZ3VtZW50LCBBUkcsIGlmIG5lZWRlZCwgaW5zdGFs
bCBwYXJzZXJzIGZvciBgaHRtbCcsCitgeWFtbCcsIGFuZCBgdG9tbCcuIgorICAoaW50ZXJhY3Rp
dmUgIlAiKQorICAodW5sZXNzICh0cmVlc2l0LXJlYWR5LXAgJ21hcmtkb3duIHQpCisgICAgKHRy
ZWVzaXQtaW5zdGFsbC1sYW5ndWFnZS1ncmFtbWFyICdtYXJrZG93bikpCisgICh1bmxlc3MgKHRy
ZWVzaXQtcmVhZHktcCAnbWFya2Rvd24taW5saW5lIHQpCisgICAgKHRyZWVzaXQtaW5zdGFsbC1s
YW5ndWFnZS1ncmFtbWFyICdtYXJrZG93bi1pbmxpbmUpKQorICAod2hlbiBhcmcKKyAgICAodW5s
ZXNzICh0cmVlc2l0LXJlYWR5LXAgJ2h0bWwgdCkKKyAgICAgIChyZXF1aXJlICdodG1sLXRzLW1v
ZGUpCisgICAgICAodHJlZXNpdC1pbnN0YWxsLWxhbmd1YWdlLWdyYW1tYXIgJ2h0bWwpKQorICAg
ICh1bmxlc3MgKHRyZWVzaXQtcmVhZHktcCAneWFtbCB0KQorICAgICAgKHJlcXVpcmUgJ3lhbWwt
dHMtbW9kZSkKKyAgICAgICh0cmVlc2l0LWluc3RhbGwtbGFuZ3VhZ2UtZ3JhbW1hciAneWFtbCkp
CisgICAgKHVubGVzcyAodHJlZXNpdC1yZWFkeS1wICd0b21sIHQpCisgICAgICAocmVxdWlyZSAn
dG9tbC10cy1tb2RlKQorICAgICAgKHRyZWVzaXQtaW5zdGFsbC1sYW5ndWFnZS1ncmFtbWFyICd0
b21sKSkpKQogCiA7OzsjIyNhdXRvbG9hZAogKGRlZmluZS1kZXJpdmVkLW1vZGUgbWFya2Rvd24t
dHMtbW9kZSB0ZXh0LW1vZGUgIk1hcmtkb3duIgotICAiTWFqb3IgbW9kZSBmb3IgZWRpdGluZyBN
YXJrZG93biB1c2luZyB0cmVlLXNpdHRlciBncmFtbWFyLiIKLQotICAoc2V0cS1sb2NhbCBjb21t
ZW50LXN0YXJ0ICI8IS0tICIpCi0gIChzZXRxLWxvY2FsIGNvbW1lbnQtZW5kICIgLS0+IikKLQot
ICAoc2V0cS1sb2NhbCBmb250LWxvY2stZGVmYXVsdHMgbmlsCi0JICAgICAgdHJlZXNpdC1mb250
LWxvY2stZmVhdHVyZS1saXN0ICcoKGRlbGltaXRlciBoZWFkaW5nKQotCQkJCQkgICAgICAgKHBh
cmFncmFwaCkKLQkJCQkJICAgICAgIChwYXJhZ3JhcGgtaW5saW5lKSkpCi0KLSAgKHNldHEtbG9j
YWwgdHJlZXNpdC1zaW1wbGUtaW1lbnUtc2V0dGluZ3MKLSAgICAgICAgICAgICAgYCgoIkhlYWRp
bmdzIiAsIydtYXJrZG93bi10cy1pbWVudS1ub2RlLXAKLSAgICAgICAgICAgICAgICAgbmlsICwj
J21hcmtkb3duLXRzLWltZW51LW5hbWUtZnVuY3Rpb24pKSkKLSAgKHNldHEtbG9jYWwgdHJlZXNp
dC1vdXRsaW5lLXByZWRpY2F0ZSAjJ21hcmtkb3duLXRzLW91dGxpbmUtcHJlZGljYXRlKQotCi0g
ICh3aGVuIChhbmQgKHRyZWVzaXQtZW5zdXJlLWluc3RhbGxlZCAnbWFya2Rvd24pCi0gICAgICAg
ICAgICAgKHRyZWVzaXQtZW5zdXJlLWluc3RhbGxlZCAnbWFya2Rvd24taW5saW5lKSkKLSAgICAo
dHJlZXNpdC1wYXJzZXItY3JlYXRlICdtYXJrZG93bi1pbmxpbmUpCi0gICAgKHRyZWVzaXQtcGFy
c2VyLWNyZWF0ZSAnbWFya2Rvd24pCi0gICAgKG1hcmtkb3duLXRzLXNldHVwKSkpCisgICJNYWpv
ciBtb2RlIGZvciBlZGl0aW5nIE1hcmtkb3duIHVzaW5nIHRyZWUtc2l0dGVyIGdyYW1tYXIuCitO
T1RFOiBTZWUgYG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lJy4iCisgIChpZiAoYW5kICh0cmVl
c2l0LWVuc3VyZS1pbnN0YWxsZWQgJ21hcmtkb3duKQorICAgICAgICAgICAodHJlZXNpdC1lbnN1
cmUtaW5zdGFsbGVkICdtYXJrZG93bi1pbmxpbmUpKQorICAgICAgKG1hcmtkb3duLXRzLS1zZXQt
dXApCisgICAgKHdhcm4gIm1hcmtkb3duLXRzLW1vZGUgY2Fubm90IGJlIHNldCB1cDsgdXNpbmcg
ZnVuZGFtZW50YWwtbW9kZS4KK1RoZSB0cmVlLXNpdHRlciBwYXJzZXJzIGBtYXJrZG93bicgYW5k
IGBtYXJrZG93bi1pbmxpbmUnIHdlcmUgbm90IGZvdW5kLgorVXNlIHRoZSBjb21tYW5kIGBtYXJr
ZG93bi10cy1tb2RlLWluc3RhbGwtcGFyc2VycycgdG8gaW5zdGFsbCB0aGVtLgorV2l0aCBhIHBy
ZWZpeCBhcmd1bWVudCwgaXQgY2FuIGFsc28gaW5zdGFsbCBvcHRpb25hbCBwYXJzZXJzLiIpCisg
ICAgKGZ1bmRhbWVudGFsLW1vZGUpKSkKIAogKGRlcml2ZWQtbW9kZS1hZGQtcGFyZW50cyAnbWFy
a2Rvd24tdHMtbW9kZSAnKG1hcmtkb3duLW1vZGUpKQogCi07OzsjIyNhdXRvbG9hZAotKGRlZnVu
IG1hcmtkb3duLXRzLW1vZGUtbWF5YmUgKCkKLSAgIkVuYWJsZSBgbWFya2Rvd24tdHMtbW9kZScg
d2hlbiBpdHMgZ3JhbW1hciBpcyBhdmFpbGFibGUuCi1BbHNvIHByb3Bvc2UgdG8gaW5zdGFsbCB0
aGUgZ3JhbW1hciB3aGVuIGB0cmVlc2l0LWVuYWJsZWQtbW9kZXMnCi1pcyB0IG9yIGNvbnRhaW5z
IHRoZSBtb2RlIG5hbWUuIgotICAoZGVjbGFyZS1mdW5jdGlvbiB0cmVlc2l0LWxhbmd1YWdlLWF2
YWlsYWJsZS1wICJ0cmVlc2l0LmMiKQotICAoaWYgKG9yICh0cmVlc2l0LWxhbmd1YWdlLWF2YWls
YWJsZS1wICdtYXJrZG93bikKLSAgICAgICAgICAoZXEgdHJlZXNpdC1lbmFibGVkLW1vZGVzIHQp
Ci0gICAgICAgICAgKG1lbXEgJ21hcmtkb3duLXRzLW1vZGUgdHJlZXNpdC1lbmFibGVkLW1vZGVz
KSkKLSAgICAgIChtYXJrZG93bi10cy1tb2RlKQotICAgIChmdW5kYW1lbnRhbC1tb2RlKSkpCiso
ZGVmaW5lLW1pbm9yLW1vZGUgbWFya2Rvd24tdHMtY29kZS1ibG9jay1jb250ZXh0LW1vZGUKKyAg
Ik1vZGUgZW5hYmxlZCBpZiBwb2ludCBpcyB3aXRoaW4gYSBmZW5jZWQgY29kZSBibG9jay4iCisg
IDppbnRlcmFjdGl2ZSBuaWwpCiAKIDs7OyMjI2F1dG9sb2FkCiAod2hlbiAoYm91bmRwICd0cmVl
c2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QpCi0gIChhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFs
aXN0ICcoIlxcLm1kXFwnIiAuIG1hcmtkb3duLXRzLW1vZGUtbWF5YmUpKQotICA7OyBUbyBiZSBh
YmxlIHRvIHRvZ2dsZSBiZXR3ZWVuIGFuIGV4dGVybmFsIHBhY2thZ2UgYW5kIGNvcmUgdHMtbW9k
ZToKKyAgKGFkZC10by1saXN0ICdhdXRvLW1vZGUtYWxpc3QgJygiXFwubWRcXCciIC4gbWFya2Rv
d24tdHMtbW9kZSkpCisgIChhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFsaXN0ICcoIlxcLm1hcmtk
b3duXFwnIiAuIG1hcmtkb3duLXRzLW1vZGUpKQorICAoYWRkLXRvLWxpc3QgJ2F1dG8tbW9kZS1h
bGlzdCAnKCJcXC5tZHhcXCciIC4gbWFya2Rvd24tdHMtbW9kZSkpCiAgIChhZGQtdG8tbGlzdCAn
dHJlZXNpdC1tYWpvci1tb2RlLXJlbWFwLWFsaXN0CiAgICAgICAgICAgICAgICAnKG1hcmtkb3du
LW1vZGUgLiBtYXJrZG93bi10cy1tb2RlKSkpCiAKLS0gCjIuNTMuMAoK
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.
Received: (at 80740) by debbugs.gnu.org; 14 Apr 2026 16:44:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 14 12:44:18 2026
Received: from localhost ([127.0.0.1]:50189 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wCgs5-0003is-49
for submit <at> debbugs.gnu.org; Tue, 14 Apr 2026 12:44:18 -0400
Received: from mail-vs1-xe33.google.com ([2607:f8b0:4864:20::e33]:51302)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1wCgs2-0003ik-M9
for 80740 <at> debbugs.gnu.org; Tue, 14 Apr 2026 12:44:16 -0400
Received: by mail-vs1-xe33.google.com with SMTP id
ada2fe7eead31-6057723d553so3369890137.2
for <80740 <at> debbugs.gnu.org>; Tue, 14 Apr 2026 09:44:14 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1776185054; cv=none;
d=google.com; s=arc-20240605;
b=gFn1c27ybErREzzO2nNm0P4mHg81PGANpTO8bh+XpFO+S4Wql9V7esPcJaFkHddzpt
zYx6jSkbLz0xyxYoR23qgbIM0X21MTD/MDPr1UkOn0GOP0kE7WVr2onTTL/Q5yyBMXrr
GLbUV8pPVCTHy7XxTpxCOQQ/STONxC/PxdzdH3pC0bZhD4IauKA+AVoM2KcakAVp4rr2
1O2//q/kfAYuQbdJZTlLokHKjIg8XtufR6dV5rNr2wCxliHMZS0RbDyuC+az12v3m0E5
LWvQ/g0qfZODp5eO8wuFLj4YbSH4b7V+t0k/uIRIrowWCF1EeF0NzUReOntrwhFKxjrR
CFfw==
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=FMkITiLGn9ayfS1y5IwvjQDSiMmIBjArBxknqjAwuP4=;
fh=z9ldecnLQJ03zaKK3UNdDJLvsxzArdtTZvWLVHDa2Cs=;
b=Rjsw/RWB5bqQHUyUyqkuRhDC4D7drB215G68/kYUy6RwuI3qV4r7LAQYQym7wqmm+W
c/lsb1cuioYU3LZnwe1mRfspPtWAfNru3oApLkkih+HniEQ+GvDb+gBVdXmZHklhztw7
lwh9rJK2e3s242VvizRHN/IRxY2yBqo88l4B8HxVFDiPU+E1EYM2vesGqfp82nSa/F5J
ei0jJ7Db+xqgcSu0w8zWYfUSLx/WKoVgIPAA74RgkbLsJ8RP9lqgaNis/Ti2zR3tBPgS
8Wi9Ec8yXbeUPjazrM+w6lXTXy/jsXh+2MLnJ2vUGfOozkNZrP4dADIKKPLuyr1O33F4
pfew==; 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=1776185054; x=1776789854; 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=FMkITiLGn9ayfS1y5IwvjQDSiMmIBjArBxknqjAwuP4=;
b=N46ujkrASCHtUKmQ8L0nQeMCJTPwLGbrmd0y0uq5kK+d+ilP91EOWh97QgDfUjLizZ
be+zYbpesdzLlGWorTyRa7yltEMMMmnb5oZUG0PPwe+37dEKqGe4S5jjilQJibob088d
6Pzl2WwExRZo8yqe+K5I9Ubq076GFGhNZOgdvrUb/ToVS6P+p260quZ8gkXJeJjYug7n
FaHGe2AqiHl3IJYHYoPuezjyq1zgABe7Xx9bPMM7hWSs/pmqaUowNiPl+WanfzfbS/IE
IJKOpx3GGmSxiTaLYJSTP1kICOJbD/o0BDyO0u1zXeWE/iN7uVuBDoAQJr1H/G3iJ8NB
mCAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1776185054; x=1776789854;
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=FMkITiLGn9ayfS1y5IwvjQDSiMmIBjArBxknqjAwuP4=;
b=V2xY1k83JQbsIFZ88JTgqidx/m/DLHz3e88Ehspj2IPz9hTSzUJTwllKlRe80WRnce
1K5f5Z2CEarhw31xf9VcK25r5m28V6csFoc6JazUmEx2GG9UpXfrgTfW9R8OCnz4aikX
/WA9EpvF0xmndA65uql6xrpu9vbnicGNQunz4IITFmlDKtyJhMvc3o+AFgIOONO3j2yh
ekwqhJFSDnLUbVPTciRO/X1I5DYxU0Iyba95EXpWq1BQLi3phXu2wkeK9EJl5zfQCIDg
otfD8OI3OXWxe8N+W/TNVcvMe4zyU/slyBAAx0JtVzXV1iB66IW0INQAVdMZlmF5791v
7nFw==
X-Forwarded-Encrypted: i=1;
AFNElJ+qKN1Tq2DyH5TzOPW81ASPe5mh6wDG0OSnrWmc3ipWsmAzbHODqgQ+NhWwIgmyuxVaP3sf3Q==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwXJ2WjmgZyCFpLsQua56MBQsXP8qxGZvcTp5oAXecJF7Edqk6Q
SfvxyadW8FmkAMVowwkHI4O8owpyudiVT98gkFk8vNS16jWb/aHqo5oWR2A3EatnpX25crmuKvC
2hOpAbSoIainY2RpLdXd8rn0n7ce/wlE=
X-Gm-Gg: AeBDietOABeMXs7xrzHvHiCFbXQ27gepDIr8oob+XIMuOPIYpiF6CYYQ/1tZj25iUoY
URsKzuXnQ7SHLc4LZoyKXxnTGN8bbqwJdHpflkgIjVMGivVWGmOdTMj1NyNLlYBXCJQHkV0IfUb
NfzzsGHzLm4Q/TSvmEZsBbI+m8DYRF/BbUhHukxNyZ8uHZkzXrtlUSb1CPix6USUYS9z54g9vTB
3zfGuzISHW+SzQ8b/Dt19FKqtip/oCyE9Svd81gCEpdFnNIIncpsyJTtjD2Cs77b8nn9JTewd0O
re8OA6XF6BSV0CZ/akZTtJUWiSTrORMLsU5weGJnmbsFYuJ1OOfbDGtcEod0hPK92/T/9UyP1Gh
5svVbZCptv3OPgvU4q97aAzZvDtOCciVTpaa4fbWKXQ5aRnxn
X-Received: by 2002:a05:6102:26cc:b0:605:17b8:16dc with SMTP id
ada2fe7eead31-60a00841e13mr8220671137.20.1776185053636; Tue, 14 Apr 2026
09:44:13 -0700 (PDT)
MIME-Version: 1.0
References: <m2zf3jzamy.fsf@HIDDEN>
<CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN>
<m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN> <m2ldevgapc.fsf@HIDDEN>
<E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN>
In-Reply-To: <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Tue, 14 Apr 2026 12:44:01 -0400
X-Gm-Features: AQROBzDPm_1MGPE1hU08Ky-7FL5WYT7lQ0IN5ZUx9GAzwc2kDTmubVpEVFzbAgI
Message-ID: <CAN+1HbpkcO_yEzrL8WrLbH4ofQ+YjiOSqcyraXJtVu4Siect2w@HIDDEN>
Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode'
To: Yuan Fu <casouri@HIDDEN>
Content-Type: multipart/alternative; boundary="0000000000002d6cb6064f6e4f42"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80740
Cc: Eli Zaretskii <eliz@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 (/)
--0000000000002d6cb6064f6e4f42
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Tue, Apr 14, 2026 at 2:35=E2=80=AFAM Yuan Fu <casouri@HIDDEN> wrote:
>
>
> > On Apr 9, 2026, at 1:06=E2=80=AFPM, Rahul Martim Juliato <rahuljuliato@=
gmail.com>
> wrote:
> >
> > Eli Zaretskii <eliz@HIDDEN> writes:
> >
> >>> 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
> >>
> >> 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.")
> >>>
> >>> (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.
> >>
> >
> > 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 bas=
e
> > 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 want=
s
> > 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 poin=
t
> > 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
> >
> > --
> > Rahul Martim Juliato
>
> First of all, thanks for all the hard work! This is awesome, very
> through and clean and well-documented code!
>
> The patch LGTM, and I think it can be merged as-is. Treat the comments
> below more as discussion. And in any case, we should merge the patch
> as-is and follow up with the points below. I didn=E2=80=99t read the code
> line-by-line, I=E2=80=99m sure you=E2=80=99ve tested the functionality, I=
=E2=80=99m more
> looking at general patterns and design, and the user interface.
>
> Maybe variables like markdown-ts-checked-checkbox can make use of
> icons.el? Just define the symbol and text variant, and there=E2=80=99s al=
so a
> builtin image variant you can use for checkboxes (the one that custom
> uses).
>
> Cons are fine too, but maybe a list for better future extensibility
> instead of strictly car and cdr.
>
> > + (,(intern "c#") . c-sharp)
>
> Usually people use cs or csharp, I believe. And py, rb, rs, are
> strange choices. Is markdown-ts-code-block-modes meant for
> non-conventional names?
>
> markdown-ts-code-block-at-p: markdown-ts-at-code-block-p or
> markdown-ts-code-block-p sounds more idiomatic to me.
>
> > Tree-sitter parsers ignore indirect-buffer narrowing and parse the
> full base-buffer text;
>
> If you add a parser in the indirect buffer, that parser will honor the
> narowing in the indirect buffer. It=E2=80=99s just that the parser create=
in
> the source buffer will not react to indirect buffer=E2=80=99s narrowing.
>
> > + (add-hook 'post-command-hook
> > + #'markdown-ts--enable-code-block-mode nil 'local)
>
> I feel that we should have a user option to disable the code block
> context mode. And maybe it can be named code-block-contex-mode, since
> code-block-mode has another meaning in this file?
>
> We can also add a command (and binding) for inserting inline `code`.
> I=E2=80=99m sure I=E2=80=99m not the only person that enables electric-qu=
ote-mode so
> pressing backtick inserts single quotes instead, in which case another
> way to insert backtick is needed.
I think your comments are worth taking care of first before we cement
symbol names. Let's see if we can quickly address the above and then merge
that.
On the "user option to disable the code block context mode" do you think we
should also inhibit code block font lock? Org has org-src-fontify-natively
and markdown-mode has markdown-fontify-code-blocks-natively which they
copied from org.
--0000000000002d6cb6064f6e4f42
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 Tue, Apr 14, 2026 at 2:35=E2=80=AFAM Yuan Fu <<a href=3D"mailto:casou=
ri@HIDDEN">casouri@HIDDEN</a>> wrote:</span></div></div><div class=
=3D"gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd=
ing-left:1ex"><br>
<br>
> On Apr 9, 2026, at 1:06=E2=80=AFPM, Rahul Martim Juliato <<a href=
=3D"mailto:rahuljuliato@HIDDEN" target=3D"_blank">rahuljuliato@HIDDEN=
</a>> wrote:<br>
> <br>
> Eli Zaretskii <<a href=3D"mailto:eliz@HIDDEN" target=3D"_blank">el=
iz@HIDDEN</a>> writes:<br>
> <br>
>>> Cc: Yuan Fu <<a href=3D"mailto:casouri@HIDDEN" target=3D=
"_blank">casouri@HIDDEN</a>>, Rahul Martim Juliato <<a href=3D"mai=
lto:rahuljuliato@HIDDEN" target=3D"_blank">rahuljuliato@HIDDEN</a>>=
;,<br>
>>> <a href=3D"mailto:80740 <at> debbugs.gnu.org" target=3D"_blank">807=
40 <at> debbugs.gnu.org</a><br>
>>> From: Rahul Martim Juliato <<a href=3D"mailto:rahuljuliato@=
gmail.com" target=3D"_blank">rahuljuliato@HIDDEN</a>><br>
>>> Date: Wed, 08 Apr 2026 21:01:50 -0300<br>
>> <br>
>> These non-ASCII characters should not be used without checking if =
they<br>
>> can be displayed (see char-displayable-p).=C2=A0 This is especiall=
y<br>
>> important on TTY frames.=C2=A0 Bonus points for designing ASCII<br=
>
>> replacements for when these non-ASCII symbols cannot be displayed.=
<br>
>> <br>
> <br>
> Agreed.<br>
> <br>
> I changed those to be cons cells in the form of (rich-form . ansi-form=
)<br>
> or nil. :safe is used to ensure both elements have the same type. If<b=
r>
> nil, it means nothing will be rendered when markup is hidden.<br>
> <br>
> I also added a resolver 'markdown-ts--resolve-display-value', =
to select<br>
> and check the symbols.<br>
> <br>
>>> +(defcustom markdown-ts-hard-line-break-space<br>
>>> +=C2=A0 (lambda (n) (make-string n ?=C2=B6))<br>
>> <br>
>> Why is ?=C2=B6 hard-coded, instead of using<br>
>> markdown-ts-hard-line-break-backslash?<br>
>> <br>
> <br>
> <br>
> It shouldn't be this way, you're right.<br>
> <br>
> 'markdown-ts-hard-line-break-space' now uses<br>
> 'markdown-ts-hard-line-break-backslash' as the default charact=
er.<br>
> <br>
> <br>
>>> +(defface markdown-ts-emphasis '((t (:inherit italic)))<br=
>
>>> +=C2=A0 "Face for Markdown emphasis (italic) text.")=
<br>
>>> +<br>
>>> +(defface markdown-ts-bold '((t (:inherit bold)))<br>
>>> +=C2=A0 "Face for Markdown strong emphasis (bold) text.&q=
uot;)<br>
>>> +<br>
>>> +(defface markdown-ts-strikethrough '((t (:strike-through =
t)))<br>
>>> +=C2=A0 "Face for Markdown strikethrough text.")<br>
>>> <br>
>>> (defface markdown-ts-block-quote '((t (:inherit italic)))<=
br>
>>>=C2=A0 =C2=A0"Face for Markdown block quotes.")<br>
>>> <br>
>>> +(defface markdown-ts-link '((t (:inherit link)))<br>
>>> +=C2=A0 "Face for Markdown link text and image descriptio=
ns.")<br>
>> <br>
>> Is it justified to have separate faces here?=C2=A0 Why would users=
want to<br>
>> have something other than 'bold' for showing the bold face=
in MD<br>
>> buffers?<br>
>> <br>
>> Also, faces can (and I think should in this case) have the :versio=
n<br>
>> tag.<br>
>> <br>
> <br>
> Good question. About 'markdown-ts-strikethrough', there is no =
generic<br>
> strikethrough face (that I could find) in Emacs to inherit from, so it=
<br>
> has to exist.<br>
> <br>
> For the others, the motivation is the same as in org-mode ('org-it=
alic',<br>
> 'org-bold', 'org-link') and rst-mode. The default inhe=
rits from the base<br>
> face so things look right out of the box, but users get a mode-specifi=
c<br>
> handle to customize without touching global faces. That alone is worth=
<br>
> it, but there is a second angle: it makes theming more controlled.<br>
> <br>
> When 'markdown-ts-hide-markup' is enabled, all markup characte=
rs<br>
> disappear and what remains is just the rendered text. A theme that wan=
ts<br>
> to give a subtle visual hint about the underlying markup, such as a<br=
>
> faint background on emphasis or a different tint on links, can do so b=
y<br>
> targeting 'markdown-ts-emphasis' or 'markdown-ts-link'=
specifically,<br>
> without affecting every italic or linked piece of text in every other<=
br>
> buffer.<br>
> <br>
> Added :version tag to all faces.<br>
> <br>
>>> +(defun markdown-ts--code-block-language-mode (lang)<br>
>>> +=C2=A0 "Compute and cache a mode symbol from LANG, a sym=
bol.<br>
>>> +Consult the `markdown-ts-code-block-map' cache, or probe =
mode names.<br>
>>> +Return a valid mode symbol or nil."<br>
>>> +=C2=A0 (if-let* ((mapped-mode (alist-get lang markdown-ts-cod=
e-block-modes)))<br>
>>> +=C2=A0 =C2=A0 =C2=A0 mapped-mode<br>
>>> +=C2=A0 =C2=A0 (let ((lang-string (symbol-name lang)))<br>
>>> +=C2=A0 =C2=A0 =C2=A0 (catch :mode<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (dolist (mode<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0(list<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 ;; Try a treesit mode using the raw string.<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 (concat lang-string "-ts-mode")<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 ;; Try a conventional mode using the raw string.<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 (concat lang-string "-mode")<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 ;; Try a treesit mode using the downcased string.<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 (concat (downcase lang-string) "-ts-mode")<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 ;; Try a conventional mode using the downcased string.<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 (concat (downcase lang-string) "-mode")))<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq mode (intern mode))<=
br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (when (fboundp mode)<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (push (cons lang mo=
de) markdown-ts-code-block-modes)<br>
>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (throw :mode mode))=
)))))<br>
>> <br>
>> I think this should use treesit-major-mode-remap-alist and<br>
>> major-mode-remap-alist, at least before falling back on the above<=
br>
>> hard-coded conventional modes, if not instead that.=C2=A0 This wil=
l allow<br>
>> users to customize these remappings only once.<br>
>> <br>
> <br>
> Done. It now also checks both 'treesit-major-mode-remap-alist'=
and<br>
> 'major-mode-remap-alist'.<br>
> <br>
>>> +(define-minor-mode markdown-ts-code-block-mode<br>
>>> +=C2=A0 "Mode enabled if point is within a fenced code bl=
ock."<br>
>>> +=C2=A0 :interactive nil)<br>
>> <br>
>> Does this mean this mode is enabled automatically?<br>
>> <br>
>> Thanks.<br>
> <br>
> <br>
> Yes, it is enabled automatically. 'markdown-ts-mode' adds<br>
> 'markdown-ts--enable-code-block-mode' to 'post-command-hoo=
k'<br>
> (buffer-local), which calls '(markdown-ts-code-block-mode 1)' =
when point<br>
> enters a fenced code block and '(markdown-ts-code-block-mode -1)&#=
39; when<br>
> it leaves. The ':interactive nil' just keeps it out of 'M-=
x' completion,<br>
> it is not meant to be toggled by hand.<br>
> <br>
> Its main purpose is to activate 'markdown-ts-code-block-mode-map&#=
39;, a<br>
> keymap that routes common editing commands (indentation, comment, etc.=
)<br>
> through the language mode of whichever code block point is currently i=
n.<br>
> <br>
> <br>
> <br>
> Please find attached an updated patch.<br>
> <br>
> Thanks<br>
> <br>
> -- <br>
> Rahul Martim Juliato<br>
<br>
First of all, thanks for all the hard work! This is awesome, very<br>
through and clean and well-documented code!<br>
<br>
The patch LGTM, and I think it can be merged as-is. Treat the comments<br>
below more as discussion. And in any case, we should merge the patch<br>
as-is and follow up with the points below. I didn=E2=80=99t read the code<b=
r>
line-by-line, I=E2=80=99m sure you=E2=80=99ve tested the functionality, I=
=E2=80=99m more<br>
looking at general patterns and design, and the user interface.<br>
<br>
Maybe variables like markdown-ts-checked-checkbox can make use of<br>
icons.el? Just define the symbol and text variant, and there=E2=80=99s also=
a<br>
builtin image variant you can use for checkboxes (the one that custom<br>
uses).<br>
<br>
Cons are fine too, but maybe a list for better future extensibility<br>
instead of strictly car and cdr.<br>
<br>
> +=C2=A0 =C2=A0 (,(intern "c#") . c-sharp)<br>
<br>
Usually people use cs or csharp, I believe. And py, rb, rs, are<br>
strange choices. Is markdown-ts-code-block-modes meant for non-conventional=
names?<br>
<br>
markdown-ts-code-block-at-p: markdown-ts-at-code-block-p or<br>
markdown-ts-code-block-p sounds more idiomatic to me.<br>
<br>
> Tree-sitter parsers ignore indirect-buffer narrowing and parse the<br>
=C2=A0 full base-buffer text;<br>
<br>
If you add a parser in the indirect buffer, that parser will honor the<br>
narowing in the indirect buffer. It=E2=80=99s just that the parser create i=
n<br>
the source buffer will not react to indirect buffer=E2=80=99s narrowing.<br=
>
<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(add-hook 'post-command-hook<br=
>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
#'markdown-ts--enable-code-block-mode nil 'local)<br>
<br>
I feel that we should have a user option to disable the code block<br>
context mode. And maybe it can be named code-block-contex-mode, since<br>
code-block-mode has another meaning in this file?<br>
<br>
We can also add a command (and binding) for inserting inline `code`.<br>
I=E2=80=99m sure I=E2=80=99m not the only person that enables electric-quot=
e-mode so<br>
pressing backtick inserts single quotes instead, in which case another<br>
way to insert backtick is needed.</blockquote><div><br></div><div class=3D"=
gmail_default" style=3D"font-family:monospace">I think your comments are wo=
rth taking care of first before we cement symbol names.=C2=A0 Let's see=
if we can quickly address the above and then merge that.</div><div class=
=3D"gmail_default" style=3D"font-family:monospace"><br></div><div class=3D"=
gmail_default" style=3D""><font face=3D"monospace">On the "user option=
to disable the code block=C2=A0context mode" do you think we should a=
lso inhibit code block font lock?=C2=A0 Org has=C2=A0org-src-fontify-native=
ly and markdown-mode has=C2=A0markdown-fontify-code-blocks-natively which t=
hey copied from org.</font></div></div></div>
--0000000000002d6cb6064f6e4f42--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.
Received: (at 80740) by debbugs.gnu.org; 14 Apr 2026 06:35:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 14 02:35:12 2026
Received: from localhost ([127.0.0.1]:40471 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wCXMa-0004lj-DL
for submit <at> debbugs.gnu.org; Tue, 14 Apr 2026 02:35:12 -0400
Received: from mail-dl1-x122c.google.com ([2607:f8b0:4864:20::122c]:46394)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <casouri@HIDDEN>) id 1wCXMX-0004l5-2T
for 80740 <at> debbugs.gnu.org; Tue, 14 Apr 2026 02:35:06 -0400
Received: by mail-dl1-x122c.google.com with SMTP id
a92af1059eb24-12c1fcce8f8so9770983c88.1
for <80740 <at> debbugs.gnu.org>; Mon, 13 Apr 2026 23:35:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1776148504; x=1776753304; 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=gvDbZmWIydEzKbCeRIReVQarBf0Ks5fKU0UKhIRPFmw=;
b=ru6mAbBOSwaxm2ofhgAf2yA4Pzk88qOKhUupf2Sb2vT1TSh041MnHdXNg2ygZW6CiH
fo5fPXBmv5+tNfIa3FKk6shN69fgKpqUUDXvtjEsff9PI0lom1HkbXpDyOTHhhU4xObn
kpMtnxwXD8nrFYKiOGyjylSMiZ3cAQUlZx5g+fECoX2iU4cjWQ7xNKWVQkgc+zYnTvci
FHXhBqByoIZ+QJnclcwk9ng1lxerXftTqQzL8psqG7bB5spoPyrlBO3ckyQEQXm69YSx
WgG8CWNa/dJZgfYaHhPQ/RSySLFfPTe2U9CUTptppXGFr9Q/mlZE5CyErTbS+NIjNEGW
lJRg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1776148504; x=1776753304;
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=gvDbZmWIydEzKbCeRIReVQarBf0Ks5fKU0UKhIRPFmw=;
b=Qvo6BXAPE9Qa+TGIS3PxPAo/NTJCgI2pSRAjIayV2tFa38IltSGIkRiBFgm9HA2UC1
DbXPsdvx2NFjcMHnbo7XXFwXVYn//4Q6NzL9zigsp6ltNdsFJhaS4Lc8Geoe4fSp5dgs
Z3EVdoO3isyRCUdDDQuY0XD/jPj/sR4Zzc51/iZE1uJrs5pREfEOW0M6HXYSI/nKAwA5
Zqe6rb+8g/qUq1ORvfA815ms4VTvuWTZUprUg846idvKMBMHpHfaBMQm3Yk/5I95UqWt
VijkFu5eQCc4WH9zMzVS4WQlDRcRVArWyD7Zm+fhtiUkyByJFUUtgAIZUUiuw9dA5xKp
Z1Uw==
X-Forwarded-Encrypted: i=1;
AFNElJ+VBcZQS4GU6HYmxsZ2Hbu/PDrCspUrEBa/QEOQColfr6xd3SmEz3S4tp6cnTHI3gPKC9pPcw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw74kQ+ffnZbSRTYDquL/yYzQ39OjoPzAsgZux4EnZ2d2e0Q/iF
5EOH3fonFkxucTv6soSjeMp75rw3zd/czh21kUEgeLxXQJnEGHCmv6E7
X-Gm-Gg: AeBDiet86Gw+2+q+sjxZNvJT4bi6K+8+3j6MrGMt13AxR0HrfVzZ3zStOBM4CgHzkRo
7Pex8H4w7Fu02QFo6SVEykXNQPwwie0nn/IXoR1dW7pIKNcLTzy786xesLdBvQdHBFO9N+BfzMf
igEnyN66iFlVoOWQeUsL5dD+9yFLm+9GzooWN10DtjnLRdz5Q45taDfbLyfcqEpR3IEol9tAZNK
fnO+WDQPA/SZVHtxnbrkMfb9JPbNbkCTAo6KdT7v15eCQbdFG6Sh0o6ZyS440/WRVcHBVUU0M7i
FFxeNCgLUeREGNkTy5ThoXd3wXx6/FXgStI79M7Ur+uVxBpos/qA5t2+9Pd2Feul4fTOMpAJl+I
/MUHPRNYZsxh+L9XhRJQg8NmR67MPaFYAntMDRoZi64/54Gn3iMPGmqJDz9CzrfEuTaHnlUtyUx
YYNS9Rg8Cu8d9I1cJDdnP47n43nw40ylwCBbq5bXgUBoiprg==
X-Received: by 2002:a05:7022:3d12:b0:127:867f:2448 with SMTP id
a92af1059eb24-12c34eeb81fmr9977175c88.26.1776148503376;
Mon, 13 Apr 2026 23:35:03 -0700 (PDT)
Received: from smtpclient.apple ([2601:645:c686:b320:31a6:bea1:aca0:e369])
by smtp.gmail.com with ESMTPSA id
a92af1059eb24-12c347fa2c9sm16926710c88.15.2026.04.13.23.35.02
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Mon, 13 Apr 2026 23:35:02 -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: <m2ldevgapc.fsf@HIDDEN>
Date: Mon, 13 Apr 2026 23:34:51 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <E23DE437-F9DC-4EBD-8694-AD5293E4C088@HIDDEN>
References: <m2zf3jzamy.fsf@HIDDEN>
<CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN>
<m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN>
<m2ldevgapc.fsf@HIDDEN>
To: Rahul Martim Juliato <rahuljuliato@HIDDEN>
X-Mailer: Apple Mail (2.3826.700.81)
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80740
Cc: Eli Zaretskii <eliz@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: 0.0 (/)
> On Apr 9, 2026, at 1:06=E2=80=AFPM, Rahul Martim Juliato =
<rahuljuliato@HIDDEN> wrote:
>=20
> Eli Zaretskii <eliz@HIDDEN> writes:
>=20
>>> 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
>>=20
>> 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.
>>=20
>=20
> Agreed.
>=20
> 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.
>=20
> I also added a resolver 'markdown-ts--resolve-display-value', to =
select
> and check the symbols.
>=20
>>> +(defcustom markdown-ts-hard-line-break-space
>>> + (lambda (n) (make-string n ?=C2=B6))
>>=20
>> Why is ?=C2=B6 hard-coded, instead of using
>> markdown-ts-hard-line-break-backslash?
>>=20
>=20
>=20
> It shouldn't be this way, you're right.
>=20
> 'markdown-ts-hard-line-break-space' now uses
> 'markdown-ts-hard-line-break-backslash' as the default character.
>=20
>=20
>>> +(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
>>> (defface markdown-ts-block-quote '((t (:inherit italic)))
>>> "Face for Markdown block quotes.")
>>>=20
>>> +(defface markdown-ts-link '((t (:inherit link)))
>>> + "Face for Markdown link text and image descriptions.")
>>=20
>> 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?
>>=20
>> Also, faces can (and I think should in this case) have the :version
>> tag.
>>=20
>=20
> 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.
>=20
> 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.
>=20
> 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.
>=20
> Added :version tag to all faces.
>=20
>>> +(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)))))))
>>=20
>> 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.
>>=20
>=20
> Done. It now also checks both 'treesit-major-mode-remap-alist' and
> 'major-mode-remap-alist'.
>=20
>>> +(define-minor-mode markdown-ts-code-block-mode
>>> + "Mode enabled if point is within a fenced code block."
>>> + :interactive nil)
>>=20
>> Does this mean this mode is enabled automatically?
>>=20
>> Thanks.
>=20
>=20
> 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.
>=20
> 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.
>=20
>=20
>=20
> Please find attached an updated patch.
>=20
> Thanks
>=20
> --=20
> Rahul Martim Juliato
First of all, thanks for all the hard work! This is awesome, very
through and clean and well-documented code!
The patch LGTM, and I think it can be merged as-is. Treat the comments
below more as discussion. And in any case, we should merge the patch
as-is and follow up with the points below. I didn=E2=80=99t read the =
code
line-by-line, I=E2=80=99m sure you=E2=80=99ve tested the functionality, =
I=E2=80=99m more
looking at general patterns and design, and the user interface.
Maybe variables like markdown-ts-checked-checkbox can make use of
icons.el? Just define the symbol and text variant, and there=E2=80=99s =
also a
builtin image variant you can use for checkboxes (the one that custom
uses).
Cons are fine too, but maybe a list for better future extensibility
instead of strictly car and cdr.
> + (,(intern "c#") . c-sharp)
Usually people use cs or csharp, I believe. And py, rb, rs, are
strange choices. Is markdown-ts-code-block-modes meant for =
non-conventional names?
markdown-ts-code-block-at-p: markdown-ts-at-code-block-p or
markdown-ts-code-block-p sounds more idiomatic to me.
> Tree-sitter parsers ignore indirect-buffer narrowing and parse the
full base-buffer text;
If you add a parser in the indirect buffer, that parser will honor the
narowing in the indirect buffer. It=E2=80=99s just that the parser =
create in
the source buffer will not react to indirect buffer=E2=80=99s narrowing.
> + (add-hook 'post-command-hook
> + #'markdown-ts--enable-code-block-mode nil 'local)
I feel that we should have a user option to disable the code block
context mode. And maybe it can be named code-block-contex-mode, since
code-block-mode has another meaning in this file?
We can also add a command (and binding) for inserting inline `code`.
I=E2=80=99m sure I=E2=80=99m not the only person that enables =
electric-quote-mode so
pressing backtick inserts single quotes instead, in which case another
way to insert backtick is needed.
Yuan=
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.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.