From unknown Sun Jun 22 04:02:51 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55194: 29.0.50; Current master fails to bootstrap in the native-compilation configuration Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Apr 2022 13:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 55194 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 55194@debbugs.gnu.org Cc: Stefan Monnier X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.165132524021456 (code B ref -1); Sat, 30 Apr 2022 13:28:02 +0000 Received: (at submit) by debbugs.gnu.org; 30 Apr 2022 13:27:20 +0000 Received: from localhost ([127.0.0.1]:56121 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nkn83-0005a0-IJ for submit@debbugs.gnu.org; Sat, 30 Apr 2022 09:27:20 -0400 Received: from lists.gnu.org ([209.51.188.17]:47832) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nkn82-0005Zr-5P for submit@debbugs.gnu.org; Sat, 30 Apr 2022 09:27:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55330) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nkn81-0003vu-W5 for bug-gnu-emacs@gnu.org; Sat, 30 Apr 2022 09:27:18 -0400 Received: from maintain0p.gnu.org ([2001:470:142:5::56]:34586) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nkn81-00061F-2y; Sat, 30 Apr 2022 09:27:17 -0400 Received: from eliz by maintain0p.gnu.org with local (Exim 4.90_1) (envelope-from ) id 1nkn80-0002B3-Qm; Sat, 30 Apr 2022 09:27:16 -0400 From: Eli Zaretskii MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Message-Id: Date: Sat, 30 Apr 2022 09:27:16 -0400 X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain As Subject says: I cannot bootstrap the current master configure with native-compilation on GNU/Linux. The last part of the build before the failure is attached; it seems to have something to do with if-let called in files.el, although that code is very old, and if-let is an autoloaded macro. Could this have something to do with the latest changes regarding oclosure etc.? The system configuration is as shown below, but with native-compilation enabled. P.S. Why do we call macros from subr-x, which is not preloaded, in files.el, which _is_ preloaded? In GNU Emacs 29.0.50 (build 46, x86_64-pc-linux-gnu, GTK+ Version 3.22.30, cairo version 1.15.10) of 2022-04-30 built on maintain0p.gnu.org Repository revision: c1fa5bd8ee3c7f37a9b9304eab6b522cf8718472 Repository branch: master System Description: Trisquel GNU/Linux Etiona (9.0.2) Configured using: 'configure --with-gif=no --with-tiff=no --with-jpeg=no --with-xpm=ifavailable --with-modules --enable-checking=yes,glyphs 'CFLAGS=-O0 -g3'' Configured features: ACL CAIRO DBUS FREETYPE GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XPM GTK3 ZLIB Important settings: value of $LC_ALL: en_US.UTF-8 value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: display-time-mode: t savehist-mode: t save-place-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t line-number-mode: t indent-tabs-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow flyspell ispell emacsbug message mailcap yank-media rmc puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util text-property-search time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils term/xterm xterm seq gv subr-x byte-opt bytecomp byte-compile cconv server time cus-load savehist saveplace iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice simple cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 56423 6197) (symbols 48 6938 1) (strings 32 18595 687) (string-bytes 1 585015) (vectors 16 9448) (vector-slots 8 109991 8462) (floats 8 29 338) (intervals 56 213 0) (buffers 992 8)) --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=build.log Content-Transfer-Encoding: base64 bWFrZSAtQyBsaWIgYWxsCm1ha2UgLUMgZG9jL2xpc3ByZWYgaW5mbwptYWtlIC1DIGRvYy9saXNw aW50cm8gaW5mbwptYWtlIC1DIGRvYy9lbWFjcyBpbmZvCm1ha2VbMV06IEVudGVyaW5nIGRpcmVj dG9yeSAnL2hvbWUvZWxpei9naXQvZW1hY3MvbmF0aXZlLWNvbXAvZG9jL2xpc3ByZWYnCm1ha2Vb MV06IE5vdGhpbmcgdG8gYmUgZG9uZSBmb3IgJ2luZm8nLgptYWtlWzFdOiBFbnRlcmluZyBkaXJl Y3RvcnkgJy9ob21lL2VsaXovZ2l0L2VtYWNzL25hdGl2ZS1jb21wL2RvYy9saXNwaW50cm8nCm1h a2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS9lbGl6L2dpdC9lbWFjcy9uYXRpdmUtY29t cC9kb2MvbGlzcHJlZicKbWFrZVsxXTogTm90aGluZyB0byBiZSBkb25lIGZvciAnaW5mbycuCm1h a2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS9lbGl6L2dpdC9lbWFjcy9uYXRpdmUtY29t cC9kb2MvbGlzcGludHJvJwptYWtlWzFdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy9ob21lL2VsaXov Z2l0L2VtYWNzL25hdGl2ZS1jb21wL2RvYy9lbWFjcycKbWFrZVsxXTogTm90aGluZyB0byBiZSBk b25lIGZvciAnaW5mbycuCm1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS9lbGl6L2dp dC9lbWFjcy9uYXRpdmUtY29tcC9kb2MvZW1hY3MnCm1ha2VbMV06IEVudGVyaW5nIGRpcmVjdG9y eSAnL2hvbWUvZWxpei9naXQvZW1hY3MvbmF0aXZlLWNvbXAvbGliJwptYWtlWzFdOiBOb3RoaW5n IHRvIGJlIGRvbmUgZm9yICdhbGwnLgptYWtlWzFdOiBMZWF2aW5nIGRpcmVjdG9yeSAnL2hvbWUv ZWxpei9naXQvZW1hY3MvbmF0aXZlLWNvbXAvbGliJwptYWtlIC1DIGxpYi1zcmMgYWxsCm1ha2Vb MV06IEVudGVyaW5nIGRpcmVjdG9yeSAnL2hvbWUvZWxpei9naXQvZW1hY3MvbmF0aXZlLWNvbXAv bGliLXNyYycKbWFrZVsxXTogTm90aGluZyB0byBiZSBkb25lIGZvciAnYWxsJy4KbWFrZVsxXTog TGVhdmluZyBkaXJlY3RvcnkgJy9ob21lL2VsaXovZ2l0L2VtYWNzL25hdGl2ZS1jb21wL2xpYi1z cmMnCm1ha2UgLUMgc3JjIFZDU1dJVE5FU1M9JyQoc3JjZGlyKS8uLi8uZ2l0L2xvZ3MvSEVBRCcg QklOX0RFU1RESVI9JycvdXNyL2xvY2FsL2Jpbi8nJyBcCgkgRUxOX0RFU1RESVI9Jy91c3IvbG9j YWwvbGliL2VtYWNzLzI5LjAuNTAvJyBhbGwKbWFrZVsxXTogRW50ZXJpbmcgZGlyZWN0b3J5ICcv aG9tZS9lbGl6L2dpdC9lbWFjcy9uYXRpdmUtY29tcC9zcmMnCm1ha2UgLUMgLi4vYWRtaW4vY2hh cnNldHMgYWxsCm1ha2UgLUMgLi4vYWRtaW4vdW5pZGF0YSBjaGFyc2NyaXB0LmVsCm1ha2UgLUMg Li4vYWRtaW4vdW5pZGF0YSBlbW9qaS16d2ouZWwKbWFrZSAtQyAuLi9hZG1pbi9jaGFyc2V0cyBj cDUxOTMyLmVsCm1ha2VbMl06IEVudGVyaW5nIGRpcmVjdG9yeSAnL2hvbWUvZWxpei9naXQvZW1h Y3MvbmF0aXZlLWNvbXAvYWRtaW4vdW5pZGF0YScKbWFrZVsyXTogRW50ZXJpbmcgZGlyZWN0b3J5 ICcvaG9tZS9lbGl6L2dpdC9lbWFjcy9uYXRpdmUtY29tcC9hZG1pbi91bmlkYXRhJwptYWtlWzJd OiBFbnRlcmluZyBkaXJlY3RvcnkgJy9ob21lL2VsaXovZ2l0L2VtYWNzL25hdGl2ZS1jb21wL2Fk bWluL2NoYXJzZXRzJwptYWtlWzJdOiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yICdjcDUxOTMyLmVs Jy4KbWFrZVsyXTogTGVhdmluZyBkaXJlY3RvcnkgJy9ob21lL2VsaXovZ2l0L2VtYWNzL25hdGl2 ZS1jb21wL2FkbWluL2NoYXJzZXRzJwptYWtlIC1DIC4uL2FkbWluL2NoYXJzZXRzIGV1Y2pwLW1z LmVsCm1ha2VbMl06IE5vdGhpbmcgdG8gYmUgZG9uZSBmb3IgJ2Vtb2ppLXp3ai5lbCcuCm1ha2Vb Ml06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS9lbGl6L2dpdC9lbWFjcy9uYXRpdmUtY29tcC9h ZG1pbi91bmlkYXRhJwptYWtlWzJdOiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yICdjaGFyc2NyaXB0 LmVsJy4KbWFrZVsyXTogTGVhdmluZyBkaXJlY3RvcnkgJy9ob21lL2VsaXovZ2l0L2VtYWNzL25h dGl2ZS1jb21wL2FkbWluL3VuaWRhdGEnCm1ha2VbMl06IEVudGVyaW5nIGRpcmVjdG9yeSAnL2hv bWUvZWxpei9naXQvZW1hY3MvbmF0aXZlLWNvbXAvYWRtaW4vY2hhcnNldHMnCm1ha2VbMl06IE5v dGhpbmcgdG8gYmUgZG9uZSBmb3IgJ2V1Y2pwLW1zLmVsJy4KbWFrZVsyXTogTGVhdmluZyBkaXJl Y3RvcnkgJy9ob21lL2VsaXovZ2l0L2VtYWNzL25hdGl2ZS1jb21wL2FkbWluL2NoYXJzZXRzJwpt YWtlWzJdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy9ob21lL2VsaXovZ2l0L2VtYWNzL25hdGl2ZS1j b21wL2FkbWluL2NoYXJzZXRzJwptYWtlWzJdOiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yICdhbGwn LgptYWtlWzJdOiBMZWF2aW5nIGRpcmVjdG9yeSAnL2hvbWUvZWxpei9naXQvZW1hY3MvbmF0aXZl LWNvbXAvYWRtaW4vY2hhcnNldHMnCnJtIC1mIGJvb3RzdHJhcC1lbWFjcy5wZG1wCi4vdGVtYWNz IC0tYmF0Y2ggIC1sIGxvYWR1cCAtLXRlbWFjcz1wYm9vdHN0cmFwIFwKCS0tYmluLWRlc3QgL3Vz ci9sb2NhbC9iaW4vIC0tZWxuLWRlc3QgL3Vzci9sb2NhbC9saWIvZW1hY3MvMjkuMC41MC8KTG9h ZGluZyBsb2FkdXAuZWwgKHNvdXJjZSkuLi4KRHVtcCBtb2RlOiBwYm9vdHN0cmFwClVzaW5nIGxv YWQtcGF0aCAoL2hvbWUvZWxpei9naXQvZW1hY3MvbmF0aXZlLWNvbXAvbGlzcCAvaG9tZS9lbGl6 L2dpdC9lbWFjcy9uYXRpdmUtY29tcC9saXNwL2VtYWNzLWxpc3AgL2hvbWUvZWxpei9naXQvZW1h Y3MvbmF0aXZlLWNvbXAvbGlzcC9wcm9nbW9kZXMgL2hvbWUvZWxpei9naXQvZW1hY3MvbmF0aXZl LWNvbXAvbGlzcC9sYW5ndWFnZSAvaG9tZS9lbGl6L2dpdC9lbWFjcy9uYXRpdmUtY29tcC9saXNw L2ludGVybmF0aW9uYWwgL2hvbWUvZWxpei9naXQvZW1hY3MvbmF0aXZlLWNvbXAvbGlzcC90ZXh0 bW9kZXMgL2hvbWUvZWxpei9naXQvZW1hY3MvbmF0aXZlLWNvbXAvbGlzcC92YykKTG9hZGluZyBl bWFjcy1saXNwL2RlYnVnLWVhcmx5IChzb3VyY2UpLi4uCkxvYWRpbmcgZW1hY3MtbGlzcC9ieXRl LXJ1biAoc291cmNlKS4uLgpMb2FkaW5nIGVtYWNzLWxpc3AvYmFja3F1b3RlIChzb3VyY2UpLi4u CkxvYWRpbmcgc3ViciAoc291cmNlKS4uLgpMb2FkaW5nIGtleW1hcCAoc291cmNlKS4uLgpMb2Fk aW5nIHZlcnNpb24gKHNvdXJjZSkuLi4KTG9hZGluZyB3aWRnZXQgKHNvdXJjZSkuLi4KTG9hZGlu ZyBjdXN0b20gKHNvdXJjZSkuLi4KTG9hZGluZyBlbWFjcy1saXNwL21hcC15bnAgKHNvdXJjZSku Li4KTG9hZGluZyBpbnRlcm5hdGlvbmFsL211bGUgKHNvdXJjZSkuLi4KTG9hZGluZyBpbnRlcm5h dGlvbmFsL211bGUtY29uZiAoc291cmNlKS4uLgpMb2FkaW5nIGVudiAoc291cmNlKS4uLgpMb2Fk aW5nIGZvcm1hdCAoc291cmNlKS4uLgpMb2FkaW5nIGJpbmRpbmdzIChzb3VyY2UpLi4uCkxvYWRp bmcgd2luZG93IChzb3VyY2UpLi4uCkxvYWRpbmcgL2hvbWUvZWxpei9naXQvZW1hY3MvbmF0aXZl LWNvbXAvbGlzcC9maWxlcy5lbCAoc291cmNlKS4uLgoKRXJyb3I6IHZvaWQtZnVuY3Rpb24gKGlm LWxldCkKICBtYXBiYWNrdHJhY2UoKGNsb3N1cmUgKChwcmluMSAuIHByaW4xKSB0KSAoZXZhbGQg ZnVuYyBhcmdzIF9mbGFncykgKGxldCAoKGFyZ3MgYXJncykpIChpZiBldmFsZCAocHJvZ24gKHBy aW5jICIgICIpIChmdW5jYWxsIHByaW4xIGZ1bmMpIChwcmluYyAiKCIpKSAocHJvZ24gKHByaW5j ICIgICgiKSAoc2V0cSBhcmdzIChjb25zIGZ1bmMgYXJncykpKSkgKGlmIGFyZ3MgKHdoaWxlIChw cm9nbiAoZnVuY2FsbCBwcmluMSAoY2FyIGFyZ3MpKSAoc2V0cSBhcmdzIChjZHIgYXJncykpKSAo cHJpbmMgIiAiKSkpIChwcmluYyAiKVxuIikpKSkKICAobGV0ICgocHJpbnQtZXNjYXBlLW5ld2xp bmVzIHQpIChwcmludC1lc2NhcGUtY29udHJvbC1jaGFyYWN0ZXJzIHQpIChwcmludC1lc2NhcGUt bm9uYXNjaWkgdCkgKHByaW4xIChpZiAoZmJvdW5kcCAnY2wtcHJpbjEpICMnY2wtcHJpbjEgIydw cmluMSkpKSAobWFwYmFja3RyYWNlICMnKGxhbWJkYSAoZXZhbGQgZnVuYyBhcmdzIF9mbGFncykg KGxldCAoKGFyZ3MgYXJncykpIChpZiBldmFsZCAocHJvZ24gKHByaW5jICIgICIpIChmdW5jYWxs IHByaW4xIGZ1bmMpIChwcmluYyAiKCIpKSAocHJvZ24gKHByaW5jICIgICgiKSAoc2V0cSBhcmdz IChjb25zIGZ1bmMgYXJncykpKSkgKGlmIGFyZ3MgKHdoaWxlIChwcm9nbiAoZnVuY2FsbCBwcmlu MSAoY2FyIGFyZ3MpKSAoc2V0cSBhcmdzIChjZHIgYXJncykpKSAocHJpbmMgIiAiKSkpIChwcmlu YyAiKVxuIikpKSkpCiAgZGVidWctZWFybHktYmFja3RyYWNlKCkKICBkZWJ1Zy1lYXJseShlcnJv ciAodm9pZC1mdW5jdGlvbiBpZi1sZXQpKQogIChpZi1sZXQgKChuZXdsaW5lIChzdHJpbmctc2Vh cmNoICJcbiIgc3RyaW5nIHN0YXJ0KSkpIChwcm9nbiAod2hlbiAob3IgKG5vdCBvbWl0LW51bGxz KSAobm90ICg9IHN0YXJ0IG5ld2xpbmUpKSkgKGxldCAoKGxpbmUgKHN1YnN0cmluZyBzdHJpbmcg c3RhcnQgKGlmIGtlZXAtbmV3bGluZXMgKDErIG5ld2xpbmUpIG5ld2xpbmUpKSkpICh3aGVuIChu b3QgKGFuZCBrZWVwLW5ld2xpbmVzIG9taXQtbnVsbHMgKGVxdWFsIGxpbmUgIlxuIikpKSAocHVz aCBsaW5lIGxpbmVzKSkpKSAoc2V0cSBzdGFydCAoMSsgbmV3bGluZSkpICh3aGVuIChhbmQgKD0g c3RhcnQgKGxlbmd0aCBzdHJpbmcpKSAobm90IG9taXQtbnVsbHMpIChub3Qga2VlcC1uZXdsaW5l cykpIChwdXNoICIiIGxpbmVzKSkpIChpZiAoemVyb3Agc3RhcnQpIChwdXNoIHN0cmluZyBsaW5l cykgKHB1c2ggKHN1YnN0cmluZyBzdHJpbmcgc3RhcnQpIGxpbmVzKSkgKHNldHEgc3RhcnQgKGxl bmd0aCBzdHJpbmcpKSkKICAod2hpbGUgKDwgc3RhcnQgKGxlbmd0aCBzdHJpbmcpKSAoaWYtbGV0 ICgobmV3bGluZSAoc3RyaW5nLXNlYXJjaCAiXG4iIHN0cmluZyBzdGFydCkpKSAocHJvZ24gKHdo ZW4gKG9yIChub3Qgb21pdC1udWxscykgKG5vdCAoPSBzdGFydCBuZXdsaW5lKSkpIChsZXQgKChs aW5lIChzdWJzdHJpbmcgc3RyaW5nIHN0YXJ0IChpZiBrZWVwLW5ld2xpbmVzICgxKyBuZXdsaW5l KSBuZXdsaW5lKSkpKSAod2hlbiAobm90IChhbmQga2VlcC1uZXdsaW5lcyBvbWl0LW51bGxzIChl cXVhbCBsaW5lICJcbiIpKSkgKHB1c2ggbGluZSBsaW5lcykpKSkgKHNldHEgc3RhcnQgKDErIG5l d2xpbmUpKSAod2hlbiAoYW5kICg9IHN0YXJ0IChsZW5ndGggc3RyaW5nKSkgKG5vdCBvbWl0LW51 bGxzKSAobm90IGtlZXAtbmV3bGluZXMpKSAocHVzaCAiIiBsaW5lcykpKSAoaWYgKHplcm9wIHN0 YXJ0KSAocHVzaCBzdHJpbmcgbGluZXMpIChwdXNoIChzdWJzdHJpbmcgc3RyaW5nIHN0YXJ0KSBs aW5lcykpIChzZXRxIHN0YXJ0IChsZW5ndGggc3RyaW5nKSkpKQogIChsZXQgKChsaW5lcyBuaWwp IChzdGFydCAwKSkgKHdoaWxlICg8IHN0YXJ0IChsZW5ndGggc3RyaW5nKSkgKGlmLWxldCAoKG5l d2xpbmUgKHN0cmluZy1zZWFyY2ggIlxuIiBzdHJpbmcgc3RhcnQpKSkgKHByb2duICh3aGVuIChv ciAobm90IG9taXQtbnVsbHMpIChub3QgKD0gc3RhcnQgbmV3bGluZSkpKSAobGV0ICgobGluZSAo c3Vic3RyaW5nIHN0cmluZyBzdGFydCAoaWYga2VlcC1uZXdsaW5lcyAoMSsgbmV3bGluZSkgbmV3 bGluZSkpKSkgKHdoZW4gKG5vdCAoYW5kIGtlZXAtbmV3bGluZXMgb21pdC1udWxscyAoZXF1YWwg bGluZSAiXG4iKSkpIChwdXNoIGxpbmUgbGluZXMpKSkpIChzZXRxIHN0YXJ0ICgxKyBuZXdsaW5l KSkgKHdoZW4gKGFuZCAoPSBzdGFydCAobGVuZ3RoIHN0cmluZykpIChub3Qgb21pdC1udWxscykg KG5vdCBrZWVwLW5ld2xpbmVzKSkgKHB1c2ggIiIgbGluZXMpKSkgKGlmICh6ZXJvcCBzdGFydCkg KHB1c2ggc3RyaW5nIGxpbmVzKSAocHVzaCAoc3Vic3RyaW5nIHN0cmluZyBzdGFydCkgbGluZXMp KSAoc2V0cSBzdGFydCAobGVuZ3RoIHN0cmluZykpKSkgKG5yZXZlcnNlIGxpbmVzKSkKICBzdHJp bmctbGluZXMoIlRvZ2dsZSBhdXRvbWF0aWMgc2F2aW5nIHRvIGZpbGUtdmlzaXRpbmcgYnVmZmVy cyBvbiBvciBvZmYuXG5cblVubGlrZSBgYXV0by1zYXZlLW1vZGUnLCB0aGlzIG1vZGUgd2lsbCBh dXRvLXNhdmUgYnVmZmVyIGNvbnRlbnRzXG50byB0aGUgdmlzaXRlZCBmaWxlcyBkaXJlY3RseSBh bmQgd2lsbCBhbHNvIHJ1biBhbGwgc2F2ZS1yZWxhdGVkXG5ob29rcy4gIFNlZSBJbmZvIG5vZGUg YFNhdmluZycgZm9yIGRldGFpbHMgb2YgdGhlIHNhdmUgcHJvY2Vzcy5cblxuWW91IGNhbiBhbHNv IHNldCB0aGUgYnVmZmVyLWxvY2FsIHZhbHVlIG9mIHRoZSB2YXJpYWJsZVxuYGF1dG8tc2F2ZS12 aXNpdGVkLW1vZGUnIHRvIG5pbC4gIEEgYnVmZmVyIHdoZXJlIHRoZSBidWZmZXItbG9jYWxcbnZh bHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgbmlsIGlzIGlnbm9yZWQgZm9yIHRoZSBwdXJwb3NlIG9m XG5gYXV0by1zYXZlLXZpc2l0ZWQtbW9kZScsIGV2ZW4gaWYgYGF1dG8tc2F2ZS12aXNpdGVkLW1v ZGUnIGlzXG5lbmFibGVkLiIpCiAgKGlmIGRvYyAoc3RyaW5nLWxpbmVzIGRvYykgKGxpc3QgKGZv cm1hdCAiVG9nZ2xlICVzIG9uIG9yIG9mZi4iIG1vZGUtcHJldHR5LW5hbWUpKSkKICAobGV0ICgo bGluZXMgKGlmIGRvYyAoc3RyaW5nLWxpbmVzIGRvYykgKGxpc3QgKGZvcm1hdCAiVG9nZ2xlICVz IG9uIG9yIG9mZi4iIG1vZGUtcHJldHR5LW5hbWUpKSkpKSAoaW5zZXJ0IChjYXItc2FmZSAocHJv ZzEgbGluZXMgKHNldHEgbGluZXMgKGNkciBsaW5lcykpKSkpIChlbnN1cmUtZW1wdHktbGluZXMp ICh3aGlsZSAoYW5kIGxpbmVzIChlcXVhbCAoY2FyIGxpbmVzKSAiIikpIChjYXItc2FmZSAocHJv ZzEgbGluZXMgKHNldHEgbGluZXMgKGNkciBsaW5lcykpKSkpIChsZXQgKCgtLWRvbGlzdC10YWls LS0gbGluZXMpKSAod2hpbGUgLS1kb2xpc3QtdGFpbC0tIChsZXQgKChsaW5lIChjYXIgLS1kb2xp c3QtdGFpbC0tKSkpIChpbnNlcnQgbGluZSAiXG4iKSAoc2V0cSAtLWRvbGlzdC10YWlsLS0gKGNk ciAtLWRvbGlzdC10YWlsLS0pKSkpKSAoZW5zdXJlLWVtcHR5LWxpbmVzKSAobGV0KiAoKGZpbGwt cHJlZml4IG5pbCkgKGRvY3MtZmMgKGFuZCAoYm91bmRwICdlbWFjcy1saXNwLWRvY3N0cmluZy1m aWxsLWNvbHVtbikgZW1hY3MtbGlzcC1kb2NzdHJpbmctZmlsbC1jb2x1bW4pKSAoZmlsbC1jb2x1 bW4gKGlmIChpbnRlZ2VycCBkb2NzLWZjKSBkb2NzLWZjIDY1KSkgKGFyZ2RvYyAoZm9ybWF0IGVh c3ktbW1vZGUtLWFyZy1kb2NzdHJpbmcgKGlmIGdsb2JhbCAiZ2xvYmFsICIgIiIpIG1vZGUtcHJl dHR5LW5hbWUgKHN0cmluZy1yZXBsYWNlICInIiAiXFw9JyIgKGZvcm1hdCAiJVMiIGdldHRlcikp KSkpIChsZXQgKChzdGFydCAocG9pbnQpKSkgKGluc2VydCBhcmdkb2MpIChpZiAoZmJvdW5kcCAn ZmlsbC1yZWdpb24pIChwcm9nbiAoZmlsbC1yZWdpb24gc3RhcnQgKHBvaW50KSAnbGVmdCB0KSkp KSkgKGlmIChhbmQgKGJvdW5kcCBrZXltYXAtc3ltKSAob3IgKG5vdCBkb2MpIChub3QgKHN0cmlu Zy1zZWFyY2ggIlxceyIgZG9jKSkpKSAocHJvZ24gKGVuc3VyZS1lbXB0eS1saW5lcykgKGluc2Vy dCAoZm9ybWF0ICJcXHslc30iIGtleW1hcC1zeW0pKSkpIChidWZmZXItc3RyaW5nKSkKICAocHJv Z24gKGxldCAoKGxpbmVzIChpZiBkb2MgKHN0cmluZy1saW5lcyBkb2MpIChsaXN0IChmb3JtYXQg IlRvZ2dsZSAlcyBvbiBvciBvZmYuIiBtb2RlLXByZXR0eS1uYW1lKSkpKSkgKGluc2VydCAoY2Fy LXNhZmUgKHByb2cxIGxpbmVzIChzZXRxIGxpbmVzIChjZHIgbGluZXMpKSkpKSAoZW5zdXJlLWVt cHR5LWxpbmVzKSAod2hpbGUgKGFuZCBsaW5lcyAoZXF1YWwgKGNhciBsaW5lcykgIiIpKSAoY2Fy LXNhZmUgKHByb2cxIGxpbmVzIChzZXRxIGxpbmVzIChjZHIgbGluZXMpKSkpKSAobGV0ICgoLS1k b2xpc3QtdGFpbC0tIGxpbmVzKSkgKHdoaWxlIC0tZG9saXN0LXRhaWwtLSAobGV0ICgobGluZSAo Y2FyIC0tZG9saXN0LXRhaWwtLSkpKSAoaW5zZXJ0IGxpbmUgIlxuIikgKHNldHEgLS1kb2xpc3Qt dGFpbC0tIChjZHIgLS1kb2xpc3QtdGFpbC0tKSkpKSkgKGVuc3VyZS1lbXB0eS1saW5lcykgKGxl dCogKChmaWxsLXByZWZpeCBuaWwpIChkb2NzLWZjIChhbmQgKGJvdW5kcCAnZW1hY3MtbGlzcC1k b2NzdHJpbmctZmlsbC1jb2x1bW4pIGVtYWNzLWxpc3AtZG9jc3RyaW5nLWZpbGwtY29sdW1uKSkg KGZpbGwtY29sdW1uIChpZiAoaW50ZWdlcnAgZG9jcy1mYykgZG9jcy1mYyA2NSkpIChhcmdkb2Mg KGZvcm1hdCBlYXN5LW1tb2RlLS1hcmctZG9jc3RyaW5nIChpZiBnbG9iYWwgImdsb2JhbCAiICIi KSBtb2RlLXByZXR0eS1uYW1lIChzdHJpbmctcmVwbGFjZSAiJyIgIlxcPSciIChmb3JtYXQgIiVT IiBnZXR0ZXIpKSkpKSAobGV0ICgoc3RhcnQgKHBvaW50KSkpIChpbnNlcnQgYXJnZG9jKSAoaWYg KGZib3VuZHAgJ2ZpbGwtcmVnaW9uKSAocHJvZ24gKGZpbGwtcmVnaW9uIHN0YXJ0IChwb2ludCkg J2xlZnQgdCkpKSkpIChpZiAoYW5kIChib3VuZHAga2V5bWFwLXN5bSkgKG9yIChub3QgZG9jKSAo bm90IChzdHJpbmctc2VhcmNoICJcXHsiIGRvYykpKSkgKHByb2duIChlbnN1cmUtZW1wdHktbGlu ZXMpIChpbnNlcnQgKGZvcm1hdCAiXFx7JXN9IiBrZXltYXAtc3ltKSkpKSAoYnVmZmVyLXN0cmlu ZykpKQogICh1bndpbmQtcHJvdGVjdCAocHJvZ24gKGxldCAoKGxpbmVzIChpZiBkb2MgKHN0cmlu Zy1saW5lcyBkb2MpIChsaXN0IChmb3JtYXQgIlRvZ2dsZSAlcyBvbiBvciBvZmYuIiBtb2RlLXBy ZXR0eS1uYW1lKSkpKSkgKGluc2VydCAoY2FyLXNhZmUgKHByb2cxIGxpbmVzIChzZXRxIGxpbmVz IChjZHIgbGluZXMpKSkpKSAoZW5zdXJlLWVtcHR5LWxpbmVzKSAod2hpbGUgKGFuZCBsaW5lcyAo ZXF1YWwgKGNhciBsaW5lcykgIiIpKSAoY2FyLXNhZmUgKHByb2cxIGxpbmVzIChzZXRxIGxpbmVz IChjZHIgbGluZXMpKSkpKSAobGV0ICgoLS1kb2xpc3QtdGFpbC0tIGxpbmVzKSkgKHdoaWxlIC0t ZG9saXN0LXRhaWwtLSAobGV0ICgobGluZSAoY2FyIC0tZG9saXN0LXRhaWwtLSkpKSAoaW5zZXJ0 IGxpbmUgIlxuIikgKHNldHEgLS1kb2xpc3QtdGFpbC0tIChjZHIgLS1kb2xpc3QtdGFpbC0tKSkp KSkgKGVuc3VyZS1lbXB0eS1saW5lcykgKGxldCogKChmaWxsLXByZWZpeCBuaWwpIChkb2NzLWZj IChhbmQgKGJvdW5kcCAnZW1hY3MtbGlzcC1kb2NzdHJpbmctZmlsbC1jb2x1bW4pIGVtYWNzLWxp c3AtZG9jc3RyaW5nLWZpbGwtY29sdW1uKSkgKGZpbGwtY29sdW1uIChpZiAoaW50ZWdlcnAgZG9j cy1mYykgZG9jcy1mYyA2NSkpIChhcmdkb2MgKGZvcm1hdCBlYXN5LW1tb2RlLS1hcmctZG9jc3Ry aW5nIChpZiBnbG9iYWwgImdsb2JhbCAiICIiKSBtb2RlLXByZXR0eS1uYW1lIChzdHJpbmctcmVw bGFjZSAiJyIgIlxcPSciIChmb3JtYXQgIiVTIiBnZXR0ZXIpKSkpKSAobGV0ICgoc3RhcnQgKHBv aW50KSkpIChpbnNlcnQgYXJnZG9jKSAoaWYgKGZib3VuZHAgJ2ZpbGwtcmVnaW9uKSAocHJvZ24g KGZpbGwtcmVnaW9uIHN0YXJ0IChwb2ludCkgJ2xlZnQgdCkpKSkpIChpZiAoYW5kIChib3VuZHAg a2V5bWFwLXN5bSkgKG9yIChub3QgZG9jKSAobm90IChzdHJpbmctc2VhcmNoICJcXHsiIGRvYykp KSkgKHByb2duIChlbnN1cmUtZW1wdHktbGluZXMpIChpbnNlcnQgKGZvcm1hdCAiXFx7JXN9IiBr ZXltYXAtc3ltKSkpKSAoYnVmZmVyLXN0cmluZykpKSAoYW5kIChidWZmZXItbmFtZSB0ZW1wLWJ1 ZmZlcikgKGtpbGwtYnVmZmVyIHRlbXAtYnVmZmVyKSkpCiAgKHNhdmUtY3VycmVudC1idWZmZXIg KHNldC1idWZmZXIgdGVtcC1idWZmZXIpICh1bndpbmQtcHJvdGVjdCAocHJvZ24gKGxldCAoKGxp bmVzIChpZiBkb2MgKHN0cmluZy1saW5lcyBkb2MpIChsaXN0IChmb3JtYXQgIlRvZ2dsZSAlcyBv biBvciBvZmYuIiBtb2RlLXByZXR0eS1uYW1lKSkpKSkgKGluc2VydCAoY2FyLXNhZmUgKHByb2cx IGxpbmVzIChzZXRxIGxpbmVzIChjZHIgbGluZXMpKSkpKSAoZW5zdXJlLWVtcHR5LWxpbmVzKSAo d2hpbGUgKGFuZCBsaW5lcyAoZXF1YWwgKGNhciBsaW5lcykgIiIpKSAoY2FyLXNhZmUgKHByb2cx IGxpbmVzIChzZXRxIGxpbmVzIChjZHIgbGluZXMpKSkpKSAobGV0ICgoLS1kb2xpc3QtdGFpbC0t IGxpbmVzKSkgKHdoaWxlIC0tZG9saXN0LXRhaWwtLSAobGV0ICgobGluZSAoY2FyIC0tZG9saXN0 LXRhaWwtLSkpKSAoaW5zZXJ0IGxpbmUgIlxuIikgKHNldHEgLS1kb2xpc3QtdGFpbC0tIChjZHIg LS1kb2xpc3QtdGFpbC0tKSkpKSkgKGVuc3VyZS1lbXB0eS1saW5lcykgKGxldCogKChmaWxsLXBy ZWZpeCBuaWwpIChkb2NzLWZjIChhbmQgKGJvdW5kcCAnZW1hY3MtbGlzcC1kb2NzdHJpbmctZmls bC1jb2x1bW4pIGVtYWNzLWxpc3AtZG9jc3RyaW5nLWZpbGwtY29sdW1uKSkgKGZpbGwtY29sdW1u IChpZiAoaW50ZWdlcnAgZG9jcy1mYykgZG9jcy1mYyA2NSkpIChhcmdkb2MgKGZvcm1hdCBlYXN5 LW1tb2RlLS1hcmctZG9jc3RyaW5nIChpZiBnbG9iYWwgImdsb2JhbCAiICIiKSBtb2RlLXByZXR0 eS1uYW1lIChzdHJpbmctcmVwbGFjZSAiJyIgIlxcPSciIChmb3JtYXQgIiVTIiBnZXR0ZXIpKSkp KSAobGV0ICgoc3RhcnQgKHBvaW50KSkpIChpbnNlcnQgYXJnZG9jKSAoaWYgKGZib3VuZHAgJ2Zp bGwtcmVnaW9uKSAocHJvZ24gKGZpbGwtcmVnaW9uIHN0YXJ0IChwb2ludCkgJ2xlZnQgdCkpKSkp IChpZiAoYW5kIChib3VuZHAga2V5bWFwLXN5bSkgKG9yIChub3QgZG9jKSAobm90IChzdHJpbmct c2VhcmNoICJcXHsiIGRvYykpKSkgKHByb2duIChlbnN1cmUtZW1wdHktbGluZXMpIChpbnNlcnQg KGZvcm1hdCAiXFx7JXN9IiBrZXltYXAtc3ltKSkpKSAoYnVmZmVyLXN0cmluZykpKSAoYW5kIChi dWZmZXItbmFtZSB0ZW1wLWJ1ZmZlcikgKGtpbGwtYnVmZmVyIHRlbXAtYnVmZmVyKSkpKQogIChs ZXQgKCh0ZW1wLWJ1ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiICp0ZW1wKiIgdCkpKSAoc2F2 ZS1jdXJyZW50LWJ1ZmZlciAoc2V0LWJ1ZmZlciB0ZW1wLWJ1ZmZlcikgKHVud2luZC1wcm90ZWN0 IChwcm9nbiAobGV0ICgobGluZXMgKGlmIGRvYyAoc3RyaW5nLWxpbmVzIGRvYykgKGxpc3QgKGZv cm1hdCAiVG9nZ2xlICVzIG9uIG9yIG9mZi4iIG1vZGUtcHJldHR5LW5hbWUpKSkpKSAoaW5zZXJ0 IChjYXItc2FmZSAocHJvZzEgbGluZXMgKHNldHEgbGluZXMgKGNkciBsaW5lcykpKSkpIChlbnN1 cmUtZW1wdHktbGluZXMpICh3aGlsZSAoYW5kIGxpbmVzIChlcXVhbCAoY2FyIGxpbmVzKSAiIikp IChjYXItc2FmZSAocHJvZzEgbGluZXMgKHNldHEgbGluZXMgKGNkciBsaW5lcykpKSkpIChsZXQg KCgtLWRvbGlzdC10YWlsLS0gbGluZXMpKSAod2hpbGUgLS1kb2xpc3QtdGFpbC0tIChsZXQgKChs aW5lIChjYXIgLS1kb2xpc3QtdGFpbC0tKSkpIChpbnNlcnQgbGluZSAiXG4iKSAoc2V0cSAtLWRv bGlzdC10YWlsLS0gKGNkciAtLWRvbGlzdC10YWlsLS0pKSkpKSAoZW5zdXJlLWVtcHR5LWxpbmVz KSAobGV0KiAoKGZpbGwtcHJlZml4IG5pbCkgKGRvY3MtZmMgKGFuZCAoYm91bmRwICdlbWFjcy1s aXNwLWRvY3N0cmluZy1maWxsLWNvbHVtbikgZW1hY3MtbGlzcC1kb2NzdHJpbmctZmlsbC1jb2x1 bW4pKSAoZmlsbC1jb2x1bW4gKGlmIChpbnRlZ2VycCBkb2NzLWZjKSBkb2NzLWZjIDY1KSkgKGFy Z2RvYyAoZm9ybWF0IGVhc3ktbW1vZGUtLWFyZy1kb2NzdHJpbmcgKGlmIGdsb2JhbCAiZ2xvYmFs ICIgIiIpIG1vZGUtcHJldHR5LW5hbWUgKHN0cmluZy1yZXBsYWNlICInIiAiXFw9JyIgKGZvcm1h dCAiJVMiIGdldHRlcikpKSkpIChsZXQgKChzdGFydCAocG9pbnQpKSkgKGluc2VydCBhcmdkb2Mp IChpZiAoZmJvdW5kcCAnZmlsbC1yZWdpb24pIChwcm9nbiAoZmlsbC1yZWdpb24gc3RhcnQgKHBv aW50KSAnbGVmdCB0KSkpKSkgKGlmIChhbmQgKGJvdW5kcCBrZXltYXAtc3ltKSAob3IgKG5vdCBk b2MpIChub3QgKHN0cmluZy1zZWFyY2ggIlxceyIgZG9jKSkpKSAocHJvZ24gKGVuc3VyZS1lbXB0 eS1saW5lcykgKGluc2VydCAoZm9ybWF0ICJcXHslc30iIGtleW1hcC1zeW0pKSkpIChidWZmZXIt c3RyaW5nKSkpIChhbmQgKGJ1ZmZlci1uYW1lIHRlbXAtYnVmZmVyKSAoa2lsbC1idWZmZXIgdGVt cC1idWZmZXIpKSkpKQogIChpZiAoYW5kIGRvYyAoc3RyaW5nLW1hdGNoLXAgIlxcYkFSR1xcYiIg ZG9jKSkgZG9jIChsZXQgKCh0ZW1wLWJ1ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiICp0ZW1w KiIgdCkpKSAoc2F2ZS1jdXJyZW50LWJ1ZmZlciAoc2V0LWJ1ZmZlciB0ZW1wLWJ1ZmZlcikgKHVu d2luZC1wcm90ZWN0IChwcm9nbiAobGV0ICgobGluZXMgKGlmIGRvYyAoc3RyaW5nLWxpbmVzIGRv YykgKGxpc3QgKGZvcm1hdCAiVG9nZ2xlICVzIG9uIG9yIG9mZi4iIG1vZGUtcHJldHR5LW5hbWUp KSkpKSAoaW5zZXJ0IChjYXItc2FmZSAocHJvZzEgbGluZXMgKHNldHEgbGluZXMgKGNkciBsaW5l cykpKSkpIChlbnN1cmUtZW1wdHktbGluZXMpICh3aGlsZSAoYW5kIGxpbmVzIChlcXVhbCAoY2Fy IGxpbmVzKSAiIikpIChjYXItc2FmZSAocHJvZzEgbGluZXMgKHNldHEgbGluZXMgKGNkciBsaW5l cykpKSkpIChsZXQgKCgtLWRvbGlzdC10YWlsLS0gbGluZXMpKSAod2hpbGUgLS1kb2xpc3QtdGFp bC0tIChsZXQgKChsaW5lIChjYXIgLS1kb2xpc3QtdGFpbC0tKSkpIChpbnNlcnQgbGluZSAiXG4i KSAoc2V0cSAtLWRvbGlzdC10YWlsLS0gKGNkciAtLWRvbGlzdC10YWlsLS0pKSkpKSAoZW5zdXJl LWVtcHR5LWxpbmVzKSAobGV0KiAoKGZpbGwtcHJlZml4IG5pbCkgKGRvY3MtZmMgKGFuZCAoYm91 bmRwICdlbWFjcy1saXNwLWRvY3N0cmluZy1maWxsLWNvbHVtbikgZW1hY3MtbGlzcC1kb2NzdHJp bmctZmlsbC1jb2x1bW4pKSAoZmlsbC1jb2x1bW4gKGlmIChpbnRlZ2VycCBkb2NzLWZjKSBkb2Nz LWZjIDY1KSkgKGFyZ2RvYyAoZm9ybWF0IGVhc3ktbW1vZGUtLWFyZy1kb2NzdHJpbmcgKGlmIGds b2JhbCAiZ2xvYmFsICIgIiIpIG1vZGUtcHJldHR5LW5hbWUgKHN0cmluZy1yZXBsYWNlICInIiAi XFw9JyIgKGZvcm1hdCAiJVMiIGdldHRlcikpKSkpIChsZXQgKChzdGFydCAocG9pbnQpKSkgKGlu c2VydCBhcmdkb2MpIChpZiAoZmJvdW5kcCAnZmlsbC1yZWdpb24pIChwcm9nbiAoZmlsbC1yZWdp b24gc3RhcnQgKHBvaW50KSAnbGVmdCB0KSkpKSkgKGlmIChhbmQgKGJvdW5kcCBrZXltYXAtc3lt KSAob3IgKG5vdCBkb2MpIChub3QgKHN0cmluZy1zZWFyY2ggIlxceyIgZG9jKSkpKSAocHJvZ24g KGVuc3VyZS1lbXB0eS1saW5lcykgKGluc2VydCAoZm9ybWF0ICJcXHslc30iIGtleW1hcC1zeW0p KSkpIChidWZmZXItc3RyaW5nKSkpIChhbmQgKGJ1ZmZlci1uYW1lIHRlbXAtYnVmZmVyKSAoa2ls bC1idWZmZXIgdGVtcC1idWZmZXIpKSkpKSkKICBlYXN5LW1tb2RlLS1tb2RlLWRvY3N0cmluZygi VG9nZ2xlIGF1dG9tYXRpYyBzYXZpbmcgdG8gZmlsZS12aXNpdGluZyBidWZmZXJzIG9uIG9yIG9m Zi5cblxuVW5saWtlIGBhdXRvLXNhdmUtbW9kZScsIHRoaXMgbW9kZSB3aWxsIGF1dG8tc2F2ZSBi dWZmZXIgY29udGVudHNcbnRvIHRoZSB2aXNpdGVkIGZpbGVzIGRpcmVjdGx5IGFuZCB3aWxsIGFs c28gcnVuIGFsbCBzYXZlLXJlbGF0ZWRcbmhvb2tzLiAgU2VlIEluZm8gbm9kZSBgU2F2aW5nJyBm b3IgZGV0YWlscyBvZiB0aGUgc2F2ZSBwcm9jZXNzLlxuXG5Zb3UgY2FuIGFsc28gc2V0IHRoZSBi dWZmZXItbG9jYWwgdmFsdWUgb2YgdGhlIHZhcmlhYmxlXG5gYXV0by1zYXZlLXZpc2l0ZWQtbW9k ZScgdG8gbmlsLiAgQSBidWZmZXIgd2hlcmUgdGhlIGJ1ZmZlci1sb2NhbFxudmFsdWUgb2YgdGhp cyB2YXJpYWJsZSBpcyBuaWwgaXMgaWdub3JlZCBmb3IgdGhlIHB1cnBvc2Ugb2ZcbmBhdXRvLXNh dmUtdmlzaXRlZC1tb2RlJywgZXZlbiBpZiBgYXV0by1zYXZlLXZpc2l0ZWQtbW9kZScgaXNcbmVu YWJsZWQuIiAiQXV0by1TYXZlLVZpc2l0ZWQgbW9kZSIgYXV0by1zYXZlLXZpc2l0ZWQtbW9kZS1t YXAgKGRlZmF1bHQtdmFsdWUgJ2F1dG8tc2F2ZS12aXNpdGVkLW1vZGUpIHQpCiAgKGxpc3QgJ2Rl ZnVuIG1vZGVmdW4gKGNvbnMgJyZvcHRpb25hbCAoY29ucyAnYXJnIGV4dHJhLWFyZ3MpKSAoZWFz eS1tbW9kZS0tbW9kZS1kb2NzdHJpbmcgZG9jIHByZXR0eS1uYW1lIGtleW1hcC1zeW0gZ2V0dGVy IGdsb2JhbHApIChpZiBpbnRlcmFjdGl2ZSAocHJvZ24gKGlmIChjb25zcCBpbnRlcmFjdGl2ZSkg KGNvbnMgJ2ludGVyYWN0aXZlIChjb25zICcobGlzdCAoaWYgY3VycmVudC1wcmVmaXgtYXJnIChw cmVmaXgtbnVtZXJpYy12YWx1ZSBjdXJyZW50LXByZWZpeC1hcmcpICd0b2dnbGUpKSBpbnRlcmFj dGl2ZSkpICcoaW50ZXJhY3RpdmUgKGxpc3QgKGlmIGN1cnJlbnQtcHJlZml4LWFyZyAocHJlZml4 LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKSAndG9nZ2xlKSkpKSkpIChjb25zICds ZXQgKGNvbnMgKGxpc3QgKGNvbnMgbGFzdC1tZXNzYWdlICcoKGN1cnJlbnQtbWVzc2FnZSkpKSkg KGNvbnMgKGFwcGVuZCBzZXR0ZXIgKGxpc3QgKGNvbnMgJ2NvbmQgKGNvbnMgKGxpc3QgJyhlcSBh cmcgJ3RvZ2dsZSkgKGxpc3QgJ25vdCBnZXR0ZXIpKSAnKCgoYW5kIChudW1iZXJwIGFyZykgKDwg YXJnIDEpKSBuaWwpICh0IHQpKSkpKSkgKGFwcGVuZCAoaWYgZ2xvYmFscCAobGlzdCAobGlzdCAn d2hlbiAnKGJvdW5kcCAnZ2xvYmFsLW1pbm9yLW1vZGVzKSAobGlzdCAnc2V0cSAnZ2xvYmFsLW1p bm9yLW1vZGVzIChjb25zICdkZWxxIChjb25zIChsaXN0ICdxdW90ZSBtb2RlZnVuKSAnKGdsb2Jh bC1taW5vci1tb2RlcykpKSkgKGxpc3QgJ3doZW4gZ2V0dGVyIChjb25zICdwdXNoIChjb25zIChs aXN0ICdxdW90ZSBtb2RlZnVuKSAnKGdsb2JhbC1taW5vci1tb2RlcykpKSkpKSAobGlzdCAobGlz dCAnd2hlbiAnKGJvdW5kcCAnbG9jYWwtbWlub3ItbW9kZXMpIChsaXN0ICdzZXRxICdsb2NhbC1t aW5vci1tb2RlcyAoY29ucyAnZGVscSAoY29ucyAobGlzdCAncXVvdGUgbW9kZWZ1bikgJyhsb2Nh bC1taW5vci1tb2RlcykpKSkgKGxpc3QgJ3doZW4gZ2V0dGVyIChjb25zICdwdXNoIChjb25zIChs aXN0ICdxdW90ZSBtb2RlZnVuKSAnKGxvY2FsLW1pbm9yLW1vZGVzKSkpKSkpKSBib2R5IChsaXN0 IChsaXN0ICdydW4taG9va3MgKGxpc3QgJ3F1b3RlIGhvb2spIChsaXN0ICdpZiBnZXR0ZXIgKGxp c3QgJ3F1b3RlIGhvb2stb24pIChsaXN0ICdxdW90ZSBob29rLW9mZikpKSAobGlzdCAnaWYgJyhj YWxsZWQtaW50ZXJhY3RpdmVseS1wICdhbnkpIChsaXN0ICdwcm9nbiAoaWYgKGFuZCBnbG9iYWxw IChub3QgdmFyaWFibGUpKSAobGlzdCAnY3VzdG9taXplLW1hcmstYXMtc2V0IChsaXN0ICdxdW90 ZSBtb2RlKSkpIChsaXN0ICd1bmxlc3MgKGxpc3QgJ2FuZCAnKGN1cnJlbnQtbWVzc2FnZSkgKGxp c3QgJ25vdCAoY29ucyAnZXF1YWwgKGNvbnMgbGFzdC1tZXNzYWdlICcoKGN1cnJlbnQtbWVzc2Fn ZSkpKSkpKSAobGlzdCAnbGV0IChsaXN0IChsaXN0ICdsb2NhbCAoaWYgZ2xvYmFscCAiIiAiIGlu IGN1cnJlbnQgYnVmZmVyIikpKSAoY29ucyAnbWVzc2FnZSAoY29ucyAoZm9ybWF0ICIlcyAlJXNh YmxlZCUlcyIgcHJldHR5LW5hbWUpIChjb25zIChjb25zICdpZiAoY29ucyBnZXR0ZXIgJygiZW4i ICJkaXMiKSkpICcobG9jYWwpKSkpKSkpKSkgKGlmIGFmdGVyLWhvb2sgKHByb2duIChsaXN0IGFm dGVyLWhvb2spKSkpKSkpICcoZm9yY2UtbW9kZS1saW5lLXVwZGF0ZSkgZ2V0dGVyKQogIChmdW5j YWxsIHdhcm53cmFwIChsaXN0ICdkZWZ1biBtb2RlZnVuIChjb25zICcmb3B0aW9uYWwgKGNvbnMg J2FyZyBleHRyYS1hcmdzKSkgKGVhc3ktbW1vZGUtLW1vZGUtZG9jc3RyaW5nIGRvYyBwcmV0dHkt bmFtZSBrZXltYXAtc3ltIGdldHRlciBnbG9iYWxwKSAoaWYgaW50ZXJhY3RpdmUgKHByb2duIChp ZiAoY29uc3AgaW50ZXJhY3RpdmUpIChjb25zICdpbnRlcmFjdGl2ZSAoY29ucyAnKGxpc3QgKGlm IGN1cnJlbnQtcHJlZml4LWFyZyAocHJlZml4LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgt YXJnKSAndG9nZ2xlKSkgaW50ZXJhY3RpdmUpKSAnKGludGVyYWN0aXZlIChsaXN0IChpZiBjdXJy ZW50LXByZWZpeC1hcmcgKHByZWZpeC1udW1lcmljLXZhbHVlIGN1cnJlbnQtcHJlZml4LWFyZykg J3RvZ2dsZSkpKSkpKSAoY29ucyAnbGV0IChjb25zIChsaXN0IChjb25zIGxhc3QtbWVzc2FnZSAn KChjdXJyZW50LW1lc3NhZ2UpKSkpIChjb25zIChhcHBlbmQgc2V0dGVyIChsaXN0IChjb25zICdj b25kIChjb25zIChsaXN0ICcoZXEgYXJnICd0b2dnbGUpIChsaXN0ICdub3QgZ2V0dGVyKSkgJygo KGFuZCAobnVtYmVycCBhcmcpICg8IGFyZyAxKSkgbmlsKSAodCB0KSkpKSkpIChhcHBlbmQgKGlm IGdsb2JhbHAgKGxpc3QgKGxpc3QgJ3doZW4gJyhib3VuZHAgJ2dsb2JhbC1taW5vci1tb2Rlcykg KGxpc3QgJ3NldHEgJ2dsb2JhbC1taW5vci1tb2RlcyAoY29ucyAnZGVscSAoY29ucyAobGlzdCAn cXVvdGUgbW9kZWZ1bikgJyhnbG9iYWwtbWlub3ItbW9kZXMpKSkpIChsaXN0ICd3aGVuIGdldHRl ciAoY29ucyAncHVzaCAoY29ucyAobGlzdCAncXVvdGUgbW9kZWZ1bikgJyhnbG9iYWwtbWlub3It bW9kZXMpKSkpKSkgKGxpc3QgKGxpc3QgJ3doZW4gJyhib3VuZHAgJ2xvY2FsLW1pbm9yLW1vZGVz KSAobGlzdCAnc2V0cSAnbG9jYWwtbWlub3ItbW9kZXMgKGNvbnMgJ2RlbHEgKGNvbnMgKGxpc3Qg J3F1b3RlIG1vZGVmdW4pICcobG9jYWwtbWlub3ItbW9kZXMpKSkpIChsaXN0ICd3aGVuIGdldHRl ciAoY29ucyAncHVzaCAoY29ucyAobGlzdCAncXVvdGUgbW9kZWZ1bikgJyhsb2NhbC1taW5vci1t b2RlcykpKSkpKSkgYm9keSAobGlzdCAobGlzdCAncnVuLWhvb2tzIChsaXN0ICdxdW90ZSBob29r KSAobGlzdCAnaWYgZ2V0dGVyIChsaXN0ICdxdW90ZSBob29rLW9uKSAobGlzdCAncXVvdGUgaG9v ay1vZmYpKSkgKGxpc3QgJ2lmICcoY2FsbGVkLWludGVyYWN0aXZlbHktcCAnYW55KSAobGlzdCAn cHJvZ24gKGlmIChhbmQgZ2xvYmFscCAobm90IHZhcmlhYmxlKSkgKGxpc3QgJ2N1c3RvbWl6ZS1t YXJrLWFzLXNldCAobGlzdCAncXVvdGUgbW9kZSkpKSAobGlzdCAndW5sZXNzIChsaXN0ICdhbmQg JyhjdXJyZW50LW1lc3NhZ2UpIChsaXN0ICdub3QgKGNvbnMgJ2VxdWFsIChjb25zIGxhc3QtbWVz c2FnZSAnKChjdXJyZW50LW1lc3NhZ2UpKSkpKSkgKGxpc3QgJ2xldCAobGlzdCAobGlzdCAnbG9j YWwgKGlmIGdsb2JhbHAgIiIgIiBpbiBjdXJyZW50IGJ1ZmZlciIpKSkgKGNvbnMgJ21lc3NhZ2Ug KGNvbnMgKGZvcm1hdCAiJXMgJSVzYWJsZWQlJXMiIHByZXR0eS1uYW1lKSAoY29ucyAoY29ucyAn aWYgKGNvbnMgZ2V0dGVyICcoImVuIiAiZGlzIikpKSAnKGxvY2FsKSkpKSkpKSkpIChpZiBhZnRl ci1ob29rIChwcm9nbiAobGlzdCBhZnRlci1ob29rKSkpKSkpKSAnKGZvcmNlLW1vZGUtbGluZS11 cGRhdGUpIGdldHRlcikpCiAgKGxpc3QgJ3Byb2duIChjb25kICh2YXJpYWJsZSBuaWwpICgobm90 IGdsb2JhbHApIChsaXN0ICdwcm9nbiAnOmF1dG9sb2FkLWVuZCAobGlzdCAnZGVmdmFyLWxvY2Fs IG1vZGUgaW5pdC12YWx1ZSAoY29uY2F0IChmb3JtYXQgIk5vbi1uaWwgaWYgJXMgaXMgZW5hYmxl ZC5cbiIgcHJldHR5LW5hbWUpIChpbnRlcm5hbC0tZm9ybWF0LWRvY3N0cmluZy1saW5lICJVc2Ug dGhlIGNvbW1hbmQgYCVzJyB0byBjaGFuZ2UgdGhpcyB2YXJpYWJsZS4iIG1vZGUpKSkpKSAodCAo bGV0ICgoYmFzZS1kb2Mtc3RyaW5nIChjb25jYXQgIk5vbi1uaWwgaWYgJXMgaXMgZW5hYmxlZC5c blNlZSB0aGUgYCVzJyBjb21tYW5kXG5mb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGlzIG1pbm9yIG1v ZGUuIiAoaWYgYm9keSAiXG5TZXR0aW5nIHRoaXMgdmFyaWFibGUgZGlyZWN0bHkgZG9lcyBub3Qg dGFrZSBlZmZlY3Q7XG5laXRoZXIgY3VzdG9taXplIGl0IChzZWUgdGhlIGluZm8gbm9kZSBgRWFz eSBDdXN0b21pemF0aW9uJylcbm9yIGNhbGwgdGhlIGZ1bmN0aW9uIGAlcycuIikpKSkgKGNvbnMg J2RlZmN1c3RvbSAoY29ucyBtb2RlIChjb25zIGluaXQtdmFsdWUgKGNvbnMgKGZvcm1hdCBiYXNl LWRvYy1zdHJpbmcgcHJldHR5LW5hbWUgbW9kZSBtb2RlKSAoYXBwZW5kIHNldCBpbml0aWFsaXpl IHR5cGUgKG5yZXZlcnNlIGV4dHJhLWtleXdvcmRzKSkpKSkpKSkpIChmdW5jYWxsIHdhcm53cmFw IChsaXN0ICdkZWZ1biBtb2RlZnVuIChjb25zICcmb3B0aW9uYWwgKGNvbnMgJ2FyZyBleHRyYS1h cmdzKSkgKGVhc3ktbW1vZGUtLW1vZGUtZG9jc3RyaW5nIGRvYyBwcmV0dHktbmFtZSBrZXltYXAt c3ltIGdldHRlciBnbG9iYWxwKSAoaWYgaW50ZXJhY3RpdmUgKHByb2duIChpZiAoY29uc3AgaW50 ZXJhY3RpdmUpIChjb25zICdpbnRlcmFjdGl2ZSAoY29ucyAnKGxpc3QgKGlmIGN1cnJlbnQtcHJl Zml4LWFyZyAocHJlZml4LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKSAndG9nZ2xl KSkgaW50ZXJhY3RpdmUpKSAnKGludGVyYWN0aXZlIChsaXN0IChpZiBjdXJyZW50LXByZWZpeC1h cmcgKHByZWZpeC1udW1lcmljLXZhbHVlIGN1cnJlbnQtcHJlZml4LWFyZykgJ3RvZ2dsZSkpKSkp KSAoY29ucyAnbGV0IChjb25zIChsaXN0IChjb25zIGxhc3QtbWVzc2FnZSAnKChjdXJyZW50LW1l c3NhZ2UpKSkpIChjb25zIChhcHBlbmQgc2V0dGVyIChsaXN0IChjb25zICdjb25kIChjb25zIChs aXN0ICcoZXEgYXJnICd0b2dnbGUpIChsaXN0ICdub3QgZ2V0dGVyKSkgJygoKGFuZCAobnVtYmVy cCBhcmcpICg8IGFyZyAxKSkgbmlsKSAodCB0KSkpKSkpIChhcHBlbmQgKGlmIGdsb2JhbHAgKGxp c3QgKGxpc3QgJ3doZW4gJyhib3VuZHAgJ2dsb2JhbC1taW5vci1tb2RlcykgKGxpc3QgJ3NldHEg J2dsb2JhbC1taW5vci1tb2RlcyAoY29ucyAnZGVscSAoY29ucyAobGlzdCAncXVvdGUgbW9kZWZ1 bikgJyhnbG9iYWwtbWlub3ItbW9kZXMpKSkpIChsaXN0ICd3aGVuIGdldHRlciAoY29ucyAncHVz aCAoY29ucyAobGlzdCAncXVvdGUgbW9kZWZ1bikgJyhnbG9iYWwtbWlub3ItbW9kZXMpKSkpKSkg KGxpc3QgKGxpc3QgJ3doZW4gJyhib3VuZHAgJ2xvY2FsLW1pbm9yLW1vZGVzKSAobGlzdCAnc2V0 cSAnbG9jYWwtbWlub3ItbW9kZXMgKGNvbnMgJ2RlbHEgKGNvbnMgKGxpc3QgJ3F1b3RlIG1vZGVm dW4pICcobG9jYWwtbWlub3ItbW9kZXMpKSkpIChsaXN0ICd3aGVuIGdldHRlciAoY29ucyAncHVz aCAoY29ucyAobGlzdCAncXVvdGUgbW9kZWZ1bikgJyhsb2NhbC1taW5vci1tb2RlcykpKSkpKSkg Ym9keSAobGlzdCAobGlzdCAncnVuLWhvb2tzIChsaXN0ICdxdW90ZSBob29rKSAobGlzdCAnaWYg Z2V0dGVyIChsaXN0ICdxdW90ZSBob29rLW9uKSAobGlzdCAncXVvdGUgaG9vay1vZmYpKSkgKGxp c3QgJ2lmICcoY2FsbGVkLWludGVyYWN0aXZlbHktcCAnYW55KSAobGlzdCAncHJvZ24gKGlmIChh bmQgZ2xvYmFscCAobm90IHZhcmlhYmxlKSkgKGxpc3QgJ2N1c3RvbWl6ZS1tYXJrLWFzLXNldCAo bGlzdCAncXVvdGUgbW9kZSkpKSAobGlzdCAndW5sZXNzIChsaXN0ICdhbmQgJyhjdXJyZW50LW1l c3NhZ2UpIChsaXN0ICdub3QgKGNvbnMgJ2VxdWFsIChjb25zIGxhc3QtbWVzc2FnZSAnKChjdXJy ZW50LW1lc3NhZ2UpKSkpKSkgKGxpc3QgJ2xldCAobGlzdCAobGlzdCAnbG9jYWwgKGlmIGdsb2Jh bHAgIiIgIiBpbiBjdXJyZW50IGJ1ZmZlciIpKSkgKGNvbnMgJ21lc3NhZ2UgKGNvbnMgKGZvcm1h dCAiJXMgJSVzYWJsZWQlJXMiIHByZXR0eS1uYW1lKSAoY29ucyAoY29ucyAnaWYgKGNvbnMgZ2V0 dGVyICcoImVuIiAiZGlzIikpKSAnKGxvY2FsKSkpKSkpKSkpIChpZiBhZnRlci1ob29rIChwcm9n biAobGlzdCBhZnRlci1ob29rKSkpKSkpKSAnKGZvcmNlLW1vZGUtbGluZS11cGRhdGUpIGdldHRl cikpICc6YXV0b2xvYWQtZW5kIChjb25zICdkZWZ2YXIgKGNvbnMgaG9vayAnKG5pbCkpKSAobGlz dCAndW5sZXNzIChjb25zICdnZXQgKGNvbnMgKGxpc3QgJ3F1b3RlIGhvb2spICcoJ3ZhcmlhYmxl LWRvY3VtZW50YXRpb24pKSkgKGxpc3QgJ3B1dCAobGlzdCAncXVvdGUgaG9vaykgJyd2YXJpYWJs ZS1kb2N1bWVudGF0aW9uIChmb3JtYXQgIkhvb2sgcnVuIGFmdGVyIGVudGVyaW5nIG9yIGxlYXZp bmcgYCVzJy5cbk5vIHByb2JsZW1zIHJlc3VsdCBpZiB0aGlzIHZhcmlhYmxlIGlzIG5vdCBib3Vu ZC5cbmBhZGQtaG9vaycgYXV0b21hdGljYWxseSBiaW5kcyBpdC4gIChUaGlzIGlzIHRydWUgZm9y IGFsbCBob29rIHZhcmlhYmxlcy4pIiBtb2RlZnVuKSkpIChjb25zICdwdXQgKGNvbnMgKGxpc3Qg J3F1b3RlIGhvb2spICcoJ2N1c3RvbS10eXBlICdob29rKSkpIChjb25zICdwdXQgKGNvbnMgKGxp c3QgJ3F1b3RlIGhvb2spICcoJ3N0YW5kYXJkLXZhbHVlIChsaXN0IG5pbCkpKSkgKGlmIChzeW1i b2xwIGtleW1hcCkgbmlsIChsaXN0ICdkZWZ2YXIga2V5bWFwLXN5bSAoY29ucyAnbGV0IChjb25z IChsaXN0IChsaXN0ICdtIGtleW1hcCkpICcoKGNvbmQgKChrZXltYXBwIG0pIG0pICgobGlzdHAg bSkgKGVhc3ktbW1vZGUtZGVmaW5lLWtleW1hcCBtKSkgKHQgKGVycm9yICJJbnZhbGlkIGtleW1h cCAlUyIgbSkpKSkpKSAoZm9ybWF0ICJLZXltYXAgZm9yIGAlcycuIiBtb2RlLW5hbWUpKSkgKGxl dCAoKG1vZGV2YXIgKGlmIChjb25zcCBnZXR0ZXIpIChsZXQqICgoeDM4IChjYXItc2FmZSBnZXR0 ZXIpKSkgKGlmIChlcSB4MzggJ2RlZmF1bHQtdmFsdWUpIChsZXQqICgoeDM5IChjZHItc2FmZSBn ZXR0ZXIpKSkgKGlmIChjb25zcCB4MzkpIChsZXQqICgoeDQwIChjYXItc2FmZSB4MzkpKSkgKGlm IChjb25zcCB4NDApIChsZXQqICgoeDQxIChjYXItc2FmZSB4NDApKSkgKGlmIChlcSB4NDEgJ3F1 b3RlKSAobGV0KiAoKHg0MiAoY2RyLXNhZmUgeDQwKSkpIChpZiAoY29uc3AgeDQyKSAobGV0KiAo KHg0MyAoY2FyLXNhZmUgeDQyKSkgKHg0NCAoY2RyLXNhZmUgeDQyKSkpIChpZiAobnVsbCB4NDQp IChsZXQqICgoeDQ1IChjZHItc2FmZSB4MzkpKSkgKGlmIChudWxsIHg0NSkgKGxldCAoKHYgeDQz KSkgdikgKGxldCBuaWwgZ2V0dGVyKSkpIChsZXQgbmlsIGdldHRlcikpKSAobGV0IG5pbCBnZXR0 ZXIpKSkgKGxldCBuaWwgZ2V0dGVyKSkpIChsZXQgbmlsIGdldHRlcikpKSAobGV0IG5pbCBnZXR0 ZXIpKSkgKGxldCBuaWwgZ2V0dGVyKSkpIChsZXQgbmlsIGdldHRlcikpKSkgKGlmIChub3QgKHN5 bWJvbHAgbW9kZXZhcikpIChpZiAob3IgbGlnaHRlciBrZXltYXApIChlcnJvciAiOmxpZ2h0ZXIg YW5kIDprZXltYXAgdW5zdXBwb3J0ZWQgd2l0aCBtb2RlIGV4cHJlc3Npb24gJVMiIGdldHRlcikp IChsaXN0ICd3aXRoLW5vLXdhcm5pbmdzIChsaXN0ICdhZGQtbWlub3ItbW9kZSAobGlzdCAncXVv dGUgbW9kZXZhcikgKGxpc3QgJ3F1b3RlIGxpZ2h0ZXIpIChpZiBrZXltYXAga2V5bWFwLXN5bSAo bGlzdCAnaWYgKGxpc3QgJ2JvdW5kcCAobGlzdCAncXVvdGUga2V5bWFwLXN5bSkpIGtleW1hcC1z eW0pKSBuaWwgKGlmIChlcSBtb2RlIG1vZGVmdW4pIG5pbCAobGlzdCAncXVvdGUgbW9kZWZ1bikp KSkpKSkKICAobGV0KiAoKGxhc3QtbWVzc2FnZSAobWFrZS1zeW1ib2wgImxhc3QtbWVzc2FnZSIp KSAobW9kZS1uYW1lIChzeW1ib2wtbmFtZSBtb2RlKSkgKGluaXQtdmFsdWUgbmlsKSAoa2V5bWFw IG5pbCkgKGxpZ2h0ZXIgbmlsKSAocHJldHR5LW5hbWUgbmlsKSAoZ2xvYmFscCBuaWwpIChzZXQg bmlsKSAoaW5pdGlhbGl6ZSBuaWwpICh0eXBlIG5pbCkgKGV4dHJhLWFyZ3MgbmlsKSAoZXh0cmEt a2V5d29yZHMgbmlsKSAodmFyaWFibGUgbmlsKSAoc2V0dGVyIChsaXN0ICdzZXRxIG1vZGUpKSAo Z2V0dGVyIG1vZGUpIChtb2RlZnVuIG1vZGUpIChhZnRlci1ob29rIG5pbCkgKGhvb2sgKGludGVy biAoY29uY2F0IG1vZGUtbmFtZSAiLWhvb2siKSkpIChob29rLW9uIChpbnRlcm4gKGNvbmNhdCBt b2RlLW5hbWUgIi1vbi1ob29rIikpKSAoaG9vay1vZmYgKGludGVybiAoY29uY2F0IG1vZGUtbmFt ZSAiLW9mZi1ob29rIikpKSAoaW50ZXJhY3RpdmUgdCkgKHdhcm53cmFwIChpZiAob3IgKG51bGwg Ym9keSkgKGtleXdvcmRwIChjYXIgYm9keSkpKSAjJ2lkZW50aXR5ICMnKGxhbWJkYSAoZXhwKSAo bWFjcm9leHAtd2Fybi1hbmQtcmV0dXJuICJVc2Uga2V5d29yZHMgcmF0aGVyIHRoYW4gZGVwcmVj YXRlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyB0byBgZGVmaW5lLW1pbm9yLW1vZGUnIiBleHApKSkp IGtleXcga2V5bWFwLXN5bSB0bXApIChpZiAoa2V5d29yZHAgKGNhciBib2R5KSkgbmlsIChzZXRx IGluaXQtdmFsdWUgKGNhci1zYWZlIChwcm9nMSBib2R5IChzZXRxIGJvZHkgKGNkciBib2R5KSkp KSkgKGlmIChrZXl3b3JkcCAoY2FyIGJvZHkpKSBuaWwgKHNldHEgbGlnaHRlciAoY2FyLXNhZmUg KHByb2cxIGJvZHkgKHNldHEgYm9keSAoY2RyIGJvZHkpKSkpKSAoaWYgKGtleXdvcmRwIChjYXIg Ym9keSkpIG5pbCAoc2V0cSBrZXltYXAgKGNhci1zYWZlIChwcm9nMSBib2R5IChzZXRxIGJvZHkg KGNkciBib2R5KSkpKSkpKSkgKHdoaWxlIChrZXl3b3JkcCAoc2V0cSBrZXl3IChjYXIgYm9keSkp KSAoc2V0cSBib2R5IChjZHIgYm9keSkpIChjb25kICgoZXEga2V5dyA6aW5pdC12YWx1ZSkgKGxl dCBuaWwgKHNldHEgaW5pdC12YWx1ZSAoY2FyLXNhZmUgKHByb2cxIGJvZHkgKHNldHEgYm9keSAo Y2RyIGJvZHkpKSkpKSkpICgoZXEga2V5dyA6bGlnaHRlcikgKGxldCBuaWwgKHNldHEgbGlnaHRl ciAocHVyZWNvcHkgKGNhci1zYWZlIChwcm9nMSBib2R5IChzZXRxIGJvZHkgKGNkciBib2R5KSkp KSkpKSkgKChlcSBrZXl3IDpnbG9iYWwpIChsZXQgbmlsIChzZXRxIGdsb2JhbHAgKGNhci1zYWZl IChwcm9nMSBib2R5IChzZXRxIGJvZHkgKGNkciBib2R5KSkpKSkgKGlmIChhbmQgZ2xvYmFscCAo c3ltYm9scCBtb2RlKSkgKHByb2duIChzZXRxIHNldHRlciAobGlzdCAnc2V0cS1kZWZhdWx0IG1v ZGUpKSAoc2V0cSBnZXR0ZXIgKGxpc3QgJ2RlZmF1bHQtdmFsdWUgKGxpc3QgJ3F1b3RlIG1vZGUp KSkpKSkpICgoZXEga2V5dyA6ZXh0cmEtYXJncykgKGxldCBuaWwgKHNldHEgZXh0cmEtYXJncyAo Y2FyLXNhZmUgKHByb2cxIGJvZHkgKHNldHEgYm9keSAoY2RyIGJvZHkpKSkpKSkpICgoZXEga2V5 dyA6c2V0KSAobGV0IG5pbCAoc2V0cSBzZXQgKGxpc3QgOnNldCAoY2FyLXNhZmUgKHByb2cxIGJv ZHkgKHNldHEgYm9keSAoY2RyIGJvZHkpKSkpKSkpKSAoKGVxIGtleXcgOmluaXRpYWxpemUpIChs ZXQgbmlsIChzZXRxIGluaXRpYWxpemUgKGxpc3QgOmluaXRpYWxpemUgKGNhci1zYWZlIChwcm9n MSBib2R5IChzZXRxIGJvZHkgKGNkciBib2R5KSkpKSkpKSkgKChlcSBrZXl3IDp0eXBlKSAobGV0 IG5pbCAoc2V0cSB0eXBlIChsaXN0IDp0eXBlIChjYXItc2FmZSAocHJvZzEgYm9keSAoc2V0cSBi b2R5IChjZHIgYm9keSkpKSkpKSkpICgoZXEga2V5dyA6a2V5bWFwKSAobGV0IG5pbCAoc2V0cSBr ZXltYXAgKGNhci1zYWZlIChwcm9nMSBib2R5IChzZXRxIGJvZHkgKGNkciBib2R5KSkpKSkpKSAo KGVxIGtleXcgOmludGVyYWN0aXZlKSAobGV0IG5pbCAoc2V0cSBpbnRlcmFjdGl2ZSAoY2FyLXNh ZmUgKHByb2cxIGJvZHkgKHNldHEgYm9keSAoY2RyIGJvZHkpKSkpKSkpICgoZXEga2V5dyA6dmFy aWFibGUpIChsZXQgbmlsIChzZXRxIHZhcmlhYmxlIChjYXItc2FmZSAocHJvZzEgYm9keSAoc2V0 cSBib2R5IChjZHIgYm9keSkpKSkpIChpZiAobm90IChhbmQgKHNldHEgdG1wIChjZHItc2FmZSB2 YXJpYWJsZSkpIChvciAoc3ltYm9scCB0bXApIChmdW5jdGlvbnAgdG1wKSkpKSAocHJvZ24gKHNl dHEgc2V0dGVyIChsaXN0ICdzZXRmIHZhcmlhYmxlKSkgKHNldHEgZ2V0dGVyIHZhcmlhYmxlKSkg KHNldHEgZ2V0dGVyIChjYXIgdmFyaWFibGUpKSAoc2V0cSBzZXR0ZXIgKGxpc3QgJ2Z1bmNhbGwg KGxpc3QgJ2Z1bmN0aW9uIChjZHIgdmFyaWFibGUpKSkpKSkpICgoZXEga2V5dyA6YWZ0ZXItaG9v aykgKGxldCBuaWwgKHNldHEgYWZ0ZXItaG9vayAoY2FyLXNhZmUgKHByb2cxIGJvZHkgKHNldHEg Ym9keSAoY2RyIGJvZHkpKSkpKSkpICh0IChsZXQgbmlsIChzZXRxIGV4dHJhLWtleXdvcmRzIChj b25zIGtleXcgZXh0cmEta2V5d29yZHMpKSAoc2V0cSBleHRyYS1rZXl3b3JkcyAoY29ucyAoY2Fy LXNhZmUgKHByb2cxIGJvZHkgKHNldHEgYm9keSAoY2RyIGJvZHkpKSkpIGV4dHJhLWtleXdvcmRz KSkpKSkpIChzZXRxIHByZXR0eS1uYW1lIChlYXN5LW1tb2RlLXByZXR0eS1tb2RlLW5hbWUgbW9k ZSBsaWdodGVyKSkgKHNldHEga2V5bWFwLXN5bSAoaWYgKGFuZCBrZXltYXAgKHN5bWJvbHAga2V5 bWFwKSkga2V5bWFwIChpbnRlcm4gKGNvbmNhdCBtb2RlLW5hbWUgIi1tYXAiKSkpKSAoaWYgc2V0 IG5pbCAoc2V0cSBzZXQgJyg6c2V0ICMnY3VzdG9tLXNldC1taW5vci1tb2RlKSkpIChpZiBpbml0 aWFsaXplIG5pbCAoc2V0cSBpbml0aWFsaXplICcoOmluaXRpYWxpemUgIydjdXN0b20taW5pdGlh bGl6ZS1kZWZhdWx0KSkpIChpZiB0eXBlIG5pbCAoc2V0cSB0eXBlICcoOnR5cGUgJ2Jvb2xlYW4p KSkgKGxpc3QgJ3Byb2duIChjb25kICh2YXJpYWJsZSBuaWwpICgobm90IGdsb2JhbHApIChsaXN0 ICdwcm9nbiAnOmF1dG9sb2FkLWVuZCAobGlzdCAnZGVmdmFyLWxvY2FsIG1vZGUgaW5pdC12YWx1 ZSAoY29uY2F0IChmb3JtYXQgIk5vbi1uaWwgaWYgJXMgaXMgZW5hYmxlZC5cbiIgcHJldHR5LW5h bWUpIChpbnRlcm5hbC0tZm9ybWF0LWRvY3N0cmluZy1saW5lICJVc2UgdGhlIGNvbW1hbmQgYCVz JyB0byBjaGFuZ2UgdGhpcyB2YXJpYWJsZS4iIG1vZGUpKSkpKSAodCAobGV0ICgoYmFzZS1kb2Mt c3RyaW5nIChjb25jYXQgIk5vbi1uaWwgaWYgJXMgaXMgZW5hYmxlZC5cblNlZSB0aGUgYCVzJyBj b21tYW5kXG5mb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGlzIG1pbm9yIG1vZGUuIiAoaWYgYm9keSAi XG5TZXR0aW5nIHRoaXMgdmFyaWFibGUgZGlyZWN0bHkgZG9lcyBub3QgdGFrZSBlZmZlY3Q7XG5l aXRoZXIgY3VzdG9taXplIGl0IChzZWUgdGhlIGluZm8gbm9kZSBgRWFzeSBDdXN0b21pemF0aW9u Jylcbm9yIGNhbGwgdGhlIGZ1bmN0aW9uIGAlcycuIikpKSkgKGNvbnMgJ2RlZmN1c3RvbSAoY29u cyBtb2RlIChjb25zIGluaXQtdmFsdWUgKGNvbnMgKGZvcm1hdCBiYXNlLWRvYy1zdHJpbmcgcHJl dHR5LW5hbWUgbW9kZSBtb2RlKSAoYXBwZW5kIHNldCBpbml0aWFsaXplIHR5cGUgKG5yZXZlcnNl IGV4dHJhLWtleXdvcmRzKSkpKSkpKSkpIChmdW5jYWxsIHdhcm53cmFwIChsaXN0ICdkZWZ1biBt b2RlZnVuIChjb25zICcmb3B0aW9uYWwgKGNvbnMgJ2FyZyBleHRyYS1hcmdzKSkgKGVhc3ktbW1v ZGUtLW1vZGUtZG9jc3RyaW5nIGRvYyBwcmV0dHktbmFtZSBrZXltYXAtc3ltIGdldHRlciBnbG9i YWxwKSAoaWYgaW50ZXJhY3RpdmUgKHByb2duIChpZiAoY29uc3AgaW50ZXJhY3RpdmUpIChjb25z ICdpbnRlcmFjdGl2ZSAoY29ucyAnKGxpc3QgKGlmIGN1cnJlbnQtcHJlZml4LWFyZyAocHJlZml4 LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKSAndG9nZ2xlKSkgaW50ZXJhY3RpdmUp KSAnKGludGVyYWN0aXZlIChsaXN0IChpZiBjdXJyZW50LXByZWZpeC1hcmcgKHByZWZpeC1udW1l cmljLXZhbHVlIGN1cnJlbnQtcHJlZml4LWFyZykgJ3RvZ2dsZSkpKSkpKSAoY29ucyAnbGV0IChj b25zIChsaXN0IChjb25zIGxhc3QtbWVzc2FnZSAnKChjdXJyZW50LW1lc3NhZ2UpKSkpIChjb25z IChhcHBlbmQgc2V0dGVyIChsaXN0IChjb25zICdjb25kIChjb25zIChsaXN0ICcoZXEgYXJnICd0 b2dnbGUpIChsaXN0ICdub3QgZ2V0dGVyKSkgJygoKGFuZCAobnVtYmVycCBhcmcpICg8IGFyZyAx KSkgbmlsKSAodCB0KSkpKSkpIChhcHBlbmQgKGlmIGdsb2JhbHAgKGxpc3QgKGxpc3QgJ3doZW4g Jyhib3VuZHAgJ2dsb2JhbC1taW5vci1tb2RlcykgKGxpc3QgJ3NldHEgJ2dsb2JhbC1taW5vci1t b2RlcyAoY29ucyAnZGVscSAoY29ucyAobGlzdCAncXVvdGUgbW9kZWZ1bikgJyhnbG9iYWwtbWlu b3ItbW9kZXMpKSkpIChsaXN0ICd3aGVuIGdldHRlciAoY29ucyAncHVzaCAoY29ucyAobGlzdCAn cXVvdGUgbW9kZWZ1bikgJyhnbG9iYWwtbWlub3ItbW9kZXMpKSkpKSkgKGxpc3QgKGxpc3QgJ3do ZW4gJyhib3VuZHAgJ2xvY2FsLW1pbm9yLW1vZGVzKSAobGlzdCAnc2V0cSAnbG9jYWwtbWlub3It bW9kZXMgKGNvbnMgJ2RlbHEgKGNvbnMgKGxpc3QgJ3F1b3RlIG1vZGVmdW4pICcobG9jYWwtbWlu b3ItbW9kZXMpKSkpIChsaXN0ICd3aGVuIGdldHRlciAoY29ucyAncHVzaCAoY29ucyAobGlzdCAn cXVvdGUgbW9kZWZ1bikgJyhsb2NhbC1taW5vci1tb2RlcykpKSkpKSkgYm9keSAobGlzdCAobGlz dCAncnVuLWhvb2tzIChsaXN0ICdxdW90ZSBob29rKSAobGlzdCAnaWYgZ2V0dGVyIChsaXN0ICdx dW90ZSBob29rLW9uKSAobGlzdCAncXVvdGUgaG9vay1vZmYpKSkgKGxpc3QgJ2lmICcoY2FsbGVk LWludGVyYWN0aXZlbHktcCAnYW55KSAobGlzdCAncHJvZ24gKGlmIChhbmQgZ2xvYmFscCAobm90 IHZhcmlhYmxlKSkgKGxpc3QgJ2N1c3RvbWl6ZS1tYXJrLWFzLXNldCAobGlzdCAncXVvdGUgbW9k ZSkpKSAobGlzdCAndW5sZXNzIChsaXN0ICdhbmQgJyhjdXJyZW50LW1lc3NhZ2UpIChsaXN0ICdu b3QgKGNvbnMgJ2VxdWFsIChjb25zIGxhc3QtbWVzc2FnZSAnKChjdXJyZW50LW1lc3NhZ2UpKSkp KSkgKGxpc3QgJ2xldCAobGlzdCAobGlzdCAnbG9jYWwgKGlmIGdsb2JhbHAgIiIgIiBpbiBjdXJy ZW50IGJ1ZmZlciIpKSkgKGNvbnMgJ21lc3NhZ2UgKGNvbnMgKGZvcm1hdCAiJXMgJSVzYWJsZWQl JXMiIHByZXR0eS1uYW1lKSAoY29ucyAoY29ucyAnaWYgKGNvbnMgZ2V0dGVyICcoImVuIiAiZGlz IikpKSAnKGxvY2FsKSkpKSkpKSkpIChpZiBhZnRlci1ob29rIChwcm9nbiAobGlzdCBhZnRlci1o b29rKSkpKSkpKSAnKGZvcmNlLW1vZGUtbGluZS11cGRhdGUpIGdldHRlcikpICc6YXV0b2xvYWQt ZW5kIChjb25zICdkZWZ2YXIgKGNvbnMgaG9vayAnKG5pbCkpKSAobGlzdCAndW5sZXNzIChjb25z ICdnZXQgKGNvbnMgKGxpc3QgJ3F1b3RlIGhvb2spICcoJ3ZhcmlhYmxlLWRvY3VtZW50YXRpb24p KSkgKGxpc3QgJ3B1dCAobGlzdCAncXVvdGUgaG9vaykgJyd2YXJpYWJsZS1kb2N1bWVudGF0aW9u IChmb3JtYXQgIkhvb2sgcnVuIGFmdGVyIGVudGVyaW5nIG9yIGxlYXZpbmcgYCVzJy5cbk5vIHBy b2JsZW1zIHJlc3VsdCBpZiB0aGlzIHZhcmlhYmxlIGlzIG5vdCBib3VuZC5cbmBhZGQtaG9vaycg YXV0b21hdGljYWxseSBiaW5kcyBpdC4gIChUaGlzIGlzIHRydWUgZm9yIGFsbCBob29rIHZhcmlh Ymxlcy4pIiBtb2RlZnVuKSkpIChjb25zICdwdXQgKGNvbnMgKGxpc3QgJ3F1b3RlIGhvb2spICco J2N1c3RvbS10eXBlICdob29rKSkpIChjb25zICdwdXQgKGNvbnMgKGxpc3QgJ3F1b3RlIGhvb2sp ICcoJ3N0YW5kYXJkLXZhbHVlIChsaXN0IG5pbCkpKSkgKGlmIChzeW1ib2xwIGtleW1hcCkgbmls IChsaXN0ICdkZWZ2YXIga2V5bWFwLXN5bSAoY29ucyAnbGV0IChjb25zIChsaXN0IChsaXN0ICdt IGtleW1hcCkpICcoKGNvbmQgKChrZXltYXBwIG0pIG0pICgobGlzdHAgbSkgKGVhc3ktbW1vZGUt ZGVmaW5lLWtleW1hcCBtKSkgKHQgKGVycm9yICJJbnZhbGlkIGtleW1hcCAlUyIgbSkpKSkpKSAo Zm9ybWF0ICJLZXltYXAgZm9yIGAlcycuIiBtb2RlLW5hbWUpKSkgKGxldCAoKG1vZGV2YXIgKGlm IChjb25zcCBnZXR0ZXIpIChsZXQqICgoeDM4IChjYXItc2FmZSBnZXR0ZXIpKSkgKGlmIChlcSB4 MzggJ2RlZmF1bHQtdmFsdWUpIChsZXQqICgoeDM5IChjZHItc2FmZSBnZXR0ZXIpKSkgKGlmIChj b25zcCB4MzkpIChsZXQqICgoeDQwIChjYXItc2FmZSB4MzkpKSkgKGlmIChjb25zcCB4NDApIChs ZXQqICgoeDQxIChjYXItc2FmZSB4NDApKSkgKGlmIChlcSB4NDEgJ3F1b3RlKSAobGV0KiAoKHg0 MiAoY2RyLXNhZmUgeDQwKSkpIChpZiAoY29uc3AgeDQyKSAobGV0KiAoKHg0MyAoY2FyLXNhZmUg eDQyKSkgKHg0NCAoY2RyLXNhZmUgeDQyKSkpIChpZiAobnVsbCB4NDQpIChsZXQqICgoeDQ1IChj ZHItc2FmZSB4MzkpKSkgKGlmIChudWxsIHg0NSkgKGxldCAoKHYgeDQzKSkgdikgKGxldCBuaWwg Z2V0dGVyKSkpIChsZXQgbmlsIGdldHRlcikpKSAobGV0IG5pbCBnZXR0ZXIpKSkgKGxldCBuaWwg Z2V0dGVyKSkpIChsZXQgbmlsIGdldHRlcikpKSAobGV0IG5pbCBnZXR0ZXIpKSkgKGxldCBuaWwg Z2V0dGVyKSkpIChsZXQgbmlsIGdldHRlcikpKSkgKGlmIChub3QgKHN5bWJvbHAgbW9kZXZhcikp IChpZiAob3IgbGlnaHRlciBrZXltYXApIChlcnJvciAiOmxpZ2h0ZXIgYW5kIDprZXltYXAgdW5z dXBwb3J0ZWQgd2l0aCBtb2RlIGV4cHJlc3Npb24gJVMiIGdldHRlcikpIChsaXN0ICd3aXRoLW5v LXdhcm5pbmdzIChsaXN0ICdhZGQtbWlub3ItbW9kZSAobGlzdCAncXVvdGUgbW9kZXZhcikgKGxp c3QgJ3F1b3RlIGxpZ2h0ZXIpIChpZiBrZXltYXAga2V5bWFwLXN5bSAobGlzdCAnaWYgKGxpc3Qg J2JvdW5kcCAobGlzdCAncXVvdGUga2V5bWFwLXN5bSkpIGtleW1hcC1zeW0pKSBuaWwgKGlmIChl cSBtb2RlIG1vZGVmdW4pIG5pbCAobGlzdCAncXVvdGUgbW9kZWZ1bikpKSkpKSkpCiAgKGNsb3N1 cmUgKHQpIChtb2RlIGRvYyAmcmVzdCBib2R5KSAiRGVmaW5lIGEgbmV3IG1pbm9yIG1vZGUgTU9E RS5cblRoaXMgZGVmaW5lcyB0aGUgdG9nZ2xlIGNvbW1hbmQgTU9ERSBhbmQgKGJ5IGRlZmF1bHQp IGEgY29udHJvbCB2YXJpYWJsZVxuTU9ERSAoeW91IGNhbiBvdmVycmlkZSB0aGlzIHdpdGggdGhl IDp2YXJpYWJsZSBrZXl3b3JkLCBzZWUgYmVsb3cpLlxuRE9DIGlzIHRoZSBkb2N1bWVudGF0aW9u IGZvciB0aGUgbW9kZSB0b2dnbGUgY29tbWFuZC5cblxuVGhlIGRlZmluZWQgbW9kZSBjb21tYW5k IHRha2VzIG9uZSBvcHRpb25hbCAocHJlZml4KSBhcmd1bWVudC5cbkludGVyYWN0aXZlbHkgd2l0 aCBubyBwcmVmaXggYXJndW1lbnQsIGl0IHRvZ2dsZXMgdGhlIG1vZGUuXG5BIHByZWZpeCBhcmd1 bWVudCBlbmFibGVzIHRoZSBtb2RlIGlmIHRoZSBhcmd1bWVudCBpcyBwb3NpdGl2ZSxcbmFuZCBk aXNhYmxlcyBpdCBvdGhlcndpc2UuXG5cbldoZW4gY2FsbGVkIGZyb20gTGlzcCwgdGhlIG1vZGUg Y29tbWFuZCB0b2dnbGVzIHRoZSBtb2RlIGlmIHRoZVxuYXJndW1lbnQgaXMgYHRvZ2dsZScsIGRp c2FibGVzIHRoZSBtb2RlIGlmIHRoZSBhcmd1bWVudCBpcyBhXG5ub24tcG9zaXRpdmUgaW50ZWdl ciwgYW5kIGVuYWJsZXMgdGhlIG1vZGUgb3RoZXJ3aXNlIChpbmNsdWRpbmdcbmlmIHRoZSBhcmd1 bWVudCBpcyBvbWl0dGVkIG9yIG5pbCBvciBhIHBvc2l0aXZlIGludGVnZXIpLlxuXG5JZiBET0Mg aXMgbmlsLCBnaXZlIHRoZSBtb2RlIGNvbW1hbmQgYSBiYXNpYyBkb2Mtc3RyaW5nXG5kb2N1bWVu dGluZyB3aGF0IGl0cyBhcmd1bWVudCBkb2VzLiAgSWYgdGhlIHdvcmQgXCJBUkdcIiBkb2VzIG5v dFxuYXBwZWFyIGluIERPQywgYSBwYXJhZ3JhcGggaXMgYWRkZWQgdG8gRE9DIGV4cGxhaW5pbmdc bnVzYWdlIG9mIHRoZSBtb2RlIGFyZ3VtZW50LlxuXG5CT0RZIGNvbnRhaW5zIGNvZGUgdG8gZXhl Y3V0ZSBlYWNoIHRpbWUgdGhlIG1vZGUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC5cbiAgSXQgaXMg ZXhlY3V0ZWQgYWZ0ZXIgdG9nZ2xpbmcgdGhlIG1vZGUsIGFuZCBiZWZvcmUgcnVubmluZyBNT0RF LWhvb2suXG4gIEJlZm9yZSB0aGUgYWN0dWFsIGJvZHkgY29kZSwgeW91IGNhbiB3cml0ZSBrZXl3 b3JkIGFyZ3VtZW50cywgaS5lLlxuICBhbHRlcm5hdGluZyBrZXl3b3JkcyBhbmQgdmFsdWVzLiAg SWYgeW91IHByb3ZpZGUgQk9EWSwgdGhlbiB5b3UgbXVzdFxuICBwcm92aWRlIGF0IGxlYXN0IG9u ZSBrZXl3b3JkIGFyZ3VtZW50IChlLmcuIGA6bGlnaHRlciBuaWxgKS5cbiAgVGhlIGZvbGxvd2lu ZyBzcGVjaWFsIGtleXdvcmRzIGFyZSBzdXBwb3J0ZWQgKG90aGVyIGtleXdvcmRzIGFyZSBwYXNz ZWRcbiAgdG8gYGRlZmN1c3RvbScgaWYgdGhlIG1pbm9yIG1vZGUgaXMgZ2xvYmFsKTpcblxuOmds b2JhbCBHTE9CQUxcMTFJZiBub24tbmlsIHNwZWNpZmllcyB0aGF0IHRoZSBtaW5vciBtb2RlIGlz IG5vdCBtZWFudCB0byBiZVxuXDExXDExYnVmZmVyLWxvY2FsLCBzbyBkb24ndCBtYWtlIHRoZSB2 YXJpYWJsZSBNT0RFIGJ1ZmZlci1sb2NhbC5cblwxMVwxMUJ5IGRlZmF1bHQsIHRoZSBtb2RlIGlz IGJ1ZmZlci1sb2NhbC5cbjppbml0LXZhbHVlIFZBTFwxMXRoZSBpbml0aWFsIHZhbHVlIG9mIHRo ZSBtb2RlJ3MgdmFyaWFibGUuXG5cMTFcMTFOb3RlIHRoYXQgdGhlIG1pbm9yIG1vZGUgZnVuY3Rp b24gd29uJ3QgYmUgY2FsbGVkIGJ5IHNldHRpbmdcblwxMVwxMXRoaXMgb3B0aW9uLCBzbyB0aGUg dmFsdWUgKnJlZmxlY3RzKiB0aGUgbWlub3IgbW9kZSdzIG5hdHVyYWxcblwxMVwxMWluaXRpYWwg c3RhdGUsIHJhdGhlciB0aGFuICpzZXR0aW5nKiBpdC5cblwxMVwxMUluIHRoZSB2YXN0IG1ham9y aXR5IG9mIGNhc2VzIGl0IHNob3VsZCBiZSBuaWwuXG5cMTFcMTFOb3QgdXNlZCBpZiB5b3UgYWxz byBzcGVjaWZ5IDp2YXJpYWJsZS5cbjpsaWdodGVyIFNQRUNcMTFUZXh0IGRpc3BsYXllZCBpbiB0 aGUgbW9kZSBsaW5lIHdoZW4gdGhlIG1vZGUgaXMgb24uXG46a2V5bWFwIE1BUFwxMUtleW1hcCBi b3VuZCB0byB0aGUgbW9kZSBrZXltYXAuICBEZWZhdWx0cyB0byBgTU9ERS1tYXAnLlxuICAgICAg ICAgICAgICAgIElmIG5vbi1uaWwsIGl0IHNob3VsZCBiZSBhbiB1bnF1b3RlZCB2YXJpYWJsZSBu YW1lICh3aG9zZSB2YWx1ZVxuICAgICAgICAgICAgICAgIGlzIGEga2V5bWFwKSwgb3IgYW4gZXhw cmVzc2lvbiB0aGF0IHJldHVybnMgZWl0aGVyIGEga2V5bWFwIG9yXG5cMTFcMTFhIGxpc3Qgb2Yg KEtFWSAuIEJJTkRJTkcpIHBhaXJzIHdoZXJlIEtFWSBhbmQgQklORElORyBhcmVcblwxMVwxMXN1 aXRhYmxlIGZvciBgZGVmaW5lLWtleScuICBJZiB5b3Ugc3VwcGx5IGEgS0VZTUFQIGFyZ3VtZW50 XG5cMTFcMTF0aGF0IGlzIG5vdCBhIHN5bWJvbCwgdGhpcyBtYWNybyBkZWZpbmVzIHRoZSB2YXJp YWJsZSBNT0RFLW1hcFxuXDExXDExYW5kIGdpdmVzIGl0IHRoZSB2YWx1ZSB0aGF0IEtFWU1BUCBz cGVjaWZpZXMuXG46aW50ZXJhY3RpdmUgVkFMICBXaGV0aGVyIHRoaXMgbW9kZSBzaG91bGQgYmUg YSBjb21tYW5kIG9yIG5vdC4gIFRoZSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgaXMgdG8gbWFr ZSBpdCBvbmU7IHVzZSBuaWwgdG8gYXZvaWQgdGhhdC4gIElmIFZBTCBpcyBhIGxpc3QsXG4gICAg ICAgICAgICAgICAgaXQncyBpbnRlcnByZXRlZCBhcyBhIGxpc3Qgb2YgbWFqb3IgbW9kZXMgdGhp cyBtaW5vciBtb2RlXG4gICAgICAgICAgICAgICAgaXMgdXNlZnVsIGluLlxuOnZhcmlhYmxlIFBM QUNFXDExVGhlIGxvY2F0aW9uIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSB2YXJpYWJsZSBNT0RFIHRv IHN0b3JlXG5cMTFcMTF0aGUgc3RhdGUgb2YgdGhlIG1vZGUuXDExVGhpcyBjYW4gYmUgc2ltcGx5 IGEgZGlmZmVyZW50XG5cMTFcMTFuYW1lZCB2YXJpYWJsZSwgb3IgYSBnZW5lcmFsaXplZCB2YXJp YWJsZS5cblwxMVwxMVBMQUNFIGNhbiBhbHNvIGJlIG9mIHRoZSBmb3JtIChHRVQgLiBTRVQpLCB3 aGVyZSBHRVQgaXNcblwxMVwxMWFuIGV4cHJlc3Npb24gdGhhdCByZXR1cm5zIHRoZSBjdXJyZW50 IHN0YXRlLCBhbmQgU0VUIGlzXG5cMTFcMTFhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgb25lIGFyZ3Vt ZW50LCB0aGUgbmV3IHN0YXRlLCB3aGljaCBzaG91bGRcbiAgICAgICAgICAgICAgICBiZSBhc3Np Z25lZCB0byBQTEFDRS4gIElmIHlvdSBzcGVjaWZ5IGEgOnZhcmlhYmxlLCB0aGlzIGZ1bmN0aW9u XG4gICAgICAgICAgICAgICAgZG9lcyBub3QgZGVmaW5lIGEgTU9ERSB2YXJpYWJsZSAobm9yIGFu eSBvZiB0aGUgdGVybXMgdXNlZFxuXDExXDExaW4gOnZhcmlhYmxlKS5cbjphZnRlci1ob29rICAg ICBBIHNpbmdsZSBMaXNwIGZvcm0gd2hpY2ggaXMgZXZhbHVhdGVkIGFmdGVyIHRoZSBtb2RlIGhv b2tzXG4gICAgICAgICAgICAgICAgaGF2ZSBiZWVuIHJ1bi4gIEl0IHNob3VsZCBub3QgYmUgcXVv dGVkLlxuXG5Gb3IgZXhhbXBsZSwgeW91IGNvdWxkIHdyaXRlXG4gIChkZWZpbmUtbWlub3ItbW9k ZSBmb28tbW9kZSBcIklmIGVuYWJsZWQsIGZvbyBvbiB5b3UhXCJcbiAgICA6bGlnaHRlciBcIiBG b29cIiA6cmVxdWlyZSBcXD0nZm9vIDpnbG9iYWwgdCA6Z3JvdXAgXFw9J2hhc3NsZSA6dmVyc2lv biBcIjI3LjVcIlxuICAgIC4uLkJPRFkgQ09ERS4uLilcblxuRm9yIGJhY2t3YXJkIGNvbXBhdGli aWxpdHkgd2l0aCB0aGUgRW1hY3M8MjEgY2FsbGluZyBjb252ZW50aW9uLFxudGhlIGtleXdvcmRz IGNhbiBhbHNvIGJlIHByZWNlZGVkIGJ5IHRoZSBvYnNvbGV0ZSB0cmlwbGV0XG5JTklULVZBTFVF IExJR0hURVIgS0VZTUFQLlxuXG4oZm4gTU9ERSBET0MgW0tFWVdPUkQgVkFMIC4uLiAmcmVzdCBC T0RZXSkiIChsZXQqICgobGFzdC1tZXNzYWdlIChtYWtlLXN5bWJvbCAibGFzdC1tZXNzYWdlIikp IChtb2RlLW5hbWUgKHN5bWJvbC1uYW1lIG1vZGUpKSAoaW5pdC12YWx1ZSBuaWwpIChrZXltYXAg bmlsKSAobGlnaHRlciBuaWwpIChwcmV0dHktbmFtZSBuaWwpIChnbG9iYWxwIG5pbCkgKHNldCBu aWwpIChpbml0aWFsaXplIG5pbCkgKHR5cGUgbmlsKSAoZXh0cmEtYXJncyBuaWwpIChleHRyYS1r ZXl3b3JkcyBuaWwpICh2YXJpYWJsZSBuaWwpIChzZXR0ZXIgKGxpc3QgJ3NldHEgbW9kZSkpIChn ZXR0ZXIgbW9kZSkgKG1vZGVmdW4gbW9kZSkgKGFmdGVyLWhvb2sgbmlsKSAoaG9vayAoaW50ZXJu IChjb25jYXQgbW9kZS1uYW1lICItaG9vayIpKSkgKGhvb2stb24gKGludGVybiAoY29uY2F0IG1v ZGUtbmFtZSAiLW9uLWhvb2siKSkpIChob29rLW9mZiAoaW50ZXJuIChjb25jYXQgbW9kZS1uYW1l ICItb2ZmLWhvb2siKSkpIChpbnRlcmFjdGl2ZSB0KSAod2FybndyYXAgKGlmIChvciAobnVsbCBi b2R5KSAoa2V5d29yZHAgKGNhciBib2R5KSkpICMnaWRlbnRpdHkgIycobGFtYmRhIChleHApICht YWNyb2V4cC13YXJuLWFuZC1yZXR1cm4gIlVzZSBrZXl3b3JkcyByYXRoZXIgdGhhbiBkZXByZWNh dGVkIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRvIGBkZWZpbmUtbWlub3ItbW9kZSciIGV4cCkpKSkg a2V5dyBrZXltYXAtc3ltIHRtcCkgKGlmIChrZXl3b3JkcCAoY2FyIGJvZHkpKSBuaWwgKHNldHEg aW5pdC12YWx1ZSAoY2FyLXNhZmUgKHByb2cxIGJvZHkgKHNldHEgYm9keSAoY2RyIGJvZHkpKSkp KSAoaWYgKGtleXdvcmRwIChjYXIgYm9keSkpIG5pbCAoc2V0cSBsaWdodGVyIChjYXItc2FmZSAo cHJvZzEgYm9keSAoc2V0cSBib2R5IChjZHIgYm9keSkpKSkpIChpZiAoa2V5d29yZHAgKGNhciBi b2R5KSkgbmlsIChzZXRxIGtleW1hcCAoY2FyLXNhZmUgKHByb2cxIGJvZHkgKHNldHEgYm9keSAo Y2RyIGJvZHkpKSkpKSkpKSAod2hpbGUgKGtleXdvcmRwIChzZXRxIGtleXcgKGNhciBib2R5KSkp IChzZXRxIGJvZHkgKGNkciBib2R5KSkgKGNvbmQgKChlcSBrZXl3IDppbml0LXZhbHVlKSAobGV0 IG5pbCAoc2V0cSBpbml0LXZhbHVlIChjYXItc2FmZSAocHJvZzEgYm9keSAoc2V0cSBib2R5IChj ZHIgYm9keSkpKSkpKSkgKChlcSBrZXl3IDpsaWdodGVyKSAobGV0IG5pbCAoc2V0cSBsaWdodGVy IChwdXJlY29weSAoY2FyLXNhZmUgKHByb2cxIGJvZHkgKHNldHEgYm9keSAoY2RyIGJvZHkpKSkp KSkpKSAoKGVxIGtleXcgOmdsb2JhbCkgKGxldCBuaWwgKHNldHEgZ2xvYmFscCAoY2FyLXNhZmUg KHByb2cxIGJvZHkgKHNldHEgYm9keSAoY2RyIGJvZHkpKSkpKSAoaWYgKGFuZCBnbG9iYWxwIChz eW1ib2xwIG1vZGUpKSAocHJvZ24gKHNldHEgc2V0dGVyIChsaXN0ICdzZXRxLWRlZmF1bHQgbW9k ZSkpIChzZXRxIGdldHRlciAobGlzdCAnZGVmYXVsdC12YWx1ZSAobGlzdCAncXVvdGUgbW9kZSkp KSkpKSkgKChlcSBrZXl3IDpleHRyYS1hcmdzKSAobGV0IG5pbCAoc2V0cSBleHRyYS1hcmdzIChj YXItc2FmZSAocHJvZzEgYm9keSAoc2V0cSBib2R5IChjZHIgYm9keSkpKSkpKSkgKChlcSBrZXl3 IDpzZXQpIChsZXQgbmlsIChzZXRxIHNldCAobGlzdCA6c2V0IChjYXItc2FmZSAocHJvZzEgYm9k eSAoc2V0cSBib2R5IChjZHIgYm9keSkpKSkpKSkpICgoZXEga2V5dyA6aW5pdGlhbGl6ZSkgKGxl dCBuaWwgKHNldHEgaW5pdGlhbGl6ZSAobGlzdCA6aW5pdGlhbGl6ZSAoY2FyLXNhZmUgKHByb2cx IGJvZHkgKHNldHEgYm9keSAoY2RyIGJvZHkpKSkpKSkpKSAoKGVxIGtleXcgOnR5cGUpIChsZXQg bmlsIChzZXRxIHR5cGUgKGxpc3QgOnR5cGUgKGNhci1zYWZlIChwcm9nMSBib2R5IChzZXRxIGJv ZHkgKGNkciBib2R5KSkpKSkpKSkgKChlcSBrZXl3IDprZXltYXApIChsZXQgbmlsIChzZXRxIGtl eW1hcCAoY2FyLXNhZmUgKHByb2cxIGJvZHkgKHNldHEgYm9keSAoY2RyIGJvZHkpKSkpKSkpICgo ZXEga2V5dyA6aW50ZXJhY3RpdmUpIChsZXQgbmlsIChzZXRxIGludGVyYWN0aXZlIChjYXItc2Fm ZSAocHJvZzEgYm9keSAoc2V0cSBib2R5IChjZHIgYm9keSkpKSkpKSkgKChlcSBrZXl3IDp2YXJp YWJsZSkgKGxldCBuaWwgKHNldHEgdmFyaWFibGUgKGNhci1zYWZlIChwcm9nMSBib2R5IChzZXRx IGJvZHkgKGNkciBib2R5KSkpKSkgKGlmIChub3QgKGFuZCAoc2V0cSB0bXAgKGNkci1zYWZlIHZh cmlhYmxlKSkgKG9yIChzeW1ib2xwIHRtcCkgKGZ1bmN0aW9ucCB0bXApKSkpIChwcm9nbiAoc2V0 cSBzZXR0ZXIgKGxpc3QgJ3NldGYgdmFyaWFibGUpKSAoc2V0cSBnZXR0ZXIgdmFyaWFibGUpKSAo c2V0cSBnZXR0ZXIgKGNhciB2YXJpYWJsZSkpIChzZXRxIHNldHRlciAobGlzdCAnZnVuY2FsbCAo bGlzdCAnZnVuY3Rpb24gKGNkciB2YXJpYWJsZSkpKSkpKSkgKChlcSBrZXl3IDphZnRlci1ob29r KSAobGV0IG5pbCAoc2V0cSBhZnRlci1ob29rIChjYXItc2FmZSAocHJvZzEgYm9keSAoc2V0cSBi b2R5IChjZHIgYm9keSkpKSkpKSkgKHQgKGxldCBuaWwgKHNldHEgZXh0cmEta2V5d29yZHMgKGNv bnMga2V5dyBleHRyYS1rZXl3b3JkcykpIChzZXRxIGV4dHJhLWtleXdvcmRzIChjb25zIChjYXIt c2FmZSAocHJvZzEgYm9keSAoc2V0cSBib2R5IChjZHIgYm9keSkpKSkgZXh0cmEta2V5d29yZHMp KSkpKSkgKHNldHEgcHJldHR5LW5hbWUgKGVhc3ktbW1vZGUtcHJldHR5LW1vZGUtbmFtZSBtb2Rl IGxpZ2h0ZXIpKSAoc2V0cSBrZXltYXAtc3ltIChpZiAoYW5kIGtleW1hcCAoc3ltYm9scCBrZXlt YXApKSBrZXltYXAgKGludGVybiAoY29uY2F0IG1vZGUtbmFtZSAiLW1hcCIpKSkpIChpZiBzZXQg bmlsIChzZXRxIHNldCAnKDpzZXQgIydjdXN0b20tc2V0LW1pbm9yLW1vZGUpKSkgKGlmIGluaXRp YWxpemUgbmlsIChzZXRxIGluaXRpYWxpemUgJyg6aW5pdGlhbGl6ZSAjJ2N1c3RvbS1pbml0aWFs aXplLWRlZmF1bHQpKSkgKGlmIHR5cGUgbmlsIChzZXRxIHR5cGUgJyg6dHlwZSAnYm9vbGVhbikp KSAobGlzdCAncHJvZ24gKGNvbmQgKHZhcmlhYmxlIG5pbCkgKChub3QgZ2xvYmFscCkgKGxpc3Qg J3Byb2duICc6YXV0b2xvYWQtZW5kIChsaXN0ICdkZWZ2YXItbG9jYWwgbW9kZSBpbml0LXZhbHVl IChjb25jYXQgKGZvcm1hdCAiTm9uLW5pbCBpZiAlcyBpcyBlbmFibGVkLlxuIiBwcmV0dHktbmFt ZSkgKGludGVybmFsLS1mb3JtYXQtZG9jc3RyaW5nLWxpbmUgIlVzZSB0aGUgY29tbWFuZCBgJXMn IHRvIGNoYW5nZSB0aGlzIHZhcmlhYmxlLiIgbW9kZSkpKSkpICh0IChsZXQgKChiYXNlLWRvYy1z dHJpbmcgKGNvbmNhdCAiTm9uLW5pbCBpZiAlcyBpcyBlbmFibGVkLlxuU2VlIHRoZSBgJXMnIGNv bW1hbmRcbmZvciBhIGRlc2NyaXB0aW9uIG9mIHRoaXMgbWlub3IgbW9kZS4iIChpZiBib2R5ICJc blNldHRpbmcgdGhpcyB2YXJpYWJsZSBkaXJlY3RseSBkb2VzIG5vdCB0YWtlIGVmZmVjdDtcbmVp dGhlciBjdXN0b21pemUgaXQgKHNlZSB0aGUgaW5mbyBub2RlIGBFYXN5IEN1c3RvbWl6YXRpb24n KVxub3IgY2FsbCB0aGUgZnVuY3Rpb24gYCVzJy4iKSkpKSAoY29ucyAnZGVmY3VzdG9tIChjb25z IG1vZGUgKGNvbnMgaW5pdC12YWx1ZSAoY29ucyAoZm9ybWF0IGJhc2UtZG9jLXN0cmluZyBwcmV0 dHktbmFtZSBtb2RlIG1vZGUpIChhcHBlbmQgc2V0IGluaXRpYWxpemUgdHlwZSAobnJldmVyc2Ug ZXh0cmEta2V5d29yZHMpKSkpKSkpKSkgKGZ1bmNhbGwgd2FybndyYXAgKGxpc3QgJ2RlZnVuIG1v ZGVmdW4gKGNvbnMgJyZvcHRpb25hbCAoY29ucyAnYXJnIGV4dHJhLWFyZ3MpKSAoZWFzeS1tbW9k ZS0tbW9kZS1kb2NzdHJpbmcgZG9jIHByZXR0eS1uYW1lIGtleW1hcC1zeW0gZ2V0dGVyIGdsb2Jh bHApIChpZiBpbnRlcmFjdGl2ZSAocHJvZ24gKGlmIChjb25zcCBpbnRlcmFjdGl2ZSkgKGNvbnMg J2ludGVyYWN0aXZlIChjb25zICcobGlzdCAoaWYgY3VycmVudC1wcmVmaXgtYXJnIChwcmVmaXgt bnVtZXJpYy12YWx1ZSBjdXJyZW50LXByZWZpeC1hcmcpICd0b2dnbGUpKSBpbnRlcmFjdGl2ZSkp ICcoaW50ZXJhY3RpdmUgKGxpc3QgKGlmIGN1cnJlbnQtcHJlZml4LWFyZyAocHJlZml4LW51bWVy aWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKSAndG9nZ2xlKSkpKSkpIChjb25zICdsZXQgKGNv bnMgKGxpc3QgKGNvbnMgbGFzdC1tZXNzYWdlICcoKGN1cnJlbnQtbWVzc2FnZSkpKSkgKGNvbnMg KGFwcGVuZCBzZXR0ZXIgKGxpc3QgKGNvbnMgJ2NvbmQgKGNvbnMgKGxpc3QgJyhlcSBhcmcgJ3Rv Z2dsZSkgKGxpc3QgJ25vdCBnZXR0ZXIpKSAnKCgoYW5kIChudW1iZXJwIGFyZykgKDwgYXJnIDEp KSBuaWwpICh0IHQpKSkpKSkgKGFwcGVuZCAoaWYgZ2xvYmFscCAobGlzdCAobGlzdCAnd2hlbiAn KGJvdW5kcCAnZ2xvYmFsLW1pbm9yLW1vZGVzKSAobGlzdCAnc2V0cSAnZ2xvYmFsLW1pbm9yLW1v ZGVzIChjb25zICdkZWxxIChjb25zIChsaXN0ICdxdW90ZSBtb2RlZnVuKSAnKGdsb2JhbC1taW5v ci1tb2RlcykpKSkgKGxpc3QgJ3doZW4gZ2V0dGVyIChjb25zICdwdXNoIChjb25zIChsaXN0ICdx dW90ZSBtb2RlZnVuKSAnKGdsb2JhbC1taW5vci1tb2RlcykpKSkpKSAobGlzdCAobGlzdCAnd2hl biAnKGJvdW5kcCAnbG9jYWwtbWlub3ItbW9kZXMpIChsaXN0ICdzZXRxICdsb2NhbC1taW5vci1t b2RlcyAoY29ucyAnZGVscSAoY29ucyAobGlzdCAncXVvdGUgbW9kZWZ1bikgJyhsb2NhbC1taW5v ci1tb2RlcykpKSkgKGxpc3QgJ3doZW4gZ2V0dGVyIChjb25zICdwdXNoIChjb25zIChsaXN0ICdx dW90ZSBtb2RlZnVuKSAnKGxvY2FsLW1pbm9yLW1vZGVzKSkpKSkpKSBib2R5IChsaXN0IChsaXN0 ICdydW4taG9va3MgKGxpc3QgJ3F1b3RlIGhvb2spIChsaXN0ICdpZiBnZXR0ZXIgKGxpc3QgJ3F1 b3RlIGhvb2stb24pIChsaXN0ICdxdW90ZSBob29rLW9mZikpKSAobGlzdCAnaWYgJyhjYWxsZWQt aW50ZXJhY3RpdmVseS1wICdhbnkpIChsaXN0ICdwcm9nbiAoaWYgKGFuZCBnbG9iYWxwIChub3Qg dmFyaWFibGUpKSAobGlzdCAnY3VzdG9taXplLW1hcmstYXMtc2V0IChsaXN0ICdxdW90ZSBtb2Rl KSkpIChsaXN0ICd1bmxlc3MgKGxpc3QgJ2FuZCAnKGN1cnJlbnQtbWVzc2FnZSkgKGxpc3QgJ25v dCAoY29ucyAnZXF1YWwgKGNvbnMgbGFzdC1tZXNzYWdlICcoKGN1cnJlbnQtbWVzc2FnZSkpKSkp KSAobGlzdCAnbGV0IChsaXN0IChsaXN0ICdsb2NhbCAoaWYgZ2xvYmFscCAiIiAiIGluIGN1cnJl bnQgYnVmZmVyIikpKSAoY29ucyAnbWVzc2FnZSAoY29ucyAoZm9ybWF0ICIlcyAlJXNhYmxlZCUl cyIgcHJldHR5LW5hbWUpIChjb25zIChjb25zICdpZiAoY29ucyBnZXR0ZXIgJygiZW4iICJkaXMi KSkpICcobG9jYWwpKSkpKSkpKSkgKGlmIGFmdGVyLWhvb2sgKHByb2duIChsaXN0IGFmdGVyLWhv b2spKSkpKSkpICcoZm9yY2UtbW9kZS1saW5lLXVwZGF0ZSkgZ2V0dGVyKSkgJzphdXRvbG9hZC1l bmQgKGNvbnMgJ2RlZnZhciAoY29ucyBob29rICcobmlsKSkpIChsaXN0ICd1bmxlc3MgKGNvbnMg J2dldCAoY29ucyAobGlzdCAncXVvdGUgaG9vaykgJygndmFyaWFibGUtZG9jdW1lbnRhdGlvbikp KSAobGlzdCAncHV0IChsaXN0ICdxdW90ZSBob29rKSAnJ3ZhcmlhYmxlLWRvY3VtZW50YXRpb24g KGZvcm1hdCAiSG9vayBydW4gYWZ0ZXIgZW50ZXJpbmcgb3IgbGVhdmluZyBgJXMnLlxuTm8gcHJv YmxlbXMgcmVzdWx0IGlmIHRoaXMgdmFyaWFibGUgaXMgbm90IGJvdW5kLlxuYGFkZC1ob29rJyBh dXRvbWF0aWNhbGx5IGJpbmRzIGl0LiAgKFRoaXMgaXMgdHJ1ZSBmb3IgYWxsIGhvb2sgdmFyaWFi bGVzLikiIG1vZGVmdW4pKSkgKGNvbnMgJ3B1dCAoY29ucyAobGlzdCAncXVvdGUgaG9vaykgJygn Y3VzdG9tLXR5cGUgJ2hvb2spKSkgKGNvbnMgJ3B1dCAoY29ucyAobGlzdCAncXVvdGUgaG9vaykg Jygnc3RhbmRhcmQtdmFsdWUgKGxpc3QgbmlsKSkpKSAoaWYgKHN5bWJvbHAga2V5bWFwKSBuaWwg KGxpc3QgJ2RlZnZhciBrZXltYXAtc3ltIChjb25zICdsZXQgKGNvbnMgKGxpc3QgKGxpc3QgJ20g a2V5bWFwKSkgJygoY29uZCAoKGtleW1hcHAgbSkgbSkgKChsaXN0cCBtKSAoZWFzeS1tbW9kZS1k ZWZpbmUta2V5bWFwIG0pKSAodCAoZXJyb3IgIkludmFsaWQga2V5bWFwICVTIiBtKSkpKSkpIChm b3JtYXQgIktleW1hcCBmb3IgYCVzJy4iIG1vZGUtbmFtZSkpKSAobGV0ICgobW9kZXZhciAoaWYg KGNvbnNwIGdldHRlcikgKGxldCogKCh4MzggKGNhci1zYWZlIGdldHRlcikpKSAoaWYgKGVxIHgz OCAnZGVmYXVsdC12YWx1ZSkgKGxldCogKCh4MzkgKGNkci1zYWZlIGdldHRlcikpKSAoaWYgKGNv bnNwIHgzOSkgKGxldCogKCh4NDAgKGNhci1zYWZlIHgzOSkpKSAoaWYgKGNvbnNwIHg0MCkgKGxl dCogKCh4NDEgKGNhci1zYWZlIHg0MCkpKSAoaWYgKGVxIHg0MSAncXVvdGUpIChsZXQqICgoeDQy IChjZHItc2FmZSB4NDApKSkgKGlmIChjb25zcCB4NDIpIChsZXQqICgoeDQzIChjYXItc2FmZSB4 NDIpKSAoeDQ0IChjZHItc2FmZSB4NDIpKSkgKGlmIChudWxsIHg0NCkgKGxldCogKCh4NDUgKGNk ci1zYWZlIHgzOSkpKSAoaWYgKG51bGwgeDQ1KSAobGV0ICgodiB4NDMpKSB2KSAobGV0IG5pbCBn ZXR0ZXIpKSkgKGxldCBuaWwgZ2V0dGVyKSkpIChsZXQgbmlsIGdldHRlcikpKSAobGV0IG5pbCBn ZXR0ZXIpKSkgKGxldCBuaWwgZ2V0dGVyKSkpIChsZXQgbmlsIGdldHRlcikpKSAobGV0IG5pbCBn ZXR0ZXIpKSkgKGxldCBuaWwgZ2V0dGVyKSkpKSAoaWYgKG5vdCAoc3ltYm9scCBtb2RldmFyKSkg KGlmIChvciBsaWdodGVyIGtleW1hcCkgKGVycm9yICI6bGlnaHRlciBhbmQgOmtleW1hcCB1bnN1 cHBvcnRlZCB3aXRoIG1vZGUgZXhwcmVzc2lvbiAlUyIgZ2V0dGVyKSkgKGxpc3QgJ3dpdGgtbm8t d2FybmluZ3MgKGxpc3QgJ2FkZC1taW5vci1tb2RlIChsaXN0ICdxdW90ZSBtb2RldmFyKSAobGlz dCAncXVvdGUgbGlnaHRlcikgKGlmIGtleW1hcCBrZXltYXAtc3ltIChsaXN0ICdpZiAobGlzdCAn Ym91bmRwIChsaXN0ICdxdW90ZSBrZXltYXAtc3ltKSkga2V5bWFwLXN5bSkpIG5pbCAoaWYgKGVx IG1vZGUgbW9kZWZ1bikgbmlsIChsaXN0ICdxdW90ZSBtb2RlZnVuKSkpKSkpKSkpKGF1dG8tc2F2 ZS12aXNpdGVkLW1vZGUgIlRvZ2dsZSBhdXRvbWF0aWMgc2F2aW5nIHRvIGZpbGUtdmlzaXRpbmcg YnVmZmVycyBvbiBvciBvZmYuXG5cblVubGlrZSBgYXV0by1zYXZlLW1vZGUnLCB0aGlzIG1vZGUg d2lsbCBhdXRvLXNhdmUgYnVmZmVyIGNvbnRlbnRzXG50byB0aGUgdmlzaXRlZCBmaWxlcyBkaXJl Y3RseSBhbmQgd2lsbCBhbHNvIHJ1biBhbGwgc2F2ZS1yZWxhdGVkXG5ob29rcy4gIFNlZSBJbmZv IG5vZGUgYFNhdmluZycgZm9yIGRldGFpbHMgb2YgdGhlIHNhdmUgcHJvY2Vzcy5cblxuWW91IGNh biBhbHNvIHNldCB0aGUgYnVmZmVyLWxvY2FsIHZhbHVlIG9mIHRoZSB2YXJpYWJsZVxuYGF1dG8t c2F2ZS12aXNpdGVkLW1vZGUnIHRvIG5pbC4gIEEgYnVmZmVyIHdoZXJlIHRoZSBidWZmZXItbG9j YWxcbnZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgbmlsIGlzIGlnbm9yZWQgZm9yIHRoZSBwdXJw b3NlIG9mXG5gYXV0by1zYXZlLXZpc2l0ZWQtbW9kZScsIGV2ZW4gaWYgYGF1dG8tc2F2ZS12aXNp dGVkLW1vZGUnIGlzXG5lbmFibGVkLiIgOmdyb3VwICdhdXRvLXNhdmUgOmdsb2JhbCB0ICh3aGVu IGF1dG8tc2F2ZS0tdGltZXIgKGNhbmNlbC10aW1lciBhdXRvLXNhdmUtLXRpbWVyKSkgKHNldHEg YXV0by1zYXZlLS10aW1lciAod2hlbiBhdXRvLXNhdmUtdmlzaXRlZC1tb2RlIChydW4td2l0aC1p ZGxlLXRpbWVyIGF1dG8tc2F2ZS12aXNpdGVkLWludGVydmFsIDpyZXBlYXQgIydzYXZlLXNvbWUt YnVmZmVycyA6bm8tcHJvbXB0IChsYW1iZGEgbmlsIChhbmQgYnVmZmVyLWZpbGUtbmFtZSBhdXRv LXNhdmUtdmlzaXRlZC1tb2RlIChub3QgKGFuZCBidWZmZXItYXV0by1zYXZlLWZpbGUtbmFtZSBh dXRvLXNhdmUtdmlzaXRlZC1maWxlLW5hbWUpKSkpKSkpKQogIChkZWZpbmUtbWlub3ItbW9kZSBh dXRvLXNhdmUtdmlzaXRlZC1tb2RlICJUb2dnbGUgYXV0b21hdGljIHNhdmluZyB0byBmaWxlLXZp c2l0aW5nIGJ1ZmZlcnMgb24gb3Igb2ZmLlxuXG5Vbmxpa2UgYGF1dG8tc2F2ZS1tb2RlJywgdGhp cyBtb2RlIHdpbGwgYXV0by1zYXZlIGJ1ZmZlciBjb250ZW50c1xudG8gdGhlIHZpc2l0ZWQgZmls ZXMgZGlyZWN0bHkgYW5kIHdpbGwgYWxzbyBydW4gYWxsIHNhdmUtcmVsYXRlZFxuaG9va3MuICBT ZWUgSW5mbyBub2RlIGBTYXZpbmcnIGZvciBkZXRhaWxzIG9mIHRoZSBzYXZlIHByb2Nlc3MuXG5c bllvdSBjYW4gYWxzbyBzZXQgdGhlIGJ1ZmZlci1sb2NhbCB2YWx1ZSBvZiB0aGUgdmFyaWFibGVc bmBhdXRvLXNhdmUtdmlzaXRlZC1tb2RlJyB0byBuaWwuICBBIGJ1ZmZlciB3aGVyZSB0aGUgYnVm ZmVyLWxvY2FsXG52YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIGlzIG5pbCBpcyBpZ25vcmVkIGZvciB0 aGUgcHVycG9zZSBvZlxuYGF1dG8tc2F2ZS12aXNpdGVkLW1vZGUnLCBldmVuIGlmIGBhdXRvLXNh dmUtdmlzaXRlZC1tb2RlJyBpc1xuZW5hYmxlZC4iIDpncm91cCAnYXV0by1zYXZlIDpnbG9iYWwg dCAod2hlbiBhdXRvLXNhdmUtLXRpbWVyIChjYW5jZWwtdGltZXIgYXV0by1zYXZlLS10aW1lcikp IChzZXRxIGF1dG8tc2F2ZS0tdGltZXIgKHdoZW4gYXV0by1zYXZlLXZpc2l0ZWQtbW9kZSAocnVu LXdpdGgtaWRsZS10aW1lciBhdXRvLXNhdmUtdmlzaXRlZC1pbnRlcnZhbCA6cmVwZWF0ICMnc2F2 ZS1zb21lLWJ1ZmZlcnMgOm5vLXByb21wdCAobGFtYmRhIG5pbCAoYW5kIGJ1ZmZlci1maWxlLW5h bWUgYXV0by1zYXZlLXZpc2l0ZWQtbW9kZSAobm90IChhbmQgYnVmZmVyLWF1dG8tc2F2ZS1maWxl LW5hbWUgYXV0by1zYXZlLXZpc2l0ZWQtZmlsZS1uYW1lKSkpKSkpKSkKICBldmFsLWJ1ZmZlcigj PGJ1ZmZlciAgKmxvYWQqPiBuaWwgIi9ob21lL2VsaXovZ2l0L2VtYWNzL25hdGl2ZS1jb21wL2xp c3AvZmlsZXMuZWwiIG5pbCB0KQogIChpZiBldmFsLWZ1bmN0aW9uIChmdW5jYWxsIGV2YWwtZnVu Y3Rpb24gYnVmZmVyIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkpIChldmFsLWJ1ZmZlciBi dWZmZXIgbmlsIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkgbmlsIHQpKQogIChsZXQgKChy ZWFkLXN5bWJvbC1zaG9ydGhhbmRzIHNob3J0aGFuZHMpKSAoaWYgZXZhbC1mdW5jdGlvbiAoZnVu Y2FsbCBldmFsLWZ1bmN0aW9uIGJ1ZmZlciAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpKSAo ZXZhbC1idWZmZXIgYnVmZmVyIG5pbCAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpIG5pbCB0 KSkpCiAgKGxldCAoKGxvYWQtdHJ1ZS1maWxlLW5hbWUgZnVsbG5hbWUpIChsb2FkLWZpbGUtbmFt ZSBmdWxsbmFtZSkgKHNldC1hdXRvLWNvZGluZy1mb3ItbG9hZCB0KSAoaW5oaWJpdC1maWxlLW5h bWUtb3BlcmF0aW9uIG5pbCkgc2hvcnRoYW5kcykgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVy IChzZXQtYnVmZmVyLW11bHRpYnl0ZSB0KSAobGV0IChkZWFjdGl2YXRlLW1hcmspIChpbnNlcnQt ZmlsZS1jb250ZW50cyBmdWxsbmFtZSkpIChzZXRxIHNob3J0aGFuZHMgKGFuZCBoYWNrLXJlYWQt c3ltYm9sLXNob3J0aGFuZHMtZnVuY3Rpb24gKGZ1bmNhbGwgaGFjay1yZWFkLXN5bWJvbC1zaG9y dGhhbmRzLWZ1bmN0aW9uKSkpIChpZiAoYW5kIGVuYWJsZS1tdWx0aWJ5dGUtY2hhcmFjdGVycyAo b3IgKGVxIChjb2Rpbmctc3lzdGVtLXR5cGUgbGFzdC1jb2Rpbmctc3lzdGVtLXVzZWQpICdyYXct dGV4dCkpKSAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgbmlsKSkgKHNldC1idWZmZXItbW9kaWZpZWQt cCBuaWwpKSAobGV0ICgocmVhZC1zeW1ib2wtc2hvcnRoYW5kcyBzaG9ydGhhbmRzKSkgKGlmIGV2 YWwtZnVuY3Rpb24gKGZ1bmNhbGwgZXZhbC1mdW5jdGlvbiBidWZmZXIgKGlmIGR1bXAtbW9kZSBm aWxlIGZ1bGxuYW1lKSkgKGV2YWwtYnVmZmVyIGJ1ZmZlciBuaWwgKGlmIGR1bXAtbW9kZSBmaWxl IGZ1bGxuYW1lKSBuaWwgdCkpKSkKICAodW53aW5kLXByb3RlY3QgKGxldCAoKGxvYWQtdHJ1ZS1m aWxlLW5hbWUgZnVsbG5hbWUpIChsb2FkLWZpbGUtbmFtZSBmdWxsbmFtZSkgKHNldC1hdXRvLWNv ZGluZy1mb3ItbG9hZCB0KSAoaW5oaWJpdC1maWxlLW5hbWUtb3BlcmF0aW9uIG5pbCkgc2hvcnRo YW5kcykgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyIChzZXQtYnVmZmVyLW11bHRpYnl0ZSB0 KSAobGV0IChkZWFjdGl2YXRlLW1hcmspIChpbnNlcnQtZmlsZS1jb250ZW50cyBmdWxsbmFtZSkp IChzZXRxIHNob3J0aGFuZHMgKGFuZCBoYWNrLXJlYWQtc3ltYm9sLXNob3J0aGFuZHMtZnVuY3Rp b24gKGZ1bmNhbGwgaGFjay1yZWFkLXN5bWJvbC1zaG9ydGhhbmRzLWZ1bmN0aW9uKSkpIChpZiAo YW5kIGVuYWJsZS1tdWx0aWJ5dGUtY2hhcmFjdGVycyAob3IgKGVxIChjb2Rpbmctc3lzdGVtLXR5 cGUgbGFzdC1jb2Rpbmctc3lzdGVtLXVzZWQpICdyYXctdGV4dCkpKSAoc2V0LWJ1ZmZlci1tdWx0 aWJ5dGUgbmlsKSkgKHNldC1idWZmZXItbW9kaWZpZWQtcCBuaWwpKSAobGV0ICgocmVhZC1zeW1i b2wtc2hvcnRoYW5kcyBzaG9ydGhhbmRzKSkgKGlmIGV2YWwtZnVuY3Rpb24gKGZ1bmNhbGwgZXZh bC1mdW5jdGlvbiBidWZmZXIgKGlmIGR1bXAtbW9kZSBmaWxlIGZ1bGxuYW1lKSkgKGV2YWwtYnVm ZmVyIGJ1ZmZlciBuaWwgKGlmIGR1bXAtbW9kZSBmaWxlIGZ1bGxuYW1lKSBuaWwgdCkpKSkgKGxl dCAoa2lsbC1idWZmZXItaG9vayBraWxsLWJ1ZmZlci1xdWVyeS1mdW5jdGlvbnMpIChraWxsLWJ1 ZmZlciBidWZmZXIpKSkKICAobGV0ICgoYnVmZmVyIChnZW5lcmF0ZS1uZXctYnVmZmVyICIgKmxv YWQqIikpIChsb2FkLWluLXByb2dyZXNzIHQpIChzb3VyY2UgKHN0cmluZy1zdWZmaXgtcCAiLmVs IiBmdWxsbmFtZSkpKSAodW5sZXNzIG5vbWVzc2FnZSAoaWYgc291cmNlIChtZXNzYWdlICJMb2Fk aW5nICVzIChzb3VyY2UpLi4uIiBmaWxlKSAobWVzc2FnZSAiTG9hZGluZyAlcy4uLiIgZmlsZSkp KSAod2hlbiBwdXJpZnktZmxhZyAocHVzaCAocHVyZWNvcHkgZmlsZSkgcHJlbG9hZGVkLWZpbGUt bGlzdCkpICh1bndpbmQtcHJvdGVjdCAobGV0ICgobG9hZC10cnVlLWZpbGUtbmFtZSBmdWxsbmFt ZSkgKGxvYWQtZmlsZS1uYW1lIGZ1bGxuYW1lKSAoc2V0LWF1dG8tY29kaW5nLWZvci1sb2FkIHQp IChpbmhpYml0LWZpbGUtbmFtZS1vcGVyYXRpb24gbmlsKSBzaG9ydGhhbmRzKSAod2l0aC1jdXJy ZW50LWJ1ZmZlciBidWZmZXIgKHNldC1idWZmZXItbXVsdGlieXRlIHQpIChsZXQgKGRlYWN0aXZh dGUtbWFyaykgKGluc2VydC1maWxlLWNvbnRlbnRzIGZ1bGxuYW1lKSkgKHNldHEgc2hvcnRoYW5k cyAoYW5kIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRoYW5kcy1mdW5jdGlvbiAoZnVuY2FsbCBoYWNr LXJlYWQtc3ltYm9sLXNob3J0aGFuZHMtZnVuY3Rpb24pKSkgKGlmIChhbmQgZW5hYmxlLW11bHRp Ynl0ZS1jaGFyYWN0ZXJzIChvciAoZXEgKGNvZGluZy1zeXN0ZW0tdHlwZSBsYXN0LWNvZGluZy1z eXN0ZW0tdXNlZCkgJ3Jhdy10ZXh0KSkpIChzZXQtYnVmZmVyLW11bHRpYnl0ZSBuaWwpKSAoc2V0 LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCkpIChsZXQgKChyZWFkLXN5bWJvbC1zaG9ydGhhbmRzIHNo b3J0aGFuZHMpKSAoaWYgZXZhbC1mdW5jdGlvbiAoZnVuY2FsbCBldmFsLWZ1bmN0aW9uIGJ1ZmZl ciAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpKSAoZXZhbC1idWZmZXIgYnVmZmVyIG5pbCAo aWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpIG5pbCB0KSkpKSAobGV0IChraWxsLWJ1ZmZlci1o b29rIGtpbGwtU3ltYm9sJ3MgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyB2b2lkOiBpZi1sZXQKYnVm ZmVyLXF1ZXJ5LWZ1bmN0aW9ucykgKGtpbGwtYnVmZmVyIGJ1ZmZlcikpKSAoZG8tYWZ0ZXItbG9h ZC1ldmFsdWF0aW9uIGZ1bGxuYW1lKSAodW5sZXNzIChvciBub21lc3NhZ2Ugbm9uaW50ZXJhY3Rp dmUpIChpZiBzb3VyY2UgKG1lc3NhZ2UgIkxvYWRpbmcgJXMgKHNvdXJjZSkuLi5kb25lIiBmaWxl KSAobWVzc2FnZSAiTG9hZGluZyAlcy4uLmRvbmUiIGZpbGUpKSkgdCkKICAoaWYgKG51bGwgKGZp bGUtcmVhZGFibGUtcCBmdWxsbmFtZSkpIChhbmQgKG51bGwgbm9lcnJvcikgKHNpZ25hbCAnZmls ZS1lcnJvciAobGlzdCAiQ2Fubm90IG9wZW4gbG9hZCBmaWxlIiBmaWxlKSkpIChsZXQgKChidWZm ZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIgIiAqbG9hZCoiKSkgKGxvYWQtaW4tcHJvZ3Jlc3MgdCkg KHNvdXJjZSAoc3RyaW5nLXN1ZmZpeC1wICIuZWwiIGZ1bGxuYW1lKSkpICh1bmxlc3Mgbm9tZXNz YWdlIChpZiBzb3VyY2UgKG1lc3NhZ2UgIkxvYWRpbmcgJXMgKHNvdXJjZSkuLi4iIGZpbGUpICht ZXNzYWdlICJMb2FkaW5nICVzLi4uIiBmaWxlKSkpICh3aGVuIHB1cmlmeS1mbGFnIChwdXNoIChw dXJlY29weSBmaWxlKSBwcmVsb2FkZWQtZmlsZS1saXN0KSkgKHVud2luZC1wcm90ZWN0IChsZXQg KChsb2FkLXRydWUtZmlsZS1uYW1lIGZ1bGxuYW1lKSAobG9hZC1maWxlLW5hbWUgZnVsbG5hbWUp IChzZXQtYXV0by1jb2RpbmctZm9yLWxvYWQgdCkgKGluaGliaXQtZmlsZS1uYW1lLW9wZXJhdGlv biBuaWwpIHNob3J0aGFuZHMpICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAoc2V0LWJ1ZmZl ci1tdWx0aWJ5dGUgdCkgKGxldCAoZGVhY3RpdmF0ZS1tYXJrKSAoaW5zZXJ0LWZpbGUtY29udGVu dHMgZnVsbG5hbWUpKSAoc2V0cSBzaG9ydGhhbmRzIChhbmQgaGFjay1yZWFkLXN5bWJvbC1zaG9y dGhhbmRzLWZ1bmN0aW9uIChmdW5jYWxsIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRoYW5kcy1mdW5j dGlvbikpKSAoaWYgKGFuZCBlbmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMgKG9yIChlcSAoY29k aW5nLXN5c3RlbS10eXBlIGxhc3QtY29kaW5nLXN5c3RlbS11c2VkKSAncmF3LXRleHQpKSkgKHNl dC1idWZmZXItbXVsdGlieXRlIG5pbCkpIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKSkgKGxl dCAoKHJlYWQtc3ltYm9sLXNob3J0aGFuZHMgc2hvcnRoYW5kcykpIChpZiBldmFsLWZ1bmN0aW9u IChmdW5jYWxsIGV2YWwtZnVuY3Rpb24gYnVmZmVyIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFt ZSkpIChldmFsLWJ1ZmZlciBidWZmZXIgbmlsIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkg bmlsIHQpKSkpIChsZXQgKGtpbGwtYnVmZmVyLWhvb2sga2lsbC1idWZmZXItcXVlcnktZnVuY3Rp b25zKSAoa2lsbC1idWZmZXIgYnVmZmVyKSkpIChkby1hZnRlci1sb2FkLWV2YWx1YXRpb24gZnVs bG5hbWUpICh1bmxlc3MgKG9yIG5vbWVzc2FnZSBub25pbnRlcmFjdGl2ZSkgKGlmIHNvdXJjZSAo bWVzc2FnZSAiTG9hZGluZyAlcyAoc291cmNlKS4uLmRvbmUiIGZpbGUpIChtZXNzYWdlICJMb2Fk aW5nICVzLi4uZG9uZSIgZmlsZSkpKSB0KSkKICBsb2FkLXdpdGgtY29kZS1jb252ZXJzaW9uKCIv aG9tZS9lbGl6L2dpdC9lbWFjcy9uYXRpdmUtY29tcC9saXNwL2ZpbGVzLmVsIiAiL2hvbWUvZWxp ei9naXQvZW1hY3MvbmF0aXZlLWNvbXAvbGlzcC9maWxlcy5lbCIgbmlsIG5pbCkKICBsb2FkKCJm aWxlcyIpCiAgbG9hZCgibG9hZHVwLmVsIikKTWFrZWZpbGU6OTIzOiByZWNpcGUgZm9yIHRhcmdl dCAnYm9vdHN0cmFwLWVtYWNzLnBkbXAnIGZhaWxlZAptYWtlWzFdOiAqKiogW2Jvb3RzdHJhcC1l bWFjcy5wZG1wXSBFcnJvciAyNTUKbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgJy9ob21lL2Vs aXovZ2l0L2VtYWNzL25hdGl2ZS1jb21wL3NyYycKTWFrZWZpbGU6NDY5OiByZWNpcGUgZm9yIHRh cmdldCAnc3JjJyBmYWlsZWQKbWFrZTogKioqIFtzcmNdIEVycm9yIDIK --=-=-=-- From unknown Sun Jun 22 04:02:51 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55194: 29.0.50; Current master fails to bootstrap in the native-compilation configuration Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Apr 2022 14:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55194 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: Stefan Monnier , 55194@debbugs.gnu.org Received: via spool by 55194-submit@debbugs.gnu.org id=B55194.165132886429791 (code B ref 55194); Sat, 30 Apr 2022 14:28:02 +0000 Received: (at 55194) by debbugs.gnu.org; 30 Apr 2022 14:27:44 +0000 Received: from localhost ([127.0.0.1]:58793 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nko4V-0007kR-J2 for submit@debbugs.gnu.org; Sat, 30 Apr 2022 10:27:43 -0400 Received: from quimby.gnus.org ([95.216.78.240]:48718) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nko4F-0007jh-Bl for 55194@debbugs.gnu.org; Sat, 30 Apr 2022 10:27:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=YljRtiO6yCL6i4UkfPrJCOkaP/qm8DeG0XvI7Wlop+M=; b=V9Aiqc8jKjKkBZ4zk7igW2Tg9E FaCBSeCb9Y6T02q3Z8dKRDfyCB0H9bKnzIHnCVpF5JIMzXqD8QLLj4FPWVKvNIZicXoc1iKfnoI1l 1KCYdZmftR6QPXE1hEvQPX/ypdayt1ABw73YwPfzkczW+m18fzUOnAXygnx1lMhlpWXc=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nko44-0000UR-VP; Sat, 30 Apr 2022 16:27:19 +0200 From: Lars Ingebrigtsen References: Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEWqmqSOSFhbNET/ //9e1sLLAAAAAWJLR0QDEQxM8gAAAAd0SU1FB+YEHg4NHZW5680AAAGJSURBVCjPRZIxT/MwEIaP DBV06lJEMzHQofyLdkAoUxU1lpKJoY0S/woaQQemEhGLL1OEHCt+f+V3tgK9xXp873u27o7myV9s SeIvuhHkBT5gAOHAwmZwlDGEGCZOZB87KjPYHEZ6KIS77iX6gGVsgCkejRAMucsUV+hNR6lBBrWh leTSU77/Z48U1tE9zVMFDEQ38aSjRRZ5eGpZNhdc7m1GQcywFJGHzYlhlUQGb/e0Vk6WTH3mE3gZ gejYbNhzcPCwOrpqS/Z87+QQOwh3N6b5WqaB+87tfqGar4ckSIcXCnWGnd7fVpU905WeRrgz5n1d vlJoJ5G9jtV6g1duVST1c9CImmULpNyRujn4vqGFRfWeyxFwqFUizNm3t0cM2Xho0fdKJAm2tPeZ U1wq71FW91XuPSVnNKqKDwfS9KaqS9Ge3Xw0UCknYJADUNel3W+psHDgPDsquJ8SPzWPbjaC4Zm2 3ShrzTh6idyeWCZ/l8L8SFf6oPG7I5wZMI7bPXpZJE0zusR/q00b6GxEIYUAAAAldEVYdGRhdGU6 Y3JlYXRlADIwMjItMDQtMzBUMTQ6MTM6MjkrMDA6MDA4jFSZAAAAJXRFWHRkYXRlOm1vZGlmeQAy MDIyLTA0LTMwVDE0OjEzOjI5KzAwOjAwSdHsJQAAAABJRU5ErkJggg== X-Now-Playing: Talking Heads's _More Songs About Buildings and Food_: "Warning Sign" Date: Sat, 30 Apr 2022 16:27:14 +0200 In-Reply-To: (Eli Zaretskii's message of "Sat, 30 Apr 2022 09:27:16 -0400") Message-ID: <87tuaa1wal.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii writes: > As Subject says: I cannot bootstrap the current master configure with > native-compilation on GNU/Linux. The last part of the build before > the failure is attached; it seems to have something to do [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: > As Subject says: I cannot bootstrap the current master configure with > native-compilation on GNU/Linux. The last part of the build before > the failure is attached; it seems to have something to do with if-let > called in files.el, although that code is very old, and if-let is an > autoloaded macro. Could this have something to do with the latest > changes regarding oclosure etc.? No, I think it's just the usual "don't load subr-x during bootstrap" problem. I've now rewritten the offending function. > P.S. Why do we call macros from subr-x, which is not preloaded, in > files.el, which _is_ preloaded? I think that's fine, so long as the subr-x isn't loaded during bootstrap. If I remember correctly. However, I think it's high time that we put the if-let family of macros into subr. However, that doesn't seem to be trivial -- I tried now and that broke bootstrap, too. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Sat Apr 30 10:27:37 2022 Received: (at control) by debbugs.gnu.org; 30 Apr 2022 14:27:37 +0000 Received: from localhost ([127.0.0.1]:58791 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nko4P-0007k9-DH for submit@debbugs.gnu.org; Sat, 30 Apr 2022 10:27:37 -0400 Received: from quimby.gnus.org ([95.216.78.240]:48732) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nko4O-0007jx-5K for control@debbugs.gnu.org; Sat, 30 Apr 2022 10:27:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=+6Zsxqno/aA7nZaC9C8LKfKb1LBDwbM13/HSk3i5yss=; b=jVDHx1KXvYr7NXXD9NntOG8TmI bHNli+36fh9opAjCGkCk89409XNg541lgiRxypJFsEh3/LbFcGKNsZ2AKQeOap7oD3VEsZFMoR/az /2HjksTuJrw8n5O9DL0dazTheX+36rhwpK2TXhEpuLq9jy7w2/LA9WLzkaNEu4bXb6Zk=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nko4G-0000VF-Ep for control@debbugs.gnu.org; Sat, 30 Apr 2022 16:27:30 +0200 Date: Sat, 30 Apr 2022 16:27:27 +0200 Message-Id: <87sfpu1wa8.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #55194 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: close 55194 29.1 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) close 55194 29.1 quit From unknown Sun Jun 22 04:02:51 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55194: 29.0.50; Current master fails to bootstrap in the native-compilation configuration Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Apr 2022 14:47:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55194 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: Stefan Monnier , 55194@debbugs.gnu.org Received: via spool by 55194-submit@debbugs.gnu.org id=B55194.16513300137467 (code B ref 55194); Sat, 30 Apr 2022 14:47:01 +0000 Received: (at 55194) by debbugs.gnu.org; 30 Apr 2022 14:46:53 +0000 Received: from localhost ([127.0.0.1]:58801 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nkoN3-0001wN-EQ for submit@debbugs.gnu.org; Sat, 30 Apr 2022 10:46:53 -0400 Received: from quimby.gnus.org ([95.216.78.240]:48974) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nkoN1-0001wA-Uj for 55194@debbugs.gnu.org; Sat, 30 Apr 2022 10:46:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=gswF90t/CHIIkKY0/Rar9kQr4neO2+uFQXAC3V/jM0U=; b=EpwEvsP0T5atZW//Kxsi5xoCiB U/HYY5lyLOo+k2J9Hm9sm9SAaYVKINSRW/VJHTTsnuRJ5hZfuj8bDAmG1gA8aawBapsWBPJ3HBlDB 6mQi/2SgCcwsnJKFF4Yy5bnQG73VHztKRamEuJbfncqOZuNmXDMe1R+nz0xPeZiDYOY4=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nkoMr-0000i6-Jj; Sat, 30 Apr 2022 16:46:43 +0200 From: Lars Ingebrigtsen References: <87tuaa1wal.fsf@gnus.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEWqmqSOSFhbNET/ //9e1sLLAAAAAWJLR0QDEQxM8gAAAAd0SU1FB+YEHg4NHZW5680AAAGJSURBVCjPRZIxT/MwEIaP DBV06lJEMzHQofyLdkAoUxU1lpKJoY0S/woaQQemEhGLL1OEHCt+f+V3tgK9xXp873u27o7myV9s SeIvuhHkBT5gAOHAwmZwlDGEGCZOZB87KjPYHEZ6KIS77iX6gGVsgCkejRAMucsUV+hNR6lBBrWh leTSU77/Z48U1tE9zVMFDEQ38aSjRRZ5eGpZNhdc7m1GQcywFJGHzYlhlUQGb/e0Vk6WTH3mE3gZ gejYbNhzcPCwOrpqS/Z87+QQOwh3N6b5WqaB+87tfqGar4ckSIcXCnWGnd7fVpU905WeRrgz5n1d vlJoJ5G9jtV6g1duVST1c9CImmULpNyRujn4vqGFRfWeyxFwqFUizNm3t0cM2Xho0fdKJAm2tPeZ U1wq71FW91XuPSVnNKqKDwfS9KaqS9Ge3Xw0UCknYJADUNel3W+psHDgPDsquJ8SPzWPbjaC4Zm2 3ShrzTh6idyeWCZ/l8L8SFf6oPG7I5wZMI7bPXpZJE0zusR/q00b6GxEIYUAAAAldEVYdGRhdGU6 Y3JlYXRlADIwMjItMDQtMzBUMTQ6MTM6MjkrMDA6MDA4jFSZAAAAJXRFWHRkYXRlOm1vZGlmeQAy MDIyLTA0LTMwVDE0OjEzOjI5KzAwOjAwSdHsJQAAAABJRU5ErkJggg== X-Now-Playing: Talking Heads's _More Songs About Buildings and Food_: "Take Me To The River" Date: Sat, 30 Apr 2022 16:46:41 +0200 In-Reply-To: <87tuaa1wal.fsf@gnus.org> (Lars Ingebrigtsen's message of "Sat, 30 Apr 2022 16:27:14 +0200") Message-ID: <87o80i1ve6.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Lars Ingebrigtsen writes: > However, I think it's high time that we put the if-let family of macros > into subr. However, that doesn't seem to be trivial -- I tried now and > that broke bootstrap, too. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Lars Ingebrigtsen writes: > However, I think it's high time that we put the if-let family of macros > into subr. However, that doesn't seem to be trivial -- I tried now and > that broke bootstrap, too. It was because the internals depended on more stuff from subr-x.el, like thread-first. I've now rewritten slightly and moved the macros to subr.el, so these types of boostrap failures should be history. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no