From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ian Perryman Newsgroups: gmane.emacs.bugs Subject: bug#44489: 26.1; elisp mode fails for vierlog-model.el Date: Fri, 6 Nov 2020 14:08:14 -0500 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000073d2d105b374f1ec" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25886"; mail-complaints-to="usenet@ciao.gmane.io" To: 44489@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Nov 06 20:10:29 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kb780-00038c-SQ for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 06 Nov 2020 20:10:29 +0100 Original-Received: from localhost ([::1]:36266 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kb77z-00039h-SP for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 06 Nov 2020 14:10:27 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:35152) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kb77b-00036N-7q for bug-gnu-emacs@gnu.org; Fri, 06 Nov 2020 14:10:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:45756) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kb77a-0002Eo-Tu for bug-gnu-emacs@gnu.org; Fri, 06 Nov 2020 14:10:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kb77a-00060x-Jj for bug-gnu-emacs@gnu.org; Fri, 06 Nov 2020 14:10:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Ian Perryman Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 06 Nov 2020 19:10:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 44489 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.160468974223045 (code B ref -1); Fri, 06 Nov 2020 19:10:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 6 Nov 2020 19:09:02 +0000 Original-Received: from localhost ([127.0.0.1]:57303 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kb76c-0005za-HK for submit@debbugs.gnu.org; Fri, 06 Nov 2020 14:09:02 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:51650) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kb76b-0005zF-0h for submit@debbugs.gnu.org; Fri, 06 Nov 2020 14:09:01 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:34964) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kb76a-0002Rf-OW for bug-gnu-emacs@gnu.org; Fri, 06 Nov 2020 14:09:00 -0500 Original-Received: from mail-ot1-x332.google.com ([2607:f8b0:4864:20::332]:45988) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kb76V-0002AL-2J for bug-gnu-emacs@gnu.org; Fri, 06 Nov 2020 14:09:00 -0500 Original-Received: by mail-ot1-x332.google.com with SMTP id k3so2192764otp.12 for ; Fri, 06 Nov 2020 11:08:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xtreme-eda-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=kDATKXW4Mp7HbyDnWpwiDo/brl6gz/q/IW2bYANPU4k=; b=mYukxB8ZIojPiBZUkH3ezMvYAr+mlKEdLUq2YORt3NgFqUUsASquYhioPNYwowuv/J e8zhxnvgevTaDuJv9mMD9WAMZmiFayq3rpO3/psvfGkXt3MbusH1EgkULVLlyM4x9Lnu O0Ohno44/zpIjsKw0klMxwowuSgQew5r1FvPzCa4dvTgDybX9qpihQe5ile3+nXCt3si FxLF9zMZBeINQsahluznwm0HX5D/8cZIMMiFR6Ha1ziHkCB+5lQYzHO8hWR3BIxQSRj8 Cr1s0YRz/G84fHx0Y5Xb3ofY9zv8lGpOiuUTAG/XoOBrYNNuo5Jodv8v1bLFUvVO6/zz cc/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=kDATKXW4Mp7HbyDnWpwiDo/brl6gz/q/IW2bYANPU4k=; b=W406lxf7obW9aSSgt99jdEBY0MEWrTNlObnI5c13kogYl903gb2GR0ZdQObGW0iUlp eJy1/HLGPbj+1MH5tEBv0NoiOqZTw1LvNUgY/4qA5DUeAWsYmw3ZMDVJJgqYLbB+/GWF ZaQ8krYOna/chPKtXb0kTEdnkrhzcrXbFYyPihm9WGVz82/F3fpdVD7B0GPF9Uc7AbTu Avsn2e5x3Ubz8mMtoRglUSHUHr5L1+u88PFTokpYIlDUfFGWWRQFOkrEBOLIx5GVWcs6 DHy2yXsb8EOrYBHJpZ5xR79FW+NWLaN0l9v0QAmEEJjnRKgmf1kTv5TRYztHocuPPkZT 2sdw== X-Gm-Message-State: AOAM533FWMseUrukrp7hsd2kM47cbed0Mocc40OfwYlptRunuDHGKglQ BneMEg78nUk9Q0d4oC1PwPNt3NuXH2pvu0eC3plQFcfQhJHc1uLo X-Google-Smtp-Source: ABdhPJyabwG0jlrJQbMXzvJVn7JOkJ+zStSvZcKWmnBXDhs9kAMaSumGSf1CYC1k5vVq1BJdtJtsk7ULNBUbd9ROX8M= X-Received: by 2002:a9d:32c9:: with SMTP id u67mr1978293otb.70.1604689731992; Fri, 06 Nov 2020 11:08:51 -0800 (PST) Received-SPF: pass client-ip=2607:f8b0:4864:20::332; envelope-from=iperryman@xtreme-eda.com; helo=mail-ot1-x332.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=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-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:192794 Archived-At: --00000000000073d2d105b374f1ec Content-Type: multipart/alternative; boundary="00000000000073d2ce05b374f1ea" --00000000000073d2ce05b374f1ea Content-Type: text/plain; charset="UTF-8" Seems the elisp mode gets confused with the attached file. The message: File mode specification error: (user-error Unmatched bracket or quote) Is displayed and the cursor is put to 4685,12 There appear to be issues with quotes in someplace before this as well. For example see near line 3302. In GNU Emacs 26.1 (build 1, x86_64-redhat-linux-gnu, GTK+ Version 3.22.30) of 2019-05-11 built on x86-02.mbox.centos.org Windowing system distributor 'The X.Org Foundation', version 11.0.12003000 System Description: CentOS Linux release 8.2.2004 (Core) Recent messages: Turning OFF Icicle mode...done Turning ON Icicle mode...done Turning OFF Icicle mode...done Turning ON Icicle mode...done Loading /home2/iperryman/.emacs.d/elpa/realgud-20200923.610/realgud/common/custom...done Loading /home2/iperryman/.emacs.d/elpa/realgud-20200923.610/realgud/lang/java...done Turning on magit-auto-revert-mode...done For information about GNU Emacs and the GNU system, type C-h C-a. Mark set File mode specification error: (user-error Unmatched bracket or quote) Configured using: 'configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-dbus --with-gif --with-jpeg --with-png --with-rsvg --with-tiff --with-xft --with-xpm --with-x-toolkit=gtk3 --with-gpm=no --with-xwidgets --with-modules build_alias=x86_64-redhat-linux-gnu host_alias=x86_64-redhat-linux-gnu 'CFLAGS=-DMAIL_USE_LOCKF -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' 'LDFLAGS= -Wl,-z,relro,-z,now -fpie' PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig' Configured features: XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES THREADS XWIDGETS Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Minor modes in effect: hi-lock-mode: t override-global-mode: t global-magit-file-mode: t diff-auto-refine-mode: t magit-auto-revert-mode: t global-git-commit-mode: t async-bytecomp-package-mode: t shell-dirtrack-mode: t icicle-mode: t minibuffer-depth-indicate-mode: t show-paren-mode: t delete-selection-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /home2/iperryman/.emacs.d/elpa/xcscope-20200828.1027/xcscope hides /usr/share/emacs/site-lisp/xcscope /home2/iperryman/elisp/verilog-mode hides /usr/share/emacs/26.1/lisp/progmodes/verilog-mode Features: (shadow sort mail-extr face-remap emacsbug vc-git hi-lock elec-pair realgud realgud-zshdb realgud:zshdb-track-mode realgud:zshdb-core realgud:zshdb-init realgud-trepan3k realgud:trepan3k-track-mode realgud:trepan3k-core realgud:trepan3k-init realgud-trepan2 realgud:trepan2-track-mode realgud:trepan2-core realgud:trepan2-init realgud-trepanpl realgud:trepanpl-track-mode realgud:trepanpl-core realgud:trepanpl-init realgud-trepanjs realgud:trepanjs-track-mode realgud:trepanjs-core realgud:trepanjs-init realgud-lang-js realgud-trepan realgud:trepan-track-mode realgud:trepan-core realgud:trepan-init realgud-remake realgud:remake-track-mode realgud:remake-core realgud:remake-init realgud-rdebug realgud-rdebug-track-mode realgud-rdebug-core realgud-rdebug-init realgud-lang-ruby realgud-perldb realgud:perldb-track-mode realgud:perldb-core realgud:perldb-init realgud-lang-perl realgud-pdb realgud:pdb-track-mode realgud:pdb-core realgud:pdb-init realgud-lang-python python tramp-sh tramp tramp-compat tramp-loaddefs trampver ucs-normalize parse-time realgud-kshdb realgud:kshdb-track-mode realgud:kshdb-core realgud:kshdb-init realgud-gub realgud:gub-track-mode realgud:gub-core realgud:gub-init realgud-gdb realgud:gdb-track-mode realgud:gdb-init realgud:gdb-core realgud-bashdb realgud:bashdb-track-mode realgud:bashdb-core realgud:bashdb-init realgud-lang-posix-shell realgud:run realgud-locals-mode realgud-breakpoint-mode realgud-backtrack-mode realgud-track-mode realgud-backtrace-mode realgud-attach realgud-lang-java realgud-track realgud-shortkey realgud-menu realgud-eval realgud-cmds realgud-send realgud-window realgud-utils subr-x realgud-init realgud-file realgud-core realgud-reset realgud-buffer-helper realgud-buffer-breakpoint realgud-buffer-backtrace realgud-locals realgud-buffer-locals realgud-buffer-command realgud-buffer-info realgud-lochist org-element avl-tree generator org org-macro org-footnote org-pcomplete org-list org-faces org-entities noutline outline org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs org-loaddefs find-func cal-menu calendar cal-loaddefs realgud-bp realgud-bp-image-data realgud-lang esh-var esh-io esh-cmd esh-opt esh-ext esh-proc esh-arg esh-groups eshell esh-module esh-util esh-mode realgud-loc realgud-buffer-source realgud-key key realgud-follow realgud-fringe realgud-helper loc-changes realgud-regexp realgud-custom load-relative use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key use-package-core magit-bookmark magit-submodule magit-obsolete magit-blame magit-stash magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-collab ghub-graphql treepy gsexp ghub url-http tls url-gw nsm url-auth let-alist json map gnutls magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode diff-mode magit-core magit-autorevert autorevert filenotify magit-process magit-margin magit-mode git-commit transient magit-git magit-section magit-utils magit-popup crm log-edit message sendmail rmc puny rfc822 mml mml-sec epa epg gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log with-editor cl-extra async-bytecomp async shell pcomplete server dash buffer-move windmove xcscope grep+ grep compile comint ansi-color paredit-menu paredit transpose-frame two-column icicles icicles-mode mb-depth+ mb-depth icicles-cmd2 icicles-cmd1 frame-cmds frame-fns avoid icicles-mcmd image-dired image-mode format-spec doremi ring icicles-fn icicles-var apropos-fn+var apropos icicles-opt ffap fuzzy-match cus-theme cus-edit wid-edit bookmark+ bookmark+-key edmacro easy-mmode kmacro derived dired-x dired dired-loaddefs crosshairs col-highlight vline hl-line+ advice hl-line bookmark+-1 bookmark+-bmu help-mode bookmark+-lit pp+ bookmark pp hexrgb thingatpt+ thingatpt icicles-face icicles-install url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap monokai-theme paren delsel cus-start cus-load rx finder-inf realgud-recursive-autoloads info package easymenu epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type 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 elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame 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 charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify dynamic-setting system-font-setting font-render-setting xwidget-internal move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 703256 21453) (symbols 48 53479 3) (miscs 40 86 146) (strings 32 191839 8452) (string-bytes 1 5712544) (vectors 16 87668) (vector-slots 8 2041593 25274) (floats 8 274 265) (intervals 56 675 67) (buffers 992 12)) System Info: 12:13:35 [iperryman@desk-03 elisp]$ lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 8.2.2004 (Core) Release: 8.2.2004 Codename: Core 2:22:24 [iperryman@desk-03 elisp]$ emacs --version GNU Emacs 26.1 Copyright (C) 2018 Free Software Foundation, Inc. GNU Emacs comes with ABSOLUTELY NO WARRANTY. You may redistribute copies of GNU Emacs under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING. -- Ian Perryman XtremeEDA Corp 613-728-5912 x210 200-25 Holland Ave, Ottawa, ON, K1Y 4R9 --00000000000073d2ce05b374f1ea Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Seems the elisp mode gets confused with the attached = file.

The message:=C2=A0

File mode specif= ication error: (user-error Unmatched bracket or quote)
Is displayed and the cursor is put to 4685,12

The= re appear to be issues with quotes in someplace before this as well.=C2=A0 = For example see near line 3302.



In GNU Emacs 26.1 (bu= ild 1, x86_64-redhat-linux-gnu, GTK+ Version 3.22.30)
=C2=A0of 2019-05-1= 1 built on x86-= 02.mbox.centos.org
Windowing system distributor 'The X.Org Found= ation', version 11.0.12003000
System Description: CentOS Linux relea= se 8.2.2004 (Core)

Recent messages:
Turning OFF Icicle mode...do= ne
Turning ON Icicle mode...done
Turning OFF Icicle mode...done
Tu= rning ON Icicle mode...done
Loading /home2/iperryman/.emacs.d/elpa/realg= ud-20200923.610/realgud/common/custom...done
Loading /home2/iperryman/.e= macs.d/elpa/realgud-20200923.610/realgud/lang/java...done
Turning on mag= it-auto-revert-mode...done
For information about GNU Emacs and the GNU s= ystem, type C-h C-a.
Mark set
File mode specification error: (user-er= ror Unmatched bracket or quote)

Configured using:
=C2=A0'conf= igure --build=3Dx86_64-redhat-linux-gnu
=C2=A0--host=3Dx86_64-redhat-lin= ux-gnu --program-prefix=3D
=C2=A0--disable-dependency-tracking --prefix= =3D/usr --exec-prefix=3D/usr
=C2=A0--bindir=3D/usr/bin --sbindir=3D/usr/= sbin --sysconfdir=3D/etc
=C2=A0--datadir=3D/usr/share --includedir=3D/us= r/include --libdir=3D/usr/lib64
=C2=A0--libexecdir=3D/usr/libexec --loca= lstatedir=3D/var
=C2=A0--sharedstatedir=3D/var/lib --mandir=3D/usr/share= /man
=C2=A0--infodir=3D/usr/share/info --with-dbus --with-gif --with-jpe= g --with-png
=C2=A0--with-rsvg --with-tiff --with-xft --with-xpm --with-= x-toolkit=3Dgtk3
=C2=A0--with-gpm=3Dno --with-xwidgets --with-modules=C2=A0build_alias=3Dx86_64-redhat-linux-gnu host_alias=3Dx86_64-redhat-lin= ux-gnu
=C2=A0'CFLAGS=3D-DMAIL_USE_LOCKF -O2 -g -pipe -Wall -Werror= =3Dformat-security
=C2=A0-Wp,-D_FORTIFY_SOURCE=3D2 -Wp,-D_GLIBCXX_ASSERT= IONS -fexceptions
=C2=A0-fstack-protector-strong -grecord-gcc-switches=C2=A0-specs=3D/usr/lib/rpm/redhat/redhat-hardened-cc1
=C2=A0-specs=3D= /usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=3Dgeneric
=C2=A0-fasy= nchronous-unwind-tables -fstack-clash-protection -fcf-protection'
= =C2=A0'LDFLAGS=3D -Wl,-z,relro,-z,now -fpie'
=C2=A0PKG_CONFIG_PA= TH=3D:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

Configured feat= ures:
XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS NOTIFY ACL LIBSELI= NUX
GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS=
GTK3 X11 MODULES THREADS XWIDGETS

Important settings:
=C2=A0 = value of $LANG: en_US.UTF-8
=C2=A0 locale-coding-system: utf-8-unix
<= br>Major mode: Lisp

Minor modes in effect:
=C2=A0 hi-lock-mode: t=
=C2=A0 override-global-mode: t
=C2=A0 global-magit-file-mode: t
= =C2=A0 diff-auto-refine-mode: t
=C2=A0 magit-auto-revert-mode: t
=C2= =A0 global-git-commit-mode: t
=C2=A0 async-bytecomp-package-mode: t
= =C2=A0 shell-dirtrack-mode: t
=C2=A0 icicle-mode: t
=C2=A0 minibuffer= -depth-indicate-mode: t
=C2=A0 show-paren-mode: t
=C2=A0 delete-selec= tion-mode: t
=C2=A0 tooltip-mode: t
=C2=A0 global-eldoc-mode: t
= =C2=A0 electric-indent-mode: t
=C2=A0 mouse-wheel-mode: t
=C2=A0 menu= -bar-mode: t
=C2=A0 file-name-shadow-mode: t
=C2=A0 global-font-lock-= mode: t
=C2=A0 font-lock-mode: t
=C2=A0 blink-cursor-mode: t
=C2= =A0 auto-composition-mode: t
=C2=A0 auto-encryption-mode: t
=C2=A0 au= to-compression-mode: t
=C2=A0 column-number-mode: t
=C2=A0 line-numbe= r-mode: t
=C2=A0 transient-mark-mode: t

Load-path shadows:
/ho= me2/iperryman/.emacs.d/elpa/xcscope-20200828.1027/xcscope hides /usr/share/= emacs/site-lisp/xcscope
/home2/iperryman/elisp/verilog-mode hides /usr/s= hare/emacs/26.1/lisp/progmodes/verilog-mode

Features:
(shadow sor= t mail-extr face-remap emacsbug vc-git hi-lock elec-pair
realgud realgud= -zshdb realgud:zshdb-track-mode realgud:zshdb-core
realgud:zshdb-init re= algud-trepan3k realgud:trepan3k-track-mode
realgud:trepan3k-core realgud= :trepan3k-init realgud-trepan2
realgud:trepan2-track-mode realgud:trepan= 2-core realgud:trepan2-init
realgud-trepanpl realgud:trepanpl-track-mode= realgud:trepanpl-core
realgud:trepanpl-init realgud-trepanjs realgud:tr= epanjs-track-mode
realgud:trepanjs-core realgud:trepanjs-init realgud-la= ng-js
realgud-trepan realgud:trepan-track-mode realgud:trepan-core
re= algud:trepan-init realgud-remake realgud:remake-track-mode
realgud:remak= e-core realgud:remake-init realgud-rdebug
realgud-rdebug-track-mode real= gud-rdebug-core realgud-rdebug-init
realgud-lang-ruby realgud-perldb rea= lgud:perldb-track-mode
realgud:perldb-core realgud:perldb-init realgud-l= ang-perl realgud-pdb
realgud:pdb-track-mode realgud:pdb-core realgud:pdb= -init
realgud-lang-python python tramp-sh tramp tramp-compat tramp-loadd= efs
trampver ucs-normalize parse-time realgud-kshdb realgud:kshdb-track-= mode
realgud:kshdb-core realgud:kshdb-init realgud-gub realgud:gub-track= -mode
realgud:gub-core realgud:gub-init realgud-gdb realgud:gdb-track-mo= de
realgud:gdb-init realgud:gdb-core realgud-bashdb
realgud:bashdb-tr= ack-mode realgud:bashdb-core realgud:bashdb-init
realgud-lang-posix-shel= l realgud:run realgud-locals-mode
realgud-breakpoint-mode realgud-backtr= ack-mode realgud-track-mode
realgud-backtrace-mode realgud-attach realgu= d-lang-java realgud-track
realgud-shortkey realgud-menu realgud-eval rea= lgud-cmds realgud-send
realgud-window realgud-utils subr-x realgud-init = realgud-file
realgud-core realgud-reset realgud-buffer-helper
realgud= -buffer-breakpoint realgud-buffer-backtrace realgud-locals
realgud-buffe= r-locals realgud-buffer-command realgud-buffer-info
realgud-lochist org-= element avl-tree generator org org-macro
org-footnote org-pcomplete org-= list org-faces org-entities noutline
outline org-version ob-emacs-lisp o= b ob-tangle org-src ob-ref ob-lob
ob-table ob-keys ob-exp ob-comint ob-c= ore ob-eval org-compat org-macs
org-loaddefs find-func cal-menu calendar= cal-loaddefs realgud-bp
realgud-bp-image-data realgud-lang esh-var esh-= io esh-cmd esh-opt
esh-ext esh-proc esh-arg esh-groups eshell esh-module= esh-util esh-mode
realgud-loc realgud-buffer-source realgud-key key rea= lgud-follow
realgud-fringe realgud-helper loc-changes realgud-regexp rea= lgud-custom
load-relative use-package use-package-ensure use-package-del= ight
use-package-diminish use-package-bind-key bind-key use-package-core=
magit-bookmark magit-submodule magit-obsolete magit-blame magit-stashmagit-bisect magit-push magit-pull magit-fetch magit-clone magit-remotemagit-commit magit-sequence magit-notes magit-worktree magit-tag
magit= -merge magit-branch magit-reset magit-collab ghub-graphql treepy
gsexp g= hub url-http tls url-gw nsm url-auth let-alist json map gnutls
magit-fil= es magit-refs magit-status magit magit-repos magit-apply
magit-wip magit= -log which-func imenu magit-diff smerge-mode diff-mode
magit-core magit-= autorevert autorevert filenotify magit-process
magit-margin magit-mode g= it-commit transient magit-git magit-section
magit-utils magit-popup crm = log-edit message sendmail rmc puny rfc822
mml mml-sec epa epg gnus-util = rmail rmail-loaddefs mm-decode mm-bodies
mm-encode mail-parse rfc2231 rf= c2047 rfc2045 mm-util ietf-drums
mail-prsvr mailabbrev mail-utils gmm-ut= ils mailheader pcvs-util add-log
with-editor cl-extra async-bytecomp asy= nc shell pcomplete server dash
buffer-move windmove xcscope grep+ grep c= ompile comint ansi-color
paredit-menu paredit transpose-frame two-column= icicles icicles-mode
mb-depth+ mb-depth icicles-cmd2 icicles-cmd1 frame= -cmds frame-fns avoid
icicles-mcmd image-dired image-mode format-spec do= remi ring icicles-fn
icicles-var apropos-fn+var apropos icicles-opt ffap= fuzzy-match
cus-theme cus-edit wid-edit bookmark+ bookmark+-key edmacro= easy-mmode
kmacro derived dired-x dired dired-loaddefs crosshairs col-h= ighlight
vline hl-line+ advice hl-line bookmark+-1 bookmark+-bmu help-mo= de
bookmark+-lit pp+ bookmark pp hexrgb thingatpt+ thingatpt icicles-fac= e
icicles-install url url-proxy url-privacy url-expand url-methods
ur= l-history url-cookie url-domsuf url-util mailcap monokai-theme paren
del= sel cus-start cus-load rx finder-inf realgud-recursive-autoloads info
pa= ckage easymenu epg-config url-handlers url-parse auth-source cl-seq
eiei= o eieio-core cl-macs eieio-loaddefs password-cache url-vars seq
byte-opt= gv bytecomp byte-compile cconv cl-loaddefs cl-lib time-date
mule-util t= ooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwhee= l term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image rege= xp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lis= p-mode prog-mode register page menu-bar
rfn-eshadow isearch timer select= scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-= colors frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese ti= betan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek ro= manian slovak czech european
ethiopic indian cyrillic chinese composite = charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev= obarray minibuffer
cl-preloaded nadvice loaddefs button faces cus-face = macroexp files
text-properties overlay sha1 md5 base64 format env code-p= ages mule
custom widget hashtable-print-readable backquote dbusbind inot= ify
dynamic-setting system-font-setting font-render-setting xwidget-inte= rnal
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)<= br>
Memory information:
((conses 16 703256 21453)
=C2=A0(symbols 4= 8 53479 3)
=C2=A0(miscs 40 86 146)
=C2=A0(strings 32 191839 8452)
= =C2=A0(string-bytes 1 5712544)
=C2=A0(vectors 16 87668)
=C2=A0(vector= -slots 8 2041593 25274)
=C2=A0(floats 8 274 265)
=C2=A0(intervals 56 = 675 67)
=C2=A0(buffers 992 12))

System Info:
12:13:35 [iperryman@desk-03 elisp]$ lsb_release -a
LSB Version: :c= ore-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: Cen= tOS Linux release 8.2.2004 (Core)
Release: 8.2.2004
Codename: Core

2:22:24 [iperryman@desk-03 elisp]$ emacs --vers= ion
GNU Emacs 26.1
Copyright (C) 2018 Free Software Foundation, Inc.<= br>GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute cop= ies of GNU Emacs
under the terms of the GNU General Public License.
F= or more information about these matters, see the file named COPYING.





--
Ian Perryman
XtremeEDA Corp
613-728-5912 x210
<= div>200-25 Holland Ave,
Ottawa, ON,=C2=A0
K1Y 4R9
=
--00000000000073d2ce05b374f1ea-- --00000000000073d2d105b374f1ec Content-Type: application/x-lisp; name="verilog-mode.el" Content-Disposition: attachment; filename="verilog-mode.el" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kh6j4h670 Ozs7IHZlcmlsb2ctbW9kZS5lbCAtLS0gbWFqb3IgbW9kZSBmb3IgZWRpdGluZyB2ZXJpbG9nIHNv dXJjZSBpbiBFbWFjcwoKOzsgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCgo7OyBBdXRob3I6IE1pY2hhZWwgTWNOYW1hcmEgPG1hY0B2ZXJpbG9n LmNvbT4KOzsgICAgV2lsc29uIFNueWRlciA8d3NueWRlckB3c255ZGVyLm9yZz4KOzsgWC1VUkw6 IGh0dHBzOi8vd3d3LnZlcmlwb29sLm9yZwo7OyBDcmVhdGVkOiAzIEphbiAxOTk2Cjs7IEtleXdv cmRzOiBsYW5ndWFnZXMKOzsgVGhlICJWZXJzaW9uIiBpcyB0aGUgZGF0ZSBmb2xsb3dlZCBieSB0 aGUgZGVjaW1hbCByZW5kaXRpb24gb2YgdGhlIEdpdAo7OyAgICAgY29tbWl0IGhleC4KOzsgVmVy c2lvbjogX19WTVZFUlNJT05ET1RfXy5fX1ZNUkVWSVNJT05ET1RfXwoKOzsgWW9uaSBSYWJraW4g PHlvbmlAcmFia2lucy5uZXQ+IGNvbnRhY3RlZCB0aGUgbWFpbnRhaW5lciBvZiB0aGlzCjs7IGZp bGUgb24gMTkvMy8yMDA4LCBhbmQgdGhlIG1haW50YWluZXIgYWdyZWVkIHRoYXQgd2hlbiBhIGJ1 ZyBpcwo7OyBmaWxlZCBpbiB0aGUgRW1hY3MgYnVnIHJlcG9ydGluZyBzeXN0ZW0gYWdhaW5zdCB0 aGlzIGZpbGUsIGEgY29weQo7OyBvZiB0aGUgYnVnIHJlcG9ydCBiZSBzZW50IHRvIHRoZSBtYWlu dGFpbmVyJ3MgZW1haWwgYWRkcmVzcy4KCjs7ICAgIFRoaXMgY29kZSBzdXBwb3J0cyBFbWFjcyAy MS4xIGFuZCBsYXRlcgo7OyAgICBBbmQgWEVtYWNzIDIxLjEgYW5kIGxhdGVyCjs7ICAgIFBsZWFz ZSBkbyBub3QgbWFrZSBjaGFuZ2VzIHRoYXQgYnJlYWsgRW1hY3MgMjEuICBUaGFua3MhCjs7Cjs7 Cgo7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCgo7OyBHTlUgRW1hY3MgaXMgZnJl ZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgoKOzsgR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAg SWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KCjs7OyBDb21tZW50 YXJ5OgoKOzsgVVNBR0UKOzsgPT09PT0KCjs7IEEgbWFqb3IgbW9kZSBmb3IgZWRpdGluZyBWZXJp bG9nIGFuZCBTeXN0ZW1WZXJpbG9nIEhETCBzb3VyY2UgY29kZSAoSUVFRQo7OyAxMzY0LTIwMDUg YW5kIElFRUUgMTgwMC0yMDEyIHN0YW5kYXJkcykuICBXaGVuIHlvdSBoYXZlIGVudGVyZWQgVmVy aWxvZwo7OyBtb2RlLCB5b3UgbWF5IGdldCBtb3JlIGluZm8gYnkgcHJlc3NpbmcgQy1oIG0uIFlv dSBtYXkgYWxzbyBnZXQgb25saW5lCjs7IGhlbHAgZGVzY3JpYmluZyB2YXJpb3VzIGZ1bmN0aW9u cyBieTogQy1oIGYgPE5hbWUgb2YgZnVuY3Rpb24geW91IHdhbnQKOzsgZGVzY3JpYmVkPgoKOzsg S05PV04gQlVHUyAvIEJVRyBSRVBPUlRTCjs7ID09PT09PT09PT09PT09PT09PT09PT09Cgo7OyBT eXN0ZW1WZXJpbG9nIGlzIGEgcmFwaWRseSBldm9sdmluZyBsYW5ndWFnZSwgYW5kIGhlbmNlIHRo aXMgbW9kZSBpcwo7OyB1bmRlciBjb250aW51b3VzIGRldmVsb3BtZW50LiAgUGxlYXNlIHJlcG9y dCBhbnkgaXNzdWVzIHRvIHRoZSBpc3N1ZQo7OyB0cmFja2VyIGF0Cjs7Cjs7ICAgIGh0dHBzOi8v d3d3LnZlcmlwb29sLm9yZy92ZXJpbG9nLW1vZGUKOzsKOzsgUGxlYXNlIHVzZSB2ZXJpbG9nLXN1 Ym1pdC1idWctcmVwb3J0IHRvIHN1Ym1pdCBhIHJlcG9ydDsgdHlwZSBDLWMKOzsgQy1iIHRvIGlu dm9rZSB0aGlzIGFuZCBhcyBhIHJlc3VsdCB3ZSB3aWxsIGhhdmUgYSBtdWNoIGVhc2llciB0aW1l Cjs7IG9mIHJlcHJvZHVjaW5nIHRoZSBidWcgeW91IGZpbmQsIGFuZCBoZW5jZSBmaXhpbmcgaXQu Cgo7OyBJTlNUQUxMSU5HIFRIRSBNT0RFCjs7ID09PT09PT09PT09PT09PT09PT0KCjs7IEFuIG9s ZGVyIHZlcnNpb24gb2YgdGhpcyBtb2RlIG1heSBiZSBhbHJlYWR5IGluc3RhbGxlZCBhcyBhIHBh cnQgb2YKOzsgeW91ciBlbnZpcm9ubWVudCwgYW5kIG9uZSBtZXRob2Qgb2YgdXBkYXRpbmcgd291 bGQgYmUgdG8gdXBkYXRlCjs7IHlvdXIgRW1hY3MgZW52aXJvbm1lbnQuICBTb21ldGltZXMgdGhp cyBpcyBkaWZmaWN1bHQgZm9yIGxvY2FsCjs7IHBvbGl0aWNhbC9jb250cm9sIHJlYXNvbnMsIGFu ZCBoZW5jZSB5b3UgY2FuIGFsd2F5cyBpbnN0YWxsIGEKOzsgcHJpdmF0ZSBjb3B5IChvciBldmVu IGEgc2hhcmVkIGNvcHkpIHdoaWNoIG92ZXJyaWRlcyB0aGUgc3lzdGVtCjs7IGRlZmF1bHQuCgo7 OyBZb3UgY2FuIGdldCBzdGVwIGJ5IHN0ZXAgaGVscCBpbiBpbnN0YWxsaW5nIHRoaXMgZmlsZSBi eSBnb2luZyB0bwo7OyA8aHR0cHM6Ly93d3cudmVyaXBvb2wub3JnL3Zlcmlsb2ctbW9kZT4KCjs7 IFRoZSBzaG9ydCBsaXN0IG9mIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgYXJlOiBUbyBzZXQg dXAKOzsgYXV0b21hdGljIFZlcmlsb2cgbW9kZSwgcHV0IHRoaXMgZmlsZSBpbiB5b3VyIGxvYWQg cGF0aCwgYW5kIHB1dAo7OyB0aGUgZm9sbG93aW5nIGluIGNvZGUgKHBsZWFzZSB1biBjb21tZW50 IGl0IGZpcnN0ISkgaW4geW91cgo7OyAuZW1hY3MsIG9yIGluIHlvdXIgc2l0ZSdzIHNpdGUtbG9h ZC5lbAoKOzsgICAoYXV0b2xvYWQgJ3Zlcmlsb2ctbW9kZSAidmVyaWxvZy1tb2RlIiAiVmVyaWxv ZyBtb2RlIiB0ICkKOzsgICAoYWRkLXRvLWxpc3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5bZHNd P3ZhP2g/XFwnIiAuIHZlcmlsb2ctbW9kZSkpCgo7OyBCZSBzdXJlIHRvIGV4YW1pbmUgYXQgdGhl IGhlbHAgZm9yIHZlcmlsb2ctYXV0bywgYW5kIHRoZSBvdGhlcgo7OyB2ZXJpbG9nLWF1dG8tKiBm dW5jdGlvbnMgZm9yIHNvbWUgbWFqb3IgY29kaW5nIHRpbWUgc2F2ZXJzLgo7Owo7OyBJZiB5b3Ug d2FudCB0byBjdXN0b21pemUgVmVyaWxvZyBtb2RlIHRvIGZpdCB5b3VyIG5lZWRzIGJldHRlciwK OzsgeW91IG1heSBhZGQgdGhlIGJlbG93IGxpbmVzICh0aGUgdmFsdWVzIG9mIHRoZSB2YXJpYWJs ZXMgcHJlc2VudGVkCjs7IGhlcmUgYXJlIHRoZSBkZWZhdWx0cykuIE5vdGUgYWxzbyB0aGF0IGlm IHlvdSB1c2UgYW4gRW1hY3MgdGhhdAo7OyBzdXBwb3J0cyBjdXN0b20sIGl0J3MgcHJvYmFibHkg YmV0dGVyIHRvIHVzZSB0aGUgY3VzdG9tIG1lbnUgdG8KOzsgZWRpdCB0aGVzZS4gIElmIHdvcmtp bmcgYXMgYSBtZW1iZXIgb2YgYSBsYXJnZSB0ZWFtIHRoZXNlIHNldHRpbmdzCjs7IHNob3VsZCBi ZSBjb21tb24gYWNyb3NzIGFsbCB1c2VycyAoaW4gYSBzaXRlLXN0YXJ0IGZpbGUpLCBvciBzZXQK OzsgaW4gTG9jYWwgVmFyaWFibGVzIGluIGV2ZXJ5IGZpbGUuICBPdGhlcndpc2UsIGRpZmZlcmVu dCBwZW9wbGUncwo7OyBBVVRPIGV4cGFuc2lvbiBtYXkgcmVzdWx0IGRpZmZlcmVudCB3aGl0ZXNw YWNlIGNoYW5nZXMuCjs7Cjs7ICAgOzsgRW5hYmxlIHN5bnRheCBoaWdobGlnaHRpbmcgb2YgKiph bGwqKiBsYW5ndWFnZXMKOzsgICAoZ2xvYmFsLWZvbnQtbG9jay1tb2RlIHQpCjs7Cjs7ICAgOzsg VXNlciBjdXN0b21pemF0aW9uIGZvciBWZXJpbG9nIG1vZGUKOzsgICAoc2V0cSB2ZXJpbG9nLWlu ZGVudC1sZXZlbCAgICAgICAgICAgICAzCjs7ICAgICAgICAgdmVyaWxvZy1pbmRlbnQtbGV2ZWwt bW9kdWxlICAgICAgMwo7OyAgICAgICAgIHZlcmlsb2ctaW5kZW50LWxldmVsLWRlY2xhcmF0aW9u IDMKOzsgICAgICAgICB2ZXJpbG9nLWluZGVudC1sZXZlbC1iZWhhdmlvcmFsICAzCjs7ICAgICAg ICAgdmVyaWxvZy1pbmRlbnQtbGV2ZWwtZGlyZWN0aXZlICAgMQo7OyAgICAgICAgIHZlcmlsb2ct Y2FzZS1pbmRlbnQgICAgICAgICAgICAgIDIKOzsgICAgICAgICB2ZXJpbG9nLWF1dG8tbmV3bGlu ZSAgICAgICAgICAgICB0Cjs7ICAgICAgICAgdmVyaWxvZy1hdXRvLWluZGVudC1vbi1uZXdsaW5l ICAgdAo7OyAgICAgICAgIHZlcmlsb2ctdGFiLWFsd2F5cy1pbmRlbnQgICAgICAgIHQKOzsgICAg ICAgICB2ZXJpbG9nLWF1dG8tZW5kY29tbWVudHMgICAgICAgICB0Cjs7ICAgICAgICAgdmVyaWxv Zy1taW5pbXVtLWNvbW1lbnQtZGlzdGFuY2UgNDAKOzsgICAgICAgICB2ZXJpbG9nLWluZGVudC1i ZWdpbi1hZnRlci1pZiAgICB0Cjs7ICAgICAgICAgdmVyaWxvZy1hdXRvLWxpbmV1cCAgICAgICAg ICAgICAgJ2RlY2xhcmF0aW9ucwo7OyAgICAgICAgIHZlcmlsb2ctbGludGVyICAgICAgICAgICAg ICAgICAgICJteV9saW50X3NoZWxsX2NvbW1hbmQiCjs7ICAgICAgICAgKQoKDAo7OzsgSGlzdG9y eToKOzsKOzsgU2VlIGNvbW1pdCBoaXN0b3J5IGF0IGh0dHBzOi8vd3d3LnZlcmlwb29sLm9yZy92 ZXJpbG9nLW1vZGUKOzsgKFRoaXMgc2VjdGlvbiBpcyByZXF1aXJlZCB0byBhcHBlYXNlIGNoZWNr ZG9jLikKCjs7OyBDb2RlOgo7OwoKOzsgVGhpcyB2YXJpYWJsZSB3aWxsIGFsd2F5cyBob2xkIHRo ZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgbW9kZQooZGVmY29uc3QgdmVyaWxvZy1tb2RlLXZlcnNp b24gIl9fVk1WRVJTSU9OX18tX19WTVJFVklTSU9OX18tX19WTVBBQ0tBR0VSX18iCiAgIlZlcnNp b24gb2YgdGhpcyBWZXJpbG9nIG1vZGUuIikKKGRlZmNvbnN0IHZlcmlsb2ctbW9kZS1yZWxlYXNl LWVtYWNzIG5pbAogICJJZiBub24tbmlsLCB0aGlzIHZlcnNpb24gb2YgVmVyaWxvZyBtb2RlIHdh cyByZWxlYXNlZCB3aXRoIEVtYWNzIGl0c2VsZi4iKQoKKGRlZnVuIHZlcmlsb2ctdmVyc2lvbiAo KQogICJJbmZvcm0gY2FsbGVyIG9mIHRoZSB2ZXJzaW9uIG9mIHRoaXMgZmlsZS4iCiAgKGludGVy YWN0aXZlKQogIChtZXNzYWdlICJVc2luZyB2ZXJpbG9nLW1vZGUgdmVyc2lvbiAlcyIgdmVyaWxv Zy1tb2RlLXZlcnNpb24pKQoKOzsgSW5zdXJlIHdlIGhhdmUgY2VydGFpbiBwYWNrYWdlcywgYW5k IGRlYWwgd2l0aCBpdCBpZiB3ZSBkb24ndAo7OyBCZSBzdXJlIHRvIG5vdGUgd2hpY2ggRW1hY3Mg Zmxhdm9yIGFuZCB2ZXJzaW9uIGFkZGVkIGVhY2ggZmVhdHVyZS4KKGV2YWwtd2hlbi1jb21waWxl CiAgOzsgUHJvdmlkZSBzdHVmZiBpZiB3ZSBhcmUgWEVtYWNzCiAgKHdoZW4gKGZlYXR1cmVwICd4 ZW1hY3MpCiAgICAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAgICAgKHJlcXVpcmUgJ2Vhc3ltZW51 KQogICAgICAoZXJyb3IgbmlsKSkKICAgIChjb25kaXRpb24tY2FzZSBuaWwKICAgICAgICAocmVx dWlyZSAncmVnZXhwLW9wdCkKICAgICAgKGVycm9yIG5pbCkpCiAgICA7OyBCdWcgaW4gMTkuMjgg dGhyb3VnaCAxOS4zMCBza2VsZXRvbi5lbCwgbm90IHByb3ZpZGVkLgogICAgKGNvbmRpdGlvbi1j YXNlIG5pbAogICAgICAgIChsb2FkICJza2VsZXRvbiIpCiAgICAgIChlcnJvciBuaWwpKQogICAg KGNvbmRpdGlvbi1jYXNlIG5pbAogICAgICAgIChpZiAoZmJvdW5kcCAnd2hlbikKICAgICAgICAg ICAgbmlsICA7IGZhYgogICAgICAgICAgKGRlZm1hY3JvIHdoZW4gKGNvbmQgJnJlc3QgYm9keSkK ICAgICAgICAgICAgKGxpc3QgJ2lmIGNvbmQgKGNvbnMgJ3Byb2duIGJvZHkpKSkpCiAgICAgIChl cnJvciBuaWwpKQogICAgKGNvbmRpdGlvbi1jYXNlIG5pbAogICAgICAgIChpZiAoZmJvdW5kcCAn dW5sZXNzKQogICAgICAgICAgICBuaWwgIDsgZmFiCiAgICAgICAgICAoZGVmbWFjcm8gdW5sZXNz IChjb25kICZyZXN0IGJvZHkpCiAgICAgICAgICAgIChjb25zICdpZiAoY29ucyBjb25kIChjb25z IG5pbCBib2R5KSkpKSkKICAgICAgKGVycm9yIG5pbCkpCiAgICAoY29uZGl0aW9uLWNhc2Ugbmls CiAgICAgICAgKGlmIChmYm91bmRwICdzdG9yZS1tYXRjaC1kYXRhKQogICAgICAgICAgICBuaWwg IDsgZmFiCiAgICAgICAgICAoZGVmbWFjcm8gc3RvcmUtbWF0Y2gtZGF0YSAoJnJlc3QgX2FyZ3Mp IG5pbCkpCiAgICAgIChlcnJvciBuaWwpKQogICAgKGNvbmRpdGlvbi1jYXNlIG5pbAogICAgICAg IChpZiAoZmJvdW5kcCAnY2hhci1iZWZvcmUpCiAgICAgICAgICAgIG5pbCAgOyBncmVhdAogICAg ICAgICAgKGRlZm1hY3JvIGNoYXItYmVmb3JlICgmcmVzdCBfYm9keSkKICAgICAgICAgICAgKGNo YXItYWZ0ZXIgKDEtIChwb2ludCkpKSkpCiAgICAgIChlcnJvciBuaWwpKQogICAgKGNvbmRpdGlv bi1jYXNlIG5pbAogICAgICAgIChpZiAoZmJvdW5kcCAnd2hlbikKICAgICAgICAgICAgbmlsICA7 IGZhYgogICAgICAgICAgKGRlZnN1YnN0IHBvaW50LWF0LWJvbCAoJm9wdGlvbmFsIE4pCiAgICAg ICAgICAgIChzYXZlLWV4Y3Vyc2lvbiAoYmVnaW5uaW5nLW9mLWxpbmUgTikgKHBvaW50KSkpKQog ICAgICAoZXJyb3IgbmlsKSkKICAgIChjb25kaXRpb24tY2FzZSBuaWwKICAgICAgICAoaWYgKGZi b3VuZHAgJ3doZW4pCiAgICAgICAgICAgIG5pbCAgOyBmYWIKICAgICAgICAgIChkZWZzdWJzdCBw b2ludC1hdC1lb2wgKCZvcHRpb25hbCBOKQogICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24gKGVu ZC1vZi1saW5lIE4pIChwb2ludCkpKSkKICAgICAgKGVycm9yIG5pbCkpCiAgICAoY29uZGl0aW9u LWNhc2UgbmlsCiAgICAgICAgKHJlcXVpcmUgJ2N1c3RvbSkKICAgICAgKGVycm9yIG5pbCkpCiAg ICAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAgICAgKGlmIChmYm91bmRwICdtYXRjaC1zdHJpbmct bm8tcHJvcGVydGllcykKICAgICAgICAgICAgbmlsICA7IGdyZWF0CiAgICAgICAgICAoZGVmc3Vi c3QgbWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgKG51bSAmb3B0aW9uYWwgc3RyaW5nKQogICAg ICAgICAgICAiUmV0dXJuIHN0cmluZyBvZiB0ZXh0IG1hdGNoZWQgYnkgbGFzdCBzZWFyY2gsIHdp dGhvdXQgdGV4dCBwcm9wZXJ0aWVzLgpOVU0gc3BlY2lmaWVzIHdoaWNoIHBhcmVudGhlc2l6ZWQg ZXhwcmVzc2lvbiBpbiB0aGUgbGFzdCByZWdleHAuCiBWYWx1ZSBpcyBuaWwgaWYgTlVNdGggcGFp ciBkaWRuJ3QgbWF0Y2gsIG9yIHRoZXJlIHdlcmUgbGVzcyB0aGFuIE5VTSBwYWlycy4KWmVybyBt ZWFucyB0aGUgZW50aXJlIHRleHQgbWF0Y2hlZCBieSB0aGUgd2hvbGUgcmVnZXhwIG9yIHdob2xl IHN0cmluZy4KU1RSSU5HIHNob3VsZCBiZSBnaXZlbiBpZiB0aGUgbGFzdCBzZWFyY2ggd2FzIGJ5 IGBzdHJpbmctbWF0Y2gnIG9uIFNUUklORy4iCiAgICAgICAgICAgIChpZiAobWF0Y2gtYmVnaW5u aW5nIG51bSkKICAgICAgICAgICAgICAgIChpZiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAo bGV0ICgocmVzdWx0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmcgc3RyaW5n CgkJCQkgICAgICAobWF0Y2gtYmVnaW5uaW5nIG51bSkgKG1hdGNoLWVuZCBudW0pKSkpCiAgICAg ICAgICAgICAgICAgICAgICAoc2V0LXRleHQtcHJvcGVydGllcyAwIChsZW5ndGggcmVzdWx0KSBu aWwgcmVzdWx0KQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KQogICAgICAgICAgICAgICAg ICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChtYXRjaC1iZWdpbm5pbmcgbnVtKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1l bmQgbnVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChjdXJyZW50LWJ1ZmZlcikpKSkpCgkgICkKICAgICAgKGVycm9yIG5pbCkpCiAgICAoaWYgKGFu ZCAoZmVhdHVyZXAgJ2N1c3RvbSkgKGZib3VuZHAgJ2N1c3RvbS1kZWNsYXJlLXZhcmlhYmxlKSkK ICAgICAgICBuaWwgIDsgV2UndmUgZ290IHdoYXQgd2UgbmVlZGVkCiAgICAgIDs7IFdlIGhhdmUg dGhlIG9sZCBjdXN0b20tbGlicmFyeSwgaGFjayBhcm91bmQgaXQhCiAgICAgIChkZWZtYWNybyBk ZWZncm91cCAoJnJlc3QgX2FyZ3MpICBuaWwpCiAgICAgIChkZWZtYWNybyBjdXN0b21pemUgKCZy ZXN0IF9hcmdzKQogICAgICAgIChtZXNzYWdlCgkgIlNvcnJ5LCBDdXN0b21pemUgaXMgbm90IGF2 YWlsYWJsZSB3aXRoIHRoaXMgdmVyc2lvbiBvZiBFbWFjcyIpKQogICAgICAoZGVmbWFjcm8gZGVm Y3VzdG9tICh2YXIgdmFsdWUgZG9jICZyZXN0IF9hcmdzKQogICAgICAgIGAoZGVmdmFyICx2YXIg LHZhbHVlICxkb2MpKQogICAgICApCiAgICAoaWYgKGZib3VuZHAgJ2RlZmZhY2UpCiAgICAgICAg bmlsCQkJCTsgZ3JlYXQhCiAgICAgIChkZWZtYWNybyBkZWZmYWNlICh2YXIgdmFsdWVzIGRvYyAm cmVzdCBfYXJncykKICAgICAgICBgKG1ha2UtZmFjZSAsdmFyKSkKICAgICAgKQoKICAgIChpZiAo YW5kIChmZWF0dXJlcCAnY3VzdG9tKSAoZmJvdW5kcCAnY3VzdG9taXplLWdyb3VwKSkKICAgICAg ICBuaWwgIDsgV2UndmUgZ290IHdoYXQgd2UgbmVlZGVkCiAgICAgIDs7IFdlIGhhdmUgYW4gaW50 ZXJtZWRpYXRlIGN1c3RvbS1saWJyYXJ5LCBoYWNrIGFyb3VuZCBpdCEKICAgICAgKGRlZm1hY3Jv IGN1c3RvbWl6ZS1ncm91cCAodmFyICZyZXN0IF9hcmdzKQogICAgICAgIGAoY3VzdG9taXplICx2 YXIpKQogICAgICApCgogICAgKGRlZnZhciBpbmhpYml0LW1vZGlmaWNhdGlvbi1ob29rcykKICAg IChkZWZ2YXIgaW5oaWJpdC1wb2ludC1tb3Rpb24taG9va3MpCiAgICAoZGVmdmFyIGRlYWN0aXZh dGUtbWFyaykKICAgICkKICA7OwogIDs7IE9LLCBkbyB0aGlzIHN0dWZmIGlmIHdlIGFyZSBOT1Qg WEVtYWNzOgogICh1bmxlc3MgKGZlYXR1cmVwICd4ZW1hY3MpCiAgICAodW5sZXNzIChmYm91bmRw ICdyZWdpb24tYWN0aXZlLXApCiAgICAgIChkZWZtYWNybyByZWdpb24tYWN0aXZlLXAgKCkKCSco YW5kIHRyYW5zaWVudC1tYXJrLW1vZGUgbWFyay1hY3RpdmUpKSkpCiAgKQoKOzsgUHJvdmlkZSBh IHJlZ3VsYXIgZXhwcmVzc2lvbiBvcHRpbWl6YXRpb24gcm91dGluZSwgdXNpbmcgcmVnZXhwLW9w dAo7OyBpZiBwcm92aWRlZCBieSB0aGUgdXNlcidzIGVsaXNwIGxpYnJhcmllcwooZXZhbC1hbmQt Y29tcGlsZQogIDs7IFRoZSBiZWxvdyB3ZXJlIGRpc2FibGVkIHdoZW4gR05VIEVtYWNzIDIyIHdh cyByZWxlYXNlZDsKICA7OyBwZXJoYXBzIHNvbWUgc3RpbGwgbmVlZCB0byBiZSB0aGVyZSB0byBz dXBwb3J0IEVtYWNzIDIxLgogIChpZiAoZmVhdHVyZXAgJ3hlbWFjcykKICAgICAgKGlmIChmYm91 bmRwICdyZWdleHAtb3B0KQogICAgICAgICAgOzsgcmVnZXhwLW9wdCBpcyBkZWZpbmVkLCBkb2Vz IGl0IHRha2UgMyBvciAyIGFyZ3VtZW50cz8KICAgICAgICAgIChpZiAoZmJvdW5kcCAnZnVuY3Rp b24tbWF4LWFyZ3MpCiAgICAgICAgICAgICAgKGxldCAoKGFyZ3MgKGZ1bmN0aW9uLW1heC1hcmdz ICdyZWdleHAtb3B0KSkpCiAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICgo ZXEgYXJncyAzKSAgOyBJdCB0YWtlcyAzCiAgICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2Fz ZSBuaWwJOyBIaWRlIHRoaXMgZGVmdW4gZnJvbSBlbWFjc2VzCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7IHdpdGgganVzdCBhIHR3byBpbnB1dCByZWdleHAKICAgICAg ICAgICAgICAgICAgICAgIChkZWZ1biB2ZXJpbG9nLXJlZ2V4cC1vcHQgKGEgYikKICAgICAgICAg ICAgICAgICAgICAgICAgIkRlYWwgd2l0aCBkaWZmZXJpbmcgbnVtYmVyIG9mIHJlcXVpcmVkIGFy Z3VtZW50cyBmb3IgIGByZWdleHAtb3B0Jy4KICAgICAgICAgQ2FsbCBgcmVnZXhwLW9wdCcgb24g QSBhbmQgQi4iCiAgICAgICAgICAgICAgICAgICAgICAgIChyZWdleHAtb3B0IGEgYiB0KSkKICAg ICAgICAgICAgICAgICAgICAoZXJyb3IgbmlsKSkKICAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgICAgICgoZXEgYXJncyAyKSAgOyBJdCB0YWtlcyAyCiAgICAgICAgICAgICAgICAgIChk ZWZ1biB2ZXJpbG9nLXJlZ2V4cC1vcHQgKGEgYikKICAgICAgICAgICAgICAgICAgICAiQ2FsbCBg cmVnZXhwLW9wdCcgb24gQSBhbmQgQi4iCiAgICAgICAgICAgICAgICAgICAgKHJlZ2V4cC1vcHQg YSBiKSkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICh0IG5pbCkpKQogICAg ICAgICAgICA7OyBXZSBjYW4ndCB0ZWxsOyBhc3N1bWUgaXQgdGFrZXMgMgogICAgICAgICAgICAo ZGVmdW4gdmVyaWxvZy1yZWdleHAtb3B0IChhIGIpCiAgICAgICAgICAgICAgIkNhbGwgYHJlZ2V4 cC1vcHQnIG9uIEEgYW5kIEIuIgogICAgICAgICAgICAgIChyZWdleHAtb3B0IGEgYikpCiAgICAg ICAgICAgICkKICAgICAgICA7OyBUaGVyZSBpcyBubyByZWdleHAtb3B0LCBwcm92aWRlIG91ciBv d24KICAgICAgICAoZGVmdW4gdmVyaWxvZy1yZWdleHAtb3B0IChzdHJpbmdzICZvcHRpb25hbCBw YXJlbiBfc2h5KQogICAgICAgICAgKGxldCAoKG9wZW4gKGlmIHBhcmVuICJcXCgiICIiKSkgKGNs b3NlIChpZiBwYXJlbiAiXFwpIiAiIikpKQogICAgICAgICAgICAoY29uY2F0IG9wZW4gKG1hcGNv bmNhdCAncmVnZXhwLXF1b3RlIHN0cmluZ3MgIlxcfCIpIGNsb3NlKSkpCiAgICAgICAgKQogICAg OzsgRW1hY3MuCiAgICAoZGVmYWxpYXMgJ3Zlcmlsb2ctcmVnZXhwLW9wdCAncmVnZXhwLW9wdCkp KQoKOzsgZW1hY3MgPj0yMiBoYXMgbG9va2luZy1iYWNrLCBidXQgb2xkZXIgZW1hY3MgYW5kIHhl bWFjcyBkb24ndC4KOzsgVGhpcyBmdW5jdGlvbiBpcyBsaWZ0ZWQgZGlyZWN0bHkgZnJvbSBlbWFj cydzIHN1YnIuZWwKOzsgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBieSB4ZW1hY3MuCjs7IFRoZSBp ZGVhIGZvciB0aGlzIHdhcyBib3Jyb3dlZCBmcm9tIG9yZy1tb2RlIHZpYSB0aGlzIGxpbms6Cjs7 IGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9yL2VtYWNzLW9yZ21vZGUvMjAwOS0xMi9tc2cwMDAzMi5o dG1sCihldmFsLWFuZC1jb21waWxlCiAgKGNvbmQKICAgKChmYm91bmRwICdsb29raW5nLWJhY2sp CiAgICAoZGVmYWxpYXMgJ3Zlcmlsb2ctbG9va2luZy1iYWNrICdsb29raW5nLWJhY2spKQogICAo dAogICAgKGRlZnVuIHZlcmlsb2ctbG9va2luZy1iYWNrIChyZWdleHAgbGltaXQgJm9wdGlvbmFs IGdyZWVkeSkKICAgICAgIlJldHVybiBub24tbmlsIGlmIHRleHQgYmVmb3JlIHBvaW50IG1hdGNo ZXMgcmVndWxhciBleHByZXNzaW9uIFJFR0VYUC4KTGlrZSBgbG9va2luZy1hdCcgZXhjZXB0IG1h dGNoZXMgYmVmb3JlIHBvaW50LCBhbmQgaXMgc2xvd2VyLgpMSU1JVCBpZiBub24tbmlsIHNwZWVk cyB1cCB0aGUgc2VhcmNoIGJ5IHNwZWNpZnlpbmcgYSBtaW5pbXVtCnN0YXJ0aW5nIHBvc2l0aW9u LCB0byBhdm9pZCBjaGVja2luZyBtYXRjaGVzIHRoYXQgd291bGQgc3RhcnQKYmVmb3JlIExJTUlU LgoKSWYgR1JFRURZIGlzIG5vbi1uaWwsIGV4dGVuZCB0aGUgbWF0Y2ggYmFja3dhcmRzIGFzIGZh ciBhcwpwb3NzaWJsZSwgc3RvcHBpbmcgd2hlbiBhIHNpbmdsZSBhZGRpdGlvbmFsIHByZXZpb3Vz IGNoYXJhY3RlcgpjYW5ub3QgYmUgcGFydCBvZiBhIG1hdGNoIGZvciBSRUdFWFAuICBXaGVuIHRo ZSBtYXRjaCBpcwpleHRlbmRlZCwgaXRzIHN0YXJ0aW5nIHBvc2l0aW9uIGlzIGFsbG93ZWQgdG8g b2NjdXIgYmVmb3JlCkxJTUlULgoKQXMgYSBnZW5lcmFsIHJlY29tbWVuZGF0aW9uLCB0cnkgdG8g YXZvaWQgdXNpbmcgYGxvb2tpbmctYmFjaycKd2hlcmV2ZXIgcG9zc2libGUsIHNpbmNlIGl0IGlz IHNsb3cuIgogICAgICAobGV0ICgoc3RhcnQgKHBvaW50KSkKICAgICAgICAgICAgKHBvcwogICAg ICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAgIChhbmQgKHJlLXNlYXJjaC1i YWNrd2FyZCAoY29uY2F0ICJcXCg/OiIgcmVnZXhwICJcXClcXD0iKSBsaW1pdCB0KQogICAgICAg ICAgICAgICAgICAgIChwb2ludCkpKSkpCiAgICAgICAgKGlmIChhbmQgZ3JlZWR5IHBvcykKICAg ICAgICAgICAgKHNhdmUtcmVzdHJpY3Rpb24KICAgICAgICAgICAgICAobmFycm93LXRvLXJlZ2lv biAocG9pbnQtbWluKSBzdGFydCkKICAgICAgICAgICAgICAod2hpbGUgKGFuZCAoPiBwb3MgKHBv aW50LW1pbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHBvcykKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChiYWNrd2FyZC1jaGFyIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bG9va2luZy1hdCAoY29uY2F0ICJcXCg/OiIgIHJlZ2V4cCAiXFwpXFwnIikpKSkKICAgICAgICAg ICAgICAgIChzZXRxIHBvcyAoMS0gcG9zKSkpCiAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9u CiAgICAgICAgICAgICAgICAoZ290by1jaGFyIHBvcykKICAgICAgICAgICAgICAgIChsb29raW5n LWF0IChjb25jYXQgIlxcKD86IiAgcmVnZXhwICJcXClcXCciKSkpKSkKICAgICAgICAobm90IChu dWxsIHBvcykpKSkpKSkKCihldmFsLWFuZC1jb21waWxlCiAgKGNvbmQKICAgKChmYm91bmRwICdy ZXN0b3JlLWJ1ZmZlci1tb2RpZmllZC1wKQogICAgOzsgRmFzdGVyLCBhcyBkb2VzIG5vdCB1cGRh dGUgbW9kZSBsaW5lIHdoZW4gbm90aGluZyBjaGFuZ2VzCiAgICAoZGVmYWxpYXMgJ3Zlcmlsb2ct cmVzdG9yZS1idWZmZXItbW9kaWZpZWQtcCAncmVzdG9yZS1idWZmZXItbW9kaWZpZWQtcCkpCiAg ICh0CiAgICAoZGVmYWxpYXMgJ3Zlcmlsb2ctcmVzdG9yZS1idWZmZXItbW9kaWZpZWQtcCAnc2V0 LWJ1ZmZlci1tb2RpZmllZC1wKSkpKQoKKGV2YWwtYW5kLWNvbXBpbGUKICAoY29uZAogICAoKGZi b3VuZHAgJ3F1aXQtd2luZG93KQogICAgKGRlZmFsaWFzICd2ZXJpbG9nLXF1aXQtd2luZG93ICdx dWl0LXdpbmRvdykpCiAgICh0CiAgICAoZGVmdW4gdmVyaWxvZy1xdWl0LXdpbmRvdyAoa2lsbC1p Z25vcmVkIHdpbmRvdykKICAgICAgIlF1aXQgV0lORE9XIGFuZCBidXJ5IGl0cyBidWZmZXIuIEtJ TEwtSUdOT1JFRCBpcyBpZ25vcmVkLiIKICAgICAgKGRlbGV0ZS13aW5kb3cgd2luZG93KSkpKSkK CihldmFsLWFuZC1jb21waWxlCiAgOzsgQm90aCB4ZW1hY3MgYW5kIGVtYWNzCiAgKGNvbmRpdGlv bi1jYXNlIG5pbAogICAgICAocmVxdWlyZSAnZGlmZikgIDsgZGlmZi1jb21tYW5kIGFuZCBkaWZm LXN3aXRjaGVzCiAgICAoZXJyb3IgbmlsKSkKICAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAgIChy ZXF1aXJlICdjb21waWxlKSAgOyBjb21waWxhdGlvbi1lcnJvci1yZWdleHAtYWxpc3QtYWxpc3QK ICAgIChlcnJvciBuaWwpKQogIChjb25kaXRpb24tY2FzZSBuaWwKICAgICAgKHVubGVzcyAoZmJv dW5kcCAnYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2spICA7IEVtYWNzIDIyIGFkZGVkCgkoZGVm bWFjcm8gYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2sgKCkgKGJ1ZmZlci1tb2RpZmllZC10aWNr KSkpCiAgICAoZXJyb3IgbmlsKSkKICA7OyBBZGRlZCBpbiBFbWFjcyAyMy4xCiAgKGNvbmRpdGlv bi1jYXNlIG5pbAogICAgICAodW5sZXNzIChmYm91bmRwICdpZ25vcmUtZXJyb3JzKQogICAgICAg IChkZWZtYWNybyBpZ25vcmUtZXJyb3JzICgmcmVzdCBib2R5KQogICAgICAgICAgKGRlY2xhcmUg KGRlYnVnIHQpIChpbmRlbnQgMCkpCiAgICAgICAgICBgKGNvbmRpdGlvbi1jYXNlIG5pbCAocHJv Z24gLEBib2R5KSAoZXJyb3IgbmlsKSkpKSkKICA7OyBBZGRlZCBpbiBFbWFjcyAyNC4xCiAgKGNv bmRpdGlvbi1jYXNlIG5pbAogICAgICAodW5sZXNzIChmYm91bmRwICdwcm9nLW1vZGUpCgkoZGVm aW5lLWRlcml2ZWQtbW9kZSBwcm9nLW1vZGUgZnVuZGFtZW50YWwtbW9kZSAiUHJvZyIpKQogICAg KGVycm9yIG5pbCkpCiAgOzsgQWRkZWQgaW4gRW1hY3MgMjUuMQogIChjb25kaXRpb24tY2FzZSBu aWwKICAgICAgKHVubGVzcyAoZmJvdW5kcCAnZm9yd2FyZC13b3JkLXN0cmljdGx5KQogICAgICAg IChkZWZhbGlhcyAnZm9yd2FyZC13b3JkLXN0cmljdGx5ICdmb3J3YXJkLXdvcmQpKQogICAgKGVy cm9yIG5pbCkpKQoKKGV2YWwtd2hlbi1jb21waWxlCiAgKGRlZnVuIHZlcmlsb2ctcmVnZXhwLXdv cmRzIChhKQogICAgIkNhbGwgYHJlZ2V4cC1vcHQnIHdpdGggd29yZCBkZWxpbWl0ZXJzIGZvciB0 aGUgd29yZHMgQS4iCiAgICAoY29uY2F0ICJcXDwiICh2ZXJpbG9nLXJlZ2V4cC1vcHQgYSB0KSAi XFw+IikpKQooZGVmdW4gdmVyaWxvZy1yZWdleHAtd29yZHMgKGEpCiAgIkNhbGwgYHJlZ2V4cC1v cHQnIHdpdGggd29yZCBkZWxpbWl0ZXJzIGZvciB0aGUgd29yZHMgQS4iCiAgOzsgVGhlIEZBUSBy ZWZlcmVuY2VzIHRoaXMgZnVuY3Rpb24sIHNvIHVzZXIgTElTUCBzb21ldGltZXMgY2FsbHMgaXQK ICAoY29uY2F0ICJcXDwiICh2ZXJpbG9nLXJlZ2V4cC1vcHQgYSB0KSAiXFw+IikpCgooZGVmdW4g dmVyaWxvZy1lYXN5LW1lbnUtZmlsdGVyIChtZW51KQogICJGaWx0ZXIgYGVhc3ktbWVudS1kZWZp bmUnIE1FTlUgdG8gc3VwcG9ydCBuZXcgZmVhdHVyZXMuIgogIChjb25kICgobm90IChmZWF0dXJl cCAneGVtYWNzKSkKICAgICAgICAgbWVudSkgIDsgR05VIEVtYWNzIC0gcGFzc3RocnUKCTs7IFhF bWFjcyBkb2Vzbid0IHN1cHBvcnQgOmhlbHAuICBTdHJpcCBpdC4KCTs7IFJlY3Vyc2l2ZWx5IGZp bHRlciB0aGUgYSBzdWJtZW51CgkoKGxpc3RwIG1lbnUpCgkgKG1hcGNhciAndmVyaWxvZy1lYXN5 LW1lbnUtZmlsdGVyIG1lbnUpKQoJOzsgTG9vayBmb3IgWzpoZWxwICJibGFoIl0gYW5kIHJlbW92 ZQoJKCh2ZWN0b3JwIG1lbnUpCgkgKGxldCAoKGkgMCkgKG91dCBbXSkpCgkgICAod2hpbGUgKDwg aSAobGVuZ3RoIG1lbnUpKQoJICAgICAoaWYgKGVxdWFsIDpoZWxwIChhcmVmIG1lbnUgaSkpCgkJ IChzZXRxIGkgKCsgMiBpKSkKCSAgICAgICAoc2V0cSBvdXQgKHZjb25jYXQgb3V0ICh2ZWN0b3Ig KGFyZWYgbWVudSBpKSkpCgkJICAgICBpICgxKyBpKSkpKQoJICAgb3V0KSkKICAgICAgICAodCBt ZW51KSkpICA7IERlZmF1bHQgLSBvawo7Oyh2ZXJpbG9nLWVhc3ktbWVudS1maWx0ZXIKOzsgIGAo IlZlcmlsb2ciICgiTUEiIFsiU0FBIiBuaWwgOmhlbHAgIkhlbHAgU0FBIl0gWyJTQUIiIG5pbCA6 aGVscCAiSGVscCBTQUEiXSkKOzsgICAgICItLS0tIiBbIk1CIiBuaWwgOmhlbHAgIkhlbHAgTUIi XSkpCgooZGVmdW4gdmVyaWxvZy1kZWZpbmUtYWJicmV2LXRhYmxlICh0YWJsZW5hbWUgZGVmaW5p dGlvbnMgJm9wdGlvbmFsIGRvY3N0cmluZyAmcmVzdCBwcm9wcykKICAiRmlsdGVyIGBkZWZpbmUt YWJicmV2LXRhYmxlJyBUQUJMRU5BTUUgREVGSU5JVElPTlMKUHJvdmlkZXMgRE9DU1RSSU5HIFBS T1BTIGluIG5ld2VyIEVtYWNzICgyMy4xKS4iCiAgKGNvbmRpdGlvbi1jYXNlIG5pbAogICAgICAo YXBwbHkgJ2RlZmluZS1hYmJyZXYtdGFibGUgdGFibGVuYW1lIGRlZmluaXRpb25zIGRvY3N0cmlu ZyBwcm9wcykKICAgIChlcnJvcgogICAgIChkZWZpbmUtYWJicmV2LXRhYmxlIHRhYmxlbmFtZSBk ZWZpbml0aW9ucykpKSkKCihkZWZ1biB2ZXJpbG9nLWRlZmluZS1hYmJyZXYgKHRhYmxlIG5hbWUg ZXhwYW5zaW9uICZvcHRpb25hbCBob29rKQogICJGaWx0ZXIgYGRlZmluZS1hYmJyZXYnIFRBQkxF IE5BTUUgRVhQQU5TSU9OIGFuZCBjYWxsIEhPT0suClByb3ZpZGVzIFNZU1RFTS1GTEFHIGluIG5l d2VyIEVtYWNzLiIKICAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAgIChkZWZpbmUtYWJicmV2IHRh YmxlIG5hbWUgZXhwYW5zaW9uIGhvb2sgMCB0KQogICAgKGVycm9yCiAgICAgKGRlZmluZS1hYmJy ZXYgdGFibGUgbmFtZSBleHBhbnNpb24gaG9vaykpKSkKCihkZWZ1biB2ZXJpbG9nLWN1c3RvbWl6 ZSAoKQogICJDdXN0b21pemUgdmFyaWFibGVzIGFuZCBvdGhlciBzZXR0aW5ncyB1c2VkIGJ5IFZl cmlsb2ctTW9kZS4iCiAgKGludGVyYWN0aXZlKQogIChjdXN0b21pemUtZ3JvdXAgJ3Zlcmlsb2ct bW9kZSkpCgooZGVmdW4gdmVyaWxvZy1mb250LWN1c3RvbWl6ZSAoKQogICJDdXN0b21pemUgZm9u dHMgdXNlZCBieSBWZXJpbG9nLU1vZGUuIgogIChpbnRlcmFjdGl2ZSkKICAoaWYgKGZib3VuZHAg J2N1c3RvbWl6ZS1hcHJvcG9zKQogICAgICAoY3VzdG9taXplLWFwcm9wb3MgImZvbnQtbG9jay0q IiAnZmFjZXMpKSkKCihkZWZ1biB2ZXJpbG9nLWJvb2xlYW5wICh2YWx1ZSkKICAiUmV0dXJuIHQg aWYgVkFMVUUgaXMgYm9vbGVhbi4KVGhpcyBpbXBsZW1lbnRzIEdOVSBFbWFjcyAyMi4xJ3MgYGJv b2xlYW5wJyBmdW5jdGlvbiBpbiBlYXJsaWVyIEVtYWNzLgpUaGlzIGZ1bmN0aW9uIG1heSBiZSBy ZW1vdmVkIHdoZW4gRW1hY3MgMjEgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4iCiAgKG9yIChlcXVh bCB2YWx1ZSB0KSAoZXF1YWwgdmFsdWUgbmlsKSkpCgooZGVmdW4gdmVyaWxvZy1pbnNlcnQtbGFz dC1jb21tYW5kLWV2ZW50ICgpCiAgIkluc2VydCB0aGUgYGxhc3QtY29tbWFuZC1ldmVudCcuIgog IChpbnNlcnQgKGlmIChmZWF0dXJlcCAneGVtYWNzKQoJICAgICAgOzsgWEVtYWNzIDIxLjUgZG9l c24ndCBsaWtlIGxhc3QtY29tbWFuZC1ldmVudAoJICAgICAgbGFzdC1jb21tYW5kLWNoYXIKCSAg ICA7OyBBbmQgR05VIEVtYWNzIDIyIGhhcyBvYnNvbGV0ZWQgbGFzdC1jb21tYW5kLWNoYXIKCSAg ICBsYXN0LWNvbW1hbmQtZXZlbnQpKSkKCihkZWZ2YXIgdmVyaWxvZy1uby1jaGFuZ2UtZnVuY3Rp b25zIG5pbAogICJUcnVlIGlmIGBhZnRlci1jaGFuZ2UtZnVuY3Rpb25zJyBpcyBkaXNhYmxlZC4K VXNlIG9mIGBzeW50YXgtcHBzcycgbWF5IGJyZWFrLCBhcyBwcHNzJ3MgY2FjaGUgbWF5IGdldCBj b3JydXB0ZWQuIikKCihkZWZ2YXIgdmVyaWxvZy1pbi1ob29rcyBuaWwKICAiVHJ1ZSB3aGVuIHdp dGhpbiBhIGB2ZXJpbG9nLXJ1bi1ob29rcycgYmxvY2suIikKCihkZWZtYWNybyB2ZXJpbG9nLXJ1 bi1ob29rcyAoJnJlc3QgaG9va3MpCiAgIlJ1biBlYWNoIGhvb2sgaW4gSE9PS1MgdXNpbmcgYHJ1 bi1ob29rcycuClNldCBgdmVyaWxvZy1pbi1ob29rcycgZHVyaW5nIHRoaXMgdGltZSwgdG8gYXNz aXN0IEFVVE8gY2FjaGVzLiIKICBgKGxldCAoKHZlcmlsb2ctaW4taG9va3MgdCkpCiAgICAgKHJ1 bi1ob29rcyAsQGhvb2tzKSkpCgooZGVmdW4gdmVyaWxvZy1zeW50YXgtcHBzcyAoJm9wdGlvbmFs IHBvcykKICAod2hlbiB2ZXJpbG9nLW5vLWNoYW5nZS1mdW5jdGlvbnMKICAgIChpZiB2ZXJpbG9n LWluLWhvb2tzCgkodmVyaWxvZy1zY2FuLWNhY2hlLWZsdXNoKQogICAgICA7OyBlbHNlIGRvbid0 IGxldCB0aGUgQVVUTyBjb2RlIGl0c2VsZiBnZXQgYXdheSB3aXRoIGZsdXNoaW5nIHRoZSBjYWNo ZSwKICAgICAgOzsgYXMgdGhhdCdsbCBtYWtlIHRoaW5ncyB2ZXJ5IHNsb3cKICAgICAgKGJhY2t0 cmFjZSkKICAgICAgKGVycm9yICIlczogSW50ZXJuYWwgcHJvYmxlbTsgdXNlIG9mIHN5bnRheC1w cHNzIHdoZW4gY2FjaGUgbWF5IGJlIGNvcnJ1cHQiCgkgICAgICh2ZXJpbG9nLXBvaW50LXRleHQp KSkpCiAgKGlmIChmYm91bmRwICdzeW50YXgtcHBzcykKICAgICAgKHN5bnRheC1wcHNzIHBvcykK ICAgIChwYXJzZS1wYXJ0aWFsLXNleHAgKHBvaW50LW1pbikgKG9yIHBvcyAocG9pbnQpKSkpKQoK KGRlZmdyb3VwIHZlcmlsb2ctbW9kZSBuaWwKICAiTWFqb3IgbW9kZSBmb3IgVmVyaWxvZyBzb3Vy Y2UgY29kZS4iCiAgOnZlcnNpb24gIjIyLjIiCiAgOmdyb3VwICdsYW5ndWFnZXMpCgo7OyAoZGVm Z3JvdXAgdmVyaWxvZy1tb2RlLWZvbnRzIG5pbAo7OyAgICJGYWNpbGl0YXRlcyBlYXN5IGN1c3Rv bWl6YXRpb24gZm9udHMgdXNlZCBpbiBWZXJpbG9nIHNvdXJjZSB0ZXh0Igo7OyAgIDpsaW5rICco Y3VzdG9taXplLWFwcm9wb3MgImZvbnQtbG9jay0qIiAnZmFjZXMpCjs7ICAgOmdyb3VwICd2ZXJp bG9nLW1vZGUpCgooZGVmZ3JvdXAgdmVyaWxvZy1tb2RlLWluZGVudCBuaWwKICAiQ3VzdG9taXpl IGluZGVudGF0aW9uIGFuZCBoaWdobGlnaHRpbmcgb2YgVmVyaWxvZyBzb3VyY2UgdGV4dC4iCiAg Omdyb3VwICd2ZXJpbG9nLW1vZGUpCgooZGVmZ3JvdXAgdmVyaWxvZy1tb2RlLWFjdGlvbnMgbmls CiAgIkN1c3RvbWl6ZSBhY3Rpb25zIG9uIFZlcmlsb2cgc291cmNlIHRleHQuIgogIDpncm91cCAn dmVyaWxvZy1tb2RlKQoKKGRlZmdyb3VwIHZlcmlsb2ctbW9kZS1hdXRvIG5pbAogICJDdXN0b21p emUgQVVUTyBhY3Rpb25zIHdoZW4gZXhwYW5kaW5nIFZlcmlsb2cgc291cmNlIHRleHQuIgogIDpn cm91cCAndmVyaWxvZy1tb2RlKQoKKGRlZnZhciB2ZXJpbG9nLWRlYnVnIG5pbAogICJOb24tbmls IG1lYW5zIGVuYWJsZSBkZWJ1ZyBtZXNzYWdlcyBmb3IgYHZlcmlsb2ctbW9kZScgaW50ZXJuYWxz LiIpCgooZGVmdmFyIHZlcmlsb2ctd2Fybi1mYXRhbCBuaWwKICAiTm9uLW5pbCBtZWFucyBgdmVy aWxvZy13YXJuLWVycm9yJyB3YXJuaW5ncyBhcmUgZmF0YWwgYGVycm9yJ3MuIikKCihkZWZjdXN0 b20gdmVyaWxvZy1saW50ZXIKICAiZWNobyAnTm8gdmVyaWxvZy1saW50ZXIgc2V0LCBzZWUgXCJN LXggZGVzY3JpYmUtdmFyaWFibGUgdmVyaWxvZy1saW50ZXJcIiciCiAgIlVuaXggcHJvZ3JhbSBh bmQgYXJndW1lbnRzIHRvIGNhbGwgdG8gcnVuIGEgbGludCBjaGVja2VyIG9uIFZlcmlsb2cgc291 cmNlLgpEZXBlbmRpbmcgb24gdGhlIGB2ZXJpbG9nLXNldC1jb21waWxlLWNvbW1hbmQnLCB0aGlz IG1heSBiZSBpbnZva2VkIHdoZW4KeW91IHR5cGUgXFxbY29tcGlsZV0uICBXaGVuIHRoZSBjb21w aWxlIGNvbXBsZXRlcywgXFxbbmV4dC1lcnJvcl0gd2lsbCB0YWtlCnlvdSB0byB0aGUgbmV4dCBs aW50IGVycm9yLiIKICA6dHlwZSAnc3RyaW5nCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYWN0aW9u cykKOzsgV2UgZG9uJ3QgbWFyayBpdCBzYWZlLCBhcyBpdCdzIHVzZWQgYXMgYSBzaGVsbCBjb21t YW5kCgooZGVmY3VzdG9tIHZlcmlsb2ctY292ZXJhZ2UKICAiZWNobyAnTm8gdmVyaWxvZy1jb3Zl cmFnZSBzZXQsIHNlZSBcIk0teCBkZXNjcmliZS12YXJpYWJsZSB2ZXJpbG9nLWNvdmVyYWdlXCIn IgogICJQcm9ncmFtIGFuZCBhcmd1bWVudHMgdG8gdXNlIHRvIGFubm90YXRlIGZvciBjb3ZlcmFn ZSBWZXJpbG9nIHNvdXJjZS4KRGVwZW5kaW5nIG9uIHRoZSBgdmVyaWxvZy1zZXQtY29tcGlsZS1j b21tYW5kJywgdGhpcyBtYXkgYmUgaW52b2tlZCB3aGVuCnlvdSB0eXBlIFxcW2NvbXBpbGVdLiAg V2hlbiB0aGUgY29tcGlsZSBjb21wbGV0ZXMsIFxcW25leHQtZXJyb3JdIHdpbGwgdGFrZQp5b3Ug dG8gdGhlIG5leHQgbGludCBlcnJvci4iCiAgOnR5cGUgJ3N0cmluZwogIDpncm91cCAndmVyaWxv Zy1tb2RlLWFjdGlvbnMpCjs7IFdlIGRvbid0IG1hcmsgaXQgc2FmZSwgYXMgaXQncyB1c2VkIGFz IGEgc2hlbGwgY29tbWFuZAoKKGRlZmN1c3RvbSB2ZXJpbG9nLXNpbXVsYXRvcgogICJlY2hvICdO byB2ZXJpbG9nLXNpbXVsYXRvciBzZXQsIHNlZSBcIk0teCBkZXNjcmliZS12YXJpYWJsZSB2ZXJp bG9nLXNpbXVsYXRvclwiJyIKICAiUHJvZ3JhbSBhbmQgYXJndW1lbnRzIHRvIHVzZSB0byBpbnRl cnByZXQgVmVyaWxvZyBzb3VyY2UuCkRlcGVuZGluZyBvbiB0aGUgYHZlcmlsb2ctc2V0LWNvbXBp bGUtY29tbWFuZCcsIHRoaXMgbWF5IGJlIGludm9rZWQgd2hlbgp5b3UgdHlwZSBcXFtjb21waWxl XS4gIFdoZW4gdGhlIGNvbXBpbGUgY29tcGxldGVzLCBcXFtuZXh0LWVycm9yXSB3aWxsIHRha2UK eW91IHRvIHRoZSBuZXh0IGxpbnQgZXJyb3IuIgogIDp0eXBlICdzdHJpbmcKICA6Z3JvdXAgJ3Zl cmlsb2ctbW9kZS1hY3Rpb25zKQo7OyBXZSBkb24ndCBtYXJrIGl0IHNhZmUsIGFzIGl0J3MgdXNl ZCBhcyBhIHNoZWxsIGNvbW1hbmQKCihkZWZjdXN0b20gdmVyaWxvZy1jb21waWxlcgogICJlY2hv ICdObyB2ZXJpbG9nLWNvbXBpbGVyIHNldCwgc2VlIFwiTS14IGRlc2NyaWJlLXZhcmlhYmxlIHZl cmlsb2ctY29tcGlsZXJcIiciCiAgIlByb2dyYW0gYW5kIGFyZ3VtZW50cyB0byB1c2UgdG8gY29t cGlsZSBWZXJpbG9nIHNvdXJjZS4KRGVwZW5kaW5nIG9uIHRoZSBgdmVyaWxvZy1zZXQtY29tcGls ZS1jb21tYW5kJywgdGhpcyBtYXkgYmUgaW52b2tlZCB3aGVuCnlvdSB0eXBlIFxcW2NvbXBpbGVd LiAgV2hlbiB0aGUgY29tcGlsZSBjb21wbGV0ZXMsIFxcW25leHQtZXJyb3JdIHdpbGwgdGFrZQp5 b3UgdG8gdGhlIG5leHQgbGludCBlcnJvci4iCiAgOnR5cGUgJ3N0cmluZwogIDpncm91cCAndmVy aWxvZy1tb2RlLWFjdGlvbnMpCjs7IFdlIGRvbid0IG1hcmsgaXQgc2FmZSwgYXMgaXQncyB1c2Vk IGFzIGEgc2hlbGwgY29tbWFuZAoKKGRlZmN1c3RvbSB2ZXJpbG9nLXByZXByb2Nlc3NvcgogICJ2 ZXJpbGF0b3IgLUUgX19GTEFHU19fIF9fRklMRV9fIgogICJQcm9ncmFtIGFuZCBhcmd1bWVudHMg dG8gdXNlIHRvIHByZXByb2Nlc3MgVmVyaWxvZyBzb3VyY2UuClRoaXMgaXMgaW52b2tlZCB3aXRo IGB2ZXJpbG9nLXByZXByb2Nlc3MnLCBhbmQgZGVwZW5kaW5nIG9uIHRoZQpgdmVyaWxvZy1zZXQt Y29tcGlsZS1jb21tYW5kJywgbWF5IGFsc28gYmUgaW52b2tlZCB3aGVuIHlvdSB0eXBlClxcW2Nv bXBpbGVdLiAgV2hlbiB0aGUgY29tcGlsZSBjb21wbGV0ZXMsIFxcW25leHQtZXJyb3JdIHdpbGwK dGFrZSB5b3UgdG8gdGhlIG5leHQgbGludCBlcnJvci4iCiAgOnR5cGUgJ3N0cmluZwogIDpncm91 cCAndmVyaWxvZy1tb2RlLWFjdGlvbnMpCjs7IFdlIGRvbid0IG1hcmsgaXQgc2FmZSwgYXMgaXQn cyB1c2VkIGFzIGEgc2hlbGwgY29tbWFuZAoKKGRlZnZhciB2ZXJpbG9nLXByZXByb2Nlc3MtaGlz dG9yeSBuaWwKICAiSGlzdG9yeSBmb3IgYHZlcmlsb2ctcHJlcHJvY2VzcycuIikKCihkZWZ2YXIg dmVyaWxvZy10b29sICd2ZXJpbG9nLWxpbnRlcgogICJXaGljaCB0b29sIHRvIHVzZSBmb3IgYnVp bGRpbmcgY29tcGlsZXItY29tbWFuZC4KRWl0aGVyIG5pbCwgYHZlcmlsb2ctbGludGVyJywgYHZl cmlsb2ctY29tcGlsZXInLApgdmVyaWxvZy1jb3ZlcmFnZScsIGB2ZXJpbG9nLXByZXByb2Nlc3Nv cicsIG9yIGB2ZXJpbG9nLXNpbXVsYXRvcicuCkFsdGVybmF0aXZlbHkgdXNlIHRoZSBcIkNob29z ZSBDb21waWxhdGlvbiBBY3Rpb25cIiBtZW51LiAgU2VlCmB2ZXJpbG9nLXNldC1jb21waWxlLWNv bW1hbmQnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIpCgooZGVmY3VzdG9tIHZlcmlsb2ctaGlnaGxp Z2h0LXRyYW5zbGF0ZS1vZmYgbmlsCiAgIk5vbi1uaWwgbWVhbnMgYmFja2dyb3VuZC1oaWdobGln aHQgY29kZSBleGNsdWRlZCBmcm9tIHRyYW5zbGF0aW9uLgpUaGF0IGlzLCBhbGwgY29kZSBiZXR3 ZWVuIFwiLy8gc3lub3BzeXMgdHJhbnNsYXRlX29mZlwiIGFuZApcIi8vIHN5bm9wc3lzIHRyYW5z bGF0ZV9vblwiIGlzIGhpZ2hsaWdodGVkIHVzaW5nIGEgZGlmZmVyZW50IGJhY2tncm91bmQgY29s b3IKXChmYWNlIGB2ZXJpbG9nLWZvbnQtbG9jay10cmFuc2xhdGUtb2ZmLWZhY2UnKS4KCk5vdGU6 IFRoaXMgd2lsbCBzbG93IGRvd24gb24tdGhlLWZseSBmb250aWZpY2F0aW9uIChhbmQgdGh1cyBl ZGl0aW5nKS4KCk5vdGU6IEFjdGl2YXRlIHRoZSBuZXcgc2V0dGluZyBpbiBhIFZlcmlsb2cgYnVm ZmVyIGJ5IHJlLWZvbnRpZnlpbmcgaXQgKG1lbnUKZW50cnkgXCJGb250aWZ5IEJ1ZmZlclwiKS4g IFhFbWFjczogdHVybiBvZmYgYW5kIG9uIGZvbnQgbG9ja2luZy4iCiAgOnR5cGUgJ2Jvb2xlYW4K ICA6Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1pbmRlbnQpCjs7IE5vdGUgd2UgZG9uJ3QgdXNlIDpzYWZl LCBhcyB0aGF0IHdvdWxkIGJyZWFrIG9uIEVtYWNzZW4gYmVmb3JlIDIyLjAuCihwdXQgJ3Zlcmls b2ctaGlnaGxpZ2h0LXRyYW5zbGF0ZS1vZmYgJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ3Zlcmlsb2ct Ym9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmlsb2ctYXV0by1saW5ldXAgJ2RlY2xhcmF0aW9ucwog ICJUeXBlIG9mIHN0YXRlbWVudHMgdG8gbGluZXVwIGFjcm9zcyBtdWx0aXBsZSBsaW5lcy4KSWYg YGFsbCcgaXMgc2VsZWN0ZWQsIHRoZW4gYWxsIGxpbmUgdXBzIGRlc2NyaWJlZCBiZWxvdyBhcmUg ZG9uZS4KCklmIGBkZWNsYXJhdGlvbnMnLCB0aGVuIGp1c3QgZGVjbGFyYXRpb25zIGFyZSBsaW5l ZCB1cCB3aXRoIGFueQpwcmVjZWRpbmcgZGVjbGFyYXRpb25zLCB0YWtpbmcgaW50byBhY2NvdW50 IHdpZHRocyBhbmQgdGhlIGxpa2UsCnNvIG9yIGV4YW1wbGUgdGhlIGNvZGU6CglyZWcgWzMxOjBd IGE7CglyZWcgYjsKd291bGQgYmVjb21lCglyZWcgWzMxOjBdIGE7CglyZWcgICAgICAgIGI7CgpJ ZiBgYXNzaWdubWVudCcsIHRoZW4gYXNzaWdubWVudHMgYXJlIGxpbmVkIHVwIHdpdGggYW55IHBy ZWNlZGluZwphc3NpZ25tZW50cywgc28gZm9yIGV4YW1wbGUgdGhlIGNvZGUKCWFfbG9uZ192YXJp YWJsZSA8PSBiICsgYzsKCWQgPSBlICsgZjsKd291bGQgYmVjb21lCglhX2xvbmdfdmFyaWFibGUg PD0gYiArIGM7CglkICAgICAgICAgICAgICAgID0gZSArIGY7CgpJbiBvcmRlciB0byBzcGVlZCB1 cCBlZGl0aW5nLCBsYXJnZSBibG9ja3Mgb2Ygc3RhdGVtZW50cyBhcmUgbGluZWQgdXAKb25seSB3 aGVuIGEgXFxbdmVyaWxvZy1wcmV0dHktZXhwcl0gaXMgdHlwZWQ7IGFuZCBsYXJnZSBibG9ja3Mg b2YgZGVjbGFyYXRpb25zCmFyZSBsaW5ldXAgb25seSB3aGVuIFxcW3Zlcmlsb2ctcHJldHR5LWRl Y2xhcmF0aW9uc10gaXMgdHlwZWQuIgoKICA6dHlwZSAnKHJhZGlvIChjb25zdCA6dGFnICJMaW5l IHVwIEFzc2lnbm1lbnRzIGFuZCBEZWNsYXJhdGlvbnMiIGFsbCkKCQkoY29uc3QgOnRhZyAiTGlu ZSB1cCBBc3NpZ25tZW50IHN0YXRlbWVudHMiIGFzc2lnbm1lbnRzICkKCQkoY29uc3QgOnRhZyAi TGluZSB1cCBEZWNsYXJhdGlvbnMiIGRlY2xhcmF0aW9ucykKCQkoZnVuY3Rpb24gOnRhZyAiT3Ro ZXIiKSkKICA6Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1pbmRlbnQgKQoocHV0ICd2ZXJpbG9nLWF1dG8t bGluZXVwICdzYWZlLWxvY2FsLXZhcmlhYmxlCiAgICAgKGxhbWJkYSAoeCkgKG1lbXEgeCAnKG5p bCBhbGwgYXNzaWdubWVudHMgZGVjbGFyYXRpb25zKSkpKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWlu ZGVudC1sZXZlbCAzCiAgIkluZGVudGF0aW9uIG9mIFZlcmlsb2cgc3RhdGVtZW50cyB3aXRoIHJl c3BlY3QgdG8gY29udGFpbmluZyBibG9jay4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtaW5kZW50 CiAgOnR5cGUgJ2ludGVnZXIpCihwdXQgJ3Zlcmlsb2ctaW5kZW50LWxldmVsICdzYWZlLWxvY2Fs LXZhcmlhYmxlICdpbnRlZ2VycCkKCihkZWZjdXN0b20gdmVyaWxvZy1pbmRlbnQtbGV2ZWwtbW9k dWxlIDMKICAiSW5kZW50YXRpb24gb2YgTW9kdWxlIGxldmVsIFZlcmlsb2cgc3RhdGVtZW50cyAo ZWcgYWx3YXlzLCBpbml0aWFsKS4KU2V0IHRvIDAgdG8gZ2V0IGluaXRpYWwgYW5kIGFsd2F5cyBz dGF0ZW1lbnRzIGxpbmVkIHVwIG9uIHRoZSBsZWZ0IHNpZGUgb2YKeW91ciBzY3JlZW4uIgogIDpn cm91cCAndmVyaWxvZy1tb2RlLWluZGVudAogIDp0eXBlICdpbnRlZ2VyKQoocHV0ICd2ZXJpbG9n LWluZGVudC1sZXZlbC1tb2R1bGUgJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ2ludGVnZXJwKQoKKGRl ZmN1c3RvbSB2ZXJpbG9nLWluZGVudC1sZXZlbC1kZWNsYXJhdGlvbiAzCiAgIkluZGVudGF0aW9u IG9mIGRlY2xhcmF0aW9ucyB3aXRoIHJlc3BlY3QgdG8gY29udGFpbmluZyBibG9jay4KU2V0IHRv IDAgdG8gZ2V0IHRoZW0gbGlzdCByaWdodCB1bmRlciBjb250YWluaW5nIGJsb2NrLiIKICA6Z3Jv dXAgJ3Zlcmlsb2ctbW9kZS1pbmRlbnQKICA6dHlwZSAnaW50ZWdlcikKKHB1dCAndmVyaWxvZy1p bmRlbnQtbGV2ZWwtZGVjbGFyYXRpb24gJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ2ludGVnZXJwKQoK KGRlZmN1c3RvbSB2ZXJpbG9nLWluZGVudC1kZWNsYXJhdGlvbi1tYWNyb3MgbmlsCiAgIkhvdyB0 byB0cmVhdCBtYWNybyBleHBhbnNpb25zIGluIGEgZGVjbGFyYXRpb24uCklmIG5pbCwgaW5kZW50 IGFzOgoJaW5wdXQgWzMxOjBdIGE7CglpbnB1dCAgICAgICAgXFw9YENQOwoJb3V0cHV0ICAgICAg IGM7CklmIG5vbi1uaWwsIHRyZWF0IGFzOgoJaW5wdXQgWzMxOjBdIGE7CglpbnB1dCBcXD1gQ1Ag ICAgOwoJb3V0cHV0ICAgICAgIGM7IgogIDpncm91cCAndmVyaWxvZy1tb2RlLWluZGVudAogIDp0 eXBlICdib29sZWFuKQoocHV0ICd2ZXJpbG9nLWluZGVudC1kZWNsYXJhdGlvbi1tYWNyb3MgJ3Nh ZmUtbG9jYWwtdmFyaWFibGUgJ3Zlcmlsb2ctYm9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmlsb2ct aW5kZW50LWxpc3RzIHQKICAiSG93IHRvIHRyZWF0IGluZGVudGluZyBpdGVtcyBpbiBhIGxpc3Qu CklmIHQgKHRoZSBkZWZhdWx0KSwgaW5kZW50IGFzOgoJYWx3YXlzIEAoIHBvc2VkZ2UgYSBvcgoJ ICAgICAgICAgIHJlc2V0ICkgYmVnaW4KCklmIG5pbCwgdHJlYXQgYXM6CglhbHdheXMgQCggcG9z ZWRnZSBhIG9yCgkgICByZXNldCApIGJlZ2luIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWluZGVu dAogIDp0eXBlICdib29sZWFuKQoocHV0ICd2ZXJpbG9nLWluZGVudC1saXN0cyAnc2FmZS1sb2Nh bC12YXJpYWJsZSAndmVyaWxvZy1ib29sZWFucCkKCihkZWZjdXN0b20gdmVyaWxvZy1pbmRlbnQt bGV2ZWwtYmVoYXZpb3JhbCAzCiAgIkFic29sdXRlIGluZGVudGF0aW9uIG9mIGZpcnN0IGJlZ2lu IGluIGEgdGFzayBvciBmdW5jdGlvbiBibG9jay4KU2V0IHRvIDAgdG8gZ2V0IHN1Y2ggY29kZSB0 byBzdGFydCBhdCB0aGUgbGVmdCBzaWRlIG9mIHRoZSBzY3JlZW4uIgogIDpncm91cCAndmVyaWxv Zy1tb2RlLWluZGVudAogIDp0eXBlICdpbnRlZ2VyKQoocHV0ICd2ZXJpbG9nLWluZGVudC1sZXZl bC1iZWhhdmlvcmFsICdzYWZlLWxvY2FsLXZhcmlhYmxlICdpbnRlZ2VycCkKCihkZWZjdXN0b20g dmVyaWxvZy1pbmRlbnQtbGV2ZWwtZGlyZWN0aXZlIDEKICAiSW5kZW50YXRpb24gdG8gYWRkIHRv IGVhY2ggbGV2ZWwgb2YgXFw9YGlmZGVmIGRlY2xhcmF0aW9ucy4KU2V0IHRvIDAgdG8gaGF2ZSBh bGwgZGlyZWN0aXZlcyBzdGFydCBhdCB0aGUgbGVmdCBzaWRlIG9mIHRoZSBzY3JlZW4uIgogIDpn cm91cCAndmVyaWxvZy1tb2RlLWluZGVudAogIDp0eXBlICdpbnRlZ2VyKQoocHV0ICd2ZXJpbG9n LWluZGVudC1sZXZlbC1kaXJlY3RpdmUgJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ2ludGVnZXJwKQoK KGRlZmN1c3RvbSB2ZXJpbG9nLWNleHAtaW5kZW50IDIKICAiSW5kZW50YXRpb24gb2YgVmVyaWxv ZyBzdGF0ZW1lbnRzIHNwbGl0IGFjcm9zcyBsaW5lcy4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUt aW5kZW50CiAgOnR5cGUgJ2ludGVnZXIpCihwdXQgJ3Zlcmlsb2ctY2V4cC1pbmRlbnQgJ3NhZmUt bG9jYWwtdmFyaWFibGUgJ2ludGVnZXJwKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWNhc2UtaW5kZW50 IDIKICAiSW5kZW50YXRpb24gZm9yIGNhc2Ugc3RhdGVtZW50cy4iCiAgOmdyb3VwICd2ZXJpbG9n LW1vZGUtaW5kZW50CiAgOnR5cGUgJ2ludGVnZXIpCihwdXQgJ3Zlcmlsb2ctY2FzZS1pbmRlbnQg J3NhZmUtbG9jYWwtdmFyaWFibGUgJ2ludGVnZXJwKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1dG8t bmV3bGluZSB0CiAgIk5vbi1uaWwgbWVhbnMgYXV0b21hdGljYWxseSBuZXdsaW5lIGFmdGVyIHNl bWljb2xvbnMuIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWluZGVudAogIDp0eXBlICdib29sZWFu KQoocHV0ICd2ZXJpbG9nLWF1dG8tbmV3bGluZSAnc2FmZS1sb2NhbC12YXJpYWJsZSAndmVyaWxv Zy1ib29sZWFucCkKCihkZWZjdXN0b20gdmVyaWxvZy1hdXRvLWluZGVudC1vbi1uZXdsaW5lIHQK ICAiTm9uLW5pbCBtZWFucyBhdXRvbWF0aWNhbGx5IGluZGVudCBsaW5lIGFmdGVyIG5ld2xpbmUu IgogIDpncm91cCAndmVyaWxvZy1tb2RlLWluZGVudAogIDp0eXBlICdib29sZWFuKQoocHV0ICd2 ZXJpbG9nLWF1dG8taW5kZW50LW9uLW5ld2xpbmUgJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ3Zlcmls b2ctYm9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmlsb2ctdGFiLWFsd2F5cy1pbmRlbnQgdAogICJO b24tbmlsIG1lYW5zIFRBQiBzaG91bGQgYWx3YXlzIHJlLWluZGVudCB0aGUgY3VycmVudCBsaW5l LgpBIG5pbCB2YWx1ZSBtZWFucyBUQUIgd2lsbCBvbmx5IHJlaW5kZW50IHdoZW4gYXQgdGhlIGJl Z2lubmluZyBvZiB0aGUgbGluZS4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtaW5kZW50CiAgOnR5 cGUgJ2Jvb2xlYW4pCihwdXQgJ3Zlcmlsb2ctdGFiLWFsd2F5cy1pbmRlbnQgJ3NhZmUtbG9jYWwt dmFyaWFibGUgJ3Zlcmlsb2ctYm9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmlsb2ctdGFiLXRvLWNv bW1lbnQgbmlsCiAgIk5vbi1uaWwgbWVhbnMgVEFCIG1vdmVzIHRvIHRoZSByaWdodCBoYW5kIGNv bHVtbiBpbiBwcmVwYXJhdGlvbiBmb3IgYSBjb21tZW50LiIKICA6Z3JvdXAgJ3Zlcmlsb2ctbW9k ZS1hY3Rpb25zCiAgOnR5cGUgJ2Jvb2xlYW4pCihwdXQgJ3Zlcmlsb2ctdGFiLXRvLWNvbW1lbnQg J3NhZmUtbG9jYWwtdmFyaWFibGUgJ3Zlcmlsb2ctYm9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmls b2ctaW5kZW50LWJlZ2luLWFmdGVyLWlmIHQKICAiTm9uLW5pbCBtZWFucyBpbmRlbnQgYmVnaW4g c3RhdGVtZW50cyBmb2xsb3dpbmcgaWYsIGVsc2UsIHdoaWxlLCBldGMuCk90aGVyd2lzZSwgbGlu ZSB0aGVtIHVwLiIKICA6Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1pbmRlbnQKICA6dHlwZSAnYm9vbGVh bikKKHB1dCAndmVyaWxvZy1pbmRlbnQtYmVnaW4tYWZ0ZXItaWYgJ3NhZmUtbG9jYWwtdmFyaWFi bGUgJ3Zlcmlsb2ctYm9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmlsb2ctYWxpZ24taWZlbHNlIG5p bAogICJOb24tbmlsIG1lYW5zIGFsaWduIGBlbHNlJyB1bmRlciBtYXRjaGluZyBgaWYnLgpPdGhl cndpc2UgZWxzZSBpcyBsaW5lZCB1cCB3aXRoIGZpcnN0IGNoYXJhY3RlciBvbiBsaW5lIGhvbGRp bmcgbWF0Y2hpbmcgaWYuIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWluZGVudAogIDp0eXBlICdi b29sZWFuKQoocHV0ICd2ZXJpbG9nLWFsaWduLWlmZWxzZSAnc2FmZS1sb2NhbC12YXJpYWJsZSAn dmVyaWxvZy1ib29sZWFucCkKCihkZWZjdXN0b20gdmVyaWxvZy1taW5pbXVtLWNvbW1lbnQtZGlz dGFuY2UgMTAKICAiTWluaW11bSBkaXN0YW5jZSAoaW4gbGluZXMpIGJldHdlZW4gYmVnaW4gYW5k IGVuZCByZXF1aXJlZCBiZWZvcmUgYSBjb21tZW50LgpTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8g emVybyByZXN1bHRzIGluIGV2ZXJ5IGVuZCBhY3F1aXJpbmcgYSBjb21tZW50OyB0aGUKZGVmYXVs dCBhdm9pZHMgdG9vIG1hbnkgcmVkdW5kYW50IGNvbW1lbnRzIGluIHRpZ2h0IHF1YXJ0ZXJzLiIK ICA6Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1pbmRlbnQKICA6dHlwZSAnaW50ZWdlcikKKHB1dCAndmVy aWxvZy1taW5pbXVtLWNvbW1lbnQtZGlzdGFuY2UgJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ2ludGVn ZXJwKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWhpZ2hsaWdodC1wMTgwMC1rZXl3b3JkcyBuaWwKICAi T2Jzb2xldGUuCldhcyBub24tbmlsIG1lYW5zIGhpZ2hsaWdodCBTeXN0ZW1WZXJpbG9nIElFRUUt MTgwMCBkaWZmZXJlbnRseS4KQWxsIGNvZGUgaXMgbm93IGhpZ2hsaWdodGVkIGFzIGlmIFN5c3Rl bVZlcmlsb2cgSUVFRS0xODAwLiIKICA6Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1pbmRlbnQKICA6dHlw ZSAnYm9vbGVhbikKKHB1dCAndmVyaWxvZy1oaWdobGlnaHQtcDE4MDAta2V5d29yZHMgJ3NhZmUt bG9jYWwtdmFyaWFibGUgJ3Zlcmlsb2ctYm9vbGVhbnApCihtYWtlLW9ic29sZXRlLXZhcmlhYmxl ICd2ZXJpbG9nLWhpZ2hsaWdodC1wMTgwMC1rZXl3b3JkcyBuaWwgIjI3LjEiKQoKKGRlZmN1c3Rv bSB2ZXJpbG9nLWhpZ2hsaWdodC1ncm91cGluZy1rZXl3b3JkcyBuaWwKICAiTm9uLW5pbCBtZWFu cyBoaWdobGlnaHQgZ3JvdXBpbmcga2V5d29yZHMgbW9yZSBkcmFtYXRpY2FsbHkuCklmIGZhbHNl LCB0aGVzZSB3b3JkcyBhcmUgaW4gdGhlIGBmb250LWxvY2stdHlwZS1mYWNlJzsgaWYgVHJ1ZQp0 aGVuIHRoZXkgYXJlIGluIGB2ZXJpbG9nLWZvbnQtbG9jay1ncm91cGluZy1rZXl3b3Jkcy1mYWNl Jy4KU29tZSBmaW5kIHRoYXQgc3BlY2lhbCBoaWdobGlnaHRpbmcgb24gdGhlc2UgZ3JvdXBpbmcg Y29uc3RydWN0cwphbGxvdyB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb2RlIHRvIGJlIHVuZGVyc3Rv b2QgYXQgYSBnbGFuY2UuIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWluZGVudAogIDp0eXBlICdi b29sZWFuKQoocHV0ICd2ZXJpbG9nLWhpZ2hsaWdodC1ncm91cGluZy1rZXl3b3JkcyAnc2FmZS1s b2NhbC12YXJpYWJsZSAndmVyaWxvZy1ib29sZWFucCkKCihkZWZjdXN0b20gdmVyaWxvZy1oaWdo bGlnaHQtbW9kdWxlcyBuaWwKICAiTm9uLW5pbCBtZWFucyBoaWdobGlnaHQgbW9kdWxlIHN0YXRl bWVudHMgZm9yIGB2ZXJpbG9nLWxvYWQtZmlsZS1hdC1wb2ludCcuCldoZW4gdHJ1ZSwgbW91c2lu ZyBvdmVyIG1vZHVsZSBuYW1lcyB3aWxsIGFsbG93IGp1bXBpbmcgdG8gdGhlCm1vZHVsZSBkZWZp bml0aW9uLiAgSWYgZmFsc2UsIHRoaXMgaXMgbm90IHN1cHBvcnRlZC4gIFNldHRpbmcKdGhpcyBp cyBleHBlcmltZW50YWwsIGFuZCBtYXkgbGVhZCB0byBiYWQgcGVyZm9ybWFuY2UuIgogIDpncm91 cCAndmVyaWxvZy1tb2RlLWluZGVudAogIDp0eXBlICdib29sZWFuKQoocHV0ICd2ZXJpbG9nLWhp Z2hsaWdodC1tb2R1bGVzICdzYWZlLWxvY2FsLXZhcmlhYmxlICd2ZXJpbG9nLWJvb2xlYW5wKQoK KGRlZmN1c3RvbSB2ZXJpbG9nLWhpZ2hsaWdodC1pbmNsdWRlcyB0CiAgIk5vbi1uaWwgbWVhbnMg aGlnaGxpZ2h0IG1vZHVsZSBzdGF0ZW1lbnRzIGZvciBgdmVyaWxvZy1sb2FkLWZpbGUtYXQtcG9p bnQnLgpXaGVuIHRydWUsIG1vdXNpbmcgb3ZlciBpbmNsdWRlIGZpbGUgbmFtZXMgd2lsbCBhbGxv dyBqdW1waW5nIHRvIHRoZQpmaWxlIHJlZmVyZW5jZWQuICBJZiBmYWxzZSwgdGhpcyBpcyBub3Qg c3VwcG9ydGVkLiIKICA6Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1pbmRlbnQKICA6dHlwZSAnYm9vbGVh bikKKHB1dCAndmVyaWxvZy1oaWdobGlnaHQtaW5jbHVkZXMgJ3NhZmUtbG9jYWwtdmFyaWFibGUg J3Zlcmlsb2ctYm9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmlsb2ctaGlnaGxpZ2h0LW1heC1sb29r YWhlYWQgMTAwMDAKICAiTWF4aW11bSBzaXplIG9mIGRlY2xhcmF0aW9uIHN0YXRlbWVudCB0aGF0 IHVuZGVyZ29lcyBoaWdobGlnaHRpbmcuCkhpZ2hsaWdodGluZyBpcyBwZXJmb3JtZWQgb25seSBv biB0aGUgZmlyc3QgYHZlcmlsb2ctaGlnaGxpZ2h0LW1heC1sb29rYWhlYWQnCmNoYXJhY3RlcnMg aW4gYSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQuClNldHRpbmcgdGhpcyB2YXJpYWJsZSB0byB6ZXJv IHdvdWxkIHJlbW92ZSB0aGlzIGxpbWl0LiAgTm90ZSB0aGF0IHJlbW92aW5nCnRoZSBsaW1pdCBj YW4gZ3JlYXRseSBzbG93IGRvd24gaGlnaGxpZ2h0aW5nIGZvciB2ZXJ5IGxhcmdlIGZpbGVzLiIK ICA6Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1pbmRlbnQKICA6dHlwZSAnaW50ZWdlcikKKHB1dCAndmVy aWxvZy1oaWdobGlnaHQtbWF4LWxvb2thaGVhZCAnc2FmZS1sb2NhbC12YXJpYWJsZSAnaW50ZWdl cnApCgooZGVmY3VzdG9tIHZlcmlsb2ctYXV0by1kZWNsYXJlLW5ldHR5cGUgbmlsCiAgIk5vbi1u aWwgc3BlY2lmaWVzIHRoZSBkYXRhIHR5cGUgdG8gdXNlIHdpdGggYHZlcmlsb2ctYXV0by1pbnB1 dCcgZXRjLgpTZXQgdGhpcyB0byBcIndpcmVcIiBpZiB0aGUgVmVyaWxvZyBjb2RlIHVzZXMgXCJc XD1gZGVmYXVsdF9uZXR0eXBlCm5vbmVcIi4gIE5vdGUgdXNpbmcgXFw9YGRlZmF1bHRfbmV0dHlw ZSBub25lIGlzbid0IHJlY29tbWVuZGVkIHByYWN0aWNlOyB0aGlzCm1vZGUgaXMgZXhwZXJpbWVu dGFsLiIKICA6dmVyc2lvbiAiMjQuMSIgIDsgcmV2NjcwCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUt YWN0aW9ucwogIDp0eXBlICdib29sZWFuKQoocHV0ICd2ZXJpbG9nLWF1dG8tZGVjbGFyZS1uZXR0 eXBlICdzYWZlLWxvY2FsLXZhcmlhYmxlICdzdHJpbmdwKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1 dG8td2lyZS1jb21tZW50IHQKICAiTm9uLW5pbCBpbmRpY2F0ZXMgdG8gaW5zZXJ0IHRvL2Zyb20g Y29tbWVudHMgd2l0aCBgdmVyaWxvZy1hdXRvLXdpcmUnIGV0Yy4iCiAgOnZlcnNpb24gIjI1LjEi CiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYWN0aW9ucwogIDp0eXBlICdib29sZWFuKQoocHV0ICd2 ZXJpbG9nLWF1dG8td2lyZS1jb21tZW50ICdzYWZlLWxvY2FsLXZhcmlhYmxlICd2ZXJpbG9nLWJv b2xlYW5wKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1dG8td2lyZS10eXBlIG5pbAogICJOb24tbmls IHNwZWNpZmllcyB0aGUgZGF0YSB0eXBlIHRvIHVzZSB3aXRoIGB2ZXJpbG9nLWF1dG8td2lyZScg ZXRjLgpTZXQgdGhpcyB0byBcImxvZ2ljXCIgZm9yIFN5c3RlbVZlcmlsb2cgY29kZSwgb3IgdXNl IGB2ZXJpbG9nLWF1dG8tbG9naWMnLgpTZXQgdGhpcyB0byBcIndpcmVcIiB0byBmb3JjZSB1c2Ug b2Ygd2lyZSB3aGVuIGxvZ2ljIGlzIG90aGVyd2lzZSBhcHByb3ByaWF0ZTsKdGhpcyBpcyBnZW5l cmFsbHkgb25seSBhcHByb3ByaWF0ZSB3aGVuIG1ha2luZyBhIG5vbi1TeXN0ZW1WZXJpbG9nIHdy YXBwZXIKY29udGFpbmluZyBTeXN0ZW1WZXJpbG9nIGNlbGxzLiIKICA6dmVyc2lvbiAiMjQuMSIg IDsgcmV2NjczCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYWN0aW9ucwogIDp0eXBlICcoY2hvaWNl IChjb25zdCBuaWwpIHN0cmluZykpCihwdXQgJ3Zlcmlsb2ctYXV0by13aXJlLXR5cGUgJ3NhZmUt bG9jYWwtdmFyaWFibGUgJ3N0cmluZ3ApCgooZGVmY3VzdG9tIHZlcmlsb2ctYXV0by1lbmRjb21t ZW50cyB0CiAgIk5vbi1uaWwgbWVhbnMgaW5zZXJ0IGEgY29tbWVudCAvKiAuLi4gKi8gYWZ0ZXIg YGVuZCdzLgpUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gb3IgY2FzZSB3aWxsIGJlIHNldCBiZXR3 ZWVuIHRoZSBicmFjZXMuIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWFjdGlvbnMKICA6dHlwZSAn Ym9vbGVhbikKKHB1dCAndmVyaWxvZy1hdXRvLWVuZGNvbW1lbnRzICdzYWZlLWxvY2FsLXZhcmlh YmxlICd2ZXJpbG9nLWJvb2xlYW5wKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1dG8tZGVsZXRlLXRy YWlsaW5nLXdoaXRlc3BhY2UgbmlsCiAgIk5vbi1uaWwgbWVhbnMgdG8gYGRlbGV0ZS10cmFpbGlu Zy13aGl0ZXNwYWNlJyBpbiBgdmVyaWxvZy1hdXRvJy4iCiAgOnZlcnNpb24gIjI0LjEiICA7IHJl djcwMwogIDpncm91cCAndmVyaWxvZy1tb2RlLWFjdGlvbnMKICA6dHlwZSAnYm9vbGVhbikKKHB1 dCAndmVyaWxvZy1hdXRvLWRlbGV0ZS10cmFpbGluZy13aGl0ZXNwYWNlICdzYWZlLWxvY2FsLXZh cmlhYmxlICd2ZXJpbG9nLWJvb2xlYW5wKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1dG8taWdub3Jl LWNvbmNhdCBuaWwKICAiTm9uLW5pbCBtZWFucyBpZ25vcmUgc2lnbmFscyBpbiB7Li4ufSBjb25j YXRlbmF0aW9ucyBmb3IgQVVUT1dJUkUgZXRjLgpUaGlzIHdpbGwgZXhjbHVkZSBzaWduYWxzIHJl ZmVyZW5jZWQgYXMgcGluIGNvbm5lY3Rpb25zIGluIHsuLi59Cm9yICguLi4pIGZyb20gQVVUT1dJ UkUsIEFVVE9PVVRQVVQgYW5kIGZyaWVuZHMuIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWFjdGlv bnMKICA6dHlwZSAnYm9vbGVhbikKKHB1dCAndmVyaWxvZy1hdXRvLWlnbm9yZS1jb25jYXQgJ3Nh ZmUtbG9jYWwtdmFyaWFibGUgJ3Zlcmlsb2ctYm9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmlsb2ct YXV0by1yZWFkLWluY2x1ZGVzIG5pbAogICJOb24tbmlsIG1lYW5zIHRvIGF1dG9tYXRpY2FsbHkg cmVhZCBpbmNsdWRlcyBiZWZvcmUgQVVUT3MuClRoaXMgd2lsbCBkbyBhIGB2ZXJpbG9nLXJlYWQt ZGVmaW5lcycgYW5kIGB2ZXJpbG9nLXJlYWQtaW5jbHVkZXMnIGJlZm9yZQplYWNoIEFVVE8gZXhw YW5zaW9uLiAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gZW1iZWQgZGVmaW5lcyBhbmQgaW5jbHVk ZXMsCmJ1dCBjYW4gcmVzdWx0IGluIHZlcnkgc2xvdyByZWFkaW5nIHRpbWVzIGlmIHRoZXJlIGFy ZSBtYW55IG9yIGxhcmdlCmluY2x1ZGUgZmlsZXMuIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWFj dGlvbnMKICA6dHlwZSAnYm9vbGVhbikKKHB1dCAndmVyaWxvZy1hdXRvLXJlYWQtaW5jbHVkZXMg J3NhZmUtbG9jYWwtdmFyaWFibGUgJ3Zlcmlsb2ctYm9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmls b2ctYXV0by1zYXZlLXBvbGljeSBuaWwKICAiTm9uLW5pbCBpbmRpY2F0ZXMgYWN0aW9uIHRvIHRh a2Ugd2hlbiBzYXZpbmcgYSBWZXJpbG9nIGJ1ZmZlciB3aXRoIEFVVE9zLgpBIHZhbHVlIG9mIGBm b3JjZScgd2lsbCBhbHdheXMgZG8gYSBcXFt2ZXJpbG9nLWF1dG9dIGF1dG9tYXRpY2FsbHkgaWYK bmVlZGVkIG9uIGV2ZXJ5IHNhdmUuICBBIHZhbHVlIG9mIGBkZXRlY3QnIHdpbGwgZG8gXFxbdmVy aWxvZy1hdXRvXQphdXRvbWF0aWNhbGx5IHdoZW4gaXQgdGhpbmtzIG5lY2Vzc2FyeS4gIEEgdmFs dWUgb2YgYGFzaycgd2lsbCBxdWVyeSB0aGUKdXNlciB3aGVuIGl0IHRoaW5rcyB1cGRhdGluZyBp cyBuZWVkZWQuCgpZb3Ugc2hvdWxkIG5vdCByZWx5IG9uIHRoZSBgYXNrJyBvciBgZGV0ZWN0JyBw b2xpY2llcywgdGhleSBhcmUgc2FmZWd1YXJkcwpvbmx5LiAgVGhleSBkbyBub3QgZGV0ZWN0IHdo ZW4gQVVUT0lOU1RzIG5lZWQgdG8gYmUgdXBkYXRlZCBiZWNhdXNlIGEKc3ViLW1vZHVsZSdzIHBv cnQgbGlzdCBoYXMgY2hhbmdlZC4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYWN0aW9ucwogIDp0 eXBlICcoY2hvaWNlIChjb25zdCBuaWwpIChjb25zdCBhc2spIChjb25zdCBkZXRlY3QpIChjb25z dCBmb3JjZSkpKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1dG8tc3Rhci1leHBhbmQgdAogICJOb24t bmlsIG1lYW5zIHRvIGV4cGFuZCBTeXN0ZW1WZXJpbG9nIC4qIGluc3RhbmNlIHBvcnRzLgpUaGV5 IHdpbGwgYmUgZXhwYW5kZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGlmIHRoZXJlIHdhcyBhbiBBVVRP SU5TVCBpbiB0aGUKaW5zdGFudGlhdGlvbi4gIFNlZSBhbHNvIGB2ZXJpbG9nLWF1dG8tc3Rhcicg YW5kIGB2ZXJpbG9nLWF1dG8tc3Rhci1zYXZlJy4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYWN0 aW9ucwogIDp0eXBlICdib29sZWFuKQoocHV0ICd2ZXJpbG9nLWF1dG8tc3Rhci1leHBhbmQgJ3Nh ZmUtbG9jYWwtdmFyaWFibGUgJ3Zlcmlsb2ctYm9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmlsb2ct YXV0by1zdGFyLXNhdmUgbmlsCiAgIk5vbi1uaWwgbWVhbnMgc2F2ZSB0byBkaXNrIFN5c3RlbVZl cmlsb2cgLiogaW5zdGFuY2UgZXhwYW5zaW9ucy4KQSBuaWwgdmFsdWUgaW5kaWNhdGVzIGRpcmVj dCBjb25uZWN0aW9ucyB3aWxsIGJlIHJlbW92ZWQgYmVmb3JlIHNhdmluZy4KT25seSBtZWFuaW5n ZnVsIHRvIHRob3NlIGNyZWF0ZWQgZHVlIHRvIGB2ZXJpbG9nLWF1dG8tc3Rhci1leHBhbmQnIGJl aW5nIHNldC4KCkluc3RlYWQgb2Ygc2V0dGluZyB0aGlzLCB5b3UgbWF5IHdhbnQgdG8gdXNlIC8q QVVUT0lOU1QqLywgd2hpY2ggd2lsbAphbHdheXMgYmUgc2F2ZWQuIgogIDpncm91cCAndmVyaWxv Zy1tb2RlLWFjdGlvbnMKICA6dHlwZSAnYm9vbGVhbikKKHB1dCAndmVyaWxvZy1hdXRvLXN0YXIt c2F2ZSAnc2FmZS1sb2NhbC12YXJpYWJsZSAndmVyaWxvZy1ib29sZWFucCkKCihkZWZ2YXIgdmVy aWxvZy1hdXRvLXVwZGF0ZS10aWNrIG5pbAogICJNb2RpZmljYXRpb24gdGljayBhdCB3aGljaCBh dXRvcyB3ZXJlIGxhc3QgcGVyZm9ybWVkLiIpCgooZGVmdmFyIHZlcmlsb2ctYXV0by1sYXN0LWZp bGUtbG9jYWxzIG5pbAogICJUZXh0IGZyb20gZmlsZS1sb2NhbC12YXJpYWJsZXMgZHVyaW5nIGxh c3QgZXZhbHVhdGlvbi4iKQoKKGRlZnZhciB2ZXJpbG9nLWRpZmYtZnVuY3Rpb24gJ3Zlcmlsb2ct ZGlmZi1yZXBvcnQKICAiRnVuY3Rpb24gdG8gcnVuIHdoZW4gYHZlcmlsb2ctZGlmZi1hdXRvJyBk ZXRlY3RzIGRpZmZlcmVuY2VzLgpGdW5jdGlvbiB0YWtlcyB0aHJlZSBhcmd1bWVudHMsIHRoZSBv cmlnaW5hbCBidWZmZXIsIHRoZQpkaWZmZXJlbmNlIGJ1ZmZlciwgYW5kIHRoZSBwb2ludCBpbiBv cmlnaW5hbCBidWZmZXIgd2l0aCB0aGUKZmlyc3QgZGlmZmVyZW5jZS4iKQoKKGRlZnZhciB2ZXJp bG9nLWRpZmYtaWdub3JlLXJlZ2V4cCBuaWwKICAiTm9uLW5pbCBzcGVjaWZpZXMgcmVnZXhwIHdo aWNoIGB2ZXJpbG9nLWRpZmYtYXV0bycgd2lsbCBpZ25vcmUuClRoaXMgaXMgdHlwaWNhbGx5IG5p bC4iKQoKOzs7IENvbXBpbGUgc3VwcG9ydDoKOzsKCihyZXF1aXJlICdjb21waWxlKQoKKGRlZnZh ciB2ZXJpbG9nLWVycm9yLXJlZ2V4cC1hZGRlZCBuaWwpCgooZGVmdmFyIHZlcmlsb2ctZXJyb3It cmVnZXhwLWVtYWNzLWFsaXN0CiAgJygKICAgICh2ZXJpbG9nLXhsLTEKICAgICAiXFwoRXJyb3Jc XHxXYXJuaW5nXFwpIS4qXG4/LipcIlxcKFteXCJdK1xcKVwiLCBcXChbMC05XStcXCkiIDIgMykK ICAgICh2ZXJpbG9nLXhsLTIKICAgICAiKFtXRV1bMC05QS1aXSspWyBcdF0rXFwoW14gXHRcbixd K1xcKVssIFx0XStcXChsaW5lWyBcdF0rXFwpP1xcKFswLTldK1xcKTouKiQiIDEgMykKICAgICh2 ZXJpbG9nLUlFUwogICAgICIuKlxcKltXRV0sWzAtOUEtWl0rXFwoXFxbWzAtOUEtWl8sXStcXF1c XCk/IChcXChbXiBcdCxdK1xcKSxcXChbMC05XStcXCkiIDIgMykKICAgICh2ZXJpbG9nLXN1cmVm aXJlLTEKICAgICAiW15cbl0qXFxbXFwoW146XStcXCk6XFwoWzAtOV0rXFwpXFxdIiAxIDIpCiAg ICAodmVyaWxvZy1zdXJlZmlyZS0yCiAgICAgIlxcKFdBUk5JTkdcXHxFUlJPUlxcfElORk9cXClb XjpdKjogXFwoW14sXStcXCksXFxzLStcXChsaW5lIFxcKT9cXChbMC05XStcXCk6IiAyIDQgKQog ICAgKHZlcmlsb2ctdmVyYm9zZQogICAgICJcClxcKFthLXpBLVpdPzo/W146KCBcdFxuXStcXClb OihdWyBcdF0qXFwoWzAtOV0rXFwpXFwoWykgXHRdXFx8XAo6XFwoW14wLTlcbl1cXHxcXChbMC05 XSs6XFwpXFwpXFwpIiAxIDIgNSkKICAgICh2ZXJpbG9nLXhzaW0KICAgICAiXFwoRXJyb3JcXHxX YXJuaW5nXFwpLippbiBmaWxlIChcXChbXiBcdF0rXFwpIGF0IGxpbmUgKlxcKFswLTldK1xcKSki IDIgMykKICAgICh2ZXJpbG9nLXZjcy0xCiAgICAgIlxcKEVycm9yXFx8V2FybmluZ1xcKTpbXihd KihcXChbXiBcdF0rXFwpIGxpbmUgKlxcKFswLTldK1xcKSkiIDIgMykKICAgICh2ZXJpbG9nLXZj cy0yCiAgICAgIldhcm5pbmc6LioocG9ydC4qKFxcKFteIFx0XStcXCkgbGluZSBcXChbMC05XStc XCkpIiAxIDIpCiAgICAodmVyaWxvZy12Y3MtMwogICAgICJcXChFcnJvclxcfFdhcm5pbmdcXCk6 W1xuLl0qXFwoW14gXHRdK1xcKSAqXFwoWzAtOV0rXFwpOiIgMiAzKQogICAgKHZlcmlsb2ctdmNz LTQKICAgICAic3ludGF4IGVycm9yOi4qXG5cXChbXiBcdF0rXFwpICpcXChbMC05XStcXCk6IiAx IDIpCiAgICAodmVyaWxvZy12ZXJpbGF0b3IKICAgICAiJT9cXChFcnJvclxcfFdhcm5pbmdcXClc XCgtW146XStcXHxcXCk6W1xuIF0qXFwoW14gXHQ6XStcXCk6XFwoWzAtOV0rXFwpOiIgMyA0KQog ICAgKHZlcmlsb2ctbGVkYQogICAgICJeSW4gZmlsZSBcXChbXiBcdF0rXFwpWyBcdF0rbGluZVsg XHRdK1xcKFswLTldK1xcKTpcblteXG5dKlxuW15cbl0qXG5cXChXYXJuaW5nXFx8RXJyb3JcXHxG YWlsdXJlXFwpW15cbl0qIiAxIDIpCiAgICApCiAgIkxpc3Qgb2YgcmVnZXhwcyBmb3IgVmVyaWxv ZyBjb21waWxlcnMuClNlZSBgY29tcGlsYXRpb24tZXJyb3ItcmVnZXhwLWFsaXN0JyBmb3IgdGhl IGZvcm1hdHRpbmcuICBGb3IgRW1hY3MgMjIrLiIpCgooZGVmdmFyIHZlcmlsb2ctZXJyb3ItcmVn ZXhwLXhlbWFjcy1hbGlzdAogIDs7IEVtYWNzIGZvcm0gaXMgJygodi10b29sICJyZSIgMSAyKSAu Li4pCiAgOzsgWEVtYWNzIGZvcm0gaXMgJyh2ZXJpbG9nICgicmUiIDEgMikgLi4uKQogIDs7IFNv IHdlIGNhbiBqdXN0IG1hcCBmcm9tIEVtYWNzIHRvIFhFbWFjcwogIChjb25zICd2ZXJpbG9nICht YXBjYXIgJ2NkciB2ZXJpbG9nLWVycm9yLXJlZ2V4cC1lbWFjcy1hbGlzdCkpCiAgIkxpc3Qgb2Yg cmVnZXhwcyBmb3IgVmVyaWxvZyBjb21waWxlcnMuClNlZSBgY29tcGlsYXRpb24tZXJyb3ItcmVn ZXhwLWFsaXN0LWFsaXN0JyBmb3IgdGhlIGZvcm1hdHRpbmcuICBGb3IgWEVtYWNzLiIpCgooZGVm dmFyIHZlcmlsb2ctZXJyb3ItZm9udC1sb2NrLWtleXdvcmRzCiAgJygKICAgIDs7IHZlcmlsb2ct eGwtMQogICAgKCJcXChFcnJvclxcfFdhcm5pbmdcXCkhLipcbj8uKlwiXFwoW15cIl0rXFwpXCIs IFxcKFswLTldK1xcKSIgMiBib2xkIHQpCiAgICAoIlxcKEVycm9yXFx8V2FybmluZ1xcKSEuKlxu Py4qXCJcXChbXlwiXStcXClcIiwgXFwoWzAtOV0rXFwpIiAyIGJvbGQgdCkKICAgIDs7IHZlcmls b2cteGwtMgogICAgKCIoW1dFXVswLTlBLVpdKylbIFx0XStcXChbXiBcdFxuLF0rXFwpWywgXHRd K1xcKGxpbmVbIFx0XStcXCk/XFwoWzAtOV0rXFwpOi4qJCIgMSBib2xkIHQpCiAgICAoIihbV0Vd WzAtOUEtWl0rKVsgXHRdK1xcKFteIFx0XG4sXStcXClbLCBcdF0rXFwobGluZVsgXHRdK1xcKT9c XChbMC05XStcXCk6LiokIiAzIGJvbGQgdCkKICAgIDs7IHZlcmlsb2ctSUVTIChuYy12ZXJpbG9n KQogICAgKCIuKlxcKltXRV0sWzAtOUEtWl0rXFwoXFxbWzAtOUEtWl8sXStcXF1cXCk/IChcXChb XiBcdCxdK1xcKSxcXChbMC05XStcXCl8IiAyIGJvbGQgdCkKICAgICgiLipcXCpbV0VdLFswLTlB LVpdK1xcKFxcW1swLTlBLVpfLF0rXFxdXFwpPyAoXFwoW14gXHQsXStcXCksXFwoWzAtOV0rXFwp fCIgMyBib2xkIHQpCiAgICA7OyB2ZXJpbG9nLXN1cmVmaXJlLTEKICAgICgiW15cbl0qXFxbXFwo W146XStcXCk6XFwoWzAtOV0rXFwpXFxdIiAxIGJvbGQgdCkKICAgICgiW15cbl0qXFxbXFwoW146 XStcXCk6XFwoWzAtOV0rXFwpXFxdIiAyIGJvbGQgdCkKICAgIDs7IHZlcmlsb2ctc3VyZWZpcmUt MgogICAgKCJcXChXQVJOSU5HXFx8RVJST1JcXHxJTkZPXFwpOiBcXChbXixdK1xcKSwgbGluZSBc XChbMC05XStcXCk6IiAyIGJvbGQgdCkKICAgICgiXFwoV0FSTklOR1xcfEVSUk9SXFx8SU5GT1xc KTogXFwoW14sXStcXCksIGxpbmUgXFwoWzAtOV0rXFwpOiIgMyBib2xkIHQpCiAgICA7OyB2ZXJp bG9nLXZlcmJvc2UKICAgICgiXApcXChbYS16QS1aXT86P1teOiggXHRcbl0rXFwpWzooXVsgXHRd KlxcKFswLTldK1xcKVxcKFspIFx0XVxcfFwKOlxcKFteMC05XG5dXFx8XFwoWzAtOV0rOlxcKVxc KVxcKSIgMSBib2xkIHQpCiAgICAoIlwKXFwoW2EtekEtWl0/Oj9bXjooIFx0XG5dK1xcKVs6KF1b IFx0XSpcXChbMC05XStcXClcXChbKSBcdF1cXHxcCjpcXChbXjAtOVxuXVxcfFxcKFswLTldKzpc XClcXClcXCkiIDEgYm9sZCB0KQogICAgOzsgdmVyaWxvZy12Y3MtMQogICAgKCJcXChFcnJvclxc fFdhcm5pbmdcXCk6W14oXSooXFwoW14gXHRdK1xcKSBsaW5lICpcXChbMC05XStcXCkpIiAyIGJv bGQgdCkKICAgICgiXFwoRXJyb3JcXHxXYXJuaW5nXFwpOlteKF0qKFxcKFteIFx0XStcXCkgbGlu ZSAqXFwoWzAtOV0rXFwpKSIgMyBib2xkIHQpCiAgICA7OyB2ZXJpbG9nLXZjcy0yCiAgICAoIldh cm5pbmc6LioocG9ydC4qKFxcKFteIFx0XStcXCkgbGluZSBcXChbMC05XStcXCkpIiAxIGJvbGQg dCkKICAgICgiV2FybmluZzouKihwb3J0LiooXFwoW14gXHRdK1xcKSBsaW5lIFxcKFswLTldK1xc KSkiIDEgYm9sZCB0KQogICAgOzsgdmVyaWxvZy12Y3MtMwogICAgKCJcXChFcnJvclxcfFdhcm5p bmdcXCk6W1xuLl0qXFwoW14gXHRdK1xcKSAqXFwoWzAtOV0rXFwpOiIgMiBib2xkIHQpCiAgICAo IlxcKEVycm9yXFx8V2FybmluZ1xcKTpbXG4uXSpcXChbXiBcdF0rXFwpICpcXChbMC05XStcXCk6 IiAzIGJvbGQgdCkKICAgIDs7IHZlcmlsb2ctdmNzLTQKICAgICgic3ludGF4IGVycm9yOi4qXG5c XChbXiBcdF0rXFwpICpcXChbMC05XStcXCk6IiAxIGJvbGQgdCkKICAgICgic3ludGF4IGVycm9y Oi4qXG5cXChbXiBcdF0rXFwpICpcXChbMC05XStcXCk6IiAyIGJvbGQgdCkKICAgIDs7IHZlcmls b2ctdmVyaWxhdG9yCiAgICAoIi4qXFwoRXJyb3JcXHxXYXJuaW5nXFwpXFwoLVteOl0rXFx8XFwp OltcbiBdKlxcKFteIFx0Ol0rXFwpOlxcKFswLTldK1xcKToiIDMgYm9sZCB0KQogICAgKCIuKlxc KEVycm9yXFx8V2FybmluZ1xcKVxcKC1bXjpdK1xcfFxcKTpbXG4gXSpcXChbXiBcdDpdK1xcKTpc XChbMC05XStcXCk6IiA0IGJvbGQgdCkKICAgIDs7IHZlcmlsb2ctbGVkYQogICAgKCJeSW4gZmls ZSBcXChbXiBcdF0rXFwpWyBcdF0rbGluZVsgXHRdK1xcKFswLTldK1xcKTpcblteXG5dKlxuW15c bl0qXG5cXChXYXJuaW5nXFx8RXJyb3JcXHxGYWlsdXJlXFwpW15cbl0qIiAxIGJvbGQgdCkKICAg ICgiXkluIGZpbGUgXFwoW14gXHRdK1xcKVsgXHRdK2xpbmVbIFx0XStcXChbMC05XStcXCk6XG5b XlxuXSpcblteXG5dKlxuXFwoV2FybmluZ1xcfEVycm9yXFx8RmFpbHVyZVxcKVteXG5dKiIgMiBi b2xkIHQpCiAgICApCiAgIktleXdvcmRzIHRvIGFsc28gaGlnaGxpZ2h0IGluIFZlcmlsb2cgKmNv bXBpbGF0aW9uKiBidWZmZXJzLgpPbmx5IHVzZWQgaW4gWEVtYWNzOyBHTlUgRW1hY3MgdXNlcyBg dmVyaWxvZy1lcnJvci1yZWdleHAtZW1hY3MtYWxpc3QnLiIpCgooZGVmY3VzdG9tIHZlcmlsb2ct bGlicmFyeS1mbGFncyAnKCIiKQogICJMaXN0IG9mIHN0YW5kYXJkIFZlcmlsb2cgYXJndW1lbnRz IHRvIHVzZSBmb3IgLypBVVRPSU5TVCovLgpUaGVzZSBhcmd1bWVudHMgYXJlIHVzZWQgdG8gZmlu ZCBmaWxlcyBmb3IgYHZlcmlsb2ctYXV0bycsIGFuZCBtYXRjaAp0aGUgZmxhZ3MgYWNjZXB0ZWQg YnkgYSBzdGFuZGFyZCBWZXJpbG9nLVhMIHNpbXVsYXRvci4KCiAgICAtZiBmaWxlbmFtZSAgICAg UmVhZHMgYWJzb2x1dGUgYHZlcmlsb2ctbGlicmFyeS1mbGFncycgZnJvbSB0aGUgZmlsZW5hbWUu CiAgICAtRiBmaWxlbmFtZSAgICAgUmVhZHMgcmVsYXRpdmUgYHZlcmlsb2ctbGlicmFyeS1mbGFn cycgZnJvbSB0aGUgZmlsZW5hbWUuCiAgICAraW5jZGlyK2RpciAgICAgQWRkcyB0aGUgZGlyZWN0 b3J5IHRvIGB2ZXJpbG9nLWxpYnJhcnktZGlyZWN0b3JpZXMnLgogICAgLUlkaXIgICAgICAgICAg IEFkZHMgdGhlIGRpcmVjdG9yeSB0byBgdmVyaWxvZy1saWJyYXJ5LWRpcmVjdG9yaWVzJy4KICAg IC15IGRpciAgICAgICAgICBBZGRzIHRoZSBkaXJlY3RvcnkgdG8gYHZlcmlsb2ctbGlicmFyeS1k aXJlY3RvcmllcycuCiAgICArbGliZXh0Ky52ICAgICAgQWRkcyB0aGUgZXh0ZW5zaW9ucyB0byBg dmVyaWxvZy1saWJyYXJ5LWV4dGVuc2lvbnMnLgogICAgLXYgZmlsZW5hbWUgICAgIEFkZHMgdGhl IGZpbGVuYW1lIHRvIGB2ZXJpbG9nLWxpYnJhcnktZmlsZXMnLgoKICAgIGZpbGVuYW1lICAgICAg ICBBZGRzIHRoZSBmaWxlbmFtZSB0byBgdmVyaWxvZy1saWJyYXJ5LWZpbGVzJy4KICAgICAgICAg ICAgICAgICAgICBUaGlzIGlzIG5vdCByZWNvbW1lbmRlZCwgLXYgaXMgYSBiZXR0ZXIgY2hvaWNl LgoKWW91IG1pZ2h0IHdhbnQgdGhlc2UgZGVmaW5lZCBpbiBlYWNoIGZpbGU7IHB1dCBhdCB0aGUg KkVORCogb2YgeW91ciBmaWxlCnNvbWV0aGluZyBsaWtlOgoKICAgIC8vIExvY2FsIFZhcmlhYmxl czoKICAgIC8vIHZlcmlsb2ctbGlicmFyeS1mbGFnczooXCIteSBkaXIgLXkgb3RoZXJkaXJcIikK ICAgIC8vIEVuZDoKClZlcmlsb2ctbW9kZSBhdHRlbXB0cyB0byBkZXRlY3QgY2hhbmdlcyB0byB0 aGlzIGxvY2FsIHZhcmlhYmxlLCBidXQgdGhleQphcmUgb25seSBpbnN1cmVkIHRvIGJlIGNvcnJl Y3Qgd2hlbiB0aGUgZmlsZSBpcyBmaXJzdCB2aXNpdGVkLiAgVGh1cyBpZiB5b3UKaGF2ZSBwcm9i bGVtcywgdXNlIFxcW2ZpbmQtYWx0ZXJuYXRlLWZpbGVdIFJFVCB0byBoYXZlIHRoZXNlIHRha2Ug ZWZmZWN0LgoKU2VlIGFsc28gdGhlIHZhcmlhYmxlcyBtZW50aW9uZWQgYWJvdmUuIgogIDpncm91 cCAndmVyaWxvZy1tb2RlLWF1dG8KICA6dHlwZSAnKHJlcGVhdCBzdHJpbmcpKQoocHV0ICd2ZXJp bG9nLWxpYnJhcnktZmxhZ3MgJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ2xpc3RwKQoKKGRlZmN1c3Rv bSB2ZXJpbG9nLWxpYnJhcnktZGlyZWN0b3JpZXMgJygiLiIpCiAgIkxpc3Qgb2YgZGlyZWN0b3Jp ZXMgd2hlbiBsb29raW5nIGZvciBmaWxlcyBmb3IgLypBVVRPSU5TVCovLgpUaGUgZGlyZWN0b3J5 IG1heSBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBmaWxlLCBvciBhYnNvbHV0ZS4KRW52aXJv bm1lbnQgdmFyaWFibGVzIGFyZSBhbHNvIGV4cGFuZGVkIGluIHRoZSBkaXJlY3RvcnkgbmFtZXMu CkhhdmluZyBhdCBsZWFzdCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgYSBnb29kIGlkZWEuCgpZ b3UgbWlnaHQgd2FudCB0aGVzZSBkZWZpbmVkIGluIGVhY2ggZmlsZTsgcHV0IGF0IHRoZSAqRU5E KiBvZiB5b3VyIGZpbGUKc29tZXRoaW5nIGxpa2U6CgogICAgLy8gTG9jYWwgVmFyaWFibGVzOgog ICAgLy8gdmVyaWxvZy1saWJyYXJ5LWRpcmVjdG9yaWVzOihcIi5cIiBcInN1YmRpclwiIFwic3Vi ZGlyMlwiKQogICAgLy8gRW5kOgoKVmVyaWxvZy1tb2RlIGF0dGVtcHRzIHRvIGRldGVjdCBjaGFu Z2VzIHRvIHRoaXMgbG9jYWwgdmFyaWFibGUsIGJ1dCB0aGV5CmFyZSBvbmx5IGluc3VyZWQgdG8g YmUgY29ycmVjdCB3aGVuIHRoZSBmaWxlIGlzIGZpcnN0IHZpc2l0ZWQuICBUaHVzIGlmIHlvdQpo YXZlIHByb2JsZW1zLCB1c2UgXFxbZmluZC1hbHRlcm5hdGUtZmlsZV0gUkVUIHRvIGhhdmUgdGhl c2UgdGFrZSBlZmZlY3QuCgpTZWUgYWxzbyBgdmVyaWxvZy1saWJyYXJ5LWZsYWdzJywgYHZlcmls b2ctbGlicmFyeS1maWxlcycKYW5kIGB2ZXJpbG9nLWxpYnJhcnktZXh0ZW5zaW9ucycuIgogIDpn cm91cCAndmVyaWxvZy1tb2RlLWF1dG8KICA6dHlwZSAnKHJlcGVhdCBmaWxlKSkKKHB1dCAndmVy aWxvZy1saWJyYXJ5LWRpcmVjdG9yaWVzICdzYWZlLWxvY2FsLXZhcmlhYmxlICdsaXN0cCkKCihk ZWZjdXN0b20gdmVyaWxvZy1saWJyYXJ5LWZpbGVzICcoKQogICJMaXN0IG9mIGZpbGVzIHRvIHNl YXJjaCBmb3IgbW9kdWxlcy4KQVVUT0lOU1Qgd2lsbCB1c2UgdGhpcyB3aGVuIGl0IG5lZWRzIHRv IHJlc29sdmUgYSBtb2R1bGUgbmFtZS4KVGhpcyBpcyBhIGNvbXBsZXRlIHBhdGgsIHVzdWFsbHkg dG8gYSB0ZWNobm9sb2d5IGZpbGUgd2l0aCBtYW55IHN0YW5kYXJkCmNlbGxzIGRlZmluZWQgaW4g aXQuCgpZb3UgbWlnaHQgd2FudCB0aGVzZSBkZWZpbmVkIGluIGVhY2ggZmlsZTsgcHV0IGF0IHRo ZSAqRU5EKiBvZiB5b3VyIGZpbGUKc29tZXRoaW5nIGxpa2U6CgogICAgLy8gTG9jYWwgVmFyaWFi bGVzOgogICAgLy8gdmVyaWxvZy1saWJyYXJ5LWZpbGVzOihcIi9zb21lL3BhdGgvdGVjaG5vbG9n eS52XCIgXCIvc29tZS9wYXRoL3RlY2gyLnZcIikKICAgIC8vIEVuZDoKClZlcmlsb2ctbW9kZSBh dHRlbXB0cyB0byBkZXRlY3QgY2hhbmdlcyB0byB0aGlzIGxvY2FsIHZhcmlhYmxlLCBidXQgdGhl eQphcmUgb25seSBpbnN1cmVkIHRvIGJlIGNvcnJlY3Qgd2hlbiB0aGUgZmlsZSBpcyBmaXJzdCB2 aXNpdGVkLiAgVGh1cyBpZiB5b3UKaGF2ZSBwcm9ibGVtcywgdXNlIFxcW2ZpbmQtYWx0ZXJuYXRl LWZpbGVdIFJFVCB0byBoYXZlIHRoZXNlIHRha2UgZWZmZWN0LgoKU2VlIGFsc28gYHZlcmlsb2ct bGlicmFyeS1mbGFncycsIGB2ZXJpbG9nLWxpYnJhcnktZGlyZWN0b3JpZXMnLiIKICA6Z3JvdXAg J3Zlcmlsb2ctbW9kZS1hdXRvCiAgOnR5cGUgJyhyZXBlYXQgZGlyZWN0b3J5KSkKKHB1dCAndmVy aWxvZy1saWJyYXJ5LWZpbGVzICdzYWZlLWxvY2FsLXZhcmlhYmxlICdsaXN0cCkKCihkZWZjdXN0 b20gdmVyaWxvZy1saWJyYXJ5LWV4dGVuc2lvbnMgJygiLnYiICIudmEiICIuc3YiKQogICJMaXN0 IG9mIGV4dGVuc2lvbnMgdG8gdXNlIHdoZW4gbG9va2luZyBmb3IgZmlsZXMgZm9yIC8qQVVUT0lO U1QqLy4KU2VlIGFsc28gYHZlcmlsb2ctbGlicmFyeS1mbGFncycsIGB2ZXJpbG9nLWxpYnJhcnkt ZGlyZWN0b3JpZXMnLiIKICA6dHlwZSAnKHJlcGVhdCBzdHJpbmcpCiAgOmdyb3VwICd2ZXJpbG9n LW1vZGUtYXV0bykKKHB1dCAndmVyaWxvZy1saWJyYXJ5LWV4dGVuc2lvbnMgJ3NhZmUtbG9jYWwt dmFyaWFibGUgJ2xpc3RwKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWFjdGl2ZS1sb3ctcmVnZXhwIG5p bAogICJJZiB0cnVlLCB0cmVhdCBzaWduYWxzIG1hdGNoaW5nIHRoaXMgcmVnZXhwIGFzIGFjdGl2 ZSBsb3cuClRoaXMgaXMgdXNlZCBmb3IgQVVUT1JFU0VUIGFuZCBBVVRPVElFT0ZGLiAgRm9yIHBy b3BlciBiZWhhdmlvciwKeW91IHdpbGwgcHJvYmFibHkgYWxzbyBuZWVkIGB2ZXJpbG9nLWF1dG8t cmVzZXQtd2lkdGhzJyBzZXQuIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWF1dG8KICA6dHlwZSAn KGNob2ljZSAoY29uc3QgbmlsKSByZWdleHApKQoocHV0ICd2ZXJpbG9nLWFjdGl2ZS1sb3ctcmVn ZXhwICdzYWZlLWxvY2FsLXZhcmlhYmxlICdzdHJpbmdwKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1 dG8tc2Vuc2UtaW5jbHVkZS1pbnB1dHMgbmlsCiAgIk5vbi1uaWwgbWVhbnMgQVVUT1NFTlNFIHNo b3VsZCBpbmNsdWRlIGFsbCBpbnB1dHMuCklmIG5pbCwgb25seSBpbnB1dHMgdGhhdCBhcmUgTk9U IG91dHB1dCBzaWduYWxzIGluIHRoZSBzYW1lIGJsb2NrIGFyZQppbmNsdWRlZC4iCiAgOmdyb3Vw ICd2ZXJpbG9nLW1vZGUtYXV0bwogIDp0eXBlICdib29sZWFuKQoocHV0ICd2ZXJpbG9nLWF1dG8t c2Vuc2UtaW5jbHVkZS1pbnB1dHMgJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ3Zlcmlsb2ctYm9vbGVh bnApCgooZGVmY3VzdG9tIHZlcmlsb2ctYXV0by1zZW5zZS1kZWZpbmVzLWNvbnN0YW50IG5pbAog ICJOb24tbmlsIG1lYW5zIEFVVE9TRU5TRSBzaG91bGQgYXNzdW1lIGFsbCBkZWZpbmVzIHJlcHJl c2VudCBjb25zdGFudHMuCldoZW4gdHJ1ZSwgdGhlIGRlZmluZXMgd2lsbCBub3QgYmUgaW5jbHVk ZWQgaW4gc2Vuc2l0aXZpdHkgbGlzdHMuICBUbwptYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGgg b3RoZXIgc2l0ZXMsIHRoaXMgc2hvdWxkIGJlIHNldCBhdCB0aGUgYm90dG9tCm9mIGVhY2ggVmVy aWxvZyBmaWxlIHRoYXQgcmVxdWlyZXMgaXQsIHJhdGhlciB0aGFuIGJlaW5nIHNldCBnbG9iYWxs eS4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYXV0bwogIDp0eXBlICdib29sZWFuKQoocHV0ICd2 ZXJpbG9nLWF1dG8tc2Vuc2UtZGVmaW5lcy1jb25zdGFudCAnc2FmZS1sb2NhbC12YXJpYWJsZSAn dmVyaWxvZy1ib29sZWFucCkKCihkZWZjdXN0b20gdmVyaWxvZy1hdXRvLXNpbXBsaWZ5LWV4cHJl c3Npb25zIHQKICAiTm9uLW5pbCBtZWFucyBBVVRPcyB3aWxsIHNpbXBsaWZ5IGV4cHJlc3Npb25z IHdoZW4gY2FsY3VsYXRpbmcgYml0IHJhbmdlcy4KV2hlbiBuaWwsIGRvIG5vdCBzaW1wbHkgcmFu Z2VzLCB3aGljaCBtYXkgc2ltcGxpZnkgdGhlIG91dHB1dCwKYnV0IG1heSBjYXVzZSBwcm9ibGVt cyB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBpbnN0YW50aWF0aW9ucwpvdXRwdXR0aW5nIHRvIHRo ZSBzYW1lIHdpcmUuICBUbyBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGgKb3RoZXIgc2l0ZXMs IHRoaXMgc2hvdWxkIGJlIHNldCBhdCB0aGUgYm90dG9tIG9mIGVhY2ggVmVyaWxvZwpmaWxlIHRo YXQgcmVxdWlyZXMgaXQsIHJhdGhlciB0aGFuIGJlaW5nIHNldCBnbG9iYWxseS4iCiAgOnZlcnNp b24gIjI3LjEiCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYXV0bwogIDp0eXBlICdib29sZWFuKQoo cHV0ICd2ZXJpbG9nLWF1dG8tc2ltcGxpZnktZXhwcmVzc2lvbnMgJ3NhZmUtbG9jYWwtdmFyaWFi bGUgJ3Zlcmlsb2ctYm9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmlsb2ctYXV0by1yZXNldC1ibG9j a2luZy1pbi1ub24gdAogICJOb24tbmlsIG1lYW5zIEFVVE9SRVNFVCB3aWxsIHJlc2V0IGJsb2Nr aW5nIHN0YXRlbWVudHMuCldoZW4gdHJ1ZSwgQVVUT1JFU0VUIHdpbGwgcmVzZXQgaW4gYmxvY2tp bmcgc3RhdGVtZW50cyB0aG9zZQpzaWduYWxzIHdoaWNoIHdlcmUgYXNzaWduZWQgd2l0aCBibG9j a2luZyBhc3NpZ25tZW50cyAoPSkgZXZlbiBpbgphIGJsb2NrIHdpdGggbm9uLWJsb2NraW5nIGFz c2lnbm1lbnRzICg8PSkuCgpJZiBuaWwsIGFsbCBibG9ja2luZyBhc3NpZ25lZCBzaWduYWxzIGFy ZSBpZ25vcmVkIHdoZW4gYW55Cm5vbi1ibG9ja2luZyBhc3NpZ25tZW50IGlzIGluIHRoZSBBVVRP UkVTRVQgYmxvY2suICBUaGlzIGFsbG93cwpibG9ja2luZyBhc3NpZ25tZW50cyB0byBiZSB1c2Vk IGZvciB0ZW1wb3JhcnkgdmFsdWVzIGFuZCBub3QgaGF2ZQp0aG9zZSB0ZW1wb3JhcmllcyByZXNl dC4gIFNlZSBleGFtcGxlIGluIGB2ZXJpbG9nLWF1dG8tcmVzZXQnLiIKICA6dmVyc2lvbiAiMjQu MSIgIDsgcmV2NzE4CiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1hdXRv KQoocHV0ICd2ZXJpbG9nLWF1dG8tcmVzZXQtYmxvY2tpbmctaW4tbm9uICdzYWZlLWxvY2FsLXZh cmlhYmxlICd2ZXJpbG9nLWJvb2xlYW5wKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1dG8tcmVzZXQt d2lkdGhzIHQKICAiVHJ1ZSBtZWFucyBBVVRPUkVTRVQgc2hvdWxkIGRldGVybWluZSB0aGUgd2lk dGggb2Ygc2lnbmFscy4KVGhpcyBpcyB0aGVuIHVzZWQgdG8gc2V0IHRoZSB3aWR0aCBvZiB0aGUg emVybyAoMzInaDAgZm9yIGV4YW1wbGUpLiAgVGhpcwppcyByZXF1aXJlZCBieSBzb21lIGxpbnQg dG9vbHMgdGhhdCBhcmVuJ3Qgc21hcnQgZW5vdWdoIHRvIGlnbm9yZSB3aWR0aHMgb2YKdGhlIGNv bnN0YW50IHplcm8uICBUaGlzIG1heSByZXN1bHQgaW4gdWdseSBjb2RlIHdoZW4gcGFyYW1ldGVy cyBkZXRlcm1pbmUKdGhlIE1TQiBvciBMU0Igb2YgYSBzaWduYWwgaW5zaWRlIGFuIEFVVE9SRVNF VC4KCklmIG5pbCwgQVVUT1JFU0VUIHVzZXMgXCIwXCIgYXMgdGhlIGNvbnN0YW50LgoKSWYgYHVu YmFzZWQnLCBBVVRPUkVTRVQgdXNlZCB0aGUgdW5iYXNlZCB1bnNpemVkIGxpdGVyYWwgXCJcXD0n MFwiCmFzIHRoZSBjb25zdGFudC4gVGhpcyBzZXR0aW5nIGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVk IGZvcgpTeXN0ZW1WZXJpbG9nIGRlc2lnbnMuIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICd2 ZXJpbG9nLW1vZGUtYXV0bykKKHB1dCAndmVyaWxvZy1hdXRvLXJlc2V0LXdpZHRocyAnc2FmZS1s b2NhbC12YXJpYWJsZQogICAgIChsYW1iZGEgKHgpIChtZW1xIHggJyhuaWwgdCB1bmJhc2VkKSkp KQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWFzc2lnbm1lbnQtZGVsYXkgIiIKICAiVGV4dCB1c2VkIGZv ciBkZWxheXMgaW4gZGVsYXllZCBhc3NpZ25tZW50cy4gIEFkZCBhIHRyYWlsaW5nIHNwYWNlIGlm IHNldC4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYXV0bwogIDp0eXBlICdzdHJpbmcpCihwdXQg J3Zlcmlsb2ctYXNzaWdubWVudC1kZWxheSAnc2FmZS1sb2NhbC12YXJpYWJsZSAnc3RyaW5ncCkK CihkZWZjdXN0b20gdmVyaWxvZy1hdXRvLWFyZy1mb3JtYXQgJ3BhY2tlZAogICJGb3JtYXR0aW5n IHRvIHVzZSBmb3IgQVVUT0FSRyBzaWduYWwgbmFtZXMuCklmIGBwYWNrZWQnLCB0aGVuIGFzIG1h bnkgaW5wdXRzIGFuZCBvdXRwdXRzIHRoYXQgZml0IHdpdGhpbgpgZmlsbC1jb2x1bW4nIHdpbGwg YmUgcHV0IG9udG8gb25lIGxpbmUuCgpJZiBgc2luZ2xlJywgdGhlbiBhIHNpbmdsZSBpbnB1dCBv ciBvdXRwdXQgd2lsbCBiZSBwdXQgb250byBlYWNoCmxpbmUuIgogIDp2ZXJzaW9uICIyNS4xIgog IDp0eXBlICcocmFkaW8gKGNvbnN0IDp0YWcgIkxpbmUgdXAgQXNzaWdubWVudHMgYW5kIERlY2xh cmF0aW9ucyIgcGFja2VkKQoJCShjb25zdCA6dGFnICJMaW5lIHVwIEFzc2lnbm1lbnQgc3RhdGVt ZW50cyIgc2luZ2xlKSkKICA6Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1hdXRvKQoocHV0ICd2ZXJpbG9n LWF1dG8tYXJnLWZvcm1hdCAnc2FmZS1sb2NhbC12YXJpYWJsZQogICAgIChsYW1iZGEgKHgpICht ZW1xIHggJyhwYWNrZWQgc2luZ2xlKSkpKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1dG8tYXJnLXNv cnQgbmlsCiAgIk5vbi1uaWwgbWVhbnMgQVVUT0FSRyBzaWduYWwgbmFtZXMgd2lsbCBiZSBzb3J0 ZWQsIG5vdCBpbiBkZWNsYXJhdGlvbiBvcmRlci4KRGVjbGFyYXRpb24gb3JkZXIgaXMgYWR2YW50 YWdlb3VzIHdpdGggb3JkZXIgYmFzZWQgaW5zdGFudGlhdGlvbnMKYW5kIGlzIHRoZSBkZWZhdWx0 IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAgU29ydGVkIG9yZGVyCnJlZHVjZXMgY2hhbmdl cyB3aGVuIGRlY2xhcmF0aW9ucyBhcmUgbW92ZWQgYXJvdW5kIGluIGEgZmlsZSwgYW5kCml0J3Mg YmFkIHByYWN0aWNlIHRvIHJlbHkgb24gb3JkZXIgYmFzZWQgaW5zdGFudGlhdGlvbnMgYW55aG93 LgoKU2VlIGFsc28gYHZlcmlsb2ctYXV0by1pbnN0LXNvcnQnLiIKICA6Z3JvdXAgJ3Zlcmlsb2ct bW9kZS1hdXRvCiAgOnR5cGUgJ2Jvb2xlYW4pCihwdXQgJ3Zlcmlsb2ctYXV0by1hcmctc29ydCAn c2FmZS1sb2NhbC12YXJpYWJsZSAndmVyaWxvZy1ib29sZWFucCkKCihkZWZjdXN0b20gdmVyaWxv Zy1hdXRvLWluc3QtZG90LW5hbWUgbmlsCiAgIk5vbi1uaWwgbWVhbnMgd2hlbiBjcmVhdGluZyBw b3J0cyB3aXRoIEFVVE9JTlNULCB1c2UgLm5hbWUgc3ludGF4LgpUaGlzIHdpbGwgdXNlIFwiLnBv cnRcIiBpbnN0ZWFkIG9mIFwiLnBvcnQocG9ydClcIiB3aGVuIHBvc3NpYmxlLgpUaGlzIGlzIG9u bHkgbGVnYWwgaW4gU3lzdGVtVmVyaWxvZyBmaWxlcywgYW5kIHdpbGwgY29uZnVzZSBvbGRlcgpz aW11bGF0b3JzLiAgU2V0dGluZyBgdmVyaWxvZy1hdXRvLWluc3QtdmVjdG9yJyB0byBuaWwgbWF5 IGFsc28KYmUgZGVzaXJhYmxlIHRvIGluY3JlYXNlIGhvdyBvZnRlbiAubmFtZSB3aWxsIGJlIHVz ZWQuIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWF1dG8KICA6dHlwZSAnYm9vbGVhbikKKHB1dCAn dmVyaWxvZy1hdXRvLWluc3QtZG90LW5hbWUgJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ3Zlcmlsb2ct Ym9vbGVhbnApCgooZGVmY3VzdG9tIHZlcmlsb2ctYXV0by1pbnN0LXBhcmFtLXZhbHVlIG5pbAog ICJOb24tbmlsIG1lYW5zIEFVVE9JTlNUIHdpbGwgcmVwbGFjZSBwYXJhbWV0ZXJzIHdpdGggdGhl IHBhcmFtZXRlciB2YWx1ZS4KSWYgbmlsLCBsZWF2ZSBwYXJhbWV0ZXJzIGFzIHN5bWJvbGljIG5h bWVzLgoKUGFyYW1ldGVycyBtdXN0IGJlIGluIFZlcmlsb2cgMjAwMSBmb3JtYXQgIyguLi4pLCBh bmQgaWYgYSBwYXJhbWV0ZXIgaXMgbm90Cmxpc3RlZCBhcyBzdWNoIHRoZXJlIChhcyB3aGVuIHRo ZSBkZWZhdWx0IHZhbHVlIGlzIGFjY2VwdGFibGUpLCBpdCB3aWxsIG5vdApiZSByZXBsYWNlZCwg YW5kIHdpbGwgcmVtYWluIHN5bWJvbGljLgoKRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBzdWJtb2R1 bGUgdXNlcyBwYXJhbWV0ZXJzIHRvIGRlY2xhcmUgdGhlIHNpemUgb2YgaXRzCmlucHV0cy4gIFRo aXMgaXMgdGhlbiB1c2VkIGJ5IGFuIHVwcGVyIG1vZHVsZToKCiAgICAgICAgbW9kdWxlIEluc3RN b2R1bGUgKG8saSk7CiAgICAgICAgICAgcGFyYW1ldGVyIFdJRFRIOwogICAgICAgICAgIGlucHV0 IFtXSURUSC0xOjBdIGk7CiAgICAgICAgICAgcGFyYW1ldGVyIHR5cGUgT1VUX3Q7CiAgICAgICAg ICAgb3V0cHV0IE9VVF90IG87CiAgICAgICAgZW5kbW9kdWxlCgogICAgICAgIG1vZHVsZSBFeGFt cFBhcmFtVmFsMTsKICAgICAgICAgICAvKkFVVE9PVVRQVVQqLwogICAgICAgICAgIC8vIEJlZ2lu bmluZyBvZiBhdXRvbWF0aWMgb3V0cHV0cwogICAgICAgICAgIG91dHB1dCBPVVRfdCBvOwogICAg ICAgICAgIC8vIEVuZCBvZiBhdXRvbWF0aWNzCgogICAgICAgICAgIEluc3RNb2R1bGUKICAgICAg ICAgICAgICMoLldJRFRIKDEwKSwKICAgICAgICAgICAgICAgLC5PVVRfdCh1cHBlcl90KSkKICAg ICAgICAgICAgaW5zdE5hbWUKICAgICAgICAgICAgICgvKkFVVE9JTlNUKi8KICAgICAgICAgICAg ICAubyAgICAgICAgKG8pLAogICAgICAgICAgICAgIC5pICAgICAgICAoaVtXSURUSC0xOjBdKSk7 CiAgICAgICAgZW5kbW9kdWxlCgogICAgICAgLy8gTG9jYWwgVmFyaWFibGVzOgogICAgICAgLy8g dmVyaWxvZy10eXBlZGVmLXJlZ2V4cDogXCJfdCRcIgogICAgICAgLy8gRW5kOgoKTm90ZSBldmVu IHRob3VnaCBXSURUSD0xMCwgdGhlIEFVVE9JTlNUIGhhcyBsZWZ0IHRoZSBwYXJhbWV0ZXIgYXMK YSBzeW1ib2xpYyBuYW1lLiAgTGlrZXdpc2UgdGhlIE9VVF90IGlzIHByZXNlcnZlZCBhcyB0aGUg bmFtZQpmcm9tIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlLgoKSWYgYHZlcmlsb2ctYXV0by1pbnN0 LXBhcmFtLXZhbHVlJyBpcyBzZXQsIHRoaXMgd2lsbAppbnN0ZWFkIGV4cGFuZCB0bzoKCiAgICAg ICAgbW9kdWxlIEV4YW1wUGFyYW1WYWwxOwogICAgICAgICAgIC8qQVVUT09VVFBVVCovCiAgICAg ICAgICAgLy8gQmVnaW5uaW5nIG9mIGF1dG9tYXRpYyBvdXRwdXRzCiAgICAgICAgICAgb3V0cHV0 IHVwcGVyX3QgbzsKICAgICAgICAgICAvLyBFbmQgb2YgYXV0b21hdGljcwoKICAgICAgICAgICBJ bnN0TW9kdWxlCiAgICAgICAgICAgICAjKC5XSURUSCgxMCksCiAgICAgICAgICAgICAgICwuT1VU X3QodXBwZXJfdCkpCiAgICAgICAgICAgIGluc3ROYW1lCiAgICAgICAgICAgICAoLypBVVRPSU5T VCovCiAgICAgICAgICAgICAgLm8gICAgICAgIChvKSwKICAgICAgICAgICAgICAuaSAgICAgICAg KGlbOTowXSkpOwoKTm90ZSB0aGF0IHRoZSBpbnN0YW50aWF0aW9uIG5vdyBoYXMgXCJpWzk6MF1c IiBhcyB0aGUgV0lEVEgKd2FzIGV4cGFuZGVkLiAgTGlrZXdpc2UgdGhlIGRhdGEgdHlwZSBvZiBc Im9cIiBpbiB0aGUgQVVUT09VVFBVVAppcyBub3cgdXBwZXJfdCwgZnJvbSB0aGUgT1VUX3QgcGFy YW1ldGVyIG92ZXJyaWRlLgpUaGlzIHNlY29uZCBleHBhbnNpb24gb2YgcGFyYW1ldGVyIHR5cGVz IGNhbiBiZSBvdmVycmlkZGVuIHdpdGgKYHZlcmlsb2ctYXV0by1pbnN0LXBhcmFtLXZhbHVlLXR5 cGUnLiIKICA6Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1hdXRvCiAgOnR5cGUgJ2Jvb2xlYW4pCihwdXQg J3Zlcmlsb2ctYXV0by1pbnN0LXBhcmFtLXZhbHVlICdzYWZlLWxvY2FsLXZhcmlhYmxlICd2ZXJp bG9nLWJvb2xlYW5wKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1dG8taW5zdC1wYXJhbS12YWx1ZS10 eXBlIHQKICAiTm9uLW5pbCBtZWFucyBleHBhbmQgcGFyYW1ldGVyIHR5cGUgaW4gaW5zdGFudGlh dGlvbnMuCklmIG5pbCwgbGVhdmUgcGFyYW1ldGVyIHR5cGVzIGFzIHN5bWJvbGljIG5hbWVzLgoK U2VlIGB2ZXJpbG9nLWF1dG8taW5zdC1wYXJhbS12YWx1ZScuIgogIDp2ZXJzaW9uICIyNS4xIgog IDpncm91cCAndmVyaWxvZy1tb2RlLWF1dG8KICA6dHlwZSAnYm9vbGVhbikKKHB1dCAndmVyaWxv Zy1hdXRvLWluc3QtcGFyYW0tdmFsdWUtdHlwZSAnc2FmZS1sb2NhbC12YXJpYWJsZSAndmVyaWxv Zy1ib29sZWFucCkKCihkZWZjdXN0b20gdmVyaWxvZy1hdXRvLWluc3Qtc29ydCBuaWwKICAiTm9u LW5pbCBtZWFucyBBVVRPSU5TVCBzaWduYWxzIHdpbGwgYmUgc29ydGVkLCBub3QgaW4gZGVjbGFy YXRpb24gb3JkZXIuCkFsc28gYWZmZWN0cyBBVVRPSU5TVFBBUkFNLiAgRGVjbGFyYXRpb24gb3Jk ZXIgaXMgdGhlIGRlZmF1bHQgZm9yCmJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGFuZCBhcyBzb21l IHRlYW1zIHByZWZlciBzaWduYWxzIHRoYXQgYXJlCmRlY2xhcmVkIHRvZ2V0aGVyIHRvIHJlbWFp biB0b2dldGhlci4gIFNvcnRlZCBvcmRlciByZWR1Y2VzCmNoYW5nZXMgd2hlbiBkZWNsYXJhdGlv bnMgYXJlIG1vdmVkIGFyb3VuZCBpbiBhIGZpbGUuCgpTZWUgYWxzbyBgdmVyaWxvZy1hdXRvLWFy Zy1zb3J0Jy4iCiAgOnZlcnNpb24gIjI0LjEiICA7IHJldjY4OAogIDpncm91cCAndmVyaWxvZy1t b2RlLWF1dG8KICA6dHlwZSAnYm9vbGVhbikKKHB1dCAndmVyaWxvZy1hdXRvLWluc3Qtc29ydCAn c2FmZS1sb2NhbC12YXJpYWJsZSAndmVyaWxvZy1ib29sZWFucCkKCihkZWZjdXN0b20gdmVyaWxv Zy1hdXRvLWluc3QtdmVjdG9yIHQKICAiVHJ1ZSBtZWFucyB3aGVuIGNyZWF0aW5nIGRlZmF1bHQg cG9ydHMgd2l0aCBBVVRPSU5TVCwgdXNlIGJ1cyBzdWJzY3JpcHRzLgpJZiBuaWwsIHNraXAgdGhl IHN1YnNjcmlwdCB3aGVuIGl0IG1hdGNoZXMgdGhlIGVudGlyZSBidXMgYXMgZGVjbGFyZWQgaW4K dGhlIG1vZHVsZSAoQVVUT1dJUkUgc2lnbmFscyBhbHdheXMgYXJlIHN1YnNjcmlwdGVkLCB5b3Ug bXVzdCBtYW51YWxseQpkZWNsYXJlIHRoZSB3aXJlIHRvIGhhdmUgdGhlIHN1YnNjcmlwdHMgcmVt b3ZlZC4pICBTZXR0aW5nIHRoaXMgdG8gbmlsIG1heQpzcGVlZCB1cCBzb21lIHNpbXVsYXRvcnMs IGJ1dCBpcyBsZXNzIGdlbmVyYWwgYW5kIGhhcmRlciB0byByZWFkLCBzbyBhdm9pZC4KSWYgYHVu c2lnbmVkJywgdXNlIHZlY3RvcnMgZm9yIHVuc2lnbmVkIHR5cGVzIChsaWtlIHVzaW5nIHRydWUs Cm90aGVyd2lzZSBubyB2ZWN0b3JzIGlmIHNpemVzIG1hdGNoIChsaWtlIHVzaW5nIG5pbCkuIgog IDpncm91cCAndmVyaWxvZy1tb2RlLWF1dG8KICA6dHlwZSAnKGNob2ljZSAoY29uc3QgbmlsKSAo Y29uc3QgdCkgKGNvbnN0IHVuc2lnbmVkKSkpCihwdXQgJ3Zlcmlsb2ctYXV0by1pbnN0LXZlY3Rv ciAnc2FmZS1sb2NhbC12YXJpYWJsZQogICAgIChsYW1iZGEgKHgpIChtZW1xIHggJyhuaWwgdCB1 bnNpZ25lZCkpKSkKCihkZWZjdXN0b20gdmVyaWxvZy1hdXRvLWluc3QtdGVtcGxhdGUtbnVtYmVy cyBuaWwKICAiSWYgdHJ1ZSwgd2hlbiBjcmVhdGluZyB0ZW1wbGF0ZWQgcG9ydHMgd2l0aCBBVVRP SU5TVCwgYWRkIGEgY29tbWVudC4KCklmIHQsIHRoZSBjb21tZW50IHdpbGwgYWRkIHRoZSBsaW5l IG51bWJlciBvZiB0aGUgdGVtcGxhdGUgdGhhdAp3YXMgdXNlZCBmb3IgdGhhdCBwb3J0IGRlY2xh cmF0aW9uLiAgVGhpcyBzZXR0aW5nIGlzIHN1Z2dlc3RlZApvbmx5IGZvciBkZWJ1Z2dpbmcgdXNl LCBhcyByZWd1bGFyIHVzZSBtYXkgY2F1c2UgYSBsYXJnZSBudW1iZXJzCm9mIG1lcmdlIGNvbmZs aWN0cy4KCklmIGBsaHMnLCB0aGUgY29tbWVudCB3aWxsIHNob3cgdGhlIGxlZnQgaGFuZCBzaWRl IG9mIHRoZQpBVVRPX1RFTVBMQVRFIHJ1bGUgdGhhdCBpcyBtYXRjaGVkLiAgVGhpcyBpcyBsZXNz IHByZWNpc2UgdGhhbgpudW1iZXJpbmcgKHQpIHdoZW4gbXVsdGlwbGUgcnVsZXMgaGF2ZSB0aGUg c2FtZSBwaW4gbmFtZSwgYnV0Cndvbid0IG1lcmdlIGNvbmZsaWN0LiIKICA6Z3JvdXAgJ3Zlcmls b2ctbW9kZS1hdXRvCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IG5pbCkgKGNvbnN0IHQpIChjb25z dCBsaHMpKSkKKHB1dCAndmVyaWxvZy1hdXRvLWluc3QtdGVtcGxhdGUtbnVtYmVycyAnc2FmZS1s b2NhbC12YXJpYWJsZQogICAgIChsYW1iZGEgKHgpIChtZW1xIHggJyhuaWwgdCBsaHMpKSkpCgoo ZGVmY3VzdG9tIHZlcmlsb2ctYXV0by1pbnN0LXRlbXBsYXRlLXJlcXVpcmVkIG5pbAogICJJZiBu b24tbmlsLCB3aGVuIGNyZWF0aW5nIGEgcG9ydCB3aXRoIEFVVE9JTlNULCByZXF1aXJlIGEgdGVt cGxhdGUuCkFueSBwb3J0IHdoaWNoIGRvZXMgbm90IGhhdmUgYSB0ZW1wbGF0ZSB3aWxsIGJlIG9t aXR0ZWQgZnJvbSB0aGUKaW5zdGFudGlhdGlvbi4KCklmIG5pbCwgaWYgYSBwb3J0IGlzIG5vdCB0 ZW1wbGF0ZWQgaXQgd2lsbCBiZSBpbnNlcnRlZCB0byBjb25uZWN0CnRvIGEgbmV0IHdpdGggdGhl IHNhbWUgbmFtZSBhcyB0aGUgcG9ydC4iCiAgOnZlcnNpb24gIjI4LjAiCiAgOmdyb3VwICd2ZXJp bG9nLW1vZGUtYXV0bwogIDp0eXBlICdib29sZWFuKQoocHV0ICd2ZXJpbG9nLWF1dG8taW5zdC10 ZW1wbGF0ZS1yZXF1aXJlZCAnc2FmZS1sb2NhbC12YXJpYWJsZSAndmVyaWxvZy1ib29sZWFucCkK CihkZWZjdXN0b20gdmVyaWxvZy1hdXRvLWluc3QtY29sdW1uIDQwCiAgIkluZGVudC10byBjb2x1 bW4gbnVtYmVyIGZvciBuZXQgbmFtZSBwYXJ0IG9mIEFVVE9JTlNUIGNyZWF0ZWQgcGluLiIKICA6 Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1pbmRlbnQKICA6dHlwZSAnaW50ZWdlcikKKHB1dCAndmVyaWxv Zy1hdXRvLWluc3QtY29sdW1uICdzYWZlLWxvY2FsLXZhcmlhYmxlICdpbnRlZ2VycCkKCihkZWZj dXN0b20gdmVyaWxvZy1hdXRvLWluc3QtaW50ZXJmYWNlZC1wb3J0cyBuaWwKICAiTm9uLW5pbCBt ZWFucyBpbmNsdWRlIGludGVyZmFjZWQgcG9ydHMgaW4gQVVUT0lOU1QgZXhwYW5zaW9ucy4iCiAg OnZlcnNpb24gIjI0LjMiICA7IHJldjc3MywgZGVmYXVsdCBjaGFuZ2UgcmV2ODE1CiAgOmdyb3Vw ICd2ZXJpbG9nLW1vZGUtYXV0bwogIDp0eXBlICdib29sZWFuKQoocHV0ICd2ZXJpbG9nLWF1dG8t aW5zdC1pbnRlcmZhY2VkLXBvcnRzICdzYWZlLWxvY2FsLXZhcmlhYmxlICd2ZXJpbG9nLWJvb2xl YW5wKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1dG8taW5wdXQtaWdub3JlLXJlZ2V4cCBuaWwKICAi SWYgbm9uLW5pbCwgd2hlbiBjcmVhdGluZyBBVVRPSU5QVVQsIGlnbm9yZSBzaWduYWxzIG1hdGNo aW5nIHRoaXMgcmVnZXhwLgpTZWUgdGhlIFxcW3Zlcmlsb2ctZmFxXSBmb3IgZXhhbXBsZXMgb24g dXNpbmcgdGhpcy4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYXV0bwogIDp0eXBlICcoY2hvaWNl IChjb25zdCBuaWwpIHJlZ2V4cCkpCihwdXQgJ3Zlcmlsb2ctYXV0by1pbnB1dC1pZ25vcmUtcmVn ZXhwICdzYWZlLWxvY2FsLXZhcmlhYmxlICdzdHJpbmdwKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1 dG8tcmVnLWlucHV0LWFzc2lnbmVkLWlnbm9yZS1yZWdleHAgbmlsCiAgIklmIG5vbi1uaWwsIHdo ZW4gY3JlYXRpbmcgQVVUT0lOUFVUUkVHLCBpZ25vcmUgc2lnbmFscyBtYXRjaGluZyB0aGlzIHJl Z2V4cC4iCiAgOnZlcnNpb24gIjI3LjEiCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYXV0bwogIDp0 eXBlICcoY2hvaWNlIChjb25zdCBuaWwpIHJlZ2V4cCkpCihwdXQgJ3Zlcmlsb2ctYXV0by1yZWct aW5wdXQtYXNzaWduZWQtaWdub3JlLXJlZ2V4cCAnc2FmZS1sb2NhbC12YXJpYWJsZSAnc3RyaW5n cCkKCihkZWZjdXN0b20gdmVyaWxvZy1hdXRvLWlub3V0LWlnbm9yZS1yZWdleHAgbmlsCiAgIklm IG5vbi1uaWwsIHdoZW4gY3JlYXRpbmcgQVVUT0lOT1VULCBpZ25vcmUgc2lnbmFscyBtYXRjaGlu ZyB0aGlzIHJlZ2V4cC4KU2VlIHRoZSBcXFt2ZXJpbG9nLWZhcV0gZm9yIGV4YW1wbGVzIG9uIHVz aW5nIHRoaXMuIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWF1dG8KICA6dHlwZSAnKGNob2ljZSAo Y29uc3QgbmlsKSByZWdleHApKQoocHV0ICd2ZXJpbG9nLWF1dG8taW5vdXQtaWdub3JlLXJlZ2V4 cCAnc2FmZS1sb2NhbC12YXJpYWJsZSAnc3RyaW5ncCkKCihkZWZjdXN0b20gdmVyaWxvZy1hdXRv LW91dHB1dC1pZ25vcmUtcmVnZXhwIG5pbAogICJJZiBub24tbmlsLCB3aGVuIGNyZWF0aW5nIEFV VE9PVVRQVVQsIGlnbm9yZSBzaWduYWxzIG1hdGNoaW5nIHRoaXMgcmVnZXhwLgpTZWUgdGhlIFxc W3Zlcmlsb2ctZmFxXSBmb3IgZXhhbXBsZXMgb24gdXNpbmcgdGhpcy4iCiAgOmdyb3VwICd2ZXJp bG9nLW1vZGUtYXV0bwogIDp0eXBlICcoY2hvaWNlIChjb25zdCBuaWwpIHJlZ2V4cCkpCihwdXQg J3Zlcmlsb2ctYXV0by1vdXRwdXQtaWdub3JlLXJlZ2V4cCAnc2FmZS1sb2NhbC12YXJpYWJsZSAn c3RyaW5ncCkKCihkZWZjdXN0b20gdmVyaWxvZy1hdXRvLXRlbXBsYXRlLXdhcm4tdW51c2VkIG5p bAogICJOb24tbmlsIG1lYW5zIHJlcG9ydCB3YXJuaW5nIGlmIGFuIEFVVE9fVEVNUExBVEUgbGlu ZSBpcyBub3QgdXNlZC4KVGhpcyBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIEVtYWNz IDIxLjEgb3IgWEVtYWNzIDIxLjQuIgogIDp2ZXJzaW9uICIyNC4zIiAgOyByZXY3ODcKICA6Z3Jv dXAgJ3Zlcmlsb2ctbW9kZS1hdXRvCiAgOnR5cGUgJ2Jvb2xlYW4pCihwdXQgJ3Zlcmlsb2ctYXV0 by10ZW1wbGF0ZS13YXJuLXVudXNlZCAnc2FmZS1sb2NhbC12YXJpYWJsZSAndmVyaWxvZy1ib29s ZWFucCkKCihkZWZjdXN0b20gdmVyaWxvZy1hdXRvLXRpZW9mZi1kZWNsYXJhdGlvbiAid2lyZSIK ICAiRGF0YSB0eXBlIHVzZWQgZm9yIHRoZSBkZWNsYXJhdGlvbiBmb3IgQVVUT1RJRU9GRi4KSWYg XCJ3aXJlXCIgdGhlbiBjcmVhdGUgYSB3aXJlLCBpZiBcImFzc2lnblwiIGNyZWF0ZSBhbgphc3Np Z25tZW50LCBlbHNlIHRoZSBkYXRhIHR5cGUgZm9yIHZhcmlhYmxlIGNyZWF0aW9uLiIKICA6dmVy c2lvbiAiMjQuMSIgIDsgcmV2NzEzCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYXV0bwogIDp0eXBl ICdzdHJpbmcpCihwdXQgJ3Zlcmlsb2ctYXV0by10aWVvZmYtZGVjbGFyYXRpb24gJ3NhZmUtbG9j YWwtdmFyaWFibGUgJ3N0cmluZ3ApCgooZGVmY3VzdG9tIHZlcmlsb2ctYXV0by10aWVvZmYtaWdu b3JlLXJlZ2V4cCBuaWwKICAiSWYgbm9uLW5pbCwgd2hlbiBjcmVhdGluZyBBVVRPVElFT0ZGLCBp Z25vcmUgc2lnbmFscyBtYXRjaGluZyB0aGlzIHJlZ2V4cC4KU2VlIHRoZSBcXFt2ZXJpbG9nLWZh cV0gZm9yIGV4YW1wbGVzIG9uIHVzaW5nIHRoaXMuIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWF1 dG8KICA6dHlwZSAnKGNob2ljZSAoY29uc3QgbmlsKSByZWdleHApKQoocHV0ICd2ZXJpbG9nLWF1 dG8tdGllb2ZmLWlnbm9yZS1yZWdleHAgJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ3N0cmluZ3ApCgoo ZGVmY3VzdG9tIHZlcmlsb2ctYXV0by11bnVzZWQtaWdub3JlLXJlZ2V4cCBuaWwKICAiSWYgbm9u LW5pbCwgd2hlbiBjcmVhdGluZyBBVVRPVU5VU0VELCBpZ25vcmUgc2lnbmFscyBtYXRjaGluZyB0 aGlzIHJlZ2V4cC4KU2VlIHRoZSBcXFt2ZXJpbG9nLWZhcV0gZm9yIGV4YW1wbGVzIG9uIHVzaW5n IHRoaXMuIgogIDpncm91cCAndmVyaWxvZy1tb2RlLWF1dG8KICA6dHlwZSAnKGNob2ljZSAoY29u c3QgbmlsKSByZWdleHApKQoocHV0ICd2ZXJpbG9nLWF1dG8tdW51c2VkLWlnbm9yZS1yZWdleHAg J3NhZmUtbG9jYWwtdmFyaWFibGUgJ3N0cmluZ3ApCgooZGVmY3VzdG9tIHZlcmlsb2ctY2FzZS1m b2xkIHQKICAiTm9uLW5pbCBtZWFucyBgdmVyaWxvZy1tb2RlJyByZWdleHBzIHNob3VsZCBpZ25v cmUgY2FzZS4KVGhpcyB2YXJpYWJsZSBpcyB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5OyBu aWwgaXMgc3VnZ2VzdGVkLiIKICA6dmVyc2lvbiAiMjQuNCIKICA6Z3JvdXAgJ3Zlcmlsb2ctbW9k ZQogIDp0eXBlICdib29sZWFuKQoocHV0ICd2ZXJpbG9nLWNhc2UtZm9sZCAnc2FmZS1sb2NhbC12 YXJpYWJsZSAndmVyaWxvZy1ib29sZWFucCkKCihkZWZjdXN0b20gdmVyaWxvZy10eXBlZGVmLXJl Z2V4cCBuaWwKICAiSWYgbm9uLW5pbCwgcmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyBW ZXJpbG9nLTIwMDEgdHlwZWRlZiBuYW1lcy4KRm9yIGV4YW1wbGUsIFwiX3QkXCIgbWF0Y2hlcyB0 eXBlZGVmcyBuYW1lZCB3aXRoIF90LCBhcyBpbiB0aGUgQyBsYW5ndWFnZS4KU2VlIGFsc28gYHZl cmlsb2ctY2FzZS1mb2xkJy4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYXV0bwogIDp0eXBlICco Y2hvaWNlIChjb25zdCBuaWwpIHJlZ2V4cCkpCihwdXQgJ3Zlcmlsb2ctdHlwZWRlZi1yZWdleHAg J3NhZmUtbG9jYWwtdmFyaWFibGUgJ3N0cmluZ3ApCgooZGVmY3VzdG9tIHZlcmlsb2ctbW9kZS1o b29rICAgJ3Zlcmlsb2ctc2V0LWNvbXBpbGUtY29tbWFuZAogICJIb29rIHJ1biBhZnRlciBWZXJp bG9nIG1vZGUgaXMgbG9hZGVkLiIKICA6dHlwZSAnaG9vawogIDpncm91cCAndmVyaWxvZy1tb2Rl KQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWF1dG8taG9vayBuaWwKICAiSG9vayBydW4gYWZ0ZXIgYHZl cmlsb2ctbW9kZScgdXBkYXRlcyBBVVRPcy4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYXV0bwog IDp0eXBlICdob29rKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWJlZm9yZS1hdXRvLWhvb2sgbmlsCiAg Ikhvb2sgcnVuIGJlZm9yZSBgdmVyaWxvZy1tb2RlJyB1cGRhdGVzIEFVVE9zLiIKICA6Z3JvdXAg J3Zlcmlsb2ctbW9kZS1hdXRvCiAgOnR5cGUgJ2hvb2spCgooZGVmY3VzdG9tIHZlcmlsb2ctZGVs ZXRlLWF1dG8taG9vayBuaWwKICAiSG9vayBydW4gYWZ0ZXIgYHZlcmlsb2ctbW9kZScgZGVsZXRl cyBBVVRPcy4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYXV0bwogIDp0eXBlICdob29rKQoKKGRl ZmN1c3RvbSB2ZXJpbG9nLWJlZm9yZS1kZWxldGUtYXV0by1ob29rIG5pbAogICJIb29rIHJ1biBi ZWZvcmUgYHZlcmlsb2ctbW9kZScgZGVsZXRlcyBBVVRPcy4iCiAgOmdyb3VwICd2ZXJpbG9nLW1v ZGUtYXV0bwogIDp0eXBlICdob29rKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWdldG9wdC1mbGFncy1o b29rIG5pbAogICJIb29rIHJ1biBhZnRlciBgdmVyaWxvZy1nZXRvcHQtZmxhZ3MnIGRldGVybWlu ZXMgdGhlIFZlcmlsb2cgb3B0aW9uIGxpc3RzLiIKICA6Z3JvdXAgJ3Zlcmlsb2ctbW9kZS1hdXRv CiAgOnR5cGUgJ2hvb2spCgooZGVmY3VzdG9tIHZlcmlsb2ctYmVmb3JlLWdldG9wdC1mbGFncy1o b29rIG5pbAogICJIb29rIHJ1biBiZWZvcmUgYHZlcmlsb2ctZ2V0b3B0LWZsYWdzJyBkZXRlcm1p bmVzIHRoZSBWZXJpbG9nIG9wdGlvbiBsaXN0cy4iCiAgOmdyb3VwICd2ZXJpbG9nLW1vZGUtYXV0 bwogIDp0eXBlICdob29rKQoKKGRlZmN1c3RvbSB2ZXJpbG9nLWJlZm9yZS1zYXZlLWZvbnQtaG9v ayBuaWwKICAiSG9vayBydW4gYmVmb3JlIGB2ZXJpbG9nLXNhdmUtZm9udC1uby1jaGFuZ2UtZnVu Y3Rpb25zJyByZW1vdmVzIGhpZ2hsaWdodGluZy4iCiAgOnZlcnNpb24gIjI0LjMiICA7IHJldjcz NQogIDpncm91cCAndmVyaWxvZy1tb2RlLWF1dG8KICA6dHlwZSAnaG9vaykKCihkZWZjdXN0b20g dmVyaWxvZy1hZnRlci1zYXZlLWZvbnQtaG9vayBuaWwKICAiSG9vayBydW4gYWZ0ZXIgYHZlcmls b2ctc2F2ZS1mb250LW5vLWNoYW5nZS1mdW5jdGlvbnMnIHJlc3RvcmVzIGhpZ2hsaWdodGluZy4i CiAgOnZlcnNpb24gIjI0LjMiICA7IHJldjczNQogIDpncm91cCAndmVyaWxvZy1tb2RlLWF1dG8K ICA6dHlwZSAnaG9vaykKCihkZWZ2YXIgdmVyaWxvZy1pbWVudS1nZW5lcmljLWV4cHJlc3Npb24K ICAnKChuaWwgICAgICAgICAgICAiXlxccy0qXFwoPzpjb25uZWN0bW9kdWxlXFx8bVxcKD86b2R1 bGVcXHxhY3JvbW9kdWxlXFwpXFx8cFxcKD86cmltaXRpdmVcXHxyb2dyYW1cXHxhY2thZ2VcXClc XClcXHMtK1xcKFthLXpBLVowLTlfLjpdK1xcKSIgMSkKICAgICgiKlZhcmlhYmxlcyoiICAiXlxc cy0qXFwocmVnXFx8d2lyZVxcfGxvZ2ljXFwpXFxzLStcXChcXHxcXFtbXl1dK1xcXVxccy0rXFwp XFwoW0EtWmEtejAtOV9dK1xcKSIgMykKICAgICgiKkNsYXNzZXMqIiAgICAiXlxccy0qXFwoPzpc XCg/OnZpcnR1YWxcXHxpbnRlcmZhY2VcXClcXHMtK1xcKT9jbGFzc1xccy0rXFwoW0EtWmEtel9d W0EtWmEtejAtOV9dK1xcKSIgMSkKICAgICgiKlRhc2tzKiIgICAgICAiXlxccy0qXFwoPzpcXCg/ OnN0YXRpY1xcfHB1cmVcXHx2aXJ0dWFsXFx8bG9jYWxcXHxwcm90ZWN0ZWRcXClcXHMtK1xcKSp0 YXNrXFxzLStcXCg/OlxcKD86c3RhdGljXFx8YXV0b21hdGljXFwpXFxzLStcXCk/XFwoW0EtWmEt el9dW0EtWmEtejAtOV86XStcXCkiIDEpCiAgICAoIipGdW5jdGlvbnMqIiAgIl5cXHMtKlxcKD86 XFwoPzpzdGF0aWNcXHxwdXJlXFx8dmlydHVhbFxcfGxvY2FsXFx8cHJvdGVjdGVkXFwpXFxzLStc XCkqZnVuY3Rpb25cXHMtK1xcKD86XFwoPzpzdGF0aWNcXHxhdXRvbWF0aWNcXClcXHMtK1xcKT9c XCg/OlxcdytcXHMtK1xcKT9cXCg/OlxcKD86dW5cXClzaWduZWRcXHMtK1xcKT9cXChbQS1aYS16 X11bQS1aYS16MC05XzpdK1xcKSIgMSkKICAgICgiKkludGVyZmFjZXMqIiAiXlxccy0qaW50ZXJm YWNlXFxzLStcXChbYS16QS1aXzAtOV0rXFwpIiAxKQogICAgKCIqVHlwZXMqIiAgICAgICJeXFxz LSp0eXBlZGVmXFxzLSsuKlxccy0rXFwoW2EtekEtWl8wLTldK1xcKVxccy0qOyIgMSkpCiAgIklt ZW51IGV4cHJlc3Npb24gZm9yIFZlcmlsb2cgbW9kZS4gIFNlZSBgaW1lbnUtZ2VuZXJpYy1leHBy ZXNzaW9uJy4iKQoKOzsKOzsgcHJvdmlkZSBhIHZlcmlsb2ctaGVhZGVyIGZ1bmN0aW9uLgo7OyBD dXN0b21pemF0aW9uIHZhcmlhYmxlczoKOzsKKGRlZnZhciB2ZXJpbG9nLWRhdGUtc2NpZW50aWZp Yy1mb3JtYXQgbmlsCiAgIklmIG5vbi1uaWwsIGRhdGVzIGFyZSB3cml0dGVuIGluIHNjaWVudGlm aWMgZm9ybWF0IChlLmcuICAxOTk3LzA5LzE3KS4KSWYgbmlsLCBpbiBFdXJvcGVhbiBmb3JtYXQg KGUuZy4gIDE3LjA5LjE5OTcpLiAgVGhlIGJyYWluLWRlYWQgQW1lcmljYW4KZm9ybWF0IChlLmcu ICAwOS8xNy8xOTk3KSBpcyBub3Qgc3VwcG9ydGVkLiIpCgooZGVmdmFyIHZlcmlsb2ctY29tcGFu eSBuaWwKICAiRGVmYXVsdCBuYW1lIG9mIENvbXBhbnkgZm9yIFZlcmlsb2cgaGVhZGVyLgpJZiBz ZXQgd2lsbCBiZWNvbWUgYnVmZmVyIGxvY2FsLiIpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2Nh bCAndmVyaWxvZy1jb21wYW55KQoKKGRlZnZhciB2ZXJpbG9nLXByb2plY3QgbmlsCiAgIkRlZmF1 bHQgbmFtZSBvZiBQcm9qZWN0IGZvciBWZXJpbG9nIGhlYWRlci4KSWYgc2V0IHdpbGwgYmVjb21l IGJ1ZmZlciBsb2NhbC4iKQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ3Zlcmlsb2ctcHJv amVjdCkKCjs7OyBLZXltYXAgYW5kIE1lbnU6Cjs7CgooZGVmdmFyIHZlcmlsb2ctbW9kZS1tYXAK ICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgIChkZWZpbmUta2V5IG1hcCAi OyIgICAgICAgICdlbGVjdHJpYy12ZXJpbG9nLXNlbWkpCiAgICAoZGVmaW5lLWtleSBtYXAgWyhj b250cm9sIDU5KV0gICAgJ2VsZWN0cmljLXZlcmlsb2ctc2VtaS13aXRoLWNvbW1lbnQpCiAgICAo ZGVmaW5lLWtleSBtYXAgIjoiICAgICAgICAnZWxlY3RyaWMtdmVyaWxvZy1jb2xvbikKICAgIDs7 KGRlZmluZS1rZXkgbWFwICI9IiAgICAgICAgJ2VsZWN0cmljLXZlcmlsb2ctZXF1YWwpCiAgICAo ZGVmaW5lLWtleSBtYXAgImAiICAgICAgICAnZWxlY3RyaWMtdmVyaWxvZy10aWNrKQogICAgKGRl ZmluZS1rZXkgbWFwICJcdCIgICAgICAgJ2VsZWN0cmljLXZlcmlsb2ctdGFiKQogICAgKGRlZmlu ZS1rZXkgbWFwICJcciIgICAgICAgJ2VsZWN0cmljLXZlcmlsb2ctdGVybWluYXRlLWxpbmUpCiAg ICA7OyBiYWNrc3BhY2UvZGVsZXRlIGtleSBiaW5kaW5ncwogICAgKGRlZmluZS1rZXkgbWFwIFti YWNrc3BhY2VdICAgICdiYWNrd2FyZC1kZWxldGUtY2hhci11bnRhYmlmeSkKICAgICh1bmxlc3Mg KGJvdW5kcCAnZGVsZXRlLWtleS1kZWxldGVzLWZvcndhcmQpIDsgWEVtYWNzIHZhcmlhYmxlCiAg ICAgIChkZWZpbmUta2V5IG1hcCBbZGVsZXRlXSAgICAgICAnZGVsZXRlLWNoYXIpCiAgICAgIChk ZWZpbmUta2V5IG1hcCBbKG1ldGEgZGVsZXRlKV0gJ2tpbGwtd29yZCkpCiAgICAoZGVmaW5lLWtl eSBtYXAgIlxNLVxDLWIiICAnZWxlY3RyaWMtdmVyaWxvZy1iYWNrd2FyZC1zZXhwKQogICAgKGRl ZmluZS1rZXkgbWFwICJcTS1cQy1mIiAgJ2VsZWN0cmljLXZlcmlsb2ctZm9yd2FyZC1zZXhwKQog ICAgKGRlZmluZS1rZXkgbWFwICJcTS1cciIgICAgJ2VsZWN0cmljLXZlcmlsb2ctdGVybWluYXRl LWFuZC1pbmRlbnQpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxNLVx0IiAgICAoaWYgKGZib3VuZHAg J2NvbXBsZXRpb24tYXQtcG9pbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2NvbXBsZXRpb24tYXQtcG9pbnQgJ3Zlcmlsb2ctY29tcGxldGUtd29yZCkpCiAgICAoZGVmaW5l LWtleSBtYXAgIlxNLT8iICAgICAoaWYgKGZib3VuZHAgJ2NvbXBsZXRpb24taGVscC1hdC1wb2lu dCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbi1oZWxwLWF0 LXBvaW50ICd2ZXJpbG9nLXNob3ctY29tcGxldGlvbnMpKQogICAgOzsgTm90ZSBcQy1jIGFuZCBs ZXR0ZXIgYXJlIHJlc2VydmVkIGZvciB1c2VycwogICAgKGRlZmluZS1rZXkgbWFwICJcQy1jYCIg ICAgJ3Zlcmlsb2ctbGludC1vZmYpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWMqIiAgICAndmVy aWxvZy1kZWxldGUtYXV0by1zdGFyLWltcGxpY2l0KQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1j PyIgICAgJ3Zlcmlsb2ctZGlmZi1hdXRvKQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1jXEMtciIg J3Zlcmlsb2ctbGFiZWwtYmUpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWNcQy1pIiAndmVyaWxv Zy1wcmV0dHktZGVjbGFyYXRpb25zKQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1jPSIgICAgJ3Zl cmlsb2ctcHJldHR5LWV4cHIpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWNcQy1iIiAndmVyaWxv Zy1zdWJtaXQtYnVnLXJlcG9ydCkKICAgIChkZWZpbmUta2V5IG1hcCAiXEMtYy8iICAgICd2ZXJp bG9nLXN0YXItY29tbWVudCkKICAgIChkZWZpbmUta2V5IG1hcCAiXEMtY1xDLWMiICd2ZXJpbG9n LWNvbW1lbnQtcmVnaW9uKQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1jXEMtdSIgJ3Zlcmlsb2ct dW5jb21tZW50LXJlZ2lvbikKICAgICh3aGVuIChmZWF0dXJlcCAneGVtYWNzKQogICAgICAoZGVm aW5lLWtleSBtYXAgWyhtZXRhIGNvbnRyb2wgaCldICd2ZXJpbG9nLW1hcmstZGVmdW4pCiAgICAg IChkZWZpbmUta2V5IG1hcCAiXE0tXEMtYSIgICd2ZXJpbG9nLWJlZy1vZi1kZWZ1bikKICAgICAg KGRlZmluZS1rZXkgbWFwICJcTS1cQy1lIiAgJ3Zlcmlsb2ctZW5kLW9mLWRlZnVuKSkKICAgIChk ZWZpbmUta2V5IG1hcCAiXEMtY1xDLWQiICd2ZXJpbG9nLWdvdG8tZGVmdW4pCiAgICAoZGVmaW5l LWtleSBtYXAgIlxDLWNcQy1rIiAndmVyaWxvZy1kZWxldGUtYXV0bykKICAgIChkZWZpbmUta2V5 IG1hcCAiXEMtY1xDLWEiICd2ZXJpbG9nLWF1dG8pCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWNc Qy1zIiAndmVyaWxvZy1hdXRvLXNhdmUtY29tcGlsZSkKICAgIChkZWZpbmUta2V5IG1hcCAiXEMt Y1xDLXAiICd2ZXJpbG9nLXByZXByb2Nlc3MpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWNcQy16 IiAndmVyaWxvZy1pbmplY3QtYXV0bykKICAgIChkZWZpbmUta2V5IG1hcCAiXEMtY1xDLWUiICd2 ZXJpbG9nLWV4cGFuZC12ZWN0b3IpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWNcQy1oIiAndmVy aWxvZy1oZWFkZXIpCiAgICBtYXApCiAgIktleW1hcCB1c2VkIGluIFZlcmlsb2cgbW9kZS4iKQoK OzsgbWVudXMKKGVhc3ktbWVudS1kZWZpbmUKICB2ZXJpbG9nLW1lbnUgdmVyaWxvZy1tb2RlLW1h cCAiTWVudSBmb3IgVmVyaWxvZyBtb2RlIgogICh2ZXJpbG9nLWVhc3ktbWVudS1maWx0ZXIKICAg YCgiVmVyaWxvZyIKICAgICAoIkNob29zZSBDb21waWxhdGlvbiBBY3Rpb24iCiAgICAgIFsiTm9u ZSIKICAgICAgIChwcm9nbgoJIChzZXRxIHZlcmlsb2ctdG9vbCBuaWwpCgkgKHZlcmlsb2ctc2V0 LWNvbXBpbGUtY29tbWFuZCkpCiAgICAgICA6c3R5bGUgcmFkaW8KICAgICAgIDpzZWxlY3RlZCAo ZXF1YWwgdmVyaWxvZy10b29sIG5pbCkKICAgICAgIDpoZWxwICJXaGVuIGludm9raW5nIGNvbXBp bGF0aW9uLCB1c2UgY29tcGlsZS1jb21tYW5kIl0KICAgICAgWyJMaW50IgogICAgICAgKHByb2du CgkgKHNldHEgdmVyaWxvZy10b29sICd2ZXJpbG9nLWxpbnRlcikKCSAodmVyaWxvZy1zZXQtY29t cGlsZS1jb21tYW5kKSkKICAgICAgIDpzdHlsZSByYWRpbwogICAgICAgOnNlbGVjdGVkIChlcXVh bCB2ZXJpbG9nLXRvb2wgJ3Zlcmlsb2ctbGludGVyKQogICAgICAgOmhlbHAgIldoZW4gaW52b2tp bmcgY29tcGlsYXRpb24sIHVzZSBsaW50IGNoZWNrZXIiXQogICAgICBbIkNvdmVyYWdlIgogICAg ICAgKHByb2duCgkgKHNldHEgdmVyaWxvZy10b29sICd2ZXJpbG9nLWNvdmVyYWdlKQoJICh2ZXJp bG9nLXNldC1jb21waWxlLWNvbW1hbmQpKQogICAgICAgOnN0eWxlIHJhZGlvCiAgICAgICA6c2Vs ZWN0ZWQgKGVxdWFsIHZlcmlsb2ctdG9vbCAndmVyaWxvZy1jb3ZlcmFnZSkKICAgICAgIDpoZWxw ICJXaGVuIGludm9raW5nIGNvbXBpbGF0aW9uLCBhbm5vdGF0ZSBmb3IgY292ZXJhZ2UiXQogICAg ICBbIlNpbXVsYXRvciIKICAgICAgIChwcm9nbgoJIChzZXRxIHZlcmlsb2ctdG9vbCAndmVyaWxv Zy1zaW11bGF0b3IpCgkgKHZlcmlsb2ctc2V0LWNvbXBpbGUtY29tbWFuZCkpCiAgICAgICA6c3R5 bGUgcmFkaW8KICAgICAgIDpzZWxlY3RlZCAoZXF1YWwgdmVyaWxvZy10b29sICd2ZXJpbG9nLXNp bXVsYXRvcikKICAgICAgIDpoZWxwICJXaGVuIGludm9raW5nIGNvbXBpbGF0aW9uLCBpbnRlcnBy ZXQgVmVyaWxvZyBzb3VyY2UiXQogICAgICBbIkNvbXBpbGVyIgogICAgICAgKHByb2duCgkgKHNl dHEgdmVyaWxvZy10b29sICd2ZXJpbG9nLWNvbXBpbGVyKQoJICh2ZXJpbG9nLXNldC1jb21waWxl LWNvbW1hbmQpKQogICAgICAgOnN0eWxlIHJhZGlvCiAgICAgICA6c2VsZWN0ZWQgKGVxdWFsIHZl cmlsb2ctdG9vbCAndmVyaWxvZy1jb21waWxlcikKICAgICAgIDpoZWxwICJXaGVuIGludm9raW5n IGNvbXBpbGF0aW9uLCBjb21waWxlIFZlcmlsb2cgc291cmNlIl0KICAgICAgWyJQcmVwcm9jZXNz b3IiCiAgICAgICAocHJvZ24KCSAoc2V0cSB2ZXJpbG9nLXRvb2wgJ3Zlcmlsb2ctcHJlcHJvY2Vz c29yKQoJICh2ZXJpbG9nLXNldC1jb21waWxlLWNvbW1hbmQpKQogICAgICAgOnN0eWxlIHJhZGlv CiAgICAgICA6c2VsZWN0ZWQgKGVxdWFsIHZlcmlsb2ctdG9vbCAndmVyaWxvZy1wcmVwcm9jZXNz b3IpCiAgICAgICA6aGVscCAiV2hlbiBpbnZva2luZyBjb21waWxhdGlvbiwgcHJlcHJvY2VzcyBW ZXJpbG9nIHNvdXJjZSwgc2VlIGFsc28gYHZlcmlsb2ctcHJlcHJvY2VzcyciXQogICAgICApCiAg ICAgKCJNb3ZlIgogICAgICBbIkJlZ2lubmluZyBvZiBmdW5jdGlvbiIJCXZlcmlsb2ctYmVnLW9m LWRlZnVuCiAgICAgICA6a2V5cyAiQy1NLWEiCiAgICAgICA6aGVscAkJIk1vdmUgYmFja3dhcmQg dG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBmdW5jdGlvbiBvciBwcm9jZWR1cmUiXQog ICAgICBbIkVuZCBvZiBmdW5jdGlvbiIJCXZlcmlsb2ctZW5kLW9mLWRlZnVuCiAgICAgICA6a2V5 cyAiQy1NLWUiCiAgICAgICA6aGVscAkJIk1vdmUgZm9yd2FyZCB0byB0aGUgZW5kIG9mIHRoZSBj dXJyZW50IGZ1bmN0aW9uIG9yIHByb2NlZHVyZSJdCiAgICAgIFsiTWFyayBmdW5jdGlvbiIJCQl2 ZXJpbG9nLW1hcmstZGVmdW4KICAgICAgIDprZXlzICJDLU0taCIKICAgICAgIDpoZWxwCQkiTWFy ayB0aGUgY3VycmVudCBWZXJpbG9nIGZ1bmN0aW9uIG9yIHByb2NlZHVyZSJdCiAgICAgIFsiR290 byBmdW5jdGlvbi9tb2R1bGUiCQl2ZXJpbG9nLWdvdG8tZGVmdW4KICAgICAgIDpoZWxwCQkiTW92 ZSB0byBzcGVjaWZpZWQgVmVyaWxvZyBtb2R1bGUvdGFzay9mdW5jdGlvbiJdCiAgICAgIFsiTW92 ZSB0byBiZWdpbm5pbmcgb2YgYmxvY2siCWVsZWN0cmljLXZlcmlsb2ctYmFja3dhcmQtc2V4cAog ICAgICAgOmhlbHAJCSJNb3ZlIGJhY2t3YXJkIG92ZXIgb25lIGJhbGFuY2VkIGV4cHJlc3Npb24i XQogICAgICBbIk1vdmUgdG8gZW5kIG9mIGJsb2NrIgkJZWxlY3RyaWMtdmVyaWxvZy1mb3J3YXJk LXNleHAKICAgICAgIDpoZWxwCQkiTW92ZSBmb3J3YXJkIG92ZXIgb25lIGJhbGFuY2VkIGV4cHJl c3Npb24iXQogICAgICApCiAgICAgKCJDb21tZW50cyIKICAgICAgWyJDb21tZW50IFJlZ2lvbiIJ CQl2ZXJpbG9nLWNvbW1lbnQtcmVnaW9uCiAgICAgICA6aGVscAkJIlB1dCBtYXJrZWQgYXJlYSBp bnRvIGEgY29tbWVudCJdCiAgICAgIFsiVW5Db21tZW50IFJlZ2lvbiIJCXZlcmlsb2ctdW5jb21t ZW50LXJlZ2lvbgogICAgICAgOmhlbHAJCSJVbmNvbW1lbnQgYW4gYXJlYSBjb21tZW50ZWQgd2l0 aCBDb21tZW50IFJlZ2lvbiJdCiAgICAgIFsiTXVsdGktbGluZSBjb21tZW50IGluc2VydCIJdmVy aWxvZy1zdGFyLWNvbW1lbnQKICAgICAgIDpoZWxwCQkiSW5zZXJ0IFZlcmlsb2cgLyogKi8gY29t bWVudCBhdCBwb2ludCJdCiAgICAgIFsiTGludCBlcnJvciB0byBjb21tZW50IgkJdmVyaWxvZy1s aW50LW9mZgogICAgICAgOmhlbHAJCSJDb252ZXJ0IGEgVmVyaWxvZyBsaW50ZXIgd2FybmluZyBs aW5lIGludG8gYSBkaXNhYmxlIHN0YXRlbWVudCJdCiAgICAgICkKICAgICAiLS0tLSIKICAgICBb IkNvbXBpbGUiCQkJCWNvbXBpbGUKICAgICAgOmhlbHAJCSJQZXJmb3JtIGNvbXBpbGF0aW9uLWFj dGlvbiAoYWJvdmUpIG9uIHRoZSBjdXJyZW50IGJ1ZmZlciJdCiAgICAgWyJBVVRPLCBTYXZlLCBD b21waWxlIgkJdmVyaWxvZy1hdXRvLXNhdmUtY29tcGlsZQogICAgICA6aGVscAkJIlJlY29tcHV0 ZSBBVVRPcywgc2F2ZSBidWZmZXIsIGFuZCBjb21waWxlIl0KICAgICBbIk5leHQgQ29tcGlsZSBF cnJvciIJCW5leHQtZXJyb3IKICAgICAgOmhlbHAJCSJWaXNpdCBuZXh0IGNvbXBpbGF0aW9uIGVy cm9yIG1lc3NhZ2UgYW5kIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUiXQogICAgIFsiSWdub3Jl IExpbnQgV2FybmluZyBhdCBwb2ludCIJdmVyaWxvZy1saW50LW9mZgogICAgICA6aGVscAkJIkNv bnZlcnQgYSBWZXJpbG9nIGxpbnRlciB3YXJuaW5nIGxpbmUgaW50byBhIGRpc2FibGUgc3RhdGVt ZW50Il0KICAgICAiLS0tLSIKICAgICBbIkxpbmUgdXAgZGVjbGFyYXRpb25zIGFyb3VuZCBwb2lu dCIJdmVyaWxvZy1wcmV0dHktZGVjbGFyYXRpb25zCiAgICAgIDpoZWxwCQkiTGluZSB1cCBkZWNs YXJhdGlvbnMgYXJvdW5kIHBvaW50Il0KICAgICBbIkxpbmUgdXAgZXF1YXRpb25zIGFyb3VuZCBw b2ludCIJCXZlcmlsb2ctcHJldHR5LWV4cHIKICAgICAgOmhlbHAJCSJMaW5lIHVwIGV4cHJlc3Np b25zIGFyb3VuZCBwb2ludCJdCiAgICAgWyJSZWRvL2luc2VydCBjb21tZW50cyBvbiBldmVyeSBl bmQiCXZlcmlsb2ctbGFiZWwtYmUKICAgICAgOmhlbHAJCSJMYWJlbCBtYXRjaGluZyBiZWdpbiAu Li4gZW5kIHN0YXRlbWVudHMiXQogICAgIFsiRXhwYW5kIFt4OnldIHZlY3RvciBsaW5lIgl2ZXJp bG9nLWV4cGFuZC12ZWN0b3IKICAgICAgOmhlbHAJCSJUYWtlIGEgc2lnbmFsIHZlY3RvciBvbiB0 aGUgY3VycmVudCBsaW5lIGFuZCBleHBhbmQgaXQgdG8gbXVsdGlwbGUgbGluZXMiXQogICAgIFsi SW5zZXJ0IGJlZ2luLWVuZCBibG9jayIJCXZlcmlsb2ctaW5zZXJ0LWJsb2NrCiAgICAgIDpoZWxw CQkiSW5zZXJ0IGJlZ2luIC4uLiBlbmQiXQogICAgIFsiQ29tcGxldGUgd29yZCIgLChpZiAoZmJv dW5kcCAnY29tcGxldGlvbi1hdC1wb2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nv bXBsZXRpb24tYXQtcG9pbnQgJ3Zlcmlsb2ctY29tcGxldGUtd29yZCkKICAgICAgOmhlbHAJCSJD b21wbGV0ZSB3b3JkIGF0IHBvaW50Il0KICAgICAiLS0tLSIKICAgICBbIlJlY29tcHV0ZSBBVVRP cyIJCQl2ZXJpbG9nLWF1dG8KICAgICAgOmhlbHAJCSJFeHBhbmQgQVVUTyBtZXRhLWNvbW1lbnQg c3RhdGVtZW50cyJdCiAgICAgWyJLaWxsIEFVVE9zIgkJCXZlcmlsb2ctZGVsZXRlLWF1dG8KICAg ICAgOmhlbHAJCSJSZW1vdmUgQVVUTyBleHBhbnNpb25zIl0KICAgICBbIkRpZmYgQVVUT3MiCQkJ dmVyaWxvZy1kaWZmLWF1dG8KICAgICAgOmhlbHAJCSJTaG93IGRpZmZlcmVuY2VzIGluIEFVVE8g ZXhwYW5zaW9ucyJdCiAgICAgWyJJbmplY3QgQVVUT3MiCQkJdmVyaWxvZy1pbmplY3QtYXV0bwog ICAgICA6aGVscAkJIkluamVjdCBBVVRPcyBpbnRvIGxlZ2FjeSBub24tQVVUTyBidWZmZXIiXQog ICAgICgiQVVUTyBIZWxwLi4uIgogICAgICBbIkFVVE8gR2VuZXJhbCIJCQkoZGVzY3JpYmUtZnVu Y3Rpb24gJ3Zlcmlsb2ctYXV0bykKICAgICAgIDpoZWxwCQkiSGVscCBpbnRyb2R1Y3Rpb24gb24g QVVUT3MiXQogICAgICBbIkFVVE8gTGlicmFyeSBGbGFncyIJCShkZXNjcmliZS12YXJpYWJsZSAn dmVyaWxvZy1saWJyYXJ5LWZsYWdzKQogICAgICAgOmhlbHAJCSJIZWxwIG9uIHZlcmlsb2ctbGli cmFyeS1mbGFncyJdCiAgICAgIFsiQVVUTyBMaWJyYXJ5IFBhdGgiCQkoZGVzY3JpYmUtdmFyaWFi bGUgJ3Zlcmlsb2ctbGlicmFyeS1kaXJlY3RvcmllcykKICAgICAgIDpoZWxwCQkiSGVscCBvbiB2 ZXJpbG9nLWxpYnJhcnktZGlyZWN0b3JpZXMiXQogICAgICBbIkFVVE8gTGlicmFyeSBGaWxlcyIJ CShkZXNjcmliZS12YXJpYWJsZSAndmVyaWxvZy1saWJyYXJ5LWZpbGVzKQogICAgICAgOmhlbHAJ CSJIZWxwIG9uIHZlcmlsb2ctbGlicmFyeS1maWxlcyJdCiAgICAgIFsiQVVUTyBMaWJyYXJ5IEV4 dGVuc2lvbnMiCShkZXNjcmliZS12YXJpYWJsZSAndmVyaWxvZy1saWJyYXJ5LWV4dGVuc2lvbnMp CiAgICAgICA6aGVscAkJIkhlbHAgb24gdmVyaWxvZy1saWJyYXJ5LWV4dGVuc2lvbnMiXQogICAg ICBbIkFVVE8gYGRlZmluZSBSZWFkaW5nIgkJKGRlc2NyaWJlLWZ1bmN0aW9uICd2ZXJpbG9nLXJl YWQtZGVmaW5lcykKICAgICAgIDpoZWxwCQkiSGVscCBvbiByZWFkaW5nIGBkZWZpbmVzIl0KICAg ICAgWyJBVVRPIGBpbmNsdWRlIFJlYWRpbmciCQkoZGVzY3JpYmUtZnVuY3Rpb24gJ3Zlcmlsb2ct cmVhZC1pbmNsdWRlcykKICAgICAgIDpoZWxwCQkiSGVscCBvbiBwYXJzaW5nIGBpbmNsdWRlcyJd CiAgICAgIFsiQVVUT0FSRyIJCQkoZGVzY3JpYmUtZnVuY3Rpb24gJ3Zlcmlsb2ctYXV0by1hcmcp CiAgICAgICA6aGVscAkJIkhlbHAgb24gQVVUT0FSRyAtIGRlY2xhcmluZyBtb2R1bGUgcG9ydCBs aXN0Il0KICAgICAgWyJBVVRPQVNDSUlFTlVNIgkJCShkZXNjcmliZS1mdW5jdGlvbiAndmVyaWxv Zy1hdXRvLWFzY2lpLWVudW0pCiAgICAgICA6aGVscAkJIkhlbHAgb24gQVVUT0FTQ0lJRU5VTSAt IGNyZWF0aW5nIEFTQ0lJIGZvciBlbnVtZXJhdGlvbnMiXQogICAgICBbIkFVVE9BU1NJR05NT0RQ T1JUIgkJKGRlc2NyaWJlLWZ1bmN0aW9uICd2ZXJpbG9nLWF1dG8tYXNzaWduLW1vZHBvcnQpCiAg ICAgICA6aGVscAkJIkhlbHAgb24gQVVUT0FTU0lHTk1PRFBPUlQgLSBjcmVhdGluZyBhc3NpZ25t ZW50cyB0by9mcm9tIG1vZHBvcnRzIl0KICAgICAgWyJBVVRPSU5PVVQiCQkJKGRlc2NyaWJlLWZ1 bmN0aW9uICd2ZXJpbG9nLWF1dG8taW5vdXQpCiAgICAgICA6aGVscAkJIkhlbHAgb24gQVVUT0lO T1VUIC0gYWRkaW5nIGlub3V0cyBmcm9tIGNlbGxzIl0KICAgICAgWyJBVVRPSU5PVVRDT01QIgkJ CShkZXNjcmliZS1mdW5jdGlvbiAndmVyaWxvZy1hdXRvLWlub3V0LWNvbXApCiAgICAgICA6aGVs cAkJIkhlbHAgb24gQVVUT0lOT1VUQ09NUCAtIGNvcHlpbmcgY29tcGxlbWVudGVkIGkvbyBmcm9t IGFub3RoZXIgZmlsZSJdCiAgICAgIFsiQVVUT0lOT1VUSU4iCQkJKGRlc2NyaWJlLWZ1bmN0aW9u ICd2ZXJpbG9nLWF1dG8taW5vdXQtaW4pCiAgICAgICA6aGVscAkJIkhlbHAgb24gQVVUT0lOT1VU SU4gLSBjb3B5aW5nIGkvbyBmcm9tIGFub3RoZXIgZmlsZSBhcyBhbGwgaW5wdXRzIl0KICAgICAg WyJBVVRPSU5PVVRNT0RQT1JUIgkJKGRlc2NyaWJlLWZ1bmN0aW9uICd2ZXJpbG9nLWF1dG8taW5v dXQtbW9kcG9ydCkKICAgICAgIDpoZWxwCQkiSGVscCBvbiBBVVRPSU5PVVRNT0RQT1JUIC0gY29w eWluZyBpL28gZnJvbSBhbiBpbnRlcmZhY2UgbW9kcG9ydCJdCiAgICAgIFsiQVVUT0lOT1VUTU9E VUxFIgkJKGRlc2NyaWJlLWZ1bmN0aW9uICd2ZXJpbG9nLWF1dG8taW5vdXQtbW9kdWxlKQogICAg ICAgOmhlbHAJCSJIZWxwIG9uIEFVVE9JTk9VVE1PRFVMRSAtIGNvcHlpbmcgaS9vIGZyb20gYW5v dGhlciBmaWxlIl0KICAgICAgWyJBVVRPSU5PVVRQQVJBTSIJCQkoZGVzY3JpYmUtZnVuY3Rpb24g J3Zlcmlsb2ctYXV0by1pbm91dC1wYXJhbSkKICAgICAgIDpoZWxwCQkiSGVscCBvbiBBVVRPSU5P VVRQQVJBTSAtIGNvcHlpbmcgcGFyYW1ldGVycyBmcm9tIGFub3RoZXIgZmlsZSJdCiAgICAgIFsi QVVUT0lOUFVUIgkJCShkZXNjcmliZS1mdW5jdGlvbiAndmVyaWxvZy1hdXRvLWlucHV0KQogICAg ICAgOmhlbHAJCSJIZWxwIG9uIEFVVE9JTlBVVCAtIGFkZGluZyBpbnB1dHMgZnJvbSBjZWxscyJd CiAgICAgIFsiQVVUT0lOU0VSVExJU1AiCQkJKGRlc2NyaWJlLWZ1bmN0aW9uICd2ZXJpbG9nLWF1 dG8taW5zZXJ0LWxpc3ApCiAgICAgICA6aGVscAkJIkhlbHAgb24gQVVUT0lOU0VSVExJU1AgLSBp bnNlcnQgdGV4dCBmcm9tIGEgbGlzcCBmdW5jdGlvbiJdCiAgICAgIFsiQVVUT0lOU0VSVExBU1Qi CQkJKGRlc2NyaWJlLWZ1bmN0aW9uICd2ZXJpbG9nLWF1dG8taW5zZXJ0LWxhc3QpCiAgICAgICA6 aGVscAkJIkhlbHAgb24gQVVUT0lOU0VSVExJU1BMQVNUIC0gaW5zZXJ0IHRleHQgZnJvbSBhIGxp c3AgZnVuY3Rpb24iXQogICAgICBbIkFVVE9JTlNUIgkJCShkZXNjcmliZS1mdW5jdGlvbiAndmVy aWxvZy1hdXRvLWluc3QpCiAgICAgICA6aGVscAkJIkhlbHAgb24gQVVUT0lOU1QgLSBhZGRpbmcg cGlucyBmb3IgY2VsbHMiXQogICAgICBbIkFVVE9JTlNUICguKikiCQkJKGRlc2NyaWJlLWZ1bmN0 aW9uICd2ZXJpbG9nLWF1dG8tc3RhcikKICAgICAgIDpoZWxwCQkiSGVscCBvbiBleHBhbmRpbmcg VmVyaWxvZy0yMDAxIC4qIHBpbnMiXQogICAgICBbIkFVVE9JTlNUUEFSQU0iCQkJKGRlc2NyaWJl LWZ1bmN0aW9uICd2ZXJpbG9nLWF1dG8taW5zdC1wYXJhbSkKICAgICAgIDpoZWxwCQkiSGVscCBv biBBVVRPSU5TVFBBUkFNIC0gYWRkaW5nIHBhcmFtZXRlciBwaW5zIHRvIGNlbGxzIl0KICAgICAg WyJBVVRPTE9HSUMiCQkJKGRlc2NyaWJlLWZ1bmN0aW9uICd2ZXJpbG9nLWF1dG8tbG9naWMpCiAg ICAgICA6aGVscAkJIkhlbHAgb24gQVVUT0xPR0lDIC0gZGVjbGFyaW5nIGxvZ2ljIHNpZ25hbHMi XQogICAgICBbIkFVVE9PVVRQVVQiCQkJKGRlc2NyaWJlLWZ1bmN0aW9uICd2ZXJpbG9nLWF1dG8t b3V0cHV0KQogICAgICAgOmhlbHAJCSJIZWxwIG9uIEFVVE9PVVRQVVQgLSBhZGRpbmcgb3V0cHV0 cyBmcm9tIGNlbGxzIl0KICAgICAgWyJBVVRPT1VUUFVURVZFUlkiCQkoZGVzY3JpYmUtZnVuY3Rp b24gJ3Zlcmlsb2ctYXV0by1vdXRwdXQtZXZlcnkpCiAgICAgICA6aGVscAkJIkhlbHAgb24gQVVU T09VVFBVVEVWRVJZIC0gYWRkaW5nIG91dHB1dHMgb2YgYWxsIHNpZ25hbHMiXQogICAgICBbIkFV VE9SRUciCQkJKGRlc2NyaWJlLWZ1bmN0aW9uICd2ZXJpbG9nLWF1dG8tcmVnKQogICAgICAgOmhl bHAJCSJIZWxwIG9uIEFVVE9SRUcgLSBkZWNsYXJpbmcgcmVnaXN0ZXJzIGZvciBub24td2lyZXMi XQogICAgICBbIkFVVE9SRUdJTlBVVCIJCQkoZGVzY3JpYmUtZnVuY3Rpb24gJ3Zlcmlsb2ctYXV0 by1yZWctaW5wdXQpCiAgICAgICA6aGVscAkJIkhlbHAgb24gQVVUT1JFR0lOUFVUIC0gZGVjbGFy aW5nIGlucHV0cyBmb3Igbm9uLXdpcmVzIl0KICAgICAgWyJBVVRPUkVTRVQiCQkJKGRlc2NyaWJl LWZ1bmN0aW9uICd2ZXJpbG9nLWF1dG8tcmVzZXQpCiAgICAgICA6aGVscAkJIkhlbHAgb24gQVVU T1JFU0VUIC0gcmVzZXR0aW5nIGFsd2F5cyBibG9ja3MiXQogICAgICBbIkFVVE9TRU5TRSBvciBB UyIJCShkZXNjcmliZS1mdW5jdGlvbiAndmVyaWxvZy1hdXRvLXNlbnNlKQogICAgICAgOmhlbHAJ CSJIZWxwIG9uIEFVVE9TRU5TRSAtIHNlbnNpdGl2aXR5IGxpc3RzIGZvciBhbHdheXMgYmxvY2tz Il0KICAgICAgWyJBVVRPVElFT0ZGIgkJCShkZXNjcmliZS1mdW5jdGlvbiAndmVyaWxvZy1hdXRv LXRpZW9mZikKICAgICAgIDpoZWxwCQkiSGVscCBvbiBBVVRPVElFT0ZGIC0gdHlpbmcgb2ZmIHVu dXNlZCBvdXRwdXRzIl0KICAgICAgWyJBVVRPVU5ERUYiCQkJKGRlc2NyaWJlLWZ1bmN0aW9uICd2 ZXJpbG9nLWF1dG8tdW5kZWYpCiAgICAgICA6aGVscAkJIkhlbHAgb24gQVVUT1VOREVGIC0gdW5k ZWZpbmUgYWxsIGxvY2FsIGRlZmluZXMiXQogICAgICBbIkFVVE9VTlVTRUQiCQkJKGRlc2NyaWJl LWZ1bmN0aW9uICd2ZXJpbG9nLWF1dG8tdW51c2VkKQogICAgICAgOmhlbHAJCSJIZWxwIG9uIEFV VE9VTlVTRUQgLSB0ZXJtaW5hdGluZyB1bnVzZWQgaW5wdXRzIl0KICAgICAgWyJBVVRPV0lSRSIJ CQkoZGVzY3JpYmUtZnVuY3Rpb24gJ3Zlcmlsb2ctYXV0by13aXJlKQogICAgICAgOmhlbHAJCSJI ZWxwIG9uIEFVVE9XSVJFIC0gZGVjbGFyaW5nIHdpcmVzIGZvciBjZWxscyJdCiAgICAgICkKICAg ICAiLS0tLSIKICAgICBbIlN1Ym1pdCBidWcgcmVwb3J0IgkJdmVyaWxvZy1zdWJtaXQtYnVnLXJl cG9ydAogICAgICA6aGVscAkJIlN1Ym1pdCB2aWEgbWFpbCBhIGJ1ZyByZXBvcnQgb24gdmVyaWxv Zy1tb2RlLmVsIl0KICAgICBbIlZlcnNpb24gYW5kIEZBUSIJCQl2ZXJpbG9nLWZhcQogICAgICA6 aGVscAkJIlNob3cgdGhlIGN1cnJlbnQgdmVyc2lvbiwgYW5kIHdoZXJlIHRvIGdldCB0aGUgRkFR IGV0YyJdCiAgICAgWyJDdXN0b21pemUgVmVyaWxvZyBNb2RlLi4uIgl2ZXJpbG9nLWN1c3RvbWl6 ZQogICAgICA6aGVscAkJIkN1c3RvbWl6ZSB2YXJpYWJsZXMgYW5kIG90aGVyIHNldHRpbmdzIHVz ZWQgYnkgVmVyaWxvZy1Nb2RlIl0KICAgICBbIkN1c3RvbWl6ZSBWZXJpbG9nIEZvbnRzICYgQ29s b3JzIgl2ZXJpbG9nLWZvbnQtY3VzdG9taXplCiAgICAgIDpoZWxwCQkiQ3VzdG9taXplIGZvbnRz IHVzZWQgYnkgVmVyaWxvZy1Nb2RlLiJdKSkpCgooZWFzeS1tZW51LWRlZmluZQogIHZlcmlsb2ct c3RtdC1tZW51IHZlcmlsb2ctbW9kZS1tYXAgIk1lbnUgZm9yIHN0YXRlbWVudCB0ZW1wbGF0ZXMg aW4gVmVyaWxvZy4iCiAgKHZlcmlsb2ctZWFzeS1tZW51LWZpbHRlcgogICAnKCJTdGF0ZW1lbnRz IgogICAgIFsiSGVhZGVyIgkJdmVyaWxvZy1zay1oZWFkZXIKICAgICAgOmhlbHAJCSJJbnNlcnQg YSBoZWFkZXIgYmxvY2sgYXQgdGhlIHRvcCBvZiBmaWxlIl0KICAgICBbIkNvbW1lbnQiCQl2ZXJp bG9nLXNrLWNvbW1lbnQKICAgICAgOmhlbHAJCSJJbnNlcnQgYSBjb21tZW50IGJsb2NrIl0KICAg ICAiLS0tLSIKICAgICBbIk1vZHVsZSIJCXZlcmlsb2ctc2stbW9kdWxlCiAgICAgIDpoZWxwCQki SW5zZXJ0IGEgbW9kdWxlIC4uICgvKkFVVE9BUkcqLyk7Li4gZW5kbW9kdWxlIGJsb2NrIl0KICAg ICBbIk9WTSBDbGFzcyIJdmVyaWxvZy1zay1vdm0tY2xhc3MKICAgICAgOmhlbHAJCSJJbnNlcnQg YW4gT1ZNIGNsYXNzIGJsb2NrIl0KICAgICBbIlVWTSBPYmplY3QiCXZlcmlsb2ctc2stdXZtLW9i amVjdAogICAgICA6aGVscAkJIkluc2VydCBhbiBVVk0gb2JqZWN0IGJsb2NrIl0KICAgICBbIlVW TSBDb21wb25lbnQiCXZlcmlsb2ctc2stdXZtLWNvbXBvbmVudAogICAgICA6aGVscAkJIkluc2Vy dCBhbiBVVk0gY29tcG9uZW50IGJsb2NrIl0KICAgICBbIlByaW1pdGl2ZSIJdmVyaWxvZy1zay1w cmltaXRpdmUKICAgICAgOmhlbHAJCSJJbnNlcnQgYSBwcmltaXRpdmUgLi4gKC4uICk7Li4gZW5k cHJpbWl0aXZlIGJsb2NrIl0KICAgICAiLS0tLSIKICAgICBbIklucHV0IgkJdmVyaWxvZy1zay1p bnB1dAogICAgICA6aGVscAkJIkluc2VydCBhbiBpbnB1dCBkZWNsYXJhdGlvbiJdCiAgICAgWyJP dXRwdXQiCQl2ZXJpbG9nLXNrLW91dHB1dAogICAgICA6aGVscAkJIkluc2VydCBhbiBvdXRwdXQg ZGVjbGFyYXRpb24iXQogICAgIFsiSW5vdXQiCQl2ZXJpbG9nLXNrLWlub3V0CiAgICAgIDpoZWxw CQkiSW5zZXJ0IGFuIGlub3V0IGRlY2xhcmF0aW9uIl0KICAgICBbIldpcmUiCQl2ZXJpbG9nLXNr LXdpcmUKICAgICAgOmhlbHAJCSJJbnNlcnQgYSB3aXJlIGRlY2xhcmF0aW9uIl0KICAgICBbIlJl ZyIJCXZlcmlsb2ctc2stcmVnCiAgICAgIDpoZWxwCQkiSW5zZXJ0IGEgcmVnaXN0ZXIgZGVjbGFy YXRpb24iXQogICAgIFsiRGVmaW5lIHRoaW5nIHVuZGVyIHBvaW50IGFzIGEgcmVnaXN0ZXIiIHZl cmlsb2ctc2stZGVmaW5lLXNpZ25hbAogICAgICA6aGVscAkJIkRlZmluZSBzaWduYWwgdW5kZXIg cG9pbnQgYXMgYSByZWdpc3RlciBhdCB0aGUgdG9wIG9mIHRoZSBtb2R1bGUiXQogICAgICItLS0t IgogICAgIFsiSW5pdGlhbCIJCXZlcmlsb2ctc2staW5pdGlhbAogICAgICA6aGVscAkJIkluc2Vy dCBhbiBpbml0aWFsIGJlZ2luIC4uIGVuZCBibG9jayJdCiAgICAgWyJBbHdheXMiCQl2ZXJpbG9n LXNrLWFsd2F5cwogICAgICA6aGVscAkJIkluc2VydCBhbiBhbHdheXMgQChBUykgYmVnaW4gLi4g ZW5kIGJsb2NrIl0KICAgICBbIkZ1bmN0aW9uIgl2ZXJpbG9nLXNrLWZ1bmN0aW9uCiAgICAgIDpo ZWxwCQkiSW5zZXJ0IGEgZnVuY3Rpb24gLi4gYmVnaW4gLi4gZW5kIGVuZGZ1bmN0aW9uIGJsb2Nr Il0KICAgICBbIlRhc2siCQl2ZXJpbG9nLXNrLXRhc2sKICAgICAgOmhlbHAJCSJJbnNlcnQgYSB0 YXNrIC4uIGJlZ2luIC4uIGVuZCBlbmR0YXNrIGJsb2NrIl0KICAgICBbIlNwZWNpZnkiCQl2ZXJp bG9nLXNrLXNwZWNpZnkKICAgICAgOmhlbHAJCSJJbnNlcnQgYSBzcGVjaWZ5IC4uIGVuZHNwZWNp ZnkgYmxvY2siXQogICAgIFsiR2VuZXJhdGUiCXZlcmlsb2ctc2stZ2VuZXJhdGUKICAgICAgOmhl bHAJCSJJbnNlcnQgYSBnZW5lcmF0ZSAuLiBlbmRnZW5lcmF0ZSBibG9jayJdCiAgICAgIi0tLS0i CiAgICAgWyJCZWdpbiIJCXZlcmlsb2ctc2stYmVnaW4KICAgICAgOmhlbHAJCSJJbnNlcnQgYSBi ZWdpbiAuLiBlbmQgYmxvY2siXQogICAgIFsiSWYiCQl2ZXJpbG9nLXNrLWlmCiAgICAgIDpoZWxw CQkiSW5zZXJ0IGFuIGlmICguLikgYmVnaW4gLi4gZW5kIGJsb2NrIl0KICAgICBbIihpZikgZWxz ZSIJdmVyaWxvZy1zay1lbHNlLWlmCiAgICAgIDpoZWxwCQkiSW5zZXJ0IGFuIGVsc2UgaWYgKC4u KSBiZWdpbiAuLiBlbmQgYmxvY2siXQogICAgIFsiRm9yIgkJdmVyaWxvZy1zay1mb3IKICAgICAg OmhlbHAJCSJJbnNlcnQgYSBmb3IgKC4uLikgYmVnaW4gLi4gZW5kIGJsb2NrIl0KICAgICBbIldo aWxlIgkJdmVyaWxvZy1zay13aGlsZQogICAgICA6aGVscAkJIkluc2VydCBhIHdoaWxlICguLi4p IGJlZ2luIC4uIGVuZCBibG9jayJdCiAgICAgWyJGb3JrIgkJdmVyaWxvZy1zay1mb3JrCiAgICAg IDpoZWxwCQkiSW5zZXJ0IGEgZm9yayBiZWdpbiAuLiBlbmQgLi4gam9pbiBibG9jayJdCiAgICAg WyJSZXBlYXQiCQl2ZXJpbG9nLXNrLXJlcGVhdAogICAgICA6aGVscAkJIkluc2VydCBhIHJlcGVh dCAoLi4pIGJlZ2luIC4uIGVuZCBibG9jayJdCiAgICAgWyJDYXNlIgkJdmVyaWxvZy1zay1jYXNl CiAgICAgIDpoZWxwCQkiSW5zZXJ0IGEgY2FzZSBibG9jaywgcHJvbXB0aW5nIGZvciBkZXRhaWxz Il0KICAgICBbIkNhc2V4IgkJdmVyaWxvZy1zay1jYXNleAogICAgICA6aGVscAkJIkluc2VydCBh IGNhc2V4ICguLi4pIGl0ZW06IGJlZ2luLi4gZW5kIGVuZGNhc2UgYmxvY2siXQogICAgIFsiQ2Fz ZXoiCQl2ZXJpbG9nLXNrLWNhc2V6CiAgICAgIDpoZWxwCQkiSW5zZXJ0IGEgY2FzZXogKC4uLikg aXRlbTogYmVnaW4uLiBlbmQgZW5kY2FzZSBibG9jayJdKSkpCgooZGVmdmFyIHZlcmlsb2ctbW9k ZS1hYmJyZXYtdGFibGUgbmlsCiAgIkFiYnJldiB0YWJsZSBpbiB1c2UgaW4gVmVyaWxvZy1tb2Rl IGJ1ZmZlcnMuIikKCjs7KG1ha3VuYm91bmQgJ3Zlcmlsb2ctbW9kZS1hYmJyZXYtdGFibGUpIDsg Rm9yIHRlc3RpbmcsIGNsZWFyIG91dCBvbGQgZGVmdmFyCih2ZXJpbG9nLWRlZmluZS1hYmJyZXYt dGFibGUKICd2ZXJpbG9nLW1vZGUtYWJicmV2LXRhYmxlICgpCiAiQWJicmV2IHRhYmxlIGZvciBW ZXJpbG9nIG1vZGUgc2tlbGV0b25zLiIKIDpjYXNlLWZpeGVkIHQKIDs7IE9ubHkgZXhwYW5kIGlu IGNvZGUuCiA6ZW5hYmxlLWZ1bmN0aW9uIChsYW1iZGEgKCkgKG5vdCAodmVyaWxvZy1pbi1jb21t ZW50LW9yLXN0cmluZy1wKSkpKQoodmVyaWxvZy1kZWZpbmUtYWJicmV2IHZlcmlsb2ctbW9kZS1h YmJyZXYtdGFibGUgImNsYXNzIiAiIiAndmVyaWxvZy1zay1vdm0tY2xhc3MpCih2ZXJpbG9nLWRl ZmluZS1hYmJyZXYgdmVyaWxvZy1tb2RlLWFiYnJldi10YWJsZSAiYWx3YXlzIiAiIiAndmVyaWxv Zy1zay1hbHdheXMpCih2ZXJpbG9nLWRlZmluZS1hYmJyZXYgdmVyaWxvZy1tb2RlLWFiYnJldi10 YWJsZSAiYmVnaW4iIG5pbCAndmVyaWxvZy1zay1iZWdpbikKKHZlcmlsb2ctZGVmaW5lLWFiYnJl diB2ZXJpbG9nLW1vZGUtYWJicmV2LXRhYmxlICJjYXNlIiAiIiAndmVyaWxvZy1zay1jYXNlKQoo dmVyaWxvZy1kZWZpbmUtYWJicmV2IHZlcmlsb2ctbW9kZS1hYmJyZXYtdGFibGUgImZvciIgIiIg J3Zlcmlsb2ctc2stZm9yKQoodmVyaWxvZy1kZWZpbmUtYWJicmV2IHZlcmlsb2ctbW9kZS1hYmJy ZXYtdGFibGUgImdlbmVyYXRlIiAiIiAndmVyaWxvZy1zay1nZW5lcmF0ZSkKKHZlcmlsb2ctZGVm aW5lLWFiYnJldiB2ZXJpbG9nLW1vZGUtYWJicmV2LXRhYmxlICJpbml0aWFsIiAiIiAndmVyaWxv Zy1zay1pbml0aWFsKQoodmVyaWxvZy1kZWZpbmUtYWJicmV2IHZlcmlsb2ctbW9kZS1hYmJyZXYt dGFibGUgImZvcmsiICIiICd2ZXJpbG9nLXNrLWZvcmspCih2ZXJpbG9nLWRlZmluZS1hYmJyZXYg dmVyaWxvZy1tb2RlLWFiYnJldi10YWJsZSAibW9kdWxlIiAiIiAndmVyaWxvZy1zay1tb2R1bGUp Cih2ZXJpbG9nLWRlZmluZS1hYmJyZXYgdmVyaWxvZy1tb2RlLWFiYnJldi10YWJsZSAicHJpbWl0 aXZlIiAiIiAndmVyaWxvZy1zay1wcmltaXRpdmUpCih2ZXJpbG9nLWRlZmluZS1hYmJyZXYgdmVy aWxvZy1tb2RlLWFiYnJldi10YWJsZSAicmVwZWF0IiAiIiAndmVyaWxvZy1zay1yZXBlYXQpCih2 ZXJpbG9nLWRlZmluZS1hYmJyZXYgdmVyaWxvZy1tb2RlLWFiYnJldi10YWJsZSAic3BlY2lmeSIg IiIgJ3Zlcmlsb2ctc2stc3BlY2lmeSkKKHZlcmlsb2ctZGVmaW5lLWFiYnJldiB2ZXJpbG9nLW1v ZGUtYWJicmV2LXRhYmxlICJ0YXNrIiAiIiAndmVyaWxvZy1zay10YXNrKQoodmVyaWxvZy1kZWZp bmUtYWJicmV2IHZlcmlsb2ctbW9kZS1hYmJyZXYtdGFibGUgIndoaWxlIiAiIiAndmVyaWxvZy1z ay13aGlsZSkKKHZlcmlsb2ctZGVmaW5lLWFiYnJldiB2ZXJpbG9nLW1vZGUtYWJicmV2LXRhYmxl ICJjYXNleCIgIiIgJ3Zlcmlsb2ctc2stY2FzZXgpCih2ZXJpbG9nLWRlZmluZS1hYmJyZXYgdmVy aWxvZy1tb2RlLWFiYnJldi10YWJsZSAiY2FzZXoiICIiICd2ZXJpbG9nLXNrLWNhc2V6KQoodmVy aWxvZy1kZWZpbmUtYWJicmV2IHZlcmlsb2ctbW9kZS1hYmJyZXYtdGFibGUgImlmIiAiIiAndmVy aWxvZy1zay1pZikKKHZlcmlsb2ctZGVmaW5lLWFiYnJldiB2ZXJpbG9nLW1vZGUtYWJicmV2LXRh YmxlICJlbHNlIGlmIiAiIiAndmVyaWxvZy1zay1lbHNlLWlmKQoodmVyaWxvZy1kZWZpbmUtYWJi cmV2IHZlcmlsb2ctbW9kZS1hYmJyZXYtdGFibGUgImFzc2lnbiIgIiIgJ3Zlcmlsb2ctc2stYXNz aWduKQoodmVyaWxvZy1kZWZpbmUtYWJicmV2IHZlcmlsb2ctbW9kZS1hYmJyZXYtdGFibGUgImZ1 bmN0aW9uIiAiIiAndmVyaWxvZy1zay1mdW5jdGlvbikKKHZlcmlsb2ctZGVmaW5lLWFiYnJldiB2 ZXJpbG9nLW1vZGUtYWJicmV2LXRhYmxlICJpbnB1dCIgIiIgJ3Zlcmlsb2ctc2staW5wdXQpCih2 ZXJpbG9nLWRlZmluZS1hYmJyZXYgdmVyaWxvZy1tb2RlLWFiYnJldi10YWJsZSAib3V0cHV0IiAi IiAndmVyaWxvZy1zay1vdXRwdXQpCih2ZXJpbG9nLWRlZmluZS1hYmJyZXYgdmVyaWxvZy1tb2Rl LWFiYnJldi10YWJsZSAiaW5vdXQiICIiICd2ZXJpbG9nLXNrLWlub3V0KQoodmVyaWxvZy1kZWZp bmUtYWJicmV2IHZlcmlsb2ctbW9kZS1hYmJyZXYtdGFibGUgIndpcmUiICIiICd2ZXJpbG9nLXNr LXdpcmUpCih2ZXJpbG9nLWRlZmluZS1hYmJyZXYgdmVyaWxvZy1tb2RlLWFiYnJldi10YWJsZSAi cmVnIiAiIiAndmVyaWxvZy1zay1yZWcpCgo7Owo7OyAgTWFjcm9zCjs7CgooZGVmc3Vic3QgdmVy aWxvZy13aXRoaW4tc3RyaW5nICgpCiAgKG50aCAzIChwYXJzZS1wYXJ0aWFsLXNleHAgKHBvaW50 LWF0LWJvbCkgKHBvaW50KSkpKQoKKGRlZnN1YnN0IHZlcmlsb2ctc3RyaW5nLW1hdGNoLWZvbGQg KHJlZ2V4cCBzdHJpbmcgJm9wdGlvbmFsIHN0YXJ0KQogICJMaWtlIGBzdHJpbmctbWF0Y2gnLCBi dXQgdXNlIGB2ZXJpbG9nLWNhc2UtZm9sZCcuClJldHVybiBpbmRleCBvZiBzdGFydCBvZiBmaXJz dCBtYXRjaCBmb3IgUkVHRVhQIGluIFNUUklORywgb3IgbmlsLgpNYXRjaGluZyBpZ25vcmVzIGNh c2UgaWYgYHZlcmlsb2ctY2FzZS1mb2xkJyBpcyBub24tbmlsLgpJZiB0aGlyZCBhcmcgU1RBUlQg aXMgbm9uLW5pbCwgc3RhcnQgc2VhcmNoIGF0IHRoYXQgaW5kZXggaW4gU1RSSU5HLiIKICAobGV0 ICgoY2FzZS1mb2xkLXNlYXJjaCB2ZXJpbG9nLWNhc2UtZm9sZCkpCiAgICAoc3RyaW5nLW1hdGNo IHJlZ2V4cCBzdHJpbmcgc3RhcnQpKSkKCihkZWZzdWJzdCB2ZXJpbG9nLXN0cmluZy1yZXBsYWNl LW1hdGNoZXMgKGZyb20tc3RyaW5nIHRvLXN0cmluZyBmaXhlZGNhc2UgbGl0ZXJhbCBzdHJpbmcp CiAgIlJlcGxhY2Ugb2NjdXJyZW5jZXMgb2YgRlJPTS1TVFJJTkcgd2l0aCBUTy1TVFJJTkcuCkZJ WEVEQ0FTRSBhbmQgTElURVJBTCBhcyBpbiBgcmVwbGFjZS1tYXRjaCcuICBTVFJJTkcgaXMgd2hh dCB0byByZXBsYWNlLgpUaGUgY2FzZSAodmVyaWxvZy1zdHJpbmctcmVwbGFjZS1tYXRjaGVzIFwi b1wiIFwib29cIiBuaWwgbmlsIFwiZm9vYmFyXCIpCndpbGwgYnJlYWssIGFzIHRoZSBvJ3MgY29u dGludW91c2x5IHJlcGxhY2UuICB4YSAtPiB4IHdvcmtzIG9rIHRob3VnaC4iCiAgOzsgSG9wZWZ1 bGx5IHNvb24gdG8gYW4gRW1hY3MgYnVpbHQtaW4KICA7OyBBbHNvIG5vdGUgXCBpbiB0aGUgcmVw bGFjZW1lbnQgcHJldmVudCBtdWx0aXBsZSByZXBsYWNlbWVudHM7IElFCiAgOzsgICAodmVyaWxv Zy1zdHJpbmctcmVwbGFjZS1tYXRjaGVzICJAIiAiXFxcXChbMC05XStcXFxcKSIgbmlsIG5pbCAi d2lyZUBfQCIpCiAgOzsgICBHaXZlcyAid2lyZVwoWzAtOV0rXClfQCIgbm90ICJ3aXJlXChbMC05 XStcKV9cKFswLTldK1wpIgogIChsZXQgKChzdGFydCAwKSkKICAgICh3aGlsZSAoc3RyaW5nLW1h dGNoIGZyb20tc3RyaW5nIHN0cmluZyBzdGFydCkKICAgICAgKHNldHEgc3RyaW5nIChyZXBsYWNl LW1hdGNoIHRvLXN0cmluZyBmaXhlZGNhc2UgbGl0ZXJhbCBzdHJpbmcpCgkgICAgc3RhcnQgKG1p biAobGVuZ3RoIHN0cmluZykgKCsgKG1hdGNoLWJlZ2lubmluZyAwKSAobGVuZ3RoIHRvLXN0cmlu ZykpKSkpCiAgICBzdHJpbmcpKQoKKGRlZnN1YnN0IHZlcmlsb2ctc3RyaW5nLXJlbW92ZS1zcGFj ZXMgKHN0cmluZykKICAiUmVtb3ZlIHNwYWNlcyBzdXJyb3VuZGluZyBTVFJJTkcuIgogIChzYXZl LW1hdGNoLWRhdGEKICAgIChzZXRxIHN0cmluZyAodmVyaWxvZy1zdHJpbmctcmVwbGFjZS1tYXRj aGVzICJeXFxzLSsiICIiIG5pbCBuaWwgc3RyaW5nKSkKICAgIChzZXRxIHN0cmluZyAodmVyaWxv Zy1zdHJpbmctcmVwbGFjZS1tYXRjaGVzICJcXHMtKyQiICIiIG5pbCBuaWwgc3RyaW5nKSkKICAg IHN0cmluZykpCgooZGVmc3Vic3QgdmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZCAoUkVHRVhQIEJP VU5EIE5PRVJST1IpCiAgOzsgY2hlY2tkb2MtcGFyYW1zOiAoUkVHRVhQIEJPVU5EIE5PRVJST1Ip CiAgIkxpa2UgYHJlLXNlYXJjaC1mb3J3YXJkJywgYnV0IHNraXBzIG92ZXIgbWF0Y2ggaW4gY29t bWVudHMgb3Igc3RyaW5ncy4iCiAgKGxldCAoKG1kYXRhICcobmlsIG5pbCkpKSAgOyBTbyBtYXRj aC1lbmQgd2lsbCByZXR1cm4gbmlsIGlmIG5vIG1hdGNoZXMgZm91bmQKICAgICh3aGlsZSAoYW5k CgkgICAgKHJlLXNlYXJjaC1mb3J3YXJkIFJFR0VYUCBCT1VORCBOT0VSUk9SKQoJICAgIChzZXRx IG1kYXRhIChtYXRjaC1kYXRhKSkKCSAgICAoYW5kICh2ZXJpbG9nLXNraXAtZm9yd2FyZC1jb21t ZW50LW9yLXN0cmluZykKCQkgKHByb2duCgkJICAgKHNldHEgbWRhdGEgJyhuaWwgbmlsKSkKCQkg ICAoaWYgQk9VTkQKCQkgICAgICAgKDwgKHBvaW50KSBCT1VORCkKCQkgICAgIHQpKSkpKQogICAg KHN0b3JlLW1hdGNoLWRhdGEgbWRhdGEpCiAgICAobWF0Y2gtZW5kIDApKSkKCihkZWZzdWJzdCB2 ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZCAoUkVHRVhQIEJPVU5EIE5PRVJST1IpCiAgOzsgY2hl Y2tkb2MtcGFyYW1zOiAoUkVHRVhQIEJPVU5EIE5PRVJST1IpCiAgIkxpa2UgYHJlLXNlYXJjaC1i YWNrd2FyZCcsIGJ1dCBza2lwcyBvdmVyIG1hdGNoIGluIGNvbW1lbnRzIG9yIHN0cmluZ3MuIgog IChsZXQgKChtZGF0YSAnKG5pbCBuaWwpKSkgIDsgU28gbWF0Y2gtZW5kIHdpbGwgcmV0dXJuIG5p bCBpZiBubyBtYXRjaGVzIGZvdW5kCiAgICAod2hpbGUgKGFuZAoJICAgIChyZS1zZWFyY2gtYmFj a3dhcmQgUkVHRVhQIEJPVU5EIE5PRVJST1IpCgkgICAgKHNldHEgbWRhdGEgKG1hdGNoLWRhdGEp KQoJICAgIChhbmQgKHZlcmlsb2ctc2tpcC1iYWNrd2FyZC1jb21tZW50LW9yLXN0cmluZykKCQkg KHByb2duCgkJICAgKHNldHEgbWRhdGEgJyhuaWwgbmlsKSkKCQkgICAoaWYgQk9VTkQKCQkgICAg ICAgKD4gKHBvaW50KSBCT1VORCkKCQkgICAgIHQpKSkpKQogICAgKHN0b3JlLW1hdGNoLWRhdGEg bWRhdGEpCiAgICAobWF0Y2gtZW5kIDApKSkKCihkZWZzdWJzdCB2ZXJpbG9nLXJlLXNlYXJjaC1m b3J3YXJkLXF1aWNrIChyZWdleHAgYm91bmQgbm9lcnJvcikKICAiTGlrZSBgdmVyaWxvZy1yZS1z ZWFyY2gtZm9yd2FyZCcsIGluY2x1ZGluZyB1c2Ugb2YgUkVHRVhQIEJPVU5EIGFuZCBOT0VSUk9S LApidXQgdHJhc2hlcyBtYXRjaCBkYXRhIGFuZCBpcyBmYXN0ZXIgZm9yIFJFR0VYUCB0aGF0IGRv ZXNuJ3QgbWF0Y2ggb2Z0ZW4uClRoaXMgdXNlcyBgdmVyaWxvZy1zY2FuJyBhbmQgdGV4dCBwcm9w ZXJ0aWVzIHRvIGlnbm9yZSBjb21tZW50cywKc28gdGhlcmUgbWF5IGJlIGEgbGFyZ2UgdXAgZnJv bnQgcGVuYWx0eSBmb3IgdGhlIGZpcnN0IHNlYXJjaC4iCiAgKGxldCAocHQpCiAgICAod2hpbGUg KGFuZCAobm90IHB0KQoJCShyZS1zZWFyY2gtZm9yd2FyZCByZWdleHAgYm91bmQgbm9lcnJvcikp CiAgICAgIChpZiAodmVyaWxvZy1pbnNpZGUtY29tbWVudC1vci1zdHJpbmctcCAobWF0Y2gtYmVn aW5uaW5nIDApKQogICAgICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkICJbL1wiXG5dIiBuaWwgdCkg IDsgT25seSB3YXkgYSBjb21tZW50IG9yIHF1b3RlIGNhbiBlbmQKCShzZXRxIHB0IChtYXRjaC1l bmQgMCkpKSkKICAgIHB0KSkKCihkZWZzdWJzdCB2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZC1x dWljayAocmVnZXhwIGJvdW5kIG5vZXJyb3IpCiAgOzsgY2hlY2tkb2MtcGFyYW1zOiAoUkVHRVhQ IEJPVU5EIE5PRVJST1IpCiAgIkxpa2UgYHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkJywgaW5j bHVkaW5nIHVzZSBvZiBSRUdFWFAgQk9VTkQgYW5kIE5PRVJST1IsCmJ1dCB0cmFzaGVzIG1hdGNo IGRhdGEgYW5kIGlzIGZhc3RlciBmb3IgUkVHRVhQIHRoYXQgZG9lc24ndCBtYXRjaCBvZnRlbi4K VGhpcyB1c2VzIGB2ZXJpbG9nLXNjYW4nIGFuZCB0ZXh0IHByb3BlcnRpZXMgdG8gaWdub3JlIGNv bW1lbnRzLApzbyB0aGVyZSBtYXkgYmUgYSBsYXJnZSB1cCBmcm9udCBwZW5hbHR5IGZvciB0aGUg Zmlyc3Qgc2VhcmNoLiIKICAobGV0IChwdCkKICAgICh3aGlsZSAoYW5kIChub3QgcHQpCgkJKHJl LXNlYXJjaC1iYWNrd2FyZCByZWdleHAgYm91bmQgbm9lcnJvcikpCiAgICAgIChpZiAodmVyaWxv Zy1pbnNpZGUtY29tbWVudC1vci1zdHJpbmctcCAobWF0Y2gtYmVnaW5uaW5nIDApKQogICAgICAg ICAgKHJlLXNlYXJjaC1iYWNrd2FyZCAiWy9cIl0iIG5pbCB0KSAgOyBPbmx5IHdheSBhIGNvbW1l bnQgb3IgcXVvdGUgY2FuIGJlZ2luCgkoc2V0cSBwdCAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCiAg ICBwdCkpCgooZGVmc3Vic3QgdmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZC1zdWJzdHIgKHN1YnN0 ciByZWdleHAgYm91bmQgbm9lcnJvcikKICAiTGlrZSBgcmUtc2VhcmNoLWZvcndhcmQnLCBidXQg Zmlyc3Qgc2VhcmNoIGZvciBTVUJTVFIgY29uc3RhbnQuClRoZW4gc2VhcmNoZWQgZm9yIHRoZSBu b3JtYWwgUkVHRVhQICh3aGljaCBjb250YWlucyBTVUJTVFIpLCB3aXRoIGdpdmVuCkJPVU5EIGFu ZCBOT0VSUk9SLiAgVGhlIFJFR0VYUCBtdXN0IGZpdCB3aXRoaW4gYSBzaW5nbGUgbGluZS4KVGhp cyBzcGVlZHMgdXAgY29tcGxpY2F0ZWQgcmVnZXhwIG1hdGNoZXMuIgogIDs7IFByb2JsZW0gd2l0 aCBvdmVybGFwOiBzZWFyY2gtZm9yd2FyZCBCQVIgdGhlbiBGT09CQVJCQVogd29uJ3QgbWF0Y2gu CiAgOzsgdGh1cyByZXF1aXJlIG1hdGNoZXMgdG8gYmUgb24gb25lIGxpbmUsIGFuZCB1c2UgYmVn aW5uaW5nLW9mLWxpbmUuCiAgKGxldCAoZG9uZSkKICAgICh3aGlsZSAoYW5kIChub3QgZG9uZSkK CQkoc2VhcmNoLWZvcndhcmQgc3Vic3RyIGJvdW5kIG5vZXJyb3IpKQogICAgICAoc2F2ZS1leGN1 cnNpb24KCShiZWdpbm5pbmctb2YtbGluZSkKCShzZXRxIGRvbmUgKHJlLXNlYXJjaC1mb3J3YXJk IHJlZ2V4cCAocG9pbnQtYXQtZW9sKSBub2Vycm9yKSkpCiAgICAgICh1bmxlc3MgKGFuZCAoPD0g KG1hdGNoLWJlZ2lubmluZyAwKSAocG9pbnQpKQoJCSAgICg+PSAobWF0Y2gtZW5kIDApIChwb2lu dCkpKQoJKHNldHEgZG9uZSBuaWwpKSkKICAgICh3aGVuIGRvbmUgKGdvdG8tY2hhciBkb25lKSkK ICAgIGRvbmUpKQo7Oyh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkLXN1YnN0ciAiLWVuZCIgImdl dC1lbmQtb2YiIG5pbCB0KSAgOyAtZW5kICh0ZXN0IGJhaXQpCgooZGVmc3Vic3QgdmVyaWxvZy1y ZS1zZWFyY2gtYmFja3dhcmQtc3Vic3RyIChzdWJzdHIgcmVnZXhwIGJvdW5kIG5vZXJyb3IpCiAg Ikxpa2UgYHJlLXNlYXJjaC1iYWNrd2FyZCcsIGJ1dCBmaXJzdCBzZWFyY2ggZm9yIFNVQlNUUiBj b25zdGFudC4KVGhlbiBzZWFyY2hlZCBmb3IgdGhlIG5vcm1hbCBSRUdFWFAgKHdoaWNoIGNvbnRh aW5zIFNVQlNUUiksIHdpdGggZ2l2ZW4KQk9VTkQgYW5kIE5PRVJST1IuICBUaGUgUkVHRVhQIG11 c3QgZml0IHdpdGhpbiBhIHNpbmdsZSBsaW5lLgpUaGlzIHNwZWVkcyB1cCBjb21wbGljYXRlZCBy ZWdleHAgbWF0Y2hlcy4iCiAgOzsgUHJvYmxlbSB3aXRoIG92ZXJsYXA6IHNlYXJjaC1iYWNrd2Fy ZCBCQVIgdGhlbiBGT09CQVJCQVogd29uJ3QgbWF0Y2guCiAgOzsgdGh1cyByZXF1aXJlIG1hdGNo ZXMgdG8gYmUgb24gb25lIGxpbmUsIGFuZCB1c2UgYmVnaW5uaW5nLW9mLWxpbmUuCiAgKGxldCAo ZG9uZSkKICAgICh3aGlsZSAoYW5kIChub3QgZG9uZSkKCQkoc2VhcmNoLWJhY2t3YXJkIHN1YnN0 ciBib3VuZCBub2Vycm9yKSkKICAgICAgKHNhdmUtZXhjdXJzaW9uCgkoZW5kLW9mLWxpbmUpCgko c2V0cSBkb25lIChyZS1zZWFyY2gtYmFja3dhcmQgcmVnZXhwIChwb2ludC1hdC1ib2wpIG5vZXJy b3IpKSkKICAgICAgKHVubGVzcyAoYW5kICg8PSAobWF0Y2gtYmVnaW5uaW5nIDApIChwb2ludCkp CgkJICAgKD49IChtYXRjaC1lbmQgMCkgKHBvaW50KSkpCgkoc2V0cSBkb25lIG5pbCkpKQogICAg KHdoZW4gZG9uZSAoZ290by1jaGFyIGRvbmUpKQogICAgZG9uZSkpCjs7KHZlcmlsb2ctcmUtc2Vh cmNoLWJhY2t3YXJkLXN1YnN0ciAiLWVuZCIgImdldC1lbmQtb2YiIG5pbCB0KSAgOyAtZW5kICh0 ZXN0IGJhaXQpCgooZGVmdW4gdmVyaWxvZy1kZWxldGUtdHJhaWxpbmctd2hpdGVzcGFjZSAoKQog ICJEZWxldGUgdHJhaWxpbmcgc3BhY2VzIG9yIHRhYnMsIGJ1dCBub3QgbmV3bGluZXMgbm9yIGxp bmVmZWVkcy4KQWxzbyBhZGQgbWlzc2luZyBmaW5hbCBuZXdsaW5lLgoKVG8gY2FsbCB0aGlzIGZy b20gdGhlIGNvbW1hbmQgbGluZSwgc2VlIFxcW3Zlcmlsb2ctYmF0Y2gtZGlmZi1hdXRvXS4KClRv IGNhbGwgb24gXFxbdmVyaWxvZy1hdXRvXSwgc2V0IGB2ZXJpbG9nLWF1dG8tZGVsZXRlLXRyYWls aW5nLXdoaXRlc3BhY2UnLiIKICA7OyBTaW1pbGFyIHRvIGBkZWxldGUtdHJhaWxpbmctd2hpdGVz cGFjZScgYnV0IHRoYXQncyBub3QgcHJlc2VudCBpbiBYRW1hY3MKICAoc2F2ZS1leGN1cnNpb24K ICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJk ICJbIFx0XSskIiBuaWwgdCkgIDsgTm90IHN5bnRhY3RpYyBXUyBhcyBubyBmb3JtZmVlZAogICAg ICAocmVwbGFjZS1tYXRjaCAiIiBuaWwgbmlsKSkKICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkp CiAgICAodW5sZXNzIChib2xwKSAoaW5zZXJ0ICJcbiIpKSkpCgooZGVmdmFyIGNvbXBpbGUtY29t bWFuZCkKKGRlZnZhciBjcmVhdGUtbG9ja2ZpbGVzKSAgOyBFbWFjcyAyNAoKOzsgY29tcGlsYXRp b24gcHJvZ3JhbQooZGVmdW4gdmVyaWxvZy1zZXQtY29tcGlsZS1jb21tYW5kICgpCiAgIkZ1bmN0 aW9uIHRvIGNvbXB1dGUgc2hlbGwgY29tbWFuZCB0byBjb21waWxlIFZlcmlsb2cuCgpUaGlzIHJl YWRzIGB2ZXJpbG9nLXRvb2wnIGFuZCBzZXRzIGBjb21waWxlLWNvbW1hbmQnLiAgVGhpcyBzcGVj aWZpZXMgdGhlCnByb2dyYW0gdGhhdCBleGVjdXRlcyB3aGVuIHlvdSB0eXBlIFxcW2NvbXBpbGVd IG9yClxcW3Zlcmlsb2ctYXV0by1zYXZlLWNvbXBpbGVdLgoKQnkgZGVmYXVsdCBgdmVyaWxvZy10 b29sJyB1c2VzIGEgTWFrZWZpbGUgaWYgb25lIGV4aXN0cyBpbiB0aGUKY3VycmVudCBkaXJlY3Rv cnkuICBJZiBub3QsIGl0IGlzIHNldCB0byB0aGUgYHZlcmlsb2ctbGludGVyJywKYHZlcmlsb2ct Y29tcGlsZXInLCBgdmVyaWxvZy1jb3ZlcmFnZScsIGB2ZXJpbG9nLXByZXByb2Nlc3NvcicsCm9y IGB2ZXJpbG9nLXNpbXVsYXRvcicgdmFyaWFibGVzLCBhcyBzZWxlY3RlZCB3aXRoIHRoZSBWZXJp bG9nIC0+ClwiQ2hvb3NlIENvbXBpbGF0aW9uIEFjdGlvblwiIG1lbnUuCgpZb3Ugc2hvdWxkIHNl dCBgdmVyaWxvZy10b29sJyBvciB0aGUgb3RoZXIgdmFyaWFibGVzIHRvIHRoZSBwYXRoIGFuZAph cmd1bWVudHMgZm9yIHlvdXIgVmVyaWxvZyBzaW11bGF0b3IuICBGb3IgZXhhbXBsZToKICAgIFwi dmNzIC1wMTIzIC1PXCIKb3IgYSBzdHJpbmcgbGlrZToKICAgIFwiKGNkIC90bXA7IHN1cmVjb3Yg JXMpXCIuCgpJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IGJ1ZmZl ciBpcyBjb25jYXQnZWQgdG8gdGhlCnZhbHVlIG9mIGB2ZXJpbG9nLXRvb2wnOyBpbiB0aGUgbGF0 ZXIsIHRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBpcwpzdWJzdGl0dXRlZCBmb3IgdGhl ICVzLgoKV2hlcmUgX19GTEFHU19fIGFwcGVhcnMgaW4gdGhlIHN0cmluZyBgdmVyaWxvZy1jdXJy ZW50LWZsYWdzJwp3aWxsIGJlIHN1YnN0aXR1dGVkLgoKV2hlcmUgX19GSUxFX18gYXBwZWFycyBp biB0aGUgc3RyaW5nLCB0aGUgdmFyaWFibGUKYGJ1ZmZlci1maWxlLW5hbWUnIG9mIHRoZSBjdXJy ZW50IGJ1ZmZlciwgd2l0aG91dCB0aGUgZGlyZWN0b3J5CnBvcnRpb24sIHdpbGwgYmUgc3Vic3Rp dHV0ZWQuIgogIChpbnRlcmFjdGl2ZSkKICAoY29uZAogICAoKG9yIChmaWxlLWV4aXN0cy1wICJt YWtlZmlsZSIpCTtJZiB0aGVyZSBpcyBhIG1ha2VmaWxlLCB1c2UgaXQKCShmaWxlLWV4aXN0cy1w ICJNYWtlZmlsZSIpKQogICAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAnY29tcGlsZS1jb21t YW5kKSAibWFrZSAiKSkKICAgKHQKICAgIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2NvbXBp bGUtY29tbWFuZCkKCSAoaWYgdmVyaWxvZy10b29sCgkgICAgIChpZiAoc3RyaW5nLW1hdGNoICIl cyIgKGV2YWwgdmVyaWxvZy10b29sKSkKCQkgKGZvcm1hdCAoZXZhbCB2ZXJpbG9nLXRvb2wpIChv ciBidWZmZXItZmlsZS1uYW1lICIiKSkKCSAgICAgICAoY29uY2F0IChldmFsIHZlcmlsb2ctdG9v bCkgIiAiIChvciBidWZmZXItZmlsZS1uYW1lICIiKSkpCgkgICAiIikpKSkKICAodmVyaWxvZy1t b2RpZnktY29tcGlsZS1jb21tYW5kKSkKCihkZWZ1biB2ZXJpbG9nLWV4cGFuZC1jb21tYW5kIChj b21tYW5kKQogICJSZXBsYWNlIG1ldGEtaW5mb3JtYXRpb24gaW4gQ09NTUFORCBhbmQgcmV0dXJu IGl0LgpXaGVyZSBfX0ZMQUdTX18gYXBwZWFycyBpbiB0aGUgc3RyaW5nIGB2ZXJpbG9nLWN1cnJl bnQtZmxhZ3MnCndpbGwgYmUgc3Vic3RpdHV0ZWQuICBXaGVyZSBfX0ZJTEVfXyBhcHBlYXJzIGlu IHRoZSBzdHJpbmcsIHRoZQpjdXJyZW50IGJ1ZmZlcidzIGZpbGUtbmFtZSwgd2l0aG91dCB0aGUg ZGlyZWN0b3J5IHBvcnRpb24sIHdpbGwKYmUgc3Vic3RpdHV0ZWQuIgogIChzZXRxIGNvbW1hbmQJ KHZlcmlsb2ctc3RyaW5nLXJlcGxhY2UtbWF0Y2hlcwoJCSA7OyBOb3RlIFxcYiBvbmx5IHdvcmtz IGlmIHVuZGVyIHZlcmlsb2cgc3ludGF4IHRhYmxlCgkJICJcXGJfX0ZMQUdTX19cXGIiICh2ZXJp bG9nLWN1cnJlbnQtZmxhZ3MpCgkJIHQgdCBjb21tYW5kKSkKICAoc2V0cSBjb21tYW5kCSh2ZXJp bG9nLXN0cmluZy1yZXBsYWNlLW1hdGNoZXMKCQkgIlxcYl9fRklMRV9fXFxiIiAoZmlsZS1uYW1l LW5vbmRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGJ1ZmZl ci1maWxlLW5hbWUpICIiKSkKCQkgdCB0IGNvbW1hbmQpKQogIGNvbW1hbmQpCgo7OyBFbGltaW5h dGUgY29tcGlsZSB3YXJuaW5nCihkZWZ2YXIgdmVyaWxvZy1jb21waWxlLWNvbW1hbmQtcHJlLW1v ZCkKKGRlZnZhciB2ZXJpbG9nLWNvbXBpbGUtY29tbWFuZC1wb3N0LW1vZCkKCihkZWZ1biB2ZXJp bG9nLW1vZGlmeS1jb21waWxlLWNvbW1hbmQgKCkKICAiVXBkYXRlIGBjb21waWxlLWNvbW1hbmQn IHVzaW5nIGB2ZXJpbG9nLWV4cGFuZC1jb21tYW5kJy4iCiAgOzsgRW50cnkgaW50byB2ZXJpbG9n LW1vZGUgYSBjYWxsIHRvIHRoaXMgYmVmb3JlIExvY2FsIFZhcmlhYmxlcyBleGlzdAogIDs7IExp a2V3aXNlIHVzZXIgbWF5IGhhdmUgaG9vayBvciBzb21ldGhpbmcgdGhhdCBjaGFuZ2VzIHRoZSBm bGFncy4KICA7OyBTbywgcmVtZW1iZXIgd2UncmUgcmVzcG9uc2libGUgZm9yIHRoZSBleHBhbnNp b24gYW5kIG9uIHJlLWVudHJ5CiAgOzsgcmVjb21wdXRlIF9fRkxBR1NfXyBvbiBlYWNoIHJlZW50 cnkuCiAgKHdoZW4gKHN0cmluZ3AgY29tcGlsZS1jb21tYW5kKQogICAgKHdoZW4gKGFuZAogICAg ICAgICAgIChib3VuZHAgJ3Zlcmlsb2ctY29tcGlsZS1jb21tYW5kLXBvc3QtbW9kKQogICAgICAg ICAgIChlcXVhbCBjb21waWxlLWNvbW1hbmQgdmVyaWxvZy1jb21waWxlLWNvbW1hbmQtcG9zdC1t b2QpKQogICAgICAoc2V0cSBjb21waWxlLWNvbW1hbmQgdmVyaWxvZy1jb21waWxlLWNvbW1hbmQt cHJlLW1vZCkpCiAgICAod2hlbiAoYW5kCiAgICAgICAgICAgKHN0cmluZy1tYXRjaCAiXFxiXFwo X19GTEFHU19fXFx8X19GSUxFX19cXClcXGIiIGNvbXBpbGUtY29tbWFuZCkpCiAgICAgIChzZXQg KG1ha2UtbG9jYWwtdmFyaWFibGUgJ3Zlcmlsb2ctY29tcGlsZS1jb21tYW5kLXByZS1tb2QpCiAg ICAgICAgICAgY29tcGlsZS1jb21tYW5kKQogICAgICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxl ICdjb21waWxlLWNvbW1hbmQpCiAgICAgICAgICAgKHZlcmlsb2ctZXhwYW5kLWNvbW1hbmQgY29t cGlsZS1jb21tYW5kKSkKICAgICAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAndmVyaWxvZy1j b21waWxlLWNvbW1hbmQtcG9zdC1tb2QpCiAgICAgICAgICAgY29tcGlsZS1jb21tYW5kKSkpKQoK Ozs7IFNlZSBpc3N1ZSAxNzAwICBEb2VzIG5vdCBjb21waWxlIGluIFhFbWFjczIxLjUKOzs7IEVy cm9yIE1lc3NhZ2VzIGR1cmluZyBjb21waWxlIGlzOgo7OzsgICAgQ29tcGlsaW5nIGJ1ZmZlciB2 ZXJpbG9nLW1vZGUuZWwgYXQgVGh1IE5vdiAgNSAxNjoxNToyOSAyMDIwCjs7OyAgICBXaGlsZSBj b21waWxpbmcgdG9wbGV2ZWwgZm9ybXM6Cjs7OyAgICAgICEhIFdyb25nIHR5cGUgYXJndW1lbnQg KChzZXF1ZW5jZXAgdmVyaWxvZykpCjs7Owo7OzsoaWYgKGZlYXR1cmVwICd4ZW1hY3MpCjs7OyAg ICA7OyBGb2xsb3dpbmcgY29kZSBvbmx5IGdldHMgY2FsbGVkIGZyb20gY29tcGlsYXRpb24tbW9k ZS1ob29rIG9uIFhFbWFjcyB0byBhZGQgZXJyb3IgaGFuZGxpbmcuCjs7OyAgICAoZGVmdW4gdmVy aWxvZy1lcnJvci1yZWdleHAtYWRkLXhlbWFjcyAoKQo7OzsgICAgICAiVGVhY2ggWEVtYWNzIGFi b3V0IHZlcmlsb2cgZXJyb3JzLgo7OztDYWxsZWQgYnkgYGNvbXBpbGF0aW9uLW1vZGUtaG9vaycu ICBUaGlzIGFsbG93cyBcXFtuZXh0LWVycm9yXSB0bwo7OztmaW5kIHRoZSBlcnJvcnMuIgo7Ozsg ICAgICAoaW50ZXJhY3RpdmUpCjs7OyAgICAgIChpZiAoYm91bmRwICdjb21waWxhdGlvbi1lcnJv ci1yZWdleHAtc3lzdGVtcy1hbGlzdCkKOzs7CSAgKGlmIChhbmQKOzs7CSAgICAgICAobm90IChl cXVhbCBjb21waWxhdGlvbi1lcnJvci1yZWdleHAtc3lzdGVtcy1saXN0ICdhbGwpKQo7OzsJICAg ICAgIChub3QgKG1lbWJlciBjb21waWxhdGlvbi1lcnJvci1yZWdleHAtc3lzdGVtcy1saXN0ICd2 ZXJpbG9nKSkpCjs7OwkgICAgICAocHVzaCAndmVyaWxvZyBjb21waWxhdGlvbi1lcnJvci1yZWdl eHAtc3lzdGVtcy1saXN0KSkpCjs7OyAgICAgIChpZiAoYm91bmRwICdjb21waWxhdGlvbi1lcnJv ci1yZWdleHAtYWxpc3QtYWxpc3QpCjs7OwkgIChpZiAobm90IChhc3NvYyAndmVyaWxvZyBjb21w aWxhdGlvbi1lcnJvci1yZWdleHAtYWxpc3QtYWxpc3QpKQo7OzsJICAgICAgKHNldGNkciBjb21w aWxhdGlvbi1lcnJvci1yZWdleHAtYWxpc3QtYWxpc3QKOzs7CQkgICAgICAoY29ucyB2ZXJpbG9n LWVycm9yLXJlZ2V4cC14ZW1hY3MtYWxpc3QKOzs7CQkJICAgIChjZHIgY29tcGlsYXRpb24tZXJy b3ItcmVnZXhwLWFsaXN0LWFsaXN0KSkpKSkKOzs7ICAgICAgKGlmIChib3VuZHAgJ2NvbXBpbGF0 aW9uLWZvbnQtbG9jay1rZXl3b3JkcykKOzs7CSAgKHByb2duCjs7OwkgICAgKHNldCAobWFrZS1s b2NhbC12YXJpYWJsZSAnY29tcGlsYXRpb24tZm9udC1sb2NrLWtleXdvcmRzKQo7OzsJCSB2ZXJp bG9nLWVycm9yLWZvbnQtbG9jay1rZXl3b3JkcykKOzs7CSAgICAoZm9udC1sb2NrLXNldC1kZWZh dWx0cykpKQo7OzsgICAgICA7OyBOZWVkIHRvIHJlLXJ1biBjb21waWxhdGlvbi1lcnJvci1yZWdl eHAgYnVpbGRlcgo7OzsgICAgICAoaWYgKGZib3VuZHAgJ2NvbXBpbGF0aW9uLWJ1aWxkLWNvbXBp bGF0aW9uLWVycm9yLXJlZ2V4cC1hbGlzdCkKOzs7CSAgKGNvbXBpbGF0aW9uLWJ1aWxkLWNvbXBp bGF0aW9uLWVycm9yLXJlZ2V4cC1hbGlzdCkpCjs7OyAgICAgICkpCgo7OyBGb2xsb3dpbmcgY29k ZSBvbmx5IGdldHMgY2FsbGVkIGZyb20gY29tcGlsYXRpb24tbW9kZS1ob29rIG9uIEVtYWNzIHRv IGFkZCBlcnJvciBoYW5kbGluZy4KKGRlZnVuIHZlcmlsb2ctZXJyb3ItcmVnZXhwLWFkZC1lbWFj cyAoKQogICJUZWxsIEVtYWNzIGNvbXBpbGUgdGhhdCB3ZSBhcmUgVmVyaWxvZy4KQ2FsbGVkIGJ5 IGBjb21waWxhdGlvbi1tb2RlLWhvb2snLiAgVGhpcyBhbGxvd3MgXFxbbmV4dC1lcnJvcl0gdG8K ZmluZCB0aGUgZXJyb3JzLiIKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGJvdW5kcCAnY29tcGls YXRpb24tZXJyb3ItcmVnZXhwLWFsaXN0LWFsaXN0KQogICAgKHdoZW4gKG5vdCAoYXNzb2MgJ3Zl cmlsb2cteGwtMSBjb21waWxhdGlvbi1lcnJvci1yZWdleHAtYWxpc3QtYWxpc3QpKQogICAgICAo bWFwY2FyCiAgICAgICAobGFtYmRhIChpdGVtKQogICAgICAgICAocHVzaCAoY2FyIGl0ZW0pIGNv bXBpbGF0aW9uLWVycm9yLXJlZ2V4cC1hbGlzdCkKICAgICAgICAgKHB1c2ggaXRlbSBjb21waWxh dGlvbi1lcnJvci1yZWdleHAtYWxpc3QtYWxpc3QpKQogICAgICAgdmVyaWxvZy1lcnJvci1yZWdl eHAtZW1hY3MtYWxpc3QpKSkpCgooaWYgKGZlYXR1cmVwICd4ZW1hY3MpIChhZGQtaG9vayAnY29t cGlsYXRpb24tbW9kZS1ob29rICd2ZXJpbG9nLWVycm9yLXJlZ2V4cC1hZGQteGVtYWNzKSkKKGlm IChmZWF0dXJlcCAnZW1hY3MpIChhZGQtaG9vayAnY29tcGlsYXRpb24tbW9kZS1ob29rICd2ZXJp bG9nLWVycm9yLXJlZ2V4cC1hZGQtZW1hY3MpKQoKKGRlZmNvbnN0IHZlcmlsb2ctY29tcGlsZXIt ZGlyZWN0aXZlcwogIChldmFsLXdoZW4tY29tcGlsZQogICAgJygKICAgICAgOzsgY29tcGlsZXIg ZGlyZWN0aXZlcywgZnJvbSBJRUVFIDE4MDAtMjAxMiBzZWN0aW9uIDIyLjEKICAgICAgImBfX0ZJ TEVfXyIgImBfX0xJTkUiICJgYmVnaW5fa2V5d29yZHMiICJgY2VsbGRlZmluZSIgImBkZWZhdWx0 X25ldHR5cGUiCiAgICAgICJgZGVmaW5lIiAiYGVsc2UiICJgZWxzaWYiICJgZW5kX2tleXdvcmRz IiAiYGVuZGNlbGxkZWZpbmUiICJgZW5kaWYiCiAgICAgICJgaWZkZWYiICJgaWZuZGVmIiAiYGlu Y2x1ZGUiICJgbGluZSIgImBub3VuY29ubmVjdGVkX2RyaXZlIiAiYHByYWdtYSIKICAgICAgImBy ZXNldGFsbCIgImB0aW1lc2NhbGUiICJgdW5jb25uZWN0ZWRfZHJpdmUiICJgdW5kZWYiICJgdW5k ZWZpbmVhbGwiCiAgICAgIDs7IGNvbXBpbGVyIGRpcmVjdGl2ZXMgbm90IGNvdmVyZWQgYnkgSUVF RSAxODAwCiAgICAgICJgY2FzZSIgImBkZWZhdWx0IiAiYGVuZGZvciIgImBlbmRwcm90ZWN0IiAi YGVuZHN3aXRjaCIgImBlbmR3aGlsZSIgImBmb3IiCiAgICAgICJgZm9ybWF0IiAiYGlmIiAiYGxl dCIgImBwcm90ZWN0IiAiYHN3aXRjaCIgImB0aW1lX3NjYWxlIiAiYHVzZWxpYiIKICAgICAgImB3 aGlsZSIKICAgICAgKSkKICAiTGlzdCBvZiBWZXJpbG9nIGNvbXBpbGVyIGRpcmVjdGl2ZXMuIikK CihkZWZjb25zdCB2ZXJpbG9nLWRpcmVjdGl2ZS1yZQogICh2ZXJpbG9nLXJlZ2V4cC13b3JkcyB2 ZXJpbG9nLWNvbXBpbGVyLWRpcmVjdGl2ZXMpKQoKKGRlZmNvbnN0IHZlcmlsb2ctZGlyZWN0aXZl LXJlLTEKICAoY29uY2F0ICJbIFx0XSoiICB2ZXJpbG9nLWRpcmVjdGl2ZS1yZSkpCgooZGVmY29u c3QgdmVyaWxvZy1kaXJlY3RpdmUtYmVnaW4KICAiXFw8YFxcKGZvclxcfGlcXChmXFx8ZmRlZlxc fGZuZGVmXFwpXFx8c3dpdGNoXFx8d2hpbGVcXClcXD4iKQoKKGRlZmNvbnN0IHZlcmlsb2ctZGly ZWN0aXZlLW1pZGRsZQogICJcXDxgXFwoZWxzZVxcfGVsc2lmXFx8ZGVmYXVsdFxcfGNhc2VcXClc XD4iKQoKKGRlZmNvbnN0IHZlcmlsb2ctZGlyZWN0aXZlLWVuZAogICJgXFwoZW5kZm9yXFx8ZW5k aWZcXHxlbmRzd2l0Y2hcXHxlbmR3aGlsZVxcKVxcPiIpCgooZGVmY29uc3QgdmVyaWxvZy1vdm0t YmVnaW4tcmUKICAoZXZhbC13aGVuLWNvbXBpbGUKICAgICh2ZXJpbG9nLXJlZ2V4cC1vcHQKICAg ICAnKAogICAgICAgImBvdm1fY29tcG9uZW50X3V0aWxzX2JlZ2luIgogICAgICAgImBvdm1fY29t cG9uZW50X3BhcmFtX3V0aWxzX2JlZ2luIgogICAgICAgImBvdm1fZmllbGRfdXRpbHNfYmVnaW4i CiAgICAgICAiYG92bV9vYmplY3RfdXRpbHNfYmVnaW4iCiAgICAgICAiYG92bV9vYmplY3RfcGFy YW1fdXRpbHNfYmVnaW4iCiAgICAgICAiYG92bV9zZXF1ZW5jZV91dGlsc19iZWdpbiIKICAgICAg ICJgb3ZtX3NlcXVlbmNlcl91dGlsc19iZWdpbiIKICAgICAgICkgbmlsICkpKQoKKGRlZmNvbnN0 IHZlcmlsb2ctb3ZtLWVuZC1yZQogIChldmFsLXdoZW4tY29tcGlsZQogICAgKHZlcmlsb2ctcmVn ZXhwLW9wdAogICAgICcoCiAgICAgICAiYG92bV9jb21wb25lbnRfdXRpbHNfZW5kIgogICAgICAg ImBvdm1fZmllbGRfdXRpbHNfZW5kIgogICAgICAgImBvdm1fb2JqZWN0X3V0aWxzX2VuZCIKICAg ICAgICJgb3ZtX3NlcXVlbmNlX3V0aWxzX2VuZCIKICAgICAgICJgb3ZtX3NlcXVlbmNlcl91dGls c19lbmQiCiAgICAgICApIG5pbCApKSkKCihkZWZjb25zdCB2ZXJpbG9nLXV2bS1iZWdpbi1yZQog IChldmFsLXdoZW4tY29tcGlsZQogICAgKHZlcmlsb2ctcmVnZXhwLW9wdAogICAgICcoCiAgICAg ICAiYHV2bV9jb21wb25lbnRfdXRpbHNfYmVnaW4iCiAgICAgICAiYHV2bV9jb21wb25lbnRfcGFy YW1fdXRpbHNfYmVnaW4iCiAgICAgICAiYHV2bV9maWVsZF91dGlsc19iZWdpbiIKICAgICAgICJg dXZtX29iamVjdF91dGlsc19iZWdpbiIKICAgICAgICJgdXZtX29iamVjdF9wYXJhbV91dGlsc19i ZWdpbiIKICAgICAgICJgdXZtX3NlcXVlbmNlX3V0aWxzX2JlZ2luIgogICAgICAgImB1dm1fc2Vx dWVuY2VyX3V0aWxzX2JlZ2luIgogICAgICAgKSBuaWwgKSkpCgooZGVmY29uc3QgdmVyaWxvZy11 dm0tZW5kLXJlCiAgKGV2YWwtd2hlbi1jb21waWxlCiAgICAodmVyaWxvZy1yZWdleHAtb3B0CiAg ICAgJygKICAgICAgICJgdXZtX2NvbXBvbmVudF91dGlsc19lbmQiCiAgICAgICAiYHV2bV9maWVs ZF91dGlsc19lbmQiCiAgICAgICAiYHV2bV9vYmplY3RfdXRpbHNfZW5kIgogICAgICAgImB1dm1f c2VxdWVuY2VfdXRpbHNfZW5kIgogICAgICAgImB1dm1fc2VxdWVuY2VyX3V0aWxzX2VuZCIKICAg ICAgICkgbmlsICkpKQoKKGRlZmNvbnN0IHZlcmlsb2ctdm1tLWJlZ2luLXJlCiAgKGV2YWwtd2hl bi1jb21waWxlCiAgICAodmVyaWxvZy1yZWdleHAtb3B0CiAgICAgJygKICAgICAgICJgdm1tX2Rh dGFfbWVtYmVyX2JlZ2luIgogICAgICAgImB2bW1fZW52X21lbWJlcl9iZWdpbiIKICAgICAgICJg dm1tX3NjZW5hcmlvX21lbWJlcl9iZWdpbiIKICAgICAgICJgdm1tX3N1YmVudl9tZW1iZXJfYmVn aW4iCiAgICAgICAiYHZtbV94YWN0b3JfbWVtYmVyX2JlZ2luIgogICAgICAgKSBuaWwgKSApICkK CihkZWZjb25zdCB2ZXJpbG9nLXZtbS1lbmQtcmUKICAoZXZhbC13aGVuLWNvbXBpbGUKICAgICh2 ZXJpbG9nLXJlZ2V4cC1vcHQKICAgICAnKAogICAgICAgImB2bW1fZGF0YV9tZW1iZXJfZW5kIgog ICAgICAgImB2bW1fZW52X21lbWJlcl9lbmQiCiAgICAgICAiYHZtbV9zY2VuYXJpb19tZW1iZXJf ZW5kIgogICAgICAgImB2bW1fc3ViZW52X21lbWJlcl9lbmQiCiAgICAgICAiYHZtbV94YWN0b3Jf bWVtYmVyX2VuZCIKICAgICAgICkgbmlsICkgKSApCgooZGVmY29uc3QgdmVyaWxvZy12bW0tc3Rh dGVtZW50LXJlCiAgImB2bW1fXFwoZGF0YVxcfGVudlxcfHNjZW5hcmlvXFx8c3ViZW52XFx8eGFj dG9yXFwpX21lbWJlcl9cXChzY2FsYXJcXHxzdHJpbmdcXHxlbnVtXFx8dm1tX2RhdGFcXHxjaGFu bmVsXFx8eGFjdG9yXFx8c3ViZW52XFx8dXNlcl9kZWZpbmVkXFwpXFwoX2FycmF5XFwpPyIpCgoo ZGVmY29uc3QgdmVyaWxvZy1vdm0tc3RhdGVtZW50LXJlCiAgKGV2YWwtd2hlbi1jb21waWxlCiAg ICAodmVyaWxvZy1yZWdleHAtb3B0CiAgICAgJygKICAgICAgIDs7IFN0YXRlbWVudHMKICAgICAg ICJgRFVUX0VSUk9SIgogICAgICAgImBNRVNTQUdFIgogICAgICAgImBkdXRfZXJyb3IiCiAgICAg ICAiYG1lc3NhZ2UiCiAgICAgICAiYG92bV9hbmFseXNpc19pbXBfZGVjbCIKICAgICAgICJgb3Zt X2Jsb2NraW5nX2dldF9pbXBfZGVjbCIKICAgICAgICJgb3ZtX2Jsb2NraW5nX2dldF9wZWVrX2lt cF9kZWNsIgogICAgICAgImBvdm1fYmxvY2tpbmdfbWFzdGVyX2ltcF9kZWNsIgogICAgICAgImBv dm1fYmxvY2tpbmdfcGVla19pbXBfZGVjbCIKICAgICAgICJgb3ZtX2Jsb2NraW5nX3B1dF9pbXBf ZGVjbCIKICAgICAgICJgb3ZtX2Jsb2NraW5nX3NsYXZlX2ltcF9kZWNsIgogICAgICAgImBvdm1f YmxvY2tpbmdfdHJhbnNwb3J0X2ltcF9kZWNsIgogICAgICAgImBvdm1fY29tcG9uZW50X3JlZ2lz dHJ5IgogICAgICAgImBvdm1fY29tcG9uZW50X3JlZ2lzdHJ5X3BhcmFtIgogICAgICAgImBvdm1f Y29tcG9uZW50X3V0aWxzIgogICAgICAgImBvdm1fY3JlYXRlIgogICAgICAgImBvdm1fY3JlYXRl X3NlcSIKICAgICAgICJgb3ZtX2RlY2xhcmVfc2VxdWVuY2VfbGliIgogICAgICAgImBvdm1fZG8i CiAgICAgICAiYG92bV9kb19zZXEiCiAgICAgICAiYG92bV9kb19zZXFfd2l0aCIKICAgICAgICJg b3ZtX2RvX3dpdGgiCiAgICAgICAiYG92bV9lcnJvciIKICAgICAgICJgb3ZtX2ZhdGFsIgogICAg ICAgImBvdm1fZmllbGRfYWFfaW50X2J5dGUiCiAgICAgICAiYG92bV9maWVsZF9hYV9pbnRfYnl0 ZV91bnNpZ25lZCIKICAgICAgICJgb3ZtX2ZpZWxkX2FhX2ludF9pbnQiCiAgICAgICAiYG92bV9m aWVsZF9hYV9pbnRfaW50X3Vuc2lnbmVkIgogICAgICAgImBvdm1fZmllbGRfYWFfaW50X2ludGVn ZXIiCiAgICAgICAiYG92bV9maWVsZF9hYV9pbnRfaW50ZWdlcl91bnNpZ25lZCIKICAgICAgICJg b3ZtX2ZpZWxkX2FhX2ludF9rZXkiCiAgICAgICAiYG92bV9maWVsZF9hYV9pbnRfbG9uZ2ludCIK ICAgICAgICJgb3ZtX2ZpZWxkX2FhX2ludF9sb25naW50X3Vuc2lnbmVkIgogICAgICAgImBvdm1f ZmllbGRfYWFfaW50X3Nob3J0aW50IgogICAgICAgImBvdm1fZmllbGRfYWFfaW50X3Nob3J0aW50 X3Vuc2lnbmVkIgogICAgICAgImBvdm1fZmllbGRfYWFfaW50X3N0cmluZyIKICAgICAgICJgb3Zt X2ZpZWxkX2FhX29iamVjdF9pbnQiCiAgICAgICAiYG92bV9maWVsZF9hYV9vYmplY3Rfc3RyaW5n IgogICAgICAgImBvdm1fZmllbGRfYWFfc3RyaW5nX2ludCIKICAgICAgICJgb3ZtX2ZpZWxkX2Fh X3N0cmluZ19zdHJpbmciCiAgICAgICAiYG92bV9maWVsZF9hcnJheV9pbnQiCiAgICAgICAiYG92 bV9maWVsZF9hcnJheV9vYmplY3QiCiAgICAgICAiYG92bV9maWVsZF9hcnJheV9zdHJpbmciCiAg ICAgICAiYG92bV9maWVsZF9lbnVtIgogICAgICAgImBvdm1fZmllbGRfZXZlbnQiCiAgICAgICAi YG92bV9maWVsZF9pbnQiCiAgICAgICAiYG92bV9maWVsZF9vYmplY3QiCiAgICAgICAiYG92bV9m aWVsZF9xdWV1ZV9pbnQiCiAgICAgICAiYG92bV9maWVsZF9xdWV1ZV9vYmplY3QiCiAgICAgICAi YG92bV9maWVsZF9xdWV1ZV9zdHJpbmciCiAgICAgICAiYG92bV9maWVsZF9zYXJyYXlfaW50Igog ICAgICAgImBvdm1fZmllbGRfc3RyaW5nIgogICAgICAgImBvdm1fZmllbGRfdXRpbHMiCiAgICAg ICAiYG92bV9maWxlIgogICAgICAgImBvdm1fZ2V0X2ltcF9kZWNsIgogICAgICAgImBvdm1fZ2V0 X3BlZWtfaW1wX2RlY2wiCiAgICAgICAiYG92bV9pbmZvIgogICAgICAgImBvdm1faW5mbzEiCiAg ICAgICAiYG92bV9pbmZvMiIKICAgICAgICJgb3ZtX2luZm8zIgogICAgICAgImBvdm1faW5mbzQi CiAgICAgICAiYG92bV9saW5lIgogICAgICAgImBvdm1fbWFzdGVyX2ltcF9kZWNsIgogICAgICAg ImBvdm1fbXNnX2RldGFpbCIKICAgICAgICJgb3ZtX25vbl9ibG9ja2luZ190cmFuc3BvcnRfaW1w X2RlY2wiCiAgICAgICAiYG92bV9ub25ibG9ja2luZ19nZXRfaW1wX2RlY2wiCiAgICAgICAiYG92 bV9ub25ibG9ja2luZ19nZXRfcGVla19pbXBfZGVjbCIKICAgICAgICJgb3ZtX25vbmJsb2NraW5n X21hc3Rlcl9pbXBfZGVjbCIKICAgICAgICJgb3ZtX25vbmJsb2NraW5nX3BlZWtfaW1wX2RlY2wi CiAgICAgICAiYG92bV9ub25ibG9ja2luZ19wdXRfaW1wX2RlY2wiCiAgICAgICAiYG92bV9ub25i bG9ja2luZ19zbGF2ZV9pbXBfZGVjbCIKICAgICAgICJgb3ZtX29iamVjdF9yZWdpc3RyeSIKICAg ICAgICJgb3ZtX29iamVjdF9yZWdpc3RyeV9wYXJhbSIKICAgICAgICJgb3ZtX29iamVjdF91dGls cyIKICAgICAgICJgb3ZtX3BlZWtfaW1wX2RlY2wiCiAgICAgICAiYG92bV9waGFzZV9mdW5jX2Rl Y2wiCiAgICAgICAiYG92bV9waGFzZV90YXNrX2RlY2wiCiAgICAgICAiYG92bV9wcmludF9hYV9p bnRfb2JqZWN0IgogICAgICAgImBvdm1fcHJpbnRfYWFfc3RyaW5nX2ludCIKICAgICAgICJgb3Zt X3ByaW50X2FhX3N0cmluZ19vYmplY3QiCiAgICAgICAiYG92bV9wcmludF9hYV9zdHJpbmdfc3Ry aW5nIgogICAgICAgImBvdm1fcHJpbnRfYXJyYXlfaW50IgogICAgICAgImBvdm1fcHJpbnRfYXJy YXlfb2JqZWN0IgogICAgICAgImBvdm1fcHJpbnRfYXJyYXlfc3RyaW5nIgogICAgICAgImBvdm1f cHJpbnRfb2JqZWN0X3F1ZXVlIgogICAgICAgImBvdm1fcHJpbnRfcXVldWVfaW50IgogICAgICAg ImBvdm1fcHJpbnRfc3RyaW5nX3F1ZXVlIgogICAgICAgImBvdm1fcHV0X2ltcF9kZWNsIgogICAg ICAgImBvdm1fcmFuZF9zZW5kIgogICAgICAgImBvdm1fcmFuZF9zZW5kX3dpdGgiCiAgICAgICAi YG92bV9zZW5kIgogICAgICAgImBvdm1fc2VxdWVuY2VfdXRpbHMiCiAgICAgICAiYG92bV9zbGF2 ZV9pbXBfZGVjbCIKICAgICAgICJgb3ZtX3RyYW5zcG9ydF9pbXBfZGVjbCIKICAgICAgICJgb3Zt X3VwZGF0ZV9zZXF1ZW5jZV9saWIiCiAgICAgICAiYG92bV91cGRhdGVfc2VxdWVuY2VfbGliX2Fu ZF9pdGVtIgogICAgICAgImBvdm1fd2FybmluZyIKICAgICAgICJgc3RhdGljX2R1dF9lcnJvciIK ICAgICAgICJgc3RhdGljX21lc3NhZ2UiKSBuaWwgKSkpCgooZGVmY29uc3QgdmVyaWxvZy11dm0t c3RhdGVtZW50LXJlCiAgKGV2YWwtd2hlbi1jb21waWxlCiAgICAodmVyaWxvZy1yZWdleHAtb3B0 CiAgICAgJygKICAgICAgIDs7IFN0YXRlbWVudHMKICAgICAgICJgdXZtX2FuYWx5c2lzX2ltcF9k ZWNsIgogICAgICAgImB1dm1fYmxvY2tpbmdfZ2V0X2ltcF9kZWNsIgogICAgICAgImB1dm1fYmxv Y2tpbmdfZ2V0X3BlZWtfaW1wX2RlY2wiCiAgICAgICAiYHV2bV9ibG9ja2luZ19tYXN0ZXJfaW1w X2RlY2wiCiAgICAgICAiYHV2bV9ibG9ja2luZ19wZWVrX2ltcF9kZWNsIgogICAgICAgImB1dm1f YmxvY2tpbmdfcHV0X2ltcF9kZWNsIgogICAgICAgImB1dm1fYmxvY2tpbmdfc2xhdmVfaW1wX2Rl Y2wiCiAgICAgICAiYHV2bV9ibG9ja2luZ190cmFuc3BvcnRfaW1wX2RlY2wiCiAgICAgICAiYHV2 bV9jb21wb25lbnRfcGFyYW1fdXRpbHMiCiAgICAgICAiYHV2bV9jb21wb25lbnRfcmVnaXN0cnki CiAgICAgICAiYHV2bV9jb21wb25lbnRfcmVnaXN0cnlfcGFyYW0iCiAgICAgICAiYHV2bV9jb21w b25lbnRfdXRpbHMiCiAgICAgICAiYHV2bV9jcmVhdGUiCiAgICAgICAiYHV2bV9jcmVhdGVfb24i CiAgICAgICAiYHV2bV9jcmVhdGVfc2VxIiAgICAgICAgICAgICAgICA7IFVuZG9jdW1lbnRlZCBp biAxLjEKICAgICAgICJgdXZtX2RlY2xhcmVfcF9zZXF1ZW5jZXIiCiAgICAgICAiYHV2bV9kZWNs YXJlX3NlcXVlbmNlX2xpYiIgICAgICA7IERlcHJlY2F0ZWQgaW4gMS4xCiAgICAgICAiYHV2bV9k byIKICAgICAgICJgdXZtX2RvX2NhbGxiYWNrcyIKICAgICAgICJgdXZtX2RvX2NhbGxiYWNrc19l eGl0X29uIgogICAgICAgImB1dm1fZG9fb2JqX2NhbGxiYWNrcyIKICAgICAgICJgdXZtX2RvX29i al9jYWxsYmFja3NfZXhpdF9vbiIKICAgICAgICJgdXZtX2RvX29uIgogICAgICAgImB1dm1fZG9f b25fcHJpIgogICAgICAgImB1dm1fZG9fb25fcHJpX3dpdGgiCiAgICAgICAiYHV2bV9kb19vbl93 aXRoIgogICAgICAgImB1dm1fZG9fcHJpIgogICAgICAgImB1dm1fZG9fcHJpX3dpdGgiCiAgICAg ICAiYHV2bV9kb19zZXEiICAgICAgICAgICAgICAgICAgICA7IFVuZG9jdW1lbnRlZCBpbiAxLjEK ICAgICAgICJgdXZtX2RvX3NlcV93aXRoIiAgICAgICAgICAgICAgIDsgVW5kb2N1bWVudGVkIGlu IDEuMQogICAgICAgImB1dm1fZG9fd2l0aCIKICAgICAgICJgdXZtX2Vycm9yIgogICAgICAgImB1 dm1fZXJyb3JfY29udGV4dCIKICAgICAgICJgdXZtX2ZhdGFsIgogICAgICAgImB1dm1fZmF0YWxf Y29udGV4dCIKICAgICAgICJgdXZtX2ZpZWxkX2FhX2ludF9ieXRlIgogICAgICAgImB1dm1fZmll bGRfYWFfaW50X2J5dGVfdW5zaWduZWQiCiAgICAgICAiYHV2bV9maWVsZF9hYV9pbnRfZW51bSIK ICAgICAgICJgdXZtX2ZpZWxkX2FhX2ludF9pbnQiCiAgICAgICAiYHV2bV9maWVsZF9hYV9pbnRf aW50X3Vuc2lnbmVkIgogICAgICAgImB1dm1fZmllbGRfYWFfaW50X2ludGVnZXIiCiAgICAgICAi YHV2bV9maWVsZF9hYV9pbnRfaW50ZWdlcl91bnNpZ25lZCIKICAgICAgICJgdXZtX2ZpZWxkX2Fh X2ludF9rZXkiCiAgICAgICAiYHV2bV9maWVsZF9hYV9pbnRfbG9uZ2ludCIKICAgICAgICJgdXZt X2ZpZWxkX2FhX2ludF9sb25naW50X3Vuc2lnbmVkIgogICAgICAgImB1dm1fZmllbGRfYWFfaW50 X3Nob3J0aW50IgogICAgICAgImB1dm1fZmllbGRfYWFfaW50X3Nob3J0aW50X3Vuc2lnbmVkIgog ICAgICAgImB1dm1fZmllbGRfYWFfaW50X3N0cmluZyIKICAgICAgICJgdXZtX2ZpZWxkX2FhX29i amVjdF9pbnQiCiAgICAgICAiYHV2bV9maWVsZF9hYV9vYmplY3Rfc3RyaW5nIgogICAgICAgImB1 dm1fZmllbGRfYWFfc3RyaW5nX2ludCIKICAgICAgICJgdXZtX2ZpZWxkX2FhX3N0cmluZ19zdHJp bmciCiAgICAgICAiYHV2bV9maWVsZF9hcnJheV9lbnVtIgogICAgICAgImB1dm1fZmllbGRfYXJy YXlfaW50IgogICAgICAgImB1dm1fZmllbGRfYXJyYXlfb2JqZWN0IgogICAgICAgImB1dm1fZmll bGRfYXJyYXlfc3RyaW5nIgogICAgICAgImB1dm1fZmllbGRfZW51bSIKICAgICAgICJgdXZtX2Zp ZWxkX2V2ZW50IgogICAgICAgImB1dm1fZmllbGRfaW50IgogICAgICAgImB1dm1fZmllbGRfb2Jq ZWN0IgogICAgICAgImB1dm1fZmllbGRfcXVldWVfZW51bSIKICAgICAgICJgdXZtX2ZpZWxkX3F1 ZXVlX2ludCIKICAgICAgICJgdXZtX2ZpZWxkX3F1ZXVlX29iamVjdCIKICAgICAgICJgdXZtX2Zp ZWxkX3F1ZXVlX3N0cmluZyIKICAgICAgICJgdXZtX2ZpZWxkX3JlYWwiCiAgICAgICAiYHV2bV9m aWVsZF9zYXJyYXlfZW51bSIKICAgICAgICJgdXZtX2ZpZWxkX3NhcnJheV9pbnQiCiAgICAgICAi YHV2bV9maWVsZF9zYXJyYXlfb2JqZWN0IgogICAgICAgImB1dm1fZmllbGRfc2FycmF5X3N0cmlu ZyIKICAgICAgICJgdXZtX2ZpZWxkX3N0cmluZyIKICAgICAgICJgdXZtX2ZpZWxkX3V0aWxzIgog ICAgICAgImB1dm1fZmlsZSIgICAgICAgICAgICAgIDsgVW5kb2N1bWVudGVkIGluIDEuMSwgdXNl IGBfX0ZJTEVfXwogICAgICAgImB1dm1fZ2V0X2ltcF9kZWNsIgogICAgICAgImB1dm1fZ2V0X3Bl ZWtfaW1wX2RlY2wiCiAgICAgICAiYHV2bV9pbmZvIgogICAgICAgImB1dm1faW5mb19jb250ZXh0 IgogICAgICAgImB1dm1fbGluZSIgICAgICAgICAgICAgIDsgVW5kb2N1bWVudGVkIGluIDEuMSwg dXNlIGBfX0xJTkVfXwogICAgICAgImB1dm1fbWFzdGVyX2ltcF9kZWNsIgogICAgICAgImB1dm1f bm9uX2Jsb2NraW5nX3RyYW5zcG9ydF9pbXBfZGVjbCIgICA7IERlcHJlY2F0ZWQgaW4gMS4xCiAg ICAgICAiYHV2bV9ub25ibG9ja2luZ19nZXRfaW1wX2RlY2wiCiAgICAgICAiYHV2bV9ub25ibG9j a2luZ19nZXRfcGVla19pbXBfZGVjbCIKICAgICAgICJgdXZtX25vbmJsb2NraW5nX21hc3Rlcl9p bXBfZGVjbCIKICAgICAgICJgdXZtX25vbmJsb2NraW5nX3BlZWtfaW1wX2RlY2wiCiAgICAgICAi YHV2bV9ub25ibG9ja2luZ19wdXRfaW1wX2RlY2wiCiAgICAgICAiYHV2bV9ub25ibG9ja2luZ19z bGF2ZV9pbXBfZGVjbCIKICAgICAgICJgdXZtX25vbmJsb2NraW5nX3RyYW5zcG9ydF9pbXBfZGVj bCIKICAgICAgICJgdXZtX29iamVjdF9wYXJhbV91dGlscyIKICAgICAgICJgdXZtX29iamVjdF9y ZWdpc3RyeSIKICAgICAgICJgdXZtX29iamVjdF9yZWdpc3RyeV9wYXJhbSIgICAgIDsgVW5kb2N1 bWVudGVkIGluIDEuMQogICAgICAgImB1dm1fb2JqZWN0X3V0aWxzIgogICAgICAgImB1dm1fcGFj a19hcnJheSIKICAgICAgICJgdXZtX3BhY2tfYXJyYXlOIgogICAgICAgImB1dm1fcGFja19lbnVt IgogICAgICAgImB1dm1fcGFja19lbnVtTiIKICAgICAgICJgdXZtX3BhY2tfaW50IgogICAgICAg ImB1dm1fcGFja19pbnROIgogICAgICAgImB1dm1fcGFja19xdWV1ZSIKICAgICAgICJgdXZtX3Bh Y2tfcXVldWVOIgogICAgICAgImB1dm1fcGFja19yZWFsIgogICAgICAgImB1dm1fcGFja19zYXJy YXkiCiAgICAgICAiYHV2bV9wYWNrX3NhcnJheU4iCiAgICAgICAiYHV2bV9wYWNrX3N0cmluZyIK ICAgICAgICJgdXZtX3BlZWtfaW1wX2RlY2wiCiAgICAgICAiYHV2bV9wdXRfaW1wX2RlY2wiCiAg ICAgICAiYHV2bV9yYW5kX3NlbmQiCiAgICAgICAiYHV2bV9yYW5kX3NlbmRfcHJpIgogICAgICAg ImB1dm1fcmFuZF9zZW5kX3ByaV93aXRoIgogICAgICAgImB1dm1fcmFuZF9zZW5kX3dpdGgiCiAg ICAgICAiYHV2bV9yZWNvcmRfYXR0cmlidXRlIgogICAgICAgImB1dm1fcmVjb3JkX2ZpZWxkIgog ICAgICAgImB1dm1fcmVnaXN0ZXJfY2IiCiAgICAgICAiYHV2bV9zZW5kIgogICAgICAgImB1dm1f c2VuZF9wcmkiCiAgICAgICAiYHV2bV9zZXF1ZW5jZV91dGlscyIgICAgICAgICAgICA7IERlcHJl Y2F0ZWQgaW4gMS4xCiAgICAgICAiYHV2bV9zZXRfc3VwZXJfdHlwZSIKICAgICAgICJgdXZtX3Ns YXZlX2ltcF9kZWNsIgogICAgICAgImB1dm1fdHJhbnNwb3J0X2ltcF9kZWNsIgogICAgICAgImB1 dm1fdW5wYWNrX2FycmF5IgogICAgICAgImB1dm1fdW5wYWNrX2FycmF5TiIKICAgICAgICJgdXZt X3VucGFja19lbnVtIgogICAgICAgImB1dm1fdW5wYWNrX2VudW1OIgogICAgICAgImB1dm1fdW5w YWNrX2ludCIKICAgICAgICJgdXZtX3VucGFja19pbnROIgogICAgICAgImB1dm1fdW5wYWNrX3F1 ZXVlIgogICAgICAgImB1dm1fdW5wYWNrX3F1ZXVlTiIKICAgICAgICJgdXZtX3VucGFja19yZWFs IgogICAgICAgImB1dm1fdW5wYWNrX3NhcnJheSIKICAgICAgICJgdXZtX3VucGFja19zYXJyYXlO IgogICAgICAgImB1dm1fdW5wYWNrX3N0cmluZyIKICAgICAgICJgdXZtX3VwZGF0ZV9zZXF1ZW5j ZV9saWIiICAgICAgICAgICAgICAgOyBEZXByZWNhdGVkIGluIDEuMQogICAgICAgImB1dm1fdXBk YXRlX3NlcXVlbmNlX2xpYl9hbmRfaXRlbSIgICAgICA7IERlcHJlY2F0ZWQgaW4gMS4xCiAgICAg ICAiYHV2bV93YXJuaW5nIgogICAgICAgImB1dm1fd2FybmluZ19jb250ZXh0IikgbmlsICkpKQoK Cjs7Cjs7IFJlZ3VsYXIgZXhwcmVzc2lvbnMgdXNlZCB0byBjYWxjdWxhdGUgaW5kZW50LCBldGMu Cjs7CihkZWZjb25zdCB2ZXJpbG9nLXN5bWJvbC1yZSAgICAgICJcXDxbYS16QS1aX11bYS16QS1a XzAtOS5dKlxcPiIpCjs7IFdhbnQgdG8gbWF0Y2gKOzsgYWEgOgo7OyBhYSxiYiA6Cjs7IGFbMzQ6 MzJdIDoKOzsgYSwKOzsgICBiIDoKKGRlZmNvbnN0IHZlcmlsb2ctYXNzaWdubWVudC1vcGVyYXRv ci1yZQogIChldmFsLXdoZW4tY29tcGlsZQogICAgKHZlcmlsb2ctcmVnZXhwLW9wdAogICAgICco CiAgICAgICA7OyBibG9ja2luZyBhc3NpZ25tZW50X29wZXJhdG9yCiAgICAgICAiPSIgIis9IiAi LT0iICIqPSIgIi89IiAiJT0iICImPSIgInw9IiAiXj0iICI8PD0iICI+Pj0iICI8PDw9IiAiPj4+ PSIKICAgICAgIDs7IGNvbXBhcmlzb24gKGFsc28gbm9uYmxvY2tpbmcgYXNzaWdubWVudCAiPD0i KQogICAgICAgIj09IiAiIT0iICI9PT0iICIhPT0iICI8PSIgIj49IiAiPT0/IiAiIT0/IiAiPC0+ IgogICAgICAgOzsgZXZlbnRfdHJpZ2dlcgogICAgICAgIi0+IiAiLT4+IgogICAgICAgOzsgcHJv cGVydHlfZXhwcgogICAgICAgInwtPiIgInw9PiIgIiMtIyIgIiM9IyIKICAgICAgIDs7IGRpc3Ry aWJ1dGlvbiB3ZWlnaHRpbmcKICAgICAgICI6PSIgIjovIgogICAgICAgKSAndAogICAgICAgICAp KSkKKGRlZmNvbnN0IHZlcmlsb2ctYXNzaWdubWVudC1vcGVyYXRpb24tcmUKICAoY29uY2F0CiAg IDs7ICJcXCheXFxzLSpbQS1aYS16MC05X10rXFwoXFxbXFwoW0EtWmEtejAtOV9dK1xcKVxcXVxc KSpcXHMtKlxcKSIKICAgOzsgIlxcKF5cXHMtKltePTw+Ky0qLyUmfF46XFxzLV0rW149PD4rLSov JSZ8XlxuXSo/XFwpIgogICAiXFwoXi4qP1xcKSIgIlxcQiIgdmVyaWxvZy1hc3NpZ25tZW50LW9w ZXJhdG9yLXJlICJcXEIiICkpCgooZGVmY29uc3QgdmVyaWxvZy1sYWJlbC1yZSAoY29uY2F0IHZl cmlsb2ctc3ltYm9sLXJlICJcXHMtKjpcXHMtKiIpKQooZGVmY29uc3QgdmVyaWxvZy1wcm9wZXJ0 eS1yZQogIChjb25jYXQgIlxcKCIgdmVyaWxvZy1sYWJlbC1yZSAiXFwpPyIKICAgICAgICAgIDs7 ICJcXChhc3NlcnRcXHxhc3N1bWVcXHxjb3ZlclxcKVxccy0rcHJvcGVydHlcXD4iCgkgICJcXChc XChhc3NlcnRcXHxhc3N1bWVcXHxjb3ZlclxcKVxcPlxccy0rXFw8cHJvcGVydHlcXD5cXClcXHxc XChhc3NlcnRcXCkiKSkKCihkZWZjb25zdCB2ZXJpbG9nLW5vLWluZGVudC1iZWdpbi1yZQogIChl dmFsLXdoZW4tY29tcGlsZQogICAgKHZlcmlsb2ctcmVnZXhwLXdvcmRzCiAgICAgJygiYWx3YXlz IiAiYWx3YXlzX2NvbWIiICJhbHdheXNfZmYiICJhbHdheXNfbGF0Y2giICJpbml0aWFsIiAiZmlu YWwiICA7IHByb2NlZHVyYWwgYmxvY2tzCiAgICAgICAiaWYiICJlbHNlIiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNvbmRpdGlvbmFs IHN0YXRlbWVudHMKICAgICAgICJ3aGlsZSIgImZvciIgImZvcmVhY2giICJyZXBlYXQiICJkbyIg ImZvcmV2ZXIiICkpKSkgICAgICAgICAgICAgICAgIDsgbG9vcCBzdGF0ZW1lbnRzCgooZGVmY29u c3QgdmVyaWxvZy1lbmRzLXJlCiAgOzsgUGFyZW50aGVzaXMgaW5kaWNhdGUgdHlwZSBvZiBrZXl3 b3JkIGZvdW5kCiAgKGNvbmNhdAogICAiXFwoXFw8ZWxzZVxcPlxcKVxcfCIJCTsgMQogICAiXFwo XFw8aWZcXD5cXClcXHwiCQkJOyAyCiAgICJcXChcXDxhc3NlcnRcXD5cXClcXHwiICAgICAgICAg ICAgICA7IDMKICAgIlxcKFxcPGVuZFxcPlxcKVxcfCIJCQk7IDMuMQogICAiXFwoXFw8ZW5kY2Fz ZVxcPlxcKVxcfCIJCTsgNAogICAiXFwoXFw8ZW5kZnVuY3Rpb25cXD5cXClcXHwiCQk7IDUKICAg IlxcKFxcPGVuZHRhc2tcXD5cXClcXHwiCQk7IDYKICAgIlxcKFxcPGVuZHNwZWNpZnlcXD5cXClc XHwiCQk7IDcKICAgIlxcKFxcPGVuZHRhYmxlXFw+XFwpXFx8IgkJOyA4CiAgICJcXChcXDxlbmRn ZW5lcmF0ZVxcPlxcKVxcfCIgICAgICAgICA7IDkKICAgIlxcKFxcPGpvaW5cXChfYW55XFx8X25v bmVcXCk/XFw+XFwpXFx8IiA7IDEwCiAgICJcXChcXDxlbmRjbGFzc1xcPlxcKVxcfCIgICAgICAg ICAgICA7IDExCiAgICJcXChcXDxlbmRncm91cFxcPlxcKVxcfCIgICAgICAgICAgICA7IDEyCiAg IDs7IFZNTQogICAiXFwoXFw8YHZtbV9kYXRhX21lbWJlcl9lbmRcXD5cXClcXHwiCiAgICJcXChc XDxgdm1tX2Vudl9tZW1iZXJfZW5kXFw+XFwpXFx8IgogICAiXFwoXFw8YHZtbV9zY2VuYXJpb19t ZW1iZXJfZW5kXFw+XFwpXFx8IgogICAiXFwoXFw8YHZtbV9zdWJlbnZfbWVtYmVyX2VuZFxcPlxc KVxcfCIKICAgIlxcKFxcPGB2bW1feGFjdG9yX21lbWJlcl9lbmRcXD5cXClcXHwiCiAgIDs7IE9W TQogICAiXFwoXFw8YG92bV9jb21wb25lbnRfdXRpbHNfZW5kXFw+XFwpXFx8IgogICAiXFwoXFw8 YG92bV9maWVsZF91dGlsc19lbmRcXD5cXClcXHwiCiAgICJcXChcXDxgb3ZtX29iamVjdF91dGls c19lbmRcXD5cXClcXHwiCiAgICJcXChcXDxgb3ZtX3NlcXVlbmNlX3V0aWxzX2VuZFxcPlxcKVxc fCIKICAgIlxcKFxcPGBvdm1fc2VxdWVuY2VyX3V0aWxzX2VuZFxcPlxcKSIKICAgOzsgVVZNCiAg ICJcXChcXDxgdXZtX2NvbXBvbmVudF91dGlsc19lbmRcXD5cXClcXHwiCiAgICJcXChcXDxgdXZt X2ZpZWxkX3V0aWxzX2VuZFxcPlxcKVxcfCIKICAgIlxcKFxcPGB1dm1fb2JqZWN0X3V0aWxzX2Vu ZFxcPlxcKVxcfCIKICAgIlxcKFxcPGB1dm1fc2VxdWVuY2VfdXRpbHNfZW5kXFw+XFwpXFx8Igog ICAiXFwoXFw8YHV2bV9zZXF1ZW5jZXJfdXRpbHNfZW5kXFw+XFwpIgogICApKQoKKGRlZmNvbnN0 IHZlcmlsb2ctYXV0by1lbmQtY29tbWVudC1saW5lcy1yZQogIDs7IE1hdGNoZXMgdG8gbmFtZXMg aW4gdGhpcyBsaXN0IGNhdXNlIGF1dG8tZW5kLWNvbW1lbnRpbmcKICAoY29uY2F0ICJcXCgiCgkg IHZlcmlsb2ctZGlyZWN0aXZlLXJlICJcXClcXHxcXCgiCgkgIChldmFsLXdoZW4tY29tcGlsZQoJ ICAgICh2ZXJpbG9nLXJlZ2V4cC13b3JkcwoJICAgICAnKCAiYmVnaW4iCiAgICAgICAgICAgICAg ICJjb25uZWN0bW9kdWxlIgoJCSJlbHNlIgoJCSJlbmQiCgkJImVuZGNhc2UiCgkJImVuZGNsYXNz IgoJCSJlbmRjbG9ja2luZyIKICAgICAgICAgICAgICAgImVuZGNvbm5lY3Rtb2R1bGUiCgkJImVu ZGdyb3VwIgoJCSJlbmRmdW5jdGlvbiIKCQkiZW5kbW9kdWxlIgoJCSJlbmRwcm9ncmFtIgoJCSJl bmRwcmltaXRpdmUiCgkJImVuZGludGVyZmFjZSIKCQkiZW5kcGFja2FnZSIKCQkiZW5kc2VxdWVu Y2UiCgkJImVuZHByb3BlcnR5IgoJCSJlbmRzcGVjaWZ5IgoJCSJlbmR0YWJsZSIKCQkiZW5kdGFz ayIKCQkiam9pbiIKCQkiam9pbl9hbnkiCgkJImpvaW5fbm9uZSIKCQkibW9kdWxlIgoJCSJtYWNy b21vZHVsZSIKCQkicHJpbWl0aXZlIgoJCSJpbnRlcmZhY2UiCgkJInBhY2thZ2UiKSkpCgkgICJc XCkiKSkKCjs7IE5PVEU6IHZlcmlsb2ctbGVhcC10by1oZWFkIGV4cGVjdHMgdGhhdCB2ZXJpbG9n LWVuZC1ibG9jay1yZSBhbmQKOzsgdmVyaWxvZy1lbmQtYmxvY2stb3JkZXJlZC1yZSBtYXRjaGVz IGV4YWN0bHkgdGhlIHNhbWUgc3RyaW5ncy4KKGRlZmNvbnN0IHZlcmlsb2ctZW5kLWJsb2NrLW9y ZGVyZWQtcmUKICA7OyBQYXJlbnRoZXNpcyBpbmRpY2F0ZSB0eXBlIG9mIGtleXdvcmQgZm91bmQK ICAoY29uY2F0ICJcXChcXDxlbmRjYXNlXFw+XFwpXFx8IiA7IDEKCSAgIlxcKFxcPGVuZFxcPlxc KVxcfCIgICAgIDsgMgoJICAiXFwoXFw8ZW5kIiAgICAgICAgICAgICAgOyAzLCBidXQgbm90IHVz ZWQKCSAgIlxcKCIgICAgICAgICAgICAgICAgICAgIDsgNCwgYnV0IG5vdCB1c2VkCgkgICJcXChm dW5jdGlvblxcKVxcfCIgICAgICA7IDUKCSAgIlxcKHRhc2tcXClcXHwiICAgICAgICAgIDsgNgoJ ICAiXFwobW9kdWxlXFwpXFx8IiAgICAgICAgOyA3CgkgICJcXChwcmltaXRpdmVcXClcXHwiICAg ICA7IDgKCSAgIlxcKGludGVyZmFjZVxcKVxcfCIgICAgIDsgOQoJICAiXFwocGFja2FnZVxcKVxc fCIgICAgICAgOyAxMAoJICAiXFwoY2xhc3NcXClcXHwiICAgICAgICAgOyAxMQogICAgICAgICAg IlxcKGdyb3VwXFwpXFx8IiAgICAgICAgIDsgMTIKICAgICAgICAgICJcXChwcm9ncmFtXFwpXFx8 IgkgICA7IDEzCiAgICAgICAgICAiXFwoc2VxdWVuY2VcXClcXHwiCSAgIDsgMTQKCSAgIlxcKGNs b2NraW5nXFwpXFx8IiAgICAgIDsgMTUKCSAgIlxcKHByb3BlcnR5XFwpXFx8IiAgICAgIDsgMTYK ICAgICAgICAgIlxcKGNvbm5lY3Rtb2R1bGVcXClcXHwiIDsgMTcKCSAgIlxcKVxcPlxcKSIpKQoo ZGVmY29uc3QgdmVyaWxvZy1lbmQtYmxvY2stcmUKICAoZXZhbC13aGVuLWNvbXBpbGUKICAgICh2 ZXJpbG9nLXJlZ2V4cC13b3JkcwoKICAgICAnKCJlbmQiICAgICAgOyBjbG9zZXMgYmVnaW4KICAg ICAgICJlbmRjYXNlIiAgOyBjbG9zZXMgYW55IG9mIGNhc2UsIGNhc2V4IGNhc2V6IG9yIHJhbmRj YXNlCiAgICAgICAiam9pbiIgImpvaW5fYW55IiAiam9pbl9ub25lIiAgOyBjbG9zZXMgZm9yawog ICAgICAgImVuZGNsYXNzIgogICAgICAgImVuZHRhYmxlIgogICAgICAgImVuZHNwZWNpZnkiCiAg ICAgICAiZW5kZnVuY3Rpb24iCiAgICAgICAiZW5kZ2VuZXJhdGUiCiAgICAgICAiZW5kdGFzayIK ICAgICAgICJlbmRncm91cCIKICAgICAgICJlbmRwcm9wZXJ0eSIKICAgICAgICJlbmRpbnRlcmZh Y2UiCiAgICAgICAiZW5kcGFja2FnZSIKICAgICAgICJlbmRwcm9ncmFtIgogICAgICAgImVuZHNl cXVlbmNlIgogICAgICAgImVuZGNsb2NraW5nIgogICAgICAgOzsgT1ZNCiAgICAgICAiYG92bV9j b21wb25lbnRfdXRpbHNfZW5kIgogICAgICAgImBvdm1fZmllbGRfdXRpbHNfZW5kIgogICAgICAg ImBvdm1fb2JqZWN0X3V0aWxzX2VuZCIKICAgICAgICJgb3ZtX3NlcXVlbmNlX3V0aWxzX2VuZCIK ICAgICAgICJgb3ZtX3NlcXVlbmNlcl91dGlsc19lbmQiCiAgICAgICA7OyBVVk0KICAgICAgICJg dXZtX2NvbXBvbmVudF91dGlsc19lbmQiCiAgICAgICAiYHV2bV9maWVsZF91dGlsc19lbmQiCiAg ICAgICAiYHV2bV9vYmplY3RfdXRpbHNfZW5kIgogICAgICAgImB1dm1fc2VxdWVuY2VfdXRpbHNf ZW5kIgogICAgICAgImB1dm1fc2VxdWVuY2VyX3V0aWxzX2VuZCIKICAgICAgIDs7IFZNTQogICAg ICAgImB2bW1fZGF0YV9tZW1iZXJfZW5kIgogICAgICAgImB2bW1fZW52X21lbWJlcl9lbmQiCiAg ICAgICAiYHZtbV9zY2VuYXJpb19tZW1iZXJfZW5kIgogICAgICAgImB2bW1fc3ViZW52X21lbWJl cl9lbmQiCiAgICAgICAiYHZtbV94YWN0b3JfbWVtYmVyX2VuZCIKICAgICAgICkpKSkKCgooZGVm Y29uc3QgdmVyaWxvZy1lbmRjb21tZW50LXJlYXNvbi1yZQogIDs7IFBhcmVudGhlc2lzIGluZGlj YXRlIHR5cGUgb2Yga2V5d29yZCBmb3VuZAogIChjb25jYXQKICAgIlxcKFxcPGJlZ2luXFw+XFwp XFx8IgkJICAgICAgICAgOyAxCiAgICJcXChcXDxlbHNlXFw+XFwpXFx8IgkJICAgICAgICAgOyAy CiAgICJcXChcXDxlbmRcXD5cXHMtK1xcPGVsc2VcXD5cXClcXHwiCSAgICAgICAgIDsgMwogICAi XFwoXFw8YWx3YXlzXFwoPzpfZmZcXCk/XFw+XFwoPzpbIFx0XSpAXFwpXFwpXFx8IiAgICA7IDQg KG1hdGNoZXMgYWx3YXlzIG9yIGFsd2F5c19mZiB3LyBALi4uKQogICAiXFwoXFw8YWx3YXlzXFwo PzpfY29tYlxcfF9sYXRjaFxcKT9cXD5cXClcXHwiICA7IDUgKG1hdGNoZXMgYWx3YXlzLCBhbHdh eXNfY29tYiwgYWx3YXlzX2xhdGNoIHcvbyBALi4uKQogICAiXFwoXFw8Zm9ya1xcPlxcKVxcfCIJ CQkgOyA3CiAgICJcXChcXDxpZlxcPlxcKVxcfCIKICAgdmVyaWxvZy1wcm9wZXJ0eS1yZSAiXFx8 IgogICAiXFwoXFwoIiB2ZXJpbG9nLWxhYmVsLXJlICJcXCk/XFw8YXNzZXJ0XFw+XFwpXFx8Igog ICAiXFwoXFw8Y2xvY2tpbmdcXD5cXClcXHwiCiAgICJcXChcXDx0YXNrXFw+XFwpXFx8IgogICAi XFwoXFw8ZnVuY3Rpb25cXD5cXClcXHwiCiAgICJcXChcXDxpbml0aWFsXFw+XFwpXFx8IgogICAi XFwoXFw8aW50ZXJmYWNlXFw+XFwpXFx8IgogICAiXFwoXFw8cGFja2FnZVxcPlxcKVxcfCIKICAg IlxcKFxcPGZpbmFsXFw+XFwpXFx8IgogICAiXFwoQFxcKVxcfCIKICAgIlxcKFxcPHdoaWxlXFw+ XFwpXFx8XFwoXFw8ZG9cXD5cXClcXHwiCiAgICJcXChcXDxmb3JcXChldmVyXFx8ZWFjaFxcKT9c XD5cXClcXHwiCiAgICJcXChcXDxyZXBlYXRcXD5cXClcXHxcXChcXDx3YWl0XFw+XFwpXFx8Igog ICAiIyIpKQoKKGRlZmNvbnN0IHZlcmlsb2ctbmFtZWQtYmxvY2stcmUgICJiZWdpblsgXHRdKjoi KQoKOzsgVGhlc2Ugd29yZHMgYmVnaW4gYSBibG9jayB3aGljaCBjYW4gb2NjdXIgaW5zaWRlIGEg bW9kdWxlIHdoaWNoIHNob3VsZCBiZSBpbmRlbnRlZCwKOzsgYW5kIGNsb3NlZCB3aXRoIHRoZSBy ZXNwZWN0aXZlIHdvcmQgZnJvbSB0aGUgZW5kLWJsb2NrIGxpc3QKCihkZWZjb25zdCB2ZXJpbG9n LWJlZy1ibG9jay1yZQogIChldmFsLXdoZW4tY29tcGlsZQogICAgKHZlcmlsb2ctcmVnZXhwLXdv cmRzCiAgICAgJygiYmVnaW4iCiAgICAgICAiY2FzZSIgImNhc2V4IiAiY2FzZXoiICJyYW5kY2Fz ZSIKICAgICAgICJjbG9ja2luZyIKICAgICAgICJnZW5lcmF0ZSIKICAgICAgICJmb3JrIgogICAg ICAgImZ1bmN0aW9uIgogICAgICAgInByb3BlcnR5IgogICAgICAgInNwZWNpZnkiCiAgICAgICAi dGFibGUiCiAgICAgICAidGFzayIKICAgICAgIDs7IE9WTQogICAgICAgImBvdm1fY29tcG9uZW50 X3V0aWxzX2JlZ2luIgogICAgICAgImBvdm1fY29tcG9uZW50X3BhcmFtX3V0aWxzX2JlZ2luIgog ICAgICAgImBvdm1fZmllbGRfdXRpbHNfYmVnaW4iCiAgICAgICAiYG92bV9vYmplY3RfdXRpbHNf YmVnaW4iCiAgICAgICAiYG92bV9vYmplY3RfcGFyYW1fdXRpbHNfYmVnaW4iCiAgICAgICAiYG92 bV9zZXF1ZW5jZV91dGlsc19iZWdpbiIKICAgICAgICJgb3ZtX3NlcXVlbmNlcl91dGlsc19iZWdp biIKICAgICAgIDs7IFVWTQogICAgICAgImB1dm1fY29tcG9uZW50X3V0aWxzX2JlZ2luIgogICAg ICAgImB1dm1fY29tcG9uZW50X3BhcmFtX3V0aWxzX2JlZ2luIgogICAgICAgImB1dm1fZmllbGRf dXRpbHNfYmVnaW4iCiAgICAgICAiYHV2bV9vYmplY3RfdXRpbHNfYmVnaW4iCiAgICAgICAiYHV2 bV9vYmplY3RfcGFyYW1fdXRpbHNfYmVnaW4iCiAgICAgICAiYHV2bV9zZXF1ZW5jZV91dGlsc19i ZWdpbiIKICAgICAgICJgdXZtX3NlcXVlbmNlcl91dGlsc19iZWdpbiIKICAgICAgIDs7IFZNTQog ICAgICAgImB2bW1fZGF0YV9tZW1iZXJfYmVnaW4iCiAgICAgICAiYHZtbV9lbnZfbWVtYmVyX2Jl Z2luIgogICAgICAgImB2bW1fc2NlbmFyaW9fbWVtYmVyX2JlZ2luIgogICAgICAgImB2bW1fc3Vi ZW52X21lbWJlcl9iZWdpbiIKICAgICAgICJgdm1tX3hhY3Rvcl9tZW1iZXJfYmVnaW4iCiAgICAg ICApKSkpCjs7IFRoZXNlIGFyZSB0aGUgc2FtZSB3b3JkcywgaW4gYSBzcGVjaWZpYyBvcmRlciBp biB0aGUgcmVndWxhcgo7OyBleHByZXNzaW9uIHNvIHRoYXQgbWF0Y2hpbmcgd2lsbCB3b3JrIG5p Y2VseSBmb3IKOzsgdmVyaWxvZy1mb3J3YXJkLXNleHAgYW5kIHZlcmlsb2ctY2FsYy1pbmRlbnQK KGRlZmNvbnN0IHZlcmlsb2ctYmVnLWJsb2NrLXJlLW9yZGVyZWQKICAoIGNvbmNhdCAiXFwoXFw8 YmVnaW5cXD5cXCkiCQk7MQoJICAgIlxcfFxcKFxcPHJhbmRjYXNlXFw+XFx8XFwoXFw8dW5pcXVl MD9cXHMtK1xcfHByaW9yaXR5XFxzLStcXCk/Y2FzZVt4el0/XFw+XFwpIiA7IDIsMwoJICAgIlxc fFxcKFxcKFxcPGRpc2FibGVcXD5cXHMtK1xcfFxcPHdhaXRcXD5cXHMtK1xcKT9mb3JrXFw+XFwp IiA7NCw1CgkgICAiXFx8XFwoXFw8Y2xhc3NcXD5cXCkiCQk7NgoJICAgIlxcfFxcKFxcPHRhYmxl XFw+XFwpIgkJOzcKCSAgICJcXHxcXChcXDxzcGVjaWZ5XFw+XFwpIgkJOzgKCSAgICJcXHxcXChc XDxmdW5jdGlvblxcPlxcKSIJCTs5CiAgICAgICAgICAgIlxcfFxcKFxcKD86XFw8XFwoPzp2aXJ0 dWFsXFx8cHJvdGVjdGVkXFx8c3RhdGljXFwpXFw+XFxzLStcXCkqXFw8ZnVuY3Rpb25cXD5cXCki ICA7MTAKICAgICAgICAgICAiXFx8XFwoXFw8dGFza1xcPlxcKSIgICAgICAgICAgICAgICAgOzEx CiAgICAgICAgICAgIlxcfFxcKFxcKD86XFw8XFwoPzp2aXJ0dWFsXFx8cHJvdGVjdGVkXFx8c3Rh dGljXFwpXFw+XFxzLStcXCkqXFw8dGFza1xcPlxcKSIgICAgICA7MTIKICAgICAgICAgICAiXFx8 XFwoXFw8Z2VuZXJhdGVcXD5cXCkiICAgICAgICAgICAgOzEzCiAgICAgICAgICAgIlxcfFxcKFxc PGNvdmVyZ3JvdXBcXD5cXCkiICAgICAgICAgIDsxNAogICAgICAgICAgICJcXHxcXChcXCg/Olxc KD86XFw8Y292ZXJcXD5cXHMtK1xcKVxcfFxcKD86XFw8YXNzZXJ0XFw+XFxzLStcXClcXCkqXFw8 cHJvcGVydHlcXD5cXCkiIDsxNQogICAgICAgICAgICJcXHxcXChcXDxcXCg/OnJhbmRcXCk/c2Vx dWVuY2VcXD5cXCkiIDsxNgogICAgICAgICAgICJcXHxcXChcXDxjbG9ja2luZ1xcPlxcKSIgICAg ICAgICAgICAgIDsxNwogICAgICAgICAgICJcXHxcXChcXDxgW291XXZtX1thLXpfXStfYmVnaW5c XD5cXCkiIDsxOAogICAgICAgICAgICJcXHxcXChcXDxgdm1tX1thLXpfXStfbWVtYmVyX2JlZ2lu XFw+XFwpIgoJICAgOzsKCSAgICkpCgooZGVmY29uc3QgdmVyaWxvZy1lbmQtYmxvY2stb3JkZXJl ZC1ycnkKICBbICJcXChcXDxiZWdpblxcPlxcKVxcfFxcKFxcPGVuZFxcPlxcKVxcfFxcKFxcPGVu ZGNhc2VcXD5cXClcXHxcXChcXDxqb2luXFwoX2FueVxcfF9ub25lXFwpP1xcPlxcKSIKICAgICJc XChcXDxyYW5kY2FzZVxcPlxcfFxcPGNhc2VbeHpdP1xcPlxcKVxcfFxcKFxcPGVuZGNhc2VcXD5c XCkiCiAgICAiXFwoXFw8Zm9ya1xcPlxcKVxcfFxcKFxcPGpvaW5cXChfYW55XFx8X25vbmVcXCk/ XFw+XFwpIgogICAgIlxcKFxcPGNsYXNzXFw+XFwpXFx8XFwoXFw8ZW5kY2xhc3NcXD5cXCkiCiAg ICAiXFwoXFw8dGFibGVcXD5cXClcXHxcXChcXDxlbmR0YWJsZVxcPlxcKSIKICAgICJcXChcXDxz cGVjaWZ5XFw+XFwpXFx8XFwoXFw8ZW5kc3BlY2lmeVxcPlxcKSIKICAgICJcXChcXDxmdW5jdGlv blxcPlxcKVxcfFxcKFxcPGVuZGZ1bmN0aW9uXFw+XFwpIgogICAgIlxcKFxcPGdlbmVyYXRlXFw+ XFwpXFx8XFwoXFw8ZW5kZ2VuZXJhdGVcXD5cXCkiCiAgICAiXFwoXFw8dGFza1xcPlxcKVxcfFxc KFxcPGVuZHRhc2tcXD5cXCkiCiAgICAiXFwoXFw8Y292ZXJncm91cFxcPlxcKVxcfFxcKFxcPGVu ZGdyb3VwXFw+XFwpIgogICAgIlxcKFxcPHByb3BlcnR5XFw+XFwpXFx8XFwoXFw8ZW5kcHJvcGVy dHlcXD5cXCkiCiAgICAiXFwoXFw8XFwocmFuZFxcKT9zZXF1ZW5jZVxcPlxcKVxcfFxcKFxcPGVu ZHNlcXVlbmNlXFw+XFwpIgogICAgIlxcKFxcPGNsb2NraW5nXFw+XFwpXFx8XFwoXFw8ZW5kY2xv Y2tpbmdcXD5cXCkiCiAgICBdICkKCihkZWZjb25zdCB2ZXJpbG9nLW5hbWVhYmxlLWl0ZW0tcmUK ICAoZXZhbC13aGVuLWNvbXBpbGUKICAgICh2ZXJpbG9nLXJlZ2V4cC13b3JkcwogICAgICcoImJl Z2luIgogICAgICAgImZvcmsiCiAgICAgICAiam9pbiIgImpvaW5fYW55IiAiam9pbl9ub25lIgog ICAgICAgImVuZCIKICAgICAgICJlbmRjYXNlIgogICAgICAgImVuZGNoZWNrZXIiCiAgICAgICAi ZW5kY2xhc3MiCiAgICAgICAiZW5kY2xvY2tpbmciCiAgICAgICAiZW5kY29uZmlnIgogICAgICAg ImVuZGNvbm5lY3Rtb2R1bGUiCiAgICAgICAiZW5kZnVuY3Rpb24iCiAgICAgICAiZW5kZ2VuZXJh dGUiCiAgICAgICAiZW5kZ3JvdXAiCiAgICAgICAiZW5kbW9kdWxlIgogICAgICAgImVuZHByaW1p dGl2ZSIKICAgICAgICJlbmRpbnRlcmZhY2UiCiAgICAgICAiZW5kcGFja2FnZSIKICAgICAgICJl bmRwcm9ncmFtIgogICAgICAgImVuZHByb3BlcnR5IgogICAgICAgImVuZHNlcXVlbmNlIgogICAg ICAgImVuZHNwZWNpZnkiCiAgICAgICAiZW5kdGFibGUiCiAgICAgICAiZW5kdGFzayIgKQogICAg ICkpKQoKKGRlZmNvbnN0IHZlcmlsb2ctZGVjbGFyYXRpb24tb3BlbmVyCiAgKGV2YWwtd2hlbi1j b21waWxlCiAgICAodmVyaWxvZy1yZWdleHAtd29yZHMKICAgICAnKCJjb25uZWN0bW9kdWxlIiAi bW9kdWxlIiAiYmVnaW4iICJ0YXNrIiAiZnVuY3Rpb24iKSkpKQoKKGRlZmNvbnN0IHZlcmlsb2ct ZGVjbGFyYXRpb24tcHJlZml4LXJlCiAgKGV2YWwtd2hlbi1jb21waWxlCiAgICAodmVyaWxvZy1y ZWdleHAtd29yZHMKICAgICAnKAogICAgICAgOzsgcG9ydCBkaXJlY3Rpb24KICAgICAgICJpbm91 dCIgImlucHV0IiAib3V0cHV0IiAicmVmIgogICAgICAgOzsgY2hhbmdlYWJsZW5lc3MKICAgICAg ICJjb25zdCIgInN0YXRpYyIgInByb3RlY3RlZCIgImxvY2FsIgogICAgICAgOzsgcGFyYW1ldGVy cwogICAgICAgImxvY2FscGFyYW0iICJwYXJhbWV0ZXIiICJ2YXIiCiAgICAgICA7OyB0eXBlIGNy ZWF0aW9uCiAgICAgICAidHlwZWRlZiIKICAgICAgIDs7IHJhbmRvbW5lc3MKICAgICAgICJyYW5k IgogICAgICAgKSkpKQooZGVmY29uc3QgdmVyaWxvZy1kZWNsYXJhdGlvbi1jb3JlLXJlCiAgKGV2 YWwtd2hlbi1jb21waWxlCiAgICAodmVyaWxvZy1yZWdleHAtd29yZHMKICAgICAnKAogICAgICAg OzsgcG9ydCBkaXJlY3Rpb24gKGJ5IHRoZW1zZWx2ZXMpCiAgICAgICAiaW5vdXQiICJpbnB1dCIg Im91dHB1dCIKICAgICAgIDs7IGludGVnZXJfYXRvbV90eXBlCiAgICAgICAiYnl0ZSIgInNob3J0 aW50IiAiaW50IiAibG9uZ2ludCIgImludGVnZXIiICJ0aW1lIgogICAgICAgOzsgaW50ZWdlcl92 ZWN0b3JfdHlwZQogICAgICAgImJpdCIgImxvZ2ljIiAicmVnIgogICAgICAgOzsgbm9uX2ludGVn ZXJfdHlwZQogICAgICAgInNob3J0cmVhbCIgInJlYWwiICJyZWFsdGltZSIKICAgICAgIDs7IG5l dF90eXBlCiAgICAgICAic3VwcGx5MCIgInN1cHBseTEiICJ0cmkiICJ0cmlhbmQiICJ0cmlvciIg InRyaXJlZyIgInRyaTAiICJ0cmkxIiAidXdpcmUiICJ3aXJlIiAid2FuZCIgIndvciIKICAgICAg IDs7IHBhcmFtZXRlcnMKICAgICAgICJsb2NhbHBhcmFtIiAicGFyYW1ldGVyIiAidmFyIgogICAg ICAgOzsgbWlzYwogICAgICAgInN0cmluZyIgImV2ZW50IiAiY2hhbmRsZSIgInZpcnR1YWwiICJl bnVtIiAiZ2VudmFyIgogICAgICAgInN0cnVjdCIgInVuaW9uIgogICAgICAgOzsgYnVpbHRpbiBj bGFzc2VzCiAgICAgICAibWFpbGJveCIgInNlbWFwaG9yZSIKICAgICAgICkpKSkKKGRlZmNvbnN0 IHZlcmlsb2ctZGVjbGFyYXRpb24tcmUKICAoY29uY2F0ICJcXCgiIHZlcmlsb2ctZGVjbGFyYXRp b24tcHJlZml4LXJlICJcXHMtKlxcKT8iIHZlcmlsb2ctZGVjbGFyYXRpb24tY29yZS1yZSkpCihk ZWZjb25zdCB2ZXJpbG9nLXJhbmdlLXJlICJcXChcXFtbXl1dKlxcXVxccy0qXFwpKyIpCihkZWZj b25zdCB2ZXJpbG9nLW9wdGlvbmFsLXNpZ25lZC1yZSAiXFxzLSpcXChcXCh1blxcKT9zaWduZWRc XCk/IikKKGRlZmNvbnN0IHZlcmlsb2ctb3B0aW9uYWwtc2lnbmVkLXJhbmdlLXJlCiAgKGNvbmNh dAogICAiXFxzLSpcXChcXDxcXChyZWdcXHx3aXJlXFwpXFw+XFxzLSpcXCk/XFwoXFw8XFwodW5c XCk/c2lnbmVkXFw+XFxzLSpcXCk/XFwoIiB2ZXJpbG9nLXJhbmdlLXJlICJcXCk/IikpCihkZWZj b25zdCB2ZXJpbG9nLW1hY3JvZXhwLXJlICJgXFxzdysiKQoKKGRlZmNvbnN0IHZlcmlsb2ctZGVs YXktcmUgIiNcXHMtKlxcKFxcKFswLTlfXStcXCgncz9baGR4Ym9dWzAtOWEtZkEtRl94el0rXFwp P1xcKVxcfFxcKChbXigpXSopXFwpXFx8XFwoXFxzdytcXClcXCkiKQooZGVmY29uc3QgdmVyaWxv Zy1kZWNsYXJhdGlvbi1yZS0yLW5vLW1hY3JvCiAgKGNvbmNhdCAiXFxzLSoiIHZlcmlsb2ctZGVj bGFyYXRpb24tcmUKICAgICAgICAgICJcXHMtKlxcKFxcKCIgdmVyaWxvZy1vcHRpb25hbC1zaWdu ZWQtcmFuZ2UtcmUgIlxcKVxcfFxcKCIgdmVyaWxvZy1kZWxheS1yZSAiXFwpIgogICAgICAgICAg IlxcKSIpKQooZGVmY29uc3QgdmVyaWxvZy1kZWNsYXJhdGlvbi1yZS0yLW1hY3JvCiAgKGNvbmNh dCAiXFxzLSoiIHZlcmlsb2ctZGVjbGFyYXRpb24tcmUKICAgICAgICAgICJcXHMtKlxcKFxcKCIg dmVyaWxvZy1vcHRpb25hbC1zaWduZWQtcmFuZ2UtcmUgIlxcKVxcfFxcKCIgdmVyaWxvZy1kZWxh eS1yZSAiXFwpIgogICAgICAgICAgIlxcfFxcKCIgdmVyaWxvZy1tYWNyb2V4cC1yZSAiXFwpIgog ICAgICAgICAgIlxcKSIpKQooZGVmY29uc3QgdmVyaWxvZy1kZWNsYXJhdGlvbi1yZS0xLW1hY3Jv CiAgKGNvbmNhdCAiXiIgdmVyaWxvZy1kZWNsYXJhdGlvbi1yZS0yLW1hY3JvKSkKCihkZWZjb25z dCB2ZXJpbG9nLWRlY2xhcmF0aW9uLXJlLTEtbm8tbWFjcm8gKGNvbmNhdCAiXiIgdmVyaWxvZy1k ZWNsYXJhdGlvbi1yZS0yLW5vLW1hY3JvKSkKCihkZWZjb25zdCB2ZXJpbG9nLWRlZnVuLXJlCiAg KGV2YWwtd2hlbi1jb21waWxlICh2ZXJpbG9nLXJlZ2V4cC13b3JkcyAnKCJtYWNyb21vZHVsZSIg ImNvbm5lY3Rtb2R1bGUiICJtb2R1bGUiICJjbGFzcyIgInByb2dyYW0iICJpbnRlcmZhY2UiICJw YWNrYWdlIiAicHJpbWl0aXZlIiAiY29uZmlnIikpKSkKKGRlZmNvbnN0IHZlcmlsb2ctZW5kLWRl ZnVuLXJlCiAgKGV2YWwtd2hlbi1jb21waWxlICh2ZXJpbG9nLXJlZ2V4cC13b3JkcyAnKCJlbmRj b25uZWN0bW9kdWxlIiAiZW5kbW9kdWxlIiAiZW5kY2xhc3MiICJlbmRwcm9ncmFtIiAiZW5kaW50 ZXJmYWNlIiAiZW5kcGFja2FnZSIgImVuZHByaW1pdGl2ZSIgImVuZGNvbmZpZyIpKSkpCihkZWZj b25zdCB2ZXJpbG9nLXplcm8taW5kZW50LXJlCiAgKGNvbmNhdCB2ZXJpbG9nLWRlZnVuLXJlICJc XHwiIHZlcmlsb2ctZW5kLWRlZnVuLXJlKSkKKGRlZmNvbnN0IHZlcmlsb2ctaW5zdC1jb21tZW50 LXJlCiAgKGV2YWwtd2hlbi1jb21waWxlICh2ZXJpbG9nLXJlZ2V4cC13b3JkcyAnKCJPdXRwdXRz IiAiSW5vdXRzIiAiSW5wdXRzIiAiSW50ZXJmYWNlcyIgIkludGVyZmFjZWQiKSkpKQoKKGRlZmNv bnN0IHZlcmlsb2ctYmVoYXZpb3JhbC1ibG9jay1iZWctcmUKICAoZXZhbC13aGVuLWNvbXBpbGUg KHZlcmlsb2ctcmVnZXhwLXdvcmRzICcoImluaXRpYWwiICJmaW5hbCIgImFsd2F5cyIgImFsd2F5 c19jb21iIiAiYWx3YXlzX2xhdGNoIiAiYWx3YXlzX2ZmIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iICJ0YXNrIikpKSkKKGRlZmNvbnN0IHZl cmlsb2ctY292ZXJwb2ludC1yZSAiXFx3K1xccy0qOlxccy0qXFwoY292ZXJwb2ludFxcfGNyb3Nz XFx8Y29uc3RyYWludFxcKSIpCihkZWZjb25zdCB2ZXJpbG9nLWluLWNvbnN0cmFpbnQtcmUgIDsg a2V5d29yZHMgbGVnYWwgaW4gY29uc3RyYWludCBibG9ja3Mgc3RhcnRpbmcgYSBzdGF0ZW1lbnQv YmxvY2sKICAoZXZhbC13aGVuLWNvbXBpbGUgKHZlcmlsb2ctcmVnZXhwLXdvcmRzICcoImlmIiAi ZWxzZSIgInNvbHZlIiAiZm9yZWFjaCIpKSkpCgooZGVmY29uc3QgdmVyaWxvZy1pbmRlbnQtcmUK ICAoZXZhbC13aGVuLWNvbXBpbGUKICAgICh2ZXJpbG9nLXJlZ2V4cC13b3JkcwogICAgICcoCiAg ICAgICAieyIKICAgICAgICJhbHdheXMiICJhbHdheXNfbGF0Y2giICJhbHdheXNfZmYiICJhbHdh eXNfY29tYiIKICAgICAgICJiZWdpbiIgImVuZCIKICAgICAgIDs7ICJ1bmlxdWUiICJwcmlvcml0 eSIKICAgICAgICJjYXNlIiAiY2FzZXgiICJjYXNleiIgInJhbmRjYXNlIiAiZW5kY2FzZSIKICAg ICAgICJjbGFzcyIgImVuZGNsYXNzIgogICAgICAgImNsb2NraW5nIiAiZW5kY2xvY2tpbmciCiAg ICAgICAiY29uZmlnIiAiZW5kY29uZmlnIgogICAgICAgImNvdmVyZ3JvdXAiICJlbmRncm91cCIK ICAgICAgICJmb3JrIiAiam9pbiIgImpvaW5fYW55IiAiam9pbl9ub25lIgogICAgICAgImZ1bmN0 aW9uIiAiZW5kZnVuY3Rpb24iCiAgICAgICAiZmluYWwiCiAgICAgICAiZ2VuZXJhdGUiICJlbmRn ZW5lcmF0ZSIKICAgICAgICJpbml0aWFsIgogICAgICAgImludGVyZmFjZSIgImVuZGludGVyZmFj ZSIKICAgICAgICJjb25uZWN0bW9kdWxlIiAibW9kdWxlIiAibWFjcm9tb2R1bGUiICJlbmRjb25u ZWN0bW9kdWxlIiAiZW5kbW9kdWxlIgogICAgICAgInBhY2thZ2UiICJlbmRwYWNrYWdlIgogICAg ICAgInByaW1pdGl2ZSIgImVuZHByaW1pdGl2ZSIKICAgICAgICJwcm9ncmFtIiAiZW5kcHJvZ3Jh bSIKICAgICAgICJwcm9wZXJ0eSIgImVuZHByb3BlcnR5IgogICAgICAgInNlcXVlbmNlIiAicmFu ZHNlcXVlbmNlIiAiZW5kc2VxdWVuY2UiCiAgICAgICAic3BlY2lmeSIgImVuZHNwZWNpZnkiCiAg ICAgICAidGFibGUiICJlbmR0YWJsZSIKICAgICAgICJ0YXNrIiAiZW5kdGFzayIKICAgICAgICJ2 aXJ0dWFsIgogICAgICAgImBjYXNlIgogICAgICAgImBkZWZhdWx0IgogICAgICAgImBkZWZpbmUi ICJgdW5kZWYiCiAgICAgICAiYGlmIiAiYGlmZGVmIiAiYGlmbmRlZiIgImBlbHNlIiAiYGVsc2lm IiAiYGVuZGlmIgogICAgICAgImB3aGlsZSIgImBlbmR3aGlsZSIKICAgICAgICJgZm9yIiAiYGVu ZGZvciIKICAgICAgICJgZm9ybWF0IgogICAgICAgImBpbmNsdWRlIgogICAgICAgImBsZXQiCiAg ICAgICAiYHByb3RlY3QiICJgZW5kcHJvdGVjdCIKICAgICAgICJgc3dpdGNoIiAiYGVuZHN3aXRj aCIKICAgICAgICJgdGltZXNjYWxlIgogICAgICAgImB0aW1lX3NjYWxlIgogICAgICAgOzsgT1ZN IEJlZ2luIHRva2VucwogICAgICAgImBvdm1fY29tcG9uZW50X3V0aWxzX2JlZ2luIgogICAgICAg ImBvdm1fY29tcG9uZW50X3BhcmFtX3V0aWxzX2JlZ2luIgogICAgICAgImBvdm1fZmllbGRfdXRp bHNfYmVnaW4iCiAgICAgICAiYG92bV9vYmplY3RfdXRpbHNfYmVnaW4iCiAgICAgICAiYG92bV9v YmplY3RfcGFyYW1fdXRpbHNfYmVnaW4iCiAgICAgICAiYG92bV9zZXF1ZW5jZV91dGlsc19iZWdp biIKICAgICAgICJgb3ZtX3NlcXVlbmNlcl91dGlsc19iZWdpbiIKICAgICAgIDs7IE9WTSBFbmQg dG9rZW5zCiAgICAgICAiYG92bV9jb21wb25lbnRfdXRpbHNfZW5kIgogICAgICAgImBvdm1fZmll bGRfdXRpbHNfZW5kIgogICAgICAgImBvdm1fb2JqZWN0X3V0aWxzX2VuZCIKICAgICAgICJgb3Zt X3NlcXVlbmNlX3V0aWxzX2VuZCIKICAgICAgICJgb3ZtX3NlcXVlbmNlcl91dGlsc19lbmQiCiAg ICAgICA7OyBVVk0gQmVnaW4gdG9rZW5zCiAgICAgICAiYHV2bV9jb21wb25lbnRfdXRpbHNfYmVn aW4iCiAgICAgICAiYHV2bV9jb21wb25lbnRfcGFyYW1fdXRpbHNfYmVnaW4iCiAgICAgICAiYHV2 bV9maWVsZF91dGlsc19iZWdpbiIKICAgICAgICJgdXZtX29iamVjdF91dGlsc19iZWdpbiIKICAg ICAgICJgdXZtX29iamVjdF9wYXJhbV91dGlsc19iZWdpbiIKICAgICAgICJgdXZtX3NlcXVlbmNl X3V0aWxzX2JlZ2luIgogICAgICAgImB1dm1fc2VxdWVuY2VyX3V0aWxzX2JlZ2luIgogICAgICAg OzsgVVZNIEVuZCB0b2tlbnMKICAgICAgICJgdXZtX2NvbXBvbmVudF91dGlsc19lbmQiICAgICAg IDsgVHlwbyBpbiBzcGVjLCBpdCdzIG5vdCB1dm1fY29tcG9uZW50X2VuZAogICAgICAgImB1dm1f ZmllbGRfdXRpbHNfZW5kIgogICAgICAgImB1dm1fb2JqZWN0X3V0aWxzX2VuZCIKICAgICAgICJg dXZtX3NlcXVlbmNlX3V0aWxzX2VuZCIKICAgICAgICJgdXZtX3NlcXVlbmNlcl91dGlsc19lbmQi CiAgICAgICA7OyBWTU0gQmVnaW4gdG9rZW5zCiAgICAgICAiYHZtbV9kYXRhX21lbWJlcl9iZWdp biIKICAgICAgICJgdm1tX2Vudl9tZW1iZXJfYmVnaW4iCiAgICAgICAiYHZtbV9zY2VuYXJpb19t ZW1iZXJfYmVnaW4iCiAgICAgICAiYHZtbV9zdWJlbnZfbWVtYmVyX2JlZ2luIgogICAgICAgImB2 bW1feGFjdG9yX21lbWJlcl9iZWdpbiIKICAgICAgIDs7IFZNTSBFbmQgdG9rZW5zCiAgICAgICAi YHZtbV9kYXRhX21lbWJlcl9lbmQiCiAgICAgICAiYHZtbV9lbnZfbWVtYmVyX2VuZCIKICAgICAg ICJgdm1tX3NjZW5hcmlvX21lbWJlcl9lbmQiCiAgICAgICAiYHZtbV9zdWJlbnZfbWVtYmVyX2Vu ZCIKICAgICAgICJgdm1tX3hhY3Rvcl9tZW1iZXJfZW5kIgogICAgICAgKSkpKQoKKGRlZmNvbnN0 IHZlcmlsb2ctZGVmdW4tbGV2ZWwtbm90LWdlbmVyYXRlLXJlCiAgKGV2YWwtd2hlbi1jb21waWxl CiAgICAodmVyaWxvZy1yZWdleHAtd29yZHMKICAgICAnKCAiY29ubmVjdG1vZHVsZSIgIm1vZHVs ZSIgIm1hY3JvbW9kdWxlIiAicHJpbWl0aXZlIiAiY2xhc3MiICJwcm9ncmFtIgogICAgICAgICJp bnRlcmZhY2UiICJwYWNrYWdlIiAiY29uZmlnIikpKSkKCihkZWZjb25zdCB2ZXJpbG9nLWRlZnVu LWxldmVsLXJlCiAgKGV2YWwtd2hlbi1jb21waWxlCiAgICAodmVyaWxvZy1yZWdleHAtd29yZHMK ICAgICAoYXBwZW5kCiAgICAgICcoICJjb25uZWN0bW9kdWxlIiAibW9kdWxlIiAibWFjcm9tb2R1 bGUiICJwcmltaXRpdmUiICJjbGFzcyIgInByb2dyYW0iCiAgICAgICAgICJpbnRlcmZhY2UiICJw YWNrYWdlIiAiY29uZmlnIikKICAgICAgJyggImluaXRpYWwiICJmaW5hbCIgImFsd2F5cyIgImFs d2F5c19jb21iIiAiYWx3YXlzX2ZmIgogICAgICAgICAiYWx3YXlzX2xhdGNoIiAiZW5kdGFzayIg ImVuZGZ1bmN0aW9uIiApKSkpKQoKKGRlZmNvbnN0IHZlcmlsb2ctZGVmdW4tbGV2ZWwtZ2VuZXJh dGUtb25seS1yZQogIChldmFsLXdoZW4tY29tcGlsZQogICAgKHZlcmlsb2ctcmVnZXhwLXdvcmRz CiAgICAgJyggImluaXRpYWwiICJmaW5hbCIgImFsd2F5cyIgImFsd2F5c19jb21iIiAiYWx3YXlz X2ZmIgogICAgICAgICJhbHdheXNfbGF0Y2giICJlbmR0YXNrIiAiZW5kZnVuY3Rpb24iICkpKSkK CihkZWZjb25zdCB2ZXJpbG9nLWNwcC1sZXZlbC1yZQogIChldmFsLXdoZW4tY29tcGlsZQogICAg KHZlcmlsb2ctcmVnZXhwLXdvcmRzCiAgICAgJygKICAgICAgICJlbmRjb25uZWN0bW9kdWxlIiAi ZW5kbW9kdWxlIiAiZW5kcHJpbWl0aXZlIiAiZW5kaW50ZXJmYWNlIiAiZW5kcGFja2FnZSIgImVu ZHByb2dyYW0iICJlbmRjbGFzcyIKICAgICAgICkpKSkKCihkZWZjb25zdCB2ZXJpbG9nLWRwaS1p bXBvcnQtZXhwb3J0LXJlCiAgKGV2YWwtd2hlbi1jb21waWxlCiAgICAiXFwoXFw8XFwoaW1wb3J0 XFx8ZXhwb3J0XFwpXFw+XFxzLStcIkRQSVxcKC1DXFwpP1wiXFxzLStcXChcXDxcXChjb250ZXh0 XFx8cHVyZVxcKVxcPlxccy0rXFwpP1xcKFtBLVphLXpfXVtBLVphLXowLTlfXSpcXHMtKj1cXHMt KlxcKT9cXDxcXChmdW5jdGlvblxcfHRhc2tcXClcXD5cXCkiCiAgICApKQoKKGRlZmNvbnN0IHZl cmlsb2ctZGVmYXVsdC1jbG9ja2luZy1yZSAiXFw8ZGVmYXVsdFxccy0rY2xvY2tpbmdcXHMtK1tB LVphLXpfXVtBLVphLXowLTlfXSpcXHMtKjsiKQooZGVmY29uc3QgdmVyaWxvZy1kaXNhYmxlLWZv cmstcmUgIlxcKGRpc2FibGVcXHx3YWl0XFwpXFxzLStmb3JrXFw+IikKKGRlZmNvbnN0IHZlcmls b2ctZXh0ZW5kZWQtY2FzZS1yZSAiXFwoXFwodW5pcXVlMD9cXHMtK1xcfHByaW9yaXR5XFxzLStc XCk/Y2FzZVt4el0/XFx8cmFuZGNhc2VcXCkiKQooZGVmY29uc3QgdmVyaWxvZy1leHRlbmRlZC1j b21wbGV0ZS1yZQogIDs7IHZlcmlsb2ctYmVnLW9mLXN0YXRlbWVudCBhbHNvIGxvb2tzIGJhY2t3 YXJkIG9uZSB0b2tlbiB0byBleHRlbmQgdGhpcyBtYXRjaAogIChjb25jYXQgIlxcKFxcKFxcPGV4 dGVyblxccy0rXFx8XFw8XFwoXFw8XFwocHVyZVxcfGNvbnRleHRcXClcXD5cXHMtK1xcKT92aXJ0 dWFsXFxzLStcXHxcXDxwcm90ZWN0ZWRcXHMtK1xcfFxcPHN0YXRpY1xccy0rXFwpKlxcKFxcPGZ1 bmN0aW9uXFw+XFx8XFw8dGFza1xcPlxcKVxcKSIKCSAgIlxcfFxcKFxcKFxcPHR5cGVkZWZcXD5c XHMtK1xcKSpcXChcXDxzdHJ1Y3RcXD5cXHxcXDx1bmlvblxcPlxcfFxcPGNsYXNzXFw+XFwpXFwp IgoJICAiXFx8XFwoXFwoXFw8XFwoaW1wb3J0XFx8ZXhwb3J0XFwpXFw+XFxzLStcXCk/XFwoXCJE UElcXCgtQ1xcKT9cIlxccy0rXFwpP1xcKFxcPFxcKHB1cmVcXHxjb250ZXh0XFwpXFw+XFxzLStc XCk/XFwoW0EtWmEtel9dW0EtWmEtejAtOV9dKlxccy0qPVxccy0qXFwpP1xcKGZ1bmN0aW9uXFw+ XFx8dGFza1xcPlxcKVxcKSIKCSAgIlxcfCIgdmVyaWxvZy1leHRlbmRlZC1jYXNlLXJlICkpCihk ZWZjb25zdCB2ZXJpbG9nLWJhc2ljLWNvbXBsZXRlLXJlCiAgKGV2YWwtd2hlbi1jb21waWxlCiAg ICAodmVyaWxvZy1yZWdleHAtd29yZHMKICAgICAnKAogICAgICAgImFsd2F5cyIgImFzc2lnbiIg ImFsd2F5c19sYXRjaCIgImFsd2F5c19mZiIgImFsd2F5c19jb21iIiAiY29ubmVjdG1vZHVsZSIg ImNvbnN0cmFpbnQiCiAgICAgICAiaW1wb3J0IiAiaW5pdGlhbCIgImZpbmFsIiAibW9kdWxlIiAi bWFjcm9tb2R1bGUiICJyZXBlYXQiICJyYW5kY2FzZSIgIndoaWxlIgogICAgICAgImlmIiAiZm9y IiAiZm9yZXZlciIgImZvcmVhY2giICJlbHNlIiAicGFyYW1ldGVyIiAiZG8iICJsb2NhbHBhcmFt IiAiYXNzZXJ0IgogICAgICAgKSkpKQooZGVmY29uc3QgdmVyaWxvZy1jb21wbGV0ZS1yZWcKICAo Y29uY2F0CiAgIHZlcmlsb2ctZXh0ZW5kZWQtY29tcGxldGUtcmUgIlxcfFxcKCIgdmVyaWxvZy1i YXNpYy1jb21wbGV0ZS1yZSAiXFwpIikpCgooZGVmY29uc3QgdmVyaWxvZy1lbmQtc3RhdGVtZW50 LXJlCiAgKGNvbmNhdCAiXFwoIiB2ZXJpbG9nLWJlZy1ibG9jay1yZSAiXFwpXFx8XFwoIgoJICB2 ZXJpbG9nLWVuZC1ibG9jay1yZSAiXFwpIikpCgooZGVmY29uc3QgdmVyaWxvZy1lbmRjYXNlLXJl CiAgKGNvbmNhdCB2ZXJpbG9nLWV4dGVuZGVkLWNhc2UtcmUgIlxcfCIKCSAgIlxcKGVuZGNhc2Vc XClcXHwiCgkgIHZlcmlsb2ctZGVmdW4tcmUKCSAgKSkKCihkZWZjb25zdCB2ZXJpbG9nLWV4Y2x1 ZGUtc3RyLXN0YXJ0ICIvKiAtLS0tLVxcLy0tLS0tIEVYQ0xVREVEIC0tLS0tXFwvLS0tLS0iCiAg IlN0cmluZyB1c2VkIHRvIG1hcmsgYmVnaW5uaW5nIG9mIGV4Y2x1ZGVkIHRleHQuIikKKGRlZmNv bnN0IHZlcmlsb2ctZXhjbHVkZS1zdHItZW5kICIgLS0tLS0vXFwtLS0tLSBFWENMVURFRCAtLS0t LS9cXC0tLS0tICovIgogICJTdHJpbmcgdXNlZCB0byBtYXJrIGVuZCBvZiBleGNsdWRlZCB0ZXh0 LiIpCihkZWZjb25zdCB2ZXJpbG9nLXByZXByb2Nlc3Nvci1yZQogIChldmFsLXdoZW4tY29tcGls ZQogICAgKGNvbmNhdAogICAgIDs7IHNpbmdsZSB3b3JkcwogICAgICJcXCg/OiIKICAgICAodmVy aWxvZy1yZWdleHAtd29yZHMKICAgICAgJygiYF9fRklMRV9fIgoJImBfX0xJTkVfXyIKCSJgY2Vs bGRlZmluZSIKCSJgZWxzZSIKCSJgZW5kX2tleXdvcmRzIgoJImBlbmRjZWxsZGVmaW5lIgoJImBl bmRpZiIKCSJgbm91bmNvbm5lY3RlZF9kcml2ZSIKCSJgcmVzZXRhbGwiCgkiYHVuY29ubmVjdGVk X2RyaXZlIgoJImB1bmRlZmluZWFsbCIpKQogICAgICJcXClcXHxcXCg/OiIKICAgICA7OyB0d28g d29yZHM6IGkuZS4gYGlmZGVmIERFRklORQogICAgICJcXDxcXChgZWxzaWZcXHxgaWZuP2RlZlxc fGB1bmRlZlxcfGBkZWZhdWx0X25ldHR5cGVcXHxgYmVnaW5fa2V5d29yZHNcXClcXD5cXHMtIgog ICAgICJcXClcXHxcXCg/OiIKICAgICA7OyBgbGluZSBudW1iZXIgImZpbGVuYW1lIiBsZXZlbAog ICAgICJcXDxcXChgbGluZVxcKVxcPlxccy0rWzAtOV0rXFxzLStcIlteXCJdK1wiXFxzLStbMDEy XSIKICAgICAiXFwpXFx8XFwoPzoiCiAgICAgOztgaW5jbHVkZSAiZmlsZSIgb3IgYGluY2x1ZGUg PGZpbGU+CiAgICAgIlxcPFxcKGBpbmNsdWRlXFwpXFw+XFxzLStcXCg/OlwiW15cIl0rXCJcXHw8 W14+XSs+XFwpIgogICAgICJcXClcXHxcXCg/OiIKICAgICA7OyBgcHJhZ21hIDxzdHVmZj4gKG5v IG1lbnRpb24gaW4gSUVFRSAxODAwLTIwMTIgdGhhdCBwcmFnbWEgY2FuIHNwYW4gbXVsdGlwbGUg bGluZXMKICAgICAiXFw8XFwoYHByYWdtYVxcKVxcPlxccy0rLiskIgogICAgICJcXClcXHxcXCg/ OiIKICAgICA7OyBgdGltZXNjYWxlIHRpbWVfdW5pdCAvIHRpbWVfcHJlY2lzaW9uCiAgICAgIlxc PFxcKGB0aW1lc2NhbGVcXClcXD5cXHMtKzEwXFx7MCwyXFx9XFxzLSpbbXVucGZdP3NcXHMtKi9c XHMtKjEwXFx7MCwyXFx9XFxzLSpbbXVucGZdP3MiCiAgICAgIlxcKVxcfFxcKD86IgogICAgIDs7 IGBkZWZpbmUgYW5kIGBpZiBjYW4gc3BhbiBtdWx0aXBsZSBsaW5lcyBpZiBsaW5lIGVuZHMgaW4g J1wnLgogICAgIDs7IE5PVEU6IGBpZiBpcyBub3QgSUVFRSAxODAwLTIwMTIuCiAgICAgOzsgZnJv bSBodHRwczovL3d3dy5lbWFjc3dpa2kub3JnL2VtYWNzL011bHRpbGluZVJlZ2V4cAogICAgIChj b25jYXQgIlxcPFxcKGBkZWZpbmVcXHxgaWZcXClcXD4iICA7IGRpcmVjdGl2ZQogICAgICAgICAg ICAgIlxccy0rIiAgOyBzZXBhcmF0b3IKICAgICAgICAgICAgICJcXCg/Oi4qP1xcKD86XG4uKlxc KSo/XFwpIiAgOyBkZWZpbml0aW9uOiB0byBlbmQgb2YgbGluZSwgdGhlbiBtYXliZSBtb3JlIGxp bmVzIChleGNsdWRlcyBhbnkgdHJhaWxpbmcgXG4pCiAgICAgICAgICAgICAiXFwoPzpcblxccy0q XG5cXHxcXCdcXCkiKSAgOyBibGFuayBsaW5lIG9yIEVPRgogICAgICJcXClcXHxcXCg/OiIKICAg ICA7OyBgPG1hY3JvPigpIDogaS5lLiBgdXZtX2luZm8oYSxiLGMpIG9yIGFueSBvdGhlciBwcmUt ZGVmaW5lZCBtYWNybwogICAgIDs7IFNpbmNlIHBhcmFtZXRlcnMgaW5zaWRlIHRoZSBtYWNybyBj YW4gaGF2ZSBwYXJlbnRoZXNlcywgYW5kCiAgICAgOzsgdGhlIG1hY3JvIGNhbiBzcGFuIG11bHRp cGxlIGxpbmVzLCBqdXN0IGxvb2sgZm9yIHRoZSBvcGVuaW5nCiAgICAgOzsgcGFyZW50aGVzZXMg YW5kIHRoZW4gY29udGludWUgdG8gdGhlIGVuZCBvZiB0aGUgZmlyc3QKICAgICA7OyBub24tZXNj YXBlZCBFT0wKICAgICAoY29uY2F0ICJcXDxgXFx3K1xcPlxccy0qKCIKICAgICAgICAgICAgICJc XCg/Oi4qP1xcKD86XG4uKlxcKSo/XFwpIiAgOyBkZWZpbml0aW9uOiB0byBlbmQgb2YgbGluZSwg dGhlbiBtYXliZSBtb3JlIGxpbmVzIChleGNsdWRlcyBhbnkgdHJhaWxpbmcgXG4pCiAgICAgICAg ICAgICAiXFwoPzpcblxccy0qXG5cXHxcXCdcXCkiKSAgIDsgYmxhbmsgbGluZSBvciBFT0YKICAg ICAiXFwpIgogICAgICkpKQoKKGRlZmNvbnN0IHZlcmlsb2cta2V5d29yZHMKICAoYXBwZW5kIHZl cmlsb2ctY29tcGlsZXItZGlyZWN0aXZlcwogICAgICAgICAgJygKICAgICAgICAgICAgImFmdGVy IiAiYWxpYXMiICJhbHdheXMiICJhbHdheXNfY29tYiIgImFsd2F5c19mZiIgImFsd2F5c19sYXRj aCIgImFuZCIKICAgICAgICAgICAgImFzc2VydCIgImFzc2lnbiIgImFzc3VtZSIgImF1dG9tYXRp YyIgImJlZm9yZSIgImJlZ2luIiAiYmluZCIKICAgICAgICAgICAgImJpbnMiICJiaW5zb2YiICJi aXQiICJicmVhayIgImJ1ZiIgImJ1ZmlmMCIgImJ1ZmlmMSIgImJ5dGUiCiAgICAgICAgICAgICJj YXNlIiAiY2FzZXgiICJjYXNleiIgImNlbGwiICJjaGFuZGxlIiAiY2xhc3MiICJjbG9ja2luZyIg ImNtb3MiCiAgICAgICAgICAgICJjb25maWciICJjb25zdCIgImNvbnN0cmFpbnQiICJjb250ZXh0 IiAiY29udGludWUiICJjb3ZlciIKICAgICAgICAgICAgImNvdmVyZ3JvdXAiICJjb3ZlcnBvaW50 IiAiY3Jvc3MiICJkZWFzc2lnbiIgImRlZmF1bHQiICJkZWZwYXJhbSIKICAgICAgICAgICAgImRl c2lnbiIgImRpc2FibGUiICJkaXN0IiAiZG8iICJlZGdlIiAiZWxzZSIgImVuZCIgImVuZGNhc2Ui CiAgICAgICAgICAgICJlbmRjbGFzcyIgImVuZGNsb2NraW5nIiAiZW5kY29uZmlnIiAiZW5kZnVu Y3Rpb24iICJlbmRnZW5lcmF0ZSIKICAgICAgICAgICAgImVuZGdyb3VwIiAiZW5kaW50ZXJmYWNl IiAiZW5kbW9kdWxlIiAiZW5kcGFja2FnZSIgImVuZHByaW1pdGl2ZSIKICAgICAgICAgICAgImVu ZHByb2dyYW0iICJlbmRwcm9wZXJ0eSIgImVuZHNwZWNpZnkiICJlbmRzZXF1ZW5jZSIgImVuZHRh YmxlIgogICAgICAgICAgICAiZW5kdGFzayIgImVudW0iICJldmVudCIgImV4cGVjdCIgImV4cG9y dCIgImV4dGVuZHMiICJleHRlcm4iCiAgICAgICAgICAgICJmaW5hbCIgImZpcnN0X21hdGNoIiAi Zm9yIiAiZm9yY2UiICJmb3JlYWNoIiAiZm9yZXZlciIgImZvcmsiCiAgICAgICAgICAgICJmb3Jr am9pbiIgImZ1bmN0aW9uIiAiZ2VuZXJhdGUiICJnZW52YXIiICJoaWdoejAiICJoaWdoejEiICJp ZiIKICAgICAgICAgICAgImlmZiIgImlmbm9uZSIgImlnbm9yZV9iaW5zIiAiaWxsZWdhbF9iaW5z IiAiaW1wb3J0IiAiaW5jZGlyIgogICAgICAgICAgICAiaW5jbHVkZSIgImluaXRpYWwiICJpbm91 dCIgImlucHV0IiAiaW5zaWRlIiAiaW5zdGFuY2UiICJpbnQiCiAgICAgICAgICAgICJpbnRlZ2Vy IiAiaW50ZXJmYWNlIiAiaW50ZXJzZWN0IiAiam9pbiIgImpvaW5fYW55IiAiam9pbl9ub25lIgog ICAgICAgICAgICAibGFyZ2UiICJsaWJsaXN0IiAibGlicmFyeSIgImxvY2FsIiAibG9jYWxwYXJh bSIgImxvZ2ljIgogICAgICAgICAgICAibG9uZ2ludCIgIm1hY3JvbW9kdWxlIiAibWFpbGJveCIg Im1hdGNoZXMiICJtZWRpdW0iICJtb2Rwb3J0IiAibW9kdWxlIgogICAgICAgICAgICAibmFuZCIg Im5lZ2VkZ2UiICJuZXciICJubW9zIiAibm9yIiAibm9zaG93Y2FuY2VsbGVkIiAibm90IgogICAg ICAgICAgICAibm90aWYwIiAibm90aWYxIiAibnVsbCIgIm9yIiAib3V0cHV0IiAicGFja2FnZSIg InBhY2tlZCIKICAgICAgICAgICAgInBhcmFtZXRlciIgInBtb3MiICJwb3NlZGdlIiAicHJpbWl0 aXZlIiAicHJpb3JpdHkiICJwcm9ncmFtIgogICAgICAgICAgICAicHJvcGVydHkiICJwcm90ZWN0 ZWQiICJwdWxsMCIgInB1bGwxIiAicHVsbGRvd24iICJwdWxsdXAiCiAgICAgICAgICAgICJwdWxz ZXN0eWxlX29uZXZlbnQiICJwdWxzZXN0eWxlX29uZGV0ZWN0IiAicHVyZSIgInJhbmQiICJyYW5k YyIKICAgICAgICAgICAgInJhbmRjYXNlIiAicmFuZHNlcXVlbmNlIiAicmNtb3MiICJyZWFsIiAi cmVhbHRpbWUiICJyZWYiICJyZWciCiAgICAgICAgICAgICJyZWxlYXNlIiAicmVwZWF0IiAicmV0 dXJuIiAicm5tb3MiICJycG1vcyIgInJ0cmFuIiAicnRyYW5pZjAiCiAgICAgICAgICAgICJydHJh bmlmMSIgInNjYWxhcmVkIiAic2VtYXBob3JlIiAic2VxdWVuY2UiICJzaG9ydGludCIgInNob3J0 cmVhbCIKICAgICAgICAgICAgInNob3djYW5jZWxsZWQiICJzaWduZWQiICJzbWFsbCIgInNvbHZl IiAic3BlY2lmeSIgInNwZWNwYXJhbSIKICAgICAgICAgICAgInN0YXRpYyIgInN0cmluZyIgInN0 cm9uZzAiICJzdHJvbmcxIiAic3RydWN0IiAic3VwZXIiICJzdXBwbHkwIgogICAgICAgICAgICAi c3VwcGx5MSIgInRhYmxlIiAidGFnZ2VkIiAidGFzayIgInRoaXMiICJ0aHJvdWdob3V0IiAidGlt ZSIKICAgICAgICAgICAgInRpbWVwcmVjaXNpb24iICJ0aW1ldW5pdCIgInRyYW4iICJ0cmFuaWYw IiAidHJhbmlmMSIgInRyaSIKICAgICAgICAgICAgInRyaTAiICJ0cmkxIiAidHJpYW5kIiAidHJp b3IiICJ0cmlyZWciICJ0eXBlIiAidHlwZWRlZiIgInVuaW9uIgogICAgICAgICAgICAidW5pcXVl IiAidW5zaWduZWQiICJ1c2UiICJ1d2lyZSIgInZhciIgInZlY3RvcmVkIiAidmlydHVhbCIgInZv aWQiCiAgICAgICAgICAgICJ3YWl0IiAid2FpdF9vcmRlciIgIndhbmQiICJ3ZWFrMCIgIndlYWsx IiAid2hpbGUiICJ3aWxkY2FyZCIKICAgICAgICAgICAgIndpcmUiICJ3aXRoIiAid2l0aGluIiAi d29yIiAieG5vciIgInhvciIKICAgICAgICAgICAgOzsgMTgwMC0yMDA5CiAgICAgICAgICAgICJh Y2NlcHRfb24iICJjaGVja2VyIiAiZW5kY2hlY2tlciIgImV2ZW50dWFsbHkiICJnbG9iYWwiICJp bXBsaWVzIgogICAgICAgICAgICAibGV0IiAibmV4dHRpbWUiICJyZWplY3Rfb24iICJyZXN0cmlj dCIgInNfYWx3YXlzIiAic19ldmVudHVhbGx5IgogICAgICAgICAgICAic19uZXh0dGltZSIgInNf dW50aWwiICJzX3VudGlsX3dpdGgiICJzdHJvbmciICJzeW5jX2FjY2VwdF9vbiIKICAgICAgICAg ICAgInN5bmNfcmVqZWN0X29uIiAidW5pcXVlMCIgInVudGlsIiAidW50aWxfd2l0aCIgInVudHlw ZWQiICJ3ZWFrIgogICAgICAgICAgICA7OyAxODAwLTIwMTIKICAgICAgICAgICAgImltcGxlbWVu dHMiICJpbnRlcmNvbm5lY3QiICJuZXR0eXBlIiAic29mdCIKICAgICAgICAgICAgOzsgQU1TCiAg ICAgICAgICAgICJjb25uZWN0bW9kdWxlIiAiZW5kY29ubmVjdG1vZHVsZSIKICAgICAgICAgICAg KSkKICAiTGlzdCBvZiBWZXJpbG9nIGtleXdvcmRzLiIpCgooZGVmY29uc3QgdmVyaWxvZy1jb21t ZW50LXN0YXJ0LXJlZ2V4cCAiLy9cXHwvXFwqIgogICJEdWFsIGNvbW1lbnQgdmFsdWUgZm9yIGBj b21tZW50LXN0YXJ0LXJlZ2V4cCcuIikKCihkZWZ2YXIgdmVyaWxvZy1tb2RlLXN5bnRheC10YWJs ZQogIChsZXQgKCh0YWJsZSAobWFrZS1zeW50YXgtdGFibGUpKSkKICAgIDs7IFBvcHVsYXRlIHRo ZSBzeW50YXggVEFCTEUuCiAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/XFwgIlxcIiB0YWJsZSkK ICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID8rICIuIiB0YWJsZSkKICAgIChtb2RpZnktc3ludGF4 LWVudHJ5ID8tICIuIiB0YWJsZSkKICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID89ICIuIiB0YWJs ZSkKICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID8lICIuIiB0YWJsZSkKICAgIChtb2RpZnktc3lu dGF4LWVudHJ5ID88ICIuIiB0YWJsZSkKICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID8+ICIuIiB0 YWJsZSkKICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID8mICIuIiB0YWJsZSkKICAgIChtb2RpZnkt c3ludGF4LWVudHJ5ID98ICIuIiB0YWJsZSkKICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID9gICJ3 IiB0YWJsZSkgIDsgYCBpcyBwYXJ0IG9mIGRlZmluaXRpb24gc3ltYm9scyBpbiBWZXJpbG9nCiAg ICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/XyAidyIgdGFibGUpCiAgICAobW9kaWZ5LXN5bnRheC1l bnRyeSA/XCcgIi4iIHRhYmxlKQoKICAgIDs7IFNldCB1cCBUQUJMRSB0byBoYW5kbGUgYmxvY2sg YW5kIGxpbmUgc3R5bGUgY29tbWVudHMuCiAgICAoaWYgKGZlYXR1cmVwICd4ZW1hY3MpCgkocHJv Z24KCSAgOzsgWEVtYWNzIChmb3JtZXJseSBMdWNpZCkgaGFzIHRoZSBiZXN0IGltcGxlbWVudGF0 aW9uCgkgIChtb2RpZnktc3ludGF4LWVudHJ5ID8vICAiLiAxNDU2IiB0YWJsZSkKCSAgKG1vZGlm eS1zeW50YXgtZW50cnkgPyogICIuIDIzIiAgIHRhYmxlKQoJICAobW9kaWZ5LXN5bnRheC1lbnRy eSA/XG4gIj4gYiIgICAgdGFibGUpKQogICAgICA7OyBFbWFjcyBkb2VzIHRoaW5ncyBkaWZmZXJl bnRseSwgYnV0IHdlIGNhbiB3b3JrIHdpdGggaXQKICAgICAgKG1vZGlmeS1zeW50YXgtZW50cnkg Py8gICIuIDEyNGIiIHRhYmxlKQogICAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/KiAgIi4gMjMi ICAgdGFibGUpCiAgICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID9cbiAiPiBiIiAgICB0YWJsZSkp CiAgICB0YWJsZSkKICAiU3ludGF4IHRhYmxlIHVzZWQgaW4gVmVyaWxvZyBtb2RlIGJ1ZmZlcnMu IikKCihkZWZ2YXIgdmVyaWxvZy1mb250LWxvY2sta2V5d29yZHMgbmlsCiAgIkRlZmF1bHQgaGln aGxpZ2h0aW5nIGZvciBWZXJpbG9nIG1vZGUuIikKCihkZWZ2YXIgdmVyaWxvZy1mb250LWxvY2st a2V5d29yZHMtMSBuaWwKICAiU3ViZHVlZCBsZXZlbCBoaWdobGlnaHRpbmcgZm9yIFZlcmlsb2cg bW9kZS4iKQoKKGRlZnZhciB2ZXJpbG9nLWZvbnQtbG9jay1rZXl3b3Jkcy0yIG5pbAogICJNZWRp dW0gbGV2ZWwgaGlnaGxpZ2h0aW5nIGZvciBWZXJpbG9nIG1vZGUuClNlZSBhbHNvIGB2ZXJpbG9n LWZvbnQtbG9jay1leHRyYS10eXBlcycuIikKCihkZWZ2YXIgdmVyaWxvZy1mb250LWxvY2sta2V5 d29yZHMtMyBuaWwKICAiR2F1ZHkgbGV2ZWwgaGlnaGxpZ2h0aW5nIGZvciBWZXJpbG9nIG1vZGUu ClNlZSBhbHNvIGB2ZXJpbG9nLWZvbnQtbG9jay1leHRyYS10eXBlcycuIikKCihkZWZ2YXIgdmVy aWxvZy1mb250LWxvY2stdHJhbnNsYXRlLW9mZi1mYWNlCiAgJ3Zlcmlsb2ctZm9udC1sb2NrLXRy YW5zbGF0ZS1vZmYtZmFjZQogICJGb250IHRvIHVzZSBmb3IgdHJhbnNsYXRlZCBvZmYgcmVnaW9u cy4iKQooZGVmZmFjZSB2ZXJpbG9nLWZvbnQtbG9jay10cmFuc2xhdGUtb2ZmLWZhY2UKICAnKCgo KGNsYXNzIGNvbG9yKQogICAgICAoYmFja2dyb3VuZCBsaWdodCkpCiAgICAgKDpiYWNrZ3JvdW5k ICJncmF5OTAiIDppdGFsaWMgdCApKQogICAgKCgoY2xhc3MgY29sb3IpCiAgICAgIChiYWNrZ3Jv dW5kIGRhcmspKQogICAgICg6YmFja2dyb3VuZCAiZ3JheTEwIiA6aXRhbGljIHQgKSkKICAgICgo KGNsYXNzIGdyYXlzY2FsZSkgKGJhY2tncm91bmQgbGlnaHQpKQogICAgICg6Zm9yZWdyb3VuZCAi RGltR3JheSIgOml0YWxpYyB0KSkKICAgICgoKGNsYXNzIGdyYXlzY2FsZSkgKGJhY2tncm91bmQg ZGFyaykpCiAgICAgKDpmb3JlZ3JvdW5kICJMaWdodEdyYXkiIDppdGFsaWMgdCkpCiAgICAodCAo Oml0YWxpYyB0KSkpCiAgIkZvbnQgbG9jayBtb2RlIGZhY2UgdXNlZCB0byBiYWNrZ3JvdW5kIGhp Z2hsaWdodCB0cmFuc2xhdGUtb2ZmIHJlZ2lvbnMuIgogIDpncm91cCAnZm9udC1sb2NrLWhpZ2hs aWdodGluZy1mYWNlcykKCihkZWZ2YXIgdmVyaWxvZy1mb250LWxvY2stcDE4MDAtZmFjZQogICd2 ZXJpbG9nLWZvbnQtbG9jay1wMTgwMC1mYWNlCiAgIk9ic29sZXRlIGZvbnQgdG8gdXNlIGZvciBw MTgwMCBrZXl3b3Jkcy4iKQooZGVmZmFjZSB2ZXJpbG9nLWZvbnQtbG9jay1wMTgwMC1mYWNlCiAg JygoKChjbGFzcyBjb2xvcikKICAgICAgKGJhY2tncm91bmQgbGlnaHQpKQogICAgICg6Zm9yZWdy b3VuZCAiRGFya09yYW5nZTMiIDpib2xkIHQgKSkKICAgICgoKGNsYXNzIGNvbG9yKQogICAgICAo YmFja2dyb3VuZCBkYXJrKSkKICAgICAoOmZvcmVncm91bmQgIm9yYW5nZTEiIDpib2xkIHQgKSkK ICAgICh0ICg6aXRhbGljIHQpKSkKICAiRm9udCBsb2NrIG1vZGUgZmFjZSB1c2VkIHRvIGhpZ2hs aWdodCBQMTgwMCBrZXl3b3Jkcy4iCiAgOmdyb3VwICdmb250LWxvY2staGlnaGxpZ2h0aW5nLWZh Y2VzKQoobWFrZS1vYnNvbGV0ZS12YXJpYWJsZSAndmVyaWxvZy1mb250LWxvY2stcDE4MDAtZmFj ZSBuaWwgIjI3LjEiKQoKKGRlZnZhciB2ZXJpbG9nLWZvbnQtbG9jay1hbXMtZmFjZQogICd2ZXJp bG9nLWZvbnQtbG9jay1hbXMtZmFjZQogICJGb250IHRvIHVzZSBmb3IgQW5hbG9nL01peGVkIFNp Z25hbCBrZXl3b3Jkcy4iKQooZGVmZmFjZSB2ZXJpbG9nLWZvbnQtbG9jay1hbXMtZmFjZQogICco KCgoY2xhc3MgY29sb3IpCiAgICAgIChiYWNrZ3JvdW5kIGxpZ2h0KSkKICAgICAoOmZvcmVncm91 bmQgIlB1cnBsZSIgOmJvbGQgdCApKQogICAgKCgoY2xhc3MgY29sb3IpCiAgICAgIChiYWNrZ3Jv dW5kIGRhcmspKQogICAgICg6Zm9yZWdyb3VuZCAib3JhbmdlMSIgOmJvbGQgdCApKQogICAgKHQg KDppdGFsaWMgdCkpKQogICJGb250IGxvY2sgbW9kZSBmYWNlIHVzZWQgdG8gaGlnaGxpZ2h0IEFN UyBrZXl3b3Jkcy4iCiAgOmdyb3VwICdmb250LWxvY2staGlnaGxpZ2h0aW5nLWZhY2VzKQoKKGRl ZnZhciB2ZXJpbG9nLWZvbnQtbG9jay1ncm91cGluZy1rZXl3b3Jkcy1mYWNlCiAgJ3Zlcmlsb2ct Zm9udC1sb2NrLWdyb3VwaW5nLWtleXdvcmRzLWZhY2UKICAiRm9udCB0byB1c2UgZm9yIFZlcmls b2cgR3JvdXBpbmcgS2V5d29yZHMgKHN1Y2ggYXMgYmVnaW4uLmVuZCkuIikKKGRlZmZhY2UgdmVy aWxvZy1mb250LWxvY2stZ3JvdXBpbmcta2V5d29yZHMtZmFjZQogICcoKCgoY2xhc3MgY29sb3Ip CiAgICAgIChiYWNrZ3JvdW5kIGxpZ2h0KSkKICAgICAoOmZvcmVncm91bmQgIlB1cnBsZSIgOmJv bGQgdCApKQogICAgKCgoY2xhc3MgY29sb3IpCiAgICAgIChiYWNrZ3JvdW5kIGRhcmspKQogICAg ICg6Zm9yZWdyb3VuZCAib3JhbmdlMSIgOmJvbGQgdCApKQogICAgKHQgKDppdGFsaWMgdCkpKQog ICJGb250IGxvY2sgbW9kZSBmYWNlIHVzZWQgdG8gaGlnaGxpZ2h0IHZlcmlsb2cgZ3JvdXBpbmcg a2V5d29yZHMuIgogIDpncm91cCAnZm9udC1sb2NrLWhpZ2hsaWdodGluZy1mYWNlcykKCihsZXQq ICgodmVyaWxvZy10eXBlLWZvbnQta2V5d29yZHMKICAgICAgICAoZXZhbC13aGVuLWNvbXBpbGUK ICAgICAgICAgICh2ZXJpbG9nLXJlZ2V4cC1vcHQKICAgICAgICAgICAnKCJhbmQiICJidWYiICJi dWZpZjAiICJidWZpZjEiICJjbW9zIiAiZGVmcGFyYW0iICJldmVudCIKICAgICAgICAgICAgICJn ZW52YXIiICJoaWdoejAiICJoaWdoejEiICJpbm91dCIgImlucHV0IiAiaW50ZWdlciIKICAgICAg ICAgICAgICJsb2NhbHBhcmFtIiAibWFpbGJveCIgIm5hbmQiICJubW9zIiAibm9yIiAibm90IiAi bm90aWYwIgogICAgICAgICAgICAgIm5vdGlmMSIgIm9yIiAib3V0cHV0IiAicGFyYW1ldGVyIiAi cG1vcyIgInB1bGwwIiAicHVsbDEiCiAgICAgICAgICAgICAicHVsbGRvd24iICJwdWxsdXAiICJy Y21vcyIgInJlYWwiICJyZWFsdGltZSIgInJlZyIgInJubW9zIgogICAgICAgICAgICAgInJwbW9z IiAicnRyYW4iICJydHJhbmlmMCIgInJ0cmFuaWYxIiAic2VtYXBob3JlIiAic2lnbmVkIgogICAg ICAgICAgICAgInNwZWNwYXJhbSIgInN0cm9uZzAiICJzdHJvbmcxIiAic3VwcGx5IiAic3VwcGx5 MCIgInN1cHBseTEiCiAgICAgICAgICAgICAidGltZSIgInRyYW4iICJ0cmFuaWYwIiAidHJhbmlm MSIgInRyaSIgInRyaTAiICJ0cmkxIiAidHJpYW5kIgogICAgICAgICAgICAgInRyaW9yIiAidHJp cmVnIiAidW5zaWduZWQiICJ1d2lyZSIgInZlY3RvcmVkIiAid2FuZCIgIndlYWswIgogICAgICAg ICAgICAgIndlYWsxIiAid2lyZSIgIndvciIgInhub3IiICJ4b3IiCiAgICAgICAgICAgICA7OyAx ODAwLTIwMDUKICAgICAgICAgICAgICJiaXQiICJieXRlIiAiY2hhbmRsZSIgImNvbnN0IiAiZW51 bSIgImludCIgImxvZ2ljIiAibG9uZ2ludCIKICAgICAgICAgICAgICJwYWNrZWQiICJyZWYiICJz aG9ydGludCIgInNob3J0cmVhbCIgInN0YXRpYyIgInN0cmluZyIKICAgICAgICAgICAgICJzdHJ1 Y3QiICJ0eXBlIiAidHlwZWRlZiIgInVuaW9uIiAidmFyIgogICAgICAgICAgICAgOzsgMTgwMC0y MDA5CiAgICAgICAgICAgICA7OyAxODAwLTIwMTIKICAgICAgICAgICAgICJpbnRlcmNvbm5lY3Qi ICJuZXR0eXBlIiApIG5pbCkpKQoKICAgICAgICh2ZXJpbG9nLXByYWdtYS1rZXl3b3JkcwogICAg ICAgIChldmFsLXdoZW4tY29tcGlsZQogICAgICAgICAgKHZlcmlsb2ctcmVnZXhwLW9wdAogICAg ICAgICAgICcoInN1cmVmaXJlIiAiMGluIiAiYXV0byIgImxlZGEiICJydGxfc3ludGhlc2lzIiAi c3lub3BzeXMiCiAgICAgICAgICAgICAidmVyaWxpbnQiICkgbmlsKSkpCgogICAgICAgKHZlcmls b2ctYW1zLWtleXdvcmRzCiAgICAgICAgKGV2YWwtd2hlbi1jb21waWxlCiAgICAgICAgICAodmVy aWxvZy1yZWdleHAtb3B0CiAgICAgICAgICAgJygiYWJvdmUiICJhYnMiICJhYnNkZWxheSIgImFi c3RvbCIgImFjX3N0aW0iICJhY2Nlc3MiICJhY29zIgogICAgICAgICAgICAgImFjb3NoIiAiYWxp YXNwYXJhbSIgImFuYWxvZyIgImFuYWx5c2lzIiAiYXNpbiIgImFzaW5oIiAiYXRhbiIKICAgICAg ICAgICAgICJhdGFuMiIgImF0YW5oIiAiYnJhbmNoIiAiY2VpbCIgImNvbm5lY3QiICJjb25uZWN0 bW9kdWxlIgogICAgICAgICAgICAgImNvbm5lY3RydWxlcyIgImNvbnRpbnVvdXMiICJjb3MiICJj b3NoIiAiZGR0IiAiZGR0X25hdHVyZSIKICAgICAgICAgICAgICJkZHgiICJkaXNjaXBsaW5lIiAi ZGlzY3JldGUiICJkb21haW4iICJkcml2ZXJfdXBkYXRlIgogICAgICAgICAgICAgImVuZGNvbm5l Y3Rtb2R1bGUiICJlbmRjb25uZWN0cnVsZXMiICJlbmRkaXNjaXBsaW5lIiAiZW5kbmF0dXJlIiAi ZW5kcGFyYW1zZXQiCiAgICAgICAgICAgICAiZXhjbHVkZSIgImV4cCIgImZpbmFsX3N0ZXAiICJm bGlja2VyX25vaXNlIiAiZmxvb3IiICJmbG93IgogICAgICAgICAgICAgImZyb20iICJncm91bmQi ICJoeXBvdCIgImlkdCIgImlkdF9uYXR1cmUiICJpZHRtb2QiICJpbmYiCiAgICAgICAgICAgICAi aW5pdGlhbF9zdGVwIiAibGFwbGFjZV9uZCIgImxhcGxhY2VfbnAiICJsYXBsYWNlX3pkIgogICAg ICAgICAgICAgImxhcGxhY2VfenAiICJsYXN0X2Nyb3NzaW5nIiAibGltZXhwIiAibG4iICJsb2ci ICJtYXgiCiAgICAgICAgICAgICAibWVyZ2VkIiAibWluIiAibmF0dXJlIiAibmV0X3Jlc29sdXRp b24iICJub2lzZV90YWJsZSIKICAgICAgICAgICAgICJwYXJhbXNldCIgInBvdGVudGlhbCIgInBv dyIgInJlc29sdmV0byIgInNpbiIgInNpbmgiICJzbGV3IgogICAgICAgICAgICAgInNwbGl0IiAi c3FydCIgInRhbiIgInRhbmgiICJ0aW1lciIgInRyYW5zaXRpb24iICJ1bml0cyIKICAgICAgICAg ICAgICJ3aGl0ZV9ub2lzZSIgIndyZWFsIiAiemlfbmQiICJ6aV9ucCIgInppX3pkIiAiemlfenAi CiAgICAgICAgICAgICA7OyBFeGNsdWRlZCBBTVMga2V5d29yZHM6ICJhc3NlcnQiICJjcm9zcyIg InN0cmluZyIKICAgICAgICAgICAgICkgbmlsKSkpCgogICAgICAgKHZlcmlsb2ctZm9udC1nZW5l cmFsLWtleXdvcmRzCiAgICAgICAgKGV2YWwtd2hlbi1jb21waWxlCiAgICAgICAgICAodmVyaWxv Zy1yZWdleHAtb3B0CiAgICAgICAgICAgJygiYWx3YXlzIiAiYXNzaWduIiAiYXV0b21hdGljIiAi Y2FzZSIgImNhc2V4IiAiY2FzZXoiICJjZWxsIgogICAgICAgICAgICAgImNvbmZpZyIgImRlYXNz aWduIiAiZGVmYXVsdCIgImRlc2lnbiIgImRpc2FibGUiICJlZGdlIiAiZWxzZSIKICAgICAgICAg ICAgICJlbmRjYXNlIiAiZW5kY29uZmlnIiAiZW5kZnVuY3Rpb24iICJlbmRnZW5lcmF0ZSIgImVu ZG1vZHVsZSIKICAgICAgICAgICAgICJlbmRwcmltaXRpdmUiICJlbmRzcGVjaWZ5IiAiZW5kdGFi bGUiICJlbmR0YXNrIiAiZm9yIiAiZm9yY2UiCiAgICAgICAgICAgICAiZm9yZXZlciIgImZvcmsi ICJmdW5jdGlvbiIgImdlbmVyYXRlIiAiaWYiICJpZm5vbmUiICJpbmNkaXIiCiAgICAgICAgICAg ICAiaW5jbHVkZSIgImluaXRpYWwiICJpbnN0YW5jZSIgImpvaW4iICJsYXJnZSIgImxpYmxpc3Qi CiAgICAgICAgICAgICAibGlicmFyeSIgIm1hY3JvbW9kdWxlIiAibWVkaXVtIiAibW9kdWxlIiAi bmVnZWRnZSIKICAgICAgICAgICAgICJub3Nob3djYW5jZWxsZWQiICJwb3NlZGdlIiAicHJpbWl0 aXZlIiAicHVsc2VzdHlsZV9vbmRldGVjdCIKICAgICAgICAgICAgICJwdWxzZXN0eWxlX29uZXZl bnQiICJyZWxlYXNlIiAicmVwZWF0IiAic2NhbGFyZWQiCiAgICAgICAgICAgICAic2hvd2NhbmNl bGxlZCIgInNtYWxsIiAic3BlY2lmeSIgInN0cmVuZ3RoIiAidGFibGUiICJ0YXNrIgogICAgICAg ICAgICAgInVzZSIgIndhaXQiICJ3aGlsZSIKICAgICAgICAgICAgIDs7IDE4MDAtMjAwNQogICAg ICAgICAgICAgImFsaWFzIiAiYWx3YXlzX2NvbWIiICJhbHdheXNfZmYiICJhbHdheXNfbGF0Y2gi ICJhc3NlcnQiCiAgICAgICAgICAgICAiYXNzdW1lIiAiYmVmb3JlIiAiYmluZCIgImJpbnMiICJi aW5zb2YiICJicmVhayIgImNsYXNzIgogICAgICAgICAgICAgImNsb2NraW5nIiAiY29uc3RyYWlu dCIgImNvbnRleHQiICJjb250aW51ZSIgImNvdmVyIgogICAgICAgICAgICAgImNvdmVyZ3JvdXAi ICJjb3ZlcnBvaW50IiAiY3Jvc3MiICJkaXN0IiAiZG8iICJlbmRjbGFzcyIKICAgICAgICAgICAg ICJlbmRjbG9ja2luZyIgImVuZGdyb3VwIiAiZW5kaW50ZXJmYWNlIiAiZW5kcGFja2FnZSIKICAg ICAgICAgICAgICJlbmRwcm9ncmFtIiAiZW5kcHJvcGVydHkiICJlbmRzZXF1ZW5jZSIgImV4cGVj dCIgImV4cG9ydCIKICAgICAgICAgICAgICJleHRlbmRzIiAiZXh0ZXJuIiAiZmluYWwiICJmaXJz dF9tYXRjaCIgImZvcmVhY2giICJmb3Jram9pbiIKICAgICAgICAgICAgICJpZmYiICJpZ25vcmVf YmlucyIgImlsbGVnYWxfYmlucyIgImltcG9ydCIgImluc2lkZSIKICAgICAgICAgICAgICJpbnRl cmZhY2UiICJpbnRlcnNlY3QiICJqb2luX2FueSIgImpvaW5fbm9uZSIgImxvY2FsIgogICAgICAg ICAgICAgIm1hdGNoZXMiICJtb2Rwb3J0IiAibmV3IiAibnVsbCIgInBhY2thZ2UiICJwcmlvcml0 eSIKICAgICAgICAgICAgICJwcm9ncmFtIiAicHJvcGVydHkiICJwcm90ZWN0ZWQiICJwdXJlIiAi cmFuZCIgInJhbmRjIgogICAgICAgICAgICAgInJhbmRjYXNlIiAicmFuZHNlcXVlbmNlIiAicmV0 dXJuIiAic2VxdWVuY2UiICJzb2x2ZSIgInN1cGVyIgogICAgICAgICAgICAgInRhZ2dlZCIgInRo aXMiICJ0aHJvdWdob3V0IiAidGltZXByZWNpc2lvbiIgInRpbWV1bml0IgogICAgICAgICAgICAg InVuaXF1ZSIgInZpcnR1YWwiICJ2b2lkIiAid2FpdF9vcmRlciIgIndpbGRjYXJkIiAid2l0aCIK ICAgICAgICAgICAgICJ3aXRoaW4iCiAgICAgICAgICAgICA7OyAxODAwLTIwMDkKICAgICAgICAg ICAgICJhY2NlcHRfb24iICJjaGVja2VyIiAiZW5kY2hlY2tlciIgImV2ZW50dWFsbHkiICJnbG9i YWwiCiAgICAgICAgICAgICAiaW1wbGllcyIgImxldCIgIm5leHR0aW1lIiAicmVqZWN0X29uIiAi cmVzdHJpY3QiICJzX2Fsd2F5cyIKICAgICAgICAgICAgICJzX2V2ZW50dWFsbHkiICJzX25leHR0 aW1lIiAic191bnRpbCIgInNfdW50aWxfd2l0aCIgInN0cm9uZyIKICAgICAgICAgICAgICJzeW5j X2FjY2VwdF9vbiIgInN5bmNfcmVqZWN0X29uIiAidW5pcXVlMCIgInVudGlsIgogICAgICAgICAg ICAgInVudGlsX3dpdGgiICJ1bnR5cGVkIiAid2VhayIKICAgICAgICAgICAgIDs7IDE4MDAtMjAx MgogICAgICAgICAgICAgImltcGxlbWVudHMiICJzb2Z0IiApIG5pbCkpKQoKICAgICAgICh2ZXJp bG9nLWZvbnQtZ3JvdXBpbmcta2V5d29yZHMKICAgICAgICAoZXZhbC13aGVuLWNvbXBpbGUKICAg ICAgICAgICh2ZXJpbG9nLXJlZ2V4cC1vcHQKICAgICAgICAgICAnKCAiYmVnaW4iICJlbmQiICkg bmlsKSkpKQoKICAoc2V0cSB2ZXJpbG9nLWZvbnQtbG9jay1rZXl3b3JkcwoJKGxpc3QKCSA7OyBG b250aWZ5IGFsbCBidWlsdGluIGtleXdvcmRzCiAgICAgICAgIChjb25jYXQgIlxcPFxcKCIgdmVy aWxvZy1mb250LWdlbmVyYWwta2V5d29yZHMgIlxcfCIKICAgICAgICAgICAgICAgICA7OyBBbmQg dXNlci9zeXN0ZW0gdGFza3MgYW5kIGZ1bmN0aW9ucwogICAgICAgICAgICAgICAgICJcXCRbYS16 QS1aXVthLXpBLVowLTlfXFwkXSoiCiAgICAgICAgICAgICAgICAgIlxcKVxcPiIpCgkgOzsgRm9u dGlmeSBhbGwgdHlwZXMKICAgICAgICAgKGNvbnMgKGNvbmNhdCAiXFw8XFwoIiB2ZXJpbG9nLWZv bnQtZ3JvdXBpbmcta2V5d29yZHMgIlxcKVxcPiIpCiAgICAgICAgICAgICAgIChpZiB2ZXJpbG9n LWhpZ2hsaWdodC1ncm91cGluZy1rZXl3b3JkcwogICAgICAgICAgICAgICAgICAgJ3Zlcmlsb2ct Zm9udC1sb2NrLWdyb3VwaW5nLWtleXdvcmRzLWZhY2UKCQkgJ2ZvbnQtbG9jay10eXBlLWZhY2Up KQoJIChjb25zIChjb25jYXQgIlxcPFxcKCIgdmVyaWxvZy10eXBlLWZvbnQta2V5d29yZHMgIlxc KVxcPiIpCiAgICAgICAgICAgICAgICdmb250LWxvY2stdHlwZS1mYWNlKQoJIDs7IEZvbnRpZnkg VmVyaWxvZy1BTVMga2V5d29yZHMKCSAoY29ucyAoY29uY2F0ICJcXDxcXCgiIHZlcmlsb2ctYW1z LWtleXdvcmRzICJcXClcXD4iKQoJICAgICAgICd2ZXJpbG9nLWZvbnQtbG9jay1hbXMtZmFjZSkp KQoKICAoc2V0cSB2ZXJpbG9nLWZvbnQtbG9jay1rZXl3b3Jkcy0xCgkoYXBwZW5kIHZlcmlsb2ct Zm9udC1sb2NrLWtleXdvcmRzCgkJKGxpc3QKCQkgOzsgRm9udGlmeSBtb2R1bGUgZGVmaW5pdGlv bnMKCQkgKGxpc3QKICAgICAgICAgICAgICAgICAiXFw8XFwoXFwobWFjcm9cXHxjb25uZWN0XFwp P21vZHVsZVxcfHByaW1pdGl2ZVxcfGNsYXNzXFx8cHJvZ3JhbVxcfGludGVyZmFjZVxcfHBhY2th Z2VcXHx0YXNrXFwpXFw+XFxzLSpcXChcXHN3K1xcKSIKCQkgICcoMSBmb250LWxvY2sta2V5d29y ZC1mYWNlKQoJCSAgJygzIGZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2UgcHJlcGVuZCkpCgkJ IDs7IEZvbnRpZnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMKCQkgKGxpc3QKCQkgIChjb25jYXQgIlxc PGZ1bmN0aW9uXFw+XFxzLStcXChpbnRlZ2VyXFx8cmVhbFxcKHRpbWVcXCk/XFx8dGltZVxcKVxc cy0rXFwoXFxzdytcXCkiICkKICAgICAgICAgICAgICAgICAgJygxIGZvbnQtbG9jay1rZXl3b3Jk LWZhY2UpCiAgICAgICAgICAgICAgICAgICcoMyBmb250LWxvY2stY29uc3RhbnQtZmFjZSBwcmVw ZW5kKSkKCQkgJygiXFw8ZnVuY3Rpb25cXD5cXHMtK1xcKFxcW1teXV0rXFxdXFwpXFxzLStcXChc XHN3K1xcKSIKCQkgICAoMSBmb250LWxvY2sta2V5d29yZC1mYWNlKQoJCSAgICgyIGZvbnQtbG9j ay1jb25zdGFudC1mYWNlIGFwcGVuZCkpCgkJICcoIlxcPGZ1bmN0aW9uXFw+XFxzLStcXChcXHN3 K1xcKSIKCQkgICAxICdmb250LWxvY2stY29uc3RhbnQtZmFjZSBhcHBlbmQpCiAgICAgICAgICAg ICAgICAgOzsgRm9udGlmeSB2YXJpYWJsZSBuYW1lcyBpbiBkZWNsYXJhdGlvbnMKICAgICAgICAg ICAgICAgICAobGlzdAogICAgICAgICAgICAgICAgICB2ZXJpbG9nLWRlY2xhcmF0aW9uLXJlCiAg ICAgICAgICAgICAgICAgIChsaXN0CiAgICAgICAgICAgICAgICAgICA7OyBBbmNob3JlZCBtYXRj aGVyIChsb29rdXAgU2VhcmNoLUJhc2VkIEZvbnRpZmljYXRpb24pCiAgICAgICAgICAgICAgICAg ICAndmVyaWxvZy1kZWNsYXJhdGlvbi12YXJuYW1lLW1hdGNoZXIKICAgICAgICAgICAgICAgICAg IDs7IFByZS1mb3JtIGZvciB0aGlzIGFuY2hvcmVkIG1hdGNoZXI6CiAgICAgICAgICAgICAgICAg ICA7OyBGaXJzdCwgYXZvaWQgZGVjbGFyYXRpb24ga2V5d29yZHMgd3JpdHRlbiBpbiBjb21tZW50 cywKICAgICAgICAgICAgICAgICAgIDs7IHdoaWNoIGNhbiBhbHNvIHRyaWdnZXIgdGhpcyBhbmNo b3IuCiAgICAgICAgICAgICAgICAgICAnKGlmIChub3QgKHZlcmlsb2ctaW4tY29tbWVudC1wKSkK ICAgICAgICAgICAgICAgICAgICAgICAgKHZlcmlsb2ctc2luZ2xlLWRlY2xhcmF0aW9uLWVuZCB2 ZXJpbG9nLWhpZ2hsaWdodC1tYXgtbG9va2FoZWFkKQogICAgICAgICAgICAgICAgICAgICAgKHBv aW50KSkgOzsgPT4gY3VycmVudCBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQgaXMgb2YgMCBsZW5ndGgK ICAgICAgICAgICAgICAgICAgIG5pbCA7OyBQb3N0LWZvcm06IG5vdGhpbmcgdG8gYmUgZG9uZQog ICAgICAgICAgICAgICAgICAgJygwIGZvbnQtbG9jay12YXJpYWJsZS1uYW1lLWZhY2UgdCB0KSkp CiAgICAgICAgICAgICAgICApKSkKCgogIChzZXRxIHZlcmlsb2ctZm9udC1sb2NrLWtleXdvcmRz LTIKCShhcHBlbmQgdmVyaWxvZy1mb250LWxvY2sta2V5d29yZHMtMQoJCShsaXN0CgkJIDs7IEZv bnRpZnkgcHJhZ21hcwoJCSAoY29uY2F0ICJcXCgvL1xccy0qXFwoIiB2ZXJpbG9nLXByYWdtYS1r ZXl3b3JkcyAiXFwpXFxzLS4qXFwpIikKCQkgOzsgRm9udGlmeSBlc2NhcGVkIG5hbWVzCgkJICco IlxcKFxcXFxcXFMtKlxccy1cXCkiICAwIGZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2UpCgkJ IDs7IEZvbnRpZnkgbWFjcm8gZGVmaW5pdGlvbnMvIHVzZXMKCQkgJygiYFxccy0qW0EtWmEtel1b QS1aYS16MC05X10qIiAwIChpZiAoYm91bmRwICdmb250LWxvY2stcHJlcHJvY2Vzc29yLWZhY2Up CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdm b250LWxvY2stcHJlcHJvY2Vzc29yLWZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdmb250LWxvY2stdHlwZS1mYWNlKSkKCQkgOzsgRm9udGlm eSBkZWxheXMvbnVtYmVycwoJCSAnKCJcXChAXFwpXFx8XFwoWyBcdFxuXGZccl0jXFxzLSpcXChc XChbMC05Xy5dK1xcKCdzP1toZHhib11bMC05YS1mQS1GX3h6XSpcXCk/XFwpXFx8XFwoKFteKCld KylcXHxcXHN3K1xcKVxcKVxcKSIKCQkgICAwIGZvbnQtbG9jay10eXBlLWZhY2UgYXBwZW5kKQog ICAgIDs7IEZvbnRpZnkgcHJvcGVydHkvc2VxdWVuY2UgY3ljbGUgZGVsYXlzIC0gdGhlc2Ugc3Rh cnQgd2l0aCAnIyMnCiAgICAgJygiXFwoIyNcXChcXHN3K1xcfFxcW1teXV0rXFxdXFwpXFwpIgog ICAgICAgMCBmb250LWxvY2stdHlwZS1mYWNlIGFwcGVuZCkKCQkgOzsgRm9udGlmeSBpbnN0YW50 aWF0aW9uIG5hbWVzCgkJICcoIlxcKFtBLVphLXpdW0EtWmEtejAtOV9dKlxcKVxccy0qKCIgMSBm b250LWxvY2stZnVuY3Rpb24tbmFtZS1mYWNlKQoJCSApKSkKCiAgKHNldHEgdmVyaWxvZy1mb250 LWxvY2sta2V5d29yZHMtMwoJKGFwcGVuZCB2ZXJpbG9nLWZvbnQtbG9jay1rZXl3b3Jkcy0yCgkJ KHdoZW4gdmVyaWxvZy1oaWdobGlnaHQtdHJhbnNsYXRlLW9mZgoJCSAgKGxpc3QKCQkgICA7OyBG b250aWZ5IHRoaW5ncyBpbiB0cmFuc2xhdGUgb2ZmIHJlZ2lvbnMKCQkgICAnKHZlcmlsb2ctbWF0 Y2gtdHJhbnNsYXRlLW9mZgoJCSAgICAgKDAgJ3Zlcmlsb2ctZm9udC1sb2NrLXRyYW5zbGF0ZS1v ZmYtZmFjZSBwcmVwZW5kKSkKCQkgICApKSkpKQoKOzsKOzsgQnVmZmVyIHN0YXRlIHByZXNlcnZh dGlvbgoKKGRlZm1hY3JvIHZlcmlsb2ctc2F2ZS1idWZmZXItc3RhdGUgKCZyZXN0IGJvZHkpCiAg IkV4ZWN1dGUgQk9EWSBmb3Jtcywgc2F2aW5nIHN0YXRlIGFyb3VuZCBpbnNpZ25pZmljYW50IGNo YW5nZS4KQ2hhbmdlcyBpbiB0ZXh0IHByb3BlcnRpZXMgbGlrZSBgZmFjZScgb3IgYHN5bnRheC10 YWJsZScgYXJlCmNvbnNpZGVyZWQgaW5zaWduaWZpY2FudC4gIFRoaXMgbWFjcm8gYWxsb3dzIHRl eHQgcHJvcGVydGllcyB0bwpiZSBjaGFuZ2VkLCBldmVuIGluIGEgcmVhZC1vbmx5IGJ1ZmZlci4K CkEgY2hhbmdlIGlzIGNvbnNpZGVyZWQgc2lnbmlmaWNhbnQgaWYgaXQgYWZmZWN0cyB0aGUgYnVm ZmVyIHRleHQKaW4gYW55IHdheSB0aGF0IGlzbid0IGNvbXBsZXRlbHkgcmVzdG9yZWQgYWdhaW4u ICBBbnkKdXNlci12aXNpYmxlIGNoYW5nZXMgdG8gdGhlIGJ1ZmZlciBtdXN0IG5vdCBiZSB3aXRo aW4gYQpgdmVyaWxvZy1zYXZlLWJ1ZmZlci1zdGF0ZScuIgogIGAobGV0ICgoaW5oaWJpdC1wb2lu dC1tb3Rpb24taG9va3MgdCkKICAgICAgICAgKHZlcmlsb2ctbm8tY2hhbmdlLWZ1bmN0aW9ucyB0 KSkKICAgICAsKGlmIChmYm91bmRwICd3aXRoLXNpbGVudC1tb2RpZmljYXRpb25zKQogICAgICAg ICAgYCh3aXRoLXNpbGVudC1tb2RpZmljYXRpb25zICxAYm9keSkKICAgICAgICA7OyBCYWNrd2Fy ZCBjb21wYXRpYmxlIHZlcnNpb24gb2Ygd2l0aC1zaWxlbnQtbW9kaWZpY2F0aW9ucwogICAgICAg IGAobGV0KiAoKG1vZGlmaWVkIChidWZmZXItbW9kaWZpZWQtcCkpCiAgICAgICAgICAgICAgICAo YnVmZmVyLXVuZG8tbGlzdCB0KQogICAgICAgICAgICAgICAgKGluaGliaXQtcmVhZC1vbmx5IHQp CiAgICAgICAgICAgICAgICAoaW5oaWJpdC1tb2RpZmljYXRpb24taG9va3MgdCkKICAgICAgICAg ICAgICAgIDs7IFhFbWFjcyBpZ25vcmVzIGluaGliaXQtbW9kaWZpY2F0aW9uLWhvb2tzLgogICAg ICAgICAgICAgICAgYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMgYWZ0ZXItY2hhbmdlLWZ1bmN0aW9u cwogICAgICAgICAgICAgICAgZGVhY3RpdmF0ZS1tYXJrCiAgICAgICAgICAgICAgICBidWZmZXIt ZmlsZS1uYW1lICAgICAgICA7IFByZXZlbnQgcHJpbWl0aXZlcyBjaGVja2luZwogICAgICAgICAg ICAgICAgYnVmZmVyLWZpbGUtdHJ1ZW5hbWUpCTsgZm9yIGZpbGUgbW9kaWZpY2F0aW9uCiAgICAg ICAgICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgICAgICAgIChwcm9nbiAsQGJvZHkpCiAgICAg ICAgICAgICAoYW5kIChub3QgbW9kaWZpZWQpCiAgICAgICAgICAgICAgICAgIChidWZmZXItbW9k aWZpZWQtcCkKICAgICAgICAgICAgICAgICAgKHZlcmlsb2ctcmVzdG9yZS1idWZmZXItbW9kaWZp ZWQtcCBuaWwpKSkpKSkpCgoKKGRlZnZhciB2ZXJpbG9nLXNhdmUtZm9udC1tb2QtaG9va2VkIG5p bAogICJMb2NhbCB2YXJpYWJsZSB3aGVuIGluc2lkZSBhIGB2ZXJpbG9nLXNhdmUtZm9udC1uby1j aGFuZ2UtZnVuY3Rpb25zJyBibG9jay4iKQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ3Zl cmlsb2ctc2F2ZS1mb250LW1vZC1ob29rZWQpCgooZGVmbWFjcm8gdmVyaWxvZy1zYXZlLWZvbnQt bm8tY2hhbmdlLWZ1bmN0aW9ucyAoJnJlc3QgYm9keSkKICJFeGVjdXRlIEJPRFkgZm9ybXMsIGRp c2FibGluZyBhbGwgY2hhbmdlIGhvb2tzIGluIEJPRFkuCkluY2x1ZGVzIHRlbXBvcmFyeSBkaXNh Ymxpbmcgb2YgYGZvbnQtbG9jaycgdG8gcmVzdG9yZSB0aGUgYnVmZmVyCnRvIGZ1bGwgdGV4dCBm b3JtIGZvciBwYXJzaW5nLiAgQWRkaXRpb25hbCBhY3Rpb25zIG1heSBiZSBzcGVjaWZpZWQgd2l0 aApgdmVyaWxvZy1iZWZvcmUtc2F2ZS1mb250LWhvb2snIGFuZCBgdmVyaWxvZy1hZnRlci1zYXZl LWZvbnQtaG9vaycuCkZvciBpbnNpZ25pZmljYW50IGNoYW5nZXMsIHNlZSBpbnN0ZWFkIGB2ZXJp bG9nLXNhdmUtYnVmZmVyLXN0YXRlJy4iCiBgKGlmIHZlcmlsb2ctc2F2ZS1mb250LW1vZC1ob29r ZWQgOyBTaG9ydC1jaXJjdWl0IGEgcmVjdXJzaXZlIGNhbGwKICAgICAgKHByb2duICxAYm9keSkK ICAgIDs7IEJlZm9yZSB2ZXJzaW9uIDIwLCBtYXRjaC1zdHJpbmcgd2l0aCBmb250LWxvY2sgcmV0 dXJucyBhCiAgICA7OyB2ZWN0b3IgdGhhdCBpcyBub3QgZXF1YWwgdG8gdGhlIHN0cmluZy4gIElF IGlmIG9uICJpbnB1dCIKICAgIDs7IG5pbD09KGVxdWFsICJpbnB1dCIgKHByb2duIChsb29raW5n LWF0ICJpbnB1dCIpIChtYXRjaC1zdHJpbmcgMCkpKQogICAgOzsgVGhlcmVmb3JlIHdlIG11c3Qg cmVtb3ZlIGFuZCByZXN0b3JlIGZvbnQtbG9jayBtb2RlCiAgICAodmVyaWxvZy1ydW4taG9va3Mg J3Zlcmlsb2ctYmVmb3JlLXNhdmUtZm9udC1ob29rKQogICAgKGxldCogKCh2ZXJpbG9nLXNhdmUt Zm9udC1tb2QtaG9va2VkICgtIChwb2ludC1tYXgpIChwb2ludC1taW4pKSkKICAgICAgICAgICA7 OyBTaWduaWZpY2FudCBzcGVlZCBzYXZpbmdzIHdpdGggbm8gZm9udC1sb2NrIHByb3BlcnRpZXMK ICAgICAgICAgICAoZm9udGxvY2tlZCAod2hlbiAoYW5kIChib3VuZHAgJ2ZvbnQtbG9jay1tb2Rl KSBmb250LWxvY2stbW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgIChmb250LWxvY2stbW9k ZSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgdCkpKQogICAgICAocnVuLWhvb2std2l0aC1h cmdzICdiZWZvcmUtY2hhbmdlLWZ1bmN0aW9ucyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKICAg ICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgICA7OyBNdXN0IGluaGliaXQgYW5kIHJlc3RvcmUg aG9va3MgYmVmb3JlIHJlc3RvcmluZyBmb250LWxvY2sKICAgICAgICAgIChsZXQqICgoaW5oaWJp dC1wb2ludC1tb3Rpb24taG9va3MgdCkKICAgICAgICAgICAgICAgICAoaW5oaWJpdC1tb2RpZmlj YXRpb24taG9va3MgdCkKICAgICAgICAgICAgICAgICAodmVyaWxvZy1uby1jaGFuZ2UtZnVuY3Rp b25zIHQpCiAgICAgICAgICAgICAgICAgOzsgWEVtYWNzIGFuZCBwcmUtRW1hY3MgMjEgaWdub3Jl IGluaGliaXQtbW9kaWZpY2F0aW9uLWhvb2tzLgogICAgICAgICAgICAgICAgIGJlZm9yZS1jaGFu Z2UtZnVuY3Rpb25zIGFmdGVyLWNoYW5nZS1mdW5jdGlvbnMpCiAgICAgICAgICAgIChwcm9nbiAs QGJvZHkpKQogICAgICAgIDs7IFVud2luZCBmb3JtcwogICAgICAgIChydW4taG9vay13aXRoLWFy Z3MgJ2FmdGVyLWNoYW5nZS1mdW5jdGlvbnMgKHBvaW50LW1pbikgKHBvaW50LW1heCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZlcmlsb2ctc2F2ZS1mb250LW1vZC1ob29rZWQpIDsgb2xk IGxlbmd0aAogICAgICAgICh3aGVuIGZvbnRsb2NrZWQgKGZvbnQtbG9jay1tb2RlIHQpKQogICAg ICAgICh2ZXJpbG9nLXJ1bi1ob29rcyAndmVyaWxvZy1hZnRlci1zYXZlLWZvbnQtaG9vaykpKSkp Cgo7Owo7OyBDb21tZW50IGRldGVjdGlvbiBhbmQgY2FjaGluZwoKKGRlZnZhciB2ZXJpbG9nLXNj YW4tY2FjaGUtcHJlc2VydmluZyBuaWwKICAiSWYgdHJ1ZSwgdGhlIHNwZWNpZmllZCBidWZmZXIn cyBjb21tZW50IHByb3BlcnRpZXMgYXJlIHN0YXRpYy4KQnVmZmVyIGNoYW5nZXMgd2lsbCBiZSBp Z25vcmVkLiAgU2VlIGB2ZXJpbG9nLWluc2lkZS1jb21tZW50LW9yLXN0cmluZy1wJwphbmQgYHZl cmlsb2ctc2NhbicuIikKCihkZWZ2YXIgdmVyaWxvZy1zY2FuLWNhY2hlLXRpY2sgbmlsCiAgIk1v ZGlmaWNhdGlvbiB0aWNrIGF0IHdoaWNoIGB2ZXJpbG9nLXNjYW4nIHdhcyBsYXN0IGNvbXBsZXRl ZC4iKQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ3Zlcmlsb2ctc2Nhbi1jYWNoZS10aWNr KQoKKGRlZnVuIHZlcmlsb2ctc2Nhbi1jYWNoZS1mbHVzaCAoKQogICJGbHVzaCB0aGUgYHZlcmls b2ctc2NhbicgY2FjaGUuIgogIChzZXRxIHZlcmlsb2ctc2Nhbi1jYWNoZS10aWNrIG5pbCkpCgoo ZGVmdW4gdmVyaWxvZy1zY2FuLWNhY2hlLW9rLXAgKCkKICAiUmV0dXJuIHQgaWYgdGhlIHNjYW4g Y2FjaGUgaXMgdXAgdG8gZGF0ZS4iCiAgKG9yIChhbmQgdmVyaWxvZy1zY2FuLWNhY2hlLXByZXNl cnZpbmcKCSAgIChlcSB2ZXJpbG9nLXNjYW4tY2FjaGUtcHJlc2VydmluZyAoY3VycmVudC1idWZm ZXIpKQoJICAgdmVyaWxvZy1zY2FuLWNhY2hlLXRpY2spCiAgICAgIChlcXVhbCB2ZXJpbG9nLXNj YW4tY2FjaGUtdGljayAoYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2spKSkpCgooZGVmbWFjcm8g dmVyaWxvZy1zYXZlLXNjYW4tY2FjaGUgKCZyZXN0IGJvZHkpCiAgIkV4ZWN1dGUgdGhlIEJPRFkg Zm9ybXMsIGFsbG93aW5nIHNjYW4gY2FjaGUgcHJlc2VydmF0aW9uIHdpdGhpbiBCT0RZLgpUaGlz IHJlcXVpcmVzIHRoYXQgaW5zZXJ0aW9ucyBtdXN0IHVzZSBgdmVyaWxvZy1pbnNlcnQnLiIKICA7 OyBJZiB0aGUgYnVmZmVyIGlzIG91dCBvZiBkYXRlLCB0cmFzaCBpdCwgYXMgd2UnbGwgbm90IGNo ZWNrIGxhdGVyIHRoZSB0aWNrCiAgOzsgTm90ZSB0aGlzIG11c3Qgd29yayBwcm9wZXJseSBpZiB0 aGVyZSdzIG11bHRpcGxlIGxheWVycyBvZiBjYWxscwogIDs7IHRvIHZlcmlsb2ctc2F2ZS1zY2Fu LWNhY2hlIGV2ZW4gd2l0aCBkaWZmZXJpbmcgdGlja3MuCiAgYChwcm9nbgogICAgICh1bmxlc3Mg KHZlcmlsb2ctc2Nhbi1jYWNoZS1vay1wKSAgIDsgTXVzdCBiZSBiZWZvcmUgbGV0CiAgICAgICAo c2V0cSB2ZXJpbG9nLXNjYW4tY2FjaGUtdGljayBuaWwpKQogICAgIChsZXQqICgodmVyaWxvZy1z Y2FuLWNhY2hlLXByZXNlcnZpbmcgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAgICAocHJvZ24gLEBi b2R5KSkpKQoKKGRlZnVuIHZlcmlsb2ctc2Nhbi1yZWdpb24gKGJlZyBlbmQpCiAgIlBhcnNlIGJl dHdlZW4gQkVHIGFuZCBFTkQgZm9yIGB2ZXJpbG9nLWluc2lkZS1jb21tZW50LW9yLXN0cmluZy1w Jy4KVGhpcyBjcmVhdGVzIHYtY210cyBwcm9wZXJ0aWVzIHdoZXJlIGNvbW1lbnRzIGFyZSBpbiBm b3JjZS4iCiAgOzsgV2h5IHByb3BlcnRpZXMgYW5kIG5vdCBvdmVybGF5cz8gIE92ZXJsYXlzIGhh dmUgbXVjaCBzbG93ZXIgbm9uIE8oMSkKICA7OyBsb29rdXAgdGltZXMuCiAgOzsgVGhpcyBmdW5j dGlvbiBpcyB3YXJtIC0gY2FsbGVkIG9uIGV2ZXJ5IHZlcmlsb2ctaW5zZXJ0CiAgKHNhdmUtZXhj dXJzaW9uCiAgICAoc2F2ZS1tYXRjaC1kYXRhCiAgICAgICh2ZXJpbG9nLXNhdmUtYnVmZmVyLXN0 YXRlCiAgICAgICAobGV0IChwdCkKCSAoZ290by1jaGFyIGJlZykKCSAod2hpbGUgKDwgKHBvaW50 KSBlbmQpCgkgICAoY29uZCAoKGxvb2tpbmctYXQgIi8vIikKCQkgIChzZXRxIHB0IChwb2ludCkp CgkJICAob3IgKHNlYXJjaC1mb3J3YXJkICJcbiIgZW5kIHQpCgkJICAgICAgKGdvdG8tY2hhciBl bmQpKQoJCSAgOzsgIjErIjogVGhlIGxlYWRpbmcgLy8gb3IgLyogaXRzZWxmIGlzbid0IGNvbnNp ZGVyZWQgYXMKCQkgIDs7IGJlaW5nICJpbnNpZGUiIHRoZSBjb21tZW50LCBzbyB0aGF0IGEgKHNl YXJjaC1iYWNrd2FyZCkKCQkgIDs7IHRoYXQgbGFuZHMgYXQgdGhlIHN0YXJ0IG9mIHRoZSAvLyB3 b24ndCBtaXMtaW5kaWNhdGUKCQkgIDs7IGl0J3MgaW5zaWRlIGEgY29tbWVudC4gIEFsc28gb3Ro ZXJ3aXNlIGl0IHdvdWxkIGJlCgkJICA7OyBoYXJkIHRvIGZpbmQgYSBjb21tZW50ZWQgb3V0IC8q QVMqLyB2cyBvbmUgdGhhdCBpc24ndAoJCSAgKHB1dC10ZXh0LXByb3BlcnR5ICgxKyBwdCkgKHBv aW50KSAndi1jbXRzIHQpKQoJCSAoKGxvb2tpbmctYXQgIi9cXCoiKQoJCSAgKHNldHEgcHQgKHBv aW50KSkKCQkgIChvciAoc2VhcmNoLWZvcndhcmQgIiovIiBlbmQgdCkKCQkgICAgICA7OyBObyBl cnJvciAtIGxldCBsYXRlciBjb2RlIGluZGljYXRlIGl0IHNvIHdlIGNhbgoJCSAgICAgIDs7IHVz ZSBpbnNpZGUgZnVuY3Rpb25zIG9uLXRoZS1mbHkKCQkgICAgICA7OyhlcnJvciAiJXM6IFVubWF0 Y2hlZCAvKiAqLywgYXQgY2hhciAlZCIKCQkgICAgICA7OyAgICAgICAodmVyaWxvZy1wb2ludC10 ZXh0KSAocG9pbnQpKQoJCSAgICAgIChnb3RvLWNoYXIgZW5kKSkKCQkgIChwdXQtdGV4dC1wcm9w ZXJ0eSAoMSsgcHQpIChwb2ludCkgJ3YtY210cyB0KSkKCQkgKChsb29raW5nLWF0ICJcIiIpCgkJ ICAoc2V0cSBwdCAocG9pbnQpKQogICAgICAgICAgICAgICAgICAob3IgKHJlLXNlYXJjaC1mb3J3 YXJkICJbXlxcXVwiIiBlbmQgdCkgIDsgZG9uJ3QgZm9yd2FyZC1jaGFyIGZpcnN0LCBzaW5jZSB3 ZSBsb29rIGZvciBhIG5vbiBiYWNrc2xhc2ggZmlyc3QKCQkgICAgICA7OyBObyBlcnJvciAtIGxl dCBsYXRlciBjb2RlIGluZGljYXRlIGl0IHNvIHdlIGNhbgoJCSAgICAgIChnb3RvLWNoYXIgZW5k KSkKCQkgIChwdXQtdGV4dC1wcm9wZXJ0eSAoMSsgcHQpIChwb2ludCkgJ3YtY210cyB0KSkKCQkg KHQKCQkgIChmb3J3YXJkLWNoYXIgMSkKCQkgIChpZiAocmUtc2VhcmNoLWZvcndhcmQgIlsvXCJd IiBlbmQgdCkKCQkgICAgICAoYmFja3dhcmQtY2hhciAxKQoJCSAgICAoZ290by1jaGFyIGVuZCkp KSkpKSkpKSkKCihkZWZ1biB2ZXJpbG9nLXNjYW4gKCkKICAiUGFyc2UgdGhlIGJ1ZmZlciwgbWFy a2luZyBhbGwgY29tbWVudHMgd2l0aCBwcm9wZXJ0aWVzLgpBbHNvIGFzc3VtZXMgYW55IHRleHQg aW5zZXJ0ZWQgc2luY2UgYHZlcmlsb2ctc2Nhbi1jYWNoZS10aWNrJwplaXRoZXIgaXMgb2sgdG8g cGFyc2UgYXMgYSBub24tY29tbWVudCwgb3IgYHZlcmlsb2ctaW5zZXJ0JyB3YXMgdXNlZC4iCiAg OzsgU2VlIGFsc28gYHZlcmlsb2ctc2Nhbi1kZWJ1ZycgYW5kIGB2ZXJpbG9nLXNjYW4tYW5kLWRl YnVnJwogICh1bmxlc3MgKHZlcmlsb2ctc2Nhbi1jYWNoZS1vay1wKQogICAgKHNhdmUtZXhjdXJz aW9uCiAgICAgICh2ZXJpbG9nLXNhdmUtYnVmZmVyLXN0YXRlCiAgICAgICAod2hlbiB2ZXJpbG9n LWRlYnVnCiAgICAgICAgIChtZXNzYWdlICJTY2FubmluZyAlcyBjYWNoZT0lcyBjYWNoZXRpY2s9 JVMgdGljaz0lUyIgKGN1cnJlbnQtYnVmZmVyKQogICAgICAgICAgICAgICAgICB2ZXJpbG9nLXNj YW4tY2FjaGUtcHJlc2VydmluZyB2ZXJpbG9nLXNjYW4tY2FjaGUtdGljawogICAgICAgICAgICAg ICAgICAoYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2spKSkKICAgICAgIChyZW1vdmUtdGV4dC1w cm9wZXJ0aWVzIChwb2ludC1taW4pIChwb2ludC1tYXgpICcodi1jbXRzIG5pbCkpCiAgICAgICAo dmVyaWxvZy1zY2FuLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKICAgICAgIChzZXRx IHZlcmlsb2ctc2Nhbi1jYWNoZS10aWNrIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaykpCiAg ICAgICAod2hlbiB2ZXJpbG9nLWRlYnVnIChtZXNzYWdlICJTY2FubmluZy4uLiBkb25lIikpKSkp KQoKKGRlZnVuIHZlcmlsb2ctc2Nhbi1kZWJ1ZyAoKQogICJGb3IgZGVidWdnaW5nLCBzaG93IHdp dGggZGlzcGxheSBmYWNlIHJlc3VsdHMgb2YgYHZlcmlsb2ctc2NhbicuIgogIChmb250LWxvY2st bW9kZSAwKQogIDs7KGlmIGRiZyAoc2V0cSBkYmcgKGNvbmNhdCBkYmcgKGZvcm1hdCAidmVyaWxv Zy1zY2FuLWRlYnVnXG4iKSkpKQogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGdvdG8tY2hhciAocG9p bnQtbWluKSkKICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIChwb2ludC1taW4pIChwb2ludC1t YXgpICcoZmFjZSBuaWwpKQogICAgKHdoaWxlIChub3QgKGVvYnApKQogICAgICAoY29uZCAoKGdl dC10ZXh0LXByb3BlcnR5IChwb2ludCkgJ3YtY210cykKCSAgICAgKHB1dC10ZXh0LXByb3BlcnR5 IChwb2ludCkgKDErIChwb2ludCkpICdmYWNlICd1bmRlcmxpbmUpCgkgICAgIDs7KGlmIGRiZyAo c2V0cSBkYmcgKGNvbmNhdCBkYmcgKGZvcm1hdCAiICB2LWNtdHMgYXQgJVNcbiIgKHBvaW50KSkp KSkKCSAgICAgKGZvcndhcmQtY2hhciAxKSkKCSAgICAodAoJICAgICAoZ290by1jaGFyIChvciAo bmV4dC1wcm9wZXJ0eS1jaGFuZ2UgKHBvaW50KSkgKHBvaW50LW1heCkpKSkpKSkpCgooZGVmdW4g dmVyaWxvZy1zY2FuLWFuZC1kZWJ1ZyAoKQogICJGb3IgZGVidWdnaW5nLCBydW4gYHZlcmlsb2ct c2NhbicgYW5kIGB2ZXJpbG9nLXNjYW4tZGVidWcnLiIKICAobGV0ICh2ZXJpbG9nLXNjYW4tY2Fj aGUtcHJlc2VydmluZwoJdmVyaWxvZy1zY2FuLWNhY2hlLXRpY2spCiAgICAoZ290by1jaGFyIChw b2ludC1taW4pKQogICAgKHZlcmlsb2ctc2NhbikKICAgICh2ZXJpbG9nLXNjYW4tZGVidWcpKSkK CihkZWZ1biB2ZXJpbG9nLWluc2lkZS1jb21tZW50LW9yLXN0cmluZy1wICgmb3B0aW9uYWwgcG9z KQogICJDaGVjayBpZiBvcHRpb25hbCBwb2ludCBQT1MgaXMgaW5zaWRlIGEgY29tbWVudC4KVGhp cyBtYXkgcmVxdWlyZSBhIHNsb3cgcHJlLXBhcnNlIG9mIHRoZSBidWZmZXIgd2l0aCBgdmVyaWxv Zy1zY2FuJwp0byBlc3RhYmxpc2ggY29tbWVudCBwcm9wZXJ0aWVzIG9uIGFsbCB0ZXh0LiIKICA7 OyBUaGlzIGZ1bmN0aW9uIGlzIHZlcnkgaG90CiAgKHZlcmlsb2ctc2NhbikKICAoaWYgcG9zCiAg ICAgIChhbmQgKD49IHBvcyAocG9pbnQtbWluKSkKCSAgIChnZXQtdGV4dC1wcm9wZXJ0eSBwb3Mg J3YtY210cykpCiAgICAoZ2V0LXRleHQtcHJvcGVydHkgKHBvaW50KSAndi1jbXRzKSkpCgooZGVm dW4gdmVyaWxvZy1pbnNlcnQgKCZyZXN0IHN0dWZmKQogICJJbnNlcnQgU1RVRkYgYXJndW1lbnRz LCB0cmFja2luZyBmb3IgYHZlcmlsb2ctaW5zaWRlLWNvbW1lbnQtb3Itc3RyaW5nLXAnLgpBbnkg aW5zZXJ0IHRoYXQgaW5jbHVkZXMgYSBjb21tZW50IG11c3QgaGF2ZSB0aGUgZW50aXJlIGNvbW1l bnQKaW5zZXJ0ZWQgdXNpbmcgYSBzaW5nbGUgY2FsbCB0byBgdmVyaWxvZy1pbnNlcnQnLiIKICAo bGV0ICgocHQgKHBvaW50KSkpCiAgICAod2hpbGUgc3R1ZmYKICAgICAgKGluc2VydCAoY2FyIHN0 dWZmKSkKICAgICAgKHNldHEgc3R1ZmYgKGNkciBzdHVmZikpKQogICAgKHZlcmlsb2ctc2Nhbi1y ZWdpb24gcHQgKHBvaW50KSkpKQoKOzsgTW9yZSBzZWFyY2hpbmcKCihkZWZ1biB2ZXJpbG9nLWRl Y2xhcmF0aW9uLWVuZCAoKQogIChzZWFyY2gtZm9yd2FyZCAiOyIpKQoKKGRlZnVuIHZlcmlsb2ct c2luZ2xlLWRlY2xhcmF0aW9uLWVuZCAobGltaXQpCiAgIlJldHVybnMgcG9zIHdoZXJlIGN1cnJl bnQgKHNpbmdsZSkgZGVjbGFyYXRpb24gc3RhdGVtZW50IGVuZHMuCkFsc28sIHRoaXMgZnVuY3Rp b24gbW92ZXMgUE9JTlQgZm9yd2FyZCB0byB0aGUgc3RhcnQgb2YgYSB2YXJpYWJsZSBuYW1lCihz a2lwcGluZyB0aGUgcmFuZ2UtcGFydCBhbmQgd2hpdGVzcGFjZSkuCkZ1bmN0aW9uIGV4cGVjdGVk IHRvIGJlIGNhbGxlZCB3aXRoIFBPSU5UIGp1c3QgYWZ0ZXIgYSBkZWNsYXJhdGlvbiBrZXl3b3Jk LgpMSU1JVCBzZXRzIHRoZSBtYXggUE9JTlQgZm9yIHNlYXJjaGluZyBhbmQgbW92aW5nIHRvLiBO byBzdWNoIGxpbWl0IGlmIExJTUlUCmlzIDAuCgpNZWFuaW5nIG9mICpzaW5nbGUqIGRlY2xhcmF0 aW9uOgogICBFZy4gSW4gYSBtb2R1bGUncyBwb3J0LWxpc3QgLQogICAgICAgICAgIG1vZHVsZSB0 ZXN0KGlucHV0IGNsaywgcnN0LCB4LCBvdXRwdXQgWzE6MF0geSk7CiAgIEhlcmUgJ2lucHV0IGNs aywgcnN0LCB4JyBpcyAxICpzaW5nbGUqIGRlY2xhcmF0aW9uIHN0YXRlbWVudCwKYW5kICdvdXRw dXQgWzE6MF0geScgaXMgdGhlIG90aGVyIHNpbmdsZSBkZWNsYXJhdGlvbi4gIEluIHRoZSAxc3Qg c2luZ2xlCmRlY2xhcmF0aW9uLCBQT0lOVCBpcyBtb3ZlZCB0byBzdGFydCBvZiAnY2xrJy4gQW5k IGluIHRoZSAybmQgZGVjbGFyYXRpb24sClBPSU5UIGlzIG1vdmVkIHRvICd5Jy4iCgoKICAobGV0 IChtYXhwb2ludCBvbGQtcG9pbnQpCiAgICA7OyBtYXhwb2ludCA9IG1pbihjdXJyLXBvaW50ICsg bGltaXQsIGJ1ZmZlci1zaXplKQogICAgKHNldHEgbWF4cG9pbnQgKGlmIChlcSBsaW1pdCAwKQog ICAgICAgICAgICAgICAgICAgICAgIChwb2ludC1tYXgpIDs7IG5vIGJvdW5kcyBpZiBzZWFyY2gt Ym91bmQgaXMgemVybwogICAgICAgICAgICAgICAgICAgICAoKyAocG9pbnQpIGxpbWl0KSkpCiAg ICAoaWYgKD4gbWF4cG9pbnQgKGJ1ZmZlci1zaXplKSkgKHNldHEgbWF4cG9pbnQgKGJ1ZmZlci1z aXplKSkpCgogICAgOzsgU2tpcCBjb21tZW50IC0gcmFuZ2UgLSBjb21tZW50CiAgICAodmVyaWxv Zy1mb3J3YXJkLXdzJmRpcmVjdGl2ZXMgbWF4cG9pbnQpCiAgICAod2hlbiAoZXEgKGNoYXItYWZ0 ZXIpID9cWykKICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkIHZlcmlsb2ctcmFuZ2UtcmUgbWF4cG9p bnQgdCkpCiAgICAodmVyaWxvZy1mb3J3YXJkLXdzJmRpcmVjdGl2ZXMgbWF4cG9pbnQpCgogICAg OzsgTW92ZSBmb3J3YXJkIHVudGlsIGEgZGVsaW1pdGVyIGlzIHJlYWNoZWQgd2hpY2ggbWFya3Mg ZW5kIG9mIGN1cnJlbnQKICAgIDs7IHNpbmdsZSBkZWNsYXJhdGlvbi4gUmV0dXJuIHBvaW50IGF0 IGZvdW5kIGRlbGltaXRlcgogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICh3aGlsZSAoYW5kICg8 IChwb2ludCkgbWF4cG9pbnQpCiAgICAgICAgICAgICAgICAgIChub3QgKGVxIG9sZC1wb2ludCAo cG9pbnQpKSkKICAgICAgICAgICAgICAgICAgKG5vdCAoZXEgKGNoYXItYWZ0ZXIpID9cOyApKQog ICAgICAgICAgICAgICAgICAobm90IChlcSAoY2hhci1hZnRlcikgP1wpICkpCiAgICAgICAgICAg ICAgICAgIChub3QgKGxvb2tpbmctYXQgdmVyaWxvZy1kZWNsYXJhdGlvbi1yZSkpKQogICAgICAg IChzZXRxIG9sZC1wb2ludCAocG9pbnQpKQogICAgICAgIChpZ25vcmUtZXJyb3JzCiAgICAgICAg ICAoZm9yd2FyZC1zZXhwKQogICAgICAgICAgKHZlcmlsb2ctZm9yd2FyZC13cyZkaXJlY3RpdmVz IG1heHBvaW50KQogICAgICAgICAgKHdoZW4gKGVxIChjaGFyLWFmdGVyKSA/LCkKICAgICAgICAg ICAgKGZvcndhcmQtY2hhcikKICAgICAgICAgICAgKHZlcmlsb2ctZm9yd2FyZC13cyZkaXJlY3Rp dmVzIG1heHBvaW50KSkpKQogICAgKHBvaW50KSkpKQoKKGRlZnVuIHZlcmlsb2ctZGVjbGFyYXRp b24tdmFybmFtZS1tYXRjaGVyIChsaW1pdCkKICAiTWF0Y2ggZmlyc3QgdmFyaWFibGUgbmFtZSBi L3cgUE9JTlQgJiBMSU1JVCwgbW92ZSBQT0lOVCB0byBuZXh0IHZhcmlhYmxlLgpFeHBlY3RlZCB0 byBiZSBjYWxsZWQgd2l0aGluIGEgZGVjbGFyYXRpb24gc3RhdGVtZW50LCB3aXRoIFBPSU5UIGFs cmVhZHkgYmV5b25kCnRoZSBkZWNsYXJhdGlvbiBrZXl3b3JkIGFuZCByYW5nZSAoW2E6Yl0pClRo aXMgZnVuY3Rpb24gbW92ZXMgUE9JTlQgdG8gdGhlIG5leHQgdmFyaWFibGUgd2l0aGluIHRoZSBz YW1lIGRlY2xhcmF0aW9uIChpZgppdCBleGlzdHMpLgpMSU1JVCBpcyBleHBlY3RlZCB0byBiZSB0 aGUgcG9zIGF0IHdoaWNoIGN1cnJlbnQgc2luZ2xlLWRlY2xhcmF0aW9uIGVuZHMsCm9idGFpbmVk IHVzaW5nIGB2ZXJpbG9nLXNpbmdsZS1kZWNsYXJhdGlvbi1lbmQnLiIKCiAgKGxldCAoZm91bmQt dmFyIG9sZC1wb2ludCkKCiAgICA7OyBSZW1vdmUgc3RhcnRpbmcgd2hpdGVzcGFjZQogICAgKHZl cmlsb2ctZm9yd2FyZC13cyZkaXJlY3RpdmVzIGxpbWl0KQoKICAgICh3aGVuICg8IChwb2ludCkg bGltaXQpIDs7IG5vIG1hdGNoaW5nIGlmIHRoaXMgaXMgdmlvbGF0ZWQKCiAgICAgIDs7IEZpbmQg dGhlIHZhcmlhYmxlIG5hbWUgKG1hdGNoLWRhdGEgaXMgc2V0IGhlcmUpCiAgICAgIChzZXRxIGZv dW5kLXZhciAocmUtc2VhcmNoLWZvcndhcmQgdmVyaWxvZy1zeW1ib2wtcmUgbGltaXQgdCkpCgog ICAgICA7OyBXYWxrIHRvIHRoaXMgdmFyaWFibGUncyBkZWxpbWl0ZXIKICAgICAgKHNhdmUtbWF0 Y2gtZGF0YQogICAgICAgICh2ZXJpbG9nLWZvcndhcmQtd3MmZGlyZWN0aXZlcyBsaW1pdCkKICAg ICAgICAoc2V0cSBvbGQtcG9pbnQgbmlsKQogICAgICAgICh3aGlsZSAoYW5kICg8IChwb2ludCkg bGltaXQpCiAgICAgICAgICAgICAgICAgICAgKG5vdCAobWVtYmVyIChjaGFyLWFmdGVyKSAnKD8s ID9cKSA/XDspKSkKICAgICAgICAgICAgICAgICAgICAobm90IChlcSBvbGQtcG9pbnQgKHBvaW50 KSkpKQogICAgICAgICAgKHNldHEgb2xkLXBvaW50IChwb2ludCkpCiAgICAgICAgICAodmVyaWxv Zy1mb3J3YXJkLXdzJmRpcmVjdGl2ZXMgbGltaXQpCiAgICAgICAgICAoZm9yd2FyZC1zZXhwKQog ICAgICAgICAgKHZlcmlsb2ctZm9yd2FyZC13cyZkaXJlY3RpdmVzIGxpbWl0KSkKICAgICAgICA7 OyBPbmx5IGEgY29tbWEgb3Igc2VtaWNvbG9uIGV4cGVjdGVkIGF0IHRoaXMgcG9pbnQKICAgICAg ICAoc2tpcC1zeW50YXgtZm9yd2FyZCAiLiIpKQogICAgICBmb3VuZC12YXIpKSkKCihkZWZ1biB2 ZXJpbG9nLXBvaW50LXRleHQgKCZvcHRpb25hbCBwb2ludG51bSkKICAiUmV0dXJuIHRleHQgZGVz Y3JpYmluZyB3aGVyZSBQT0lOVE5VTSBvciBjdXJyZW50IHBvaW50IGlzIChmb3IgZXJyb3JzKS4K VXNlIGZpbGVuYW1lLCBpZiBjdXJyZW50IGJ1ZmZlciBiZWluZyBlZGl0ZWQgc2hvcnRlbiB0byBq dXN0IGJ1ZmZlciBuYW1lLiIKICAoY29uY2F0IChvciAoYW5kIChlcXVhbCAod2luZG93LWJ1ZmZl cikgKGN1cnJlbnQtYnVmZmVyKSkKCQkgICAoYnVmZmVyLW5hbWUpKQoJICAgICAgYnVmZmVyLWZp bGUtbmFtZQoJICAgICAgKGJ1ZmZlci1uYW1lKSkKCSAgIjoiIChpbnQtdG8tc3RyaW5nICgxKyAo Y291bnQtbGluZXMgKHBvaW50LW1pbikgKG9yIHBvaW50bnVtIChwb2ludCkpKSkpKSkKCihkZWZ1 biBlbGVjdHJpYy12ZXJpbG9nLWJhY2t3YXJkLXNleHAgKCkKICAiTW92ZSBiYWNrd2FyZCBvdmVy IG9uZSBiYWxhbmNlZCBleHByZXNzaW9uLiIKICAoaW50ZXJhY3RpdmUpCiAgOzsgYmVmb3JlIHRo YXQgc2VlIGlmIHdlIGFyZSBpbiBhIGNvbW1lbnQKICAodmVyaWxvZy1iYWNrd2FyZC1zZXhwKSkK CihkZWZ1biBlbGVjdHJpYy12ZXJpbG9nLWZvcndhcmQtc2V4cCAoKQogICJNb3ZlIGZvcndhcmQg b3ZlciBvbmUgYmFsYW5jZWQgZXhwcmVzc2lvbi4iCiAgKGludGVyYWN0aXZlKQogIDs7IGJlZm9y ZSB0aGF0IHNlZSBpZiB3ZSBhcmUgaW4gYSBjb21tZW50CiAgKHZlcmlsb2ctZm9yd2FyZC1zZXhw KSkKCihkZWZ1biB2ZXJpbG9nLWZvcndhcmQtc2V4cC1mdW5jdGlvbiAoYXJnKQogICJNb3ZlIGZv cndhcmQgQVJHIHNleHBzLiIKICA7OyBVc2VkIGJ5IGhzLW1pbm9yLW1vZGUKICAoaWYgKDwgYXJn IDApCiAgICAgICh2ZXJpbG9nLWJhY2t3YXJkLXNleHApCiAgICAodmVyaWxvZy1mb3J3YXJkLXNl eHApKSkKCihkZWZ1biB2ZXJpbG9nLWJhY2t3YXJkLXNleHAgKCkKICAobGV0ICgocmVnKQoJKGVs c2VjIDEpCgkoZm91bmQgbmlsKQoJKHN0IChwb2ludCkpKQogICAgKGlmIChub3QgKGxvb2tpbmct YXQgIlxcPCIpKQoJKGZvcndhcmQtd29yZC1zdHJpY3RseSAtMSkpCiAgICAoY29uZAogICAgICgo dmVyaWxvZy1za2lwLWJhY2t3YXJkLWNvbW1lbnQtb3Itc3RyaW5nKSkKICAgICAoKGxvb2tpbmct YXQgIlxcPGVsc2VcXD4iKQogICAgICAoc2V0cSByZWcgKGNvbmNhdAoJCSB2ZXJpbG9nLWVuZC1i bG9jay1yZQoJCSAiXFx8XFwoXFw8ZWxzZVxcPlxcKSIKCQkgIlxcfFxcKFxcPGlmXFw+XFwpIikp CiAgICAgICh3aGlsZSAoYW5kIChub3QgZm91bmQpCgkJICAodmVyaWxvZy1yZS1zZWFyY2gtYmFj a3dhcmQgcmVnIG5pbCAnbW92ZSkpCgkoY29uZAoJICgobWF0Y2gtZW5kIDEpIDsgbWF0Y2hlZCB2 ZXJpbG9nLWVuZC1ibG9jay1yZQoJICA7OyB0cnkgdG8gbGVhcCBiYWNrIHRvIG1hdGNoaW5nIG91 dHdhcmQgYmxvY2sgYnkgc3RyaWRpbmcgYWNyb3NzCgkgIDs7IGluZGVudCBsZXZlbCBjaGFuZ2lu ZyB0b2tlbnMgdGhlbiBpbW1lZGlhdGVseQoJICA7OyBwcmV2aW91cyBsaW5lIGdvdmVybnMgaW5k ZW50YXRpb24uCgkgICh2ZXJpbG9nLWxlYXAtdG8taGVhZCkpCgkgKChtYXRjaC1lbmQgMikgOyBl bHNlLCB3ZSdyZSBpbiBkZWVwCgkgIChzZXRxIGVsc2VjICgxKyBlbHNlYykpKQoJICgobWF0Y2gt ZW5kIDMpIDsgZm91bmQgaXQKCSAgKHNldHEgZWxzZWMgKDEtIGVsc2VjKSkKCSAgKGlmICg9IDAg ZWxzZWMpCgkgICAgICA7OyBOb3cgcHJldmlvdXMgbGluZSBkZXNjcmliZXMgc3ludGF4CgkgICAg ICAoc2V0cSBmb3VuZCAndCkpKSkpKQogICAgICgobG9va2luZy1hdCB2ZXJpbG9nLWVuZC1ibG9j ay1yZSkKICAgICAgKHZlcmlsb2ctbGVhcC10by1oZWFkKSkKICAgICAoKGxvb2tpbmctYXQgIlxc KGVuZG1vZHVsZVxcPlxcKVxcfFxcKFxcPGVuZHByaW1pdGl2ZVxcPlxcKVxcfFxcKFxcPGVuZGNs YXNzXFw+XFwpXFx8XFwoXFw8ZW5kcHJvZ3JhbVxcPlxcKVxcfFxcKFxcPGVuZGludGVyZmFjZVxc PlxcKVxcfFxcKFxcPGVuZHBhY2thZ2VcXD5cXClcXHxcXChcXDxlbmRjb25uZWN0bW9kdWxlXFw+ XFwpIikKICAgICAgKGNvbmQKICAgICAgICgobWF0Y2gtZW5kIDEpCgkodmVyaWxvZy1yZS1zZWFy Y2gtYmFja3dhcmQgIlxcPFxcKG1hY3JvXFwpP21vZHVsZVxcPiIgbmlsICdtb3ZlKSkKICAgICAg ICgobWF0Y2gtZW5kIDIpCgkodmVyaWxvZy1yZS1zZWFyY2gtYmFja3dhcmQgIlxcPHByaW1pdGl2 ZVxcPiIgbmlsICdtb3ZlKSkKICAgICAgICgobWF0Y2gtZW5kIDMpCgkodmVyaWxvZy1yZS1zZWFy Y2gtYmFja3dhcmQgIlxcPGNsYXNzXFw+IiBuaWwgJ21vdmUpKQogICAgICAgKChtYXRjaC1lbmQg NCkKCSh2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZCAiXFw8cHJvZ3JhbVxcPiIgbmlsICdtb3Zl KSkKICAgICAgICgobWF0Y2gtZW5kIDUpCgkodmVyaWxvZy1yZS1zZWFyY2gtYmFja3dhcmQgIlxc PGludGVyZmFjZVxcPiIgbmlsICdtb3ZlKSkKICAgICAgICgobWF0Y2gtZW5kIDYpCgkodmVyaWxv Zy1yZS1zZWFyY2gtYmFja3dhcmQgIlxcPHBhY2thZ2VcXD4iIG5pbCAnbW92ZSkpCiAgICAgICAo KG1hdGNoLWVuZCA3KQogICAgICAgKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkICJcXDxjb25u ZWN0bW9kdWxlXFw+IiBuaWwgJ21vdmUpKQogICAgICAgKHQKCShnb3RvLWNoYXIgc3QpCgkoYmFj a3dhcmQtc2V4cCAxKSkpKQogICAgICh0CiAgICAgIChnb3RvLWNoYXIgc3QpCiAgICAgIChiYWNr d2FyZC1zZXhwKSkpKSkKCihkZWZ1biB2ZXJpbG9nLWZvcndhcmQtc2V4cCAoKQogIChsZXQgKChy ZWcpCgkobWQgMikKCShzdCAocG9pbnQpKQoJKG5lc3QgJ3llcykpCiAgICAoaWYgKG5vdCAobG9v a2luZy1hdCAiXFw8IikpCgkoZm9yd2FyZC13b3JkLXN0cmljdGx5IC0xKSkKICAgIChjb25kCiAg ICAgKCh2ZXJpbG9nLXNraXAtZm9yd2FyZC1jb21tZW50LW9yLXN0cmluZykKICAgICAgKHZlcmls b2ctZm9yd2FyZC1zeW50YWN0aWMtd3MpKQogICAgICgobG9va2luZy1hdCB2ZXJpbG9nLWJlZy1i bG9jay1yZS1vcmRlcmVkKQogICAgICAoY29uZAogICAgICAgKChtYXRjaC1lbmQgMSk7Cgk7OyBT ZWFyY2ggZm9yd2FyZCBmb3IgbWF0Y2hpbmcgZW5kCgkoc2V0cSByZWcgIlxcKFxcPGJlZ2luXFw+ XFwpXFx8XFwoXFw8ZW5kXFw+XFwpIiApKQogICAgICAgKChtYXRjaC1lbmQgMikKCTs7IFNlYXJj aCBmb3J3YXJkIGZvciBtYXRjaGluZyBlbmRjYXNlCgkoc2V0cSByZWcgIlxcKFxcPHJhbmRjYXNl XFw+XFx8XFwoXFw8dW5pcXVlMD9cXD5cXHMtK1xcfFxcPHByaW9yaXR5XFw+XFxzLStcXCk/XFw8 Y2FzZVt4el0/XFw+W146XVxcKVxcfFxcKFxcPGVuZGNhc2VcXD5cXCkiICkKICAgICAgICAoc2V0 cSBtZCAzKSAgOyBlbmRlciBpcyB0aGlyZCBpdGVtIGluIHJlZ2V4cAoJKQogICAgICAgKChtYXRj aC1lbmQgNCkKCTs7IG1pZ2h0IGJlICJkaXNhYmxlIGZvcmsiIG9yICJ3YWl0IGZvcmsiCgkobGV0 CgkgICAgKGhlcmUpCgkgIChpZiAob3IKCSAgICAgICAobG9va2luZy1hdCB2ZXJpbG9nLWRpc2Fi bGUtZm9yay1yZSkKCSAgICAgICAoYW5kIChsb29raW5nLWF0ICJmb3JrIikKCQkgICAgKHByb2du CiAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBoZXJlIChwb2ludCkpICA7IHNvbWV0aW1lcyBh IGZvcmsgaXMganVzdCBhIGZvcmsKCQkgICAgICAoZm9yd2FyZC13b3JkLXN0cmljdGx5IC0xKQoJ CSAgICAgIChsb29raW5nLWF0IHZlcmlsb2ctZGlzYWJsZS1mb3JrLXJlKSkpKQogICAgICAgICAg ICAgIChwcm9nbiAgOyBpdCBpcyBhIGRpc2FibGUgZm9yazsgaWdub3JlIGl0CgkJKGdvdG8tY2hh ciAobWF0Y2gtZW5kIDApKQoJCShmb3J3YXJkLXdvcmQtc3RyaWN0bHkgMSkKCQkoc2V0cSByZWcg bmlsKSkKICAgICAgICAgICAgKHByb2duICA7IGl0IGlzIGEgbmljZSBzaW1wbGUgZm9yawogICAg ICAgICAgICAgIChnb3RvLWNoYXIgaGVyZSkgICA7IHJldHVybiBmcm9tIGxvb2tpbmcgZm9yICJk aXNhYmxlIGZvcmsiCgkgICAgICA7OyBTZWFyY2ggZm9yd2FyZCBmb3IgbWF0Y2hpbmcgam9pbgoJ ICAgICAgKHNldHEgcmVnICJcXChcXDxmb3JrXFw+XFwpXFx8XFwoXFw8am9pblxcKF9hbnlcXHxf bm9uZVxcKT9cXD5cXCkiICkpKSkpCiAgICAgICAoKG1hdGNoLWVuZCA2KQoJOzsgU2VhcmNoIGZv cndhcmQgZm9yIG1hdGNoaW5nIGVuZGNsYXNzCgkoc2V0cSByZWcgIlxcKFxcPGNsYXNzXFw+XFwp XFx8XFwoXFw8ZW5kY2xhc3NcXD5cXCkiICkpCgogICAgICAgKChtYXRjaC1lbmQgNykKCTs7IFNl YXJjaCBmb3J3YXJkIGZvciBtYXRjaGluZyBlbmR0YWJsZQoJKHNldHEgcmVnICJcXDxlbmR0YWJs ZVxcPiIgKQoJKHNldHEgbmVzdCAnbm8pKQogICAgICAgKChtYXRjaC1lbmQgOCkKICAgICAgICA7 OyBTZWFyY2ggZm9yd2FyZCBmb3IgbWF0Y2hpbmcgZW5kc3BlY2lmeQogICAgICAgIChzZXRxIHJl ZyAiXFwoXFw8c3BlY2lmeVxcPlxcKVxcfFxcKFxcPGVuZHNwZWNpZnlcXD5cXCkiICkpCiAgICAg ICAoKG1hdGNoLWVuZCA5KQogICAgICAgIDs7IFNlYXJjaCBmb3J3YXJkIGZvciBtYXRjaGluZyBl bmRmdW5jdGlvbgogICAgICAgIChzZXRxIHJlZyAiXFw8ZW5kZnVuY3Rpb25cXD4iICkKICAgICAg ICAoc2V0cSBuZXN0ICdubykpCiAgICAgICAoKG1hdGNoLWVuZCAxMCkKICAgICAgICA7OyBTZWFy Y2ggZm9yd2FyZCBmb3IgbWF0Y2hpbmcgZW5kZnVuY3Rpb24KICAgICAgICAoc2V0cSByZWcgIlxc PGVuZGZ1bmN0aW9uXFw+IiApCiAgICAgICAgKHNldHEgbmVzdCAnbm8pKQogICAgICAgKChtYXRj aC1lbmQgMTEpCiAgICAgICAgOzsgU2VhcmNoIGZvcndhcmQgZm9yIG1hdGNoaW5nIGVuZHRhc2sK ICAgICAgICAoc2V0cSByZWcgIlxcPGVuZHRhc2tcXD4iICkKICAgICAgICAoc2V0cSBuZXN0ICdu bykpCiAgICAgICAoKG1hdGNoLWVuZCAxMikKICAgICAgICA7OyBTZWFyY2ggZm9yd2FyZCBmb3Ig bWF0Y2hpbmcgZW5kdGFzawogICAgICAgIChzZXRxIHJlZyAiXFw8ZW5kdGFza1xcPiIgKQogICAg ICAgIChzZXRxIG5lc3QgJ25vKSkKICAgICAgICgobWF0Y2gtZW5kIDEyKQogICAgICAgIDs7IFNl YXJjaCBmb3J3YXJkIGZvciBtYXRjaGluZyBlbmRnZW5lcmF0ZQogICAgICAgIChzZXRxIHJlZyAi XFwoXFw8Z2VuZXJhdGVcXD5cXClcXHxcXChcXDxlbmRnZW5lcmF0ZVxcPlxcKSIgKSkKICAgICAg ICgobWF0Y2gtZW5kIDEzKQogICAgICAgIDs7IFNlYXJjaCBmb3J3YXJkIGZvciBtYXRjaGluZyBl bmRncm91cAogICAgICAgIChzZXRxIHJlZyAiXFwoXFw8Y292ZXJncm91cFxcPlxcKVxcfFxcKFxc PGVuZGdyb3VwXFw+XFwpIiApKQogICAgICAgKChtYXRjaC1lbmQgMTQpCiAgICAgICAgOzsgU2Vh cmNoIGZvcndhcmQgZm9yIG1hdGNoaW5nIGVuZHByb3BlcnR5CiAgICAgICAgKHNldHEgcmVnICJc XChcXDxwcm9wZXJ0eVxcPlxcKVxcfFxcKFxcPGVuZHByb3BlcnR5XFw+XFwpIiApKQogICAgICAg KChtYXRjaC1lbmQgMTUpCiAgICAgICAgOzsgU2VhcmNoIGZvcndhcmQgZm9yIG1hdGNoaW5nIGVu ZHNlcXVlbmNlCiAgICAgICAgKHNldHEgcmVnICJcXChcXDxcXChyYW5kXFwpP3NlcXVlbmNlXFw+ XFwpXFx8XFwoXFw8ZW5kc2VxdWVuY2VcXD5cXCkiICkKICAgICAgICAoc2V0cSBtZCAzKSkgOyAz IHRvIGdldCB0byBlbmRzZXF1ZW5jZSBpbiB0aGUgcmVnIGFib3ZlCiAgICAgICAoKG1hdGNoLWVu ZCAxNykKICAgICAgICA7OyBTZWFyY2ggZm9yd2FyZCBmb3IgbWF0Y2hpbmcgZW5kY2xvY2tpbmcK ICAgICAgICAoc2V0cSByZWcgIlxcKFxcPGNsb2NraW5nXFw+XFwpXFx8XFwoXFw8ZW5kY2xvY2tp bmdcXD5cXCkiICkpKQogICAgICAoaWYgKGFuZCByZWcKCSAgICAgICAoZm9yd2FyZC13b3JkLXN0 cmljdGx5IDEpKQoJICAoY2F0Y2ggJ3NraXAKCSAgICAoaWYgKGVxIG5lc3QgJ3llcykKCQkobGV0 ICgoZGVwdGggMSkKCQkgICAgICBoZXJlKQoJCSAgKHdoaWxlICh2ZXJpbG9nLXJlLXNlYXJjaC1m b3J3YXJkIHJlZyBuaWwgJ21vdmUpCgkJICAgIChjb25kCgkJICAgICAoKG1hdGNoLWVuZCBtZCkg OyBhIGNsb3NlciBpbiByZWd1bGFyIGV4cHJlc3Npb24sIHNvIHdlIGFyZSBjbGltYmluZyBvdXQK CQkgICAgICAoc2V0cSBkZXB0aCAoMS0gZGVwdGgpKQoJCSAgICAgIChpZiAoPSAwIGRlcHRoKSA7 IHdlIGFyZSBvdXQhCgkJCSAgKHRocm93ICdza2lwIDEpKSkKCQkgICAgICgobWF0Y2gtZW5kIDEp IDsgYW4gb3BlbmVyIGluIHRoZSByLWUsIHNvIHdlIGFyZSBpbiBkZWVwZXIgbm93CgkJICAgICAg KHNldHEgaGVyZSAocG9pbnQpKSA7IHJlbWVtYmVyIHdoZXJlIHdlIHN0YXJ0ZWQKCQkgICAgICAo Z290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMSkpCgkJICAgICAgKGNvbmQKCQkgICAgICAgKChp ZiAob3IKCQkJICAgICAobG9va2luZy1hdCB2ZXJpbG9nLWRpc2FibGUtZm9yay1yZSkKCQkJICAg ICAoYW5kIChsb29raW5nLWF0ICJmb3JrIikKCQkJCSAgKHByb2duCgkJCQkgICAgKGZvcndhcmQt d29yZC1zdHJpY3RseSAtMSkKCQkJCSAgICAobG9va2luZy1hdCB2ZXJpbG9nLWRpc2FibGUtZm9y ay1yZSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAgOyBpdCBpcyBhIGRp c2FibGUgZm9yazsgYW5vdGhlciBmYWxzZSBhbGFybQoJCQkgICAgICAoZ290by1jaGFyIChtYXRj aC1lbmQgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAgOyBpdCBpcyBhIHNp bXBsZSBmb3JrIChvciBoYXMgbm90aGluZyB0byBkbyB3aXRoIGZvcmspCgkJCSAgICAoZ290by1j aGFyIGhlcmUpCgkJCSAgICAoc2V0cSBkZXB0aCAoMSsgZGVwdGgpKSkpKSkpKSkpCgkgICAgICAo aWYgKHZlcmlsb2ctcmUtc2VhcmNoLWZvcndhcmQgcmVnIG5pbCAnbW92ZSkKCQkgICh0aHJvdyAn c2tpcCAxKSkpKSkpCgogICAgICgobG9va2luZy1hdCAoY29uY2F0CgkJICAgIlxcKFxcPFxcKG1h Y3JvXFwpP21vZHVsZVxcPlxcKVxcfCIKCQkgICAiXFwoXFw8cHJpbWl0aXZlXFw+XFwpXFx8IgoJ CSAgICJcXChcXDxjbGFzc1xcPlxcKVxcfCIKCQkgICAiXFwoXFw8cHJvZ3JhbVxcPlxcKVxcfCIK CQkgICAiXFwoXFw8aW50ZXJmYWNlXFw+XFwpXFx8IgogICAgICAgICAgICAgICAgICAiXFwoXFw8 cGFja2FnZVxcPlxcKVxcfCIKICAgICAgICAgICAgICAgICAgIlxcKFxcPGNvbm5lY3Rtb2R1bGVc XD5cXCkiKSkKICAgICAgKGNvbmQKICAgICAgICgobWF0Y2gtZW5kIDEpCgkodmVyaWxvZy1yZS1z ZWFyY2gtZm9yd2FyZCAiXFw8ZW5kbW9kdWxlXFw+IiBuaWwgJ21vdmUpKQogICAgICAgKChtYXRj aC1lbmQgMikKCSh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkICJcXDxlbmRwcmltaXRpdmVcXD4i IG5pbCAnbW92ZSkpCiAgICAgICAoKG1hdGNoLWVuZCAzKQoJKHZlcmlsb2ctcmUtc2VhcmNoLWZv cndhcmQgIlxcPGVuZGNsYXNzXFw+IiBuaWwgJ21vdmUpKQogICAgICAgKChtYXRjaC1lbmQgNCkK CSh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkICJcXDxlbmRwcm9ncmFtXFw+IiBuaWwgJ21vdmUp KQogICAgICAgKChtYXRjaC1lbmQgNSkKCSh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkICJcXDxl bmRpbnRlcmZhY2VcXD4iIG5pbCAnbW92ZSkpCiAgICAgICAoKG1hdGNoLWVuZCA2KQoJKHZlcmls b2ctcmUtc2VhcmNoLWZvcndhcmQgIlxcPGVuZHBhY2thZ2VcXD4iIG5pbCAnbW92ZSkpCiAgICAg ICAoKG1hdGNoLWVuZCA3KQogICAgICAgKHZlcmlsb2ctcmUtc2VhcmNoLWZvcndhcmQgIlxcPGVu ZGNvbm5lY3Rtb2R1bGVcXD4iIG5pbCAnbW92ZSkpCiAgICAgICAodAoJKGdvdG8tY2hhciBzdCkK CShpZiAoPSAoZm9sbG93aW5nLWNoYXIpID9cKSApCgkgICAgKGZvcndhcmQtY2hhciAxKQoJICAo Zm9yd2FyZC1zZXhwIDEpKSkpKQogICAgICh0CiAgICAgIChnb3RvLWNoYXIgc3QpCiAgICAgIChp ZiAoPSAoZm9sbG93aW5nLWNoYXIpID9cKSApCgkgIChmb3J3YXJkLWNoYXIgMSkKCShmb3J3YXJk LXNleHAgMSkpKSkpKQoKKGRlZnVuIHZlcmlsb2ctZGVjbGFyYXRpb24tYmVnICgpCiAgKHZlcmls b2ctcmUtc2VhcmNoLWJhY2t3YXJkIHZlcmlsb2ctZGVjbGFyYXRpb24tcmUgKGJvYnApIHQpKQoK OzsKOzsKOzsgIE1vZGUKOzsKKGRlZnZhciB2ZXJpbG9nLXdoaWNoLXRvb2wgMSkKOzs7IyMjYXV0 b2xvYWQKKGRlZmluZS1kZXJpdmVkLW1vZGUgdmVyaWxvZy1tb2RlIHByb2ctbW9kZSAiVmVyaWxv ZyIKICAiTWFqb3IgbW9kZSBmb3IgZWRpdGluZyBWZXJpbG9nIGNvZGUuClxcPHZlcmlsb2ctbW9k ZS1tYXA+ClNlZSBcXFtkZXNjcmliZS1mdW5jdGlvbl0gdmVyaWxvZy1hdXRvIChcXFt2ZXJpbG9n LWF1dG9dKSBmb3IgZGV0YWlscyBvbiBob3cKQVVUT3MgY2FuIGltcHJvdmUgY29kaW5nIGVmZmlj aWVuY3kuCgpVc2UgXFxbdmVyaWxvZy1mYXFdIGZvciBhIHBvaW50ZXIgdG8gZnJlcXVlbnRseSBh c2tlZCBxdWVzdGlvbnMuCgpORVdMSU5FLCBUQUIgaW5kZW50cyBmb3IgVmVyaWxvZyBjb2RlLgpE ZWxldGUgY29udmVydHMgdGFicyB0byBzcGFjZXMgYXMgaXQgbW92ZXMgYmFjay4KClN1cHBvcnRz IGhpZ2hsaWdodGluZy4KClR1cm5pbmcgb24gVmVyaWxvZyBtb2RlIGNhbGxzIHRoZSB2YWx1ZSBv ZiB0aGUgdmFyaWFibGUgYHZlcmlsb2ctbW9kZS1ob29rJwp3aXRoIG5vIGFyZ3MsIGlmIHRoYXQg dmFsdWUgaXMgbm9uLW5pbC4KClZhcmlhYmxlcyBjb250cm9sbGluZyBpbmRlbnRhdGlvbi9lZGl0 IHN0eWxlOgoKIHZhcmlhYmxlIGB2ZXJpbG9nLWluZGVudC1sZXZlbCcgICAgICAoZGVmYXVsdCAz KQogICBJbmRlbnRhdGlvbiBvZiBWZXJpbG9nIHN0YXRlbWVudHMgd2l0aCByZXNwZWN0IHRvIGNv bnRhaW5pbmcgYmxvY2suCiBgdmVyaWxvZy1pbmRlbnQtbGV2ZWwtbW9kdWxlJyAgICAgICAgKGRl ZmF1bHQgMykKICAgQWJzb2x1dGUgaW5kZW50YXRpb24gb2YgTW9kdWxlIGxldmVsIFZlcmlsb2cg c3RhdGVtZW50cy4KICAgU2V0IHRvIDAgdG8gZ2V0IGluaXRpYWwgYW5kIGFsd2F5cyBzdGF0ZW1l bnRzIGxpbmVkIHVwCiAgIG9uIHRoZSBsZWZ0IHNpZGUgb2YgeW91ciBzY3JlZW4uCiBgdmVyaWxv Zy1pbmRlbnQtbGV2ZWwtZGVjbGFyYXRpb24nICAgKGRlZmF1bHQgMykKICAgSW5kZW50YXRpb24g b2YgZGVjbGFyYXRpb25zIHdpdGggcmVzcGVjdCB0byBjb250YWluaW5nIGJsb2NrLgogICBTZXQg dG8gMCB0byBnZXQgdGhlbSBsaXN0IHJpZ2h0IHVuZGVyIGNvbnRhaW5pbmcgYmxvY2suCiBgdmVy aWxvZy1pbmRlbnQtbGV2ZWwtYmVoYXZpb3JhbCcgICAgKGRlZmF1bHQgMykKICAgSW5kZW50YXRp b24gb2YgZmlyc3QgYmVnaW4gaW4gYSB0YXNrIG9yIGZ1bmN0aW9uIGJsb2NrCiAgIFNldCB0byAw IHRvIGdldCBzdWNoIGNvZGUgdG8gbGluZWQgdXAgdW5kZXJuZWF0aCB0aGUgdGFzayBvcgogICBm dW5jdGlvbiBrZXl3b3JkLgogYHZlcmlsb2ctaW5kZW50LWxldmVsLWRpcmVjdGl2ZScgICAgIChk ZWZhdWx0IDEpCiAgIEluZGVudGF0aW9uIG9mIFxcPWBpZmRlZi9cXD1gZW5kaWYgYmxvY2tzLgog YHZlcmlsb2ctY2V4cC1pbmRlbnQnICAgICAgICAgICAgICAoZGVmYXVsdCAxKQogICBJbmRlbnRh dGlvbiBvZiBWZXJpbG9nIHN0YXRlbWVudHMgYnJva2VuIGFjcm9zcyBsaW5lcyBpLmUuOgogICAg ICBpZiAoYSkKICAgICAgICBiZWdpbgogYHZlcmlsb2ctY2FzZS1pbmRlbnQnICAgICAgICAgICAg ICAoZGVmYXVsdCAyKQogICBJbmRlbnRhdGlvbiBmb3IgY2FzZSBzdGF0ZW1lbnRzLgogYHZlcmls b2ctYXV0by1uZXdsaW5lJyAgICAgICAgICAgICAoZGVmYXVsdCBuaWwpCiAgIE5vbi1uaWwgbWVh bnMgYXV0b21hdGljYWxseSBuZXdsaW5lIGFmdGVyIHNlbWljb2xvbnMgYW5kIHRoZSBwdW5jdHVh dGlvbgogICBtYXJrIGFmdGVyIGFuIGVuZC4KIGB2ZXJpbG9nLWF1dG8taW5kZW50LW9uLW5ld2xp bmUnICAgKGRlZmF1bHQgdCkKICAgTm9uLW5pbCBtZWFucyBhdXRvbWF0aWNhbGx5IGluZGVudCBs aW5lIGFmdGVyIG5ld2xpbmUuCiBgdmVyaWxvZy10YWItYWx3YXlzLWluZGVudCcgICAgICAgIChk ZWZhdWx0IHQpCiAgIE5vbi1uaWwgbWVhbnMgVEFCIGluIFZlcmlsb2cgbW9kZSBzaG91bGQgYWx3 YXlzIHJlaW5kZW50IHRoZSBjdXJyZW50IGxpbmUsCiAgIHJlZ2FyZGxlc3Mgb2Ygd2hlcmUgaW4g dGhlIGxpbmUgcG9pbnQgaXMgd2hlbiB0aGUgVEFCIGNvbW1hbmQgaXMgdXNlZC4KIGB2ZXJpbG9n LWluZGVudC1iZWdpbi1hZnRlci1pZicgICAgKGRlZmF1bHQgdCkKICAgTm9uLW5pbCBtZWFucyB0 byBpbmRlbnQgYmVnaW4gc3RhdGVtZW50cyBmb2xsb3dpbmcgYSBwcmVjZWRpbmcKICAgaWYsIGVs c2UsIHdoaWxlLCBmb3IgYW5kIHJlcGVhdCBzdGF0ZW1lbnRzLCBpZiBhbnkuICBPdGhlcndpc2Us CiAgIHRoZSBiZWdpbiBpcyBsaW5lZCB1cCB3aXRoIHRoZSBwcmVjZWRpbmcgdG9rZW4uICBJZiB0 LCB5b3UgZ2V0OgogICAgICBpZiAoYSkKICAgICAgICAgYmVnaW4gLy8gYW1vdW50IG9mIGluZGVu dCBiYXNlZCBvbiBgdmVyaWxvZy1jZXhwLWluZGVudCcKICAgb3RoZXJ3aXNlIHlvdSBnZXQ6CiAg ICAgIGlmIChhKQogICAgICBiZWdpbgogYHZlcmlsb2ctYXV0by1lbmRjb21tZW50cycgICAgICAg ICAoZGVmYXVsdCB0KQogICBOb24tbmlsIG1lYW5zIGEgY29tbWVudCAvKiAuLi4gKi8gaXMgc2V0 IGFmdGVyIHRoZSBlbmRzIHdoaWNoIGVuZHMKICAgY2FzZXMsIHRhc2tzLCBmdW5jdGlvbnMgYW5k IG1vZHVsZXMuCiAgIFRoZSB0eXBlIGFuZCBuYW1lIG9mIHRoZSBvYmplY3Qgd2lsbCBiZSBzZXQg YmV0d2VlbiB0aGUgYnJhY2VzLgogYHZlcmlsb2ctbWluaW11bS1jb21tZW50LWRpc3RhbmNlJyAo ZGVmYXVsdCAxMCkKICAgTWluaW11bSBkaXN0YW5jZSAoaW4gbGluZXMpIGJldHdlZW4gYmVnaW4g YW5kIGVuZCByZXF1aXJlZCBiZWZvcmUgYSBjb21tZW50CiAgIHdpbGwgYmUgaW5zZXJ0ZWQuICBT ZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gemVybyByZXN1bHRzIGluIGV2ZXJ5CiAgIGVuZCBhY3F1 aXJpbmcgYSBjb21tZW50OyB0aGUgZGVmYXVsdCBhdm9pZHMgdG9vIG1hbnkgcmVkdW5kYW50CiAg IGNvbW1lbnRzIGluIHRpZ2h0IHF1YXJ0ZXJzLgogYHZlcmlsb2ctYXV0by1saW5ldXAnICAgICAg ICAgICAgICAoZGVmYXVsdCBgZGVjbGFyYXRpb25zJykKICAgTGlzdCBvZiBjb250ZXh0cyB3aGVy ZSBhdXRvIGxpbmV1cCBvZiBjb2RlIHNob3VsZCBiZSBkb25lLgoKVmFyaWFibGVzIGNvbnRyb2xs aW5nIG90aGVyIGFjdGlvbnM6CgogYHZlcmlsb2ctbGludGVyJyAgICAgICAgICAgICAgICAgICAo ZGVmYXVsdCBgbm9uZScpCiAgIFVuaXggcHJvZ3JhbSB0byBjYWxsIHRvIHJ1biB0aGUgbGludCBj aGVja2VyLiAgVGhpcyBpcyB0aGUgZGVmYXVsdAogICBjb21tYW5kIGZvciBcXFtjb21waWxlLWNv bW1hbmRdIGFuZCBcXFt2ZXJpbG9nLWF1dG8tc2F2ZS1jb21waWxlXS4KClNlZSBcXFtjdXN0b21p emVdIGZvciB0aGUgY29tcGxldGUgbGlzdCBvZiB2YXJpYWJsZXMuCgpBVVRPIGV4cGFuc2lvbiBm dW5jdGlvbnMgYXJlLCBpbiBwYXJ0OgoKICAgIFxcW3Zlcmlsb2ctYXV0b10gIEV4cGFuZCBBVVRP IHN0YXRlbWVudHMuCiAgICBcXFt2ZXJpbG9nLWRlbGV0ZS1hdXRvXSAgUmVtb3ZlIHRoZSBBVVRP cy4KICAgIFxcW3Zlcmlsb2ctaW5qZWN0LWF1dG9dICBJbnNlcnQgQVVUT3MgZm9yIHRoZSBmaXJz dCB0aW1lLgoKU29tZSBvdGhlciBmdW5jdGlvbnMgYXJlOgoKICAgIFxcW2NvbXBsZXRpb24tYXQt cG9pbnRdICAgIENvbXBsZXRlIHdvcmQgd2l0aCBhcHByb3ByaWF0ZSBwb3NzaWJpbGl0aWVzLgog ICAgXFxbdmVyaWxvZy1tYXJrLWRlZnVuXSAgTWFyayBmdW5jdGlvbi4KICAgIFxcW3Zlcmlsb2ct YmVnLW9mLWRlZnVuXSAgTW92ZSB0byBiZWdpbm5pbmcgb2YgY3VycmVudCBmdW5jdGlvbi4KICAg IFxcW3Zlcmlsb2ctZW5kLW9mLWRlZnVuXSAgTW92ZSB0byBlbmQgb2YgY3VycmVudCBmdW5jdGlv bi4KICAgIFxcW3Zlcmlsb2ctbGFiZWwtYmVdICBMYWJlbCBtYXRjaGluZyBiZWdpbiAuLi4gZW5k LCBmb3JrIC4uLiBqb2luLCBldGMgc3RhdGVtZW50cy4KCiAgICBcXFt2ZXJpbG9nLWNvbW1lbnQt cmVnaW9uXSAgUHV0IG1hcmtlZCBhcmVhIGluIGEgY29tbWVudC4KICAgIFxcW3Zlcmlsb2ctdW5j b21tZW50LXJlZ2lvbl0gIFVuY29tbWVudCBhbiBhcmVhIGNvbW1lbnRlZCB3aXRoIFxcW3Zlcmls b2ctY29tbWVudC1yZWdpb25dLgogICAgXFxbdmVyaWxvZy1pbnNlcnQtYmxvY2tdICBJbnNlcnQg YmVnaW4gLi4uIGVuZC4KICAgIFxcW3Zlcmlsb2ctc3Rhci1jb21tZW50XSAgICBJbnNlcnQgLyog Li4uICovLgoKICAgIFxcW3Zlcmlsb2ctc2stYWx3YXlzXSAgSW5zZXJ0IGFuIGFsd2F5cyBAKEFT KSBiZWdpbiAuLiBlbmQgYmxvY2suCiAgICBcXFt2ZXJpbG9nLXNrLWJlZ2luXSAgSW5zZXJ0IGEg YmVnaW4gLi4gZW5kIGJsb2NrLgogICAgXFxbdmVyaWxvZy1zay1jYXNlXSAgSW5zZXJ0IGEgY2Fz ZSBibG9jaywgcHJvbXB0aW5nIGZvciBkZXRhaWxzLgogICAgXFxbdmVyaWxvZy1zay1mb3JdICBJ bnNlcnQgYSBmb3IgKC4uLikgYmVnaW4gLi4gZW5kIGJsb2NrLCBwcm9tcHRpbmcgZm9yIGRldGFp bHMuCiAgICBcXFt2ZXJpbG9nLXNrLWdlbmVyYXRlXSAgSW5zZXJ0IGEgZ2VuZXJhdGUgLi4gZW5k Z2VuZXJhdGUgYmxvY2suCiAgICBcXFt2ZXJpbG9nLXNrLWhlYWRlcl0gIEluc2VydCBhIGhlYWRl ciBibG9jayBhdCB0aGUgdG9wIG9mIGZpbGUuCiAgICBcXFt2ZXJpbG9nLXNrLWluaXRpYWxdICBJ bnNlcnQgYW4gaW5pdGlhbCBiZWdpbiAuLiBlbmQgYmxvY2suCiAgICBcXFt2ZXJpbG9nLXNrLWZv cmtdICBJbnNlcnQgYSBmb3JrIGJlZ2luIC4uIGVuZCAuLiBqb2luIGJsb2NrLgogICAgXFxbdmVy aWxvZy1zay1tb2R1bGVdICBJbnNlcnQgYSBtb2R1bGUgLi4gKC8qQVVUT0FSRyovKTsuLiBlbmRt b2R1bGUgYmxvY2suCiAgICBcXFt2ZXJpbG9nLXNrLW92bS1jbGFzc10gIEluc2VydCBhbiBPVk0g Q2xhc3MgYmxvY2suCiAgICBcXFt2ZXJpbG9nLXNrLXV2bS1vYmplY3RdICBJbnNlcnQgYW4gVVZN IE9iamVjdCBibG9jay4KICAgIFxcW3Zlcmlsb2ctc2stdXZtLWNvbXBvbmVudF0gIEluc2VydCBh biBVVk0gQ29tcG9uZW50IGJsb2NrLgogICAgXFxbdmVyaWxvZy1zay1wcmltaXRpdmVdICBJbnNl cnQgYSBwcmltaXRpdmUgLi4gKC4uICk7Li4gZW5kcHJpbWl0aXZlIGJsb2NrLgogICAgXFxbdmVy aWxvZy1zay1yZXBlYXRdICBJbnNlcnQgYSByZXBlYXQgKC4uKSBiZWdpbiAuLiBlbmQgYmxvY2su CiAgICBcXFt2ZXJpbG9nLXNrLXNwZWNpZnldICBJbnNlcnQgYSBzcGVjaWZ5IC4uIGVuZHNwZWNp ZnkgYmxvY2suCiAgICBcXFt2ZXJpbG9nLXNrLXRhc2tdICBJbnNlcnQgYSB0YXNrIC4uIGJlZ2lu IC4uIGVuZCBlbmR0YXNrIGJsb2NrLgogICAgXFxbdmVyaWxvZy1zay13aGlsZV0gIEluc2VydCBh IHdoaWxlICguLi4pIGJlZ2luIC4uIGVuZCBibG9jaywgcHJvbXB0aW5nIGZvciBkZXRhaWxzLgog ICAgXFxbdmVyaWxvZy1zay1jYXNleF0gIEluc2VydCBhIGNhc2V4ICguLi4pIGl0ZW06IGJlZ2lu Li4gZW5kIGVuZGNhc2UgYmxvY2ssIHByb21wdGluZyBmb3IgZGV0YWlscy4KICAgIFxcW3Zlcmls b2ctc2stY2FzZXpdICBJbnNlcnQgYSBjYXNleiAoLi4uKSBpdGVtOiBiZWdpbi4uIGVuZCBlbmRj YXNlIGJsb2NrLCBwcm9tcHRpbmcgZm9yIGRldGFpbHMuCiAgICBcXFt2ZXJpbG9nLXNrLWlmXSAg SW5zZXJ0IGFuIGlmICguLikgYmVnaW4gLi4gZW5kIGJsb2NrLgogICAgXFxbdmVyaWxvZy1zay1l bHNlLWlmXSAgSW5zZXJ0IGFuIGVsc2UgaWYgKC4uKSBiZWdpbiAuLiBlbmQgYmxvY2suCiAgICBc XFt2ZXJpbG9nLXNrLWNvbW1lbnRdICBJbnNlcnQgYSBjb21tZW50IGJsb2NrLgogICAgXFxbdmVy aWxvZy1zay1hc3NpZ25dICBJbnNlcnQgYW4gYXNzaWduIC4uID0gLi47IHN0YXRlbWVudC4KICAg IFxcW3Zlcmlsb2ctc2stZnVuY3Rpb25dICBJbnNlcnQgYSBmdW5jdGlvbiAuLiBiZWdpbiAuLiBl bmQgZW5kZnVuY3Rpb24gYmxvY2suCiAgICBcXFt2ZXJpbG9nLXNrLWlucHV0XSAgSW5zZXJ0IGFu IGlucHV0IGRlY2xhcmF0aW9uLCBwcm9tcHRpbmcgZm9yIGRldGFpbHMuCiAgICBcXFt2ZXJpbG9n LXNrLW91dHB1dF0gIEluc2VydCBhbiBvdXRwdXQgZGVjbGFyYXRpb24sIHByb21wdGluZyBmb3Ig ZGV0YWlscy4KICAgIFxcW3Zlcmlsb2ctc2stc3RhdGUtbWFjaGluZV0gIEluc2VydCBhIHN0YXRl IG1hY2hpbmUgZGVmaW5pdGlvbiwgcHJvbXB0aW5nIGZvciBkZXRhaWxzLgogICAgXFxbdmVyaWxv Zy1zay1pbm91dF0gIEluc2VydCBhbiBpbm91dCBkZWNsYXJhdGlvbiwgcHJvbXB0aW5nIGZvciBk ZXRhaWxzLgogICAgXFxbdmVyaWxvZy1zay13aXJlXSAgSW5zZXJ0IGEgd2lyZSBkZWNsYXJhdGlv biwgcHJvbXB0aW5nIGZvciBkZXRhaWxzLgogICAgXFxbdmVyaWxvZy1zay1yZWddICBJbnNlcnQg YSByZWdpc3RlciBkZWNsYXJhdGlvbiwgcHJvbXB0aW5nIGZvciBkZXRhaWxzLgogICAgXFxbdmVy aWxvZy1zay1kZWZpbmUtc2lnbmFsXSAgRGVmaW5lIHNpZ25hbCB1bmRlciBwb2ludCBhcyBhIHJl Z2lzdGVyIGF0IHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4KCkFsbCBrZXkgYmluZGluZ3MgY2FuIGJl IHNlZW4gaW4gYSBWZXJpbG9nLWJ1ZmZlciB3aXRoIFxcW2Rlc2NyaWJlLWJpbmRpbmdzXS4KS2V5 IGJpbmRpbmdzIHNwZWNpZmljIHRvIGB2ZXJpbG9nLW1vZGUtbWFwJyBhcmU6CgpcXHt2ZXJpbG9n LW1vZGUtbWFwfSIKICA6YWJicmV2LXRhYmxlIHZlcmlsb2ctbW9kZS1hYmJyZXYtdGFibGUKICAo c2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdiZWdpbm5pbmctb2YtZGVmdW4tZnVuY3Rpb24pCiAg ICAgICAndmVyaWxvZy1iZWctb2YtZGVmdW4pCiAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAn ZW5kLW9mLWRlZnVuLWZ1bmN0aW9uKQogICAgICAgJ3Zlcmlsb2ctZW5kLW9mLWRlZnVuKQogIChz ZXQtc3ludGF4LXRhYmxlIHZlcmlsb2ctbW9kZS1zeW50YXgtdGFibGUpCiAgKHNldCAobWFrZS1s b2NhbC12YXJpYWJsZSAnaW5kZW50LWxpbmUtZnVuY3Rpb24pCiAgICAgICAjJ3Zlcmlsb2ctaW5k ZW50LWxpbmUtcmVsYXRpdmUpCiAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAnY29tbWVudC1p bmRlbnQtZnVuY3Rpb24pICd2ZXJpbG9nLWNvbW1lbnQtaW5kZW50KQogIChzZXQgKG1ha2UtbG9j YWwtdmFyaWFibGUgJ3BhcnNlLXNleHAtaWdub3JlLWNvbW1lbnRzKSBuaWwpCiAgKHNldCAobWFr ZS1sb2NhbC12YXJpYWJsZSAnY29tbWVudC1zdGFydCkgIi8vICIpCiAgKHNldCAobWFrZS1sb2Nh bC12YXJpYWJsZSAnY29tbWVudC1lbmQpICIiKQogIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUg J2NvbW1lbnQtc3RhcnQtc2tpcCkgIi9cXCorICpcXHwvLyAqIikKICAoc2V0IChtYWtlLWxvY2Fs LXZhcmlhYmxlICdjb21tZW50LW11bHRpLWxpbmUpIG5pbCkKICA7OyBTZXQgdXAgZm9yIGNvbXBp bGF0aW9uCiAgKHNldHEgdmVyaWxvZy13aGljaC10b29sIDEpCiAgKHNldHEgdmVyaWxvZy10b29s ICd2ZXJpbG9nLWxpbnRlcikKICAodmVyaWxvZy1zZXQtY29tcGlsZS1jb21tYW5kKQogICh3aGVu IChib3VuZHAgJ2hhY2stbG9jYWwtdmFyaWFibGVzLWhvb2spICA7IEFsc28gbW9kaWZ5IGFueSBm aWxlLWxvY2FsLXZhcmlhYmxlcwogICAgKGFkZC1ob29rICdoYWNrLWxvY2FsLXZhcmlhYmxlcy1o b29rICd2ZXJpbG9nLW1vZGlmeS1jb21waWxlLWNvbW1hbmQgdCkpCgogIDs7IFNldHRpbmcgdXAg bWVudXMKICAod2hlbiAoZmVhdHVyZXAgJ3hlbWFjcykKICAgIChlYXN5LW1lbnUtYWRkIHZlcmls b2ctc3RtdC1tZW51KQogICAgKGVhc3ktbWVudS1hZGQgdmVyaWxvZy1tZW51KQogICAgKHNldHEg bW9kZS1wb3B1cC1tZW51IChjb25zICJWZXJpbG9nIE1vZGUiIHZlcmlsb2ctc3RtdC1tZW51KSkp CgogIDs7IFN0dWZmIGZvciBHTlUgRW1hY3MKICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdm b250LWxvY2stZGVmYXVsdHMpCiAgICAgICBgKCh2ZXJpbG9nLWZvbnQtbG9jay1rZXl3b3JkcwoJ ICB2ZXJpbG9nLWZvbnQtbG9jay1rZXl3b3Jkcy0xCgkgIHZlcmlsb2ctZm9udC1sb2NrLWtleXdv cmRzLTIKCSAgdmVyaWxvZy1mb250LWxvY2sta2V5d29yZHMtMykKICAgICAgICAgbmlsIG5pbCBu aWwKCSAsKGlmIChmdW5jdGlvbnAgJ3N5bnRheC1wcHNzKQoJICAgICAgOzsgdmVyaWxvZy1iZWct b2YtZGVmdW4gdXNlcyBzeW50YXgtcHBzcywgYW5kIHN5bnRheC1wcHNzIHVzZXMKCSAgICAgIDs7 IGZvbnQtbG9jay1iZWdpbm5pbmctb2Ytc3ludGF4LWZ1bmN0aW9uLCBzbwoJICAgICAgOzsgZm9u dC1sb2NrLWJlZ2lubmluZy1vZi1zeW50YXgtZnVuY3Rpb24sIGNhbid0IHVzZQogICAgICAgICAg ICAgIDs7IHZlcmlsb2ctYmVnLW9mLWRlZnVuLgoJICAgICAgbmlsCgkgICAgJ3Zlcmlsb2ctYmVn LW9mLWRlZnVuKSkpCgogIDs7IFN0dWZmIGZvciBtdWx0aWxpbmUgZm9udC1sb2NrCiAgKHNldCAo bWFrZS1sb2NhbC12YXJpYWJsZSAnZm9udC1sb2NrLW11bHRpbGluZSkgdCkKCiAgOzstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICA7 OyBub3cgaG9vayBpbiAndmVyaWxvZy1oaWdobGlnaHQtaW5jbHVkZS1maWxlcyAoZWxkby1tb2Rl LmVsJnNwaWNlLW1vZGUuZWwpCiAgOzsgYWxsIGJ1ZmZlciBsb2NhbDoKICAodW5sZXNzIG5vbmlu dGVyYWN0aXZlICA7IEVsc2UgY2FuJ3Qgc2VlIHRoZSByZXN1bHQsIGFuZCBjaGFuZ2UgaG9va3Mg YXJlIHNsb3cKICAgICh3aGVuIChmZWF0dXJlcCAneGVtYWNzKQogICAgICAobWFrZS1sb2NhbC1o b29rICdmb250LWxvY2stbW9kZS1ob29rKQogICAgICAobWFrZS1sb2NhbC1ob29rICdmb250LWxv Y2stYWZ0ZXItZm9udGlmeS1idWZmZXItaG9vayk7IGRvZXNuJ3QgZXhpc3QgaW4gRW1hY3MKICAg ICAgKG1ha2UtbG9jYWwtaG9vayAnYWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucykpCiAgICAoYWRkLWhv b2sgJ2ZvbnQtbG9jay1tb2RlLWhvb2sgJ3Zlcmlsb2ctaGlnaGxpZ2h0LWJ1ZmZlciB0IHQpCiAg ICAoYWRkLWhvb2sgJ2ZvbnQtbG9jay1hZnRlci1mb250aWZ5LWJ1ZmZlci1ob29rICd2ZXJpbG9n LWhpZ2hsaWdodC1idWZmZXIgdCB0KSA7IG5vdCBpbiBFbWFjcwogICAgKGFkZC1ob29rICdhZnRl ci1jaGFuZ2UtZnVuY3Rpb25zICd2ZXJpbG9nLWhpZ2hsaWdodC1yZWdpb24gdCB0KSkKCiAgOzsg VGVsbCBpbWVudSBob3cgdG8gaGFuZGxlIFZlcmlsb2cuCiAgKHNldCAobWFrZS1sb2NhbC12YXJp YWJsZSAnaW1lbnUtZ2VuZXJpYy1leHByZXNzaW9uKQogICAgICAgdmVyaWxvZy1pbWVudS1nZW5l cmljLWV4cHJlc3Npb24pCiAgOzsgVGVsbCB3aGljaC1mdW5jLW1vZGVzIHRoYXQgaW1lbnUga25v d3MgYWJvdXQgdmVyaWxvZwogICh3aGVuIChhbmQgKGJvdW5kcCAnd2hpY2gtZnVuYy1tb2Rlcykg KGxpc3RwIHdoaWNoLWZ1bmMtbW9kZXMpKQogICAgKGFkZC10by1saXN0ICd3aGljaC1mdW5jLW1v ZGVzICd2ZXJpbG9nLW1vZGUpKQogIDs7IGhpZGVzaG93IHN1cHBvcnQKICAod2hlbiAoYm91bmRw ICdocy1zcGVjaWFsLW1vZGVzLWFsaXN0KQogICAgKHVubGVzcyAoYXNzcSAndmVyaWxvZy1tb2Rl IGhzLXNwZWNpYWwtbW9kZXMtYWxpc3QpCiAgICAgIChzZXRxIGhzLXNwZWNpYWwtbW9kZXMtYWxp c3QKICAgICAgICAgICAgKGNvbnMgJyh2ZXJpbG9nLW1vZGUgIlxcPGJlZ2luXFw+IiAiXFw8ZW5k XFw+IiBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWxvZy1mb3J3YXJk LXNleHAtZnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgIGhzLXNwZWNpYWwtbW9kZXMtYWxpc3Qp KSkpCgogIChhZGQtaG9vayAnY29tcGxldGlvbi1hdC1wb2ludC1mdW5jdGlvbnMKICAgICAgICAg ICAgIyd2ZXJpbG9nLWNvbXBsZXRpb24tYXQtcG9pbnQgbmlsICdsb2NhbCkKCiAgOzsgU3R1ZmYg Zm9yIGF1dG9zCiAgKGFkZC1ob29rIChpZiAoYm91bmRwICd3cml0ZS1jb250ZW50cy1ob29rcykg J3dyaXRlLWNvbnRlbnRzLWhvb2tzCiAgICAgICAgICAgICAgJ3dyaXRlLWNvbnRlbnRzLWZ1bmN0 aW9ucykgOyBFbWFjcyA+PSAyMi4xCiAgICAgICAgICAgICd2ZXJpbG9nLWF1dG8tc2F2ZS1jaGVj ayBuaWwgJ2xvY2FsKQogIDs7IHZlcmlsb2ctbW9kZS1ob29rIGNhbGwgYWRkZWQgYnkgZGVmaW5l LWRlcml2ZWQtbW9kZQogICkKCjs7OyBJbnRlZ3JhdGlvbiB3aXRoIHRoZSBzcGVlZGJhcgo7OwoK OzsgQXZvaWQgcHJvYmxlbXMgd2l0aCBYRW1hY3MgYnl0ZS1jb21waWxlcy4KOzsgRm9yIEdOVSBF bWFjcywgdGhlIGV2YWwtYWZ0ZXItbG9hZCB3aWxsIGhhbmRsZSBpZiBpdCBpc24ndCBsb2FkZWQg eWV0Lgood2hlbiAoZXZhbC13aGVuLWNvbXBpbGUgKGZib3VuZHAgJ2RlY2xhcmUtZnVuY3Rpb24p KQogIChkZWNsYXJlLWZ1bmN0aW9uIHNwZWVkYmFyLWFkZC1zdXBwb3J0ZWQtZXh0ZW5zaW9uICJz cGVlZGJhciIgKGV4dGVuc2lvbikpKQoKKGRlZnVuIHZlcmlsb2ctc3BlZWRiYXItaW5pdGlhbGl6 ZSAoKQogICJJbml0aWFsaXplIHNwZWVkYmFyIHRvIHVuZGVyc3RhbmQgYHZlcmlsb2ctbW9kZScu IgogIDs7IFNldCBWZXJpbG9nIGZpbGUgZXh0ZW5zaW9ucyAoZXh0cmFjdGVkIGZyb20gYGF1dG8t bW9kZS1hbGlzdCcpCiAgKGxldCAoKG1vZGUtYWxpc3QgYXV0by1tb2RlLWFsaXN0KSkKICAgICh3 aGlsZSBtb2RlLWFsaXN0CiAgICAgICh3aGVuIChlcSAoY2RhciBtb2RlLWFsaXN0KSAndmVyaWxv Zy1tb2RlKQogICAgICAgIChzcGVlZGJhci1hZGQtc3VwcG9ydGVkLWV4dGVuc2lvbiAoY2FhciBt b2RlLWFsaXN0KSkpCiAgICAgIChzZXRxIG1vZGUtYWxpc3QgKGNkciBtb2RlLWFsaXN0KSkpKSkK Cjs7IElmIHRoZSBzcGVlZGJhciBpcyBsb2FkZWQsIGV4ZWN1dGUgaW5pdGlhbGl6YXRpb24gaW5z dHJ1Y3Rpb25zIHJpZ2h0IGF3YXksCjs7IG90aGVyd2lzZSBhZGQgdGhlIGluaXRpYWxpemF0aW9u IGluc3RydWN0aW9ucyB0byB0aGUgc3BlZWRiYXIgbG9hZGVyLgooZXZhbC1hZnRlci1sb2FkICJz cGVlZGJhciIgJyh2ZXJpbG9nLXNwZWVkYmFyLWluaXRpYWxpemUpKQoKDAo7OzsgRWxlY3RyaWMg ZnVuY3Rpb25zOgo7OwoKKGRlZnVuIGVsZWN0cmljLXZlcmlsb2ctdGVybWluYXRlLWxpbmUgKCZv cHRpb25hbCBhcmcpCiAgIlRlcm1pbmF0ZSBsaW5lIGFuZCBpbmRlbnQgbmV4dCBsaW5lLgpXaXRo IG9wdGlvbmFsIEFSRywgcmVtb3ZlIGV4aXN0aW5nIGVuZCBvZiBsaW5lIGNvbW1lbnRzLiIKICAo aW50ZXJhY3RpdmUpCiAgOzsgYmVmb3JlIHRoYXQgc2VlIGlmIHdlIGFyZSBpbiBhIGNvbW1lbnQK ICAobGV0ICgoc3RhdGUgKHNhdmUtZXhjdXJzaW9uICh2ZXJpbG9nLXN5bnRheC1wcHNzKSkpKQog ICAgKGNvbmQKICAgICAoKG50aCA3IHN0YXRlKQkJCTsgSW5zaWRlIC8vIGNvbW1lbnQKICAgICAg KGlmIChlb2xwKQoJICAocHJvZ24KCSAgICAoZGVsZXRlLWhvcml6b250YWwtc3BhY2UpCgkgICAg KG5ld2xpbmUpKQoJKHByb2duCgkgIChuZXdsaW5lKQoJICAoaW5zZXJ0ICIvLyAiKQoJICAoYmVn aW5uaW5nLW9mLWxpbmUpKSkKICAgICAgKHZlcmlsb2ctaW5kZW50LWxpbmUpKQogICAgICgobnRo IDQgc3RhdGUpCQkJOyBJbnNpZGUgYW55IGNvbW1lbnQgKGhlbmNlIC8qKi8pCiAgICAgIChuZXds aW5lKQogICAgICAodmVyaWxvZy1tb3JlLWNvbW1lbnQpKQogICAgICgoZW9scCkKICAgICAgOzsg Rmlyc3QsIGNoZWNrIGlmIGN1cnJlbnQgbGluZSBzaG91bGQgYmUgaW5kZW50ZWQKICAgICAgKGlm IChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAoZGVsZXRlLWhvcml6b250YWwtc3BhY2UpCiAg ICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9y d2FyZCAiIFx0IikKICAgICAgICAgICAgKGlmIChsb29raW5nLWF0IHZlcmlsb2ctYXV0by1lbmQt Y29tbWVudC1saW5lcy1yZSkKICAgICAgICAgICAgICAgIChsZXQgKChpbmRlbnQtc3RyICh2ZXJp bG9nLWluZGVudC1saW5lKSkpCiAgICAgICAgICAgICAgICAgIDs7IE1heWJlIHdlIHNob3VsZCBz ZXQgc29tZSBlbmRjb21tZW50cwogICAgICAgICAgICAgICAgICAoaWYgdmVyaWxvZy1hdXRvLWVu ZGNvbW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1zZXQtYXV0by1lbmRjb21t ZW50cyBpbmRlbnQtc3RyIGFyZykpCiAgICAgICAgICAgICAgICAgIChlbmQtb2YtbGluZSkKICAg ICAgICAgICAgICAgICAgKGRlbGV0ZS1ob3Jpem9udGFsLXNwYWNlKQogICAgICAgICAgICAgICAg ICAoaWYgYXJnCiAgICAgICAgICAgICAgICAgICAgICAoKQogICAgICAgICAgICAgICAgICAgIChu ZXdsaW5lKSkKICAgICAgICAgICAgICAgICAgbmlsKQogICAgICAgICAgICAgIChwcm9nbgogICAg ICAgICAgICAgICAgKGVuZC1vZi1saW5lKQogICAgICAgICAgICAgICAgKGRlbGV0ZS1ob3Jpem9u dGFsLXNwYWNlKQogICAgICAgICAgICAgICAgJ3QpKSkKICAgICAgICAgIDs7IHNlZSBpZiB3ZSBz aG91bGQgbGluZSB1cCBhc3NpZ25tZW50cwogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChp ZiAob3IgKGVxICdhbGwgdmVyaWxvZy1hdXRvLWxpbmV1cCkKICAgICAgICAgICAgICAgICAgICAo ZXEgJ2Fzc2lnbm1lbnRzIHZlcmlsb2ctYXV0by1saW5ldXApKQogICAgICAgICAgICAgICAgKHZl cmlsb2ctcHJldHR5LWV4cHIgOnF1aWV0KSkKICAgICAgICAgICAgKG5ld2xpbmUpKQogICAgICAg IChmb3J3YXJkLWxpbmUgMSkpCiAgICAgIDs7IEluZGVudCBuZXh0IGxpbmUKICAgICAgKGlmIHZl cmlsb2ctYXV0by1pbmRlbnQtb24tbmV3bGluZQogICAgICAgICAgKHZlcmlsb2ctaW5kZW50LWxp bmUpKSkKICAgICAodAogICAgICAobmV3bGluZSkpKSkpCgooZGVmdW4gZWxlY3RyaWMtdmVyaWxv Zy10ZXJtaW5hdGUtYW5kLWluZGVudCAoKQogICJJbnNlcnQgYSBuZXdsaW5lIGFuZCBpbmRlbnQg Zm9yIHRoZSBuZXh0IHN0YXRlbWVudC4iCiAgKGludGVyYWN0aXZlKQogIChlbGVjdHJpYy12ZXJp bG9nLXRlcm1pbmF0ZS1saW5lIDEpKQoKKGRlZnVuIGVsZWN0cmljLXZlcmlsb2ctc2VtaSAoKQog ICJJbnNlcnQgYDsnIGNoYXJhY3RlciBhbmQgcmVpbmRlbnQgdGhlIGxpbmUuIgogIChpbnRlcmFj dGl2ZSkKICAodmVyaWxvZy1pbnNlcnQtbGFzdC1jb21tYW5kLWV2ZW50KQoKICAoaWYgKG9yICh2 ZXJpbG9nLWluLWNvbW1lbnQtb3Itc3RyaW5nLXApCgkgICh2ZXJpbG9nLWluLWVzY2FwZWQtbmFt ZS1wKSkKICAgICAgKCkKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoYmVnaW5uaW5nLW9mLWxp bmUpCiAgICAgICh2ZXJpbG9nLWZvcndhcmQtd3MmZGlyZWN0aXZlcykKICAgICAgKHZlcmlsb2ct aW5kZW50LWxpbmUpKQogICAgKGlmIChhbmQgdmVyaWxvZy1hdXRvLW5ld2xpbmUKCSAgICAgKG5v dCAodmVyaWxvZy1wYXJlbnRoZXNpcy1kZXB0aCkpKQoJKGVsZWN0cmljLXZlcmlsb2ctdGVybWlu YXRlLWxpbmUpKSkpCgooZGVmdW4gZWxlY3RyaWMtdmVyaWxvZy1zZW1pLXdpdGgtY29tbWVudCAo KQogICJJbnNlcnQgYDsnIGNoYXJhY3RlciwgcmVpbmRlbnQgdGhlIGxpbmUgYW5kIGluZGVudCBm b3IgY29tbWVudC4iCiAgKGludGVyYWN0aXZlKQogIChpbnNlcnQgIjsiKQogIChzYXZlLWV4Y3Vy c2lvbgogICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgKHZlcmlsb2ctaW5kZW50LWxpbmUpKQog IChpbmRlbnQtZm9yLWNvbW1lbnQpKQoKKGRlZnVuIGVsZWN0cmljLXZlcmlsb2ctY29sb24gKCkK ICAiSW5zZXJ0IGA6JyBhbmQgZG8gYWxsIGluZGVudGF0aW9ucyBleGNlcHQgbGluZSBpbmRlbnQg b24gdGhpcyBsaW5lLiIKICAoaW50ZXJhY3RpdmUpCiAgKHZlcmlsb2ctaW5zZXJ0LWxhc3QtY29t bWFuZC1ldmVudCkKICA7OyBEbyBub3RoaW5nIGlmIHdpdGhpbiBzdHJpbmcuCiAgKGlmIChvcgog ICAgICAgKHZlcmlsb2ctd2l0aGluLXN0cmluZykKICAgICAgIChub3QgKHZlcmlsb2ctaW4tY2Fz ZS1yZWdpb24tcCkpKQogICAgICAoKQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgIChsZXQgKChw IChwb2ludCkpCgkgICAgKGxpbSAocHJvZ24gKHZlcmlsb2ctYmVnLW9mLXN0YXRlbWVudCkgKHBv aW50KSkpKQoJKGdvdG8tY2hhciBwKQoJKHZlcmlsb2ctYmFja3dhcmQtY2FzZS1pdGVtIGxpbSkK CSh2ZXJpbG9nLWluZGVudC1saW5lKSkpCiAgICA7OyAobGV0ICgodmVyaWxvZy10YWItYWx3YXlz LWluZGVudCBuaWwpKQogICAgOzsgICAodmVyaWxvZy1pbmRlbnQtbGluZSkpCiAgICApKQoKOzso ZGVmdW4gZWxlY3RyaWMtdmVyaWxvZy1lcXVhbCAoKQo7OyAgIkluc2VydCBgPScsIGFuZCBkbyBp bmRlbnRhdGlvbiBpZiB3aXRoaW4gYmxvY2suIgo7OyAgKGludGVyYWN0aXZlKQo7OyAgKHZlcmls b2ctaW5zZXJ0LWxhc3QtY29tbWFuZC1ldmVudCkKOzsgQ291bGQgYXV0byBsaW5lIHVwIGV4cHJl c3Npb25zLCBidXQgbm90IHlldAo7OyAgKGlmIChlcSAoY2FyICh2ZXJpbG9nLWNhbGN1bGF0ZS1p bmRlbnQpKSAnYmxvY2spCjs7ICAgICAgKGxldCAoKHZlcmlsb2ctdGFiLWFsd2F5cy1pbmRlbnQg bmlsKSkKOzsJKHZlcmlsb2ctaW5kZW50LWNvbW1hbmQpKSkKOzsgICkKCihkZWZ1biBlbGVjdHJp Yy12ZXJpbG9nLXRpY2sgKCkKICAiSW5zZXJ0IGJhY2stdGljaywgYW5kIGluZGVudCB0byBjb2x1 bW4gMCBpZiB0aGlzIGlzIGEgQ1BQIGRpcmVjdGl2ZS4iCiAgKGludGVyYWN0aXZlKQogICh2ZXJp bG9nLWluc2VydC1sYXN0LWNvbW1hbmQtZXZlbnQpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoaWYg KHZlcmlsb2ctaW4tZGlyZWN0aXZlLXApCiAgICAgICAgKHZlcmlsb2ctaW5kZW50LWxpbmUpKSkp CgooZGVmdW4gZWxlY3RyaWMtdmVyaWxvZy10YWIgKCkKICAiRnVuY3Rpb24gY2FsbGVkIHdoZW4g VEFCIGlzIHByZXNzZWQgaW4gVmVyaWxvZyBtb2RlLiIKICAoaW50ZXJhY3RpdmUpCiAgOzsgSWYg dmVyaWxvZy10YWItYWx3YXlzLWluZGVudCwgaW5kZW50IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxp bmUuCiAgKGNvbmQKICAgOzsgVGhlIHJlZ2lvbiBpcyBhY3RpdmUsIGluZGVudCBpdC4KICAgKChh bmQgKHJlZ2lvbi1hY3RpdmUtcCkKCSAobm90IChlcSAocmVnaW9uLWJlZ2lubmluZykgKHJlZ2lv bi1lbmQpKSkpCiAgICAoaW5kZW50LXJlZ2lvbiAocmVnaW9uLWJlZ2lubmluZykgKHJlZ2lvbi1l bmQpIG5pbCkpCiAgICgob3IgdmVyaWxvZy10YWItYWx3YXlzLWluZGVudAoJKHNhdmUtZXhjdXJz aW9uCgkgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiKQoJICAoYm9scCkpKQogICAgKGxldCog KChvbGRwbnQgKHBvaW50KSkKCSAgIChib2ktcG9pbnQKCSAgICAoc2F2ZS1leGN1cnNpb24KCSAg ICAgIChiZWdpbm5pbmctb2YtbGluZSkKCSAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdCIp CgkgICAgICAodmVyaWxvZy1pbmRlbnQtbGluZSkKCSAgICAgIChiYWNrLXRvLWluZGVudGF0aW9u KQoJICAgICAgKHBvaW50KSkpKQogICAgICAoaWYgKDwgKHBvaW50KSBib2ktcG9pbnQpCgkgIChi YWNrLXRvLWluZGVudGF0aW9uKQoJKGNvbmQgKChub3QgdmVyaWxvZy10YWItdG8tY29tbWVudCkp CgkgICAgICAoKG5vdCAoZW9scCkpCgkgICAgICAgKGVuZC1vZi1saW5lKSkKCSAgICAgICh0Cgkg ICAgICAgKGluZGVudC1mb3ItY29tbWVudCkKCSAgICAgICAod2hlbiAoYW5kIChlb2xwKSAoPSBv bGRwbnQgKHBvaW50KSkpCiAgICAgICAgICAgICAgICAgOzsga2lsbCBleGlzdGluZyBjb21tZW50 CgkJIChiZWdpbm5pbmctb2YtbGluZSkKCQkgKHJlLXNlYXJjaC1mb3J3YXJkIGNvbW1lbnQtc3Rh cnQtc2tpcCBvbGRwbnQgJ21vdmUpCgkJIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkK CQkgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIpCgkJIChraWxsLXJlZ2lvbiAocG9pbnQpIG9s ZHBudCkpKSkpKSkKICAgKHQgKHByb2duIChpbnNlcnQgIlx0IikpKSkpCgoMCjs7OyBJbnRlcmFj dGl2ZSBmdW5jdGlvbnM6Cjs7CgooZGVmdW4gdmVyaWxvZy1pbmRlbnQtYnVmZmVyICgpCiAgIklu ZGVudC1yZWdpb24gdGhlIGVudGlyZSBidWZmZXIgYXMgVmVyaWxvZyBjb2RlLgpUbyBjYWxsIHRo aXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBzZWUgXFxbdmVyaWxvZy1iYXRjaC1pbmRlbnRdLiIK ICAoaW50ZXJhY3RpdmUpCiAgKHZlcmlsb2ctbW9kZSkKICAodmVyaWxvZy1hdXRvLXJlZXZhbC1s b2NhbHMpCiAgKGluZGVudC1yZWdpb24gKHBvaW50LW1pbikgKHBvaW50LW1heCkgbmlsKSkKCihk ZWZ1biB2ZXJpbG9nLWluc2VydC1ibG9jayAoKQogICJJbnNlcnQgVmVyaWxvZyBiZWdpbiAuLi4g ZW5kOyBibG9jayBpbiB0aGUgY29kZSB3aXRoIHJpZ2h0IGluZGVudGF0aW9uLiIKICAoaW50ZXJh Y3RpdmUpCiAgKHZlcmlsb2ctaW5kZW50LWxpbmUpCiAgKGluc2VydCAiYmVnaW4iKQogIChlbGVj dHJpYy12ZXJpbG9nLXRlcm1pbmF0ZS1saW5lKQogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGVsZWN0 cmljLXZlcmlsb2ctdGVybWluYXRlLWxpbmUpCiAgICAoaW5zZXJ0ICJlbmQiKQogICAgKGJlZ2lu bmluZy1vZi1saW5lKQogICAgKHZlcmlsb2ctaW5kZW50LWxpbmUpKSkKCihkZWZ1biB2ZXJpbG9n LXN0YXItY29tbWVudCAoKQogICJJbnNlcnQgVmVyaWxvZyBzdGFyIGNvbW1lbnQgYXQgcG9pbnQu IgogIChpbnRlcmFjdGl2ZSkKICAodmVyaWxvZy1pbmRlbnQtbGluZSkKICAoaW5zZXJ0ICIvKiIp CiAgKHNhdmUtZXhjdXJzaW9uCiAgICAobmV3bGluZSkKICAgIChpbnNlcnQgIiAqLyIpKQogIChu ZXdsaW5lKQogIChpbnNlcnQgIiAqICIpKQoKKGRlZnVuIHZlcmlsb2ctaW5zZXJ0LTEgKGZtdCBt YXgpCiAgIlVzZSBmb3JtYXQgc3RyaW5nIEZNVCB0byBpbnNlcnQgaW50ZWdlcnMgMCB0byBNQVgg LSAxLgpJbnNlcnRzIG9uZSBpbnRlZ2VyIHBlciBsaW5lLCBhdCB0aGUgY3VycmVudCBjb2x1bW4u ICBTdG9wcyBlYXJseQppZiBpdCByZWFjaGVzIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4iCiAgKGxl dCAoKGNvbCAoY3VycmVudC1jb2x1bW4pKQogICAgICAgIChuIDApKQogICAgKHNhdmUtZXhjdXJz aW9uCiAgICAgICh3aGlsZSAoPCBuIG1heCkKICAgICAgICAoaW5zZXJ0IChmb3JtYXQgZm10IG4p KQogICAgICAgIChmb3J3YXJkLWxpbmUgMSkKICAgICAgICA7OyBOb3RlIHRoYXQgdGhpcyBmdW5j dGlvbiBkb2VzIG5vdCBib3RoZXIgdG8gY2hlY2sgZm9yIGxpbmVzCiAgICAgICAgOzsgc2hvcnRl ciB0aGFuIGNvbC4KICAgICAgICAoaWYgKGVvYnApCiAgICAgICAgICAgIChzZXRxIG4gbWF4KQog ICAgICAgICAgKHNldHEgbiAoMSsgbikpCiAgICAgICAgICAobW92ZS10by1jb2x1bW4gY29sKSkp KSkpCgooZGVmdW4gdmVyaWxvZy1pbnNlcnQtaW5kaWNlcyAobWF4KQogICJJbnNlcnQgYSBzZXQg b2YgaW5kaWNlcyBpbnRvIGEgcmVjdGFuZ2xlLgpUaGUgdXBwZXIgbGVmdCBjb3JuZXIgaXMgZGVm aW5lZCBieSBwb2ludC4gIEluZGljZXMgYmVnaW4gd2l0aCAwCmFuZCBleHRlbmQgdG8gdGhlIE1B WCAtIDEuICBJZiBubyBwcmVmaXggYXJnIGlzIGdpdmVuLCB0aGUgdXNlcgppcyBwcm9tcHRlZCBm b3IgYSB2YWx1ZS4gIFRoZSBpbmRpY2VzIGFyZSBzdXJyb3VuZGVkIGJ5IHNxdWFyZQpicmFja2V0 cyBbXS4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgd2l0aCB0aGUgcG9pbnQKbG9j YXRlZCBhZnRlciB0aGUgZmlyc3QgYGEnIGdpdmVzOgoKICAgIGEgPSBiICAgICAgICAgICAgICAg ICAgICAgICAgICAgYVsgIDBdID0gYgogICAgYSA9IGIgICAgICAgICAgICAgICAgICAgICAgICAg ICBhWyAgMV0gPSBiCiAgICBhID0gYiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbICAyXSA9 IGIKICAgIGEgPSBiICAgICAgICAgICAgICAgICAgICAgICAgICAgYVsgIDNdID0gYgogICAgYSA9 IGIgICA9PT4gaW5zZXJ0LWluZGljZXMgPT0+ICBhWyAgNF0gPSBiCiAgICBhID0gYiAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFbICA1XSA9IGIKICAgIGEgPSBiICAgICAgICAgICAgICAgICAg ICAgICAgICAgYVsgIDZdID0gYgogICAgYSA9IGIgICAgICAgICAgICAgICAgICAgICAgICAgICBh WyAgN10gPSBiCiAgICBhID0gYiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbICA4XSA9IGIi CgogIChpbnRlcmFjdGl2ZSAiTk1BWDogIikKICAodmVyaWxvZy1pbnNlcnQtMSAiWyUzZF0iIG1h eCkpCgooZGVmdW4gdmVyaWxvZy1nZW5lcmF0ZS1udW1iZXJzIChtYXgpCiAgIkluc2VydCBhIHNl dCBvZiBnZW5lcmF0ZWQgbnVtYmVycyBpbnRvIGEgcmVjdGFuZ2xlLgpUaGUgdXBwZXIgbGVmdCBj b3JuZXIgaXMgZGVmaW5lZCBieSBwb2ludC4gIFRoZSBudW1iZXJzIGFyZSBwYWRkZWQgdG8gdGhy ZWUKZGlnaXRzLCBzdGFydGluZyB3aXRoIDAwMCBhbmQgZXh0ZW5kaW5nIHRvIChNQVggLSAxKS4g IElmIG5vIHByZWZpeCBhcmd1bWVudAppcyBzdXBwbGllZCwgdGhlbiB0aGUgdXNlciBpcyBwcm9t cHRlZCBmb3IgdGhlIE1BWCBudW1iZXIuICBDb25zaWRlciB0aGUKZm9sbG93aW5nIGNvZGUgZnJh Z21lbnQ6CgogICAgYnVmIGJ1ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmIGJ1ZjAw MAogICAgYnVmIGJ1ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmIGJ1ZjAwMQogICAg YnVmIGJ1ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmIGJ1ZjAwMgogICAgYnVmIGJ1 ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmIGJ1ZjAwMwogICAgYnVmIGJ1ZiAgID09 PiBnZW5lcmF0ZS1udW1iZXJzID09PiAgYnVmIGJ1ZjAwNAogICAgYnVmIGJ1ZiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnVmIGJ1ZjAwNQogICAgYnVmIGJ1ZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnVmIGJ1ZjAwNgogICAgYnVmIGJ1ZiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnVmIGJ1ZjAwNwogICAgYnVmIGJ1ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnVmIGJ1ZjAwOCIKCiAgKGludGVyYWN0aXZlICJOTUFYOiAiKQogICh2ZXJpbG9nLWluc2VydC0x ICIlMy4zZCIgbWF4KSkKCihkZWZ1biB2ZXJpbG9nLW1hcmstZGVmdW4gKCkKICAiTWFyayB0aGUg Y3VycmVudCBWZXJpbG9nIGZ1bmN0aW9uIChvciBwcm9jZWR1cmUpLgpUaGlzIHB1dHMgdGhlIG1h cmsgYXQgdGhlIGVuZCwgYW5kIHBvaW50IGF0IHRoZSBiZWdpbm5pbmcuIgogIChpbnRlcmFjdGl2 ZSkKICAoaWYgKGZlYXR1cmVwICd4ZW1hY3MpCiAgICAgIChwcm9nbgoJKHB1c2gtbWFyaykKCSh2 ZXJpbG9nLWVuZC1vZi1kZWZ1bikKCShwdXNoLW1hcmspCgkodmVyaWxvZy1iZWctb2YtZGVmdW4p CgkoaWYgKGZib3VuZHAgJ3ptYWNzLWFjdGl2YXRlLXJlZ2lvbikKCSAgICAoem1hY3MtYWN0aXZh dGUtcmVnaW9uKSkpCiAgICAobWFyay1kZWZ1bikpKQoKKGRlZnVuIHZlcmlsb2ctY29tbWVudC1y ZWdpb24gKHN0YXJ0IGVuZCkKICA7OyBjaGVja2RvYy1wYXJhbXM6IChzdGFydCBlbmQpCiAgIlB1 dCB0aGUgcmVnaW9uIGludG8gYSBWZXJpbG9nIGNvbW1lbnQuClRoZSBjb21tZW50cyB0aGF0IGFy ZSBpbiB0aGlzIGFyZWEgYXJlIFwiZGVmb3JtZWRcIjoKYCopJyBiZWNvbWVzIGAhKConIGFuZCBg fScgYmVjb21lcyBgIXsnLgpUaGVzZSBkZWZvcm1lZCBjb21tZW50cyBhcmUgcmV0dXJuZWQgdG8g bm9ybWFsIGlmIHlvdSB1c2UKXFxbdmVyaWxvZy11bmNvbW1lbnQtcmVnaW9uXSB0byB1bmRvIHRo ZSBjb21tZW50aW5nLgoKVGhlIGNvbW1lbnRlZCBhcmVhIHN0YXJ0cyB3aXRoIGB2ZXJpbG9nLWV4 Y2x1ZGUtc3RyLXN0YXJ0JywgYW5kIGVuZHMgd2l0aApgdmVyaWxvZy1leGNsdWRlLXN0ci1lbmQn LiAgQnV0IGlmIHlvdSBjaGFuZ2UgdGhlc2UgdmFyaWFibGVzLApcXFt2ZXJpbG9nLXVuY29tbWVu dC1yZWdpb25dIHdvbid0IHJlY29nbml6ZSB0aGUgY29tbWVudHMuIgogIChpbnRlcmFjdGl2ZSAi ciIpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICA7OyBJbnNlcnQgc3RhcnQgYW5kIGVuZGNvbW1lbnRz CiAgICAoZ290by1jaGFyIGVuZCkKICAgIChpZiAoYW5kIChzYXZlLWV4Y3Vyc2lvbiAoc2tpcC1j aGFycy1mb3J3YXJkICIgXHQiKSAoZW9scCkpCgkgICAgIChub3QgKHNhdmUtZXhjdXJzaW9uIChz a2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiKSAoYm9scCkpKSkKCShmb3J3YXJkLWxpbmUgMSkKICAg ICAgKGJlZ2lubmluZy1vZi1saW5lKSkKICAgIChpbnNlcnQgdmVyaWxvZy1leGNsdWRlLXN0ci1l bmQpCiAgICAoc2V0cSBlbmQgKHBvaW50KSkKICAgIChuZXdsaW5lKQogICAgKGdvdG8tY2hhciBz dGFydCkKICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgIChpbnNlcnQgdmVyaWxvZy1leGNsdWRl LXN0ci1zdGFydCkKICAgIChuZXdsaW5lKQogICAgOzsgUmVwbGFjZSBlbmQtY29tbWVudHMgd2l0 aGluIGNvbW1lbnRlZCBhcmVhCiAgICAoZ290by1jaGFyIGVuZCkKICAgIChzYXZlLWV4Y3Vyc2lv bgogICAgICAod2hpbGUgKHJlLXNlYXJjaC1iYWNrd2FyZCAiXFwqLyIgc3RhcnQgdCkKCShyZXBs YWNlLW1hdGNoICIqLS8iIHQgdCkpKQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgIChsZXQgKChz KzEgKDErIHN0YXJ0KSkpCgkod2hpbGUgKHJlLXNlYXJjaC1iYWNrd2FyZCAiL1xcKiIgcysxIHQp CgkgIChyZXBsYWNlLW1hdGNoICIvLSoiIHQgdCkpKSkpKQoKKGRlZnVuIHZlcmlsb2ctdW5jb21t ZW50LXJlZ2lvbiAoKQogICJVbmNvbW1lbnQgYSBjb21tZW50ZWQgYXJlYTsgY2hhbmdlIGRlZm9y bWVkIGNvbW1lbnRzIGJhY2sgdG8gbm9ybWFsLgpUaGlzIGNvbW1hbmQgZG9lcyBub3RoaW5nIGlm IHRoZSBwb2ludGVyIGlzIG5vdCBpbiBhIGNvbW1lbnRlZAphcmVhLiAgU2VlIGFsc28gYHZlcmls b2ctY29tbWVudC1yZWdpb24nLiIKICAoaW50ZXJhY3RpdmUpCiAgKHNhdmUtZXhjdXJzaW9uCiAg ICAobGV0ICgoc3RhcnQgKHBvaW50KSkKCSAgKGVuZCAocG9pbnQpKSkKICAgICAgOzsgRmluZCB0 aGUgYm91bmRhcmllcyBvZiB0aGUgY29tbWVudAogICAgICAoc2F2ZS1leGN1cnNpb24KCShzZXRx IHN0YXJ0IChwcm9nbiAoc2VhcmNoLWJhY2t3YXJkIHZlcmlsb2ctZXhjbHVkZS1zdHItc3RhcnQg bmlsIHQpCgkJCSAgIChwb2ludCkpKQoJKHNldHEgZW5kIChwcm9nbiAoc2VhcmNoLWZvcndhcmQg dmVyaWxvZy1leGNsdWRlLXN0ci1lbmQgbmlsIHQpCgkJCSAocG9pbnQpKSkpCiAgICAgIDs7IENo ZWNrIGlmIHdlJ3JlIHJlYWxseSBpbnNpZGUgYSBjb21tZW50CiAgICAgIChpZiAob3IgKGVxdWFs IHN0YXJ0IChwb2ludCkpICg8PSBlbmQgKHBvaW50KSkpCgkgIChtZXNzYWdlICJOb3Qgc3RhbmRp bmcgd2l0aGluIGNvbW1lbnRlZCBhcmVhLiIpCgkocHJvZ24KCSAgOzsgUmVtb3ZlIGVuZGNvbW1l bnQKCSAgKGdvdG8tY2hhciBlbmQpCgkgIChiZWdpbm5pbmctb2YtbGluZSkKCSAgKGxldCAoKHBv cyAocG9pbnQpKSkKCSAgICAoZW5kLW9mLWxpbmUpCgkgICAgKGRlbGV0ZS1yZWdpb24gcG9zICgx KyAocG9pbnQpKSkpCgkgIDs7IENoYW5nZSBjb21tZW50cyBiYWNrIHRvIG5vcm1hbAoJICAoc2F2 ZS1leGN1cnNpb24KCSAgICAod2hpbGUgKHJlLXNlYXJjaC1iYWNrd2FyZCAiXFwqLS8iIHN0YXJ0 IHQpCgkgICAgICAocmVwbGFjZS1tYXRjaCAiKi8iIHQgdCkpKQoJICAoc2F2ZS1leGN1cnNpb24K CSAgICAod2hpbGUgKHJlLXNlYXJjaC1iYWNrd2FyZCAiLy1cXCoiIHN0YXJ0IHQpCgkgICAgICAo cmVwbGFjZS1tYXRjaCAiLyoiIHQgdCkpKQoJICA7OyBSZW1vdmUgc3RhcnQgY29tbWVudAoJICAo Z290by1jaGFyIHN0YXJ0KQoJICAoYmVnaW5uaW5nLW9mLWxpbmUpCgkgIChsZXQgKChwb3MgKHBv aW50KSkpCgkgICAgKGVuZC1vZi1saW5lKQoJICAgIChkZWxldGUtcmVnaW9uIHBvcyAoMSsgKHBv aW50KSkpKSkpKSkpCgooZGVmdW4gdmVyaWxvZy1iZWctb2YtZGVmdW4gKCkKICAiTW92ZSBiYWNr d2FyZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIHByb2NlZHVy ZS4iCiAgKGludGVyYWN0aXZlKQogICh2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZCB2ZXJpbG9n LWRlZnVuLXJlIG5pbCAnbW92ZSkpCgooZGVmdW4gdmVyaWxvZy1iZWctb2YtZGVmdW4tcXVpY2sg KCkKICAiTW92ZSBiYWNrd2FyZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IGZ1bmN0 aW9uIG9yIHByb2NlZHVyZS4KVXNlcyBgdmVyaWxvZy1zY2FuJyBjYWNoZS4iCiAgKGludGVyYWN0 aXZlKQogICh2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZC1xdWljayB2ZXJpbG9nLWRlZnVuLXJl IG5pbCAnbW92ZSkpCgooZGVmdW4gdmVyaWxvZy1lbmQtb2YtZGVmdW4gKCkKICAiTW92ZSBmb3J3 YXJkIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24gb3IgcHJvY2VkdXJlLiIKICAo aW50ZXJhY3RpdmUpCiAgKHZlcmlsb2ctcmUtc2VhcmNoLWZvcndhcmQgdmVyaWxvZy1lbmQtZGVm dW4tcmUgbmlsICdtb3ZlKSkKCihkZWZ1biB2ZXJpbG9nLWdldC1lbmQtb2YtZGVmdW4gKCkKICAo c2F2ZS1leGN1cnNpb24KICAgIChjb25kICgodmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZC1xdWlj ayB2ZXJpbG9nLWVuZC1kZWZ1bi1yZSBuaWwgdCkKCSAgIChwb2ludCkpCgkgICh0CgkgICAoZXJy b3IgIiVzOiBDYW4ndCBmaW5kIGVuZG1vZHVsZSIgKHZlcmlsb2ctcG9pbnQtdGV4dCkpCgkgICAo cG9pbnQtbWF4KSkpKSkKCihkZWZ1biB2ZXJpbG9nLWxhYmVsLWJlICgpCiAgIkxhYmVsIG1hdGNo aW5nIGJlZ2luIC4uLiBlbmQsIGZvcmsgLi4uIGpvaW4gYW5kIGNhc2UgLi4uIGVuZGNhc2Ugc3Rh dGVtZW50cy4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChjbnQgMCkKCShjYXNlLWZvbGQtc2Vh cmNoIG5pbCkKCShvbGRwb3MgKHBvaW50KSkKCShiIChwcm9nbgoJICAgICAodmVyaWxvZy1iZWct b2YtZGVmdW4pCgkgICAgIChwb2ludC1tYXJrZXIpKSkKCShlIChwcm9nbgoJICAgICAodmVyaWxv Zy1lbmQtb2YtZGVmdW4pCgkgICAgIChwb2ludC1tYXJrZXIpKSkpCiAgICAoZ290by1jaGFyICht YXJrZXItcG9zaXRpb24gYikpCiAgICAoaWYgKD4gKC0gZSBiKSAyMDApCgkobWVzc2FnZSAiUmVs YWJlbGluZyBtb2R1bGUuLi4iKSkKICAgICh3aGlsZSAoYW5kCgkgICAgKD4gKG1hcmtlci1wb3Np dGlvbiBlKSAocG9pbnQpKQoJICAgICh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkCgkgICAgIHZl cmlsb2ctYXV0by1lbmQtY29tbWVudC1saW5lcy1yZQoJICAgICBuaWwgJ21vdmUpKQogICAgICAo Z290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMCkpCiAgICAgIChsZXQgKChpbmRlbnQtc3RyICh2 ZXJpbG9nLWluZGVudC1saW5lKSkpCgkodmVyaWxvZy1zZXQtYXV0by1lbmRjb21tZW50cyBpbmRl bnQtc3RyICd0KQoJKGVuZC1vZi1saW5lKQoJKGRlbGV0ZS1ob3Jpem9udGFsLXNwYWNlKSkKICAg ICAgKHNldHEgY250ICgxKyBjbnQpKQogICAgICAoaWYgKD0gOSAoJSBjbnQgMTApKQoJICAobWVz c2FnZSAiJWQuLi4iIGNudCkpKQogICAgKGdvdG8tY2hhciBvbGRwb3MpCiAgICAoaWYgKG9yCgkg KD4gKC0gZSBiKSAyMDApCgkgKD4gY250IDIwKSkKCShtZXNzYWdlICIlZCBsaW5lcyBhdXRvIGNv bW1lbnRlZCIgY250KSkpKQoKKGRlZnVuIHZlcmlsb2ctYmVnLW9mLXN0YXRlbWVudCAoKQogICJN b3ZlIGJhY2t3YXJkIHRvIGJlZ2lubmluZyBvZiBzdGF0ZW1lbnQuIgogIChpbnRlcmFjdGl2ZSkK ICA7OyBNb3ZlIGJhY2sgdG9rZW4gYnkgdG9rZW4gdW50aWwgd2Ugc2VlIHRoZSBlbmQKICA7OyBv ZiBzb21lIGVhcmxpZXIgbGluZS4KICAobGV0IChoKQogICAgKHdoaWxlCgk7OyBJZiB0aGUgY3Vy cmVudCBwb2ludCBkb2VzIG5vdCBiZWdpbiBhIG5ldwoJOzsgc3RhdGVtZW50LCBhcyBpbiB0aGUg Y2hhcmFjdGVyIGFoZWFkIG9mIHVzIGlzIGEgJzsnLCBvciBTT0YKCTs7IG9yIHRoZSBzdHJpbmcg YWZ0ZXIgdXMgdW5hbWJpZ3VvdXNseSBzdGFydHMgYSBzdGF0ZW1lbnQsCgk7OyBvciB0aGUgdG9r ZW4gYmVmb3JlIHVzIHVuYW1iaWd1b3VzbHkgZW5kcyBhIHN0YXRlbWVudCwKCTs7IHRoZW4gbW92 ZSBiYWNrIGEgdG9rZW4gYW5kIHRlc3QgYWdhaW4uCgkobm90IChvcgoJICAgICAgOzsgc3RvcCBp ZiBiZWdpbm5pbmcgb2YgYnVmZmVyCgkgICAgICAoYm9icCkKCSAgICAgIDs7IHN0b3AgaWYgbG9v a2luZyBhdCBhIHByZS1wcm9jZXNzb3IgZGlyZWN0aXZlCgkgICAgICAobG9va2luZy1hdCAiYFxc dysiKQoJICAgICAgOzsgc3RvcCBpZiB3ZSBmaW5kIGEgOwoJICAgICAgKD0gKHByZWNlZGluZy1j aGFyKSA/XDspCgkgICAgICA7OyBzdG9wIGlmIHdlIHNlZSBhIG5hbWVkIGNvdmVycG9pbnQKCSAg ICAgIChsb29raW5nLWF0ICJcXHcrXFxXKjpcXFcqXFwoY292ZXJwb2ludFxcfGNyb3NzXFx8Y29u c3RyYWludFxcKSIpCgkgICAgICA7OyBrZWVwIGdvaW5nIGlmIHdlIGFyZSBpbiB0aGUgbWlkZGxl IG9mIGEgd29yZAoJICAgICAgKG5vdCAob3IgKGxvb2tpbmctYXQgIlxcPCIpIChmb3J3YXJkLXdv cmQtc3RyaWN0bHkgLTEpKSkKCSAgICAgIDs7IHN0b3AgaWYgd2Ugc2VlIGFuIGFzc2VydGlvbiAo cGVyaGFwcyBsYWJlbGVkKQoJICAgICAgKGFuZAoJICAgICAgIChsb29raW5nLWF0ICJcXChcXHcr XFxXKjpcXFcqXFwpP1xcKFxcPFxcKGFzc2VydFxcfGFzc3VtZVxcfGNvdmVyXFwpXFw+XFxzLStc XDxwcm9wZXJ0eVxcPlxcKVxcfFxcKFxcPGFzc2VydFxcPlxcKSIpCgkgICAgICAgKHByb2duCgkJ IChzZXRxIGggKHBvaW50KSkKCQkgKHNhdmUtZXhjdXJzaW9uCgkJICAgKHZlcmlsb2ctYmFja3dh cmQtdG9rZW4pCgkJICAgKGlmIChhbmQgKGxvb2tpbmctYXQgdmVyaWxvZy1sYWJlbC1yZSkKCQkg ICAgICAgICAgICAobm90IChsb29raW5nLWF0IHZlcmlsb2ctZW5kLWJsb2NrLXJlKSkpCgkJICAg ICAgIChzZXRxIGggKHBvaW50KSkpKQoJCSAoZ290by1jaGFyIGgpKSkKCSAgICAgIDs7IHN0b3Ag aWYgd2Ugc2VlIGFuIGV4dGVuZGVkIGNvbXBsZXRlIHJlZywgcGVyaGFwcyBhIGNvbXBsZXRlIG9u ZQoJICAgICAgKGFuZAoJICAgICAgIChsb29raW5nLWF0IHZlcmlsb2ctY29tcGxldGUtcmVnKQoJ ICAgICAgIChsZXQqICgocCAocG9pbnQpKSkKCQkgKHdoaWxlIChhbmQgKGxvb2tpbmctYXQgdmVy aWxvZy1leHRlbmRlZC1jb21wbGV0ZS1yZSkKCQkJICAgICAocHJvZ24gKHNldHEgcCAocG9pbnQp KQoJCQkJICAgICh2ZXJpbG9nLWJhY2t3YXJkLXRva2VuKQoJCQkJICAgICgvPSBwIChwb2ludCkp KSkpCgkJIChnb3RvLWNoYXIgcCkpKQoJICAgICAgOzsgc3RvcCBpZiB3ZSBzZWUgYSBjb21wbGV0 ZSByZWcgKHByZXZpb3VzIGZvdW5kIGV4dGVuZGVkIG9uZXMpCgkgICAgICAobG9va2luZy1hdCB2 ZXJpbG9nLWJhc2ljLWNvbXBsZXRlLXJlKQoJICAgICAgOzsgc3RvcCBpZiBwcmV2aW91cyB0b2tl biBpcyBhbiBlbmRlcgoJICAgICAgKHNhdmUtZXhjdXJzaW9uCgkJKHZlcmlsb2ctYmFja3dhcmQt dG9rZW4pCgkJKGxvb2tpbmctYXQgdmVyaWxvZy1lbmQtYmxvY2stcmUpKSkpCiAgICAgICh2ZXJp bG9nLWJhY2t3YXJkLXN5bnRhY3RpYy13cykKICAgICAgKHZlcmlsb2ctYmFja3dhcmQtdG9rZW4p KQogICAgOzsgTm93IHBvaW50IGlzIHdoZXJlIHRoZSBwcmV2aW91cyBsaW5lIGVuZGVkLgogICAg KHZlcmlsb2ctZm9yd2FyZC1zeW50YWN0aWMtd3MpCiAgICA7OyBTa2lwIGZvcndhcmQgb3ZlciBh bnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMsIGFzIHRoZXkgaGF2ZSB3YWNreSBpbmRlbnRhdGlv bgogICAgKGlmIChsb29raW5nLWF0IHZlcmlsb2ctcHJlcHJvY2Vzc29yLXJlKQoJKHByb2duIChn b3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkKCSAgICAgICAodmVyaWxvZy1mb3J3YXJkLXN5bnRhY3Rp Yy13cykpKSkpCgooZGVmdW4gdmVyaWxvZy1iZWctb2Ytc3RhdGVtZW50LTEgKCkKICAiTW92ZSBi YWNrd2FyZCB0byBiZWdpbm5pbmcgb2Ygc3RhdGVtZW50LiIKICAoaW50ZXJhY3RpdmUpCiAgKGlm ICh2ZXJpbG9nLWluLWNvbW1lbnQtcCkKICAgICAgKHZlcmlsb2ctYmFja3dhcmQtc3ludGFjdGlj LXdzKSkKICAobGV0ICgocHQgKHBvaW50KSkpCiAgICAoY2F0Y2ggJ2RvbmUKICAgICAgKHdoaWxl IChub3QgKGxvb2tpbmctYXQgdmVyaWxvZy1jb21wbGV0ZS1yZWcpKQogICAgICAgIChzZXRxIHB0 IChwb2ludCkpCiAgICAgICAgKHZlcmlsb2ctYmFja3dhcmQtc3ludGFjdGljLXdzKQogICAgICAg IChpZiAob3IgKGJvbHApCiAgICAgICAgICAgICAgICAoPSAocHJlY2VkaW5nLWNoYXIpID9cOykK CQkocHJvZ24KCQkgICh2ZXJpbG9nLWJhY2t3YXJkLXRva2VuKQoJCSAgKGxvb2tpbmctYXQgdmVy aWxvZy1lbmRzLXJlKSkpCiAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgIChnb3RvLWNo YXIgcHQpCiAgICAgICAgICAgICAgKHRocm93ICdkb25lIHQpKSkpKQogICAgKHZlcmlsb2ctZm9y d2FyZC1zeW50YWN0aWMtd3MpKSkKOzsKOzsgICAgICAod2hpbGUgKGFuZAo7OyAgICAgICAgICAg ICAgKG5vdCAobG9va2luZy1hdCB2ZXJpbG9nLWNvbXBsZXRlLXJlZykpCjs7ICAgICAgICAgICAg ICAobm90IChib2xwKSkKOzsgICAgICAgICAgICAgIChub3QgKD0gKHByZWNlZGluZy1jaGFyKSA/ XDspKSkKOzsgICAgICAgICh2ZXJpbG9nLWJhY2t3YXJkLXRva2VuKQo7OyAgICAgICAgKHZlcmls b2ctYmFja3dhcmQtc3ludGFjdGljLXdzKQo7OyAgICAgICAgKHNldHEgcHQgKHBvaW50KSkpCjs7 ICAgICAgKGdvdG8tY2hhciBwdCkKOzsgICA7KHZlcmlsb2ctZm9yd2FyZC1zeW50YWN0aWMtd3Mp CgooZGVmdW4gdmVyaWxvZy1lbmQtb2Ytc3RhdGVtZW50ICgpCiAgIk1vdmUgZm9yd2FyZCB0byBl bmQgb2YgY3VycmVudCBzdGF0ZW1lbnQuIgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgobmVzdCAw KSBwb3MpCiAgICAoY29uZAogICAgICgodmVyaWxvZy1pbi1kaXJlY3RpdmUtcCkKICAgICAgKGZv cndhcmQtbGluZSAxKQogICAgICAoYmFja3dhcmQtY2hhciAxKSkKCiAgICAgKChsb29raW5nLWF0 IHZlcmlsb2ctYmVnLWJsb2NrLXJlKQogICAgICAodmVyaWxvZy1mb3J3YXJkLXNleHApKQoKICAg ICAoKGVxdWFsIChjaGFyLWFmdGVyKSA/XH0pCiAgICAgIChmb3J3YXJkLWNoYXIpKQoKICAgICA7 OyBTa2lwIHRvIGVuZCBvZiBzdGF0ZW1lbnQKICAgICAoKGNvbmRpdGlvbi1jYXNlIG5pbAogICAg ICAgICAgKHNldHEgcG9zCiAgICAgICAgICAgICAgICAoY2F0Y2ggJ2ZvdW5kCiAgICAgICAgICAg ICAgICAgICh3aGlsZSB0CiAgICAgICAgICAgICAgICAgICAgKGZvcndhcmQtc2V4cCAxKQogICAg ICAgICAgICAgICAgICAgICh2ZXJpbG9nLXNraXAtZm9yd2FyZC1jb21tZW50LW9yLXN0cmluZykK ICAgICAgICAgICAgICAgICAgICAoaWYgKGVvbHApCiAgICAgICAgICAgICAgICAgICAgICAgIChm b3J3YXJkLWxpbmUgMSkpCiAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChsb29raW5nLWF0ICJb IFx0XSo7IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAi XjsiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyIDEpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICh0aHJvdyAnZm91bmQgKHBvaW50KSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgKChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg IChmb3J3YXJkLXNleHAgLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmct YXQgdmVyaWxvZy1iZWctYmxvY2stcmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290 by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICh0 aHJvdyAnZm91bmQgbmlsKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvb2tpbmctYXQg IlsgXHRdKikiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAodGhyb3cgJ2ZvdW5kIChwb2lu dCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICgoZW9icCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHRocm93ICdmb3VuZCAocG9pbnQpKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICApKSkKCiAgICAgICAgICAgICAgICApCiAgICAgICAgKGVycm9yIG5pbCkpCiAgICAgIChpZiAo bm90IHBvcykKICAgICAgICAgIDs7IFNraXAgYSB3aG9sZSBibG9jawogICAgICAgICAgKGNhdGNo ICdmb3VuZAogICAgICAgICAgICAod2hpbGUgdAogICAgICAgICAgICAgICh2ZXJpbG9nLXJlLXNl YXJjaC1mb3J3YXJkIHZlcmlsb2ctZW5kLXN0YXRlbWVudC1yZSBuaWwgJ21vdmUpCiAgICAgICAg ICAgICAgKHNldHEgbmVzdCAoaWYgKG1hdGNoLWVuZCAxKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgxKyBuZXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAoMS0gbmVzdCkpKQog ICAgICAgICAgICAgIChjb25kICgoZW9icCkKICAgICAgICAgICAgICAgICAgICAgKHRocm93ICdm b3VuZCAocG9pbnQpKSkKICAgICAgICAgICAgICAgICAgICAoKD0gMCBuZXN0KQogICAgICAgICAg ICAgICAgICAgICAodGhyb3cgJ2ZvdW5kICh2ZXJpbG9nLWVuZC1vZi1zdGF0ZW1lbnQpKSkpKSkK ICAgICAgICBwb3MpKSkpKQoKKGRlZnVuIHZlcmlsb2ctaW4tY2FzZS1yZWdpb24tcCAoKQogICJS ZXR1cm4gdHJ1ZSBpZiBpbiBhIGNhc2UgcmVnaW9uLgpNb3JlIHNwZWNpZmljYWxseSwgcG9pbnQg QCBpbiB0aGUgbGluZSBmb28gOiBAIGJlZ2luIgogIChpbnRlcmFjdGl2ZSkKICAoc2F2ZS1leGN1 cnNpb24KICAgIChpZiAoYW5kCgkgKHByb2duICh2ZXJpbG9nLWZvcndhcmQtc3ludGFjdGljLXdz KQoJCShsb29raW5nLWF0ICJcXDxiZWdpblxcPiIpKQoJIChwcm9nbiAodmVyaWxvZy1iYWNrd2Fy ZC1zeW50YWN0aWMtd3MpCgkJKD0gKHByZWNlZGluZy1jaGFyKSA/XDopKSkKCShjYXRjaCAnZm91 bmQKCSAgKGxldCAoKG5lc3QgMSkpCgkgICAgKHdoaWxlIHQKCSAgICAgICh2ZXJpbG9nLXJlLXNl YXJjaC1iYWNrd2FyZAogICAgICAgICAgICAgIChjb25jYXQgIlxcKFxcPG1vZHVsZVxcPlxcKVxc fFxcKFxcPGNvbm5lY3Rtb2R1bGVcXD5cXClcXHxcXChcXDxyYW5kY2FzZVxcPlxcfFxcPGNhc2Vb eHpdP1xcPlteOl1cXClcXHwiCgkJICAgICAgICJcXChcXDxlbmRjYXNlXFw+XFwpXFw+IikKCSAg ICAgICBuaWwgJ21vdmUpCgkgICAgICAoY29uZAogICAgICAgICAgICAgICgobWF0Y2gtZW5kIDQp CgkJKHNldHEgbmVzdCAoMSsgbmVzdCkpKQogICAgICAgICAgICAgICgobWF0Y2gtZW5kIDMpCgkJ KGlmICg9IG5lc3QgMSkKCQkgICAgKHRocm93ICdmb3VuZCAxKSkKCQkoc2V0cSBuZXN0ICgxLSBu ZXN0KSkpCgkgICAgICAgKHQKCQkodGhyb3cgJ2ZvdW5kICg9IG5lc3QgMCkpKSkpKSkKICAgICAg bmlsKSkpCgooZGVmdW4gdmVyaWxvZy1iYWNrd2FyZC11cC1saXN0IChhcmcpCiAgIkNhbGwgYGJh Y2t3YXJkLXVwLWxpc3QnIEFSRywgaWdub3JpbmcgY29tbWVudHMgYW5kIGVycm9ycy4iCiAgKGxl dCAoKHBhcnNlLXNleHAtaWdub3JlLWNvbW1lbnRzIHQpKQogICAgKGNvbmRpdGlvbi1jYXNlIG5p bAogICAgICAgIChiYWNrd2FyZC11cC1saXN0IGFyZykgIDs7IE1heSB0aHJvdyBVbmJhbGFuY2Vk IHBhcmVudGhlc2lzCiAgICAgIChlcnJvciBuaWwpKSkpCgooZGVmdW4gdmVyaWxvZy1mb3J3YXJk LXNleHAtY210IChhcmcpCiAgIkNhbGwgYGZvcndhcmQtc2V4cCcgQVJHLCBpbnNpZGUgY29tbWVu dHMuIgogIChsZXQgKChwYXJzZS1zZXhwLWlnbm9yZS1jb21tZW50cyBuaWwpKQogICAgKGZvcndh cmQtc2V4cCBhcmcpKSkKCihkZWZ1biB2ZXJpbG9nLWZvcndhcmQtc2V4cC1pZ24tY210IChhcmcp CiAgIkNhbGwgYGZvcndhcmQtc2V4cCcgQVJHLCBpZ25vcmluZyBjb21tZW50cy4iCiAgKGxldCAo KHBhcnNlLXNleHAtaWdub3JlLWNvbW1lbnRzIHQpKQogICAgKGZvcndhcmQtc2V4cCBhcmcpKSkK CihkZWZ1biB2ZXJpbG9nLWluLWdlbmVyYXRlLXJlZ2lvbi1wICgpCiAgIlJldHVybiB0cnVlIGlm IGluIGEgZ2VuZXJhdGUgcmVnaW9uLgpNb3JlIHNwZWNpZmljYWxseSwgYWZ0ZXIgYSBnZW5lcmF0 ZSBhbmQgYmVmb3JlIGFuIGVuZGdlbmVyYXRlLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKG5l c3QgMSkpCiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKGNhdGNoICdkb25lCgkod2hpbGUgKGFu ZAoJCSgvPSBuZXN0IDApCgkJKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkCiAgICAgICAgICAg ICAgICAiXFw8XFwobW9kdWxlXFwpXFx8XFwoY29ubmVjdG1vZHVsZVxcKVxcfFxcKGdlbmVyYXRl XFwpXFx8XFwoZW5kZ2VuZXJhdGVcXClcXD4iIG5pbCAnbW92ZSkKCQkoY29uZAoJCSAoKG1hdGNo LWVuZCAxKSA7IG1vZHVsZSAtIHdlIGhhdmUgY3Jhd2xlZCBvdXQKCQkgICh0aHJvdyAnZG9uZSAx KSkKICAgICAgICAgICAgICAgICgobWF0Y2gtZW5kIDIpIDsgY29ubmVjdG1vZHVsZSAtIHdlIGhh dmUgY3Jhd2xlZCBvdXQKICAgICAgICAgICAgICAgICAodGhyb3cgJ2RvbmUgMSkpCiAgICAgICAg ICAgICAgICAoKG1hdGNoLWVuZCAzKSA7IGdlbmVyYXRlCgkJICAoc2V0cSBuZXN0ICgxLSBuZXN0 KSkpCiAgICAgICAgICAgICAgICAoKG1hdGNoLWVuZCA0KSA7IGVuZGdlbmVyYXRlCgkJICAoc2V0 cSBuZXN0ICgxKyBuZXN0KSkpKSkpKSkKICAgICg9IG5lc3QgMCkgKSkgOyByZXR1cm4gbmVzdAoK KGRlZnVuIHZlcmlsb2ctaW4tZm9yay1yZWdpb24tcCAoKQogICJSZXR1cm4gdHJ1ZSBpZiBiZXR3 ZWVuIGEgZm9yayBhbmQgam9pbi4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChsaW0gKHNhdmUt ZXhjdXJzaW9uICh2ZXJpbG9nLWJlZy1vZi1kZWZ1bikgIChwb2ludCkpKQoJKG5lc3QgMSkpCiAg ICAoc2F2ZS1leGN1cnNpb24KICAgICAgKHdoaWxlIChhbmQKCSAgICAgICgvPSBuZXN0IDApCgkg ICAgICAodmVyaWxvZy1yZS1zZWFyY2gtYmFja3dhcmQgIlxcPFxcKGZvcmtcXClcXHxcXChqb2lu XFwoX2FueVxcfF9ub25lXFwpP1xcKVxcPiIgbGltICdtb3ZlKQoJICAgICAgKGNvbmQKCSAgICAg ICAoKG1hdGNoLWVuZCAxKSA7IGZvcmsKCQkoc2V0cSBuZXN0ICgxLSBuZXN0KSkpCgkgICAgICAg KChtYXRjaC1lbmQgMikgOyBqb2luCgkJKHNldHEgbmVzdCAoMSsgbmVzdCkpKSkpKSkKICAgICg9 IG5lc3QgMCkgKSkgOyByZXR1cm4gbmVzdAoKKGRlZnVuIHZlcmlsb2ctaW4tZGVmZXJyZWQtaW1t ZWRpYXRlLWZpbmFsLXAgKCkKICAiUmV0dXJuIHRydWUgaWYgaW5zaWRlIGFuIGBhc3NlcnQvYXNz dW1lL2NvdmVyIGZpbmFsJyBzdGF0ZW1lbnQuIgogIChpbnRlcmFjdGl2ZSkKICAoYW5kIChsb29r aW5nLWF0ICJmaW5hbCIpCiAgICAgICAodmVyaWxvZy1sb29raW5nLWJhY2sgIlxcPFxcKD86YXNz ZXJ0XFx8YXNzdW1lXFx8Y292ZXJcXClcXD5cXHMtKyIgbmlsKSkKICApCgooZGVmdW4gdmVyaWxv Zy1iYWNrd2FyZC1jYXNlLWl0ZW0gKGxpbSkKICAiU2tpcCBiYWNrd2FyZCB0byBuZWFyZXN0IGVu Y2xvc2luZyBjYXNlIGl0ZW0uCkxpbWl0IHNlYXJjaCB0byBwb2ludCBMSU0uIgogIChpbnRlcmFj dGl2ZSkKICAobGV0ICgoc3RyICduaWwpCgkobGltMQoJIChwcm9nbgoJICAgKHNhdmUtZXhjdXJz aW9uCgkgICAgICh2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZCB2ZXJpbG9nLWVuZGNvbW1lbnQt cmVhc29uLXJlCgkJCQkJIGxpbSAnbW92ZSkKCSAgICAgKHBvaW50KSkpKSkKICAgIDs7IFRyeSB0 byBmaW5kIHRoZSByZWFsIDoKICAgIChpZiAoc2F2ZS1leGN1cnNpb24gKHNlYXJjaC1iYWNrd2Fy ZCAiOiIgbGltMSB0KSkKCShsZXQgKChjb2xvbiAwKQoJICAgICAgYiBlICkKCSAgKHdoaWxlCgkg ICAgICAoYW5kCgkgICAgICAgKDwgY29sb24gMSkKCSAgICAgICAodmVyaWxvZy1yZS1zZWFyY2gt YmFja3dhcmQgIlxcKFxcW1xcKVxcfFxcKFxcXVxcKVxcfFxcKDpcXCkiCgkJCQkJICAgbGltMSAn bW92ZSkpCgkgICAgKGNvbmQKICAgICAgICAgICAgICgobWF0Y2gtZW5kIDEpICA7IFsKCSAgICAg IChzZXRxIGNvbG9uICgxKyBjb2xvbikpCgkgICAgICAoaWYgKD49IGNvbG9uIDApCgkJICAoZXJy b3IgIiVzOiB1bmJhbGFuY2VkIFsiICh2ZXJpbG9nLXBvaW50LXRleHQpKSkpCiAgICAgICAgICAg ICAoKG1hdGNoLWVuZCAyKSAgOyBdCgkgICAgICAoc2V0cSBjb2xvbiAoMS0gY29sb24pKSkKCiAg ICAgICAgICAgICAoKG1hdGNoLWVuZCAzKSAgOyA6CgkgICAgICAoc2V0cSBjb2xvbiAoMSsgY29s b24pKSkpKQoJICA7OyBTa2lwIGJhY2sgdG8gYmVnaW5uaW5nIG9mIGNhc2UgaXRlbQoJICAoc2tp cC1jaGFycy1iYWNrd2FyZCAiXHQgIikKCSAgKHZlcmlsb2ctc2tpcC1iYWNrd2FyZC1jb21tZW50 LW9yLXN0cmluZykKCSAgKHNldHEgZSAocG9pbnQpKQoJICAoc2V0cSBiCgkJKHByb2duCgkJICAo aWYKCQkgICAgICAodmVyaWxvZy1yZS1zZWFyY2gtYmFja3dhcmQKCQkgICAgICAgIlxcPFxcKHJh bmRjYXNlXFx8Y2FzZVt6eF0/XFwpXFw+XFx8O1xcfFxcPGVuZFxcPiIgbmlsICdtb3ZlKQoJCSAg ICAgIChwcm9nbgoJCQkoY29uZAoJCQkgKChtYXRjaC1lbmQgMSkKCQkJICAoZ290by1jaGFyICht YXRjaC1lbmQgMSkpCgkJCSAgKHZlcmlsb2ctZm9yd2FyZC13cyZkaXJlY3RpdmVzKQoJCQkgIChp ZiAobG9va2luZy1hdCAiKCIpCgkJCSAgICAgIChwcm9nbgoJCQkJKGZvcndhcmQtc2V4cCkKCQkJ CSh2ZXJpbG9nLWZvcndhcmQtd3MmZGlyZWN0aXZlcykpKQoJCQkgIChwb2ludCkpCgkJCSAodAoJ CQkgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkKCQkJICAodmVyaWxvZy1mb3J3YXJkLXdzJmRp cmVjdGl2ZXMpCgkJCSAgKHBvaW50KSkpKQoJCSAgICAoZXJyb3IgIk1hbGZvcm1lZCBjYXNlIGl0 ZW0iKSkpKQoJICAoc2V0cSBzdHIgKGJ1ZmZlci1zdWJzdHJpbmcgYiBlKSkKCSAgKGlmCgkgICAg ICAoc2V0cSBlCgkJICAgIChzdHJpbmctbWF0Y2gKCQkgICAgICJbIFx0XSpcXChcXChcblxcKVxc fFxcKC8vXFwpXFx8XFwoL1xcKlxcKVxcKSIgc3RyKSkKCSAgICAgIChzZXRxIHN0ciAoY29uY2F0 IChzdWJzdHJpbmcgc3RyIDAgZSkgIi4uLiIpKSkKCSAgc3RyKQogICAgICAnbmlsKSkpCgwKOzs7 IE90aGVyIGZ1bmN0aW9uczoKOzsKCihkZWZ1biB2ZXJpbG9nLWtpbGwtZXhpc3RpbmctY29tbWVu dCAoKQogICJLaWxsIGF1dG8gY29tbWVudCBvbiB0aGlzIGxpbmUuIgogIChzYXZlLWV4Y3Vyc2lv bgogICAgKGxldCogKAoJICAgKGUgKHByb2duCgkJKGVuZC1vZi1saW5lKQoJCShwb2ludCkpKQoJ ICAgKGIgKHByb2duCgkJKGJlZ2lubmluZy1vZi1saW5lKQoJCShzZWFyY2gtZm9yd2FyZCAiLy8i IGUgdCkpKSkKICAgICAgKGlmIGIKCSAgKGRlbGV0ZS1yZWdpb24gKC0gYiAyKSBlKSkpKSkKCihk ZWZjb25zdCB2ZXJpbG9nLWRpcmVjdGl2ZS1uZXN0LXJlCiAgKGNvbmNhdCAiXFwoYGVsc2VcXD5c XClcXHwiCgkgICJcXChgZW5kaWZcXD5cXClcXHwiCgkgICJcXChgaWZcXD5cXClcXHwiCgkgICJc XChgaWZkZWZcXD5cXClcXHwiCgkgICJcXChgaWZuZGVmXFw+XFwpXFx8IgoJICAiXFwoYGVsc2lm XFw+XFwpIikpCgooZGVmdW4gdmVyaWxvZy1zZXQtYXV0by1lbmRjb21tZW50cyAoaW5kZW50LXN0 ciBraWxsLWV4aXN0aW5nLWNvbW1lbnQpCiAgIkFkZCBlbmRpbmcgY29tbWVudCB3aXRoIGdpdmVu IElOREVOVC1TVFIuCldpdGggS0lMTC1FWElTVElORy1DT01NRU5ULCByZW1vdmUgd2hhdCB3YXMg dGhlcmUgYmVmb3JlLgpJbnNlcnQgYC8vIGNhc2U6IDcgJyBvciBgLy8gTkFNRSAnIG9uIHRoaXMg bGluZSBpZiBhcHByb3ByaWF0ZS4KSW5zZXJ0IGAvLyBjYXNlIGV4cHIgJyBpZiB0aGlzIGxpbmUg ZW5kcyBhIGNhc2UgYmxvY2suCkluc2VydCBgLy8gaWZkZWYgRk9PICcgaWYgdGhpcyBsaW5lIGVu ZHMgY29kZSBjb25kaXRpb25hbCBvbiBGT08uCkluc2VydCBgLy8gTkFNRSAnIGlmIHRoaXMgbGlu ZSBlbmRzIGEgZnVuY3Rpb24sIHRhc2ssIG1vZHVsZSwKcHJpbWl0aXZlIG9yIGludGVyZmFjZSBu YW1lZCBOQU1FLiIKICAoc2F2ZS1leGN1cnNpb24KICAgIChjb25kCiAgICAgKDsgQ29tbWVudCBj bG9zZSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcwogICAgICAoYW5kCiAgICAgICAobG9va2luZy1h dCAiXFwoYGVuZGlmXFwpXFx8XFwoYGVsc2VcXCkiKQogICAgICAgKG9yICBraWxsLWV4aXN0aW5n LWNvbW1lbnQKCSAgICAobm90IChzYXZlLWV4Y3Vyc2lvbgoJCSAgIChlbmQtb2YtbGluZSkKCQkg ICAoc2VhcmNoLWJhY2t3YXJkICIvLyIgKHBvaW50LWF0LWJvbCkgdCkpKSkpCiAgICAgIChsZXQg KChuZXN0IDEpIGIgZQoJICAgIG0KCSAgICAoZWxzZSAoaWYgKG1hdGNoLWVuZCAyKSAiISIgIiAi KSkpCgkoZW5kLW9mLWxpbmUpCgkoaWYga2lsbC1leGlzdGluZy1jb21tZW50CgkgICAgKHZlcmls b2cta2lsbC1leGlzdGluZy1jb21tZW50KSkKCShkZWxldGUtaG9yaXpvbnRhbC1zcGFjZSkKCShz YXZlLWV4Y3Vyc2lvbgoJICAoYmFja3dhcmQtc2V4cCAxKQoJICAod2hpbGUgKGFuZCAoLz0gbmVz dCAwKQoJCSAgICAgICh2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZCB2ZXJpbG9nLWRpcmVjdGl2 ZS1uZXN0LXJlIG5pbCAnbW92ZSkpCgkgICAgKGNvbmQKCSAgICAgKChtYXRjaC1lbmQgMSkgOyBg ZWxzZQoJICAgICAgKGlmICg9IG5lc3QgMSkKCQkgIChzZXRxIGVsc2UgIiEiKSkpCgkgICAgICgo bWF0Y2gtZW5kIDIpIDsgYGVuZGlmCgkgICAgICAoc2V0cSBuZXN0ICgxKyBuZXN0KSkpCgkgICAg ICgobWF0Y2gtZW5kIDMpIDsgYGlmCgkgICAgICAoc2V0cSBuZXN0ICgxLSBuZXN0KSkpCgkgICAg ICgobWF0Y2gtZW5kIDQpIDsgYGlmZGVmCgkgICAgICAoc2V0cSBuZXN0ICgxLSBuZXN0KSkpCgkg ICAgICgobWF0Y2gtZW5kIDUpIDsgYGlmbmRlZgoJICAgICAgKHNldHEgbmVzdCAoMS0gbmVzdCkp KQoJICAgICAoKG1hdGNoLWVuZCA2KSA7IGBlbHNpZgoJICAgICAgKGlmICg9IG5lc3QgMSkKCQkg IChwcm9nbgoJCSAgICAoc2V0cSBlbHNlICIhIikKCQkgICAgKHNldHEgbmVzdCAwKSkpKSkpCgkg IChpZiAobWF0Y2gtZW5kIDApCgkgICAgICAoc2V0cQoJICAgICAgIG0gKGJ1ZmZlci1zdWJzdHJp bmcKCQkgIChtYXRjaC1iZWdpbm5pbmcgMCkKCQkgIChtYXRjaC1lbmQgMCkpCgkgICAgICAgYiAo cHJvZ24KCQkgICAoc2tpcC1jaGFycy1mb3J3YXJkICJeIFx0IikKCQkgICAodmVyaWxvZy1mb3J3 YXJkLXN5bnRhY3RpYy13cykKCQkgICAocG9pbnQpKQoJICAgICAgIGUgKHByb2duCgkJICAgKHNr aXAtY2hhcnMtZm9yd2FyZCAiYS16QS1aMC05XyIpCgkJICAgKHBvaW50KSkpKSkKCShpZiBiCgkg ICAgKGlmICg+IChjb3VudC1saW5lcyAocG9pbnQpIGIpIHZlcmlsb2ctbWluaW11bS1jb21tZW50 LWRpc3RhbmNlKQoJCShpbnNlcnQgKGNvbmNhdCAiIC8vICIgZWxzZSBtICIgIiAoYnVmZmVyLXN1 YnN0cmluZyBiIGUpKSkpCgkgIChwcm9nbgoJICAgIChpbnNlcnQgIiAvLyB1bm1hdGNoZWQgYGVs c2UsIGBlbHNpZiBvciBgZW5kaWYiKQoJICAgIChkaW5nICd0KSkpKSkKCiAgICAgKDsgQ29tbWVu dCBjbG9zZSBjYXNlL2NsYXNzL2Z1bmN0aW9uL3Rhc2svbW9kdWxlIGFuZCBuYW1lZCBibG9jawog ICAgICAoYW5kIChsb29raW5nLWF0ICJcXDxlbmQiKQoJICAgKG9yIGtpbGwtZXhpc3RpbmctY29t bWVudAoJICAgICAgIChub3QgKHNhdmUtZXhjdXJzaW9uCgkJICAgICAgKGVuZC1vZi1saW5lKQoJ CSAgICAgIChzZWFyY2gtYmFja3dhcmQgIi8vIiAocG9pbnQtYXQtYm9sKSB0KSkpKSkKICAgICAg KGxldCAoKHR5cGUgKGNhciBpbmRlbnQtc3RyKSkpCgkodW5sZXNzIChlcSB0eXBlICdkZWNsYXJh dGlvbikKICAgICAgICAgICh1bmxlc3MgKGxvb2tpbmctYXQgKGNvbmNhdCAiXFwoIiB2ZXJpbG9n LWVuZC1ibG9jay1vcmRlcmVkLXJlICJcXClbIFx0XSo6IikpICA7IGlnbm9yZSBuYW1lZCBlbmRz CgkgICAgKGlmIChsb29raW5nLWF0IHZlcmlsb2ctZW5kLWJsb2NrLW9yZGVyZWQtcmUpCiAgICAg ICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICg7LSBUaGlzIGlzIGEgY2FzZSBibG9j azsgc2VhcmNoIGJhY2sgZm9yIHRoZSBzdGFydCBvZiB0aGlzIGNhc2UKICAgICAgICAgICAgICAg ICAgKG1hdGNoLWVuZCAxKSAgOyBvZiB2ZXJpbG9nLWVuZC1ibG9jay1vcmRlcmVkLXJlCgogICAg ICAgICAgICAgICAgICAobGV0ICgoZXJyICd0KQogICAgICAgICAgICAgICAgICAgICAgICAoc3Ry ICJVTk1BVENIRUQhISIpKQogICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAg ICAgICAgICAgICAgICAgICAgKHZlcmlsb2ctbGVhcC10by1oZWFkKQogICAgICAgICAgICAgICAg ICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAgICAgICAoKGxvb2tpbmctYXQgIlxcPHJhbmRj YXNlXFw+IikKICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgc3RyICJyYW5kY2FzZSIpCiAg ICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGVyciBuaWwpKQogICAgICAgICAgICAgICAgICAg ICAgICgobG9va2luZy1hdCAiXFwoXFwodW5pcXVlMD9cXHMtK1xcfHByaW9yaXR5XFxzLStcXCk/ Y2FzZVt4el0/XFwpIikKICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gt ZW5kIDApKQogICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzdHIgKGNvbmNhdCAobWF0Y2gt c3RyaW5nIDApICIgIiAodmVyaWxvZy1nZXQtZXhwcikpKQogICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBlcnIgbmlsKSkKICAgICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAg ICAgICAgIChlbmQtb2YtbGluZSkKICAgICAgICAgICAgICAgICAgICAoaWYga2lsbC1leGlzdGlu Zy1jb21tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWtpbGwtZXhpc3Rpbmct Y29tbWVudCkpCiAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1ob3Jpem9udGFsLXNwYWNlKQog ICAgICAgICAgICAgICAgICAgIChpbnNlcnQgKGNvbmNhdCAiIC8vICIgc3RyICkpCiAgICAgICAg ICAgICAgICAgICAgKGlmIGVyciAoZGluZyAndCkpKSkKCiAgICAgICAgICAgICAgICAgKDstIFRo aXMgaXMgYSBiZWdpbi4uZW5kIGJsb2NrCiAgICAgICAgICAgICAgICAgIChtYXRjaC1lbmQgMikg IDsgb2YgdmVyaWxvZy1lbmQtYmxvY2stb3JkZXJlZC1yZQogICAgICAgICAgICAgICAgICAobGV0 ICgoc3RyICIgLy8gVU5NQVRDSEVEICEhIikKICAgICAgICAgICAgICAgICAgICAgICAgKGVyciAn dCkKICAgICAgICAgICAgICAgICAgICAgICAgKGhlcmUgKHBvaW50KSkKICAgICAgICAgICAgICAg ICAgICAgICAgdGhlcmUKICAgICAgICAgICAgICAgICAgICAgICAgY250eCkKICAgICAgICAgICAg ICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWxl YXAtdG8taGVhZCkKICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRoZXJlIChwb2ludCkpCiAg ICAgICAgICAgICAgICAgICAgICAoaWYgKG5vdCAobWF0Y2gtZW5kIDApKQogICAgICAgICAgICAg ICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hh ciBoZXJlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZC1vZi1saW5lKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIGtpbGwtZXhpc3RpbmctY29tbWVudAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWtpbGwtZXhpc3RpbmctY29tbWVudCkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWhvcml6b250YWwtc3BhY2UpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0IHN0cikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChkaW5nICd0KSkKICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGxpbQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uICh2ZXJpbG9nLWJlZy1v Zi1kZWZ1bikgKHBvaW50KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoZXJlIChw b2ludCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICg7LS0gaGFuZGxlIG5hbWVkIGJsb2NrIGRpZmZlcmVudGx5CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobG9va2luZy1hdCB2ZXJpbG9nLW5hbWVkLWJsb2NrLXJlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNlYXJjaC1mb3J3YXJkICI6IikKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIHRoZXJlIChwb2ludCkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBzdHIgKHZlcmlsb2ctZ2V0LWV4cHIpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHNldHEgZXJyIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRx IHN0ciAoY29uY2F0ICIgLy8gYmxvY2s6ICIgc3RyICkpKQoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCh2ZXJpbG9nLWluLWNhc2UtcmVnaW9uLXApIDstLSBoYW5kbGUgY2FzZSBpdGVtIGRp ZmZlcmVudGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGhlcmUpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzdHIgKHZlcmlsb2ctYmFja3dhcmQtY2Fz ZS1pdGVtIGxpbSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB0aGVyZSAocG9p bnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZXJyIG5pbCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIHN0ciAoY29uY2F0ICIgLy8gY2FzZTogIiBzdHIgKSkp CgogICAgICAgICAgICAgICAgICAgICAgICAgICAoOy0gdHJ5IHRvIGZpbmQgInJlYXNvbiIgZm9y IHRoaXMgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxIGhl cmUgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgICAo dmVyaWxvZy1iYWNrd2FyZC10b2tlbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodmVyaWxvZy1iZWctb2Ytc3RhdGVtZW50KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBlcnIgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzdHIg IiIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9va2luZy1hdCB2ZXJpbG9nLWVu ZGNvbW1lbnQtcmVhc29uLXJlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB0 aGVyZSAobWF0Y2gtZW5kIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBj bnR4IChjb25jYXQgKG1hdGNoLXN0cmluZyAwKSAiICIpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDstIGJlZ2luCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWVuZCAxKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIGVyciBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaWYgKGFuZCAodmVyaWxvZy1jb250aW51ZWQtbGluZSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0ICJcXDxyZXBlYXRcXD5cXHxcXDx3YWl0 XFw+XFx8XFw8YWx3YXlzXFw+IikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1j aGFyIChtYXRjaC1lbmQgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSB0aGVyZSAocG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHNldHEgc3RyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY29uY2F0ICIgLy8gIiAobWF0Y2gtc3RyaW5nIDApICIgIiAodmVyaWxvZy1nZXQtZXhw cikpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgc3RyICIiKSkp KQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg7LSBlbHNlCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1hdGNoLWVuZCAyKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChsZXQgKChuZXN0IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCByZWcgIlxcKFxcPGJlZ2luXFw+XFwpXFx8XFwoXFw8ZW5kXFw+XFwpXFx8XFwoXFw8aWZc XD5cXClcXHxcXChhc3NlcnRcXCkiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChjYXRjaCAnc2tpcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hpbGUg KHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkIHJlZyBuaWwgJ21vdmUpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKChtYXRjaC1lbmQgMSkgOyBiZWdpbgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbmVzdCAoMS0gbmVzdCkpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoLWVuZCAyKSAgICAgICAgICAgICAgICAgICAg ICAgOyBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG5l c3QgKDErIG5lc3QpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCht YXRjaC1lbmQgMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAo PSAwIG5lc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBy b2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1j aGFyIChtYXRjaC1lbmQgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSB0aGVyZSAocG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgZXJyIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHN0ciAodmVyaWxvZy1nZXQtZXhwcikpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzdHIgKGNvbmNh dCAiIC8vIGVsc2U6ICFpZiIgc3RyICkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodGhyb3cgJ3NraXAgMSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChtYXRjaC1lbmQgNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAoPSAwIG5lc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB0aGVyZSAocG9pbnQpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZXJyIG5pbCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHN0ciAodmVyaWxv Zy1nZXQtZXhwcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBzdHIgKGNvbmNhdCAiIC8vIGVsc2U6ICFhc3NlcnQgIiBzdHIgKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAnc2tpcCAxKSkpKSkp KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOy0gZW5kIGVsc2UKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDMpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciB0aGVyZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobGV0ICgobmVzdCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChyZWcgIlxcKFxcPGJlZ2luXFw+XFwpXFx8XFwoXFw8ZW5kXFw+XFwpXFx8XFwoXFw8aWZcXD5c XClcXHxcXChhc3NlcnRcXCkiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj YXRjaCAnc2tpcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hpbGUgKHZl cmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkIHJlZyBuaWwgJ21vdmUpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKChtYXRjaC1lbmQgMSkgOyBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNldHEgbmVzdCAoMS0gbmVzdCkpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoKG1hdGNoLWVuZCAyKSAgICAgICAgICAgICAgICAgICAgICAg OyBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG5lc3Qg KDErIG5lc3QpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRj aC1lbmQgMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPSAw IG5lc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2du CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy IChtYXRjaC1lbmQgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSB0aGVyZSAocG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNldHEgZXJyIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIHN0ciAodmVyaWxvZy1nZXQtZXhwcikpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzdHIgKGNvbmNhdCAi IC8vIGVsc2U6ICFpZiIgc3RyICkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodGhyb3cgJ3NraXAgMSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKChtYXRjaC1lbmQgNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAoPSAwIG5lc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB0aGVyZSAocG9pbnQpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZXJyIG5pbCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHN0ciAodmVyaWxvZy1n ZXQtZXhwcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c2V0cSBzdHIgKGNvbmNhdCAiIC8vIGVsc2U6ICFhc3NlcnQgIiBzdHIgKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAnc2tpcCAxKSkpKSkpKSkp CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDsgYWx3YXlzLCBhbHdheXNfY29tYiwg YWx3YXlzX2xhdGNoIHcvbyBALi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1h dGNoLWVuZCA1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1h dGNoLWVuZCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB0aGVyZSAo cG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGVyciBuaWwpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgc3RyIChjb25jYXQgIiAvLyAiIGNu dHggKSkpCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDstIHRhc2svZnVuY3Rpb24v aW5pdGlhbCBldCBjZXRlcmEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWVuZCAwKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoc2V0cSB0aGVyZSAocG9pbnQpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzZXRxIGVyciBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHNldHEgc3RyIChjb25jYXQgIiAvLyAiIGNudHggKHZlcmlsb2ctZ2V0LWV4cHIpKSkpCgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDstLSBvdGhlcndpc2UuLi4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzdHIgIiAvLyBhdXRvLWVuZGNvbW1lbnQgY29u ZnVzZWQgIikpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWluLWNhc2UtcmVnaW9uLXApIDstLSBoYW5k bGUgY2FzZSBpdGVtIGRpZmZlcmVudGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgdGhlcmUgKHBvaW50 KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBoZXJlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzdHIgKHZlcmlsb2ctYmFja3dhcmQt Y2FzZS1pdGVtIGxpbSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZXJy IG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgc3RyIChjb25jYXQgIiAv LyBjYXNlOiAiIHN0ciApKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2ZXJpbG9n LWluLWZvcmstcmVnaW9uLXApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGVy ciBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHN0ciAiIC8vIGZvcmsg YnJhbmNoIiApKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvb2tpbmctYXQgIlxc PGVuZFxcPiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IEhFUkUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGZvcndhcmQtd29yZC1zdHJpY3RseSAxKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1mb3J3YXJkLXN5bnRhY3RpYy13cykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZXJyIG5pbCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHNldHEgc3RyICh2ZXJpbG9nLWdldC1leHByKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNldHEgc3RyIChjb25jYXQgIiAvLyAiIGNudHggc3RyICkpKQoKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChn b3RvLWNoYXIgaGVyZSkKICAgICAgICAgICAgICAgICAgICAgICAgKGVuZC1vZi1saW5lKQogICAg ICAgICAgICAgICAgICAgICAgICAoaWYga2lsbC1leGlzdGluZy1jb21tZW50CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodmVyaWxvZy1raWxsLWV4aXN0aW5nLWNvbW1lbnQpKQogICAgICAg ICAgICAgICAgICAgICAgICAoZGVsZXRlLWhvcml6b250YWwtc3BhY2UpCiAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAob3IgZXJyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD4g KGNvdW50LWxpbmVzIGhlcmUgdGhlcmUpIHZlcmlsb2ctbWluaW11bS1jb21tZW50LWRpc3RhbmNl KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgc3RyKSkKICAgICAgICAgICAg ICAgICAgICAgICAgKGlmIGVyciAoZGluZyAndCkpCiAgICAgICAgICAgICAgICAgICAgICAgICkp KSkKICAgICAgICAgICAgICAgICAoOy0gdGhpcyBpcyBlbmRjbGFzcywgd2hpY2ggY2FuIGJlIG5l c3RlZAogICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDExKSAgOyBvZiB2ZXJpbG9nLWVuZC1i bG9jay1vcmRlcmVkLXJlCiAgICAgICAgICAgICAgICAgIDs7KGdvdG8tY2hhciB0aGVyZSkKICAg ICAgICAgICAgICAgICAgKGxldCAoKG5lc3QgMCkKICAgICAgICAgICAgICAgICAgICAgICAgKHJl ZyAiXFw8XFwoXFwoY2xhc3NcXClcXHxcXChlbmRjbGFzc1xcKVxcfFxcKHBhY2thZ2VcXHxwcmlt aXRpdmVcXHxcXChtYWNyb1xcKT9tb2R1bGVcXClcXClcXD4iKQogICAgICAgICAgICAgICAgICAg ICAgICBzdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAg ICAgICAgICAgICAgICAoY2F0Y2ggJ3NraXAKICAgICAgICAgICAgICAgICAgICAgICAgKHdoaWxl ICh2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZCByZWcgbmlsICdtb3ZlKQogICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtZW5k IDQpICAgICAgIDsgZW5kY2xhc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaW5nICd0 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgc3RyaW5nICJ1bm1hdGNoZWQgZW5k Y2xhc3MiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRocm93ICdza2lwIDEpKQoKICAg ICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaC1lbmQgMykgICAgICAgOyBlbmRjbGFzcwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbmVzdCAoMSsgbmVzdCkpKQoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgKChtYXRjaC1lbmQgMikgOyBjbGFzcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNldHEgbmVzdCAoMS0gbmVzdCkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgKDwgbmVzdCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw cm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gt ZW5kIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoYiBlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBiIChwcm9nbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAi XiBcdCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVy aWxvZy1mb3J3YXJkLXdzJmRpcmVjdGl2ZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiYS16QS1aMC05XyIpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgc3RyaW5nIChidWZmZXItc3Vic3RyaW5nIGIgZSkp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRocm93ICdza2lwIDEpKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICkpKSkKICAgICAgICAgICAgICAgICAgICAoZW5kLW9m LWxpbmUpCiAgICAgICAgICAgICAgICAgICAgKGlmIGtpbGwtZXhpc3RpbmctY29tbWVudAogICAg ICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1raWxsLWV4aXN0aW5nLWNvbW1lbnQpKQogICAg ICAgICAgICAgICAgICAgIChkZWxldGUtaG9yaXpvbnRhbC1zcGFjZSkKICAgICAgICAgICAgICAg ICAgICAoaW5zZXJ0IChjb25jYXQgIiAvLyAiIHN0cmluZyApKSkpCgogICAgICAgICAgICAgICAg ICg7ICAtIHRoaXMgaXMgZW5ke2Z1bmN0aW9uLGdlbmVyYXRlLHRhc2ssbW9kdWxlLHByaW1pdGl2 ZSx0YWJsZSxnZW5lcmF0ZX0KICAgICAgICAgICAgICAgICAgOzsgLSB3aGljaCBjYW4gbm90IGJl IG5lc3RlZC4KICAgICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAobGV0IChzdHJp bmcgcmVnIChuYW1lLXJlIG5pbCkpCiAgICAgICAgICAgICAgICAgICAgKGVuZC1vZi1saW5lKQog ICAgICAgICAgICAgICAgICAgIChpZiBraWxsLWV4aXN0aW5nLWNvbW1lbnQKICAgICAgICAgICAg ICAgICAgICAgICAgKHNhdmUtbWF0Y2gtZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICh2 ZXJpbG9nLWtpbGwtZXhpc3RpbmctY29tbWVudCkpKQogICAgICAgICAgICAgICAgICAgIChkZWxl dGUtaG9yaXpvbnRhbC1zcGFjZSkKICAgICAgICAgICAgICAgICAgICAoYmFja3dhcmQtc2V4cCkK ICAgICAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICAgICAoKG1hdGNoLWVu ZCA1KSAgOyBvZiB2ZXJpbG9nLWVuZC1ibG9jay1vcmRlcmVkLXJlCiAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSByZWcgIlxcKFxcPGZ1bmN0aW9uXFw+XFwpXFx8XFwoXFw8XFwoZW5kZnVuY3Rp b25cXHx0YXNrXFx8XFwobWFjcm9cXCk/bW9kdWxlXFx8cHJpbWl0aXZlXFwpXFw+XFwpIikKICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIG5hbWUtcmUgIlxcdytcXCg/OlxuXFx8XFxzLVxcKSpb KDtdIikpCiAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtZW5kIDYpICA7IG9mIHZlcmlsb2ct ZW5kLWJsb2NrLW9yZGVyZWQtcmUKICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHJlZyAiXFwo XFw8dGFza1xcPlxcKVxcfFxcKFxcPFxcKGVuZHRhc2tcXHxmdW5jdGlvblxcfFxcKG1hY3JvXFwp P21vZHVsZVxcfHByaW1pdGl2ZVxcKVxcPlxcKSIpCiAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBuYW1lLXJlICJcXHcrXFwoPzpcblxcfFxccy1cXCkqWyg7XSIpKQogICAgICAgICAgICAgICAg ICAgICAoKG1hdGNoLWVuZCA3KSAgOyBvZiB2ZXJpbG9nLWVuZC1ibG9jay1vcmRlcmVkLXJlCiAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSByZWcgIlxcKFxcPFxcKG1hY3JvXFwpP21vZHVsZVxc PlxcKVxcfFxcPGVuZG1vZHVsZVxcPiIpKQogICAgICAgICAgICAgICAgICAgICAoKG1hdGNoLWVu ZCA4KSAgOyBvZiB2ZXJpbG9nLWVuZC1ibG9jay1vcmRlcmVkLXJlCiAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSByZWcgIlxcKFxcPHByaW1pdGl2ZVxcPlxcKVxcfFxcKFxcPFxcKGVuZHByaW1p dGl2ZVxcfHBhY2thZ2VcXHxpbnRlcmZhY2VcXHxcXChtYWNyb1xcKT9tb2R1bGVcXClcXD5cXCki KSkKICAgICAgICAgICAgICAgICAgICAgKChtYXRjaC1lbmQgOSkgIDsgb2YgdmVyaWxvZy1lbmQt YmxvY2stb3JkZXJlZC1yZQogICAgICAgICAgICAgICAgICAgICAgKHNldHEgcmVnICJcXChcXDxp bnRlcmZhY2VcXD5cXClcXHxcXChcXDxcXChlbmRpbnRlcmZhY2VcXHxwYWNrYWdlXFx8cHJpbWl0 aXZlXFx8XFwobWFjcm9cXCk/bW9kdWxlXFwpXFw+XFwpIikpCiAgICAgICAgICAgICAgICAgICAg ICgobWF0Y2gtZW5kIDEwKSAgOyBvZiB2ZXJpbG9nLWVuZC1ibG9jay1vcmRlcmVkLXJlCiAgICAg ICAgICAgICAgICAgICAgICAoc2V0cSByZWcgIlxcKFxcPHBhY2thZ2VcXD5cXClcXHxcXChcXDxc XChlbmRwYWNrYWdlXFx8cHJpbWl0aXZlXFx8aW50ZXJmYWNlXFx8XFwobWFjcm9cXCk/bW9kdWxl XFwpXFw+XFwpIikpCiAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtZW5kIDExKSAgOyBvZiB2 ZXJpbG9nLWVuZC1ibG9jay1vcmRlcmVkLXJlCiAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBy ZWcgIlxcKFxcPGNsYXNzXFw+XFwpXFx8XFwoXFw8XFwoZW5kY2xhc3NcXHxwcmltaXRpdmVcXHxp bnRlcmZhY2VcXHxcXChtYWNyb1xcKT9tb2R1bGVcXClcXD5cXCkiKSkKICAgICAgICAgICAgICAg ICAgICAgKChtYXRjaC1lbmQgMTIpICA7IG9mIHZlcmlsb2ctZW5kLWJsb2NrLW9yZGVyZWQtcmUK ICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHJlZyAiXFwoXFw8Y292ZXJncm91cFxcPlxcKVxc fFxcKFxcPFxcKGVuZGNvdmVyZ3JvdXBcXHxwcmltaXRpdmVcXHxpbnRlcmZhY2VcXHxcXChtYWNy b1xcKT9tb2R1bGVcXClcXD5cXCkiKSkKICAgICAgICAgICAgICAgICAgICAgKChtYXRjaC1lbmQg MTMpICA7IG9mIHZlcmlsb2ctZW5kLWJsb2NrLW9yZGVyZWQtcmUKICAgICAgICAgICAgICAgICAg ICAgIChzZXRxIHJlZyAiXFwoXFw8cHJvZ3JhbVxcPlxcKVxcfFxcKFxcPFxcKGVuZHByb2dyYW1c XHxwcmltaXRpdmVcXHxpbnRlcmZhY2VcXHxcXChtYWNyb1xcKT9tb2R1bGVcXClcXD5cXCkiKSkK ICAgICAgICAgICAgICAgICAgICAgKChtYXRjaC1lbmQgMTQpICA7IG9mIHZlcmlsb2ctZW5kLWJs b2NrLW9yZGVyZWQtcmUKICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHJlZyAiXFwoXFw8XFwo cmFuZFxcKT9zZXF1ZW5jZVxcPlxcKVxcfFxcKFxcPFxcKGVuZHNlcXVlbmNlXFx8cHJpbWl0aXZl XFx8aW50ZXJmYWNlXFx8XFwobWFjcm9cXCk/bW9kdWxlXFwpXFw+XFwpIikpCiAgICAgICAgICAg ICAgICAgICAgICgobWF0Y2gtZW5kIDE1KSAgOyBvZiB2ZXJpbG9nLWVuZC1ibG9jay1vcmRlcmVk LXJlCiAgICAgICAgICAgICAgICAgICAgICAoc2V0cSByZWcgIlxcKFxcPGNsb2NraW5nXFw+XFwp XFx8XFw8ZW5kY2xvY2tpbmdcXD4iKSkKICAgICAgICAgICAgICAgICAgICAgKChtYXRjaC1lbmQg MTYpICA7IG9mIHZlcmlsb2ctZW5kLWJsb2NrLW9yZGVyZWQtcmUKICAgICAgICAgICAgICAgICAg ICAgIChzZXRxIHJlZyAiXFwoXFw8cHJvcGVydHlcXD5cXClcXHxcXDxlbmRwcm9wZXJ0eVxcPiIp KQogICAgICAgICAgICAgICAgICAgICAoKG1hdGNoLWVuZCAxNykgIDsgb2YgdmVyaWxvZy1lbmQt YmxvY2stb3JkZXJlZC1yZQogICAgICAgICAgICAgICAgICAgICAgKHNldHEgcmVnICJcXChcXDxj b25uZWN0bW9kdWxlXFw+XFwpXFx8XFw8ZW5kY29ubmVjdG1vZHVsZVxcPiIpKQoKICAgICAgICAg ICAgICAgICAgICAgKHQgKGVycm9yICJQcm9ibGVtIGluIHZlcmlsb2ctc2V0LWF1dG8tZW5kY29t bWVudHMiKSkpCiAgICAgICAgICAgICAgICAgICAgKGxldCAoYiBlKQogICAgICAgICAgICAgICAg ICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLXJl LXNlYXJjaC1iYWNrd2FyZCByZWcgbmlsICdtb3ZlKQogICAgICAgICAgICAgICAgICAgICAgICAo Y29uZAogICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaC1lbmQgMSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2V0cSBiIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICJeIFx0IikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHZlcmlsb2ctZm9yd2FyZC13cyZkaXJlY3RpdmVzKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGxvb2tpbmctYXQgInN0YXRpY1xcfGF1dG9t YXRpYyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gt ZW5kIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxv Zy1mb3J3YXJkLXdzJmRpcmVjdGl2ZXMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGlmIChhbmQgbmFtZS1yZSAodmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZCBuYW1lLXJl IG5pbCAnbW92ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJv Z24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo bWF0Y2gtYmVnaW5uaW5nIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodmVyaWxvZy1mb3J3YXJkLXdzJmRpcmVjdGl2ZXMpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHBvaW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFy cy1mb3J3YXJkICJhLXpBLVowLTlfIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHBvaW50KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgc3RyaW5nIChidWZm ZXItc3Vic3RyaW5nIGIgZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgKHQKICAgICAgICAg ICAgICAgICAgICAgICAgICAoZGluZyAndCkKICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBzdHJpbmcgInVubWF0Y2hlZCBlbmQoZnVuY3Rpb258dGFza3xtb2R1bGV8Y29ubmVjdG1vZHVs ZXxwcmltaXRpdmV8aW50ZXJmYWNlfHBhY2thZ2V8Y2xhc3N8Y2xvY2tpbmcpIikpKSkpCiAgICAg ICAgICAgICAgICAgICAgKGVuZC1vZi1saW5lKQogICAgICAgICAgICAgICAgICAgIChpbnNlcnQg KGNvbmNhdCAiIC8vICIgc3RyaW5nICkpKQogICAgICAgICAgICAgICAgICApKSkpKSkpKSkpCgoo ZGVmdW4gdmVyaWxvZy1nZXQtZXhwcigpCiAgIkdyYWIgZXhwcmVzc2lvbiBhdCBwb2ludCwgZS5n LiwgY2FzZSAoIGEgfCBiICYgKGMgXmQpKS4iCiAgKGxldCogKChiIChwcm9nbgoJICAgICAgKHZl cmlsb2ctZm9yd2FyZC1zeW50YWN0aWMtd3MpCgkgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIg XHQiKQoJICAgICAgKHBvaW50KSkpCgkgKGUgKGxldCAoKHBhciAxKSkKCSAgICAgIChjb25kCgkg ICAgICAgKChsb29raW5nLWF0ICJAIikKCQkoZm9yd2FyZC1jaGFyIDEpCgkJKHZlcmlsb2ctZm9y d2FyZC1zeW50YWN0aWMtd3MpCgkJKGlmIChsb29raW5nLWF0ICIoIikKCQkgICAgKHByb2duCgkJ ICAgICAgKGZvcndhcmQtY2hhciAxKQoJCSAgICAgICh3aGlsZSAoYW5kICgvPSBwYXIgMCkKCQkJ CSAgKHZlcmlsb2ctcmUtc2VhcmNoLWZvcndhcmQgIlxcKChcXClcXHxcXCgpXFwpIiBuaWwgJ21v dmUpKQoJCQkoY29uZAoJCQkgKChtYXRjaC1lbmQgMSkKCQkJICAoc2V0cSBwYXIgKDErIHBhcikp KQoJCQkgKChtYXRjaC1lbmQgMikKCQkJICAoc2V0cSBwYXIgKDEtIHBhcikpKSkpKSkKCQkocG9p bnQpKQoJICAgICAgICgobG9va2luZy1hdCAiKCIpCgkJKGZvcndhcmQtY2hhciAxKQoJCSh3aGls ZSAoYW5kICgvPSBwYXIgMCkKCQkJICAgICh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkICJcXCgo XFwpXFx8XFwoKVxcKSIgbmlsICdtb3ZlKSkKCQkgIChjb25kCgkJICAgKChtYXRjaC1lbmQgMSkK CQkgICAgKHNldHEgcGFyICgxKyBwYXIpKSkKCQkgICAoKG1hdGNoLWVuZCAyKQoJCSAgICAoc2V0 cSBwYXIgKDEtIHBhcikpKSkpCgkJKHBvaW50KSkKCSAgICAgICAoKGxvb2tpbmctYXQgIlxcWyIp CgkJKGZvcndhcmQtY2hhciAxKQoJCSh3aGlsZSAoYW5kICgvPSBwYXIgMCkKCQkJICAgICh2ZXJp bG9nLXJlLXNlYXJjaC1mb3J3YXJkICJcXChcXFtcXClcXHxcXChcXF1cXCkiIG5pbCAnbW92ZSkp CgkJICAoY29uZAoJCSAgICgobWF0Y2gtZW5kIDEpCgkJICAgIChzZXRxIHBhciAoMSsgcGFyKSkp CgkJICAgKChtYXRjaC1lbmQgMikKCQkgICAgKHNldHEgcGFyICgxLSBwYXIpKSkpKQoJCSh2ZXJp bG9nLWZvcndhcmQtc3ludGFjdGljLXdzKQoJCShza2lwLWNoYXJzLWZvcndhcmQgIl4gXHRcblxm IikKCQkocG9pbnQpKQoJICAgICAgICgobG9va2luZy1hdCAiL1svXFwqXSIpCgkJYikKCSAgICAg ICAoJ3QKCQkoc2tpcC1jaGFycy1mb3J3YXJkICJeOiBcdFxuXGYiKQoJCShwb2ludCkpKSkpCgkg KHN0ciAoYnVmZmVyLXN1YnN0cmluZyBiIGUpKSkKICAgIChpZiAoc2V0cSBlIChzdHJpbmctbWF0 Y2ggIlsgXHRdKlxcKFxcKFxuXFwpXFx8XFwoLy9cXClcXHxcXCgvXFwqXFwpXFwpIiBzdHIpKQoJ KHNldHEgc3RyIChjb25jYXQgKHN1YnN0cmluZyBzdHIgMCBlKSAiLi4uIikpKQogICAgc3RyKSkK CihkZWZ1biB2ZXJpbG9nLWV4cGFuZC12ZWN0b3IgKCkKICAiVGFrZSBhIHNpZ25hbCB2ZWN0b3Ig b24gdGhlIGN1cnJlbnQgbGluZSBhbmQgZXhwYW5kIGl0IHRvIG11bHRpcGxlIGxpbmVzLgpVc2Vm dWwgZm9yIGNyZWF0aW5nIHRyaSdzIGFuZCBvdGhlciBleHBhbmRlZCBmaWVsZHMuIgogIChpbnRl cmFjdGl2ZSkKICAodmVyaWxvZy1leHBhbmQtdmVjdG9yLWludGVybmFsICJbIiAiXSIpKQoKKGRl ZnVuIHZlcmlsb2ctZXhwYW5kLXZlY3Rvci1pbnRlcm5hbCAoYnJhIGtldCkKICAiR2l2ZW4gQlJB LCB0aGUgc3RhcnQgYnJhY2UgYW5kIEtFVCwgdGhlIGVuZCBicmFjZSwgZXhwYW5kIG9uZSBsaW5l IGludG8gbWFueSBsaW5lcy4iCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoZm9yd2FyZC1saW5lIDAp CiAgICAobGV0ICgoc2lnbmFsLXN0cmluZyAoYnVmZmVyLXN1YnN0cmluZyAocG9pbnQpCgkJCQkJ ICAgKHByb2duCgkJCQkJICAgICAoZW5kLW9mLWxpbmUpIChwb2ludCkpKSkpCiAgICAgIChpZiAo c3RyaW5nLW1hdGNoCgkgICAoY29uY2F0ICJcXCguKlxcKSIKCQkgICAocmVnZXhwLXF1b3RlIGJy YSkKCQkgICAiXFwoWzAtOV0qXFwpXFwoOlswLTldKlxcfFxcKVxcKDo6WzAtOS0tLV0qXFx8XFwp IgoJCSAgIChyZWdleHAtcXVvdGUga2V0KQoJCSAgICJcXCguKlxcKSQiKSBzaWduYWwtc3RyaW5n KQoJICAobGV0KiAoKHNpZy1oZWFkIChtYXRjaC1zdHJpbmcgMSBzaWduYWwtc3RyaW5nKSkKCQkg KHZlYy1zdGFydCAoc3RyaW5nLXRvLW51bWJlciAobWF0Y2gtc3RyaW5nIDIgc2lnbmFsLXN0cmlu ZykpKQoJCSAodmVjLWVuZCAoaWYgKD0gKG1hdGNoLWJlZ2lubmluZyAzKSAobWF0Y2gtZW5kIDMp KQoJCQkgICAgICB2ZWMtc3RhcnQKCQkJICAgIChzdHJpbmctdG8tbnVtYmVyCgkJCSAgICAgKHN1 YnN0cmluZyBzaWduYWwtc3RyaW5nICgxKyAobWF0Y2gtYmVnaW5uaW5nIDMpKQoJCQkJCShtYXRj aC1lbmQgMykpKSkpCgkJICh2ZWMtcmFuZ2UKCQkgIChpZiAoPSAobWF0Y2gtYmVnaW5uaW5nIDQp IChtYXRjaC1lbmQgNCkpCgkJICAgICAgMQoJCSAgICAoc3RyaW5nLXRvLW51bWJlcgoJCSAgICAg KHN1YnN0cmluZyBzaWduYWwtc3RyaW5nICgrIDIgKG1hdGNoLWJlZ2lubmluZyA0KSkKCQkJCSht YXRjaC1lbmQgNCkpKSkpCgkJIChzaWctdGFpbCAobWF0Y2gtc3RyaW5nIDUgc2lnbmFsLXN0cmlu ZykpCgkJIHZlYykKCSAgICA7OyBEZWNvZGUgdmVjdG9ycwoJICAgIChzZXRxIHZlYyBuaWwpCgkg ICAgKGlmICg8IHZlYy1yYW5nZSAwKQoJCShsZXQgKCh0bXAgdmVjLXN0YXJ0KSkKCQkgIChzZXRx IHZlYy1zdGFydCB2ZWMtZW5kCgkJCXZlYy1lbmQgdG1wCgkJCXZlYy1yYW5nZSAoLSB2ZWMtcmFu Z2UpKSkpCgkgICAgKGlmICg8IHZlYy1lbmQgdmVjLXN0YXJ0KQoJCSh3aGlsZSAoPD0gdmVjLWVu ZCB2ZWMtc3RhcnQpCgkJICAoc2V0cSB2ZWMgKGFwcGVuZCB2ZWMgKGxpc3QgdmVjLXN0YXJ0KSkp CgkJICAoc2V0cSB2ZWMtc3RhcnQgKC0gdmVjLXN0YXJ0IHZlYy1yYW5nZSkpKQoJICAgICAgKHdo aWxlICg8PSB2ZWMtc3RhcnQgdmVjLWVuZCkKCQkoc2V0cSB2ZWMgKGFwcGVuZCB2ZWMgKGxpc3Qg dmVjLXN0YXJ0KSkpCgkJKHNldHEgdmVjLXN0YXJ0ICgrIHZlYy1zdGFydCB2ZWMtcmFuZ2UpKSkp CgkgICAgOzsKCSAgICA7OyBEZWxldGUgY3VycmVudCBsaW5lCgkgICAgKGRlbGV0ZS1yZWdpb24g KHBvaW50KSAocHJvZ24gKGZvcndhcmQtbGluZSAwKSAocG9pbnQpKSkKCSAgICA7OwoJICAgIDs7 IEV4cGFuZCB2ZWN0b3IKCSAgICAod2hpbGUgdmVjCgkgICAgICAoaW5zZXJ0IChjb25jYXQgc2ln LWhlYWQgYnJhCgkJCSAgICAgIChpbnQtdG8tc3RyaW5nIChjYXIgdmVjKSkga2V0IHNpZy10YWls ICJcbiIpKQoJICAgICAgKHNldHEgdmVjIChjZHIgdmVjKSkpCgkgICAgKGRlbGV0ZS1jaGFyIC0x KQoJICAgIDs7CgkgICAgKSkpKSkKCihkZWZ1biB2ZXJpbG9nLXN0cmlwLWNvbW1lbnRzICgpCiAg IlN0cmlwIGFsbCBjb21tZW50cyBmcm9tIHRoZSBWZXJpbG9nIGNvZGUuIgogIChpbnRlcmFjdGl2 ZSkKICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQg Ii8vIiBuaWwgdCkKICAgIChpZiAodmVyaWxvZy13aXRoaW4tc3RyaW5nKQoJKHJlLXNlYXJjaC1m b3J3YXJkICJcIiIgbmlsIHQpCiAgICAgIChpZiAodmVyaWxvZy1pbi1zdGFyLWNvbW1lbnQtcCkK CSAgKHJlLXNlYXJjaC1mb3J3YXJkICJcXCovIiBuaWwgdCkKCShsZXQgKChicHQgKC0gKHBvaW50 KSAyKSkpCgkgIChlbmQtb2YtbGluZSkKCSAgKGRlbGV0ZS1yZWdpb24gYnB0IChwb2ludCkpKSkp KQogIDs7CiAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3 YXJkICIvXFwqIiBuaWwgdCkKICAgIChpZiAodmVyaWxvZy13aXRoaW4tc3RyaW5nKQoJKHJlLXNl YXJjaC1mb3J3YXJkICJcIiIgbmlsIHQpCiAgICAgIChsZXQgKChicHQgKC0gKHBvaW50KSAyKSkp CgkocmUtc2VhcmNoLWZvcndhcmQgIlxcKi8iKQoJKGRlbGV0ZS1yZWdpb24gYnB0IChwb2ludCkp KSkpKQoKKGRlZnVuIHZlcmlsb2ctb25lLWxpbmUgKCkKICAiQ29udmVydCBzdHJ1Y3R1cmFsIFZl cmlsb2cgaW5zdGFuY2VzIHRvIG9jY3VweSBvbmUgbGluZS4iCiAgKGludGVyYWN0aXZlKQogIChn b3RvLWNoYXIgKHBvaW50LW1pbikpCiAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCAiXFwoW147 XVxcKVsgXHRdKlxuWyBcdF0qIiBuaWwgdCkKICAgIChyZXBsYWNlLW1hdGNoICJcXDEgIiBuaWwg bmlsKSkpCgooZGVmdW4gdmVyaWxvZy1saW50ZXItbmFtZSAoKQogICJSZXR1cm4gbmFtZSBvZiBs aW50ZXIsIGVpdGhlciBzdXJlbGludCBvciB2ZXJpbGludC4iCiAgKGxldCAoKGNvbXBpbGUtd29y ZDEgKHZlcmlsb2ctc3RyaW5nLXJlcGxhY2UtbWF0Y2hlcyAiXFxzIC4qJCIgIiIgbmlsIG5pbAoJ CQkJCQkgICAgICAgY29tcGlsZS1jb21tYW5kKSkKCShsaW50LXdvcmQxICAgICh2ZXJpbG9nLXN0 cmluZy1yZXBsYWNlLW1hdGNoZXMgIlxccyAuKiQiICIiIG5pbCBuaWwKCQkJCQkJICAgICAgIHZl cmlsb2ctbGludGVyKSkpCiAgICAoY29uZCAoKGVxdWFsIGNvbXBpbGUtd29yZDEgInN1cmVsaW50 IikgJ3N1cmVsaW50KQoJICAoKGVxdWFsIGNvbXBpbGUtd29yZDEgInZlcmlsaW50IikgJ3Zlcmls aW50KQoJICAoKGVxdWFsIGxpbnQtd29yZDEgInN1cmVsaW50IikgICAgJ3N1cmVsaW50KQoJICAo KGVxdWFsIGxpbnQtd29yZDEgInZlcmlsaW50IikgICAgJ3ZlcmlsaW50KQogICAgICAgICAgKHQg J3N1cmVsaW50KSkpKSAgOyBiYWNrIGNvbXBhdGliaWxpdHkKCihkZWZ1biB2ZXJpbG9nLWxpbnQt b2ZmICgpCiAgIkNvbnZlcnQgYSBWZXJpbG9nIGxpbnRlciB3YXJuaW5nIGxpbmUgaW50byBhIGRp c2FibGUgc3RhdGVtZW50LgpGb3IgZXhhbXBsZToKCXBjaV9iZm1fbnVsbC52LCBsaW5lICA0Njog VW51c2VkIGlucHV0OiBwY2lfcnN0XwpiZWNvbWVzIGEgY29tbWVudCBmb3IgdGhlIGFwcHJvcHJp YXRlIHRvb2wuCgpUaGUgZmlyc3Qgd29yZCBvZiB0aGUgYGNvbXBpbGUtY29tbWFuZCcgb3IgYHZl cmlsb2ctbGludGVyJwp2YXJpYWJsZXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggcHJvZHVj dCBpcyBiZWluZyB1c2VkLgoKU2VlIFxcW3Zlcmlsb2ctc3VyZWxpbnQtb2ZmXSBhbmQgXFxbdmVy aWxvZy12ZXJpbGludC1vZmZdLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKGxpbnRlciAodmVy aWxvZy1saW50ZXItbmFtZSkpKQogICAgKGNvbmQgKChlcXVhbCBsaW50ZXIgJ3N1cmVsaW50KQoJ ICAgKHZlcmlsb2ctc3VyZWxpbnQtb2ZmKSkKCSAgKChlcXVhbCBsaW50ZXIgJ3ZlcmlsaW50KQoJ ICAgKHZlcmlsb2ctdmVyaWxpbnQtb2ZmKSkKCSAgKHQgKGVycm9yICJMaW50ZXIgbmFtZSBub3Qg c2V0IikpKSkpCgooZGVmdmFyIGNvbXBpbGF0aW9uLWxhc3QtYnVmZmVyKQooZGVmdmFyIG5leHQt ZXJyb3ItbGFzdC1idWZmZXIpCgooZGVmdW4gdmVyaWxvZy1zdXJlbGludC1vZmYgKCkKICAiQ29u dmVydCBhIFN1cmVMaW50IHdhcm5pbmcgbGluZSBpbnRvIGEgZGlzYWJsZSBzdGF0ZW1lbnQuClJ1 biBmcm9tIFZlcmlsb2cgc291cmNlIHdpbmRvdzsgYXNzdW1lcyB0aGVyZSBpcyBhICpjb21waWxl KiBidWZmZXIKd2l0aCBwb2ludCBzZXQgYXBwcm9wcmlhdGVseS4KCkZvciBleGFtcGxlOgoJV0FS TklORyBbU1RELVVERE9OWF06IHh4LnYsIGxpbmUgODogb3V0cHV0IG91dCBpcyBuZXZlciBhc3Np Z25lZC4KYmVjb21lczoKCS8vIHN1cmVmaXJlIGxpbnRfbGluZV9vZmYgVURET05YIgogIChpbnRl cmFjdGl2ZSkKICAobGV0ICgoYnVmZiAoaWYgKGJvdW5kcCAnbmV4dC1lcnJvci1sYXN0LWJ1ZmZl cikKICAgICAgICAgICAgICAgICAgbmV4dC1lcnJvci1sYXN0LWJ1ZmZlcgogICAgICAgICAgICAg ICAgY29tcGlsYXRpb24tbGFzdC1idWZmZXIpKSkKICAgICh3aGVuIChidWZmZXItbGl2ZS1wIGJ1 ZmYpCiAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgIChzd2l0Y2gtdG8tYnVmZmVyIGJ1ZmYp CiAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAgICh3aGVuCiAgICAgICAgICAgIChs b29raW5nLWF0ICJcXChJTkZPXFx8V0FSTklOR1xcfEVSUk9SXFwpIFxcW1teLV0rLVxcKFteXV0r XFwpXFxdOiBcXChbXixdK1xcKSwgbGluZSBcXChbMC05XStcXCk6IFxcKC4qXFwpJCIpCiAgICAg ICAgICAobGV0KiAoKGNvZGUgKG1hdGNoLXN0cmluZyAyKSkKICAgICAgICAgICAgICAgICAoZmls ZSAobWF0Y2gtc3RyaW5nIDMpKQogICAgICAgICAgICAgICAgIChsaW5lIChtYXRjaC1zdHJpbmcg NCkpCiAgICAgICAgICAgICAgICAgKGJ1ZmZlciAoZ2V0LWZpbGUtYnVmZmVyIGZpbGUpKQogICAg ICAgICAgICAgICAgIGRpciBmaWxlbmFtZSkKICAgICAgICAgICAgKHVubGVzcyBidWZmZXIKICAg ICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgIChzZXRxIGJ1ZmZlcgogICAgICAgICAg ICAgICAgICAgICAgKGFuZCAoZmlsZS1leGlzdHMtcCBmaWxlKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAoZmluZC1maWxlLW5vc2VsZWN0IGZpbGUpKSkKICAgICAgICAgICAgICAgIChvciBi dWZmZXIKICAgICAgICAgICAgICAgICAgICAobGV0KiAoKHBvcC11cC13aW5kb3dzIHQpKQogICAg ICAgICAgICAgICAgICAgICAgKGxldCAoKG5hbWUgKGV4cGFuZC1maWxlLW5hbWUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocmVhZC1maWxlLW5hbWUKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiRmluZCB0aGlzIGVycm9yIGluOiAoZGVmYXVs dCAlcykgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpciBmaWxlIHQpKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgIChpZiAoZmlsZS1kaXJlY3RvcnktcCBuYW1lKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbmFtZSAoZXhwYW5kLWZpbGUtbmFtZSBmaWxlbmFtZSBu YW1lKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGJ1ZmZlcgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoYW5kIChmaWxlLWV4aXN0cy1wIG5hbWUpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGZpbmQtZmlsZS1ub3NlbGVjdCBuYW1lKSkpKSkpKSkKICAg ICAgICAgICAgKHN3aXRjaC10by1idWZmZXIgYnVmZmVyKQogICAgICAgICAgICAoZ290by1jaGFy IChwb2ludC1taW4pKQogICAgICAgICAgICAoZm9yd2FyZC1saW5lICgtIChzdHJpbmctdG8tbnVt YmVyIGxpbmUpKSkKICAgICAgICAgICAgKGVuZC1vZi1saW5lKQogICAgICAgICAgICAoY2F0Y2gg J2FscmVhZHkKICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAoKHZlcmlsb2ctaW4t c2xhc2gtY29tbWVudC1wKQogICAgICAgICAgICAgICAgKHJlLXNlYXJjaC1iYWNrd2FyZCAiLy8i KQogICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAoKGxvb2tpbmctYXQgIi8v IHN1cmVmaXJlIGxpbnRfb2ZmX2xpbmUgIikKICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo bWF0Y2gtZW5kIDApKQogICAgICAgICAgICAgICAgICAobGV0ICgobGltIChwb2ludC1hdC1lb2wp KSkKICAgICAgICAgICAgICAgICAgICAoaWYgKHJlLXNlYXJjaC1mb3J3YXJkIGNvZGUgbGltICdt b3ZlKQogICAgICAgICAgICAgICAgICAgICAgICAodGhyb3cgJ2FscmVhZHkgdCkKICAgICAgICAg ICAgICAgICAgICAgIChpbnNlcnQgKGNvbmNhdCAiICIgY29kZSkpKSkpCiAgICAgICAgICAgICAg ICAgKHQKICAgICAgICAgICAgICAgICAgKSkpCiAgICAgICAgICAgICAgICgodmVyaWxvZy1pbi1z dGFyLWNvbW1lbnQtcCkKICAgICAgICAgICAgICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIi9cXCoi KQogICAgICAgICAgICAgICAgKGluc2VydCAoZm9ybWF0ICIgLy8gc3VyZWZpcmUgbGludF9vZmZf bGluZSAlNnMiIGNvZGUgKSkpCiAgICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgICAoaW5z ZXJ0IChmb3JtYXQgIiAvLyBzdXJlZmlyZSBsaW50X29mZl9saW5lICU2cyIgY29kZSApKQogICAg ICAgICAgICAgICAgKSkpKSkpKSkpCgooZGVmdW4gdmVyaWxvZy12ZXJpbGludC1vZmYgKCkKICAi Q29udmVydCBhIFZlcmlsaW50IHdhcm5pbmcgbGluZSBpbnRvIGEgZGlzYWJsZSBzdGF0ZW1lbnQu CgpGb3IgZXhhbXBsZToKCShXMjQwKSAgcGNpX2JmbV9udWxsLnYsIGxpbmUgIDQ2OiBVbnVzZWQg aW5wdXQ6IHBjaV9yc3RfCmJlY29tZXM6CgkvL1ZlcmlsaW50IDI0MCBvZmYgLy8gV0FSTklORzog VW51c2VkIGlucHV0IgogIChpbnRlcmFjdGl2ZSkKICAoc2F2ZS1leGN1cnNpb24KICAgIChiZWdp bm5pbmctb2YtbGluZSkKICAgICh3aGVuIChsb29raW5nLWF0ICJcXCguKlxcKShbV0VdXFwoWzAt OUEtWl0rXFwpKS4qLFxccyArbGluZVxccyArWzAtOV0rOlxccyArXFwoW146XG5dK1xcKS4qJCIp CiAgICAgIChyZXBsYWNlLW1hdGNoIChmb3JtYXQKCQkgICAgICA7OyAlM3MgbWFrZXMgbnVtYmVy cyAxLTk5OSBsaW5lIHVwIG5pY2VseQoJCSAgICAgICJcXDEvL1ZlcmlsaW50ICUzcyBvZmYgLy8g V0FSTklORzogXFwzIgoJCSAgICAgIChtYXRjaC1zdHJpbmcgMikpKQogICAgICAoYmVnaW5uaW5n LW9mLWxpbmUpCiAgICAgICh2ZXJpbG9nLWluZGVudC1saW5lKSkpKQoKKGRlZnVuIHZlcmlsb2ct YXV0by1zYXZlLWNvbXBpbGUgKCkKICAiVXBkYXRlIGF1dG9tYXRpY3Mgd2l0aCBcXFt2ZXJpbG9n LWF1dG9dLCBzYXZlIHRoZSBidWZmZXIsIGFuZCBjb21waWxlLiIKICAoaW50ZXJhY3RpdmUpCiAg KHZlcmlsb2ctYXV0bykJOyBBbHdheXMgZG8gaXQgZm9yIHNhZmV0eQogIChzYXZlLWJ1ZmZlcikK ICAoY29tcGlsZSBjb21waWxlLWNvbW1hbmQpKQoKKGRlZnVuIHZlcmlsb2ctcHJlcHJvY2VzcyAo Jm9wdGlvbmFsIGNvbW1hbmQgZmlsZW5hbWUpCiAgIlByZXByb2Nlc3MgdGhlIGJ1ZmZlciwgc2lt aWxhciB0byBgY29tcGlsZScsIGJ1dCBwdXQgb3V0cHV0IGluIFZlcmlsb2ctTW9kZS4KVGFrZXMg b3B0aW9uYWwgQ09NTUFORCBvciBkZWZhdWx0cyB0byBgdmVyaWxvZy1wcmVwcm9jZXNzb3InLCBh bmQKRklMRU5BTUUgdG8gZmluZCBkaXJlY3RvcnkgdG8gcnVuIGluLCBvciBkZWZhdWx0cyB0byBg YnVmZmVyLWZpbGUtbmFtZScuIgogIChpbnRlcmFjdGl2ZQogICAobGlzdAogICAgKGxldCAoKGRl ZmF1bHQgKHZlcmlsb2ctZXhwYW5kLWNvbW1hbmQgdmVyaWxvZy1wcmVwcm9jZXNzb3IpKSkKICAg ICAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAndmVyaWxvZy1wcmVwcm9jZXNzb3IpCgkgICAo cmVhZC1mcm9tLW1pbmlidWZmZXIgIlJ1biBQcmVwcm9jZXNzb3IgKGxpa2UgdGhpcyk6ICIKCQkJ CSBkZWZhdWx0IG5pbCBuaWwKCQkJCSAndmVyaWxvZy1wcmVwcm9jZXNzLWhpc3RvcnkgZGVmYXVs dCkpKSkpCiAgKHVubGVzcyBjb21tYW5kIChzZXRxIGNvbW1hbmQgKHZlcmlsb2ctZXhwYW5kLWNv bW1hbmQgdmVyaWxvZy1wcmVwcm9jZXNzb3IpKSkKICAobGV0KiAoKGZvbnRsb2NrZWQgKGFuZCAo Ym91bmRwICdmb250LWxvY2stbW9kZSkgZm9udC1sb2NrLW1vZGUpKQoJIChkaXIgKGZpbGUtbmFt ZS1kaXJlY3RvcnkgKG9yIGZpbGVuYW1lIGJ1ZmZlci1maWxlLW5hbWUpKSkKCSAoY21kIChjb25j YXQgImNkICIgZGlyICI7ICIgY29tbWFuZCkpKQogICAgKHdpdGgtb3V0cHV0LXRvLXRlbXAtYnVm ZmVyICIqVmVyaWxvZy1QcmVwcm9jZXNzZWQqIgogICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAo Z2V0LWJ1ZmZlciAiKlZlcmlsb2ctUHJlcHJvY2Vzc2VkKiIpCgkoaW5zZXJ0IChjb25jYXQgIi8v ICIgY21kICJcbiIpKQoJKGNhbGwtcHJvY2VzcyBzaGVsbC1maWxlLW5hbWUgbmlsIHQgbmlsIHNo ZWxsLWNvbW1hbmQtc3dpdGNoIGNtZCkKCSh2ZXJpbG9nLW1vZGUpCgk7OyBXaXRob3V0IHRoaXMg Zm9yY2UsIGl0IHRha2VzIGEgZmV3IGlkbGUgc2Vjb25kcwoJOzsgdG8gZ2V0IHRoZSBjb2xvciwg d2hpY2ggaXMgdmVyeSBqYXJyaW5nCiAgICAgICAgKHVubGVzcyAoZmJvdW5kcCAnZm9udC1sb2Nr LWVuc3VyZSkKICAgICAgICAgIDs7IFdlIHNob3VsZCB1c2UgZm9udC1sb2NrLWVuc3VyZSBpbiBw cmVmZXJlbmNlIHRvCiAgICAgICAgICA7OyBmb250LWxvY2stZm9udGlmeS1idWZmZXIsIGJ1dCBJ SVVDIHRoZSBwcm9ibGVtIHRoaXMgaXMgc3VwcG9zZWQgdG8KICAgICAgICAgIDs7IHNvbHZlIG9u bHkgYXBwZWFycyBpbiBFbWFjc2VuIG9sZGVyIHRoYW4gZm9udC1sb2NrLWVuc3VyZSBhbnl3YXku CiAgICAgICAgICA7OyBTbyBhdm9pZCBieXRlY29tcCdzIGludGVyYWN0aXZlLW9ubHkgYnkgZ29p bmcgdGhyb3VnaCBpbnRlcm4uCiAgICAgICAgICAod2hlbiBmb250bG9ja2VkIChmdW5jYWxsIChp bnRlcm4gImZvbnQtbG9jay1mb250aWZ5LWJ1ZmZlciIpKSkpKSkpKQoMCjs7OyBCYXRjaDoKOzsK CihkZWZ1biB2ZXJpbG9nLXdhcm4gKHN0cmluZyAmcmVzdCBhcmdzKQogICJQcmludCBhIHdhcm5p bmcgd2l0aCBgZm9ybWF0JyB1c2luZyBTVFJJTkcgYW5kIG9wdGlvbmFsIEFSR1MuIgogIChhcHBs eSAnbWVzc2FnZSAoY29uY2F0ICIlJVdhcm5pbmc6ICIgc3RyaW5nKSBhcmdzKSkKCihkZWZ1biB2 ZXJpbG9nLXdhcm4tZXJyb3IgKHN0cmluZyAmcmVzdCBhcmdzKQogICJDYWxsIGBlcnJvcicgdXNp bmcgU1RSSU5HIGFuZCBvcHRpb25hbCBBUkdTLgpJZiBgdmVyaWxvZy13YXJuLWZhdGFsJyBpcyBu b24tbmlsLCBjYWxsIGB2ZXJpbG9nLXdhcm4nIGluc3RlYWQuIgogIChpZiB2ZXJpbG9nLXdhcm4t ZmF0YWwKICAgICAgKGFwcGx5ICdlcnJvciBzdHJpbmcgYXJncykKICAgIChhcHBseSAndmVyaWxv Zy13YXJuIHN0cmluZyBhcmdzKSkpCgooZGVmbWFjcm8gdmVyaWxvZy1iYXRjaC1lcnJvci13cmFw cGVyICgmcmVzdCBib2R5KQogICJFeGVjdXRlIEJPRFkgYW5kIGFkZCBlcnJvciBwcmVmaXggdG8g YW55IGVycm9ycyBmb3VuZC4KVGhpcyBsZXRzIHByb2dyYW1zIGNhbGxpbmcgYmF0Y2ggbW9kZSB0 byBlYXNpbHkgZXh0cmFjdCBlcnJvciBtZXNzYWdlcy4iCiAgYChsZXQgKCh2ZXJpbG9nLXdhcm4t ZmF0YWwgbmlsKSkKICAgICAoY29uZGl0aW9uLWNhc2UgZXJyCgkgKHByb2duICxAYm9keSkKICAg ICAgIChlcnJvcgoJKGVycm9yICIlJUVycm9yOiAlcyVzIiAoZXJyb3ItbWVzc2FnZS1zdHJpbmcg ZXJyKQogICAgICAgICAgICAgICAoaWYgKGZlYXR1cmVwICd4ZW1hY3MpICJcbiIgIiIpKSkpKSkg IDsgWEVtYWNzIGZvcmdldHMgdG8gYWRkIGEgbmV3bGluZQoKOzsgRWxpbWluYXRlIGNvbXBpbGUg d2FybmluZwooZGVmdmFyIHZlcmlsb2ctYmF0Y2gtb3JpZy1idWZmZXItc3RyaW5nKQoKKGRlZnVu IHZlcmlsb2ctYmF0Y2gtZXhlY3V0ZS1mdW5jIChmdW5yZWYgJm9wdGlvbmFsIG5vLXNhdmUpCiAg IkludGVybmFsIHByb2Nlc3Npbmcgb2YgYSBiYXRjaCBjb21tYW5kLgpSdW5zIEZVTlJFRiBvbiBh bGwgY29tbWFuZCBhcmd1bWVudHMuClNhdmUgdGhlIHJlc3VsdCB1bmxlc3Mgb3B0aW9uYWwgTk8t U0FWRSBpcyB0LiIKICAodmVyaWxvZy1iYXRjaC1lcnJvci13cmFwcGVyCiAgIDs7IFNldHRpbmcg Z2xvYmFsIHZhcmlhYmxlcyBsaWtlIHRoYXQgaXMgKlZFUlkgTkFTVFkqICEhISAgLS1TdGVmCiAg IDs7IEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgd2hlbiBFbWFjcyBpcyBi ZWluZyB1c2VkIGFzCiAgIDs7IGEgc3RhbmRhbG9uZSBsYW5ndWFnZSBpbnN0ZWFkIG9mIGFzIGFu IGVkaXRvciwgc28gd2UnbGwgbGl2ZS4KICAgOzsKICAgOzsgR2VuZXJhbCBnbG9iYWxzIG5lZWRl ZAogICAoc2V0cSBtYWtlLWJhY2t1cC1maWxlcyBuaWwpCiAgIChzZXRxLWRlZmF1bHQgbWFrZS1i YWNrdXAtZmlsZXMgbmlsKQogICAoc2V0cSBlbmFibGUtbG9jYWwtdmFyaWFibGVzIHQpCiAgIChz ZXRxIGVuYWJsZS1sb2NhbC1ldmFsIHQpCiAgIChzZXRxIGNyZWF0ZS1sb2NrZmlsZXMgbmlsKQog ICA7OyBNYWtlIHN1cmUgYW55IHN1Yi1maWxlcyB3ZSByZWFkIGdldCBwcm9wZXIgbW9kZQogICAo c2V0cS1kZWZhdWx0IG1ham9yLW1vZGUgJ3Zlcmlsb2ctbW9kZSkKICAgOzsgRGl0dG8gZmlsZXMg YWxyZWFkeSByZWFkIGluCiAgIDs7IFJlbWVtYmVyIGJ1ZmZlciBsaXN0LCBzbyBkb24ndCBsYXRl ciBwaWNrdXAgYW55IHZlcmlsb2ctZ2V0b3B0IGZpbGVzCiAgIChsZXQgKChvcmlnLWJ1ZmZlci1s aXN0IChidWZmZXItbGlzdCkpKQogICAgIChtYXBjIChsYW1iZGEgKGJ1ZikKICAgICAgICAgICAg ICh3aGVuIChidWZmZXItZmlsZS1uYW1lIGJ1ZikKICAgICAgICAgICAgICAgKHdpdGgtY3VycmVu dC1idWZmZXIgYnVmCiAgICAgICAgICAgICAgICAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAn dmVyaWxvZy1iYXRjaC1vcmlnLWJ1ZmZlci1zdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAo YnVmZmVyLXN0cmluZykpCiAgICAgICAgICAgICAgICAgKHB1dCAndmVyaWxvZy1iYXRjaC1vcmln LWJ1ZmZlci1zdHJpbmcgJ3Blcm1hbmVudC1sb2NhbCB0KQogICAgICAgICAgICAgICAgICh2ZXJp bG9nLW1vZGUpCiAgICAgICAgICAgICAgICAgKHZlcmlsb2ctYXV0by1yZWV2YWwtbG9jYWxzKQog ICAgICAgICAgICAgICAgICh2ZXJpbG9nLWdldG9wdC1mbGFncykpKSkKICAgICAgICAgICBvcmln LWJ1ZmZlci1saXN0KQogICAgIDs7IFByb2Nlc3MgdGhlIGZpbGVzCiAgICAgKG1hcGMgKGxhbWJk YSAoYnVmKQogICAgICAgICAgICAgKHdoZW4gKGJ1ZmZlci1maWxlLW5hbWUgYnVmKQogICAgICAg ICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAoaWYgKG5vdCAoZmlsZS1l eGlzdHMtcCAoYnVmZmVyLWZpbGUtbmFtZSBidWYpKSkKICAgICAgICAgICAgICAgICAgICAgKGVy cm9yCiAgICAgICAgICAgICAgICAgICAgICAiRmlsZSBub3QgZm91bmQ6ICVzIiAoYnVmZmVyLWZp bGUtbmFtZSBidWYpKSkKICAgICAgICAgICAgICAgICAobWVzc2FnZSAiUHJvY2Vzc2luZyAlcyIg KGJ1ZmZlci1maWxlLW5hbWUgYnVmKSkKICAgICAgICAgICAgICAgICAoc2V0LWJ1ZmZlciBidWYp CiAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgZnVucmVmKQogICAgICAgICAgICAgICAgICh2ZXJp bG9nLXN0YXItY2xlYW51cCkKICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIChub3Qgbm8tc2F2 ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItbW9kaWZpZWQtcCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVxdWFsIHZlcmlsb2ctYmF0Y2gtb3JpZy1idWZm ZXItc3RyaW5nIChidWZmZXItc3RyaW5nKSkpKQogICAgICAgICAgICAgICAgICAgKHNhdmUtYnVm ZmVyKSkpKSkKICAgICAgICAgICBvcmlnLWJ1ZmZlci1saXN0KSkpKQoKKGRlZnVuIHZlcmlsb2ct YmF0Y2gtYXV0byAoKQogICJGb3IgdXNlIHdpdGggLS1iYXRjaCwgcGVyZm9ybSBhdXRvbWF0aWMg ZXhwYW5zaW9ucyBhcyBhIHN0YW5kLWFsb25lIHRvb2wuClRoaXMgc2V0cyB1cCB0aGUgYXBwcm9w cmlhdGUgVmVyaWxvZyBtb2RlIGVudmlyb25tZW50LCB1cGRhdGVzIGF1dG9tYXRpY3MKd2l0aCBc XFt2ZXJpbG9nLWF1dG9dIG9uIGFsbCBjb21tYW5kLWxpbmUgZmlsZXMsIGFuZCBzYXZlcyB0aGUg YnVmZmVycy4KRm9yIHByb3BlciByZXN1bHRzLCBtdWx0aXBsZSBmaWxlbmFtZXMgbmVlZCB0byBi ZSBwYXNzZWQgb24gdGhlIGNvbW1hbmQKbGluZSBpbiBib3R0b20tdXAgb3JkZXIuIgogICh1bmxl c3Mgbm9uaW50ZXJhY3RpdmUKICAgIChlcnJvciAiVXNlIHZlcmlsb2ctYmF0Y2gtYXV0byBvbmx5 IHdpdGggLS1iYXRjaCIpKSAgOyBPdGhlcndpc2Ugd2UnZCBtZXNzIHVwIGJ1ZmZlciBtb2Rlcwog ICh2ZXJpbG9nLWJhdGNoLWV4ZWN1dGUtZnVuYyAndmVyaWxvZy1hdXRvKSkKCihkZWZ1biB2ZXJp bG9nLWJhdGNoLWRlbGV0ZS1hdXRvICgpCiAgIkZvciB1c2Ugd2l0aCAtLWJhdGNoLCBwZXJmb3Jt IGF1dG9tYXRpYyBkZWxldGlvbiBhcyBhIHN0YW5kLWFsb25lIHRvb2wuClRoaXMgc2V0cyB1cCB0 aGUgYXBwcm9wcmlhdGUgVmVyaWxvZyBtb2RlIGVudmlyb25tZW50LCBkZWxldGVzIGF1dG9tYXRp Y3MKd2l0aCBcXFt2ZXJpbG9nLWRlbGV0ZS1hdXRvXSBvbiBhbGwgY29tbWFuZC1saW5lIGZpbGVz LCBhbmQgc2F2ZXMgdGhlIGJ1ZmZlcnMuIgogICh1bmxlc3Mgbm9uaW50ZXJhY3RpdmUKICAgIChl cnJvciAiVXNlIHZlcmlsb2ctYmF0Y2gtZGVsZXRlLWF1dG8gb25seSB3aXRoIC0tYmF0Y2giKSkg IDsgT3RoZXJ3aXNlIHdlJ2QgbWVzcyB1cCBidWZmZXIgbW9kZXMKICAodmVyaWxvZy1iYXRjaC1l eGVjdXRlLWZ1bmMgJ3Zlcmlsb2ctZGVsZXRlLWF1dG8pKQoKKGRlZnVuIHZlcmlsb2ctYmF0Y2gt ZGVsZXRlLXRyYWlsaW5nLXdoaXRlc3BhY2UgKCkKICAiRm9yIHVzZSB3aXRoIC0tYmF0Y2gsIHBl cmZvcm0gd2hpdGVzcGFjZSBkZWxldGlvbiBhcyBhIHN0YW5kLWFsb25lIHRvb2wuClRoaXMgc2V0 cyB1cCB0aGUgYXBwcm9wcmlhdGUgVmVyaWxvZyBtb2RlIGVudmlyb25tZW50LCByZW1vdmVzCndo aXRlc3BhY2Ugd2l0aCBcXFt2ZXJpbG9nLWRlbGV0ZS10cmFpbGluZy13aGl0ZXNwYWNlXSBvbiBh bGwKY29tbWFuZC1saW5lIGZpbGVzLCBhbmQgc2F2ZXMgdGhlIGJ1ZmZlcnMuIgogICh1bmxlc3Mg bm9uaW50ZXJhY3RpdmUKICAgIChlcnJvciAiVXNlIHZlcmlsb2ctYmF0Y2gtZGVsZXRlLXRyYWls aW5nLXdoaXRlc3BhY2Ugb25seSB3aXRoIC0tYmF0Y2giKSkgIDsgT3RoZXJ3aXNlIHdlJ2QgbWVz cyB1cCBidWZmZXIgbW9kZXMKICAodmVyaWxvZy1iYXRjaC1leGVjdXRlLWZ1bmMgJ3Zlcmlsb2ct ZGVsZXRlLXRyYWlsaW5nLXdoaXRlc3BhY2UpKQoKKGRlZnVuIHZlcmlsb2ctYmF0Y2gtZGlmZi1h dXRvICgpCiAgIkZvciB1c2Ugd2l0aCAtLWJhdGNoLCBwZXJmb3JtIGF1dG9tYXRpYyBkaWZmZXJl bmNlcyBhcyBhIHN0YW5kLWFsb25lIHRvb2wuClRoaXMgc2V0cyB1cCB0aGUgYXBwcm9wcmlhdGUg VmVyaWxvZyBtb2RlIGVudmlyb25tZW50LCBleHBhbmQgYXV0b21hdGljcwp3aXRoIFxcW3Zlcmls b2ctZGlmZi1hdXRvXSBvbiBhbGwgY29tbWFuZC1saW5lIGZpbGVzLCBhbmQgcmVwb3J0cyBhbiBl cnJvcgppZiBhbnkgZGlmZmVyZW5jZXMgYXJlIG9ic2VydmVkLiAgVGhpcyBpcyBhcHByb3ByaWF0 ZSBmb3IgYWRkaW5nIHRvIHJlZ3Jlc3Npb25zCnRvIGluc3VyZSBhdXRvbWF0aWNzIGFyZSBhbHdh eXMgcHJvcGVybHkgbWFpbnRhaW5lZC4iCiAgKHVubGVzcyBub25pbnRlcmFjdGl2ZQogICAgKGVy cm9yICJVc2UgdmVyaWxvZy1iYXRjaC1kaWZmLWF1dG8gb25seSB3aXRoIC0tYmF0Y2giKSkgIDsg T3RoZXJ3aXNlIHdlJ2QgbWVzcyB1cCBidWZmZXIgbW9kZXMKICAodmVyaWxvZy1iYXRjaC1leGVj dXRlLWZ1bmMgJ3Zlcmlsb2ctZGlmZi1hdXRvIHQpKQoKKGRlZnVuIHZlcmlsb2ctYmF0Y2gtaW5q ZWN0LWF1dG8gKCkKICAiRm9yIHVzZSB3aXRoIC0tYmF0Y2gsIHBlcmZvcm0gYXV0b21hdGljIGlu amVjdGlvbiBhcyBhIHN0YW5kLWFsb25lIHRvb2wuClRoaXMgc2V0cyB1cCB0aGUgYXBwcm9wcmlh dGUgVmVyaWxvZyBtb2RlIGVudmlyb25tZW50LCBpbmplY3RzIG5ldyBhdXRvbWF0aWNzCndpdGgg XFxbdmVyaWxvZy1pbmplY3QtYXV0b10gb24gYWxsIGNvbW1hbmQtbGluZSBmaWxlcywgYW5kIHNh dmVzIHRoZSBidWZmZXJzLgpGb3IgcHJvcGVyIHJlc3VsdHMsIG11bHRpcGxlIGZpbGVuYW1lcyBu ZWVkIHRvIGJlIHBhc3NlZCBvbiB0aGUgY29tbWFuZApsaW5lIGluIGJvdHRvbS11cCBvcmRlci4i CiAgKHVubGVzcyBub25pbnRlcmFjdGl2ZQogICAgKGVycm9yICJVc2UgdmVyaWxvZy1iYXRjaC1p bmplY3QtYXV0byBvbmx5IHdpdGggLS1iYXRjaCIpKSAgOyBPdGhlcndpc2Ugd2UnZCBtZXNzIHVw IGJ1ZmZlciBtb2RlcwogICh2ZXJpbG9nLWJhdGNoLWV4ZWN1dGUtZnVuYyAndmVyaWxvZy1pbmpl Y3QtYXV0bykpCgooZGVmdW4gdmVyaWxvZy1iYXRjaC1pbmRlbnQgKCkKICAiRm9yIHVzZSB3aXRo IC0tYmF0Y2gsIHJlaW5kZW50IGFuIGVudGlyZSBmaWxlIGFzIGEgc3RhbmQtYWxvbmUgdG9vbC4K VGhpcyBzZXRzIHVwIHRoZSBhcHByb3ByaWF0ZSBWZXJpbG9nIG1vZGUgZW52aXJvbm1lbnQsIGNh bGxzClxcW3Zlcmlsb2ctaW5kZW50LWJ1ZmZlcl0gb24gYWxsIGNvbW1hbmQtbGluZSBmaWxlcywg YW5kIHNhdmVzIHRoZSBidWZmZXJzLiIKICAodW5sZXNzIG5vbmludGVyYWN0aXZlCiAgICAoZXJy b3IgIlVzZSB2ZXJpbG9nLWJhdGNoLWluZGVudCBvbmx5IHdpdGggLS1iYXRjaCIpKSAgOyBPdGhl cndpc2Ugd2UnZCBtZXNzIHVwIGJ1ZmZlciBtb2RlcwogICh2ZXJpbG9nLWJhdGNoLWV4ZWN1dGUt ZnVuYyAndmVyaWxvZy1pbmRlbnQtYnVmZmVyKSkKDAo7OzsgSW5kZW50YXRpb246Cjs7CihkZWZj b25zdCB2ZXJpbG9nLWluZGVudC1hbGlzdAogICcoKGJsb2NrICAgICAgIC4gKCsgaW5kIHZlcmls b2ctaW5kZW50LWxldmVsKSkKICAgIChjYXNlICAgICAgICAuICgrIGluZCB2ZXJpbG9nLWNhc2Ut aW5kZW50KSkKICAgIChjcGFyZW5leHAgICAuICgrIGluZCB2ZXJpbG9nLWluZGVudC1sZXZlbCkp CiAgICAoY2V4cCAgICAgICAgLiAoKyBpbmQgdmVyaWxvZy1jZXhwLWluZGVudCkpCiAgICAoZGVm dW4gICAgICAgLiB2ZXJpbG9nLWluZGVudC1sZXZlbC1tb2R1bGUpCiAgICAoZGVjbGFyYXRpb24g LiB2ZXJpbG9nLWluZGVudC1sZXZlbC1kZWNsYXJhdGlvbikKICAgIChkaXJlY3RpdmUgICAuICh2 ZXJpbG9nLWNhbGN1bGF0ZS1pbmRlbnQtZGlyZWN0aXZlKSkKICAgICh0ZiAgICAgICAgICAuIHZl cmlsb2ctaW5kZW50LWxldmVsKQogICAgKGJlaGF2aW9yYWwgIC4gKCsgdmVyaWxvZy1pbmRlbnQt bGV2ZWwtYmVoYXZpb3JhbCB2ZXJpbG9nLWluZGVudC1sZXZlbC1tb2R1bGUpKQogICAgKHN0YXRl bWVudCAgIC4gaW5kKQogICAgKGNwcCAgICAgICAgIC4gMCkKICAgIChjb21tZW50ICAgICAuICh2 ZXJpbG9nLWNvbW1lbnQtaW5kZW50KSkKICAgICh1bmtub3duICAgICAuIDMpCiAgICAoc3RyaW5n ICAgICAgLiAwKSkpCgooZGVmdW4gdmVyaWxvZy1jb250aW51ZWQtbGluZS0xIChsaW0pCiAgIlJl dHVybiB0cnVlIGlmIHRoaXMgaXMgYSBjb250aW51ZWQgbGluZS4KU2V0IHBvaW50IHRvIHdoZXJl IGxpbmUgc3RhcnRzLiAgTGltaXQgc2VhcmNoIHRvIHBvaW50IExJTS4iCiAgKGxldCAoKGNvbnRp bnVlZCAndCkpCiAgICAoaWYgKGVxIDAgKGZvcndhcmQtbGluZSAtMSkpCgkocHJvZ24KCSAgKGVu ZC1vZi1saW5lKQoJICAodmVyaWxvZy1iYWNrd2FyZC13cyZkaXJlY3RpdmVzIGxpbSkKCSAgKGlm IChib2JwKQoJICAgICAgKHNldHEgY29udGludWVkIG5pbCkKCSAgICAoc2V0cSBjb250aW51ZWQg KHZlcmlsb2ctYmFja3dhcmQtdG9rZW4pKSkpCiAgICAgIChzZXRxIGNvbnRpbnVlZCBuaWwpKQog ICAgY29udGludWVkKSkKCihkZWZ1biB2ZXJpbG9nLWNhbGN1bGF0ZS1pbmRlbnQgKCkKICAiQ2Fs Y3VsYXRlIHRoZSBpbmRlbnQgb2YgdGhlIGN1cnJlbnQgVmVyaWxvZyBsaW5lLgpFeGFtaW5lIHBy ZXZpb3VzIGxpbmVzLiAgT25jZSBhIGxpbmUgaXMgZm91bmQgdGhhdCBpcyBkZWZpbml0aXZlIGFz IHRvIHRoZQp0eXBlIG9mIHRoZSBjdXJyZW50IGxpbmUsIHJldHVybiB0aGF0IGxpbmVzJyBpbmRl bnQgbGV2ZWwgYW5kIGl0cyB0eXBlLgpSZXR1cm4gYSBsaXN0IG9mIHR3byBlbGVtZW50czogKElO REVOVC1UWVBFIElOREVOVC1MRVZFTCkuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGxldCogKChz dGFydGluZ19wb3NpdGlvbiAocG9pbnQpKQoJICAgKGNhc2UtZm9sZC1zZWFyY2ggbmlsKQoJICAg KHBhciAwKQoJICAgKGJlZ2luIChsb29raW5nLWF0ICJbIFx0XSpiZWdpblxcPiIpKQogICAgICAg ICAgKGxpbSAoc2F2ZS1leGN1cnNpb24gKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkICJcXChc XDxiZWdpblxcPlxcKVxcfFxcKFxcPFxcKGNvbm5lY3RcXCk/bW9kdWxlXFw+XFwpIiBuaWwgdCkp KQogICAgICAgICAgIChzdHJ1Y3RyZXMgbmlsKQoJICAgKHR5cGUgKGNhdGNoICduZXN0aW5nCgkJ ICAgOzsgS2VlcCB3b3JraW5nIGJhY2t3YXJkcyB1bnRpbCB3ZSBjYW4gZmlndXJlIG91dAoJCSAg IDs7IHdoYXQgdHlwZSBvZiBzdGF0ZW1lbnQgdGhpcyBpcy4KCQkgICA7OyBCYXNpY2FsbHkgd2Ug bmVlZCB0byBmaWd1cmUgb3V0CgkJICAgOzsgMSkgaWYgdGhpcyBpcyBhIGNvbnRpbnVhdGlvbiBv ZiB0aGUgcHJldmlvdXMgbGluZTsKCQkgICA7OyAyKSBhcmUgd2UgaW4gYSBibG9jayBzY29wZSAo YmVnaW4uLmVuZCkKCgkJICAgOzsgaWYgd2UgYXJlIGluIGEgY29tbWVudCwgZG9uZS4KCQkgICAo aWYgKHZlcmlsb2ctaW4tc3Rhci1jb21tZW50LXApCgkJICAgICAgICh0aHJvdyAnbmVzdGluZyAn Y29tbWVudCkpCgoJCSAgIDs7IGlmIHdlIGhhdmUgYSBkaXJlY3RpdmUsIGRvbmUuCgkJICAgKGlm IChzYXZlLWV4Y3Vyc2lvbiAoYmVnaW5uaW5nLW9mLWxpbmUpCgkJCQkgICAgICAgKGFuZCAobG9v a2luZy1hdCB2ZXJpbG9nLWRpcmVjdGl2ZS1yZS0xKQoJCQkJCSAgICAobm90IChvciAobG9va2lu Zy1hdCAiWyBcdF0qYFtvdV12bV8iKQoJCQkJCQkgICAgIChsb29raW5nLWF0ICJbIFx0XSpgdm1t XyIpKSkpKQoJCSAgICAgICAodGhyb3cgJ25lc3RpbmcgJ2RpcmVjdGl2ZSkpCiAgICAgICAgICAg ICAgICAgICA7OyBpbmRlbnQgc3RydWN0cyBhcyBpZiB0aGVyZSB3ZXJlIG1vZHVsZSBsZXZlbAog ICAgICAgICAgICAgICAgICAgKHNldHEgc3RydWN0cmVzICh2ZXJpbG9nLWluLXN0cnVjdC1uZXN0 ZWQtcCkpCiAgICAgICAgICAgICAgICAgICAoY29uZCAoKG5vdCBzdHJ1Y3RyZXMpIG5pbCkKICAg ICAgICAgICAgICAgICAgICAgICAgIDs7KChhbmQgc3RydWN0cmVzIChlcXVhbCAoY2hhci1hZnRl cikgP1x9KSkgKHRocm93ICduZXN0aW5nICdzdHJ1Y3QtY2xvc2UpKQogICAgICAgICAgICAgICAg ICAgICAgICAgKCg+IHN0cnVjdHJlcyAwKSAodGhyb3cgJ25lc3RpbmcgJ25lc3RlZC1zdHJ1Y3Qp KQogICAgICAgICAgICAgICAgICAgICAgICAgKCg9IHN0cnVjdHJlcyAwKSAodGhyb3cgJ25lc3Rp bmcgJ2Jsb2NrKSkKICAgICAgICAgICAgICAgICAgICAgICAgICh0IG5pbCkpCgogICAgICAgICAg ICAgICAgICAgOzsgaWYgd2UgYXJlIGluIGEgcGFyZW50aGVzaXplZCBsaXN0LCBhbmQgdGhlIHVz ZXIgbGlrZXMgdG8gaW5kZW50IHRoZXNlLCByZXR1cm4uCiAgICAgICAgICAgICAgICAgICA7OyB1 bmxlc3Mgd2UgYXJlIGluIHRoZSBuZXdmYW5nbGVkIGNvdmVycG9pbnQgb3IgY29uc3RyYWludCBi bG9ja3MKICAgICAgICAgICAgICAgICAgIChpZiAoYW5kCiAgICAgICAgICAgICAgICAgICAgICAg IHZlcmlsb2ctaW5kZW50LWxpc3RzCiAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWlu LXBhcmVuKQogICAgICAgICAgICAgICAgICAgICAgICAobm90ICh2ZXJpbG9nLWluLWNvdmVyYWdl LXApKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgKHBy b2duIChzZXRxIHBhciAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhyb3cgJ25l c3RpbmcgJ2Jsb2NrKSkpCgogICAgICAgICAgICAgICAgICAgOzsgU2VlIGlmIHdlIGFyZSBjb250 aW51aW5nIGEgcHJldmlvdXMgbGluZQogICAgICAgICAgICAgICAgICAgKHdoaWxlIHQKICAgICAg ICAgICAgICAgICAgICAgOzsgdHJhcCBvdXQgaWYgd2UgY3Jhd2wgb2ZmIHRoZSB0b3Agb2YgdGhl IGJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAoaWYgKGJvYnApICh0aHJvdyAnbmVzdGluZyAn Y3BwKSkKCiAgICAgICAgICAgICAgICAgICAgIChpZiAoYW5kICh2ZXJpbG9nLWNvbnRpbnVlZC1s aW5lLTEgbGltKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKG5vdCAodmVyaWxv Zy1pbi1jb3ZlcmFnZS1wKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb29r aW5nLWF0IHZlcmlsb2ctaW4tY29uc3RyYWludC1yZSkgKSkgIDsgbWF5IHN0aWxsIGdldCBob3Nl ZCBpZiBjb25jYXQgaW4gY29uc3RyYWludAogICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAo KHNwIChwb2ludCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGFuZAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGxvb2tpbmctYXQgdmVyaWxvZy1jb21wbGV0 ZS1yZWcpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWNvbnRpbnVl ZC1saW5lLTEgbGltKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAoZ290 by1jaGFyIHNwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAn bmVzdGluZyAnY2V4cCkpCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg c3ApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGFuZCAodmVyaWxvZy1pbi1jb3Zl cmFnZS1wKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9va2luZy1hdCB2 ZXJpbG9nLWluLWNvbnN0cmFpbnQtcmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGlu ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAi IFx0IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRocm93ICduZXN0aW5nICdj b25zdHJhaW50KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYW5kIGJlZ2luCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgdmVyaWxvZy1pbmRlbnQtYmVn aW4tYWZ0ZXItaWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb29raW5n LWF0IHZlcmlsb2ctbm8taW5kZW50LWJlZ2luLXJlKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5n LW9mLWxpbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWZv cndhcmQgIiBcdCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAnbmVz dGluZyAnc3RhdGVtZW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAnbmVzdGluZyAnY2V4cCkpKSkKICAg ICAgICAgICAgICAgICAgICAgICA7OyBub3QgYSBjb250aW51ZWQgbGluZQogICAgICAgICAgICAg ICAgICAgICAgIChnb3RvLWNoYXIgc3RhcnRpbmdfcG9zaXRpb24pKQoKICAgICAgICAgICAgICAg ICAgICAgKGlmIChsb29raW5nLWF0ICJcXDxlbHNlXFw+IikKICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IHNlYXJjaCBiYWNrIGZvciBnb3Zlcm5pbmcgaWYsIHN0cmlkaW5nIGFjcm9zcyBiZWdp bi4uZW5kIHBhaXJzCiAgICAgICAgICAgICAgICAgICAgICAgICA7OyBhcHByb3ByaWF0ZWx5CiAg ICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoZWxzZWMgMSkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICh3aGlsZSAodmVyaWxvZy1yZS1zZWFyY2gtYmFja3dhcmQgdmVyaWxvZy1lbmRz LXJlIG5pbCAnbW92ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoLWVuZCAxKSA7IGVsc2UsIHdlJ3JlIGluIGRl ZXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGVsc2VjICgxKyBlbHNlYykp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoLWVuZCAyKSA7IGlmCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBlbHNlYyAoMS0gZWxzZWMpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGlmICg9IDAgZWxzZWMpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGlmIHZlcmlsb2ctYWxpZ24taWZlbHNlCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAnbmVzdGluZyAnc3RhdGVtZW50KQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2duICA7IGJhY2sgdXAgdG8gZmly c3Qgd29yZCBvbiB0aGlzIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodmVyaWxvZy1mb3J3YXJkLXN5bnRhY3RpYy13cykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHRocm93ICduZXN0aW5nICdzdGF0ZW1lbnQpKSkpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoLWVuZCAzKSA7IGFzc2VydCBibG9jawogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZWxzZWMgKDEtIGVsc2VjKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWJlZy1vZi1zdGF0ZW1lbnQpICA7IGRv ZXNuJ3QgZ2V0IHRvIGJlZ2lubmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlm IChsb29raW5nLWF0IHZlcmlsb2ctcHJvcGVydHktcmUpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHRocm93ICduZXN0aW5nICdzdGF0ZW1lbnQpICA7IFdlIGRvbid0IG5lZWQg YW4gZW5kcHJvcGVydHkgZm9yIHRoZXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh0aHJvdyAnbmVzdGluZyAnYmxvY2spCTsgV2Ugc3RpbGwgbmVlZCBhbiBlbmRwcm9wZXJ0eQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodCA7IGVuZGJsb2NrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0 cnkgdG8gbGVhcCBiYWNrIHRvIG1hdGNoaW5nIG91dHdhcmQgYmxvY2sgYnkgc3RyaWRpbmcgYWNy b3NzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBpbmRlbnQgbGV2ZWwgY2hhbmdp bmcgdG9rZW5zIHRoZW4gaW1tZWRpYXRlbHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IHByZXZpb3VzIGxpbmUgZ292ZXJucyBpbmRlbnRhdGlvbi4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsZXQgKCggcmVnKSAobmVzdCAxKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOzsJIHZlcmlsb2ctZW5kcyA9PiAgZWxzZXxpZnxlbmR8am9pbihfYW55fF9u b25lfCl8ZW5kY2FzZXxlbmRjbGFzc3xlbmR0YWJsZXxlbmRzcGVjaWZ5fGVuZGZ1bmN0aW9ufGVu ZHRhc2t8ZW5kZ2VuZXJhdGV8ZW5kZ3JvdXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtZW5kIDQp IDsgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgU2VhcmNoIGJhY2sg Zm9yIG1hdGNoaW5nIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNl dHEgcmVnICJcXChcXDxiZWdpblxcPlxcKVxcfFxcKFxcPGVuZFxcPlxcKSIgKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtZW5kIDUpIDsgZW5kY2FzZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFNlYXJjaCBiYWNrIGZvciBtYXRjaGluZyBj YXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgcmVnICJcXChcXDxy YW5kY2FzZVxcPlxcfFxcPGNhc2VbeHpdP1xcPlteOl1cXClcXHxcXChcXDxlbmRjYXNlXFw+XFwp IiApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaC1lbmQgNikgOyBl bmRmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFNlYXJjaCBi YWNrIGZvciBtYXRjaGluZyBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzZXRxIHJlZyAiXFwoXFw8ZnVuY3Rpb25cXD5cXClcXHxcXChcXDxlbmRmdW5jdGlvblxc PlxcKSIgKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtZW5kIDcp IDsgZW5kdGFzawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFNlYXJjaCBi YWNrIGZvciBtYXRjaGluZyB0YXNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgcmVnICJcXChcXDx0YXNrXFw+XFwpXFx8XFwoXFw8ZW5kdGFza1xcPlxcKSIgKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtZW5kIDgpIDsgZW5kc3BlY2lm eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFNlYXJjaCBiYWNrIGZvciBt YXRjaGluZyBzcGVjaWZ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEg cmVnICJcXChcXDxzcGVjaWZ5XFw+XFwpXFx8XFwoXFw8ZW5kc3BlY2lmeVxcPlxcKSIgKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtZW5kIDkpIDsgZW5kdGFibGUK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTZWFyY2ggYmFjayBmb3IgbWF0 Y2hpbmcgdGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSByZWcg IlxcKFxcPHRhYmxlXFw+XFwpXFx8XFwoXFw8ZW5kdGFibGVcXD5cXCkiICkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoLWVuZCAxMCkgOyBlbmRnZW5lcmF0ZQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFNlYXJjaCBiYWNrIGZvciBtYXRjaGlu ZyBnZW5lcmF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHJlZyAi XFwoXFw8Z2VuZXJhdGVcXD5cXClcXHxcXChcXDxlbmRnZW5lcmF0ZVxcPlxcKSIgKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtZW5kIDExKSA7IGpvaW5zCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgU2VhcmNoIGJhY2sgZm9yIG1hdGNoaW5n IGZvcmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSByZWcgIlxcKFxc PGZvcmtcXD5cXClcXHxcXChcXDxqb2luXFwoX2FueVxcfG5vbmVcXCk/XFw+XFwpIiApKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaC1lbmQgMTIpIDsgY2xhc3MKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTZWFyY2ggYmFjayBmb3IgbWF0Y2hp bmcgY2xhc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSByZWcgIlxc KFxcPGNsYXNzXFw+XFwpXFx8XFwoXFw8ZW5kY2xhc3NcXD5cXCkiICkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoKG1hdGNoLWVuZCAxMykgOyBjb3Zlcmdyb3VwCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgU2VhcmNoIGJhY2sgZm9yIG1hdGNoaW5nIGNv dmVyZ3JvdXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSByZWcgIlxc KFxcPGNvdmVyZ3JvdXBcXD5cXClcXHxcXChcXDxlbmRncm91cFxcPlxcKSIgKSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjYXRjaCAnc2tpcAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh3aGlsZSAodmVyaWxvZy1yZS1zZWFyY2gtYmFja3dhcmQgcmVnIG5p bCAnbW92ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaC1lbmQgMSkgOyBiZWdpbgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBuZXN0ICgxLSBuZXN0 KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmICg9IDAgbmVzdCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAnc2tpcCAx KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaC1lbmQgMikg OyBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbmVzdCAo MSsgbmVzdCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpKSkpKQog ICAgICAgICAgICAgICAgICAgICAodGhyb3cgJ25lc3RpbmcgKHZlcmlsb2ctY2FsYy0xKSkpCiAg ICAgICAgICAgICAgICAgICApICA7IGNhdGNoIG5lc3RpbmcKCQkgKSA7IHR5cGUKCSAgICkKICAg ICAgOzsgUmV0dXJuIHR5cGUgb2YgYmxvY2sgYW5kIGluZGVudCBsZXZlbC4KICAgICAgKGlmIChu b3QgdHlwZSkKCSAgKHNldHEgdHlwZSAnY3BwKSkKICAgICAgKGlmICg+IHBhciAwKQkJCTsgVW5j bG9zZWQgUGFyZW50aGVzaXMKCSAgKGxpc3QgJ2NwYXJlbmV4cCBwYXIpCgkoY29uZAogICAgICAg ICAoKGVxIHR5cGUgJ2Nhc2UpCiAgICAgICAgICAobGlzdCB0eXBlICh2ZXJpbG9nLWNhc2UtaW5k ZW50LWxldmVsKSkpCiAgICAgICAgICgoZXEgdHlwZSAnc3RhdGVtZW50KQogICAgICAgICAgKGxp c3QgdHlwZSAoY3VycmVudC1jb2x1bW4pKSkKICAgICAgICAgKChlcSB0eXBlICdkZWZ1bikKICAg ICAgICAgIChsaXN0IHR5cGUgMCkpCiAgICAgICAgICgoZXEgdHlwZSAnY29uc3RyYWludCkKICAg ICAgICAgIChsaXN0ICdibG9jayAoY3VycmVudC1jb2x1bW4pKSkKICAgICAgICAgKChlcSB0eXBl ICduZXN0ZWQtc3RydWN0KQogICAgICAgICAgKGxpc3QgJ2Jsb2NrIHN0cnVjdHJlcykpCiAgICAg ICAgICh0CiAgICAgICAgICAobGlzdCB0eXBlICh2ZXJpbG9nLWN1cnJlbnQtaW5kZW50LWxldmVs KSkpKSkpKSkKCihkZWZ1biB2ZXJpbG9nLXdhaSAoKQogICJTaG93IG1hdGNoaW5nIG5lc3Rpbmcg YmxvY2sgZm9yIGRlYnVnZ2luZy4iCiAgKGludGVyYWN0aXZlKQogIChzYXZlLWV4Y3Vyc2lvbgog ICAgKGxldCogKCh0eXBlICh2ZXJpbG9nLWNhbGMtMSkpCgkgICBkZXB0aCkKICAgICAgOzsgUmV0 dXJuIHR5cGUgb2YgYmxvY2sgYW5kIGluZGVudCBsZXZlbC4KICAgICAgKGlmIChub3QgdHlwZSkK CSAgKHNldHEgdHlwZSAnY3BwKSkKICAgICAgKGlmIChhbmQKCSAgIHZlcmlsb2ctaW5kZW50LWxp c3RzCgkgICAobm90KG9yICh2ZXJpbG9nLWluLWNvdmVyYWdlLXApCiAgICAgICAgICAgICAgICAg ICAodmVyaWxvZy1pbi1zdHJ1Y3QtcCkpKQoJICAgKHZlcmlsb2ctaW4tcGFyZW4pKQoJICAoc2V0 cSBkZXB0aCAxKQoJKGNvbmQKICAgICAgICAgKChlcSB0eXBlICdjYXNlKQogICAgICAgICAgKHNl dHEgZGVwdGggKHZlcmlsb2ctY2FzZS1pbmRlbnQtbGV2ZWwpKSkKICAgICAgICAgKChlcSB0eXBl ICdzdGF0ZW1lbnQpCiAgICAgICAgICAoc2V0cSBkZXB0aCAoY3VycmVudC1jb2x1bW4pKSkKICAg ICAgICAgKChlcSB0eXBlICdkZWZ1bikKICAgICAgICAgIChzZXRxIGRlcHRoIDApKQogICAgICAg ICAodAogICAgICAgICAgKHNldHEgZGVwdGggKHZlcmlsb2ctY3VycmVudC1pbmRlbnQtbGV2ZWwp KSkpKQogICAgICAobWVzc2FnZSAiWW91IGFyZSBhdCBuZXN0aW5nICVzIGRlcHRoICVkIiB0eXBl IGRlcHRoKSkpKQoKKGRlZnVuIHZlcmlsb2ctY2FsYy0xICgpCiAgKGNhdGNoICduZXN0aW5nCiAg ICAobGV0ICgocmUgKGNvbmNhdCAiXFwoe1xcfH1cXHwiIHZlcmlsb2ctaW5kZW50LXJlICJcXCki KSkKICAgICAgICAgIChpbmNvbnN0cmFpbnQgKHZlcmlsb2ctaW4tY292ZXJhZ2UtcCkpKQogICAg ICAod2hpbGUgKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkIHJlIG5pbCAnbW92ZSkKICAgICAg ICAoY2F0Y2ggJ2NvbnRpbnVlCiAgICAgICAgICAoY29uZAogICAgICAgICAgICgoZXF1YWwgKGNo YXItYWZ0ZXIpID9ceykKICAgICAgICAgICAgOzsgYmxvY2sgdHlwZSByZXR1cm5lZCBiYXNlZCBv biBvdXRlciBjb25zdHJhaW50IHsgb3IgaW5uZXIKICAgICAgICAgICAgKGlmICh2ZXJpbG9nLWF0 LWNvbnN0cmFpbnQtcCkKICAgICAgICAgICAgICAgIChjb25kIChpbmNvbnN0cmFpbnQKICAgICAg ICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUgbmlsKQogICAgICAgICAgICAgICAg ICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpCiAgICAgICAgICAgICAgICAgICAgICAg KHRocm93ICduZXN0aW5nICdjb25zdHJhaW50KSkKICAgICAgICAgICAgICAgICAgICAgICh0CiAg ICAgICAgICAgICAgICAgICAgICAgKHRocm93ICduZXN0aW5nICdzdGF0ZW1lbnQpKSkpKQogICAg ICAgICAgICgoZXF1YWwgKGNoYXItYWZ0ZXIpID9cfSkKICAgICAgICAgICAgKGxldCAocGFyLXBv cwogICAgICAgICAgICAgICAgICAodGhlcmUgKHZlcmlsb2ctYXQtY2xvc2UtY29uc3RyYWludC1w KSkpCiAgICAgICAgICAgICAgKGlmIHRoZXJlICA7IHdlIGFyZSBhdCB0aGUgfSB0aGF0IGNsb3Nl cyBhIGNvbnN0cmFpbnQuICBGaW5kIHRoZSB7IHRoYXQgb3BlbnMgaXQKICAgICAgICAgICAgICAg ICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgKGlmICg+ICh2ZXJpbG9nLWluLXBhcmVuLWNv dW50KSAwKQogICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyIDEpKQogICAgICAg ICAgICAgICAgICAgIChzZXRxIHBhci1wb3MgKHZlcmlsb2ctcGFyZW50aGVzaXMtZGVwdGgpKQog ICAgICAgICAgICAgICAgICAgIChjb25kIChwYXItcG9zCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIChnb3RvLWNoYXIgcGFyLXBvcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcndh cmQtY2hhciAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAodAogICAgICAgICAgICAgICAg ICAgICAgICAgICAoYmFja3dhcmQtY2hhciAxKSkpKSkpKQoKICAgICAgICAgICAoKGxvb2tpbmct YXQgdmVyaWxvZy1iZWctYmxvY2stcmUtb3JkZXJlZCkKICAgICAgICAgICAgKGNvbmQKICAgICAg ICAgICAgICgobWF0Y2gtZW5kIDIpICA7ICpzaWdoKiBjb3VsZCBiZSAidW5pcXVlIGNhc2UiIG9y ICJwcmlvcml0eSBjYXNleCIKICAgICAgICAgICAgICAobGV0ICgoaGVyZSAocG9pbnQpKSkKICAg ICAgICAgICAgICAgICh2ZXJpbG9nLWJlZy1vZi1zdGF0ZW1lbnQpCiAgICAgICAgICAgICAgICAo aWYgKGxvb2tpbmctYXQgdmVyaWxvZy1leHRlbmRlZC1jYXNlLXJlKQogICAgICAgICAgICAgICAg ICAgICh0aHJvdyAnbmVzdGluZyAnY2FzZSkKICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBo ZXJlKSkpCiAgICAgICAgICAgICAgKHRocm93ICduZXN0aW5nICdjYXNlKSkKCiAgICAgICAgICAg ICAoKG1hdGNoLWVuZCA0KSAgOyAqc2lnaCogY291bGQgYmUgImRpc2FibGUgZm9yayIKICAgICAg ICAgICAgICAobGV0ICgoaGVyZSAocG9pbnQpKSkKICAgICAgICAgICAgICAgICh2ZXJpbG9nLWJl Zy1vZi1zdGF0ZW1lbnQpCiAgICAgICAgICAgICAgICAoaWYgKGxvb2tpbmctYXQgdmVyaWxvZy1k aXNhYmxlLWZvcmstcmUpCiAgICAgICAgICAgICAgICAgICAgdCA7IHRoaXMgaXMgYSBub3JtYWwg c3RhdGVtZW50CiAgICAgICAgICAgICAgICAgIChwcm9nbiA7IG9yIGlzIGZvcmssIHN0YXJ0cyBh IG5ldyBibG9jawogICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgaGVyZSkKICAgICAgICAg ICAgICAgICAgICAodGhyb3cgJ25lc3RpbmcgJ2Jsb2NrKSkpKSkKCiAgICAgICAgICAgICAoKG1h dGNoLWVuZCAxNykgIDsgKnNpZ2gqIG1pZ2h0IGJlIGEgY2xvY2tpbmcgZGVjbGFyYXRpb24KICAg ICAgICAgICAgICAobGV0ICgoaGVyZSAocG9pbnQpKSkKICAgICAgICAgICAgICAgIChjb25kICgo dmVyaWxvZy1pbi1wYXJlbikKICAgICAgICAgICAgICAgICAgICAgICB0KSA7IHRoaXMgaXMgYSBu b3JtYWwgc3RhdGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAoKHNhdmUtZXhjdXJzaW9uCiAg ICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWJlZy1vZi1zdGF0ZW1lbnQpCiAgICAgICAg ICAgICAgICAgICAgICAgIChsb29raW5nLWF0IHZlcmlsb2ctZGVmYXVsdC1jbG9ja2luZy1yZSkp CiAgICAgICAgICAgICAgICAgICAgICAgdCkgOyBkZWZhdWx0IGNsb2NraW5nLCBub3JtYWwgc3Rh dGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAodAogICAgICAgICAgICAgICAgICAgICAgIChn b3RvLWNoYXIgaGVyZSkgOyBvciBpcyBjbG9ja2luZywgc3RhcnRzIGEgbmV3IGJsb2NrCiAgICAg ICAgICAgICAgICAgICAgICAgKHRocm93ICduZXN0aW5nICdibG9jaykpKSkpCgogICAgICAgICAg ICAgKChsb29raW5nLWF0ICJcXDxjbGFzc1xcfHN0cnVjdFxcfGZ1bmN0aW9uXFx8dGFza1xcPiIp CiAgICAgICAgICAgICAgOzsgKnNpZ2gqIFRoZXNlIHdvcmRzIGhhdmUgYW4gb3B0aW9uYWwgcHJl Zml4OgogICAgICAgICAgICAgIDs7IGV4dGVybiB7dmlydHVhbHxwcm90ZWN0ZWR9PyBmdW5jdGlv biBhKCk7CiAgICAgICAgICAgICAgOzsgYW5kIHdlIGRvbid0IHdhbnQgdG8gY29uZnVzZSB0aGlz IHdpdGgKICAgICAgICAgICAgICA7OyBmdW5jdGlvbiBhKCk7CiAgICAgICAgICAgICAgOzsgcHJv cGVydHkKICAgICAgICAgICAgICA7OyAuLi4KICAgICAgICAgICAgICA7OyBlbmRmdW5jdGlvbgog ICAgICAgICAgICAgICh2ZXJpbG9nLWJlZy1vZi1zdGF0ZW1lbnQpCiAgICAgICAgICAgICAgKGNv bmQKICAgICAgICAgICAgICAgKChsb29raW5nLWF0IHZlcmlsb2ctZHBpLWltcG9ydC1leHBvcnQt cmUpCiAgICAgICAgICAgICAgICAodGhyb3cgJ2NvbnRpbnVlICdmb28pKQogICAgICAgICAgICAg ICAoKG9yCiAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQgIlxcPHB1cmVcXD5cXHMtK1xcPHZp cnR1YWxcXD5cXHMtK1xcKD86XFw8XFwobG9jYWxcXHxwcm90ZWN0ZWRcXHxzdGF0aWNcXClcXD5c XHMtK1xcKT9cXDxcXChmdW5jdGlvblxcfHRhc2tcXClcXD5cXHMtKyIpCiAgICAgICAgICAgICAg ICAgOzsgRG8gbm90IHRocm93ICdkZWZ1biBmb3IgY2xhc3MgdHlwZWRlZnMgbGlrZQogICAgICAg ICAgICAgICAgIDs7ICAgdHlwZWRlZiBjbGFzcyBmb287CiAgICAgICAgICAgICAgICAgKGxvb2tp bmctYXQgIlxcPHR5cGVkZWZcXD5cXHMtK1xcKD86XFw8dmlydHVhbFxcPlxccy0rXFwpP1xcPGNs YXNzXFw+XFxzLSsiKSkKICAgICAgICAgICAgICAgICh0aHJvdyAnbmVzdGluZyAnc3RhdGVtZW50 KSkKICAgICAgICAgICAgICAgKChsb29raW5nLWF0IHZlcmlsb2ctYmVnLWJsb2NrLXJlLW9yZGVy ZWQpCiAgICAgICAgICAgICAgICAodGhyb3cgJ25lc3RpbmcgJ2Jsb2NrKSkKICAgICAgICAgICAg ICAgKHQKICAgICAgICAgICAgICAgICh0aHJvdyAnbmVzdGluZyAnZGVmdW4pKSkpCgogICAgICAg ICAgICAgOzsKICAgICAgICAgICAgICgobG9va2luZy1hdCAiXFw8cHJvcGVydHlcXD4iKQogICAg ICAgICAgICAgIDs7ICpzaWdoKgogICAgICAgICAgICAgIDs7ICAgIHthc3NlcnR8YXNzdW1lfGNv dmVyfSBwcm9wZXJ0eSAoKTsgYXJlIGNvbXBsZXRlCiAgICAgICAgICAgICAgOzsgICBhbmQgY291 bGQgYWxzbyBiZSBsYWJlbGVkOiAtIGZvbzogYXNzZXJ0IHByb3BlcnR5CiAgICAgICAgICAgICAg OzsgYnV0CiAgICAgICAgICAgICAgOzsgICAgcHJvcGVydHkgSUQgKCkgLi4uIG5lZWRzIGVuZF9w cm9wZXJ0eQogICAgICAgICAgICAgICh2ZXJpbG9nLWJlZy1vZi1zdGF0ZW1lbnQpCiAgICAgICAg ICAgICAgKGlmIChsb29raW5nLWF0IHZlcmlsb2ctcHJvcGVydHktcmUpCiAgICAgICAgICAgICAg ICAgICh0aHJvdyAnY29udGludWUgJ3N0YXRlbWVudCkgOyBXZSBkb24ndCBuZWVkIGFuIGVuZHBy b3BlcnR5IGZvciB0aGVzZQogICAgICAgICAgICAgICAgKHRocm93ICduZXN0aW5nICdibG9jaykJ O1dlIHN0aWxsIG5lZWQgYW4gZW5kcHJvcGVydHkKICAgICAgICAgICAgICAgICkpCgogICAgICAg ICAgICAgKHQgICAgICAgICAgICAgICh0aHJvdyAnbmVzdGluZyAnYmxvY2spKSkpCgogICAgICAg ICAgICgobG9va2luZy1hdCB2ZXJpbG9nLWVuZC1ibG9jay1yZSkKICAgICAgICAgICAgKHZlcmls b2ctbGVhcC10by1oZWFkKQogICAgICAgICAgICAoaWYgKHZlcmlsb2ctaW4tY2FzZS1yZWdpb24t cCkKICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAodmVyaWxvZy1sZWFw LXRvLWNhc2UtaGVhZCkKICAgICAgICAgICAgICAgICAgKGlmIChsb29raW5nLWF0IHZlcmlsb2ct ZXh0ZW5kZWQtY2FzZS1yZSkKICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAnbmVzdGluZyAn Y2FzZSkpKSkpCgogICAgICAgICAgICgobG9va2luZy1hdCB2ZXJpbG9nLWRlZnVuLWxldmVsLXJl KQogICAgICAgICAgICAoaWYgKGxvb2tpbmctYXQgdmVyaWxvZy1kZWZ1bi1sZXZlbC1nZW5lcmF0 ZS1vbmx5LXJlKQogICAgICAgICAgICAgICAgKGlmIChvciAodmVyaWxvZy1pbi1nZW5lcmF0ZS1y ZWdpb24tcCkKICAgICAgICAgICAgICAgICAgICAgICAgKHZlcmlsb2ctaW4tZGVmZXJyZWQtaW1t ZWRpYXRlLWZpbmFsLXApKQogICAgICAgICAgICAgICAgICAgICh0aHJvdyAnY29udGludWUgJ2Zv bykgIDsgYWx3YXlzIGJsb2NrIGluIGEgZ2VuZXJhdGUgLSBrZWVwIGxvb2tpbmcKICAgICAgICAg ICAgICAgICAgKHRocm93ICduZXN0aW5nICdkZWZ1bikpCiAgICAgICAgICAgICAgKHRocm93ICdu ZXN0aW5nICdkZWZ1bikpKQoKICAgICAgICAgICAoKGxvb2tpbmctYXQgdmVyaWxvZy1jcHAtbGV2 ZWwtcmUpCiAgICAgICAgICAgICh0aHJvdyAnbmVzdGluZyAnY3BwKSkKCiAgICAgICAgICAgKChi b2JwKQogICAgICAgICAgICAodGhyb3cgJ25lc3RpbmcgJ2NwcCkpKSkpCgogICAgICAodGhyb3cg J25lc3RpbmcgJ2NwcCkpKSkKCihkZWZ1biB2ZXJpbG9nLWNhbGN1bGF0ZS1pbmRlbnQtZGlyZWN0 aXZlICgpCiAgIlJldHVybiBpbmRlbnRhdGlvbiBsZXZlbCBmb3IgZGlyZWN0aXZlLgpGb3Igc3Bl ZWQsIHRoZSBzZWFyY2hlciBsb29rcyBhdCB0aGUgbGFzdCBkaXJlY3RpdmUsIG5vdCB0aGUgaW5k ZW50Cm9mIHRoZSBhcHByb3ByaWF0ZSBlbmNsb3NpbmcgYmxvY2suIgogIChsZXQgKChiYXNlIC0x KSAgOyBJbmRlbnQgb2YgdGhlIGxpbmUgdGhhdCBkZXRlcm1pbmVzIG91ciBpbmRlbnRhdGlvbgog ICAgICAgIChpbmQgMCkpICAgOyBSZWxhdGl2ZSBvZmZzZXQgY2F1c2VkIGJ5IG90aGVyIGRpcmVj dGl2ZXMgKGxpa2UgYGVuZGlmIG9uIHNhbWUgbGluZSBhcyBgZWxzZSkKICAgIDs7IFN0YXJ0IGF0 IGN1cnJlbnQgbG9jYXRpb24sIHNjYW4gYmFjayBmb3IgYW5vdGhlciBkaXJlY3RpdmUKCiAgICAo c2F2ZS1leGN1cnNpb24KICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAod2hpbGUgKGFu ZCAoPCBiYXNlIDApCgkJICAodmVyaWxvZy1yZS1zZWFyY2gtYmFja3dhcmQgdmVyaWxvZy1kaXJl Y3RpdmUtcmUgbmlsIHQpKQoJKGNvbmQgKChzYXZlLWV4Y3Vyc2lvbiAoc2tpcC1jaGFycy1iYWNr d2FyZCAiIFx0IikgKGJvbHApKQoJICAgICAgIChzZXRxIGJhc2UgKGN1cnJlbnQtaW5kZW50YXRp b24pKSkpCiAgICAgICAgKGNvbmQgKChhbmQgKGxvb2tpbmctYXQgdmVyaWxvZy1kaXJlY3RpdmUt ZW5kKSAoPCBiYXNlIDApKSAgOyBPbmx5IG1hdHRlcnMgd2hlbiBub3QgYXQgQk9MCgkgICAgICAg KHNldHEgaW5kICgtIGluZCB2ZXJpbG9nLWluZGVudC1sZXZlbC1kaXJlY3RpdmUpKSkKICAgICAg ICAgICAgICAoKGFuZCAobG9va2luZy1hdCB2ZXJpbG9nLWRpcmVjdGl2ZS1taWRkbGUpICg+PSBi YXNlIDApKSAgOyBPbmx5IG1hdHRlcnMgd2hlbiBhdCBCT0wKCSAgICAgICAoc2V0cSBpbmQgKCsg aW5kIHZlcmlsb2ctaW5kZW50LWxldmVsLWRpcmVjdGl2ZSkpKQoJICAgICAgKChsb29raW5nLWF0 IHZlcmlsb2ctZGlyZWN0aXZlLWJlZ2luKQoJICAgICAgIChzZXRxIGluZCAoKyBpbmQgdmVyaWxv Zy1pbmRlbnQtbGV2ZWwtZGlyZWN0aXZlKSkpKSkKICAgICAgOzsgQWRqdXN0IGluZGVudCB0byBz dGFydGluZyBpbmRlbnQgb2YgY3JpdGljYWwgbGluZQogICAgICAoc2V0cSBpbmQgKG1heCAwICgr IGluZCBiYXNlKSkpKQoKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoYmVnaW5uaW5nLW9mLWxp bmUpCiAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpCiAgICAgIChjb25kICgob3IgKGxv b2tpbmctYXQgdmVyaWxvZy1kaXJlY3RpdmUtbWlkZGxlKQoJCSAobG9va2luZy1hdCB2ZXJpbG9n LWRpcmVjdGl2ZS1lbmQpKQoJICAgICAoc2V0cSBpbmQgKG1heCAwICgtIGluZCB2ZXJpbG9nLWlu ZGVudC1sZXZlbC1kaXJlY3RpdmUpKSkpKSkKICAgIGluZCkpCgooZGVmdW4gdmVyaWxvZy1sZWFw LXRvLWNhc2UtaGVhZCAoKQogIChsZXQgKChuZXN0IDEpKQogICAgKHdoaWxlICgvPSAwIG5lc3Qp CiAgICAgICh2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZAogICAgICAgKGNvbmNhdAoJIlxcKFxc PHJhbmRjYXNlXFw+XFx8XFwoXFw8dW5pcXVlMD9cXHMtK1xcfHByaW9yaXR5XFxzLStcXCk/XFw8 Y2FzZVt4el0/XFw+XFwpIgoJIlxcfFxcKFxcPGVuZGNhc2VcXD5cXCkiICkKICAgICAgIG5pbCAn bW92ZSkKICAgICAgKGNvbmQKICAgICAgICgobWF0Y2gtZW5kIDEpCgkobGV0ICgoaGVyZSAocG9p bnQpKSkKCSAgKHZlcmlsb2ctYmVnLW9mLXN0YXRlbWVudCkKCSAgKHVubGVzcyAobG9va2luZy1h dCB2ZXJpbG9nLWV4dGVuZGVkLWNhc2UtcmUpCgkgICAgKGdvdG8tY2hhciBoZXJlKSkpCgkoc2V0 cSBuZXN0ICgxLSBuZXN0KSkpCiAgICAgICAoKG1hdGNoLWVuZCAzKQoJKHNldHEgbmVzdCAoMSsg bmVzdCkpKQogICAgICAgKChib2JwKQoJKGRpbmcgJ3QpCgkoc2V0cSBuZXN0IDApKSkpKSkKCihk ZWZ1biB2ZXJpbG9nLWxlYXAtdG8taGVhZCAoKQogICJNb3ZlIHBvaW50IHRvIHRoZSBoZWFkIG9m IHRoaXMgYmxvY2suCkp1bXAgZnJvbSBlbmQgdG8gbWF0Y2hpbmcgYmVnaW4sIGZyb20gZW5kY2Fz ZSB0byBtYXRjaGluZyBjYXNlLCBhbmQgc28gb24uIgogIChsZXQgKChyZWcgbmlsKQoJc25lc3QK CShuZXN0aW5nICd5ZXMpCgkobmVzdCAxKSkKICAgIChjb25kCiAgICAgKChsb29raW5nLWF0ICJc XDxlbmRcXD4iKQogICAgICA7OyAxOiBTZWFyY2ggYmFjayBmb3IgbWF0Y2hpbmcgYmVnaW4KICAg ICAgKHNldHEgcmVnIChjb25jYXQgIlxcKFxcPGJlZ2luXFw+XFwpXFx8XFwoXFw8ZW5kXFw+XFwp XFx8IgoJCQkiXFwoXFw8ZW5kY2FzZVxcPlxcKVxcfFxcKFxcPGpvaW5cXChfYW55XFx8X25vbmVc XCk/XFw+XFwpIiApKSkKICAgICAoKGxvb2tpbmctYXQgIlxcPGVuZHRhc2tcXD4iKQogICAgICA7 OyAyOiBTZWFyY2ggYmFjayBmb3IgbWF0Y2hpbmcgdGFzawogICAgICAoc2V0cSByZWcgIlxcKFxc PHRhc2tcXD5cXClcXHxcXChcXChcXDxcXCh2aXJ0dWFsXFx8cHJvdGVjdGVkXFx8c3RhdGljXFwp XFw+XFxzLStcXCkrXFw8dGFza1xcPlxcKSIpCiAgICAgIChzZXRxIG5lc3RpbmcgJ25vKSkKICAg ICAoKGxvb2tpbmctYXQgIlxcPGVuZGNhc2VcXD4iKQogICAgICAoY2F0Y2ggJ25lc3RpbmcKCSh2 ZXJpbG9nLWxlYXAtdG8tY2FzZS1oZWFkKSApCiAgICAgIChzZXRxIHJlZyBuaWwpIDsgdG8gZm9y Y2Ugc2tpcAogICAgICApCgogICAgICgobG9va2luZy1hdCAiXFw8am9pblxcKF9hbnlcXHxfbm9u ZVxcKT9cXD4iKQogICAgICA7OyA0OiBTZWFyY2ggYmFjayBmb3IgbWF0Y2hpbmcgZm9yawogICAg ICAoc2V0cSByZWcgIlxcKFxcPGZvcmtcXD5cXClcXHxcXChcXDxqb2luXFwoX2FueVxcfF9ub25l XFwpP1xcPlxcKSIgKSkKICAgICAoKGxvb2tpbmctYXQgIlxcPGVuZGNsYXNzXFw+IikKICAgICAg OzsgNTogU2VhcmNoIGJhY2sgZm9yIG1hdGNoaW5nIGNsYXNzCiAgICAgIChzZXRxIHJlZyAiXFwo XFw8Y2xhc3NcXD5cXClcXHxcXChcXDxlbmRjbGFzc1xcPlxcKSIgKSkKICAgICAoKGxvb2tpbmct YXQgIlxcPGVuZHRhYmxlXFw+IikKICAgICAgOzsgNjogU2VhcmNoIGJhY2sgZm9yIG1hdGNoaW5n IHRhYmxlCiAgICAgIChzZXRxIHJlZyAiXFwoXFw8dGFibGVcXD5cXClcXHxcXChcXDxlbmR0YWJs ZVxcPlxcKSIgKSkKICAgICAoKGxvb2tpbmctYXQgIlxcPGVuZHNwZWNpZnlcXD4iKQogICAgICA7 OyA3OiBTZWFyY2ggYmFjayBmb3IgbWF0Y2hpbmcgc3BlY2lmeQogICAgICAoc2V0cSByZWcgIlxc KFxcPHNwZWNpZnlcXD5cXClcXHxcXChcXDxlbmRzcGVjaWZ5XFw+XFwpIiApKQogICAgICgobG9v a2luZy1hdCAiXFw8ZW5kZnVuY3Rpb25cXD4iKQogICAgICA7OyA4OiBTZWFyY2ggYmFjayBmb3Ig bWF0Y2hpbmcgZnVuY3Rpb24KICAgICAgKHNldHEgcmVnICJcXChcXDxmdW5jdGlvblxcPlxcKVxc fFxcKFxcKFxcPFxcKHZpcnR1YWxcXHxwcm90ZWN0ZWRcXHxzdGF0aWNcXClcXD5cXHMtK1xcKStc XDxmdW5jdGlvblxcPlxcKSIpCiAgICAgIChzZXRxIG5lc3RpbmcgJ25vKSkKICAgICA7OyhzZXRx IHJlZyAiXFwoXFw8ZnVuY3Rpb25cXD5cXClcXHxcXChcXDxlbmRmdW5jdGlvblxcPlxcKSIgKSkK ICAgICAoKGxvb2tpbmctYXQgIlxcPGVuZGdlbmVyYXRlXFw+IikKICAgICAgOzsgODogU2VhcmNo IGJhY2sgZm9yIG1hdGNoaW5nIGdlbmVyYXRlCiAgICAgIChzZXRxIHJlZyAiXFwoXFw8Z2VuZXJh dGVcXD5cXClcXHxcXChcXDxlbmRnZW5lcmF0ZVxcPlxcKSIgKSkKICAgICAoKGxvb2tpbmctYXQg IlxcPGVuZGdyb3VwXFw+IikKICAgICAgOzsgMTA6IFNlYXJjaCBiYWNrIGZvciBtYXRjaGluZyBj b3Zlcmdyb3VwCiAgICAgIChzZXRxIHJlZyAiXFwoXFw8Y292ZXJncm91cFxcPlxcKVxcfFxcKFxc PGVuZGdyb3VwXFw+XFwpIiApKQogICAgICgobG9va2luZy1hdCAiXFw8ZW5kcHJvcGVydHlcXD4i KQogICAgICA7OyAxMTogU2VhcmNoIGJhY2sgZm9yIG1hdGNoaW5nIHByb3BlcnR5CiAgICAgIChz ZXRxIHJlZyAiXFwoXFw8cHJvcGVydHlcXD5cXClcXHxcXChcXDxlbmRwcm9wZXJ0eVxcPlxcKSIg KSkKICAgICAoKGxvb2tpbmctYXQgdmVyaWxvZy11dm0tZW5kLXJlKQogICAgICA7OyAxMjogU2Vh cmNoIGJhY2sgZm9yIG1hdGNoaW5nIHNlcXVlbmNlCiAgICAgIChzZXRxIHJlZyAoY29uY2F0ICJc XCgiIHZlcmlsb2ctdXZtLWJlZ2luLXJlICJcXHwiIHZlcmlsb2ctdXZtLWVuZC1yZSAiXFwpIikp KQogICAgICgobG9va2luZy1hdCB2ZXJpbG9nLW92bS1lbmQtcmUpCiAgICAgIDs7IDEyOiBTZWFy Y2ggYmFjayBmb3IgbWF0Y2hpbmcgc2VxdWVuY2UKICAgICAgKHNldHEgcmVnIChjb25jYXQgIlxc KCIgdmVyaWxvZy1vdm0tYmVnaW4tcmUgIlxcfCIgdmVyaWxvZy1vdm0tZW5kLXJlICJcXCkiKSkp CiAgICAgKChsb29raW5nLWF0IHZlcmlsb2ctdm1tLWVuZC1yZSkKICAgICAgOzsgMTI6IFNlYXJj aCBiYWNrIGZvciBtYXRjaGluZyBzZXF1ZW5jZQogICAgICAoc2V0cSByZWcgKGNvbmNhdCAiXFwo IiB2ZXJpbG9nLXZtbS1iZWdpbi1yZSAiXFx8IiB2ZXJpbG9nLXZtbS1lbmQtcmUgIlxcKSIpKSkK ICAgICAoKGxvb2tpbmctYXQgIlxcPGVuZGludGVyZmFjZVxcPiIpCiAgICAgIDs7IDEyOiBTZWFy Y2ggYmFjayBmb3IgbWF0Y2hpbmcgaW50ZXJmYWNlCiAgICAgIChzZXRxIHJlZyAiXFwoXFw8aW50 ZXJmYWNlXFw+XFwpXFx8XFwoXFw8ZW5kaW50ZXJmYWNlXFw+XFwpIiApKQogICAgICgobG9va2lu Zy1hdCAiXFw8ZW5kc2VxdWVuY2VcXD4iKQogICAgICA7OyAxMjogU2VhcmNoIGJhY2sgZm9yIG1h dGNoaW5nIHNlcXVlbmNlCiAgICAgIChzZXRxIHJlZyAiXFwoXFw8XFwocmFuZFxcKT9zZXF1ZW5j ZVxcPlxcKVxcfFxcKFxcPGVuZHNlcXVlbmNlXFw+XFwpIiApKQogICAgICgobG9va2luZy1hdCAi XFw8ZW5kY2xvY2tpbmdcXD4iKQogICAgICA7OyAxMjogU2VhcmNoIGJhY2sgZm9yIG1hdGNoaW5n IGNsb2NraW5nCiAgICAgIChzZXRxIHJlZyAiXFwoXFw8Y2xvY2tpbmdcXClcXHxcXChcXDxlbmRj bG9ja2luZ1xcPlxcKSIgKSkpCiAgICAoaWYgcmVnCgkoY2F0Y2ggJ3NraXAKCSAgKGlmIChlcSBu ZXN0aW5nICd5ZXMpCgkgICAgICAobGV0IChzcmVnKQoJCSh3aGlsZSAodmVyaWxvZy1yZS1zZWFy Y2gtYmFja3dhcmQgcmVnIG5pbCAnbW92ZSkKCQkgIChjb25kCgkJICAgKChtYXRjaC1lbmQgMSkg OyBiZWdpbgoJCSAgICAoaWYgKGxvb2tpbmctYXQgImZvcmsiKQoJCQkobGV0ICgoaGVyZSAocG9p bnQpKSkKCQkJICAodmVyaWxvZy1iZWctb2Ytc3RhdGVtZW50KQoJCQkgICh1bmxlc3MgKGxvb2tp bmctYXQgdmVyaWxvZy1kaXNhYmxlLWZvcmstcmUpCgkJCSAgICAoZ290by1jaGFyIGhlcmUpCgkJ CSAgICAoc2V0cSBuZXN0ICgxLSBuZXN0KSkpKQoJCSAgICAgIChzZXRxIG5lc3QgKDEtIG5lc3Qp KSkKCQkgICAgKGlmICg9IDAgbmVzdCkKCQkJOzsgTm93IHByZXZpb3VzIGxpbmUgZGVzY3JpYmVz IHN5bnRheAoJCQkodGhyb3cgJ3NraXAgMSkpCgkJICAgIChpZiAoYW5kIHNuZXN0CgkJCSAgICAg KD0gc25lc3QgbmVzdCkpCgkJCShzZXRxIHJlZyBzcmVnKSkpCgkJICAgKChtYXRjaC1lbmQgMikg OyBlbmQKCQkgICAgKHNldHEgbmVzdCAoMSsgbmVzdCkpKQoJCSAgICgobWF0Y2gtZW5kIDMpCgkJ ICAgIDs7IGVuZGNhc2UsIGp1bXAgdG8gY2FzZQoJCSAgICAoc2V0cSBzbmVzdCBuZXN0KQoJCSAg ICAoc2V0cSBuZXN0ICgxKyBuZXN0KSkKCQkgICAgKHNldHEgc3JlZyByZWcpCgkJICAgIChzZXRx IHJlZyAiXFwoXFw8cmFuZGNhc2VcXD5cXHxcXDxjYXNlW3h6XT9cXD5bXjpdXFwpXFx8XFwoXFw8 ZW5kY2FzZVxcPlxcKSIgKSkKCQkgICAoKG1hdGNoLWVuZCA0KQoJCSAgICA7OyBqb2luLCBqdW1w IHRvIGZvcmsKCQkgICAgKHNldHEgc25lc3QgbmVzdCkKCQkgICAgKHNldHEgbmVzdCAoMSsgbmVz dCkpCgkJICAgIChzZXRxIHNyZWcgcmVnKQoJCSAgICAoc2V0cSByZWcgIlxcKFxcPGZvcmtcXD5c XClcXHxcXChcXDxqb2luXFwoX2FueVxcfF9ub25lXFwpP1xcPlxcKSIgKSkKCQkgICApKSkKCSAg ICA7OyBubyBuZXN0aW5nCgkgICAgKGlmIChhbmQKCQkgKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3 YXJkIHJlZyBuaWwgJ21vdmUpCgkJIChtYXRjaC1lbmQgMSkpIDsgdGFzayAtPiBjb3VsZCBiZSB2 aXJ0dWFsIGFuZC9vciBwcm90ZWN0ZWQKCQkocHJvZ24KCQkgICh2ZXJpbG9nLWJlZy1vZi1zdGF0 ZW1lbnQpCgkJICAodGhyb3cgJ3NraXAgMSkpCgkgICAgICAodGhyb3cgJ3NraXAgMSkpKSkpKSkK CihkZWZ1biB2ZXJpbG9nLWNvbnRpbnVlZC1saW5lICgpCiAgIlJldHVybiB0cnVlIGlmIHRoaXMg aXMgYSBjb250aW51ZWQgbGluZS4KU2V0IHBvaW50IHRvIHdoZXJlIGxpbmUgc3RhcnRzLiIKICAo bGV0ICgoY29udGludWVkICd0KSkKICAgIChpZiAoZXEgMCAoZm9yd2FyZC1saW5lIC0xKSkKCShw cm9nbgoJICAoZW5kLW9mLWxpbmUpCgkgICh2ZXJpbG9nLWJhY2t3YXJkLXdzJmRpcmVjdGl2ZXMp CgkgIChpZiAoYm9icCkKCSAgICAgIChzZXRxIGNvbnRpbnVlZCBuaWwpCgkgICAgKHdoaWxlIChh bmQgY29udGludWVkCgkJCShzYXZlLWV4Y3Vyc2lvbgoJCQkgIChza2lwLWNoYXJzLWJhY2t3YXJk ICIgXHQiKQoJCQkgIChub3QgKGJvbHApKSkpCiAgICAgICAgICAgICAgKHNldHEgY29udGludWVk ICh2ZXJpbG9nLWJhY2t3YXJkLXRva2VuKSkpKSkKICAgICAgKHNldHEgY29udGludWVkIG5pbCkp CiAgICBjb250aW51ZWQpKQoKKGRlZnVuIHZlcmlsb2ctYmFja3dhcmQtdG9rZW4gKCkKICAiU3Rl cCBiYWNrd2FyZCB0b2tlbiwgcmV0dXJuaW5nIHRydWUgaWYgdGhpcyBpcyBhIGNvbnRpbnVlZCBs aW5lLiIKICAoaW50ZXJhY3RpdmUpCiAgKHZlcmlsb2ctYmFja3dhcmQtc3ludGFjdGljLXdzKQog IChjb25kCiAgICgoYm9scCkKICAgIG5pbCkKICAgKDstLSBBbnl0aGluZyBlbmRpbmcgaW4gYSA7 IGlzIGNvbXBsZXRlCiAgICAoPSAocHJlY2VkaW5nLWNoYXIpID9cOykKICAgIG5pbCkKICAgKDsg IElmIGEgIn0iIGlzIHByZWZpeGVkIGJ5IGEgIjsiLCB0aGVuIHRoaXMgaXMgYSBjb21wbGV0ZSBz dGF0ZW1lbnQKICAgIDs7IGkuZS46IGNvbnN0cmFpbnQgZm9vIHsgYSA9IGI7IH0KICAgICg9IChw cmVjZWRpbmctY2hhcikgP1x9KQogICAgKHByb2duCiAgICAgIChiYWNrd2FyZC1jaGFyKQogICAg ICAobm90KHZlcmlsb2ctYXQtY2xvc2UtY29uc3RyYWludC1wKSkpKQogICAoOy0tIGNvbnN0cmFp bnQgZm9vIHsgYSA9IGIgfQogICAgOzsgIGlzIGEgY29tcGxldGUgc3RhdGVtZW50LiAqc2lnaCoK ICAgICg9IChwcmVjZWRpbmctY2hhcikgP1x7KQogICAgKHByb2duCiAgICAgIChiYWNrd2FyZC1j aGFyKQogICAgICAobm90ICh2ZXJpbG9nLWF0LWNvbnN0cmFpbnQtcCkpKSkKICAgKDsiIHN0cmlu ZyAiCiAgICAoPSAocHJlY2VkaW5nLWNoYXIpID9cIikKICAgIChiYWNrd2FyZC1jaGFyKQogICAg KHZlcmlsb2ctc2tpcC1iYWNrd2FyZC1jb21tZW50LW9yLXN0cmluZykKICAgIG5pbCkKCiAgICg7 IFszOjRdCiAgICAoPSAocHJlY2VkaW5nLWNoYXIpID9cXSkKICAgIChiYWNrd2FyZC1jaGFyKQog ICAgKHZlcmlsb2ctYmFja3dhcmQtb3Blbi1icmFja2V0KQogICAgdCkKCiAgICg7LS0gQ291bGQg YmUgJ2Nhc2UgKGZvbyknIG9yICdhbHdheXMgQChiYXIpJyB3aGljaCBpcyBjb21wbGV0ZQogICAg OzsgIGFsc28gY291bGQgYmUgc2ltcGx5ICdAKGZvbyknCiAgICA7OyAgb3IgZm9vIHUxICMoYT04 KQogICAgOzsgICAgICAgICAgIChiLCAuLi4gd2hpY2ggSVNOJ1QgY29tcGxldGUKICAgIDs7IERv IHdlIG5lZWQgdGhpcz8/PwogICAgKD0gKHByZWNlZGluZy1jaGFyKSA/XCkpCiAgICAocHJvZ24K ICAgICAgKGJhY2t3YXJkLWNoYXIpCiAgICAgICh2ZXJpbG9nLWJhY2t3YXJkLXVwLWxpc3QgMSkK ICAgICAgKHZlcmlsb2ctYmFja3dhcmQtc3ludGFjdGljLXdzKQogICAgICAobGV0ICgoYmFjayAo cG9pbnQpKSkKCShmb3J3YXJkLXdvcmQtc3RyaWN0bHkgLTEpCgkoY29uZAoJIDs7WFgKCSAoKGxv b2tpbmctYXQgIlxcPFxcKGFsd2F5c1xcKF9sYXRjaFxcfF9mZlxcfF9jb21iXFwpP1xcfGNhc2Vc XChcXHxbeHpdXFwpXFx8Zm9yXFwoXFx8ZWFjaFxcfGV2ZXJcXClcXHxpXFwoZlxcfG5pdGlhbFxc KVxcfHJlcGVhdFxcfHdoaWxlXFwpXFw+IikKCSAgKG5vdCAobG9va2luZy1hdCAiXFw8cmFuZGNh c2VcXD5cXHxcXDxjYXNlW3h6XT9cXD5bXjpdIikpKQoJICgobG9va2luZy1hdCB2ZXJpbG9nLXV2 bS1zdGF0ZW1lbnQtcmUpCgkgIG5pbCkKCSAoKGxvb2tpbmctYXQgdmVyaWxvZy11dm0tYmVnaW4t cmUpCgkgIHQpCgkgKChsb29raW5nLWF0IHZlcmlsb2ctdXZtLWVuZC1yZSkKCSAgdCkKCSAoKGxv b2tpbmctYXQgdmVyaWxvZy1vdm0tc3RhdGVtZW50LXJlKQoJICBuaWwpCgkgKChsb29raW5nLWF0 IHZlcmlsb2ctb3ZtLWJlZ2luLXJlKQoJICB0KQoJICgobG9va2luZy1hdCB2ZXJpbG9nLW92bS1l bmQtcmUpCgkgIHQpCiAgICAgICAgIDs7IEpCQSBmaW5kIFZNTSBtYWNyb3MKICAgICAgICAgKChs b29raW5nLWF0IHZlcmlsb2ctdm1tLXN0YXRlbWVudC1yZSkKICAgICAgICAgIG5pbCApCiAgICAg ICAgICgobG9va2luZy1hdCB2ZXJpbG9nLXZtbS1iZWdpbi1yZSkKICAgICAgICAgIHQpCiAgICAg ICAgICgobG9va2luZy1hdCB2ZXJpbG9nLXZtbS1lbmQtcmUpCiAgICAgICAgICBuaWwpCiAgICAg ICAgIDs7IEpCQSB0cnlpbmcgdG8gY2F0Y2ggbWFjcm8gbGluZXMgd2l0aCBubyA7IGF0IGVuZAog ICAgICAgICAoKGxvb2tpbmctYXQgIlxcPGAiKQogICAgICAgICAgbmlsKQoJICh0CgkgIChnb3Rv LWNoYXIgYmFjaykKCSAgKGNvbmQKCSAgICgoPSAocHJlY2VkaW5nLWNoYXIpID9cQCkKCSAgICAo YmFja3dhcmQtY2hhcikKCSAgICAoc2F2ZS1leGN1cnNpb24KCSAgICAgICh2ZXJpbG9nLWJhY2t3 YXJkLXRva2VuKQoJICAgICAgKG5vdCAobG9va2luZy1hdCAiXFw8XFwoYWx3YXlzXFwoX2xhdGNo XFx8X2ZmXFx8X2NvbWJcXCk/XFx8aW5pdGlhbFxcfHdoaWxlXFwpXFw+IikpKSkKCSAgICgoPSAo cHJlY2VkaW5nLWNoYXIpID9cIykKCSAgICAoYmFja3dhcmQtY2hhcikpCgkgICAodCB0KSkpKSkp KQoKICAgKDstLSBhbnkgb2YgYmVnaW58aW5pdGlhbHx3aGlsZSBhcmUgY29tcGxldGUgc3RhdGVt ZW50czsgJ2JlZ2luIDogZm9vJyBpcyBhbHNvIGNvbXBsZXRlCiAgICB0CiAgICAoZm9yd2FyZC13 b3JkLXN0cmljdGx5IC0xKQogICAgKHdoaWxlIChvciAoPSAocHJlY2VkaW5nLWNoYXIpID9cXykK ICAgICAgICAgICAgICAgKD0gKHByZWNlZGluZy1jaGFyKSA/XEApCiAgICAgICAgICAgICAgICg9 IChwcmVjZWRpbmctY2hhcikgP1wuKSkKICAgICAgKGZvcndhcmQtd29yZC1zdHJpY3RseSAtMSkp CiAgICAoY29uZAogICAgICgobG9va2luZy1hdCAiXFw8ZWxzZVxcPiIpCiAgICAgIHQpCiAgICAg KChsb29raW5nLWF0IHZlcmlsb2ctYmVoYXZpb3JhbC1ibG9jay1iZWctcmUpCiAgICAgIHQpCiAg ICAgKChsb29raW5nLWF0IHZlcmlsb2ctaW5kZW50LXJlKQogICAgICBuaWwpCiAgICAgKHQKICAg ICAgKGxldAoJICAoKGJhY2sgKHBvaW50KSkpCgkodmVyaWxvZy1iYWNrd2FyZC1zeW50YWN0aWMt d3MpCgkoY29uZAoJICgoPSAocHJlY2VkaW5nLWNoYXIpID9cOikKCSAgKGJhY2t3YXJkLWNoYXIp CgkgICh2ZXJpbG9nLWJhY2t3YXJkLXN5bnRhY3RpYy13cykKCSAgKGJhY2t3YXJkLXNleHApCgkg IChpZiAobG9va2luZy1hdCB2ZXJpbG9nLW5hbWVhYmxlLWl0ZW0tcmUgKQoJICAgICAgbmlsCgkg ICAgdCkpCgkgKCg9IChwcmVjZWRpbmctY2hhcikgP1wjKQoJICAoYmFja3dhcmQtY2hhcikKCSAg dCkKCSAoKD0gKHByZWNlZGluZy1jaGFyKSA/XGApCgkgIChiYWNrd2FyZC1jaGFyKQoJICB0KQoK CSAodAoJICAoZ290by1jaGFyIGJhY2spCgkgIHQpKSkpKSkpKQoKKGRlZnVuIHZlcmlsb2ctYmFj a3dhcmQtc3ludGFjdGljLXdzICgpCiAgIk1vdmUgYmFja3dhcmRzIHB1dHRpbmcgcG9pbnQgYWZ0 ZXIgZmlyc3Qgbm9uLXdoaXRlc3BhY2Ugbm9uLWNvbW1lbnQuIgogICh2ZXJpbG9nLXNraXAtYmFj a3dhcmQtY29tbWVudHMpCiAgKGZvcndhcmQtY29tbWVudCAoLSAoYnVmZmVyLXNpemUpKSkpCgoo ZGVmdW4gdmVyaWxvZy1iYWNrd2FyZC1zeW50YWN0aWMtd3MtcXVpY2sgKCkKICAiQXMgd2l0aCBg dmVyaWxvZy1iYWNrd2FyZC1zeW50YWN0aWMtd3MnIGJ1dCB1c2UgYHZlcmlsb2ctc2NhbicgY2Fj aGUuIgogICh3aGlsZSAoY29uZCAoKGJvYnApCiAgICAgICAgICAgICAgICBuaWwpIDsgRG9uZQog ICAgICAgICAgICAgICAoKDwgKHNraXAtc3ludGF4LWJhY2t3YXJkICIgIikgMCkKICAgICAgICAg ICAgICAgIHQpCiAgICAgICAgICAgICAgICgoZXEgKHByZWNlZGluZy1jaGFyKSA/XG4pICA7IFxu J3MgdGVybWluYXRlIC8vIHNvIGFyZW4ndCBzcGFjZSBzeW50YXgKICAgICAgICAgICAgICAgIChm b3J3YXJkLWNoYXIgLTEpCiAgICAgICAgICAgICAgICB0KQogICAgICAgICAgICAgICAoKG9yICh2 ZXJpbG9nLWluc2lkZS1jb21tZW50LW9yLXN0cmluZy1wICgxLSAocG9pbnQpKSkKICAgICAgICAg ICAgICAgICAgICAodmVyaWxvZy1pbnNpZGUtY29tbWVudC1vci1zdHJpbmctcCAocG9pbnQpKSkK ICAgICAgICAgICAgICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIlsvXCJdIiBuaWwgdCkgIDsgT25s eSB3YXkgYSBjb21tZW50IG9yIHF1b3RlIGNhbiBiZWdpbgogICAgICAgICAgICAgICAgdCkpKSkK CihkZWZ1biB2ZXJpbG9nLWZvcndhcmQtc3ludGFjdGljLXdzICgpCiAgKHZlcmlsb2ctc2tpcC1m b3J3YXJkLWNvbW1lbnQtcCkKICAoZm9yd2FyZC1jb21tZW50IChidWZmZXItc2l6ZSkpKQoKKGRl ZnVuIHZlcmlsb2ctYmFja3dhcmQtd3MmZGlyZWN0aXZlcyAoJm9wdGlvbmFsIGJvdW5kKQogICJC YWNrd2FyZCBza2lwIG92ZXIgc3ludGFjdGljIHdoaXRlc3BhY2UgYW5kIGNvbXBpbGVyIGRpcmVj dGl2ZXMgZm9yIEVtYWNzIDE5LgpPcHRpb25hbCBCT1VORCBsaW1pdHMgc2VhcmNoLiIKICAoc2F2 ZS1yZXN0cmljdGlvbgogICAgKGxldCogKChib3VuZCAob3IgYm91bmQgKHBvaW50LW1pbikpKQoJ ICAgKGhlcmUgYm91bmQpCgkgICAocCBuaWwpICkKICAgICAgKGlmICg8IGJvdW5kIChwb2ludCkp CgkgIChwcm9nbgoJICAgIChsZXQgKChzdGF0ZSAoc2F2ZS1leGN1cnNpb24gKHZlcmlsb2ctc3lu dGF4LXBwc3MpKSkpCgkgICAgICAoY29uZAogICAgICAgICAgICAgICAoKG50aCA3IHN0YXRlKSAg OyBpbiAvLyBjb21tZW50CgkJKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkICIvLyIgbmlsICdt b3ZlKQogICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIi8iKSkKICAgICAgICAg ICAgICAgKChudGggNCBzdGF0ZSkgIDsgaW4gLyogKi8gY29tbWVudAoJCSh2ZXJpbG9nLXJlLXNl YXJjaC1iYWNrd2FyZCAiL1xcKiIgbmlsICdtb3ZlKSkpKQoJICAgIChuYXJyb3ctdG8tcmVnaW9u IGJvdW5kIChwb2ludCkpCgkgICAgKHdoaWxlICgvPSBoZXJlIChwb2ludCkpCgkgICAgICAoc2V0 cSBoZXJlIChwb2ludCkpCgkgICAgICAodmVyaWxvZy1za2lwLWJhY2t3YXJkLWNvbW1lbnRzKQoJ ICAgICAgKHNldHEgcAoJCSAgICAoc2F2ZS1leGN1cnNpb24KCQkgICAgICAoYmVnaW5uaW5nLW9m LWxpbmUpCgkJICAgICAgOzsgZm9yIGFzIGxvbmcgYXMgd2UncmUgcmlnaHQgYWZ0ZXIgYSBjb250 aW51ZWQgbGluZSwga2VlcCBtb3ZpbmcgdXAKCQkgICAgICAod2hpbGUgKGFuZCAodmVyaWxvZy1s b29raW5nLWJhY2sgIlxcXFxbXG5cclxmXSIgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZvcndhcmQtbGluZSAtMSkpKQoJCSAgICAgIChjb25kCgkJICAgICAgICgoYW5k IHZlcmlsb2ctaGlnaGxpZ2h0LXRyYW5zbGF0ZS1vZmYKCQkJICAgICAodmVyaWxvZy13aXRoaW4t dHJhbnNsYXRlLW9mZikpCgkJCSh2ZXJpbG9nLWJhY2stdG8tc3RhcnQtdHJhbnNsYXRlLW9mZiAo cG9pbnQtbWluKSkpCgkJICAgICAgICgobG9va2luZy1hdCB2ZXJpbG9nLWRpcmVjdGl2ZS1yZS0x KQoJCQkocG9pbnQpKQoJCSAgICAgICAodAoJCQluaWwpKSkpCgkgICAgICAoaWYgcCAoZ290by1j aGFyIHApKSkpKSkpKQoKKGRlZnVuIHZlcmlsb2ctZm9yd2FyZC13cyZkaXJlY3RpdmVzICgmb3B0 aW9uYWwgYm91bmQpCiAgIkZvcndhcmQgc2tpcCBvdmVyIHN5bnRhY3RpYyB3aGl0ZXNwYWNlIGFu ZCBjb21waWxlciBkaXJlY3RpdmVzIGZvciBFbWFjcyAxOS4KT3B0aW9uYWwgQk9VTkQgbGltaXRz IHNlYXJjaC4iCiAgKHNhdmUtcmVzdHJpY3Rpb24KICAgIChsZXQqICgoYm91bmQgKG9yIGJvdW5k IChwb2ludC1tYXgpKSkKCSAgIChoZXJlIGJvdW5kKQoJICAganVtcCkKICAgICAgKGlmICg+IGJv dW5kIChwb2ludCkpCgkgIChwcm9nbgoJICAgIChsZXQgKChzdGF0ZSAoc2F2ZS1leGN1cnNpb24g KHZlcmlsb2ctc3ludGF4LXBwc3MpKSkpCgkgICAgICAoY29uZAogICAgICAgICAgICAgICAoKG50 aCA3IHN0YXRlKSAgOyBpbiAvLyBjb21tZW50CgkJKGVuZC1vZi1saW5lKQoJCShmb3J3YXJkLWNo YXIgMSkKCQkoc2tpcC1jaGFycy1mb3J3YXJkICIgXHRcblxmIikKCQkpCiAgICAgICAgICAgICAg ICgobnRoIDQgc3RhdGUpICA7IGluIC8qICovIGNvbW1lbnQKCQkodmVyaWxvZy1yZS1zZWFyY2gt Zm9yd2FyZCAiXFwqL1xccy0qIiBuaWwgJ21vdmUpKSkpCgkgICAgKG5hcnJvdy10by1yZWdpb24g KHBvaW50KSBib3VuZCkKCSAgICAod2hpbGUgKC89IGhlcmUgKHBvaW50KSkKCSAgICAgIChzZXRx IGhlcmUgKHBvaW50KQoJCSAgICBqdW1wIG5pbCkKCSAgICAgIChmb3J3YXJkLWNvbW1lbnQgKGJ1 ZmZlci1zaXplKSkKICAgICAgICAgICAgICAoYW5kIChsb29raW5nLWF0ICJcXHMtKihcXCouKlxc KilcXHMtKiIpICA7IEF0dHJpYnV0ZQoJCSAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkpCgkg ICAgICAoc2F2ZS1leGN1cnNpb24KCQkoYmVnaW5uaW5nLW9mLWxpbmUpCgkJKGlmIChsb29raW5n LWF0IHZlcmlsb2ctZGlyZWN0aXZlLXJlLTEpCgkJICAgIChzZXRxIGp1bXAgdCkpKQoJICAgICAg KGlmIGp1bXAKCQkgIChiZWdpbm5pbmctb2YtbGluZSAyKSkpKSkpKSkKCihkZWZ1biB2ZXJpbG9n LWluLWNvbW1lbnQtcCAoKQogICJSZXR1cm4gdHJ1ZSBpZiBpbiBhIHN0YXIgb3IgLy8gY29tbWVu dC4iCiAgKGxldCAoKHN0YXRlIChzYXZlLWV4Y3Vyc2lvbiAodmVyaWxvZy1zeW50YXgtcHBzcykp KSkKICAgIChvciAobnRoIDQgc3RhdGUpIChudGggNyBzdGF0ZSkpKSkKCihkZWZ1biB2ZXJpbG9n LWluLXN0YXItY29tbWVudC1wICgpCiAgIlJldHVybiB0cnVlIGlmIGluIGEgc3RhciBjb21tZW50 LiIKICAobGV0ICgoc3RhdGUgKHNhdmUtZXhjdXJzaW9uICh2ZXJpbG9nLXN5bnRheC1wcHNzKSkp KQogICAgKGFuZAogICAgIChudGggNCBzdGF0ZSkJCQk7IHQgaWYgaW4gYSBjb21tZW50IG9mIHN0 eWxlIGEgLy8gb3IgYiAvKiovCiAgICAgKG5vdAogICAgICAobnRoIDcgc3RhdGUpCQkJOyB0IGlm IGluIGEgY29tbWVudCBvZiBzdHlsZSBiIC8qKi8KICAgICAgKSkpKQoKKGRlZnVuIHZlcmlsb2ct aW4tc2xhc2gtY29tbWVudC1wICgpCiAgIlJldHVybiB0cnVlIGlmIGluIGEgc2xhc2ggY29tbWVu dC4iCiAgKGxldCAoKHN0YXRlIChzYXZlLWV4Y3Vyc2lvbiAodmVyaWxvZy1zeW50YXgtcHBzcykp KSkKICAgIChudGggNyBzdGF0ZSkpKQoKKGRlZnVuIHZlcmlsb2ctaW4tY29tbWVudC1vci1zdHJp bmctcCAoKQogICJSZXR1cm4gdHJ1ZSBpZiBpbiBhIHN0cmluZyBvciBjb21tZW50LiIKICAobGV0 ICgoc3RhdGUgKHNhdmUtZXhjdXJzaW9uICh2ZXJpbG9nLXN5bnRheC1wcHNzKSkpKQogICAgKG9y IChudGggMyBzdGF0ZSkgKG50aCA0IHN0YXRlKSAobnRoIDcgc3RhdGUpKSkpIDsgSW5zaWRlIHN0 cmluZyBvciBjb21tZW50KQoKKGRlZnVuIHZlcmlsb2ctaW4tYXR0cmlidXRlLXAgKCkKICAiUmV0 dXJuIHRydWUgaWYgcG9pbnQgaXMgaW4gYW4gYXR0cmlidXRlICgqIFtdIGF0dHJpYnV0ZSAqKS4i CiAgKHNhdmUtbWF0Y2gtZGF0YQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICh2ZXJpbG9nLXJl LXNlYXJjaC1iYWNrd2FyZCAiXFwoKFxcKlxcKVxcfFxcKFxcKilcXCkiIG5pbCAnbW92ZSkKICAg ICAgKGNvbmQKICAgICAgICgobWF0Y2gtZW5kIDEpCiAgICAgICAgKHByb2duIChnb3RvLWNoYXIg KG1hdGNoLWVuZCAxKSkKICAgICAgICAgICAgICAgKG5vdCAobG9va2luZy1hdCAiXFxzLSopIikp KQogICAgICAgIG5pbCkKICAgICAgICgobWF0Y2gtZW5kIDIpCiAgICAgICAgKHByb2duIChnb3Rv LWNoYXIgKG1hdGNoLWJlZ2lubmluZyAyKSkKICAgICAgICAgICAgICAgKG5vdCAobG9va2luZy1h dCAiKFxccy0qIikpKQogICAgICAgIG5pbCkKICAgICAgICh0IG5pbCkpKSkpCgooZGVmdW4gdmVy aWxvZy1pbi1wYXJhbWV0ZXItcCAoKQogICJSZXR1cm4gdHJ1ZSBpZiBwb2ludCBpcyBpbiBhIHBh cmFtZXRlciBhc3NpZ25tZW50ICMoIHAxPTEsIHAyPTUpLiIKICAoc2F2ZS1tYXRjaC1kYXRhCiAg ICAoc2F2ZS1leGN1cnNpb24KICAgICAgKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkICJcXCgj KFxcKVxcfFxcKClcXCkiIG5pbCAnbW92ZSkKICAgICAgKG51bWJlcnAgKG1hdGNoLWJlZ2lubmlu ZyAxKSkpKSkKCihkZWZ1biB2ZXJpbG9nLWluLWVzY2FwZWQtbmFtZS1wICgpCiAgIlJldHVybiB0 cnVlIGlmIGluIGFuIGVzY2FwZWQgbmFtZS4iCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoYmFja3dh cmQtY2hhcikKICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICJeIFx0XG5cZiIpCiAgICAoaWYgKGVx dWFsIChjaGFyLWFmdGVyIChwb2ludCkgKSA/XFwgKQogICAgICAgIHQKICAgICAgbmlsKSkpCgoo ZGVmdW4gdmVyaWxvZy1pbi1kaXJlY3RpdmUtcCAoKQogICJSZXR1cm4gdHJ1ZSBpZiBpbiBhIGRp cmVjdGl2ZS4iCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAo bG9va2luZy1hdCB2ZXJpbG9nLWRpcmVjdGl2ZS1yZS0xKSkpCgooZGVmdW4gdmVyaWxvZy1pbi1w YXJlbnRoZXNpcy1wICgpCiAgIlJldHVybiB0cnVlIGlmIGluIGEgKCApIGV4cHJlc3Npb24gKGJ1 dCBub3QgeyB9IG9yIFsgXSkuIgogIChzYXZlLW1hdGNoLWRhdGEKICAgIChzYXZlLWV4Y3Vyc2lv bgogICAgICAodmVyaWxvZy1yZS1zZWFyY2gtYmFja3dhcmQgIlxcKChcXClcXHxcXCgpXFwpIiBu aWwgJ21vdmUpCiAgICAgIChudW1iZXJwIChtYXRjaC1iZWdpbm5pbmcgMSkpKSkpCgooZGVmdW4g dmVyaWxvZy1pbi1wYXJlbiAoKQogICJSZXR1cm4gdHJ1ZSBpZiBpbiBhIHBhcmVudGhldGljYWwg ZXhwcmVzc2lvbi4KTWF5IGNhY2hlIHJlc3VsdCB1c2luZyBgdmVyaWxvZy1zeW50YXgtcHBzcycu IgogIChsZXQgKChzdGF0ZSAoc2F2ZS1leGN1cnNpb24gKHZlcmlsb2ctc3ludGF4LXBwc3MpKSkp CiAgICAoPiAobnRoIDAgc3RhdGUpIDAgKSkpCgooZGVmdW4gdmVyaWxvZy1pbi1wYXJlbi1jb3Vu dCAoKQogICJSZXR1cm4gcGFyZW4gZGVwdGgsIGZsb29yIHRvIDAuCk1heSBjYWNoZSByZXN1bHQg dXNpbmcgYHZlcmlsb2ctc3ludGF4LXBwc3MnLiIKICAobGV0ICgoc3RhdGUgKHNhdmUtZXhjdXJz aW9uICh2ZXJpbG9nLXN5bnRheC1wcHNzKSkpKQogICAgKGlmICg+IChudGggMCBzdGF0ZSkgMCkK ICAgICAgICAobnRoIDAgc3RhdGUpCiAgICAgIDAgKSkpCgooZGVmdW4gdmVyaWxvZy1pbi1wYXJl bi1xdWljayAoKQogICJSZXR1cm4gdHJ1ZSBpZiBpbiBhIHBhcmVudGhldGljYWwgZXhwcmVzc2lv bi4KQWx3YXlzIHN0YXJ0cyBmcm9tIGBwb2ludC1taW4nLCB0byBhbGxvdyBpbnNlcnRzIHdpdGgg aG9va3MgZGlzYWJsZWQuIgogIDs7IFRoZSAtcXVpY2sgcmVmZXJzIHRvIGl0cyB1c2UgYWxvbmdz aWRlIHRoZSBvdGhlciAtcXVpY2sgZnVuY3Rpb25zLAogIDs7IG5vdCB0aGF0IGl0J3MgbGlrZWx5 IHRvIGJlIGZhc3RlciB0aGFuIHZlcmlsb2ctaW4tcGFyZW4uCiAgKGxldCAoKHN0YXRlIChzYXZl LWV4Y3Vyc2lvbiAocGFyc2UtcGFydGlhbC1zZXhwIChwb2ludC1taW4pIChwb2ludCkpKSkpCiAg ICAoPiAobnRoIDAgc3RhdGUpIDAgKSkpCgooZGVmdW4gdmVyaWxvZy1pbi1zdHJ1Y3QtcCAoKQog ICJSZXR1cm4gdHJ1ZSBpZiBpbiBhIHN0cnVjdCBkZWNsYXJhdGlvbi4iCiAgKGludGVyYWN0aXZl KQogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGlmICh2ZXJpbG9nLWluLXBhcmVuKQogICAgICAgIChw cm9nbgogICAgICAgICAgKHZlcmlsb2ctYmFja3dhcmQtdXAtbGlzdCAxKQogICAgICAgICAgKHZl cmlsb2ctYXQtc3RydWN0LXApCiAgICAgICAgICApCiAgICAgIG5pbCkpKQoKKGRlZnVuIHZlcmls b2ctaW4tc3RydWN0LW5lc3RlZC1wICgpCiAgIlJldHVybiBuaWwgZm9yIG5vdCBpbiBzdHJ1Y3Qu ClJldHVybiAwIGZvciBpbiBub24tbmVzdGVkIHN0cnVjdC4KUmV0dXJuID4wIGZvciBuZXN0ZWQg c3RydWN0LiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoY29sKQogICAgKHNhdmUtZXhjdXJzaW9u CiAgICAgIChpZiAodmVyaWxvZy1pbi1wYXJlbikKICAgICAgICAgIChwcm9nbgogICAgICAgICAg ICAodmVyaWxvZy1iYWNrd2FyZC11cC1saXN0IDEpCiAgICAgICAgICAgIChzZXRxIGNvbCAodmVy aWxvZy1hdC1zdHJ1Y3QtbXYtcCkpCiAgICAgICAgICAgIChpZiBjb2wKICAgICAgICAgICAgICAg IChpZiAodmVyaWxvZy1pbi1zdHJ1Y3QtcCkgKGN1cnJlbnQtY29sdW1uKSAwKSkpCiAgICAgICAg bmlsKSkpKQoKKGRlZnVuIHZlcmlsb2ctaW4tY292ZXJhZ2UtcCAoKQogICJSZXR1cm4gdHJ1ZSBp ZiBpbiBhIGNvbnN0cmFpbnQgb3IgY292ZXJwb2ludCBleHByZXNzaW9uLiIKICAoaW50ZXJhY3Rp dmUpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoaWYgKHZlcmlsb2ctaW4tcGFyZW4pCiAgICAgICAg KHByb2duCiAgICAgICAgICAodmVyaWxvZy1iYWNrd2FyZC11cC1saXN0IDEpCiAgICAgICAgICAo dmVyaWxvZy1hdC1jb25zdHJhaW50LXApCiAgICAgICAgICApCiAgICAgIG5pbCkpKQoKKGRlZnVu IHZlcmlsb2ctYXQtY2xvc2UtY29uc3RyYWludC1wICgpCiAgIklmIGF0IHRoZSB9IHRoYXQgY2xv c2VzIGEgY29uc3RyYWludCBvciBjb3Zlcmdyb3VwLCByZXR1cm4gdHJ1ZS4iCiAgKGlmIChhbmQK ICAgICAgIChlcXVhbCAoY2hhci1hZnRlcikgP1x9KQogICAgICAgKHZlcmlsb2ctaW4tY292ZXJh Z2UtcCkpCgogICAgICAoc2F2ZS1leGN1cnNpb24KCSh2ZXJpbG9nLWJhY2t3YXJkLXdzJmRpcmVj dGl2ZXMpCgkoaWYgKG9yIChlcXVhbCAoY2hhci1iZWZvcmUpID9cOykKICAgICAgICAgICAgICAg IChlcXVhbCAoY2hhci1iZWZvcmUpID9cfSkgIDsgY2FuIGVuZCB3aXRoIGlubmVyIGNvbnN0cmFp bnQgeyB9IGJsb2NrIG9yIDsKICAgICAgICAgICAgICAgIChlcXVhbCAoY2hhci1iZWZvcmUpID9c eykpICA7IGVtcHR5IGNvbnN0cmFpbnQgYmxvY2sKCSAgICAocG9pbnQpCgkgIG5pbCkpKSkKCihk ZWZ1biB2ZXJpbG9nLWF0LWNvbnN0cmFpbnQtcCAoKQogICJJZiBhdCB0aGUgeyBvZiBhIGNvbnN0 cmFpbnQgb3IgY292ZXJwb2ludCBkZWZpbml0aW9uLCByZXR1cm4gdHJ1ZSwgbW92aW5nIHBvaW50 IHRvIGNvbnN0cmFpbnQuIgogIChpZiAoc2F2ZS1leGN1cnNpb24KCShsZXQgKChwIChwb2ludCkp KQogICAgICAgICAgKGFuZAogICAgICAgICAgIChlcXVhbCAoY2hhci1hZnRlcikgP1x7KQogICAg ICAgICAgIChub3QgKHZlcmlsb2ctYXQtc3RyZWFtaW5nLW9wLXApKQogICAgICAgICAgIChpZ25v cmUtZXJyb3JzIChmb3J3YXJkLWxpc3QpKQogICAgICAgICAgIChwcm9nbiAoYmFja3dhcmQtY2hh ciAxKQogICAgICAgICAgICAgICAgICAodmVyaWxvZy1iYWNrd2FyZC13cyZkaXJlY3RpdmVzKQog ICAgICAgICAgICAgICAgICAoYW5kCiAgICAgICAgICAgICAgICAgICAob3IgKGVxdWFsIChjaGFy LWJlZm9yZSkgP1x7KSAgOyBlbXB0eSBjYXNlCiAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFs IChjaGFyLWJlZm9yZSkgP1w7KQogICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAoY2hhci1i ZWZvcmUpID9cfSkpCiAgICAgICAgICAgICAgICAgICA7OyBza2lwIHdoYXQgbG9va3MgbGlrZSBi dXMgcmVwZXRpdGlvbiBvcGVyYXRvciB7I3sKICAgICAgICAgICAgICAgICAgIChub3QgKHN0cmlu Zy1tYXRjaCAiXntcXHMtKlswLTlhLXpBLVpfXStcXHMtKnsiIChidWZmZXItc3Vic3RyaW5nIHAg KHBvaW50KSkpKSkpKSkpCiAgICAgIChwcm9nbgogICAgICAgIChsZXQgKCAocHQgKHBvaW50KSkg KHBhc3MgMCkpCiAgICAgICAgICAodmVyaWxvZy1iYWNrd2FyZC13cyZkaXJlY3RpdmVzKQogICAg ICAgICAgKHZlcmlsb2ctYmFja3dhcmQtdG9rZW4pCiAgICAgICAgICAoaWYgKGxvb2tpbmctYXQg KGNvbmNhdCAiXFw8Y29uc3RyYWludFxcfGNvdmVycG9pbnRcXHxjcm9zc1xcfHdpdGhcXD5cXHwi IHZlcmlsb2ctaW4tY29uc3RyYWludC1yZSkpCiAgICAgICAgICAgICAgKHByb2duIChzZXRxIHBh c3MgMSkKICAgICAgICAgICAgICAgICAgICAgKGlmIChsb29raW5nLWF0ICJcXDx3aXRoXFw+IikK ICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAodmVyaWxvZy1iYWNrd2FyZC13cyZkaXJl Y3RpdmVzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGlu ZSkgIDsgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWZvcndhcmQt d3MmZGlyZWN0aXZlcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICkKICAgICAg ICAgICAgICAgICAgICAgICAodmVyaWxvZy1iZWctb2Ytc3RhdGVtZW50KQogICAgICAgICAgICAg ICAgICAgICAgICkpCiAgICAgICAgICAgIDs7IGlmIGZpcnN0IHdvcmQgdG9rZW4gbm90IGtleXdv cmQsIGl0IG1heWJlIHRoZSBpbnN0YW5jZSBuYW1lCiAgICAgICAgICAgIDs7ICAgY2hlY2sgbmV4 dCB3b3JkIHRva2VuCiAgICAgICAgICAgIChpZiAobG9va2luZy1hdCAiXFw8XFx3K1xcPlxcfFxc cy0qKFxccy0qXFxTLSsiKQogICAgICAgICAgICAgICAgKHByb2duICh2ZXJpbG9nLWJlZy1vZi1z dGF0ZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgICAgKGlmIChhbmQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChub3QgKHN0cmluZy1tYXRjaCB2ZXJpbG9nLW5hbWVkLWJsb2NrLXJlIChi dWZmZXItc3Vic3RyaW5nIHB0IChwb2ludCkpKSkgOzsgQWJvcnQgaWYgJ2JlZ2luJyBrZXl3b3Jk IGlzIGZvdW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9va2luZy1hdCAoY29uY2F0 ICJcXDxcXChjb25zdHJhaW50XFx8IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJcXCg/OlxcdytcXHMtKjpcXHMtKlxcKT9cXChjb3ZlcnBvaW50XFx8Y3Jv c3NcXCkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxc fHdpdGhcXClcXD5cXHwiIHZlcmlsb2ctaW4tY29uc3RyYWludC1yZSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2V0cSBwYXNzIDEpKSkpKQogICAgICAgICAgKGlmIChlcSBwYXNzIDAp CiAgICAgICAgICAgICAgKHByb2duIChnb3RvLWNoYXIgcHQpIG5pbCkgMSkpKQogICAgOzsgbm90 CiAgICBuaWwpKQoKKGRlZmNvbnN0IHZlcmlsb2ctc3RyZWFtaW5nLW9wLXJlCiAgOzsgUmVnZXhw IHRvIGRldGVjdCBTdHJlYW1pbmcgT3BlcmF0b3IgZXhwcmVzc2lvbnMKICAoY29uY2F0CiAgICJ7 IiAiXFxzLSoiCiAgICJcXCg8PFxcfD4+XFwpIiAiLioiCiAgICJ7IiAiLioiICJ9IiAiXFxzLSoi ICJ9IgogICApKQoKKGRlZnVuIHZlcmlsb2ctYXQtc3RyZWFtaW5nLW9wLXAgKCkKICAiSWYgYXQg dGhlIHsgb2YgYSBzdHJlYW1pbmcgb3BlcmF0b3IsIHJldHVybiB0LiIKICAobG9va2luZy1hdCB2 ZXJpbG9nLXN0cmVhbWluZy1vcC1yZSkpCgooZGVmdW4gdmVyaWxvZy1hdC1zdHJ1Y3QtcCAoKQog ICJJZiBhdCB0aGUgeyBvZiBhIHN0cnVjdCwgcmV0dXJuIHRydWUsIG5vdCBtb3ZpbmcgcG9pbnQu IgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGlmIChhbmQgKGVxdWFsIChjaGFyLWFmdGVyKSA/XHsp CiAgICAgICAgICAgICAodmVyaWxvZy1iYWNrd2FyZC10b2tlbikpCiAgICAgICAgKGxvb2tpbmct YXQgIlxcPHN0cnVjdFxcfHVuaW9uXFx8cGFja2VkXFx8XFwodW5cXCk/c2lnbmVkXFw+IikKICAg ICAgbmlsKSkpCgooZGVmdW4gdmVyaWxvZy1hdC1zdHJ1Y3QtbXYtcCAoKQogICJJZiBhdCB0aGUg eyBvZiBhIHN0cnVjdCwgcmV0dXJuIHRydWUsIG1vdmluZyBwb2ludCB0byBzdHJ1Y3QuIgogIChs ZXQgKChwdCAocG9pbnQpKSkKICAgIChpZiAoYW5kIChlcXVhbCAoY2hhci1hZnRlcikgP1x7KQog ICAgICAgICAgICAgKHZlcmlsb2ctYmFja3dhcmQtdG9rZW4pKQogICAgICAgIChpZiAobG9va2lu Zy1hdCAiXFw8c3RydWN0XFx8dW5pb25cXHxwYWNrZWRcXHxcXCh1blxcKT9zaWduZWRcXD4iKQog ICAgICAgICAgICAocHJvZ24gKHZlcmlsb2ctYmVnLW9mLXN0YXRlbWVudCkgKHBvaW50KSkKICAg ICAgICAgIChwcm9nbiAoZ290by1jaGFyIHB0KSBuaWwpKQogICAgICAocHJvZ24gKGdvdG8tY2hh ciBwdCkgbmlsKSkpKQoKKGRlZnVuIHZlcmlsb2ctYXQtY2xvc2Utc3RydWN0LXAgKCkKICAiSWYg YXQgdGhlIH0gdGhhdCBjbG9zZXMgYSBzdHJ1Y3QsIHJldHVybiB0cnVlLiIKICAoaWYgKGFuZAog ICAgICAgKGVxdWFsIChjaGFyLWFmdGVyKSA/XH0pCiAgICAgICAodmVyaWxvZy1pbi1zdHJ1Y3Qt cCkpCiAgICAgIDs7IHRydWUKICAgICAgKHNhdmUtZXhjdXJzaW9uCgkoaWYgKGxvb2tpbmctYXQg In1cXCg/Olxccy0qXFx3K1xccy0qXFwpPzsiKSAxKSkKICAgIDs7IGZhbHNlCiAgICBuaWwpKQoK KGRlZnVuIHZlcmlsb2ctcGFyZW50aGVzaXMtZGVwdGggKCkKICAiUmV0dXJuIG5vbiB6ZXJvIGlm IGluIHBhcmVudGhldGljYWwtZXhwcmVzc2lvbi4iCiAgKHNhdmUtZXhjdXJzaW9uIChudGggMSAo dmVyaWxvZy1zeW50YXgtcHBzcykpKSkKCgooZGVmdW4gdmVyaWxvZy1za2lwLWZvcndhcmQtY29t bWVudC1vci1zdHJpbmcgKCkKICAiUmV0dXJuIHRydWUgaWYgaW4gYSBzdHJpbmcgb3IgY29tbWVu dC4iCiAgKGxldCAoKHN0YXRlIChzYXZlLWV4Y3Vyc2lvbiAodmVyaWxvZy1zeW50YXgtcHBzcykp KSkKICAgIChjb25kCiAgICAgKChudGggMyBzdGF0ZSkJCQk7SW5zaWRlIHN0cmluZwogICAgICAo c2VhcmNoLWZvcndhcmQgIlwiIikKICAgICAgdCkKICAgICAoKG50aCA3IHN0YXRlKQkJCTtJbnNp ZGUgLy8gY29tbWVudAogICAgICAoZm9yd2FyZC1saW5lIDEpCiAgICAgIHQpCiAgICAgKChudGgg NCBzdGF0ZSkJCQk7SW5zaWRlIGFueSBjb21tZW50IChoZW5jZSAvKiovKQogICAgICAoc2VhcmNo LWZvcndhcmQgIiovIikpCiAgICAgKHQKICAgICAgbmlsKSkpKQoKKGRlZnVuIHZlcmlsb2ctc2tp cC1iYWNrd2FyZC1jb21tZW50LW9yLXN0cmluZyAoKQogICJSZXR1cm4gdHJ1ZSBpZiBpbiBhIHN0 cmluZyBvciBjb21tZW50LiIKICAobGV0ICgoc3RhdGUgKHNhdmUtZXhjdXJzaW9uICh2ZXJpbG9n LXN5bnRheC1wcHNzKSkpKQogICAgKGNvbmQKICAgICAoKG50aCAzIHN0YXRlKQkJCTtJbnNpZGUg c3RyaW5nCiAgICAgIChzZWFyY2gtYmFja3dhcmQgIlwiIikKICAgICAgdCkKICAgICAoKG50aCA3 IHN0YXRlKQkJCTtJbnNpZGUgLy8gY29tbWVudAogICAgICAoc2VhcmNoLWJhY2t3YXJkICIvLyIp CiAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIvIikKICAgICAgdCkKICAgICAoKG50aCA0IHN0 YXRlKQkJCTtJbnNpZGUgLyogKi8gY29tbWVudAogICAgICAoc2VhcmNoLWJhY2t3YXJkICIvKiIp CiAgICAgIHQpCiAgICAgKHQKICAgICAgbmlsKSkpKQoKKGRlZnVuIHZlcmlsb2ctc2tpcC1iYWNr d2FyZC1jb21tZW50cyAoKQogICJSZXR1cm4gdHJ1ZSBpZiBhIGNvbW1lbnQgd2FzIHNraXBwZWQu IgogIChsZXQgKChtb3JlIHQpKQogICAgKHdoaWxlIG1vcmUKICAgICAgKHNldHEgbW9yZQogICAg ICAgICAgICAobGV0ICgoc3RhdGUgKHNhdmUtZXhjdXJzaW9uICh2ZXJpbG9nLXN5bnRheC1wcHNz KSkpKQogICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICgobnRoIDcgc3RhdGUpCQkJ O0luc2lkZSAvLyBjb21tZW50CiAgICAgICAgICAgICAgICAoc2VhcmNoLWJhY2t3YXJkICIvLyIp CiAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiLyIpCiAgICAgICAgICAgICAg ICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0XG5cZiIpCiAgICAgICAgICAgICAgICB0KQogICAg ICAgICAgICAgICAoKG50aCA0IHN0YXRlKQkJCTtJbnNpZGUgLyogKi8gY29tbWVudAogICAgICAg ICAgICAgICAgKHNlYXJjaC1iYWNrd2FyZCAiLyoiKQogICAgICAgICAgICAgICAgKHNraXAtY2hh cnMtYmFja3dhcmQgIiBcdFxuXGYiKQogICAgICAgICAgICAgICAgdCkKICAgICAgICAgICAgICAg KChhbmQgKG5vdCAoYm9icCkpCiAgICAgICAgICAgICAgICAgICAgICg9IChjaGFyLWJlZm9yZSkg P1wvKQogICAgICAgICAgICAgICAgICAgICAoPSAoY2hhci1iZWZvcmUgKDEtIChwb2ludCkpKSA/ XCopKQogICAgICAgICAgICAgICAgKGdvdG8tY2hhciAoLSAocG9pbnQpIDIpKQogICAgICAgICAg ICAgICAgdCkgIDsgTGV0IG50aCA0IHN0YXRlIGhhbmRsZSB0aGUgcmVzdAogICAgICAgICAgICAg ICAoKGFuZCAobm90IChib2JwKSkKICAgICAgICAgICAgICAgICAgICAgOzsodmVyaWxvZy1sb29r aW5nLWJhY2sgIlxcKikiIG5pbCkgOzsgc3VwZXIgc2xvdywgdXNlIHR3byBjaGFyLWJlZm9yZSBp bnN0ZWFkCiAgICAgICAgICAgICAgICAgICAgICg9IChjaGFyLWJlZm9yZSkgP1wpKQogICAgICAg ICAgICAgICAgICAgICAoPSAoY2hhci1iZWZvcmUgKDEtIChwb2ludCkpKSA/XCopCiAgICAgICAg ICAgICAgICAgICAgIChub3QgKHZlcmlsb2ctbG9va2luZy1iYWNrICIoXFxzLSpcXCopIiBuaWwp KSkgOzsgc2xvdyBidXQgdW5saWtlbHkgdG8gYmUgY2FsbGVkCiAgICAgICAgICAgICAgICAoZ290 by1jaGFyICgtIChwb2ludCkgMikpCiAgICAgICAgICAgICAgICAoaWYgKHNlYXJjaC1iYWNrd2Fy ZCAiKCoiIG5pbCB0KQogICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAg ICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdFxuXGYiKQogICAgICAgICAgICAgICAgICAg ICAgdCkKICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgKGdvdG8t Y2hhciAoKyAocG9pbnQpIDIpKQogICAgICAgICAgICAgICAgICAgIG5pbCkpKQogICAgICAgICAg ICAgICAodAogICAgICAgICAgICAgICAgKC89IChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHRcblxm IikgMCkpKSkpKSkpCgooZGVmdW4gdmVyaWxvZy1za2lwLWZvcndhcmQtY29tbWVudC1wICgpCiAg IklmIGluIGNvbW1lbnQsIG1vdmUgdG8gZW5kIGFuZCByZXR1cm4gdHJ1ZS4iCiAgKGxldCogKGgK CSAoc3RhdGUgKHNhdmUtZXhjdXJzaW9uICh2ZXJpbG9nLXN5bnRheC1wcHNzKSkpCgkgKHNraXAg KGNvbmQKCQkoKG50aCAzIHN0YXRlKQkJO0luc2lkZSBzdHJpbmcKCQkgdCkKCQkoKG50aCA3IHN0 YXRlKQkJO0luc2lkZSAvLyBjb21tZW50CgkJIChlbmQtb2YtbGluZSkKCQkgKGZvcndhcmQtY2hh ciAxKQoJCSB0KQoJCSgobnRoIDQgc3RhdGUpCQk7SW5zaWRlIC8qIGNvbW1lbnQKCQkgKHNlYXJj aC1mb3J3YXJkICIqLyIpCgkJIHQpCgkJKCh2ZXJpbG9nLWluLWF0dHJpYnV0ZS1wKSAgO0luc2lk ZSAoKiBhdHRyaWJ1dGUKCQkgKHNlYXJjaC1mb3J3YXJkICIqKSIgbmlsIHQpCgkJIHQpCgkJKHQg bmlsKSkpKQogICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0XG5cZiIpCiAgICAod2hpbGUKICAg ICAgICAoY29uZAogICAgICAgICAoKGxvb2tpbmctYXQgIi9cXCoiKQogICAgICAgICAgKHByb2du CgkgICAgKHNldHEgaCAocG9pbnQpKQoJICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkKCSAg ICAoaWYgKHNlYXJjaC1mb3J3YXJkICIqLyIgbmlsIHQpCgkJKHByb2duCgkJICAoc2tpcC1jaGFy cy1mb3J3YXJkICIgXHRcblxmIikKCQkgIChzZXRxIHNraXAgJ3QpKQoJICAgICAgKHByb2duCgkJ KGdvdG8tY2hhciBoKQoJCW5pbCkpKSkKICAgICAgICAgKChhbmQgKGxvb2tpbmctYXQgIihcXCoi KSAgOyBhdHRyaWJ1dGUgc3RhcnQsIGJ1dCBub3QgYW4gZXZlbnQgKCopIG9yICgqICkKCSAgICAg ICAobm90IChsb29raW5nLWF0ICIoXFwqXFxzLSopIikpKQoJICAocHJvZ24KCSAgICAoc2V0cSBo IChwb2ludCkpCgkgICAgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDApKQoJICAgIChpZiAoc2VhcmNo LWZvcndhcmQgIiopIiBuaWwgdCkKCQkocHJvZ24KCQkgIChza2lwLWNoYXJzLWZvcndhcmQgIiBc dFxuXGYiKQoJCSAgKHNldHEgc2tpcCAndCkpCgkgICAgICAocHJvZ24KCQkoZ290by1jaGFyIGgp CgkJbmlsKSkpKQoJICh0IG5pbCkpKQogICAgc2tpcCkpCgooZGVmdW4gdmVyaWxvZy1pbmRlbnQt bGluZS1yZWxhdGl2ZSAoKQogICJDaGVhcCB2ZXJzaW9uIG9mIGluZGVudCBsaW5lLgpPbmx5IGxv b2sgYXQgYSBmZXcgbGluZXMgdG8gZGV0ZXJtaW5lIGluZGVudCBsZXZlbC4iCiAgKGludGVyYWN0 aXZlKQogIChsZXQgKChpbmRlbnQtc3RyKQoJKHNwIChwb2ludCkpKQogICAgKGlmIChsb29raW5n LWF0ICJeWyBcdF0qJCIpCgkoY29uZCAgOy0gQSBibGFuayBsaW5lOyBObyBuZWVkIHRvIGJlIHRv byBzbWFydC4KCSAoKGJvYnApCgkgIChzZXRxIGluZGVudC1zdHIgKGxpc3QgJ2NwcCAwKSkpCgkg KCh2ZXJpbG9nLWNvbnRpbnVlZC1saW5lKQoJICAobGV0ICgoc3AxIChwb2ludCkpKQoJICAgIChp ZiAodmVyaWxvZy1jb250aW51ZWQtbGluZSkKCQkocHJvZ24KCQkgIChnb3RvLWNoYXIgc3ApCgkJ ICAoc2V0cSBpbmRlbnQtc3RyCgkJCShsaXN0ICdzdGF0ZW1lbnQgKHZlcmlsb2ctY3VycmVudC1p bmRlbnQtbGV2ZWwpKSkpCgkgICAgICAoZ290by1jaGFyIHNwMSkKCSAgICAgIChzZXRxIGluZGVu dC1zdHIgKGxpc3QgJ2Jsb2NrICh2ZXJpbG9nLWN1cnJlbnQtaW5kZW50LWxldmVsKSkpKSkKCSAg KGdvdG8tY2hhciBzcCkpCgkgKChnb3RvLWNoYXIgc3ApCgkgIChzZXRxIGluZGVudC1zdHIgKHZl cmlsb2ctY2FsY3VsYXRlLWluZGVudCkpKSkKICAgICAgKHByb2duIChza2lwLWNoYXJzLWZvcndh cmQgIiBcdCIpCgkgICAgIChzZXRxIGluZGVudC1zdHIgKHZlcmlsb2ctY2FsY3VsYXRlLWluZGVu dCkpKSkKICAgICh2ZXJpbG9nLWRvLWluZGVudCBpbmRlbnQtc3RyKSkpCgooZGVmdW4gdmVyaWxv Zy1pbmRlbnQtbGluZSAoKQogICJJbmRlbnQgZm9yIHNwZWNpYWwgcGFydCBvZiBjb2RlLiIKICAo dmVyaWxvZy1kby1pbmRlbnQgKHZlcmlsb2ctY2FsY3VsYXRlLWluZGVudCkpKQoKKGRlZnVuIHZl cmlsb2ctZG8taW5kZW50IChpbmRlbnQtc3RyKQogIChsZXQgKCh0eXBlIChjYXIgaW5kZW50LXN0 cikpCgkoaW5kIChjYXIgKGNkciBpbmRlbnQtc3RyKSkpKQogICAgKGNvbmQKICAgICAoOyBoYW5k bGUgY29udGludWVkIGV4cAogICAgICAoZXEgdHlwZSAnY2V4cCkKICAgICAgKGxldCAoKGhlcmUg KHBvaW50KSkpCgkodmVyaWxvZy1iYWNrd2FyZC1zeW50YWN0aWMtd3MpCgkoY29uZAoJICgob3IK CSAgICg9IChwcmVjZWRpbmctY2hhcikgP1wsKQoJICAgKHNhdmUtZXhjdXJzaW9uCgkgICAgICh2 ZXJpbG9nLWJlZy1vZi1zdGF0ZW1lbnQtMSkKCSAgICAgKGxvb2tpbmctYXQgdmVyaWxvZy1kZWNs YXJhdGlvbi1yZSkpKQoJICAobGV0KiAoIGZzdAoJCSAgKHZhbAoJCSAgIChzYXZlLWV4Y3Vyc2lv bgoJCSAgICAgKGJhY2t3YXJkLWNoYXIgMSkKCQkgICAgICh2ZXJpbG9nLWJlZy1vZi1zdGF0ZW1l bnQtMSkKCQkgICAgIChzZXRxIGZzdCAocG9pbnQpKQoJCSAgICAgKGlmIChsb29raW5nLWF0IHZl cmlsb2ctZGVjbGFyYXRpb24tcmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24gIDsg d2UgaGF2ZSBtdWx0aXBsZSB3b3JkcwoJCQkgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCgkJ CSAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpCgkJCSAgIChjb25kCgkJCSAgICAoKGFuZCB2 ZXJpbG9nLWluZGVudC1kZWNsYXJhdGlvbi1tYWNyb3MKCQkJCSAgKD0gKGZvbGxvd2luZy1jaGFy KSA/XGApKQoJCQkgICAgIChwcm9nbgoJCQkgICAgICAgKGZvcndhcmQtY2hhciAxKQoJCQkgICAg ICAgKGZvcndhcmQtd29yZC1zdHJpY3RseSAxKQoJCQkgICAgICAgKHNraXAtY2hhcnMtZm9yd2Fy ZCAiIFx0IikpKQoJCQkgICAgKCg9IChmb2xsb3dpbmctY2hhcikgP1xbKQoJCQkgICAgIChwcm9n bgoJCQkgICAgICAgKGZvcndhcmQtY2hhciAxKQoJCQkgICAgICAgKHZlcmlsb2ctYmFja3dhcmQt dXAtbGlzdCAtMSkKCQkJICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpKSkpCgkJCSAg IChjdXJyZW50LWNvbHVtbikpCgkJICAgICAgIChwcm9nbgoJCQkgKGdvdG8tY2hhciBmc3QpCgkJ CSAoKyAoY3VycmVudC1jb2x1bW4pIHZlcmlsb2ctY2V4cC1pbmRlbnQpKSkpKSkKCSAgICAoZ290 by1jaGFyIGhlcmUpCgkgICAgKGluZGVudC1saW5lLXRvIHZhbCkKCSAgICAoaWYgKGFuZCAobm90 IHZlcmlsb2ctaW5kZW50LWxpc3RzKQoJCSAgICAgKHZlcmlsb2ctaW4tcGFyZW4pKQoJCSh2ZXJp bG9nLXByZXR0eS1kZWNsYXJhdGlvbnMtYXV0bykpCgkgICAgKSkKCSAoKD0gKHByZWNlZGluZy1j aGFyKSA/XCkgKQoJICAoZ290by1jaGFyIGhlcmUpCgkgIChsZXQgKCh2YWwgKGV2YWwgKGNkciAo YXNzb2MgdHlwZSB2ZXJpbG9nLWluZGVudC1hbGlzdCkpKSkpCgkgICAgKGluZGVudC1saW5lLXRv IHZhbCkpKQoJICh0CgkgIChnb3RvLWNoYXIgaGVyZSkKCSAgKGxldCAoKHZhbCkpCgkgICAgKHZl cmlsb2ctYmVnLW9mLXN0YXRlbWVudC0xKQoJICAgIChpZiAoYW5kICg8IChwb2ludCkgaGVyZSkK CQkgICAgICh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkICI9WyBcdF0qIiBoZXJlICdtb3ZlKQoJ CSAgICAgOzsgbm90IGF0IGEgfD0+LCAjPSMsIG9yIFs9bl0gb3BlcmF0b3IKCQkgICAgIChub3Qg KHN0cmluZy1tYXRjaCAiXFxbPS5cXHwjPSNcXHx8PT4iCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAob3IgKGJ1ZmZlci1zdWJzdHJpbmcgKC0gKHBvaW50KSAyKSAoMSsg KHBvaW50KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIp KSkpICA7IGRvbid0IGxldCBidWZmZXIgb3Zlci91bmRlci1ydW4gc3BvaWwgdGhlIHBhcnR5CgkJ KHNldHEgdmFsIChjdXJyZW50LWNvbHVtbikpCgkgICAgICAoc2V0cSB2YWwgKGV2YWwgKGNkciAo YXNzb2MgdHlwZSB2ZXJpbG9nLWluZGVudC1hbGlzdCkpKSkpCgkgICAgKGdvdG8tY2hhciBoZXJl KQoJICAgIChpbmRlbnQtbGluZS10byB2YWwpKSkpKSkKCiAgICAgKDsgaGFuZGxlIGluc2lkZSBw YXJlbnRoZXRpY2FsIGV4cHJlc3Npb25zCiAgICAgIChlcSB0eXBlICdjcGFyZW5leHApCiAgICAg IChsZXQqICggaGVyZQoJICAgICAgKHZhbCAoc2F2ZS1leGN1cnNpb24KCQkgICAgICh2ZXJpbG9n LWJhY2t3YXJkLXVwLWxpc3QgMSkKCQkgICAgIChmb3J3YXJkLWNoYXIgMSkKICAgICAgICAgICAg ICAgICAgICAgKGlmIHZlcmlsb2ctaW5kZW50LWxpc3RzCiAgICAgICAgICAgICAgICAgICAgICAg ICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKQogICAgICAgICAgICAgICAgICAgICAgICh2ZXJp bG9nLWZvcndhcmQtc3ludGFjdGljLXdzKSkKICAgICAgICAgICAgICAgICAgICAgKHNldHEgaGVy ZSAocG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkKCgkgICAg ICAoZGVjbCAoc2F2ZS1leGN1cnNpb24KCQkgICAgICAoZ290by1jaGFyIGhlcmUpCgkJICAgICAg KHZlcmlsb2ctZm9yd2FyZC1zeW50YWN0aWMtd3MpCgkJICAgICAgKHNldHEgaGVyZSAocG9pbnQp KQoJCSAgICAgIChsb29raW5nLWF0IHZlcmlsb2ctZGVjbGFyYXRpb24tcmUpKSkpCiAgICAgICAg KGluZGVudC1saW5lLXRvIHZhbCkKICAgICAgICAoaWYgZGVjbAogICAgICAgICAgICAodmVyaWxv Zy1wcmV0dHktZGVjbGFyYXRpb25zLWF1dG8pKSkpCgogICAgICg7LS0gSGFuZGxlIHRoZSBlbmRz CiAgICAgIChvcgogICAgICAgKGxvb2tpbmctYXQgdmVyaWxvZy1lbmQtYmxvY2stcmUpCiAgICAg ICAodmVyaWxvZy1hdC1jbG9zZS1jb25zdHJhaW50LXApCiAgICAgICAodmVyaWxvZy1hdC1jbG9z ZS1zdHJ1Y3QtcCkpCiAgICAgIChsZXQgKCh2YWwgKGlmIChlcSB0eXBlICdzdGF0ZW1lbnQpCgkJ ICAgICAoLSBpbmQgdmVyaWxvZy1pbmRlbnQtbGV2ZWwpCgkJICAgaW5kKSkpCgkoaW5kZW50LWxp bmUtdG8gdmFsKSkpCgogICAgICg7LS0gQ2FzZSAtLSBtYXliZSBsaW5lICdlbSB1cAogICAgICAo YW5kIChlcSB0eXBlICdjYXNlKSAobm90IChsb29raW5nLWF0ICJeWyBcdF0qJCIpKSkKICAgICAg KHByb2duCgkoY29uZAoJICgobG9va2luZy1hdCAiXFw8ZW5kY2FzZVxcPiIpCgkgIChpbmRlbnQt bGluZS10byBpbmQpKQoJICh0CgkgIChsZXQgKCh2YWwgKGV2YWwgKGNkciAoYXNzb2MgdHlwZSB2 ZXJpbG9nLWluZGVudC1hbGlzdCkpKSkpCgkgICAgKGluZGVudC1saW5lLXRvIHZhbCkpKSkpKQoK ICAgICAoOy0tIGRlZnVuCiAgICAgIChhbmQgKGVxIHR5cGUgJ2RlZnVuKQoJICAgKGxvb2tpbmct YXQgdmVyaWxvZy16ZXJvLWluZGVudC1yZSkpCiAgICAgIChpbmRlbnQtbGluZS10byAwKSkKCiAg ICAgKDstLSBkZWNsYXJhdGlvbgogICAgICAoYW5kIChvcgoJICAgIChlcSB0eXBlICdkZWZ1bikK CSAgICAoZXEgdHlwZSAnYmxvY2spKQoJICAgKGxvb2tpbmctYXQgdmVyaWxvZy1kZWNsYXJhdGlv bi1yZSkKICAgICAgICAgICA7OyBEbyBub3QgY29uc2lkZXIgInZpcnR1YWwgZnVuY3Rpb24iLCAi dmlydHVhbCB0YXNrIiwgInZpcnR1YWwgY2xhc3MiCiAgICAgICAgICAgOzsgYXMgZGVjbGFyYXRp b25zCiAgICAgICAgICAgKG5vdCAobG9va2luZy1hdCAoY29uY2F0IHZlcmlsb2ctZGVjbGFyYXRp b24tcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxccy0rXFwoZnVuY3Rp b25cXHx0YXNrXFx8Y2xhc3NcXClcXGIiKSkpKQogICAgICAodmVyaWxvZy1pbmRlbnQtZGVjbGFy YXRpb24gaW5kKSkKCiAgICAgKDstLSBmb3JtIGZlZWRzIC0gaWdub3JlZCBhcyBidWcgaW4gaW5k ZW50LWxpbmUtdG8gaW4gPCAyNC41CiAgICAgIChsb29raW5nLWF0ICJcZiIpKQoKICAgICAoOy0t IEV2ZXJ5dGhpbmcgZWxzZQogICAgICB0CiAgICAgIChsZXQgKCh2YWwgKGV2YWwgKGNkciAoYXNz b2MgdHlwZSB2ZXJpbG9nLWluZGVudC1hbGlzdCkpKSkpCgkoaW5kZW50LWxpbmUtdG8gdmFsKSkp KQoKICAgIChpZiAobG9va2luZy1hdCAiWyBcdF0rJCIpCgkoc2tpcC1jaGFycy1mb3J3YXJkICIg XHQiKSkKICAgIGluZGVudC1zdHIJCQkJOyBSZXR1cm4gaW5kZW50IGRhdGEKICAgICkpCgooZGVm dW4gdmVyaWxvZy1jdXJyZW50LWluZGVudC1sZXZlbCAoKQogICJSZXR1cm4gdGhlIGluZGVudC1s ZXZlbCBvZiB0aGUgY3VycmVudCBzdGF0ZW1lbnQuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGxl dCAocGFyLXBvcykKICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAoc2V0cSBwYXItcG9z ICh2ZXJpbG9nLXBhcmVudGhlc2lzLWRlcHRoKSkKICAgICAgKHdoaWxlIHBhci1wb3MKCShnb3Rv LWNoYXIgcGFyLXBvcykKCShiZWdpbm5pbmctb2YtbGluZSkKCShzZXRxIHBhci1wb3MgKHZlcmls b2ctcGFyZW50aGVzaXMtZGVwdGgpKSkKICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0IikK ICAgICAgKGN1cnJlbnQtY29sdW1uKSkpKQoKKGRlZnVuIHZlcmlsb2ctY2FzZS1pbmRlbnQtbGV2 ZWwgKCkKICAiUmV0dXJuIHRoZSBpbmRlbnQtbGV2ZWwgb2YgdGhlIGN1cnJlbnQgc3RhdGVtZW50 LgpEbyBub3QgY291bnQgbmFtZWQgYmxvY2tzIG9yIGNhc2Utc3RhdGVtZW50cy4iCiAgKHNhdmUt ZXhjdXJzaW9uCiAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKQogICAgKGNvbmQKICAgICAo KGxvb2tpbmctYXQgdmVyaWxvZy1uYW1lZC1ibG9jay1yZSkKICAgICAgKGN1cnJlbnQtY29sdW1u KSkKICAgICAoKGFuZCAobm90IChsb29raW5nLWF0IHZlcmlsb2ctZXh0ZW5kZWQtY2FzZS1yZSkp CgkgICAobG9va2luZy1hdCAiXlteOjtdKzoiKSkKICAgICAgKHZlcmlsb2ctcmUtc2VhcmNoLWZv cndhcmQgIjoiIG5pbCB0KQogICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKQogICAgICAo Y3VycmVudC1jb2x1bW4pKQogICAgICh0CiAgICAgIChjdXJyZW50LWNvbHVtbikpKSkpCgooZGVm dW4gdmVyaWxvZy1pbmRlbnQtY29tbWVudCAoKQogICJJbmRlbnQgY3VycmVudCBsaW5lIGFzIGNv bW1lbnQuIgogIChsZXQqICgoc3Rjb2wKCSAgKGNvbmQKCSAgICgodmVyaWxvZy1pbi1zdGFyLWNv bW1lbnQtcCkKCSAgICAoc2F2ZS1leGN1cnNpb24KCSAgICAgIChyZS1zZWFyY2gtYmFja3dhcmQg Ii9cXCoiIG5pbCB0KQoJICAgICAgKDErKGN1cnJlbnQtY29sdW1uKSkpKQoJICAgKGNvbW1lbnQt Y29sdW1uCiAgICAgICAgICAgIGNvbW1lbnQtY29sdW1uICkKCSAgICh0CgkgICAgKHNhdmUtZXhj dXJzaW9uCgkgICAgICAocmUtc2VhcmNoLWJhY2t3YXJkICIvLyIgbmlsIHQpCgkgICAgICAoY3Vy cmVudC1jb2x1bW4pKSkpKSkKICAgIChpbmRlbnQtbGluZS10byBzdGNvbCkKICAgIHN0Y29sKSkK CihkZWZ1biB2ZXJpbG9nLW1vcmUtY29tbWVudCAoKQogICJNYWtlIG1vcmUgY29tbWVudCBsaW5l cyBsaWtlIHRoZSBwcmV2aW91cy4iCiAgKGxldCogKChzdGFyIDApCgkgKHN0Y29sCgkgIChjb25k CgkgICAoKHZlcmlsb2ctaW4tc3Rhci1jb21tZW50LXApCgkgICAgKHNhdmUtZXhjdXJzaW9uCgkg ICAgICAoc2V0cSBzdGFyIDEpCgkgICAgICAocmUtc2VhcmNoLWJhY2t3YXJkICIvXFwqIiBuaWwg dCkKCSAgICAgICgxKyhjdXJyZW50LWNvbHVtbikpKSkKCSAgIChjb21tZW50LWNvbHVtbgoJICAg IGNvbW1lbnQtY29sdW1uICkKCSAgICh0CgkgICAgKHNhdmUtZXhjdXJzaW9uCgkgICAgICAocmUt c2VhcmNoLWJhY2t3YXJkICIvLyIgbmlsIHQpCgkgICAgICAoY3VycmVudC1jb2x1bW4pKSkpKSkK ICAgIChwcm9nbgogICAgICAoaW5kZW50LXRvIHN0Y29sKQogICAgICAoaWYgKGFuZCBzdGFyCgkg ICAgICAgKHNhdmUtZXhjdXJzaW9uCgkJIChmb3J3YXJkLWxpbmUgLTEpCgkJIChza2lwLWNoYXJz LWZvcndhcmQgIiBcdCIpCgkJIChsb29raW5nLWF0ICJcXCoiKSkpCgkgIChpbnNlcnQgIiogIikp KSkpCgooZGVmdW4gdmVyaWxvZy1jb21tZW50LWluZGVudCAoJm9wdGlvbmFsIF9hcmcpCiAgIlJl dHVybiB0aGUgY29sdW1uIG51bWJlciB0aGUgbGluZSBzaG91bGQgYmUgaW5kZW50ZWQgdG8uCl9B UkcgaXMgaWdub3JlZCwgZm9yIGBjb21tZW50LWluZGVudC1mdW5jdGlvbicgY29tcGF0aWJpbGl0 eS4iCiAgKGNvbmQKICAgKCh2ZXJpbG9nLWluLXN0YXItY29tbWVudC1wKQogICAgKHNhdmUtZXhj dXJzaW9uCiAgICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIi9cXCoiIG5pbCB0KQogICAgICAoMSso Y3VycmVudC1jb2x1bW4pKSkpCiAgICggY29tbWVudC1jb2x1bW4KICAgICBjb21tZW50LWNvbHVt biApCiAgICh0CiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKHJlLXNlYXJjaC1iYWNrd2FyZCAi Ly8iIG5pbCB0KQogICAgICAoY3VycmVudC1jb2x1bW4pKSkpKQoKOzsKCihkZWZ1biB2ZXJpbG9n LXByZXR0eS1kZWNsYXJhdGlvbnMtYXV0byAoJm9wdGlvbmFsIHF1aWV0KQogICJDYWxsIGB2ZXJp bG9nLXByZXR0eS1kZWNsYXJhdGlvbnMnIFFVSUVUIGJhc2VkIG9uIGB2ZXJpbG9nLWF1dG8tbGlu ZXVwJy4iCiAgKHdoZW4gKG9yIChlcSAnYWxsIHZlcmlsb2ctYXV0by1saW5ldXApCgkgICAgKGVx ICdkZWNsYXJhdGlvbnMgdmVyaWxvZy1hdXRvLWxpbmV1cCkpCiAgICAodmVyaWxvZy1wcmV0dHkt ZGVjbGFyYXRpb25zIHF1aWV0KSkpCgooZGVmdW4gdmVyaWxvZy1wcmV0dHktZGVjbGFyYXRpb25z ICgmb3B0aW9uYWwgcXVpZXQpCiAgIkxpbmUgdXAgZGVjbGFyYXRpb25zIGFyb3VuZCBwb2ludC4K QmUgdmVyYm9zZSBhYm91dCBwcm9ncmVzcyB1bmxlc3Mgb3B0aW9uYWwgUVVJRVQgc2V0LiIKICAo aW50ZXJhY3RpdmUpCiAgKGxldCogKChtMSAobWFrZS1tYXJrZXIpKQogICAgICAgICAoZSAocG9p bnQpKQoJIGVsCiAgICAgICAgIHIKCSAoaGVyZSAocG9pbnQpKQogICAgICAgICBpbmQKICAgICAg ICAgc3RhcnQKICAgICAgICAgc3RhcnRwb3MKICAgICAgICAgZW5kCiAgICAgICAgIGVuZHBvcwog ICAgICAgICBiYXNlLWluZAogICAgICAgICApCiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKGlm IChwcm9nbgogICAgICAgICAgICA7OyAodmVyaWxvZy1iZWctb2Ytc3RhdGVtZW50LTEpCiAgICAg ICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgICAgICAgKHZlcmlsb2ctZm9yd2FyZC1z eW50YWN0aWMtd3MpCiAgICAgICAgICAgIChhbmQgKG5vdCAodmVyaWxvZy1pbi1kaXJlY3RpdmUt cCkpICA7IGNvdWxkIGhhdmUgYGRlZmluZSBpbnB1dCBmb28KICAgICAgICAgICAgICAgICAobG9v a2luZy1hdCB2ZXJpbG9nLWRlY2xhcmF0aW9uLXJlKSkpCgkgIChwcm9nbgoJICAgIChpZiAodmVy aWxvZy1wYXJlbnRoZXNpcy1kZXB0aCkKCQk7OyBpbiBhbiBhcmd1bWVudCBsaXN0IG9yIHBhcmFt ZXRlciBibG9jawoJCShzZXRxIGVsICh2ZXJpbG9nLWJhY2t3YXJkLXVwLWxpc3QgLTEpCgkJICAg ICAgc3RhcnQgKHByb2duCgkJCSAgICAgIChnb3RvLWNoYXIgZSkKCQkJICAgICAgKHZlcmlsb2ct YmFja3dhcmQtdXAtbGlzdCAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2Fy ZC1saW5lKSAgOyBpZ25vcmUgKCBpbnB1dCBmb28sCgkJCSAgICAgICh2ZXJpbG9nLXJlLXNlYXJj aC1mb3J3YXJkIHZlcmlsb2ctZGVjbGFyYXRpb24tcmUgZWwgJ21vdmUpCgkJCSAgICAgIChnb3Rv LWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkKCQkJICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQg IiBcdCIpCgkJCSAgICAgIChwb2ludCkpCgkJICAgICAgc3RhcnRwb3MgKHNldC1tYXJrZXIgKG1h a2UtbWFya2VyKSBzdGFydCkKCQkgICAgICBlbmQgKHByb2duCgkJCSAgICAoZ290by1jaGFyIHN0 YXJ0KQoJCQkgICAgKHZlcmlsb2ctYmFja3dhcmQtdXAtbGlzdCAtMSkKCQkJICAgIChmb3J3YXJk LWNoYXIgLTEpCgkJCSAgICAodmVyaWxvZy1iYWNrd2FyZC1zeW50YWN0aWMtd3MpCgkJCSAgICAo cG9pbnQpKQoJCSAgICAgIGVuZHBvcyAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpIGVuZCkKCQkg ICAgICBiYXNlLWluZCAocHJvZ24KCQkJCSAoZ290by1jaGFyIHN0YXJ0KQoJCQkJIChmb3J3YXJk LWNoYXIgMSkKCQkJCSAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKQoJCQkJIChjdXJyZW50LWNv bHVtbikpKQoJICAgICAgOzsgaW4gYSBkZWNsYXJhdGlvbiBibG9jayAobm90IGluIGFyZ3VtZW50 IGxpc3QpCgkgICAgICAoc2V0cQoJICAgICAgIHN0YXJ0IChwcm9nbgoJCSAgICAgICAodmVyaWxv Zy1iZWctb2Ytc3RhdGVtZW50LTEpCgkJICAgICAgICh3aGlsZSAoYW5kIChsb29raW5nLWF0IHZl cmlsb2ctZGVjbGFyYXRpb24tcmUpCgkJCQkgICAobm90IChib2JwKSkpCgkJCSAoc2tpcC1jaGFy cy1iYWNrd2FyZCAiIFx0IikKCQkJIChzZXRxIGUgKHBvaW50KSkKCQkJIChiZWdpbm5pbmctb2Yt bGluZSkKCQkJICh2ZXJpbG9nLWJhY2t3YXJkLXN5bnRhY3RpYy13cykKCQkJIChiYWNrd2FyZC1j aGFyKQoJCQkgKHZlcmlsb2ctYmVnLW9mLXN0YXRlbWVudC0xKSkKCQkgICAgICAgZSkKCSAgICAg ICBzdGFydHBvcyAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpIHN0YXJ0KQoJICAgICAgIGVuZCAo cHJvZ24KCQkgICAgIChnb3RvLWNoYXIgaGVyZSkKCQkgICAgICh2ZXJpbG9nLWVuZC1vZi1zdGF0 ZW1lbnQpCgkJICAgICAoc2V0cSBlIChwb2ludCkpCTtNaWdodCBiZSBvbiBsYXN0IGxpbmUKCQkg ICAgICh2ZXJpbG9nLWZvcndhcmQtc3ludGFjdGljLXdzKQoJCSAgICAgKHdoaWxlIChsb29raW5n LWF0IHZlcmlsb2ctZGVjbGFyYXRpb24tcmUpCgkJICAgICAgICh2ZXJpbG9nLWVuZC1vZi1zdGF0 ZW1lbnQpCgkJICAgICAgIChzZXRxIGUgKHBvaW50KSkKCQkgICAgICAgKHZlcmlsb2ctZm9yd2Fy ZC1zeW50YWN0aWMtd3MpKQoJCSAgICAgZSkKCSAgICAgICBlbmRwb3MgKHNldC1tYXJrZXIgKG1h a2UtbWFya2VyKSBlbmQpCgkgICAgICAgYmFzZS1pbmQgKHByb2duCgkJCSAgKGdvdG8tY2hhciBz dGFydCkKCQkJICAodmVyaWxvZy1kby1pbmRlbnQgKHZlcmlsb2ctY2FsY3VsYXRlLWluZGVudCkp CgkJCSAgKHZlcmlsb2ctZm9yd2FyZC13cyZkaXJlY3RpdmVzKQoJCQkgIChjdXJyZW50LWNvbHVt bikpKSkKCSAgICA7OyBPSywgc3RhcnQgYW5kIGVuZCBhcmUgc2V0CgkgICAgKGdvdG8tY2hhciAo bWFya2VyLXBvc2l0aW9uIHN0YXJ0cG9zKSkKCSAgICAoaWYgKGFuZCAobm90IHF1aWV0KQoJCSAg ICAgKD4gKC0gZW5kIHN0YXJ0KSAxMDApKQoJCShtZXNzYWdlICJMaW5pbmcgdXAgZGVjbGFyYXRp b25zLi4ocGxlYXNlIHN0YW5kIGJ5KSIpKQoJICAgIDs7IEdldCB0aGUgYmVnaW5uaW5nIG9mIGxp bmUgaW5kZW50IGZpcnN0CgkgICAgKHdoaWxlIChwcm9nbiAoc2V0cSBlIChtYXJrZXItcG9zaXRp b24gZW5kcG9zKSkKCQkJICAoPCAocG9pbnQpIGUpKQoJICAgICAgKGNvbmQKCSAgICAgICAoKHNh dmUtZXhjdXJzaW9uIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiKQoJCQkJKGJvbHApKQogICAg ICAgICAgICAgICAgKHZlcmlsb2ctZm9yd2FyZC13cyZkaXJlY3RpdmVzKQogICAgICAgICAgICAg ICAgKGluZGVudC1saW5lLXRvIGJhc2UtaW5kKQogICAgICAgICAgICAgICAgKHZlcmlsb2ctZm9y d2FyZC13cyZkaXJlY3RpdmVzKQogICAgICAgICAgICAgICAgKGlmICg8IChwb2ludCkgZSkKICAg ICAgICAgICAgICAgICAgICAodmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZCAiWyBcdFxuXGZdIiBl ICdtb3ZlKSkpCgkgICAgICAgKHQKCQkoanVzdC1vbmUtc3BhY2UpCgkJKHZlcmlsb2ctcmUtc2Vh cmNoLWZvcndhcmQgIlsgXHRcblxmXSIgZSAnbW92ZSkpKQoJICAgICAgOzsoZm9yd2FyZC1saW5l KQoJICAgICAgKQoJICAgIDs7IE5vdyBmaW5kIGJpZ2dlc3QgcHJlZml4CgkgICAgKHNldHEgaW5k ICh2ZXJpbG9nLWdldC1saW5ldXAtaW5kZW50IChtYXJrZXItcG9zaXRpb24gc3RhcnRwb3MpIGVu ZHBvcykpCgkgICAgOzsgTm93IGluZGVudCBlYWNoIGxpbmUuCgkgICAgKGdvdG8tY2hhciAobWFy a2VyLXBvc2l0aW9uIHN0YXJ0cG9zKSkKCSAgICAod2hpbGUgKHByb2duIChzZXRxIGUgKG1hcmtl ci1wb3NpdGlvbiBlbmRwb3MpKQoJCQkgIChzZXRxIHIgKC0gZSAocG9pbnQpKSkKCQkJICAoPiBy IDApKQoJICAgICAgKHNldHEgZSAocG9pbnQpKQoJICAgICAgKHVubGVzcyBxdWlldCAobWVzc2Fn ZSAiJWQiIHIpKQogICAgICAgICAgICAgIDs7ICh2ZXJpbG9nLWRvLWluZGVudCAodmVyaWxvZy1j YWxjdWxhdGUtaW5kZW50KSkpCgkgICAgICAodmVyaWxvZy1mb3J3YXJkLXdzJmRpcmVjdGl2ZXMp CgkgICAgICAoY29uZAoJICAgICAgICgob3IgKGFuZCB2ZXJpbG9nLWluZGVudC1kZWNsYXJhdGlv bi1tYWNyb3MKCQkJIChsb29raW5nLWF0IHZlcmlsb2ctZGVjbGFyYXRpb24tcmUtMi1tYWNybykp CgkJICAgIChsb29raW5nLWF0IHZlcmlsb2ctZGVjbGFyYXRpb24tcmUtMi1uby1tYWNybykpCgkJ KGxldCAoKHAgKG1hdGNoLWVuZCAwKSkpCgkJICAoc2V0LW1hcmtlciBtMSBwKQoJCSAgKGlmICh2 ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkICJbWyNgXSIgcCAnbW92ZSkKCQkgICAgICAocHJvZ24K CQkJKGZvcndhcmQtY2hhciAtMSkKCQkJKGp1c3Qtb25lLXNwYWNlKQoJCQkoZ290by1jaGFyICht YXJrZXItcG9zaXRpb24gbTEpKQoJCQkoanVzdC1vbmUtc3BhY2UpCgkJCShpbmRlbnQtdG8gaW5k KSkKCQkgICAgKHByb2duCgkJICAgICAgKGp1c3Qtb25lLXNwYWNlKQoJCSAgICAgIChpbmRlbnQt dG8gaW5kKSkpKSkKCSAgICAgICAoKHZlcmlsb2ctY29udGludWVkLWxpbmUtMSAobWFya2VyLXBv c2l0aW9uIHN0YXJ0cG9zKSkKCQkoZ290by1jaGFyIGUpCgkJKGluZGVudC1saW5lLXRvIGluZCkp CgkgICAgICAgKCh2ZXJpbG9nLWluLXN0cnVjdC1wKQoJCTs7IGNvdWxkIGhhdmUgYSBkZWNsYXJh dGlvbiBvZiBhIHVzZXIgZGVmaW5lZCBpdGVtCgkJKGdvdG8tY2hhciBlKQoJCSh2ZXJpbG9nLWVu ZC1vZi1zdGF0ZW1lbnQpKQoJICAgICAgICh0CQk7IE11c3QgYmUgY29tbWVudCBvciB3aGl0ZSBz cGFjZQoJCShnb3RvLWNoYXIgZSkKCQkodmVyaWxvZy1mb3J3YXJkLXdzJmRpcmVjdGl2ZXMpCgkJ KGZvcndhcmQtbGluZSAtMSkpKQoJICAgICAgKGZvcndhcmQtbGluZSAxKSkKCSAgICAodW5sZXNz IHF1aWV0IChtZXNzYWdlICIiKSkpKSkpKQoKKGRlZnVuIHZlcmlsb2ctcHJldHR5LWV4cHIgKCZv cHRpb25hbCBxdWlldCkKICAiTGluZSB1cCBleHByZXNzaW9ucyBhcm91bmQgcG9pbnQuCklmIFFV SUVUIGlzIG5vbi1uaWwsIGRvIG5vdCBwcmludCBtZXNzYWdlcyBzaG93aW5nIHRoZSBwcm9ncmVz cyBvZiBsaW5lLXVwLiIKICAoaW50ZXJhY3RpdmUpCiAgKHVubGVzcyAodmVyaWxvZy1pbi1jb21t ZW50LW9yLXN0cmluZy1wKQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgIChsZXQgKChyZWdleHAg KGNvbmNhdCAiXlxccy0qIiB2ZXJpbG9nLWNvbXBsZXRlLXJlZykpCiAgICAgICAgICAgIChyZWdl eHAxIChjb25jYXQgIl5cXHMtKiIgdmVyaWxvZy1iYXNpYy1jb21wbGV0ZS1yZSkpKQogICAgICAg IChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgICAod2hlbiAoYW5kIChub3QgKGxvb2tpbmctYXQg cmVnZXhwKSkKICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0IHZlcmlsb2ctYXNzaWdubWVu dC1vcGVyYXRpb24tcmUpCiAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAg ICAgICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDIpKQogICAgICAgICAgICAgICAg ICAgICAoYW5kIChub3QgKHZlcmlsb2ctaW4tYXR0cmlidXRlLXApKQogICAgICAgICAgICAgICAg ICAgICAgICAgIChub3QgKHZlcmlsb2ctaW4tcGFyYW1ldGVyLXApKQogICAgICAgICAgICAgICAg ICAgICAgICAgIChub3QgKHZlcmlsb2ctaW4tY29tbWVudC1vci1zdHJpbmctcCkpKSkpCiAgICAg ICAgICAobGV0KiAoKHN0YXJ0IChzYXZlLWV4Y3Vyc2lvbiA7IEJPTCBvZiB0aGUgZmlyc3QgbGlu ZSBvZiB0aGUgYXNzaWdubWVudCBibG9jawogICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdp bm5pbmctb2YtbGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgocHQgKHBvaW50 KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1iYWNrd2FyZC1zeW50YWN0 aWMtd3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAod2hpbGUgKGFuZCAobm90IChsb29raW5nLWF0IHJl Z2V4cDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmct YXQgdmVyaWxvZy1hc3NpZ25tZW50LW9wZXJhdGlvbi1yZSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChub3QgKGJvYnApKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHNldHEgcHQgKHBvaW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZl cmlsb2ctYmFja3dhcmQtc3ludGFjdGljLXdzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYmVnaW5uaW5nLW9mLWxpbmUpKSA7IEFjaywgbmVlZCB0byBncm9rIGBkZWZpbmUKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHB0KSkpCiAgICAgICAgICAgICAgICAgKGVuZCAoc2F2ZS1l eGN1cnNpb24gOyBFT0wgb2YgdGhlIGxhc3QgbGluZSBvZiB0aGUgYXNzaWdubWVudCBibG9jawog ICAgICAgICAgICAgICAgICAgICAgICAoZW5kLW9mLWxpbmUpCiAgICAgICAgICAgICAgICAgICAg ICAgIChsZXQgKChwdCAocG9pbnQpKSkgOyBNaWdodCBiZSBvbiBsYXN0IGxpbmUKICAgICAgICAg ICAgICAgICAgICAgICAgICAodmVyaWxvZy1mb3J3YXJkLXN5bnRhY3RpYy13cykKICAgICAgICAg ICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgKHdoaWxlIChhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3Qg KGxvb2tpbmctYXQgcmVnZXhwMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bG9va2luZy1hdCB2ZXJpbG9nLWFzc2lnbm1lbnQtb3BlcmF0aW9uLXJlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChlbmQtb2YtbGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG5vdCAoZXEgcHQgKHBvaW50KSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRx IHB0IChwb2ludCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1mb3J3YXJk LXN5bnRhY3RpYy13cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2Yt bGluZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHQpKSkKICAgICAgICAgICAgICAgICAo Y29udGFpbnMtMi1jaGFyLW9wZXJhdG9yIChzdHJpbmctbWF0Y2ggIjw9IiAoYnVmZmVyLXN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpKQogICAgICAgICAgICAgICAgIChlbmRtYXJr IChzZXQtbWFya2VyIChtYWtlLW1hcmtlcikgZW5kKSkpCiAgICAgICAgICAgIChnb3RvLWNoYXIg c3RhcnQpCiAgICAgICAgICAgICh2ZXJpbG9nLWRvLWluZGVudCAodmVyaWxvZy1jYWxjdWxhdGUt aW5kZW50KSkKICAgICAgICAgICAgKHdoZW4gKGFuZCAobm90IHF1aWV0KQogICAgICAgICAgICAg ICAgICAgICAgICg+ICgtIGVuZCBzdGFydCkgMTAwKSkKICAgICAgICAgICAgICAobWVzc2FnZSAi TGluaW5nIHVwIGV4cHJlc3Npb25zLi4gKHBsZWFzZSBzdGFuZCBieSkiKSkKCiAgICAgICAgICAg IDs7IFNldCBpbmRlbnQgdG8gbWluaW11bSB0aHJvdWdob3V0IHJlZ2lvbgogICAgICAgICAgICA7 OyBSZWx5IG9uIG1hcmsgcmF0aGVyIHRoYW4gb24gcG9pbnQgYXMgdGhlIGluZGVudGF0aW9uIGNo YW5nZXMgY2FuCiAgICAgICAgICAgIDs7IG1ha2UgdGhlIG9sZGVyIHBvaW50IHJlZmVyZW5jZSBv YnNvbGV0ZQogICAgICAgICAgICAod2hpbGUgKDwgKHBvaW50KSAobWFya2VyLXBvc2l0aW9uIGVu ZG1hcmspKQogICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgICAgICAgICAo c2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICh2ZXJpbG9nLWp1c3Qtb25lLXNwYWNlIHZl cmlsb2ctYXNzaWdubWVudC1vcGVyYXRpb24tcmUpKQogICAgICAgICAgICAgICh2ZXJpbG9nLWRv LWluZGVudCAodmVyaWxvZy1jYWxjdWxhdGUtaW5kZW50KSkKICAgICAgICAgICAgICAoZW5kLW9m LWxpbmUpCiAgICAgICAgICAgICAgKHZlcmlsb2ctZm9yd2FyZC1zeW50YWN0aWMtd3MpKQoKICAg ICAgICAgICAgKGxldCAoKGluZCAodmVyaWxvZy1nZXQtbGluZXVwLWluZGVudC0yIHZlcmlsb2ct YXNzaWdubWVudC1vcGVyYXRpb24tcmUgc3RhcnQgKG1hcmtlci1wb3NpdGlvbiBlbmRtYXJrKSkp IDsgRmluZCB0aGUgYmlnZ2VzdCBwcmVmaXgKICAgICAgICAgICAgICAgICAgZSkKICAgICAgICAg ICAgICA7OyBOb3cgaW5kZW50IGVhY2ggbGluZS4KICAgICAgICAgICAgICAoZ290by1jaGFyIHN0 YXJ0KQogICAgICAgICAgICAgICh3aGlsZSAocHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAo c2V0cSBlIChtYXJrZXItcG9zaXRpb24gZW5kbWFyaykpCiAgICAgICAgICAgICAgICAgICAgICAg KD4gZSAocG9pbnQpKSkKICAgICAgICAgICAgICAgICh1bmxlc3MgcXVpZXQKICAgICAgICAgICAg ICAgICAgKG1lc3NhZ2UgIiB2ZXJpbG9nLXByZXR0eS1leHByOiAlZCIgKC0gZSAocG9pbnQpKSkp CiAgICAgICAgICAgICAgICAoc2V0cSBlIChwb2ludCkpCiAgICAgICAgICAgICAgICAoY29uZAog ICAgICAgICAgICAgICAgICgobG9va2luZy1hdCB2ZXJpbG9nLWFzc2lnbm1lbnQtb3BlcmF0aW9u LXJlKQogICAgICAgICAgICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMikpCiAg ICAgICAgICAgICAgICAgICh1bmxlc3MgKG9yICh2ZXJpbG9nLWluLXBhcmVudGhlc2lzLXApIDsg TGVhdmUgYXR0cmlidXRlcyBhbmQgY29tcGFyaXNvbnMgYWxvbmUKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHZlcmlsb2ctaW4tY292ZXJhZ2UtcCkpCiAgICAgICAgICAgICAgICAgICAg KGlmIChhbmQgY29udGFpbnMtMi1jaGFyLW9wZXJhdG9yCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGVxIChjaGFyLWFmdGVyKSA/PSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChpbmRl bnQtdG8gKDErIGluZCkpIDsgTGluZSB1cCB0aGUgPSBvZiB0aGUgPD0gd2l0aCBzdXJyb3VuZGlu ZyA9CiAgICAgICAgICAgICAgICAgICAgICAoaW5kZW50LXRvIGluZCkpKSkKICAgICAgICAgICAg ICAgICAoKHZlcmlsb2ctY29udGludWVkLWxpbmUtMSBzdGFydCkKICAgICAgICAgICAgICAgICAg KGdvdG8tY2hhciBlKQogICAgICAgICAgICAgICAgICAoaW5kZW50LWxpbmUtdG8gaW5kKSkKICAg ICAgICAgICAgICAgICAodCAgICAgICAgICAgICAgICAgICAgIDsgTXVzdCBiZSBjb21tZW50IG9y IHdoaXRlIHNwYWNlCiAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgZSkKICAgICAgICAgICAg ICAgICAgKHZlcmlsb2ctZm9yd2FyZC13cyZkaXJlY3RpdmVzKQogICAgICAgICAgICAgICAgICAo Zm9yd2FyZC1saW5lIC0xKSkpCiAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lIDEpKQogICAg ICAgICAgICAgICh1bmxlc3MgcXVpZXQKICAgICAgICAgICAgICAgIChtZXNzYWdlICIiKSkpKSkp KSkpCgooZGVmdW4gdmVyaWxvZy1qdXN0LW9uZS1zcGFjZSAobXlyZSkKICAiUmVtb3ZlIGV4dHJh IHNwYWNlcyBhcm91bmQgcmVndWxhciBleHByZXNzaW9uIE1ZUkUuIgogIChpbnRlcmFjdGl2ZSkK ICAoaWYgKGFuZCAobm90KGxvb2tpbmctYXQgdmVyaWxvZy1jb21wbGV0ZS1yZWcpKQoJICAgKGxv b2tpbmctYXQgbXlyZSkpCiAgICAgIChsZXQgKChwMSAobWF0Y2gtZW5kIDEpKQoJICAgIChwMiAo bWF0Y2gtZW5kIDIpKSkKCShwcm9nbgoJICAoZ290by1jaGFyIHAyKQoJICAoanVzdC1vbmUtc3Bh Y2UpCgkgIChnb3RvLWNoYXIgcDEpCgkgIChqdXN0LW9uZS1zcGFjZSkpKSkpCgooZGVmdW4gdmVy aWxvZy1pbmRlbnQtZGVjbGFyYXRpb24gKGJhc2VpbmQpCiAgIkluZGVudCBjdXJyZW50IGxpbmVz IGFzIGRlY2xhcmF0aW9uLgpMaW5lIHVwIHRoZSB2YXJpYWJsZSBuYW1lcyBiYXNlZCBvbiBwcmV2 aW91cyBkZWNsYXJhdGlvbidzIGluZGVudGF0aW9uLgpCQVNFSU5EIGlzIHRoZSBiYXNlIGluZGVu dCB0byBvZmZzZXQgZXZlcnl0aGluZy4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChwb3MgKHBv aW50LW1hcmtlcikpCgkobGltIChzYXZlLWV4Y3Vyc2lvbgoJICAgICAgIDs7ICh2ZXJpbG9nLXJl LXNlYXJjaC1iYWNrd2FyZCB2ZXJpbG9nLWRlY2xhcmF0aW9uLW9wZW5lciBuaWwgJ21vdmUpCiAg ICAgICAgICAgICAgKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkICJcXChcXDxiZWdpblxcPlxc KVxcfFxcKFxcPFxcKGNvbm5lY3RcXCk/bW9kdWxlXFw+XFwpXFx8XFwoXFw8dGFza1xcPlxcKSIg bmlsICdtb3ZlKQoJICAgICAgIChwb2ludCkpKQoJKGluZCkKCSh2YWwpCgkobTEgKG1ha2UtbWFy a2VyKSkpCiAgICAoc2V0cSB2YWwKCSAgKCsgYmFzZWluZCAoZXZhbCAoY2RyIChhc3NvYyAnZGVj bGFyYXRpb24gdmVyaWxvZy1pbmRlbnQtYWxpc3QpKSkpKQogICAgKGluZGVudC1saW5lLXRvIHZh bCkKCiAgICA7OyBVc2UgcHJldmlvdXMgZGVjbGFyYXRpb24gKGluIHRoaXMgbW9kdWxlKSBhcyB0 ZW1wbGF0ZS4KICAgIChpZiAob3IgKGVxICdhbGwgdmVyaWxvZy1hdXRvLWxpbmV1cCkKCSAgICAo ZXEgJ2RlY2xhcmF0aW9ucyB2ZXJpbG9nLWF1dG8tbGluZXVwKSkKCShpZiAodmVyaWxvZy1yZS1z ZWFyY2gtYmFja3dhcmQKCSAgICAgKG9yIChhbmQgdmVyaWxvZy1pbmRlbnQtZGVjbGFyYXRpb24t bWFjcm9zCgkJICAgICAgdmVyaWxvZy1kZWNsYXJhdGlvbi1yZS0xLW1hY3JvKQoJCSB2ZXJpbG9n LWRlY2xhcmF0aW9uLXJlLTEtbm8tbWFjcm8pIGxpbSB0KQoJICAgIChwcm9nbgoJICAgICAgKGdv dG8tY2hhciAobWF0Y2gtZW5kIDApKQoJICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0IikK CSAgICAgIChzZXRxIGluZCAoY3VycmVudC1jb2x1bW4pKQoJICAgICAgKGdvdG8tY2hhciBwb3Mp CgkgICAgICAoc2V0cSB2YWwKCQkgICAgKCsgYmFzZWluZAoJCSAgICAgICAoZXZhbCAoY2RyIChh c3NvYyAnZGVjbGFyYXRpb24gdmVyaWxvZy1pbmRlbnQtYWxpc3QpKSkpKQoJICAgICAgKGluZGVu dC1saW5lLXRvIHZhbCkKCSAgICAgIChpZiAoYW5kIHZlcmlsb2ctaW5kZW50LWRlY2xhcmF0aW9u LW1hY3JvcwoJCSAgICAgICAobG9va2luZy1hdCB2ZXJpbG9nLWRlY2xhcmF0aW9uLXJlLTItbWFj cm8pKQoJCSAgKGxldCAoKHAgKG1hdGNoLWVuZCAwKSkpCgkJICAgIChzZXQtbWFya2VyIG0xIHAp CgkJICAgIChpZiAodmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZCAiW1sjYF0iIHAgJ21vdmUpCgkJ CShwcm9nbgoJCQkgIChmb3J3YXJkLWNoYXIgLTEpCgkJCSAgKGp1c3Qtb25lLXNwYWNlKQoJCQkg IChnb3RvLWNoYXIgKG1hcmtlci1wb3NpdGlvbiBtMSkpCgkJCSAgKGp1c3Qtb25lLXNwYWNlKQoJ CQkgIChpbmRlbnQtdG8gaW5kKSkKCQkgICAgICAoaWYgKC89IChjdXJyZW50LWNvbHVtbikgaW5k KQoJCQkgIChwcm9nbgoJCQkgICAgKGp1c3Qtb25lLXNwYWNlKQoJCQkgICAgKGluZGVudC10byBp bmQpKSkpKQoJCShpZiAobG9va2luZy1hdCB2ZXJpbG9nLWRlY2xhcmF0aW9uLXJlLTItbm8tbWFj cm8pCgkJICAgIChsZXQgKChwIChtYXRjaC1lbmQgMCkpKQoJCSAgICAgIChzZXQtbWFya2VyIG0x IHApCgkJICAgICAgKGlmICh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkICJbW2AjXSIgcCAnbW92 ZSkKCQkJICAocHJvZ24KCQkJICAgIChmb3J3YXJkLWNoYXIgLTEpCgkJCSAgICAoanVzdC1vbmUt c3BhY2UpCgkJCSAgICAoZ290by1jaGFyIChtYXJrZXItcG9zaXRpb24gbTEpKQoJCQkgICAgKGp1 c3Qtb25lLXNwYWNlKQoJCQkgICAgKGluZGVudC10byBpbmQpKQoJCQkoaWYgKC89IChjdXJyZW50 LWNvbHVtbikgaW5kKQoJCQkgICAgKHByb2duCgkJCSAgICAgIChqdXN0LW9uZS1zcGFjZSkKCQkJ ICAgICAgKGluZGVudC10byBpbmQpKSkpKSkpKSkpCiAgICAoZ290by1jaGFyIHBvcykpKQoKKGRl ZnVuIHZlcmlsb2ctZ2V0LWxpbmV1cC1pbmRlbnQgKGIgZWRwb3MpCiAgIlJldHVybiB0aGUgaW5k ZW50IGxldmVsIHRoYXQgd2lsbCBsaW5lIHVwIHNldmVyYWwgbGluZXMgd2l0aGluIHRoZSByZWdp b24uClJlZ2lvbiBpcyBkZWZpbmVkIGJ5IEIgYW5kIEVEUE9TLiIKICAoc2F2ZS1leGN1cnNpb24K ICAgIChsZXQgKChpbmQgMCkgZSkKICAgICAgKGdvdG8tY2hhciBiKQogICAgICA7OyBHZXQgcmln aHRtb3N0IHBvc2l0aW9uCiAgICAgICh3aGlsZSAocHJvZ24gKHNldHEgZSAobWFya2VyLXBvc2l0 aW9uIGVkcG9zKSkKCQkgICAgKDwgKHBvaW50KSBlKSkKCShpZiAodmVyaWxvZy1yZS1zZWFyY2gt Zm9yd2FyZAoJICAgICAob3IgKGFuZCB2ZXJpbG9nLWluZGVudC1kZWNsYXJhdGlvbi1tYWNyb3MK CQkgICAgICB2ZXJpbG9nLWRlY2xhcmF0aW9uLXJlLTEtbWFjcm8pCgkJIHZlcmlsb2ctZGVjbGFy YXRpb24tcmUtMS1uby1tYWNybykgZSAnbW92ZSkKCSAgICAocHJvZ24KCSAgICAgIChnb3RvLWNo YXIgKG1hdGNoLWVuZCAwKSkKCSAgICAgICh2ZXJpbG9nLWJhY2t3YXJkLXN5bnRhY3RpYy13cykK CSAgICAgIChpZiAoPiAoY3VycmVudC1jb2x1bW4pIGluZCkKCQkgIChzZXRxIGluZCAoY3VycmVu dC1jb2x1bW4pKSkKCSAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkpKSkKICAgICAgKGlm ICg+IGluZCAwKQoJICAoMSsgaW5kKQoJOzsgTm8gbGluZXVwLXN0cmluZyBmb3VuZAoJKGdvdG8t Y2hhciBiKQoJKGVuZC1vZi1saW5lKQoJKHZlcmlsb2ctYmFja3dhcmQtc3ludGFjdGljLXdzKQoJ Ozsoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IikKCSgxKyAoY3VycmVudC1jb2x1bW4pKSkpKSkK CihkZWZ1biB2ZXJpbG9nLWdldC1saW5ldXAtaW5kZW50LTIgKHJlZ2V4cCBiZWcgZW5kKQogICJS ZXR1cm4gdGhlIGluZGVudCBsZXZlbCB0aGF0IHdpbGwgbGluZSB1cCBzZXZlcmFsIGxpbmVzLgpU aGUgbGluZXVwIHN0cmluZyBpcyBzZWFyY2hlZCB1c2luZyBSRUdFWFAgd2l0aGluIHRoZSByZWdp b24gYmV0d2VlbiBwb2ludHMKQkVHIGFuZCBFTkQuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGxl dCAoKGluZCAwKSkKICAgICAgKGdvdG8tY2hhciBiZWcpCiAgICAgIDs7IEdldCByaWdodG1vc3Qg cG9zaXRpb24KICAgICAgKHdoaWxlICg8IChwb2ludCkgZW5kKQoJKHdoZW4gKGFuZCAodmVyaWxv Zy1yZS1zZWFyY2gtZm9yd2FyZCByZWdleHAgZW5kICdtb3ZlKQogICAgICAgICAgICAgICAgICAg KG5vdCAodmVyaWxvZy1pbi1hdHRyaWJ1dGUtcCkpKSA7IHNraXAgYXR0cmlidXRlIGV4cHJzCgkg IChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAyKSkKCSAgKHZlcmlsb2ctYmFja3dhcmQtc3lu dGFjdGljLXdzKQoJICAoaWYgKD4gKGN1cnJlbnQtY29sdW1uKSBpbmQpCgkgICAgICAoc2V0cSBp bmQgKGN1cnJlbnQtY29sdW1uKSkpCgkgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkpKQogICAg ICAoc2V0cSBpbmQgKGlmICg+IGluZCAwKQoJICAgICAgICAgICAgKDErIGluZCkKCSAgICAgICAg ICA7OyBObyBsaW5ldXAtc3RyaW5nIGZvdW5kCgkgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCgkg ICAgICAgICAgKGVuZC1vZi1saW5lKQoJICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIg XHQiKQoJICAgICAgICAgICgxKyAoY3VycmVudC1jb2x1bW4pKSkpCiAgICAgIGluZCkpKQoKKGRl ZnVuIHZlcmlsb2ctY29tbWVudC1kZXB0aCAodHlwZSB2YWwpCiAgIkEgdXNlZnVsIG1vZGUgZGVi dWdnaW5nIGFpZGUuICBUWVBFIGFuZCBWQUwgYXJlIGNvbW1lbnRzIGZvciBpbnNlcnRpb24uIgog IChzYXZlLWV4Y3Vyc2lvbgogICAgKGxldAoJKChiIChwcm9nMgoJCShiZWdpbm5pbmctb2YtbGlu ZSkKCQkocG9pbnQtbWFya2VyKQoJICAgICAgKGVuZC1vZi1saW5lKSkpKQogICAgICAoaWYgKHJl LXNlYXJjaC1iYWNrd2FyZCAiIC9cXCogWyMtXSMgW2EtekEtWl0rIFswLTldKyAjIyBcXCovIiBi IHQpCgkgIChwcm9nbgoJICAgIChyZXBsYWNlLW1hdGNoICIgLyogLSMgICMjICovIikKCSAgICAo ZW5kLW9mLWxpbmUpKQoJKHByb2duCgkgIChlbmQtb2YtbGluZSkKCSAgKGluc2VydCAiIC8qICMj ICAjIyAqLyIpKSkpCiAgICAoYmFja3dhcmQtY2hhciA2KQogICAgKGluc2VydAogICAgIChmb3Jt YXQgIiVzICVkIiB0eXBlIHZhbCkpKSkKCgwKOzs7IENvbXBsZXRpb246Cjs7CihkZWZ2YXIgdmVy aWxvZy1zdHIgbmlsKQooZGVmdmFyIHZlcmlsb2ctYWxsIG5pbCkKKGRlZnZhciB2ZXJpbG9nLXBy ZWQgbmlsKQooZGVmdmFyIHZlcmlsb2ctYnVmZmVyLXRvLXVzZSBuaWwpCihkZWZ2YXIgdmVyaWxv Zy1mbGFnIG5pbCkKKGRlZnZhciB2ZXJpbG9nLXRvZ2dsZS1jb21wbGV0aW9ucyBuaWwKICAiVHJ1 ZSBtZWFucyBcXDx2ZXJpbG9nLW1vZGUtbWFwPlxcW3Zlcmlsb2ctY29tcGxldGUtd29yZF0gc2hv dWxkIHRyeSBhbGwgcG9zc2libGUgY29tcGxldGlvbnMgb25lIGJ5IG9uZS4KUmVwZWF0ZWQgdXNl IG9mIFxcW3Zlcmlsb2ctY29tcGxldGUtd29yZF0gd2lsbCBzaG93IHlvdSBhbGwgb2YgdGhlbS4K Tm9ybWFsbHksIHdoZW4gdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBwb3NzaWJsZSBjb21wbGV0aW9u LAppdCBkaXNwbGF5cyBhIGxpc3Qgb2YgYWxsIHBvc3NpYmxlIGNvbXBsZXRpb25zLiIpCih3aGVu IChib3VuZHAgJ2NvbXBsZXRpb24tY3ljbGUtdGhyZXNob2xkKQogIChtYWtlLW9ic29sZXRlLXZh cmlhYmxlCiAgICd2ZXJpbG9nLXRvZ2dsZS1jb21wbGV0aW9ucyAnY29tcGxldGlvbi1jeWNsZS10 aHJlc2hvbGQgIjI2LjEiKSkKCgooZGVmdmFyIHZlcmlsb2ctdHlwZS1rZXl3b3JkcwogICcoCiAg ICAiYW5kIiAiYnVmIiAiYnVmaWYwIiAiYnVmaWYxIiAiY21vcyIgImRlZnBhcmFtIiAiaW5vdXQi ICJpbnB1dCIKICAgICJpbnRlZ2VyIiAibG9jYWxwYXJhbSIgImxvZ2ljIiAibWFpbGJveCIgIm5h bmQiICJubW9zIiAibm9yIiAibm90IiAibm90aWYwIgogICAgIm5vdGlmMSIgIm9yIiAib3V0cHV0 IiAicGFyYW1ldGVyIiAicG1vcyIgInB1bGwwIiAicHVsbDEiICJwdWxsZG93biIgInB1bGx1cCIK ICAgICJyY21vcyIgInJlYWwiICJyZWFsdGltZSIgInJlZyIgInJubW9zIiAicnBtb3MiICJydHJh biIgInJ0cmFuaWYwIgogICAgInJ0cmFuaWYxIiAic2VtYXBob3JlIiAidGltZSIgInRyYW4iICJ0 cmFuaWYwIiAidHJhbmlmMSIgInRyaSIgInRyaTAiICJ0cmkxIgogICAgInRyaWFuZCIgInRyaW9y IiAidHJpcmVnIiAid2FuZCIgIndpcmUiICJ3b3IiICJ4bm9yIiAieG9yIgogICAgKQogICJLZXl3 b3JkcyBmb3IgdHlwZXMgdXNlZCB3aGVuIGNvbXBsZXRpbmcgYSB3b3JkIGluIGEgZGVjbGFyYXRp b24gb3IgcGFybWxpc3QuClwoaW50ZWdlciwgcmVhbCwgcmVnLi4uKSIpCgooZGVmdmFyIHZlcmls b2ctY3BwLWtleXdvcmRzCiAgJygiY29ubmVjdG1vZHVsZSIgIm1vZHVsZSIgIm1hY3JvbW9kdWxl IiAicHJpbWl0aXZlIiAidGltZXNjYWxlIiAiZGVmaW5lIiAiaWZkZWYiICJpZm5kZWYiICJlbHNl IgogICAgImVuZGlmIikKICAiS2V5d29yZHMgdG8gY29tcGxldGUgd2hlbiBhdCBmaXJzdCB3b3Jk IG9mIGEgbGluZSBpbiBkZWNsYXJhdGl2ZSBzY29wZS4KXChpbml0aWFsLCBhbHdheXMsIGJlZ2lu LCBhc3NpZ24uLi4pClRoZSBwcm9jZWR1cmVzIGFuZCB2YXJpYWJsZXMgZGVmaW5lZCB3aXRoaW4g dGhlIFZlcmlsb2cgcHJvZ3JhbQp3aWxsIGJlIGNvbXBsZXRlZCBhdCBydW50aW1lIGFuZCBzaG91 bGQgbm90IGJlIGFkZGVkIHRvIHRoaXMgbGlzdC4iKQoKKGRlZnZhciB2ZXJpbG9nLWRlZnVuLWtl eXdvcmRzCiAgKGFwcGVuZAogICAnKAogICAgICJhbHdheXMiICJhbHdheXNfY29tYiIgImFsd2F5 c19mZiIgImFsd2F5c19sYXRjaCIgImFzc2lnbiIKICAgICAiYmVnaW4iICJlbmQiICJjb25uZWN0 bW9kdWxlIiAiZW5kY29ubmVjdG1vZHVsZSIgImdlbmVyYXRlIiAiZW5kZ2VuZXJhdGUiICJtb2R1 bGUiICJlbmRtb2R1bGUiCiAgICAgInNwZWNpZnkiICJlbmRzcGVjaWZ5IiAiZnVuY3Rpb24iICJl bmRmdW5jdGlvbiIgImluaXRpYWwiICJmaW5hbCIKICAgICAidGFzayIgImVuZHRhc2siICJwcmlt aXRpdmUiICJlbmRwcmltaXRpdmUiCiAgICAgKQogICB2ZXJpbG9nLXR5cGUta2V5d29yZHMpCiAg IktleXdvcmRzIHRvIGNvbXBsZXRlIHdoZW4gYXQgZmlyc3Qgd29yZCBvZiBhIGxpbmUgaW4gZGVj bGFyYXRpdmUgc2NvcGUuClwoaW5pdGlhbCwgYWx3YXlzLCBiZWdpbiwgYXNzaWduLi4uKQpUaGUg cHJvY2VkdXJlcyBhbmQgdmFyaWFibGVzIGRlZmluZWQgd2l0aGluIHRoZSBWZXJpbG9nIHByb2dy YW0Kd2lsbCBiZSBjb21wbGV0ZWQgYXQgcnVudGltZSBhbmQgc2hvdWxkIG5vdCBiZSBhZGRlZCB0 byB0aGlzIGxpc3QuIikKCihkZWZ2YXIgdmVyaWxvZy1ibG9jay1rZXl3b3JkcwogICcoCiAgICAi YmVnaW4iICJicmVhayIgImNhc2UiICJjb250aW51ZSIgImVsc2UiICJlbmQiICJlbmRmdW5jdGlv biIKICAgICJlbmRnZW5lcmF0ZSIgImVuZGludGVyZmFjZSIgImVuZHBhY2thZ2UiICJlbmRzcGVj aWZ5IiAiZW5kdGFzayIKICAgICJmb3IiICJmb3JrIiAiaWYiICJqb2luIiAiam9pbl9hbnkiICJq b2luX25vbmUiICJyZXBlYXQiICJyZXR1cm4iCiAgICAid2hpbGUiKQogICJLZXl3b3JkcyB0byBj b21wbGV0ZSB3aGVuIGF0IGZpcnN0IHdvcmQgb2YgYSBsaW5lIGluIGJlaGF2aW9yYWwgc2NvcGUu ClwoYmVnaW4sIGlmLCB0aGVuLCBlbHNlLCBmb3IsIGZvcmsuLi4pClRoZSBwcm9jZWR1cmVzIGFu ZCB2YXJpYWJsZXMgZGVmaW5lZCB3aXRoaW4gdGhlIFZlcmlsb2cgcHJvZ3JhbQp3aWxsIGJlIGNv bXBsZXRlZCBhdCBydW50aW1lIGFuZCBzaG91bGQgbm90IGJlIGFkZGVkIHRvIHRoaXMgbGlzdC4i KQoKKGRlZnZhciB2ZXJpbG9nLXRmLWtleXdvcmRzCiAgJygiYmVnaW4iICJicmVhayIgImZvcmsi ICJqb2luIiAiam9pbl9hbnkiICJqb2luX25vbmUiICJjYXNlIiAiZW5kIiAiZW5kdGFzayIgImVu ZGZ1bmN0aW9uIiAiaWYiICJlbHNlIiAiZm9yIiAid2hpbGUiICJyZXBlYXQiKQogICJLZXl3b3Jk cyB0byBjb21wbGV0ZSB3aGVuIGF0IGZpcnN0IHdvcmQgb2YgYSBsaW5lIGluIGEgdGFzayBvciBm dW5jdGlvbi4KXChiZWdpbiwgaWYsIHRoZW4sIGVsc2UsIGZvciwgZm9yay4pClRoZSBwcm9jZWR1 cmVzIGFuZCB2YXJpYWJsZXMgZGVmaW5lZCB3aXRoaW4gdGhlIFZlcmlsb2cgcHJvZ3JhbQp3aWxs IGJlIGNvbXBsZXRlZCBhdCBydW50aW1lIGFuZCBzaG91bGQgbm90IGJlIGFkZGVkIHRvIHRoaXMg bGlzdC4iKQoKKGRlZnZhciB2ZXJpbG9nLWNhc2Uta2V5d29yZHMKICAnKCJiZWdpbiIgImZvcmsi ICJqb2luIiAiam9pbl9hbnkiICJqb2luX25vbmUiICJjYXNlIiAiZW5kIiAiZW5kY2FzZSIgImlm IiAiZWxzZSIgImZvciIgInJlcGVhdCIpCiAgIktleXdvcmRzIHRvIGNvbXBsZXRlIHdoZW4gYXQg Zmlyc3Qgd29yZCBvZiBhIGxpbmUgaW4gY2FzZSBzY29wZS4KXChiZWdpbiwgaWYsIHRoZW4sIGVs c2UsIGZvciwgZm9yay4uLikKVGhlIHByb2NlZHVyZXMgYW5kIHZhcmlhYmxlcyBkZWZpbmVkIHdp dGhpbiB0aGUgVmVyaWxvZyBwcm9ncmFtCndpbGwgYmUgY29tcGxldGVkIGF0IHJ1bnRpbWUgYW5k IHNob3VsZCBub3QgYmUgYWRkZWQgdG8gdGhpcyBsaXN0LiIpCgooZGVmdmFyIHZlcmlsb2ctc2Vw YXJhdG9yLWtleXdvcmRzCiAgJygiZWxzZSIgInRoZW4iICJiZWdpbiIpCiAgIktleXdvcmRzIHRv IGNvbXBsZXRlIHdoZW4gTk9UIHN0YW5kaW5nIGF0IHRoZSBmaXJzdCB3b3JkIG9mIGEgc3RhdGVt ZW50LgpcKGVsc2UsIHRoZW4sIGJlZ2luLi4uKQpWYXJpYWJsZXMgYW5kIGZ1bmN0aW9uIG5hbWVz IGRlZmluZWQgd2l0aGluIHRoZSBWZXJpbG9nIHByb2dyYW0Kd2lsbCBiZSBjb21wbGV0ZWQgYXQg cnVudGltZSBhbmQgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGlzIGxpc3QuIikKCihkZWZ2YXIg dmVyaWxvZy1nYXRlLWlvcwogIDs7IEFsbCB0aGVzZSBoYXZlIGFuIGltcGxpZWQgeyJpbnB1dCIu Li59IGF0IHRoZSBlbmQKICAnKCgiYW5kIgkib3V0cHV0IikKICAgICgiYnVmIgkib3V0cHV0IikK ICAgICgiYnVmaWYwIgkib3V0cHV0IikKICAgICgiYnVmaWYxIgkib3V0cHV0IikKICAgICgiY21v cyIJIm91dHB1dCIpCiAgICAoIm5hbmQiCSJvdXRwdXQiKQogICAgKCJubW9zIgkib3V0cHV0IikK ICAgICgibm9yIgkib3V0cHV0IikKICAgICgibm90Igkib3V0cHV0IikKICAgICgibm90aWYwIgki b3V0cHV0IikKICAgICgibm90aWYxIgkib3V0cHV0IikKICAgICgib3IiCSJvdXRwdXQiKQogICAg KCJwbW9zIgkib3V0cHV0IikKICAgICgicHVsbGRvd24iCSJvdXRwdXQiKQogICAgKCJwdWxsdXAi CSJvdXRwdXQiKQogICAgKCJyY21vcyIJIm91dHB1dCIpCiAgICAoInJubW9zIgkib3V0cHV0IikK ICAgICgicnBtb3MiCSJvdXRwdXQiKQogICAgKCJydHJhbiIJImlub3V0IiAiaW5vdXQiKQogICAg KCJydHJhbmlmMCIJImlub3V0IiAiaW5vdXQiKQogICAgKCJydHJhbmlmMSIJImlub3V0IiAiaW5v dXQiKQogICAgKCJ0cmFuIgkiaW5vdXQiICJpbm91dCIpCiAgICAoInRyYW5pZjAiCSJpbm91dCIg Imlub3V0IikKICAgICgidHJhbmlmMSIJImlub3V0IiAiaW5vdXQiKQogICAgKCJ4bm9yIgkib3V0 cHV0IikKICAgICgieG9yIgkib3V0cHV0IikpCiAgIk1hcCBvZiBkaXJlY3Rpb24gZm9yIGVhY2gg cG9zaXRpb25hbCBhcmd1bWVudCB0byBlYWNoIGdhdGUgcHJpbWl0aXZlLiIpCgooZGVmdmFyIHZl cmlsb2ctZ2F0ZS1rZXl3b3JkcyAobWFwY2FyICMnY2FyIHZlcmlsb2ctZ2F0ZS1pb3MpCiAgIktl eXdvcmRzIGZvciBnYXRlIHByaW1pdGl2ZXMuIikKCihkZWZ1biB2ZXJpbG9nLXN0cmluZy1kaWZm IChzdHIxIHN0cjIpCiAgIlJldHVybiBpbmRleCBvZiBmaXJzdCBsZXR0ZXIgd2hlcmUgU1RSMSBh bmQgU1RSMiBkaWZmZXJzLiIKICAoY2F0Y2ggJ2RvbmUKICAgIChsZXQgKChkaWZmIDApKQogICAg ICAod2hpbGUgdAoJKGlmIChvciAoPiAoMSsgZGlmZikgKGxlbmd0aCBzdHIxKSkKCQkoPiAoMSsg ZGlmZikgKGxlbmd0aCBzdHIyKSkpCgkgICAgKHRocm93ICdkb25lIGRpZmYpKQoJKG9yIChlcXVh bCAoYXJlZiBzdHIxIGRpZmYpIChhcmVmIHN0cjIgZGlmZikpCgkgICAgKHRocm93ICdkb25lIGRp ZmYpKQoJKHNldHEgZGlmZiAoMSsgZGlmZikpKSkpKQoKOzsgQ2FsY3VsYXRlIGFsbCBwb3NzaWJs ZSBjb21wbGV0aW9ucyBmb3IgZnVuY3Rpb25zIGlmIGFyZ3VtZW50IGlzIGBmdW5jdGlvbicsCjs7 IGNvbXBsZXRpb25zIGZvciBwcm9jZWR1cmVzIGlmIGFyZ3VtZW50IGlzIGBwcm9jZWR1cmUnIG9y IGJvdGggZnVuY3Rpb25zIGFuZAo7OyBwcm9jZWR1cmVzIG90aGVyd2lzZS4KCihkZWZ1biB2ZXJp bG9nLWZ1bmMtY29tcGxldGlvbiAodHlwZSkKICAiQnVpbGQgcmVndWxhciBleHByZXNzaW9uIGZv ciBtb2R1bGUvdGFzay9mdW5jdGlvbiBuYW1lcy4KVFlQRSBpcyBgbW9kdWxlJywgYHRmJyBmb3Ig dGFzayBvciBmdW5jdGlvbiwgb3IgdCBpZiB1bmtub3duLiIKICAoaWYgKHN0cmluZz0gdmVyaWxv Zy1zdHIgIiIpCiAgICAgIChzZXRxIHZlcmlsb2ctc3RyICJbYS16QS1aX10iKSkKICAobGV0ICgo dmVyaWxvZy1zdHIgKGNvbmNhdCAoY29uZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KGVxIHR5cGUgJ21vZHVsZSkgIlxcPFxcKG1vZHVsZVxcfGNvbm5lY3Rtb2R1bGVcXClcXHMgKyIp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXEgdHlwZSAndGYpICJcXDxcXCh0YXNr XFx8ZnVuY3Rpb25cXClcXHMgKyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ICJc XDxcXCh0YXNrXFx8ZnVuY3Rpb25cXHxtb2R1bGVcXHxjb25uZWN0bW9kdWxlXFwpXFxzICsiKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFw8XFwoIiB2ZXJpbG9nLXN0ciAiW2EtekEt WjAtOV8uXSpcXClcXD4iKSkKCW1hdGNoKQoKICAgIChpZiAobm90IChsb29raW5nLWF0IHZlcmls b2ctZGVmdW4tcmUpKQoJKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkIHZlcmlsb2ctZGVmdW4t cmUgbmlsIHQpKQogICAgKGZvcndhcmQtY2hhciAxKQoKICAgIDs7IFNlYXJjaCB0aHJvdWdoIGFs bCByZWFjaGFibGUgZnVuY3Rpb25zCiAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgKHdo aWxlICh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkIHZlcmlsb2ctc3RyIChwb2ludC1tYXgpIHQp CiAgICAgIChwcm9nbiAoc2V0cSBtYXRjaCAoYnVmZmVyLXN1YnN0cmluZyAobWF0Y2gtYmVnaW5u aW5nIDIpCgkJCQkJICAgKG1hdGNoLWVuZCAyKSkpCgkgICAgIChpZiAob3IgKG51bGwgdmVyaWxv Zy1wcmVkKQoJCSAgICAgKGZ1bmNhbGwgdmVyaWxvZy1wcmVkIG1hdGNoKSkKCQkgKHNldHEgdmVy aWxvZy1hbGwgKGNvbnMgbWF0Y2ggdmVyaWxvZy1hbGwpKSkpKQogICAgKGlmIChtYXRjaC1iZWdp bm5pbmcgMCkKCShnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkpKSkKCihkZWZ1biB2ZXJp bG9nLWdldC1jb21wbGV0aW9uLWRlY2wgKGVuZCkKICAiTWFjcm8gZm9yIHNlYXJjaGluZyB0aHJv dWdoIGN1cnJlbnQgZGVjbGFyYXRpb24gKHZhciwgdHlwZSBvciBjb25zdCkKZm9yIG1hdGNoZXMg b2YgYHN0cicgYW5kIGFkZGluZyB0aGUgb2NjdXJyZW5jZSB0cCBgYWxsJyB0aHJvdWdoIHBvaW50 IEVORC4iCiAgKGxldCAoKHJlIChvciAoYW5kIHZlcmlsb2ctaW5kZW50LWRlY2xhcmF0aW9uLW1h Y3JvcwoJCSAgICAgdmVyaWxvZy1kZWNsYXJhdGlvbi1yZS0yLW1hY3JvKQoJCXZlcmlsb2ctZGVj bGFyYXRpb24tcmUtMi1uby1tYWNybykpCglkZWNsLWVuZCBtYXRjaCkKICAgIDs7IFRyYXZlcnNl IGxpbmVzCiAgICAod2hpbGUgKGFuZCAoPCAocG9pbnQpIGVuZCkKCQkodmVyaWxvZy1yZS1zZWFy Y2gtZm9yd2FyZCByZSBlbmQgdCkpCiAgICAgIDs7IFRyYXZlcnNlIGN1cnJlbnQgbGluZQogICAg ICAoc2V0cSBkZWNsLWVuZCAoc2F2ZS1leGN1cnNpb24gKHZlcmlsb2ctZGVjbGFyYXRpb24tZW5k KSkpCiAgICAgICh3aGlsZSAoYW5kICh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkIHZlcmlsb2ct c3ltYm9sLXJlIGRlY2wtZW5kIHQpCgkJICAobm90IChtYXRjaC1lbmQgMSkpKQoJKHNldHEgbWF0 Y2ggKGJ1ZmZlci1zdWJzdHJpbmcgKG1hdGNoLWJlZ2lubmluZyAwKSAobWF0Y2gtZW5kIDApKSkK CShpZiAoc3RyaW5nLW1hdGNoIChjb25jYXQgIlxcPCIgdmVyaWxvZy1zdHIpIG1hdGNoKQoJICAg IChpZiAob3IgKG51bGwgdmVyaWxvZy1wcmVkKQoJCSAgICAoZnVuY2FsbCB2ZXJpbG9nLXByZWQg bWF0Y2gpKQoJCShzZXRxIHZlcmlsb2ctYWxsIChjb25zIG1hdGNoIHZlcmlsb2ctYWxsKSkpKSkK ICAgICAgKGZvcndhcmQtbGluZSAxKSkpCiAgdmVyaWxvZy1hbGwpCgooZGVmdW4gdmVyaWxvZy12 YXItY29tcGxldGlvbiAoKQogICJDYWxjdWxhdGUgYWxsIHBvc3NpYmxlIGNvbXBsZXRpb25zIGZv ciB2YXJpYWJsZXMgKG9yIGNvbnN0YW50cykuIgogIChsZXQgKChzdGFydCAocG9pbnQpKSkKICAg IDs7IFNlYXJjaCBmb3IgYWxsIHJlYWNoYWJsZSB2YXIgZGVjbGFyYXRpb25zCiAgICAodmVyaWxv Zy1iZWctb2YtZGVmdW4pCiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgOzsgQ2hlY2sgdmFyIGRl Y2xhcmF0aW9ucwogICAgICAodmVyaWxvZy1nZXQtY29tcGxldGlvbi1kZWNsIHN0YXJ0KSkpKQoK KGRlZnVuIHZlcmlsb2cta2V5d29yZC1jb21wbGV0aW9uIChrZXl3b3JkLWxpc3QpCiAgIkdpdmUg bGlzdCBvZiBhbGwgcG9zc2libGUgY29tcGxldGlvbnMgb2Yga2V5d29yZHMgaW4gS0VZV09SRC1M SVNULiIKICAobWFwY2FyIChsYW1iZGEgKHMpCgkgICAgKGlmIChzdHJpbmctbWF0Y2ggKGNvbmNh dCAiXFw8IiB2ZXJpbG9nLXN0cikgcykKCQkoaWYgKG9yIChudWxsIHZlcmlsb2ctcHJlZCkKCQkJ KGZ1bmNhbGwgdmVyaWxvZy1wcmVkIHMpKQoJCSAgICAoc2V0cSB2ZXJpbG9nLWFsbCAoY29ucyBz IHZlcmlsb2ctYWxsKSkpKSkKCSAga2V5d29yZC1saXN0KSkKCgooZGVmdW4gdmVyaWxvZy1jb21w bGV0aW9uICh2ZXJpbG9nLXN0ciB2ZXJpbG9nLXByZWQgdmVyaWxvZy1mbGFnKQogICJGdW5jdGlv biBwYXNzZWQgdG8gYGNvbXBsZXRpbmctcmVhZCcsIGB0cnktY29tcGxldGlvbicgb3IgYGFsbC1j b21wbGV0aW9ucycuCkNhbGxlZCB0byBnZXQgY29tcGxldGlvbiBvbiBWRVJJTE9HLVNUUi4gIElm IFZFUklMT0ctUFJFRCBpcyBub24tbmlsLCBpdAptdXN0IGJlIGEgZnVuY3Rpb24gdG8gYmUgY2Fs bGVkIGZvciBldmVyeSBtYXRjaCB0byBjaGVjayBpZiB0aGlzIHNob3VsZApyZWFsbHkgYmUgYSBt YXRjaC4gIElmIFZFUklMT0ctRkxBRyBpcyB0LCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qg b2YKYWxsIHBvc3NpYmxlIGNvbXBsZXRpb25zLiAgSWYgVkVSSUxPRy1GTEFHIGlzIG5pbCBpdCBy ZXR1cm5zIGEgc3RyaW5nLAp0aGUgbG9uZ2VzdCBwb3NzaWJsZSBjb21wbGV0aW9uLCBvciB0IGlm IFZFUklMT0ctU1RSIGlzIGFuIGV4YWN0IG1hdGNoLgpJZiBWRVJJTE9HLUZMQUcgaXMgYGxhbWJk YScsIHRoZSBmdW5jdGlvbiByZXR1cm5zIHQgaWYgVkVSSUxPRy1TVFIgaXMgYW4KZXhhY3QgbWF0 Y2gsIG5pbCBvdGhlcndpc2UuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGxldCAoKHZlcmlsb2ct YWxsIG5pbCkpCiAgICAgIDs7IFNldCBidWZmZXIgdG8gdXNlIGZvciBzZWFyY2hpbmcgbGFiZWxz LiBUaGlzIHNob3VsZCBiZSBzZXQKICAgICAgOzsgd2l0aGluIGZ1bmN0aW9ucyB3aGljaCB1c2Ug dmVyaWxvZy1jb21wbGV0aW9ucwogICAgICAoc2V0LWJ1ZmZlciB2ZXJpbG9nLWJ1ZmZlci10by11 c2UpCgogICAgICA7OyBEZXRlcm1pbmUgd2hhdCBzaG91bGQgYmUgY29tcGxldGVkCiAgICAgIChs ZXQgKChzdGF0ZSAoY2FyICh2ZXJpbG9nLWNhbGN1bGF0ZS1pbmRlbnQpKSkpCgkoY29uZCAoKGVx IHN0YXRlICdkZWZ1bikKCSAgICAgICAoc2F2ZS1leGN1cnNpb24gKHZlcmlsb2ctdmFyLWNvbXBs ZXRpb24pKQoJICAgICAgICh2ZXJpbG9nLWZ1bmMtY29tcGxldGlvbiAnbW9kdWxlKQoJICAgICAg ICh2ZXJpbG9nLWtleXdvcmQtY29tcGxldGlvbiB2ZXJpbG9nLWRlZnVuLWtleXdvcmRzKSkKCgkg ICAgICAoKGVxIHN0YXRlICdiZWhhdmlvcmFsKQoJICAgICAgIChzYXZlLWV4Y3Vyc2lvbiAodmVy aWxvZy12YXItY29tcGxldGlvbikpCgkgICAgICAgKHZlcmlsb2ctZnVuYy1jb21wbGV0aW9uICdt b2R1bGUpCgkgICAgICAgKHZlcmlsb2cta2V5d29yZC1jb21wbGV0aW9uIHZlcmlsb2ctZGVmdW4t a2V5d29yZHMpKQoKCSAgICAgICgoZXEgc3RhdGUgJ2Jsb2NrKQoJICAgICAgIChzYXZlLWV4Y3Vy c2lvbiAodmVyaWxvZy12YXItY29tcGxldGlvbikpCgkgICAgICAgKHZlcmlsb2ctZnVuYy1jb21w bGV0aW9uICd0ZikKCSAgICAgICAodmVyaWxvZy1rZXl3b3JkLWNvbXBsZXRpb24gdmVyaWxvZy1i bG9jay1rZXl3b3JkcykpCgoJICAgICAgKChlcSBzdGF0ZSAnY2FzZSkKCSAgICAgICAoc2F2ZS1l eGN1cnNpb24gKHZlcmlsb2ctdmFyLWNvbXBsZXRpb24pKQoJICAgICAgICh2ZXJpbG9nLWZ1bmMt Y29tcGxldGlvbiAndGYpCgkgICAgICAgKHZlcmlsb2cta2V5d29yZC1jb21wbGV0aW9uIHZlcmls b2ctY2FzZS1rZXl3b3JkcykpCgoJICAgICAgKChlcSBzdGF0ZSAndGYpCgkgICAgICAgKHNhdmUt ZXhjdXJzaW9uICh2ZXJpbG9nLXZhci1jb21wbGV0aW9uKSkKCSAgICAgICAodmVyaWxvZy1mdW5j LWNvbXBsZXRpb24gJ3RmKQoJICAgICAgICh2ZXJpbG9nLWtleXdvcmQtY29tcGxldGlvbiB2ZXJp bG9nLXRmLWtleXdvcmRzKSkKCgkgICAgICAoKGVxIHN0YXRlICdjcHApCgkgICAgICAgKHNhdmUt ZXhjdXJzaW9uICh2ZXJpbG9nLXZhci1jb21wbGV0aW9uKSkKCSAgICAgICAodmVyaWxvZy1rZXl3 b3JkLWNvbXBsZXRpb24gdmVyaWxvZy1jcHAta2V5d29yZHMpKQoKCSAgICAgICgoZXEgc3RhdGUg J2NwYXJlbmV4cCkKCSAgICAgICAoc2F2ZS1leGN1cnNpb24gKHZlcmlsb2ctdmFyLWNvbXBsZXRp b24pKSkKCgkgICAgICAodDstLUFueXdoZXJlIGVsc2UKCSAgICAgICAoc2F2ZS1leGN1cnNpb24g KHZlcmlsb2ctdmFyLWNvbXBsZXRpb24pKQoJICAgICAgICh2ZXJpbG9nLWZ1bmMtY29tcGxldGlv biAnYm90aCkKCSAgICAgICAodmVyaWxvZy1rZXl3b3JkLWNvbXBsZXRpb24gdmVyaWxvZy1zZXBh cmF0b3Ita2V5d29yZHMpKSkpCgogICAgICA7OyBOb3cgd2UgaGF2ZSBidWlsdCBhIGxpc3Qgb2Yg YWxsIG1hdGNoZXMuIEdpdmUgcmVzcG9uc2UgdG8gY2FsbGVyCiAgICAgICh2ZXJpbG9nLWNvbXBs ZXRpb24tcmVzcG9uc2UpKSkpCgooZGVmdW4gdmVyaWxvZy1jb21wbGV0aW9uLXJlc3BvbnNlICgp CiAgKGNvbmQgKChvciAoZXF1YWwgdmVyaWxvZy1mbGFnICdsYW1iZGEpIChudWxsIHZlcmlsb2ct ZmxhZykpCgkgOzsgVGhpcyB3YXMgbm90IGNhbGxlZCBieSBhbGwtY29tcGxldGlvbnMKCSAoaWYg KG51bGwgdmVyaWxvZy1hbGwpCgkgICAgIDs7IFJldHVybiBuaWwgaWYgdGhlcmUgd2FzIG5vIG1h dGNoaW5nIGxhYmVsCgkgICAgIG5pbAoJICAgOzsgR2V0IGxvbmdlc3Qgc3RyaW5nIGNvbW1vbiBp biB0aGUgbGFiZWxzCiAgICAgICAgICAgOzsgRklYTUU6IFdoeSBub3QgdXNlIGB0cnktY29tcGxl dGlvbic/CgkgICAobGV0KiAoKGVsbSAoY2RyIHZlcmlsb2ctYWxsKSkKCQkgIChtYXRjaCAoY2Fy IHZlcmlsb2ctYWxsKSkKCQkgIChtaW4gKGxlbmd0aCBtYXRjaCkpCgkJICB0bXApCgkgICAgIChp ZiAoc3RyaW5nPSBtYXRjaCB2ZXJpbG9nLXN0cikKCQkgOzsgUmV0dXJuIHQgaWYgZmlyc3QgbWF0 Y2ggd2FzIGFuIGV4YWN0IG1hdGNoCgkJIChzZXRxIG1hdGNoIHQpCgkgICAgICAgKHdoaWxlIChu b3QgKG51bGwgZWxtKSkKCQkgOzsgRmluZCBsb25nZXN0IGNvbW1vbiBzdHJpbmcKCQkgKGlmICg8 IChzZXRxIHRtcCAodmVyaWxvZy1zdHJpbmctZGlmZiBtYXRjaCAoY2FyIGVsbSkpKSBtaW4pCgkJ ICAgICAocHJvZ24KCQkgICAgICAgKHNldHEgbWluIHRtcCkKCQkgICAgICAgKHNldHEgbWF0Y2gg KHN1YnN0cmluZyBtYXRjaCAwIG1pbikpKSkKCQkgOzsgVGVybWluYXRlIHdpdGggbWF0Y2g9dCBp ZiB0aGlzIGlzIGFuIGV4YWN0IG1hdGNoCgkJIChpZiAoc3RyaW5nPSAoY2FyIGVsbSkgdmVyaWxv Zy1zdHIpCgkJICAgICAocHJvZ24KCQkgICAgICAgKHNldHEgbWF0Y2ggdCkKCQkgICAgICAgKHNl dHEgZWxtIG5pbCkpCgkJICAgKHNldHEgZWxtIChjZHIgZWxtKSkpKSkKCSAgICAgOzsgSWYgdGhp cyBpcyBhIHRlc3QganVzdCBmb3IgZXhhY3QgbWF0Y2gsIHJldHVybiBuaWwgb3QgdAoJICAgICAo aWYgKGFuZCAoZXF1YWwgdmVyaWxvZy1mbGFnICdsYW1iZGEpIChub3QgKGVxdWFsIG1hdGNoICd0 KSkpCgkJIG5pbAoJICAgICAgIG1hdGNoKSkpKQoJOzsgSWYgZmxhZyBpcyB0LCB0aGlzIHdhcyBj YWxsZWQgYnkgYWxsLWNvbXBsZXRpb25zLiBSZXR1cm4KCTs7IGxpc3Qgb2YgYWxsIHBvc3NpYmxl IGNvbXBsZXRpb25zCgkodmVyaWxvZy1mbGFnCgkgdmVyaWxvZy1hbGwpKSkKCihkZWZ2YXIgdmVy aWxvZy1sYXN0LXdvcmQtbnVtYiAwKQooZGVmdmFyIHZlcmlsb2ctbGFzdC13b3JkLXNob3duIG5p bCkKKGRlZnZhciB2ZXJpbG9nLWxhc3QtY29tcGxldGlvbnMgbmlsKQoKKGRlZnVuIHZlcmlsb2ct Y29tcGxldGlvbi1hdC1wb2ludCAoKQogICJVc2VkIGFzIGFuIGVsZW1lbnQgb2YgYGNvbXBsZXRp b24tYXQtcG9pbnQtZnVuY3Rpb25zJy4KXChTZWUgYWxzbyBgdmVyaWxvZy10eXBlLWtleXdvcmRz JyBhbmQKYHZlcmlsb2ctc2VwYXJhdG9yLWtleXdvcmRzJy4pIgogIChsZXQqICgoYiAoc2F2ZS1l eGN1cnNpb24gKHNraXAtY2hhcnMtYmFja3dhcmQgImEtekEtWjAtOV8iKSAocG9pbnQpKSkKICAg ICAgICAgKGUgKHNhdmUtZXhjdXJzaW9uIChza2lwLWNoYXJzLWZvcndhcmQgImEtekEtWjAtOV8i KSAocG9pbnQpKSkKICAgICAgICAgKHZlcmlsb2ctc3RyIChidWZmZXItc3Vic3RyaW5nIGIgZSkp CiAgICAgICAgIDs7IFRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgdXNlZCBpbiB2ZXJpbG9nLWNv bXBsZXRpb24KICAgICAgICAgKHZlcmlsb2ctYnVmZmVyLXRvLXVzZSAoY3VycmVudC1idWZmZXIp KQogICAgICAgICAoYWxsY29tcCAoaWYgKGFuZCB2ZXJpbG9nLXRvZ2dsZS1jb21wbGV0aW9ucwog ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nPSB2ZXJpbG9nLWxhc3Qtd29yZC1zaG93 biB2ZXJpbG9nLXN0cikpCiAgICAgICAgICAgICAgICAgICAgICB2ZXJpbG9nLWxhc3QtY29tcGxl dGlvbnMKICAgICAgICAgICAgICAgICAgICAoYWxsLWNvbXBsZXRpb25zIHZlcmlsb2ctc3RyICd2 ZXJpbG9nLWNvbXBsZXRpb24pKSkpCiAgICAobGlzdCBiIGUgYWxsY29tcCkpKQoKKGRlZnVuIHZl cmlsb2ctY29tcGxldGUtd29yZCAoKQogICJDb21wbGV0ZSB3b3JkIGF0IGN1cnJlbnQgcG9pbnQu ClwoU2VlIGFsc28gYHZlcmlsb2ctdG9nZ2xlLWNvbXBsZXRpb25zJywgYHZlcmlsb2ctdHlwZS1r ZXl3b3JkcycsCmFuZCBgdmVyaWxvZy1zZXBhcmF0b3Ita2V5d29yZHMnLikiCiAgOzsgTk9URTog VGhpcyBpcyBqdXN0IGEgZmFsbGJhY2sgZm9yIEVtYWNzIHZlcnNpb25zIGxhY2tpbmcKICA7OyBg Y29tcGxldGlvbi1hdC1wb2ludCcuCiAgKGludGVyYWN0aXZlKQogIChsZXQqICgoY29tcC1pbmZv ICh2ZXJpbG9nLWNvbXBsZXRpb24tYXQtcG9pbnQpKQogICAgICAgICAoYiAobnRoIDAgY29tcC1p bmZvKSkKCSAoZSAobnRoIDEgY29tcC1pbmZvKSkKCSAodmVyaWxvZy1zdHIgKGJ1ZmZlci1zdWJz dHJpbmcgYiBlKSkKCSAoYWxsY29tcCAobnRoIDIgY29tcC1pbmZvKSkKCSAobWF0Y2ggKGlmIHZl cmlsb2ctdG9nZ2xlLWNvbXBsZXRpb25zCgkJICAgICIiICh0cnktY29tcGxldGlvbgoJCQl2ZXJp bG9nLXN0ciAobWFwY2FyIChsYW1iZGEgKGVsbSkKCQkJCQkgICAgICAoY29ucyBlbG0gMCkpIGFs bGNvbXApKSkpKQogICAgOzsgRGVsZXRlIG9sZCBzdHJpbmcKICAgIChkZWxldGUtcmVnaW9uIGIg ZSkKCiAgICA7OyBUb2dnbGUtY29tcGxldGlvbnMgaW5zZXJ0cyB3aG9sZSBsYWJlbHMKICAgIChp ZiB2ZXJpbG9nLXRvZ2dsZS1jb21wbGV0aW9ucwoJKHByb2duCgkgIDs7IFVwZGF0ZSBlbnRyeSBu dW1iZXIgaW4gbGlzdAoJICAoc2V0cSB2ZXJpbG9nLWxhc3QtY29tcGxldGlvbnMgYWxsY29tcAoJ CXZlcmlsb2ctbGFzdC13b3JkLW51bWIKCQkoaWYgKD49IHZlcmlsb2ctbGFzdC13b3JkLW51bWIg KDEtIChsZW5ndGggYWxsY29tcCkpKQoJCSAgICAwCgkJICAoMSsgdmVyaWxvZy1sYXN0LXdvcmQt bnVtYikpKQoJICAoc2V0cSB2ZXJpbG9nLWxhc3Qtd29yZC1zaG93biAoZWx0IGFsbGNvbXAgdmVy aWxvZy1sYXN0LXdvcmQtbnVtYikpCgkgIDs7IERpc3BsYXkgbmV4dCBtYXRjaCBvciBzYW1lIHN0 cmluZyBpZiBubyBtYXRjaCB3YXMgZm91bmQKCSAgKGlmIChub3QgKG51bGwgYWxsY29tcCkpCgkg ICAgICAoaW5zZXJ0ICIiIHZlcmlsb2ctbGFzdC13b3JkLXNob3duKQoJICAgIChpbnNlcnQgIiIg dmVyaWxvZy1zdHIpCgkgICAgKG1lc3NhZ2UgIihObyBtYXRjaCkiKSkpCiAgICAgIDs7IFRoZSBv dGhlciBmb3JtIG9mIGNvbXBsZXRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgZG8gdGhhdC4KCiAg ICAgIDs7IEluc2VydCBtYXRjaCBpZiBmb3VuZCwgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyBpZiBu byBtYXRjaAogICAgICAoaWYgKG9yIChudWxsIG1hdGNoKSAoZXF1YWwgbWF0Y2ggJ3QpKQoJICAo cHJvZ24gKGluc2VydCAiIiB2ZXJpbG9nLXN0cikKCQkgKG1lc3NhZ2UgIihObyBtYXRjaCkiKSkK CShpbnNlcnQgIiIgbWF0Y2gpKQogICAgICA7OyBHaXZlIG1lc3NhZ2UgYWJvdXQgY3VycmVudCBz dGF0dXMgb2YgY29tcGxldGlvbgogICAgICAoY29uZCAoKGVxdWFsIG1hdGNoICd0KQoJICAgICAo aWYgKG5vdCAobnVsbCAoY2RyIGFsbGNvbXApKSkKCQkgKG1lc3NhZ2UgIihDb21wbGV0ZSBidXQg bm90IHVuaXF1ZSkiKQoJICAgICAgIChtZXNzYWdlICIoU29sZSBjb21wbGV0aW9uKSIpKSkKCSAg ICA7OyBEaXNwbGF5IGJ1ZmZlciBpZiB0aGUgY3VycmVudCBjb21wbGV0aW9uIGRpZG4ndCBoZWxw CgkgICAgOzsgb24gY29tcGxldGluZyB0aGUgbGFiZWwuCgkgICAgKChhbmQgKG5vdCAobnVsbCAo Y2RyIGFsbGNvbXApKSkgKD0gKGxlbmd0aCB2ZXJpbG9nLXN0cikKCQkJCQkJKGxlbmd0aCBtYXRj aCkpKQoJICAgICAod2l0aC1vdXRwdXQtdG8tdGVtcC1idWZmZXIgIipDb21wbGV0aW9ucyoiCgkg ICAgICAgKGRpc3BsYXktY29tcGxldGlvbi1saXN0IGFsbGNvbXApKQoJICAgICA7OyBXYWl0IGZv ciBhIGtleSBwcmVzcy4gVGhlbiBkZWxldGUgKkNvbXBsZXRpb24qICB3aW5kb3cKCSAgICAgKG1v bWVudGFyeS1zdHJpbmctZGlzcGxheSAiIiAocG9pbnQpKQoJICAgICAodmVyaWxvZy1xdWl0LXdp bmRvdyBuaWwgKGdldC1idWZmZXItd2luZG93ICIqQ29tcGxldGlvbnMqIikpCgkgICAgICkpKSkp CgooZGVmdW4gdmVyaWxvZy1zaG93LWNvbXBsZXRpb25zICgpCiAgIlNob3cgYWxsIHBvc3NpYmxl IGNvbXBsZXRpb25zIGF0IGN1cnJlbnQgcG9pbnQuIgogIDs7IE5PVEU6IFRoaXMgaXMganVzdCBh IGZhbGxiYWNrIGZvciBFbWFjcyB2ZXJzaW9ucyBsYWNraW5nCiAgOzsgYGNvbXBsZXRpb24taGVs cC1hdC1wb2ludCcuCiAgKGludGVyYWN0aXZlKQogIDs7IFNob3cgcG9zc2libGUgY29tcGxldGlv bnMgaW4gYSB0ZW1wb3JhcnkgYnVmZmVyLgogICh3aXRoLW91dHB1dC10by10ZW1wLWJ1ZmZlciAi KkNvbXBsZXRpb25zKiIKICAgIChkaXNwbGF5LWNvbXBsZXRpb24tbGlzdCAobnRoIDIgKHZlcmls b2ctY29tcGxldGlvbi1hdC1wb2ludCkpKSkKICA7OyBXYWl0IGZvciBhIGtleSBwcmVzcy4gVGhl biBkZWxldGUgKkNvbXBsZXRpb24qICB3aW5kb3cKICAobW9tZW50YXJ5LXN0cmluZy1kaXNwbGF5 ICIiIChwb2ludCkpCiAgKHZlcmlsb2ctcXVpdC13aW5kb3cgbmlsIChnZXQtYnVmZmVyLXdpbmRv dyAiKkNvbXBsZXRpb25zKiIpKSkKCihkZWZ1biB2ZXJpbG9nLWdldC1kZWZhdWx0LXN5bWJvbCAo KQogICJSZXR1cm4gc3ltYm9sIGFyb3VuZCBjdXJyZW50IHBvaW50IGFzIGEgc3RyaW5nLiIKICAo c2F2ZS1leGN1cnNpb24KICAgIChidWZmZXItc3Vic3RyaW5nIChwcm9nbgoJCQkoc2tpcC1jaGFy cy1iYWNrd2FyZCAiIFx0IikKCQkJKHNraXAtY2hhcnMtYmFja3dhcmQgImEtekEtWjAtOV8iKQoJ CQkocG9pbnQpKQoJCSAgICAgIChwcm9nbgoJCQkoc2tpcC1jaGFycy1mb3J3YXJkICJhLXpBLVow LTlfIikKCQkJKHBvaW50KSkpKSkKCihkZWZ1biB2ZXJpbG9nLWJ1aWxkLWRlZnVuLXJlIChzdHIg Jm9wdGlvbmFsIGFyZykKICAiUmV0dXJuIGZ1bmN0aW9uL3Rhc2svbW9kdWxlIHN0YXJ0aW5nIHdp dGggU1RSIGFzIHJlZ3VsYXIgZXhwcmVzc2lvbi4KV2l0aCBvcHRpb25hbCBzZWNvbmQgQVJHIG5v bi1uaWwsIFNUUiBpcyB0aGUgY29tcGxldGUgbmFtZSBvZiB0aGUgaW5zdHJ1Y3Rpb24uIgogICh1 bmxlc3MgYXJnCiAgICAoc2V0cSBzdHIgKGNvbmNhdCBzdHIgIlthLXpBLVowLTlfXSoiKSkpCiAg KGNvbmNhdCAiXlxccy0qXFwoZnVuY3Rpb25cXHx0YXNrXFx8bW9kdWxlXFwpWyBcdF0rXFwoPzpc XCg/OnN0YXRpY1xcfGF1dG9tYXRpY1xcKVxccy0rXFwpP1xcKCIgc3RyICJcXClcXD4iKSkKCihk ZWZ1biB2ZXJpbG9nLWNvbXAtZGVmdW4gKHZlcmlsb2ctc3RyIHZlcmlsb2ctcHJlZCB2ZXJpbG9n LWZsYWcpCiAgIkZ1bmN0aW9uIHBhc3NlZCB0byBgY29tcGxldGluZy1yZWFkJywgYHRyeS1jb21w bGV0aW9uJyBvciBgYWxsLWNvbXBsZXRpb25zJy4KUmV0dXJucyBhIGNvbXBsZXRpb24gb24gYW55 IGZ1bmN0aW9uIG5hbWUgYmFzZWQgb24gVkVSSUxPRy1TVFIgcHJlZml4LiAgSWYKVkVSSUxPRy1Q UkVEIGlzIG5vbi1uaWwsIGl0IG11c3QgYmUgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZm9yIGV2 ZXJ5IG1hdGNoCnRvIGNoZWNrIGlmIHRoaXMgc2hvdWxkIHJlYWxseSBiZSBhIG1hdGNoLiAgSWYg VkVSSUxPRy1GTEFHIGlzIHQsIHRoZQpmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgcG9z c2libGUgY29tcGxldGlvbnMuICBJZiBpdCBpcyBuaWwgaXQKcmV0dXJucyBhIHN0cmluZywgdGhl IGxvbmdlc3QgcG9zc2libGUgY29tcGxldGlvbiwgb3IgdCBpZiBWRVJJTE9HLVNUUiBpcwphbiBl eGFjdCBtYXRjaC4gIElmIFZFUklMT0ctRkxBRyBpcyBgbGFtYmRhJywgdGhlIGZ1bmN0aW9uIHJl dHVybnMgdCBpZgpWRVJJTE9HLVNUUiBpcyBhbiBleGFjdCBtYXRjaCwgbmlsIG90aGVyd2lzZS4i CiAgKHNhdmUtZXhjdXJzaW9uCiAgICAobGV0ICgodmVyaWxvZy1hbGwgbmlsKQoJICBtYXRjaCkK CiAgICAgIDs7IFNldCBidWZmZXIgdG8gdXNlIGZvciBzZWFyY2hpbmcgbGFiZWxzLiBUaGlzIHNo b3VsZCBiZSBzZXQKICAgICAgOzsgd2l0aGluIGZ1bmN0aW9ucyB3aGljaCB1c2UgdmVyaWxvZy1j b21wbGV0aW9ucwogICAgICAoc2V0LWJ1ZmZlciB2ZXJpbG9nLWJ1ZmZlci10by11c2UpCgogICAg ICAobGV0ICgodmVyaWxvZy1zdHIgdmVyaWxvZy1zdHIpKQoJOzsgQnVpbGQgcmVndWxhciBleHBy ZXNzaW9uIGZvciBmdW5jdGlvbnMKCShpZiAoc3RyaW5nPSB2ZXJpbG9nLXN0ciAiIikKCSAgICAo c2V0cSB2ZXJpbG9nLXN0ciAodmVyaWxvZy1idWlsZC1kZWZ1bi1yZSAiW2EtekEtWl9dIikpCgkg IChzZXRxIHZlcmlsb2ctc3RyICh2ZXJpbG9nLWJ1aWxkLWRlZnVuLXJlIHZlcmlsb2ctc3RyKSkp CgkoZ290by1jaGFyIChwb2ludC1taW4pKQoKCTs7IEJ1aWxkIGEgbGlzdCBvZiBhbGwgcG9zc2li bGUgY29tcGxldGlvbnMKCSh3aGlsZSAodmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZCB2ZXJpbG9n LXN0ciBuaWwgdCkKCSAgKHNldHEgbWF0Y2ggKGJ1ZmZlci1zdWJzdHJpbmcgKG1hdGNoLWJlZ2lu bmluZyAyKSAobWF0Y2gtZW5kIDIpKSkKCSAgKGlmIChvciAobnVsbCB2ZXJpbG9nLXByZWQpCgkJ ICAoZnVuY2FsbCB2ZXJpbG9nLXByZWQgbWF0Y2gpKQoJICAgICAgKHNldHEgdmVyaWxvZy1hbGwg KGNvbnMgbWF0Y2ggdmVyaWxvZy1hbGwpKSkpKQoKICAgICAgOzsgTm93IHdlIGhhdmUgYnVpbHQg YSBsaXN0IG9mIGFsbCBtYXRjaGVzLiBHaXZlIHJlc3BvbnNlIHRvIGNhbGxlcgogICAgICAodmVy aWxvZy1jb21wbGV0aW9uLXJlc3BvbnNlKSkpKQoKKGRlZnVuIHZlcmlsb2ctZ290by1kZWZ1biAo KQogICJNb3ZlIHRvIHNwZWNpZmllZCBWZXJpbG9nIG1vZHVsZS9pbnRlcmZhY2UvdGFzay9mdW5j dGlvbi4KVGhlIGRlZmF1bHQgaXMgYSBuYW1lIGZvdW5kIGluIHRoZSBidWZmZXIgYXJvdW5kIHBv aW50LgpJZiBzZWFyY2ggZmFpbHMsIG90aGVyIGZpbGVzIGFyZSBjaGVja2VkIGJhc2VkIG9uCmB2 ZXJpbG9nLWxpYnJhcnktZmxhZ3MnLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCogKChkZWZhdWx0 ICh2ZXJpbG9nLWdldC1kZWZhdWx0LXN5bWJvbCkpCgkgOzsgVGhlIGZvbGxvd2luZyB2YXJpYWJs ZSBpcyB1c2VkIGluIHZlcmlsb2ctY29tcC1mdW5jdGlvbgoJICh2ZXJpbG9nLWJ1ZmZlci10by11 c2UgKGN1cnJlbnQtYnVmZmVyKSkKCSAobGFiZWwgKGlmIChub3QgKHN0cmluZz0gZGVmYXVsdCAi IikpCgkJICAgIDs7IERvIGNvbXBsZXRpb24gd2l0aCBkZWZhdWx0CgkJICAgIChjb21wbGV0aW5n LXJlYWQgKGNvbmNhdCAiR290by1MYWJlbDogKGRlZmF1bHQgIgoJCQkJCSAgICAgZGVmYXVsdCAi KSAiKQoJCQkJICAgICAndmVyaWxvZy1jb21wLWRlZnVuIG5pbCBuaWwgIiIpCgkJICA7OyBUaGVy ZSBpcyBubyBkZWZhdWx0IHZhbHVlLiBDb21wbGV0ZSB3aXRob3V0IGl0CgkJICAoY29tcGxldGlu Zy1yZWFkICJHb3RvLUxhYmVsOiAiCgkJCQkgICAndmVyaWxvZy1jb21wLWRlZnVuIG5pbCBuaWwg IiIpKSkKCSBwdCkKICAgIDs7IE1ha2Ugc3VyZSBsaWJyYXJ5IHBhdGhzIGFyZSBjb3JyZWN0LCBp biBjYXNlIG5lZWQgdG8gcmVzb2x2ZSBtb2R1bGUKICAgICh2ZXJpbG9nLWF1dG8tcmVldmFsLWxv Y2FscykKICAgICh2ZXJpbG9nLWdldG9wdC1mbGFncykKICAgIDs7IElmIHRoZXJlIHdhcyBubyBy ZXNwb25zZSBvbiBwcm9tcHQsIHVzZSBkZWZhdWx0IHZhbHVlCiAgICAoaWYgKHN0cmluZz0gbGFi ZWwgIiIpCgkoc2V0cSBsYWJlbCBkZWZhdWx0KSkKICAgIDs7IEdvdG8gcmlnaHQgcGxhY2UgaW4g YnVmZmVyIGlmIGxhYmVsIGlzIG5vdCBhbiBlbXB0eSBzdHJpbmcKICAgIChvciAoc3RyaW5nPSBs YWJlbCAiIikKCShwcm9nbgoJICAoc2F2ZS1leGN1cnNpb24KCSAgICAoZ290by1jaGFyIChwb2lu dC1taW4pKQoJICAgIChzZXRxIHB0CgkJICAocmUtc2VhcmNoLWZvcndhcmQgKHZlcmlsb2ctYnVp bGQtZGVmdW4tcmUgbGFiZWwgdCkgbmlsIHQpKSkKCSAgKHdoZW4gcHQKCSAgICAoZ290by1jaGFy IHB0KQoJICAgIChiZWdpbm5pbmctb2YtbGluZSkpCgkgIHB0KQoJKHZlcmlsb2ctZ290by1kZWZ1 bi1maWxlIGxhYmVsKSkpKQoKOzsgRWxpbWluYXRlIGNvbXBpbGUgd2FybmluZwooZGVmdmFyIG9j Y3VyLXBvcy1saXN0KQoKKGRlZnVuIHZlcmlsb2ctc2hvd3Njb3BlcyAoKQogICJMaXN0IGFsbCBz Y29wZXMgaW4gdGhpcyBtb2R1bGUuIgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgoYnVmZmVyIChj dXJyZW50LWJ1ZmZlcikpCgkobGluZW51bSAxKQoJKG5saW5lcyAwKQoJKGZpcnN0IDEpCgkocHJl dnBvcyAocG9pbnQtbWluKSkKICAgICAgICAoZmluYWwtY29udGV4dC1zdGFydCAobWFrZS1tYXJr ZXIpKQogICAgICAgKHJlZ2V4cCAiXFwoXFwoY29ubmVjdFxcKT9tb2R1bGVcXHMtK1xcdytcXHMt KihcXClcXHxcXChcXHcrXFxzLStcXHcrXFxzLSooXFwpIikpCiAgICAod2l0aC1vdXRwdXQtdG8t dGVtcC1idWZmZXIgIipPY2N1cioiCiAgICAgIChzYXZlLWV4Y3Vyc2lvbgoJKG1lc3NhZ2UgIlNl YXJjaGluZyBmb3IgJXMgLi4uIiByZWdleHApCgk7OyBGaW5kIG5leHQgbWF0Y2gsIGJ1dCBnaXZl IHVwIGlmIHByZXYgbWF0Y2ggd2FzIGF0IGVuZCBvZiBidWZmZXIuCgkod2hpbGUgKGFuZCAobm90 ICg9IHByZXZwb3MgKHBvaW50LW1heCkpKQoJCSAgICAodmVyaWxvZy1yZS1zZWFyY2gtZm9yd2Fy ZCByZWdleHAgbmlsIHQpKQoJICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMCkpCgkgIChi ZWdpbm5pbmctb2YtbGluZSkKCSAgKHNhdmUtbWF0Y2gtZGF0YQogICAgICAgICAgICAoc2V0cSBs aW5lbnVtICgrIGxpbmVudW0gKGNvdW50LWxpbmVzIHByZXZwb3MgKHBvaW50KSkpKSkKCSAgKHNl dHEgcHJldnBvcyAocG9pbnQpKQoJICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCgkgIChsZXQq ICgoc3RhcnQgKHNhdmUtZXhjdXJzaW9uCgkJCSAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5n IDApKQoJCQkgIChmb3J3YXJkLWxpbmUgKGlmICg8IG5saW5lcyAwKSBubGluZXMgKC0gbmxpbmVz KSkpCgkJCSAgKHBvaW50KSkpCgkJIChlbmQgKHNhdmUtZXhjdXJzaW9uCgkJCShnb3RvLWNoYXIg KG1hdGNoLWVuZCAwKSkKCQkJKGlmICg+IG5saW5lcyAwKQoJCQkgICAgKGZvcndhcmQtbGluZSAo MSsgbmxpbmVzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lIDEpKQoJ CQkocG9pbnQpKSkKCQkgKHRhZyAoZm9ybWF0ICIlM2QiIGxpbmVudW0pKQoJCSAoZW1wdHkgKG1h a2Utc3RyaW5nIChsZW5ndGggdGFnKSA/XCApKQoJCSB0ZW0pCgkgICAgKHNhdmUtZXhjdXJzaW9u CgkgICAgICAoc2V0cSB0ZW0gKG1ha2UtbWFya2VyKSkKCSAgICAgIChzZXQtbWFya2VyIHRlbSAo cG9pbnQpKQoJICAgICAgKHNldC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0KQoJICAgICAgKHNldHEg b2NjdXItcG9zLWxpc3QgKGNvbnMgdGVtIG9jY3VyLXBvcy1saXN0KSkKCSAgICAgIChvciBmaXJz dCAoemVyb3AgbmxpbmVzKQoJCSAgKGluc2VydCAiLS0tLS0tLS1cbiIpKQoJICAgICAgKHNldHEg Zmlyc3QgbmlsKQoJICAgICAgKGluc2VydC1idWZmZXItc3Vic3RyaW5nIGJ1ZmZlciBzdGFydCBl bmQpCgkgICAgICAoYmFja3dhcmQtY2hhciAoLSBlbmQgc3RhcnQpKQoJICAgICAgKHNldHEgdGVt IChpZiAoPCBubGluZXMgMCkgKC0gbmxpbmVzKSBubGluZXMpKQoJICAgICAgKHdoaWxlICg+IHRl bSAwKQoJCShpbnNlcnQgZW1wdHkgPzopCgkJKGZvcndhcmQtbGluZSAxKQoJCShzZXRxIHRlbSAo MS0gdGVtKSkpCgkgICAgICAobGV0ICgodGhpcy1saW5lbnVtIGxpbmVudW0pKQoJCShzZXQtbWFy a2VyIGZpbmFsLWNvbnRleHQtc3RhcnQKCQkJICAgICgrIChwb2ludCkgKC0gKG1hdGNoLWVuZCAw KSAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCgkJKHdoaWxlICg8IChwb2ludCkgZmluYWwtY29udGV4 dC1zdGFydCkKCQkgIChpZiAobnVsbCB0YWcpCgkJICAgICAgKHNldHEgdGFnIChmb3JtYXQgIiUz ZCIgdGhpcy1saW5lbnVtKSkpCgkJICAoaW5zZXJ0IHRhZyA/OikpKSkpKSkKICAgICAgKHNldC1i dWZmZXItbW9kaWZpZWQtcCBuaWwpKSkpCgoKOzsgSGlnaGxpZ2h0IGhlbHBlciBmdW5jdGlvbnMK KGRlZmNvbnN0IHZlcmlsb2ctZGlyZWN0aXZlLXJlZ2V4cCAiXFwodHJhbnNsYXRlXFx8Y292ZXJh Z2VcXHxsaW50XFwpXyIpCgooZGVmdW4gdmVyaWxvZy13aXRoaW4tdHJhbnNsYXRlLW9mZiAoKQog ICJSZXR1cm4gcG9pbnQgaWYgd2l0aGluIHRyYW5zbGF0ZS1vZmYgcmVnaW9uLCBlbHNlIG5pbC4i CiAgKGFuZCAoc2F2ZS1leGN1cnNpb24KCSAocmUtc2VhcmNoLWJhY2t3YXJkCgkgIChjb25jYXQg Ii8vLioiIHZlcmlsb2ctZGlyZWN0aXZlLXJlZ2V4cCAiXFwob25cXHxvZmZcXClcXD4iKQoJICBu aWwgdCkpCiAgICAgICAoZXF1YWwgIm9mZiIgKG1hdGNoLXN0cmluZyAyKSkKICAgICAgIChwb2lu dCkpKQoKKGRlZnVuIHZlcmlsb2ctc3RhcnQtdHJhbnNsYXRlLW9mZiAobGltaXQpCiAgIlJldHVy biBwb2ludCBiZWZvcmUgdHJhbnNsYXRlLW9mZiBkaXJlY3RpdmUgaWYgYmVmb3JlIExJTUlULCBl bHNlIG5pbC4iCiAgKHdoZW4gKHJlLXNlYXJjaC1mb3J3YXJkCiAgICAgICAgIChjb25jYXQgIi8v LioiIHZlcmlsb2ctZGlyZWN0aXZlLXJlZ2V4cCAib2ZmXFw+IikKICAgICAgICAgbGltaXQgdCkK ICAgIChtYXRjaC1iZWdpbm5pbmcgMCkpKQoKKGRlZnVuIHZlcmlsb2ctYmFjay10by1zdGFydC10 cmFuc2xhdGUtb2ZmIChsaW1pdCkKICAiUmV0dXJuIHBvaW50IGJlZm9yZSB0cmFuc2xhdGUtb2Zm IGRpcmVjdGl2ZSBpZiBiZWZvcmUgTElNSVQsIGVsc2UgbmlsLiIKICAod2hlbiAocmUtc2VhcmNo LWJhY2t3YXJkCiAgICAgICAgIChjb25jYXQgIi8vLioiIHZlcmlsb2ctZGlyZWN0aXZlLXJlZ2V4 cCAib2ZmXFw+IikKICAgICAgICAgbGltaXQgdCkKICAgIChtYXRjaC1iZWdpbm5pbmcgMCkpKQoK KGRlZnVuIHZlcmlsb2ctZW5kLXRyYW5zbGF0ZS1vZmYgKGxpbWl0KQogICJSZXR1cm4gcG9pbnQg YWZ0ZXIgdHJhbnNsYXRlLW9uIGRpcmVjdGl2ZSBpZiBiZWZvcmUgTElNSVQsIGVsc2UgbmlsLiIK CiAgKHJlLXNlYXJjaC1mb3J3YXJkIChjb25jYXQKCQkgICAgICAiLy8uKiIgdmVyaWxvZy1kaXJl Y3RpdmUtcmVnZXhwICJvblxcPiIpIGxpbWl0IHQpKQoKKGRlZnVuIHZlcmlsb2ctbWF0Y2gtdHJh bnNsYXRlLW9mZiAobGltaXQpCiAgIk1hdGNoIGEgdHJhbnNsYXRlLW9mZiBibG9jaywgc2V0dGlu ZyBgbWF0Y2gtZGF0YScgYW5kIHJldHVybmluZyB0LCBlbHNlIG5pbC4KQm91bmQgc2VhcmNoIGJ5 IExJTUlULiIKICAod2hlbiAoPCAocG9pbnQpIGxpbWl0KQogICAgKGxldCAoKHN0YXJ0IChvciAo dmVyaWxvZy13aXRoaW4tdHJhbnNsYXRlLW9mZikKCQkgICAgICh2ZXJpbG9nLXN0YXJ0LXRyYW5z bGF0ZS1vZmYgbGltaXQpKSkKCSAgKGNhc2UtZm9sZC1zZWFyY2ggdCkpCiAgICAgICh3aGVuIHN0 YXJ0CgkobGV0ICgoZW5kIChvciAodmVyaWxvZy1lbmQtdHJhbnNsYXRlLW9mZiBsaW1pdCkgbGlt aXQpKSkKCSAgKHNldC1tYXRjaC1kYXRhIChsaXN0IHN0YXJ0IGVuZCkpCgkgIChnb3RvLWNoYXIg ZW5kKSkpKSkpCgooZGVmdW4gdmVyaWxvZy1mb250LWxvY2stbWF0Y2gtaXRlbSAobGltaXQpCiAg Ik1hdGNoLCBhbmQgbW92ZSBvdmVyLCBhbnkgZGVjbGFyYXRpb24gaXRlbSBhZnRlciBwb2ludC4K Qm91bmQgc2VhcmNoIGJ5IExJTUlULiAgQWRhcHRlZCBmcm9tCmBmb250LWxvY2stbWF0Y2gtYy1z dHlsZS1kZWNsYXJhdGlvbi1pdGVtLWFuZC1za2lwLXRvLW5leHQnLiIKICAoY29uZGl0aW9uLWNh c2UgbmlsCiAgICAgIChzYXZlLXJlc3RyaWN0aW9uCgkobmFycm93LXRvLXJlZ2lvbiAocG9pbnQt bWluKSBsaW1pdCkKCTs7IG1hdGNoIGl0ZW0KCSh3aGVuIChsb29raW5nLWF0ICJcXHMtKlxcKFth LXpBLVpdXFx3KlxcKSIpCgkgIChzYXZlLW1hdGNoLWRhdGEKCSAgICAoZ290by1jaGFyIChtYXRj aC1lbmQgMSkpCgkgICAgOzsgbW92ZSB0byBuZXh0IGl0ZW0KCSAgICAoaWYgKGxvb2tpbmctYXQg IlxcKFxccy0qLFxcKSIpCgkJKGdvdG8tY2hhciAobWF0Y2gtZW5kIDEpKQoJICAgICAgKGVuZC1v Zi1saW5lKSB0KSkpKQogICAgKGVycm9yIG5pbCkpKQoKCjs7IEFkZGVkIGJ5IFN1YmJ1IE1laXlh cHBhbiBmb3IgSGVhZGVyCgooZGVmdW4gdmVyaWxvZy1oZWFkZXIgKCkKICAiSW5zZXJ0IGEgc3Rh bmRhcmQgVmVyaWxvZyBmaWxlIGhlYWRlci4KU2VlIGFsc28gYHZlcmlsb2ctc2staGVhZGVyJyBm b3IgYW4gYWx0ZXJuYXRpdmUgZm9ybWF0LiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKHN0YXJ0 IChwb2ludCkpKQogICAgKGluc2VydCAiXAovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIFRpdGxl ICAgICAgICAgOiA8dGl0bGU+Ci8vIFByb2plY3QgICAgICAgOiA8cHJvamVjdD4KLy8tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQovLyBGaWxlICAgICAgICAgIDogPGZpbGVuYW1lPgovLyBBdXRob3IgICAg ICAgIDogPGF1dGhvcj4KLy8gQ3JlYXRlZCAgICAgICA6IDxjcmVkYXRlPgovLyBMYXN0IG1vZGlm aWVkIDogPG1vZGRhdGU+Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRGVzY3JpcHRpb24gOgov LyA8ZGVzY3JpcHRpb24+Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gQ29weXJpZ2h0IChjKSA8 Y29weWRhdGU+IGJ5IDxjb21wYW55PiBUaGlzIG1vZGVsIGlzIHRoZSBjb25maWRlbnRpYWwgYW5k Ci8vIHByb3ByaWV0YXJ5IHByb3BlcnR5IG9mIDxjb21wYW55PiBhbmQgdGhlIHBvc3Nlc3Npb24g b3IgdXNlIG9mIHRoaXMKLy8gZmlsZSByZXF1aXJlcyBhIHdyaXR0ZW4gbGljZW5zZSBmcm9tIDxj b21wYW55Pi4KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gTW9kaWZpY2F0aW9uIGhpc3Rvcnkg OgovLyA8bW9kaGlzdD4KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIikKICAgIChnb3RvLWNoYXIg c3RhcnQpCiAgICAoc2VhcmNoLWZvcndhcmQgIjxmaWxlbmFtZT4iKQogICAgKHJlcGxhY2UtbWF0 Y2ggKGJ1ZmZlci1uYW1lKSB0IHQpCiAgICAoc2VhcmNoLWZvcndhcmQgIjxhdXRob3I+IikgKHJl cGxhY2UtbWF0Y2ggIiIgdCB0KQogICAgKGluc2VydCAodXNlci1mdWxsLW5hbWUpKQogICAgKGlu c2VydCAiICA8IiAodXNlci1sb2dpbi1uYW1lKSAiQCIgKHN5c3RlbS1uYW1lKSAiPiIpCiAgICAo c2VhcmNoLWZvcndhcmQgIjxjcmVkYXRlPiIpIChyZXBsYWNlLW1hdGNoICIiIHQgdCkKICAgICh2 ZXJpbG9nLWluc2VydC1kYXRlKQogICAgKHNlYXJjaC1mb3J3YXJkICI8bW9kZGF0ZT4iKSAocmVw bGFjZS1tYXRjaCAiIiB0IHQpCiAgICAodmVyaWxvZy1pbnNlcnQtZGF0ZSkKICAgIChzZWFyY2gt Zm9yd2FyZCAiPGNvcHlkYXRlPiIpIChyZXBsYWNlLW1hdGNoICIiIHQgdCkKICAgICh2ZXJpbG9n LWluc2VydC15ZWFyKQogICAgKHNlYXJjaC1mb3J3YXJkICI8bW9kaGlzdD4iKSAocmVwbGFjZS1t YXRjaCAiIiB0IHQpCiAgICAodmVyaWxvZy1pbnNlcnQtZGF0ZSkKICAgIChpbnNlcnQgIiA6IGNy ZWF0ZWQiKQogICAgKGdvdG8tY2hhciBzdGFydCkKICAgIChsZXQgKHN0cmluZykKICAgICAgKHNl dHEgc3RyaW5nIChyZWFkLXN0cmluZyAidGl0bGU6ICIpKQogICAgICAoc2VhcmNoLWZvcndhcmQg Ijx0aXRsZT4iKQogICAgICAocmVwbGFjZS1tYXRjaCBzdHJpbmcgdCB0KQogICAgICAoc2V0cSBz dHJpbmcgKHJlYWQtc3RyaW5nICJwcm9qZWN0OiAiIHZlcmlsb2ctcHJvamVjdCkpCiAgICAgIChz ZXRxIHZlcmlsb2ctcHJvamVjdCBzdHJpbmcpCiAgICAgIChzZWFyY2gtZm9yd2FyZCAiPHByb2pl Y3Q+IikKICAgICAgKHJlcGxhY2UtbWF0Y2ggc3RyaW5nIHQgdCkKICAgICAgKHNldHEgc3RyaW5n IChyZWFkLXN0cmluZyAiQ29tcGFueTogIiB2ZXJpbG9nLWNvbXBhbnkpKQogICAgICAoc2V0cSB2 ZXJpbG9nLWNvbXBhbnkgc3RyaW5nKQogICAgICAoc2VhcmNoLWZvcndhcmQgIjxjb21wYW55PiIp CiAgICAgIChyZXBsYWNlLW1hdGNoIHN0cmluZyB0IHQpCiAgICAgIChzZWFyY2gtZm9yd2FyZCAi PGNvbXBhbnk+IikKICAgICAgKHJlcGxhY2UtbWF0Y2ggc3RyaW5nIHQgdCkKICAgICAgKHNlYXJj aC1mb3J3YXJkICI8Y29tcGFueT4iKQogICAgICAocmVwbGFjZS1tYXRjaCBzdHJpbmcgdCB0KQog ICAgICAoc2VhcmNoLWJhY2t3YXJkICI8ZGVzY3JpcHRpb24+IikKICAgICAgKHJlcGxhY2UtbWF0 Y2ggIiIgdCB0KSkpKQoKOzsgdmVyaWxvZy1oZWFkZXIgVXNlcyB0aGUgdmVyaWxvZy1pbnNlcnQt ZGF0ZSBmdW5jdGlvbgoKKGRlZnVuIHZlcmlsb2ctaW5zZXJ0LWRhdGUgKCkKICAiSW5zZXJ0IGRh dGUgZnJvbSB0aGUgc3lzdGVtLiIKICAoaW50ZXJhY3RpdmUpCiAgKGlmIHZlcmlsb2ctZGF0ZS1z Y2llbnRpZmljLWZvcm1hdAogICAgICAoaW5zZXJ0IChmb3JtYXQtdGltZS1zdHJpbmcgIiVZLyVt LyVkIikpCiAgICAoaW5zZXJ0IChmb3JtYXQtdGltZS1zdHJpbmcgIiVkLiVtLiVZIikpKSkKCihk ZWZ1biB2ZXJpbG9nLWluc2VydC15ZWFyICgpCiAgIkluc2VydCB5ZWFyIGZyb20gdGhlIHN5c3Rl bS4iCiAgKGludGVyYWN0aXZlKQogIChpbnNlcnQgKGZvcm1hdC10aW1lLXN0cmluZyAiJVkiKSkp CgoMCjs7OyBTaWduYWwgbGlzdCBwYXJzaW5nOgo7OwoKOzsgRWxlbWVudHMgb2YgYSBzaWduYWwg bGlzdAo7OyBVbmZvcnR1bmF0ZWx5IHdlIHVzZSAnYXNzb2MnIG9uIHRoaXMsIHNvIGNhbid0IGJl IGEgdmVjdG9yCihkZWZzdWJzdCB2ZXJpbG9nLXNpZy1uZXcgKG5hbWUgYml0cyBjb21tZW50IG1l bSBlbnVtIHNpZ25lZCB0eXBlIG11bHRpZGltIG1vZHBvcnQpCiAgKGxpc3QgbmFtZSBiaXRzIGNv bW1lbnQgbWVtIGVudW0gc2lnbmVkIHR5cGUgbXVsdGlkaW0gbW9kcG9ydCkpCihkZWZzdWJzdCB2 ZXJpbG9nLXNpZy1uZXctcmVuYW1lZCAobmFtZSBvbGQtc2lnKQogIChjb25zIG5hbWUgKGNkciBv bGQtc2lnKSkpCihkZWZzdWJzdCB2ZXJpbG9nLXNpZy1uYW1lIChzaWcpCiAgKGNhciBzaWcpKQoo ZGVmc3Vic3QgdmVyaWxvZy1zaWctYml0cyAoc2lnKSAgOyBGaXJzdCBlbGVtZW50IG9mIHBhY2tl ZCBhcnJheSAocHJlIHNpZ25hbC1uYW1lKQogIChudGggMSBzaWcpKQooZGVmc3Vic3QgdmVyaWxv Zy1zaWctY29tbWVudCAoc2lnKQogIChudGggMiBzaWcpKQooZGVmc3Vic3QgdmVyaWxvZy1zaWct bWVtb3J5IChzaWcpICA7IFVucGFja2VkIGFycmF5IChwb3N0IHNpZ25hbC1uYW1lKQogIChudGgg MyBzaWcpKQooZGVmc3Vic3QgdmVyaWxvZy1zaWctZW51bSAoc2lnKQogIChudGggNCBzaWcpKQoo ZGVmc3Vic3QgdmVyaWxvZy1zaWctc2lnbmVkIChzaWcpCiAgKG50aCA1IHNpZykpCihkZWZzdWJz dCB2ZXJpbG9nLXNpZy10eXBlIChzaWcpCiAgKG50aCA2IHNpZykpCihkZWZzdWJzdCB2ZXJpbG9n LXNpZy10eXBlLXNldCAoc2lnIHR5cGUpCiAgKHNldGNhciAobnRoY2RyIDYgc2lnKSB0eXBlKSkK KGRlZnN1YnN0IHZlcmlsb2ctc2lnLW11bHRpZGltIChzaWcpICA7IFNlY29uZCBhbmQgYWRkaXRp b25hbCBlbGVtZW50cyBvZiBwYWNrZWQgYXJyYXkKICAobnRoIDcgc2lnKSkKKGRlZnN1YnN0IHZl cmlsb2ctc2lnLW11bHRpZGltLXN0cmluZyAoc2lnKQogIChpZiAodmVyaWxvZy1zaWctbXVsdGlk aW0gc2lnKQogICAgICAobGV0ICgoc3RyICIiKSAoYXJncyAodmVyaWxvZy1zaWctbXVsdGlkaW0g c2lnKSkpCgkod2hpbGUgYXJncwoJICAoc2V0cSBzdHIgKGNvbmNhdCAoY2FyIGFyZ3MpIHN0cikp CgkgIChzZXRxIGFyZ3MgKGNkciBhcmdzKSkpCglzdHIpKSkKKGRlZnN1YnN0IHZlcmlsb2ctc2ln LW1vZHBvcnQgKHNpZykKICAobnRoIDggc2lnKSkKKGRlZnN1YnN0IHZlcmlsb2ctc2lnLXdpZHRo IChzaWcpCiAgKHZlcmlsb2ctbWFrZS13aWR0aC1leHByZXNzaW9uICh2ZXJpbG9nLXNpZy1iaXRz IHNpZykpKQoKKGRlZnN1YnN0IHZlcmlsb2ctYWx3LW5ldyAob3V0cHV0cy1kZWwgb3V0cHV0cy1p bW0gdGVtcHMgaW5wdXRzKQogICh2ZWN0b3Igb3V0cHV0cy1kZWwgb3V0cHV0cy1pbW0gdGVtcHMg aW5wdXRzKSkKKGRlZnN1YnN0IHZlcmlsb2ctYWx3LWdldC1vdXRwdXRzLWRlbGF5ZWQgKHNpZ3Mp CiAgKGFyZWYgc2lncyAwKSkKKGRlZnN1YnN0IHZlcmlsb2ctYWx3LWdldC1vdXRwdXRzLWltbWVk aWF0ZSAoc2lncykKICAoYXJlZiBzaWdzIDEpKQooZGVmc3Vic3QgdmVyaWxvZy1hbHctZ2V0LXRl bXBzIChzaWdzKQogIChhcmVmIHNpZ3MgMikpCihkZWZzdWJzdCB2ZXJpbG9nLWFsdy1nZXQtaW5w dXRzIChzaWdzKQogIChhcmVmIHNpZ3MgMykpCihkZWZzdWJzdCB2ZXJpbG9nLWFsdy1nZXQtdXNl cy1kZWxheWVkIChzaWdzKQogIChhcmVmIHNpZ3MgMCkpCgooZGVmc3Vic3QgdmVyaWxvZy1tb2Rw b3J0LW5ldyAobmFtZSBjbG9ja2luZ3MgZGVjbHMpCiAgKGxpc3QgbmFtZSBjbG9ja2luZ3MgZGVj bHMpKQooZGVmc3Vic3QgdmVyaWxvZy1tb2Rwb3J0LW5hbWUgKHNpZykKICAoY2FyIHNpZykpCihk ZWZzdWJzdCB2ZXJpbG9nLW1vZHBvcnQtY2xvY2tpbmdzIChzaWcpCiAgKG50aCAxIHNpZykpICA7 IFJldHVybnMgbGlzdCBvZiBuYW1lcwooZGVmc3Vic3QgdmVyaWxvZy1tb2Rwb3J0LWNsb2NraW5n cy1hZGQgKHNpZyB2YWwpCiAgKHNldGNhciAobnRoY2RyIDEgc2lnKSAoY29ucyB2YWwgKG50aCAx IHNpZykpKSkKKGRlZnN1YnN0IHZlcmlsb2ctbW9kcG9ydC1kZWNscyAoc2lnKQogIChudGggMiBz aWcpKSAgOyBSZXR1cm5zIHZlcmlsb2ctZGVjbHMtKiBzdHJ1Y3R1cmUKKGRlZnN1YnN0IHZlcmls b2ctbW9kcG9ydC1kZWNscy1zZXQgKHNpZyB2YWwpCiAgKHNldGNhciAobnRoY2RyIDIgc2lnKSB2 YWwpKQoKKGRlZnN1YnN0IHZlcmlsb2ctbW9kaS1uZXcgKG5hbWUgZm9iIHB0IHR5cGUpCiAgKHZl Y3RvciBuYW1lIGZvYiBwdCB0eXBlKSkKKGRlZnN1YnN0IHZlcmlsb2ctbW9kaS1uYW1lIChtb2Rp KQogIChhcmVmIG1vZGkgMCkpCihkZWZzdWJzdCB2ZXJpbG9nLW1vZGktZmlsZS1vci1idWZmZXIg KG1vZGkpCiAgKGFyZWYgbW9kaSAxKSkKKGRlZnN1YnN0IHZlcmlsb2ctbW9kaS1nZXQtcG9pbnQg KG1vZGkpCiAgKGFyZWYgbW9kaSAyKSkKKGRlZnN1YnN0IHZlcmlsb2ctbW9kaS1nZXQtdHlwZSAo bW9kaSkgIDsgIm1vZHVsZSIgb3IgImludGVyZmFjZSIKICAoYXJlZiBtb2RpIDMpKQooZGVmc3Vi c3QgdmVyaWxvZy1tb2RpLWdldC1kZWNscyAobW9kaSkKICAodmVyaWxvZy1tb2RpLWNhY2hlLXJl c3VsdHMgbW9kaSAndmVyaWxvZy1yZWFkLWRlY2xzKSkKKGRlZnN1YnN0IHZlcmlsb2ctbW9kaS1n ZXQtc3ViLWRlY2xzIChtb2RpKQogICh2ZXJpbG9nLW1vZGktY2FjaGUtcmVzdWx0cyBtb2RpICd2 ZXJpbG9nLXJlYWQtc3ViLWRlY2xzKSkKCjs7IFNpZ25hbCByZWFkaW5nIGZvciBnaXZlbiBtb2R1 bGUKOzsgTm90ZSB0aGVzZSBhbGwgdGFrZSBtb2RpJ3MgLSBhcyByZXR1cm5lZCBmcm9tIHZlcmls b2ctbW9kaS1jdXJyZW50CihkZWZzdWJzdCB2ZXJpbG9nLWRlY2xzLW5ldyAob3V0IGlub3V0IGlu IHZhcnMgbW9kcG9ydHMgYXNzaWducyBjb25zdHMgZ3BhcmFtcyBpbnRlcmZhY2VzKQogICh2ZWN0 b3Igb3V0IGlub3V0IGluIHZhcnMgbW9kcG9ydHMgYXNzaWducyBjb25zdHMgZ3BhcmFtcyBpbnRl cmZhY2VzKSkKKGRlZnN1YnN0IHZlcmlsb2ctZGVjbHMtYXBwZW5kIChhIGIpCiAgKGNvbmQgKChu b3QgYSkgYikgKChub3QgYikgYSkKCSh0ICh2ZWN0b3IgKGFwcGVuZCAoYXJlZiBhIDApIChhcmVm IGIgMCkpICAgKGFwcGVuZCAoYXJlZiBhIDEpIChhcmVmIGIgMSkpCgkJICAgKGFwcGVuZCAoYXJl ZiBhIDIpIChhcmVmIGIgMikpICAgKGFwcGVuZCAoYXJlZiBhIDMpIChhcmVmIGIgMykpCgkJICAg KGFwcGVuZCAoYXJlZiBhIDQpIChhcmVmIGIgNCkpICAgKGFwcGVuZCAoYXJlZiBhIDUpIChhcmVm IGIgNSkpCgkJICAgKGFwcGVuZCAoYXJlZiBhIDYpIChhcmVmIGIgNikpICAgKGFwcGVuZCAoYXJl ZiBhIDcpIChhcmVmIGIgNykpCgkJICAgKGFwcGVuZCAoYXJlZiBhIDgpIChhcmVmIGIgOCkpKSkp KQooZGVmc3Vic3QgdmVyaWxvZy1kZWNscy1nZXQtb3V0cHV0cyAoZGVjbHMpCiAgKGFyZWYgZGVj bHMgMCkpCihkZWZzdWJzdCB2ZXJpbG9nLWRlY2xzLWdldC1pbm91dHMgKGRlY2xzKQogIChhcmVm IGRlY2xzIDEpKQooZGVmc3Vic3QgdmVyaWxvZy1kZWNscy1nZXQtaW5wdXRzIChkZWNscykKICAo YXJlZiBkZWNscyAyKSkKKGRlZnN1YnN0IHZlcmlsb2ctZGVjbHMtZ2V0LXZhcnMgKGRlY2xzKQog IChhcmVmIGRlY2xzIDMpKQooZGVmc3Vic3QgdmVyaWxvZy1kZWNscy1nZXQtbW9kcG9ydHMgKGRl Y2xzKSAgOyBBbHNvIGZvciBjbG9ja2luZyBibG9ja3M7IGNvbnRhaW5zIGFub3RoZXIgdmVyaWxv Zy1kZWNscyBzdHJ1Y3QKICAoYXJlZiBkZWNscyA0KSkgIDsgUmV0dXJucyB2ZXJpbG9nLW1vZHBv cnQqIHN0cnVjdHVyZQooZGVmc3Vic3QgdmVyaWxvZy1kZWNscy1nZXQtYXNzaWducyAoZGVjbHMp CiAgKGFyZWYgZGVjbHMgNSkpCihkZWZzdWJzdCB2ZXJpbG9nLWRlY2xzLWdldC1jb25zdHMgKGRl Y2xzKQogIChhcmVmIGRlY2xzIDYpKQooZGVmc3Vic3QgdmVyaWxvZy1kZWNscy1nZXQtZ3BhcmFt cyAoZGVjbHMpCiAgKGFyZWYgZGVjbHMgNykpCihkZWZzdWJzdCB2ZXJpbG9nLWRlY2xzLWdldC1p bnRlcmZhY2VzIChkZWNscykKICAoYXJlZiBkZWNscyA4KSkKCgooZGVmc3Vic3QgdmVyaWxvZy1z dWJkZWNscy1uZXcgKG91dCBpbm91dCBpbiBpbnRmIGludGZkKQogICh2ZWN0b3Igb3V0IGlub3V0 IGluIGludGYgaW50ZmQpKQooZGVmc3Vic3QgdmVyaWxvZy1zdWJkZWNscy1nZXQtb3V0cHV0cyAo c3ViZGVjbHMpCiAgKGFyZWYgc3ViZGVjbHMgMCkpCihkZWZzdWJzdCB2ZXJpbG9nLXN1YmRlY2xz LWdldC1pbm91dHMgKHN1YmRlY2xzKQogIChhcmVmIHN1YmRlY2xzIDEpKQooZGVmc3Vic3QgdmVy aWxvZy1zdWJkZWNscy1nZXQtaW5wdXRzIChzdWJkZWNscykKICAoYXJlZiBzdWJkZWNscyAyKSkK KGRlZnN1YnN0IHZlcmlsb2ctc3ViZGVjbHMtZ2V0LWludGVyZmFjZXMgKHN1YmRlY2xzKQogIChh cmVmIHN1YmRlY2xzIDMpKQooZGVmc3Vic3QgdmVyaWxvZy1zdWJkZWNscy1nZXQtaW50ZXJmYWNl ZCAoc3ViZGVjbHMpCiAgKGFyZWYgc3ViZGVjbHMgNCkpCgooZGVmdW4gdmVyaWxvZy1zaWduYWxz LWZyb20tc2lnbmFtZSAoc2lnbmFtZS1saXN0KQogICJSZXR1cm4gc2lnbmFscyBpbiBzdGFuZGFy ZCBmb3JtIGZyb20gU0lHTkFNRS1MSVNULCBhIHNpbXBsZSBsaXN0IG9mIG5hbWVzLiIKICAobWFw Y2FyIChsYW1iZGEgKG5hbWUpICh2ZXJpbG9nLXNpZy1uZXcgbmFtZSBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsKSkKCSAgc2lnbmFtZS1saXN0KSkKCihkZWZ1biB2ZXJpbG9nLXNpZ25h bHMtaW4gKGluLWxpc3Qgbm90LWxpc3QpCiAgIlJldHVybiBsaXN0IG9mIHNpZ25hbHMgaW4gSU4t TElTVCB0aGF0IGFyZSBhbHNvIGluIE5PVC1MSVNULgpBbHNvIHJlbW92ZSBhbnkgZHVwbGljYXRl cyBpbiBJTi1MSVNULgpTaWduYWxzIG11c3QgYmUgaW4gc3RhbmRhcmQgKGJhc2UgdmVjdG9yKSBm b3JtLiIKICA7OyBUaGlzIGZ1bmN0aW9uIGlzIGhvdCwgc28gaW1wbGVtZW50ZWQgYXMgTygxKQog IChjb25kICgoZXZhbC13aGVuLWNvbXBpbGUgKGZib3VuZHAgJ21ha2UtaGFzaC10YWJsZSkpCgkg KGxldCAoKGh0IChtYWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxdWFsIDpyZWhhc2gtc2l6ZSA0LjAp KQoJICAgICAgIChodC1ub3QgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwgOnJlaGFzaC1z aXplIDQuMCkpCgkgICAgICAgb3V0LWxpc3QpCgkgICAod2hpbGUgbm90LWxpc3QKCSAgICAgKHB1 dGhhc2ggKGNhciAoY2FyIG5vdC1saXN0KSkgdCBodC1ub3QpCgkgICAgIChzZXRxIG5vdC1saXN0 IChjZHIgbm90LWxpc3QpKSkKCSAgICh3aGlsZSBpbi1saXN0CgkgICAgICh3aGVuIChhbmQgKGdl dGhhc2ggKHZlcmlsb2ctc2lnLW5hbWUgKGNhciBpbi1saXN0KSkgaHQtbm90KQoJCQkobm90IChn ZXRoYXNoICh2ZXJpbG9nLXNpZy1uYW1lIChjYXIgaW4tbGlzdCkpIGh0KSkpCgkgICAgICAgKHNl dHEgb3V0LWxpc3QgKGNvbnMgKGNhciBpbi1saXN0KSBvdXQtbGlzdCkpCgkgICAgICAgKHB1dGhh c2ggKHZlcmlsb2ctc2lnLW5hbWUgKGNhciBpbi1saXN0KSkgdCBodCkpCgkgICAgIChzZXRxIGlu LWxpc3QgKGNkciBpbi1saXN0KSkpCgkgICAobnJldmVyc2Ugb3V0LWxpc3QpKSkKCTs7IFNsb3dl ciBGYWxsYmFjayBpZiBubyBoYXNoIHRhYmxlcyAocHJlIEVtYWNzIDIxLjEvWEVtYWNzIDIxLjQp CgkodAoJIChsZXQgKG91dC1saXN0KQoJICAgKHdoaWxlIGluLWxpc3QKCSAgICAgKGlmIChhbmQg KGFzc29jICh2ZXJpbG9nLXNpZy1uYW1lIChjYXIgaW4tbGlzdCkpIG5vdC1saXN0KQoJCSAgICAg IChub3QgKGFzc29jICh2ZXJpbG9nLXNpZy1uYW1lIChjYXIgaW4tbGlzdCkpIG91dC1saXN0KSkp CgkJIChzZXRxIG91dC1saXN0IChjb25zIChjYXIgaW4tbGlzdCkgb3V0LWxpc3QpKSkKCSAgICAg KHNldHEgaW4tbGlzdCAoY2RyIGluLWxpc3QpKSkKCSAgIChucmV2ZXJzZSBvdXQtbGlzdCkpKSkp Cjs7KHZlcmlsb2ctc2lnbmFscy1pbiAnKCgiQSIgIiIpICgiQiIgIiIpICgiREVMIiAiWzI6M10i KSkgJygoIkRFTCIgIiIpICgiQyIgIiIpKSkKCihkZWZ1biB2ZXJpbG9nLXNpZ25hbHMtbm90LWlu IChpbi1saXN0IG5vdC1saXN0KQogICJSZXR1cm4gbGlzdCBvZiBzaWduYWxzIGluIElOLUxJU1Qg dGhhdCBhcmVuJ3QgYWxzbyBpbiBOT1QtTElTVC4KQWxzbyByZW1vdmUgYW55IGR1cGxpY2F0ZXMg aW4gSU4tTElTVC4KU2lnbmFscyBtdXN0IGJlIGluIHN0YW5kYXJkIChiYXNlIHZlY3RvcikgZm9y bS4iCiAgOzsgVGhpcyBmdW5jdGlvbiBpcyBob3QsIHNvIGltcGxlbWVudGVkIGFzIE8oMSkKICAo Y29uZCAoKGV2YWwtd2hlbi1jb21waWxlIChmYm91bmRwICdtYWtlLWhhc2gtdGFibGUpKQoJIChs ZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVhbCA6cmVoYXNoLXNpemUgNC4wKSkK CSAgICAgICBvdXQtbGlzdCkKCSAgICh3aGlsZSBub3QtbGlzdAoJICAgICAocHV0aGFzaCAoY2Fy IChjYXIgbm90LWxpc3QpKSB0IGh0KQoJICAgICAoc2V0cSBub3QtbGlzdCAoY2RyIG5vdC1saXN0 KSkpCgkgICAod2hpbGUgaW4tbGlzdAoJICAgICAod2hlbiAobm90IChnZXRoYXNoICh2ZXJpbG9n LXNpZy1uYW1lIChjYXIgaW4tbGlzdCkpIGh0KSkKCSAgICAgICAoc2V0cSBvdXQtbGlzdCAoY29u cyAoY2FyIGluLWxpc3QpIG91dC1saXN0KSkKCSAgICAgICAocHV0aGFzaCAodmVyaWxvZy1zaWct bmFtZSAoY2FyIGluLWxpc3QpKSB0IGh0KSkKCSAgICAgKHNldHEgaW4tbGlzdCAoY2RyIGluLWxp c3QpKSkKCSAgIChucmV2ZXJzZSBvdXQtbGlzdCkpKQoJOzsgU2xvd2VyIEZhbGxiYWNrIGlmIG5v IGhhc2ggdGFibGVzIChwcmUgRW1hY3MgMjEuMS9YRW1hY3MgMjEuNCkKCSh0CgkgKGxldCAob3V0 LWxpc3QpCgkgICAod2hpbGUgaW4tbGlzdAoJICAgICAoaWYgKGFuZCAobm90IChhc3NvYyAodmVy aWxvZy1zaWctbmFtZSAoY2FyIGluLWxpc3QpKSBub3QtbGlzdCkpCgkJICAgICAgKG5vdCAoYXNz b2MgKHZlcmlsb2ctc2lnLW5hbWUgKGNhciBpbi1saXN0KSkgb3V0LWxpc3QpKSkKCQkgKHNldHEg b3V0LWxpc3QgKGNvbnMgKGNhciBpbi1saXN0KSBvdXQtbGlzdCkpKQoJICAgICAoc2V0cSBpbi1s aXN0IChjZHIgaW4tbGlzdCkpKQoJICAgKG5yZXZlcnNlIG91dC1saXN0KSkpKSkKOzsodmVyaWxv Zy1zaWduYWxzLW5vdC1pbiAnKCgiQSIgIiIpICgiQiIgIiIpICgiREVMIiAiWzI6M10iKSkgJygo IkRFTCIgIiIpICgiRVhUIiAiIikpKQoKKGRlZnVuIHZlcmlsb2ctc2lnbmFscy1ub3QtaW4tc3Ry dWN0IChpbi1saXN0IG5vdC1saXN0KQogICJSZXR1cm4gbGlzdCBvZiBzaWduYWxzIGluIElOLUxJ U1QgdGhhdCBhcmVuJ3QgYWxzbyBpbiBOT1QtTElTVC4KQWxzbyByZW1vdmUgYW55IGR1cGxpY2F0 ZXMgaW4gSU4tTElTVC4KQW55IHN0cnVjdHVyZSBpbiBub3QtbGlzdCB3aWxsIHJlbW92ZSBhbGwg bWVtYmVycyBpbiBpbi1saXN0LgpTaWduYWxzIG11c3QgYmUgaW4gc3RhbmRhcmQgKGJhc2UgdmVj dG9yKSBmb3JtLiIKICAoY29uZCAoKGV2YWwtd2hlbi1jb21waWxlIChmYm91bmRwICdtYWtlLWhh c2gtdGFibGUpKQoJIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVhbCA6cmVo YXNoLXNpemUgNC4wKSkKCSAgICAgICBvdXQtbGlzdCBhZGRpdCBubSkKCSAgICh3aGlsZSBub3Qt bGlzdAoJICAgICAocHV0aGFzaCAoY2FyIChjYXIgbm90LWxpc3QpKSB0IGh0KQoJICAgICAoc2V0 cSBub3QtbGlzdCAoY2RyIG5vdC1saXN0KSkpCgkgICAod2hpbGUgaW4tbGlzdAoJICAgICAoc2V0 cSBubSAodmVyaWxvZy1zaWctbmFtZSAoY2FyIGluLWxpc3QpKSkKCSAgICAgKHdoZW4gKG5vdCAo Z2V0aGFzaCBubSBodCkpCgkgICAgICAgKHNldHEgYWRkaXQgdCkKCSAgICAgICAod2hpbGUgKHN0 cmluZy1tYXRjaCAiXlxcKFteXFxdLipcXClcXC5bXi5dKyQiIG5tKQoJCSAoc2V0cSBubSAobWF0 Y2gtc3RyaW5nIDEgbm0pKQoJCSAoc2V0cSBhZGRpdCAoYW5kIGFkZGl0CgkJCQkgIChub3QgKGdl dGhhc2ggbm0gaHQpKSkpKQoJICAgICAgICh3aGVuIGFkZGl0CgkJIChzZXRxIG91dC1saXN0IChj b25zIChjYXIgaW4tbGlzdCkgb3V0LWxpc3QpKQoJCSAocHV0aGFzaCAodmVyaWxvZy1zaWctbmFt ZSAoY2FyIGluLWxpc3QpKSB0IGh0KSkpCgkgICAgIChzZXRxIGluLWxpc3QgKGNkciBpbi1saXN0 KSkpCgkgICAobnJldmVyc2Ugb3V0LWxpc3QpKSkKCTs7IFNsb3dlciBGYWxsYmFjayBpZiBubyBo YXNoIHRhYmxlcyAocHJlIEVtYWNzIDIxLjEvWEVtYWNzIDIxLjQpCgkodAoJIChsZXQgKG91dC1s aXN0IGFkZGl0IG5tKQoJICAgKHdoaWxlIGluLWxpc3QKCSAgICAgKHNldHEgbm0gKHZlcmlsb2ct c2lnLW5hbWUgKGNhciBpbi1saXN0KSkpCgkgICAgICh3aGVuIChhbmQgKG5vdCAoYXNzb2Mgbm0g bm90LWxpc3QpKQoJCQkobm90IChhc3NvYyBubSBvdXQtbGlzdCkpKQoJICAgICAgIChzZXRxIGFk ZGl0IHQpCgkgICAgICAgKHdoaWxlIChzdHJpbmctbWF0Y2ggIl5cXChbXlxcXS4qXFwpXFwuW14u XSskIiBubSkKCQkgKHNldHEgbm0gKG1hdGNoLXN0cmluZyAxIG5tKSkKCQkgKHNldHEgYWRkaXQg KGFuZCBhZGRpdAoJCQkJICAobm90IChhc3NvYyBubSBub3QtbGlzdCkpKSkpCgkgICAgICAgKHdo ZW4gYWRkaXQKCQkgKHNldHEgb3V0LWxpc3QgKGNvbnMgKGNhciBpbi1saXN0KSBvdXQtbGlzdCkp KSkKCSAgICAgKHNldHEgaW4tbGlzdCAoY2RyIGluLWxpc3QpKSkKCSAgIChucmV2ZXJzZSBvdXQt bGlzdCkpKSkpCjs7KHZlcmlsb2ctc2lnbmFscy1ub3QtaW4tc3RydWN0ICcoKCJBIiAiIikgKCJC IiAiIikgKCJERUwuU1VCLkEiICJbMjozXSIpKSAnKCgiREVMLlNVQiIgIiIpICgiRVhUIiAiIikp KQoKKGRlZnVuIHZlcmlsb2ctc2lnbmFscy1tZW1vcnkgKGluLWxpc3QpCiAgIlJldHVybiBsaXN0 IG9mIHNpZ25hbHMgaW4gSU4tTElTVCB0aGF0IGFyZSBtZW1vcml6ZWQgKG11bHRpZGltZW5zaW9u YWwpLiIKICAobGV0IChvdXQtbGlzdCkKICAgICh3aGlsZSBpbi1saXN0CiAgICAgIChpZiAobnRo IDMgKGNhciBpbi1saXN0KSkKCSAgKHNldHEgb3V0LWxpc3QgKGNvbnMgKGNhciBpbi1saXN0KSBv dXQtbGlzdCkpKQogICAgICAoc2V0cSBpbi1saXN0IChjZHIgaW4tbGlzdCkpKQogICAgb3V0LWxp c3QpKQo7Oyh2ZXJpbG9nLXNpZ25hbHMtbWVtb3J5ICcoKCJBIiBuaWwgbmlsICJbMzowXSIpKSAn KCgiQiIgbmlsIG5pbCBuaWwpKSkKCihkZWZ1biB2ZXJpbG9nLXNpZ25hbHMtc29ydC1jb21wYXJl IChhIGIpCiAgIkNvbXBhcmUgc2lnbmFsIEEgYW5kIEIgZm9yIHNvcnRpbmcuIgogIChzdHJpbmc8 ICh2ZXJpbG9nLXNpZy1uYW1lIGEpICh2ZXJpbG9nLXNpZy1uYW1lIGIpKSkKCihkZWZ1biB2ZXJp bG9nLXNpZ25hbHMtbm90LXBhcmFtcyAoaW4tbGlzdCkKICAiUmV0dXJuIGxpc3Qgb2Ygc2lnbmFs cyBpbiBJTi1MSVNUIHRoYXQgYXJlbid0IHBhcmFtZXRlcnMgb3IgbnVtZXJpYyBjb25zdGFudHMu IgogIChsZXQgKG91dC1saXN0KQogICAgKHdoaWxlIGluLWxpc3QKICAgICAgOzsgTmFtZXNwYWNl IGludGVudGlvbmFsbHkgc2hvcnQgZm9yIEFVVE9zIGFuZCBjb21wYXRpYmlsaXR5CiAgICAgICh1 bmxlc3MgKGJvdW5kcCAoaW50ZXJuIChjb25jYXQgInZoLSIgKHZlcmlsb2ctc2lnLW5hbWUgKGNh ciBpbi1saXN0KSkpKSkKCShzZXRxIG91dC1saXN0IChjb25zIChjYXIgaW4tbGlzdCkgb3V0LWxp c3QpKSkKICAgICAgKHNldHEgaW4tbGlzdCAoY2RyIGluLWxpc3QpKSkKICAgIChucmV2ZXJzZSBv dXQtbGlzdCkpKQoKKGRlZnVuIHZlcmlsb2ctc2lnbmFscy13aXRoIChmdW5jIGluLWxpc3QpCiAg IlJldHVybiBsaXN0IG9mIHNpZ25hbHMgd2hlcmUgRlVOQyBpcyB0cnVlIGV4ZWN1dGVkIG9uIGVh Y2ggc2lnbmFsIGluIElOLUxJU1QuIgogIChsZXQgKG91dC1saXN0KQogICAgKHdoaWxlIGluLWxp c3QKICAgICAgKHdoZW4gKGZ1bmNhbGwgZnVuYyAoY2FyIGluLWxpc3QpKQoJKHNldHEgb3V0LWxp c3QgKGNvbnMgKGNhciBpbi1saXN0KSBvdXQtbGlzdCkpKQogICAgICAoc2V0cSBpbi1saXN0IChj ZHIgaW4tbGlzdCkpKQogICAgKG5yZXZlcnNlIG91dC1saXN0KSkpCgooZGVmdW4gdmVyaWxvZy1z aWduYWxzLWNvbWJpbmUtYnVzIChpbi1saXN0KQogICJSZXR1cm4gYSBsaXN0IG9mIHNpZ25hbHMg aW4gSU4tTElTVCwgd2l0aCBidXNlcyBjb21iaW5lZC4KRHVwbGljYXRlIHNpZ25hbHMgYXJlIGFs c28gcmVtb3ZlZC4gIEZvciBleGFtcGxlIEFbMl0gYW5kIEFbMV0gYmVjb21lIEFbMjoxXS4iCiAg KGxldCAoY29tYm8KICAgICAgICBidXN3YXJuCglvdXQtbGlzdAoJc2lnIGhpZ2hiaXQgbG93Yml0 CQk7IFRlbXAgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudCBzaWduYWwKCXN2LW5hbWUgc3YtaGln aGJpdCBzdi1sb3diaXQJOyBEZXRhaWxzIGFib3V0IHNpZ25hbCB3ZSBhcmUgZm9ybWluZwoJc3Yt Y29tbWVudCBzdi1tZW1vcnkgc3YtZW51bSBzdi1zaWduZWQgc3YtdHlwZSBzdi1tdWx0aWRpbSBz di1idXNzdHJpbmcKCXN2LW1vZHBvcnQKCWJ1cykKICAgIDs7IFNob3ZlIHNpZ25hbHMgc28gZHVw bGljYXRlZCBzaWduYWxzIHdpbGwgYmUgYWRqYWNlbnQKICAgIChzZXRxIGluLWxpc3QgKHNvcnQg aW4tbGlzdCAjJ3Zlcmlsb2ctc2lnbmFscy1zb3J0LWNvbXBhcmUpKQogICAgKHdoaWxlIGluLWxp c3QKICAgICAgKHNldHEgc2lnIChjYXIgaW4tbGlzdCkpCiAgICAgIDs7IE5vIGN1cnJlbnQgc2ln bmFsOyBmb3JtIGZyb20gZXhpc3RpbmcgZGV0YWlscwogICAgICAodW5sZXNzIHN2LW5hbWUKCShz ZXRxIHN2LW5hbWUgICAgKHZlcmlsb2ctc2lnLW5hbWUgc2lnKQoJICAgICAgc3YtaGlnaGJpdCBu aWwKCSAgICAgIHN2LWJ1c3N0cmluZyBuaWwKCSAgICAgIHN2LWNvbW1lbnQgKHZlcmlsb2ctc2ln LWNvbW1lbnQgc2lnKQoJICAgICAgc3YtbWVtb3J5ICAodmVyaWxvZy1zaWctbWVtb3J5IHNpZykK CSAgICAgIHN2LWVudW0gICAgKHZlcmlsb2ctc2lnLWVudW0gc2lnKQoJICAgICAgc3Ytc2lnbmVk ICAodmVyaWxvZy1zaWctc2lnbmVkIHNpZykKCSAgICAgIHN2LXR5cGUgICAgKHZlcmlsb2ctc2ln LXR5cGUgc2lnKQoJICAgICAgc3YtbXVsdGlkaW0gKHZlcmlsb2ctc2lnLW11bHRpZGltIHNpZykK CSAgICAgIHN2LW1vZHBvcnQgICh2ZXJpbG9nLXNpZy1tb2Rwb3J0IHNpZykKCSAgICAgIGNvbWJv ICIiCgkgICAgICBidXN3YXJuICIiKSkKICAgICAgOzsgRXh0cmFjdCBidXMgZGV0YWlscwogICAg ICAoc2V0cSBidXMgKHZlcmlsb2ctc2lnLWJpdHMgc2lnKSkKICAgICAgKHNldHEgYnVzIChhbmQg YnVzICh2ZXJpbG9nLXNpbXBsaWZ5LXJhbmdlLWV4cHJlc3Npb24gYnVzKSkpCiAgICAgIChjb25k ICgoYW5kIGJ1cwoJCSAgKG9yIChhbmQgKHN0cmluZy1tYXRjaCAiXlxcW1xcKFswLTldK1xcKTpc XChbMC05XStcXClcXF0kIiBidXMpCgkJCSAgIChzZXRxIGhpZ2hiaXQgKHN0cmluZy10by1udW1i ZXIgKG1hdGNoLXN0cmluZyAxIGJ1cykpCgkJCQkgbG93Yml0ICAoc3RyaW5nLXRvLW51bWJlcgoJ CQkJCSAgKG1hdGNoLXN0cmluZyAyIGJ1cykpKSkKCQkgICAgICAoYW5kIChzdHJpbmctbWF0Y2gg Il5cXFtcXChbMC05XStcXClcXF0kIiBidXMpCgkJCSAgIChzZXRxIGhpZ2hiaXQgKHN0cmluZy10 by1udW1iZXIgKG1hdGNoLXN0cmluZyAxIGJ1cykpCgkJCQkgbG93Yml0ICBoaWdoYml0KSkpKQoJ ICAgICA7OyBDb21iaW5lIGJpdHMgaW4gYnVzCgkgICAgIChpZiBzdi1oaWdoYml0CgkJIChzZXRx IHN2LWhpZ2hiaXQgKG1heCBoaWdoYml0IHN2LWhpZ2hiaXQpCgkJICAgICAgIHN2LWxvd2JpdCAg KG1pbiBsb3diaXQgIHN2LWxvd2JpdCkpCgkgICAgICAgKHNldHEgc3YtaGlnaGJpdCBoaWdoYml0 CgkJICAgICBzdi1sb3diaXQgIGxvd2JpdCkpKQoJICAgIChidXMKCSAgICAgOzsgU3RyaW5nLCBw cm9iYWJseSBzb21ldGhpbmcgbGlrZSBgcHJlcHJvYzowCgkgICAgIChzZXRxIHN2LWJ1c3N0cmlu ZyBidXMpKSkKICAgICAgOzsgUGVlayBhaGVhZCB0byBuZXh0IHNpZ25hbAogICAgICAoc2V0cSBp bi1saXN0IChjZHIgaW4tbGlzdCkpCiAgICAgIChzZXRxIHNpZyAoY2FyIGluLWxpc3QpKQogICAg ICAoY29uZCAoKGFuZCBzaWcgKGVxdWFsIHN2LW5hbWUgKHZlcmlsb2ctc2lnLW5hbWUgc2lnKSkp CgkgICAgIDs7IENvbWJpbmUgd2l0aCB0aGlzIHNpZ25hbAoJICAgICAod2hlbiAoYW5kIHN2LWJ1 c3N0cmluZwoJCQkobm90IChlcXVhbCBzdi1idXNzdHJpbmcgKHZlcmlsb2ctc2lnLWJpdHMgc2ln KSkpKQogICAgICAgICAgICAgICAod2hlbiBuaWwgIDsgRGVidWdnaW5nCgkJIChtZXNzYWdlIChj b25jYXQgIldhcm5pbmcsIGNhbid0IG1lcmdlIGludG8gc2luZ2xlIGJ1cyBgJXMlcyciCgkJCQkg ICIsIHRoZSBBVVRPcyBtYXkgYmUgd3JvbmciKQoJCQkgIHN2LW5hbWUgYnVzKSkKCSAgICAgICAo c2V0cSBidXN3YXJuICIsIENvdWxkbid0IE1lcmdlIikpCgkgICAgIChpZiAodmVyaWxvZy1zaWct Y29tbWVudCBzaWcpIChzZXRxIGNvbWJvICIsIC4uLiIpKQoJICAgICAoc2V0cSBzdi1tZW1vcnkg KG9yIHN2LW1lbW9yeSAodmVyaWxvZy1zaWctbWVtb3J5IHNpZykpCgkJICAgc3YtZW51bSAgIChv ciBzdi1lbnVtICAgKHZlcmlsb2ctc2lnLWVudW0gc2lnKSkKCQkgICBzdi1zaWduZWQgKG9yIHN2 LXNpZ25lZCAodmVyaWxvZy1zaWctc2lnbmVkIHNpZykpCiAgICAgICAgICAgICAgICAgICBzdi10 eXBlICAgKG9yIHN2LXR5cGUgICAodmVyaWxvZy1zaWctdHlwZSBzaWcpKQogICAgICAgICAgICAg ICAgICAgc3YtbXVsdGlkaW0gKG9yIHN2LW11bHRpZGltICh2ZXJpbG9nLXNpZy1tdWx0aWRpbSBz aWcpKQogICAgICAgICAgICAgICAgICAgc3YtbW9kcG9ydCAgKG9yIHN2LW1vZHBvcnQgICh2ZXJp bG9nLXNpZy1tb2Rwb3J0IHNpZykpKSkKCSAgICA7OyBEb2Vzbid0IG1hdGNoIG5leHQgc2lnbmFs LCBhZGQgdG8gcXVldWUsIHplcm8gaW4gcHJlcCBmb3IgbmV4dAoJICAgIDs7IE5vdGUgc2lnIG1h eSBhbHNvIGJlIG5pbCBmb3IgdGhlIGxhc3Qgc2lnbmFsIGluIHRoZSBsaXN0CgkgICAgKHQKCSAg ICAgKHNldHEgb3V0LWxpc3QKCQkgICAoY29ucyAodmVyaWxvZy1zaWctbmV3CgkJCSAgc3YtbmFt ZQoJCQkgIChvciBzdi1idXNzdHJpbmcKCQkJICAgICAgKGlmIHN2LWhpZ2hiaXQKCQkJCSAgKGNv bmNhdCAiWyIgKGludC10by1zdHJpbmcgc3YtaGlnaGJpdCkgIjoiCgkJCQkJICAoaW50LXRvLXN0 cmluZyBzdi1sb3diaXQpICJdIikpKQoJCQkgIChjb25jYXQgc3YtY29tbWVudCBjb21ibyBidXN3 YXJuKQoJCQkgIHN2LW1lbW9yeSBzdi1lbnVtIHN2LXNpZ25lZCBzdi10eXBlIHN2LW11bHRpZGlt IHN2LW1vZHBvcnQpCgkJCSBvdXQtbGlzdCkKCQkgICBzdi1uYW1lIG5pbCkpKSkKICAgIDs7CiAg ICBvdXQtbGlzdCkpCgooZGVmdW4gdmVyaWxvZy1zaWctdGllb2ZmIChzaWcpCiAgIlJldHVybiB0 aWVvZmYgZXhwcmVzc2lvbiBmb3IgZ2l2ZW4gU0lHLCB3aXRoIGFwcHJvcHJpYXRlIHdpZHRoLgpU aWVvZmYgdmFsdWUgdXNlcyBgdmVyaWxvZy1hY3RpdmUtbG93LXJlZ2V4cCcgYW5kCmB2ZXJpbG9n LWF1dG8tcmVzZXQtd2lkdGhzJy4iCiAgKGNvbmNhdAogICAoaWYgKGFuZCB2ZXJpbG9nLWFjdGl2 ZS1sb3ctcmVnZXhwCgkgICAgKHZlcmlsb2ctc3RyaW5nLW1hdGNoLWZvbGQgdmVyaWxvZy1hY3Rp dmUtbG93LXJlZ2V4cCAodmVyaWxvZy1zaWctbmFtZSBzaWcpKSkKICAgICAgICJ+IiAiIikKICAg KGNvbmQgKChub3QgdmVyaWxvZy1hdXRvLXJlc2V0LXdpZHRocykKCSAgIjAiKQoJICgoZXF1YWwg dmVyaWxvZy1hdXRvLXJlc2V0LXdpZHRocyAndW5iYXNlZCkKCSAgIicwIikKCSA7OyBFbHNlIHBy ZXN1bWUgdmVyaWxvZy1hdXRvLXJlc2V0LXdpZHRocyBpcyB0cnVlCgkgKHQKCSAgKGxldCogKCh3 aWR0aCAodmVyaWxvZy1zaWctd2lkdGggc2lnKSkpCgkgICAgKGNvbmQgKChub3Qgd2lkdGgpCgkJ ICAgImAwLypOT1dJRFRIKi8iKQoJCSAgKChzdHJpbmctbWF0Y2ggIl5bMC05XSskIiB3aWR0aCkK CQkgICAoY29uY2F0IHdpZHRoIChpZiAodmVyaWxvZy1zaWctc2lnbmVkIHNpZykgIidzaDAiICIn aDAiKSkpCgkJICAodAoJCSAgIChjb25jYXQgInsiIHdpZHRoICJ7MSdiMH19IikpKSkpKSkpCgo7 Owo7OyBEdW1waW5nCjs7CgooZGVmdW4gdmVyaWxvZy1kZWNscy1wcmluYyAoZGVjbHMgJm9wdGlv bmFsIGhlYWRlciBwcmVmaXgpCiAgIkZvciBkZWJ1ZywgZHVtcCB0aGUgYHZlcmlsb2ctcmVhZC1k ZWNscycgc3RydWN0dXJlIERFQ0xTLgpVc2Ugb3B0aW9uYWwgSEVBREVSIGFuZCBQUkVGSVguIgog ICh3aGVuIGRlY2xzCiAgICAoaWYgaGVhZGVyIChwcmluYyBoZWFkZXIpKQogICAgKHNldHEgcHJl Zml4IChvciBwcmVmaXggIiIpKQogICAgKHZlcmlsb2ctc2lnbmFscy1wcmluYyAodmVyaWxvZy1k ZWNscy1nZXQtb3V0cHV0cyBkZWNscykKCQkJICAgKGNvbmNhdCBwcmVmaXggIk91dHB1dHM6XG4i KSAoY29uY2F0IHByZWZpeCAiICAiKSkKICAgICh2ZXJpbG9nLXNpZ25hbHMtcHJpbmMgKHZlcmls b2ctZGVjbHMtZ2V0LWlub3V0cyBkZWNscykKCQkJICAgKGNvbmNhdCBwcmVmaXggIklub3V0Olxu IikgKGNvbmNhdCBwcmVmaXggIiAgIikpCiAgICAodmVyaWxvZy1zaWduYWxzLXByaW5jICh2ZXJp bG9nLWRlY2xzLWdldC1pbnB1dHMgZGVjbHMpCgkJCSAgIChjb25jYXQgcHJlZml4ICJJbnB1dHM6 XG4iKSAoY29uY2F0IHByZWZpeCAiICAiKSkKICAgICh2ZXJpbG9nLXNpZ25hbHMtcHJpbmMgKHZl cmlsb2ctZGVjbHMtZ2V0LXZhcnMgZGVjbHMpCgkJCSAgIChjb25jYXQgcHJlZml4ICJWYXJzOlxu IikgKGNvbmNhdCBwcmVmaXggIiAgIikpCiAgICAodmVyaWxvZy1zaWduYWxzLXByaW5jICh2ZXJp bG9nLWRlY2xzLWdldC1hc3NpZ25zIGRlY2xzKQoJCQkgICAoY29uY2F0IHByZWZpeCAiQXNzaWdu czpcbiIpIChjb25jYXQgcHJlZml4ICIgICIpKQogICAgKHZlcmlsb2ctc2lnbmFscy1wcmluYyAo dmVyaWxvZy1kZWNscy1nZXQtY29uc3RzIGRlY2xzKQoJCQkgICAoY29uY2F0IHByZWZpeCAiQ29u c3RzOlxuIikgKGNvbmNhdCBwcmVmaXggIiAgIikpCiAgICAodmVyaWxvZy1zaWduYWxzLXByaW5j ICh2ZXJpbG9nLWRlY2xzLWdldC1ncGFyYW1zIGRlY2xzKQoJCQkgICAoY29uY2F0IHByZWZpeCAi R3BhcmFtczpcbiIpIChjb25jYXQgcHJlZml4ICIgICIpKQogICAgKHZlcmlsb2ctc2lnbmFscy1w cmluYyAodmVyaWxvZy1kZWNscy1nZXQtaW50ZXJmYWNlcyBkZWNscykKCQkJICAgKGNvbmNhdCBw cmVmaXggIkludGVyZmFjZXM6XG4iKSAoY29uY2F0IHByZWZpeCAiICAiKSkKICAgICh2ZXJpbG9n LW1vZHBvcnQtcHJpbmMgKHZlcmlsb2ctZGVjbHMtZ2V0LW1vZHBvcnRzIGRlY2xzKQoJCQkgICAo Y29uY2F0IHByZWZpeCAiTW9kcG9ydHM6XG4iKSAoY29uY2F0IHByZWZpeCAiICAiKSkKICAgIChw cmluYyAiXG4iKSkpCgooZGVmdW4gdmVyaWxvZy1zaWduYWxzLXByaW5jIChzaWduYWxzICZvcHRp b25hbCBoZWFkZXIgcHJlZml4KQogICJGb3IgZGVidWcsIGR1bXAgaW50ZXJuYWwgU0lHTkFMUyBz dHJ1Y3R1cmVzLCB3aXRoIEhFQURFUiBhbmQgUFJFRklYLiIKICAod2hlbiBzaWduYWxzCiAgICAo aWYgaGVhZGVyIChwcmluYyBoZWFkZXIpKQogICAgKHdoaWxlIHNpZ25hbHMKICAgICAgKGxldCAo KHNpZyAoY2FyIHNpZ25hbHMpKSkKCShzZXRxIHNpZ25hbHMgKGNkciBzaWduYWxzKSkKCShwcmlu YyBwcmVmaXgpCgkocHJpbmMgIlwiIikgKHByaW5jICh2ZXJpbG9nLXNpZy1uYW1lIHNpZykpIChw cmluYyAiXCIiKQoJKHByaW5jICIgIGJpdHM9IikgKHByaW5jICh2ZXJpbG9nLXNpZy1iaXRzIHNp ZykpCgkocHJpbmMgIiAgY210PSIpIChwcmluYyAodmVyaWxvZy1zaWctY29tbWVudCBzaWcpKQoJ KHByaW5jICIgIG1lbT0iKSAocHJpbmMgKHZlcmlsb2ctc2lnLW1lbW9yeSBzaWcpKQoJKHByaW5j ICIgIGVudW09IikgKHByaW5jICh2ZXJpbG9nLXNpZy1lbnVtIHNpZykpCgkocHJpbmMgIiAgc2ln bj0iKSAocHJpbmMgKHZlcmlsb2ctc2lnLXNpZ25lZCBzaWcpKQoJKHByaW5jICIgIHR5cGU9Iikg KHByaW5jICh2ZXJpbG9nLXNpZy10eXBlIHNpZykpCgkocHJpbmMgIiAgZGltPSIpIChwcmluYyAo dmVyaWxvZy1zaWctbXVsdGlkaW0gc2lnKSkKCShwcmluYyAiICBtb2RwPSIpIChwcmluYyAodmVy aWxvZy1zaWctbW9kcG9ydCBzaWcpKQoJKHByaW5jICJcbiIpKSkpKQoKKGRlZnVuIHZlcmlsb2ct bW9kcG9ydC1wcmluYyAobW9kcG9ydHMgJm9wdGlvbmFsIGhlYWRlciBwcmVmaXgpCiAgIkZvciBk ZWJ1ZywgZHVtcCBpbnRlcm5hbCBNT0RQT1JUUyBzdHJ1Y3R1cmVzLCB3aXRoIEhFQURFUiBhbmQg UFJFRklYLiIKICAod2hlbiBtb2Rwb3J0cwogICAgKGlmIGhlYWRlciAocHJpbmMgaGVhZGVyKSkK ICAgICh3aGlsZSBtb2Rwb3J0cwogICAgICAobGV0ICgoc2lnIChjYXIgbW9kcG9ydHMpKSkKCShz ZXRxIG1vZHBvcnRzIChjZHIgbW9kcG9ydHMpKQoJKHByaW5jIHByZWZpeCkKCShwcmluYyAiXCIi KSAocHJpbmMgKHZlcmlsb2ctbW9kcG9ydC1uYW1lIHNpZykpIChwcmluYyAiXCIiKQoJKHByaW5j ICIgIGNsb2NraW5ncz0iKSAocHJpbmMgKHZlcmlsb2ctbW9kcG9ydC1jbG9ja2luZ3Mgc2lnKSkK CShwcmluYyAiXG4iKQoJKHZlcmlsb2ctZGVjbHMtcHJpbmMgKHZlcmlsb2ctbW9kcG9ydC1kZWNs cyBzaWcpCgkJCSAgICAgKGNvbmNhdCBwcmVmaXggIiAgc3ltczpcbiIpCgkJCSAgICAgKGNvbmNh dCBwcmVmaXggIiAgICAiKSkpKSkpCgo7Owo7OyBQb3J0L1dpcmUvRXRjIFJlYWRpbmcKOzsKCihk ZWZ1biB2ZXJpbG9nLXJlYWQtaW5zdC1iYWNrd2FyZC1uYW1lICgpCiAgIkludGVybmFsLiAgTW92 ZSBwb2ludCBiYWNrIHRvIGJlZ2lubmluZyBvZiBpbnN0LW5hbWUuIgogICh2ZXJpbG9nLWJhY2t3 YXJkLW9wZW4tcGFyZW4pCiAgKGxldCAoZG9uZSkKICAgICh3aGlsZSAobm90IGRvbmUpCiAgICAg ICh2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZC1xdWljayAiXFwoKVxcfFxcYlthLXpBLVowLTlg XyRdXFx8XFxdXFwpIiBuaWwgbmlsKSAgOyBdIGlzbid0IHdvcmQgYm91bmRhcnkKICAgICAgKGNv bmQgKChsb29raW5nLWF0ICIpIikKICAgICAgICAgICAgICh2ZXJpbG9nLWJhY2t3YXJkLW9wZW4t cGFyZW4pKQogICAgICAgICAgICAodCAoc2V0cSBkb25lIHQpKSkpKQogICh3aGlsZSAobG9va2lu Zy1hdCAiXFxdIikKICAgICh2ZXJpbG9nLWJhY2t3YXJkLW9wZW4tYnJhY2tldCkKICAgICh2ZXJp bG9nLXJlLXNlYXJjaC1iYWNrd2FyZC1xdWljayAiXFwoXFxiW2EtekEtWjAtOWBfJF1cXHxcXF1c XCkiIG5pbCBuaWwpKQogIChza2lwLWNoYXJzLWJhY2t3YXJkICJhLXpBLVowLTlgXyQiKSkKCihk ZWZ1biB2ZXJpbG9nLXJlYWQtaW5zdC1tb2R1bGUtbWF0Y2hlciAoKQogICJTZXQgbWF0Y2ggZGF0 YSAwIHdpdGggbW9kdWxlX25hbWUgd2hlbiBwb2ludCBpcyBpbnNpZGUgaW5zdGFudGlhdGlvbi4i CiAgKHZlcmlsb2ctcmVhZC1pbnN0LWJhY2t3YXJkLW5hbWUpCiAgOzsgU2tpcCBvdmVyIGluc3Rh bnRpYXRpb24gbmFtZQogICh2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZC1xdWljayAiXFwoXFxi W2EtekEtWjAtOWBfJF1cXHwpXFwpIiBuaWwgbmlsKSAgOyApIGlzbid0IHdvcmQgYm91bmRhcnkK ICA7OyBDaGVjayBmb3IgcGFyYW1ldGVyaXplZCBpbnN0YW50aWF0aW9ucwogICh3aGVuIChsb29r aW5nLWF0ICIpIikKICAgICh2ZXJpbG9nLWJhY2t3YXJkLW9wZW4tcGFyZW4pCiAgICAodmVyaWxv Zy1yZS1zZWFyY2gtYmFja3dhcmQtcXVpY2sgIlxcYlthLXpBLVowLTlgXyRdIiBuaWwgbmlsKSkK ICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiYS16QS1aMC05YF8kIikKICA7OyAjMSBpcyBsZWdhbCBz eW50YXggZm9yIGdhdGUgcHJpbWl0aXZlcwogICh3aGVuIChzYXZlLWV4Y3Vyc2lvbgogICAgICAg ICAgKHZlcmlsb2ctYmFja3dhcmQtc3ludGFjdGljLXdzLXF1aWNrKQogICAgICAgICAgKGVxID8j IChjaGFyLWJlZm9yZSkpKQogICAgKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkLXF1aWNrICJc XGJbYS16QS1aMC05YF8kXSIgbmlsIG5pbCkKICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICJhLXpB LVowLTlgXyQiKSkKICAobG9va2luZy1hdCAiW2EtekEtWjAtOWBfJF0rIikKICA7OyBJbXBvcnRh bnQ6IGRvbid0IHVzZSBtYXRjaCBzdHJpbmcsIHRoaXMgbXVzdCB3b3JrIHdpdGggRW1hY3MgMTkg Zm9udC1sb2NrIG9uCiAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAobWF0Y2gtYmVn aW5uaW5nIDApIChtYXRjaC1lbmQgMCkpCiAgOzsgQ2FsbGVyIGFzc3VtZXMgbWF0Y2gtYmVnaW5u aW5nL21hdGNoLWVuZCBpcyBzdGlsbCBzZXQKICApCgooZGVmdW4gdmVyaWxvZy1yZWFkLWluc3Qt bW9kdWxlICgpCiAgIlJldHVybiBtb2R1bGVfbmFtZSB3aGVuIHBvaW50IGlzIGluc2lkZSBpbnN0 YW50aWF0aW9uLiIKICAoc2F2ZS1leGN1cnNpb24KICAgICh2ZXJpbG9nLXJlYWQtaW5zdC1tb2R1 bGUtbWF0Y2hlcikpKQoKKGRlZnVuIHZlcmlsb2ctcmVhZC1pbnN0LW5hbWUgKCkKICAiUmV0dXJu IGluc3RhbmNlX25hbWUgd2hlbiBwb2ludCBpcyBpbnNpZGUgaW5zdGFudGlhdGlvbi4iCiAgKHNh dmUtZXhjdXJzaW9uCiAgICAodmVyaWxvZy1yZWFkLWluc3QtYmFja3dhcmQtbmFtZSkKICAgIChs b29raW5nLWF0ICJbYS16QS1aMC05YF8kXSsiKQogICAgOzsgSW1wb3J0YW50OiBkb24ndCB1c2Ug bWF0Y2ggc3RyaW5nLCB0aGlzIG11c3Qgd29yayB3aXRoIEVtYWNzIDE5IGZvbnQtbG9jayBvbgog ICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAobWF0Y2gtYmVnaW5uaW5nIDApICht YXRjaC1lbmQgMCkpKSkKCihkZWZ1biB2ZXJpbG9nLXJlYWQtbW9kdWxlLW5hbWUgKCkKICAiUmV0 dXJuIG1vZHVsZSBuYW1lIHdoZW4gYWZ0ZXIgaXRzICggb3IgOy4iCiAgKHNhdmUtZXhjdXJzaW9u CiAgICAocmUtc2VhcmNoLWJhY2t3YXJkICJbKDtdIikKICAgIDs7IER1ZSB0byAibW9kdWxlIHgg aW1wb3J0IHkgKCIgd2UgbXVzdCBzZWFyY2ggZm9yIGRlY2xhcmF0aW9uIGJlZ2luCiAgICAodmVy aWxvZy1yZS1zZWFyY2gtYmFja3dhcmQtcXVpY2sgdmVyaWxvZy1kZWZ1bi1yZSBuaWwgbmlsKQog ICAgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDApKQogICAgKHZlcmlsb2ctcmUtc2VhcmNoLWZvcndh cmQtcXVpY2sgIlxcYlthLXpBLVowLTlgXyRdKyIgbmlsIG5pbCkKICAgIDs7IEltcG9ydGFudDog ZG9uJ3QgdXNlIG1hdGNoIHN0cmluZywgdGhpcyBtdXN0IHdvcmsgd2l0aCBFbWFjcyAxOSBmb250 LWxvY2sgb24KICAgICh2ZXJpbG9nLXN5bWJvbC1kZXRpY2sKICAgICAoYnVmZmVyLXN1YnN0cmlu Zy1uby1wcm9wZXJ0aWVzIChtYXRjaC1iZWdpbm5pbmcgMCkgKG1hdGNoLWVuZCAwKSkgdCkpKQoK KGRlZnVuIHZlcmlsb2ctcmVhZC1pbnN0LXBhcmFtLXZhbHVlICgpCiAgIlJldHVybiBsaXN0IG9m IHBhcmFtZXRlcnMgYW5kIHZhbHVlcyB3aGVuIHBvaW50IGlzIGluc2lkZSBpbnN0YW50aWF0aW9u LiIKICAoc2F2ZS1leGN1cnNpb24KICAgICh2ZXJpbG9nLXJlYWQtaW5zdC1iYWNrd2FyZC1uYW1l KQogICAgOzsgU2tpcCBvdmVyIGluc3RhbnRpYXRpb24gbmFtZQogICAgKHZlcmlsb2ctcmUtc2Vh cmNoLWJhY2t3YXJkLXF1aWNrICJcXChcXGJbYS16QS1aMC05YF8kXVxcfClcXCkiIG5pbCBuaWwp ICA7ICkgaXNuJ3Qgd29yZCBib3VuZGFyeQogICAgOzsgSWYgdGhlcmUgYXJlIHBhcmFtZXRlcml6 ZWQgaW5zdGFudGlhdGlvbnMKICAgICh3aGVuIChsb29raW5nLWF0ICIpIikKICAgICAgKGxldCAo KGVuZC1wdCAocG9pbnQpKQoJICAgIHBhcmFtcwoJICAgIHBhcmFtLW5hbWUgcGFyZW4tYmVnLXB0 IHBhcmFtLXZhbHVlKQoJKHZlcmlsb2ctYmFja3dhcmQtb3Blbi1wYXJlbikKCSh3aGlsZSAodmVy aWxvZy1yZS1zZWFyY2gtZm9yd2FyZC1xdWljayAiXFwuIiBlbmQtcHQgdCkKCSAgKHZlcmlsb2ct cmUtc2VhcmNoLWZvcndhcmQtcXVpY2sgIlxcKFthLXpBLVowLTlgXyRdXFwpIiBuaWwgbmlsKQoJ ICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiYS16QS1aMC05J18kIikKCSAgKGxvb2tpbmctYXQgIlth LXpBLVowLTlgXyRdKyIpCgkgIChzZXRxIHBhcmFtLW5hbWUgKGJ1ZmZlci1zdWJzdHJpbmctbm8t cHJvcGVydGllcwoJCQkgICAgKG1hdGNoLWJlZ2lubmluZyAwKSAobWF0Y2gtZW5kIDApKSkKCSAg KHZlcmlsb2ctcmUtc2VhcmNoLWZvcndhcmQtcXVpY2sgIigiIG5pbCBuaWwpCgkgIChzZXRxIHBh cmVuLWJlZy1wdCAocG9pbnQpKQoJICAodmVyaWxvZy1mb3J3YXJkLWNsb3NlLXBhcmVuKQoJICAo c2V0cSBwYXJhbS12YWx1ZSAodmVyaWxvZy1zdHJpbmctcmVtb3ZlLXNwYWNlcwoJCQkgICAgIChi dWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKCQkJICAgICAgcGFyZW4tYmVnLXB0ICgxLSAo cG9pbnQpKSkpKQoJICAoc2V0cSBwYXJhbXMgKGNvbnMgKGxpc3QgcGFyYW0tbmFtZSBwYXJhbS12 YWx1ZSkgcGFyYW1zKSkpCglwYXJhbXMpKSkpCgooZGVmdW4gdmVyaWxvZy1yZWFkLWF1dG8tcGFy YW1zIChudW0tcGFyYW0gJm9wdGlvbmFsIG1heC1wYXJhbSkKICAiUmV0dXJuIHBhcmFtZXRlciBs aXN0IGluc2lkZSBhdXRvLgpPcHRpb25hbCBOVU0tUEFSQU0gYW5kIE1BWC1QQVJBTSBjaGVjayBm b3IgYSBzcGVjaWZpYyBudW1iZXIgb2YgcGFyYW1ldGVycy4iCiAgKGxldCAoKG9saXN0KSkKICAg IChzYXZlLWV4Y3Vyc2lvbgogICAgICA7OyAvKkFVVE9QVU5UKCJwYXJhbWV0ZXIiLCAicGFyYW1l dGVyIikqLwogICAgICAod2hlbiAobm90IChlcSAoY2hhci1iZWZvcmUpID9cKikpICA7IE5vdCAu KgogICAgICAgIChiYWNrd2FyZC1zZXhwIDEpKQogICAgICAod2hpbGUgKGxvb2tpbmctYXQgIig/ XFxzICpcIlxcKFteXCJdKlxcKVwiXFxzICosPyIpCiAgICAgICAgKHNldHEgb2xpc3QgKGNvbnMg KG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDEpIG9saXN0KSkKCShnb3RvLWNoYXIgKG1hdGNo LWVuZCAwKSkpKQogICAgKG9yIChlcSBuaWwgbnVtLXBhcmFtKQoJKDw9IG51bS1wYXJhbSAobGVu Z3RoIG9saXN0KSkKCShlcnJvciAiJXM6IEV4cGVjdGVkICVkIHBhcmFtZXRlcnMiICh2ZXJpbG9n LXBvaW50LXRleHQpIG51bS1wYXJhbSkpCiAgICAoaWYgKGVxIG1heC1wYXJhbSBuaWwpIChzZXRx IG1heC1wYXJhbSBudW0tcGFyYW0pKQogICAgKG9yIChlcSBuaWwgbWF4LXBhcmFtKQoJKD49IG1h eC1wYXJhbSAobGVuZ3RoIG9saXN0KSkKCShlcnJvciAiJXM6IEV4cGVjdGVkIDw9ICVkIHBhcmFt ZXRlcnMiICh2ZXJpbG9nLXBvaW50LXRleHQpIG1heC1wYXJhbSkpCiAgICAobnJldmVyc2Ugb2xp c3QpKSkKCihkZWZ1biB2ZXJpbG9nLXJlYWQtZGVjbHMgKCkKICAiQ29tcHV0ZSBzaWduYWwgZGVj bGFyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IG1vZHVsZSBhdCBwb2ludC4KUmV0 dXJuIGFuIGFycmF5IG9mIFtvdXRwdXRzIGlub3V0cyBpbnB1dHMgd2lyZSByZWcgYXNzaWduIGNv bnN0XS4iCiAgKGxldCAoKGVuZC1tb2QtcG9pbnQgKG9yICh2ZXJpbG9nLWdldC1lbmQtb2YtZGVm dW4pIChwb2ludC1tYXgpKSkKCShmdW5jdGFzayAwKSAocGFyZW4gMCkgKHNpZy1wYXJlbiAwKSAo djJrYXJncy1vayB0KQoJaW4tbW9kcG9ydCBpbi1jbG9ja2luZyBpbi1pZ24tdG8tc2VtaSBwdHlw ZSBpZ24tcHJvcAoJc2lncy1pbiBzaWdzLW91dCBzaWdzLWlub3V0IHNpZ3MtdmFyIHNpZ3MtYXNz aWduIHNpZ3MtY29uc3QKCXNpZ3MtZ3BhcmFtIHNpZ3MtaW50ZiBzaWdzLW1vZHBvcnRzCgl2ZWMg ZXhwZWN0LXNpZ25hbCBrZXl3ZCBsYXN0LWtleXdkIG5ld3NpZyBydmFsdWUgZW51bSBpbwoJc2ln bmVkIHR5cGVkZWZlZCBtdWx0aWRpbQoJbW9kcG9ydAoJdmFyc3RhY2sgdG1wKQogICAgOzsoaWYg ZGJnIChzZXRxIGRiZyAoY29uY2F0IGRiZyAoZm9ybWF0ICJcblxudmVyaWxvZy1yZWFkLWRlY2xz IFNUQVJUIFBUICVzIEVORCAlc1xuIiAocG9pbnQpIGVuZC1tb2QtcG9pbnQpKSkpCiAgICAoc2F2 ZS1leGN1cnNpb24KICAgICAgKHZlcmlsb2ctYmVnLW9mLWRlZnVuLXF1aWNrKQogICAgICAoc2V0 cSBzaWdzLWNvbnN0ICh2ZXJpbG9nLXJlYWQtYXV0by1jb25zdGFudHMgKHBvaW50KSBlbmQtbW9k LXBvaW50KSkKICAgICAgKHdoaWxlICg8IChwb2ludCkgZW5kLW1vZC1wb2ludCkKCTs7KGlmIGRi ZyAoc2V0cSBkYmcgKGNvbmNhdCBkYmcgKGZvcm1hdCAiUHQgJXMgIFZlYyAlcyAgIEMlYyBLd2Qn JXMnXG4iIChwb2ludCkgdmVjIChmb2xsb3dpbmctY2hhcikga2V5d2QpKSkpCgkoY29uZAoJICgo bG9va2luZy1hdCAiLy8iKQoJICAod2hlbiAobG9va2luZy1hdCAiW15cbl0qXFwoYXV0b1xcfHN5 bm9wc3lzXFwpXFxzICtlbnVtXFxzICtcXChbYS16QS1aMC05X10rXFwpIikKICAgICAgICAgICAg KHNldHEgZW51bSAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMikpKQoJICAoc2VhcmNoLWZv cndhcmQgIlxuIikpCgkgKChsb29raW5nLWF0ICIvXFwqIikKCSAgKGZvcndhcmQtY2hhciAyKQoJ ICAod2hlbiAobG9va2luZy1hdCAiW15cbl0qXFwoYXV0b1xcfHN5bm9wc3lzXFwpXFxzICtlbnVt XFxzICtcXChbYS16QS1aMC05X10rXFwpIikKICAgICAgICAgICAgKHNldHEgZW51bSAobWF0Y2gt c3RyaW5nLW5vLXByb3BlcnRpZXMgMikpKQoJICAob3IgKHNlYXJjaC1mb3J3YXJkICIqLyIpCgkg ICAgICAoZXJyb3IgIiVzOiBVbm1hdGNoZWQgLyogKi8sIGF0IGNoYXIgJWQiICh2ZXJpbG9nLXBv aW50LXRleHQpIChwb2ludCkpKSkKICAgICAgICAgOzsgU2tpcCBvdmVyIHByb3RlY3RlZCBzZWN0 aW9ucyB3aXRoIEJhc2U2NC1lbmNvZGVkIGRhdGEKICAgICAgICAgKChsb29raW5nLWF0ICJeXFxz ICpgcHJhZ21hXFxzICtwcm90ZWN0XFxzICtiZWdpbl9wcm90ZWN0ZWQiKQogICAgICAgICAgKG9y IChyZS1zZWFyY2gtZm9yd2FyZCAiXlxccyAqYHByYWdtYVxccyArcHJvdGVjdFxccyArZW5kX3By b3RlY3RlZCIgbmlsIHQpCiAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSkpKQogICAgICAgICAo KGxvb2tpbmctYXQgIl5cXHMgKmBwcm90ZWN0ZWRcXD4iKQogICAgICAgICAgKG9yIChyZS1zZWFy Y2gtZm9yd2FyZCAiXlxccyAqYGVuZHByb3RlY3RlZFxcPiIgbmlsIHQpCiAgICAgICAgICAgICAg KGZvcndhcmQtbGluZSkpKQoJICgobG9va2luZy1hdCAiKFxcKiIpCgkgIDs7IFRvIGFkdmFuY2Ug cGFzdCBlaXRoZXIgIigqKSIgb3IgIigqIC4uLiAqKSIgZG9uJ3QgZm9yd2FyZCBwYXN0IGZpcnN0 ICoKCSAgKGZvcndhcmQtY2hhciAxKQoJICAob3IgKHNlYXJjaC1mb3J3YXJkICIqKSIpCgkgICAg ICAoZXJyb3IgIiVzOiBVbm1hdGNoZWQgKCogKiksIGF0IGNoYXIgJWQiICh2ZXJpbG9nLXBvaW50 LXRleHQpIChwb2ludCkpKSkKCSAoKGVxID9cIiAoZm9sbG93aW5nLWNoYXIpKQogICAgICAgICAg KG9yIChyZS1zZWFyY2gtZm9yd2FyZCAiW15cXF1cIiIgbmlsIHQpICA7IGRvbid0IGZvcndhcmQt Y2hhciBmaXJzdCwgc2luY2Ugd2UgbG9vayBmb3IgYSBub24gYmFja3NsYXNoIGZpcnN0CgkgICAg ICAoZXJyb3IgIiVzOiBVbm1hdGNoZWQgcXVvdGVzLCBhdCBjaGFyICVkIiAodmVyaWxvZy1wb2lu dC10ZXh0KSAocG9pbnQpKSkpCgkgKChlcSA/XDsgKGZvbGxvd2luZy1jaGFyKSkKICAgICAgICAg IChjb25kIChpbi1pZ24tdG8tc2VtaSAgOyBTdWNoIGFzIGluc2lkZSBhICJpbXBvcnQgLi4uOyIg aW4gYSBtb2R1bGUgaGVhZGVyCiAgICAgICAgICAgICAgICAgKHNldHEgaW4taWduLXRvLXNlbWkg bmlsICBydmFsdWUgbmlsKSkKICAgICAgICAgICAgICAgICgoYW5kIGluLW1vZHBvcnQgKG5vdCAo ZXEgaW4tbW9kcG9ydCB0KSkpICA7IGVuZCBvZiBhIG1vZHBvcnQgZGVjbGFyYXRpb24KCQkgKHZl cmlsb2ctbW9kcG9ydC1kZWNscy1zZXQKCQkgIGluLW1vZHBvcnQKCQkgICh2ZXJpbG9nLWRlY2xz LW5ldyBzaWdzLW91dCBzaWdzLWlub3V0IHNpZ3MtaW4KCQkJCSAgICAgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwpKQoJCSA7OyBQb3AgZnJvbSB2YXJzdGFjayB0byByZXN0b3JlIHN0YXRlIHRvIHBy ZS1jbG9ja2luZwoJCSAoc2V0cSB0bXAgKGNhciB2YXJzdGFjaykKCQkgICAgICAgdmFyc3RhY2sg KGNkciB2YXJzdGFjaykKCQkgICAgICAgc2lncy1vdXQgKGFyZWYgdG1wIDApCgkJICAgICAgIHNp Z3MtaW5vdXQgKGFyZWYgdG1wIDEpCgkJICAgICAgIHNpZ3MtaW4gKGFyZWYgdG1wIDIpKQoJCSAo c2V0cSB2ZWMgbmlsICBpbyBuaWwgIGV4cGVjdC1zaWduYWwgbmlsICBuZXdzaWcgbmlsICBwYXJl biAwICBydmFsdWUgbmlsCgkJICAgICAgIHYya2FyZ3Mtb2sgbmlsICBpbi1tb2Rwb3J0IG5pbCAg aWduLXByb3AgbmlsKSkKCQkodAoJCSAoc2V0cSB2ZWMgbmlsICBpbyBuaWwgIGV4cGVjdC1zaWdu YWwgbmlsICBuZXdzaWcgbmlsICBwYXJlbiAwICBydmFsdWUgbmlsCgkJICAgICAgIHYya2FyZ3Mt b2sgbmlsICBpbi1tb2Rwb3J0IG5pbCAgaWduLXByb3AgbmlsKSkpCgkgIChmb3J3YXJkLWNoYXIg MSkpCgkgKChlcSA/PSAoZm9sbG93aW5nLWNoYXIpKQoJICAoc2V0cSBydmFsdWUgdCAgbmV3c2ln IG5pbCkKCSAgKGZvcndhcmQtY2hhciAxKSkKCSAoKGFuZCAoZXEgPywgKGZvbGxvd2luZy1jaGFy KSkKCSAgICAgICAoZXEgcGFyZW4gc2lnLXBhcmVuKSkKCSAgKHNldHEgcnZhbHVlIG5pbCkKCSAg KGZvcndhcmQtY2hhciAxKSkKCSA7OyAsJ3MgY2FuIG9jY3VyIGluc2lkZSB7fSAmIGZ1bmNzCgkg KChsb29raW5nLWF0ICJbeyhdIikKCSAgKHNldHEgcGFyZW4gKDErIHBhcmVuKSkKCSAgKGZvcndh cmQtY2hhciAxKSkKCSAoKGxvb2tpbmctYXQgIlt9KV0iKQoJICAoc2V0cSBwYXJlbiAoMS0gcGFy ZW4pKQoJICAoZm9yd2FyZC1jaGFyIDEpCgkgICh3aGVuICg8IHBhcmVuIHNpZy1wYXJlbikKCSAg ICAoc2V0cSBleHBlY3Qtc2lnbmFsIG5pbCBydmFsdWUgbmlsKSkpICAgOyApIHRoYXQgZW5kcyB2 YXJpYWJsZXMgaW5zaWRlIHYyayBhcmcgbGlzdAoJICgobG9va2luZy1hdCAiXFxbIikKICAgICAg ICAgIChzZXRxIGtleXdkIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKICAgICAgICAg ICAgICAgICAgICAgICAocG9pbnQpCiAgICAgICAgICAgICAgICAgICAgICAgKHByb2duIChmb3J3 YXJkLXNleHAgMSkgKHBvaW50KSkpKQoJICAoY29uZCAobmV3c2lnCTsgTWVtb3J5LCBub3QganVz dCB3aWR0aC4gIFBhdGNoIGxhc3Qgc2lnbmFsIGFkZGVkJ3MgbWVtb3J5IChudGggMykKCQkgKHNl dGNhciAoY2RyIChjZHIgKGNkciBuZXdzaWcpKSkKCQkJIChpZiAodmVyaWxvZy1zaWctbWVtb3J5 IG5ld3NpZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICh2ZXJpbG9nLXNp Zy1tZW1vcnkgbmV3c2lnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5 d2QpCgkJCSAgIGtleXdkKSkpCiAgICAgICAgICAgICAgICAodmVjICA7IE11bHRpZGltZW5zaW9u YWwKCQkgKHNldHEgbXVsdGlkaW0gKGNvbnMgdmVjIG11bHRpZGltKSkKCQkgKHNldHEgdmVjICh2 ZXJpbG9nLXN0cmluZy1yZXBsYWNlLW1hdGNoZXMKCQkJICAgICJcXHMtKyIgIiIgbmlsIG5pbCBr ZXl3ZCkpKQogICAgICAgICAgICAgICAgKHQgIDsgQml0IHdpZHRoCgkJIChzZXRxIHZlYyAodmVy aWxvZy1zdHJpbmctcmVwbGFjZS1tYXRjaGVzCgkJCSAgICAiXFxzLSsiICIiIG5pbCBuaWwga2V5 d2QpKSkpKQoJIDs7IE5vcm1hbCBvciBlc2NhcGVkIGlkZW50aWZpZXIgLS0gbm90ZSB3ZSByZW1l bWJlciB0aGUgXCBpZiBlc2NhcGVkCgkgKChsb29raW5nLWF0ICJcXHMtKlxcKFthLXpBLVowLTlg XyRdK1xcfFxcXFxbXiBcdFxuXGZdK1xcKSIpCgkgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkK CSAgKHNldHEgbGFzdC1rZXl3ZCBrZXl3ZAogICAgICAgICAgICAgICAga2V5d2QgKG1hdGNoLXN0 cmluZy1uby1wcm9wZXJ0aWVzIDEpKQogICAgICAgICAgKHdoZW4gKHN0cmluZy1tYXRjaCAiXlxc XFwiIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAxKSkKICAgICAgICAgICAgKHNldHEga2V5 d2QgKGNvbmNhdCBrZXl3ZCAiICIpKSkgIDsgRXNjYXBlZCBJRCBuZWVkcyBzcGFjZSBhdCBlbmQK CSAgOzsgQWRkIGFueSA6OiBwYWNrYWdlIG5hbWVzIHRvIHNhbWUgaWRlbnRpZmllcgogICAgICAg ICAgOzsgJyonIGhlcmUgaXMgZm9yICJpbXBvcnQgeDo6KiIKICAgICAgICAgICh3aGlsZSAobG9v a2luZy1hdCAiXFxzLSo6Olxccy0qXFwoXFwqXFx8W2EtekEtWjAtOWBfJF0rXFx8XFxcXFteIFx0 XG5cZl0rXFwpIikKCSAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCiAgICAgICAgICAgIChz ZXRxIGtleXdkIChjb25jYXQga2V5d2QgIjo6IiAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMg MSkpKQogICAgICAgICAgICAod2hlbiAoc3RyaW5nLW1hdGNoICJeXFxcXCIgKG1hdGNoLXN0cmlu Zy1uby1wcm9wZXJ0aWVzIDEpKQogICAgICAgICAgICAgIChzZXRxIGtleXdkIChjb25jYXQga2V5 d2QgIiAiKSkpKSAgOyBFc2NhcGVkIElEIG5lZWRzIHNwYWNlIGF0IGVuZAoJICAoY29uZCAoKGVx dWFsIGtleXdkICJpbnB1dCIpCgkJIChzZXRxIHZlYyBuaWwgICAgICAgIGVudW0gbmlsICAgICAg cnZhbHVlIG5pbCAgbmV3c2lnIG5pbCAgc2lnbmVkIG5pbAoJCSAgICAgICB0eXBlZGVmZWQgbmls ICBtdWx0aWRpbSBuaWwgIHB0eXBlIG5pbCAgIG1vZHBvcnQgbmlsCgkJICAgICAgIGV4cGVjdC1z aWduYWwgJ3NpZ3MtaW4gICAgICAgaW8gdCAgICAgICAgc2lnLXBhcmVuIHBhcmVuKSkKCQkoKGVx dWFsIGtleXdkICJvdXRwdXQiKQoJCSAoc2V0cSB2ZWMgbmlsICAgICAgICBlbnVtIG5pbCAgICAg IHJ2YWx1ZSBuaWwgIG5ld3NpZyBuaWwgIHNpZ25lZCBuaWwKCQkgICAgICAgdHlwZWRlZmVkIG5p bCAgbXVsdGlkaW0gbmlsICBwdHlwZSBuaWwgICBtb2Rwb3J0IG5pbAoJCSAgICAgICBleHBlY3Qt c2lnbmFsICdzaWdzLW91dCAgICAgIGlvIHQgICAgICAgIHNpZy1wYXJlbiBwYXJlbikpCgkJKChl cXVhbCBrZXl3ZCAiaW5vdXQiKQoJCSAoc2V0cSB2ZWMgbmlsICAgICAgICBlbnVtIG5pbCAgICAg IHJ2YWx1ZSBuaWwgIG5ld3NpZyBuaWwgIHNpZ25lZCBuaWwKCQkgICAgICAgdHlwZWRlZmVkIG5p bCAgbXVsdGlkaW0gbmlsICBwdHlwZSBuaWwgICBtb2Rwb3J0IG5pbAoJCSAgICAgICBleHBlY3Qt c2lnbmFsICdzaWdzLWlub3V0ICAgIGlvIHQgICAgICAgIHNpZy1wYXJlbiBwYXJlbikpCgkJKChl cXVhbCBrZXl3ZCAicGFyYW1ldGVyIikKCQkgKHNldHEgdmVjIG5pbCAgICAgICAgZW51bSBuaWwg ICAgICBydmFsdWUgbmlsICBzaWduZWQgbmlsCgkJICAgICAgIHR5cGVkZWZlZCBuaWwgIG11bHRp ZGltIG5pbCAgcHR5cGUgbmlsICAgbW9kcG9ydCBuaWwKCQkgICAgICAgZXhwZWN0LXNpZ25hbCAn c2lncy1ncGFyYW0gICBpbyB0ICAgICAgICBzaWctcGFyZW4gcGFyZW4pKQoJCSgobWVtYmVyIGtl eXdkICcoIndpcmUiICJyZWciICA7IEZhc3QKCQkJCSA7OyBuZXRfdHlwZQoJCQkJICJ0cmkiICJ0 cmkwIiAidHJpMSIgInRyaWFuZCIgInRyaW9yIiAidHJpcmVnIgoJCQkJICJ1d2lyZSIgIndhbmQi ICJ3b3IiCgkJCQkgOzsgaW50ZWdlcl9hdG9tX3R5cGUKCQkJCSAiYnl0ZSIgInNob3J0aW50IiAi aW50IiAibG9uZ2ludCIgImludGVnZXIiICJ0aW1lIgoJCQkJICJzdXBwbHkwIiAic3VwcGx5MSIK CQkJCSA7OyBpbnRlZ2VyX3ZlY3Rvcl90eXBlIC0gInJlZyIgYWJvdmUKCQkJCSAiYml0IiAibG9n aWMiCgkJCQkgOzsgbm9uX2ludGVnZXJfdHlwZQoJCQkJICJzaG9ydHJlYWwiICJyZWFsIiAicmVh bHRpbWUiCgkJCQkgOzsgZGF0YV90eXBlCgkJCQkgInN0cmluZyIgImV2ZW50IiAiY2hhbmRsZSIp KQoJCSAoY29uZCAoaW8KCQkJKHNldHEgdHlwZWRlZmVkCgkJCSAgICAgIChpZiB0eXBlZGVmZWQg KGNvbmNhdCB0eXBlZGVmZWQgIiAiIGtleXdkKSBrZXl3ZCkpKQoJCSAgICAgICAodCAoc2V0cSB2 ZWMgbmlsICBlbnVtIG5pbCAgcnZhbHVlIG5pbCAgc2lnbmVkIG5pbAoJCQkJdHlwZWRlZmVkIG5p bCAgbXVsdGlkaW0gbmlsICBzaWctcGFyZW4gcGFyZW4KCQkJCWV4cGVjdC1zaWduYWwgJ3NpZ3Mt dmFyICBtb2Rwb3J0IG5pbCkpKSkKCQkoKGVxdWFsIGtleXdkICJhc3NpZ24iKQoJCSAoc2V0cSB2 ZWMgbmlsICAgICAgICBlbnVtIG5pbCAgICAgICAgcnZhbHVlIG5pbCAgc2lnbmVkIG5pbAoJCSAg ICAgICB0eXBlZGVmZWQgbmlsICBtdWx0aWRpbSBuaWwgICAgcHR5cGUgbmlsICAgbW9kcG9ydCBu aWwKCQkgICAgICAgZXhwZWN0LXNpZ25hbCAnc2lncy1hc3NpZ24gICAgIHNpZy1wYXJlbiBwYXJl bikpCgkJKChtZW1iZXIga2V5d2QgJygibG9jYWxwYXJhbSIgImdlbnZhciIpKQoJCSAoc2V0cSB2 ZWMgbmlsICAgICAgICBlbnVtIG5pbCAgICAgIHJ2YWx1ZSBuaWwgIHNpZ25lZCBuaWwKCQkgICAg ICAgdHlwZWRlZmVkIG5pbCAgbXVsdGlkaW0gbmlsICBwdHlwZSBuaWwgICBtb2Rwb3J0IG5pbAoJ CSAgICAgICBleHBlY3Qtc2lnbmFsICdzaWdzLWNvbnN0ICAgIHNpZy1wYXJlbiBwYXJlbikpCgkJ KChtZW1iZXIga2V5d2QgJygic2lnbmVkIiAidW5zaWduZWQiKSkKCQkgKHNldHEgc2lnbmVkIGtl eXdkKSkKCQkoKG1lbWJlciBrZXl3ZCAnKCJhc3NlcnQiICJhc3N1bWUiICJjb3ZlciIgImV4cGVj dCIgInJlc3RyaWN0IikpCgkJIChzZXRxIGlnbi1wcm9wIHQpKQoJCSgobWVtYmVyIGtleXdkICco ImNsYXNzIiAiY292ZXJncm91cCIgImZ1bmN0aW9uIgoJCQkJICJwcm9wZXJ0eSIgInJhbmRzZXF1 ZW5jZSIgInNlcXVlbmNlIiAidGFzayIpKQoJCSAodW5sZXNzIGlnbi1wcm9wCgkJICAgKHNldHEg ZnVuY3Rhc2sgKDErIGZ1bmN0YXNrKSkpKQoJCSgobWVtYmVyIGtleXdkICcoImVuZGNsYXNzIiAi ZW5kZ3JvdXAiICJlbmRmdW5jdGlvbiIKCQkJCSAiZW5kcHJvcGVydHkiICJlbmRzZXF1ZW5jZSIg ImVuZHRhc2siKSkKCQkgKHNldHEgZnVuY3Rhc2sgKDEtIGZ1bmN0YXNrKSkpCgkJKChlcXVhbCBr ZXl3ZCAibW9kcG9ydCIpCgkJIChzZXRxIGluLW1vZHBvcnQgdCkpCgkJKChhbmQgKGVxdWFsIGtl eXdkICJjbG9ja2luZyIpCiAgICAgICAgICAgICAgICAgICAgICAobm90IChlcXVhbCBsYXN0LWtl eXdkICJkZWZhdWx0IikpKQoJCSAoc2V0cSBpbi1jbG9ja2luZyB0KSkKCQkoKGVxdWFsIGtleXdk ICJpbXBvcnQiKQogICAgICAgICAgICAgICAgICh3aGVuIHYya2FyZ3Mtb2sgIDsgaW1wb3J0IGlu IG1vZHVsZSBoZWFkZXIsIG5vdCBhIG1vZHBvcnQgaW1wb3J0CiAgICAgICAgICAgICAgICAgICAo c2V0cSBpbi1pZ24tdG8tc2VtaSB0ICBydmFsdWUgdCkpKQoJCSgoZXF1YWwga2V5d2QgInR5cGUi KQoJCSAoc2V0cSBwdHlwZSB0KSkKCQkoKGVxdWFsIGtleXdkICJ2YXIiKSkKCQk7OyBJZmRlZj8g IElnbm9yZSBuYW1lIG9mIGRlZmluZQoJCSgobWVtYmVyIGtleXdkICcoImBpZmRlZiIgImBpZm5k ZWYiICJgZWxzaWYiKSkKCQkgKHNldHEgcnZhbHVlIHQpKQogICAgICAgICAgICAgICAgOzsgTGlu ZSBkaXJlY3RpdmU/IFNraXAgb3ZlciB0aGUgcmVzdCBvZiB0aGUgbGluZQogICAgICAgICAgICAg ICAgKChlcXVhbCBrZXl3ZCAiYGxpbmUiKQogICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUp KQoJCTs7IFR5cGU/CgkJKCh1bmxlc3MgcHR5cGUKCQkgICAodmVyaWxvZy10eXBlZGVmLW5hbWUt cCBrZXl3ZCkpCgkJIChjb25kIChpbwoJCQkoc2V0cSB0eXBlZGVmZWQKCQkJICAgICAgKGlmIHR5 cGVkZWZlZCAoY29uY2F0IHR5cGVkZWZlZCAiICIga2V5d2QpIGtleXdkKSkpCgkJICAgICAgICh0 IChzZXRxIHZlYyBuaWwgIGVudW0gbmlsICBydmFsdWUgbmlsICBzaWduZWQgbmlsCgkJCQl0eXBl ZGVmZWQga2V5d2QgIDsgSGF2ZSBhIHR5cGUKCQkJCW11bHRpZGltIG5pbCAgc2lnLXBhcmVuIHBh cmVuCgkJCQlleHBlY3Qtc2lnbmFsICdzaWdzLXZhciAgbW9kcG9ydCBuaWwpKSkpCgkJOzsgSW50 ZXJmYWNlIHdpdGggb3B0aW9uYWwgbW9kcG9ydCBpbiB2MmsgYXJnbGlzdD8KCQk7OyBTa2lwIG92 ZXIgcGFyc2luZyBtb2Rwb3J0LCBhbmQgdGFrZSB0aGUgaW50ZXJmYWNlIG5hbWUgYXMgdGhlIHR5 cGUKCQkoKGFuZCB2MmthcmdzLW9rCgkJICAgICAgKGVxIHBhcmVuIDEpCgkJICAgICAgKG5vdCBy dmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAob3IgKGxvb2tpbmctYXQgIlxccy0qIyIpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQgIlxccy0qXFwoXFwuXFwoXFxzLSpb YS16QS1aYF8kXVthLXpBLVowLTlgXyRdKlxcKVxcfFxcKVxccy0qW2EtekEtWmBfJF1bYS16QS1a MC05YF8kXSoiKSkpCgkJICh3aGVuIChtYXRjaC1lbmQgMikgKGdvdG8tY2hhciAobWF0Y2gtZW5k IDIpKSkKCQkgKHNldHEgdmVjIG5pbCAgICAgICAgICBlbnVtIG5pbCAgICAgICBydmFsdWUgbmls ICBzaWduZWQgbmlsCiAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRlZmVkIGtleXdkICBtdWx0 aWRpbSBuaWwgICBwdHlwZSBuaWwKICAgICAgICAgICAgICAgICAgICAgICBtb2Rwb3J0IChtYXRj aC1zdHJpbmctbm8tcHJvcGVydGllcyAyKQoJCSAgICAgICBuZXdzaWcgbmlsICAgIHNpZy1wYXJl biBwYXJlbgoJCSAgICAgICBleHBlY3Qtc2lnbmFsICdzaWdzLWludGYgIGlvIHQgICkpCgkJOzsg SWdub3JlIGRvdHRlZCBMSFMgYXNzaWdubWVudHM6ICJhc3NpZ24gZm9vLmJhciA9IHo7IgoJCSgo bG9va2luZy1hdCAiXFxzLSpcXC4iKQoJCSAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCgkJICh3 aGVuIChub3QgcnZhbHVlKQoJCSAgIChzZXRxIGV4cGVjdC1zaWduYWwgbmlsKSkpCgkJOzsgIm1v ZHBvcnQgPGtleXdkPiIKCQkoKGFuZCAoZXEgaW4tbW9kcG9ydCB0KQoJCSAgICAgIChub3QgKG1l bWJlciBrZXl3ZCB2ZXJpbG9nLWtleXdvcmRzKSkpCgkJIChzZXRxIGluLW1vZHBvcnQgKHZlcmls b2ctbW9kcG9ydC1uZXcga2V5d2QgbmlsIG5pbCkpCgkJIChzZXRxIHNpZ3MtbW9kcG9ydHMgKGNv bnMgaW4tbW9kcG9ydCBzaWdzLW1vZHBvcnRzKSkKCQkgOzsgUHVzaCBvbGQgc2lnIHZhbHVlcyB0 byBzdGFjayBhbmQgcG9pbnQgdG8gbmV3IHNpZ25hbCBsaXN0CgkJIChzZXRxIHZhcnN0YWNrIChj b25zICh2ZWN0b3Igc2lncy1vdXQgc2lncy1pbm91dCBzaWdzLWluKQoJCQkJICAgICAgdmFyc3Rh Y2spKQoJCSAoc2V0cSBzaWdzLWluIG5pbCAgc2lncy1pbm91dCBuaWwgIHNpZ3Mtb3V0IG5pbCkp CgkJOzsgIm1vZHBvcnQgeCAoY2xvY2tpbmcgPGtleXdkPikiCgkJKChhbmQgaW4tbW9kcG9ydCBp bi1jbG9ja2luZykKCQkgKHZlcmlsb2ctbW9kcG9ydC1jbG9ja2luZ3MtYWRkIGluLW1vZHBvcnQg a2V5d2QpCgkJIChzZXRxIGluLWNsb2NraW5nIG5pbCkpCgkJOzsgZW5kY2xvY2tpbmcKCQkoKGFu ZCBpbi1jbG9ja2luZwoJCSAgICAgIChlcXVhbCBrZXl3ZCAiZW5kY2xvY2tpbmciKSkKCQkgKHVu bGVzcyAoZXEgaW4tY2xvY2tpbmcgdCkKCQkgICAodmVyaWxvZy1tb2Rwb3J0LWRlY2xzLXNldAoJ CSAgICBpbi1jbG9ja2luZwoJCSAgICAodmVyaWxvZy1kZWNscy1uZXcgc2lncy1vdXQgc2lncy1p bm91dCBzaWdzLWluCgkJCQkgICAgICAgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwpKQoJCSAgIDs7 IFBvcCBmcm9tIHZhcnN0YWNrIHRvIHJlc3RvcmUgc3RhdGUgdG8gcHJlLWNsb2NraW5nCgkJICAg KHNldHEgdG1wIChjYXIgdmFyc3RhY2spCgkJCSB2YXJzdGFjayAoY2RyIHZhcnN0YWNrKQoJCQkg c2lncy1vdXQgKGFyZWYgdG1wIDApCgkJCSBzaWdzLWlub3V0IChhcmVmIHRtcCAxKQoJCQkgc2ln cy1pbiAoYXJlZiB0bXAgMikpKQoJCSAoc2V0cSBpbi1jbG9ja2luZyBuaWwpKQoJCTs7ICJjbG9j a2luZyA8a2V5d2Q+IgoJCSgoYW5kIChlcSBpbi1jbG9ja2luZyB0KQoJCSAgICAgIChub3QgKG1l bWJlciBrZXl3ZCB2ZXJpbG9nLWtleXdvcmRzKSkpCgkJIChzZXRxIGluLWNsb2NraW5nICh2ZXJp bG9nLW1vZHBvcnQtbmV3IGtleXdkIG5pbCBuaWwpKQoJCSAoc2V0cSBzaWdzLW1vZHBvcnRzIChj b25zIGluLWNsb2NraW5nIHNpZ3MtbW9kcG9ydHMpKQoJCSA7OyBQdXNoIG9sZCBzaWcgdmFsdWVz IHRvIHN0YWNrIGFuZCBwb2ludCB0byBuZXcgc2lnbmFsIGxpc3QKCQkgKHNldHEgdmFyc3RhY2sg KGNvbnMgKHZlY3RvciBzaWdzLW91dCBzaWdzLWlub3V0IHNpZ3MtaW4pCgkJCQkgICAgICB2YXJz dGFjaykpCgkJIChzZXRxIHNpZ3MtaW4gbmlsICBzaWdzLWlub3V0IG5pbCAgc2lncy1vdXQgbmls KSkKCQk7OyBOZXcgc2lnbmFsLCBtYXliZT8KCQkoKGFuZCBleHBlY3Qtc2lnbmFsCgkJICAgICAg KG5vdCBydmFsdWUpCgkJICAgICAgKGVxIGZ1bmN0YXNrIDApCiAgICAgICAgICAgICAgICAgICAg ICAobm90IChtZW1iZXIga2V5d2QgdmVyaWxvZy1rZXl3b3JkcykpCiAgICAgICAgICAgICAgICAg ICAgICAob3IgKG5vdCBpbykgKGVxIHBhcmVuIHNpZy1wYXJlbikpKQoJCSA7OyBBZGQgbmV3IHNp Z25hbCB0byBleHBlY3Qtc2lnbmFsJ3MgdmFyaWFibGUKCQkgOzsoaWYgZGJnIChzZXRxIGRiZyAo Y29uY2F0IGRiZyAoZm9ybWF0ICJQdCAlcyAgTmV3IHNpZyAlcydcbiIgKHBvaW50KSBrZXl3ZCkp KSkKCQkgKHNldHEgbmV3c2lnICh2ZXJpbG9nLXNpZy1uZXcga2V5d2QgdmVjIG5pbCBuaWwgZW51 bSBzaWduZWQgdHlwZWRlZmVkIG11bHRpZGltIG1vZHBvcnQpKQoJCSAoc2V0IGV4cGVjdC1zaWdu YWwgKGNvbnMgbmV3c2lnCgkJCQkJICAoc3ltYm9sLXZhbHVlIGV4cGVjdC1zaWduYWwpKSkpKSkK CSAodAoJICAoZm9yd2FyZC1jaGFyIDEpKSkKCShza2lwLXN5bnRheC1mb3J3YXJkICIgIikpCiAg ICAgIDs7IFJldHVybiBhcmd1bWVudHMKICAgICAgKHNldHEgdG1wICh2ZXJpbG9nLWRlY2xzLW5l dyAobnJldmVyc2Ugc2lncy1vdXQpCgkJCQkgICAobnJldmVyc2Ugc2lncy1pbm91dCkKCQkJCSAg IChucmV2ZXJzZSBzaWdzLWluKQoJCQkJICAgKG5yZXZlcnNlIHNpZ3MtdmFyKQoJCQkJICAgKG5y ZXZlcnNlIHNpZ3MtbW9kcG9ydHMpCgkJCQkgICAobnJldmVyc2Ugc2lncy1hc3NpZ24pCgkJCQkg ICAobnJldmVyc2Ugc2lncy1jb25zdCkKCQkJCSAgIChucmV2ZXJzZSBzaWdzLWdwYXJhbSkKCQkJ CSAgIChucmV2ZXJzZSBzaWdzLWludGYpKSkKICAgICAgOzsoaWYgZGJnICh2ZXJpbG9nLWRlY2xz LXByaW5jIHRtcCkpCiAgICAgIHRtcCkpKQoKKGRlZnZhciB2ZXJpbG9nLXJlYWQtc3ViLWRlY2xz LWluLWludGVyZmFjZWQgbmlsCiAgIkZvciBgdmVyaWxvZy1yZWFkLXN1Yi1kZWNscycsIHByb2Nl c3MgbmV4dCBzaWduYWwgYXMgdW5kZXIgaW50ZXJmYWNlZCBibG9jay4iKQoKKGRlZnZhciB2ZXJp bG9nLXJlYWQtc3ViLWRlY2xzLWdhdGUtaW9zIG5pbAogICJGb3IgYHZlcmlsb2ctcmVhZC1zdWIt ZGVjbHMnLCBnYXRlIElPIHBpbnMgcmVtYWluaW5nLCBuaWwgaWYgbm9uLXByaW1pdGl2ZS4iKQoK KGV2YWwtd2hlbi1jb21waWxlCiAgOzsgUHJldmVudCBjb21waWxlIHdhcm5pbmdzOyB0aGVzZSBh cmUgbGV0J3MsIG5vdCBnbG9iYWxzCiAgOzsgRG8gbm90IHJlbW92ZSB0aGUgZXZhbC13aGVuLWNv bXBpbGUKICA7OyAtIHdlIHdhbnQgYW4gZXJyb3Igd2hlbiB3ZSBhcmUgZGVidWdnaW5nIHRoaXMg Y29kZSBpZiB0aGV5IGFyZSByZWZlZC4KICAoZGVmdmFyIHNpZ3MtaW4pCiAgKGRlZnZhciBzaWdz LWlub3V0KQogIChkZWZ2YXIgc2lncy1pbnRmKQogIChkZWZ2YXIgc2lncy1pbnRmZCkKICAoZGVm dmFyIHNpZ3Mtb3V0KQogIChkZWZ2YXIgc2lncy1vdXQtZCkKICAoZGVmdmFyIHNpZ3Mtb3V0LWkp CiAgKGRlZnZhciBzaWdzLW91dC11bmspCiAgKGRlZnZhciBzaWdzLXRlbXApCiAgOzsgVGhlc2Ug YXJlIGtub3duIHRvIGJlIGZyb20gb3RoZXIgcGFja2FnZXMgYW5kIG1heSBub3QgYmUgZGVmaW5l ZAogIChkZWZ2YXIgZGlmZi1jb21tYW5kKQogIDs7IFRoZXJlIGFyZSBrbm93biB0byBiZSBmcm9t IG5ld2VyIHZlcnNpb25zIG9mIEVtYWNzCiAgKGRlZnZhciBjcmVhdGUtbG9ja2ZpbGVzKQogIChk ZWZ2YXIgd2hpY2gtZnVuYy1tb2RlcykpCgooZGVmdW4gdmVyaWxvZy1yZWFkLXN1Yi1kZWNscy10 eXBlIChwYXItdmFsdWVzIHBvcnRkYXRhKQogICJGb3IgYHZlcmlsb2ctcmVhZC1zdWItZGVjbHMt bGluZScsIGRlY29kZSBhIHNpZ25hbCB0eXBlLiIKICAobGV0KiAoKHR5cGUgKHZlcmlsb2ctc2ln LXR5cGUgcG9ydGRhdGEpKQogICAgICAgICAocHZhc3NvYyAoYXNzb2MgdHlwZSBwYXItdmFsdWVz KSkpCiAgICAoY29uZCAoKG1lbWJlciB0eXBlICcoIndpcmUiICJyZWciKSkgbmlsKQogICAgICAg ICAgKHB2YXNzb2MgKG50aCAxIHB2YXNzb2MpKQogICAgICAgICAgKHQgdHlwZSkpKSkKCihkZWZ1 biB2ZXJpbG9nLXJlYWQtc3ViLWRlY2xzLXNpZyAoc3VibW9kZGVjbHMgcGFyLXZhbHVlcyBjb21t ZW50IHBvcnQgc2lnIHZlYyBtdWx0aWRpbSBtZW0pCiAgIkZvciBgdmVyaWxvZy1yZWFkLXN1Yi1k ZWNscy1saW5lJywgYWRkIGEgc2lnbmFsLiIKICA7OyBzaWcgZXEgdCB0byBpbmRpY2F0ZSAubmFt ZSBzeW50YXgKICA7OyhtZXNzYWdlICJ2cnNkczogJXMoJVMpIiBwb3J0IHNpZykKICAobGV0ICgo ZG90bmFtZSAoZXEgc2lnIHQpKQogICAgICAgIHBvcnRkYXRhKQogICAgKHdoZW4gc2lnCiAgICAg IChzZXRxIHBvcnQgKHZlcmlsb2ctc3ltYm9sLWRldGljay1kZW51bWJlciBwb3J0KSkKICAgICAg KHNldHEgc2lnICAoaWYgZG90bmFtZSBwb3J0ICh2ZXJpbG9nLXN5bWJvbC1kZXRpY2stZGVudW1i ZXIgc2lnKSkpCiAgICAgIChpZiB2ZWMgKHNldHEgdmVjICAodmVyaWxvZy1zeW1ib2wtZGV0aWNr LWRlbnVtYmVyIHZlYykpKQogICAgICAoaWYgbXVsdGlkaW0gKHNldHEgbXVsdGlkaW0gIChtYXBj YXIgIyd2ZXJpbG9nLXN5bWJvbC1kZXRpY2stZGVudW1iZXIgbXVsdGlkaW0pKSkKICAgICAgKGlm IG1lbSAoc2V0cSBtZW0gKHZlcmlsb2ctc3ltYm9sLWRldGljay1kZW51bWJlciBtZW0pKSkKICAg ICAgKHVubGVzcyAob3IgKG5vdCBzaWcpCiAgICAgICAgICAgICAgICAgIChlcXVhbCBzaWcgIiIp KSAgOyBJZ25vcmUgLmZvbygxJ2IxKSBhc3NpZ25tZW50cwoJKGNvbmQgKChvciAoc2V0cSBwb3J0 ZGF0YSAoYXNzb2MgcG9ydCAodmVyaWxvZy1kZWNscy1nZXQtaW5vdXRzIHN1Ym1vZGRlY2xzKSkp CgkJICAgKGVxdWFsICJpbm91dCIgdmVyaWxvZy1yZWFkLXN1Yi1kZWNscy1nYXRlLWlvcykpCgkg ICAgICAgKHNldHEgc2lncy1pbm91dAoJCSAgICAgKGNvbnMgKHZlcmlsb2ctc2lnLW5ldwoJCQkg ICAgc2lnCgkJCSAgICAoaWYgZG90bmFtZSAodmVyaWxvZy1zaWctYml0cyBwb3J0ZGF0YSkgdmVj KQoJCQkgICAgKGNvbmNhdCAiVG8vRnJvbSAiIGNvbW1lbnQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtZW0KCQkJICAgIG5pbAoJCQkgICAgKHZlcmlsb2ctc2lnLXNpZ25lZCBwb3J0ZGF0 YSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLXJlYWQtc3ViLWRlY2xzLXR5 cGUgcGFyLXZhbHVlcyBwb3J0ZGF0YSkKCQkJICAgIG11bHRpZGltIG5pbCkKCQkJICAgc2lncy1p bm91dCkpKQoJICAgICAgKChvciAoc2V0cSBwb3J0ZGF0YSAoYXNzb2MgcG9ydCAodmVyaWxvZy1k ZWNscy1nZXQtb3V0cHV0cyBzdWJtb2RkZWNscykpKQoJCSAgIChlcXVhbCAib3V0cHV0IiB2ZXJp bG9nLXJlYWQtc3ViLWRlY2xzLWdhdGUtaW9zKSkKCSAgICAgICAoc2V0cSBzaWdzLW91dAoJCSAg ICAgKGNvbnMgKHZlcmlsb2ctc2lnLW5ldwoJCQkgICAgc2lnCgkJCSAgICAoaWYgZG90bmFtZSAo dmVyaWxvZy1zaWctYml0cyBwb3J0ZGF0YSkgdmVjKQoJCQkgICAgKGNvbmNhdCAiRnJvbSAiIGNv bW1lbnQpCgkJCSAgICBtZW0KCQkJICAgIG5pbAoJCQkgICAgKHZlcmlsb2ctc2lnLXNpZ25lZCBw b3J0ZGF0YSkKCQkJICAgIDs7IFRob3VnaCBvayBpbiBTViwgaW4gVjJLIGNvZGUsIHByb3BhZ2F0 aW5nIHRoZQoJCQkgICAgOzsgICJyZWciIGluICJvdXRwdXQgcmVnIiB1cHdhcmRzIGlzbid0IGxl Z2FsLgoJCQkgICAgOzsgQWxzbyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZG9uJ3Qg cHJvcGFnYXRlCgkJCSAgICA7OyAgImlucHV0IHdpcmUiIHVwd2FyZHMuCgkJCSAgICA7OyBTZWUg YWxzbyBgdmVyaWxvZy1zaWduYWxzLWVkaXQtd2lyZS1yZWcnLgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHZlcmlsb2ctcmVhZC1zdWItZGVjbHMtdHlwZSBwYXItdmFsdWVzIHBvcnRkYXRh KQoJCQkgICAgbXVsdGlkaW0gbmlsKQoJCQkgICBzaWdzLW91dCkpKQoJICAgICAgKChvciAoc2V0 cSBwb3J0ZGF0YSAoYXNzb2MgcG9ydCAodmVyaWxvZy1kZWNscy1nZXQtaW5wdXRzIHN1Ym1vZGRl Y2xzKSkpCgkJICAgKGVxdWFsICJpbnB1dCIgdmVyaWxvZy1yZWFkLXN1Yi1kZWNscy1nYXRlLWlv cykpCgkgICAgICAgKHNldHEgc2lncy1pbgoJCSAgICAgKGNvbnMgKHZlcmlsb2ctc2lnLW5ldwoJ CQkgICAgc2lnCgkJCSAgICAoaWYgZG90bmFtZSAodmVyaWxvZy1zaWctYml0cyBwb3J0ZGF0YSkg dmVjKQoJCQkgICAgKGNvbmNhdCAiVG8gIiBjb21tZW50KQoJCQkgICAgbWVtCgkJCSAgICBuaWwK CQkJICAgICh2ZXJpbG9nLXNpZy1zaWduZWQgcG9ydGRhdGEpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodmVyaWxvZy1yZWFkLXN1Yi1kZWNscy10eXBlIHBhci12YWx1ZXMgcG9ydGRhdGEp CgkJCSAgICBtdWx0aWRpbSBuaWwpCgkJCSAgIHNpZ3MtaW4pKSkKCSAgICAgICgoc2V0cSBwb3J0 ZGF0YSAoYXNzb2MgcG9ydCAodmVyaWxvZy1kZWNscy1nZXQtaW50ZXJmYWNlcyBzdWJtb2RkZWNs cykpKQoJICAgICAgIChzZXRxIHNpZ3MtaW50ZgoJCSAgICAgKGNvbnMgKHZlcmlsb2ctc2lnLW5l dwoJCQkgICAgc2lnCgkJCSAgICAoaWYgZG90bmFtZSAodmVyaWxvZy1zaWctYml0cyBwb3J0ZGF0 YSkgdmVjKQoJCQkgICAgKGNvbmNhdCAiVG8vRnJvbSAiIGNvbW1lbnQpCgkJCSAgICBtZW0KCQkJ ICAgIG5pbAoJCQkgICAgKHZlcmlsb2ctc2lnLXNpZ25lZCBwb3J0ZGF0YSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh2ZXJpbG9nLXJlYWQtc3ViLWRlY2xzLXR5cGUgcGFyLXZhbHVlcyBw b3J0ZGF0YSkKCQkJICAgIG11bHRpZGltIG5pbCkKCQkJICAgc2lncy1pbnRmKSkpCgkgICAgICAo KHNldHEgcG9ydGRhdGEgKGFuZCB2ZXJpbG9nLXJlYWQtc3ViLWRlY2xzLWluLWludGVyZmFjZWQK CQkJCSAgIChhc3NvYyBwb3J0ICh2ZXJpbG9nLWRlY2xzLWdldC12YXJzIHN1Ym1vZGRlY2xzKSkp KQoJICAgICAgIChzZXRxIHNpZ3MtaW50ZmQKCQkgICAgIChjb25zICh2ZXJpbG9nLXNpZy1uZXcK CQkJICAgIHNpZwoJCQkgICAgKGlmIGRvdG5hbWUgKHZlcmlsb2ctc2lnLWJpdHMgcG9ydGRhdGEp IHZlYykKCQkJICAgIChjb25jYXQgIlRvL0Zyb20gIiBjb21tZW50KQoJCQkgICAgbWVtCgkJCSAg ICBuaWwKCQkJICAgICh2ZXJpbG9nLXNpZy1zaWduZWQgcG9ydGRhdGEpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodmVyaWxvZy1yZWFkLXN1Yi1kZWNscy10eXBlIHBhci12YWx1ZXMgcG9y dGRhdGEpCgkJCSAgICBtdWx0aWRpbSBuaWwpCgkJCSAgIHNpZ3MtaW50ZikpKQoJICAgICAgOzsg KHQgIC0tIHdhcm5pbmcgcGluIGlzbid0IGRlZmluZWQuKSAgIDsgTGVhdmUgZm9yIGxpbnQgdG9v bAoJICAgICAgKSkpKSkKCihkZWZ1biB2ZXJpbG9nLXJlYWQtc3ViLWRlY2xzLWV4cHIgKHN1Ym1v ZGRlY2xzIHBhci12YWx1ZXMgY29tbWVudCBwb3J0IGV4cHIpCiAgIkZvciBgdmVyaWxvZy1yZWFk LXN1Yi1kZWNscy1saW5lJywgcGFyc2UgYSBzdWJleHByZXNzaW9uIGFuZCBhZGQgc2lnbmFscy4i CiAgOzsobWVzc2FnZSAidnJzZGU6IGAlcyciIGV4cHIpCiAgOzsgUmVwbGFjZSBzcGVjaWFsIC8q Wy4uLi5dKi8gY29tbWVudHMgaW5zZXJ0ZWQgYnkgdmVyaWxvZy1hdXRvLWluc3QtcG9ydAogIChz ZXRxIGV4cHIgKHZlcmlsb2ctc3RyaW5nLXJlcGxhY2UtbWF0Y2hlcwogICAgICAgICAgICAgICIv XFwqXFwoXFwuP1xcW1xcKFteKl0rXFx8WypdW14vXVxcKStcXF1cXClcXCovIiAiXFwxIiBuaWwg bmlsIGV4cHIpKQogIDs7IFJlbW92ZSBmcm9udCBvcGVyYXRvcnMKICAoc2V0cSBleHByICh2ZXJp bG9nLXN0cmluZy1yZXBsYWNlLW1hdGNoZXMgIl5cXHMtKlstLS0rfiF8Jl0rXFxzLSoiICIiIG5p bCBuaWwgZXhwcikpCiAgOzsKICAoY29uZAogICA7OyB7Li4uLCBhLCBifSByZXF1aXJlcyB1cyB0 byByZWN1cnNlIG9uIGEsYgogICA7OyBUbyBzdXBwb3J0IHsje30seyN7YSxifX0gd2UnbGwganVz dCBzcGxpdCBldmVyeXRoaW5nIG9uIFt7fSxdCiAgICgoc3RyaW5nLW1hdGNoICJeXFxzLSp7XFwo LipcXCl9XFxzLSokIiBleHByKQogICAgKGxldCAoKG1sc3QgKHNwbGl0LXN0cmluZyAobWF0Y2gt c3RyaW5nIDEgZXhwcikgIlt7fSxdIikpCiAgICAgICAgICBtc3RyKQogICAgICAod2hpbGUgKHNl dHEgbXN0ciAocG9wIG1sc3QpKQogICAgICAgICh2ZXJpbG9nLXJlYWQtc3ViLWRlY2xzLWV4cHIg c3VibW9kZGVjbHMgcGFyLXZhbHVlcyBjb21tZW50IHBvcnQgbXN0cikpKSkKICAgKHQKICAgIChs ZXQgKHNpZyB2ZWMgbXVsdGlkaW0gbWVtKQogICAgICA7OyBSZW1vdmUgbGVhZGluZyByZWR1Y3Rp b24gb3BlcmF0b3JzLCBldGMKICAgICAgKHNldHEgZXhwciAodmVyaWxvZy1zdHJpbmctcmVwbGFj ZS1tYXRjaGVzICJeXFxzLSpbLS0tK34hfCZdK1xccy0qIiAiIiBuaWwgbmlsIGV4cHIpKQogICAg ICA7OyBSZW1vdmUgY2FzdGluZyB0eXBlcwogICAgICAoc2V0cSBleHByICh2ZXJpbG9nLXN0cmlu Zy1yZXBsYWNlLW1hdGNoZXMKICAgICAgICAgICAgICAgICAgIl5cXHMtKlthLXpBLVpfXVthLXpB LVpfMC05XSpcXHMtKiciICIiIG5pbCBuaWwgZXhwcikpCiAgICAgIDs7IFJlbW92ZSBzaW1wbGUg c2luZ2xlIHNldCBvZiBwYXJlbnMgKHBlcmhhcHMgZnJvbSBjYXN0LCBvciBwZXJoYXBzIG5vdCkK ICAgICAgKHNldHEgZXhwciAodmVyaWxvZy1zdHJpbmctcmVwbGFjZS1tYXRjaGVzCiAgICAgICAg ICAgICAgICAgICJeXFxzLSooXFwoW14pXSpcXCkpXFxzLSokIiAiXFwxIiBuaWwgbmlsIGV4cHIp KQogICAgICA7OyhtZXNzYWdlICJ2cnNkZS1wdG9wOiBgJXMnIiBleHByKQogICAgICAoY29uZCAg OyBGaW5kIFxzaWduYWwuIEZpbmFsIHNwYWNlIGlzIHBhcnQgb2YgZXNjYXBlZCBzaWduYWwgbmFt ZQogICAgICAgKChzdHJpbmctbWF0Y2ggIl5cXHMtKlxcKFxcXFxbXiBcdFxuXGZdK1xccy1cXCki IGV4cHIpCgk7OyhtZXNzYWdlICJ2cnNkZS1zOiBgJXMnIiAobWF0Y2gtc3RyaW5nIDEgZXhwcikp Cgkoc2V0cSBzaWcgKG1hdGNoLXN0cmluZyAxIGV4cHIpCgkgICAgICBleHByIChzdWJzdHJpbmcg ZXhwciAobWF0Y2gtZW5kIDApKSkpCiAgICAgICA7OyBGaW5kIHNpZ25hbAogICAgICAgKChzdHJp bmctbWF0Y2ggIl5cXHMtKlxcKFthLXpBLVpfXVthLXpBLVpfMC05XSpcXCkiIGV4cHIpCgk7Oyht ZXNzYWdlICJ2cnNkZS1zOiBgJXMnIiAobWF0Y2gtc3RyaW5nIDEgZXhwcikpCgkoc2V0cSBzaWcg KHZlcmlsb2ctc3RyaW5nLXJlbW92ZS1zcGFjZXMgKG1hdGNoLXN0cmluZyAxIGV4cHIpKQoJICAg ICAgZXhwciAoc3Vic3RyaW5nIGV4cHIgKG1hdGNoLWVuZCAwKSkpKSkKICAgICAgOzsgRmluZCBb dmVjdG9yXSBvciBbbXVsdGldW211bHRpXVttdWx0aV1bdmVjdG9yXSBvciBbdmVjdG9yW1ZFQzJd XQogICAgICA7OyBVbmZvcnR1bmF0ZWx5IEVtYWNzIHJlZ2V4cHMgZG9uJ3QgYWxsb3cgbWF0Y2hp bmcgYnJhY2tldCBzZWFyY2hlcywgc28ganVzdCAyIGRlZXAuCiAgICAgICh3aGlsZSAoc3RyaW5n LW1hdGNoICJeXFxzLSpcXChcXFtcXChbXl1bXStcXHxcXFtbXl1bXStcXF1cXCkqXFxdXFwpIiBl eHByKQoJOzsobWVzc2FnZSAidnJzZGUtdjogYCVzJyIgKG1hdGNoLXN0cmluZyAxIGV4cHIpKQoJ KHdoZW4gdmVjIChzZXRxIG11bHRpZGltIChjb25zIHZlYyBtdWx0aWRpbSkpKQoJKHNldHEgdmVj IChtYXRjaC1zdHJpbmcgMSBleHByKQoJICAgICAgZXhwciAoc3Vic3RyaW5nIGV4cHIgKG1hdGNo LWVuZCAwKSkpKQogICAgICA7OyBGaW5kIC5bdW5wYWNrZWRfbWVtb3J5XSBvciAuW3VucGFja2Vk XVt1bnBhY2tlZF0uLi4KICAgICAgKHdoaWxlIChzdHJpbmctbWF0Y2ggIl5cXHMtKlxcLlxcKFxc KFxcW1teXV0rXFxdXFwpK1xcKSIgZXhwcikKCTs7KG1lc3NhZ2UgInZyc2RlLW06IGAlcyciICht YXRjaC1zdHJpbmcgMSBleHByKSkKCShzZXRxIG1lbSAobWF0Y2gtc3RyaW5nIDEgZXhwcikKCSAg ICAgIGV4cHIgKHN1YnN0cmluZyBleHByIChtYXRjaC1lbmQgMCkpKSkKICAgICAgOzsgSWYgZm91 bmQgc2lnbmFsLCBhbmQgbm90aGluZyB1bnJlY29nbml6ZWQsIGFkZCB0aGUgc2lnbmFsCiAgICAg IDs7KG1lc3NhZ2UgInZyc2RlLXJlbTogYCVzJyIgZXhwcikKICAgICAgKHdoZW4gKGFuZCBzaWcg KHN0cmluZy1tYXRjaCAiXlxccy0qJCIgZXhwcikpCiAgICAgICAgKHZlcmlsb2ctcmVhZC1zdWIt ZGVjbHMtc2lnIHN1Ym1vZGRlY2xzIHBhci12YWx1ZXMgY29tbWVudCBwb3J0IHNpZyB2ZWMgbXVs dGlkaW0gbWVtKSkpKSkpCgooZGVmdW4gdmVyaWxvZy1yZWFkLXN1Yi1kZWNscy1saW5lIChzdWJt b2RkZWNscyBwYXItdmFsdWVzIGNvbW1lbnQpCiAgIkZvciBgdmVyaWxvZy1yZWFkLXN1Yi1kZWNs cycsIHJlYWQgbGluZXMgb2YgcG9ydCBkZWZzIHVudGlsIG5vbmUgbWF0Y2guCkluc2VydHMgdGhl IGxpc3Qgb2Ygc2lnbmFscyBmb3VuZCwgdXNpbmcgc3VibW9kaSB0byBsb29rIHVwIGVhY2ggcG9y dC4iCiAgKGxldCAoZG9uZSBwb3J0KQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgIChmb3J3YXJk LWxpbmUgMSkKICAgICAgKHdoaWxlIChub3QgZG9uZSkKCTs7IEdldCBwb3J0IG5hbWUKCShjb25k ICgobG9va2luZy1hdCAiXFxzLSpcXC5cXHMtKlxcKFthLXpBLVowLTlgXyRdKlxcKVxccy0qKFxc cy0qIikKCSAgICAgICAoc2V0cSBwb3J0IChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAxKSkK CSAgICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpKQoJICAgICAgOzsgLlxlc2NhcGVkICgK CSAgICAgICgobG9va2luZy1hdCAiXFxzLSpcXC5cXHMtKlxcKFxcXFxbXiBcdFxuXGZdKlxcKVxc cy0qKFxccy0qIikKICAgICAgICAgICAgICAgKHNldHEgcG9ydCAoY29uY2F0IChtYXRjaC1zdHJp bmctbm8tcHJvcGVydGllcyAxKSAiICIpKSAgOyBlc2NhcGVkIGlkJ3MgbmVlZCB0cmFpbGluZyBz cGFjZQoJICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkpCgkgICAgICA7OyAubmFtZQoJ ICAgICAgKChsb29raW5nLWF0ICJcXHMtKlxcLlxccy0qXFwoW2EtekEtWjAtOWBfJF0qXFwpXFxz LSpbLCkvXSIpCgkgICAgICAgKHZlcmlsb2ctcmVhZC1zdWItZGVjbHMtc2lnCiAgICAgICAgICAg ICAgICBzdWJtb2RkZWNscyBwYXItdmFsdWVzIGNvbW1lbnQgKG1hdGNoLXN0cmluZy1uby1wcm9w ZXJ0aWVzIDEpIHQgOyBzaWc9PXQgZm9yIC5uYW1lCgkJbmlsIG5pbCBuaWwpIDsgdmVjIG11bHRp ZGltIG1lbQoJICAgICAgIChzZXRxIHBvcnQgbmlsKSkKCSAgICAgIDs7IC5cZXNjYXBlZF9uYW1l CgkgICAgICAoKGxvb2tpbmctYXQgIlxccy0qXFwuXFxzLSpcXChcXFxcW14gXHRcblxmXSpcXClc XHMtKlssKS9dIikKCSAgICAgICAodmVyaWxvZy1yZWFkLXN1Yi1kZWNscy1zaWcKICAgICAgICAg ICAgICAgIHN1Ym1vZGRlY2xzIHBhci12YWx1ZXMgY29tbWVudCAoY29uY2F0IChtYXRjaC1zdHJp bmctbm8tcHJvcGVydGllcyAxKSAiICIpIHQgOyBzaWc9PXQgZm9yIC5uYW1lCgkJbmlsIG5pbCBu aWwpIDsgdmVjIG11bHRpZGltIG1lbQoJICAgICAgIChzZXRxIHBvcnQgbmlsKSkKCSAgICAgIDs7 IHJhbmRvbQoJICAgICAgKChsb29raW5nLWF0ICJcXHMtKlxcLlteKF0qKCIpCiAgICAgICAgICAg ICAgIChzZXRxIHBvcnQgbmlsKSAgOyBza2lwIHRoaXMgbGluZQoJICAgICAgIChnb3RvLWNoYXIg KG1hdGNoLWVuZCAwKSkpCgkgICAgICAodAogICAgICAgICAgICAgICAoc2V0cSBwb3J0IG5pbCAg ZG9uZSB0KSkpICA7IFVua25vd24sIGlnbm9yZSByZXN0IG9mIGxpbmUKCTs7IEdldCBzaWduYWwg bmFtZS4gIFBvaW50IGlzIGF0IHRoZSBmaXJzdC1ub24tc3BhY2UgYWZ0ZXIgKAoJOzsgV2UgaW50 ZW50aW9uYWxseSBpZ25vcmUgKG5vbi1lc2NhcGVkKSBzaWduYWxzIHdpdGggLnMgaW4gdGhlbQoJ OzsgdGhpcyBwcmV2ZW50cyBBVVRPV0lSRSBldGMgZnJvbSBub3RpY2luZyBoaWVyYXJjaGljYWwg c2lncy4KCSh3aGVuIHBvcnQKICAgICAgICAgIChjb25kICgoYW5kIHZlcmlsb2ctYXV0by1pZ25v cmUtY29uY2F0CiAgICAgICAgICAgICAgICAgICAgICAobG9va2luZy1hdCAiWyh7XSIpKQogICAg ICAgICAgICAgICAgIG5pbCkgOyB7Li4ufSBvciAoLi4uKSBoaXN0b3JpY2FsbHkgaWdub3JlZCB3 aXRoIGF1dG8taWdub3JlLWNvbmNhdAogICAgICAgICAgICAgICAgKChsb29raW5nLWF0ICJcXChb YS16QS1aX11bYS16QS1aXzAtOV0qXFwpXFxzLSopIikKCQkgKHZlcmlsb2ctcmVhZC1zdWItZGVj bHMtc2lnCiAgICAgICAgICAgICAgICAgIHN1Ym1vZGRlY2xzIHBhci12YWx1ZXMgY29tbWVudCBw b3J0CgkJICAodmVyaWxvZy1zdHJpbmctcmVtb3ZlLXNwYWNlcyAobWF0Y2gtc3RyaW5nLW5vLXBy b3BlcnRpZXMgMSkpIDsgc2lnCgkJICBuaWwgbmlsIG5pbCkpIDsgdmVjIG11bHRpZGltIG1lbQoJ CTs7CgkJKChsb29raW5nLWF0ICJcXChbYS16QS1aX11bYS16QS1aXzAtOV0qXFwpXFxzLSpcXChc XFtbXl1bXStcXF1cXClcXHMtKikiKQoJCSAodmVyaWxvZy1yZWFkLXN1Yi1kZWNscy1zaWcKICAg ICAgICAgICAgICAgICAgc3VibW9kZGVjbHMgcGFyLXZhbHVlcyBjb21tZW50IHBvcnQKCQkgICh2 ZXJpbG9nLXN0cmluZy1yZW1vdmUtc3BhY2VzIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAx KSkgOyBzaWcKCQkgIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAyKSBuaWwgbmlsKSkgOyB2 ZWMgbXVsdGlkaW0gbWVtCgkJOzsgRmFzdHBhdGggd2FzIGFib3ZlIGxvb2tpbmctYXQncy4KCQk7 OyBGb3Igc29tZXRoaW5nIG1vcmUgY29tcGxpY2F0ZWQgaW52b2tlIGEgcGFyc2VyCgkJKChsb29r aW5nLWF0ICJbXildKyIpCgkJICh2ZXJpbG9nLXJlYWQtc3ViLWRlY2xzLWV4cHIKICAgICAgICAg ICAgICAgICAgc3VibW9kZGVjbHMgcGFyLXZhbHVlcyBjb21tZW50IHBvcnQKCQkgIChidWZmZXIt c3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKCQkgICAocG9pbnQpICgxLSAocHJvZ24gKHNlYXJjaC1i YWNrd2FyZCAiKCIpIDsgc3RhcnQgYXQgKAoJCQkJICAgICAgKHZlcmlsb2ctZm9yd2FyZC1zZXhw LWlnbi1jbXQgMSkKCQkJCSAgICAgIChwb2ludCkpKSkpKSkpIDsgZXhwcgoJOzsKCShmb3J3YXJk LWxpbmUgMSkpKSkpCjs7KHZlcmlsb2ctcmVhZC1zdWItZGVjbHMtbGluZSAodmVyaWxvZy1kZWNs cy1uZXcgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwpIG5pbCAiQ210IikKCihk ZWZ1biB2ZXJpbG9nLXJlYWQtc3ViLWRlY2xzLWdhdGUgKHN1Ym1vZGRlY2xzIHBhci12YWx1ZXMg Y29tbWVudCBzdWJtb2QgZW5kLWluc3QtcG9pbnQpCiAgIkZvciBgdmVyaWxvZy1yZWFkLXN1Yi1k ZWNscycsIHJlYWQgbGluZXMgb2YgVURQIGdhdGUgZGVjbCB1bnRpbCBub25lIG1hdGNoLgpJbnNl cnRzIHRoZSBsaXN0IG9mIHNpZ25hbHMgZm91bmQuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGxl dCAoKGlvbGlzdCAoY2RyIChhc3NvYyBzdWJtb2QgdmVyaWxvZy1nYXRlLWlvcykpKSkKICAgICAg KHdoaWxlICg8IChwb2ludCkgZW5kLWluc3QtcG9pbnQpCgk7OyBHZXQgcHJpbWl0aXZlJ3Mgc2ln bmFsIG5hbWUsIGFzIHdpbGwgbmV2ZXIgaGF2ZSBwb3J0LCBhbmQgbm8gdHJhaWxpbmcgKQoJKGNv bmQgKChsb29raW5nLWF0ICIvLyIpCgkgICAgICAgKHNlYXJjaC1mb3J3YXJkICJcbiIpKQoJICAg ICAgKChsb29raW5nLWF0ICIvXFwqIikKCSAgICAgICAob3IgKHNlYXJjaC1mb3J3YXJkICIqLyIp CgkJICAgKGVycm9yICIlczogVW5tYXRjaGVkIC8qICovLCBhdCBjaGFyICVkIiAodmVyaWxvZy1w b2ludC10ZXh0KSAocG9pbnQpKSkpCgkgICAgICAoKGxvb2tpbmctYXQgIihcXCoiKQoJICAgICAg IDs7IFRvIGFkdmFuY2UgcGFzdCBlaXRoZXIgIigqKSIgb3IgIigqIC4uLiAqKSIgZG9uJ3QgZm9y d2FyZCBwYXN0IGZpcnN0ICoKCSAgICAgICAoZm9yd2FyZC1jaGFyIDEpCgkgICAgICAgKG9yIChz ZWFyY2gtZm9yd2FyZCAiKikiKQoJCSAgIChlcnJvciAiJXM6IFVubWF0Y2hlZCAoKiAqKSwgYXQg Y2hhciAlZCIgKHZlcmlsb2ctcG9pbnQtdGV4dCkgKHBvaW50KSkpKQogICAgICAgICAgICAgIDs7 IE9uIHBpbnMsIHBhcnNlIGFuZCBhZHZhbmNlIHRvIG5leHQgcGluCiAgICAgICAgICAgICAgOzsg TG9va2luZyBhdCBwaW4sIGJ1dCAqbm90KiBhbiAvLyBPdXRwdXQgY29tbWVudCwgb3IgKSB0byBl bmQgdGhlIGluc3QKICAgICAgICAgICAgICAoKGxvb2tpbmctYXQgIlxccy0qW2EtekEtWjAtOWBf JCh7fVxcXVteLF0qIikKICAgICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDApKQoJ ICAgICAgIChzZXRxIHZlcmlsb2ctcmVhZC1zdWItZGVjbHMtZ2F0ZS1pb3MgKG9yIChjYXIgaW9s aXN0KSAiaW5wdXQiKQoJCSAgICAgaW9saXN0IChjZHIgaW9saXN0KSkKCSAgICAgICAodmVyaWxv Zy1yZWFkLXN1Yi1kZWNscy1leHByCiAgICAgICAgICAgICAgICBzdWJtb2RkZWNscyBwYXItdmFs dWVzIGNvbW1lbnQgInByaW1pdGl2ZV9wb3J0IgogICAgICAgICAgICAgICAgKG1hdGNoLXN0cmlu Zy1uby1wcm9wZXJ0aWVzIDApKSkKCSAgICAgICh0CgkgICAgICAgKGZvcndhcmQtY2hhciAxKQoJ ICAgICAgIChza2lwLXN5bnRheC1mb3J3YXJkICIgIikpKSkpKSkKCihkZWZ1biB2ZXJpbG9nLXJl YWQtc3ViLWRlY2xzICgpCiAgIkludGVybmFsbHkgcGFyc2Ugc2lnbmFscyBnb2luZyB0byBtb2R1 bGVzIHVuZGVyIHRoaXMgbW9kdWxlLgpSZXR1cm4gYW4gYXJyYXkgb2YgWyBvdXRwdXRzIGlub3V0 cyBpbnB1dHMgXSBzaWduYWxzIGZvciBtb2R1bGVzIHRoYXQgYXJlCmluc3RhbnRpYXRlZCBpbiB0 aGlzIG1vZHVsZS4gIEZvciBleGFtcGxlIGlmIGRlY2xhcmUgQSBBICguQihTSUcpKSBhbmQgU0lH CmlzIGFuIG91dHB1dCwgdGhlbiBTSUcgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgbGlzdC4KClRo aXMgb25seSB3b3JrcyBvbiBpbnN0YW50aWF0aW9ucyBjcmVhdGVkIHdpdGggLypBVVRPSU5TVCov IGNvbnZlcnRlZCBieQpcXFt2ZXJpbG9nLWF1dG8taW5zdF0uICBPdGhlcndpc2UsIGl0IHdvdWxk IGhhdmUgdG8gcmVhZCBpbiB0aGUgd2hvbGUKY29tcG9uZW50IGxpYnJhcnkgdG8gZGV0ZXJtaW5l IGNvbm5lY3Rpdml0eSBvZiB0aGUgZGVzaWduLgoKT25lIHdvcmsgYXJvdW5kIGZvciB0aGlzIHBy b2JsZW0gaXMgdG8gbWFudWFsbHkgY3JlYXRlIC8vIElucHV0cwphbmQgLy8gT3V0cHV0cyBjb21t ZW50cyBhYm92ZSBzdWJjZWxsIHNpZ25hbHMsIHRoZW4gaGF2ZSBhbiBlbXB0eQpBVVRPSU5TVCwg Zm9yIGV4YW1wbGU6CgogICAgICAgIHN1Ym1vZCBTdWJNb2R1bGVOYW1lICgKICAgICAgICAgICAg Ly8gT3V0cHV0cwogICAgICAgICAgICAub3V0IChvdXQpLAogICAgICAgICAgICAvLyBJbnB1dHMK ICAgICAgICAgICAgLmluICAoaW4pCiAgICAgICAgICAgIC8qQVVUT0lOU1QqLyk7IgogIChzYXZl LWV4Y3Vyc2lvbgogICAgKGxldCAoKGVuZC1tb2QtcG9pbnQgKHZlcmlsb2ctZ2V0LWVuZC1vZi1k ZWZ1bikpCiAgICAgICAgICBzdC1wb2ludCBlbmQtaW5zdC1wb2ludCBwYXItdmFsdWVzCgkgIDs7 IGJlbG93IDMgbW9kaWZpZWQgYnkgdmVyaWxvZy1yZWFkLXN1Yi1kZWNscy1saW5lCgkgIHNpZ3Mt b3V0IHNpZ3MtaW5vdXQgc2lncy1pbiBzaWdzLWludGYgc2lncy1pbnRmZCkKICAgICAgKHZlcmls b2ctYmVnLW9mLWRlZnVuLXF1aWNrKQogICAgICAod2hpbGUgKHZlcmlsb2ctcmUtc2VhcmNoLWZv cndhcmQtcXVpY2sgIlxcKC9cXCpBVVRPSU5TVFxcKCguKj8pXFwpP1xcKi9cXHxcXC5cXCpcXCki IGVuZC1tb2QtcG9pbnQgdCkKCShzYXZlLWV4Y3Vyc2lvbgoJICAoZ290by1jaGFyIChtYXRjaC1i ZWdpbm5pbmcgMCkpCiAgICAgICAgICAoc2V0cSBwYXItdmFsdWVzIChhbmQgdmVyaWxvZy1hdXRv LWluc3QtcGFyYW0tdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJpbG9n LWF1dG8taW5zdC1wYXJhbS12YWx1ZS10eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHZlcmlsb2ctcmVhZC1pbnN0LXBhcmFtLXZhbHVlKSkpCgkgICh1bmxlc3MgKHZlcmlsb2ct aW5zaWRlLWNvbW1lbnQtb3Itc3RyaW5nLXApCgkgICAgOzsgQXR0ZW1wdCB0byBzbmFyZiBhIGNv bW1lbnQKCSAgICAobGV0KiAoKHN1Ym1vZCAodmVyaWxvZy1yZWFkLWluc3QtbW9kdWxlKSkKCQkg ICAoaW5zdCAodmVyaWxvZy1yZWFkLWluc3QtbmFtZSkpCgkJICAgKHN1YnByaW0gKG1lbWJlciBz dWJtb2QgdmVyaWxvZy1nYXRlLWtleXdvcmRzKSkKCQkgICAoY29tbWVudCAoY29uY2F0IGluc3Qg IiBvZiAiIHN1Ym1vZCAiLnYiKSkKCQkgICBzdWJtb2RpIHN1Ym1vZGRlY2xzKQoJICAgICAgKGNv bmQKCSAgICAgICAoc3VicHJpbQoJCShzZXRxIHN1Ym1vZGkgJ3ByaW1pdGl2ZQoJCSAgICAgIHN1 Ym1vZGRlY2xzICh2ZXJpbG9nLWRlY2xzLW5ldyBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCkKCQkgICAgICBjb21tZW50IChjb25jYXQgaW5zdCAiIG9mICIgc3VibW9kKSkKCQko dmVyaWxvZy1iYWNrd2FyZC1vcGVuLXBhcmVuKQoJCShzZXRxIGVuZC1pbnN0LXBvaW50IChzYXZl LWV4Y3Vyc2lvbiAodmVyaWxvZy1mb3J3YXJkLXNleHAtaWduLWNtdCAxKQoJCQkJCQkgICAgIChw b2ludCkpCgkJICAgICAgc3QtcG9pbnQgKHBvaW50KSkKCQkoZm9yd2FyZC1jaGFyIDEpCiAgICAg ICAgICAgICAgICAodmVyaWxvZy1yZWFkLXN1Yi1kZWNscy1nYXRlIHN1Ym1vZGRlY2xzIHBhci12 YWx1ZXMgY29tbWVudCBzdWJtb2QgZW5kLWluc3QtcG9pbnQpKQoJICAgICAgIDs7IE5vbi1wcmlt aXRpdmUKCSAgICAgICAodAoJCSh3aGVuIChzZXRxIHN1Ym1vZGkgKHZlcmlsb2ctbW9kaS1sb29r dXAgc3VibW9kIHQpKQoJCSAgKHNldHEgc3VibW9kZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtZGVj bHMgc3VibW9kaSkKCQkJdmVyaWxvZy1yZWFkLXN1Yi1kZWNscy1nYXRlLWlvcyBuaWwpCgkJICAo dmVyaWxvZy1iYWNrd2FyZC1vcGVuLXBhcmVuKQoJCSAgKHNldHEgZW5kLWluc3QtcG9pbnQgKHNh dmUtZXhjdXJzaW9uICh2ZXJpbG9nLWZvcndhcmQtc2V4cC1pZ24tY210IDEpCgkJCQkJCSAgICAg ICAocG9pbnQpKQoJCQlzdC1wb2ludCAocG9pbnQpKQoJCSAgOzsgVGhpcyBjb3VsZCBoYXZlIHVz ZWQgYSBsaXN0IGNyZWF0ZWQgYnkgdmVyaWxvZy1hdXRvLWluc3QKCQkgIDs7IEhvd2V2ZXIgSSB3 YW50IGl0IHRvIGJlIHJ1bm5hYmxlIGV2ZW4gb24gdXNlcidzIG1hbnVhbGx5IGFkZGVkIHNpZ25h bHMKCQkgIChsZXQgKCh2ZXJpbG9nLXJlYWQtc3ViLWRlY2xzLWluLWludGVyZmFjZWQgdCkpCgkJ ICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIlxccyAqKD9cXHMgKi8vIEludGVyZmFjZWQi IGVuZC1pbnN0LXBvaW50IHQpCiAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1yZWFkLXN1 Yi1kZWNscy1saW5lIHN1Ym1vZGRlY2xzIHBhci12YWx1ZXMgY29tbWVudCkpKSAgOyBNb2RpZmll cyBzaWdzLWlmZAoJCSAgKGdvdG8tY2hhciBzdC1wb2ludCkKCQkgICh3aGlsZSAocmUtc2VhcmNo LWZvcndhcmQgIlxccyAqKD9cXHMgKi8vIEludGVyZmFjZXMiIGVuZC1pbnN0LXBvaW50IHQpCiAg ICAgICAgICAgICAgICAgICAgKHZlcmlsb2ctcmVhZC1zdWItZGVjbHMtbGluZSBzdWJtb2RkZWNs cyBwYXItdmFsdWVzIGNvbW1lbnQpKSAgOyBNb2RpZmllcyBzaWdzLW91dAoJCSAgKGdvdG8tY2hh ciBzdC1wb2ludCkKCQkgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIlxccyAqKD9cXHMgKi8v IE91dHB1dHMiIGVuZC1pbnN0LXBvaW50IHQpCiAgICAgICAgICAgICAgICAgICAgKHZlcmlsb2ct cmVhZC1zdWItZGVjbHMtbGluZSBzdWJtb2RkZWNscyBwYXItdmFsdWVzIGNvbW1lbnQpKSAgOyBN b2RpZmllcyBzaWdzLW91dAoJCSAgKGdvdG8tY2hhciBzdC1wb2ludCkKCQkgICh3aGlsZSAocmUt c2VhcmNoLWZvcndhcmQgIlxccyAqKD9cXHMgKi8vIElub3V0cyIgZW5kLWluc3QtcG9pbnQgdCkK ICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1yZWFkLXN1Yi1kZWNscy1saW5lIHN1Ym1vZGRl Y2xzIHBhci12YWx1ZXMgY29tbWVudCkpICA7IE1vZGlmaWVzIHNpZ3MtaW5vdXQKCQkgIChnb3Rv LWNoYXIgc3QtcG9pbnQpCgkJICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJcXHMgKig/XFxz ICovLyBJbnB1dHMiIGVuZC1pbnN0LXBvaW50IHQpCiAgICAgICAgICAgICAgICAgICAgKHZlcmls b2ctcmVhZC1zdWItZGVjbHMtbGluZSBzdWJtb2RkZWNscyBwYXItdmFsdWVzIGNvbW1lbnQpKSAg OyBNb2RpZmllcyBzaWdzLWluCgkJICApKSkpKSkpCiAgICAgIDs7IENvbWJpbmUgZHVwbGljYXRl IGJpdHMKICAgICAgOzsoc2V0cSByciAodmVjdG9yIHNpZ3Mtb3V0IHNpZ3MtaW5vdXQgc2lncy1p bikpCiAgICAgICh2ZXJpbG9nLXN1YmRlY2xzLW5ldwogICAgICAgKHZlcmlsb2ctc2lnbmFscy1j b21iaW5lLWJ1cyAobnJldmVyc2Ugc2lncy1vdXQpKQogICAgICAgKHZlcmlsb2ctc2lnbmFscy1j b21iaW5lLWJ1cyAobnJldmVyc2Ugc2lncy1pbm91dCkpCiAgICAgICAodmVyaWxvZy1zaWduYWxz LWNvbWJpbmUtYnVzIChucmV2ZXJzZSBzaWdzLWluKSkKICAgICAgICh2ZXJpbG9nLXNpZ25hbHMt Y29tYmluZS1idXMgKG5yZXZlcnNlIHNpZ3MtaW50ZikpCiAgICAgICAodmVyaWxvZy1zaWduYWxz LWNvbWJpbmUtYnVzIChucmV2ZXJzZSBzaWdzLWludGZkKSkpKSkpCgooZGVmdW4gdmVyaWxvZy1y ZWFkLWluc3QtcGlucyAoKQogICJSZXR1cm4gYW4gYXJyYXkgb2YgWyBwaW5zIF0gZm9yIHRoZSBj dXJyZW50IGluc3RhbnRpYXRpb24gYXQgcG9pbnQuCkZvciBleGFtcGxlIGlmIGRlY2xhcmUgQSBB ICguQihTSUcpKSB0aGVuIEIgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgbGlzdC4iCiAgKHNhdmUt ZXhjdXJzaW9uCiAgICAobGV0ICgoZW5kLW1vZC1wb2ludCAocG9pbnQpKSAgOyBwcmVzdW1lIGF0 IC8qQVVUT0lOU1QqLyBwb2ludAoJICBwaW5zIHBpbikKICAgICAgKHZlcmlsb2ctYmFja3dhcmQt b3Blbi1wYXJlbikKICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCAiXFwuXFwoW14oLCkg XHRcblxmXSpcXClcXHMtKiIgZW5kLW1vZC1wb2ludCB0KQogICAgICAgIChzZXRxIHBpbiAobWF0 Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSkpCgkodW5sZXNzICh2ZXJpbG9nLWluc2lkZS1jb21t ZW50LW9yLXN0cmluZy1wKQoJICAoc2V0cSBwaW5zIChjb25zIChsaXN0IHBpbikgcGlucykpCgkg ICh3aGVuIChsb29raW5nLWF0ICIoIikKCSAgICAodmVyaWxvZy1mb3J3YXJkLXNleHAtaWduLWNt dCAxKSkpKQogICAgICAodmVjdG9yIHBpbnMpKSkpCgooZGVmdW4gdmVyaWxvZy1yZWFkLWFyZy1w aW5zICgpCiAgIlJldHVybiBhbiBhcnJheSBvZiBbIHBpbnMgXSBmb3IgdGhlIGN1cnJlbnQgYXJn dW1lbnQgZGVjbGFyYXRpb24gYXQgcG9pbnQuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGxldCAo KGVuZC1tb2QtcG9pbnQgKHBvaW50KSkgIDsgcHJlc3VtZSBhdCAvKkFVVE9BUkcqLyBwb2ludAoJ ICBwaW5zIHBpbikKICAgICAgKHZlcmlsb2ctYmFja3dhcmQtb3Blbi1wYXJlbikKICAgICAgKHdo aWxlIChyZS1zZWFyY2gtZm9yd2FyZCAiXFwoW2EtekEtWjAtOSRfLiVgXStcXCkiIGVuZC1tb2Qt cG9pbnQgdCkKICAgICAgICAoc2V0cSBwaW4gKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDEp KQoJKHVubGVzcyAodmVyaWxvZy1pbnNpZGUtY29tbWVudC1vci1zdHJpbmctcCkKCSAgKHNldHEg cGlucyAoY29ucyAobGlzdCBwaW4pIHBpbnMpKSkpCiAgICAgICh2ZWN0b3IgcGlucykpKSkKCihk ZWZ1biB2ZXJpbG9nLXJlYWQtYXV0by1jb25zdGFudHMgKGJlZyBlbmQtbW9kLXBvaW50KQogICJS ZXR1cm4gYSBsaXN0IG9mIEFVVE9fQ09OU1RBTlRzIHVzZWQgaW4gdGhlIHJlZ2lvbiBmcm9tIEJF RyB0byBFTkQtTU9ELVBPSU5ULiIKICA7OyBJbnNlcnQgbmV3CiAgKHNhdmUtZXhjdXJzaW9uCiAg ICAobGV0IChzaWctbGlzdCB0cGwtZW5kLXB0KQogICAgICAoZ290by1jaGFyIGJlZykKICAgICAg KHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCAiXFw8QVVUT19DT05TVEFOVCIgZW5kLW1vZC1wb2lu dCB0KQoJKGlmIChub3QgKGxvb2tpbmctYXQgIlxccyAqKCIpKQoJICAgIChlcnJvciAiJXM6IE1p c3NpbmcgKCkgYWZ0ZXIgQVVUT19DT05TVEFOVCIgKHZlcmlsb2ctcG9pbnQtdGV4dCkpKQoJKHNl YXJjaC1mb3J3YXJkICIoIiBlbmQtbW9kLXBvaW50KQoJKHNldHEgdHBsLWVuZC1wdCAoc2F2ZS1l eGN1cnNpb24KCQkJICAgKGJhY2t3YXJkLWNoYXIgMSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHZlcmlsb2ctZm9yd2FyZC1zZXhwLWNtdCAxKSAgOyBNb3ZlcyB0byBwYXJlbiB0aGF0IGNs b3NlcyBhcmdkZWNsJ3MKCQkJICAgKGJhY2t3YXJkLWNoYXIgMSkKCQkJICAgKHBvaW50KSkpCgko d2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJcXHMtKlxcKFtcImEtekEtWjAtOSRfLiVgXStcXClc XHMtKiwqIiB0cGwtZW5kLXB0IHQpCiAgICAgICAgICAoc2V0cSBzaWctbGlzdCAoY29ucyAobGlz dCAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSkgbmlsIG5pbCkgc2lnLWxpc3QpKSkpCiAg ICAgIHNpZy1saXN0KSkpCgooZGVmdmFyIHZlcmlsb2ctY2FjaGUtaGFzLWxpc3AgbmlsICJUcnVl IGlmIGFueSBBVVRPX0xJU1AgaW4gYnVmZmVyLiIpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2Nh bCAndmVyaWxvZy1jYWNoZS1oYXMtbGlzcCkKCihkZWZ1biB2ZXJpbG9nLXJlYWQtYXV0by1saXNw LXByZXNlbnQgKCkKICAiU2V0IGB2ZXJpbG9nLWNhY2hlLWhhcy1saXNwJyBpZiBhbnkgQVVUT19M SVNQIGluIHRoaXMgYnVmZmVyLiIKICAoc2F2ZS1leGN1cnNpb24KICAgIChnb3RvLWNoYXIgKHBv aW50LW1pbikpCiAgICAoc2V0cSB2ZXJpbG9nLWNhY2hlLWhhcy1saXNwIChyZS1zZWFyY2gtZm9y d2FyZCAiXFw8QVVUT19MSVNQKCIgbmlsIHQpKSkpCgooZGVmdW4gdmVyaWxvZy1yZWFkLWF1dG8t bGlzcCAoc3RhcnQgZW5kKQogICJMb29rIGZvciBhbmQgZXZhbHVhdGUgYW4gQVVUT19MSVNQIGJl dHdlZW4gU1RBUlQgYW5kIEVORC4KTXVzdCBjYWxsIGB2ZXJpbG9nLXJlYWQtYXV0by1saXNwLXBy ZXNlbnQnIGJlZm9yZSB0aGlzIGZ1bmN0aW9uLiIKICA7OyBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVu c2l2ZSBmb3IgbGFyZ2UgYnVmZmVycywgc28gd2UgY2FjaGUgaWYgYW55IEFVVE9fTElTUCBleGlz dHMKICAod2hlbiB2ZXJpbG9nLWNhY2hlLWhhcy1saXNwCiAgICAoc2F2ZS1leGN1cnNpb24KICAg ICAgKGdvdG8tY2hhciBzdGFydCkKICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCAiXFw8 QVVUT19MSVNQKCIgZW5kIHQpCgkoYmFja3dhcmQtY2hhcikKCShsZXQqICgoYmVnLXB0IChwcm9n MSAocG9pbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1mb3J3YXJkLXNleHAt Y210IDEpKSkgIDsgQ2xvc2luZyBwYXJlbgoJICAgICAgIChlbmQtcHQgKHBvaW50KSkKCSAgICAg ICAodmVyaWxvZy1pbi1ob29rcyB0KSkKCSAgKGV2YWwtcmVnaW9uIGJlZy1wdCBlbmQtcHQgbmls KSkpKSkpCgooZGVmdW4gdmVyaWxvZy1yZWFkLWFsd2F5cy1zaWduYWxzLXJlY3Vyc2UKICAgIChl eGl0LWtleXdkIHJ2YWx1ZSB0ZW1wLW5leHQpCiAgIlJlY3Vyc2l2ZSByb3V0aW5lIGZvciBwYXJl bnRoZXNlcy9icmFja2V0IG1hdGNoaW5nLgpFWElULUtFWVdEIGlzIGV4cHJlc3Npb24gdG8gc3Rv cCBhdCwgbmlsIGlmIHRvcCBsZXZlbC4KUlZBTFVFIGlzIHRydWUgaWYgYXQgcmlnaHQgaGFuZCBz aWRlIG9mIGVxdWFsLgpURU1QLU5FWFQgaXMgdHJ1ZSB0byBpZ25vcmUgbmV4dCB0b2tlbiwgZmFr ZSBmcm9tIGluc2lkZSBjYXNlIHN0YXRlbWVudC4iCiAgKGxldCogKChzZW1pLXJ2YWx1ZSAoZXF1 YWwgImVuZGNhc2UiIGV4aXQta2V5d2QpKSAgOyB0cnVlIGlmIGFmdGVyIGEgOyB3ZSBhcmUgbG9v a2luZyBmb3IgcnZhbHVlCgkga2V5d2QgbGFzdC1rZXl3ZCBzaWctdG9sayBzaWctbGFzdC10b2xr IGdvdGVuZCBnb3Qtc2lnIGdvdC1saXN0IGVuZC1lbHNlLWNoZWNrCgkgaWdub3JlLW5leHQpCiAg ICA7OyhpZiBkYmcgKHNldHEgZGJnIChjb25jYXQgZGJnIChmb3JtYXQgIlJlY3Vyc2lvbiAlUyAl UyAlU1xuIiBleGl0LWtleXdkIHJ2YWx1ZSB0ZW1wLW5leHQpKSkpCiAgICAod2hpbGUgKG5vdCAo b3IgKGVvYnApIGdvdGVuZCkpCiAgICAgIChjb25kCiAgICAgICAoKGxvb2tpbmctYXQgIi8vIikK CShzZWFyY2gtZm9yd2FyZCAiXG4iKSkKICAgICAgICgobG9va2luZy1hdCAiL1xcKiIpCgkob3Ig KHNlYXJjaC1mb3J3YXJkICIqLyIpCgkgICAgKGVycm9yICIlczogVW5tYXRjaGVkIC8qICovLCBh dCBjaGFyICVkIiAodmVyaWxvZy1wb2ludC10ZXh0KSAocG9pbnQpKSkpCiAgICAgICAoKGxvb2tp bmctYXQgIihcXCoiKQoJOzsgVG8gYWR2YW5jZSBwYXN0IGVpdGhlciAiKCopIiBvciAiKCogLi4u ICopIiBkb24ndCBmb3J3YXJkIHBhc3QgZmlyc3QgKgoJKGZvcndhcmQtY2hhciAxKQoJKG9yIChz ZWFyY2gtZm9yd2FyZCAiKikiKQoJICAgIChlcnJvciAiJXM6IFVubWF0Y2hlZCAoKiAqKSwgYXQg Y2hhciAlZCIgKHZlcmlsb2ctcG9pbnQtdGV4dCkgKHBvaW50KSkpKQogICAgICAgKHQgKHNldHEg a2V5d2QgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcwoJCSAgICAgICAocG9pbnQpCgkJ ICAgICAgIChzYXZlLWV4Y3Vyc2lvbiAod2hlbiAoZXEgMCAoc2tpcC1jaGFycy1mb3J3YXJkICJh LXpBLVowLTkkXy4lYCIpKQoJCQkJCSAoZm9yd2FyZC1jaGFyIDEpKQoJCQkJICAgICAgIChwb2lu dCkpKQoJCXNpZy1sYXN0LXRvbGsgc2lnLXRvbGsKCQlzaWctdG9sayBuaWwpCgkgIDs7KGlmIGRi ZyAoc2V0cSBkYmcgKGNvbmNhdCBkYmcgKGZvcm1hdCAiXHRQdD0lUyAlU1x0cnY9JVMgaW49JVMg ZWU9JVMgZ3M9JVNcbiIgKHBvaW50KSBrZXl3ZCBydmFsdWUgaWdub3JlLW5leHQgZW5kLWVsc2Ut Y2hlY2sgZ290LXNpZykpKSkKCSAgKGNvbmQKCSAgICgoZXF1YWwga2V5d2QgIlwiIikKCSAgICAo b3IgKHJlLXNlYXJjaC1mb3J3YXJkICJbXlxcXVwiIiBuaWwgdCkKCQkoZXJyb3IgIiVzOiBVbm1h dGNoZWQgcXVvdGVzLCBhdCBjaGFyICVkIiAodmVyaWxvZy1wb2ludC10ZXh0KSAocG9pbnQpKSkp CgkgICA7OyBlbHNlIGF0IHRvcCBsZXZlbCBsb29wLCBrZWVwIHBhcnNpbmcKCSAgICgoYW5kIGVu ZC1lbHNlLWNoZWNrIChlcXVhbCBrZXl3ZCAiZWxzZSIpKQoJICAgIDs7KGlmIGRiZyAoc2V0cSBk YmcgKGNvbmNhdCBkYmcgKGZvcm1hdCAiXHRpZi1jaGVjay1lbHNlICVzXG4iIGtleXdkKSkpKQoJ ICAgIDs7IG5vIGZvcndhcmQgbW92ZW1lbnQsIHdhbnQgdG8gc2VlIGVsc2UgaW4gbG93ZXIgbG9v cAoJICAgIChzZXRxIGVuZC1lbHNlLWNoZWNrIG5pbCkpCgkgICA7OyBFbmQgYXQgdG9wIGxldmVs IGxvb3AKCSAgICgoYW5kIGVuZC1lbHNlLWNoZWNrIChsb29raW5nLWF0ICJbXiBcdFxuXGZdIikp CgkgICAgOzsoaWYgZGJnIChzZXRxIGRiZyAoY29uY2F0IGRiZyAoZm9ybWF0ICJcdGlmLWNoZWNr LWVsc2Utb3RoZXIgJXNcbiIga2V5d2QpKSkpCgkgICAgKHNldHEgZ290ZW5kIHQpKQoJICAgOzsg RmluYWwgc3RhdGVtZW50PwoJICAgKChhbmQgZXhpdC1rZXl3ZCAoYW5kIChvciAoZXF1YWwga2V5 d2QgZXhpdC1rZXl3ZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQg KGVxdWFsIGV4aXQta2V5d2QgIid9IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGVxdWFsIGtleXdkICJ9IikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobm90IChsb29raW5nLWF0ICI6OiIpKSkpCgkgICAgKHNldHEgZ290ZW5kIHQpCgkgICAg KGZvcndhcmQtY2hhciAobGVuZ3RoIGtleXdkKSkpCgkgICA7OyBTdGFuZGFyZCB0b2tlbnMuLi4K CSAgICgoZXF1YWwga2V5d2QgIjsiKQoJICAgIChzZXRxIGlnbm9yZS1uZXh0IG5pbCAgcnZhbHVl IHNlbWktcnZhbHVlKQoJICAgIDs7IEZpbmFsIHN0YXRlbWVudCBhdCB0b3AgbGV2ZWwgbG9vcD8K CSAgICAod2hlbiAobm90IGV4aXQta2V5d2QpCgkgICAgICA7OyhpZiBkYmcgKHNldHEgZGJnIChj b25jYXQgZGJnIChmb3JtYXQgIlx0dG9wLWVuZC1jaGVjayAlc1xuIiBrZXl3ZCkpKSkKCSAgICAg IChzZXRxIGVuZC1lbHNlLWNoZWNrIHQpKQoJICAgIChmb3J3YXJkLWNoYXIgMSkpCgkgICAoKGVx dWFsIGtleXdkICInIikKCSAgICAoY29uZCAoKGxvb2tpbmctYXQgIidbc1NdP1toZHhib0hEWEJP XT9bIFx0XSpbMC05YS1mQS1GX3h6WFo/XSsiKQogICAgICAgICAgICAgICAgICAgKGdvdG8tY2hh ciAobWF0Y2gtZW5kIDApKSkKICAgICAgICAgICAgICAgICAgKChsb29raW5nLWF0ICIneyIpCiAg ICAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyIDIpCiAgICAgICAgICAgICAgICAgICAodmVy aWxvZy1yZWFkLWFsd2F5cy1zaWduYWxzLXJlY3Vyc2UgIid9IiB0IG5pbCkpCiAgICAgICAgICAg ICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyIDEpKSkpCiAgICAgICAg ICAgKChlcXVhbCBrZXl3ZCAiOiIpICA7IENhc2Ugc3RhdGVtZW50LCBiZWdpbi9lbmQgbGFiZWws IHg/eTp6CiAgICAgICAgICAgIChjb25kICgobG9va2luZy1hdCAiOjoiKQogICAgICAgICAgICAg ICAgICAgKGZvcndhcmQtY2hhciAxKSkgIDsgQW5vdGhlciBmb3J3YXJkLWNoYXIgYmVsb3cKICAg ICAgICAgICAgICAgICAgKChlcXVhbCAiZW5kY2FzZSIgZXhpdC1rZXl3ZCkgIDsgY2FzZSB4OiB5 PXo7IHN0YXRlbWVudCBuZXh0CgkJICAgKHNldHEgaWdub3JlLW5leHQgbmlsIHJ2YWx1ZSBuaWwp KQogICAgICAgICAgICAgICAgICAoKGVxdWFsICI/IiBleGl0LWtleXdkKSAgOyB4P3k6eiBydmFs dWUKICAgICAgICAgICAgICAgICAgICkgIDsgTk9QCiAgICAgICAgICAgICAgICAgICgoZXF1YWwg Il0iIGV4aXQta2V5d2QpICA7IFt4OnldIHJ2YWx1ZQogICAgICAgICAgICAgICAgICAgKSAgOyBO T1AKICAgICAgICAgICAgICAgICAgKChlcXVhbCAiJ30iIGV4aXQta2V5d2QpICA7IFBhdHRlcm4g YXNzaWdubWVudAogICAgICAgICAgICAgICAgICAgKSAgOyBOT1AKICAgICAgICAgICAgICAgICAg KGdvdC1zaWcgIDsgbGFiZWw6IHN0YXRlbWVudAoJCSAgIChzZXRxIGlnbm9yZS1uZXh0IG5pbCBy dmFsdWUgc2VtaS1ydmFsdWUgZ290LXNpZyBuaWwpKQogICAgICAgICAgICAgICAgICAoKG5vdCBy dmFsdWUpICA7IGJlZ2luIGxhYmVsCgkJICAgKHNldHEgaWdub3JlLW5leHQgdCBydmFsdWUgbmls KSkpCgkgICAgKGZvcndhcmQtY2hhciAxKSkKCSAgICgoZXF1YWwga2V5d2QgIj0iKQoJICAgICh3 aGVuIGdvdC1zaWcKCSAgICAgIDs7KGlmIGRiZyAoc2V0cSBkYmcgKGNvbmNhdCBkYmcgKGZvcm1h dCAiXHRcdGVxdWFsIGdvdC1zaWc9JVMgZ290LWxpc3Q9JXNcbiIgZ290LXNpZyBnb3QtbGlzdCkp KSkKCSAgICAgIChzZXQgZ290LWxpc3QgKGNvbnMgZ290LXNpZyAoc3ltYm9sLXZhbHVlIGdvdC1s aXN0KSkpCgkgICAgICAoc2V0cSBnb3Qtc2lnIG5pbCkpCgkgICAgKHdoZW4gKG5vdCBydmFsdWUp CgkgICAgICAoaWYgKGVxIChjaGFyLWJlZm9yZSkgPzwgKQoJCSAgKHNldHEgc2lncy1vdXQtZCAo YXBwZW5kIHNpZ3Mtb3V0LWQgc2lncy1vdXQtdW5rKQoJCQlzaWdzLW91dC11bmsgbmlsKQoJCShz ZXRxIHNpZ3Mtb3V0LWkgKGFwcGVuZCBzaWdzLW91dC1pIHNpZ3Mtb3V0LXVuaykKCQkgICAgICBz aWdzLW91dC11bmsgbmlsKSkpCgkgICAgKHNldHEgaWdub3JlLW5leHQgbmlsIHJ2YWx1ZSB0KQoJ ICAgIChmb3J3YXJkLWNoYXIgMSkpCgkgICAoKGVxdWFsIGtleXdkICI/IikKCSAgICAoZm9yd2Fy ZC1jaGFyIDEpCgkgICAgKHZlcmlsb2ctcmVhZC1hbHdheXMtc2lnbmFscy1yZWN1cnNlICI6IiBy dmFsdWUgbmlsKSkKCSAgICgoZXF1YWwga2V5d2QgIlsiKQoJICAgIChmb3J3YXJkLWNoYXIgMSkK CSAgICAodmVyaWxvZy1yZWFkLWFsd2F5cy1zaWduYWxzLXJlY3Vyc2UgIl0iIHQgbmlsKSkKCSAg ICgoZXF1YWwga2V5d2QgIigiKQoJICAgIChmb3J3YXJkLWNoYXIgMSkKICAgICAgICAgICAgKGNv bmQgKHNpZy1sYXN0LXRvbGsgIDsgRnVuY3Rpb24gY2FsbDsgemFwIGxhc3Qgc2lnbmFsCgkJICAg KHNldHEgZ290LXNpZyBuaWwpKSkKCSAgICAoY29uZCAoKGVxdWFsIGxhc3Qta2V5d2QgImZvciIp CgkJICAgOzsgdGVtcC1uZXh0OiBWYXJpYWJsZXMgb24gTEhTIGFyZSBsdmFsdWVzLCBidXQgZ2Vu ZXJhbGx5IHdlIHdhbnQKCQkgICA7OyB0byBpZ25vcmUgdGhlbSwgYXNzdW1pbmcgdGhleSBhcmUg bG9vcCBpbmNyZW1lbnRzCgkJICAgKHZlcmlsb2ctcmVhZC1hbHdheXMtc2lnbmFscy1yZWN1cnNl ICI7IiBuaWwgdCkKCQkgICAodmVyaWxvZy1yZWFkLWFsd2F5cy1zaWduYWxzLXJlY3Vyc2UgIjsi IHQgbmlsKQoJCSAgICh2ZXJpbG9nLXJlYWQtYWx3YXlzLXNpZ25hbHMtcmVjdXJzZSAiKSIgbmls IG5pbCkpCgkJICAodCAodmVyaWxvZy1yZWFkLWFsd2F5cy1zaWduYWxzLXJlY3Vyc2UgIikiIHQg bmlsKSkpKQoJICAgKChlcXVhbCBrZXl3ZCAiYmVnaW4iKQoJICAgIChza2lwLXN5bnRheC1mb3J3 YXJkICJ3XyIpCgkgICAgKHZlcmlsb2ctcmVhZC1hbHdheXMtc2lnbmFscy1yZWN1cnNlICJlbmQi IG5pbCBuaWwpCgkgICAgOzsoaWYgZGJnIChzZXRxIGRiZyAoY29uY2F0IGRiZyAoZm9ybWF0ICJc dGdvdC1lbmQgJXNcbiIgZXhpdC1rZXl3ZCkpKSkKCSAgICAoc2V0cSBpZ25vcmUtbmV4dCBuaWwg IHJ2YWx1ZSBzZW1pLXJ2YWx1ZSkKCSAgICAoaWYgKG5vdCBleGl0LWtleXdkKSAoc2V0cSBlbmQt ZWxzZS1jaGVjayB0KSkpCgkgICAoKG1lbWJlciBrZXl3ZCAnKCJjYXNlIiAiY2FzZXgiICJjYXNl eiIgInJhbmRjYXNlIikpCgkgICAgKHNraXAtc3ludGF4LWZvcndhcmQgIndfIikKCSAgICAodmVy aWxvZy1yZWFkLWFsd2F5cy1zaWduYWxzLXJlY3Vyc2UgImVuZGNhc2UiIHQgbmlsKQoJICAgIChz ZXRxIGlnbm9yZS1uZXh0IG5pbCAgcnZhbHVlIHNlbWktcnZhbHVlKQogICAgICAgICAgICAoaWYg KG5vdCBleGl0LWtleXdkKSAoc2V0cSBnb3RlbmQgdCkpKSAgOyB0b3AgbGV2ZWwgYmVnaW4vZW5k CiAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5bJGBhLXpBLVpfXSIga2V5d2QpICA7IG5vdCBl eGFjdGx5IHdvcmQgY29uc3RpdHVlbnQKCSAgICAoY29uZCAoKG1lbWJlciBrZXl3ZCAnKCJgaWZk ZWYiICJgaWZuZGVmIiAiYGVsc2lmIikpCgkJICAgKHNldHEgaWdub3JlLW5leHQgdCkpCgkJICAo KG9yIGlnbm9yZS1uZXh0CgkJICAgICAgIChtZW1iZXIga2V5d2QgdmVyaWxvZy1rZXl3b3JkcykK ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoICJeXFwkIiBrZXl3ZCkpICA7IFBM SSB0YXNrCgkJICAgKHNldHEgaWdub3JlLW5leHQgbmlsKSkKCQkgICh0CgkJICAgKHNldHEga2V5 d2QgKHZlcmlsb2ctc3ltYm9sLWRldGljay1kZW51bWJlciBrZXl3ZCkpCgkJICAgKHdoZW4gZ290 LXNpZwoJCSAgICAgKHNldCBnb3QtbGlzdCAoY29ucyBnb3Qtc2lnIChzeW1ib2wtdmFsdWUgZ290 LWxpc3QpKSkKCQkgICAgIDs7KGlmIGRiZyAoc2V0cSBkYmcgKGNvbmNhdCBkYmcgKGZvcm1hdCAi XHRcdGdvdC1zaWc9JVMgZ290LWxpc3Q9JVNcbiIgZ290LXNpZyBnb3QtbGlzdCkpKSkKCQkgICAg ICkKCQkgICAoc2V0cSBnb3QtbGlzdCAoY29uZCAodGVtcC1uZXh0ICdzaWdzLXRlbXApCgkJCQkJ KHJ2YWx1ZSAnc2lncy1pbikKCQkJCQkodCAnc2lncy1vdXQtdW5rKSkKCQkJIGdvdC1zaWcgKGlm IChvciAobm90IGtleXdkKQoJCQkJCSAoYXNzb2Mga2V5d2QgKHN5bWJvbC12YWx1ZSBnb3QtbGlz dCkpKQoJCQkJICAgICBuaWwgKGxpc3Qga2V5d2QgbmlsIG5pbCkpCgkJCSB0ZW1wLW5leHQgbmls CgkJCSBzaWctdG9sayB0KSkpCgkgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiYS16QS1aMC05JF8u JWAiKSkKCSAgICh0CgkgICAgKGZvcndhcmQtY2hhciAxKSkpCgkgIDs7IEVuZCBvZiBub24tY29t bWVudCB0b2tlbgoJICAoc2V0cSBsYXN0LWtleXdkIGtleXdkKSkpCiAgICAgIChza2lwLXN5bnRh eC1mb3J3YXJkICIgIikpCiAgICA7OyBBcHBlbmQgdGhlIGZpbmFsIHBlbmRpbmcgc2lnbmFsCiAg ICAod2hlbiBnb3Qtc2lnCiAgICAgIDs7KGlmIGRiZyAoc2V0cSBkYmcgKGNvbmNhdCBkYmcgKGZv cm1hdCAiXHRcdGZpbmFsIGdvdC1zaWc9JVMgZ290LWxpc3Q9JXNcbiIgZ290LXNpZyBnb3QtbGlz dCkpKSkKICAgICAgKHNldCBnb3QtbGlzdCAoY29ucyBnb3Qtc2lnIChzeW1ib2wtdmFsdWUgZ290 LWxpc3QpKSkKICAgICAgKHNldHEgZ290LXNpZyBuaWwpKQogICAgOzsoaWYgZGJnIChzZXRxIGRi ZyAoY29uY2F0IGRiZyAoZm9ybWF0ICJFTkRSZWN1cnNpb24gJXNcbiIgZXhpdC1rZXl3ZCkpKSkK ICAgICkpCgooZGVmdW4gdmVyaWxvZy1yZWFkLWFsd2F5cy1zaWduYWxzICgpCiAgIlBhcnNlIGFs d2F5cyBibG9jayBhdCBwb2ludCBhbmQgcmV0dXJuIGxpc3Qgb2YgKG91dHB1dHMgaW5vdXQgaW5w dXRzKS4iCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAobGV0KiAoOyhkYmcgIiIpCgkgICBzaWdzLW91 dC1kIHNpZ3Mtb3V0LWkgc2lncy1vdXQtdW5rIHNpZ3MtdGVtcCBzaWdzLWluKQogICAgICAodmVy aWxvZy1yZWFkLWFsd2F5cy1zaWduYWxzLXJlY3Vyc2UgbmlsIG5pbCBuaWwpCiAgICAgIChzZXRx IHNpZ3Mtb3V0LWkgKGFwcGVuZCBzaWdzLW91dC1pIHNpZ3Mtb3V0LXVuaykKCSAgICBzaWdzLW91 dC11bmsgbmlsKQogICAgICA7OyhpZiBkYmcgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZm ZXItY3JlYXRlICIqdmwtZGJnKiIpIChkZWxldGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1t YXgpKSAoaW5zZXJ0IGRiZykgKHNldHEgZGJnICIiKSkpCiAgICAgIDs7IFJldHVybiB3aGF0IHdh cyBmb3VuZAogICAgICAodmVyaWxvZy1hbHctbmV3IHNpZ3Mtb3V0LWQgc2lncy1vdXQtaSBzaWdz LXRlbXAgc2lncy1pbikpKSkKCihkZWZ1biB2ZXJpbG9nLXJlYWQtaW5zdGFudHMgKCkKICAiUGFy c2UgbW9kdWxlIGF0IHBvaW50IGFuZCByZXR1cm4gbGlzdCBvZiAoICggZmlsZSBpbnN0YW5jZSAp IC4uLiApLiIKICAodmVyaWxvZy1iZWctb2YtZGVmdW4tcXVpY2spCiAgKGxldCogKChlbmQtbW9k LXBvaW50ICh2ZXJpbG9nLWdldC1lbmQtb2YtZGVmdW4pKQoJIChzdGF0ZSBuaWwpCgkgKGluc3Rh bnRzLWxpc3QgbmlsKSkKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAod2hpbGUgKDwgKHBvaW50 KSBlbmQtbW9kLXBvaW50KQoJOzsgU3RheSBhdCBsZXZlbCAwLCBubyBjb21tZW50cwoJKHdoaWxl IChwcm9nbgoJCSAoc2V0cSBzdGF0ZSAocGFyc2UtcGFydGlhbC1zZXhwIChwb2ludCkgZW5kLW1v ZC1wb2ludCAwIHQgbmlsKSkKCQkgKG9yICg+IChjYXIgc3RhdGUpIDApCTsgaW4gcGFyZW5zCgkJ ICAgICAobnRoIDUgc3RhdGUpCQk7IGNvbW1lbnQKCQkgICAgICkpCgkgIChmb3J3YXJkLWxpbmUg MSkpCgkoYmVnaW5uaW5nLW9mLWxpbmUpCgkoaWYgKGxvb2tpbmctYXQgIl5cXHMtKlxcKFthLXpB LVowLTlgXyRdK1xcKVxccy0rXFwoW2EtekEtWjAtOWBfJF0rXFwpXFxzLSooIikKICAgICAgICAg ICAgKGxldCAoKG1vZHVsZSAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSkpCiAgICAgICAg ICAgICAgICAgIChpbnN0YW50IChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAyKSkpCgkgICAg ICAoaWYgKG5vdCAobWVtYmVyIG1vZHVsZSB2ZXJpbG9nLWtleXdvcmRzKSkKCQkgIChzZXRxIGlu c3RhbnRzLWxpc3QgKGNvbnMgKGxpc3QgbW9kdWxlIGluc3RhbnQpIGluc3RhbnRzLWxpc3QpKSkp KQoJKGZvcndhcmQtbGluZSAxKSkpCiAgICBpbnN0YW50cy1saXN0KSkKCgooZGVmdW4gdmVyaWxv Zy1yZWFkLWF1dG8tdGVtcGxhdGUtbWlkZGxlICgpCiAgIldpdGggcG9pbnQgaW4gbWlkZGxlIG9m IGFuIEFVVE9fVEVNUExBVEUsIHBhcnNlIGl0LgpSZXR1cm5zIFJFR0VYUCBhbmQgbGlzdCBvZiAo IChzaWduYWxfbmFtZSBjb25uZWN0aW9uX25hbWUpLi4uICkuIgogIChzYXZlLWV4Y3Vyc2lvbgog ICAgOzsgRmluZCBiZWdpbm5pbmcKICAgIChsZXQgKCh0cGwtcmVnZXhwICJcXChbMC05XStcXCki KQoJICAobGluZW5vIC0xKSAgOyAtMSB0byBvZmZzZXQgZm9yIHRoZSBBVVRPX1RFTVBMQVRFJ3Mg bmV3bGluZQoJICAodGVtcGxhdGVubyAwKQoJICB0cGwtc2lnLWxpc3QgdHBsLXdpbGQtbGlzdCB0 cGwtZW5kLXB0IHJlcCkKICAgICAgOzsgUGFyc2UgIlJFR0VYUCIKICAgICAgOzsgV2UgcmVzZXJ2 ZSBAIi4uLiIgZm9yIGZ1dHVyZSBsaXNwIGV4cHJlc3Npb25zIHRoYXQgZXZhbHVhdGUKICAgICAg Ozsgb25jZS1wZXItQVVUT0lOU1QKICAgICAgKHdoZW4gKGxvb2tpbmctYXQgIlxccy0qXCJcXChb XlwiXSpcXClcIiIpCiAgICAgICAgKHNldHEgdHBsLXJlZ2V4cCAobWF0Y2gtc3RyaW5nLW5vLXBy b3BlcnRpZXMgMSkpCgkoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpKQogICAgICAoc2VhcmNoLWZv cndhcmQgIigiKQogICAgICAod2hpbGUgKHZlcmlsb2ctd2l0aGluLXN0cmluZykgIDs7IGUuZy4g aW5zaWRlIGEgdHBsLXJlZ2V4cCBzcGVjCiAgICAgICAgKHNlYXJjaC1mb3J3YXJkICIoIikpCiAg ICAgIDs7IFBhcnNlIGxpbmVzIGluIHRoZSB0ZW1wbGF0ZQogICAgICAod2hlbiAob3IgdmVyaWxv Zy1hdXRvLWluc3QtdGVtcGxhdGUtbnVtYmVycwoJCXZlcmlsb2ctYXV0by10ZW1wbGF0ZS13YXJu LXVudXNlZCkKCShzYXZlLWV4Y3Vyc2lvbgoJICAobGV0ICgocHJlLXB0IChwb2ludCkpKQoJICAg IChnb3RvLWNoYXIgKHBvaW50LW1pbikpCgkgICAgKHdoaWxlIChzZWFyY2gtZm9yd2FyZCAiQVVU T19URU1QTEFURSIgcHJlLXB0IHQpCgkgICAgICAoc2V0cSB0ZW1wbGF0ZW5vICgxKyB0ZW1wbGF0 ZW5vKSkpCgkgICAgKHdoaWxlICg8IChwb2ludCkgcHJlLXB0KQoJICAgICAgKGZvcndhcmQtbGlu ZSAxKQoJICAgICAgKHNldHEgbGluZW5vICgxKyBsaW5lbm8pKSkpKSkKICAgICAgKHNldHEgdHBs LWVuZC1wdCAoc2F2ZS1leGN1cnNpb24KCQkJIChiYWNrd2FyZC1jaGFyIDEpCiAgICAgICAgICAg ICAgICAgICAgICAgICAodmVyaWxvZy1mb3J3YXJkLXNleHAtY210IDEpICA7IE1vdmVzIHRvIHBh cmVuIHRoYXQgY2xvc2VzIGFyZ2RlY2wncwoJCQkgKGJhY2t3YXJkLWNoYXIgMSkKCQkJIChwb2lu dCkpKQogICAgICA7OwogICAgICAod2hpbGUgKDwgKHBvaW50KSB0cGwtZW5kLXB0KQoJKGNvbmQg KChsb29raW5nLWF0ICJcXHMtKlxcLlxcKFthLXpBLVowLTlgXyRdK1xcKVxccy0qKFxcKC4qXFwp KVxccy0qXFwoLFxcfClcXHMtKjtcXCkiKQoJICAgICAgIChzZXRxIHRwbC1zaWctbGlzdAoJCSAg ICAgKGNvbnMgKGxpc3QKCQkJICAgIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAxKQoJCQkg ICAgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDIpCgkJCSAgICB0ZW1wbGF0ZW5vIGxpbmVu bykKCQkJICAgdHBsLXNpZy1saXN0KSkKCSAgICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkp KQogICAgICAgICAgICAgIDs7IFJlZ2V4cCBmb3JtPz8KICAgICAgICAgICAgICAoKGxvb2tpbmct YXQKICAgICAgICAgICAgICAgIDs7IFJlZ2V4cCBidWcgaW4gWEVtYWNzIGRpc2FsbG93cyBdWyBp bnNpZGUgW10sIGFuZCB3YW50cyArIGxhc3QKICAgICAgICAgICAgICAgICJcXHMtKlxcLlxcKFxc KFstYS16QS1aMC05YF8kK0BeLio/fF1cXHxbXVtdXFx8XFxcXFsoKXwwLTldXFwpK1xcKVxccy0q KFxcKC4qXFwpKVxccy0qXFwoLFxcfClcXHMtKjtcXCkiKQoJICAgICAgIChzZXRxIHJlcCAobWF0 Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMykpCgkgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtZW5k IDApKQoJICAgICAgIChzZXRxIHRwbC13aWxkLWxpc3QKCQkgICAgIChjb25zIChsaXN0CgkJCSAg ICAoY29uY2F0ICJeIgoJCQkJICAgICh2ZXJpbG9nLXN0cmluZy1yZXBsYWNlLW1hdGNoZXMgIkAi ICJcXFxcKFswLTldK1xcXFwpIiBuaWwgbmlsCgkJCQkJCQkJICAgIChtYXRjaC1zdHJpbmcgMSkp CgkJCQkgICAgIiQiKQoJCQkgICAgcmVwCgkJCSAgICB0ZW1wbGF0ZW5vIGxpbmVubykKCQkJICAg dHBsLXdpbGQtbGlzdCkpKQoJICAgICAgKChsb29raW5nLWF0ICJbIFx0XGZdKyIpCgkgICAgICAg KGdvdG8tY2hhciAobWF0Y2gtZW5kIDApKSkKCSAgICAgICgobG9va2luZy1hdCAiXG4iKQoJICAg ICAgIChzZXRxIGxpbmVubyAoMSsgbGluZW5vKSkKCSAgICAgICAoZ290by1jaGFyIChtYXRjaC1l bmQgMCkpKQoJICAgICAgKChsb29raW5nLWF0ICIvLyIpCgkgICAgICAgKHNlYXJjaC1mb3J3YXJk ICJcbiIpCgkgICAgICAgKHNldHEgbGluZW5vICgxKyBsaW5lbm8pKSkKCSAgICAgICgobG9va2lu Zy1hdCAiL1xcKiIpCgkgICAgICAgKGZvcndhcmQtY2hhciAyKQoJICAgICAgIChvciAoc2VhcmNo LWZvcndhcmQgIiovIikKCQkgICAoZXJyb3IgIiVzOiBVbm1hdGNoZWQgLyogKi8sIGF0IGNoYXIg JWQiICh2ZXJpbG9nLXBvaW50LXRleHQpIChwb2ludCkpKSkKCSAgICAgICh0CgkgICAgICAgKGVy cm9yICIlczogQVVUT19URU1QTEFURSBwYXJzaW5nIGVycm9yOiAlcyIKCQkgICAgICAodmVyaWxv Zy1wb2ludC10ZXh0KQoJCSAgICAgIChwcm9nbiAobG9va2luZy1hdCAiLiokIikgKG1hdGNoLXN0 cmluZyAwKSkpKSkpCiAgICAgIDs7IFJldHVybgogICAgICAodmVjdG9yIHRwbC1yZWdleHAKCSAg ICAgIChsaXN0IHRwbC1zaWctbGlzdCB0cGwtd2lsZC1saXN0KSkpKSkKCihkZWZ1biB2ZXJpbG9n LXJlYWQtYXV0by10ZW1wbGF0ZSAobW9kdWxlKQogICJMb29rIGZvciBhbiBhdXRvX3RlbXBsYXRl IGZvciB0aGUgaW5zdGFudGlhdGlvbiBvZiB0aGUgZ2l2ZW4gTU9EVUxFLgpJZiBmb3VuZCByZXR1 cm5zIGB2ZXJpbG9nLXJlYWQtYXV0by10ZW1wbGF0ZS1pbnNpZGUnIHN0cnVjdHVyZS4iCiAgKHNh dmUtZXhjdXJzaW9uCiAgICA7OyBGaW5kIGJlZ2lubmluZwogICAgKGxldCAoKHB0IChwb2ludCkp KQogICAgICA7OyBOb3RlIHRoaXMgc2VhcmNoIGlzIGV4cGVuc2l2ZSwgYXMgd2UgaHVudCBmcm9t IG1vZC1iZWdpbiB0byBwb2ludAogICAgICA7OyBmb3IgZXZlcnkgaW5zdGFudGlhdGlvbi4gIExp a2V3aXNlIGluIHZlcmlsb2ctcmVhZC1hdXRvLWxpc3AuCiAgICAgIDs7IFNvLCB3ZSBsb29rIGZp cnN0IGZvciBhbiBleGFjdCBzdHJpbmcgcmF0aGVyIHRoYW4gYSBzbG93IHJlZ2V4cC4KICAgICAg OzsgU29tZWRheSB3ZSBtYXkga2VlcCBhIGNhY2hlIG9mIGV2ZXJ5IHRlbXBsYXRlLCBidXQgdGhp cyB3b3VsZCBhbHNvCiAgICAgIDs7IG5lZWQgdG8gcmVjb3JkIHRoZSByZWxhdGl2ZSBwb3NpdGlv biBvZiBlYWNoIEFVVE9JTlNULCBhcyBtdWx0aXBsZQogICAgICA7OyB0ZW1wbGF0ZXMgZXhpc3Qg Zm9yIGVhY2ggbW9kdWxlLCBhbmQgd2UncmUgaW5zZXJ0aW5nIGxpbmVzLgogICAgICAoY29uZCAo KG9yCgkgICAgICA7OyBTZWUgYWxzbyByZWdleHAgaW4gYHZlcmlsb2ctYXV0by10ZW1wbGF0ZS1s aW50JwoJICAgICAgKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkLXN1YnN0cgoJICAgICAgICJB VVRPX1RFTVBMQVRFIgoJICAgICAgIChjb25jYXQgIl5cXHMtKi8/XFwqP1xccy0qIiBtb2R1bGUg Ilxccy0rQVVUT19URU1QTEFURSIpIG5pbCB0KQoJICAgICAgOzsgQWxzbyB0cnkgZm9yd2FyZCBv ZiB0aGlzIEFVVE9JTlNUCgkgICAgICA7OyBUaGlzIGlzIGZvciBoaXN0b3JpY2FsIHN1cHBvcnQ7 IHRoaXMgaXNuJ3Qgc3BlY2VkIGFzIHdvcmtpbmcKCSAgICAgIChwcm9nbgoJCShnb3RvLWNoYXIg cHQpCgkJKHZlcmlsb2ctcmUtc2VhcmNoLWZvcndhcmQtc3Vic3RyCgkJICJBVVRPX1RFTVBMQVRF IgoJCSAoY29uY2F0ICJeXFxzLSovP1xcKj9cXHMtKiIgbW9kdWxlICJcXHMtK0FVVE9fVEVNUExB VEUiKSBuaWwgdCkpKQoJICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCgkgICAgICh2ZXJp bG9nLXJlYWQtYXV0by10ZW1wbGF0ZS1taWRkbGUpKQoJICAgIDs7IElmIG5vIHRlbXBsYXRlIGZv dW5kCgkgICAgKHQgKHZlY3RvciAiIiBuaWwpKSkpKSkKOzsocHJvZ24gKGZpbmQtZmlsZSAiYXV0 by10ZW1wbGF0ZS52IikgKHZlcmlsb2ctcmVhZC1hdXRvLXRlbXBsYXRlICJwdGxfZW50cnkiKSkK CihkZWZ2YXIgdmVyaWxvZy1hdXRvLXRlbXBsYXRlLWhpdHMgbmlsICJTdWNjZXNzZnVsIGxvb2t1 cHMgd2l0aCBgdmVyaWxvZy1yZWFkLWF1dG8tdGVtcGxhdGUtaGl0Jy4iKQoobWFrZS12YXJpYWJs ZS1idWZmZXItbG9jYWwgJ3Zlcmlsb2ctYXV0by10ZW1wbGF0ZS1oaXRzKQoKKGRlZnVuIHZlcmls b2ctcmVhZC1hdXRvLXRlbXBsYXRlLWluaXQgKCkKICAiSW5pdGlhbGl6ZSBgdmVyaWxvZy1yZWFk LWF1dG8tdGVtcGxhdGUnLiIKICAod2hlbiAoZXZhbC13aGVuLWNvbXBpbGUgKGZib3VuZHAgJ21h a2UtaGFzaC10YWJsZSkpICA7IGVsc2UgZmVhdHVyZSBub3QgYWxsb3dlZAogICAgKHdoZW4gdmVy aWxvZy1hdXRvLXRlbXBsYXRlLXdhcm4tdW51c2VkCiAgICAgIChzZXRxIHZlcmlsb2ctYXV0by10 ZW1wbGF0ZS1oaXRzCgkgICAgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwgOnJlaGFzaC1z aXplIDQuMCkpKSkpCgooZGVmdW4gdmVyaWxvZy1yZWFkLWF1dG8tdGVtcGxhdGUtaGl0ICh0cGwt YXNzKQogICJSZWNvcmQgdGhhdCBUUEwtQVNTIHRlbXBsYXRlIGZyb20gYHZlcmlsb2ctcmVhZC1h dXRvLXRlbXBsYXRlJyB3YXMgdXNlZC4iCiAgKHdoZW4gKGV2YWwtd2hlbi1jb21waWxlIChmYm91 bmRwICdtYWtlLWhhc2gtdGFibGUpKSAgOyBlbHNlIGZlYXR1cmUgbm90IGFsbG93ZWQKICAgICh3 aGVuIHZlcmlsb2ctYXV0by10ZW1wbGF0ZS13YXJuLXVudXNlZAogICAgICAodW5sZXNzIHZlcmls b2ctYXV0by10ZW1wbGF0ZS1oaXRzCgkodmVyaWxvZy1yZWFkLWF1dG8tdGVtcGxhdGUtaW5pdCkp CiAgICAgIChwdXRoYXNoICh2ZWN0b3IgKG50aCAyIHRwbC1hc3MpIChudGggMyB0cGwtYXNzKSkg dAoJICAgICAgIHZlcmlsb2ctYXV0by10ZW1wbGF0ZS1oaXRzKSkpKQoKKGRlZnVuIHZlcmlsb2ct c2V0LWRlZmluZSAoZGVmbmFtZSBkZWZ2YWx1ZSAmb3B0aW9uYWwgYnVmZmVyIGVudW1uYW1lKQog ICJTZXQgdGhlIGRlZmluaXRpb24gREVGTkFNRSB0byB0aGUgREVGVkFMVUUgaW4gdGhlIGdpdmVu IEJVRkZFUi4KT3B0aW9uYWxseSBhc3NvY2lhdGUgaXQgd2l0aCB0aGUgc3BlY2lmaWVkIGVudW1l cmF0aW9uIEVOVU1OQU1FLiIKICAod2l0aC1jdXJyZW50LWJ1ZmZlciAob3IgYnVmZmVyIChjdXJy ZW50LWJ1ZmZlcikpCiAgICA7OyBOYW1lc3BhY2UgaW50ZW50aW9uYWxseSBzaG9ydCBmb3IgQVVU T3MgYW5kIGNvbXBhdGliaWxpdHkKICAgIChsZXQgKChtYWMgKGludGVybiAoY29uY2F0ICJ2aC0i IGRlZm5hbWUpKSkpCiAgICAgIDs7KG1lc3NhZ2UgIkRlZmluZSAlcz0lcyIgZGVmbmFtZSBkZWZ2 YWx1ZSkgKHNsZWVwLWZvciAxKQogICAgICA7OyBOZWVkIHRvIGRlZmluZSB0byBhIGNvbnN0YW50 IGlmIG5vIHZhbHVlIGdpdmVuCiAgICAgIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgbWFjKQoJ ICAgKGlmIChlcXVhbCBkZWZ2YWx1ZSAiIikgIjEiIGRlZnZhbHVlKSkpCiAgICAoaWYgZW51bW5h bWUKCTs7IE5hbWVzcGFjZSBpbnRlbnRpb25hbGx5IHNob3J0IGZvciBBVVRPcyBhbmQgY29tcGF0 aWJpbGl0eQoJKGxldCAoKGVudW12YXIgKGludGVybiAoY29uY2F0ICJ2ZW51bS0iIGVudW1uYW1l KSkpKQoJICA7OyhtZXNzYWdlICJEZWZpbmUgJXM9JXMiIGRlZm5hbWUgZGVmdmFsdWUpIChzbGVl cC1mb3IgMSkKCSAgKHVubGVzcyAoYm91bmRwIGVudW12YXIpIChzZXQgZW51bXZhciBuaWwpKQog ICAgICAgICAgKGFkZC10by1saXN0IChtYWtlLWxvY2FsLXZhcmlhYmxlIGVudW12YXIpIGRlZm5h bWUpKSkpKQoKKGRlZnVuIHZlcmlsb2ctcmVhZC1kZWZpbmVzICgmb3B0aW9uYWwgZmlsZW5hbWUg cmVjdXJzZSBzdWJjYWxsKQogICJSZWFkIFxcPWBkZWZpbmVzIGFuZCBwYXJhbWV0ZXJzIGZvciB0 aGUgY3VycmVudCBmaWxlLCBvciBvcHRpb25hbCBGSUxFTkFNRS4KSWYgdGhlIGZpbGVuYW1lIGlz IHByb3ZpZGVkLCBgdmVyaWxvZy1saWJyYXJ5LWZsYWdzJyB3aWxsIGJlIHVzZWQgdG8KcmVzb2x2 ZSBpdC4gIElmIG9wdGlvbmFsIFJFQ1VSU0UgaXMgbm9uLW5pbCwgcmVjdXJzZSB0aHJvdWdoIFxc PWBpbmNsdWRlcy4KCkxvY2FscGFyYW1zIG11c3QgYmUgc2ltcGxlIGFzc2lnbm1lbnRzIHRvIGNv bnN0YW50cywgb3IgaGF2ZSB0aGVpciBvd24KXCJsb2NhbHBhcmFtXCIgbGFiZWwgcmF0aGVyIHRo YW4gYSBsaXN0IG9mIGxvY2FscGFyYW1zLiAgVGh1czoKCiAgICBsb2NhbHBhcmFtIFggPSA1LCBZ ID0gMTA7CS8vIE9rCiAgICBsb2NhbHBhcmFtIFggPSB7MVxcPSdiMSwgMlxcPSdoMn07CS8vIE9r CiAgICBsb2NhbHBhcmFtIFggPSB7MVxcPSdiMSwgMlxcPSdoMn0sIFkgPSAxMDsJLy8gQmFkLCBt YWtlIGludG8gMiBsb2NhbHBhcmFtIGxpbmVzCgpEZWZpbmVzIG11c3QgYmUgc2ltcGxlIHRleHQg c3Vic3RpdHV0aW9ucywgb25lIG9uIGEgbGluZSwgc3RhcnRpbmcKYXQgdGhlIGJlZ2lubmluZyBv ZiB0aGUgbGluZS4gIEFueSBpZmRlZnMgb3IgbXVsdGlsaW5lIGNvbW1lbnRzIGFyb3VuZCB0aGUK ZGVmaW5lIGFyZSBpZ25vcmVkLgoKRGVmaW5lcyBhcmUgc3RvcmVkIGluc2lkZSBFbWFjcyB2YXJp YWJsZXMgdXNpbmcgdGhlIG5hbWUKdmgte2RlZmluZW5hbWV9LgoKTG9jYWxwYXJhbXMgZGVmaW5l IHdoYXQgc3ltYm9scyBhcmUgY29uc3RhbnRzIHNvIHRoYXQgQVVUT1NFTlNFCndpbGwgbm90IGlu Y2x1ZGUgdGhlbSBpbiBzZW5zaXRpdml0eSBsaXN0cy4gIEhvd2V2ZXIgYW55CnBhcmFtZXRlcnMg aW4gdGhlIGluY2x1ZGUgZmlsZSBhcmUgbm90IGNvbnNpZGVyZWQgcG9ydHMgaW4gdGhlCmluY2x1 ZGluZyBmaWxlLCB0aHVzIHdpbGwgbm90IGFwcGVhciBpbiBBVVRPSU5TVFBBUkFNIGxpc3RzIGZv ciBhCnBhcmVudCBtb2R1bGUuLgoKVGhlIGZpbGUgdmFyaWFibGVzIGZlYXR1cmUgY2FuIGJlIHVz ZWQgdG8gc2V0IGRlZmluZXMgdGhhdApgdmVyaWxvZy1tb2RlJyBjYW4gc2VlOyBwdXQgYXQgdGhl ICpFTkQqIG9mIHlvdXIgZmlsZSBzb21ldGhpbmcKbGlrZToKCiAgICAvLyBMb2NhbCBWYXJpYWJs ZXM6CiAgICAvLyB2aC1tYWNybzpcIm1hY3JvX2RlZmluaXRpb25cIgogICAgLy8gRW5kOgoKSWYg bWFjcm9zIGFyZSBkZWZpbmVkIGVhcmxpZXIgaW4gdGhlIHNhbWUgZmlsZSBhbmQgeW91IHdhbnQg dGhlaXIgdmFsdWVzLAp5b3UgY2FuIHJlYWQgdGhlbSBhdXRvbWF0aWNhbGx5IHdpdGg6CgogICAg Ly8gTG9jYWwgVmFyaWFibGVzOgogICAgLy8gdmVyaWxvZy1hdXRvLXJlYWQtaW5jbHVkZXM6dAog ICAgLy8gRW5kOgoKT3IgYSBtb3JlIHNwZWNpZmljIGFsdGVybmF0aXZlIGV4YW1wbGUsIHdoaWNo IHJlcXVpcmVzIGhhdmluZwpgZW5hYmxlLWxvY2FsLWV2YWwnIG5vbi1uaWw6CgogICAgLy8gTG9j YWwgVmFyaWFibGVzOgogICAgLy8gZXZhbDoodmVyaWxvZy1yZWFkLWRlZmluZXMpCiAgICAvLyBl dmFsOih2ZXJpbG9nLXJlYWQtZGVmaW5lcyBcImdyb3VwX3N0YW5kYXJkX2luY2x1ZGVzLnZcIikK ICAgIC8vIEVuZDoKCk5vdGUgdGhlc2UgYXJlIG9ubHkgcmVhZCB3aGVuIHRoZSBmaWxlIGlzIGZp cnN0IHZpc2l0ZWQsIHlvdSBtdXN0IHVzZQpcXFtmaW5kLWFsdGVybmF0ZS1maWxlXSBSRVQgIHRv IGhhdmUgdGhlc2UgdGFrZSBlZmZlY3QgYWZ0ZXIgZWRpdGluZyB0aGVtIQoKSWYgeW91IHdhbnQg dG8gZGlzYWJsZSB0aGUgXCJQcm9jZXNzIGBldmFsJyBvciBob29rIGxvY2FsIHZhcmlhYmxlc1wi Cndhcm5pbmcgbWVzc2FnZSwgeW91IG5lZWQgdG8gYWRkIHRvIHlvdXIgaW5pdCBmaWxlOgoKICAg IChzZXRxIGVuYWJsZS1sb2NhbC1ldmFsIHQpIgogIChsZXQgKChvcmlnYnVmIChjdXJyZW50LWJ1 ZmZlcikpKQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICh1bmxlc3Mgc3ViY2FsbCAodmVyaWxv Zy1nZXRvcHQtZmxhZ3MpKQogICAgICAod2hlbiBmaWxlbmFtZQoJKGxldCAoKGZucyAodmVyaWxv Zy1saWJyYXJ5LWZpbGVuYW1lcyBmaWxlbmFtZSAoYnVmZmVyLWZpbGUtbmFtZSkpKSkKCSAgKGlm IGZucwoJICAgICAgKHNldC1idWZmZXIgKGZpbmQtZmlsZS1ub3NlbGVjdCAoY2FyIGZucykpKQoJ ICAgIChlcnJvciAiJXM6IENhbid0IGZpbmQgdmVyaWxvZy1yZWFkLWRlZmluZXMgZmlsZTogJXMi CgkJICAgKHZlcmlsb2ctcG9pbnQtdGV4dCkgZmlsZW5hbWUpKSkpCiAgICAgICh3aGVuIHJlY3Vy c2UKCShnb3RvLWNoYXIgKHBvaW50LW1pbikpCgkod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJe XFxzLSpgaW5jbHVkZVxccy0rXFwoW14gXHRcblxmXStcXCkiIG5pbCB0KQoJICAobGV0ICgoaW5j ICh2ZXJpbG9nLXN1YnN0aXR1dGUtaW5jbHVkZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAo bWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSkpKSkKCSAgICAodW5sZXNzICh2ZXJpbG9nLWlu c2lkZS1jb21tZW50LW9yLXN0cmluZy1wKQoJICAgICAgKHZlcmlsb2ctcmVhZC1kZWZpbmVzIGlu YyByZWN1cnNlIHQpKSkpKQogICAgICA7OyBSZWFkIGBkZWZpbmVzCiAgICAgIDs7IG5vdGUgd2Ug ZG9uJ3QgdXNlIHZlcmlsb2ctcmUuLi4gaXQncyBmYXN0ZXIgdGhpcyB3YXksIGFuZCB0aGF0CiAg ICAgIDs7IGZ1bmN0aW9uIGhhcyBwcm9ibGVtcyB3aGVuIGNvbW1lbnRzIGFyZSBhdCB0aGUgZW5k IG9mIHRoZSBkZWZpbmUKICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgKHdoaWxl IChyZS1zZWFyY2gtZm9yd2FyZCAiXlxccy0qYGRlZmluZVxccy0rXFwoW2EtekEtWjAtOV8kXStc XClcXHMtK1xcKC4qXFwpJCIgbmlsIHQpCgkobGV0ICgoZGVmbmFtZSAobWF0Y2gtc3RyaW5nLW5v LXByb3BlcnRpZXMgMSkpCgkgICAgICAoZGVmdmFsdWUgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0 aWVzIDIpKSkKCSAgKHVubGVzcyAodmVyaWxvZy1pbnNpZGUtY29tbWVudC1vci1zdHJpbmctcCAo bWF0Y2gtYmVnaW5uaW5nIDApKQoJICAgIChzZXRxIGRlZnZhbHVlICh2ZXJpbG9nLXN0cmluZy1y ZXBsYWNlLW1hdGNoZXMgIlxccy0qL1svKl0uKiQiICIiIG5pbCBuaWwgZGVmdmFsdWUpKQoJICAg ICh2ZXJpbG9nLXNldC1kZWZpbmUgZGVmbmFtZSBkZWZ2YWx1ZSBvcmlnYnVmKSkpKQogICAgICA7 OyBIYWNrOiBSZWFkIHBhcmFtZXRlcnMKICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAg ICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZAoJICAgICAgIl5cXHMtKlxcKHBhcmFtZXRlclxc fGxvY2FscGFyYW1cXClcXChcXHMtKlxcW1teXV0qXFxdXFwpP1xccy0qIiBuaWwgdCkKCShsZXQg KGVudW1uYW1lKQoJICA7OyBUaGUgcHJpbWFyeSB3YXkgb2YgZ2V0dGluZyBkZWZpbmVzIGlzIHZl cmlsb2ctcmVhZC1kZWNscwoJICA7OyBIb3dldmVyLCB0aGF0IGlzbid0IGNhbGxlZCB5ZXQgZm9y IGluY2x1ZGVkIGZpbGVzLCBzbyB3ZSdsbCBhZGQgYW5vdGhlciBzY2hlbWUKCSAgKGlmIChsb29r aW5nLWF0ICJbXlxuXSpcXChhdXRvXFx8c3lub3BzeXNcXClcXHMgK2VudW1cXHMgK1xcKFthLXpB LVowLTlfXStcXCkiKQoJICAgICAgKHNldHEgZW51bW5hbWUgKG1hdGNoLXN0cmluZy1uby1wcm9w ZXJ0aWVzIDIpKSkKCSAgKGZvcndhcmQtY29tbWVudCA5OTk5OSkKCSAgKHdoaWxlIChsb29raW5n LWF0IChjb25jYXQgIlxccy0qLD9cXHMtKlxcKD86L1svKl0uKj8kXFwpP1xccy0qXFwoW2EtekEt WjAtOV8kXStcXCkiCgkJCQkgICAgICJcXHMtKj1cXHMtKlxcKFteOyxdKlxcKSw/XFxzLSpcXCgv Wy8qXS4qPyRcXCk/XFxzLSoiKSkKCSAgICAodW5sZXNzICh2ZXJpbG9nLWluc2lkZS1jb21tZW50 LW9yLXN0cmluZy1wIChtYXRjaC1iZWdpbm5pbmcgMCkpCgkgICAgICAodmVyaWxvZy1zZXQtZGVm aW5lIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAxKQoJCQkJICAobWF0Y2gtc3RyaW5nLW5v LXByb3BlcnRpZXMgMikgb3JpZ2J1ZiBlbnVtbmFtZSkpCgkgICAgKGdvdG8tY2hhciAobWF0Y2gt ZW5kIDApKQoJICAgIChmb3J3YXJkLWNvbW1lbnQgOTk5OTkpKSkpKSkpCgooZGVmdW4gdmVyaWxv Zy1yZWFkLWluY2x1ZGVzICgpCiAgIlJlYWQgXFw9YGluY2x1ZGVzIGZvciB0aGUgY3VycmVudCBm aWxlLgpUaGlzIHdpbGwgZmluZCBhbGwgb2YgdGhlIFxcPWBpbmNsdWRlcyB3aGljaCBhcmUgYXQg dGhlIGJlZ2lubmluZyBvZiBsaW5lcywKaWdub3JpbmcgYW55IGlmZGVmcyBvciBtdWx0aWxpbmUg Y29tbWVudHMgYXJvdW5kIHRoZW0uCmB2ZXJpbG9nLXJlYWQtZGVmaW5lcycgaXMgdGhlbiBwZXJm b3JtZWQgb24gdGhlIGN1cnJlbnQgYW5kIGVhY2ggaW5jbHVkZWQKZmlsZS4KCkl0IGlzIG9mdGVu IHVzZWZ1bCBwdXQgYXQgdGhlICpFTkQqIG9mIHlvdXIgZmlsZSBzb21ldGhpbmcgbGlrZToKCiAg ICAvLyBMb2NhbCBWYXJpYWJsZXM6CiAgICAvLyB2ZXJpbG9nLWF1dG8tcmVhZC1pbmNsdWRlczp0 CiAgICAvLyBFbmQ6CgpPciB0aGUgZXF1aXZhbGVudCBsb25nZXIgdmVyc2lvbiwgd2hpY2ggcmVx dWlyZXMgaGF2aW5nCmBlbmFibGUtbG9jYWwtZXZhbCcgbm9uLW5pbDoKCiAgICAvLyBMb2NhbCBW YXJpYWJsZXM6CiAgICAvLyBldmFsOih2ZXJpbG9nLXJlYWQtZGVmaW5lcykKICAgIC8vIGV2YWw6 KHZlcmlsb2ctcmVhZC1pbmNsdWRlcykKICAgIC8vIEVuZDoKCk5vdGUgaW5jbHVkZXMgYXJlIG9u bHkgcmVhZCB3aGVuIHRoZSBmaWxlIGlzIGZpcnN0IHZpc2l0ZWQsIHlvdSBtdXN0IHVzZQpcXFtm aW5kLWFsdGVybmF0ZS1maWxlXSBSRVQgIHRvIGhhdmUgdGhlc2UgdGFrZSBlZmZlY3QgYWZ0ZXIg ZWRpdGluZyB0aGVtIQoKSXQgaXMgZ29vZCB0byBnZXQgaW4gdGhlIGhhYml0IG9mIGluY2x1ZGlu ZyBhbGwgbmVlZGVkIGZpbGVzIGluIGVhY2ggLnYKZmlsZSB0aGF0IG5lZWRzIGl0LCByYXRoZXIg dGhhbiB3YWl0aW5nIGZvciBjb21waWxlIHRpbWUuICBUaGlzIHdpbGwgYWlkCnRoaXMgcHJvY2Vz cywgVmVyaWxpbnQsIGFuZCByZWFkYWJpbGl0eS4gIFRvIHByZXZlbnQgZGVmaW5pbmcgdGhlIHNh bWUKdmFyaWFibGUgb3ZlciBhbmQgb3ZlciB3aGVuIG1hbnkgbW9kdWxlcyBhcmUgY29tcGlsZWQg dG9nZXRoZXIsIHB1dCBhIHRlc3QKYXJvdW5kIHRoZSBpbnNpZGUgZWFjaCBpbmNsdWRlIGZpbGU6 Cgpmb28udiAoYW4gaW5jbHVkZSBmaWxlKToKCVxcPWBpZmRlZiBfRk9PX1YJLy8gaW5jbHVkZSBp ZiBub3QgYWxyZWFkeSBpbmNsdWRlZAoJXFw9YGVsc2UKCVxcPWBkZWZpbmUgX0ZPT19WCgkuLi4g Y29udGVudHMgb2YgZmlsZQoJXFw9YGVuZGlmIC8vIF9GT09fViIKICA7O3Nsb3c6ICAodmVyaWxv Zy1yZWFkLWRlZmluZXMgbmlsIHQpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAodmVyaWxvZy1nZXRv cHQtZmxhZ3MpCiAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgKHdoaWxlIChyZS1zZWFy Y2gtZm9yd2FyZCAiXlxccy0qYGluY2x1ZGVcXHMtK1xcKFteIFx0XG5cZl0rXFwpIiBuaWwgdCkK ICAgICAgKGxldCAoKGluYyAodmVyaWxvZy1zdWJzdGl0dXRlLWluY2x1ZGUtbmFtZQogICAgICAg ICAgICAgICAgICAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSkpKSkKCSh2ZXJpbG9nLXJl YWQtZGVmaW5lcyBpbmMgbmlsIHQpKSkpKQoKKGRlZnVuIHZlcmlsb2ctcmVhZC1zaWduYWxzICgm b3B0aW9uYWwgc3RhcnQgZW5kKQogICJSZXR1cm4gYSBzaW1wbGUgbGlzdCBvZiBhbGwgcG9zc2li bGUgc2lnbmFscyBpbiB0aGUgZmlsZS4KQm91bmRlZCBieSBvcHRpb25hbCByZWdpb24gZnJvbSBT VEFSVCB0byBFTkQuICBPdmVybHkgYWdncmVzc2l2ZSBidXQgZmFzdC4KU29tZSBtYWNyb3MgYW5k IHN1Y2ggYXJlIGFsc28gZm91bmQgYW5kIGluY2x1ZGVkLiAgRm9yIGRpbm90cmFjZS5lbC4iCiAg KGxldCAoc2lncy1hbGwga2V5d2QpCiAgICAocHJvZ247c2F2ZS1leGN1cnNpb24KICAgICAgKGdv dG8tY2hhciAob3Igc3RhcnQgKHBvaW50LW1pbikpKQogICAgICAoc2V0cSBlbmQgKG9yIGVuZCAo cG9pbnQtbWF4KSkpCiAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIltcIi9hLXpBLVpf LiVgXSIgZW5kIHQpCgkoZm9yd2FyZC1jaGFyIC0xKQoJKGNvbmQKCSAoKGxvb2tpbmctYXQgIi8v IikKCSAgKHNlYXJjaC1mb3J3YXJkICJcbiIpKQoJICgobG9va2luZy1hdCAiL1xcKiIpCgkgIChz ZWFyY2gtZm9yd2FyZCAiKi8iKSkKCSAoKGxvb2tpbmctYXQgIihcXCoiKQogICAgICAgICAgKG9y IChsb29raW5nLWF0ICIoXFwqXFxzLSopIikgIDsgSXQncyBhbiAiYWx3YXlzIEAgKCopIgoJICAg ICAgKHNlYXJjaC1mb3J3YXJkICIqKSIpKSkKCSAoKGVxID9cIiAoZm9sbG93aW5nLWNoYXIpKQog ICAgICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkICJbXlxcXVwiIikpICA7IGRvbid0IGZvcndhcmQt Y2hhciBmaXJzdCwgc2luY2Ugd2UgbG9vayBmb3IgYSBub24gYmFja3NsYXNoIGZpcnN0CgkgKChs b29raW5nLWF0ICJcXHMtKlxcKFthLXpBLVowLTkkXy4lYF0rXFwpIikKCSAgKGdvdG8tY2hhciAo bWF0Y2gtZW5kIDApKQoJICAoc2V0cSBrZXl3ZCAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMg MSkpCgkgIChvciAobWVtYmVyIGtleXdkIHZlcmlsb2cta2V5d29yZHMpCgkgICAgICAobWVtYmVy IGtleXdkIHNpZ3MtYWxsKQoJICAgICAgKHNldHEgc2lncy1hbGwgKGNvbnMga2V5d2Qgc2lncy1h bGwpKSkpCgkgKHQgKGZvcndhcmQtY2hhciAxKSkpKQogICAgICA7OyBSZXR1cm4gbGlzdAogICAg ICBzaWdzLWFsbCkpKQoKOzsKOzsgQXJndW1lbnQgZmlsZSBwYXJzaW5nCjs7CgooZGVmdW4gdmVy aWxvZy1nZXRvcHQgKGFyZ2xpc3QgJm9wdGlvbmFsIGRlZmF1bHQtZGlyKQogICJQYXJzZSAtZiwg LXYgZXRjIGFyZ3VtZW50cyBpbiBBUkdMSVNUIGxpc3Qgb3Igc3RyaW5nLgpVc2UgREVGQVVMVC1E SVIgdG8gYW5jaG9yIHBhdGhzIGlmIG5vbi1uaWwuIgogICh1bmxlc3MgKGxpc3RwIGFyZ2xpc3Qp IChzZXRxIGFyZ2xpc3QgKGxpc3QgYXJnbGlzdCkpKQogIChsZXQgKChzcGFjZS1hcmdzICcoKSkK CWFyZyBuZXh0LXBhcmFtKQogICAgOzsgU3BsaXQgb24gc3BhY2VzLCBzbyB1c2VycyBjYW4gcGFz cyB3aG9sZSBjb21tYW5kIGxpbmVzCiAgICAod2hpbGUgYXJnbGlzdAogICAgICAoc2V0cSBhcmcg KGNhciBhcmdsaXN0KQoJICAgIGFyZ2xpc3QgKGNkciBhcmdsaXN0KSkKICAgICAgKHdoaWxlIChz dHJpbmctbWF0Y2ggIl5cXChbXiBcdFxuXGZdK1xcKVsgXHRcblxmXSpcXCguKiRcXCkiIGFyZykK CShzZXRxIHNwYWNlLWFyZ3MgKGFwcGVuZCBzcGFjZS1hcmdzCgkJCQkgKGxpc3QgKG1hdGNoLXN0 cmluZy1uby1wcm9wZXJ0aWVzIDEgYXJnKSkpKQoJKHNldHEgYXJnIChtYXRjaC1zdHJpbmcgMiBh cmcpKSkpCiAgICA7OyBQYXJzZSBhcmd1bWVudHMKICAgICh3aGlsZSBzcGFjZS1hcmdzCiAgICAg IChzZXRxIGFyZyAoY2FyIHNwYWNlLWFyZ3MpCgkgICAgc3BhY2UtYXJncyAoY2RyIHNwYWNlLWFy Z3MpKQogICAgICAoY29uZAogICAgICAgOzsgTmVlZCBhbm90aGVyIGFyZwogICAgICAgKChlcXVh bCBhcmcgIi1GIikKCShzZXRxIG5leHQtcGFyYW0gYXJnKSkKICAgICAgICgoZXF1YWwgYXJnICIt ZiIpCgkoc2V0cSBuZXh0LXBhcmFtIGFyZykpCiAgICAgICAoKGVxdWFsIGFyZyAiLXYiKQoJKHNl dHEgbmV4dC1wYXJhbSBhcmcpKQogICAgICAgKChlcXVhbCBhcmcgIi15IikKCShzZXRxIG5leHQt cGFyYW0gYXJnKSkKICAgICAgIDs7ICtsaWJleHQrKGV4dDEpKyhleHQyKS4uLgogICAgICAgKChz dHJpbmctbWF0Y2ggIl5cXCtsaWJleHRcXCtcXCguKlxcKSIgYXJnKQoJKHNldHEgYXJnIChtYXRj aC1zdHJpbmcgMSBhcmcpKQoJKHdoaWxlIChzdHJpbmctbWF0Y2ggIlxcKFteK10rXFwpXFwrP1xc KC4qXFwpIiBhcmcpCgkgICh2ZXJpbG9nLWFkZC1saXN0LXVuaXF1ZSAndmVyaWxvZy1saWJyYXJ5 LWV4dGVuc2lvbnMKCQkJCSAgIChtYXRjaC1zdHJpbmcgMSBhcmcpKQoJICAoc2V0cSBhcmcgKG1h dGNoLXN0cmluZyAyIGFyZykpKSkKICAgICAgIDs7CiAgICAgICAoKG9yIChzdHJpbmctbWF0Y2gg Il4tRFxcKFteKz1dKlxcKVsrPV1cXCguKlxcKSIgYXJnKSAgOyAtRGRlZmluZT12YWwKICAgICAg ICAgICAgKHN0cmluZy1tYXRjaCAiXi1EXFwoW14rPV0qXFwpXFwoXFwpIiBhcmcpICA7IC1EZGVm aW5lCiAgICAgICAgICAgIChzdHJpbmctbWF0Y2ggIl5cXCtkZWZpbmVcXChbXis9XSpcXClbKz1d XFwoLipcXCkiIGFyZykgIDsgK2RlZmluZSt2YWwKICAgICAgICAgICAgKHN0cmluZy1tYXRjaCAi XlxcK2RlZmluZVxcKFteKz1dKlxcKVxcKFxcKSIgYXJnKSkgIDsgK2RlZmluZStkZWZpbmUKCSh2 ZXJpbG9nLXNldC1kZWZpbmUgKG1hdGNoLXN0cmluZyAxIGFyZykgKG1hdGNoLXN0cmluZyAyIGFy ZykpKQogICAgICAgOzsKICAgICAgICgob3IgKHN0cmluZy1tYXRjaCAiXlxcK2luY2RpclxcK1xc KC4qXFwpIiBhcmcpICA7ICtpbmNkaXIrZGlyCiAgICAgICAgICAgIChzdHJpbmctbWF0Y2ggIl4t SVxcKC4qXFwpIiBhcmcpKSAgIDsgLUlkaXIKCSh2ZXJpbG9nLWFkZC1saXN0LXVuaXF1ZSAndmVy aWxvZy1saWJyYXJ5LWRpcmVjdG9yaWVzCgkJCQkgKHN1YnN0aXR1dGUtaW4tZmlsZS1uYW1lICht YXRjaC1zdHJpbmcgMSBhcmcpKSkpCiAgICAgICA7OyBJZ25vcmUKICAgICAgICgoZXF1YWwgIits aWJyZXNjYW4iIGFyZykpCiAgICAgICAoKHN0cmluZy1tYXRjaCAiXi1VXFwoLipcXCkiIGFyZykp ICA7IC1VZGVmaW5lCiAgICAgICA7OyBTZWNvbmQgcGFyYW1ldGVycwogICAgICAgKChlcXVhbCBu ZXh0LXBhcmFtICItRiIpCgkoc2V0cSBuZXh0LXBhcmFtIG5pbCkKCSh2ZXJpbG9nLWdldG9wdC1m aWxlICh2ZXJpbG9nLXN1YnN0aXR1dGUtZmlsZS1uYW1lLXBhdGggYXJnIGRlZmF1bHQtZGlyKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5ICh2ZXJpbG9n LXN1YnN0aXR1dGUtZmlsZS1uYW1lLXBhdGggYXJnIGRlZmF1bHQtZGlyKSkpKQogICAgICAgKChl cXVhbCBuZXh0LXBhcmFtICItZiIpCgkoc2V0cSBuZXh0LXBhcmFtIG5pbCkKCSh2ZXJpbG9nLWdl dG9wdC1maWxlICh2ZXJpbG9nLXN1YnN0aXR1dGUtZmlsZS1uYW1lLXBhdGggYXJnIGRlZmF1bHQt ZGlyKSBuaWwpKQogICAgICAgKChlcXVhbCBuZXh0LXBhcmFtICItdiIpCgkoc2V0cSBuZXh0LXBh cmFtIG5pbCkKCSh2ZXJpbG9nLWFkZC1saXN0LXVuaXF1ZSAndmVyaWxvZy1saWJyYXJ5LWZpbGVz CgkJCQkgKHZlcmlsb2ctc3Vic3RpdHV0ZS1maWxlLW5hbWUtcGF0aCBhcmcgZGVmYXVsdC1kaXIp KSkKICAgICAgICgoZXF1YWwgbmV4dC1wYXJhbSAiLXkiKQoJKHNldHEgbmV4dC1wYXJhbSBuaWwp CgkodmVyaWxvZy1hZGQtbGlzdC11bmlxdWUgJ3Zlcmlsb2ctbGlicmFyeS1kaXJlY3RvcmllcwoJ CQkJICh2ZXJpbG9nLXN1YnN0aXR1dGUtZmlsZS1uYW1lLXBhdGggYXJnIGRlZmF1bHQtZGlyKSkp CiAgICAgICA7OyBGaWxlbmFtZQogICAgICAgKChzdHJpbmctbWF0Y2ggIl5bXi0rXSIgYXJnKQoJ KHZlcmlsb2ctYWRkLWxpc3QtdW5pcXVlICd2ZXJpbG9nLWxpYnJhcnktZmlsZXMKCQkJCSAodmVy aWxvZy1zdWJzdGl0dXRlLWZpbGUtbmFtZS1wYXRoIGFyZyBkZWZhdWx0LWRpcikpKQogICAgICAg OzsgRGVmYXVsdCAtIGlnbm9yZTsgbm8gd2FybmluZwogICAgICAgKSkpKQo7Oyh2ZXJpbG9nLWdl dG9wdCAobGlzdCAiK2xpYmV4dCsuYSsuYiIgIitpbmNkaXIrZm9vZGlyIiAiK2RlZmluZSthK2F2 YWwiICItZiIgIm90aGVyZiIgIi12IiAibGlicmFyeSIgIi15IiAiZGlyIikpCgooZGVmdW4gdmVy aWxvZy1nZXRvcHQtZmlsZSAoZmlsZW5hbWUgJm9wdGlvbmFsIGRlZmF1bHQtZGlyKQogICJSZWFk IFZlcmlsb2cgb3B0aW9ucyBmcm9tIHRoZSBzcGVjaWZpZWQgRklMRU5BTUUuClVzZSBERUZBVUxU LURJUiB0byBhbmNob3IgcGF0aHMgaWYgbm9uLW5pbC4iCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAo bGV0ICgoZm5zICh2ZXJpbG9nLWxpYnJhcnktZmlsZW5hbWVzIGZpbGVuYW1lIChidWZmZXItZmls ZS1uYW1lKSkpCgkgIChvcmlnLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQoJICBsaW5lKQogICAg ICAoaWYgZm5zCgkgIChzZXQtYnVmZmVyIChmaW5kLWZpbGUtbm9zZWxlY3QgKGNhciBmbnMpKSkK CShlcnJvciAiJXM6IENhbid0IGZpbmQgdmVyaWxvZy1nZXRvcHQtZmlsZSAtZiBmaWxlOiAlcyIK CSAgICAgICAodmVyaWxvZy1wb2ludC10ZXh0KSBmaWxlbmFtZSkpCiAgICAgIChnb3RvLWNoYXIg KHBvaW50LW1pbikpCiAgICAgICh3aGlsZSAobm90IChlb2JwKSkKCShzZXRxIGxpbmUgKGJ1ZmZl ci1zdWJzdHJpbmcgKHBvaW50KSAocG9pbnQtYXQtZW9sKSkpCgkoZm9yd2FyZC1saW5lIDEpCgko d2hlbiAoc3RyaW5nLW1hdGNoICIvLyIgbGluZSkKCSAgKHNldHEgbGluZSAoc3Vic3RyaW5nIGxp bmUgMCAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCgkod2l0aC1jdXJyZW50LWJ1ZmZlciBvcmlnLWJ1 ZmZlciAgOyBWYXJpYWJsZXMgYXJlIGJ1ZmZlci1sb2NhbCwgc28gbmVlZCByaWdodCBjb250ZXh0 LgoJICAodmVyaWxvZy1nZXRvcHQgbGluZSBkZWZhdWx0LWRpcikpKSkpKQoKKGRlZnVuIHZlcmls b2ctZ2V0b3B0LWZsYWdzICgpCiAgIkNvbnZlcnQgYHZlcmlsb2ctbGlicmFyeS1mbGFncycgaW50 byBzdGFuZGFyZCBsaWJyYXJ5IHZhcmlhYmxlcy4iCiAgOzsgSWYgdGhlIGZsYWdzIGFyZSBsb2Nh bCwgdGhlbiBhbGwgdGhlIG91dHB1dHMgc2hvdWxkIGJlIGxvY2FsIGFsc28KICAod2hlbiAobG9j YWwtdmFyaWFibGUtcCAndmVyaWxvZy1saWJyYXJ5LWZsYWdzIChjdXJyZW50LWJ1ZmZlcikpCiAg ICAobWFwYyAnbWFrZS1sb2NhbC12YXJpYWJsZSAnKHZlcmlsb2ctbGlicmFyeS1leHRlbnNpb25z CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlsb2ctbGlicmFyeS1kaXJlY3Rv cmllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJpbG9nLWxpYnJhcnktZmls ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWxvZy1saWJyYXJ5LWZsYWdz KSkpCiAgOzsgQWxsb3cgdXNlciB0byBjdXN0b21pemUKICAodmVyaWxvZy1ydW4taG9va3MgJ3Zl cmlsb2ctYmVmb3JlLWdldG9wdC1mbGFncy1ob29rKQogIDs7IFByb2Nlc3MgYXJndW1lbnRzCiAg KHZlcmlsb2ctZ2V0b3B0IHZlcmlsb2ctbGlicmFyeS1mbGFncykKICA7OyBBbGxvdyB1c2VyIHRv IGN1c3RvbWl6ZQogICh2ZXJpbG9nLXJ1bi1ob29rcyAndmVyaWxvZy1nZXRvcHQtZmxhZ3MtaG9v aykpCgooZGVmdW4gdmVyaWxvZy1zdWJzdGl0dXRlLWZpbGUtbmFtZS1wYXRoIChmaWxlbmFtZSBk ZWZhdWx0LWRpcikKICAiUmV0dXJuIEZJTEVOQU1FIHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGVz IHN1YnN0aXR1dGVkLgpVc2UgREVGQVVMVC1ESVIgdG8gYW5jaG9yIHBhdGhzIGlmIG5vbi1uaWwu IgogIChpZiBkZWZhdWx0LWRpcgogICAgICAoZXhwYW5kLWZpbGUtbmFtZSAoc3Vic3RpdHV0ZS1p bi1maWxlLW5hbWUgZmlsZW5hbWUpIGRlZmF1bHQtZGlyKQogIChzdWJzdGl0dXRlLWluLWZpbGUt bmFtZSBmaWxlbmFtZSkpKQoKKGRlZnVuIHZlcmlsb2ctc3Vic3RpdHV0ZS1pbmNsdWRlLW5hbWUg KGZpbGVuYW1lKQogICJSZXR1cm4gRklMRU5BTUUgZm9yIGluY2x1ZGUgd2l0aCBkZWZpbmUgc3Vi c3RpdHV0ZWQuIgogIChzZXRxIGZpbGVuYW1lICh2ZXJpbG9nLXN0cmluZy1yZXBsYWNlLW1hdGNo ZXMgIlwiIiAiIiBuaWwgbmlsIGZpbGVuYW1lKSkKICAodmVyaWxvZy1zdHJpbmctcmVwbGFjZS1t YXRjaGVzICJcIiIgIiIgbmlsIG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHZlcmlsb2ctc3ltYm9sLWRldGljayBmaWxlbmFtZSB0KSkpCgooZGVmdW4gdmVyaWxvZy1hZGQt bGlzdC11bmlxdWUgKHZhcnJlZiBvYmplY3QpCiAgIkFwcGVuZCB0byBWQVJSRUYgbGlzdCB0aGUg Z2l2ZW4gT0JKRUNULAp1bmxlc3MgaXQgaXMgYWxyZWFkeSBhIG1lbWJlciBvZiB0aGUgdmFyaWFi bGUncyBsaXN0LiIKICAodW5sZXNzIChtZW1iZXIgb2JqZWN0IChzeW1ib2wtdmFsdWUgdmFycmVm KSkKICAgIChzZXQgdmFycmVmIChhcHBlbmQgKHN5bWJvbC12YWx1ZSB2YXJyZWYpIChsaXN0IG9i amVjdCkpKSkKICB2YXJyZWYpCjs7KHByb2duIChzZXRxIGwgJygpKSAodmVyaWxvZy1hZGQtbGlz dC11bmlxdWUgYGwgImEiKSAodmVyaWxvZy1hZGQtbGlzdC11bmlxdWUgYGwgImEiKSBsKQoKKGRl ZnVuIHZlcmlsb2ctY3VycmVudC1mbGFncyAoKQogICJDb252ZXJ0IGB2ZXJpbG9nLWxpYnJhcnkt ZmxhZ3MnIGFuZCBzaW1pbGFyIHZhcmlhYmxlcyB0byBjb21tYW5kIGxpbmUuClVzZWQgZm9yIF9f RkxBR1NfXyBpbiBgdmVyaWxvZy1leHBhbmQtY29tbWFuZCcuIgogIChsZXQgKChjbWQgKG1hcGNv bmNhdCAjJ2NvbmNhdCB2ZXJpbG9nLWxpYnJhcnktZmxhZ3MgIiAiKSkpCiAgICAod2hlbiAoZXF1 YWwgY21kICIiKQogICAgICAoc2V0cSBjbWQgKGNvbmNhdAoJCSAiK2xpYmV4dCsiIChtYXBjb25j YXQgIydjb25jYXQgdmVyaWxvZy1saWJyYXJ5LWV4dGVuc2lvbnMgIisiKQoJCSAobWFwY29uY2F0 IChsYW1iZGEgKGkpIChjb25jYXQgIiAteSAiIGkgIiAraW5jZGlyKyIgaSkpCgkJCSAgICB2ZXJp bG9nLWxpYnJhcnktZGlyZWN0b3JpZXMgIiIpCgkJIChtYXBjb25jYXQgKGxhbWJkYSAoaSkgKGNv bmNhdCAiIC12ICIgaSkpCgkJCSAgICB2ZXJpbG9nLWxpYnJhcnktZmlsZXMgIiIpKSkpCiAgICBj bWQpKQo7Oyh2ZXJpbG9nLWN1cnJlbnQtZmxhZ3MpCgoMCjs7OyBDYWNoZWQgZGlyZWN0b3J5IHN1 cHBvcnQ6Cjs7CgooZGVmdmFyIHZlcmlsb2ctZGlyLWNhY2hlLXByZXNlcnZpbmcgbmlsCiAgIklm IHRydWUsIHRoZSBkaXJlY3RvcnkgY2FjaGUgaXMgZW5hYmxlZCwgYW5kIGZpbGUgc3lzdGVtIGNo YW5nZXMgYXJlIGlnbm9yZWQuClNlZSBgdmVyaWxvZy1kaXItZXhpc3RzLXAnIGFuZCBgdmVyaWxv Zy1kaXItZmlsZXMnLiIpCgo7OyBJZiBhZGRpbmcgbmV3IGNhY2hlZCB2YXJpYWJsZSwgYWRkIGFs c28gdG8gdmVyaWxvZy1wcmVzZXJ2ZS1kaXItY2FjaGUKKGRlZnZhciB2ZXJpbG9nLWRpci1jYWNo ZS1saXN0IG5pbAogICJBbGlzdCBvZiAoKChDd2QgRGlybmFtZSkgUmVzdWx0cykuLi4pIGZvciBj YWNoaW5nIGB2ZXJpbG9nLWRpci1maWxlcycuIikKKGRlZnZhciB2ZXJpbG9nLWRpci1jYWNoZS1s aWItZmlsZW5hbWVzIG5pbAogICJDYWNoZWQgZGF0YSBmb3IgYHZlcmlsb2ctbGlicmFyeS1maWxl bmFtZXMnLiIpCgooZGVmbWFjcm8gdmVyaWxvZy1wcmVzZXJ2ZS1kaXItY2FjaGUgKCZyZXN0IGJv ZHkpCiAgIkV4ZWN1dGUgdGhlIEJPRFkgZm9ybXMsIGFsbG93aW5nIGRpcmVjdG9yeSBjYWNoZSBw cmVzZXJ2YXRpb24gd2l0aGluIEJPRFkuClRoaXMgbWVhbnMgdGhhdCBjaGFuZ2VzIGluc2lkZSBC T0RZIG1hZGUgdG8gdGhlIGZpbGUgc3lzdGVtIHdpbGwgbm90IGJlCnNlZW4gYnkgdGhlIGB2ZXJp bG9nLWRpci1maWxlcycgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiIKICBgKGxldCAoKHZlcmlsb2ct ZGlyLWNhY2hlLXByZXNlcnZpbmcgKGN1cnJlbnQtYnVmZmVyKSkKCSB2ZXJpbG9nLWRpci1jYWNo ZS1saXN0CgkgdmVyaWxvZy1kaXItY2FjaGUtbGliLWZpbGVuYW1lcykKICAgICAocHJvZ24gLEBi b2R5KSkpCgooZGVmdW4gdmVyaWxvZy1kaXItZmlsZXMgKGRpcm5hbWUpCiAgIlJldHVybiBhbGwg ZmlsZW5hbWVzIGluIHRoZSBESVJOQU1FIGRpcmVjdG9yeS4KUmVsYXRpdmUgcGF0aHMgZGVwZW5k IG9uIHRoZSBgZGVmYXVsdC1kaXJlY3RvcnknLgpSZXN1bHRzIGFyZSBjYWNoZWQgaWYgaW5zaWRl IGB2ZXJpbG9nLXByZXNlcnZlLWRpci1jYWNoZScuIgogICh1bmxlc3MgdmVyaWxvZy1kaXItY2Fj aGUtcHJlc2VydmluZwogICAgKHNldHEgdmVyaWxvZy1kaXItY2FjaGUtbGlzdCBuaWwpKSAgOyBD YWNoZSBkaXNhYmxlZAogIDs7IFdlIGRvbid0IHVzZSBleHBhbmQtZmlsZS1uYW1lIG9uIHRoZSBk aXJuYW1lIHRvIG1ha2Uga2V5LCBhcyBpdCdzIHNsb3cKICAobGV0KiAoKGNhY2hlLWtleSAobGlz dCBkaXJuYW1lIGRlZmF1bHQtZGlyZWN0b3J5KSkKCSAoZmFzcyAoYXNzb2MgY2FjaGUta2V5IHZl cmlsb2ctZGlyLWNhY2hlLWxpc3QpKQoJIGV4cC1kaXJuYW1lIGRhdGEpCiAgICAoY29uZCAoZmFz cyAgOyBSZXR1cm4gZGF0YSBmcm9tIGNhY2hlIGhpdAoJICAgKG50aCAxIGZhc3MpKQoJICAodAoJ ICAgKHNldHEgZXhwLWRpcm5hbWUgKGV4cGFuZC1maWxlLW5hbWUgZGlybmFtZSkKCQkgZGF0YSAo YW5kIChmaWxlLWRpcmVjdG9yeS1wIGV4cC1kaXJuYW1lKQoJCQkgICAoZGlyZWN0b3J5LWZpbGVz IGV4cC1kaXJuYW1lIG5pbCBuaWwgbmlsKSkpCgkgICA7OyBOb3RlIHdlIGFsc28gZW5jYWNoZSBu aWwgZm9yIG5vbi1leGlzdGluZyBkaXJzLgoJICAgKHNldHEgdmVyaWxvZy1kaXItY2FjaGUtbGlz dCAoY29ucyAobGlzdCBjYWNoZS1rZXkgZGF0YSkKCQkJCQkgICAgICB2ZXJpbG9nLWRpci1jYWNo ZS1saXN0KSkKCSAgIGRhdGEpKSkpCjs7IE1pc3MtYW5kLWhpdCB0ZXN0Ogo7Oyh2ZXJpbG9nLXBy ZXNlcnZlLWRpci1jYWNoZSAocHJpbjEgKHZlcmlsb2ctZGlyLWZpbGVzICIuIikpCjs7IChwcmlu MSAodmVyaWxvZy1kaXItZmlsZXMgIi4iKSkgbmlsKQoKKGRlZnVuIHZlcmlsb2ctZGlyLWZpbGUt ZXhpc3RzLXAgKGZpbGVuYW1lKQogICJSZXR1cm4gdHJ1ZSBpZiBGSUxFTkFNRSBleGlzdHMuCkxp a2UgYGZpbGUtZXhpc3RzLXAnIGJ1dCByZXN1bHRzIGFyZSBjYWNoZWQgaWYgaW5zaWRlCmB2ZXJp bG9nLXByZXNlcnZlLWRpci1jYWNoZScuIgogIChsZXQqICgoZGlybmFtZSAoZmlsZS1uYW1lLWRp cmVjdG9yeSBmaWxlbmFtZSkpCgkgOzsgQ29ycmVjdCBmb3IgZmlsZS1uYW1lLW5vbmRpcmVjdG9y eSByZXR1cm5pbmcgc2FtZSBpZiBubyBzbGFzaC4KCSAoZGlybmFtZWQgKGlmIChvciAobm90IGRp cm5hbWUpIChlcXVhbCBkaXJuYW1lIGZpbGVuYW1lKSkKCQkgICAgICAgZGVmYXVsdC1kaXJlY3Rv cnkgZGlybmFtZSkpCgkgKGZsaXN0ICh2ZXJpbG9nLWRpci1maWxlcyBkaXJuYW1lZCkpKQogICAg KGFuZCBmbGlzdAoJIChtZW1iZXIgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZW5hbWUpIGZs aXN0KQoJIHQpKSkKOzsodmVyaWxvZy1kaXItZmlsZS1leGlzdHMtcCAidmVyaWxvZy1tb2RlLmVs IikKOzsodmVyaWxvZy1kaXItZmlsZS1leGlzdHMtcCAiLi4vdmVyaWxvZy1tb2RlL3Zlcmlsb2ct bW9kZS5lbCIpCgoMCjs7OyBNb2R1bGUgbmFtZSBsb29rdXA6Cjs7CgooZGVmdW4gdmVyaWxvZy1t b2R1bGUtaW5zaWRlLWZpbGVuYW1lLXAgKG1vZHVsZSBmaWxlbmFtZSkKICAiUmV0dXJuIG1vZGkg aWYgTU9EVUxFIGlzIHNwZWNpZmllZCBpbnNpZGUgRklMRU5BTUUsIGVsc2UgbmlsLgpBbGxvd3Mg dmVyc2lvbiBjb250cm9sIHRvIGNoZWNrIG91dCB0aGUgZmlsZSBpZiBuZWVkIGJlLiIKICAoYW5k IChvciAoZmlsZS1leGlzdHMtcCBmaWxlbmFtZSkKCSAgIChhbmQgKGZib3VuZHAgJ3ZjLWJhY2tl bmQpCgkJKHZjLWJhY2tlbmQgZmlsZW5hbWUpKSkKICAgICAgIChsZXQgKG1vZGkgdHlwZSkKCSAo d2l0aC1jdXJyZW50LWJ1ZmZlciAoZmluZC1maWxlLW5vc2VsZWN0IGZpbGVuYW1lKQoJICAgKHNh dmUtZXhjdXJzaW9uCgkgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCgkgICAgICh3aGlsZSAo YW5kCgkJICAgICA7OyBJdCBtYXkgYmUgdGVtcHRpbmcgdG8gbG9vayBmb3IgdmVyaWxvZy1kZWZ1 bi1yZSwKCQkgICAgIDs7IGRvbid0LCBpdCBzbG93cyB0aGluZ3MgZG93biBhIGxvdCEKICAgICAg ICAgICAgICAgICAgICAodmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZC1xdWljayAiXFw8XFwoY29u bmVjdG1vZHVsZVxcfG1vZHVsZVxcfGludGVyZmFjZVxcfHByb2dyYW1cXClcXD4iIG5pbCB0KQoJ CSAgICAgKHNldHEgdHlwZSAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMCkpCgkJICAgICAo dmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZC1xdWljayAiWyg7XSIgbmlsIHQpKQoJICAgICAgIChp ZiAoZXF1YWwgbW9kdWxlICh2ZXJpbG9nLXJlYWQtbW9kdWxlLW5hbWUpKQoJCSAgIChzZXRxIG1v ZGkgKHZlcmlsb2ctbW9kaS1uZXcgbW9kdWxlIGZpbGVuYW1lIChwb2ludCkgdHlwZSkpKSkKCSAg ICAgbW9kaSkpKSkpCgooZGVmdW4gdmVyaWxvZy1pcy1udW1iZXIgKHN5bWJvbCkKICAiUmV0dXJu IHRydWUgaWYgU1lNQk9MIGlzIG51bWJlci1saWtlLiIKICAob3IgKHN0cmluZy1tYXRjaCAiXlsw LTkgXHQ6XSskIiBzeW1ib2wpCiAgICAgIChzdHJpbmctbWF0Y2ggIl5bLS0tXSpbMC05XSskIiBz eW1ib2wpCiAgICAgIChzdHJpbmctbWF0Y2ggIl5bMC05IFx0XSsncz9baGR4Ym9dWzAtOWEtZkEt Rl94ej8gXHRdKiQiIHN5bWJvbCkpKQoKKGRlZnVuIHZlcmlsb2ctc3ltYm9sLWRldGljayAoc3lt Ym9sIHdpbmctaXQpCiAgIlJldHVybiBhbiBleHBhbmRlZCBTWU1CT0wgbmFtZSB3aXRob3V0IGFu eSBkZWZpbmVzLgpJZiB0aGUgdmFyaWFibGUgdmgte3N5bWJvbH0gaXMgZGVmaW5lZCwgcmV0dXJu IHRoYXQgdmFsdWUuCklmIHVuZGVmaW5lZCwgYW5kIFdJTkctSVQsIHJldHVybiBqdXN0IFNZTUJP TCB3aXRob3V0IHRoZSB0aWNrLCBlbHNlIG5pbC4iCiAgKHdoaWxlIChhbmQgc3ltYm9sIChzdHJp bmctbWF0Y2ggIl5gIiBzeW1ib2wpKQogICAgKHNldHEgc3ltYm9sIChzdWJzdHJpbmcgc3ltYm9s IDEpKQogICAgKHNldHEgc3ltYm9sCgkgIDs7IE5hbWVzcGFjZSBpbnRlbnRpb25hbGx5IHNob3J0 IGZvciBBVVRPcyBhbmQgY29tcGF0aWJpbGl0eQoJICAoaWYgKGJvdW5kcCAoaW50ZXJuIChjb25j YXQgInZoLSIgc3ltYm9sKSkpCgkgICAgICA7OyBFbWFjcyBoYXMgYSBidWcgd2hlcmUgYm91bmRw IG9uIGEgYnVmZmVyLWxvY2FsCgkgICAgICA7OyB2YXJpYWJsZSBpbiBvbmx5IG9uZSBidWZmZXIg cmV0dXJucyB0IGluIGFub3RoZXIuCgkgICAgICA7OyBUaGlzIGNhbiBjb25mdXNlLCBzbyBjaGVj ayBmb3IgbmlsLgoJICAgICAgOzsgTmFtZXNwYWNlIGludGVudGlvbmFsbHkgc2hvcnQgZm9yIEFV VE9zIGFuZCBjb21wYXRpYmlsaXR5CgkgICAgICAobGV0ICgodmFsIChldmFsIChpbnRlcm4gKGNv bmNhdCAidmgtIiBzeW1ib2wpKSkpKQoJCShpZiAoZXEgdmFsIG5pbCkKCQkgICAgKGlmIHdpbmct aXQgc3ltYm9sIG5pbCkKCQkgIHZhbCkpCgkgICAgKGlmIHdpbmctaXQgc3ltYm9sIG5pbCkpKSkK ICBzeW1ib2wpCjs7KHZlcmlsb2ctc3ltYm9sLWRldGljayAiYG1vZCIgbmlsKQoKKGRlZnVuIHZl cmlsb2ctc3ltYm9sLWRldGljay1kZW51bWJlciAoc3ltYm9sKQogICJSZXR1cm4gU1lNQk9MIHdp dGggZGVmaW5lcyBjb252ZXJ0ZWQgYW5kIGFueSBudW1iZXJzIGRyb3BwZWQgdG8gbmlsLiIKICAo d2hlbiAoc3RyaW5nLW1hdGNoICJeYCIgc3ltYm9sKQogICAgOzsgVGhpcyBvbmx5IHdpbGwgd29y ayBpZiB0aGUgZGVmaW5lIGlzIGEgc2ltcGxlIHNpZ25hbCwgbm90CiAgICA7OyBzb21ldGhpbmcg bGlrZSBhW2JdLiAgU29ycnksIGl0IHNob3VsZCBiZSBzdWJzdGl0dXRlZCBpbnRvIHRoZSBwYXJz ZXIKICAgIChzZXRxIHN5bWJvbAoJICAodmVyaWxvZy1zdHJpbmctcmVwbGFjZS1tYXRjaGVzCgkg ICAiXFxbW14wLTk6IFx0XStcXF0iICIiIG5pbCBuaWwKCSAgIChvciAodmVyaWxvZy1zeW1ib2wt ZGV0aWNrIHN5bWJvbCBuaWwpCgkgICAgICAgKGlmIHZlcmlsb2ctYXV0by1zZW5zZS1kZWZpbmVz LWNvbnN0YW50CgkJICAgIjAiCgkJIHN5bWJvbCkpKSkpCiAgKGlmICh2ZXJpbG9nLWlzLW51bWJl ciBzeW1ib2wpCiAgICAgIG5pbAogICAgc3ltYm9sKSkKCihkZWZ1biB2ZXJpbG9nLXN5bWJvbC1k ZXRpY2stdGV4dCAodGV4dCkKICAiUmV0dXJuIFRFWFQgd2l0aG91dCBhbnkga25vd24gZGVmaW5l cy4KSWYgdGhlIHZhcmlhYmxlIHZoLXtzeW1ib2x9IGlzIGRlZmluZWQsIHN1YnN0aXR1dGUgdGhh dCB2YWx1ZS4KVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIEFVVE9fVEVNUExB VEUgTGlzcCBleHByZXNzaW9ucy4iCiAgKGxldCAoKG9rIHQpIHN5bWJvbCB2YWwpCiAgICAod2hp bGUgKGFuZCBvayAoc3RyaW5nLW1hdGNoICJgXFwoW2EtekEtWjAtOV9dK1xcKSIgdGV4dCkpCiAg ICAgIChzZXRxIHN5bWJvbCAobWF0Y2gtc3RyaW5nIDEgdGV4dCkpCiAgICAgIDs7KG1lc3NhZ2Ug c3ltYm9sKQogICAgICAoY29uZCAoKGFuZAoJICAgICAgOzsgTmFtZXNwYWNlIGludGVudGlvbmFs bHkgc2hvcnQgZm9yIEFVVE9zIGFuZCBjb21wYXRpYmlsaXR5CgkgICAgICAoYm91bmRwIChpbnRl cm4gKGNvbmNhdCAidmgtIiBzeW1ib2wpKSkKCSAgICAgIDs7IEVtYWNzIGhhcyBhIGJ1ZyB3aGVy ZSBib3VuZHAgb24gYSBidWZmZXItbG9jYWwKCSAgICAgIDs7IHZhcmlhYmxlIGluIG9ubHkgb25l IGJ1ZmZlciByZXR1cm5zIHQgaW4gYW5vdGhlci4KCSAgICAgIDs7IFRoaXMgY2FuIGNvbmZ1c2Us IHNvIGNoZWNrIGZvciBuaWwuCgkgICAgICA7OyBOYW1lc3BhY2UgaW50ZW50aW9uYWxseSBzaG9y dCBmb3IgQVVUT3MgYW5kIGNvbXBhdGliaWxpdHkKCSAgICAgIChzZXRxIHZhbCAoZXZhbCAoaW50 ZXJuIChjb25jYXQgInZoLSIgc3ltYm9sKSkpKSkKCSAgICAgKHNldHEgdGV4dCAocmVwbGFjZS1t YXRjaCB2YWwgbmlsIG5pbCB0ZXh0KSkpCgkgICAgKHQgKHNldHEgb2sgbmlsKSkpKSkKICB0ZXh0 KQo7Oyhwcm9nbiAoc2V0cSB2aC1tb2QgImBmb28iIHZoLWZvbyAiYmFyIikgKHZlcmlsb2ctc3lt Ym9sLWRldGljay10ZXh0ICJiYXIgYG1vZCBgdW5kZWZlZCIpKQoKKGRlZnVuIHZlcmlsb2ctZXhw YW5kLWRpcm5hbWVzICgmb3B0aW9uYWwgZGlybmFtZXMpCiAgIlJldHVybiBhIGxpc3Qgb2YgZXhp c3RpbmcgZGlyZWN0b3JpZXMgZ2l2ZW4gYSBsaXN0IG9mIHdpbGRjYXJkZWQgRElSTkFNRVMuCk9y LCBqdXN0IHRoZSBleGlzdGluZyBkaXJuYW1lcyB0aGVtc2VsdmVzIGlmIHRoZXJlIGFyZSBubyB3 aWxkY2FyZHMuIgogIDs7IE5vdGUgdGhpcyBmdW5jdGlvbiBpcyBwZXJmb3JtYW5jZSBjcml0aWNh bC4KICA7OyBEbyBub3QgY2FsbCBhbnl0aGluZyB0aGF0IHJlcXVpcmVzIGRpc2sgYWNjZXNzIHRo YXQgY2Fubm90IGJlIGNhY2hlZC4KICAoaW50ZXJhY3RpdmUpCiAgKHVubGVzcyBkaXJuYW1lcwog ICAgKGVycm9yICJgdmVyaWxvZy1saWJyYXJ5LWRpcmVjdG9yaWVzJyBzaG91bGQgaW5jbHVkZSBh dCBsZWFzdCBgLiciKSkKICAoc2F2ZS1tYXRjaC1kYXRhCiAgICAoc2V0cSBkaXJuYW1lcyAocmV2 ZXJzZSBkaXJuYW1lcykpCTsgbm90IG5yZXZlcnNlCiAgICAobGV0ICgoZGlybGlzdCBuaWwpCiAg ICAgICAgICBwYXR0ZXJuIGRpcmZpbGUgZGlyZmlsZXMgZGlybmFtZSByb290IGZpbGVuYW1lIHJl c3QgYmFzZWZpbGUpCiAgICAgIChzZXRxIGRpcm5hbWVzIChtYXBjYXIgJ3N1YnN0aXR1dGUtaW4t ZmlsZS1uYW1lIGRpcm5hbWVzKSkKICAgICAgKHdoaWxlIGRpcm5hbWVzCiAgICAgICAgKHNldHEg ZGlybmFtZSAoY2FyIGRpcm5hbWVzKQogICAgICAgICAgICAgIGRpcm5hbWVzIChjZHIgZGlybmFt ZXMpKQogICAgICAgIChjb25kICgoc3RyaW5nLW1hdGNoIChjb25jYXQgIl5cXChcXHxbXio/XSpb L1xcXVxcKSIgIDsgcm9vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxc KFteL1xcXSpbKj9dW14vXFxdKlxcKSIgICAgIDsgZmlsZW5hbWUgd2l0aCAqPwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcKC4qXFwpIikgICAgICAgICAgICAgICAgICAg IDsgcmVzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcm5hbWUpCiAgICAgICAgICAg ICAgIChzZXRxIHJvb3QgKG1hdGNoLXN0cmluZyAxIGRpcm5hbWUpCiAgICAgICAgICAgICAgICAg ICAgIGZpbGVuYW1lIChtYXRjaC1zdHJpbmcgMiBkaXJuYW1lKQogICAgICAgICAgICAgICAgICAg ICByZXN0IChtYXRjaC1zdHJpbmcgMyBkaXJuYW1lKQogICAgICAgICAgICAgICAgICAgICBwYXR0 ZXJuIGZpbGVuYW1lKQogICAgICAgICAgICAgICA7OyBub3cgcmVwbGFjZSB0aG9zZSAqIGFuZCA/ IHdpdGggLisgYW5kIC4KICAgICAgICAgICAgICAgOzsgdXNlIF4gYW5kIC8+IHRvIGdldCBvbmx5 IHdob2xlIGZpbGUgbmFtZXMKICAgICAgICAgICAgICAgKHNldHEgcGF0dGVybiAodmVyaWxvZy1z dHJpbmctcmVwbGFjZS1tYXRjaGVzICJbKl0iICIuKyIgbmlsIG5pbCBwYXR0ZXJuKQogICAgICAg ICAgICAgICAgICAgICBwYXR0ZXJuICh2ZXJpbG9nLXN0cmluZy1yZXBsYWNlLW1hdGNoZXMgIls/ XSIgIi4iIG5pbCBuaWwgcGF0dGVybikKICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiAoY29u Y2F0ICJeIiBwYXR0ZXJuICIkIikKICAgICAgICAgICAgICAgICAgICAgZGlyZmlsZXMgKHZlcmls b2ctZGlyLWZpbGVzIHJvb3QpKQogICAgICAgICAgICAgICAod2hpbGUgZGlyZmlsZXMKICAgICAg ICAgICAgICAgICAoc2V0cSBiYXNlZmlsZSAoY2FyIGRpcmZpbGVzKQogICAgICAgICAgICAgICAg ICAgICAgIGRpcmZpbGUgKGV4cGFuZC1maWxlLW5hbWUgKGNvbmNhdCByb290IGJhc2VmaWxlIHJl c3QpKQogICAgICAgICAgICAgICAgICAgICAgIGRpcmZpbGVzIChjZHIgZGlyZmlsZXMpKQogICAg ICAgICAgICAgICAgICh3aGVuIChhbmQgKHN0cmluZy1tYXRjaCBwYXR0ZXJuIGJhc2VmaWxlKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgRG9uJ3QgYWxsb3cgYWJjLyovcnRsIHRvIG1h dGNoIGFiYy9ydGwgdmlhIC4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChlcXVh bCBiYXNlZmlsZSAiLiIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXF1YWwg YmFzZWZpbGUgIi4uIikpKQogICAgICAgICAgICAgICAgICAgOzsgTWlnaHQgaGF2ZSBtb3JlIHdp bGRjYXJkcywgc28gcHJvY2VzcyBhZ2FpbgogICAgICAgICAgICAgICAgICAgKHNldHEgZGlybmFt ZXMgKGNvbnMgZGlyZmlsZSBkaXJuYW1lcykpKSkpCiAgICAgICAgICAgICAgOzsgRGVmYXVsdHMK ICAgICAgICAgICAgICAodAogICAgICAgICAgICAgICAoaWYgKGZpbGUtZGlyZWN0b3J5LXAgZGly bmFtZSkKICAgICAgICAgICAgICAgICAgIChzZXRxIGRpcmxpc3QgKGNvbnMgZGlybmFtZSBkaXJs aXN0KSkpKSkpCiAgICAgIGRpcmxpc3QpKSkKOzsodmVyaWxvZy1leHBhbmQtZGlybmFtZXMgKGxp c3QgIi4iICIuLiIgIm5vbmV4aXN0IiAiLi4vKiIgIi9ob21lL3dzbnlkZXIvKi92IiAiLi4vKi8q IikpCgooZGVmdW4gdmVyaWxvZy1saWJyYXJ5LWZpbGVuYW1lcyAoZmlsZW5hbWUgJm9wdGlvbmFs IGN1cnJlbnQgY2hlY2stZXh0KQogICJSZXR1cm4gYSBzZWFyY2ggcGF0aCB0byBmaW5kIHRoZSBn aXZlbiBGSUxFTkFNRSBvciBtb2R1bGUgbmFtZS4KVXNlcyB0aGUgb3B0aW9uYWwgQ1VSUkVOVCBm aWxlbmFtZSBvciB2YXJpYWJsZSBgYnVmZmVyLWZpbGUtbmFtZScsIHBsdXMKYHZlcmlsb2ctbGli cmFyeS1kaXJlY3RvcmllcycgYW5kIGB2ZXJpbG9nLWxpYnJhcnktZXh0ZW5zaW9ucycKdmFyaWFi bGVzIHRvIGJ1aWxkIHRoZSBwYXRoLiAgV2l0aCBvcHRpb25hbCBDSEVDSy1FWFQgYWxzbyBjaGVj awpgdmVyaWxvZy1saWJyYXJ5LWV4dGVuc2lvbnMnLiIKICAodW5sZXNzIGN1cnJlbnQgKHNldHEg Y3VycmVudCAoYnVmZmVyLWZpbGUtbmFtZSkpKQogICh1bmxlc3MgdmVyaWxvZy1kaXItY2FjaGUt cHJlc2VydmluZwogICAgKHNldHEgdmVyaWxvZy1kaXItY2FjaGUtbGliLWZpbGVuYW1lcyBuaWwp KQogIChsZXQqICgoY2FjaGUta2V5IChsaXN0IGZpbGVuYW1lIGN1cnJlbnQgY2hlY2stZXh0KSkK CSAoZmFzcyAoYXNzb2MgY2FjaGUta2V5IHZlcmlsb2ctZGlyLWNhY2hlLWxpYi1maWxlbmFtZXMp KQoJIGNoa2RpcnMgY2hrZGlyIGNoa2V4dHMgZm4gb3V0bGlzdCkKICAgIChjb25kIChmYXNzICA7 IFJldHVybiBkYXRhIGZyb20gY2FjaGUgaGl0CgkgICAobnRoIDEgZmFzcykpCgkgICh0CgkgICA7 OyBOb3RlIHRoaXMgZXhwYW5kIGNhbid0IGJlIGVhc2lseSBjYWNoZWQsIGFzIHdlIG5lZWQgdG8K CSAgIDs7IHBpY2sgdXAgYnVmZmVyLWxvY2FsIHZhcmlhYmxlcyBmb3IgbmV3bHkgcmVhZCBzdWIt bW9kdWxlIGZpbGVzCgkgICAoc2V0cSBjaGtkaXJzICh2ZXJpbG9nLWV4cGFuZC1kaXJuYW1lcyB2 ZXJpbG9nLWxpYnJhcnktZGlyZWN0b3JpZXMpKQoJICAgKHdoaWxlIGNoa2RpcnMKCSAgICAgKHNl dHEgY2hrZGlyIChleHBhbmQtZmlsZS1uYW1lIChjYXIgY2hrZGlycykKCQkJCQkgICAgKGZpbGUt bmFtZS1kaXJlY3RvcnkgY3VycmVudCkpCgkJICAgY2hrZXh0cyAoaWYgY2hlY2stZXh0IHZlcmls b2ctbGlicmFyeS1leHRlbnNpb25zICcoIiIpKSkKCSAgICAgKHdoaWxlIGNoa2V4dHMKCSAgICAg ICAoc2V0cSBmbiAoZXhwYW5kLWZpbGUtbmFtZSAoY29uY2F0IGZpbGVuYW1lIChjYXIgY2hrZXh0 cykpCgkJCQkJICBjaGtkaXIpKQoJICAgICAgIDs7KG1lc3NhZ2UgIkNoZWNrIGZvciAlcyIgZm4p CgkgICAgICAgKGlmICh2ZXJpbG9nLWRpci1maWxlLWV4aXN0cy1wIGZuKQoJCSAgIChzZXRxIG91 dGxpc3QgKGNvbnMgKGV4cGFuZC1maWxlLW5hbWUKCQkJCQlmbiAoZmlsZS1uYW1lLWRpcmVjdG9y eSBjdXJyZW50KSkKCQkJCSAgICAgICBvdXRsaXN0KSkpCgkgICAgICAgKHNldHEgY2hrZXh0cyAo Y2RyIGNoa2V4dHMpKSkKCSAgICAgKHNldHEgY2hrZGlycyAoY2RyIGNoa2RpcnMpKSkKCSAgIChz ZXRxIG91dGxpc3QgKG5yZXZlcnNlIG91dGxpc3QpKQoJICAgKHNldHEgdmVyaWxvZy1kaXItY2Fj aGUtbGliLWZpbGVuYW1lcwoJCSAoY29ucyAobGlzdCBjYWNoZS1rZXkgb3V0bGlzdCkKCQkgICAg ICAgdmVyaWxvZy1kaXItY2FjaGUtbGliLWZpbGVuYW1lcykpCgkgICBvdXRsaXN0KSkpKQoKKGRl ZnVuIHZlcmlsb2ctbW9kdWxlLWZpbGVuYW1lcyAobW9kdWxlIGN1cnJlbnQpCiAgIlJldHVybiBh IHNlYXJjaCBwYXRoIHRvIGZpbmQgdGhlIGdpdmVuIE1PRFVMRSBuYW1lLgpVc2VzIHRoZSBDVVJS RU5UIGZpbGVuYW1lLCBgdmVyaWxvZy1saWJyYXJ5LWV4dGVuc2lvbnMnLApgdmVyaWxvZy1saWJy YXJ5LWRpcmVjdG9yaWVzJyBhbmQgYHZlcmlsb2ctbGlicmFyeS1maWxlcycKdmFyaWFibGVzIHRv IGJ1aWxkIHRoZSBwYXRoLiIKICA7OyBSZXR1cm4gc2VhcmNoIGxvY2F0aW9ucyBmb3IgaXQKICAo YXBwZW5kIChsaXN0IGN1cnJlbnQpICAgICAgICAgICAgICAgIDsgZmlyc3QsIGN1cnJlbnQgYnVm ZmVyCiAgICAgICAgICAodmVyaWxvZy1saWJyYXJ5LWZpbGVuYW1lcyBtb2R1bGUgY3VycmVudCB0 KQogICAgICAgICAgOzsgRmluYWxseSBhbnkgbGlicmFyaWVzOyBmaXhlZCB1cCBpZiB1c2luZyBl LmcuIHRyYW1wCiAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKGZuYW1lKQogICAgICAgICAgICAg ICAgICAgIChpZiAoZmlsZS1uYW1lLWFic29sdXRlLXAgZm5hbWUpCiAgICAgICAgICAgICAgICAg ICAgICAgIChjb25jYXQgKGZpbGUtcmVtb3RlLXAgY3VycmVudCkgZm5hbWUpCiAgICAgICAgICAg ICAgICAgICAgICBmbmFtZSkpCiAgICAgICAgICAgICAgICAgIHZlcmlsb2ctbGlicmFyeS1maWxl cykpKQoKOzsKOzsgTW9kdWxlIEluZm9ybWF0aW9uCjs7Cjs7IE1hbnkgb2YgdGhlc2UgZnVuY3Rp b25zIHdvcmsgb24gIm1vZGkiIGEgbW9kdWxlIGluZm9ybWF0aW9uIHN0cnVjdHVyZQo7OyBBIG1v ZGkgaXM6ICBbbW9kdWxlLW5hbWUtc3RyaW5nIGZpbGUtbmFtZSBiZWdpbi1wb2ludF0KCihkZWZ2 YXIgdmVyaWxvZy1jYWNoZS1lbmFibGVkIHQKICAiTm9uLW5pbCBlbmFibGVzIGNhY2hpbmcgb2Yg c2lnbmFscywgZXRjLiAgU2V0IHRvIG5pbCBmb3IgZGVidWdnaW5nIHRvIG1ha2UgdGhpbmdzIFNM T1chIikKCihkZWZ2YXIgdmVyaWxvZy1tb2RpLWNhY2hlLWxpc3QgbmlsCiAgIkNhY2hlIG9mICgo TW9kdWxlIEZ1bmN0aW9uKSBCdWYtVGljayBCdWYtTW9kdGltZSBGdW5jLVJldHVybnMpLi4uCkZv ciBzcGVlZGluZyB1cCB2ZXJpbG9nLW1vZGktZ2V0LSogY29tbWFuZHMuCkJ1ZmZlci1sb2NhbC4i KQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ3Zlcmlsb2ctbW9kaS1jYWNoZS1saXN0KQoK KGRlZnZhciB2ZXJpbG9nLW1vZGktY2FjaGUtcHJlc2VydmUtdGljayBuaWwKICAiTW9kaWZpY2F0 aW9uIHRpY2sgYWZ0ZXIgd2hpY2ggdGhlIGNhY2hlIGlzIHN0aWxsIGNvbnNpZGVyZWQgdmFsaWQu ClVzZSBgdmVyaWxvZy1wcmVzZXJ2ZS1tb2RpLWNhY2hlJyB0byBzZXQgaXQuIikKKGRlZnZhciB2 ZXJpbG9nLW1vZGktY2FjaGUtcHJlc2VydmUtYnVmZmVyIG5pbAogICJNb2RpZmljYXRpb24gdGlj ayBhZnRlciB3aGljaCB0aGUgY2FjaGUgaXMgc3RpbGwgY29uc2lkZXJlZCB2YWxpZC4KVXNlIGB2 ZXJpbG9nLXByZXNlcnZlLW1vZGktY2FjaGUnIHRvIHNldCBpdC4iKQooZGVmdmFyIHZlcmlsb2ct bW9kaS1jYWNoZS1jdXJyZW50LWVuYWJsZSBuaWwKICAiTm9uLW5pbCBtZWFucyBhbGxvdyBjYWNo aW5nIGB2ZXJpbG9nLW1vZGktY3VycmVudCcsIHNldCBieSBsZXQoKS4iKQooZGVmdmFyIHZlcmls b2ctbW9kaS1jYWNoZS1jdXJyZW50IG5pbAogICJDdXJyZW50bHkgYWN0aXZlIGB2ZXJpbG9nLW1v ZGktY3VycmVudCcsIGlmIGFueSwgc2V0IGJ5IGxldCgpLiIpCihkZWZ2YXIgdmVyaWxvZy1tb2Rp LWNhY2hlLWN1cnJlbnQtbWF4IG5pbAogICJDdXJyZW50IGVuZG1vZHVsZSBwb2ludCBmb3IgYHZl cmlsb2ctbW9kaS1jYWNoZS1jdXJyZW50JywgaWYgYW55LiIpCgooZGVmdW4gdmVyaWxvZy1tb2Rp LWN1cnJlbnQgKCkKICAiUmV0dXJuIHRoZSBtb2RpIHN0cnVjdHVyZSBmb3IgdGhlIG1vZHVsZSBj dXJyZW50bHkgYXQgcG9pbnQsIHBvc3NpYmx5IGNhY2hlZC4iCiAgKGNvbmQgKChhbmQgdmVyaWxv Zy1tb2RpLWNhY2hlLWN1cnJlbnQKCSAgICAgICg+PSAocG9pbnQpICh2ZXJpbG9nLW1vZGktZ2V0 LXBvaW50IHZlcmlsb2ctbW9kaS1jYWNoZS1jdXJyZW50KSkKCSAgICAgICg8PSAocG9pbnQpIHZl cmlsb2ctbW9kaS1jYWNoZS1jdXJyZW50LW1heCkpCgkgOzsgU2xvdyBhc3NlcnRpb24sIGZvciBk ZWJ1Z2dpbmcgdGhlIGNhY2hlOgoJIDs7KG9yIChlcXVhbCB2ZXJpbG9nLW1vZGktY2FjaGUtY3Vy cmVudCAodmVyaWxvZy1tb2RpLWN1cnJlbnQtZ2V0KSkgKGRlYnVnKSkKCSB2ZXJpbG9nLW1vZGkt Y2FjaGUtY3VycmVudCkKCSh2ZXJpbG9nLW1vZGktY2FjaGUtY3VycmVudC1lbmFibGUKCSAoc2V0 cSB2ZXJpbG9nLW1vZGktY2FjaGUtY3VycmVudCAodmVyaWxvZy1tb2RpLWN1cnJlbnQtZ2V0KQoJ ICAgICAgIHZlcmlsb2ctbW9kaS1jYWNoZS1jdXJyZW50LW1heAoJICAgICAgIDs7IFRoZSBjYWNo ZSBleHBpcmVzIHdoZW4gd2UgcGFzcyAiZW5kbW9kdWxlIiBhcyB0aGVuIHRoZQoJICAgICAgIDs7 IGN1cnJlbnQgbW9kaSBtYXkgY2hhbmdlIHRvIHRoZSBuZXh0IG1vZHVsZQoJICAgICAgIDs7IFRo aXMgcmVsaWVzIG9uIHRoZSBBVVRPcyBnZW5lcmFsbHkgaW5zZXJ0aW5nLCBub3QgZGVsZXRpbmcg dGV4dAoJICAgICAgIChzYXZlLWV4Y3Vyc2lvbgoJCSAodmVyaWxvZy1yZS1zZWFyY2gtZm9yd2Fy ZC1xdWljayB2ZXJpbG9nLWVuZC1kZWZ1bi1yZSBuaWwgbmlsKSkpCgkgdmVyaWxvZy1tb2RpLWNh Y2hlLWN1cnJlbnQpCgkodAoJICh2ZXJpbG9nLW1vZGktY3VycmVudC1nZXQpKSkpCgooZGVmdW4g dmVyaWxvZy1tb2RpLWN1cnJlbnQtZ2V0ICgpCiAgIlJldHVybiB0aGUgbW9kaSBzdHJ1Y3R1cmUg Zm9yIHRoZSBtb2R1bGUgY3VycmVudGx5IGF0IHBvaW50LiIKICAobGV0KiAobmFtZSB0eXBlIHB0 KQogICAgOzsgcmVhZCBjdXJyZW50IG1vZHVsZSdzIG5hbWUKICAgIChzYXZlLWV4Y3Vyc2lvbgog ICAgICAodmVyaWxvZy1yZS1zZWFyY2gtYmFja3dhcmQtcXVpY2sgdmVyaWxvZy1kZWZ1bi1yZSBu aWwgbmlsKQogICAgICAoc2V0cSB0eXBlIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAwKSkK ICAgICAgKHZlcmlsb2ctcmUtc2VhcmNoLWZvcndhcmQtcXVpY2sgIigiIG5pbCBuaWwpCiAgICAg IChzZXRxIG5hbWUgKHZlcmlsb2ctcmVhZC1tb2R1bGUtbmFtZSkpCiAgICAgIChzZXRxIHB0IChw b2ludCkpKQogICAgOzsgcmV0dXJuIG1vZGkgLSBub3RlIHRoaXMgdmVjdG9yIGJ1aWx0IHR3byBw bGFjZXMKICAgICh2ZXJpbG9nLW1vZGktbmV3IG5hbWUgKG9yIChidWZmZXItZmlsZS1uYW1lKSAo Y3VycmVudC1idWZmZXIpKSBwdCB0eXBlKSkpCgooZGVmdmFyIHZlcmlsb2ctbW9kaS1sb29rdXAt Y2FjaGUgbmlsICJIYXNoIG9mIChtb2R1bGVuYW1lIG1vZGkpLiIpCihtYWtlLXZhcmlhYmxlLWJ1 ZmZlci1sb2NhbCAndmVyaWxvZy1tb2RpLWxvb2t1cC1jYWNoZSkKKGRlZnZhciB2ZXJpbG9nLW1v ZGktbG9va3VwLWxhc3QtY3VycmVudCBuaWwgIkNhY2hlIG9mIGBjdXJyZW50LWJ1ZmZlcicgYXQg bGFzdCBsb29rdXAuIikKKGRlZnZhciB2ZXJpbG9nLW1vZGktbG9va3VwLWxhc3QtdGljayBuaWwg IkNhY2hlIG9mIGBidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaycgYXQgbGFzdCBsb29rdXAuIikK CihkZWZ1biB2ZXJpbG9nLW1vZGktbG9va3VwIChtb2R1bGUgYWxsb3ctY2FjaGUgJm9wdGlvbmFs IGlnbm9yZS1lcnJvcikKICAiRmluZCB0aGUgZmlsZSBhbmQgcG9pbnQgYXQgd2hpY2ggTU9EVUxF IGlzIGRlZmluZWQuCklmIEFMTE9XLUNBQ0hFIGlzIHNldCwgY2hlY2sgYW5kIHJlbWVtYmVyIGNh Y2hlIG9mIHByZXZpb3VzIGxvb2t1cHMuClJldHVybiBtb2RpIGlmIHN1Y2Nlc3NmdWwsIGVsc2Ug cHJpbnQgbWVzc2FnZSB1bmxlc3MgSUdOT1JFLUVSUk9SIGlzIHRydWUuIgogIChsZXQqICgoY3Vy cmVudCAob3IgKGJ1ZmZlci1maWxlLW5hbWUpIChjdXJyZW50LWJ1ZmZlcikpKQoJIG1vZGkpCiAg ICA7OyBDaGVjayBjYWNoZQogICAgOzsobWVzc2FnZSAidmVyaWxvZy1tb2RpLWxvb2t1cDogJXMi IG1vZHVsZSkKICAgIChjb25kICgoYW5kIHZlcmlsb2ctbW9kaS1sb29rdXAtY2FjaGUKCQl2ZXJp bG9nLWNhY2hlLWVuYWJsZWQKCQlhbGxvdy1jYWNoZQoJCShzZXRxIG1vZGkgKGdldGhhc2ggbW9k dWxlIHZlcmlsb2ctbW9kaS1sb29rdXAtY2FjaGUpKQoJCShlcXVhbCB2ZXJpbG9nLW1vZGktbG9v a3VwLWxhc3QtY3VycmVudCBjdXJyZW50KQoJCTs7IElmIGhpdCBpcyBpbiBjdXJyZW50IGJ1ZmZl ciwgdGhlbiB0aWNrIG11c3QgbWF0Y2gKCQkob3IgKGVxdWFsIHZlcmlsb2ctbW9kaS1sb29rdXAt bGFzdC10aWNrIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaykpCgkJICAgIChub3QgKGVxdWFs IGN1cnJlbnQgKHZlcmlsb2ctbW9kaS1maWxlLW9yLWJ1ZmZlciBtb2RpKSkpKSkKCSAgIDs7KG1l c3NhZ2UgInZlcmlsb2ctbW9kaS1sb29rdXA6IEhJVCAlUyIgbW9kaSkKCSAgIG1vZGkpCgkgIDs7 IE1pc3MKCSAgKHQgKGxldCogKChyZWFsbmFtZSAodmVyaWxvZy1zeW1ib2wtZGV0aWNrIG1vZHVs ZSB0KSkKCQkgICAgKG9yaWctZmlsZW5hbWVzICh2ZXJpbG9nLW1vZHVsZS1maWxlbmFtZXMgcmVh bG5hbWUgY3VycmVudCkpCgkJICAgIChmaWxlbmFtZXMgb3JpZy1maWxlbmFtZXMpCgkJICAgIG1p ZikKCSAgICAgICAod2hpbGUgKGFuZCBmaWxlbmFtZXMgKG5vdCBtaWYpKQoJCSAoaWYgKG5vdCAo c2V0cSBtaWYgKHZlcmlsb2ctbW9kdWxlLWluc2lkZS1maWxlbmFtZS1wIHJlYWxuYW1lIChjYXIg ZmlsZW5hbWVzKSkpKQoJCSAgICAgKHNldHEgZmlsZW5hbWVzIChjZHIgZmlsZW5hbWVzKSkpKQoJ ICAgICAgIDs7IG1pZiBoYXMgY29ycmVjdCBmb3JtIHRvIGJlY29tZSBsYXRlciBlbGVtZW50cyBv ZiBtb2RpCgkgICAgICAgKHNldHEgbW9kaSBtaWYpCgkgICAgICAgKG9yIG1pZiBpZ25vcmUtZXJy b3IKCQkgICAoZXJyb3IKCQkgICAgKGNvbmNhdAoJCSAgICAgIiVzOiBDYW4ndCBsb2NhdGUgYCVz JyBtb2R1bGUgZGVmaW5pdGlvbiVzIgoJCSAgICAgIlxuICAgIENoZWNrIHRoZSB2ZXJpbG9nLWxp YnJhcnktZGlyZWN0b3JpZXMgdmFyaWFibGUuIgoJCSAgICAgIlxuICAgIEkgbG9va2VkIGluIChp ZiBub3QgbGlzdGVkLCBkb2Vzbid0IGV4aXN0KTpcblx0JXMiKQoJCSAgICAodmVyaWxvZy1wb2lu dC10ZXh0KSBtb2R1bGUKCQkgICAgKGlmIChub3QgKGVxdWFsIG1vZHVsZSByZWFsbmFtZSkpCgkJ CShjb25jYXQgIiAoRXhwYW5kZWQgbWFjcm8gdG8gIiByZWFsbmFtZSAiKSIpCgkJICAgICAgIiIp CgkJICAgIChtYXBjb25jYXQgJ2NvbmNhdCBvcmlnLWZpbGVuYW1lcyAiXG5cdCIpKSkKCSAgICAg ICAod2hlbiAoZXZhbC13aGVuLWNvbXBpbGUgKGZib3VuZHAgJ21ha2UtaGFzaC10YWJsZSkpCgkJ ICh1bmxlc3MgdmVyaWxvZy1tb2RpLWxvb2t1cC1jYWNoZQoJCSAgIChzZXRxIHZlcmlsb2ctbW9k aS1sb29rdXAtY2FjaGUKCQkJIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxdWFsIDpyZWhhc2gt c2l6ZSA0LjApKSkKCQkgKHB1dGhhc2ggbW9kdWxlIG1vZGkgdmVyaWxvZy1tb2RpLWxvb2t1cC1j YWNoZSkpCgkgICAgICAgKHNldHEgdmVyaWxvZy1tb2RpLWxvb2t1cC1sYXN0LWN1cnJlbnQgY3Vy cmVudAoJCSAgICAgdmVyaWxvZy1tb2RpLWxvb2t1cC1sYXN0LXRpY2sgKGJ1ZmZlci1jaGFycy1t b2RpZmllZC10aWNrKSkpKSkKICAgIG1vZGkpKQoKKGRlZnVuIHZlcmlsb2ctbW9kaS1maWxlbmFt ZSAobW9kaSkKICAiRmlsZW5hbWUgb2YgTU9ESSwgb3IgbmFtZSBvZiBidWZmZXIgaWYgaXQncyBu ZXZlciBiZWVuIHNhdmVkLiIKICAoaWYgKGJ1ZmZlcnAgKHZlcmlsb2ctbW9kaS1maWxlLW9yLWJ1 ZmZlciBtb2RpKSkKICAgICAgKG9yIChidWZmZXItZmlsZS1uYW1lICh2ZXJpbG9nLW1vZGktZmls ZS1vci1idWZmZXIgbW9kaSkpCgkgIChidWZmZXItbmFtZSAodmVyaWxvZy1tb2RpLWZpbGUtb3It YnVmZmVyIG1vZGkpKSkKICAgICh2ZXJpbG9nLW1vZGktZmlsZS1vci1idWZmZXIgbW9kaSkpKQoK KGRlZnVuIHZlcmlsb2ctbW9kaS1nb3RvIChtb2RpKQogICJNb3ZlIHBvaW50L2J1ZmZlciB0byBz cGVjaWZpZWQgTU9ESS4iCiAgKG9yIG1vZGkgKGVycm9yICJQYXNzZWQgdW5mb3VuZCBtb2RpIHRv IGdvdG8sIGNoZWNrIGVhcmxpZXIiKSkKICAoc2V0LWJ1ZmZlciAoaWYgKGJ1ZmZlcnAgKHZlcmls b2ctbW9kaS1maWxlLW9yLWJ1ZmZlciBtb2RpKSkKCQkgICh2ZXJpbG9nLW1vZGktZmlsZS1vci1i dWZmZXIgbW9kaSkKCQkoZmluZC1maWxlLW5vc2VsZWN0ICh2ZXJpbG9nLW1vZGktZmlsZS1vci1i dWZmZXIgbW9kaSkpKSkKICAob3IgKGVxdWFsIG1ham9yLW1vZGUgJ3Zlcmlsb2ctbW9kZSkgIDsg UHV0IGludG8gVmVyaWxvZyBtb2RlIHRvIGdldCBzeW50YXgKICAgICAgKHZlcmlsb2ctbW9kZSkp CiAgKGdvdG8tY2hhciAodmVyaWxvZy1tb2RpLWdldC1wb2ludCBtb2RpKSkpCgooZGVmdW4gdmVy aWxvZy1nb3RvLWRlZnVuLWZpbGUgKG1vZHVsZSkKICAiTW92ZSBwb2ludCB0byB0aGUgZmlsZSBh dCB3aGljaCBhIGdpdmVuIE1PRFVMRSBpcyBkZWZpbmVkLiIKICAoaW50ZXJhY3RpdmUgInNHb3Rv IEZpbGUgZm9yIE1vZHVsZTogIikKICAobGV0KiAoKG1vZGkgKHZlcmlsb2ctbW9kaS1sb29rdXAg bW9kdWxlIG5pbCkpKQogICAgKHdoZW4gbW9kaQogICAgICAodmVyaWxvZy1tb2RpLWdvdG8gbW9k aSkKICAgICAgKHN3aXRjaC10by1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpKSkKCihkZWZ1biB2 ZXJpbG9nLW1vZGktY2FjaGUtcmVzdWx0cyAobW9kaSBmdW5jdGlvbikKICAiUnVuIG9uIE1PREkg dGhlIGdpdmVuIEZVTkNUSU9OLiAgTG9jYXRlIHRoZSBtb2R1bGUgaW4gYSBmaWxlLgpDYWNoZSB0 aGUgb3V0cHV0IG9mIGZ1bmN0aW9uIHNvIG5leHQgY2FsbCBtYXkgaGF2ZSBmYXN0ZXIgYWNjZXNz LiIKICAobGV0IChmYXNzKQogICAgKHNhdmUtZXhjdXJzaW9uICA7IENhY2hlIGlzIGJ1ZmZlci1s b2NhbCBzbyBjYW4ndCBhdm9pZCB0aGlzLgogICAgICAodmVyaWxvZy1tb2RpLWdvdG8gbW9kaSkK ICAgICAgKGlmIChhbmQgKHNldHEgZmFzcyAoYXNzb2MgKGxpc3QgbW9kaSBmdW5jdGlvbikKCQkJ CSB2ZXJpbG9nLW1vZGktY2FjaGUtbGlzdCkpCgkgICAgICAgOzsgRGVzdHJveSBjYWNoaW5nIHdo ZW4gaW5jb3JyZWN0OyBNb2RpZmllZCBvciBmaWxlIGNoYW5nZWQKCSAgICAgICAobm90IChhbmQg dmVyaWxvZy1jYWNoZS1lbmFibGVkCgkJCSAob3IgKGVxdWFsIChidWZmZXItY2hhcnMtbW9kaWZp ZWQtdGljaykgKG50aCAxIGZhc3MpKQoJCQkgICAgIChhbmQgdmVyaWxvZy1tb2RpLWNhY2hlLXBy ZXNlcnZlLXRpY2sKCQkJCSAgKDw9IHZlcmlsb2ctbW9kaS1jYWNoZS1wcmVzZXJ2ZS10aWNrICAo bnRoIDEgZmFzcykpCgkJCQkgIChlcXVhbCAgdmVyaWxvZy1tb2RpLWNhY2hlLXByZXNlcnZlLWJ1 ZmZlciAoY3VycmVudC1idWZmZXIpKSkpCgkJCSAoZXF1YWwgKHZpc2l0ZWQtZmlsZS1tb2R0aW1l KSAobnRoIDIgZmFzcykpKSkpCgkgIChzZXRxIHZlcmlsb2ctbW9kaS1jYWNoZS1saXN0IG5pbAoJ CWZhc3MgbmlsKSkKICAgICAgKGNvbmQgKGZhc3MKCSAgICAgOzsgUmV0dXJuIGRhdGEgZnJvbSBj YWNoZSBoaXQKCSAgICAgKG50aCAzIGZhc3MpKQoJICAgICh0CgkgICAgIDs7IFJlYWQgZnJvbSBm aWxlCgkgICAgIDs7IENsZWFyIHRoZW4gcmVzdG9yZSBhbnkgaGlnaGxpZ2h0aW5nIHRvIG1ha2Ug ZW1hY3MxOSBoYXBweQogICAgICAgICAgICAgKGxldCAoKGZ1bmMtcmV0dXJucwogICAgICAgICAg ICAgICAgICAgICh2ZXJpbG9nLXNhdmUtZm9udC1uby1jaGFuZ2UtZnVuY3Rpb25zCiAgICAgICAg ICAgICAgICAgICAgIChmdW5jYWxsIGZ1bmN0aW9uKSkpKQoJICAgICAgIDs7IENhY2hlIGZvciBu ZXh0IHRpbWUKCSAgICAgICAoc2V0cSB2ZXJpbG9nLW1vZGktY2FjaGUtbGlzdAoJCSAgICAgKGNv bnMgKGxpc3QgKGxpc3QgbW9kaSBmdW5jdGlvbikKCQkJCSAoYnVmZmVyLWNoYXJzLW1vZGlmaWVk LXRpY2spCgkJCQkgKHZpc2l0ZWQtZmlsZS1tb2R0aW1lKQoJCQkJIGZ1bmMtcmV0dXJucykKCQkJ ICAgdmVyaWxvZy1tb2RpLWNhY2hlLWxpc3QpKQoJICAgICAgIGZ1bmMtcmV0dXJucykpKSkpKQoK KGRlZnVuIHZlcmlsb2ctbW9kaS1jYWNoZS1hZGQgKG1vZGkgZnVuY3Rpb24gZWxlbWVudCBzaWct bGlzdCkKICAiQWRkIGZ1bmN0aW9uIHJldHVybiByZXN1bHRzIHRvIHRoZSBtb2R1bGUgY2FjaGUu ClVwZGF0ZSBNT0RJJ3MgY2FjaGUgZm9yIGdpdmVuIEZVTkNUSU9OIHNvIHRoYXQgdGhlIHJldHVy biBFTEVNRU5UIG9mIHRoYXQKZnVuY3Rpb24gbm93IGNvbnRhaW5zIHRoZSBhZGRpdGlvbmFsIFNJ Ry1MSVNUIHBhcmFtZXRlcnMuIgogIChsZXQgKGZhc3MpCiAgICAoc2F2ZS1leGN1cnNpb24KICAg ICAgKHZlcmlsb2ctbW9kaS1nb3RvIG1vZGkpCiAgICAgIChpZiAoc2V0cSBmYXNzIChhc3NvYyAo bGlzdCBtb2RpIGZ1bmN0aW9uKQoJCQkgICAgdmVyaWxvZy1tb2RpLWNhY2hlLWxpc3QpKQoJICAo bGV0ICgoZnVuYy1yZXR1cm5zIChudGggMyBmYXNzKSkpCgkgICAgKGFzZXQgZnVuYy1yZXR1cm5z IGVsZW1lbnQKCQkgIChhcHBlbmQgc2lnLWxpc3QgKGFyZWYgZnVuYy1yZXR1cm5zIGVsZW1lbnQp KSkpKSkpKQoKKGRlZm1hY3JvIHZlcmlsb2ctcHJlc2VydmUtbW9kaS1jYWNoZSAoJnJlc3QgYm9k eSkKICAiRXhlY3V0ZSB0aGUgQk9EWSBmb3JtcywgYWxsb3dpbmcgY2FjaGUgcHJlc2VydmF0aW9u IHdpdGhpbiBCT0RZLgpUaGlzIG1lYW5zIHRoYXQgY2hhbmdlcyB0byB0aGUgYnVmZmVyIHdpbGwg bm90IHJlc3VsdCBpbiB0aGUgY2FjaGUgYmVpbmcKZmx1c2hlZC4gIElmIHRoZSBjaGFuZ2VzIGFm ZmVjdCB0aGUgbW9kc2lnIHN0YXRlLCB0aGV5IG11c3QgY2FsbCB0aGUKbW9kc2lnLWNhY2hlLWFk ZC0qIGZ1bmN0aW9uLCBlbHNlIHRoZSByZXN1bHRzIG9mIGxhdGVyIGNhbGxzIG1heSBiZQppbmNv cnJlY3QuICBXaXRob3V0IHRoaXMsIGNoYW5nZXMgYXJlIGFzc3VtZWQgdG8gYmUgYWRkaW5nL3Jl bW92aW5nIHNpZ25hbHMKYW5kIGludmFsaWRhdGluZyB0aGUgY2FjaGUuIgogIGAobGV0ICgodmVy aWxvZy1tb2RpLWNhY2hlLXByZXNlcnZlLXRpY2sgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNr KSkKCSAodmVyaWxvZy1tb2RpLWNhY2hlLXByZXNlcnZlLWJ1ZmZlciAoY3VycmVudC1idWZmZXIp KSkKICAgICAocHJvZ24gLEBib2R5KSkpCgoKKGRlZnVuIHZlcmlsb2ctbW9kaS1tb2Rwb3J0LWxv b2t1cC1vbmUgKG1vZGkgbmFtZSAmb3B0aW9uYWwgaWdub3JlLWVycm9yKQogICJHaXZlbiBhIE1P REksIHJldHVybiB0aGUgZGVjbGFyYXRpb25zIHJlbGF0ZWQgdG8gdGhlIGdpdmVuIG1vZHBvcnQg TkFNRS4KUmVwb3J0IGVycm9ycyB1bmxlc3Mgb3B0aW9uYWwgSUdOT1JFLUVSUk9SLiIKICA7OyBS ZWN1cnNpdmUgcm91dGluZSAtIHNlZSBiZWxvdwogIChsZXQqICgocmVhbG5hbWUgKHZlcmlsb2ct c3ltYm9sLWRldGljayBuYW1lIHQpKQoJIChtb2Rwb3J0IChhc3NvYyBuYW1lICh2ZXJpbG9nLWRl Y2xzLWdldC1tb2Rwb3J0cyAodmVyaWxvZy1tb2RpLWdldC1kZWNscyBtb2RpKSkpKSkKICAgIChv ciBtb2Rwb3J0IGlnbm9yZS1lcnJvcgoJKGVycm9yICIlczogQ2FuJ3QgbG9jYXRlIGAlcycgbW9k cG9ydCBkZWZpbml0aW9uJXMiCiAgICAgICAgICAgICAgICh2ZXJpbG9nLXBvaW50LXRleHQpIG5h bWUKICAgICAgICAgICAgICAgKGlmIChub3QgKGVxdWFsIG5hbWUgcmVhbG5hbWUpKQogICAgICAg ICAgICAgICAgICAgKGNvbmNhdCAiIChFeHBhbmRlZCBtYWNybyB0byAiIHJlYWxuYW1lICIpIikK ICAgICAgICAgICAgICAgICAiIikpKQogICAgKGxldCogKChkZWNscyAodmVyaWxvZy1tb2Rwb3J0 LWRlY2xzIG1vZHBvcnQpKQoJICAgKGNsa3MgKHZlcmlsb2ctbW9kcG9ydC1jbG9ja2luZ3MgbW9k cG9ydCkpKQogICAgICA7OyBOb3cgZXhwYW5kIGFueSBjbG9ja2luZydzCiAgICAgICh3aGlsZSBj bGtzCgkoc2V0cSBkZWNscyAodmVyaWxvZy1kZWNscy1hcHBlbmQKCQkgICAgIGRlY2xzCgkJICAg ICAodmVyaWxvZy1tb2RpLW1vZHBvcnQtbG9va3VwLW9uZSBtb2RpIChjYXIgY2xrcykgaWdub3Jl LWVycm9yKSkpCgkoc2V0cSBjbGtzIChjZHIgY2xrcykpKQogICAgICBkZWNscykpKQoKKGRlZnVu IHZlcmlsb2ctbW9kaS1tb2Rwb3J0LWxvb2t1cCAobW9kaSBuYW1lLXJlICZvcHRpb25hbCBpZ25v cmUtZXJyb3IpCiAgIkdpdmVuIGEgTU9ESSwgcmV0dXJuIHRoZSBkZWNsYXJhdGlvbnMgcmVsYXRl ZCB0byB0aGUgZ2l2ZW4gbW9kcG9ydCBOQU1FLVJFLgpJZiB0aGUgbW9kcG9ydCBwb2ludHMgdG8g YW55IGNsb2NraW5nIGJsb2NrcywgZXhwYW5kIHRoZSBzaWduYWxzIHRvIGluY2x1ZGUKdGhvc2Ug Y2xvY2tpbmcgYmxvY2sncyBzaWduYWxzLiIKICA7OyBSZWN1cnNpdmUgcm91dGluZSAtIHNlZSBi ZWxvdwogIChsZXQqICgobW9kLWRlY2xzICh2ZXJpbG9nLW1vZGktZ2V0LWRlY2xzIG1vZGkpKQoJ IChjbGtzICh2ZXJpbG9nLWRlY2xzLWdldC1tb2Rwb3J0cyBtb2QtZGVjbHMpKQoJIChuYW1lLXJl IChjb25jYXQgIl4iIG5hbWUtcmUgIiQiKSkKCSAoZGVjbHMgKHZlcmlsb2ctZGVjbHMtbmV3IG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsKSkpCiAgICA7OyBQdWxsIGluIGFsbCBt b2Rwb3J0cwogICAgKHdoaWxlIGNsa3MKICAgICAgKHdoZW4gKHN0cmluZy1tYXRjaCBuYW1lLXJl ICh2ZXJpbG9nLW1vZHBvcnQtbmFtZSAoY2FyIGNsa3MpKSkKCShzZXRxIGRlY2xzICh2ZXJpbG9n LWRlY2xzLWFwcGVuZAoJCSAgICAgZGVjbHMKCQkgICAgICh2ZXJpbG9nLW1vZGktbW9kcG9ydC1s b29rdXAtb25lIG1vZGkgKHZlcmlsb2ctbW9kcG9ydC1uYW1lIChjYXIgY2xrcykpIGlnbm9yZS1l cnJvcikpKSkKICAgICAgKHNldHEgY2xrcyAoY2RyIGNsa3MpKSkKICAgIGRlY2xzKSkKCihkZWZ1 biB2ZXJpbG9nLXNpZ25hbHMtbWF0Y2hpbmctZW51bSAoaW4tbGlzdCBlbnVtKQogICJSZXR1cm4g YWxsIHNpZ25hbHMgaW4gSU4tTElTVCBtYXRjaGluZyB0aGUgZ2l2ZW4gRU5VTS4iCiAgKGxldCAo b3V0LWxpc3QpCiAgICAod2hpbGUgaW4tbGlzdAogICAgICAoaWYgKGVxdWFsICh2ZXJpbG9nLXNp Zy1lbnVtIChjYXIgaW4tbGlzdCkpIGVudW0pCgkgIChzZXRxIG91dC1saXN0IChjb25zIChjYXIg aW4tbGlzdCkgb3V0LWxpc3QpKSkKICAgICAgKHNldHEgaW4tbGlzdCAoY2RyIGluLWxpc3QpKSkK ICAgIDs7IE5ldyBzY2hlbWUKICAgIDs7IE5hbWVzcGFjZSBpbnRlbnRpb25hbGx5IHNob3J0IGZv ciBBVVRPcyBhbmQgY29tcGF0aWJpbGl0eQogICAgKGxldCogKChlbnVtdmFyIChpbnRlcm4gKGNv bmNhdCAidmVudW0tIiBlbnVtKSkpCgkgICAoZW51bWxpc3QgKGFuZCAoYm91bmRwIGVudW12YXIp IChldmFsIGVudW12YXIpKSkpCiAgICAgICh3aGlsZSBlbnVtbGlzdAoJKGFkZC10by1saXN0ICdv dXQtbGlzdCAobGlzdCAoY2FyIGVudW1saXN0KSkpCgkoc2V0cSBlbnVtbGlzdCAoY2RyIGVudW1s aXN0KSkpKQogICAgKG5yZXZlcnNlIG91dC1saXN0KSkpCgooZGVmdW4gdmVyaWxvZy1zaWduYWxz LW1hdGNoaW5nLXJlZ2V4cCAoaW4tbGlzdCByZWdleHApCiAgIlJldHVybiBhbGwgc2lnbmFscyBp biBJTi1MSVNUIG1hdGNoaW5nIHRoZSBnaXZlbiBSRUdFWFAsIGlmIG5vbi1uaWwuCkFsbG93IHJl Z2V4cCBpbnZlcnNpb24gaWYgUkVHRVhQIGJlZ2lucyB3aXRoID8hLiIKICAoaWYgKG9yIChub3Qg cmVnZXhwKSAoZXF1YWwgcmVnZXhwICIiKSkKICAgICAgaW4tbGlzdAogICAgKGlmIChzdHJpbmct bWF0Y2ggIl5cXD8hIiByZWdleHApCiAgICAgICAgKHZlcmlsb2ctc2lnbmFscy1ub3QtbWF0Y2hp bmctcmVnZXhwIGluLWxpc3QgKHN1YnN0cmluZyByZWdleHAgMikpCiAgICAgIChsZXQgKChjYXNl LWZvbGQtc2VhcmNoIHZlcmlsb2ctY2FzZS1mb2xkKQogICAgICAgICAgICBvdXQtbGlzdCkKICAg ICAgICAod2hpbGUgaW4tbGlzdAogICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2ggcmVnZXhwICh2 ZXJpbG9nLXNpZy1uYW1lIChjYXIgaW4tbGlzdCkpKQogICAgICAgICAgICAgIChzZXRxIG91dC1s aXN0IChjb25zIChjYXIgaW4tbGlzdCkgb3V0LWxpc3QpKSkKICAgICAgICAgIChzZXRxIGluLWxp c3QgKGNkciBpbi1saXN0KSkpCiAgICAgICAgKG5yZXZlcnNlIG91dC1saXN0KSkpKSkKCihkZWZ1 biB2ZXJpbG9nLXNpZ25hbHMtbm90LW1hdGNoaW5nLXJlZ2V4cCAoaW4tbGlzdCByZWdleHApCiAg IlJldHVybiBhbGwgc2lnbmFscyBpbiBJTi1MSVNUIG5vdCBtYXRjaGluZyB0aGUgZ2l2ZW4gUkVH RVhQLCBpZiBub24tbmlsLgpBbGxvdyByZWdleHAgaW52ZXJzaW9uIGlmIFJFR0VYUCBiZWdpbnMg d2l0aCA/IS4iCiAgKGlmIChvciAobm90IHJlZ2V4cCkgKGVxdWFsIHJlZ2V4cCAiIikpCiAgICAg IGluLWxpc3QKICAgIChpZiAoc3RyaW5nLW1hdGNoICJeXFw/ISIgcmVnZXhwKQogICAgICAgICh2 ZXJpbG9nLXNpZ25hbHMtbWF0Y2hpbmctcmVnZXhwIGluLWxpc3QgKHN1YnN0cmluZyByZWdleHAg MikpCiAgICAgIChsZXQgKChjYXNlLWZvbGQtc2VhcmNoIHZlcmlsb2ctY2FzZS1mb2xkKQogICAg ICAgICAgICBvdXQtbGlzdCkKICAgICAgICAod2hpbGUgaW4tbGlzdAogICAgICAgICAgKGlmIChu b3QgKHN0cmluZy1tYXRjaCByZWdleHAgKHZlcmlsb2ctc2lnLW5hbWUgKGNhciBpbi1saXN0KSkp KQogICAgICAgICAgICAgIChzZXRxIG91dC1saXN0IChjb25zIChjYXIgaW4tbGlzdCkgb3V0LWxp c3QpKSkKICAgICAgICAgIChzZXRxIGluLWxpc3QgKGNkciBpbi1saXN0KSkpCiAgICAgICAgKG5y ZXZlcnNlIG91dC1saXN0KSkpKSkKCihkZWZ1biB2ZXJpbG9nLXNpZ25hbHMtbWF0Y2hpbmctZGly LXJlIChpbi1saXN0IGRlY2wtdHlwZSByZWdleHApCiAgIlJldHVybiBhbGwgc2lnbmFscyBpbiBJ Ti1MSVNUIG1hdGNoaW5nIHRoZSBnaXZlbiBERUNMLVRZUEUgYW5kIFJFR0VYUCwKaWYgbm9uLW5p bC4iCiAgKGlmIChvciAobm90IHJlZ2V4cCkgKGVxdWFsIHJlZ2V4cCAiIikpCiAgICAgIGluLWxp c3QKICAgIChsZXQgKG91dC1saXN0IHRvLW1hdGNoKQogICAgICAod2hpbGUgaW4tbGlzdAoJOzsg Tm90ZSB2ZXJpbG9nLWluc2VydC1vbmUtZGVmaW5pdGlvbiBtYXRjaGVzIG9uIHRoaXMgb3JkZXIK CShzZXRxIHRvLW1hdGNoIChjb25jYXQKCQkJZGVjbC10eXBlCgkJCSIgIiAodmVyaWxvZy1zaWct c2lnbmVkIChjYXIgaW4tbGlzdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICIgIiAodmVyaWxv Zy1zaWctbXVsdGlkaW0tc3RyaW5nIChjYXIgaW4tbGlzdCkpCgkJCSh2ZXJpbG9nLXNpZy1iaXRz IChjYXIgaW4tbGlzdCkpKSkKCShpZiAoc3RyaW5nLW1hdGNoIHJlZ2V4cCB0by1tYXRjaCkKCSAg ICAoc2V0cSBvdXQtbGlzdCAoY29ucyAoY2FyIGluLWxpc3QpIG91dC1saXN0KSkpCgkoc2V0cSBp bi1saXN0IChjZHIgaW4tbGlzdCkpKQogICAgICAobnJldmVyc2Ugb3V0LWxpc3QpKSkpCgooZGVm dW4gdmVyaWxvZy1zaWduYWxzLWVkaXQtd2lyZS1yZWcgKGluLWxpc3QpCiAgIlJldHVybiBhbGwg c2lnbmFscyBpbiBJTi1MSVNUIHdpdGggd2lyZS9yZWcgZGF0YSB0eXBlcyBtYWRlIGJsYW5rLiIK ICAobWFwY2FyIChsYW1iZGEgKHNpZykKCSAgICAod2hlbiAobWVtYmVyICh2ZXJpbG9nLXNpZy10 eXBlIHNpZykgJygid2lyZSIgInJlZyIpKQoJICAgICAgKHZlcmlsb2ctc2lnLXR5cGUtc2V0IHNp ZyBuaWwpKQoJICAgIHNpZykgaW4tbGlzdCkpCgooZGVmdW4gdmVyaWxvZy1zaWduYWxzLWFkZC1w cmVmaXggKGluLWxpc3QgcHJlZml4KQogICJSZXR1cm4gYWxsIHNpZ25hbHMgaW4gSU4tTElTVCB3 aXRoIFBSRUZJWCBhZGRlZC4iCiAgKGlmIChvciAobm90IHByZWZpeCkgKGVxdWFsIHByZWZpeCAi IikpCiAgICAgIGluLWxpc3QKICAgIChsZXQgKG91dC1saXN0KQogICAgICAod2hpbGUgaW4tbGlz dAogICAgICAgIChzZXRxIG91dC1saXN0IChjb25zICh2ZXJpbG9nLXNpZy1uZXctcmVuYW1lZAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IHByZWZpeCAodmVyaWxvZy1zaWct bmFtZSAoY2FyIGluLWxpc3QpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBp bi1saXN0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQtbGlzdCkpCiAgICAgICAg KHNldHEgaW4tbGlzdCAoY2RyIGluLWxpc3QpKSkKICAgICAgKG5yZXZlcnNlIG91dC1saXN0KSkp KQo7KHZlcmlsb2ctc2lnbmFscy1hZGQtcHJlZml4IChsaXN0IChsaXN0ICJmb28iICIuLi4iKSAo bGlzdCAiYmFyIiAiLi4uIikpICJwXyIpCgo7OyBDb21iaW5lZAooZGVmdW4gdmVyaWxvZy1kZWNs cy1nZXQtc2lnbmFscyAoZGVjbHMpCiAgIlJldHVybiBhbGwgZGVjbGFyZWQgc2lnbmFscyBpbiBE RUNMUywgZXhjbHVkaW5nIGBhc3NpZ24nIHN0YXRlbWVudHMuIgogIChhcHBlbmQKICAgKHZlcmls b2ctZGVjbHMtZ2V0LW91dHB1dHMgZGVjbHMpCiAgICh2ZXJpbG9nLWRlY2xzLWdldC1pbm91dHMg ZGVjbHMpCiAgICh2ZXJpbG9nLWRlY2xzLWdldC1pbnB1dHMgZGVjbHMpCiAgICh2ZXJpbG9nLWRl Y2xzLWdldC12YXJzIGRlY2xzKQogICAodmVyaWxvZy1kZWNscy1nZXQtY29uc3RzIGRlY2xzKQog ICAodmVyaWxvZy1kZWNscy1nZXQtZ3BhcmFtcyBkZWNscykpKQoKKGRlZnVuIHZlcmlsb2ctZGVj bHMtZ2V0LXBvcnRzIChkZWNscykKICAoYXBwZW5kCiAgICh2ZXJpbG9nLWRlY2xzLWdldC1vdXRw dXRzIGRlY2xzKQogICAodmVyaWxvZy1kZWNscy1nZXQtaW5vdXRzIGRlY2xzKQogICAodmVyaWxv Zy1kZWNscy1nZXQtaW5wdXRzIGRlY2xzKSkpCgooZGVmdW4gdmVyaWxvZy1kZWNscy1nZXQtaW92 YXJzIChkZWNscykKICAoYXBwZW5kCiAgICh2ZXJpbG9nLWRlY2xzLWdldC12YXJzIGRlY2xzKQog ICAodmVyaWxvZy1kZWNscy1nZXQtb3V0cHV0cyBkZWNscykKICAgKHZlcmlsb2ctZGVjbHMtZ2V0 LWlub3V0cyBkZWNscykKICAgKHZlcmlsb2ctZGVjbHMtZ2V0LWlucHV0cyBkZWNscykpKQoKKGRl ZnN1YnN0IHZlcmlsb2ctbW9kaS1jYWNoZS1hZGQtb3V0cHV0cyAobW9kaSBzaWctbGlzdCkKICAo dmVyaWxvZy1tb2RpLWNhY2hlLWFkZCBtb2RpICd2ZXJpbG9nLXJlYWQtZGVjbHMgMCBzaWctbGlz dCkpCihkZWZzdWJzdCB2ZXJpbG9nLW1vZGktY2FjaGUtYWRkLWlub3V0cyAobW9kaSBzaWctbGlz dCkKICAodmVyaWxvZy1tb2RpLWNhY2hlLWFkZCBtb2RpICd2ZXJpbG9nLXJlYWQtZGVjbHMgMSBz aWctbGlzdCkpCihkZWZzdWJzdCB2ZXJpbG9nLW1vZGktY2FjaGUtYWRkLWlucHV0cyAobW9kaSBz aWctbGlzdCkKICAodmVyaWxvZy1tb2RpLWNhY2hlLWFkZCBtb2RpICd2ZXJpbG9nLXJlYWQtZGVj bHMgMiBzaWctbGlzdCkpCihkZWZzdWJzdCB2ZXJpbG9nLW1vZGktY2FjaGUtYWRkLXZhcnMgKG1v ZGkgc2lnLWxpc3QpCiAgKHZlcmlsb2ctbW9kaS1jYWNoZS1hZGQgbW9kaSAndmVyaWxvZy1yZWFk LWRlY2xzIDMgc2lnLWxpc3QpKQooZGVmc3Vic3QgdmVyaWxvZy1tb2RpLWNhY2hlLWFkZC1ncGFy YW1zIChtb2RpIHNpZy1saXN0KQogICh2ZXJpbG9nLW1vZGktY2FjaGUtYWRkIG1vZGkgJ3Zlcmls b2ctcmVhZC1kZWNscyA3IHNpZy1saXN0KSkKCgwKOzs7IEF1dG8gY3JlYXRpb24gdXRpbGl0aWVz Ogo7OwoKKGRlZnVuIHZlcmlsb2ctYXV0by1yZS1zZWFyY2gtZG8gKHNlYXJjaC1mb3IgZnVuYykK ICAiU2VhcmNoIGZvciB0aGUgZ2l2ZW4gYXV0byB0ZXh0IHJlZ2V4cCBTRUFSQ0gtRk9SLCBhbmQg cGVyZm9ybSBGVU5DIHdoZXJlIGl0IG9jY3Vycy4iCiAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkK ICAod2hpbGUgKHZlcmlsb2ctcmUtc2VhcmNoLWZvcndhcmQtcXVpY2sgc2VhcmNoLWZvciBuaWwg dCkKICAgIChmdW5jYWxsIGZ1bmMpKSkKCihkZWZ1biB2ZXJpbG9nLWluc2VydC1vbmUtZGVmaW5p dGlvbiAoc2lnIHR5cGUgaW5kZW50LXB0KQogICJQcmludCBvdXQgYSBkZWZpbml0aW9uIGZvciBT SUcgb2YgdGhlIGdpdmVuIFRZUEUsCndpdGggYXBwcm9wcmlhdGUgSU5ERU5ULVBUIGluZGVudGF0 aW9uLiIKICAoaW5kZW50LXRvIGluZGVudC1wdCkKICA7OyBOb3RlIHZlcmlsb2ctc2lnbmFscy1t YXRjaGluZy1kaXItcmUgbWF0Y2hlcyBvbiB0aGlzIG9yZGVyCiAgKGluc2VydCB0eXBlKQogICh3 aGVuICh2ZXJpbG9nLXNpZy1tb2Rwb3J0IHNpZykKICAgIChpbnNlcnQgIi4iICh2ZXJpbG9nLXNp Zy1tb2Rwb3J0IHNpZykpKQogICh3aGVuICh2ZXJpbG9nLXNpZy1zaWduZWQgc2lnKQogICAgKGlu c2VydCAiICIgKHZlcmlsb2ctc2lnLXNpZ25lZCBzaWcpKSkKICAod2hlbiAodmVyaWxvZy1zaWct bXVsdGlkaW0gc2lnKQogICAgKGluc2VydCAiICIgKHZlcmlsb2ctc2lnLW11bHRpZGltLXN0cmlu ZyBzaWcpKSkKICAod2hlbiAodmVyaWxvZy1zaWctYml0cyBzaWcpCiAgICAoaW5zZXJ0ICIgIiAo dmVyaWxvZy1zaWctYml0cyBzaWcpKSkKICAoaW5kZW50LXRvIChtYXggMjQgKCsgaW5kZW50LXB0 IDE2KSkpCiAgKHVubGVzcyAoPSAoY2hhci1zeW50YXggKHByZWNlZGluZy1jaGFyKSkgP1wgICkK ICAgIChpbnNlcnQgIiAiKSkgIDsgTmVlZCBzcGFjZSBiZXR3ZWVuICJdbmFtZSIgaWYgaW5kZW50 LXRvIGRpZCBub3RoaW5nCiAgKGluc2VydCAodmVyaWxvZy1zaWctbmFtZSBzaWcpKQogICh3aGVu ICh2ZXJpbG9nLXNpZy1tZW1vcnkgc2lnKQogICAgKGluc2VydCAiICIgKHZlcmlsb2ctc2lnLW1l bW9yeSBzaWcpKSkpCgooZGVmdW4gdmVyaWxvZy1pbnNlcnQtZGVmaW5pdGlvbiAobW9kaSBzaWdz IGRpcmVjdGlvbiBpbmRlbnQtcHQgdjJrICZvcHRpb25hbCBkb250LXNvcnQpCiAgIlByaW50IG91 dCBhIGRlZmluaXRpb24gZm9yIE1PREkncyBsaXN0IG9mIFNJR1Mgb2YgdGhlIGdpdmVuIERJUkVD VElPTiwKd2l0aCBhcHByb3ByaWF0ZSBJTkRFTlQtUFQgaW5kZW50YXRpb24uICBJZiBWMkssIHVz ZSBWZXJpbG9nIDIwMDEgSS9PCmZvcm1hdC4gIFNvcnQgdW5sZXNzIERPTlQtU09SVC4gIERJUkVD VElPTiBpcyBub3JtYWxseSB3aXJlL3JlZy9vdXRwdXQuCldoZW4gTU9ESSBpcyBub24tbnVsbCwg YWxzbyBhZGQgdG8gbW9kaS1jYWNoZSwgZm9yIHRyYWNraW5nLiIKICAod2hlbiBtb2RpCiAgICAo Y29uZCAoKGVxdWFsIGRpcmVjdGlvbiAid2lyZSIpCgkgICAodmVyaWxvZy1tb2RpLWNhY2hlLWFk ZC12YXJzIG1vZGkgc2lncykpCgkgICgoZXF1YWwgZGlyZWN0aW9uICJyZWciKQoJICAgKHZlcmls b2ctbW9kaS1jYWNoZS1hZGQtdmFycyBtb2RpIHNpZ3MpKQoJICAoKGVxdWFsIGRpcmVjdGlvbiAi b3V0cHV0IikKCSAgICh2ZXJpbG9nLW1vZGktY2FjaGUtYWRkLW91dHB1dHMgbW9kaSBzaWdzKQoJ ICAgKHdoZW4gdmVyaWxvZy1hdXRvLWRlY2xhcmUtbmV0dHlwZQoJICAgICAodmVyaWxvZy1tb2Rp LWNhY2hlLWFkZC12YXJzIG1vZGkgc2lncykpKQoJICAoKGVxdWFsIGRpcmVjdGlvbiAiaW5wdXQi KQoJICAgKHZlcmlsb2ctbW9kaS1jYWNoZS1hZGQtaW5wdXRzIG1vZGkgc2lncykKCSAgICh3aGVu IHZlcmlsb2ctYXV0by1kZWNsYXJlLW5ldHR5cGUKCSAgICAgKHZlcmlsb2ctbW9kaS1jYWNoZS1h ZGQtdmFycyBtb2RpIHNpZ3MpKSkKCSAgKChlcXVhbCBkaXJlY3Rpb24gImlub3V0IikKCSAgICh2 ZXJpbG9nLW1vZGktY2FjaGUtYWRkLWlub3V0cyBtb2RpIHNpZ3MpCgkgICAod2hlbiB2ZXJpbG9n LWF1dG8tZGVjbGFyZS1uZXR0eXBlCgkgICAgICh2ZXJpbG9nLW1vZGktY2FjaGUtYWRkLXZhcnMg bW9kaSBzaWdzKSkpCgkgICgoZXF1YWwgZGlyZWN0aW9uICJpbnRlcmZhY2UiKSkKCSAgKChlcXVh bCBkaXJlY3Rpb24gInBhcmFtZXRlciIpCgkgICAodmVyaWxvZy1tb2RpLWNhY2hlLWFkZC1ncGFy YW1zIG1vZGkgc2lncykpCgkgICh0CgkgICAoZXJyb3IgIlVuc3VwcG9ydGVkIHZlcmlsb2ctaW5z ZXJ0LWRlZmluaXRpb24gZGlyZWN0aW9uOiBgJXMnIiBkaXJlY3Rpb24pKSkpCiAgKG9yIGRvbnQt c29ydAogICAgICAoc2V0cSBzaWdzIChzb3J0IChjb3B5LWFsaXN0IHNpZ3MpICMndmVyaWxvZy1z aWduYWxzLXNvcnQtY29tcGFyZSkpKQogICh3aGlsZSBzaWdzCiAgICAobGV0ICgoc2lnIChjYXIg c2lncykpKQogICAgICAodmVyaWxvZy1pbnNlcnQtb25lLWRlZmluaXRpb24KICAgICAgIHNpZwog ICAgICAgOzsgV2FudCAidHlwZSB4IiBvciAib3V0cHV0IHR5cGUgeCIsIG5vdCAid2lyZSB0eXBl IHgiCiAgICAgICAoY29uZCAoKGFuZCAoZXF1YWwgIndpcmUiIHZlcmlsb2ctYXV0by13aXJlLXR5 cGUpCiAgICAgICAgICAgICAgICAgICAob3IgKG5vdCAodmVyaWxvZy1zaWctdHlwZSBzaWcpKQog ICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAibG9naWMiICh2ZXJpbG9nLXNpZy10eXBlIHNp ZykpKSkKICAgICAgICAgICAgICAoaWYgKG1lbWJlciBkaXJlY3Rpb24gJygiaW5wdXQiICJvdXRw dXQiICJpbm91dCIpKQogICAgICAgICAgICAgICAgICBkaXJlY3Rpb24KICAgICAgICAgICAgICAg ICJ3aXJlIikpCiAgICAgICAgICAgICA7OwogICAgICAgICAgICAgKChvciAodmVyaWxvZy1zaWct dHlwZSBzaWcpCgkJICB2ZXJpbG9nLWF1dG8td2lyZS10eXBlKQoJICAgICAgKGNvbmNhdAoJICAg ICAgICh3aGVuIChtZW1iZXIgZGlyZWN0aW9uICcoImlucHV0IiAib3V0cHV0IiAiaW5vdXQiKSkK CQkgKGNvbmNhdCBkaXJlY3Rpb24gIiAiKSkKICAgICAgICAgICAgICAgKG9yICh2ZXJpbG9nLXNp Zy10eXBlIHNpZykKICAgICAgICAgICAgICAgICAgIHZlcmlsb2ctYXV0by13aXJlLXR5cGUpKSkK ICAgICAgICAgICAgIDs7CgkgICAgICgoYW5kIHZlcmlsb2ctYXV0by1kZWNsYXJlLW5ldHR5cGUK CQkgICAobWVtYmVyIGRpcmVjdGlvbiAnKCJpbnB1dCIgIm91dHB1dCIgImlub3V0IikpKQoJICAg ICAgKGNvbmNhdCBkaXJlY3Rpb24gIiAiIHZlcmlsb2ctYXV0by1kZWNsYXJlLW5ldHR5cGUpKQoJ ICAgICAodAoJICAgICAgZGlyZWN0aW9uKSkKICAgICAgIGluZGVudC1wdCkKICAgICAgKGluc2Vy dCAoaWYgdjJrICIsIiAiOyIpKQogICAgICAoaWYgKG9yIChub3QgdmVyaWxvZy1hdXRvLXdpcmUt Y29tbWVudCkKICAgICAgICAgICAgICAobm90ICh2ZXJpbG9nLXNpZy1jb21tZW50IHNpZykpCiAg ICAgICAgICAgICAgKGVxdWFsICIiICh2ZXJpbG9nLXNpZy1jb21tZW50IHNpZykpKQoJICAoaW5z ZXJ0ICJcbiIpCgkoaW5kZW50LXRvIChtYXggNDggKCsgaW5kZW50LXB0IDQwKSkpCgkodmVyaWxv Zy1pbnNlcnQgIi8vICIgKHZlcmlsb2ctc2lnLWNvbW1lbnQgc2lnKSAiXG4iKSkKICAgICAgKHNl dHEgc2lncyAoY2RyIHNpZ3MpKSkpKQoKKGV2YWwtd2hlbi1jb21waWxlCiAgKGlmIChub3QgKGJv dW5kcCAnaW5kZW50LXB0KSkKICAgICAgKGRlZnZhciBpbmRlbnQtcHQgbmlsICJMb2NhbCB1c2Vk IGJ5IGB2ZXJpbG9nLWluc2VydC1pbmRlbnQnLiIpKSkKCihkZWZ1biB2ZXJpbG9nLWluc2VydC1p bmRlbnQgKCZyZXN0IHN0dWZmKQogICJJbmRlbnQgdG8gcG9zaXRpb24gc3RvcmVkIGluIGxvY2Fs IGBpbmRlbnQtcHQnIHZhcmlhYmxlLCB0aGVuIGluc2VydCBTVFVGRi4KUHJlc3VtZXMgdGhhdCBh bnkgbmV3bGluZXMgZW5kIGEgbGlzdCBlbGVtZW50LiIKICAobGV0ICgobmVlZC1pbmRlbnQgdCkp CiAgICAod2hpbGUgc3R1ZmYKICAgICAgKGlmIG5lZWQtaW5kZW50IChpbmRlbnQtdG8gaW5kZW50 LXB0KSkKICAgICAgKHNldHEgbmVlZC1pbmRlbnQgbmlsKQogICAgICAodmVyaWxvZy1pbnNlcnQg KGNhciBzdHVmZikpCiAgICAgIChzZXRxIG5lZWQtaW5kZW50IChzdHJpbmctbWF0Y2ggIlxuJCIg KGNhciBzdHVmZikpCgkgICAgc3R1ZmYgKGNkciBzdHVmZikpKSkpCjs7KGxldCAoKGluZGVudC1w dCAxMCkpICh2ZXJpbG9nLWluc2VydC1pbmRlbnQgImhlbGxvXG4iICJhZGRvbiIgInRoZXJlXG4i KSkKCihkZWZ1biB2ZXJpbG9nLWZvcndhcmQtb3ItaW5zZXJ0LWxpbmUgKCkKICAiTW92ZSBmb3J3 YXJkIGEgbGluZSwgdW5sZXNzIGF0IEVPQiwgdGhlbiBpbnNlcnQgYSBuZXdsaW5lLiIKICAoaWYg KGVvYnApIChpbnNlcnQgIlxuIikKICAgIChmb3J3YXJkLWxpbmUpKSkKCihkZWZ1biB2ZXJpbG9n LXJlcGFpci1vcGVuLWNvbW1hICgpCiAgIkluc2VydCBjb21tYSBpZiBwcmV2aW91cyBhcmd1bWVu dCBpcyBvdGhlciB0aGFuIGFuIG9wZW4gcGFyZW50aGVzaXMgb3IgZW5kaWYuIgogIDs7IFdlIGNh bid0IGp1c3Qgc2VhcmNoIGJhY2t3YXJkIGZvciApIGFzIGl0IG1pZ2h0IGJlIGluc2lkZSBhbm90 aGVyIGV4cHJlc3Npb24uCiAgOzsgQWxzbyB3YW50ICJgaWZkZWYgWCAgIGlucHV0IGZvbyAgIGBl bmRpZiIgdG8ganVzdCBsZWF2ZSB0aGluZ3MgdG8gdGhlIGh1bWFuIHRvIGRlYWwgd2l0aAogIChz YXZlLWV4Y3Vyc2lvbgogICAgKHZlcmlsb2ctYmFja3dhcmQtc3ludGFjdGljLXdzLXF1aWNrKQog ICAgKHdoZW4gKGFuZCAobm90IChzYXZlLWV4Y3Vyc2lvbiAgOyBOb3QgYmVnaW5uaW5nICgsIG9y IGV4aXN0aW5nICwKCQkgICAgICAoYmFja3dhcmQtY2hhciAxKQoJCSAgICAgIChsb29raW5nLWF0 ICJbKCxdIikpKQogICAgICAgICAgICAgICAobm90IChzYXZlLWV4Y3Vyc2lvbiAgOyBOb3QgYGVu ZGlmLCBvciB1c2VyIGRlZmluZQoJCSAgICAgIChiYWNrd2FyZC1jaGFyIDEpCgkJICAgICAgKHNr aXAtY2hhcnMtYmFja3dhcmQgImEtekEtWjAtOV9gIikKCQkgICAgICAobG9va2luZy1hdCAiYCIp KSkpCiAgICAgIChpbnNlcnQgIiwiKSkpKQoKKGRlZnVuIHZlcmlsb2ctcmVwYWlyLWNsb3NlLWNv bW1hICgpCiAgIklmIHBvaW50IGlzIGF0IGEgY29tbWEgZm9sbG93ZWQgYnkgYSBjbG9zZSBwYXJl bnRoZXNpcywgZml4IGl0LgpUaGlzIHJlcGFpcnMgdGhvc2UgbWlzLWluc2VydGVkIGJ5IGFuIEFV VE9BUkcuIgogIDs7IEl0IHdvdWxkIGJlIG11Y2ggbmljZXIgaWYgVmVyaWxvZyBhbGxvd2VkIGV4 dHJhIGNvbW1hcyBsaWtlIFBlcmwgZG9lcyEKICAoc2F2ZS1leGN1cnNpb24KICAgICh2ZXJpbG9n LWZvcndhcmQtY2xvc2UtcGFyZW4pCiAgICAoYmFja3dhcmQtY2hhciAxKQogICAgKHZlcmlsb2ct YmFja3dhcmQtc3ludGFjdGljLXdzLXF1aWNrKQogICAgKGJhY2t3YXJkLWNoYXIgMSkKICAgICh3 aGVuIChsb29raW5nLWF0ICIsIikKICAgICAgKGRlbGV0ZS1jaGFyIDEpKSkpCgooZGVmdW4gdmVy aWxvZy1tYWtlLXdpZHRoLWV4cHJlc3Npb24gKHJhbmdlLWV4cCkKICAiUmV0dXJuIGFuIGV4cHJl c3Npb24gY2FsY3VsYXRpbmcgdGhlIGxlbmd0aCBvZiBhIHJhbmdlIFt4OnldIGluIFJBTkdFLUVY UC4iCiAgOzsgc3RyaXAgb2ZmIHRoZSBbXQogIChjb25kICgobm90IHJhbmdlLWV4cCkKCSAiMSIp CgkodAoJIChpZiAoc3RyaW5nLW1hdGNoICJeXFxbXFwoLipcXClcXF0kIiByYW5nZS1leHApCgkg ICAgIChzZXRxIHJhbmdlLWV4cCAobWF0Y2gtc3RyaW5nIDEgcmFuZ2UtZXhwKSkpCgkgKGNvbmQg KChub3QgcmFuZ2UtZXhwKQoJCSIxIikKCSAgICAgICA7OyBbIzojXSBXZSBjYW4gY29tcHV0ZSBh IG51bWVyaWMgcmVzdWx0CgkgICAgICAgKChzdHJpbmctbWF0Y2ggIl5cXHMgKlxcKFswLTldK1xc KVxccyAqOlxccyAqXFwoWzAtOV0rXFwpXFxzICokIgoJCQkgICAgICByYW5nZS1leHApCgkJKGlu dC10by1zdHJpbmcKCQkgKDErIChhYnMgKC0gKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmlu ZyAxIHJhbmdlLWV4cCkpCgkJCSAgICAgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAy IHJhbmdlLWV4cCkpKSkpKSkKCSAgICAgICA7OyBbUEFSQU0tMTowXSBjYW4ganVzdCByZXR1cm4g UEFSQU0KCSAgICAgICAoKHN0cmluZy1tYXRjaCAiXlxccyAqXFwoW2EtekEtWl9dW2EtekEtWjAt OV9dKlxcKVxccyAqLVxccyAqMVxccyAqOlxccyAqMFxccyAqJCIgcmFuZ2UtZXhwKQoJCShtYXRj aC1zdHJpbmcgMSByYW5nZS1leHApKQoJICAgICAgIDs7IFthcmJpdHJhcnldIG5lZWQgbWF0aAoJ ICAgICAgICgoc3RyaW5nLW1hdGNoICJeXFwoLipcXClcXHMgKjpcXHMgKlxcKC4qXFwpXFxzICok IiByYW5nZS1leHApCgkJKGNvbmNhdCAiKDErKCIgKG1hdGNoLXN0cmluZyAxIHJhbmdlLWV4cCkg IikiCgkJCShpZiAoZXF1YWwgIjAiIChtYXRjaC1zdHJpbmcgMiByYW5nZS1leHApKQoJCQkgICAg IiIgIDsgRG9uJ3QgYm90aGVyIHdpdGggLSgwKQoJCQkgIChjb25jYXQgIi0oIiAobWF0Y2gtc3Ry aW5nIDIgcmFuZ2UtZXhwKSAiKSIpKQoJCQkiKSIpKQoJICAgICAgICh0IG5pbCkpKSkpCjs7KHZl cmlsb2ctbWFrZS13aWR0aC1leHByZXNzaW9uICJgQTpgQiIpCgooZGVmdW4gdmVyaWxvZy1zaW1w bGlmeS1yYW5nZS1leHByZXNzaW9uIChleHByKQogICJSZXR1cm4gYSBzaW1wbGlmaWVkIHJhbmdl IGV4cHJlc3Npb24gd2l0aCBjb25zdGFudHMgZWxpbWluYXRlZCBmcm9tIEVYUFIuIgogIDs7IE5v dGUgdGhpcyBpcyBhbHdheXMgY2FsbGVkIHdpdGggYnJhY2tldHM7IGllIFt6XSBvciBbejp6XQog IChpZiAob3IgKG5vdCB2ZXJpbG9nLWF1dG8tc2ltcGxpZnktZXhwcmVzc2lvbnMpCiAgICAgICAg ICAobm90IChzdHJpbmctbWF0Y2ggIlstLS0rKi88PigpXSIgZXhwcikpKQogICAgICBleHByICA7 IGRpc2FibGVkIG9yIHNob3J0LWNpcmN1aXRlZAogICAgKGxldCAoKG91dCBleHByKQoJICAobGFz dC1wYXNzICIiKSkKICAgICAgKHdoaWxlIChub3QgKGVxdWFsIGxhc3QtcGFzcyBvdXQpKQogICAg ICAgICh3aGlsZSAobm90IChlcXVhbCBsYXN0LXBhc3Mgb3V0KSkKICAgICAgICAgIChzZXRxIGxh c3QtcGFzcyBvdXQpCiAgICAgICAgICA7OyBQcmVmaXggcmVnZXhwIG5lZWRzIGJlZ2lubmluZyBv ZiBtYXRjaCwgb3Igc29tZSBzeW1ib2wgb2YKICAgICAgICAgIDs7IGxlc3NlciBvciBlcXVhbCBw cmVjZWRlbmNlLiAgV2UgYXNzdW1lIHRoZSBbOl0ncyBleGlzdCBpbiBleHByLgogICAgICAgICAg OzsgRGl0dG8gdGhlIGVuZC4KICAgICAgICAgICh3aGlsZSAoc3RyaW5nLW1hdGNoCiAgICAgICAg ICAgICAgICAgIChjb25jYXQgIlxcKFtbKHs6Ki88PistXVxcKSIgIDsgLSBtdXN0IGJlIGxhc3QK ICAgICAgICAgICAgICAgICAgICAgICAgICAiKFxcPFxcKFswLTlBLVphLXpfXStcXCkpIgogICAg ICAgICAgICAgICAgICAgICAgICAgICJcXChbXSl9OiovPD4rLV1cXCkiKQogICAgICAgICAgICAg ICAgICBvdXQpCiAgICAgICAgICAgIChzZXRxIG91dCAocmVwbGFjZS1tYXRjaCAiXFwxXFwyXFwz IiBuaWwgbmlsIG91dCkpKQogICAgICAgICAgKHdoaWxlIChzdHJpbmctbWF0Y2gKICAgICAgICAg ICAgICAgICAgKGNvbmNhdCAiXFwoW1soezoqLzw+Ky1dXFwpIiAgOyAtIG11c3QgYmUgbGFzdAog ICAgICAgICAgICAgICAgICAgICAgICAgICJcXCRjbG9nMlxccyAqKFxcPFxcKFswLTldK1xcKSki CiAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcKFtdKX06Ki88PistXVxcKSIpCiAgICAgICAg ICAgICAgICAgIG91dCkKICAgICAgICAgICAgKHNldHEgb3V0IChyZXBsYWNlLW1hdGNoCiAgICAg ICAgICAgICAgICAgICAgICAgKGNvbmNhdAogICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gt c3RyaW5nIDEgb3V0KQogICAgICAgICAgICAgICAgICAgICAgICAoaW50LXRvLXN0cmluZyAodmVy aWxvZy1jbG9nMiAoc3RyaW5nLXRvLW51bWJlciAobWF0Y2gtc3RyaW5nIDIgb3V0KSkpKQogICAg ICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDMgb3V0KSkKICAgICAgICAgICAgICAg ICAgICAgICBuaWwgbmlsIG91dCkpKQogICAgICAgICAgOzsgRm9yIHByZWNlZGVuY2UgZG8gKiwv IGJlZm9yZSArLC0sPj4sPDwKICAgICAgICAgICh3aGlsZSAoc3RyaW5nLW1hdGNoCiAgICAgICAg ICAgICAgICAgIChjb25jYXQgIlxcKFtbKHs6Ki88PistXVxcKSIKICAgICAgICAgICAgICAgICAg ICAgICAgICAiXFwoWzAtOV0rXFwpXFxzICpcXChbKi9dXFwpXFxzICpcXChbMC05XStcXCkiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIlxcKFtdKX06Ki88PistXVxcKSIpCiAgICAgICAgICAg ICAgICAgIG91dCkKICAgICAgICAgICAgKHNldHEgb3V0IChyZXBsYWNlLW1hdGNoCiAgICAgICAg ICAgICAgICAgICAgICAgKGNvbmNhdCAobWF0Y2gtc3RyaW5nIDEgb3V0KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGlmIChlcXVhbCAobWF0Y2gtc3RyaW5nIDMgb3V0KSAiLyIpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludC10by1zdHJpbmcgKC8gKHN0cmlu Zy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAyIG91dCkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0 cmluZyA0IG91dCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGVxdWFs IChtYXRjaC1zdHJpbmcgMyBvdXQpICIqIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoaW50LXRvLXN0cmluZyAoKiAoc3RyaW5nLXRvLW51bWJlciAobWF0Y2gtc3RyaW5nIDIg b3V0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc3RyaW5nLXRvLW51bWJlciAobWF0Y2gtc3RyaW5nIDQgb3V0KSkpKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgNSBvdXQpKQogICAgICAgICAgICAgICAg ICAgICAgIG5pbCBuaWwgb3V0KSkpCiAgICAgICAgICA7OyBOZXh0IHByZWNlZGVuY2UgaXMgKywt CiAgICAgICAgICAod2hpbGUgKHN0cmluZy1tYXRjaAogICAgICAgICAgICAgICAgICAoY29uY2F0 ICJcXChbWyh7Ojw+Ky1dXFwpIiAgOyBObyAqLC8gaGVyZSBhcyBoaWdoZXIgcHJlYwogICAgICAg ICAgICAgICAgICAgICAgICAgICJcXChbMC05XStcXClcXHMgKlxcKFstLS0rXVxcKVxccyAqXFwo WzAtOV0rXFwpIgogICAgICAgICAgICAgICAgICAgICAgICAgICJcXChbXSl9Ojw+Ky1dXFwpIikK ICAgICAgICAgICAgICAgICAgb3V0KQogICAgICAgICAgICAobGV0ICgocHJlIChtYXRjaC1zdHJp bmcgMSBvdXQpKQogICAgICAgICAgICAgICAgICAobGhzIChzdHJpbmctdG8tbnVtYmVyIChtYXRj aC1zdHJpbmcgMiBvdXQpKSkKICAgICAgICAgICAgICAgICAgKHJocyAoc3RyaW5nLXRvLW51bWJl ciAobWF0Y2gtc3RyaW5nIDQgb3V0KSkpCiAgICAgICAgICAgICAgICAgIChwb3N0IChtYXRjaC1z dHJpbmcgNSBvdXQpKQogICAgICAgICAgICAgICAgICB2YWwpCiAgICAgICAgICAgICAgKHdoZW4g KGVxdWFsIHByZSAiLSIpCiAgICAgICAgICAgICAgICAoc2V0cSBsaHMgKC0gbGhzKSkpCiAgICAg ICAgICAgICAgKHNldHEgdmFsIChpZiAoZXF1YWwgKG1hdGNoLXN0cmluZyAzIG91dCkgIi0iKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0gbGhzIHJocykKICAgICAgICAgICAgICAgICAg ICAgICAgICAoKyBsaHMgcmhzKSkKICAgICAgICAgICAgICAgICAgICBvdXQgKHJlcGxhY2UtbWF0 Y2gKICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgKGlmIChhbmQgKGVxdWFsIHByZSAi LSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8IHZhbCAwKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICA7IE5vdCAiLS0yMCIgYnV0 IGp1c3QgIi0yMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmUpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQtdG8tc3RyaW5nIHZhbCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcG9zdCkKICAgICAgICAgICAgICAgICAgICAgICAgIG5p bCBuaWwgb3V0KSkgKSkKICAgICAgICAgIDs7IE5leHQgcHJlY2VkZW5jZSBpcyA+Piw8PAogICAg ICAgICAgKHdoaWxlIChzdHJpbmctbWF0Y2gKICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiXFwo W1soezpdXFwpIiAgOzsgTm8gPDwgYXMgbm90IHRyYW5zaXRpdmUKICAgICAgICAgICAgICAgICAg ICAgICAgICAiXFwoWzAtOV0rXFwpXFxzICpcXChbPF1cXHsyLDNcXH1cXHxbPl1cXHsyLDNcXH1c XClcXHMgKlxcKFswLTldK1xcKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwoW10pfTo8 Pl1cXCkiKQogICAgICAgICAgICAgICAgICBvdXQpCiAgICAgICAgICAgIChzZXRxIG91dCAocmVw bGFjZS1tYXRjaAogICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgKG1hdGNoLXN0cmluZyAx IG91dCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXF1YWwgKG1hdGNoLXN0 cmluZyAzIG91dCkgIj4+IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50 LXRvLXN0cmluZyAobHNoIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMiBvdXQpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCog LTEgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyA0IG91dCkpKSkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIChlcXVhbCAobWF0Y2gtc3RyaW5nIDMgb3V0KSAiPDwi KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQtdG8tc3RyaW5nIChsc2gg KHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAyIG91dCkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRvLW51bWJlciAo bWF0Y2gtc3RyaW5nIDQgb3V0KSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp ZiAoZXF1YWwgKG1hdGNoLXN0cmluZyAzIG91dCkgIj4+PiIpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGludC10by1zdHJpbmcgKGFzaCAoc3RyaW5nLXRvLW51bWJlciAobWF0 Y2gtc3RyaW5nIDIgb3V0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgqIC0xIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgNCBv dXQpKSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXF1YWwgKG1hdGNo LXN0cmluZyAzIG91dCkgIjw8PCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGludC10by1zdHJpbmcgKGFzaCAoc3RyaW5nLXRvLW51bWJlciAobWF0Y2gtc3RyaW5nIDIgb3V0 KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgNCBvdXQpKSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmluZyA1IG91dCkpCiAgICAgICAgICAgICAgICAg ICAgICAgbmlsIG5pbCBvdXQpKSkpKQogICAgICBvdXQpKSkKCjs7KHZlcmlsb2ctc2ltcGxpZnkt cmFuZ2UtZXhwcmVzc2lvbiAiWzE6M10iKSAgOyAxCjs7KHZlcmlsb2ctc2ltcGxpZnktcmFuZ2Ut ZXhwcmVzc2lvbiAiWygxKTozXSIpICA7IDEKOzsodmVyaWxvZy1zaW1wbGlmeS1yYW5nZS1leHBy ZXNzaW9uICJbKCgoMTYpKzEpKzErKDErMSkpXSIpICA7IDIwCjs7KHZlcmlsb2ctc2ltcGxpZnkt cmFuZ2UtZXhwcmVzc2lvbiAiWygyKjMrNio3KV0iKSAgOyA0OAo7Oyh2ZXJpbG9nLXNpbXBsaWZ5 LXJhbmdlLWV4cHJlc3Npb24gIlsoRk9PKjQtMSoyKV0iKSAgOyBGT08qNC0yCjs7KHZlcmlsb2ct c2ltcGxpZnktcmFuZ2UtZXhwcmVzc2lvbiAiWyhGT08qNCsxLTEpXSIpICA7IEZPTyo0KzAKOzso dmVyaWxvZy1zaW1wbGlmeS1yYW5nZS1leHByZXNzaW9uICJbKGZ1bmMoQkFSKSldIikgIDsgZnVu YyhCQVIpCjs7KHZlcmlsb2ctc2ltcGxpZnktcmFuZ2UtZXhwcmVzc2lvbiAiW0ZPTy0xKzEtMSsx XSIpICA7IEZPTy0wCjs7KHZlcmlsb2ctc2ltcGxpZnktcmFuZ2UtZXhwcmVzc2lvbiAiWyRjbG9n MigyKV0iKSAgOyAxCjs7KHZlcmlsb2ctc2ltcGxpZnktcmFuZ2UtZXhwcmVzc2lvbiAiWyRjbG9n Mig3KV0iKSAgOyAzCjs7KHZlcmlsb2ctc2ltcGxpZnktcmFuZ2UtZXhwcmVzc2lvbiAiWyhURVNU WzFdKS0xOjBdIikKOzsodmVyaWxvZy1zaW1wbGlmeS1yYW5nZS1leHByZXNzaW9uICJbMTw8Mjo4 Pj4yXSIpICA7IFs0OjJdCjs7KHZlcmlsb2ctc2ltcGxpZnktcmFuZ2UtZXhwcmVzc2lvbiAiWzIq NC8oNC0yKSArMis0IDw8NCA+PjJdIikKCihkZWZ1biB2ZXJpbG9nLWNsb2cyICh2YWx1ZSkKICAi Q29tcHV0ZSAkY2xvZzIgLSBjZWlsaW5nIGxvZzIgb2YgVkFMVUUuIgogIChpZiAoPCB2YWx1ZSAx KQogICAgICAwCiAgICAoY2VpbGluZyAoLyAobG9nIHZhbHVlKSAobG9nIDIpKSkpKQoKKGRlZnVu IHZlcmlsb2ctdHlwZWRlZi1uYW1lLXAgKHZhcmlhYmxlLW5hbWUpCiAgIlJldHVybiB0cnVlIGlm IHRoZSBWQVJJQUJMRS1OQU1FIGlzIGEgdHlwZSBkZWZpbml0aW9uLiIKICAod2hlbiB2ZXJpbG9n LXR5cGVkZWYtcmVnZXhwCiAgICAodmVyaWxvZy1zdHJpbmctbWF0Y2gtZm9sZCB2ZXJpbG9nLXR5 cGVkZWYtcmVnZXhwIHZhcmlhYmxlLW5hbWUpKSkKDAo7OzsgQXV0byBkZWxldGlvbjoKOzsKCihk ZWZ1biB2ZXJpbG9nLWRlbGV0ZS1hdXRvcy1saW5lZCAoKQogICJEZWxldGUgYXV0b3MgdGhhdCBv Y2N1cHkgbXVsdGlwbGUgbGluZXMsIGJldHdlZW4gYmVnaW4gYW5kIGVuZCBjb21tZW50cy4iCiAg OzsgVGhlIG5ld2xpbmUgbXVzdCBub3QgaGF2ZSBhIGNvbW1lbnQgcHJvcGVydHksIHNvIHdlIG11 c3QKICA7OyBkZWxldGUgdGhlIGVuZCBhdXRvJ3MgbmV3bGluZSwgbm90IHRoZSBmaXJzdCBuZXds aW5lCiAgKGZvcndhcmQtbGluZSAxKQogIChsZXQgKChwdCAocG9pbnQpKSkKICAgICh3aGVuIChh bmQKCSAgIChsb29raW5nLWF0ICJcXHMtKi8vIEJlZ2lubmluZyIpCgkgICAoc2VhcmNoLWZvcndh cmQgIi8vIEVuZCBvZiBhdXRvbWF0aWMiIG5pbCB0KSkKICAgICAgOzsgRW5kIGV4aXN0cwogICAg ICAoZW5kLW9mLWxpbmUpCiAgICAgIChmb3J3YXJkLWxpbmUgMSkKICAgICAgKGRlbGV0ZS1yZWdp b24gcHQgKHBvaW50KSkpKSkKCihkZWZ1biB2ZXJpbG9nLWRlbGV0ZS1lbXB0eS1hdXRvLXBhaXIg KCkKICAiRGVsZXRlIGJlZ2luL2VuZCBhdXRvIHBhaXIgYXQgcG9pbnQsIGlmIGVtcHR5LiIKICAo Zm9yd2FyZC1saW5lIDApCiAgKHdoZW4gKGxvb2tpbmctYXQgKGNvbmNhdCAiXFxzLSovLyBCZWdp bm5pbmcgb2YgYXV0b21hdGljLipcbiIKCQkJICAgICJcXHMtKi8vIEVuZCBvZiBhdXRvbWF0aWNz XG4iKSkKICAgIChkZWxldGUtcmVnaW9uIChwb2ludCkgKHNhdmUtZXhjdXJzaW9uIChmb3J3YXJk LWxpbmUgMikgKHBvaW50KSkpKSkKCihkZWZ1biB2ZXJpbG9nLWZvcndhcmQtY2xvc2UtcGFyZW4g KCkKICAiRmluZCB0aGUgY2xvc2UgcGFyZW50aGVzaXMgdGhhdCBtYXRjaCB0aGUgY3VycmVudCBw b2ludC4KSWdub3JlIG90aGVyIGNsb3NlIHBhcmVudGhlc2lzIHdpdGggbWF0Y2hpbmcgb3BlbiBw YXJlbnMuIgogIChsZXQgKChwYXJlbnMgMSkpCiAgICAod2hpbGUgKD4gcGFyZW5zIDApCiAgICAg ICh1bmxlc3MgKHZlcmlsb2ctcmUtc2VhcmNoLWZvcndhcmQtcXVpY2sgIlsoKV0iIG5pbCB0KQoJ KGVycm9yICIlczogTWlzbWF0Y2hpbmcgKCkiICh2ZXJpbG9nLXBvaW50LXRleHQpKSkKICAgICAg KGNvbmQgKCg9IChwcmVjZWRpbmctY2hhcikgP1woICkKCSAgICAgKHNldHEgcGFyZW5zICgxKyBw YXJlbnMpKSkKCSAgICAoKD0gKHByZWNlZGluZy1jaGFyKSA/XCkgKQoJICAgICAoc2V0cSBwYXJl bnMgKDEtIHBhcmVucykpKSkpKSkKCihkZWZ1biB2ZXJpbG9nLWJhY2t3YXJkLW9wZW4tcGFyZW4g KCkKICAiRmluZCB0aGUgb3BlbiBwYXJlbnRoZXNpcyB0aGF0IG1hdGNoIHRoZSBjdXJyZW50IHBv aW50LgpJZ25vcmUgb3RoZXIgb3BlbiBwYXJlbnRoZXNpcyB3aXRoIG1hdGNoaW5nIGNsb3NlIHBh cmVucy4iCiAgKGxldCAoKHBhcmVucyAxKSkKICAgICh3aGlsZSAoPiBwYXJlbnMgMCkKICAgICAg KHVubGVzcyAodmVyaWxvZy1yZS1zZWFyY2gtYmFja3dhcmQtcXVpY2sgIlsoKV0iIG5pbCB0KQoJ KGVycm9yICIlczogTWlzbWF0Y2hpbmcgKCkiICh2ZXJpbG9nLXBvaW50LXRleHQpKSkKICAgICAg KGNvbmQgKCg9IChmb2xsb3dpbmctY2hhcikgP1wpICkKCSAgICAgKHNldHEgcGFyZW5zICgxKyBw YXJlbnMpKSkKCSAgICAoKD0gKGZvbGxvd2luZy1jaGFyKSA/XCggKQoJICAgICAoc2V0cSBwYXJl bnMgKDEtIHBhcmVucykpKSkpKSkKCihkZWZ1biB2ZXJpbG9nLWJhY2t3YXJkLW9wZW4tYnJhY2tl dCAoKQogICJGaW5kIHRoZSBvcGVuIGJyYWNrZXQgdGhhdCBtYXRjaCB0aGUgY3VycmVudCBwb2lu dC4KSWdub3JlIG90aGVyIG9wZW4gYnJhY2tldCB3aXRoIG1hdGNoaW5nIGNsb3NlIGJyYWNrZXQu IgogIChsZXQgKChwYXJlbnMgMSkpCiAgICAod2hpbGUgKD4gcGFyZW5zIDApCiAgICAgICh1bmxl c3MgKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkLXF1aWNrICJbXVtdIiBuaWwgdCkKCShlcnJv ciAiJXM6IE1pc21hdGNoaW5nIFtdIiAodmVyaWxvZy1wb2ludC10ZXh0KSkpCiAgICAgIChjb25k ICgoPSAoZm9sbG93aW5nLWNoYXIpID9cXSApCgkgICAgIChzZXRxIHBhcmVucyAoMSsgcGFyZW5z KSkpCgkgICAgKCg9IChmb2xsb3dpbmctY2hhcikgP1xbICkKCSAgICAgKHNldHEgcGFyZW5zICgx LSBwYXJlbnMpKSkpKSkpCgooZGVmdW4gdmVyaWxvZy1kZWxldGUtdG8tcGFyZW4gKCkKICAiRGVs ZXRlIHRoZSBhdXRvbWF0aWMgaW5zdC9zZW5zZS9hcmcgY3JlYXRlZCBieSBhdXRvcy4KRGVsZXRp b24gc3RvcHMgYXQgdGhlIG1hdGNoaW5nIGVuZCBwYXJlbnRoZXNpcywgb3V0c2lkZSBjb21tZW50 cy4iCiAgKGRlbGV0ZS1yZWdpb24gKHBvaW50KQoJCSAoc2F2ZS1leGN1cnNpb24KCQkgICAodmVy aWxvZy1iYWNrd2FyZC1vcGVuLXBhcmVuKQogICAgICAgICAgICAgICAgICAgKHZlcmlsb2ctZm9y d2FyZC1zZXhwLWlnbi1jbXQgMSkgIDsgTW92ZXMgdG8gcGFyZW4gdGhhdCBjbG9zZXMgYXJnZGVj bCdzCgkJICAgKGJhY2t3YXJkLWNoYXIgMSkKCQkgICAocG9pbnQpKSkpCgooZGVmdW4gdmVyaWxv Zy1hdXRvLXN0YXItc2FmZSAoKQogICJSZXR1cm4gaWYgYSAuKiBBVVRPSU5TVCBpcyBzYWZlIHRv IGRlbGV0ZSBvciBleHBhbmQuCkl0IHdhcyBjcmVhdGVkIGJ5IHRoZSBBVVRPUyB0aGVtc2VsdmVz LCBvciBieSB0aGUgdXNlci4iCiAgKGFuZCB2ZXJpbG9nLWF1dG8tc3Rhci1leHBhbmQKICAgICAg IChsb29raW5nLWF0CgkoY29uY2F0ICJbIFx0XG5cZixdKlxcKFspXVxcfC8vICIgdmVyaWxvZy1p bnN0LWNvbW1lbnQtcmUgIlxcKSIpKSkpCgooZGVmdW4gdmVyaWxvZy1kZWxldGUtYXV0by1zdGFy LWFsbCAoKQogICJEZWxldGUgYSAuKiBBVVRPSU5TVCwgaWYgaXQgaXMgc2FmZS4iCiAgKHdoZW4g KHZlcmlsb2ctYXV0by1zdGFyLXNhZmUpCiAgICAodmVyaWxvZy1kZWxldGUtdG8tcGFyZW4pKSkK CihkZWZ1biB2ZXJpbG9nLWRlbGV0ZS1hdXRvLXN0YXItaW1wbGljaXQgKCkKICAiRGVsZXRlIGFs bCAuKiBpbXBsaWNpdCBjb25uZWN0aW9ucyBjcmVhdGVkIGJ5IGB2ZXJpbG9nLWF1dG8tc3Rhcicu ClRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYXV0b21hdGljYWxseSBhdCBzYXZlIHVubGVz cwpgdmVyaWxvZy1hdXRvLXN0YXItc2F2ZScgaXMgc2V0LCBhbnkgbm9uLXRlbXBsYXRlZCBleHBh bmRlZCBwaW5zIHdpbGwgYmUKcmVtb3ZlZC4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKHBhcmVu LXB0IGluZGVudCBoYXZlLWNsb3NlLXBhcmVuKQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgIChn b3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgIDs7IFdlIG5lZWQgdG8gbWF0Y2ggdGhlc2UgZXZl biBvdXRzaWRlIG9mIGNvbW1lbnRzLgogICAgICA7OyBGb3IgcmVhc29uYWJsZSBwZXJmb3JtYW5j ZSwgd2UgZG9uJ3QgY2hlY2sgaWYgaW5zaWRlIGNvbW1lbnRzLCBzb3JyeS4KICAgICAgKHdoaWxl IChyZS1zZWFyY2gtZm9yd2FyZCAiLy8gSW1wbGljaXQgXFwuXFwqIiBuaWwgdCkKCShzZXRxIHBh cmVuLXB0IChwb2ludCkpCgkoYmVnaW5uaW5nLW9mLWxpbmUpCgkoc2V0cSBoYXZlLWNsb3NlLXBh cmVuCgkgICAgICAoc2F2ZS1leGN1cnNpb24KCQkod2hlbiAoc2VhcmNoLWZvcndhcmQgIik7IiBw YXJlbi1wdCB0KQoJCSAgKHNldHEgaW5kZW50IChjdXJyZW50LWluZGVudGF0aW9uKSkKCQkgIHQp KSkKCShkZWxldGUtcmVnaW9uIChwb2ludCkgKCsgMSBwYXJlbi1wdCkpICA7IE51a2UgbGluZSBp bmNsIENSCgkod2hlbiBoYXZlLWNsb3NlLXBhcmVuCgkgIDs7IERlbGV0ZSBleHRyYSBjb21tZW50 YXJ5CgkgIChzYXZlLWV4Y3Vyc2lvbgoJICAgICh3aGlsZSAocHJvZ24KCQkgICAgIChmb3J3YXJk LWxpbmUgLTEpCgkJICAgICAobG9va2luZy1hdCAoY29uY2F0ICJcXHMgKi8vXFxzICoiIHZlcmls b2ctaW5zdC1jb21tZW50LXJlICJcbiIpKSkKCSAgICAgIChkZWxldGUtcmVnaW9uIChtYXRjaC1i ZWdpbm5pbmcgMCkgKG1hdGNoLWVuZCAwKSkpKQoJICA7OyBJZiBpdCBpcyBzaW1wbGUsIHdlIGNh biBwdXQgdGhlICk7IG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGxhc3QgdGV4dAoJICAobGV0ICgo cnRuLXB0IChwb2ludCkpKQoJICAgIChzYXZlLWV4Y3Vyc2lvbgoJICAgICAgKHdoaWxlIChwcm9n biAoYmFja3dhcmQtY2hhciAxKQoJCQkgICAgKGxvb2tpbmctYXQgIlsgXHRcblxmXSIpKSkKCSAg ICAgICh3aGVuIChsb29raW5nLWF0ICIsIikKCQkoZGVsZXRlLXJlZ2lvbiAoKyAxIChwb2ludCkp IHJ0bi1wdCkpKSkKCSAgKHdoZW4gKGJvbHApCgkgICAgKGluZGVudC10byBpbmRlbnQpKQoJICAo aW5zZXJ0ICIpO1xuIikKCSAgOzsgU3RpbGwgbmVlZCB0byBraWxsIGZpbmFsIGNvbW1hIC0gYWx3 YXlzIGlzIG9uZSBhcyB3ZSBwdXQgb25lIGFmdGVyIHRoZSAuKgoJICAocmUtc2VhcmNoLWJhY2t3 YXJkICIsIikKCSAgKGRlbGV0ZS1jaGFyIDEpKSkpKSkKCihkZWZ1biB2ZXJpbG9nLWRlbGV0ZS1h dXRvLWJ1ZmZlciAoKQogICJQZXJmb3JtIGB2ZXJpbG9nLWRlbGV0ZS1hdXRvJyBvbiB0aGUgY3Vy cmVudCBidWZmZXIuCkludGVuZGVkIGZvciBpbnRlcm5hbCB1c2UgaW5zaWRlIGEgYHZlcmlsb2ct c2F2ZS1mb250LW5vLWNoYW5nZS1mdW5jdGlvbnMnIGJsb2NrLiIKICA7OyBBbGxvdyB1c2VyIHRv IGN1c3RvbWl6ZQogICh2ZXJpbG9nLXJ1bi1ob29rcyAndmVyaWxvZy1iZWZvcmUtZGVsZXRlLWF1 dG8taG9vaykKCiAgOzsgUmVtb3ZlIHRob3NlIHRoYXQgaGF2ZSBtdWx0aS1saW5lIGluc2VydGlv bnMsIHBvc3NpYmx5IHdpdGggcGFyYW1ldGVycwogIDs7IFdlIGFsbG93IGFueXRoaW5nIGJlZ2lu bmluZyB3aXRoIEFVVE8sIHNvIHRoYXQgdXNlcnMgY2FuIGFkZCB0aGVpciBvd24KICA7OyBwYXR0 ZXJucwogICh2ZXJpbG9nLWF1dG8tcmUtc2VhcmNoLWRvCiAgIChjb25jYXQgIi9cXCpBVVRPW0Et WmEtejAtOV9dKyIKICAgICAgICAgICA7OyBPcHRpb25hbCBwYXJlbnMgb3IgcXVvdGVkIHBhcmFt ZXRlciBvciAuKiBmb3IgKCgoLi4uKSkpCiAgICAgICAgICAgIlxcKFxcfChbXildKilcXHwoXCJb XlwiXSpcIilcXCkuKj8iCiAgICAgICAgICAgIlxcKi8iKQogICAndmVyaWxvZy1kZWxldGUtYXV0 b3MtbGluZWQpCiAgOzsgUmVtb3ZlIHRob3NlIHRoYXQgYXJlIGluIHBhcmVudGhlc2lzCiAgKHZl cmlsb2ctYXV0by1yZS1zZWFyY2gtZG8KICAgKGNvbmNhdCAiL1xcKiIKICAgICAgICAgICAoZXZh bC13aGVuLWNvbXBpbGUKICAgICAgICAgICAgICh2ZXJpbG9nLXJlZ2V4cC13b3JkcwogICAgICAg ICAgICAgICcoIkFTIiAiQVVUT0FSRyIgIkFVVE9DT05DQVRXSURUSCIgIkFVVE9JTlNUIiAiQVVU T0lOU1RQQVJBTSIKICAgICAgICAgICAgICAgICJBVVRPU0VOU0UiKSkpCiAgICAgICAgICAgIlxc KCguKj8pXFwpPyIKICAgICAgICAgICAiXFwqLyIpCiAgICd2ZXJpbG9nLWRlbGV0ZS10by1wYXJl bikKICA7OyBEbyAuKiBpbnN0YW50aWF0aW9ucywgYnV0IGF2b2lkIHJlbW92aW5nIGFueSB1c2Vy IHBpbnMgYnkgbG9va2luZyBmb3Igb3VyIG1hZ2ljIGNvbW1lbnRzCiAgKHZlcmlsb2ctYXV0by1y ZS1zZWFyY2gtZG8gIlxcLlxcKiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyaWxv Zy1kZWxldGUtYXV0by1zdGFyLWFsbCkKICA7OyBSZW1vdmUgdGVtcGxhdGUgY29tbWVudHMgLi4u IGFueXdoZXJlIGluIGNhc2Ugd2FzIHBhc3RlZCBhZnRlciBBVVRPSU5TVCByZW1vdmVkCiAgKGdv dG8tY2hhciAocG9pbnQtbWluKSkKICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJcXHMtKi8v IFxcKFRlbXBsYXRlZFxcfEltcGxpY2l0IFxcLlxcKlxcKVxcKFsgXHRMVDAtOV0qXFx8IExIUzog LipcXCkkIiBuaWwgdCkKICAgIChyZXBsYWNlLW1hdGNoICIiKSkKCiAgOzsgRmluYWwgY3VzdG9t aXplCiAgKHZlcmlsb2ctcnVuLWhvb2tzICd2ZXJpbG9nLWRlbGV0ZS1hdXRvLWhvb2spKQoKKGRl ZnVuIHZlcmlsb2ctZGVsZXRlLWF1dG8gKCkKICAiRGVsZXRlIHRoZSBhdXRvbWF0aWMgb3V0cHV0 cywgcmVncywgYW5kIHdpcmVzIGNyZWF0ZWQgYnkgXFxbdmVyaWxvZy1hdXRvXS4KVXNlIFxcW3Zl cmlsb2ctYXV0b10gdG8gcmUtaW5zZXJ0IHRoZSB1cGRhdGVkIEFVVE9zLgoKVGhlIGhvb2tzIGB2 ZXJpbG9nLWJlZm9yZS1kZWxldGUtYXV0by1ob29rJyBhbmQgYHZlcmlsb2ctZGVsZXRlLWF1dG8t aG9vaycgYXJlCmNhbGxlZCBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgZnVuY3Rpb24sIHJlc3BlY3Rp dmVseS4iCiAgKGludGVyYWN0aXZlKQogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGlmIChidWZmZXIt ZmlsZS1uYW1lKQogICAgICAgIChmaW5kLWZpbGUtbm9zZWxlY3QgKGJ1ZmZlci1maWxlLW5hbWUp KSkgIDsgVG8gY2hlY2sgd2UgaGF2ZSBsYXRlc3QgdmVyc2lvbgogICAgKHZlcmlsb2ctc2F2ZS1m b250LW5vLWNoYW5nZS1mdW5jdGlvbnMKICAgICAodmVyaWxvZy1zYXZlLXNjYW4tY2FjaGUKICAg ICAgKHZlcmlsb2ctZGVsZXRlLWF1dG8tYnVmZmVyKSkpKSkKCgwKOzs7IEF1dG8gaW5qZWN0Ogo7 OwoKKGRlZnVuIHZlcmlsb2ctaW5qZWN0LWF1dG8gKCkKICAiRXhhbWluZSBsZWdhY3kgbm9uLUFV VE8gY29kZSBhbmQgaW5zZXJ0IEFVVE9zIGluIGFwcHJvcHJpYXRlIHBsYWNlcy4KCkFueSBhbHdh eXMgQCBibG9ja3Mgd2l0aCBzZW5zaXRpdml0eSBsaXN0cyB0aGF0IG1hdGNoIGNvbXB1dGVkIGxp c3RzIHdpbGwKYmUgcmVwbGFjZWQgd2l0aCAvKkFTKi8gY29tbWVudHMuCgpBbnkgY2VsbHMgd2ls bCBnZXQgLypBVVRPSU5TVCovIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHBpbiBsaXN0LgpQaW5z IHdpdGggaGF2ZSBpZGVudGljYWwgbmFtZXMgd2lsbCBiZSBkZWxldGVkLgoKQXJndW1lbnQgbGlz dHMgd2lsbCBub3QgYmUgZGVsZXRlZCwgLypBVVRPQVJHKi8gd2lsbCBvbmx5IGJlIGluc2VydGVk IHRvCnN1cHBvcnQgYWRkaW5nIG5ldyBwb3J0cy4gIFlvdSBtYXkgd2lzaCB0byBkZWxldGUgb2xk ZXIgcG9ydHMgeW91cnNlbGYuCgpGb3IgZXhhbXBsZToKCiAgICAgICAgbW9kdWxlIEV4YW1wSW5q ZWN0IChpLCBvKTsKICAgICAgICAgIGlucHV0IGk7CiAgICAgICAgICBpbnB1dCBqOwogICAgICAg ICAgb3V0cHV0IG87CiAgICAgICAgICBhbHdheXMgQCAoaSBvciBqKQogICAgICAgICAgICAgbyA9 IGkgfCBqOwogICAgICAgICAgSW5zdE1vZHVsZSBpbnN0TmFtZQogICAgICAgICAgICAoLmZvb2Jh cihiYXopLAogICAgICAgICAgICAgLmooaikpOwogICAgICAgIGVuZG1vZHVsZQoKVHlwaW5nIFxc W3Zlcmlsb2ctaW5qZWN0LWF1dG9dICh3aXRoIGFuIGFwcHJvcHJpYXRlIHN1Ym1vZHVsZSBub3QK c2hvd24pIHdpbGwgbWFrZSB0aGlzIGludG86CgogICAgICAgIG1vZHVsZSBFeGFtcEluamVjdCAo aSwgby8qQVVUT0FSRyovCiAgICAgICAgICAvLyBJbnB1dHMKICAgICAgICAgIGopOwogICAgICAg ICAgaW5wdXQgaTsKICAgICAgICAgIG91dHB1dCBvOwogICAgICAgICAgYWx3YXlzIEAgKC8qQVMq L2kgb3IgaikKICAgICAgICAgICAgIG8gPSBpIHwgajsKICAgICAgICAgIEluc3RNb2R1bGUgaW5z dE5hbWUKICAgICAgICAgICAgKC5mb29iYXIoYmF6KSwKICAgICAgICAgICAgIC8qQVVUT0lOU1Qq LwogICAgICAgICAgICAgLy8gT3V0cHV0cwogICAgICAgICAgICAgaihqKSk7CiAgICAgICAgZW5k bW9kdWxlIgogIChpbnRlcmFjdGl2ZSkKICAodmVyaWxvZy1hdXRvIHQpKQoKKGRlZnVuIHZlcmls b2ctaW5qZWN0LWFyZyAoKQogICJJbmplY3QgQVVUT0FSRyBpbnRvIG5ldyBjb2RlLiAgU2VlIGB2 ZXJpbG9nLWluamVjdC1hdXRvJy4iCiAgOzsgUHJlc3VtZSBvbmUgbW9kdWxlIHBlciBmaWxlLgog IChzYXZlLWV4Y3Vyc2lvbgogICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICh3aGlsZSAo dmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZC1xdWljayAiXFw8XFwoY29ubmVjdFxcKT9tb2R1bGVc XD4iIG5pbCB0KQogICAgICAobGV0ICgoZW5kbW9kcCAoc2F2ZS1leGN1cnNpb24KICAgICAgICAg ICAgICAgICAgICAgICh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkLXF1aWNrICJcXDxlbmRcXChj b25uZWN0XFwpP21vZHVsZVxcPiIgbmlsIHQpCgkJICAgICAgIChwb2ludCkpKSkKCTs7IFNlZSBp ZiB0aGVyZSdzIGFscmVhZHkgYSBjb21tZW50IC4uIGluc2lkZSBhIGNvbW1lbnQgc28gbm90IHZl cmlsb2ctcmUtc2VhcmNoCgkod2hlbiAobm90IChyZS1zZWFyY2gtZm9yd2FyZCAiL1xcKkFVVE9B UkdcXCovIiBlbmRtb2RwIHQpKQoJICAodmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZC1xdWljayAi OyIgbmlsIHQpCgkgIChiYWNrd2FyZC1jaGFyIDEpCgkgICh2ZXJpbG9nLWJhY2t3YXJkLXN5bnRh Y3RpYy13cy1xdWljaykKCSAgKGJhY2t3YXJkLWNoYXIgMSkgOyBNb3ZlcyB0byBwYXJlbiB0aGF0 IGNsb3NlcyBhcmdkZWNsJ3MKCSAgKHdoZW4gKGxvb2tpbmctYXQgIikiKQoJICAgICh2ZXJpbG9n LWluc2VydCAiLypBVVRPQVJHKi8iKSkpKSkpKQoKKGRlZnVuIHZlcmlsb2ctaW5qZWN0LXNlbnNl ICgpCiAgIkluamVjdCBBVVRPU0VOU0UgaW50byBuZXcgY29kZS4gIFNlZSBgdmVyaWxvZy1pbmpl Y3QtYXV0bycuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkK ICAgICh3aGlsZSAodmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZC1xdWljayAiXFw8YWx3YXlzXFxz ICpAXFxzICooIiBuaWwgdCkKICAgICAgKGxldCogKChzdGFydC1wdCAocG9pbnQpKQoJICAgICAo bW9kaSAodmVyaWxvZy1tb2RpLWN1cnJlbnQpKQoJICAgICAobW9kZGVjbHMgKHZlcmlsb2ctbW9k aS1nZXQtZGVjbHMgbW9kaSkpCgkgICAgIHByZS1zaWdzCgkgICAgIGdvdC1zaWdzKQoJKGJhY2t3 YXJkLWNoYXIgMSkKCSh2ZXJpbG9nLWZvcndhcmQtc2V4cC1pZ24tY210IDEpCiAgICAgICAgKGJh Y2t3YXJkLWNoYXIgMSkgIDsgRW5kICkKCSh3aGVuIChub3QgKHZlcmlsb2ctcmUtc2VhcmNoLWJh Y2t3YXJkLXF1aWNrICIvXFwqXFwoQVVUT1NFTlNFXFx8QVNcXClcXCovIiBzdGFydC1wdCB0KSkK CSAgKHNldHEgcHJlLXNpZ3MgKHZlcmlsb2ctc2lnbmFscy1mcm9tLXNpZ25hbWUKCQkJICAodmVy aWxvZy1yZWFkLXNpZ25hbHMgc3RhcnQtcHQgKHBvaW50KSkpCgkJZ290LXNpZ3MgKHZlcmlsb2ct YXV0by1zZW5zZS1zaWdzIG1vZGRlY2xzIG5pbCkpCgkgICh3aGVuIChub3QgKG9yICh2ZXJpbG9n LXNpZ25hbHMtbm90LWluIHByZS1zaWdzIGdvdC1zaWdzKSAgOyBCb3RoIGFyZSBlcXVhbD8KCQkJ ICh2ZXJpbG9nLXNpZ25hbHMtbm90LWluIGdvdC1zaWdzIHByZS1zaWdzKSkpCgkgICAgKGRlbGV0 ZS1yZWdpb24gc3RhcnQtcHQgKHBvaW50KSkKCSAgICAodmVyaWxvZy1pbnNlcnQgIi8qQVMqLyIp KSkpKSkpCgooZGVmdW4gdmVyaWxvZy1pbmplY3QtaW5zdCAoKQogICJJbmplY3QgQVVUT0lOU1Qg aW50byBuZXcgY29kZS4gIFNlZSBgdmVyaWxvZy1pbmplY3QtYXV0bycuIgogIChzYXZlLWV4Y3Vy c2lvbgogICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgIDs7IEl0J3MgaGFyZCB0byBkaXN0 aW5ndWlzaCBtb2R1bGVzOyB3ZSdsbCBpbnN0ZWFkIHNlYXJjaCBmb3IgcGlucy4KICAgICh3aGls ZSAodmVyaWxvZy1yZS1zZWFyY2gtZm9yd2FyZC1xdWljayAiXFwuXFxzICpbYS16QS1aMC05YF8k XStcXHMgKihcXHMgKlthLXpBLVowLTlgXyRdK1xccyAqKSIgbmlsIHQpCiAgICAgICh2ZXJpbG9n LWJhY2t3YXJkLW9wZW4tcGFyZW4pICA7IEluc3Qgc3RhcnQKICAgICAgKGNvbmQKICAgICAgICgo PSAocHJlY2VkaW5nLWNoYXIpID9cIykgIDsgIyguLi4pIHBhcmFtZXRlciBzZWN0aW9uLCBub3Qg cGluLiAgU2tpcC4KCShmb3J3YXJkLWNoYXIgMSkKICAgICAgICAodmVyaWxvZy1mb3J3YXJkLWNs b3NlLXBhcmVuKSkgIDsgUGFyYW1ldGVycyBkb25lCiAgICAgICAodAoJKGZvcndhcmQtY2hhciAx KQoJKGxldCAoKGluZGVudC1wdCAoKyAoY3VycmVudC1jb2x1bW4pKSkKCSAgICAgIChlbmQtcHQg KHNhdmUtZXhjdXJzaW9uICh2ZXJpbG9nLWZvcndhcmQtY2xvc2UtcGFyZW4pIChwb2ludCkpKSkK CSAgKGNvbmQgKCh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkLXF1aWNrICJcXCgvXFwqQVVUT0lO U1RcXCgoLio/KVxcKT9cXCovXFx8XFwuXFwqXFwpIiBlbmQtcHQgdCkKICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIGVuZC1wdCkpICA7IEFscmVhZHkgdGhlcmUsIGNvbnRpbnVlIHNlYXJjaCB3 aXRoIG5leHQgaW5zdGFuY2UKCQkodAoJCSA7OyBEZWxldGUgaWRlbnRpY2FsIGludGVyY29ubmVj dAogICAgICAgICAgICAgICAgIChsZXQgKChjYXNlLWZvbGQtc2VhcmNoIG5pbCkpICA7IFNvIHdl IGRvbid0IGNvbnZlcnQgdXBwZXItdG8tbG93ZXIsIGV0YwoJCSAgICh3aGlsZSAodmVyaWxvZy1y ZS1zZWFyY2gtZm9yd2FyZC1xdWljayAiXFwuXFxzICpcXChbYS16QS1aMC05YF8kXStcXClcXHMg KihcXHMgKlxcMVxccyAqKVxccyAqIiBlbmQtcHQgdCkKCQkgICAgIChkZWxldGUtcmVnaW9uICht YXRjaC1iZWdpbm5pbmcgMCkgKG1hdGNoLWVuZCAwKSkKICAgICAgICAgICAgICAgICAgICAgKHNl dHEgZW5kLXB0ICgtIGVuZC1wdCAoLSAobWF0Y2gtZW5kIDApIChtYXRjaC1iZWdpbm5pbmcgMCkp KSkgIDsgS2VlcCBpdCBjb3JyZWN0CgkJICAgICAod2hpbGUgKG9yIChsb29raW5nLWF0ICJbIFx0 XG5cZixdKyIpCgkJCQkobG9va2luZy1hdCAiLy9bXlxuXSoiKSkKCQkgICAgICAgKGRlbGV0ZS1y ZWdpb24gKG1hdGNoLWJlZ2lubmluZyAwKSAobWF0Y2gtZW5kIDApKQoJCSAgICAgICAoc2V0cSBl bmQtcHQgKC0gZW5kLXB0ICgtIChtYXRjaC1lbmQgMCkgKG1hdGNoLWJlZ2lubmluZyAwKSkpKSkp KQoJCSAodmVyaWxvZy1mb3J3YXJkLWNsb3NlLXBhcmVuKQoJCSAoYmFja3dhcmQtY2hhciAxKQoJ CSA7OyBOb3QgdmVyaWxvZy1yZS1zZWFyY2gsIGFzIHdlIGRvbid0IHdhbnQgdG8gc3RyaXAgY29t bWVudHMKCQkgKHdoaWxlIChyZS1zZWFyY2gtYmFja3dhcmQgIlsgXHRcblxmXSsiICgtIChwb2lu dCkgMSkgdCkKCQkgICAoZGVsZXRlLXJlZ2lvbiAobWF0Y2gtYmVnaW5uaW5nIDApIChtYXRjaC1l bmQgMCkpKQoJCSAodmVyaWxvZy1pbnNlcnQgIlxuIikKCQkgKHZlcmlsb2ctaW5zZXJ0LWluZGVu dCAiLypBVVRPSU5TVCovIikpKSkpKSkpKQoKOzsKOzsgQXV0byBkaWZmOgo7OwoKKGRlZnVuIHZl cmlsb2ctZGlmZi1idWZmZXJzLXAgKGIxIGIyICZvcHRpb25hbCB3aGl0ZXNwYWNlIHJlZ2V4cCkK ICAiUmV0dXJuIG5pbCBpZiBidWZmZXJzIEIxIGFuZCBCMiBoYXZlIHNhbWUgY29udGVudHMuCkVs c2UsIHJldHVybiBwb2ludCBpbiBCMSB0aGF0IGZpcnN0IG1pc21hdGNoZXMuCklmIG9wdGlvbmFs IFdISVRFU1BBQ0UgdHJ1ZSwgaWdub3JlIHdoaXRlc3BhY2UuCklmIG9wdGlvbmFsIFJFR0VYUCwg aWdub3JlIGRpZmZlcmVuY2VzIG1hdGNoaW5nIGl0LiIKICAoc2F2ZS1leGN1cnNpb24KICAgIChs ZXQqICgoY2FzZS1mb2xkLXNlYXJjaCBuaWwpICA7IGNvbXBhcmUtYnVmZmVyLXN1YnN0cmluZ3Mg Y2FyZXMKCSAgIChwMSAod2l0aC1jdXJyZW50LWJ1ZmZlciBiMSAoZ290by1jaGFyIChwb2ludC1t aW4pKSkpCgkgICAocDIgKHdpdGgtY3VycmVudC1idWZmZXIgYjIgKGdvdG8tY2hhciAocG9pbnQt bWluKSkpKQoJICAgKG1heHAxICh3aXRoLWN1cnJlbnQtYnVmZmVyIGIxIChwb2ludC1tYXgpKSkK CSAgIChtYXhwMiAod2l0aC1jdXJyZW50LWJ1ZmZlciBiMiAocG9pbnQtbWF4KSkpCgkgICAob3Ax IC0xKSAob3AyIC0xKQoJICAgcHJvZ3Jlc3Mgc2l6ZSkKICAgICAgKHdoaWxlIChub3QgKGFuZCAo ZXEgcDEgb3AxKSAoZXEgcDIgb3AyKSkpCgk7OyBJZiBib3RoIHdpbmRvd3MgaGF2ZSB3aGl0ZXNw YWNlIG9wdGlvbmFsbHkgc2tpcCBvdmVyIGl0LgoJKHdoZW4gd2hpdGVzcGFjZQoJICA7OyBza2lw LXN5bnRheC0qIGRvZXNuJ3QgY291bnQgXG4KCSAgKHdpdGgtY3VycmVudC1idWZmZXIgYjEKCSAg ICAoZ290by1jaGFyIHAxKQoJICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdFxuXHJcZlx2IikK CSAgICAoc2V0cSBwMSAocG9pbnQpKSkKCSAgKHdpdGgtY3VycmVudC1idWZmZXIgYjIKCSAgICAo Z290by1jaGFyIHAyKQoJICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdFxuXHJcZlx2IikKCSAg ICAoc2V0cSBwMiAocG9pbnQpKSkpCgkod2hlbiByZWdleHAKCSAgKHdpdGgtY3VycmVudC1idWZm ZXIgYjEKCSAgICAoZ290by1jaGFyIHAxKQoJICAgICh3aGVuIChsb29raW5nLWF0IHJlZ2V4cCkK ICAgICAgICAgICAgICAoc2V0cSBwMSAobWF0Y2gtZW5kIDApKSkpCgkgICh3aXRoLWN1cnJlbnQt YnVmZmVyIGIyCgkgICAgKGdvdG8tY2hhciBwMikKCSAgICAod2hlbiAobG9va2luZy1hdCByZWdl eHApCiAgICAgICAgICAgICAgKHNldHEgcDIgKG1hdGNoLWVuZCAwKSkpKSkKCShzZXRxIHNpemUg KG1pbiAoLSBtYXhwMSBwMSkgKC0gbWF4cDIgcDIpKSkKCShzZXRxIHByb2dyZXNzIChjb21wYXJl LWJ1ZmZlci1zdWJzdHJpbmdzIGIyIHAyICgrIHNpemUgcDIpCgkJCQkJCSAgYjEgcDEgKCsgc2l6 ZSBwMSkpKQoJKHNldHEgcHJvZ3Jlc3MgKGlmICh6ZXJvcCBwcm9ncmVzcykgc2l6ZSAoMS0gKGFi cyBwcm9ncmVzcykpKSkKCShzZXRxIG9wMSBwMSAgb3AyIHAyCgkgICAgICBwMSAoKyBwMSBwcm9n cmVzcykKCSAgICAgIHAyICgrIHAyIHByb2dyZXNzKSkpCiAgICAgIDs7IFJldHVybiB2YWx1ZQog ICAgICAoaWYgKGFuZCAoZXEgcDEgbWF4cDEpIChlcSBwMiBtYXhwMikpCgkgIG5pbCBwMSkpKSkK CihkZWZ1biB2ZXJpbG9nLWRpZmYtZmlsZS13aXRoLWJ1ZmZlciAoZjEgYjIgJm9wdGlvbmFsIHdo aXRlc3BhY2Ugc2hvdykKICAiVmlldyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBmaWxlIEYxIGFu ZCBidWZmZXIgQjIuClRoaXMgcmVxdWlyZXMgdGhlIGV4dGVybmFsIHByb2dyYW0gYGRpZmYtY29t bWFuZCcgdG8gYmUgaW4geW91ciBgZXhlYy1wYXRoJywKYW5kIHVzZXMgYGRpZmYtc3dpdGNoZXMn IGluIHdoaWNoIHlvdSBtYXkgd2FudCB0byBoYXZlIFwiLXVcIiBmbGFnLgpJZ25vcmVzIFdISVRF U1BBQ0UgaWYgdCwgYW5kIHdyaXRlcyBvdXRwdXQgdG8gc3Rkb3V0IGlmIFNIT1cuIgogIDs7IFNp bWlsYXIgdG8gYGRpZmYtYnVmZmVyLXdpdGgtZmlsZScgYnV0IHdvcmtzIG9uIFhFbWFjcywgYW5k IGRvZXNuJ3QKICA7OyBjYWxsIGBkaWZmJyBhcyBgZGlmZicgaGFzIGRpZmZlcmVudCBjYWxsaW5n IHNlbWFudGljcyBvbiBkaWZmZXJlbnQKICA7OyB2ZXJzaW9ucyBvZiBFbWFjcy4KICAoaWYgKG5v dCAoZmlsZS1leGlzdHMtcCBmMSkpCiAgICAgIChtZXNzYWdlICJCdWZmZXIgYCVzJyBoYXMgbm8g YXNzb2NpYXRlZCBmaWxlIG9uIGRpc2siIChidWZmZXItbmFtZSBiMikpCiAgICAod2l0aC10ZW1w LWJ1ZmZlciAiKlZlcmlsb2ctRGlmZioiCiAgICAgICAgICAgICAgICAgICAgICAobGV0ICgob3V0 YnVmIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZjIgKG1h a2UtdGVtcC1maWxlICJ2bS1kaWZmLWF1dG8tIikpKQogICAgICAgICAgICAgICAgICAgICAgICAo dW53aW5kLXByb3RlY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBiMgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAod2lkZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAod3JpdGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpIGYyIG5pbCAnbm9tZXNzYWdl KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWxsLXByb2Nlc3MgZGlmZi1jb21t YW5kIG5pbCBvdXRidWYgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRpZmYtc3dpdGNoZXMgIDsgVXNlciBtYXkgd2FudCAtdSBpbiBkaWZmLXN3aXRjaGVzCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHdoaXRlc3BhY2Ug Ii1iIiAiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMSBm MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgUHJpbnQgb3V0IHJlc3VsdHMuICBB bHRlcm5hdGl2ZWx5IHdlIGNvdWxkIGhhdmUgY2FsbC1wcm9jZXNzZWQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgb3Vyc2VsZiwgYnV0IHRoaXMgd2F5IHdlIGNhbiByZXVzZSBkaWZm IHN3aXRjaGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIHNob3cKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBvdXRidWYgKG1l c3NhZ2UgIiVzIiAoYnVmZmVyLXN0cmluZykpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAo c2l0LWZvciAwKQogICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoZmlsZS1leGlzdHMtcCBm MikKICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWZpbGUgZjIpKSkpKSkKCihkZWZ1 biB2ZXJpbG9nLWRpZmYtcmVwb3J0IChiMSBiMiBkaWZmcHQpCiAgIlJlcG9ydCBkaWZmZXJlbmNl cyBkZXRlY3RlZCB3aXRoIGB2ZXJpbG9nLWRpZmYtYXV0bycuCkRpZmZlcmVuY2VzIGFyZSBiZXR3 ZWVuIGJ1ZmZlcnMgQjEgYW5kIEIyLCBzdGFydGluZyBhdCBwb2ludApESUZGUFQuICBUaGlzIGZ1 bmN0aW9uIGlzIGNhbGxlZCB2aWEgYHZlcmlsb2ctZGlmZi1mdW5jdGlvbicuIgogIChsZXQgKChu YW1lMSAod2l0aC1jdXJyZW50LWJ1ZmZlciBiMSAoYnVmZmVyLWZpbGUtbmFtZSkpKSkKICAgICh2 ZXJpbG9nLXdhcm4tZXJyb3IgIiVzOiVkOiBEaWZmZXJlbmNlIGluIEFVVE8gZXhwYW5zaW9uIGZv dW5kIgogICAgICAgICAgICAgICAgICAgICAgICBuYW1lMSAod2l0aC1jdXJyZW50LWJ1ZmZlciBi MQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb3VudC1saW5lcyAocG9pbnQtbWlu KSBkaWZmcHQpKSkKICAgIChjb25kIChub25pbnRlcmFjdGl2ZQoJICAgKHZlcmlsb2ctZGlmZi1m aWxlLXdpdGgtYnVmZmVyIG5hbWUxIGIyIHQgdCkpCgkgICh0CgkgICAoZWRpZmYtYnVmZmVycyBi MSBiMikpKSkpCgooZGVmdW4gdmVyaWxvZy1kaWZmLWF1dG8gKCkKICAiRXhwYW5kIEFVVE9zIGlu IGEgdGVtcG9yYXJ5IGJ1ZmZlciBhbmQgaW5kaWNhdGUgYW55IGNoYW5nZS4KV2hpdGVzcGFjZSBp cyBpZ25vcmVkIHdoZW4gZGV0ZWN0aW5nIGRpZmZlcmVuY2VzLCBidXQgb25jZSBhCmRpZmZlcmVu Y2UgaXMgZGV0ZWN0ZWQsIHdoaXRlc3BhY2UgZGlmZmVyZW5jZXMgbWF5IGJlIHNob3duLgoKVG8g Y2FsbCB0aGlzIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgc2VlIFxcW3Zlcmlsb2ctYmF0Y2gtZGlm Zi1hdXRvXS4KClRoZSBhY3Rpb24gb24gZGlmZmVyZW5jZXMgaXMgc2VsZWN0ZWQgd2l0aApgdmVy aWxvZy1kaWZmLWZ1bmN0aW9uJy4gIFRoZSBkZWZhdWx0IGlzIGB2ZXJpbG9nLWRpZmYtcmVwb3J0 Jwp3aGljaCB3aWxsIHJlcG9ydCBhbiBlcnJvciBhbmQgcnVuIGBlZGlmZicgaW4gaW50ZXJhY3Rp dmUgbW9kZSwKb3IgYGRpZmYnIGluIGJhdGNoIG1vZGUuIgogIChpbnRlcmFjdGl2ZSkKICAobGV0 ICgoYjEgKGN1cnJlbnQtYnVmZmVyKSkgYjIgZGlmZnB0CgkobmFtZTEgKGJ1ZmZlci1maWxlLW5h bWUpKQoJKG5ld25hbWUgIipWZXJpbG9nLURpZmYqIikpCiAgICAoc2F2ZS1leGN1cnNpb24KICAg ICAgKHdoZW4gKGdldC1idWZmZXIgbmV3bmFtZSkKCShraWxsLWJ1ZmZlciBuZXduYW1lKSkKICAg ICAgKHNldHEgYjIgKGxldCAoYnVmZmVyLWZpbGUtbmFtZSkgIDsgRWxzZSBjbG9uZSBpcyB1cHNl dAoJCSAoY2xvbmUtYnVmZmVyIG5ld25hbWUpKSkKICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIg YjIKCTs7IGF1dG8gcmVxdWlyZXMgdGhlIGZpbGVuYW1lLCBidXQgY2FuJ3QgaGF2ZSBzYW1lIGZp bGVuYW1lIGluIHR3bwoJOzsgYnVmZmVyczsgc28gb3ZlcnJpZGUgYm90aCBiMSBhbmQgYjIncyBu YW1lcwoJKGxldCAoKGJ1ZmZlci1maWxlLW5hbWUgbmFtZTEpKQoJICAodW53aW5kLXByb3RlY3QK CSAgICAgIChwcm9nbgoJCSh3aXRoLWN1cnJlbnQtYnVmZmVyIGIxIChzZXRxIGJ1ZmZlci1maWxl LW5hbWUgbmlsKSkKCQkodmVyaWxvZy1hdXRvKQogICAgICAgICAgICAgICAgKHZlcmlsb2ctc3Rh ci1jbGVhbnVwKSkKCSAgICA7OyBSZXN0b3JlIG5hbWUgaWYgdW53aW5kCgkgICAgKHdpdGgtY3Vy cmVudC1idWZmZXIgYjEgKHNldHEgYnVmZmVyLWZpbGUtbmFtZSBuYW1lMSkpKSkpCiAgICAgIDs7 CiAgICAgIChzZXRxIGRpZmZwdCAodmVyaWxvZy1kaWZmLWJ1ZmZlcnMtcCBiMSBiMiB0IHZlcmls b2ctZGlmZi1pZ25vcmUtcmVnZXhwKSkKICAgICAgKGNvbmQgKChub3QgZGlmZnB0KQoJICAgICAo dW5sZXNzIG5vbmludGVyYWN0aXZlIChtZXNzYWdlICJBVVRPIGV4cGFuc2lvbiBpZGVudGljYWwi KSkKICAgICAgICAgICAgIChraWxsLWJ1ZmZlciBuZXduYW1lKSkgIDsgTmljZSB0byBjbGVhbnVw IGFmdGVyIG9uZXNlbGYKCSAgICAodAoJICAgICAoZnVuY2FsbCB2ZXJpbG9nLWRpZmYtZnVuY3Rp b24gYjEgYjIgZGlmZnB0KSkpCiAgICAgIDs7IFJldHVybiByZXN1bHQgb2YgY29tcGFyZQogICAg ICBkaWZmcHQpKSkKCjs7Cjs7IEF1dG8gc2F2ZQo7OwoKKGRlZnVuIHZlcmlsb2ctc3Rhci1jbGVh bnVwICgpCiAgIk9uIHNhdmluZyBvciBkaWZmLCBjbGVhbnVwIC4qIGV4cGFuc2lvbnMuIgogICh3 aGVuIChub3QgdmVyaWxvZy1hdXRvLXN0YXItc2F2ZSkKICAgICh2ZXJpbG9nLWRlbGV0ZS1hdXRv LXN0YXItaW1wbGljaXQpKSkKCihkZWZ1biB2ZXJpbG9nLWF1dG8tc2F2ZS1jaGVjayAoKQogICJP biBzYXZpbmcgc2VlIGlmIHdlIG5lZWQgYXV0byB1cGRhdGUuIgogIChjb25kICgobm90IHZlcmls b2ctYXV0by1zYXZlLXBvbGljeSkpIDsgZGlzYWJsZWQKCSgobm90IChzYXZlLWV4Y3Vyc2lvbgoJ CShzYXZlLW1hdGNoLWRhdGEKCQkgIChsZXQgKChjYXNlLWZvbGQtc2VhcmNoIG5pbCkpCgkJICAg IChnb3RvLWNoYXIgKHBvaW50LW1pbikpCgkJICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiQVVUTyIg bmlsIHQpKSkpKSkKCSgoZXEgdmVyaWxvZy1hdXRvLXNhdmUtcG9saWN5ICdmb3JjZSkKCSAodmVy aWxvZy1hdXRvKSkKCSgobm90IChidWZmZXItbW9kaWZpZWQtcCkpKQoJKChlcSB2ZXJpbG9nLWF1 dG8tdXBkYXRlLXRpY2sgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrKSkpIDsgdXAtdG8tZGF0 ZQoJKChlcSB2ZXJpbG9nLWF1dG8tc2F2ZS1wb2xpY3kgJ2RldGVjdCkKCSAodmVyaWxvZy1hdXRv KSkKCSh0CgkgKHdoZW4gKHllcy1vci1uby1wICJBVVRPIHN0YXRlbWVudHMgbm90IHJlY29tcHV0 ZWQsIGRvIGl0IG5vdz8gIikKCSAgICh2ZXJpbG9nLWF1dG8pKQoJIDs7IERvbid0IGFzayBhZ2Fp biBpZiBkaWRuJ3QgdXBkYXRlCgkgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAndmVyaWxvZy1h dXRvLXVwZGF0ZS10aWNrKSAoYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2spKSkpCiAgKHZlcmls b2ctc3Rhci1jbGVhbnVwKQogIG5pbCkgIDsgQWx3YXlzIHJldHVybiBuaWwgLS0gd2UgZG9uJ3Qg d3JpdGUgdGhlIGZpbGUgb3Vyc2VsdmVzCgooZGVmdW4gdmVyaWxvZy1hdXRvLXJlYWQtbG9jYWxz ICgpCiAgIlJldHVybiBmaWxlIGxvY2FsIHZhcmlhYmxlIHNlZ21lbnQgYXQgYm90dG9tIG9mIGZp bGUuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgIChp ZiAocmUtc2VhcmNoLWJhY2t3YXJkICJMb2NhbCBWYXJpYWJsZXM6IiBuaWwgdCkKCShidWZmZXIt c3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKHBvaW50KSAocG9pbnQtbWF4KSkKICAgICAgIiIpKSkK CihkZWZ1biB2ZXJpbG9nLWF1dG8tcmVldmFsLWxvY2FscyAoJm9wdGlvbmFsIGZvcmNlKQogICJS ZWFkIGZpbGUgbG9jYWwgdmFyaWFibGUgc2VnbWVudCBhdCBib3R0b20gb2YgZmlsZSBpZiBpdCBo YXMgY2hhbmdlZC4KSWYgRk9SQ0UsIGFsd2F5cyByZXJlYWQgaXQuIgogIChsZXQgKChjdXJsb2Nh bCAodmVyaWxvZy1hdXRvLXJlYWQtbG9jYWxzKSkpCiAgICAod2hlbiAob3IgZm9yY2UgKG5vdCAo ZXF1YWwgdmVyaWxvZy1hdXRvLWxhc3QtZmlsZS1sb2NhbHMgY3VybG9jYWwpKSkKICAgICAgKHNl dCAobWFrZS1sb2NhbC12YXJpYWJsZSAndmVyaWxvZy1hdXRvLWxhc3QtZmlsZS1sb2NhbHMpIGN1 cmxvY2FsKQogICAgICA7OyBOb3RlIHRoaXMgbWF5IGNhdXNlIHRoaXMgZnVuY3Rpb24gdG8gYmUg cmVjdXJzaXZlbHkgaW52b2tlZCwKICAgICAgOzsgYmVjYXVzZSBoYWNrLWxvY2FsLXZhcmlhYmxl cyBtYXkgY2FsbCAodmVyaWxvZy1tb2RlKQogICAgICA7OyBUaGUgYWJvdmUgd2hlbiBzdGF0ZW1l bnQgd2lsbCBwcmV2ZW50IGl0IGZyb20gcmVjdXJzaW5nIGZvcmV2ZXIuCiAgICAgIChoYWNrLWxv Y2FsLXZhcmlhYmxlcykKICAgICAgdCkpKQoMCjs7OyBBdXRvIGNyZWF0aW9uOgo7OwoKKGRlZnVu IHZlcmlsb2ctYXV0by1hcmctcG9ydHMgKHNpZ3MgbWVzc2FnZSBpbmRlbnQtcHQpCiAgIlByaW50 IGEgbGlzdCBvZiBwb3J0cyBmb3IgQVVUT0FSRy4KVGFrZXMgU0lHUyBsaXN0LCBhZGRzIE1FU1NB R0UgdG8gZnJvbnQgYW5kIGluc2VydHMgZWFjaCBhdCBJTkRFTlQtUFQuIgogICh3aGVuIHNpZ3MK ICAgICh3aGVuIHZlcmlsb2ctYXV0by1hcmctc29ydAogICAgICAoc2V0cSBzaWdzIChzb3J0IChj b3B5LWFsaXN0IHNpZ3MpICMndmVyaWxvZy1zaWduYWxzLXNvcnQtY29tcGFyZSkpKQogICAgKGlu c2VydCAiXG4iKQogICAgKGluZGVudC10byBpbmRlbnQtcHQpCiAgICAoaW5zZXJ0IG1lc3NhZ2Up CiAgICAoaW5zZXJ0ICJcbiIpCiAgICAobGV0ICgoc3BhY2UgIiIpKQogICAgICAoaW5kZW50LXRv IGluZGVudC1wdCkKICAgICAgKHdoaWxlIHNpZ3MKCShjb25kICgoZXF1YWwgdmVyaWxvZy1hdXRv LWFyZy1mb3JtYXQgJ3NpbmdsZSkKCSAgICAgICAoaW5zZXJ0IHNwYWNlKQoJICAgICAgIChpbmRl bnQtdG8gaW5kZW50LXB0KQoJICAgICAgIChzZXRxIHNwYWNlICJcbiIpKQoJICAgICAgOzsgdmVy aWxvZy1hdXRvLWFyZy1mb3JtYXQgJ3BhY2tlZAoJICAgICAgKCg+ICgrIDIgKGN1cnJlbnQtY29s dW1uKSAobGVuZ3RoICh2ZXJpbG9nLXNpZy1uYW1lIChjYXIgc2lncykpKSkgZmlsbC1jb2x1bW4p CgkgICAgICAgKGluc2VydCAiXG4iKQoJICAgICAgIChpbmRlbnQtdG8gaW5kZW50LXB0KQoJICAg ICAgIChzZXRxIHNwYWNlICIgIikpCgkgICAgICAodAoJICAgICAgIChpbnNlcnQgc3BhY2UpCgkg ICAgICAgKHNldHEgc3BhY2UgIiAiKSkpCgkoaW5zZXJ0ICh2ZXJpbG9nLXNpZy1uYW1lIChjYXIg c2lncykpICIsIikKCShzZXRxIHNpZ3MgKGNkciBzaWdzKSkpKSkpCgooZGVmdW4gdmVyaWxvZy1h dXRvLWFyZyAoKQogICJFeHBhbmQgQVVUT0FSRyBzdGF0ZW1lbnRzLgpSZXBsYWNlIHRoZSBhcmd1 bWVudCBkZWNsYXJhdGlvbnMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKbW9kdWxlIHdpdGggb25l cyBhdXRvbWF0aWNhbGx5IGRlcml2ZWQgZnJvbSBpbnB1dCBhbmQgb3V0cHV0CnN0YXRlbWVudHMu ICBUaGlzIGNhbiBiZSBkYW5nZXJvdXMgaWYgdGhlIG1vZHVsZSBpcyBpbnN0YW50aWF0ZWQKdXNp bmcgcG9zaXRpb24tYmFzZWQgY29ubmVjdGlvbnMsIHNvIHVzZSBvbmx5IG5hbWUtYmFzZWQgd2hl bgppbnN0YW50aWF0aW5nIHRoZSByZXN1bHRpbmcgbW9kdWxlLiAgTG9uZyBsaW5lcyBhcmUgc3Bs aXQgYmFzZWQKb24gdGhlIGBmaWxsLWNvbHVtbicsIHNlZSBcXFtzZXQtZmlsbC1jb2x1bW5dLgoK TGltaXRhdGlvbnM6CiAgQ29uY2F0ZW5hdGlvbiBhbmQgb3V0cHV0dGluZyBwYXJ0aWFsIGJ1c2Vz IGlzIG5vdCBzdXBwb3J0ZWQuCgogIFR5cGVkZWZzIG11c3QgbWF0Y2ggYHZlcmlsb2ctdHlwZWRl Zi1yZWdleHAnLCB3aGljaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgoKRm9yIGV4YW1wbGU6Cgog ICAgICAgIG1vZHVsZSBFeGFtcEFyZyAoLypBVVRPQVJHKi8pOwogICAgICAgICAgaW5wdXQgaTsK ICAgICAgICAgIG91dHB1dCBvOwogICAgICAgIGVuZG1vZHVsZQoKVHlwaW5nIFxcW3Zlcmlsb2ct YXV0b10gd2lsbCBtYWtlIHRoaXMgaW50bzoKCiAgICAgICAgbW9kdWxlIEV4YW1wQXJnICgvKkFV VE9BUkcqLwogICAgICAgICAgLy8gT3V0cHV0cwogICAgICAgICAgbywKICAgICAgICAgIC8vIElu cHV0cwogICAgICAgICAgaSk7CiAgICAgICAgICBpbnB1dCBpOwogICAgICAgICAgb3V0cHV0IG87 CiAgICAgICAgZW5kbW9kdWxlCgpUaGUgYXJndW1lbnQgZGVjbGFyYXRpb25zIG1heSBiZSBwcmlu dGVkIGluIGRlY2xhcmF0aW9uIG9yZGVyIHRvCmJlc3Qgc3VpdCBvcmRlciBiYXNlZCBpbnN0YW50 aWF0aW9ucywgb3IgYWxwaGFiZXRpY2FsbHksIGJhc2VkIG9uCnRoZSBgdmVyaWxvZy1hdXRvLWFy Zy1zb3J0JyB2YXJpYWJsZS4KCkZvcm1hdHRpbmcgaXMgY29udHJvbGxlZCB3aXRoIGB2ZXJpbG9n LWF1dG8tYXJnLWZvcm1hdCcgdmFyaWFibGUuCgpBbnkgcG9ydHMgZGVjbGFyZWQgYmV0d2VlbiB0 aGUgKCBhbmQgLypBVVRPQVJHKi8gYXJlIHByZXN1bWVkIHRvIGJlCnByZWRlY2xhcmVkIGFuZCBh cmUgbm90IHJlZGVjbGFyZWQgYnkgQVVUT0FSRy4gIEFVVE9BUkcgd2lsbCBtYWtlIGEKY29uc2Vy dmF0aXZlIGd1ZXNzIG9uIGFkZGluZyBhIGNvbW1hIGZvciB0aGUgZmlyc3Qgc2lnbmFsLCBpZiB5 b3UgaGF2ZQphbnkgaWZkZWZzIG9yIGNvbXBsaWNhdGVkIGV4cHJlc3Npb25zIGJlZm9yZSB0aGUg QVVUT0FSRyB5b3Ugd2lsbCBuZWVkCnRvIGNob29zZSB0aGUgY29tbWEgeW91cnNlbGYuCgpBdm9p ZCBkZWNsYXJpbmcgcG9ydHMgbWFudWFsbHksIGFzIGl0IG1ha2VzIGNvZGUgaGFyZGVyIHRvIG1h aW50YWluLiIKICAoc2F2ZS1leGN1cnNpb24KICAgIChsZXQqICgobW9kaSAodmVyaWxvZy1tb2Rp LWN1cnJlbnQpKQoJICAgKG1vZGRlY2xzICh2ZXJpbG9nLW1vZGktZ2V0LWRlY2xzIG1vZGkpKQoJ ICAgKHNraXAtcGlucyAoYXJlZiAodmVyaWxvZy1yZWFkLWFyZy1waW5zKSAwKSkpCiAgICAgICh2 ZXJpbG9nLXJlcGFpci1vcGVuLWNvbW1hKQogICAgICAodmVyaWxvZy1hdXRvLWFyZy1wb3J0cyAo dmVyaWxvZy1zaWduYWxzLW5vdC1pbgoJCQkgICAgICAgKHZlcmlsb2ctZGVjbHMtZ2V0LW91dHB1 dHMgbW9kZGVjbHMpCgkJCSAgICAgICBza2lwLXBpbnMpCgkJCSAgICAgICIvLyBPdXRwdXRzIgoJ CQkgICAgICB2ZXJpbG9nLWluZGVudC1sZXZlbC1kZWNsYXJhdGlvbikKICAgICAgKHZlcmlsb2ct YXV0by1hcmctcG9ydHMgKHZlcmlsb2ctc2lnbmFscy1ub3QtaW4KCQkJICAgICAgICh2ZXJpbG9n LWRlY2xzLWdldC1pbm91dHMgbW9kZGVjbHMpCgkJCSAgICAgICBza2lwLXBpbnMpCgkJCSAgICAg ICIvLyBJbm91dHMiCgkJCSAgICAgIHZlcmlsb2ctaW5kZW50LWxldmVsLWRlY2xhcmF0aW9uKQog ICAgICAodmVyaWxvZy1hdXRvLWFyZy1wb3J0cyAodmVyaWxvZy1zaWduYWxzLW5vdC1pbgoJCQkg ICAgICAgKHZlcmlsb2ctZGVjbHMtZ2V0LWlucHV0cyBtb2RkZWNscykKCQkJICAgICAgIHNraXAt cGlucykKCQkJICAgICAgIi8vIElucHV0cyIKCQkJICAgICAgdmVyaWxvZy1pbmRlbnQtbGV2ZWwt ZGVjbGFyYXRpb24pCiAgICAgICh2ZXJpbG9nLXJlcGFpci1jbG9zZS1jb21tYSkKICAgICAgKHVu bGVzcyAoZXEgKGNoYXItYmVmb3JlKSA/LyApCgkoaW5zZXJ0ICJcbiIpKQogICAgICAoaW5kZW50 LXRvIHZlcmlsb2ctaW5kZW50LWxldmVsLWRlY2xhcmF0aW9uKSkpKQoKKGRlZnVuIHZlcmlsb2ct YXV0by1hc3NpZ24tbW9kcG9ydCAoKQogICJFeHBhbmQgQVVUT0FTU0lHTk1PRFBPUlQgc3RhdGVt ZW50cywgYXMgcGFydCBvZiBcXFt2ZXJpbG9nLWF1dG9dLgpUYWtlIGlucHV0L291dHB1dC9pbm91 dCBzdGF0ZW1lbnRzIGZyb20gdGhlIHNwZWNpZmllZCBpbnRlcmZhY2UKYW5kIG1vZHBvcnQgYW5k IHVzZSB0byBidWlsZCBhc3NpZ25tZW50cyBpbnRvIHRoZSBtb2Rwb3J0LCBmb3IKbWFraW5nIHZl cmlmaWNhdGlvbiBtb2R1bGVzIHRoYXQgY29ubmVjdCB0byBVVk0gaW50ZXJmYWNlcy4KCiAgVGhl IGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgbmFtZSBvZiBhbiBpbnRlcmZhY2UuCgogIFRoZSBzZWNv bmQgcGFyYW1ldGVyIGlzIGEgcmVnZXhwIG9mIG1vZHBvcnRzIHRvIHJlYWQgZnJvbSBpbgogIHRo YXQgaW50ZXJmYWNlLgoKICBUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIHRoZSBpbnN0YW5jZSBuYW1l IHRvIHVzZSB0byBkb3QgcmVmZXJlbmNlIGludG8uCgogIFRoZSBvcHRpb25hbCBmb3VydGggcGFy YW1ldGVyIGlzIGEgcmVndWxhciBleHByZXNzaW9uLCBhbmQgb25seQogIHNpZ25hbHMgbWF0Y2hp bmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aWxsIGJlIGluY2x1ZGVkLgoKICBUaGUgb3B0aW9u YWwgZmlmdGggcGFyYW1ldGVyIGlzIGEgcHJlZml4IHRvIGFkZCB0byB0aGUgc2lnbmFscy4KCkxp bWl0YXRpb25zOgoKICBJbnRlcmZhY2UgbmFtZXMgbXVzdCBiZSByZXNvbHZhYmxlIHRvIGZpbGVu YW1lcy4gIFNlZSBgdmVyaWxvZy1hdXRvLWluc3QnLgoKICBJbm91dHMgYXJlIG5vdCBzdXBwb3J0 ZWQsIGFzIGFzc2lnbm1lbnRzIG11c3QgYmUgdW5pZGlyZWN0aW9uYWwuCgogIElmIGEgc2lnbmFs IGlzIHBhcnQgb2YgdGhlIGludGVyZmFjZSBoZWFkZXIgYW5kIGluIGJvdGggYQogIG1vZHBvcnQg YW5kIHRoZSBpbnRlcmZhY2UgaXRzZWxmLCBpdCB3aWxsIG5vdCBiZSBsaXN0ZWQuICAoQXMKICB0 aGlzIHdvdWxkIHJlc3VsdCBpbiBhIHN5bnRheCBlcnJvciB3aGVuIHRoZSBjb25uZWN0aW9ucyBh cmUKICBtYWRlLikKClNlZSB0aGUgZXhhbXBsZSBpbiBgdmVyaWxvZy1hdXRvLWlub3V0LW1vZHBv cnQnLiIKICAoc2F2ZS1leGN1cnNpb24KICAgIChsZXQqICgocGFyYW1zICh2ZXJpbG9nLXJlYWQt YXV0by1wYXJhbXMgMyA1KSkKCSAgIChzdWJtb2QgKG50aCAwIHBhcmFtcykpCgkgICAobW9kcG9y dC1yZSAobnRoIDEgcGFyYW1zKSkKCSAgIChpbnN0LW5hbWUgKG50aCAyIHBhcmFtcykpCgkgICAo cmVnZXhwIChudGggMyBwYXJhbXMpKQogICAgICAgICAgIChwcmVmaXggKG50aCA0IHBhcmFtcykp CiAgICAgICAgICAgZGlyZWN0aW9uLXJlIHN1Ym1vZGkpICA7IGRpcmVjdGlvbiBhcmd1bWVudCBu b3Qgc3VwcG9ydGVkIHVudGlsIHJlcXVlc3RlZAogICAgICA7OyBMb29rdXAgcG9zaXRpb24sIGV0 YyBvZiBjby1tb2R1bGUKICAgICAgOzsgTm90ZSB0aGlzIG1heSByYWlzZSBhbiBlcnJvcgogICAg ICAod2hlbiAoc2V0cSBzdWJtb2RpICh2ZXJpbG9nLW1vZGktbG9va3VwIHN1Ym1vZCB0KSkKCShs ZXQqICgoaW5kZW50LXB0IChjdXJyZW50LWluZGVudGF0aW9uKSkKCSAgICAgICAoc3VibW9kZGVj bHMgKHZlcmlsb2ctbW9kaS1nZXQtZGVjbHMgc3VibW9kaSkpCgkgICAgICAgKHN1Ym1vZHBvcnRk ZWNscyAodmVyaWxvZy1tb2RpLW1vZHBvcnQtbG9va3VwIHN1Ym1vZGkgbW9kcG9ydC1yZSkpCiAg ICAgICAgICAgICAgIChzaWctbGlzdC1pICh2ZXJpbG9nLXNpZ25hbHMtaW4gIDsgRGVjbHMgZG9l c24ndCBoYXZlIGRhdGEgdHlwZXMsIG11c3QgcmVzb2x2ZQoJCQkgICAgKHZlcmlsb2ctZGVjbHMt Z2V0LXZhcnMgc3VibW9kZGVjbHMpCgkJCSAgICAodmVyaWxvZy1zaWduYWxzLW5vdC1pbgoJCQkg ICAgICh2ZXJpbG9nLWRlY2xzLWdldC1pbnB1dHMgc3VibW9kcG9ydGRlY2xzKQoJCQkgICAgICh2 ZXJpbG9nLWRlY2xzLWdldC1wb3J0cyBzdWJtb2RkZWNscykpKSkKICAgICAgICAgICAgICAgKHNp Zy1saXN0LW8gKHZlcmlsb2ctc2lnbmFscy1pbiAgOyBEZWNscyBkb2Vzbid0IGhhdmUgZGF0YSB0 eXBlcywgbXVzdCByZXNvbHZlCgkJCSAgICAodmVyaWxvZy1kZWNscy1nZXQtdmFycyBzdWJtb2Rk ZWNscykKCQkJICAgICh2ZXJpbG9nLXNpZ25hbHMtbm90LWluCgkJCSAgICAgKHZlcmlsb2ctZGVj bHMtZ2V0LW91dHB1dHMgc3VibW9kcG9ydGRlY2xzKQoJCQkgICAgICh2ZXJpbG9nLWRlY2xzLWdl dC1wb3J0cyBzdWJtb2RkZWNscykpKSkpCgkgIChmb3J3YXJkLWxpbmUgMSkKCSAgKHNldHEgc2ln LWxpc3QtaSAgKHZlcmlsb2ctc2lnbmFscy1lZGl0LXdpcmUtcmVnCgkJCSAgICAgKHZlcmlsb2ct c2lnbmFscy1tYXRjaGluZy1kaXItcmUKCQkJICAgICAgKHZlcmlsb2ctc2lnbmFscy1tYXRjaGlu Zy1yZWdleHAgc2lnLWxpc3QtaSByZWdleHApCgkJCSAgICAgICJpbnB1dCIgZGlyZWN0aW9uLXJl KSkKCQlzaWctbGlzdC1vICAodmVyaWxvZy1zaWduYWxzLWVkaXQtd2lyZS1yZWcKCQkJICAgICAo dmVyaWxvZy1zaWduYWxzLW1hdGNoaW5nLWRpci1yZQoJCQkgICAgICAodmVyaWxvZy1zaWduYWxz LW1hdGNoaW5nLXJlZ2V4cCBzaWctbGlzdC1vIHJlZ2V4cCkKCQkJICAgICAgIm91dHB1dCIgZGly ZWN0aW9uLXJlKSkpCgkgIChzZXRxIHNpZy1saXN0LWkgKHNvcnQgKGNvcHktYWxpc3Qgc2lnLWxp c3QtaSkgIyd2ZXJpbG9nLXNpZ25hbHMtc29ydC1jb21wYXJlKSkKCSAgKHNldHEgc2lnLWxpc3Qt byAoc29ydCAoY29weS1hbGlzdCBzaWctbGlzdC1vKSAjJ3Zlcmlsb2ctc2lnbmFscy1zb3J0LWNv bXBhcmUpKQoJICAod2hlbiAob3Igc2lnLWxpc3QtaSBzaWctbGlzdC1vKQoJICAgICh2ZXJpbG9n LWluc2VydC1pbmRlbnQgIi8vIEJlZ2lubmluZyBvZiBhdXRvbWF0aWMgYXNzaWdubWVudHMgZnJv bSBtb2Rwb3J0XG4iKQoJICAgIDs7IERvbid0IHNvcnQgdGhlbSBzbyBhbiB1cHBlciBBVVRPSU5T VCB3aWxsIG1hdGNoIHRoZSBtYWluIG1vZHVsZQoJICAgIChsZXQgKChzaWdzIHNpZy1saXN0LW8p KQoJICAgICAgKHdoaWxlIHNpZ3MKICAgICAgICAgICAgICAgICh2ZXJpbG9nLWluc2VydC1pbmRl bnQgImFzc2lnbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25j YXQgcHJlZml4ICh2ZXJpbG9nLXNpZy1uYW1lIChjYXIgc2lncykpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiID0gIiBpbnN0LW5hbWUKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIi4iICh2ZXJpbG9nLXNpZy1uYW1lIChjYXIgc2lncykpICI7 XG4iKQoJCShzZXRxIHNpZ3MgKGNkciBzaWdzKSkpKQoJICAgIChsZXQgKChzaWdzIHNpZy1saXN0 LWkpKQoJICAgICAgKHdoaWxlIHNpZ3MKICAgICAgICAgICAgICAgICh2ZXJpbG9nLWluc2VydC1p bmRlbnQgImFzc2lnbiAiIGluc3QtbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiLiIgKHZlcmlsb2ctc2lnLW5hbWUgKGNhciBzaWdzKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIiA9ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbmNhdCBwcmVmaXggKHZlcmlsb2ctc2lnLW5hbWUgKGNhciBzaWdzKSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7XG4iKQoJCShzZXRxIHNp Z3MgKGNkciBzaWdzKSkpKQoJICAgICh2ZXJpbG9nLWluc2VydC1pbmRlbnQgIi8vIEVuZCBvZiBh dXRvbWF0aWNzXG4iKSkpKSkpKQoKKGRlZnVuIHZlcmlsb2ctYXV0by1pbnN0LXBvcnQtbWFwIChf cG9ydC1zdCkKICBuaWwpCgooZGVmdmFyIHZsLWNlbGwtdHlwZSBuaWwgIlNlZSBgdmVyaWxvZy1h dXRvLWluc3QnLiIpIDsgUHJldmVudCBjb21waWxlIHdhcm5pbmcKKGRlZnZhciB2bC1jZWxsLW5h bWUgbmlsICJTZWUgYHZlcmlsb2ctYXV0by1pbnN0Jy4iKSA7IFByZXZlbnQgY29tcGlsZSB3YXJu aW5nCihkZWZ2YXIgdmwtbW9kcG9ydCAgIG5pbCAiU2VlIGB2ZXJpbG9nLWF1dG8taW5zdCcuIikg OyBQcmV2ZW50IGNvbXBpbGUgd2FybmluZwooZGVmdmFyIHZsLW5hbWUgIG5pbCAiU2VlIGB2ZXJp bG9nLWF1dG8taW5zdCcuIikgOyBQcmV2ZW50IGNvbXBpbGUgd2FybmluZwooZGVmdmFyIHZsLXdp ZHRoIG5pbCAiU2VlIGB2ZXJpbG9nLWF1dG8taW5zdCcuIikgOyBQcmV2ZW50IGNvbXBpbGUgd2Fy bmluZwooZGVmdmFyIHZsLWRpciAgIG5pbCAiU2VlIGB2ZXJpbG9nLWF1dG8taW5zdCcuIikgOyBQ cmV2ZW50IGNvbXBpbGUgd2FybmluZwooZGVmdmFyIHZsLWJpdHMgIG5pbCAiU2VlIGB2ZXJpbG9n LWF1dG8taW5zdCcuIikgOyBQcmV2ZW50IGNvbXBpbGUgd2FybmluZwooZGVmdmFyIHZsLW1iaXRz IG5pbCAiU2VlIGB2ZXJpbG9nLWF1dG8taW5zdCcuIikgOyBQcmV2ZW50IGNvbXBpbGUgd2Fybmlu ZwoKKGRlZnVuIHZlcmlsb2ctYXV0by1pbnN0LXBvcnQgKHNlY3Rpb24gcG9ydC1zdCBpbmRlbnQt cHQgbW9kZGVjbHMgdHBsLWxpc3QgdHBsLW51bQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3Itc3RhciBwYXItdmFsdWVzKQogICJQcmludCBvdXQgYW4gaW5zdGFudGlh dGlvbiBjb25uZWN0aW9uIGZvciB0aGlzIFBPUlQtU1QuCkluc2lkZSBTRUNUSU9OLCBpbnNlcnQg dG8gSU5ERU5ULVBULCB1c2UgdGVtcGxhdGUgVFBMLUxJU1QuCkAgYXJlIGluc3RhbnRpYXRpb24g bnVtYmVycywgcmVwbGFjZWQgd2l0aCBUUEwtTlVNLgpAXCIoZXhwcmVzc2lvbiBAKVwiIGFyZSBl dmFsdWF0ZWQsIHdpdGggQCBhcyBhIHZhcmlhYmxlLgpJZiBGT1ItU1RBUiBhZGQgY29tbWVudCBp dCBpcyBhIC4qIGV4cGFuc2lvbi4KSWYgUEFSLVZBTFVFUyByZXBsYWNlIGZpbmFsIHN0cmluZ3Mg d2l0aCB0aGVzZSBwYXJhbWV0ZXIgdmFsdWVzLiIKICAobGV0KiAoKHBvcnQgKHZlcmlsb2ctc2ln LW5hbWUgcG9ydC1zdCkpCgkgKHRwbC1hc3MgKG9yIChhc3NvYyBwb3J0IChjYXIgdHBsLWxpc3Qp KQoJCSAgICAgICh2ZXJpbG9nLWF1dG8taW5zdC1wb3J0LW1hcCBwb3J0LXN0KSkpCgkgOzsgdmwt KiBhcmUgZG9jdW1lbnRlZCBmb3IgdXNlciB1c2UKCSAodmwtbmFtZSAodmVyaWxvZy1zaWctbmFt ZSBwb3J0LXN0KSkKCSAodmwtd2lkdGggKHZlcmlsb2ctc2lnLXdpZHRoIHBvcnQtc3QpKQoJICh2 bC1tb2Rwb3J0ICh2ZXJpbG9nLXNpZy1tb2Rwb3J0IHBvcnQtc3QpKQoJICh2bC1tZW1vcnkgKHZl cmlsb2ctc2lnLW1lbW9yeSBwb3J0LXN0KSkKCSAodmwtbWJpdHMgKGlmICh2ZXJpbG9nLXNpZy1t dWx0aWRpbSBwb3J0LXN0KQogICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLXNpZy1tdWx0 aWRpbS1zdHJpbmcgcG9ydC1zdCkgIiIpKQogICAgICAgICAodmwtYml0cyAoaWYgKG9yIChlcSB2 ZXJpbG9nLWF1dG8taW5zdC12ZWN0b3IgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5k IChlcSB2ZXJpbG9nLWF1dG8taW5zdC12ZWN0b3IgYHVuc2lnbmVkKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG5vdCAodmVyaWxvZy1zaWctc2lnbmVkIHBvcnQtc3QpKSkKCQkJICAo bm90IChhc3NvYyBwb3J0ICh2ZXJpbG9nLWRlY2xzLWdldC1zaWduYWxzIG1vZGRlY2xzKSkpCgkJ CSAgKG5vdCAoZXF1YWwgKHZlcmlsb2ctc2lnLWJpdHMgcG9ydC1zdCkKCQkJCSAgICAgICh2ZXJp bG9nLXNpZy1iaXRzCgkJCQkgICAgICAgKGFzc29jIHBvcnQgKHZlcmlsb2ctZGVjbHMtZ2V0LXNp Z25hbHMgbW9kZGVjbHMpKSkpKSkKCQkgICAgICAob3IgKHZlcmlsb2ctc2lnLWJpdHMgcG9ydC1z dCkgIiIpCgkJICAgICIiKSkKCSAoY2FzZS1mb2xkLXNlYXJjaCBuaWwpCgkgKGNoZWNrLXZhbHVl cyBwYXItdmFsdWVzKQoJIHRwbC1uZXQgZGZsdC1iaXRzKQogICAgOzsgUmVwbGFjZSBwYXJhbWV0 ZXJzIGluIGJpdC13aWR0aAogICAgKHdoZW4gKGFuZCBjaGVjay12YWx1ZXMKCSAgICAgICAobm90 IChlcXVhbCB2bC1iaXRzICIiKSkpCiAgICAgICh3aGlsZSBjaGVjay12YWx1ZXMKCShzZXRxIHZs LWJpdHMgKHZlcmlsb2ctc3RyaW5nLXJlcGxhY2UtbWF0Y2hlcwoJCSAgICAgICAoY29uY2F0ICJc XDwiIChudGggMCAoY2FyIGNoZWNrLXZhbHVlcykpICJcXD4iKQoJCSAgICAgICAoY29uY2F0ICIo IiAobnRoIDEgKGNhciBjaGVjay12YWx1ZXMpKSAiKSIpCgkJICAgICAgIHQgdCB2bC1iaXRzKQoJ ICAgICAgdmwtbWJpdHMgKHZlcmlsb2ctc3RyaW5nLXJlcGxhY2UtbWF0Y2hlcwoJCQkoY29uY2F0 ICJcXDwiIChudGggMCAoY2FyIGNoZWNrLXZhbHVlcykpICJcXD4iKQoJCQkoY29uY2F0ICIoIiAo bnRoIDEgKGNhciBjaGVjay12YWx1ZXMpKSAiKSIpCgkJCXQgdCB2bC1tYml0cykKCSAgICAgIHZs LW1lbW9yeSAod2hlbiB2bC1tZW1vcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxv Zy1zdHJpbmctcmVwbGFjZS1tYXRjaGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25j YXQgIlxcPCIgKG50aCAwIChjYXIgY2hlY2stdmFsdWVzKSkgIlxcPiIpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25jYXQgIigiIChudGggMSAoY2FyIGNoZWNrLXZhbHVlcykpICIpIikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgdCB0IHZsLW1lbW9yeSkpCgkgICAgICBjaGVjay12 YWx1ZXMgKGNkciBjaGVjay12YWx1ZXMpKSkKICAgICAgKHNldHEgdmwtYml0cyAodmVyaWxvZy1z aW1wbGlmeS1yYW5nZS1leHByZXNzaW9uIHZsLWJpdHMpCgkgICAgdmwtbWJpdHMgKHZlcmlsb2ct c2ltcGxpZnktcmFuZ2UtZXhwcmVzc2lvbiB2bC1tYml0cykKCSAgICB2bC1tZW1vcnkgKHdoZW4g dmwtbWVtb3J5ICh2ZXJpbG9nLXNpbXBsaWZ5LXJhbmdlLWV4cHJlc3Npb24gdmwtbWVtb3J5KSkK CSAgICB2bC13aWR0aCAodmVyaWxvZy1tYWtlLXdpZHRoLWV4cHJlc3Npb24gdmwtYml0cykpKSA7 IE5vdCBpbiB0aGUgbG9vcCBmb3Igc3BlZWQKICAgIDs7IERlZmF1bHQgbmV0IHZhbHVlIGlmIG5v dCBmb3VuZAogICAgKHNldHEgZGZsdC1iaXRzIChpZiAob3IgKGFuZCAodmVyaWxvZy1zaWctYml0 cyBwb3J0LXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1zaWct bXVsdGlkaW0gcG9ydC1zdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1z aWctbWVtb3J5IHBvcnQtc3QpKQoJCQkoY29uY2F0ICIvKiIgdmwtbWJpdHMgdmwtYml0cwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IC5bIHVzZWQgdG8gc2VwYXJhdGUgcGFja2Vk IGZyb20gdW5wYWNrZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgdmwtbWVt b3J5ICIuIiAiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgdmwtbWVtb3J5 IHZsLW1lbW9yeSAiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKi8iKQoJCSAg ICAgIChjb25jYXQgdmwtYml0cykpCgkgIHRwbC1uZXQgKGNvbmNhdCBwb3J0CgkJCSAgKGlmIChh bmQgdmwtbW9kcG9ydAoJCQkJICAgOzsgLm1vZHBvcnQgY2Fubm90IGJlIGFkZGVkIGlmIGF0dGFj aG1lbnQgaXMKCQkJCSAgIDs7IGFscmVhZHkgZGVjbGFyZWQgYXMgbW9kcG9ydCwgVkNTIGNyb2Fr cwoJCQkJICAgKGxldCAoKHNpZyAoYXNzb2MgcG9ydCAodmVyaWxvZy1kZWNscy1nZXQtaW50ZXJm YWNlcyBtb2RkZWNscykpKSkKCQkJCSAgICAgKG5vdCAoYW5kIHNpZyAodmVyaWxvZy1zaWctbW9k cG9ydCBzaWcpKSkpKQoJCQkgICAgICAoY29uY2F0ICIuIiB2bC1tb2Rwb3J0KSAiIikKCQkJICBk Zmx0LWJpdHMpKQogICAgOzsgRmluZCB0ZW1wbGF0ZQogICAgKGNvbmQgKHRwbC1hc3MJICAgIDsg VGVtcGxhdGUgb2YgZXhhY3QgcG9ydCBuYW1lCgkgICAoc2V0cSB0cGwtbmV0IChudGggMSB0cGwt YXNzKSkpCgkgICgobnRoIDEgdHBsLWxpc3QpIDsgV2lsZGNhcmRzIGluIHRlbXBsYXRlLCBzZWFy Y2ggdGhlbQoJICAgKGxldCAoKHdpbGRjYXJkcyAobnRoIDEgdHBsLWxpc3QpKSkKCSAgICAgKHdo aWxlIHdpbGRjYXJkcwoJICAgICAgICh3aGVuIChzdHJpbmctbWF0Y2ggKG50aCAwIChjYXIgd2ls ZGNhcmRzKSkgcG9ydCkKCQkgKHNldHEgdHBsLWFzcyAoY2FyIHdpbGRjYXJkcykgIDsgc28gYWxs b3cgQCBwYXJzaW5nCgkJICAgICAgIHRwbC1uZXQgKHJlcGxhY2UtbWF0Y2ggKG50aCAxIChjYXIg d2lsZGNhcmRzKSkKCQkJCQkgICAgICB0IG5pbCBwb3J0KSkpCgkgICAgICAgKHNldHEgd2lsZGNh cmRzIChjZHIgd2lsZGNhcmRzKSkpKSkpCiAgICA7OyBQYXJzZSBUZW1wbGF0ZWQgdmFyaWFibGUK ICAgICh3aGVuIHRwbC1hc3MKICAgICAgOzsgRXZhbHVhdGUgQCIobGlzcGNvZGUpIgogICAgICAo d2hlbiAoc3RyaW5nLW1hdGNoICJAXCIuKlteXFxdXCIiIHRwbC1uZXQpCiAgICAgICAgKHdoaWxl IChzdHJpbmctbWF0Y2ggIkBcIlxcKFxcKFteXFxcIl1cXHxcXFxcLlxcKSpcXClcIiIgdHBsLW5l dCkKCSAgKHNldHEgdHBsLW5ldAoJCShjb25jYXQKCQkgKHN1YnN0cmluZyB0cGwtbmV0IDAgKG1h dGNoLWJlZ2lubmluZyAwKSkKCQkgKHNhdmUtbWF0Y2gtZGF0YQoJCSAgIChsZXQqICgoZXhwciAo bWF0Y2gtc3RyaW5nIDEgdHBsLW5ldCkpCgkJCSAgKHZhbHVlCgkJCSAgIChwcm9nbgoJCQkgICAg IChzZXRxIGV4cHIgKHZlcmlsb2ctc3RyaW5nLXJlcGxhY2UtbWF0Y2hlcyAiXFxcXFwiIiAiXCIi IG5pbCBuaWwgZXhwcikpCgkJCSAgICAgKHNldHEgZXhwciAodmVyaWxvZy1zdHJpbmctcmVwbGFj ZS1tYXRjaGVzICJAIiB0cGwtbnVtIG5pbCBuaWwgZXhwcikpCgkJCSAgICAgKHByaW4xIChldmFs IChjYXIgKHJlYWQtZnJvbS1zdHJpbmcgZXhwcikpKQoJCQkJICAgIChsYW1iZGEgKF9jaCkgKCkp KSkpKQoJCSAgICAgKGlmIChudW1iZXJwIHZhbHVlKSAoc2V0cSB2YWx1ZSAobnVtYmVyLXRvLXN0 cmluZyB2YWx1ZSkpKQoJCSAgICAgdmFsdWUpKQoJCSAoc3Vic3RyaW5nIHRwbC1uZXQgKG1hdGNo LWVuZCAwKSkpKSkpCiAgICAgIDs7IFJlcGxhY2UgQCBhbmQgW10gbWFnaWMgdmFyaWFibGVzIGlu IGZpbmFsIG91dHB1dAogICAgICAoc2V0cSB0cGwtbmV0ICh2ZXJpbG9nLXN0cmluZy1yZXBsYWNl LW1hdGNoZXMgIkAiIHRwbC1udW0gbmlsIG5pbCB0cGwtbmV0KSkKICAgICAgKHNldHEgdHBsLW5l dCAodmVyaWxvZy1zdHJpbmctcmVwbGFjZS1tYXRjaGVzICJcXFtcXF1cXFtcXF0iIGRmbHQtYml0 cyBuaWwgbmlsIHRwbC1uZXQpKQogICAgICAoc2V0cSB0cGwtbmV0ICh2ZXJpbG9nLXN0cmluZy1y ZXBsYWNlLW1hdGNoZXMgIlxcW1xcXSIgdmwtYml0cyBuaWwgbmlsIHRwbC1uZXQpKSkKICAgIDs7 IEluc2VydCBpdAogICAgKHdoZW4gKG9yIHRwbC1hc3MgKG5vdCB2ZXJpbG9nLWF1dG8taW5zdC10 ZW1wbGF0ZS1yZXF1aXJlZCkpCiAgICAgICh2ZXJpbG9nLWF1dG8taW5zdC1maXJzdCBzZWN0aW9u KQogICAgICAoaW5kZW50LXRvIGluZGVudC1wdCkKICAgICAgKGluc2VydCAiLiIgcG9ydCkKICAg ICAgKHVubGVzcyAoYW5kIHZlcmlsb2ctYXV0by1pbnN0LWRvdC1uYW1lCiAgICAgICAgICAgICAg ICAgICAoZXF1YWwgcG9ydCB0cGwtbmV0KSkKICAgICAgICAoaW5kZW50LXRvIHZlcmlsb2ctYXV0 by1pbnN0LWNvbHVtbikKICAgICAgICAoaW5zZXJ0ICIoIiB0cGwtbmV0ICIpIikpCiAgICAgIChp bnNlcnQgIiwiKQogICAgICAoY29uZCAodHBsLWFzcwogICAgICAgICAgICAgKHZlcmlsb2ctcmVh ZC1hdXRvLXRlbXBsYXRlLWhpdCB0cGwtYXNzKQogICAgICAgICAgICAgKGluZGVudC10byAoKyAo aWYgKDwgdmVyaWxvZy1hdXRvLWluc3QtY29sdW1uIDQ4KSAyNCAxNikKICAgICAgICAgICAgICAg ICAgICAgICAgICAgdmVyaWxvZy1hdXRvLWluc3QtY29sdW1uKSkKICAgICAgICAgICAgIDs7IHZl cmlsb2ctaW5zZXJ0IHJlcXVpcmVzIHRoZSBjb21wbGV0ZSBjb21tZW50IGluIG9uZSBjYWxsIC0g aW5jbHVkaW5nIHRoZSBuZXdsaW5lCiAgICAgICAgICAgICAoY29uZCAoKGVxdWFsIHZlcmlsb2ct YXV0by1pbnN0LXRlbXBsYXRlLW51bWJlcnMgJ2xocykKICAgICAgICAgICAgICAgICAgICAodmVy aWxvZy1pbnNlcnQgIiAvLyBUZW1wbGF0ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICIgTEhTOiAiIChudGggMCB0cGwtYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiXG4iKSkKICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWF1dG8taW5zdC10 ZW1wbGF0ZS1udW1iZXJzCiAgICAgICAgICAgICAgICAgICAgKHZlcmlsb2ctaW5zZXJ0ICIgLy8g VGVtcGxhdGVkIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFQiIChpbnQt dG8tc3RyaW5nIChudGggMiB0cGwtYXNzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiBMIiAoaW50LXRvLXN0cmluZyAobnRoIDMgdHBsLWFzcykpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJcbiIpKQogICAgICAgICAgICAgICAgICAgKHQKICAgICAg ICAgICAgICAgICAgICAodmVyaWxvZy1pbnNlcnQgIiAvLyBUZW1wbGF0ZWRcbiIpKSkpCiAgICAg ICAgICAgIChmb3Itc3RhcgogICAgICAgICAgICAgKGluZGVudC10byAoKyAoaWYgKDwgdmVyaWxv Zy1hdXRvLWluc3QtY29sdW1uIDQ4KSAyNCAxNikKICAgICAgICAgICAgICAgICAgICAgICAgICAg dmVyaWxvZy1hdXRvLWluc3QtY29sdW1uKSkKICAgICAgICAgICAgICh2ZXJpbG9nLWluc2VydCAi IC8vIEltcGxpY2l0IC4qXG4iKSkKICAgICAgICAgICAgKHQKICAgICAgICAgICAgIChpbnNlcnQg IlxuIikpKSkpKQo7Oyh2ZXJpbG9nLWF1dG8taW5zdC1wb3J0ICIiIChsaXN0ICJmb28iICJbNTow XSIpIDEwIChsaXN0IChsaXN0ICJmb28iICJhQFwiKCUgKCsgQCAxKSA0KVwiYSIpKSAiMyIpCjs7 KHggImluY29tW0BcIigrICgqIDggQCkgNylcIjpAXCIoKiA4IEApXCJdIikKOzsoeCAiLm91dCAo b3V0Z29bQFwiKGNvbmNhdCAoKyAoKiA4IEApIDcpIFxcXCI6XFxcIiAoICogOCBAKSlcIl0pKTsi KQoKKGRlZnZhciB2ZXJpbG9nLWF1dG8taW5zdC1maXJzdC1zZWN0aW9uIG5pbAogICJMb2NhbCBm aXJzdC1pbi1zZWN0aW9uIGZvciBgdmVyaWxvZy1hdXRvLWluc3QtZmlyc3QnLiIpCihkZWZ2YXIg dmVyaWxvZy1hdXRvLWluc3QtZmlyc3QtYW55IG5pbAogICJMb2NhbCBmaXJzdC1pbi1hbnktc2Vj dGlvbiBmb3IgYHZlcmlsb2ctYXV0by1pbnN0LWZpcnN0Jy4iKQoKKGRlZnVuIHZlcmlsb2ctYXV0 by1pbnN0LWZpcnN0IChzZWN0aW9uKQogICJJbnNlcnQgLCBhbmQgU0VDVElPTiBiZWZvcmUgcG9y dCwgYXMgcGFydCBvZiBcXFt2ZXJpbG9nLWF1dG8taW5zdF0uIgogIDs7IERvIHdlIG5lZWQgYSB0 cmFpbGluZyBjb21tYT8KICA7OyBUaGVyZSBtYXliZSBhbiBpZmRlZiBvciBzb21ldGhpbmcgc2lt aWxhciBiZWZvcmUgdXMuICBXaGF0IGEgbWVzcy4gIFRodXMKICA7OyB0byBhdm9pZCB0cm91Ymxl IHdlIG9ubHkgaW5zZXJ0IG9uIHByZWNlZGluZyApIG9yICouCiAgOzsgSW5zZXJ0IGZpcnN0IHBv cnQgb24gbmV3IGxpbmUKICAod2hlbiB2ZXJpbG9nLWF1dG8taW5zdC1maXJzdC1hbnkKICAgIChz ZXRxIHZlcmlsb2ctYXV0by1pbnN0LWZpcnN0LWFueSBuaWwpCiAgICAoaW5zZXJ0ICJcbiIpICA7 IE11c3QgaW5zZXJ0IGJlZm9yZSBzZWFyY2gsIHNvIHBvaW50IHdpbGwgbW92ZSBmb3J3YXJkIGlm IGluc2VydCBjb21tYQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICh2ZXJpbG9nLXJlLXNlYXJj aC1iYWNrd2FyZC1xdWljayAiW14gXHRcblxmXSIgbmlsIG5pbCkKICAgICAgKHdoZW4gKGxvb2tp bmctYXQgIilcXHxcXCoiKSAgOyBHZW5lcmFsbHkgZG9uJ3QgaW5zZXJ0LCB1bmxlc3Mgd2UgYXJl IGZhaXJseSBzdXJlCiAgICAgICAgKGZvcndhcmQtY2hhciAxKQogICAgICAgIChpbnNlcnQgIiwi KSkpKQogICh3aGVuIHZlcmlsb2ctYXV0by1pbnN0LWZpcnN0LXNlY3Rpb24KICAgIChzZXRxIHZl cmlsb2ctYXV0by1pbnN0LWZpcnN0LXNlY3Rpb24gbmlsKQogICAgKHZlcmlsb2ctaW5zZXJ0LWlu ZGVudCBzZWN0aW9uKSkpCgooZGVmdW4gdmVyaWxvZy1hdXRvLWluc3QtcG9ydC1saXN0IChzZWN0 aW9uIHNpZy1saXN0IGluZGVudC1wdCBtb2RkZWNscwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRwbC1saXN0IHRwbC1udW0gZm9yLXN0YXIgcGFyLXZhbHVlcykK ICAiRm9yIGB2ZXJpbG9nLWF1dG8taW5zdCcgcHJpbnQgYSBsaXN0IG9mIHBvcnRzIHVzaW5nIGB2 ZXJpbG9nLWF1dG8taW5zdC1wb3J0Jy4iCiAgKHdoZW4gdmVyaWxvZy1hdXRvLWluc3Qtc29ydAog ICAgKHNldHEgc2lnLWxpc3QgKHNvcnQgKGNvcHktYWxpc3Qgc2lnLWxpc3QpICMndmVyaWxvZy1z aWduYWxzLXNvcnQtY29tcGFyZSkpKQogIChsZXQgKCh2ZXJpbG9nLWF1dG8taW5zdC1maXJzdC1z ZWN0aW9uIHQpKQogICAgKG1hcGMgKGxhbWJkYSAocG9ydCkKICAgICAgICAgICAgKHZlcmlsb2ct YXV0by1pbnN0LXBvcnQgc2VjdGlvbiBwb3J0IGluZGVudC1wdCBtb2RkZWNscwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0cGwtbGlzdCB0cGwtbnVtIGZvci1zdGFyIHBhci12 YWx1ZXMpKQogICAgICAgICAgc2lnLWxpc3QpKSkKCihkZWZ1biB2ZXJpbG9nLWF1dG8tc3RhciAo KQogICJFeHBhbmQgU3lzdGVtVmVyaWxvZyAuKiBwaW5zLCBhcyBwYXJ0IG9mIFxcW3Zlcmlsb2ct YXV0b10uCgpJZiBgdmVyaWxvZy1hdXRvLXN0YXItZXhwYW5kJyBpcyBzZXQsIC4qIHBpbnMgYXJl IHRyZWF0ZWQgaWYgdGhleSB3ZXJlCkFVVE9JTlNUIHN0YXRlbWVudHMsIG90aGVyd2lzZSB0aGV5 IGFyZSBpZ25vcmVkLiAgRm9yIHNhZmV0eSwgVmVyaWxvZyBtb2RlCndpbGwgYWxzbyBpZ25vcmUg YW55IC4qIHRoYXQgYXJlIG5vdCBsYXN0IGluIHlvdXIgcGluIGxpc3QgKHRoaXMgcHJldmVudHMK aXQgZnJvbSBkZWxldGluZyBwaW5zIGZvbGxvd2luZyB0aGUgLiogd2hlbiBpdCBleHBhbmRzIHRo ZSBBVVRPSU5TVC4pCgpPbiB3cml0aW5nIHlvdXIgZmlsZSwgdW5sZXNzIGB2ZXJpbG9nLWF1dG8t c3Rhci1zYXZlJyBpcyBzZXQsIGFueQpub24tdGVtcGxhdGVkIGV4cGFuZGVkIHBpbnMgd2lsbCBi ZSByZW1vdmVkLiAgWW91IG1heSBkbyB0aGlzIGF0IGFueSB0aW1lCndpdGggXFxbdmVyaWxvZy1k ZWxldGUtYXV0by1zdGFyLWltcGxpY2l0XS4KCklmIHlvdSBhcmUgY29udmVydGluZyBhIG1vZHVs ZSB0byB1c2UgLiogZm9yIHRoZSBmaXJzdCB0aW1lLCB5b3UgbWF5IHdpc2gKdG8gdXNlIFxcW3Zl cmlsb2ctaW5qZWN0LWF1dG9dIGFuZCB0aGVuIHJlcGxhY2UgdGhlIGNyZWF0ZWQgQVVUT0lOU1Qg d2l0aCAuKi4KClNlZSBgdmVyaWxvZy1hdXRvLWluc3QnIGZvciBleGFtcGxlcywgdGVtcGxhdGVz LCBhbmQgbW9yZSBpbmZvcm1hdGlvbi4iCiAgKHdoZW4gKHZlcmlsb2ctYXV0by1zdGFyLXNhZmUp CiAgICAodmVyaWxvZy1hdXRvLWluc3QpKSkKCihkZWZ1biB2ZXJpbG9nLWF1dG8taW5zdCAoKQog ICJFeHBhbmQgQVVUT0lOU1Qgc3RhdGVtZW50cywgYXMgcGFydCBvZiBcXFt2ZXJpbG9nLWF1dG9d LgpSZXBsYWNlIHRoZSBwaW4gY29ubmVjdGlvbnMgdG8gYW4gaW5zdGFudGlhdGlvbiBvciBpbnRl cmZhY2UKZGVjbGFyYXRpb24gd2l0aCBvbmVzIGF1dG9tYXRpY2FsbHkgZGVyaXZlZCBmcm9tIHRo ZSBtb2R1bGUgb3IKaW50ZXJmYWNlIGhlYWRlciBvZiB0aGUgaW5zdGFudGlhdGVkIGl0ZW0uCgpZ b3UgbWF5IGFsc28gcHJvdmlkZSBhbiBvcHRpb25hbCByZWd1bGFyIGV4cHJlc3Npb24sIGluIHdo aWNoCmNhc2Ugb25seSBJL08gbWF0Y2hpbmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aWxsIGJl IGluY2x1ZGVkLApvciBleGNsdWRlZCBpZiB0aGUgcmVnZXhwIGJlZ2lucyB3aXRoID8hIChxdWVz dGlvbi1tYXJrCmV4Y2xhbWF0aW9uLW1hcmspLgoKSWYgYHZlcmlsb2ctYXV0by1zdGFyLWV4cGFu ZCcgaXMgc2V0LCBhbHNvIGV4cGFuZCBTeXN0ZW1WZXJpbG9nIC4qIHBvcnRzLAphbmQgZGVsZXRl IHRoZW0gYmVmb3JlIHNhdmluZyB1bmxlc3MgYHZlcmlsb2ctYXV0by1zdGFyLXNhdmUnIGlzIHNl dC4KU2VlIGB2ZXJpbG9nLWF1dG8tc3RhcicgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgpUaGUgcGlu cyBhcmUgcHJpbnRlZCBpbiBkZWNsYXJhdGlvbiBvcmRlciBvciBhbHBoYWJldGljYWxseSwKYmFz ZWQgb24gdGhlIGB2ZXJpbG9nLWF1dG8taW5zdC1zb3J0JyB2YXJpYWJsZS4KClRvIGRlYnVnIHdo YXQgZmlsZSBhIHN1Ym1vZHVsZSBjb21lcyBmcm9tLCBpbiBhIGJ1ZmZlciB3aXRoCkFVVE9JTlNU LCB1c2UgXFxbdmVyaWxvZy1nb3RvLWRlZnVuXSB0byBzd2l0Y2ggYnVmZmVycyB0byB0aGUKcG9p bnQgY29udGFpbmluZyB0aGUgZ2l2ZW4gc3ltYm9sIChpLmUuIGEgc3VibW9kdWxlIG5hbWUpJ3MK bW9kdWxlIGRlZmluaXRpb24uCgpMaW1pdGF0aW9uczoKICBNb2R1bGUgbmFtZXMgbXVzdCBiZSBy ZXNvbHZhYmxlIHRvIGZpbGVuYW1lcyBieSBhZGRpbmcgYQogIGB2ZXJpbG9nLWxpYnJhcnktZXh0 ZW5zaW9ucycsIGFuZCBiZWluZyBmb3VuZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksIG9yCiAgYnkg Y2hhbmdpbmcgdGhlIHZhcmlhYmxlIGB2ZXJpbG9nLWxpYnJhcnktZmxhZ3MnIG9yCiAgYHZlcmls b2ctbGlicmFyeS1kaXJlY3RvcmllcycuICBNYWNyb3MgYG1vZG5hbWUgYXJlIHRyYW5zbGF0ZWQg dGhyb3VnaCB0aGUKICB2aC17bmFtZX0gRW1hY3MgdmFyaWFibGUsIGlmIHRoYXQgaXMgbm90IGZv dW5kLCBpdCBqdXN0IGlnbm9yZXMgdGhlIFxcPWAuCgogIEluIHRlbXBsYXRlcyB5b3UgbXVzdCBo YXZlIG9uZSBzaWduYWwgcGVyIGxpbmUsIGVuZGluZyBpbiBhICksIG9yICkpOywKICBhbmQgaGF2 ZSBwcm9wZXIgKCkgbmVzdGluZywgaW5jbHVkaW5nIGEgZmluYWwgKTsgdG8gZW5kIHRoZSB0ZW1w bGF0ZS4KCiAgVHlwZWRlZnMgbXVzdCBtYXRjaCBgdmVyaWxvZy10eXBlZGVmLXJlZ2V4cCcsIHdo aWNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCgogIFN5c3RlbVZlcmlsb2cgbXVsdGlkaW1lbnNp b25hbCBpbnB1dC9vdXRwdXQgaGFzIG9ubHkgZXhwZXJpbWVudGFsIHN1cHBvcnQuCgogIFN5c3Rl bVZlcmlsb2cgLm5hbWUgc3ludGF4IGlzIHVzZWQgaWYgYHZlcmlsb2ctYXV0by1pbnN0LWRvdC1u YW1lJyBpcyBzZXQuCgogIFBhcmFtZXRlcnMgcmVmZXJlbmNlZCBieSB0aGUgaW5zdGFudGlhdGlv biB3aWxsIHJlbWFpbiBzeW1ib2xpYywgdW5sZXNzCiAgYHZlcmlsb2ctYXV0by1pbnN0LXBhcmFt LXZhbHVlJyBpcyBzZXQuCgogIEdhdGUgcHJpbWl0aXZlcyAoYW5kL29yKSBtYXkgaGF2ZSBBVVRP SU5TVCBmb3IgdGhlIHB1cnBvc2Ugb2YKICBBVVRPV0lSRSBkZWNsYXJhdGlvbnMsIGV0Yy4gIEdh dGVzIGFyZSB0aGUgb25seSBjYXNlIHdoZW4KICBwb3NpdGlvbiBiYXNlZCBjb25uZWN0aW9ucyBh cmUgcGFzc2VkLgoKICBUaGUgYXJyYXkgcGFydCBvZiBhcnJheWVkIGluc3RhbmNlcyBhcmUgaWdu b3JlZDsgdGhpcyBtYXkKICByZXN1bHQgaW4gdW5kZXNpcmFibGUgZGVmYXVsdCBBVVRPSU5TVCBj b25uZWN0aW9uczsgdXNlIGEKICB0ZW1wbGF0ZSBpbnN0ZWFkLgoKRm9yIGV4YW1wbGUsIGZpcnN0 IHRha2UgdGhlIHN1Ym1vZHVsZSBJbnN0TW9kdWxlLnY6CgogICAgICAgIG1vZHVsZSBJbnN0TW9k dWxlIChvLGkpOwogICAgICAgICAgIG91dHB1dCBbMzE6MF0gbzsKICAgICAgICAgICBpbnB1dCBp OwogICAgICAgICAgIHdpcmUgWzMxOjBdIG8gPSB7MzJ7aX19OwogICAgICAgIGVuZG1vZHVsZQoK VGhpcyBpcyB0aGVuIHVzZWQgaW4gYW4gdXBwZXIgbGV2ZWwgbW9kdWxlOgoKICAgICAgICBtb2R1 bGUgRXhhbXBJbnN0IChvLGkpOwogICAgICAgICAgIG91dHB1dCBvOwogICAgICAgICAgIGlucHV0 IGk7CiAgICAgICAgICAgSW5zdE1vZHVsZSBpbnN0TmFtZQogICAgICAgICAgICAgKC8qQVVUT0lO U1QqLyk7CiAgICAgICAgZW5kbW9kdWxlCgpUeXBpbmcgXFxbdmVyaWxvZy1hdXRvXSB3aWxsIG1h a2UgdGhpcyBpbnRvOgoKICAgICAgICBtb2R1bGUgRXhhbXBJbnN0IChvLGkpOwogICAgICAgICAg IG91dHB1dCBvOwogICAgICAgICAgIGlucHV0IGk7CiAgICAgICAgICAgSW5zdE1vZHVsZSBpbnN0 TmFtZQogICAgICAgICAgICAgKC8qQVVUT0lOU1QqLwogICAgICAgICAgICAgIC8vIE91dHB1dHMK ICAgICAgICAgICAgICAubyAgICAgICAgKG9bMzE6MF0pLAogICAgICAgICAgICAgIC8vIElucHV0 cwogICAgICAgICAgICAgIC5pICAgICAgICAoaSkpOwogICAgICAgIGVuZG1vZHVsZQoKV2hlcmUg dGhlIGxpc3Qgb2YgaW5wdXRzIGFuZCBvdXRwdXRzIGNhbWUgZnJvbSB0aGUgaW5zdCBtb2R1bGUu CgwKRXhjZXB0aW9uczoKCiAgVW5sZXNzIHlvdSBhcmUgaW5zdGFudGlhdGluZyBhIG1vZHVsZSBt dWx0aXBsZSB0aW1lcywgb3IgdGhlIG1vZHVsZSBpcwogIHNvbWV0aGluZyB0cml2aWFsIGxpa2Ug YW4gYWRkZXIsIERPIE5PVCBDSEFOR0UgU0lHTkFMIE5BTUVTIEFDUk9TUyBISUVSQVJDSFkuCiAg SXQganVzdCBtYWtlcyBmb3IgdW5tYWludGFpbmFibGUgY29kZS4gIFRvIHNhbml0aXplIHNpZ25h bCBuYW1lcywgdHJ5CiAgdnJlbmFtZSBmcm9tIFVSTCBgaHR0cHM6Ly93d3cudmVyaXBvb2wub3Jn Jy4KCiAgV2hlbiB5b3UgbmVlZCB0byB2aW9sYXRlIHRoaXMgc3VnZ2VzdGlvbiB0aGVyZSBhcmUg dHdvIHdheXMgdG8gbGlzdAogIGV4Y2VwdGlvbnMsIHBsYWNpbmcgdGhlbSBiZWZvcmUgdGhlIEFV VE9JTlNULCBvciB1c2luZyB0ZW1wbGF0ZXMuCgogIEFueSBwb3J0cyBkZWZpbmVkIGJlZm9yZSB0 aGUgLypBVVRPSU5TVCovIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGxpc3Qgb2YKICBhdXRvbWF0 aWNzLiAgVGhpcyBpcyBzaW1pbGFyIHRvIG1ha2luZyBhIHRlbXBsYXRlIGFzIGRlc2NyaWJlZCBi ZWxvdywgYnV0CiAgaXMgcmVzdHJpY3RlZCB0byBzaW1wbGUgY29ubmVjdGlvbnMganVzdCBsaWtl IHlvdSBub3JtYWxseSBtYWtlLiAgQWxzbyBub3RlCiAgdGhhdCBhbnkgc2lnbmFscyBiZWZvcmUg dGhlIEFVVE9JTlNUIHdpbGwgb25seSBiZSBwaWNrZWQgdXAgYnkgQVVUT1dJUkUgaWYKICB5b3Ug aGF2ZSB0aGUgYXBwcm9wcmlhdGUgLy8gSW5wdXQgb3IgLy8gT3V0cHV0IGNvbW1lbnQsIGFuZCBl eGFjdGx5IHRoZQogIHNhbWUgbGluZSBmb3JtYXR0aW5nIGFzIEFVVE9JTlNUIGl0c2VsZiB1c2Vz LgoKICAgICAgICBJbnN0TW9kdWxlIGluc3ROYW1lCiAgICAgICAgICAoLy8gSW5wdXRzCiAgICAg ICAgICAgLmkgICAgICAgICAgIChteV9pX2RvbnRfbWVzc193aXRoX2l0KSwKICAgICAgICAgICAv KkFVVE9JTlNUKi8KICAgICAgICAgICAvLyBPdXRwdXRzCiAgICAgICAgICAgLm8gICAgICAgICAg IChvWzMxOjBdKSk7CgoMClRlbXBsYXRlczoKCiAgRm9yIG11bHRpcGxlIGluc3RhbnRpYXRpb25z IGJhc2VkIHVwb24gYSBzaW5nbGUgdGVtcGxhdGUsIGNyZWF0ZSBhCiAgY29tbWVudGVkIG91dCB0 ZW1wbGF0ZToKCiAgICAgICAgLyogSW5zdE1vZHVsZSBBVVRPX1RFTVBMQVRFICgKICAgICAgICAg ICAgICAgIC5zaWczICAgKHNpZ3pbXSksCiAgICAgICAgICAgICAgICApOwogICAgICAgICovCgog IFRlbXBsYXRlcyBnbyBBQk9WRSB0aGUgaW5zdGFudGlhdGlvbihzKS4gIFdoZW4gYW4gaW5zdGFu dGlhdGlvbiBpcwogIGV4cGFuZGVkIGB2ZXJpbG9nLW1vZGUnIHNpbXBseSBzZWFyY2hlcyB1cCBm b3IgdGhlIGNsb3Nlc3QgdGVtcGxhdGUuCiAgVGh1cyB5b3UgY2FuIGhhdmUgbXVsdGlwbGUgdGVt cGxhdGVzIGZvciB0aGUgc2FtZSBtb2R1bGUsIGp1c3QgYWx0ZXJuYXRlCiAgYmV0d2VlbiB0aGUg dGVtcGxhdGUgZm9yIGFuIGluc3RhbnRpYXRpb24gYW5kIHRoZSBpbnN0YW50aWF0aW9uIGl0c2Vs Zi4KICAoRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaWYgbm8gdGVtcGxhdGUgaXMgZm91bmQg YWJvdmUsIGl0CiAgd2lsbCBhbHNvIGxvb2sgYmVsb3csIGJ1dCBkbyBub3QgdXNlIHRoaXMgYmVo YXZpb3IgaW4gbmV3IGRlc2lnbnMuKQoKICBUaGUgbW9kdWxlIG5hbWUgbXVzdCBiZSB0aGUgc2Ft ZSBhcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGluIHRoZQogIGluc3RhbnRpYXRpb24gbmFtZSwg YW5kIHRoZSBjb2RlIFwiQVVUT19URU1QTEFURVwiIG11c3QgYmUgaW4gdGhlc2UgZXhhY3QKICB3 b3JkcyBhbmQgY2FwaXRhbGl6ZWQuICBPbmx5IHNpZ25hbHMgdGhhdCBtdXN0IGJlIGRpZmZlcmVu dCBmb3IgZWFjaAogIGluc3RhbnRpYXRpb24gbmVlZCB0byBiZSBsaXN0ZWQuCgogIEluc2lkZSBh IHRlbXBsYXRlLCBhIFtdIGluIGEgY29ubmVjdGlvbiBuYW1lICh3aXRoIG5vdGhpbmcgZWxzZQog IGluc2lkZSB0aGUgYnJhY2tldHMpIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIHNhbWUgYnVzIHN1 YnNjcmlwdAogIGFzIGl0IGlzIGJlaW5nIGNvbm5lY3RlZCB0bywgb3IgdGhlIFtdIHdpbGwgYmUg cmVtb3ZlZCBpZiBpdCBpcwogIGEgc2luZ2xlIGJpdCBzaWduYWwuCgogIEluc2lkZSBhIHRlbXBs YXRlLCBhIFtdW10gaW4gYSBjb25uZWN0aW9uIG5hbWUgd2lsbCBiZWhhdmUKICBzaW1pbGFybHkg dG8gYSBbXSBmb3Igc2NhbGFyIG9yIHNpbmdsZS1kaW1lbnNpb25hbCBjb25uZWN0aW9uOwogIGZv ciBhIG11bHRpZGltZW5zaW9uYWwgY29ubmVjdGlvbiBpdCB3aWxsIHByaW50IGEgY29tbWVudAog IHNpbWlsYXIgdG8gdGhhdCBwcmludGVkIHdoZW4gYSB0ZW1wbGF0ZSBpcyBub3QgdXNlZC4gIEdl bmVyYWxseQogIGl0IGlzIGEgZ29vZCBpZGVhIHRvIGRvIHRoaXMgZm9yIGFsbCBjb25uZWN0aW9u cyBpbiBhIHRlbXBsYXRlLAogIGFzIHRoZW4gdGhleSB3aWxsIHdvcmsgZm9yIGFueSB3aWR0aCBz aWduYWwsIGFuZCB3aXRoIEFVVE9XSVJFLgogIFNlZSBQVExfQlVTIGJlY29taW5nIFBUTF9CVVNO RVcgYmVsb3cuCgogIEluc2lkZSBhIHRlbXBsYXRlLCBhIFtdIGluIGEgY29ubmVjdGlvbiBuYW1l ICh3aXRoIG5vdGhpbmcgZWxzZSBpbnNpZGUKICB0aGUgYnJhY2tldHMpIHdpbGwgYmUgcmVwbGFj ZWQgYnkgdGhlIHNhbWUgYnVzIHN1YnNjcmlwdCBhcyBpdCBpcyBiZWluZwogIGNvbm5lY3RlZCB0 bywgb3IgdGhlIFtdIHdpbGwgYmUgcmVtb3ZlZCBpZiBpdCBpcyBhIHNpbmdsZSBiaXQgc2lnbmFs LgogIEdlbmVyYWxseSBpdCBpcyBhIGdvb2QgaWRlYSB0byBkbyB0aGlzIGZvciBhbGwgY29ubmVj dGlvbnMgaW4gYSB0ZW1wbGF0ZSwKICBhcyB0aGVuIHRoZXkgd2lsbCB3b3JrIGZvciBhbnkgd2lk dGggc2lnbmFsLCBhbmQgd2l0aCBBVVRPV0lSRS4gIFNlZQogIFBUTF9CVVMgYmVjb21pbmcgUFRM X0JVU05FVyBiZWxvdy4KCiAgSWYgeW91IGhhdmUgYSBjb21wbGljYXRlZCB0ZW1wbGF0ZSwgc2V0 IGB2ZXJpbG9nLWF1dG8taW5zdC10ZW1wbGF0ZS1udW1iZXJzJwogIHRvIHNlZSB3aGljaCByZWdl eHBzIGFyZSBtYXRjaGluZy4gIERvbid0IGxlYXZlIHRoYXQgbW9kZSBzZXQgYWZ0ZXIKICBkZWJ1 Z2dpbmcgaXMgY29tcGxldGVkIHRob3VnaCwgaXQgd2lsbCByZXN1bHQgaW4gbG90cyBvZiBleHRy YSBkaWZmZXJlbmNlcwogIGFuZCBtZXJnZSBjb25mbGljdHMuCgogIElmIGEgY29ubmVjdGlvbiBu YW1lIGRvZXMgbm90IG1hdGNoIGFueSB0ZW1wbGF0ZSwgaXQgaXMKICBjb25uZWN0ZWQgdG8gYSBu ZXQgYnkgdGhlIHNhbWUgbmFtZSBhcyB0aGUgcG9ydCAodW5sZXNzCiAgYHZlcmlsb2ctYXV0by1p bnN0LXRlbXBsYXRlLXJlcXVpcmVkJyBpcyB0cnVlKS4KCiAgU2V0dGluZyBgdmVyaWxvZy1hdXRv LXRlbXBsYXRlLXdhcm4tdW51c2VkJyB3aWxsIHJlcG9ydCBlcnJvcnMKICBpZiBhbnkgdGVtcGxh dGUgbGluZXMgYXJlIHVudXNlZC4KCiAgRm9yIGV4YW1wbGU6CgogICAgICAgIC8qIEluc3RNb2R1 bGUgQVVUT19URU1QTEFURSAoCiAgICAgICAgICAgICAgICAucHRsX2J1cyAgICAgICAgKHB0bF9i dXNuZXdbXSksCiAgICAgICAgICAgICAgICApOwogICAgICAgICovCiAgICAgICAgSW5zdE1vZHVs ZSBtczJtICgvKkFVVE9JTlNUKi8pOwoKICBUeXBpbmcgXFxbdmVyaWxvZy1hdXRvXSB3aWxsIG1h a2UgdGhpcyBpbnRvOgoKICAgICAgICBJbnN0TW9kdWxlIG1zMm0gKC8qQVVUT0lOU1QqLwogICAg ICAgICAgICAvLyBPdXRwdXRzCiAgICAgICAgICAgIC5Ob3RJblRlbXBsYXRlICAgICAgKE5vdElu VGVtcGxhdGUpLAogICAgICAgICAgICAucHRsX2J1cyAgICAgICAgICAgIChwdGxfYnVzbmV3WzM6 MF0pLAogICAgICAgICAgICAuLi4uCgoMCk11bHRpcGxlIE1vZHVsZSBUZW1wbGF0ZXM6CgogIFRo ZSBzYW1lIHRlbXBsYXRlIGxpbmVzIGNhbiBiZSBhcHBsaWVkIHRvIG11bHRpcGxlIG1vZHVsZXMg d2l0aAogIHRoZSBzeW50YXggYXMgZm9sbG93czoKCiAgICAgICAgLyogSW5zdE1vZHVsZUEgQVVU T19URU1QTEFURQogICAgICAgICAgIEluc3RNb2R1bGVCIEFVVE9fVEVNUExBVEUKICAgICAgICAg ICBJbnN0TW9kdWxlQyBBVVRPX1RFTVBMQVRFCiAgICAgICAgICAgSW5zdE1vZHVsZUQgQVVUT19U RU1QTEFURSAoCiAgICAgICAgICAgICAgICAucHRsX2J1cyAgICAgICAgKHB0bF9idXNuZXdbXSks CiAgICAgICAgICAgICAgICApOwogICAgICAgICovCgogIE5vdGUgdGhlcmUgaXMgb25seSBvbmUg QVVUT19URU1QTEFURSBvcGVuaW5nIHBhcmVudGhlc2lzLgoMCkAgVGVtcGxhdGVzOgoKICBJdCBp cyBjb21tb24gdG8gaW5zdGFudGlhdGUgYSBjZWxsIG11bHRpcGxlIHRpbWVzLCBzbyB0ZW1wbGF0 ZXMgbWFrZSBpdAogIHRyaXZpYWwgdG8gc3Vic3RpdHV0ZSBwYXJ0IG9mIHRoZSBjZWxsIG5hbWUg aW50byB0aGUgY29ubmVjdGlvbiBuYW1lLgoKICAgICAgICAvKiBJbnN0TmFtZSBBVVRPX1RFTVBM QVRFIDxvcHRpb25hbCBcIlJFR0VYUFwiPiAoCiAgICAgICAgICAgICAgICAuc2lnMSAgIChzaWd4 W0BdKSwKICAgICAgICAgICAgICAgIC5zaWcyICAgKHNpZ3lbQFwiKCUgKCsgMSBAKSA0KVwiXSks CiAgICAgICAgICAgICAgICApOwogICAgICAgICovCgogIElmIG5vIHJlZ3VsYXIgZXhwcmVzc2lv biBpcyBwcm92aWRlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgQVVUT19URU1QTEFURQogIGtleXdv cmQsIHRoZW4gdGhlIEAgY2hhcmFjdGVyIGluIGFueSBjb25uZWN0aW9uIG5hbWVzIHdpbGwgYmUg cmVwbGFjZWQKICB3aXRoIHRoZSBpbnN0YW50aWF0aW9uIG51bWJlcjsgdGhlIGZpcnN0IGRpZ2l0 cyBmb3VuZCBpbiB0aGUgY2VsbCdzCiAgaW5zdGFudGlhdGlvbiBuYW1lLgoKICBJZiBhIHJlZ3Vs YXIgZXhwcmVzc2lvbiBpcyBwcm92aWRlZCwgdGhlIEAgY2hhcmFjdGVyIHdpbGwgYmUgcmVwbGFj ZWQKICB3aXRoIHRoZSBmaXJzdCAoKSBncm91cGluZyB0aGF0IG1hdGNoZXMgYWdhaW5zdCB0aGUg Y2VsbCBuYW1lLiAgVXNpbmcgYQogIHJlZ2V4cCBvZiBgXFwoWzAtOV0rXFwpJyBwcm92aWRlcyBp ZGVudGljYWwgdmFsdWVzIGZvciBAIGFzIHdoZW4gbm8KICByZWdleHAgaXMgcHJvdmlkZWQuICBJ ZiB5b3UgdXNlIG11bHRpcGxlIGxheWVycyBvZiBwYXJlbnRoZXNpcywKICBgdGVzdFxcKFteMC05 XStcXClfXFwoWzAtOV0rXFwpJyB3b3VsZCByZXBsYWNlIEAgd2l0aCBub24tbnVtYmVyCiAgY2hh cmFjdGVycyBhZnRlciB0ZXN0IGFuZCBiZWZvcmUgXywgd2hlcmVhcwogIGBcXCh0ZXN0XFwoW2Et el0rXFwpX1xcKFswLTldK1xcKVxcKScgd291bGQgcmVwbGFjZSBAIHdpdGggdGhlIGVudGlyZQog IG1hdGNoLgoKICBGb3IgZXhhbXBsZToKCiAgICAgICAgLyogSW5zdE1vZHVsZSBBVVRPX1RFTVBM QVRFICgKICAgICAgICAgICAgICAgIC5wdGxfbWFwdmFsaWR4ICAgICAgICAgIChwdGxfbWFwdmFs aWRbQF0pLAogICAgICAgICAgICAgICAgLnB0bF9tYXB2YWxpZHAxeCAgICAgICAgKHB0bF9tYXB2 YWxpZFtAXCIoJSAoKyAxIEApIDQpXCJdKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgKi8K ICAgICAgICBJbnN0TW9kdWxlIG1zMm0gKC8qQVVUT0lOU1QqLyk7CgogIFR5cGluZyBcXFt2ZXJp bG9nLWF1dG9dIHdpbGwgbWFrZSB0aGlzIGludG86CgogICAgICAgIEluc3RNb2R1bGUgbXMybSAo LypBVVRPSU5TVCovCiAgICAgICAgICAgIC8vIE91dHB1dHMKICAgICAgICAgICAgLnB0bF9tYXB2 YWxpZHggICAgICAgICAgICAgIChwdGxfbWFwdmFsaWRbMl0pLAogICAgICAgICAgICAucHRsX21h cHZhbGlkcDF4ICAgICAgICAgICAgKHB0bF9tYXB2YWxpZFszXSkpOwoKICBOb3RlIHRoZSBAIGNo YXJhY3RlciB3YXMgcmVwbGFjZWQgd2l0aCB0aGUgMiBmcm9tIFwibXMybVwiLgoKICBBbHRlcm5h dGl2ZWx5LCB1c2luZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgQDoKCiAgICAgICAgLyogSW5z dE1vZHVsZSBBVVRPX1RFTVBMQVRFIFwiX1xcKFthLXpdK1xcKVwiICgKICAgICAgICAgICAgICAg IC5wdGxfbWFwdmFsaWR4ICAgICAgICAgIChAX3B0bF9tYXB2YWxpZCksCiAgICAgICAgICAgICAg ICAucHRsX21hcHZhbGlkcDF4ICAgICAgICAocHRsX21hcHZhbGlkX0ApLAogICAgICAgICAgICAg ICAgKTsKICAgICAgICAqLwogICAgICAgIEluc3RNb2R1bGUgbXMyX0ZPTyAoLypBVVRPSU5TVCov KTsKICAgICAgICBJbnN0TW9kdWxlIG1zMl9CQVIgKC8qQVVUT0lOU1QqLyk7CgogIFR5cGluZyBc XFt2ZXJpbG9nLWF1dG9dIHdpbGwgbWFrZSB0aGlzIGludG86CgogICAgICAgIEluc3RNb2R1bGUg bXMyX0ZPTyAoLypBVVRPSU5TVCovCiAgICAgICAgICAgIC8vIE91dHB1dHMKICAgICAgICAgICAg LnB0bF9tYXB2YWxpZHggICAgICAgICAgICAgIChGT09fcHRsX21hcHZhbGlkKSwKICAgICAgICAg ICAgLnB0bF9tYXB2YWxpZHAxeCAgICAgICAgICAgIChwdGxfbWFwdmFsaWRfRk9PKSk7CiAgICAg ICAgSW5zdE1vZHVsZSBtczJfQkFSICgvKkFVVE9JTlNUKi8KICAgICAgICAgICAgLy8gT3V0cHV0 cwogICAgICAgICAgICAucHRsX21hcHZhbGlkeCAgICAgICAgICAgICAgKEJBUl9wdGxfbWFwdmFs aWQpLAogICAgICAgICAgICAucHRsX21hcHZhbGlkcDF4ICAgICAgICAgICAgKHB0bF9tYXB2YWxp ZF9CQVIpKTsKCgwKUmVnZXhwIFRlbXBsYXRlczoKCiAgQSB0ZW1wbGF0ZSBlbnRyeSBvZiB0aGUg Zm9ybQoKICAgICAgICAgICAgLnBjaV9yZXFcXChbMC05XStcXClfbCAgICAgIChwY2lfcmVxX2p0 YWdfW1xcMV0pLAoKICB3aWxsIGFwcGx5IGFuIEVtYWNzIHN0eWxlIHJlZ3VsYXIgZXhwcmVzc2lv biBzZWFyY2ggZm9yIGFueSBwb3J0IGJlZ2lubmluZwogIGluIHBjaV9yZXEgZm9sbG93ZWQgYnkg bnVtYmVycyBhbmQgZW5kaW5nIGluIF9sIGFuZCBjb25uZWN0aW5nIHRoYXQgdG8KICB0aGUgcGNp X3JlcV9qdGFnX1tdIG5ldCwgd2l0aCB0aGUgYnVzIHN1YnNjcmlwdCBjb21pbmcgZnJvbSB3aGF0 IG1hdGNoZXMKICBpbnNpZGUgdGhlIGZpcnN0IHNldCBvZiBcXCggXFwpLiAgVGh1cyBwY2lfcmVx Ml9sIGJlY29tZXMgcGNpX3JlcV9qdGFnX1syXS4KCiAgU2luY2UgXFwoWzAtOV0rXFwpIGlzIHNv IGNvbW1vbiBhbmQgdWdseSB0byByZWFkLCBhIEAgaW4gdGhlIHBvcnQgbmFtZQogIGRvZXMgdGhl IHNhbWUgdGhpbmcuICAoTm90ZSBhIEAgaW4gdGhlIGNvbm5lY3Rpb24vcmVwbGFjZW1lbnQgdGV4 dCBpcwogIGNvbXBsZXRlbHkgZGlmZmVyZW50IC0tIHN0aWxsIHVzZSBcXDEgdGhlcmUhKSAgVGh1 cyB0aGlzIGlzIHRoZSBzYW1lIGFzCiAgdGhlIGFib3ZlIHRlbXBsYXRlOgoKICAgICAgICAgICAg LnBjaV9yZXFAX2wgICAgICAgICAocGNpX3JlcV9qdGFnX1tcXDFdKSwKCiAgSGVyZSdzIGFub3Ro ZXIgZXhhbXBsZSB0byByZW1vdmUgdGhlIF9sLCB1c2VmdWwgd2hlbiBuYW1pbmcgY29udmVudGlv bnMKICBzcGVjaWZ5IF8gYWxvbmUgdG8gbWVhbiBhY3RpdmUgbG93LiAgTm90ZSB0aGUgdXNlIG9m IFtdIHRvIGtlZXAgdGhlIGJ1cwogIHN1YnNjcmlwdDoKCiAgICAgICAgICAgIC5cXCguKlxcKV9s ICAgICAgICAgKFxcMV9bXSksCgwKTGlzcCBUZW1wbGF0ZXM6CgogIEZpcnN0IGFueSByZWd1bGFy IGV4cHJlc3Npb24gdGVtcGxhdGUgaXMgZXhwYW5kZWQuCgogIElmIHRoZSBzeW50YXggQFwiKCAu Li4gKVwiIGlzIGZvdW5kIGluIGEgY29ubmVjdGlvbiwgdGhlIGV4cHJlc3Npb24gaW4KICBxdW90 ZXMgd2lsbCBiZSBldmFsdWF0ZWQgYXMgYSBMaXNwIGV4cHJlc3Npb24sIHdpdGggQCByZXBsYWNl ZCBieSB0aGUKICBpbnN0YW50aWF0aW9uIG51bWJlci4gIFRoZSBNQVBWQUxJRFAxWCBleGFtcGxl IGFib3ZlIHdvdWxkIHB1dCBAKzEgbW9kdWxvCiAgNCBpbnRvIHRoZSBicmFja2V0cy4gIFF1b3Rl IGFsbCBkb3VibGUtcXVvdGVzIGluc2lkZSB0aGUgZXhwcmVzc2lvbiB3aXRoCiAgYSBsZWFkaW5n IGJhY2tzbGFzaCAoXFxcIi4uLlxcXCIpOyBvciBpZiB0aGUgTGlzcCB0ZW1wbGF0ZSBpcyBhbHNv IGEKICByZWdleHAgdGVtcGxhdGUgYmFja3NsYXNoIHRoZSBiYWNrc2xhc2ggcXVvdGUgKFxcXFxc Ii4uLlxcXFxcIikuCgogIFRoZXJlIGFyZSBzcGVjaWFsIHZhcmlhYmxlcyBkZWZpbmVkIHRoYXQg YXJlIHVzZWZ1bCBpbiB0aGVzZQogIExpc3AgZnVuY3Rpb25zOgoKICAgICAgICB2bC1uYW1lICAg ICAgICBOYW1lIHBvcnRpb24gb2YgdGhlIGlucHV0L291dHB1dCBwb3J0LgogICAgICAgIHZsLWJp dHMgICAgICAgIEJ1cyBiaXRzIHBvcnRpb24gb2YgdGhlIGlucHV0L291dHB1dCBwb3J0IChgWzI6 MF0nKS4KICAgICAgICB2bC1tYml0cyAgICAgICBNdWx0aWRpbWVuc2lvbmFsIGFycmF5IGJpdHMg Zm9yIHBvcnQgKGBbMjowXVszOjBdJykuCiAgICAgICAgdmwtd2lkdGggICAgICAgV2lkdGggb2Yg dGhlIGlucHV0L291dHB1dCBwb3J0IChgMycgZm9yIFsyOjBdKS4KICAgICAgICAgICAgICAgICAg ICAgICBNYXkgYmUgYSAoLi4uKSBleHByZXNzaW9uIGlmIGJpdHMgaXNuJ3QgYSBjb25zdGFudC4K ICAgICAgICB2bC1kaXIgICAgICAgICBEaXJlY3Rpb24gb2YgdGhlIHBpbiBpbnB1dC9vdXRwdXQv aW5vdXQvaW50ZXJmYWNlLgogICAgICAgIHZsLW1vZHBvcnQgICAgIFRoZSBtb2Rwb3J0LCBpZiBh biBpbnRlcmZhY2Ugd2l0aCBhIG1vZHBvcnQuCiAgICAgICAgdmwtY2VsbC10eXBlICAgTW9kdWxl IG5hbWUvdHlwZSBvZiB0aGUgY2VsbCAoYEluc3RNb2R1bGUnKS4KICAgICAgICB2bC1jZWxsLW5h bWUgICBJbnN0YW5jZSBuYW1lIG9mIHRoZSBjZWxsIChgaW5zdE5hbWUnKS4KCiAgTm9ybWFsIExp c3AgdmFyaWFibGVzIG1heSBiZSB1c2VkIGluIGV4cHJlc3Npb25zLiAgU2VlCiAgYHZlcmlsb2ct cmVhZC1kZWZpbmVzJyB3aGljaCBjYW4gc2V0IHZoLXtkZWZpbmVuYW1lfSB2YXJpYWJsZXMgZm9y IHVzZQogIGhlcmUuICBBbHNvLCBhbnkgY29tbWVudHMgb2YgdGhlIGZvcm06CgogICAgICAgIC8q QVVUT19MSVNQKHNldHEgZm9vIDEpKi8KCiAgd2lsbCBldmFsdWF0ZSBhbnkgTGlzcCBleHByZXNz aW9uIGluc2lkZSB0aGUgcGFyZW50aGVzaXMgYmV0d2VlbiB0aGUKICBiZWdpbm5pbmcgb2YgdGhl IGJ1ZmZlciBhbmQgdGhlIHBvaW50IG9mIHRoZSBBVVRPSU5TVC4gIFRoaXMgYWxsb3dzCiAgZnVu Y3Rpb25zIHRvIGJlIGRlZmluZWQgb3IgdmFyaWFibGVzIHRvIGJlIGNoYW5nZWQgYmV0d2VlbiBp bnN0YW50aWF0aW9ucy4KICAoU2VlIGFsc28gYHZlcmlsb2ctYXV0by1pbnNlcnQtbGlzcCcgaWYg eW91IHdhbnQgdGhlIG91dHB1dCBmcm9tIHlvdXIKICBsaXNwIGZ1bmN0aW9uIHRvIGJlIGluc2Vy dGVkLikKCiAgTm90ZSB0aGF0IHdoZW4gdXNpbmcgbGlzcCBleHByZXNzaW9ucyBlcnJvcnMgbWF5 IG9jY3VyIHdoZW4gQCBpcyBub3QgYQogIG51bWJlcjsgeW91IG1heSBuZWVkIHRvIHVzZSB0aGUg c3RhbmRhcmQgRW1hY3MgTGlzcCBmdW5jdGlvbnMKICBgbnVtYmVyLXRvLXN0cmluZycgYW5kIGBz dHJpbmctdG8tbnVtYmVyJy4KCiAgQWZ0ZXIgdGhlIGV2YWx1YXRpb24gaXMgY29tcGxldGVkLCBA IHN1YnN0aXR1dGlvbiBhbmQgW10gc3Vic3RpdHV0aW9uCiAgb2NjdXIuCgpGb3IgbW9yZSBpbmZv cm1hdGlvbiBzZWUgdGhlIFxcW3Zlcmlsb2ctZmFxXSBhbmQgZm9ydW1zIGF0IFVSTApgaHR0cHM6 Ly93d3cudmVyaXBvb2wub3JnJy4iCiAgKHNhdmUtZXhjdXJzaW9uCiAgICA7OyBGaW5kIGJlZ2lu bmluZwogICAgKGxldCogKChwYXJhbXMgKHZlcmlsb2ctcmVhZC1hdXRvLXBhcmFtcyAwIDEpKQog ICAgICAgICAgIChyZWdleHAgKG50aCAwIHBhcmFtcykpCiAgICAgICAgICAgKHB0IChwb2ludCkp CiAgICAgICAgICAgKGZvci1zdGFyIChzYXZlLWV4Y3Vyc2lvbiAoYmFja3dhcmQtY2hhciAyKSAo bG9va2luZy1hdCAiXFwuXFwqIikpKQoJICAgKGluZGVudC1wdCAoc2F2ZS1leGN1cnNpb24gKHZl cmlsb2ctYmFja3dhcmQtb3Blbi1wYXJlbikKCQkJCSAgICAgICgxKyAoY3VycmVudC1jb2x1bW4p KSkpCgkgICAodmVyaWxvZy1hdXRvLWluc3QtY29sdW1uIChtYXggdmVyaWxvZy1hdXRvLWluc3Qt Y29sdW1uCgkJCQkJICAoKyAxNiAoKiA4ICgvICgrIGluZGVudC1wdCA3KSA4KSkpKSkKICAgICAg ICAgICAodmVyaWxvZy1hdXRvLWluc3QtZmlyc3QtYW55IHQpCgkgICAobW9kaSAodmVyaWxvZy1t b2RpLWN1cnJlbnQpKQoJICAgKG1vZGRlY2xzICh2ZXJpbG9nLW1vZGktZ2V0LWRlY2xzIG1vZGkp KQoJICAgc3VibW9kIHN1Ym1vZGkgc3VibW9kZGVjbHMKICAgICAgICAgICBpbnN0IHNraXAtcGlu cyB0cGwtbGlzdCB0cGwtbnVtIHBhci12YWx1ZXMpCgogICAgICA7OyBGaW5kIG1vZHVsZSBuYW1l IHRoYXQgaXMgaW5zdGFudGlhdGVkCiAgICAgIChzZXRxIHN1Ym1vZCAgKHZlcmlsb2ctcmVhZC1p bnN0LW1vZHVsZSkKCSAgICBpbnN0ICh2ZXJpbG9nLXJlYWQtaW5zdC1uYW1lKQoJICAgIHZsLWNl bGwtdHlwZSBzdWJtb2QKCSAgICB2bC1jZWxsLW5hbWUgaW5zdAoJICAgIHNraXAtcGlucyAoYXJl ZiAodmVyaWxvZy1yZWFkLWluc3QtcGlucykgMCkpCgogICAgICA7OyBQYXJzZSBhbnkgQVVUT19M SVNQKCkgYmVmb3JlIGhlcmUKICAgICAgKHZlcmlsb2ctcmVhZC1hdXRvLWxpc3AgKHBvaW50LW1p bikgcHQpCgogICAgICA7OyBSZWFkIHBhcmFtZXRlcnMgKGFmdGVyIEFVVE9fTElTUCkKICAgICAg KHNldHEgcGFyLXZhbHVlcyAoYW5kIHZlcmlsb2ctYXV0by1pbnN0LXBhcmFtLXZhbHVlCgkJCSAg ICAodmVyaWxvZy1yZWFkLWluc3QtcGFyYW0tdmFsdWUpKSkKCiAgICAgIDs7IExvb2t1cCBwb3Np dGlvbiwgZXRjIG9mIHN1Ym1vZHVsZQogICAgICA7OyBOb3RlIHRoaXMgbWF5IHJhaXNlIGFuIGVy cm9yCiAgICAgICh3aGVuIChhbmQgKG5vdCAobWVtYmVyIHN1Ym1vZCB2ZXJpbG9nLWdhdGUta2V5 d29yZHMpKQoJCSAoc2V0cSBzdWJtb2RpICh2ZXJpbG9nLW1vZGktbG9va3VwIHN1Ym1vZCB0KSkp Cgkoc2V0cSBzdWJtb2RkZWNscyAodmVyaWxvZy1tb2RpLWdldC1kZWNscyBzdWJtb2RpKSkKCTs7 IElmIHRoZXJlJ3MgYSBudW1iZXIgaW4gdGhlIGluc3RhbnRpYXRpb24sIGl0IG1heSBiZSBhbiBh cmd1bWVudCB0byB0aGUKCTs7IGF1dG9tYXRpYyB2YXJpYWJsZSBpbnN0YW50aWF0aW9uIHByb2dy YW0uCgkobGV0KiAoKHRwbC1pbmZvICh2ZXJpbG9nLXJlYWQtYXV0by10ZW1wbGF0ZSBzdWJtb2Qp KQoJICAgICAgICh0cGwtcmVnZXhwIChhcmVmIHRwbC1pbmZvIDApKSkKCSAgKHNldHEgdHBsLW51 bSAoaWYgKHZlcmlsb2ctc3RyaW5nLW1hdGNoLWZvbGQgdHBsLXJlZ2V4cCBpbnN0KQoJCQkgICAg KG1hdGNoLXN0cmluZyAxIGluc3QpCgkJCSAgIiIpCgkJdHBsLWxpc3QgKGFyZWYgdHBsLWluZm8g MSkpKQoJOzsgRmluZCBzdWJtb2R1bGUncyBzaWduYWxzIGFuZCBkdW1wCgkobGV0ICgoc2lnLWxp c3QgKGFuZCAoZXF1YWwgKHZlcmlsb2ctbW9kaS1nZXQtdHlwZSBzdWJtb2RpKSAiaW50ZXJmYWNl IikKCQkJICAgICAodmVyaWxvZy1zaWduYWxzLW5vdC1pbgoJCQkgICAgICAodmVyaWxvZy1kZWNs cy1nZXQtdmFycyBzdWJtb2RkZWNscykKCQkJICAgICAgc2tpcC1waW5zKSkpCgkgICAgICAodmwt ZGlyICJpbnRlcmZhY2VkIikpCiAgICAgICAgICAod2hlbiByZWdleHAKICAgICAgICAgICAgKHNl dHEgc2lnLWxpc3QgKHZlcmlsb2ctc2lnbmFscy1tYXRjaGluZy1yZWdleHAgc2lnLWxpc3QgcmVn ZXhwKSkpCgkgICh3aGVuIChhbmQgc2lnLWxpc3QKCQkgICAgIHZlcmlsb2ctYXV0by1pbnN0LWlu dGVyZmFjZWQtcG9ydHMpCiAgICAgICAgICAgIDs7IE5vdGUgdGhlc2UgYXJlIHNlYXJjaGVkIGZv ciBpbiB2ZXJpbG9nLXJlYWQtc3ViLWRlY2xzLgogICAgICAgICAgICAodmVyaWxvZy1hdXRvLWlu c3QtcG9ydC1saXN0ICIvLyBJbnRlcmZhY2VkXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2lnLWxpc3QgaW5kZW50LXB0IG1vZGRlY2xzCgkJCQkJIHRwbC1saXN0 IHRwbC1udW0gZm9yLXN0YXIgcGFyLXZhbHVlcykpKQoJKGxldCAoKHNpZy1saXN0ICh2ZXJpbG9n LXNpZ25hbHMtbm90LWluCgkJCSAodmVyaWxvZy1kZWNscy1nZXQtaW50ZXJmYWNlcyBzdWJtb2Rk ZWNscykKCQkJIHNraXAtcGlucykpCgkgICAgICAodmwtZGlyICJpbnRlcmZhY2UiKSkKICAgICAg ICAgICh3aGVuIHJlZ2V4cAogICAgICAgICAgICAoc2V0cSBzaWctbGlzdCAodmVyaWxvZy1zaWdu YWxzLW1hdGNoaW5nLXJlZ2V4cCBzaWctbGlzdCByZWdleHApKSkKCSAgKHdoZW4gc2lnLWxpc3QK ICAgICAgICAgICAgOzsgTm90ZSB0aGVzZSBhcmUgc2VhcmNoZWQgZm9yIGluIHZlcmlsb2ctcmVh ZC1zdWItZGVjbHMuCiAgICAgICAgICAgICh2ZXJpbG9nLWF1dG8taW5zdC1wb3J0LWxpc3QgIi8v IEludGVyZmFjZXNcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aWctbGlzdCBpbmRlbnQtcHQgbW9kZGVjbHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0cGwtbGlzdCB0cGwtbnVtIGZvci1zdGFyIHBhci12YWx1ZXMpKSkKCShsZXQg KChzaWctbGlzdCAodmVyaWxvZy1zaWduYWxzLW5vdC1pbgoJCQkgKHZlcmlsb2ctZGVjbHMtZ2V0 LW91dHB1dHMgc3VibW9kZGVjbHMpCgkJCSBza2lwLXBpbnMpKQoJICAgICAgKHZsLWRpciAib3V0 cHV0IikpCiAgICAgICAgICAod2hlbiByZWdleHAKICAgICAgICAgICAgKHNldHEgc2lnLWxpc3Qg KHZlcmlsb2ctc2lnbmFscy1tYXRjaGluZy1yZWdleHAgc2lnLWxpc3QgcmVnZXhwKSkpCgkgICh3 aGVuIHNpZy1saXN0CiAgICAgICAgICAgICh2ZXJpbG9nLWF1dG8taW5zdC1wb3J0LWxpc3QgIi8v IE91dHB1dHNcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWct bGlzdCBpbmRlbnQtcHQgbW9kZGVjbHMKCQkJCQkgdHBsLWxpc3QgdHBsLW51bSBmb3Itc3RhciBw YXItdmFsdWVzKSkpCgkobGV0ICgoc2lnLWxpc3QgKHZlcmlsb2ctc2lnbmFscy1ub3QtaW4KCQkJ ICh2ZXJpbG9nLWRlY2xzLWdldC1pbm91dHMgc3VibW9kZGVjbHMpCgkJCSBza2lwLXBpbnMpKQoJ ICAgICAgKHZsLWRpciAiaW5vdXQiKSkKICAgICAgICAgICh3aGVuIHJlZ2V4cAogICAgICAgICAg ICAoc2V0cSBzaWctbGlzdCAodmVyaWxvZy1zaWduYWxzLW1hdGNoaW5nLXJlZ2V4cCBzaWctbGlz dCByZWdleHApKSkKCSAgKHdoZW4gc2lnLWxpc3QKICAgICAgICAgICAgKHZlcmlsb2ctYXV0by1p bnN0LXBvcnQtbGlzdCAiLy8gSW5vdXRzXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2lnLWxpc3QgaW5kZW50LXB0IG1vZGRlY2xzCgkJCQkJIHRwbC1saXN0IHRw bC1udW0gZm9yLXN0YXIgcGFyLXZhbHVlcykpKQoJKGxldCAoKHNpZy1saXN0ICh2ZXJpbG9nLXNp Z25hbHMtbm90LWluCgkJCSAodmVyaWxvZy1kZWNscy1nZXQtaW5wdXRzIHN1Ym1vZGRlY2xzKQoJ CQkgc2tpcC1waW5zKSkKCSAgICAgICh2bC1kaXIgImlucHV0IikpCiAgICAgICAgICAod2hlbiBy ZWdleHAKICAgICAgICAgICAgKHNldHEgc2lnLWxpc3QgKHZlcmlsb2ctc2lnbmFscy1tYXRjaGlu Zy1yZWdleHAgc2lnLWxpc3QgcmVnZXhwKSkpCgkgICh3aGVuIHNpZy1saXN0CiAgICAgICAgICAg ICh2ZXJpbG9nLWF1dG8taW5zdC1wb3J0LWxpc3QgIi8vIElucHV0c1xuIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZy1saXN0IGluZGVudC1wdCBtb2RkZWNscwoJ CQkJCSB0cGwtbGlzdCB0cGwtbnVtIGZvci1zdGFyIHBhci12YWx1ZXMpKSkKCTs7IEtpbGwgZXh0 cmEgc2VtaQoJKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAoY29uZCAoKG5vdCB2ZXJpbG9nLWF1 dG8taW5zdC1maXJzdC1hbnkpCgkJIChyZS1zZWFyY2gtYmFja3dhcmQgIiwiIHB0IHQpCgkJIChk ZWxldGUtY2hhciAxKQoJCSAoaW5zZXJ0ICIpOyIpCiAgICAgICAgICAgICAgICAgKHNlYXJjaC1m b3J3YXJkICJcbiIpICA7IEFkZGVkIGJ5IGluc3QtcG9ydAoJCSAoZGVsZXRlLWNoYXIgLTEpCiAg ICAgICAgICAgICAgICAgKGlmIChzZWFyY2gtZm9yd2FyZCAiKSIgbmlsIHQpICA7IEZyb20gdXNl ciwgbW92ZWQgdXAgYSBsaW5lCgkJICAgICAoZGVsZXRlLWNoYXIgLTEpKQogICAgICAgICAgICAg ICAgIChpZiAoc2VhcmNoLWZvcndhcmQgIjsiIG5pbCB0KSAgOyBEb24ndCBlcnJvciBpZiB1c2Vy IGhhZCBzeW50YXggZXJyb3IgYW5kIGZvcmdvdCBpdAoJCSAgICAgKGRlbGV0ZS1jaGFyIC0xKSkp KSkpKSkpCgooZGVmdW4gdmVyaWxvZy1hdXRvLWluc3QtcGFyYW0gKCkKICAiRXhwYW5kIEFVVE9J TlNUUEFSQU0gc3RhdGVtZW50cywgYXMgcGFydCBvZiBcXFt2ZXJpbG9nLWF1dG9dLgpSZXBsYWNl IHRoZSBwYXJhbWV0ZXIgY29ubmVjdGlvbnMgdG8gYW4gaW5zdGFudGlhdGlvbiB3aXRoIG9uZXMK YXV0b21hdGljYWxseSBkZXJpdmVkIGZyb20gdGhlIG1vZHVsZSBoZWFkZXIgb2YgdGhlIGluc3Rh bnRpYXRlZCBuZXRsaXN0LgoKWW91IG1heSBhbHNvIHByb3ZpZGUgYW4gb3B0aW9uYWwgcmVndWxh ciBleHByZXNzaW9uLCBpbiB3aGljaApjYXNlIG9ubHkgcGFyYW1ldGVycyBtYXRjaGluZyB0aGUg cmVndWxhciBleHByZXNzaW9uIHdpbGwgYmUKaW5jbHVkZWQsIG9yIGV4Y2x1ZGVkIGlmIHRoZSBy ZWdleHAgYmVnaW5zIHdpdGggPyEgKHF1ZXN0aW9uLW1hcmsKZXhjbGFtYXRpb24tbWFyaykuCgpT ZWUgXFxbdmVyaWxvZy1hdXRvLWluc3RdIGZvciBsaW1pdGF0aW9ucywgYW5kIHRlbXBsYXRlcyB0 byBjdXN0b21pemUgdGhlCm91dHB1dC4KCkZvciBleGFtcGxlLCBmaXJzdCB0YWtlIHRoZSBzdWJt b2R1bGUgSW5zdE1vZHVsZS52OgoKICAgICAgICBtb2R1bGUgSW5zdE1vZHVsZSAobyxpKTsKICAg ICAgICAgICBwYXJhbWV0ZXIgUEFSOwogICAgICAgIGVuZG1vZHVsZQoKVGhpcyBpcyB0aGVuIHVz ZWQgaW4gYW4gdXBwZXIgbGV2ZWwgbW9kdWxlOgoKICAgICAgICBtb2R1bGUgRXhhbXBJbnN0UGFy YW0gKG8saSk7CiAgICAgICAgICAgcGFyYW1ldGVyIFBBUjsKICAgICAgICAgICBJbnN0TW9kdWxl ICMoLypBVVRPSU5TVFBBUkFNKi8pCiAgICAgICAgICAgICAgICBpbnN0TmFtZSAoLypBVVRPSU5T VCovKTsKICAgICAgICBlbmRtb2R1bGUKClR5cGluZyBcXFt2ZXJpbG9nLWF1dG9dIHdpbGwgbWFr ZSB0aGlzIGludG86CgogICAgICAgIG1vZHVsZSBFeGFtcEluc3RQYXJhbSAobyxpKTsKICAgICAg ICAgICBwYXJhbWV0ZXIgUEFSOwogICAgICAgICAgIEluc3RNb2R1bGUgIygvKkFVVE9JTlNUUEFS QU0qLwogICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXJhbWV0ZXJzCiAgICAgICAgICAgICAg ICAgICAgICAgIC5QQVIgICAgKFBBUikpCiAgICAgICAgICAgICAgICBpbnN0TmFtZSAoLypBVVRP SU5TVCovKTsKICAgICAgICBlbmRtb2R1bGUKCldoZXJlIHRoZSBsaXN0IG9mIHBhcmFtZXRlciBj b25uZWN0aW9ucyBjb21lIGZyb20gdGhlIGluc3QgbW9kdWxlLgoMClRlbXBsYXRlczoKCiAgWW91 IGNhbiBjdXN0b21pemUgdGhlIHBhcmFtZXRlciBjb25uZWN0aW9ucyB1c2luZyBBVVRPX1RFTVBM QVRFcywKICBqdXN0IGFzIHlvdSB3b3VsZCB3aXRoIFxcW3Zlcmlsb2ctYXV0by1pbnN0XS4iCiAg KHNhdmUtZXhjdXJzaW9uCiAgICA7OyBGaW5kIGJlZ2lubmluZwogICAgKGxldCogKChwYXJhbXMg KHZlcmlsb2ctcmVhZC1hdXRvLXBhcmFtcyAwIDEpKQogICAgICAgICAgIChyZWdleHAgKG50aCAw IHBhcmFtcykpCiAgICAgICAgICAgKHB0IChwb2ludCkpCgkgICAoaW5kZW50LXB0IChzYXZlLWV4 Y3Vyc2lvbiAodmVyaWxvZy1iYWNrd2FyZC1vcGVuLXBhcmVuKQoJCQkJICAgICAgKDErIChjdXJy ZW50LWNvbHVtbikpKSkKCSAgICh2ZXJpbG9nLWF1dG8taW5zdC1jb2x1bW4gKG1heCB2ZXJpbG9n LWF1dG8taW5zdC1jb2x1bW4KCQkJCQkgICgrIDE2ICgqIDggKC8gKCsgaW5kZW50LXB0IDcpIDgp KSkpKQogICAgICAgICAgICh2ZXJpbG9nLWF1dG8taW5zdC1maXJzdC1hbnkgdCkKCSAgIChtb2Rp ICh2ZXJpbG9nLW1vZGktY3VycmVudCkpCgkgICAobW9kZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQt ZGVjbHMgbW9kaSkpCgkgICBzdWJtb2Qgc3VibW9kaSBzdWJtb2RkZWNscwogICAgICAgICAgIGlu c3Qgc2tpcC1waW5zIHRwbC1saXN0IHRwbC1udW0pCiAgICAgIDs7IEZpbmQgbW9kdWxlIG5hbWUg dGhhdCBpcyBpbnN0YW50aWF0ZWQKICAgICAgKHNldHEgc3VibW9kIChzYXZlLWV4Y3Vyc2lvbgoJ CSAgICAgOzsgR2V0IHRvIHRoZSBwb2ludCB3aGVyZSBBVVRPSU5TVCBub3JtYWxseSBpcyB0byBy ZWFkIHRoZSBtb2R1bGUKCQkgICAgICh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkLXF1aWNrICJb KDtdIiBuaWwgbmlsKQoJCSAgICAgKHZlcmlsb2ctcmVhZC1pbnN0LW1vZHVsZSkpCgkgICAgaW5z dCAgIChzYXZlLWV4Y3Vyc2lvbgoJCSAgICAgOzsgR2V0IHRvIHRoZSBwb2ludCB3aGVyZSBBVVRP SU5TVCBub3JtYWxseSBpcyB0byByZWFkIHRoZSBtb2R1bGUKCQkgICAgICh2ZXJpbG9nLXJlLXNl YXJjaC1mb3J3YXJkLXF1aWNrICJbKDtdIiBuaWwgbmlsKQoJCSAgICAgKHZlcmlsb2ctcmVhZC1p bnN0LW5hbWUpKQoJICAgIHZsLWNlbGwtdHlwZSBzdWJtb2QKCSAgICB2bC1jZWxsLW5hbWUgaW5z dAoJICAgIHNraXAtcGlucyAoYXJlZiAodmVyaWxvZy1yZWFkLWluc3QtcGlucykgMCkpCgogICAg ICA7OyBQYXJzZSBhbnkgQVVUT19MSVNQKCkgYmVmb3JlIGhlcmUKICAgICAgKHZlcmlsb2ctcmVh ZC1hdXRvLWxpc3AgKHBvaW50LW1pbikgcHQpCgogICAgICA7OyBMb29rdXAgcG9zaXRpb24sIGV0 YyBvZiBzdWJtb2R1bGUKICAgICAgOzsgTm90ZSB0aGlzIG1heSByYWlzZSBhbiBlcnJvcgogICAg ICAod2hlbiAoc2V0cSBzdWJtb2RpICh2ZXJpbG9nLW1vZGktbG9va3VwIHN1Ym1vZCB0KSkKCShz ZXRxIHN1Ym1vZGRlY2xzICh2ZXJpbG9nLW1vZGktZ2V0LWRlY2xzIHN1Ym1vZGkpKQoJOzsgSWYg dGhlcmUncyBhIG51bWJlciBpbiB0aGUgaW5zdGFudGlhdGlvbiwgaXQgbWF5IGJlIGFuIGFyZ3Vt ZW50IHRvIHRoZQoJOzsgYXV0b21hdGljIHZhcmlhYmxlIGluc3RhbnRpYXRpb24gcHJvZ3JhbS4K CShsZXQqICgodHBsLWluZm8gKHZlcmlsb2ctcmVhZC1hdXRvLXRlbXBsYXRlIHN1Ym1vZCkpCgkg ICAgICAgKHRwbC1yZWdleHAgKGFyZWYgdHBsLWluZm8gMCkpKQoJICAoc2V0cSB0cGwtbnVtIChp ZiAodmVyaWxvZy1zdHJpbmctbWF0Y2gtZm9sZCB0cGwtcmVnZXhwIGluc3QpCgkJCSAgICAobWF0 Y2gtc3RyaW5nIDEgaW5zdCkKCQkJICAiIikKCQl0cGwtbGlzdCAoYXJlZiB0cGwtaW5mbyAxKSkp Cgk7OyBGaW5kIHN1Ym1vZHVsZSdzIHNpZ25hbHMgYW5kIGR1bXAKCShsZXQgKChzaWctbGlzdCAo dmVyaWxvZy1zaWduYWxzLW5vdC1pbgoJCQkgKHZlcmlsb2ctZGVjbHMtZ2V0LWdwYXJhbXMgc3Vi bW9kZGVjbHMpCgkJCSBza2lwLXBpbnMpKQoJICAgICAgKHZsLWRpciAicGFyYW1ldGVyIikpCiAg ICAgICAgICAod2hlbiByZWdleHAKICAgICAgICAgICAgKHNldHEgc2lnLWxpc3QgKHZlcmlsb2ct c2lnbmFscy1tYXRjaGluZy1yZWdleHAgc2lnLWxpc3QgcmVnZXhwKSkpCgkgICh3aGVuIHNpZy1s aXN0CiAgICAgICAgICAgIDs7IE5vdGUgdGhlc2UgYXJlIHNlYXJjaGVkIGZvciBpbiB2ZXJpbG9n LXJlYWQtc3ViLWRlY2xzLgogICAgICAgICAgICAodmVyaWxvZy1hdXRvLWluc3QtcG9ydC1saXN0 ICIvLyBQYXJhbWV0ZXJzXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2lnLWxpc3QgaW5kZW50LXB0IG1vZGRlY2xzCgkJCQkJIHRwbC1saXN0IHRwbC1udW0gbmls IG5pbCkpKQoJOzsgS2lsbCBleHRyYSBzZW1pCgkoc2F2ZS1leGN1cnNpb24KICAgICAgICAgIChj b25kICgobm90IHZlcmlsb2ctYXV0by1pbnN0LWZpcnN0LWFueSkKCQkgKHJlLXNlYXJjaC1iYWNr d2FyZCAiLCIgcHQgdCkKCQkgKGRlbGV0ZS1jaGFyIDEpCgkJIChpbnNlcnQgIikiKQogICAgICAg ICAgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiXG4iKSAgOyBBZGRlZCBieSBpbnN0LXBvcnQKCQkg KGRlbGV0ZS1jaGFyIC0xKQogICAgICAgICAgICAgICAgIChpZiAoc2VhcmNoLWZvcndhcmQgIiki IG5pbCB0KSAgOyBGcm9tIHVzZXIsIG1vdmVkIHVwIGEgbGluZQoJCSAgICAgKGRlbGV0ZS1jaGFy IC0xKSkpKSkpKSkpCgooZGVmdW4gdmVyaWxvZy1hdXRvLXJlZyAoKQogICJFeHBhbmQgQVVUT1JF RyBzdGF0ZW1lbnRzLCBhcyBwYXJ0IG9mIFxcW3Zlcmlsb2ctYXV0b10uCk1ha2UgcmVnIHN0YXRl bWVudHMgZm9yIGFueSBvdXRwdXQgdGhhdCBpc24ndCBhbHJlYWR5IGRlY2xhcmVkLAphbmQgaXNu J3QgYSB3aXJlIG91dHB1dCBmcm9tIGEgYmxvY2suICBgdmVyaWxvZy1hdXRvLXdpcmUtdHlwZScK bWF5IGJlIHVzZWQgdG8gY2hhbmdlIHRoZSBkYXRhdHlwZSBvZiB0aGUgZGVjbGFyYXRpb25zLgoK TGltaXRhdGlvbnM6CiAgVGhpcyBPTkxZIGRldGVjdHMgb3V0cHV0cyBvZiBBVVRPSU5TVGFudHMg KHNlZSBgdmVyaWxvZy1yZWFkLXN1Yi1kZWNscycpLgoKICBUaGlzIGRvZXMgTk9UIHdvcmsgb24g bWVtb3JpZXMsIGRlY2xhcmUgdGhvc2UgeW91cnNlbGYuCgpBbiBleGFtcGxlOgoKICAgICAgICBt b2R1bGUgRXhhbXBSZWcgKG8saSk7CiAgICAgICAgICAgb3V0cHV0IG87CiAgICAgICAgICAgaW5w dXQgaTsKICAgICAgICAgICAvKkFVVE9SRUcqLwogICAgICAgICAgIGFsd2F5cyBvID0gaTsKICAg ICAgICBlbmRtb2R1bGUKClR5cGluZyBcXFt2ZXJpbG9nLWF1dG9dIHdpbGwgbWFrZSB0aGlzIGlu dG86CgogICAgICAgIG1vZHVsZSBFeGFtcFJlZyAobyxpKTsKICAgICAgICAgICBvdXRwdXQgbzsK ICAgICAgICAgICBpbnB1dCBpOwogICAgICAgICAgIC8qQVVUT1JFRyovCiAgICAgICAgICAgLy8g QmVnaW5uaW5nIG9mIGF1dG9tYXRpYyByZWdzCiAgICAgICAgICAgcmVnICAgICAgICAgIG87CiAg ICAgICAgICAgLy8gRW5kIG9mIGF1dG9tYXRpY3MKICAgICAgICAgICBhbHdheXMgbyA9IGk7CiAg ICAgICAgZW5kbW9kdWxlIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgOzsgUG9pbnQgbXVzdCBiZSBh dCBpbnNlcnRpb24gcG9pbnQuCiAgICAobGV0KiAoKGluZGVudC1wdCAoY3VycmVudC1pbmRlbnRh dGlvbikpCgkgICAobW9kaSAodmVyaWxvZy1tb2RpLWN1cnJlbnQpKQoJICAgKG1vZGRlY2xzICh2 ZXJpbG9nLW1vZGktZ2V0LWRlY2xzIG1vZGkpKQoJICAgKG1vZHN1YmRlY2xzICh2ZXJpbG9nLW1v ZGktZ2V0LXN1Yi1kZWNscyBtb2RpKSkKCSAgIChzaWctbGlzdCAodmVyaWxvZy1zaWduYWxzLW5v dC1pbgoJCSAgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1vdXRwdXRzIG1vZGRlY2xzKQogICAgICAg ICAgICAgICAgICAgICAgKGFwcGVuZCAodmVyaWxvZy1zaWduYWxzLXdpdGggIDsgaWdub3JlIHR5 cGVkIHNpZ25hbHMKCQkJICAgICAgICd2ZXJpbG9nLXNpZy10eXBlCgkJCSAgICAgICAodmVyaWxv Zy1kZWNscy1nZXQtb3V0cHV0cyBtb2RkZWNscykpCgkJCSAgICAgICh2ZXJpbG9nLWRlY2xzLWdl dC12YXJzIG1vZGRlY2xzKQoJCQkgICAgICAodmVyaWxvZy1kZWNscy1nZXQtYXNzaWducyBtb2Rk ZWNscykKCQkJICAgICAgKHZlcmlsb2ctZGVjbHMtZ2V0LWNvbnN0cyBtb2RkZWNscykKCQkJICAg ICAgKHZlcmlsb2ctZGVjbHMtZ2V0LWdwYXJhbXMgbW9kZGVjbHMpCgkJCSAgICAgICh2ZXJpbG9n LXN1YmRlY2xzLWdldC1pbnRlcmZhY2VkIG1vZHN1YmRlY2xzKQoJCQkgICAgICAodmVyaWxvZy1z dWJkZWNscy1nZXQtb3V0cHV0cyBtb2RzdWJkZWNscykKCQkJICAgICAgKHZlcmlsb2ctc3ViZGVj bHMtZ2V0LWlub3V0cyBtb2RzdWJkZWNscykpKSkpCiAgICAgICh3aGVuIHNpZy1saXN0CgkodmVy aWxvZy1mb3J3YXJkLW9yLWluc2VydC1saW5lKQoJKHZlcmlsb2ctaW5zZXJ0LWluZGVudCAiLy8g QmVnaW5uaW5nIG9mIGF1dG9tYXRpYyByZWdzIChmb3IgdGhpcyBtb2R1bGUncyB1bmRlY2xhcmVk IG91dHB1dHMpXG4iKQoJKHZlcmlsb2ctaW5zZXJ0LWRlZmluaXRpb24gbW9kaSBzaWctbGlzdCAi cmVnIiBpbmRlbnQtcHQgbmlsKQoJKHZlcmlsb2ctaW5zZXJ0LWluZGVudCAiLy8gRW5kIG9mIGF1 dG9tYXRpY3NcbiIpKSkpKQoKKGRlZnVuIHZlcmlsb2ctYXV0by1yZWctaW5wdXQgKCkKICAiRXhw YW5kIEFVVE9SRUdJTlBVVCBzdGF0ZW1lbnRzLCBhcyBwYXJ0IG9mIFxcW3Zlcmlsb2ctYXV0b10u Ck1ha2UgcmVnIHN0YXRlbWVudHMgaW5zdGFudGlhdGlvbiBpbnB1dHMgdGhhdCBhcmVuJ3QgYWxy ZWFkeQpkZWNsYXJlZCBvciBhc3NpZ25lZCB0by4gIFRoaXMgaXMgdXNlZnVsIGZvciBtYWtpbmcg YSB0b3AgbGV2ZWwKc2hlbGwgZm9yIHRlc3RpbmcgdGhlIG1vZHVsZSB0aGF0IGlzIHRvIGJlIGlu c3RhbnRpYXRlZC4KCkxpbWl0YXRpb25zOgogIFRoaXMgT05MWSBkZXRlY3RzIGlucHV0cyBvZiBB VVRPSU5TVGFudHMgKHNlZSBgdmVyaWxvZy1yZWFkLXN1Yi1kZWNscycpLgoKICBUaGlzIGRvZXMg Tk9UIHdvcmsgb24gbWVtb3JpZXMsIGRlY2xhcmUgdGhvc2UgeW91cnNlbGYuCgogIEFzc2lnbm1l bnRzIGNhdXNlIHRoZSBhc3NpZ25lZC10byB2YXJpYWJsZSBub3QgdG8gYmUgZGVjbGFyZWQgdW5s ZXNzCiAgdGhlIG5hbWUgbWF0Y2hlcyBgdmVyaWxvZy1hdXRvLXJlZy1pbnB1dC1hc3NpZ25lZC1p Z25vcmUtcmVnZXhwJy4KCkFuIGV4YW1wbGUgKHNlZSBgdmVyaWxvZy1hdXRvLWluc3QnIGZvciB3 aGF0IGVsc2UgaXMgZ29pbmcgb24gaGVyZSk6CgogICAgICAgIG1vZHVsZSBJbnN0TW9kdWxlIChp bnB1dCBpKTsKICAgICAgICBlbmRtb2R1bGUKCiAgICAgICAgbW9kdWxlIEV4YW1wUmVnSW5wdXQg KCk7CiAgICAgICAgICAgLypBVVRPUkVHSU5QVVQqLwogICAgICAgICAgIEluc3RNb2R1bGUgaW5z dE5hbWUKICAgICAgICAgICAgICgvKkFVVE9JTlNUKi8pOwogICAgICAgIGVuZG1vZHVsZQoKVHlw aW5nIFxcW3Zlcmlsb2ctYXV0b10gd2lsbCBtYWtlIHRoaXMgaW50bzoKCiAgICAgICAgbW9kdWxl IEV4YW1wUmVnSW5wdXQgKCk7CiAgICAgICAgICAgLypBVVRPUkVHSU5QVVQqLwogICAgICAgICAg IC8vIEJlZ2lubmluZyBvZiBhdXRvbWF0aWMgcmVnIGlucHV0cwogICAgICAgICAgIHJlZyAgICAg ICAgICBpOyAgICAgIC8vIFRvIGluc3ROYW1lIG9mIEluc3RNb2R1bGUudgogICAgICAgICAgIC8v IEVuZCBvZiBhdXRvbWF0aWNzCiAgICAgICAgICAgSW5zdE1vZHVsZSBpbnN0TmFtZQogICAgICAg ICAgICAgKC8qQVVUT0lOU1QqLwogICAgICAgICAgICAgIC8vIElucHV0cwogICAgICAgICAgICAg IC5pICAgICAgICAgICAgICAgIChpKSk7CiAgICAgICAgZW5kbW9kdWxlIgogIChzYXZlLWV4Y3Vy c2lvbgogICAgOzsgUG9pbnQgbXVzdCBiZSBhdCBpbnNlcnRpb24gcG9pbnQuCiAgICAobGV0KiAo KGluZGVudC1wdCAoY3VycmVudC1pbmRlbnRhdGlvbikpCgkgICAobW9kaSAodmVyaWxvZy1tb2Rp LWN1cnJlbnQpKQoJICAgKG1vZGRlY2xzICh2ZXJpbG9nLW1vZGktZ2V0LWRlY2xzIG1vZGkpKQoJ ICAgKG1vZHN1YmRlY2xzICh2ZXJpbG9nLW1vZGktZ2V0LXN1Yi1kZWNscyBtb2RpKSkKCSAgIChz aWctbGlzdCAodmVyaWxvZy1zaWduYWxzLWNvbWJpbmUtYnVzCgkJICAgICAgKHZlcmlsb2ctc2ln bmFscy1ub3QtaW4KCQkgICAgICAgKGFwcGVuZCAodmVyaWxvZy1zdWJkZWNscy1nZXQtaW5wdXRz IG1vZHN1YmRlY2xzKQoJCQkgICAgICAgKHZlcmlsb2ctc3ViZGVjbHMtZ2V0LWlub3V0cyBtb2Rz dWJkZWNscykpCgkJICAgICAgIChhcHBlbmQgKHZlcmlsb2ctZGVjbHMtZ2V0LXNpZ25hbHMgbW9k ZGVjbHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1zaWduYWxzLW5v dC1tYXRjaGluZy1yZWdleHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxv Zy1kZWNscy1nZXQtYXNzaWducyBtb2RkZWNscykKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2ZXJpbG9nLWF1dG8tcmVnLWlucHV0LWFzc2lnbmVkLWlnbm9yZS1yZWdleHApKSkpKSkK ICAgICAgKHdoZW4gc2lnLWxpc3QKCSh2ZXJpbG9nLWZvcndhcmQtb3ItaW5zZXJ0LWxpbmUpCgko dmVyaWxvZy1pbnNlcnQtaW5kZW50ICIvLyBCZWdpbm5pbmcgb2YgYXV0b21hdGljIHJlZyBpbnB1 dHMgKGZvciB1bmRlY2xhcmVkIGluc3RhbnRpYXRlZC1tb2R1bGUgaW5wdXRzKVxuIikKCSh2ZXJp bG9nLWluc2VydC1kZWZpbml0aW9uIG1vZGkgc2lnLWxpc3QgInJlZyIgaW5kZW50LXB0IG5pbCkK CSh2ZXJpbG9nLWluc2VydC1pbmRlbnQgIi8vIEVuZCBvZiBhdXRvbWF0aWNzXG4iKSkpKSkKCihk ZWZ1biB2ZXJpbG9nLWF1dG8tbG9naWMtc2V0dXAgKCkKICAiUHJlcGFyZSB2YXJpYWJsZXMgZHVl IHRvIEFVVE9MT0dJQy4iCiAgKHVubGVzcyB2ZXJpbG9nLWF1dG8td2lyZS10eXBlCiAgICAoc2V0 IChtYWtlLWxvY2FsLXZhcmlhYmxlICd2ZXJpbG9nLWF1dG8td2lyZS10eXBlKQoJICJsb2dpYyIp KSkKCihkZWZ1biB2ZXJpbG9nLWF1dG8tbG9naWMgKCkKICAiRXhwYW5kIEFVVE9MT0dJQyBzdGF0 ZW1lbnRzLCBhcyBwYXJ0IG9mIFxcW3Zlcmlsb2ctYXV0b10uCk1ha2Ugd2lyZSBzdGF0ZW1lbnRz IHVzaW5nIHRoZSBTeXN0ZW1WZXJpbG9nIGxvZ2ljIGtleXdvcmQuClRoaXMgaXMgY3VycmVudGx5 IGVxdWl2YWxlbnQgdG86CgogICAgLypBVVRPV0lSRSovCgp3aXRoIHRoZSBiZWxvdyBhdCB0aGUg Ym90dG9tIG9mIHRoZSBmaWxlCgogICAgLy8gTG9jYWwgVmFyaWFibGVzOgogICAgLy8gdmVyaWxv Zy1hdXRvLXdpcmUtdHlwZTpcImxvZ2ljXCIKICAgIC8vIEVuZDoKCkluIHRoZSBmdXR1cmUgQVVU T0xPR0lDIG1heSBkZWNsYXJlIGFkZGl0aW9uYWwgaWRlbnRpZmllcnMsCndoaWxlIEFVVE9XSVJF IHdpbGwgbm90LiIKICAoc2F2ZS1leGN1cnNpb24KICAgICh2ZXJpbG9nLWF1dG8tbG9naWMtc2V0 dXApCiAgICAodmVyaWxvZy1hdXRvLXdpcmUpKSkKCihkZWZ1biB2ZXJpbG9nLWF1dG8td2lyZSAo KQogICJFeHBhbmQgQVVUT1dJUkUgc3RhdGVtZW50cywgYXMgcGFydCBvZiBcXFt2ZXJpbG9nLWF1 dG9dLgpNYWtlIHdpcmUgc3RhdGVtZW50cyBmb3IgaW5zdGFudGlhdGlvbnMgb3V0cHV0cyB0aGF0 IGFyZW4ndAphbHJlYWR5IGRlY2xhcmVkLiAgYHZlcmlsb2ctYXV0by13aXJlLXR5cGUnIG1heSBi ZSB1c2VkIHRvIGNoYW5nZQp0aGUgZGF0YXR5cGUgb2YgdGhlIGRlY2xhcmF0aW9ucy4KCkxpbWl0 YXRpb25zOgogIFRoaXMgT05MWSBkZXRlY3RzIG91dHB1dHMgb2YgQVVUT0lOU1RhbnRzIChzZWUg YHZlcmlsb2ctcmVhZC1zdWItZGVjbHMnKSwKICBhbmQgYWxsIGJ1c2VzIG11c3QgaGF2ZSB3aWR0 aHMsIHN1Y2ggYXMgdGhvc2UgZnJvbSBBVVRPSU5TVCwgb3IgdXNpbmcgW10KICBpbiBBVVRPX1RF TVBMQVRFcy4KCiAgVGhpcyBkb2VzIE5PVCB3b3JrIG9uIG1lbW9yaWVzIG9yIFN5c3RlbVZlcmls b2cgLm5hbWUgY29ubmVjdGlvbnMsCiAgZGVjbGFyZSB0aG9zZSB5b3Vyc2VsZi4KCiAgVmVyaWxv ZyBtb2RlIHdpbGwgYWRkIFwiQ291bGRuJ3QgTWVyZ2VcIiBjb21tZW50cyB0byBzaWduYWxzIGl0 IGNhbm5vdAogIGRldGVybWluZSBob3cgdG8gYnVzIHRvZ2V0aGVyLiAgVGhpcyBvY2N1cnMgd2hl biB5b3UgaGF2ZSBwb3J0cyB3aXRoCiAgbm9uLW51bWVyaWMgb3Igbm9uLXNlcXVlbnRpYWwgYnVz IHN1YnNjcmlwdHMuICBJZiBWZXJpbG9nIG1vZGUKICBtaXMtZ3Vlc3NlZCwgeW91J2xsIGhhdmUg dG8gZGVjbGFyZSB0aGVtIHlvdXJzZWxmLgoKQW4gZXhhbXBsZSAoc2VlIGB2ZXJpbG9nLWF1dG8t aW5zdCcgZm9yIHdoYXQgZWxzZSBpcyBnb2luZyBvbiBoZXJlKToKCiAgICAgICAgbW9kdWxlIEV4 YW1wV2lyZSAoaSk7CiAgICAgICAgICAgaW5wdXQgaTsKICAgICAgICAgICAvKkFVVE9XSVJFKi8K ICAgICAgICAgICBJbnN0TW9kdWxlIGluc3ROYW1lCiAgICAgICAgICAgICAoLypBVVRPSU5TVCov KTsKICAgICAgICBlbmRtb2R1bGUKClR5cGluZyBcXFt2ZXJpbG9nLWF1dG9dIHdpbGwgbWFrZSB0 aGlzIGludG86CgogICAgICAgIG1vZHVsZSBFeGFtcFdpcmUgKGkpOwogICAgICAgICAgIGlucHV0 IGk7CiAgICAgICAgICAgLypBVVRPV0lSRSovCiAgICAgICAgICAgLy8gQmVnaW5uaW5nIG9mIGF1 dG9tYXRpYyB3aXJlcwogICAgICAgICAgIHdpcmUgWzMxOjBdICBvOyAgICAgIC8vIEZyb20gaW5z dE5hbWUgb2YgSW5zdE1vZHVsZS52CiAgICAgICAgICAgLy8gRW5kIG9mIGF1dG9tYXRpY3MKICAg ICAgICAgICBJbnN0TW9kdWxlIGluc3ROYW1lCiAgICAgICAgICAgICAoLypBVVRPSU5TVCovCiAg ICAgICAgICAgICAgLy8gT3V0cHV0cwogICAgICAgICAgICAgIC5vICAgICAgICAob1szMTowXSks CiAgICAgICAgICAgICAgLy8gSW5wdXRzCiAgICAgICAgICAgICAgLmkgICAgICAgIChpKSk7CiAg ICAgICAgICAgd2lyZSBvID0gfCBvdjsKICAgICAgICBlbmRtb2R1bGUiCiAgKHNhdmUtZXhjdXJz aW9uCiAgICA7OyBQb2ludCBtdXN0IGJlIGF0IGluc2VydGlvbiBwb2ludC4KICAgIChsZXQqICgo aW5kZW50LXB0IChjdXJyZW50LWluZGVudGF0aW9uKSkKCSAgIChtb2RpICh2ZXJpbG9nLW1vZGkt Y3VycmVudCkpCgkgICAobW9kZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtZGVjbHMgbW9kaSkpCgkg ICAobW9kc3ViZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtc3ViLWRlY2xzIG1vZGkpKQoJICAgKHNp Zy1saXN0ICh2ZXJpbG9nLXNpZ25hbHMtY29tYmluZS1idXMKCQkgICAgICAodmVyaWxvZy1zaWdu YWxzLW5vdC1pbgoJCSAgICAgICAoYXBwZW5kICh2ZXJpbG9nLXN1YmRlY2xzLWdldC1vdXRwdXRz IG1vZHN1YmRlY2xzKQoJCQkgICAgICAgKHZlcmlsb2ctc3ViZGVjbHMtZ2V0LWlub3V0cyBtb2Rz dWJkZWNscykpCgkJICAgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1zaWduYWxzIG1vZGRlY2xzKSkp KSkKICAgICAgKHdoZW4gc2lnLWxpc3QKCSh2ZXJpbG9nLWZvcndhcmQtb3ItaW5zZXJ0LWxpbmUp CgkodmVyaWxvZy1pbnNlcnQtaW5kZW50ICIvLyBCZWdpbm5pbmcgb2YgYXV0b21hdGljIHdpcmVz IChmb3IgdW5kZWNsYXJlZCBpbnN0YW50aWF0ZWQtbW9kdWxlIG91dHB1dHMpXG4iKQoJKHZlcmls b2ctaW5zZXJ0LWRlZmluaXRpb24gbW9kaSBzaWctbGlzdCAid2lyZSIgaW5kZW50LXB0IG5pbCkK CSh2ZXJpbG9nLWluc2VydC1pbmRlbnQgIi8vIEVuZCBvZiBhdXRvbWF0aWNzXG4iKQoJOzsgV2Ug dXNlZCB0byBvcHRpb25hbGx5IGNhbGwgdmVyaWxvZy1wcmV0dHktZGVjbGFyYXRpb25zIGFuZAoJ OzsgdmVyaWxvZy1wcmV0dHktZXhwciBoZXJlLCBidXQgaXQncyB0b28gc2xvdyBvbiBodWdlIG1v ZHVsZXMsCgk7OyBwbHVzIG1ha2VzIGV2ZXJ5b25lJ3MgbW9kdWxlIGNoYW5nZS4gRmluYWxseSB0 aG9zZSBjYWxsCgk7OyBzeW50YXgtcHBzcyB3aGljaCBpcyBicm9rZW4gd2hlbiBjaGFuZ2UgaG9v a3MgYXJlIGRpc2FibGVkLgoJKSkpKQoKKGRlZnVuIHZlcmlsb2ctYXV0by1vdXRwdXQgKCkKICAi RXhwYW5kIEFVVE9PVVRQVVQgc3RhdGVtZW50cywgYXMgcGFydCBvZiBcXFt2ZXJpbG9nLWF1dG9d LgpNYWtlIG91dHB1dCBzdGF0ZW1lbnRzIGZvciBhbnkgb3V0cHV0IHNpZ25hbCBmcm9tIGFuIC8q QVVUT0lOU1QqLyB0aGF0Cmlzbid0IGFuIGlucHV0IHRvIGFub3RoZXIgQVVUT0lOU1QuICBUaGlz IGlzIHVzZWZ1bCBmb3IgbW9kdWxlcyB3aGljaApvbmx5IGluc3RhbnRpYXRlIG90aGVyIG1vZHVs ZXMuCgpMaW1pdGF0aW9uczoKICBUaGlzIE9OTFkgZGV0ZWN0cyBvdXRwdXRzIG9mIEFVVE9JTlNU YW50cyAoc2VlIGB2ZXJpbG9nLXJlYWQtc3ViLWRlY2xzJykuCgogIElmIHBsYWNlZCBpbnNpZGUg dGhlIHBhcmVudGhlc2lzIG9mIGEgbW9kdWxlIGRlY2xhcmF0aW9uLCBpdCBjcmVhdGVzCiAgVmVy aWxvZyAyMDAxIHN0eWxlLCBlbHNlIHVzZXMgVmVyaWxvZyAxOTk1IHN0eWxlLgoKICBJZiBhbnkg Y29uY2F0ZW5hdGlvbiwgb3IgYml0LXN1YnNjcmlwdHMgYXJlIG1pc3NpbmcgaW4gdGhlIEFVVE9J TlNUYW50J3MKICBpbnN0YW50aWF0aW9uLCBhbGwgYmV0cyBhcmUgb2ZmLiAgKEZvciBleGFtcGxl IGR1ZSB0byBhbiBBVVRPX1RFTVBMQVRFKS4KCiAgVHlwZWRlZnMgbXVzdCBtYXRjaCBgdmVyaWxv Zy10eXBlZGVmLXJlZ2V4cCcsIHdoaWNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCgogIFR5cGVz IGFyZSBhZGRlZCB0byBkZWNsYXJhdGlvbnMgaWYgYW4gQVVUT0xPR0lDIG9yCiAgYHZlcmlsb2ct YXV0by13aXJlLXR5cGUnIGlzIHNldCB0byBsb2dpYy4KCiAgU2lnbmFscyBtYXRjaGluZyBgdmVy aWxvZy1hdXRvLW91dHB1dC1pZ25vcmUtcmVnZXhwJyBhcmUgbm90IGluY2x1ZGVkLgoKQW4gZXhh bXBsZSAoc2VlIGB2ZXJpbG9nLWF1dG8taW5zdCcgZm9yIHdoYXQgZWxzZSBpcyBnb2luZyBvbiBo ZXJlKToKCiAgICAgICAgbW9kdWxlIEluc3RNb2R1bGUgKG91dHB1dCBvKTsKICAgICAgICBlbmRt b2R1bGUKCiAgICAgICAgbW9kdWxlIEV4YW1wT3V0cHV0CiAgICAgICAgICAgKC8qQVVUT09VVFBV VCovCiAgICAgICAgICAgKTsKICAgICAgICAgICBJbnN0TW9kdWxlIGluc3ROYW1lCiAgICAgICAg ICAgICAoLypBVVRPSU5TVCovKTsKICAgICAgICBlbmRtb2R1bGUKClR5cGluZyBcXFt2ZXJpbG9n LWF1dG9dIHdpbGwgbWFrZSB0aGlzIGludG86CgogICAgICAgIG1vZHVsZSBFeGFtcE91dHB1dAog ICAgICAgICAgKC8qQVVUT09VVFBVVCovCiAgICAgICAgICAgLy8gQmVnaW5uaW5nIG9mIGF1dG9t YXRpYyBvdXRwdXRzCiAgICAgICAgICAgb3V0cHV0ICAgICAgICAgIG8gICAgLy8gRnJvbSBpbnN0 TmFtZSBvZiBJbnN0TW9kdWxlLnYKICAgICAgICAgICAvLyBFbmQgb2YgYXV0b21hdGljcwogICAg ICAgICAgICk7CiAgICAgICAgICBJbnN0TW9kdWxlIGluc3ROYW1lCiAgICAgICAgICAgICgvKkFV VE9JTlNUKi8KICAgICAgICAgICAgIC8vIE91dHB1dHMKICAgICAgICAgICAgIC5vICAgICAgICAg IChvKSk7CiAgICAgICAgZW5kbW9kdWxlCgpZb3UgbWF5IGFsc28gcHJvdmlkZSBhbiBvcHRpb25h bCByZWd1bGFyIGV4cHJlc3Npb24sIGluIHdoaWNoIGNhc2Ugb25seQpzaWduYWxzIG1hdGNoaW5n IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gd2lsbCBiZSBpbmNsdWRlZC4gIEZvciBleGFtcGxlIHRo ZQpzYW1lIGV4cGFuc2lvbiB3aWxsIHJlc3VsdCBmcm9tIG9ubHkgZXh0cmFjdGluZyBvdXRwdXRz IHN0YXJ0aW5nIHdpdGggb3Y6CgoJICAgLypBVVRPT1VUUFVUKFwiXm92XCIpKi8iCiAgKHNhdmUt ZXhjdXJzaW9uCiAgICA7OyBQb2ludCBtdXN0IGJlIGF0IGluc2VydGlvbiBwb2ludC4KICAgIChs ZXQqICgoaW5kZW50LXB0IChjdXJyZW50LWluZGVudGF0aW9uKSkKCSAgIChwYXJhbXMgKHZlcmls b2ctcmVhZC1hdXRvLXBhcmFtcyAwIDEpKQoJICAgKHJlZ2V4cCAobnRoIDAgcGFyYW1zKSkKCSAg ICh2MmsgICh2ZXJpbG9nLWluLXBhcmVuLXF1aWNrKSkKCSAgIChtb2RpICh2ZXJpbG9nLW1vZGkt Y3VycmVudCkpCgkgICAobW9kZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtZGVjbHMgbW9kaSkpCgkg ICAobW9kc3ViZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtc3ViLWRlY2xzIG1vZGkpKQoJICAgKHNp Zy1saXN0ICh2ZXJpbG9nLXNpZ25hbHMtbm90LWluCgkJICAgICAgKHZlcmlsb2ctc3ViZGVjbHMt Z2V0LW91dHB1dHMgbW9kc3ViZGVjbHMpCgkJICAgICAgKGFwcGVuZCAodmVyaWxvZy1kZWNscy1n ZXQtb3V0cHV0cyBtb2RkZWNscykKCQkJICAgICAgKHZlcmlsb2ctZGVjbHMtZ2V0LWlub3V0cyBt b2RkZWNscykKCQkJICAgICAgKHZlcmlsb2ctZGVjbHMtZ2V0LWlucHV0cyBtb2RkZWNscykKCQkJ ICAgICAgKHZlcmlsb2ctc3ViZGVjbHMtZ2V0LWlucHV0cyBtb2RzdWJkZWNscykKCQkJICAgICAg KHZlcmlsb2ctc3ViZGVjbHMtZ2V0LWlub3V0cyBtb2RzdWJkZWNscykpKSkpCiAgICAgICh3aGVu IHJlZ2V4cAoJKHNldHEgc2lnLWxpc3QgKHZlcmlsb2ctc2lnbmFscy1tYXRjaGluZy1yZWdleHAK CQkJc2lnLWxpc3QgcmVnZXhwKSkpCiAgICAgIChzZXRxIHNpZy1saXN0ICh2ZXJpbG9nLXNpZ25h bHMtbm90LW1hdGNoaW5nLXJlZ2V4cAoJCSAgICAgIHNpZy1saXN0IHZlcmlsb2ctYXV0by1vdXRw dXQtaWdub3JlLXJlZ2V4cCkpCiAgICAgICh2ZXJpbG9nLWZvcndhcmQtb3ItaW5zZXJ0LWxpbmUp CiAgICAgICh3aGVuIHYyayAodmVyaWxvZy1yZXBhaXItb3Blbi1jb21tYSkpCiAgICAgICh3aGVu IHNpZy1saXN0CgkodmVyaWxvZy1pbnNlcnQtaW5kZW50ICIvLyBCZWdpbm5pbmcgb2YgYXV0b21h dGljIG91dHB1dHMgKGZyb20gdW51c2VkIGF1dG9pbnN0IG91dHB1dHMpXG4iKQoJKHZlcmlsb2ct aW5zZXJ0LWRlZmluaXRpb24gbW9kaSBzaWctbGlzdCAib3V0cHV0IiBpbmRlbnQtcHQgdjJrKQoJ KHZlcmlsb2ctaW5zZXJ0LWluZGVudCAiLy8gRW5kIG9mIGF1dG9tYXRpY3NcbiIpKQogICAgICAo d2hlbiB2MmsgKHZlcmlsb2ctcmVwYWlyLWNsb3NlLWNvbW1hKSkpKSkKCihkZWZ1biB2ZXJpbG9n LWF1dG8tb3V0cHV0LWV2ZXJ5ICgpCiAgIkV4cGFuZCBBVVRPT1VUUFVURVZFUlkgc3RhdGVtZW50 cywgYXMgcGFydCBvZiBcXFt2ZXJpbG9nLWF1dG9dLgpNYWtlIG91dHB1dCBzdGF0ZW1lbnRzIGZv ciBhbnkgc2lnbmFscyB0aGF0IGFyZW4ndCBwcmltYXJ5IGlucHV0cyBvcgpvdXRwdXRzIGFscmVh ZHkuICBUaGlzIG1ha2VzIGV2ZXJ5IHNpZ25hbCBpbiB0aGUgZGVzaWduIGFuIG91dHB1dC4gIFRo aXMgaXMKdXNlZnVsIHRvIGdldCBzeW50aGVzaXMgdG8gcHJlc2VydmUgZXZlcnkgc2lnbmFsIGlu IHRoZSBkZXNpZ24sIHNpbmNlIGl0Cndvbid0IG9wdGltaXplIGF3YXkgdGhlIG91dHB1dHMuCgpB biBleGFtcGxlOgoKICAgICAgICBtb2R1bGUgRXhhbXBPdXRwdXRFdmVyeSAobyxpLHRlbXBhLHRl bXBiKTsKICAgICAgICAgICBvdXRwdXQgbzsKICAgICAgICAgICBpbnB1dCBpOwogICAgICAgICAg IC8qQVVUT09VVFBVVEVWRVJZKi8KICAgICAgICAgICB3aXJlIHRlbXBhID0gaTsKICAgICAgICAg ICB3aXJlIHRlbXBiID0gdGVtcGE7CiAgICAgICAgICAgd2lyZSBvID0gdGVtcGI7CiAgICAgICAg ZW5kbW9kdWxlCgpUeXBpbmcgXFxbdmVyaWxvZy1hdXRvXSB3aWxsIG1ha2UgdGhpcyBpbnRvOgoK ICAgICAgICBtb2R1bGUgRXhhbXBPdXRwdXRFdmVyeSAoCiAgICAgICAgICAgLypBVVRPT1VUUFVU RVZFUlkqLwogICAgICAgICAgIC8vIEJlZ2lubmluZyBvZiBhdXRvbWF0aWMgb3V0cHV0cyAoZXZl cnkgc2lnbmFsKQogICAgICAgICAgIG91dHB1dCAgICAgICAgICBvLAogICAgICAgICAgIG91dHB1 dCAgICAgICAgICB0ZW1wYSwKICAgICAgICAgICBvdXRwdXQgICAgICAgICAgdGVtcGIsCiAgICAg ICAgICAgLy8gRW5kIG9mIGF1dG9tYXRpY3MKICAgICAgICAgICBpbnB1dCBpCiAgICAgICAgICAg KTsKICAgICAgICAgICB3aXJlIHRlbXBhID0gaTsKICAgICAgICAgICB3aXJlIHRlbXBiID0gdGVt cGE7CiAgICAgICAgICAgd2lyZSBvID0gdGVtcGI7CiAgICAgICAgZW5kbW9kdWxlCgpZb3UgbWF5 IGFsc28gcHJvdmlkZSBhbiBvcHRpb25hbCByZWd1bGFyIGV4cHJlc3Npb24sIGluIHdoaWNoCmNh c2Ugb25seSBzaWduYWxzIG1hdGNoaW5nIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gd2lsbCBiZQpp bmNsdWRlZCxvciBleGNsdWRlZCBpZiB0aGUgcmVnZXhwIGJlZ2lucyB3aXRoID8hIChxdWVzdGlv bi1tYXJrCmV4Y2xhbWF0aW9uLW1hcmspLiAgRm9yIGV4YW1wbGUgdGhlIHNhbWUgZXhwYW5zaW9u IHdpbGwgcmVzdWx0CmZyb20gb25seSBleHRyYWN0aW5nIG91dHB1dHMgc3RhcnRpbmcgd2l0aCBv djoKCiAgICAgICAgICAgLypBVVRPT1VUUFVURVZFUlkoXCJeb3ZcIikqLyIKICAoc2F2ZS1leGN1 cnNpb24KICAgIDs7UG9pbnQgbXVzdCBiZSBhdCBpbnNlcnRpb24gcG9pbnQKICAgIChsZXQqICgo aW5kZW50LXB0IChjdXJyZW50LWluZGVudGF0aW9uKSkKCSAgIChwYXJhbXMgKHZlcmlsb2ctcmVh ZC1hdXRvLXBhcmFtcyAwIDEpKQoJICAgKHJlZ2V4cCAobnRoIDAgcGFyYW1zKSkKCSAgICh2Mmsg ICh2ZXJpbG9nLWluLXBhcmVuLXF1aWNrKSkKCSAgIChtb2RpICh2ZXJpbG9nLW1vZGktY3VycmVu dCkpCgkgICAobW9kZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtZGVjbHMgbW9kaSkpCgkgICAoc2ln LWxpc3QgKHZlcmlsb2ctc2lnbmFscy1jb21iaW5lLWJ1cwoJCSAgICAgICh2ZXJpbG9nLXNpZ25h bHMtbm90LWluCgkJICAgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1zaWduYWxzIG1vZGRlY2xzKQoJ CSAgICAgICAodmVyaWxvZy1kZWNscy1nZXQtcG9ydHMgbW9kZGVjbHMpKSkpKQogICAgICAod2hl biByZWdleHAKCShzZXRxIHNpZy1saXN0ICh2ZXJpbG9nLXNpZ25hbHMtbWF0Y2hpbmctcmVnZXhw CgkJCXNpZy1saXN0IHJlZ2V4cCkpKQogICAgICAoc2V0cSBzaWctbGlzdCAodmVyaWxvZy1zaWdu YWxzLW5vdC1tYXRjaGluZy1yZWdleHAKCQkgICAgICBzaWctbGlzdCB2ZXJpbG9nLWF1dG8tb3V0 cHV0LWlnbm9yZS1yZWdleHApKQogICAgICAodmVyaWxvZy1mb3J3YXJkLW9yLWluc2VydC1saW5l KQogICAgICAod2hlbiB2MmsgKHZlcmlsb2ctcmVwYWlyLW9wZW4tY29tbWEpKQogICAgICAod2hl biBzaWctbGlzdAoJKHZlcmlsb2ctaW5zZXJ0LWluZGVudCAiLy8gQmVnaW5uaW5nIG9mIGF1dG9t YXRpYyBvdXRwdXRzIChldmVyeSBzaWduYWwpXG4iKQoJKHZlcmlsb2ctaW5zZXJ0LWRlZmluaXRp b24gbW9kaSBzaWctbGlzdCAib3V0cHV0IiBpbmRlbnQtcHQgdjJrKQoJKHZlcmlsb2ctaW5zZXJ0 LWluZGVudCAiLy8gRW5kIG9mIGF1dG9tYXRpY3NcbiIpKQogICAgICAod2hlbiB2MmsgKHZlcmls b2ctcmVwYWlyLWNsb3NlLWNvbW1hKSkpKSkKCihkZWZ1biB2ZXJpbG9nLWF1dG8taW5wdXQgKCkK ICAiRXhwYW5kIEFVVE9JTlBVVCBzdGF0ZW1lbnRzLCBhcyBwYXJ0IG9mIFxcW3Zlcmlsb2ctYXV0 b10uCk1ha2UgaW5wdXQgc3RhdGVtZW50cyBmb3IgYW55IGlucHV0IHNpZ25hbCBpbnRvIGFuIC8q QVVUT0lOU1QqLyB0aGF0Cmlzbid0IGRlY2xhcmVkIGVsc2V3aGVyZSBpbnNpZGUgdGhlIG1vZHVs ZS4gIFRoaXMgaXMgdXNlZnVsIGZvciBtb2R1bGVzIHdoaWNoCm9ubHkgaW5zdGFudGlhdGUgb3Ro ZXIgbW9kdWxlcy4KCkxpbWl0YXRpb25zOgogIFRoaXMgT05MWSBkZXRlY3RzIGlucHV0cyBvZiBB VVRPSU5TVGFudHMgKHNlZSBgdmVyaWxvZy1yZWFkLXN1Yi1kZWNscycpLgoKICBJZiBwbGFjZWQg aW5zaWRlIHRoZSBwYXJlbnRoZXNpcyBvZiBhIG1vZHVsZSBkZWNsYXJhdGlvbiwgaXQgY3JlYXRl cwogIFZlcmlsb2cgMjAwMSBzdHlsZSwgZWxzZSB1c2VzIFZlcmlsb2cgMTk5NSBzdHlsZS4KCiAg SWYgYW55IGNvbmNhdGVuYXRpb24sIG9yIGJpdC1zdWJzY3JpcHRzIGFyZSBtaXNzaW5nIGluIHRo ZSBBVVRPSU5TVGFudCdzCiAgaW5zdGFudGlhdGlvbiwgYWxsIGJldHMgYXJlIG9mZi4gIChGb3Ig ZXhhbXBsZSBkdWUgdG8gYW4gQVVUT19URU1QTEFURSkuCgogIFR5cGVkZWZzIG11c3QgbWF0Y2gg YHZlcmlsb2ctdHlwZWRlZi1yZWdleHAnLCB3aGljaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgoK ICBUeXBlcyBhcmUgYWRkZWQgdG8gZGVjbGFyYXRpb25zIGlmIGFuIEFVVE9MT0dJQyBvcgogIGB2 ZXJpbG9nLWF1dG8td2lyZS10eXBlJyBpcyBzZXQgdG8gbG9naWMuCgogIFNpZ25hbHMgbWF0Y2hp bmcgYHZlcmlsb2ctYXV0by1pbnB1dC1pZ25vcmUtcmVnZXhwJyBhcmUgbm90IGluY2x1ZGVkLgoK QW4gZXhhbXBsZSAoc2VlIGB2ZXJpbG9nLWF1dG8taW5zdCcgZm9yIHdoYXQgZWxzZSBpcyBnb2lu ZyBvbiBoZXJlKToKCiAgICAgICAgbW9kdWxlIEluc3RNb2R1bGUgKGlucHV0IGkpOwogICAgICAg IGVuZG1vZHVsZQoKICAgICAgICBtb2R1bGUgRXhhbXBJbnB1dCAoCiAgICAgICAgICAgLypBVVRP SU5QVVQqLwogICAgICAgICAgICk7CiAgICAgICAgICAgSW5zdE1vZHVsZSBpbnN0TmFtZQogICAg ICAgICAgICAgKC8qQVVUT0lOU1QqLyk7CiAgICAgICAgZW5kbW9kdWxlCgpUeXBpbmcgXFxbdmVy aWxvZy1hdXRvXSB3aWxsIG1ha2UgdGhpcyBpbnRvOgoKICAgICAgICBtb2R1bGUgRXhhbXBJbnB1 dCAoCiAgICAgICAgICAgLypBVVRPSU5QVVQqLwogICAgICAgICAgIC8vIEJlZ2lubmluZyBvZiBh dXRvbWF0aWMgaW5wdXRzIChmcm9tIHVudXNlZCBhdXRvaW5zdCBpbnB1dHMpCiAgICAgICAgICAg aW5wdXQgICAgICAgICAgIGkgICAgICAgLy8gVG8gaW5zdE5hbWUgb2YgSW5zdE1vZHVsZS52CiAg ICAgICAgICAgLy8gRW5kIG9mIGF1dG9tYXRpY3MKICAgICAgICAgICApOwogICAgICAgICAgIElu c3RNb2R1bGUgaW5zdE5hbWUKICAgICAgICAgICAgICgvKkFVVE9JTlNUKi8KICAgICAgICAgICAg ICAvLyBJbnB1dHMKICAgICAgICAgICAgICAuaSAgICAgICAgKGkpKTsKICAgICAgICBlbmRtb2R1 bGUKCllvdSBtYXkgYWxzbyBwcm92aWRlIGFuIG9wdGlvbmFsIHJlZ3VsYXIgZXhwcmVzc2lvbiwg aW4gd2hpY2gKY2FzZSBvbmx5IHNpZ25hbHMgbWF0Y2hpbmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lv biB3aWxsIGJlCmluY2x1ZGVkLiAgb3IgZXhjbHVkZWQgaWYgdGhlIHJlZ2V4cCBiZWdpbnMgd2l0 aAo/ISAocXVlc3Rpb24tbWFyayBleGNsYW1hdGlvbi1tYXJrKS4gIEZvciBleGFtcGxlIHRoZSBz YW1lCmV4cGFuc2lvbiB3aWxsIHJlc3VsdCBmcm9tIG9ubHkgZXh0cmFjdGluZyBpbnB1dHMgc3Rh cnRpbmcgd2l0aAppOgoKCSAgIC8qQVVUT0lOUFVUKFwiXmlcIikqLyIKICAoc2F2ZS1leGN1cnNp b24KICAgIChsZXQqICgoaW5kZW50LXB0IChjdXJyZW50LWluZGVudGF0aW9uKSkKCSAgIChwYXJh bXMgKHZlcmlsb2ctcmVhZC1hdXRvLXBhcmFtcyAwIDEpKQoJICAgKHJlZ2V4cCAobnRoIDAgcGFy YW1zKSkKCSAgICh2MmsgICh2ZXJpbG9nLWluLXBhcmVuLXF1aWNrKSkKCSAgIChtb2RpICh2ZXJp bG9nLW1vZGktY3VycmVudCkpCgkgICAobW9kZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtZGVjbHMg bW9kaSkpCgkgICAobW9kc3ViZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtc3ViLWRlY2xzIG1vZGkp KQoJICAgKHNpZy1saXN0ICh2ZXJpbG9nLXNpZ25hbHMtbm90LWluCgkJICAgICAgKHZlcmlsb2ct c3ViZGVjbHMtZ2V0LWlucHV0cyBtb2RzdWJkZWNscykKCQkgICAgICAoYXBwZW5kICh2ZXJpbG9n LWRlY2xzLWdldC1pbnB1dHMgbW9kZGVjbHMpCgkJCSAgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1p bm91dHMgbW9kZGVjbHMpCgkJCSAgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1vdXRwdXRzIG1vZGRl Y2xzKQoJCQkgICAgICAodmVyaWxvZy1kZWNscy1nZXQtdmFycyBtb2RkZWNscykKCQkJICAgICAg KHZlcmlsb2ctZGVjbHMtZ2V0LWNvbnN0cyBtb2RkZWNscykKCQkJICAgICAgKHZlcmlsb2ctZGVj bHMtZ2V0LWdwYXJhbXMgbW9kZGVjbHMpCgkJCSAgICAgICh2ZXJpbG9nLXN1YmRlY2xzLWdldC1p bnRlcmZhY2VkIG1vZHN1YmRlY2xzKQoJCQkgICAgICAodmVyaWxvZy1zdWJkZWNscy1nZXQtb3V0 cHV0cyBtb2RzdWJkZWNscykKCQkJICAgICAgKHZlcmlsb2ctc3ViZGVjbHMtZ2V0LWlub3V0cyBt b2RzdWJkZWNscykpKSkpCiAgICAgICh3aGVuIHJlZ2V4cAoJKHNldHEgc2lnLWxpc3QgKHZlcmls b2ctc2lnbmFscy1tYXRjaGluZy1yZWdleHAKCQkJc2lnLWxpc3QgcmVnZXhwKSkpCiAgICAgIChz ZXRxIHNpZy1saXN0ICh2ZXJpbG9nLXNpZ25hbHMtbm90LW1hdGNoaW5nLXJlZ2V4cAoJCSAgICAg IHNpZy1saXN0IHZlcmlsb2ctYXV0by1pbnB1dC1pZ25vcmUtcmVnZXhwKSkKICAgICAgKHZlcmls b2ctZm9yd2FyZC1vci1pbnNlcnQtbGluZSkKICAgICAgKHdoZW4gdjJrICh2ZXJpbG9nLXJlcGFp ci1vcGVuLWNvbW1hKSkKICAgICAgKHdoZW4gc2lnLWxpc3QKCSh2ZXJpbG9nLWluc2VydC1pbmRl bnQgIi8vIEJlZ2lubmluZyBvZiBhdXRvbWF0aWMgaW5wdXRzIChmcm9tIHVudXNlZCBhdXRvaW5z dCBpbnB1dHMpXG4iKQoJKHZlcmlsb2ctaW5zZXJ0LWRlZmluaXRpb24gbW9kaSBzaWctbGlzdCAi aW5wdXQiIGluZGVudC1wdCB2MmspCgkodmVyaWxvZy1pbnNlcnQtaW5kZW50ICIvLyBFbmQgb2Yg YXV0b21hdGljc1xuIikpCiAgICAgICh3aGVuIHYyayAodmVyaWxvZy1yZXBhaXItY2xvc2UtY29t bWEpKSkpKQoKKGRlZnVuIHZlcmlsb2ctYXV0by1pbm91dCAoKQogICJFeHBhbmQgQVVUT0lOT1VU IHN0YXRlbWVudHMsIGFzIHBhcnQgb2YgXFxbdmVyaWxvZy1hdXRvXS4KTWFrZSBpbm91dCBzdGF0 ZW1lbnRzIGZvciBhbnkgaW5vdXQgc2lnbmFsIGluIGFuIC8qQVVUT0lOU1QqLyB0aGF0Cmlzbid0 IGRlY2xhcmVkIGVsc2V3aGVyZSBpbnNpZGUgdGhlIG1vZHVsZS4KCkxpbWl0YXRpb25zOgogIFRo aXMgT05MWSBkZXRlY3RzIGlub3V0cyBvZiBBVVRPSU5TVGFudHMgKHNlZSBgdmVyaWxvZy1yZWFk LXN1Yi1kZWNscycpLgoKICBJZiBwbGFjZWQgaW5zaWRlIHRoZSBwYXJlbnRoZXNpcyBvZiBhIG1v ZHVsZSBkZWNsYXJhdGlvbiwgaXQgY3JlYXRlcwogIFZlcmlsb2cgMjAwMSBzdHlsZSwgZWxzZSB1 c2VzIFZlcmlsb2cgMTk5NSBzdHlsZS4KCiAgSWYgYW55IGNvbmNhdGVuYXRpb24sIG9yIGJpdC1z dWJzY3JpcHRzIGFyZSBtaXNzaW5nIGluIHRoZSBBVVRPSU5TVGFudCdzCiAgaW5zdGFudGlhdGlv biwgYWxsIGJldHMgYXJlIG9mZi4gIChGb3IgZXhhbXBsZSBkdWUgdG8gYW4gQVVUT19URU1QTEFU RSkuCgogIFR5cGVkZWZzIG11c3QgbWF0Y2ggYHZlcmlsb2ctdHlwZWRlZi1yZWdleHAnLCB3aGlj aCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgoKICBUeXBlcyBhcmUgYWRkZWQgdG8gZGVjbGFyYXRp b25zIGlmIGFuIEFVVE9MT0dJQyBvcgogIGB2ZXJpbG9nLWF1dG8td2lyZS10eXBlJyBpcyBzZXQg dG8gbG9naWMuCgogIFNpZ25hbHMgbWF0Y2hpbmcgYHZlcmlsb2ctYXV0by1pbm91dC1pZ25vcmUt cmVnZXhwJyBhcmUgbm90IGluY2x1ZGVkLgoKQW4gZXhhbXBsZSAoc2VlIGB2ZXJpbG9nLWF1dG8t aW5zdCcgZm9yIHdoYXQgZWxzZSBpcyBnb2luZyBvbiBoZXJlKToKCiAgICAgICAgbW9kdWxlIElu c3RNb2R1bGUgKGlub3V0IGlvKTsKICAgICAgICBlbmRtb2R1bGUKCiAgICAgICAgbW9kdWxlIEV4 YW1wSW5vdXQgKAogICAgICAgICAgIC8qQVVUT0lOT1VUKi8KICAgICAgICAgICApOwogICAgICAg ICAgIEluc3RNb2R1bGUgaW5zdE5hbWUKICAgICAgICAgICAgICgvKkFVVE9JTlNUKi8pOwogICAg ICAgIGVuZG1vZHVsZQoKVHlwaW5nIFxcW3Zlcmlsb2ctYXV0b10gd2lsbCBtYWtlIHRoaXMgaW50 bzoKCiAgICAgICAgbW9kdWxlIEV4YW1wSW5vdXQgKAogICAgICAgICAgIC8qQVVUT0lOT1VUKi8K ICAgICAgICAgICAvLyBCZWdpbm5pbmcgb2YgYXV0b21hdGljIGlub3V0cwogICAgICAgICAgIGlu b3V0ICAgICAgICAgICBpbyAgICAgIC8vIFRvL0Zyb20gaW5zdE5hbWUgb2YgSW5zdE1vZHVsZS52 CiAgICAgICAgICAgLy8gRW5kIG9mIGF1dG9tYXRpY3MKICAgICAgICAgICApOwogICAgICAgICAg IEluc3RNb2R1bGUgaW5zdE5hbWUKICAgICAgICAgICAgICgvKkFVVE9JTlNUKi8KICAgICAgICAg ICAgICAvLyBJbm91dHMKICAgICAgICAgICAgICAuaW8gICAgICAgKGlvKSk7CiAgICAgICAgZW5k bW9kdWxlCgpZb3UgbWF5IGFsc28gcHJvdmlkZSBhbiBvcHRpb25hbCByZWd1bGFyIGV4cHJlc3Np b24sIGluIHdoaWNoCmNhc2Ugb25seSBzaWduYWxzIG1hdGNoaW5nIHRoZSByZWd1bGFyIGV4cHJl c3Npb24gd2lsbCBiZQppbmNsdWRlZCwgb3IgZXhjbHVkZWQgaWYgdGhlIHJlZ2V4cCBiZWdpbnMg d2l0aCA/ISAocXVlc3Rpb24tbWFyawpleGNsYW1hdGlvbi1tYXJrKS4gIEZvciBleGFtcGxlIHRo ZSBzYW1lIGV4cGFuc2lvbiB3aWxsIHJlc3VsdApmcm9tIG9ubHkgZXh0cmFjdGluZyBpbm91dHMg c3RhcnRpbmcgd2l0aCBpOgoKICAgICAgICAgICAvKkFVVE9JTk9VVChcIl5pXCIpKi8iCiAgKHNh dmUtZXhjdXJzaW9uCiAgICA7OyBQb2ludCBtdXN0IGJlIGF0IGluc2VydGlvbiBwb2ludC4KICAg IChsZXQqICgoaW5kZW50LXB0IChjdXJyZW50LWluZGVudGF0aW9uKSkKCSAgIChwYXJhbXMgKHZl cmlsb2ctcmVhZC1hdXRvLXBhcmFtcyAwIDEpKQoJICAgKHJlZ2V4cCAobnRoIDAgcGFyYW1zKSkK CSAgICh2MmsgICh2ZXJpbG9nLWluLXBhcmVuLXF1aWNrKSkKCSAgIChtb2RpICh2ZXJpbG9nLW1v ZGktY3VycmVudCkpCgkgICAobW9kZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtZGVjbHMgbW9kaSkp CgkgICAobW9kc3ViZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtc3ViLWRlY2xzIG1vZGkpKQoJICAg KHNpZy1saXN0ICh2ZXJpbG9nLXNpZ25hbHMtbm90LWluCgkJICAgICAgKHZlcmlsb2ctc3ViZGVj bHMtZ2V0LWlub3V0cyBtb2RzdWJkZWNscykKCQkgICAgICAoYXBwZW5kICh2ZXJpbG9nLWRlY2xz LWdldC1vdXRwdXRzIG1vZGRlY2xzKQoJCQkgICAgICAodmVyaWxvZy1kZWNscy1nZXQtaW5vdXRz IG1vZGRlY2xzKQoJCQkgICAgICAodmVyaWxvZy1kZWNscy1nZXQtaW5wdXRzIG1vZGRlY2xzKQoJ CQkgICAgICAodmVyaWxvZy1zdWJkZWNscy1nZXQtaW5wdXRzIG1vZHN1YmRlY2xzKQoJCQkgICAg ICAodmVyaWxvZy1zdWJkZWNscy1nZXQtb3V0cHV0cyBtb2RzdWJkZWNscykpKSkpCiAgICAgICh3 aGVuIHJlZ2V4cAoJKHNldHEgc2lnLWxpc3QgKHZlcmlsb2ctc2lnbmFscy1tYXRjaGluZy1yZWdl eHAKCQkJc2lnLWxpc3QgcmVnZXhwKSkpCiAgICAgIChzZXRxIHNpZy1saXN0ICh2ZXJpbG9nLXNp Z25hbHMtbm90LW1hdGNoaW5nLXJlZ2V4cAoJCSAgICAgIHNpZy1saXN0IHZlcmlsb2ctYXV0by1p bm91dC1pZ25vcmUtcmVnZXhwKSkKICAgICAgKHZlcmlsb2ctZm9yd2FyZC1vci1pbnNlcnQtbGlu ZSkKICAgICAgKHdoZW4gdjJrICh2ZXJpbG9nLXJlcGFpci1vcGVuLWNvbW1hKSkKICAgICAgKHdo ZW4gc2lnLWxpc3QKCSh2ZXJpbG9nLWluc2VydC1pbmRlbnQgIi8vIEJlZ2lubmluZyBvZiBhdXRv bWF0aWMgaW5vdXRzIChmcm9tIHVudXNlZCBhdXRvaW5zdCBpbm91dHMpXG4iKQoJKHZlcmlsb2ct aW5zZXJ0LWRlZmluaXRpb24gbW9kaSBzaWctbGlzdCAiaW5vdXQiIGluZGVudC1wdCB2MmspCgko dmVyaWxvZy1pbnNlcnQtaW5kZW50ICIvLyBFbmQgb2YgYXV0b21hdGljc1xuIikpCiAgICAgICh3 aGVuIHYyayAodmVyaWxvZy1yZXBhaXItY2xvc2UtY29tbWEpKSkpKQoKKGRlZnVuIHZlcmlsb2ct YXV0by1pbm91dC1tb2R1bGUgKCZvcHRpb25hbCBjb21wbGVtZW50IGFsbC1pbikKICAiRXhwYW5k IEFVVE9JTk9VVE1PRFVMRSBzdGF0ZW1lbnRzLCBhcyBwYXJ0IG9mIFxcW3Zlcmlsb2ctYXV0b10u ClRha2UgaW5wdXQvb3V0cHV0L2lub3V0IHN0YXRlbWVudHMgZnJvbSB0aGUgc3BlY2lmaWVkIG1v ZHVsZSBhbmQgaW5zZXJ0CmludG8gdGhlIGN1cnJlbnQgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwg Zm9yIG1ha2luZyBudWxsIHRlbXBsYXRlcyBhbmQKc2hlbGwgbW9kdWxlcyB3aGljaCBuZWVkIHRv IGhhdmUgaWRlbnRpY2FsIEkvTyB3aXRoIGFub3RoZXIgbW9kdWxlLgpBbnkgSS9PIHdoaWNoIGFy ZSBhbHJlYWR5IGRlZmluZWQgaW4gdGhpcyBtb2R1bGUgd2lsbCBub3QgYmUgcmVkZWZpbmVkLgpG b3IgdGhlIGNvbXBsZW1lbnQgb2YgdGhpcyBmdW5jdGlvbiwgc2VlIGB2ZXJpbG9nLWF1dG8taW5v dXQtY29tcCcsCmFuZCB0byBtYWtlIG1vbml0b3JzIHdpdGggYWxsIGlucHV0cywgc2VlIGB2ZXJp bG9nLWF1dG8taW5vdXQtaW4nLgoKTGltaXRhdGlvbnM6CiAgSWYgcGxhY2VkIGluc2lkZSB0aGUg cGFyZW50aGVzaXMgb2YgYSBtb2R1bGUgZGVjbGFyYXRpb24sIGl0IGNyZWF0ZXMKICBWZXJpbG9n IDIwMDEgc3R5bGUsIGVsc2UgdXNlcyBWZXJpbG9nIDE5OTUgc3R5bGUuCgogIENvbmNhdGVuYXRp b24gYW5kIG91dHB1dHRpbmcgcGFydGlhbCBidXNlcyBpcyBub3Qgc3VwcG9ydGVkLgoKICBNb2R1 bGUgbmFtZXMgbXVzdCBiZSByZXNvbHZhYmxlIHRvIGZpbGVuYW1lcy4gIFNlZSBgdmVyaWxvZy1h dXRvLWluc3QnLgoKICBTaWduYWxzIGFyZSBub3QgaW5zZXJ0ZWQgaW4gdGhlIHNhbWUgb3JkZXIg YXMgaW4gdGhlIG9yaWdpbmFsIG1vZHVsZSwKICB0aG91Z2ggdGhleSB3aWxsIGFwcGVhciB0byBi ZSBpbiB0aGUgc2FtZSBvcmRlciB0byBhbiBBVVRPSU5TVAogIGluc3RhbnRpYXRpbmcgZWl0aGVy IG1vZHVsZS4KCiAgU2lnbmFscyBkZWNsYXJlZCBhcyBcIm91dHB1dCByZWdcIiBvciBcIm91dHB1 dCB3aXJlXCIgZXRjIHdpbGwKICBsb3NlIHRoZSB3aXJlL3JlZyBkZWNsYXJhdGlvbiBzbyB0aGF0 IHNoZWxsIG1vZHVsZXMgbWF5CiAgZ2VuZXJhdGUgdGhvc2Ugb3V0cHV0cyBkaWZmZXJlbnRseS4g IEhvd2V2ZXIsIFwib3V0cHV0IGxvZ2ljXCIKICBpcyBwcm9wYWdhdGVkLgoKQW4gZXhhbXBsZToK CiAgICAgICAgbW9kdWxlIEV4YW1wTWFpbgogICAgICAgICAgKGlucHV0IGksCiAgICAgICAgICAg b3V0cHV0IG8sCiAgICAgICAgICAgaW5vdXQgaW8pOwogICAgICAgIGVuZG1vZHVsZQoKICAgICAg ICBtb2R1bGUgRXhhbXBTaGVsbCAoLypBVVRPQVJHKi8pOwogICAgICAgICAgIC8qQVVUT0lOT1VU TU9EVUxFKFwiRXhhbXBNYWluXCIpKi8KICAgICAgICBlbmRtb2R1bGUKClR5cGluZyBcXFt2ZXJp bG9nLWF1dG9dIHdpbGwgbWFrZSB0aGlzIGludG86CgogICAgICAgIG1vZHVsZSBFeGFtcFNoZWxs ICgvKkFVVE9BUkcqL28sIGlvLCBvKTsKICAgICAgICAgICAvKkFVVE9JTk9VVE1PRFVMRShcIkV4 YW1wTWFpblwiKSovCiAgICAgICAgICAgLy8gQmVnaW5uaW5nIG9mIGF1dG9tYXRpYyBpbi9vdXQv aW5vdXRzCiAgICAgICAgICAgb3V0cHV0IG87CiAgICAgICAgICAgaW5vdXQgaW87CiAgICAgICAg ICAgaW5wdXQgaTsKICAgICAgICAgICAvLyBFbmQgb2YgYXV0b21hdGljcwogICAgICAgIGVuZG1v ZHVsZQoKWW91IG1heSBhbHNvIHByb3ZpZGUgYW4gb3B0aW9uYWwgcmVndWxhciBleHByZXNzaW9u LCBpbiB3aGljaApjYXNlIG9ubHkgc2lnbmFscyBtYXRjaGluZyB0aGUgcmVndWxhciBleHByZXNz aW9uIHdpbGwgYmUKaW5jbHVkZWQsIG9yIGV4Y2x1ZGVkIGlmIHRoZSByZWdleHAgYmVnaW5zIHdp dGggPyEgKHF1ZXN0aW9uLW1hcmsKZXhjbGFtYXRpb24tbWFyaykuICBGb3IgZXhhbXBsZSB0aGUg c2FtZSBleHBhbnNpb24gd2lsbCByZXN1bHQKZnJvbSBvbmx5IGV4dHJhY3Rpbmcgc2lnbmFscyBz dGFydGluZyB3aXRoIGk6CgogICAgICAgICAgIC8qQVVUT0lOT1VUTU9EVUxFKFwiRXhhbXBNYWlu XCIsXCJeaVwiKSovCgpZb3UgbWF5IGFsc28gcHJvdmlkZSBhbiBvcHRpb25hbCB0aGlyZCBhcmd1 bWVudCByZWd1bGFyCmV4cHJlc3Npb24sIGluIHdoaWNoIGNhc2Ugb25seSBzaWduYWxzIHdoaWNo IGhhdmUgdGhhdCBwaW4KZGlyZWN0aW9uIGFuZCBkYXRhIHR5cGUgbWF0Y2hpbmcgdGhhdCByZWd1 bGFyIGV4cHJlc3Npb24gd2lsbCBiZQppbmNsdWRlZC4gIFRoaXMgbWF0Y2hlcyBhZ2FpbnN0IGV2 ZXJ5dGhpbmcgYmVmb3JlIHRoZSBzaWduYWwgbmFtZQppbiB0aGUgZGVjbGFyYXRpb24sIGZvciBl eGFtcGxlIGFnYWluc3QgXCJpbnB1dFwiIChzaW5nbGUKYml0KSwgXCJvdXRwdXQgbG9naWNcIiAo ZGlyZWN0aW9uIGFuZCB0eXBlKSBvcgpcIm91dHB1dCBbMTowXVwiIChkaXJlY3Rpb24gYW5kIGlt cGxpY2l0IHR5cGUpLiAgWW91IGFsc28KcHJvYmFibHkgd2FudCB0byBza2lwIHNwYWNlcyBpbiB5 b3VyIHJlZ2V4cC4KCkZvciBleGFtcGxlLCB0aGUgYmVsb3cgd2lsbCByZXN1bHQgaW4gbWF0Y2hp bmcgdGhlIG91dHB1dCBcIm9cIgphZ2FpbnN0IHRoZSBwcmV2aW91cyBleGFtcGxlJ3MgbW9kdWxl OgoKICAgICAgICAgICAvKkFVVE9JTk9VVE1PRFVMRShcIkV4YW1wTWFpblwiLFwiXCIsXCJeb3V0 cHV0LipcIikqLwoKWW91IG1heSBhbHNvIHByb3ZpZGUgYW4gb3B0aW9uYWwgZm91cnRoIGFyZ3Vt ZW50IHJlZ3VsYXIKZXhwcmVzc2lvbiwgd2hpY2ggaWYgbm90IFwiXCIgb25seSBzaWduYWxzIHdo aWNoIGRvIE5PVCBtYXRjaAp0aGF0IGV4cHJlc3Npb24gYXJlIGluY2x1ZGVkLiIKICA7OyBCZXdh cmUgc3BhY2luZyBvZiBxdW90ZXMgaW4gYWJvdmUgYXMgY2FuIG1lc3MgdXAgRW1hY3MgaW5kZW50 ZXIKICAoc2F2ZS1leGN1cnNpb24KICAgIChsZXQqICgocGFyYW1zICh2ZXJpbG9nLXJlYWQtYXV0 by1wYXJhbXMgMSA0KSkKCSAgIChzdWJtb2QgKG50aCAwIHBhcmFtcykpCgkgICAocmVnZXhwIChu dGggMSBwYXJhbXMpKQoJICAgKGRpcmVjdGlvbi1yZSAobnRoIDIgcGFyYW1zKSkKCSAgIChub3Qt cmUgKG50aCAzIHBhcmFtcykpCgkgICBzdWJtb2RpKQogICAgICA7OyBMb29rdXAgcG9zaXRpb24s IGV0YyBvZiBjby1tb2R1bGUKICAgICAgOzsgTm90ZSB0aGlzIG1heSByYWlzZSBhbiBlcnJvcgog ICAgICAod2hlbiAoc2V0cSBzdWJtb2RpICh2ZXJpbG9nLW1vZGktbG9va3VwIHN1Ym1vZCB0KSkK CShsZXQqICgoaW5kZW50LXB0IChjdXJyZW50LWluZGVudGF0aW9uKSkKCSAgICAgICAodjJrICAo dmVyaWxvZy1pbi1wYXJlbi1xdWljaykpCgkgICAgICAgKG1vZGkgKHZlcmlsb2ctbW9kaS1jdXJy ZW50KSkKCSAgICAgICAobW9kZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtZGVjbHMgbW9kaSkpCgkg ICAgICAgKHN1Ym1vZGRlY2xzICh2ZXJpbG9nLW1vZGktZ2V0LWRlY2xzIHN1Ym1vZGkpKQoJICAg ICAgIChzaWctbGlzdC1pICAodmVyaWxvZy1zaWduYWxzLW5vdC1pbgoJCQkgICAgIChjb25kIChh bGwtaW4KCQkJCSAgICAoYXBwZW5kCgkJCQkgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1pbnB1dHMg c3VibW9kZGVjbHMpCgkJCQkgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1pbm91dHMgc3VibW9kZGVj bHMpCgkJCQkgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1vdXRwdXRzIHN1Ym1vZGRlY2xzKSkpCgkJ CQkgICAoY29tcGxlbWVudAoJCQkJICAgICh2ZXJpbG9nLWRlY2xzLWdldC1vdXRwdXRzIHN1Ym1v ZGRlY2xzKSkKCQkJCSAgICh0ICh2ZXJpbG9nLWRlY2xzLWdldC1pbnB1dHMgc3VibW9kZGVjbHMp KSkKCQkJICAgICAoYXBwZW5kICh2ZXJpbG9nLWRlY2xzLWdldC1pbnB1dHMgbW9kZGVjbHMpKSkp CgkgICAgICAgKHNpZy1saXN0LW8gICh2ZXJpbG9nLXNpZ25hbHMtbm90LWluCgkJCSAgICAgKGNv bmQgKGFsbC1pbiBuaWwpCgkJCQkgICAoY29tcGxlbWVudAoJCQkJICAgICh2ZXJpbG9nLWRlY2xz LWdldC1pbnB1dHMgc3VibW9kZGVjbHMpKQoJCQkJICAgKHQgKHZlcmlsb2ctZGVjbHMtZ2V0LW91 dHB1dHMgc3VibW9kZGVjbHMpKSkKCQkJICAgICAoYXBwZW5kICh2ZXJpbG9nLWRlY2xzLWdldC1v dXRwdXRzIG1vZGRlY2xzKSkpKQoJICAgICAgIChzaWctbGlzdC1pbyAodmVyaWxvZy1zaWduYWxz LW5vdC1pbgoJCQkgICAgIChjb25kIChhbGwtaW4gbmlsKQoJCQkJICAgKHQgKHZlcmlsb2ctZGVj bHMtZ2V0LWlub3V0cyBzdWJtb2RkZWNscykpKQoJCQkgICAgIChhcHBlbmQgKHZlcmlsb2ctZGVj bHMtZ2V0LWlub3V0cyBtb2RkZWNscykpKSkKCSAgICAgICAoc2lnLWxpc3QtaWYgKHZlcmlsb2ct c2lnbmFscy1ub3QtaW4KCQkJICAgICAodmVyaWxvZy1kZWNscy1nZXQtaW50ZXJmYWNlcyBzdWJt b2RkZWNscykKCQkJICAgICAoYXBwZW5kICh2ZXJpbG9nLWRlY2xzLWdldC1pbnRlcmZhY2VzIG1v ZGRlY2xzKSkpKSkKCSAgKGZvcndhcmQtbGluZSAxKQoJICAoc2V0cSBzaWctbGlzdC1pICAodmVy aWxvZy1zaWduYWxzLWVkaXQtd2lyZS1yZWcKCQkJICAgICAodmVyaWxvZy1zaWduYWxzLW5vdC1t YXRjaGluZy1yZWdleHAKCQkJICAgICAgKHZlcmlsb2ctc2lnbmFscy1tYXRjaGluZy1kaXItcmUK CQkJICAgICAgICh2ZXJpbG9nLXNpZ25hbHMtbWF0Y2hpbmctcmVnZXhwIHNpZy1saXN0LWkgcmVn ZXhwKQoJCQkgICAgICAgImlucHV0IiBkaXJlY3Rpb24tcmUpIG5vdC1yZSkpCgkJc2lnLWxpc3Qt byAgKHZlcmlsb2ctc2lnbmFscy1lZGl0LXdpcmUtcmVnCgkJCSAgICAgKHZlcmlsb2ctc2lnbmFs cy1ub3QtbWF0Y2hpbmctcmVnZXhwCgkJCSAgICAgICh2ZXJpbG9nLXNpZ25hbHMtbWF0Y2hpbmct ZGlyLXJlCgkJCSAgICAgICAodmVyaWxvZy1zaWduYWxzLW1hdGNoaW5nLXJlZ2V4cCBzaWctbGlz dC1vIHJlZ2V4cCkKCQkJICAgICAgICJvdXRwdXQiIGRpcmVjdGlvbi1yZSkgbm90LXJlKSkKCQlz aWctbGlzdC1pbyAodmVyaWxvZy1zaWduYWxzLWVkaXQtd2lyZS1yZWcKCQkJICAgICAodmVyaWxv Zy1zaWduYWxzLW5vdC1tYXRjaGluZy1yZWdleHAKCQkJICAgICAgKHZlcmlsb2ctc2lnbmFscy1t YXRjaGluZy1kaXItcmUKCQkJICAgICAgICh2ZXJpbG9nLXNpZ25hbHMtbWF0Y2hpbmctcmVnZXhw IHNpZy1saXN0LWlvIHJlZ2V4cCkKCQkJICAgICAgICJpbm91dCIgZGlyZWN0aW9uLXJlKSBub3Qt cmUpKQoJCXNpZy1saXN0LWlmICh2ZXJpbG9nLXNpZ25hbHMtbm90LW1hdGNoaW5nLXJlZ2V4cAoJ CQkgICAgICh2ZXJpbG9nLXNpZ25hbHMtbWF0Y2hpbmctZGlyLXJlCgkJCSAgICAgICh2ZXJpbG9n LXNpZ25hbHMtbWF0Y2hpbmctcmVnZXhwIHNpZy1saXN0LWlmIHJlZ2V4cCkKCQkJICAgICAgImlu dGVyZmFjZSIgZGlyZWN0aW9uLXJlKSBub3QtcmUpKQoJICAod2hlbiB2MmsgKHZlcmlsb2ctcmVw YWlyLW9wZW4tY29tbWEpKQoJICAod2hlbiAob3Igc2lnLWxpc3QtaSBzaWctbGlzdC1vIHNpZy1s aXN0LWlvIHNpZy1saXN0LWlmKQoJICAgICh2ZXJpbG9nLWluc2VydC1pbmRlbnQgIi8vIEJlZ2lu bmluZyBvZiBhdXRvbWF0aWMgaW4vb3V0L2lub3V0cyAoZnJvbSBzcGVjaWZpYyBtb2R1bGUpXG4i KQoJICAgIDs7IERvbid0IHNvcnQgdGhlbSBzbyBhbiB1cHBlciBBVVRPSU5TVCB3aWxsIG1hdGNo IHRoZSBtYWluIG1vZHVsZQoJICAgICh2ZXJpbG9nLWluc2VydC1kZWZpbml0aW9uIG1vZGkgc2ln LWxpc3QtbyAgIm91dHB1dCIgaW5kZW50LXB0IHYyayB0KQoJICAgICh2ZXJpbG9nLWluc2VydC1k ZWZpbml0aW9uIG1vZGkgc2lnLWxpc3QtaW8gImlub3V0IiBpbmRlbnQtcHQgdjJrIHQpCgkgICAg KHZlcmlsb2ctaW5zZXJ0LWRlZmluaXRpb24gbW9kaSBzaWctbGlzdC1pICAiaW5wdXQiIGluZGVu dC1wdCB2MmsgdCkKCSAgICAodmVyaWxvZy1pbnNlcnQtZGVmaW5pdGlvbiBtb2RpIHNpZy1saXN0 LWlmICJpbnRlcmZhY2UiIGluZGVudC1wdCB2MmsgdCkKCSAgICAodmVyaWxvZy1pbnNlcnQtaW5k ZW50ICIvLyBFbmQgb2YgYXV0b21hdGljc1xuIikpCgkgICh3aGVuIHYyayAodmVyaWxvZy1yZXBh aXItY2xvc2UtY29tbWEpKSkpKSkpCgooZGVmdW4gdmVyaWxvZy1hdXRvLWlub3V0LWNvbXAgKCkK ICAiRXhwYW5kIEFVVE9JTk9VVENPTVAgc3RhdGVtZW50cywgYXMgcGFydCBvZiBcXFt2ZXJpbG9n LWF1dG9dLgpUYWtlIGlucHV0L291dHB1dC9pbm91dCBzdGF0ZW1lbnRzIGZyb20gdGhlIHNwZWNp ZmllZCBtb2R1bGUgYW5kCmluc2VydCB0aGUgaW52ZXJzZSBpbnRvIHRoZSBjdXJyZW50IG1vZHVs ZSAoaW5wdXRzIGJlY29tZSBvdXRwdXRzCmFuZCB2aWNlLXZlcnNhLikgIFRoaXMgaXMgdXNlZnVs IGZvciBtYWtpbmcgdGVzdCBhbmQgc3RpbXVsdXMKbW9kdWxlcyB3aGljaCBuZWVkIHRvIGhhdmUg Y29tcGxlbWVudGluZyBJL08gd2l0aCBhbm90aGVyIG1vZHVsZS4KQW55IEkvTyB3aGljaCBhcmUg YWxyZWFkeSBkZWZpbmVkIGluIHRoaXMgbW9kdWxlIHdpbGwgbm90IGJlCnJlZGVmaW5lZC4gIEZv ciB0aGUgY29tcGxlbWVudCBvZiB0aGlzIGZ1bmN0aW9uLCBzZWUKYHZlcmlsb2ctYXV0by1pbm91 dC1tb2R1bGUnLgoKTGltaXRhdGlvbnM6CiAgSWYgcGxhY2VkIGluc2lkZSB0aGUgcGFyZW50aGVz aXMgb2YgYSBtb2R1bGUgZGVjbGFyYXRpb24sIGl0IGNyZWF0ZXMKICBWZXJpbG9nIDIwMDEgc3R5 bGUsIGVsc2UgdXNlcyBWZXJpbG9nIDE5OTUgc3R5bGUuCgogIENvbmNhdGVuYXRpb24gYW5kIG91 dHB1dHRpbmcgcGFydGlhbCBidXNlcyBpcyBub3Qgc3VwcG9ydGVkLgoKICBNb2R1bGUgbmFtZXMg bXVzdCBiZSByZXNvbHZhYmxlIHRvIGZpbGVuYW1lcy4gIFNlZSBgdmVyaWxvZy1hdXRvLWluc3Qn LgoKICBTaWduYWxzIGFyZSBub3QgaW5zZXJ0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgaW4gdGhl IG9yaWdpbmFsIG1vZHVsZSwKICB0aG91Z2ggdGhleSB3aWxsIGFwcGVhciB0byBiZSBpbiB0aGUg c2FtZSBvcmRlciB0byBhbiBBVVRPSU5TVAogIGluc3RhbnRpYXRpbmcgZWl0aGVyIG1vZHVsZS4K CkFuIGV4YW1wbGU6CgogICAgICAgIG1vZHVsZSBFeGFtcE1haW4KICAgICAgICAgIChpbnB1dCBp LAogICAgICAgICAgIG91dHB1dCBvLAogICAgICAgICAgIGlub3V0IGlvKTsKICAgICAgICBlbmRt b2R1bGUKCiAgICAgICAgbW9kdWxlIEV4YW1wQmVuY2ggKC8qQVVUT0FSRyovKTsKICAgICAgICAg ICAvKkFVVE9JTk9VVENPTVAoXCJFeGFtcE1haW5cIikqLwogICAgICAgIGVuZG1vZHVsZQoKVHlw aW5nIFxcW3Zlcmlsb2ctYXV0b10gd2lsbCBtYWtlIHRoaXMgaW50bzoKCiAgICAgICAgbW9kdWxl IEV4YW1wU2hlbGwgKC8qQVVUT0FSRyovaSwgaW8sIG8pOwogICAgICAgICAgIC8qQVVUT0lOT1VU Q09NUChcIkV4YW1wTWFpblwiKSovCiAgICAgICAgICAgLy8gQmVnaW5uaW5nIG9mIGF1dG9tYXRp YyBpbi9vdXQvaW5vdXRzCiAgICAgICAgICAgb3V0cHV0IGk7CiAgICAgICAgICAgaW5vdXQgaW87 CiAgICAgICAgICAgaW5wdXQgbzsKICAgICAgICAgICAvLyBFbmQgb2YgYXV0b21hdGljcwogICAg ICAgIGVuZG1vZHVsZQoKWW91IG1heSBhbHNvIHByb3ZpZGUgYW4gb3B0aW9uYWwgcmVndWxhciBl eHByZXNzaW9uLCBpbiB3aGljaCBjYXNlIG9ubHkKc2lnbmFscyBtYXRjaGluZyB0aGUgcmVndWxh ciBleHByZXNzaW9uIHdpbGwgYmUgaW5jbHVkZWQuICBGb3IgZXhhbXBsZSB0aGUKc2FtZSBleHBh bnNpb24gd2lsbCByZXN1bHQgZnJvbSBvbmx5IGV4dHJhY3Rpbmcgc2lnbmFscyBzdGFydGluZyB3 aXRoIGk6CgogICAgICAgICAgIC8qQVVUT0lOT1VUQ09NUChcIkV4YW1wTWFpblwiLFwiXmlcIikq LwoKWW91IG1heSBhbHNvIHByb3ZpZGUgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgcmVndWxh cgpleHByZXNzaW9uLCBpbiB3aGljaCBjYXNlIG9ubHkgc2lnbmFscyB3aGljaCBoYXZlIHRoYXQg cGluCmRpcmVjdGlvbiBhbmQgZGF0YSB0eXBlIG1hdGNoaW5nIHRoYXQgcmVndWxhciBleHByZXNz aW9uIHdpbGwgYmUKaW5jbHVkZWQuICBUaGlzIG1hdGNoZXMgYWdhaW5zdCBldmVyeXRoaW5nIGJl Zm9yZSB0aGUgc2lnbmFsIG5hbWUKaW4gdGhlIGRlY2xhcmF0aW9uLCBmb3IgZXhhbXBsZSBhZ2Fp bnN0IFwiaW5wdXRcIiAoc2luZ2xlCmJpdCksIFwib3V0cHV0IGxvZ2ljXCIgKGRpcmVjdGlvbiBh bmQgdHlwZSkKb3IgXCJvdXRwdXQgWzE6MF1cIiAoZGlyZWN0aW9uIGFuZCBpbXBsaWNpdCB0eXBl KS4gIFlvdSBhbHNvCnByb2JhYmx5IHdhbnQgdG8gc2tpcCBzcGFjZXMgaW4geW91ciByZWdleHAu CgpGb3IgZXhhbXBsZSwgdGhlIGJlbG93IHdpbGwgcmVzdWx0IGluIG1hdGNoaW5nIHRoZSBvdXRw dXQgXCJvXCIKYWdhaW5zdCB0aGUgcHJldmlvdXMgZXhhbXBsZSdzIG1vZHVsZToKCiAgICAgICAg ICAgLypBVVRPSU5PVVRDT01QKFwiRXhhbXBNYWluXCIsXCJcIixcIl5vdXRwdXQuKlwiKSovCgpZ b3UgbWF5IGFsc28gcHJvdmlkZSBhbiBvcHRpb25hbCBmb3VydGggYXJndW1lbnQgcmVndWxhcgpl eHByZXNzaW9uLCB3aGljaCBpZiBub3QgXCJcIiBvbmx5IHNpZ25hbHMgd2hpY2ggZG8gTk9UIG1h dGNoCnRoYXQgZXhwcmVzc2lvbiBhcmUgaW5jbHVkZWQuIgogIDs7IEJld2FyZSBzcGFjaW5nIG9m IHF1b3RlcyBpbiBhYm92ZSBhcyBjYW4gbWVzcyB1cCBFbWFjcyBpbmRlbnRlcgogICh2ZXJpbG9n LWF1dG8taW5vdXQtbW9kdWxlIHQgbmlsKSkKCihkZWZ1biB2ZXJpbG9nLWF1dG8taW5vdXQtaW4g KCkKICAiRXhwYW5kIEFVVE9JTk9VVElOIHN0YXRlbWVudHMsIGFzIHBhcnQgb2YgXFxbdmVyaWxv Zy1hdXRvXS4KVGFrZSBpbnB1dC9vdXRwdXQvaW5vdXQgc3RhdGVtZW50cyBmcm9tIHRoZSBzcGVj aWZpZWQgbW9kdWxlIGFuZAppbnNlcnQgdGhlbSBhcyBhbGwgaW5wdXRzIGludG8gdGhlIGN1cnJl bnQgbW9kdWxlLiAgVGhpcyBpcwp1c2VmdWwgZm9yIG1ha2luZyBtb25pdG9yIG1vZHVsZXMgd2hp Y2ggbmVlZCB0byBzZWUgYWxsIHNpZ25hbHMKYXMgaW5wdXRzIGJhc2VkIG9uIGFub3RoZXIgbW9k dWxlLiAgQW55IEkvTyB3aGljaCBhcmUgYWxyZWFkeQpkZWZpbmVkIGluIHRoaXMgbW9kdWxlIHdp bGwgbm90IGJlIHJlZGVmaW5lZC4gIFNlZSBhbHNvCmB2ZXJpbG9nLWF1dG8taW5vdXQtbW9kdWxl Jy4KCkxpbWl0YXRpb25zOgogIElmIHBsYWNlZCBpbnNpZGUgdGhlIHBhcmVudGhlc2lzIG9mIGEg bW9kdWxlIGRlY2xhcmF0aW9uLCBpdCBjcmVhdGVzCiAgVmVyaWxvZyAyMDAxIHN0eWxlLCBlbHNl IHVzZXMgVmVyaWxvZyAxOTk1IHN0eWxlLgoKICBDb25jYXRlbmF0aW9uIGFuZCBvdXRwdXR0aW5n IHBhcnRpYWwgYnVzZXMgaXMgbm90IHN1cHBvcnRlZC4KCiAgTW9kdWxlIG5hbWVzIG11c3QgYmUg cmVzb2x2YWJsZSB0byBmaWxlbmFtZXMuICBTZWUgYHZlcmlsb2ctYXV0by1pbnN0Jy4KCiAgU2ln bmFscyBhcmUgbm90IGluc2VydGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIGluIHRoZSBvcmlnaW5h bCBtb2R1bGUsCiAgdGhvdWdoIHRoZXkgd2lsbCBhcHBlYXIgdG8gYmUgaW4gdGhlIHNhbWUgb3Jk ZXIgdG8gYW4gQVVUT0lOU1QKICBpbnN0YW50aWF0aW5nIGVpdGhlciBtb2R1bGUuCgpBbiBleGFt cGxlOgoKICAgICAgICBtb2R1bGUgRXhhbXBNYWluCiAgICAgICAgICAoaW5wdXQgaSwKICAgICAg ICAgICBvdXRwdXQgbywKICAgICAgICAgICBpbm91dCBpbyk7CiAgICAgICAgZW5kbW9kdWxlCgog ICAgICAgIG1vZHVsZSBFeGFtcElub3V0SW4gKC8qQVVUT0FSRyovKTsKICAgICAgICAgICAvKkFV VE9JTk9VVElOKFwiRXhhbXBNYWluXCIpKi8KICAgICAgICBlbmRtb2R1bGUKClR5cGluZyBcXFt2 ZXJpbG9nLWF1dG9dIHdpbGwgbWFrZSB0aGlzIGludG86CgogICAgICAgIG1vZHVsZSBFeGFtcElu b3V0SW4gKC8qQVVUT0FSRyovaSwgaW8sIG8pOwogICAgICAgICAgIC8qQVVUT0lOT1VUSU4oXCJF eGFtcE1haW5cIikqLwogICAgICAgICAgIC8vIEJlZ2lubmluZyBvZiBhdXRvbWF0aWMgaW4vb3V0 L2lub3V0cwogICAgICAgICAgIGlucHV0IGk7CiAgICAgICAgICAgaW5wdXQgaW87CiAgICAgICAg ICAgaW5wdXQgbzsKICAgICAgICAgICAvLyBFbmQgb2YgYXV0b21hdGljcwogICAgICAgIGVuZG1v ZHVsZQoKWW91IG1heSBhbHNvIHByb3ZpZGUgYW4gb3B0aW9uYWwgcmVndWxhciBleHByZXNzaW9u LCBpbiB3aGljaApjYXNlIG9ubHkgc2lnbmFscyBtYXRjaGluZyB0aGUgcmVndWxhciBleHByZXNz aW9uIHdpbGwgYmUKaW5jbHVkZWQsIG9yIGV4Y2x1ZGVkIGlmIHRoZSByZWdleHAgYmVnaW5zIHdp dGggPyEgKHF1ZXN0aW9uLW1hcmsKZXhjbGFtYXRpb24tbWFyaykuICBGb3IgZXhhbXBsZSB0aGUg c2FtZSBleHBhbnNpb24gd2lsbCByZXN1bHQKZnJvbSBvbmx5IGV4dHJhY3Rpbmcgc2lnbmFscyBz dGFydGluZyB3aXRoIGk6CgogICAgICAgICAgIC8qQVVUT0lOT1VUSU4oXCJFeGFtcE1haW5cIixc Il5pXCIpKi8iCiAgKHZlcmlsb2ctYXV0by1pbm91dC1tb2R1bGUgbmlsIHQpKQoKKGRlZnVuIHZl cmlsb2ctYXV0by1pbm91dC1wYXJhbSAoKQogICJFeHBhbmQgQVVUT0lOT1VUUEFSQU0gc3RhdGVt ZW50cywgYXMgcGFydCBvZiBcXFt2ZXJpbG9nLWF1dG9dLgpUYWtlIGlucHV0L291dHB1dC9pbm91 dCBzdGF0ZW1lbnRzIGZyb20gdGhlIHNwZWNpZmllZCBtb2R1bGUgYW5kIGluc2VydAppbnRvIHRo ZSBjdXJyZW50IG1vZHVsZS4gIFRoaXMgaXMgdXNlZnVsIGZvciBtYWtpbmcgbnVsbCB0ZW1wbGF0 ZXMgYW5kCnNoZWxsIG1vZHVsZXMgd2hpY2ggbmVlZCB0byBoYXZlIGlkZW50aWNhbCBJL08gd2l0 aCBhbm90aGVyIG1vZHVsZS4KQW55IEkvTyB3aGljaCBhcmUgYWxyZWFkeSBkZWZpbmVkIGluIHRo aXMgbW9kdWxlIHdpbGwgbm90IGJlIHJlZGVmaW5lZC4KRm9yIHRoZSBjb21wbGVtZW50IG9mIHRo aXMgZnVuY3Rpb24sIHNlZSBgdmVyaWxvZy1hdXRvLWlub3V0LWNvbXAnLAphbmQgdG8gbWFrZSBt b25pdG9ycyB3aXRoIGFsbCBpbnB1dHMsIHNlZSBgdmVyaWxvZy1hdXRvLWlub3V0LWluJy4KCkxp bWl0YXRpb25zOgogIElmIHBsYWNlZCBpbnNpZGUgdGhlIHBhcmVudGhlc2lzIG9mIGEgbW9kdWxl IGRlY2xhcmF0aW9uLCBpdCBjcmVhdGVzCiAgVmVyaWxvZyAyMDAxIHN0eWxlLCBlbHNlIHVzZXMg VmVyaWxvZyAxOTk1IHN0eWxlLgoKICBNb2R1bGUgbmFtZXMgbXVzdCBiZSByZXNvbHZhYmxlIHRv IGZpbGVuYW1lcy4gIFNlZSBgdmVyaWxvZy1hdXRvLWluc3QnLgoKICBQYXJhbWV0ZXJzIGFyZSBp bnNlcnRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyBpbiB0aGUgb3JpZ2luYWwgbW9kdWxlLgoKICBQ YXJhbWV0ZXJzIGRvIG5vdCBoYXZlIHZhbHVlcywgd2hpY2ggaXMgU3lzdGVtVmVyaWxvZyAyMDA5 IHN5bnRheC4KCkFuIGV4YW1wbGU6CgogICAgICAgIG1vZHVsZSBFeGFtcE1haW4gKCk7CiAgICAg ICAgICBwYXJhbWV0ZXIgUEFSQU0gPSAyMjsKICAgICAgICBlbmRtb2R1bGUKCiAgICAgICAgbW9k dWxlIEV4YW1wSW5vdXRQYXJhbSAoKTsKICAgICAgICAgICAvKkFVVE9JTk9VVFBBUkFNKFwiRXhh bXBNYWluXCIpKi8KICAgICAgICBlbmRtb2R1bGUKClR5cGluZyBcXFt2ZXJpbG9nLWF1dG9dIHdp bGwgbWFrZSB0aGlzIGludG86CgogICAgICAgIG1vZHVsZSBFeGFtcElub3V0UGFyYW0gKCk7CiAg ICAgICAgICAgLypBVVRPSU5PVVRQQVJBTShcIkV4YW1wTWFpblwiKSovCiAgICAgICAgICAgLy8g QmVnaW5uaW5nIG9mIGF1dG9tYXRpYyBwYXJhbWV0ZXJzIChmcm9tIHNwZWNpZmljIG1vZHVsZSkK ICAgICAgICAgICBwYXJhbWV0ZXIgICAgICAgUEFSQU07CiAgICAgICAgICAgLy8gRW5kIG9mIGF1 dG9tYXRpY3MKICAgICAgICBlbmRtb2R1bGUKCllvdSBtYXkgYWxzbyBwcm92aWRlIGFuIG9wdGlv bmFsIHJlZ3VsYXIgZXhwcmVzc2lvbiwgaW4gd2hpY2ggY2FzZSBvbmx5CnBhcmFtZXRlcnMgbWF0 Y2hpbmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aWxsIGJlIGluY2x1ZGVkLiAgRm9yIGV4YW1w bGUgdGhlCnNhbWUgZXhwYW5zaW9uIHdpbGwgcmVzdWx0IGZyb20gb25seSBleHRyYWN0aW5nIHBh cmFtZXRlcnMgc3RhcnRpbmcgd2l0aCBpOgoKICAgICAgICAgICAvKkFVVE9JTk9VVFBBUkFNKFwi RXhhbXBNYWluXCIsXCJeaVwiKSovIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGxldCogKChwYXJh bXMgKHZlcmlsb2ctcmVhZC1hdXRvLXBhcmFtcyAxIDIpKQoJICAgKHN1Ym1vZCAobnRoIDAgcGFy YW1zKSkKCSAgIChyZWdleHAgKG50aCAxIHBhcmFtcykpCgkgICBzdWJtb2RpKQogICAgICA7OyBM b29rdXAgcG9zaXRpb24sIGV0YyBvZiBjby1tb2R1bGUKICAgICAgOzsgTm90ZSB0aGlzIG1heSBy YWlzZSBhbiBlcnJvcgogICAgICAod2hlbiAoc2V0cSBzdWJtb2RpICh2ZXJpbG9nLW1vZGktbG9v a3VwIHN1Ym1vZCB0KSkKCShsZXQqICgoaW5kZW50LXB0IChjdXJyZW50LWluZGVudGF0aW9uKSkK CSAgICAgICAodjJrICAodmVyaWxvZy1pbi1wYXJlbi1xdWljaykpCgkgICAgICAgKG1vZGkgKHZl cmlsb2ctbW9kaS1jdXJyZW50KSkKCSAgICAgICAobW9kZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQt ZGVjbHMgbW9kaSkpCgkgICAgICAgKHN1Ym1vZGRlY2xzICh2ZXJpbG9nLW1vZGktZ2V0LWRlY2xz IHN1Ym1vZGkpKQoJICAgICAgIChzaWctbGlzdC1wICAodmVyaWxvZy1zaWduYWxzLW5vdC1pbgoJ CQkgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1ncGFyYW1zIHN1Ym1vZGRlY2xzKQoJCQkgICAgIChh cHBlbmQgKHZlcmlsb2ctZGVjbHMtZ2V0LWdwYXJhbXMgbW9kZGVjbHMpKSkpKQoJICAoZm9yd2Fy ZC1saW5lIDEpCgkgIChzZXRxIHNpZy1saXN0LXAgICh2ZXJpbG9nLXNpZ25hbHMtbWF0Y2hpbmct cmVnZXhwIHNpZy1saXN0LXAgcmVnZXhwKSkKCSAgKHdoZW4gdjJrICh2ZXJpbG9nLXJlcGFpci1v cGVuLWNvbW1hKSkKCSAgKHdoZW4gc2lnLWxpc3QtcAoJICAgICh2ZXJpbG9nLWluc2VydC1pbmRl bnQgIi8vIEJlZ2lubmluZyBvZiBhdXRvbWF0aWMgcGFyYW1ldGVycyAoZnJvbSBzcGVjaWZpYyBt b2R1bGUpXG4iKQoJICAgIDs7IERvbid0IHNvcnQgdGhlbSBzbyBhbiB1cHBlciBBVVRPSU5TVCB3 aWxsIG1hdGNoIHRoZSBtYWluIG1vZHVsZQoJICAgICh2ZXJpbG9nLWluc2VydC1kZWZpbml0aW9u IG1vZGkgc2lnLWxpc3QtcCAgInBhcmFtZXRlciIgaW5kZW50LXB0IHYyayB0KQoJICAgICh2ZXJp bG9nLWluc2VydC1pbmRlbnQgIi8vIEVuZCBvZiBhdXRvbWF0aWNzXG4iKSkKCSAgKHdoZW4gdjJr ICh2ZXJpbG9nLXJlcGFpci1jbG9zZS1jb21tYSkpKSkpKSkKCihkZWZ1biB2ZXJpbG9nLWF1dG8t aW5vdXQtbW9kcG9ydCAoKQogICJFeHBhbmQgQVVUT0lOT1VUTU9EUE9SVCBzdGF0ZW1lbnRzLCBh cyBwYXJ0IG9mIFxcW3Zlcmlsb2ctYXV0b10uClRha2UgaW5wdXQvb3V0cHV0L2lub3V0IHN0YXRl bWVudHMgZnJvbSB0aGUgc3BlY2lmaWVkIGludGVyZmFjZQphbmQgbW9kcG9ydCBhbmQgaW5zZXJ0 IGludG8gdGhlIGN1cnJlbnQgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwKZm9yIG1ha2luZyB2ZXJp ZmljYXRpb24gbW9kdWxlcyB0aGF0IGNvbm5lY3QgdG8gVVZNIGludGVyZmFjZXMuCgogIFRoZSBm aXJzdCBwYXJhbWV0ZXIgaXMgdGhlIG5hbWUgb2YgYW4gaW50ZXJmYWNlLgoKICBUaGUgc2Vjb25k IHBhcmFtZXRlciBpcyBhIHJlZ2V4cCBvZiBtb2Rwb3J0cyB0byByZWFkIGZyb20gaW4KICB0aGF0 IGludGVyZmFjZS4KCiAgVGhlIG9wdGlvbmFsIHRoaXJkIHBhcmFtZXRlciBpcyBhIHJlZ3VsYXIg ZXhwcmVzc2lvbiwgYW5kIG9ubHkKICBzaWduYWxzIG1hdGNoaW5nIHRoZSByZWd1bGFyIGV4cHJl c3Npb24gd2lsbCBiZSBpbmNsdWRlZC4KCiAgVGhlIG9wdGlvbmFsIGZvdXJ0aCBwYXJhbWV0ZXIg aXMgYSBwcmVmaXggdG8gYWRkIHRvIHRoZSBzaWduYWxzLgoKTGltaXRhdGlvbnM6CiAgSWYgcGxh Y2VkIGluc2lkZSB0aGUgcGFyZW50aGVzaXMgb2YgYSBtb2R1bGUgZGVjbGFyYXRpb24sIGl0IGNy ZWF0ZXMKICBWZXJpbG9nIDIwMDEgc3R5bGUsIGVsc2UgdXNlcyBWZXJpbG9nIDE5OTUgc3R5bGUu CgogIEludGVyZmFjZSBuYW1lcyBtdXN0IGJlIHJlc29sdmFibGUgdG8gZmlsZW5hbWVzLiAgU2Vl IGB2ZXJpbG9nLWF1dG8taW5zdCcuCgpBcyB3aXRoIG90aGVyIGF1dG9zLCBhbnkgaW5wdXRzL291 dHB1dHMgZGVjbGFyZWQgaW4gdGhlIG1vZHVsZQp3aWxsIHN1cHByZXNzIHRoZSBBVVRPIGZyb20g cmVkZWNsYXJpbmcgYW4gaW5wdXRzL291dHB1dHMgYnkKdGhlIHNhbWUgbmFtZS4KCkFuIGV4YW1w bGU6CgogICAgICAgIGludGVyZmFjZSBFeGFtcElmCiAgICAgICAgICAoIGlucHV0IGxvZ2ljIGNs ayApOwogICAgICAgICAgIGxvZ2ljICAgICAgICByZXFfdmFsOwogICAgICAgICAgIGxvZ2ljIFs3 OjBdICByZXFfZGF0OwogICAgICAgICAgIGNsb2NraW5nIG1vbl9jbGtibGsgQChwb3NlZGdlIGNs ayk7CiAgICAgICAgICAgICAgaW5wdXQgICAgIHJlcV92YWw7CiAgICAgICAgICAgICAgaW5wdXQg ICAgIHJlcV9kYXQ7CiAgICAgICAgICAgZW5kY2xvY2tpbmcKICAgICAgICAgICBtb2Rwb3J0IG1w KGNsb2NraW5nIG1vbl9jbGtibGspOwogICAgICAgIGVuZGludGVyZmFjZQoKCiAgICAgICAgbW9k dWxlIEV4YW1wTWFpbgogICAgICAgICggaW5wdXQgY2xrLAogICAgICAgICAgLypBVVRPSU5PVVRN T0RQT1JUKFwiRXhhbXBJZlwiLCBcIm1wXCIpKi8KICAgICAgICApOwoKICAgICAgICBFeGFtcGxl SWYgaTsKCiAgICAgICAgLypBVVRPQVNTSUdOTU9EUE9SVChcIkV4YW1wSWZcIiwgXCJtcFwiLCBc ImlcIikqLwoKICAgICAgICBlbmRtb2R1bGUKClR5cGluZyBcXFt2ZXJpbG9nLWF1dG9dIHdpbGwg bWFrZSB0aGlzIGludG86CgogICAgICAgIG1vZHVsZSBFeGFtcE1haW4KICAgICAgICAoIGlucHV0 IGNsaywKICAgICAgICAgIC8qQVVUT0lOT1VUTU9EUE9SVChcIkV4YW1wSWZcIiwgXCJtcFwiKSov CiAgICAgICAgICAvLyBCZWdpbm5pbmcgb2YgYXV0b21hdGljIGluL291dC9pbm91dHMgKGZyb20g bW9kcG9ydCkKICAgICAgICAgIGlucHV0ICAgICAgICByZXFfdmFsLAogICAgICAgICAgaW5wdXQg Wzc6MF0gIHJlcV9kYXQKICAgICAgICAgIC8vIEVuZCBvZiBhdXRvbWF0aWNzCiAgICAgICAgKTsK CiAgICAgICAgRXhhbXBsZUlmIGk7CgogICAgICAgIC8qQVVUT0FTU0lHTk1PRFBPUlQoXCJFeGFt cElmXCIsIFwibXBcIiwgXCJpXCIpKi8KICAgICAgICAvLyBCZWdpbm5pbmcgb2YgYXV0b21hdGlj IGFzc2lnbm1lbnRzIGZyb20gbW9kcG9ydAogICAgICAgIGFzc2lnbiBpLnJlcV9kYXQgPSByZXFf ZGF0OwogICAgICAgIGFzc2lnbiBpLnJlcV92YWwgPSByZXFfdmFsOwogICAgICAgIC8vIEVuZCBv ZiBhdXRvbWF0aWNzCgogICAgICAgIGVuZG1vZHVsZQoKSWYgdGhlIG1vZHBvcnQgaXMgcGFydCBv ZiBhIFVWTSBtb25pdG9yL2RyaXZlciBjbGFzcywgdGhpcwpjcmVhdGVzIGEgd3JhcHBlciBtb2R1 bGUgdGhhdCBtYXkgYmUgdXNlZCB0byBpbnN0YW50aWF0ZSB0aGUKZHJpdmVyL21vbml0b3IgdXNp bmcgQVVUT0lOU1QgaW4gdGhlIHRlc3RiZW5jaC4iCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAobGV0 KiAoKHBhcmFtcyAodmVyaWxvZy1yZWFkLWF1dG8tcGFyYW1zIDIgNCkpCgkgICAoc3VibW9kIChu dGggMCBwYXJhbXMpKQoJICAgKG1vZHBvcnQtcmUgKG50aCAxIHBhcmFtcykpCgkgICAocmVnZXhw IChudGggMiBwYXJhbXMpKQogICAgICAgICAgIChwcmVmaXggKG50aCAzIHBhcmFtcykpCiAgICAg ICAgICAgZGlyZWN0aW9uLXJlIHN1Ym1vZGkpICA7IGRpcmVjdGlvbiBhcmd1bWVudCBub3Qgc3Vw cG9ydGVkIHVudGlsIHJlcXVlc3RlZAogICAgICA7OyBMb29rdXAgcG9zaXRpb24sIGV0YyBvZiBj by1tb2R1bGUKICAgICAgOzsgTm90ZSB0aGlzIG1heSByYWlzZSBhbiBlcnJvcgogICAgICAod2hl biAoc2V0cSBzdWJtb2RpICh2ZXJpbG9nLW1vZGktbG9va3VwIHN1Ym1vZCB0KSkKCShsZXQqICgo aW5kZW50LXB0IChjdXJyZW50LWluZGVudGF0aW9uKSkKCSAgICAgICAodjJrICAodmVyaWxvZy1p bi1wYXJlbi1xdWljaykpCgkgICAgICAgKG1vZGkgKHZlcmlsb2ctbW9kaS1jdXJyZW50KSkKCSAg ICAgICAobW9kZGVjbHMgKHZlcmlsb2ctbW9kaS1nZXQtZGVjbHMgbW9kaSkpCgkgICAgICAgKHN1 Ym1vZGRlY2xzICh2ZXJpbG9nLW1vZGktZ2V0LWRlY2xzIHN1Ym1vZGkpKQoJICAgICAgIChzdWJt b2Rwb3J0ZGVjbHMgKHZlcmlsb2ctbW9kaS1tb2Rwb3J0LWxvb2t1cCBzdWJtb2RpIG1vZHBvcnQt cmUpKQogICAgICAgICAgICAgICAoc2lnLWxpc3QtaSAodmVyaWxvZy1zaWduYWxzLWluICA7IERl Y2xzIGRvZXNuJ3QgaGF2ZSBkYXRhIHR5cGVzLCBtdXN0IHJlc29sdmUKCQkJICAgICh2ZXJpbG9n LWRlY2xzLWdldC12YXJzIHN1Ym1vZGRlY2xzKQoJCQkgICAgKHZlcmlsb2ctc2lnbmFscy1ub3Qt aW4KCQkJICAgICAodmVyaWxvZy1kZWNscy1nZXQtaW5wdXRzIHN1Ym1vZHBvcnRkZWNscykKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1kZWNscy1nZXQtcG9ydHMgc3VibW9k ZGVjbHMpKSkpCiAgICAgICAgICAgICAgIChzaWctbGlzdC1vICh2ZXJpbG9nLXNpZ25hbHMtaW4g IDsgRGVjbHMgZG9lc24ndCBoYXZlIGRhdGEgdHlwZXMsIG11c3QgcmVzb2x2ZQoJCQkgICAgKHZl cmlsb2ctZGVjbHMtZ2V0LXZhcnMgc3VibW9kZGVjbHMpCgkJCSAgICAodmVyaWxvZy1zaWduYWxz LW5vdC1pbgoJCQkgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1vdXRwdXRzIHN1Ym1vZHBvcnRkZWNs cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1kZWNscy1nZXQtcG9ydHMg c3VibW9kZGVjbHMpKSkpCiAgICAgICAgICAgICAgIChzaWctbGlzdC1pbyAodmVyaWxvZy1zaWdu YWxzLWluICA7IERlY2xzIGRvZXNuJ3QgaGF2ZSBkYXRhIHR5cGVzLCBtdXN0IHJlc29sdmUKCQkJ ICAgICAodmVyaWxvZy1kZWNscy1nZXQtdmFycyBzdWJtb2RkZWNscykKCQkJICAgICAodmVyaWxv Zy1zaWduYWxzLW5vdC1pbgoJCQkgICAgICAodmVyaWxvZy1kZWNscy1nZXQtaW5vdXRzIHN1Ym1v ZHBvcnRkZWNscykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcmlsb2ctZGVjbHMt Z2V0LXBvcnRzIHN1Ym1vZGRlY2xzKSkpKSkKCSAgKGZvcndhcmQtbGluZSAxKQoJICAoc2V0cSBz aWctbGlzdC1pICAodmVyaWxvZy1zaWduYWxzLWVkaXQtd2lyZS1yZWcKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodmVyaWxvZy1zaWduYWxzLW5vdC1pbgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodmVyaWxvZy1zaWduYWxzLWFkZC1wcmVmaXgKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh2ZXJpbG9nLXNpZ25hbHMtbWF0Y2hpbmctZGlyLXJlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHZlcmlsb2ctc2lnbmFscy1tYXRjaGluZy1yZWdleHAgc2ln LWxpc3QtaSByZWdleHApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IiBk aXJlY3Rpb24tcmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1wb3J0cyBtb2RkZWNs cykpKQoJCXNpZy1saXN0LW8gICh2ZXJpbG9nLXNpZ25hbHMtZWRpdC13aXJlLXJlZwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLXNpZ25hbHMtbm90LWluCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLXNpZ25hbHMtYWRkLXByZWZpeAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHZlcmlsb2ctc2lnbmFscy1tYXRjaGluZy1kaXItcmUKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1zaWduYWxzLW1hdGNoaW5nLXJl Z2V4cCBzaWctbGlzdC1vIHJlZ2V4cCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi b3V0cHV0IiBkaXJlY3Rpb24tcmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVm aXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWRlY2xzLWdldC1wb3J0 cyBtb2RkZWNscykpKQoJCXNpZy1saXN0LWlvICh2ZXJpbG9nLXNpZ25hbHMtZWRpdC13aXJlLXJl ZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLXNpZ25hbHMtbm90LWluCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLXNpZ25hbHMtYWRkLXByZWZpeAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcmlsb2ctc2lnbmFscy1tYXRjaGluZy1k aXItcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1zaWduYWxzLW1h dGNoaW5nLXJlZ2V4cCBzaWctbGlzdC1pbyByZWdleHApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImlub3V0IiBkaXJlY3Rpb24tcmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwcmVmaXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLWRlY2xz LWdldC1wb3J0cyBtb2RkZWNscykpKSkKCSAgKHdoZW4gdjJrICh2ZXJpbG9nLXJlcGFpci1vcGVu LWNvbW1hKSkKCSAgKHdoZW4gKG9yIHNpZy1saXN0LWkgc2lnLWxpc3QtbyBzaWctbGlzdC1pbykK CSAgICAodmVyaWxvZy1pbnNlcnQtaW5kZW50ICIvLyBCZWdpbm5pbmcgb2YgYXV0b21hdGljIGlu L291dC9pbm91dHMgKGZyb20gbW9kcG9ydClcbiIpCgkgICAgOzsgRG9uJ3Qgc29ydCB0aGVtIHNv IGFuIHVwcGVyIEFVVE9JTlNUIHdpbGwgbWF0Y2ggdGhlIG1haW4gbW9kdWxlCgkgICAgKHZlcmls b2ctaW5zZXJ0LWRlZmluaXRpb24gbW9kaSBzaWctbGlzdC1vICAib3V0cHV0IiBpbmRlbnQtcHQg djJrIHQpCgkgICAgKHZlcmlsb2ctaW5zZXJ0LWRlZmluaXRpb24gbW9kaSBzaWctbGlzdC1pbyAi aW5vdXQiIGluZGVudC1wdCB2MmsgdCkKCSAgICAodmVyaWxvZy1pbnNlcnQtZGVmaW5pdGlvbiBt b2RpIHNpZy1saXN0LWkgICJpbnB1dCIgaW5kZW50LXB0IHYyayB0KQoJICAgICh2ZXJpbG9nLWlu c2VydC1pbmRlbnQgIi8vIEVuZCBvZiBhdXRvbWF0aWNzXG4iKSkKCSAgKHdoZW4gdjJrICh2ZXJp bG9nLXJlcGFpci1jbG9zZS1jb21tYSkpKSkpKSkKCihkZWZ1biB2ZXJpbG9nLWF1dG8taW5zZXJ0 LWxpc3AgKCkKICAiRXhwYW5kIEFVVE9JTlNFUlRMSVNQIHN0YXRlbWVudHMsIGFzIHBhcnQgb2Yg XFxbdmVyaWxvZy1hdXRvXS4KVGhlIExpc3AgY29kZSBwcm92aWRlZCBpcyBjYWxsZWQgYmVmb3Jl IG90aGVyIEFVVE9TIGFyZSBleHBhbmRlZCwKYW5kIHRoZSBMaXNwIGNvZGUgZ2VuZXJhbGx5IHdp bGwgY2FsbCBgaW5zZXJ0JyB0byBpbnNlcnQgdGV4dAppbnRvIHRoZSBjdXJyZW50IGZpbGUgYmVn aW5uaW5nIG9uIHRoZSBsaW5lIGFmdGVyIHRoZQpBVVRPSU5TRVJUTElTUC4KClNlZSBhbHNvIEFV VE9JTlNFUlRMQVNUIGFuZCBgdmVyaWxvZy1hdXRvLWluc2VydC1sYXN0JyB3aGljaApleGVjdXRl cyBhZnRlciAoYXMgb3Bwb3NlZCB0byBiZWZvcmUpIG90aGVyIEFVVE9zLgoKU2VlIGFsc28gQVVU T19MSVNQLCB3aGljaCB0YWtlcyBhIExpc3AgZXhwcmVzc2lvbiBhbmQgZXZhbHVhdGVzCml0IGR1 cmluZyBgdmVyaWxvZy1hdXRvLWluc3QnIGJ1dCBkb2VzIG5vdCBpbnNlcnQgYW55IHRleHQuCgpB biBleGFtcGxlOgoKICAgICAgICBtb2R1bGUgRXhhbXBJbnNlcnRMaXNwOwogICAgICAgICAgIC8q QVVUT0lOU0VSVExJU1AobXktdmVyaWxvZy1pbnNlcnQtaGVsbG8gXCJ3b3JsZFwiKSovCiAgICAg ICAgZW5kbW9kdWxlCgogICAgICAgIC8vIEZvciB0aGlzIGV4YW1wbGUgd2UgZGVjbGFyZSB0aGUg ZnVuY3Rpb24gaW4gdGhlCiAgICAgICAgLy8gbW9kdWxlJ3MgZmlsZSBpdHNlbGYuICBPZnRlbiB5 b3UnZCBkZWZpbmUgaXQgaW5zdGVhZAogICAgICAgIC8vIGluIGEgc2l0ZS1zdGFydC5lbCBvciBp bml0IGZpbGUuCiAgICAgICAgLyoKICAgICAgICAgTG9jYWwgVmFyaWFibGVzOgogICAgICAgICBl dmFsOgogICAgICAgICAgIChkZWZ1biBteS12ZXJpbG9nLWluc2VydC1oZWxsbyAod2hvKQogICAg ICAgICAgICAgKGluc2VydCAoY29uY2F0IFwiaW5pdGlhbCAkd3JpdGUoXFxcImhlbGxvIFwiIHdo byBcIlxcXCIpO1xcblwiKSkpCiAgICAgICAgIEVuZDoKICAgICAgICAqLwoKVHlwaW5nIFxcW3Zl cmlsb2ctYXV0b10gd2lsbCBjYWxsIG15LXZlcmlsb2ctaW5zZXJ0LWhlbGxvIGFuZApleHBhbmQg dGhlIGFib3ZlIGludG86CgogICAgICAgICAgIC8qQVVUT0lOU0VSVExJU1AobXktdmVyaWxvZy1p bnNlcnQtaGVsbG8gXCJ3b3JsZFwiKSovCiAgICAgICAgICAgLy8gQmVnaW5uaW5nIG9mIGF1dG9t YXRpYyBpbnNlcnQgbGlzcAogICAgICAgICAgIGluaXRpYWwgJHdyaXRlKFwiaGVsbG8gd29ybGRc Iik7CiAgICAgICAgICAgLy8gRW5kIG9mIGF1dG9tYXRpY3MKCllvdSBjYW4gYWxzbyBjYWxsIGFu IGV4dGVybmFsIHByb2dyYW0gYW5kIGluc2VydCB0aGUgcmV0dXJuZWQKdGV4dDoKCiAgICAgICAg ICAgLypBVVRPSU5TRVJUTElTUChpbnNlcnQgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nIFwiZWNo byAvL2hlbGxvXCIpKSovCiAgICAgICAgICAgLy8gQmVnaW5uaW5nIG9mIGF1dG9tYXRpYyBpbnNl cnQgbGlzcAogICAgICAgICAgIC8vaGVsbG8KICAgICAgICAgICAvLyBFbmQgb2YgYXV0b21hdGlj cyIKICAoc2F2ZS1leGN1cnNpb24KICAgIDs7IFBvaW50IGlzIGF0IGVuZCBvZiAvKkFVVE8uLi4q LwogICAgKGxldCogKChpbmRlbnQtcHQgKGN1cnJlbnQtaW5kZW50YXRpb24pKQoJICAgKGNtZC1l bmQtcHQgKHNhdmUtZXhjdXJzaW9uIChzZWFyY2gtYmFja3dhcmQgIikiKQoJCQkJICAgICAgIChm b3J3YXJkLWNoYXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2lu dCkpKSAgOyBDbG9zaW5nIHBhcmVuCgkgICAoY21kLWJlZy1wdCAoc2F2ZS1leGN1cnNpb24gKGdv dG8tY2hhciBjbWQtZW5kLXB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYmFja3dhcmQtc2V4cCAxKSAgOyBJbnNpZGUgY29tbWVudAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkgIDsgQmVnaW5uaW5nIHBhcmVuCgkgICAoY21k IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgY21kLWJlZy1wdCBjbWQtZW5kLXB0KSkp CiAgICAgICh2ZXJpbG9nLWZvcndhcmQtb3ItaW5zZXJ0LWxpbmUpCiAgICAgIDs7IFNvbWUgY29t bWFuZHMgZG9uJ3QgbW92ZSBwb2ludCAobGlrZSBpbnNlcnQtZmlsZSkgc28gd2UgYWx3YXlzCiAg ICAgIDs7IGFkZCB0aGUgYmVnaW4vZW5kIGNvbW1lbnRzLCB0aGVuIGRlbGV0ZSBpdCBpZiBub3Qg bmVlZGVkCiAgICAgICh2ZXJpbG9nLWluc2VydC1pbmRlbnQgIi8vIEJlZ2lubmluZyBvZiBhdXRv bWF0aWMgaW5zZXJ0IGxpc3BcbiIpCiAgICAgICh2ZXJpbG9nLWluc2VydC1pbmRlbnQgIi8vIEVu ZCBvZiBhdXRvbWF0aWNzXG4iKQogICAgICAoZm9yd2FyZC1saW5lIC0xKQogICAgICAoZXZhbCAo cmVhZCBjbWQpKQogICAgICAoZm9yd2FyZC1saW5lIC0xKQogICAgICAoc2V0cSB2ZXJpbG9nLXNj YW4tY2FjaGUtdGljayBuaWwpICA7IENsZWFyIGNhY2hlOyBpbnNlcnRlZCB1bmtub3duIHRleHQK ICAgICAgKHZlcmlsb2ctZGVsZXRlLWVtcHR5LWF1dG8tcGFpcikpKSkKCihkZWZ1biB2ZXJpbG9n LWF1dG8taW5zZXJ0LWxhc3QgKCkKICAiRXhwYW5kIEFVVE9JTlNFUlRMQVNUIHN0YXRlbWVudHMs IGFzIHBhcnQgb2YgXFxbdmVyaWxvZy1hdXRvXS4KVGhlIExpc3AgY29kZSBwcm92aWRlZCBpcyBj YWxsZWQgYWZ0ZXIgYWxsIG90aGVyIEFVVE9TIGhhdmUgYmVlbgpleHBhbmRlZCwgYW5kIHRoZSBM aXNwIGNvZGUgZ2VuZXJhbGx5IHdpbGwgY2FsbCBgaW5zZXJ0JyB0bwppbnNlcnQgdGV4dCBpbnRv IHRoZSBjdXJyZW50IGZpbGUgYmVnaW5uaW5nIG9uIHRoZSBsaW5lIGFmdGVyIHRoZQpBVVRPSU5T RVJUTEFTVC4KCk90aGVyIHRoYW4gd2hlbiBjYWxsZWQgKGFmdGVyIEFVVE9zIGFyZSBleHBhbmRl ZCksIHRoZSBmdW5jdGlvbmFsaXR5CmlzIG90aGVyd2lzZSBpZGVudGljYWwgdG8gQVVUT0lOU0VS VExJU1AgYW5kIGB2ZXJpbG9nLWF1dG8taW5zZXJ0LWxpc3AnIHdoaWNoCmV4ZWN1dGVzIGJlZm9y ZSAoYXMgb3Bwb3NlZCB0byBhZnRlcikgb3RoZXIgQVVUT3MuCgpTZWUgYHZlcmlsb2ctYXV0by1p bnNlcnQtbGlzcCcgZm9yIGV4YW1wbGVzLiIKICAodmVyaWxvZy1hdXRvLWluc2VydC1saXNwKSkK CihkZWZ1biB2ZXJpbG9nLWF1dG8tc2Vuc2Utc2lncyAobW9kZGVjbHMgcHJlc2Vuc2Utc2lncykK ICAiUmV0dXJuIGxpc3Qgb2Ygc2lnbmFscyBmb3IgY3VycmVudCBBVVRPU0VOU0UgYmxvY2suIgog IChsZXQqICgoc2lnc3MgKHNhdmUtZXhjdXJzaW9uCgkJICAoc2VhcmNoLWZvcndhcmQgIikiKQoJ CSAgKHZlcmlsb2ctcmVhZC1hbHdheXMtc2lnbmFscykpKQoJIChzaWctbGlzdCAodmVyaWxvZy1z aWduYWxzLW5vdC1wYXJhbXMKCQkgICAgKHZlcmlsb2ctc2lnbmFscy1ub3QtaW4gKHZlcmlsb2ct YWx3LWdldC1pbnB1dHMgc2lnc3MpCgkJCQkJICAgIChhcHBlbmQgKGFuZCAobm90IHZlcmlsb2ct YXV0by1zZW5zZS1pbmNsdWRlLWlucHV0cykKCQkJCQkJCSAodmVyaWxvZy1hbHctZ2V0LW91dHB1 dHMtZGVsYXllZCBzaWdzcykpCgkJCQkJCSAgICAoYW5kIChub3QgdmVyaWxvZy1hdXRvLXNlbnNl LWluY2x1ZGUtaW5wdXRzKQoJCQkJCQkJICh2ZXJpbG9nLWFsdy1nZXQtb3V0cHV0cy1pbW1lZGlh dGUgc2lnc3MpKQoJCQkJCQkgICAgKHZlcmlsb2ctYWx3LWdldC10ZW1wcyBzaWdzcykKCQkJCQkJ ICAgICh2ZXJpbG9nLWRlY2xzLWdldC1jb25zdHMgbW9kZGVjbHMpCgkJCQkJCSAgICAodmVyaWxv Zy1kZWNscy1nZXQtZ3BhcmFtcyBtb2RkZWNscykKCQkJCQkJICAgIHByZXNlbnNlLXNpZ3MpKSkp KQogICAgc2lnLWxpc3QpKQoKKGRlZnVuIHZlcmlsb2ctYXV0by1zZW5zZSAoKQogICJFeHBhbmQg QVVUT1NFTlNFIHN0YXRlbWVudHMsIGFzIHBhcnQgb2YgXFxbdmVyaWxvZy1hdXRvXS4KUmVwbGFj ZSB0aGUgYWx3YXlzICgvKkFVVE9TRU5TRSovKSBzZW5zaXRpdml0eSBsaXN0ICgvKkFTKi8gZm9y IHNob3J0KQp3aXRoIG9uZSBhdXRvbWF0aWNhbGx5IGRlcml2ZWQgZnJvbSBhbGwgaW5wdXRzIGRl Y2xhcmVkIGluIHRoZSBhbHdheXMKc3RhdGVtZW50LiAgU2lnbmFscyB0aGF0IGFyZSBnZW5lcmF0 ZWQgd2l0aGluIHRoZSBzYW1lIGFsd2F5cyBibG9jayBhcmUgTk9UCnBsYWNlZCBpbnRvIHRoZSBz ZW5zaXRpdml0eSBsaXN0IChzZWUgYHZlcmlsb2ctYXV0by1zZW5zZS1pbmNsdWRlLWlucHV0cycp LgpMb25nIGxpbmVzIGFyZSBzcGxpdCBiYXNlZCBvbiB0aGUgYGZpbGwtY29sdW1uJywgc2VlIFxc W3NldC1maWxsLWNvbHVtbl0uCgpMaW1pdGF0aW9uczoKICBWZXJpbG9nIGRvZXMgbm90IGFsbG93 IG1lbW9yaWVzIChtdWx0aWRpbWVuc2lvbmFsIGFycmF5cykgaW4gc2Vuc2l0aXZpdHkKICBsaXN0 cy4gIEFVVE9TRU5TRSB3aWxsIHRodXMgZXhjbHVkZSB0aGVtLCBhbmQgYWRkIGEgLyptZW1vcnkg b3IqLyBjb21tZW50LgoKQ29uc3RhbnQgc2lnbmFsczoKICBBVVRPU0VOU0UgY2Fubm90IGFsd2F5 cyBkZXRlcm1pbmUgaWYgYSBcXD1gZGVmaW5lIGlzIGEgY29uc3RhbnQgb3IgYSBzaWduYWwKICAo aXQgY291bGQgYmUgaW4gYW4gaW5jbHVkZSBmaWxlIGZvciBleGFtcGxlKS4gIElmIGEgXFw9YGRl ZmluZSBvciBvdGhlciBzaWduYWwKICBpcyBwdXQgaW50byB0aGUgQVVUT1NFTlNFIGxpc3QgYW5k IGlzIG5vdCBkZXNpcmVkLCB1c2UgdGhlIEFVVE9fQ09OU1RBTlQKICBkZWNsYXJhdGlvbiBhbnl3 aGVyZSBpbiB0aGUgbW9kdWxlIChwYXJlbnRoZXNpcyBhcmUgcmVxdWlyZWQpOgoKCS8qIEFVVE9f Q09OU1RBTlQgKCBcXD1gdGhpc19pc19yZWFsbHlfY29uc3RhbnRfZG9udF9hdXRvc2Vuc2VfaXQg KSAqLwoKICBCZXR0ZXIgeWV0LCB1c2UgYSBwYXJhbWV0ZXIsIHdoaWNoIHdpbGwgYmUgdW5kZXJz dG9vZCB0byBiZSBjb25zdGFudAogIGF1dG9tYXRpY2FsbHkuCgpPT3BzIQogIElmIEFVVE9TRU5T RSBtYWtlcyBhIG1pc3Rha2UsIHBsZWFzZSByZXBvcnQgaXQuICAoRmlyc3QgdHJ5IHB1dHRpbmcK ICBhIGJlZ2luL2VuZCBhZnRlciB5b3VyIGFsd2F5cyEpIEFzIGEgd29ya2Fyb3VuZCwgaWYgYSBz aWduYWwgdGhhdAogIHNob3VsZG4ndCBiZSBpbiB0aGUgc2Vuc2l0aXZpdHkgbGlzdCB3YXMsIHVz ZSB0aGUgQVVUT19DT05TVEFOVCBhYm92ZS4KICBJZiBhIHNpZ25hbCBzaG91bGQgYmUgaW4gdGhl IHNlbnNpdGl2aXR5IGxpc3Qgd2Fzbid0LCBwbGFjaW5nIGl0IGJlZm9yZQogIHRoZSAvKkFVVE9T RU5TRSovIGNvbW1lbnQgd2lsbCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgZGVsZXRlZCB3aGVuIHRo ZQogIGF1dG9zIGFyZSB1cGRhdGVkIChvciBhZGRlZCBpZiBpdCBvY2N1cnMgdGhlcmUgYWxyZWFk eSkuCgpBbiBleGFtcGxlOgoKICAgICAgICAgICBhbHdheXMgQCAoLypBUyovKSBiZWdpbgogICAg ICAgICAgICAgIC8qQVVUT19DT05TVEFOVCAoXFw9YGNvbnN0YW50KSAqLwogICAgICAgICAgICAg IG91dGluID0gaW5hIHwgaW5iIHwgXFw9YGNvbnN0YW50OwogICAgICAgICAgICAgIG91dCA9IG91 dGluOwogICAgICAgICAgIGVuZAoKVHlwaW5nIFxcW3Zlcmlsb2ctYXV0b10gd2lsbCBtYWtlIHRo aXMgaW50bzoKCiAgICAgICAgICAgYWx3YXlzIEAgKC8qQVMqL2luYSBvciBpbmIpIGJlZ2luCiAg ICAgICAgICAgICAgLypBVVRPX0NPTlNUQU5UIChcXD1gY29uc3RhbnQpICovCiAgICAgICAgICAg ICAgb3V0aW4gPSBpbmEgfCBpbmIgfCBcXD1gY29uc3RhbnQ7CiAgICAgICAgICAgICAgb3V0ID0g b3V0aW47CiAgICAgICAgICAgZW5kCgpOb3RlIGluIFZlcmlsb2cgMjAwMSwgeW91IGNhbiBvZnRl biBnZXQgdGhlIHNhbWUgcmVzdWx0IGZyb20gdGhlIG5ldyBAKgpvcGVyYXRvci4gIChUaGlzIHdh cyBhZGRlZCB0byB0aGUgbGFuZ3VhZ2UgaW4gcGFydCBkdWUgdG8gQVVUT1NFTlNFISkKCiAgICAg ICAgICAgYWx3YXlzIEAqIGJlZ2luCiAgICAgICAgICAgICAgb3V0aW4gPSBpbmEgfCBpbmIgfCBc XD1gY29uc3RhbnQ7CiAgICAgICAgICAgICAgb3V0ID0gb3V0aW47CiAgICAgICAgICAgZW5kIgog IChzYXZlLWV4Y3Vyc2lvbgogICAgOzsgRmluZCBiZWdpbm5pbmcKICAgIChsZXQqICgoc3RhcnQt cHQgKHNhdmUtZXhjdXJzaW9uCgkJICAgICAgICh2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZC1x dWljayAiKCIgbmlsIHQpCgkJICAgICAgIChwb2ludCkpKQoJICAgKGluZGVudC1wdCAoc2F2ZS1l eGN1cnNpb24KCQkJKG9yIChhbmQgKGdvdG8tY2hhciBzdGFydC1wdCkgKDErIChjdXJyZW50LWNv bHVtbikpKQoJCQkgICAgKGN1cnJlbnQtaW5kZW50YXRpb24pKSkpCgkgICAobW9kaSAodmVyaWxv Zy1tb2RpLWN1cnJlbnQpKQoJICAgKG1vZGRlY2xzICh2ZXJpbG9nLW1vZGktZ2V0LWRlY2xzIG1v ZGkpKQoJICAgKHNpZy1tZW1vcmllcyAodmVyaWxvZy1zaWduYWxzLW1lbW9yeQoJCQkgICh2ZXJp bG9nLWRlY2xzLWdldC12YXJzIG1vZGRlY2xzKSkpCgkgICBzaWctbGlzdCBub3QtZmlyc3QgcHJl c2Vuc2Utc2lncykKICAgICAgOzsgUmVhZCBzaWduYWxzIGluIGFsd2F5cywgZWxpbWluYXRlIG91 dHB1dHMgZnJvbSBzZW5zZSBsaXN0CiAgICAgIChzZXRxIHByZXNlbnNlLXNpZ3MgKHZlcmlsb2ct c2lnbmFscy1mcm9tLXNpZ25hbWUKCQkJICAgKHNhdmUtZXhjdXJzaW9uCgkJCSAgICAgKHZlcmls b2ctcmVhZC1zaWduYWxzIHN0YXJ0LXB0IChwb2ludCkpKSkpCiAgICAgIChzZXRxIHNpZy1saXN0 ICh2ZXJpbG9nLWF1dG8tc2Vuc2Utc2lncyBtb2RkZWNscyBwcmVzZW5zZS1zaWdzKSkKICAgICAg KHdoZW4gc2lnLW1lbW9yaWVzCgkobGV0ICgodGxlbiAobGVuZ3RoIHNpZy1saXN0KSkpCgkgIChz ZXRxIHNpZy1saXN0ICh2ZXJpbG9nLXNpZ25hbHMtbm90LWluIHNpZy1saXN0IHNpZy1tZW1vcmll cykpCgkgIChpZiAobm90IChlcSB0bGVuIChsZW5ndGggc2lnLWxpc3QpKSkgKHZlcmlsb2ctaW5z ZXJ0ICIgLyptZW1vcnkgb3IqLyAiKSkpKQogICAgICAoaWYgKGFuZCBwcmVzZW5zZS1zaWdzICA7 IEFkZCBhICJvciIgaWYgbm90ICIoLi4uLiBvciAvKkFVVE9TRU5TRSovIgoJICAgICAgIChzYXZl LWV4Y3Vyc2lvbiAoZ290by1jaGFyIChwb2ludCkpCgkJCSAgICAgICAodmVyaWxvZy1yZS1zZWFy Y2gtYmFja3dhcmQtcXVpY2sgIlthLXpBLVowLTkkXy4lYF0rIiBzdGFydC1wdCB0KQoJCQkgICAg ICAgKHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkLXF1aWNrICJcXHMtIiBzdGFydC1wdCB0KQoJ CQkgICAgICAgKHdoaWxlIChsb29raW5nLWF0ICJcXHMtYGVuZGlmIikKCQkJCSAodmVyaWxvZy1y ZS1zZWFyY2gtYmFja3dhcmQtcXVpY2sgIlthLXpBLVowLTkkXy4lYF0rIiBzdGFydC1wdCB0KQoJ CQkJICh2ZXJpbG9nLXJlLXNlYXJjaC1iYWNrd2FyZC1xdWljayAiXFxzLSIgc3RhcnQtcHQgdCkp CgkJCSAgICAgICAobm90IChsb29raW5nLWF0ICJcXHMtb3JcXGIiKSkpKQoJICAoc2V0cSBub3Qt Zmlyc3QgdCkpCiAgICAgIChzZXRxIHNpZy1saXN0IChzb3J0IHNpZy1saXN0ICMndmVyaWxvZy1z aWduYWxzLXNvcnQtY29tcGFyZSkpCiAgICAgICh3aGlsZSBzaWctbGlzdAoJKGNvbmQgKCg+ICgr IDQgKGN1cnJlbnQtY29sdW1uKSAobGVuZ3RoICh2ZXJpbG9nLXNpZy1uYW1lIChjYXIgc2lnLWxp c3QpKSkpIGZpbGwtY29sdW1uKSA7KzQgZm9yIHdpZHRoIG9mIG9yCgkgICAgICAgKGluc2VydCAi XG4iKQoJICAgICAgIChpbmRlbnQtdG8gaW5kZW50LXB0KQoJICAgICAgIChpZiBub3QtZmlyc3Qg KGluc2VydCAib3IgIikpKQoJICAgICAgKG5vdC1maXJzdCAoaW5zZXJ0ICIgb3IgIikpKQoJKGlu c2VydCAodmVyaWxvZy1zaWctbmFtZSAoY2FyIHNpZy1saXN0KSkpCgkoc2V0cSBzaWctbGlzdCAo Y2RyIHNpZy1saXN0KQoJICAgICAgbm90LWZpcnN0IHQpKSkpKQoKKGRlZnVuIHZlcmlsb2ctYXV0 by1yZXNldCAoKQogICJFeHBhbmQgQVVUT1JFU0VUIHN0YXRlbWVudHMsIGFzIHBhcnQgb2YgXFxb dmVyaWxvZy1hdXRvXS4KUmVwbGFjZSB0aGUgLypBVVRPUkVTRVQqLyBjb21tZW50IHdpdGggY29k ZSB0byBpbml0aWFsaXplIGFsbApyZWdpc3RlcnMgc2V0IGVsc2V3aGVyZSBpbiB0aGUgYWx3YXlz IGJsb2NrLgoKTGltaXRhdGlvbnM6CiAgQVVUT1JFU0VUIHdpbGwgbm90IGNsZWFyIG1lbW9yaWVz LgoKICBBVVRPUkVTRVQgdXNlcyA8PSBpZiB0aGUgc2lnbmFsIGhhcyBhIDw9IGFzc2lnbm1lbnQg aW4gdGhlIGJsb2NrLAogIGVsc2UgaXQgdXNlcyA9LgoKICBJZiA8PSBpcyB1c2VkLCBhbGwgPSBh c3NpZ25lZCB2YXJpYWJsZXMgYXJlIGlnbm9yZWQgaWYKICBgdmVyaWxvZy1hdXRvLXJlc2V0LWJs b2NraW5nLWluLW5vbicgaXMgbmlsOyB0aGV5IGFyZSBwcmVzdW1lZAogIHRvIGJlIHRlbXBvcmFy aWVzLgoKLypBVVRPUkVTRVQqLyBwcmVzdW1lcyB0aGF0IGFueSBzaWduYWxzIG1lbnRpb25lZCBi ZXR3ZWVuIHRoZSBwcmV2aW91cwpiZWdpbi9jYXNlL2lmIHN0YXRlbWVudCBhbmQgdGhlIEFVVE9S RVNFVCBjb21tZW50IGFyZSBiZWluZyByZXNldCBtYW51YWxseQphbmQgc2hvdWxkIG5vdCBiZSBh dXRvbWF0aWNhbGx5IHJlc2V0LiAgVGhpcyBpbmNsdWRlcyBvbWl0dGluZyBhbnkgc2lnbmFscwp1 c2VkIG9uIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgYXNzaWdubWVudHMuCgpCeSBkZWZhdWx0LCBB VVRPUkVTRVQgd2lsbCBpbmNsdWRlIHRoZSB3aWR0aCBvZiB0aGUgc2lnbmFsIGluIHRoZQphdXRv cywgU3lzdGVtVmVyaWxvZyBkZXNpZ25zIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzLiAgVG8gY29u dHJvbAp0aGlzIGJlaGF2aW9yLCBzZWUgYHZlcmlsb2ctYXV0by1yZXNldC13aWR0aHMnLiAgSW4g c29tZSBjYXNlcwpBVVRPUkVTRVQgbXVzdCB1c2UgYSBcXD0nMCBhc3NpZ25tZW50IGFuZCBpdCB3 aWxsIHByaW50IE5PV0lEVEg7IHVzZQpgdmVyaWxvZy1hdXRvLXJlc2V0LXdpZHRocycgdW5iYXNl ZCB0byBwcmV2ZW50IHRoaXMuCgpBVVRPUkVTRVQgdGllcyBzaWduYWxzIHRvIGRlYXNzZXJ0ZWQs IHdoaWNoIGlzIHByZXN1bWVkIHRvIGJlIHplcm8uClNpZ25hbHMgdGhhdCBtYXRjaCBgdmVyaWxv Zy1hY3RpdmUtbG93LXJlZ2V4cCcgd2lsbCBiZSBkZWFzc2VydGVkIGJ5IHR5aW5nCnRoZW0gdG8g YSBvbmUuCgpBVVRPUkVTRVQgbWF5IHRyeSB0byByZXNldCBhcnJheXMgb3Igc3RydWN0dXJlcyB0 aGF0IGNhbm5vdCBiZQpyZXNldCBieSBhIHNpbXBsZSBhc3NpZ25tZW50LCByZXN1bHRpbmcgaW4g Y29tcGlsZSBlcnJvcnMuICBUaGlzCmlzIGEgZmVhdHVyZSB0byBiZSB0YWtlbiBhcyBhIGhpbnQg dGhhdCB5b3UgbmVlZCB0byByZXNldCB0aGVzZQpzaWduYWxzIG1hbnVhbGx5IChvciBwdXQgdGhl bSBpbnRvIGEgXCJcXD1gaWZkZWYgTkVWRVIgc2lnbmFsPD1cXD1gMDsKXFw9YGVuZGlmXCIgc28g VmVyaWxvZy1Nb2RlIGlnbm9yZXMgdGhlbS4pCgpBbiBleGFtcGxlOgoKICAgICAgICBtb2R1bGUg RXhhbXBSZXNldCAoKTsKICAgICAgICAgICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdl IHJlc2V0X2wpIGJlZ2luCiAgICAgICAgICAgICAgaWYgKCFyZXNldF9sKSBiZWdpbgogICAgICAg ICAgICAgICAgICBjIDw9IDE7CiAgICAgICAgICAgICAgICAgIC8qQVVUT1JFU0VUKi8KICAgICAg ICAgICAgICBlbmQKICAgICAgICAgICAgICBlbHNlIGJlZ2luCiAgICAgICAgICAgICAgICAgIGEg PD0gaW5fYTsKICAgICAgICAgICAgICAgICAgYiA8PSBpbl9iOwogICAgICAgICAgICAgICAgICBj IDw9IGluX2M7CiAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgZW5kCiAgICAgICAgZW5kbW9k dWxlCgpUeXBpbmcgXFxbdmVyaWxvZy1hdXRvXSB3aWxsIG1ha2UgdGhpcyBpbnRvOgoKICAgICAg ICAuLi4KICAgICAgICAgICAgICAgICAgYyA8PSAxOwogICAgICAgICAgICAgICAgICAvKkFVVE9S RVNFVCovCiAgICAgICAgICAgICAgICAgIC8vIEJlZ2lubmluZyBvZiBhdXRvcmVzZXQgZm9yIHVu aW5pdGlhbGl6ZWQgZmxvcHMKICAgICAgICAgICAgICAgICAgYSA8PSAxJ2gwOwogICAgICAgICAg ICAgICAgICBiIDw9IDEnaDA7CiAgICAgICAgICAgICAgICAgIC8vIEVuZCBvZiBhdXRvbWF0aWNz CiAgICAgICAgLi4uIgoKICAoaW50ZXJhY3RpdmUpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICA7OyBG aW5kIGJlZ2lubmluZwogICAgKGxldCogKChpbmRlbnQtcHQgKGN1cnJlbnQtaW5kZW50YXRpb24p KQoJICAgKG1vZGkgKHZlcmlsb2ctbW9kaS1jdXJyZW50KSkKCSAgIChtb2RkZWNscyAodmVyaWxv Zy1tb2RpLWdldC1kZWNscyBtb2RpKSkKCSAgIChhbGwtbGlzdCAodmVyaWxvZy1kZWNscy1nZXQt c2lnbmFscyBtb2RkZWNscykpCgkgICBzaWdzcyBzaWctbGlzdCBkbHktbGlzdCBwcmVyZXNldC1z aWdzKQogICAgICA7OyBSZWFkIHNpZ25hbHMgaW4gYWx3YXlzLCBlbGltaW5hdGUgb3V0cHV0cyBm cm9tIHJlc2V0IGxpc3QKICAgICAgKHNldHEgcHJlcmVzZXQtc2lncyAodmVyaWxvZy1zaWduYWxz LWZyb20tc2lnbmFtZQoJCQkgICAoc2F2ZS1leGN1cnNpb24KCQkJICAgICAodmVyaWxvZy1yZWFk LXNpZ25hbHMKCQkJICAgICAgKHNhdmUtZXhjdXJzaW9uCgkJCQkodmVyaWxvZy1yZS1zZWFyY2gt YmFja3dhcmQtcXVpY2sKCQkJCSAiXFwoQFxcfFxcPFxcKGJlZ2luXFx8aWZcXHxjYXNlW3h6XT9c XHxhbHdheXNcXChfbGF0Y2hcXHxfZmZcXHxfY29tYlxcKT9cXClcXD5cXCkiIG5pbCB0KQoJCQkJ KHBvaW50KSkKCQkJICAgICAgKHBvaW50KSkpKSkKICAgICAgKHNhdmUtZXhjdXJzaW9uCgkodmVy aWxvZy1yZS1zZWFyY2gtYmFja3dhcmQtcXVpY2sgIlxcKEBcXHxcXDxcXChhbHdheXNcXChfbGF0 Y2hcXHxfZmZcXHxfY29tYlxcKT9cXClcXD5cXCkiIG5pbCB0KQogICAgICAgIChzZXRxIHNpZ3Nz ICh2ZXJpbG9nLXJlYWQtYWx3YXlzLXNpZ25hbHMpKSkKICAgICAgKHNldHEgZGx5LWxpc3QgKHZl cmlsb2ctYWx3LWdldC1vdXRwdXRzLWRlbGF5ZWQgc2lnc3MpKQogICAgICAoc2V0cSBzaWctbGlz dCAodmVyaWxvZy1zaWduYWxzLW5vdC1pbi1zdHJ1Y3QKCQkgICAgICAoYXBwZW5kCgkJICAgICAg ICh2ZXJpbG9nLWFsdy1nZXQtb3V0cHV0cy1kZWxheWVkIHNpZ3NzKQoJCSAgICAgICAod2hlbiAo b3IgKG5vdCAodmVyaWxvZy1hbHctZ2V0LXVzZXMtZGVsYXllZCBzaWdzcykpCgkJCQkgdmVyaWxv Zy1hdXRvLXJlc2V0LWJsb2NraW5nLWluLW5vbikKCQkJICh2ZXJpbG9nLWFsdy1nZXQtb3V0cHV0 cy1pbW1lZGlhdGUgc2lnc3MpKSkKCQkgICAgICAoYXBwZW5kCgkJICAgICAgICh2ZXJpbG9nLWFs dy1nZXQtdGVtcHMgc2lnc3MpCgkJICAgICAgIHByZXJlc2V0LXNpZ3MpKSkKICAgICAgKHNldHEg c2lnLWxpc3QgKHNvcnQgc2lnLWxpc3QgIyd2ZXJpbG9nLXNpZ25hbHMtc29ydC1jb21wYXJlKSkK ICAgICAgKHdoZW4gc2lnLWxpc3QKCShpbnNlcnQgIlxuIik7CgkodmVyaWxvZy1pbnNlcnQtaW5k ZW50ICIvLyBCZWdpbm5pbmcgb2YgYXV0b3Jlc2V0IGZvciB1bmluaXRpYWxpemVkIGZsb3BzXG4i KTsKCSh3aGlsZSBzaWctbGlzdAogICAgICAgICAgKGxldCAoKHNpZyAob3IgKGFzc29jICh2ZXJp bG9nLXNpZy1uYW1lIChjYXIgc2lnLWxpc3QpKSBhbGwtbGlzdCkgIDsgQXMgc2lnLWxpc3QgaGFz IG5vIHdpZHRocwoJCQkgKGNhciBzaWctbGlzdCkpKSkKCSAgICAoaW5kZW50LXRvIGluZGVudC1w dCkKCSAgICAoaW5zZXJ0ICh2ZXJpbG9nLXNpZy1uYW1lIHNpZykKCQkgICAgKGlmIChhc3NvYyAo dmVyaWxvZy1zaWctbmFtZSBzaWcpIGRseS1saXN0KQoJCQkoY29uY2F0ICIgPD0gIiB2ZXJpbG9n LWFzc2lnbm1lbnQtZGVsYXkpCgkJICAgICAgIiA9ICIpCgkJICAgICh2ZXJpbG9nLXNpZy10aWVv ZmYgc2lnKQoJCSAgICAiO1xuIikKCSAgICAoc2V0cSBzaWctbGlzdCAoY2RyIHNpZy1saXN0KSkp KQoJKHZlcmlsb2ctaW5zZXJ0LWluZGVudCAiLy8gRW5kIG9mIGF1dG9tYXRpY3MiKSkpKSkKCihk ZWZ1biB2ZXJpbG9nLWF1dG8tdGllb2ZmICgpCiAgIkV4cGFuZCBBVVRPVElFT0ZGIHN0YXRlbWVu dHMsIGFzIHBhcnQgb2YgXFxbdmVyaWxvZy1hdXRvXS4KUmVwbGFjZSB0aGUgLypBVVRPVElFT0ZG Ki8gY29tbWVudCB3aXRoIGNvZGUgdG8gd2lyZS10aWUgYWxsIHVudXNlZCBvdXRwdXQKc2lnbmFs cyB0byBkZWFzc2VydGVkLgoKLypBVVRPVElFT0ZGKi8gaXMgdXNlZCB0byBtYWtlIHN0dWIgbW9k dWxlczsgbW9kdWxlcyB0aGF0IGhhdmUKdGhlIHNhbWUgaW5wdXQvb3V0cHV0IGxpc3QgYXMgYW5v dGhlciBtb2R1bGUsIGJ1dCBubyBpbnRlcm5hbHMuClNwZWNpZmljYWxseSwgaXQgZmluZHMgYWxs IG91dHB1dHMgaW4gdGhlIG1vZHVsZSwgYW5kIGlmIHRoYXQKaW5wdXQgaXMgbm90IG90aGVyd2lz ZSBkZWNsYXJlZCBhcyBhIHJlZ2lzdGVyIG9yIHdpcmUsIG5vciBjb21lcwpmcm9tIGEgQVVUT0lO U1Qgc3VibW9kdWxlJ3Mgb3V0cHV0LCBjcmVhdGVzIGEgdGllb2ZmLiBBVVRPVElFT0ZGCmRvZXMg bm90IGV4YW1pbmUgYXNzaWdubWVudHMgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgYWxyZWFkeSBkcml2 ZW4uCgpBVVRPUkVTRVQgdGllcyBzaWduYWxzIHRvIGRlYXNzZXJ0ZWQsIHdoaWNoIGlzIHByZXN1 bWVkIHRvIGJlIHplcm8uClNpZ25hbHMgdGhhdCBtYXRjaCBgdmVyaWxvZy1hY3RpdmUtbG93LXJl Z2V4cCcgd2lsbCBiZSBkZWFzc2VydGVkIGJ5IHR5aW5nCnRoZW0gdG8gYSBvbmUuCgpZb3UgY2Fu IGFkZCBzaWduYWxzIHlvdSBkbyBub3Qgd2FudCBpbmNsdWRlZCBpbiBBVVRPVElFT0ZGIHdpdGgK YHZlcmlsb2ctYXV0by10aWVvZmYtaWdub3JlLXJlZ2V4cCcuCgpgdmVyaWxvZy1hdXRvLXdpcmUt dHlwZScgbWF5IGJlIHVzZWQgdG8gY2hhbmdlIHRoZSBkYXRhdHlwZSBvZgp0aGUgZGVjbGFyYXRp b25zLgoKYHZlcmlsb2ctYXV0by1yZXNldC13aWR0aHMnIG1heSBiZSB1c2VkIHRvIGNoYW5nZSBo b3cgdGhlIHRpZW9mZgp2YWx1ZSdzIHdpZHRoIGlzIGdlbmVyYXRlZC4KCkFuIGV4YW1wbGUgb2Yg bWFraW5nIGEgc3R1YiBmb3IgYW5vdGhlciBtb2R1bGU6CgogICAgICAgIG1vZHVsZSBFeGFtcE1h aW4KICAgICAgICAgICMocGFyYW1ldGVyIFApCiAgICAgICAgICAoaW5wdXQgaSwgb3V0cHV0IG8s IGlub3V0IGlvKTsKICAgICAgICBlbmRtb2R1bGUKCiAgICAgICAgbW9kdWxlIEV4YW1wU3R1YiAo LypBVVRPQVJHKi8pOwogICAgICAgICAgICAvKkFVVE9JTk9VVFBBUkFNKFwiRXhhbXBNYWluXCIp Ki8KICAgICAgICAgICAgLypBVVRPSU5PVVRNT0RVTEUoXCJFeGFtcE1haW5cIikqLwoKICAgICAg ICAgICAgLypBVVRPVElFT0ZGKi8KCiAgICAgICAgICAgIC8vIHZlcmlsYXRvciBsaW50X29mZiBV TlVTRUQKICAgICAgICAgICAgd2lyZSBfdW51c2VkX29rID0gJnsxXFw9J2IwLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qQVVUT1VOVVNFRCovCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMVxcPSdiMH07CiAgICAgICAgICAgIC8vIHZlcmlsYXRvciBsaW50X29uICBV TlVTRUQKICAgICAgICBlbmRtb2R1bGUKClR5cGluZyBcXFt2ZXJpbG9nLWF1dG9dIHdpbGwgbWFr ZSB0aGlzIGludG86CgogICAgICAgIC4uLgogICAgICAgIC8qQVVUT1RJRU9GRiovCiAgICAgICAg Ly8gQmVnaW5uaW5nIG9mIGF1dG9tYXRpYyB0aWVvZmZzCiAgICAgICAgd2lyZSBbMjowXSBvID0g M1xcPSdiMDsKICAgICAgICAvLyBFbmQgb2YgYXV0b21hdGljcwogICAgICAgIC4uLiIKICAoaW50 ZXJhY3RpdmUpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICA7OyBGaW5kIGJlZ2lubmluZwogICAgKGxl dCogKChpbmRlbnQtcHQgKGN1cnJlbnQtaW5kZW50YXRpb24pKQoJICAgKG1vZGkgKHZlcmlsb2ct bW9kaS1jdXJyZW50KSkKCSAgIChtb2RkZWNscyAodmVyaWxvZy1tb2RpLWdldC1kZWNscyBtb2Rp KSkKCSAgIChtb2RzdWJkZWNscyAodmVyaWxvZy1tb2RpLWdldC1zdWItZGVjbHMgbW9kaSkpCgkg ICAoc2lnLWxpc3QgKHZlcmlsb2ctc2lnbmFscy1ub3QtaW4KCQkgICAgICAodmVyaWxvZy1kZWNs cy1nZXQtb3V0cHV0cyBtb2RkZWNscykKCQkgICAgICAoYXBwZW5kICh2ZXJpbG9nLWRlY2xzLWdl dC12YXJzIG1vZGRlY2xzKQoJCQkgICAgICAodmVyaWxvZy1kZWNscy1nZXQtYXNzaWducyBtb2Rk ZWNscykKCQkJICAgICAgKHZlcmlsb2ctZGVjbHMtZ2V0LWNvbnN0cyBtb2RkZWNscykKCQkJICAg ICAgKHZlcmlsb2ctZGVjbHMtZ2V0LWdwYXJhbXMgbW9kZGVjbHMpCgkJCSAgICAgICh2ZXJpbG9n LXN1YmRlY2xzLWdldC1pbnRlcmZhY2VkIG1vZHN1YmRlY2xzKQoJCQkgICAgICAodmVyaWxvZy1z dWJkZWNscy1nZXQtb3V0cHV0cyBtb2RzdWJkZWNscykKCQkJICAgICAgKHZlcmlsb2ctc3ViZGVj bHMtZ2V0LWlub3V0cyBtb2RzdWJkZWNscykpKSkpCiAgICAgIChzZXRxIHNpZy1saXN0ICh2ZXJp bG9nLXNpZ25hbHMtbm90LW1hdGNoaW5nLXJlZ2V4cAoJCSAgICAgIHNpZy1saXN0IHZlcmlsb2ct YXV0by10aWVvZmYtaWdub3JlLXJlZ2V4cCkpCiAgICAgICh3aGVuIHNpZy1saXN0CgkodmVyaWxv Zy1mb3J3YXJkLW9yLWluc2VydC1saW5lKQoJKHZlcmlsb2ctaW5zZXJ0LWluZGVudCAiLy8gQmVn aW5uaW5nIG9mIGF1dG9tYXRpYyB0aWVvZmZzIChmb3IgdGhpcyBtb2R1bGUncyB1bnRlcm1pbmF0 ZWQgb3V0cHV0cylcbiIpCgkoc2V0cSBzaWctbGlzdCAoc29ydCAoY29weS1hbGlzdCBzaWctbGlz dCkgIyd2ZXJpbG9nLXNpZ25hbHMtc29ydC1jb21wYXJlKSkKCSh2ZXJpbG9nLW1vZGktY2FjaGUt YWRkLXZhcnMgbW9kaSBzaWctbGlzdCkgIDsgQmVmb3JlIHdlIHRyYXNoIGxpc3QKCSh3aGlsZSBz aWctbGlzdAoJICAobGV0ICgoc2lnIChjYXIgc2lnLWxpc3QpKSkKCSAgICAoY29uZCAoKGVxdWFs IHZlcmlsb2ctYXV0by10aWVvZmYtZGVjbGFyYXRpb24gImFzc2lnbiIpCgkJICAgKGluZGVudC10 byBpbmRlbnQtcHQpCgkJICAgKGluc2VydCAiYXNzaWduICIgKHZlcmlsb2ctc2lnLW5hbWUgc2ln KSkpCgkJICAodAoJCSAgICh2ZXJpbG9nLWluc2VydC1vbmUtZGVmaW5pdGlvbiBzaWcgdmVyaWxv Zy1hdXRvLXRpZW9mZi1kZWNsYXJhdGlvbiBpbmRlbnQtcHQpKSkKCSAgICAoaW5kZW50LXRvICht YXggNDggKCsgaW5kZW50LXB0IDQwKSkpCgkgICAgKGluc2VydCAiPSAiICh2ZXJpbG9nLXNpZy10 aWVvZmYgc2lnKQoJCSAgICAiO1xuIikKCSAgICAoc2V0cSBzaWctbGlzdCAoY2RyIHNpZy1saXN0 KSkpKQoJKHZlcmlsb2ctaW5zZXJ0LWluZGVudCAiLy8gRW5kIG9mIGF1dG9tYXRpY3NcbiIpKSkp KQoKKGRlZnVuIHZlcmlsb2ctYXV0by11bmRlZiAoKQogICJFeHBhbmQgQVVUT1VOREVGIHN0YXRl bWVudHMsIGFzIHBhcnQgb2YgXFxbdmVyaWxvZy1hdXRvXS4KVGFrZSBhbnkgXFw9YGRlZmluZXMg c2luY2UgdGhlIGxhc3QgQVVUT1VOREVGIGluIHRoZSBjdXJyZW50IGZpbGUKYW5kIGNyZWF0ZSBc XD1gdW5kZWZzIGZvciB0aGVtLiAgVGhpcyBpcyB1c2VkIHRvIGluc3VyZSB0aGF0CmZpbGUtbG9j YWwgZGVmaW5lcyBkbyBub3QgcG9sbHV0ZSB0aGUgZ2xvYmFsIFxcPWBkZWZpbmUgbmFtZSBzcGFj ZS4KCkxpbWl0YXRpb25zOgogIEFVVE9VTkRFRiBwcmVzdW1lcyBhbnkgaWRlbnRpZmllciBmb2xs b3dpbmcgXFw9YGRlZmluZSBpcyB0aGUKICBuYW1lIG9mIGEgZGVmaW5lLiAgQW55IFxcPWBpZmRl ZnMgYXJlIGlnbm9yZWQuCgogIEFVVE9VTkRFRiBzdXBwcmVzc2VzIGNyZWF0aW5nIGFuIFxcPWB1 bmRlZiBmb3IgYW55IGRlZmluZSB0aGF0IHdhcwogIFxcPWB1bmRlZmVkIGJlZm9yZSB0aGUgQVVU T1VOREVGLiAgVGhpcyBtYXkgYmUgdXNlZCB0byB3b3JrIGFyb3VuZAogIHRoZSBpZ25vcmluZyBv ZiBcXD1gaWZkZWZzIGFzIHNob3duIGJlbG93LgoKQW4gZXhhbXBsZToKCiAgICAgICAgXFw9YGRl ZmluZSBYWF9GT08KICAgICAgICBcXD1gZGVmaW5lIE1fQkFSKHgpCiAgICAgICAgXFw9YGRlZmlu ZSBNX0JBWgogICAgICAgIC4uLgogICAgICAgIFxcPWBpZmRlZiBORVZFUgogICAgICAgICAgXFw9 YHVuZGVmIE1fQkFaICAgICAgIC8vIEVtYWNzIHdpbGwgc2VlIHRoaXMgYW5kIG5vdCBcXD1gdW5k ZWYgTV9CQVoKICAgICAgICBcXD1gZW5kaWYKICAgICAgICAuLi4KICAgICAgICAvKkFVVE9VTkRF RiovCgpUeXBpbmcgXFxbdmVyaWxvZy1hdXRvXSB3aWxsIG1ha2UgdGhpcyBpbnRvOgoKICAgICAg ICAuLi4KICAgICAgICAvKkFVVE9VTkRFRiovCiAgICAgICAgLy8gQmVnaW5uaW5nIG9mIGF1dG9t YXRpYyB1bmRlZnMKICAgICAgICBcXD1gdW5kZWYgTV9CQVIKICAgICAgICBcXD1gdW5kZWYgWFhf Rk9PCiAgICAgICAgLy8gRW5kIG9mIGF1dG9tYXRpY3MKCllvdSBtYXkgYWxzbyBwcm92aWRlIGFu IG9wdGlvbmFsIHJlZ3VsYXIgZXhwcmVzc2lvbiwgaW4gd2hpY2ggY2FzZSBvbmx5CmRlZmluZXMg dGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aWxsIGJlIHVuZGVmZWQuIgogIChzYXZlLWV4Y3Vyc2lv bgogICAgKGxldCogKChwYXJhbXMgKHZlcmlsb2ctcmVhZC1hdXRvLXBhcmFtcyAwIDEpKQoJICAg KHJlZ2V4cCAobnRoIDAgcGFyYW1zKSkKCSAgIChpbmRlbnQtcHQgKGN1cnJlbnQtaW5kZW50YXRp b24pKQoJICAgKGVuZC1wdCAocG9pbnQpKQoJICAgZGVmcyBkZWYpCiAgICAgIChzYXZlLWV4Y3Vy c2lvbgoJOzsgU2NhbiBmcm9tIHN0YXJ0IG9mIGZpbGUsIG9yIGxhc3QgQVVUT1VOREVGCgkob3Ig KHZlcmlsb2ctcmUtc2VhcmNoLWJhY2t3YXJkLXF1aWNrICIvXFwqQVVUT1VOREVGXFw+IiBlbmQt cHQgdCkKCSAgICAoZ290by1jaGFyIChwb2ludC1taW4pKSkKCSh3aGlsZSAodmVyaWxvZy1yZS1z ZWFyY2gtZm9yd2FyZC1xdWljawoJCSJgXFwoZGVmaW5lXFx8dW5kZWZcXClcXHMtKlxcKFthLXpB LVpfXVthLXpBLVpfMC05XSpcXCkiIGVuZC1wdCB0KQoJICAoY29uZCAoKGVxdWFsIChtYXRjaC1z dHJpbmctbm8tcHJvcGVydGllcyAxKSAiZGVmaW5lIikKCQkgKHNldHEgZGVmIChtYXRjaC1zdHJp bmctbm8tcHJvcGVydGllcyAyKSkKCQkgKHdoZW4gKGFuZCAob3IgKG5vdCByZWdleHApCgkJCQko c3RyaW5nLW1hdGNoIHJlZ2V4cCBkZWYpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5v dCAobWVtYmVyIGRlZiBkZWZzKSkpICA7IGRlbGV0ZS1kdXBzIG5vdCBpbiAyMS4xCgkJICAgKHNl dHEgZGVmcyAoY29ucyBkZWYgZGVmcykpKSkKCQkodAoJCSAoc2V0cSBkZWZzIChkZWxldGUgKG1h dGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDIpIGRlZnMpKSkpKSkKICAgICAgOzsgSW5zZXJ0CiAg ICAgIChzZXRxIGRlZnMgKHNvcnQgZGVmcyAnc3RyaW5nPCkpCiAgICAgICh3aGVuIGRlZnMKCSh2 ZXJpbG9nLWZvcndhcmQtb3ItaW5zZXJ0LWxpbmUpCgkodmVyaWxvZy1pbnNlcnQtaW5kZW50ICIv LyBCZWdpbm5pbmcgb2YgYXV0b21hdGljIHVuZGVmc1xuIikKCSh3aGlsZSBkZWZzCgkgICh2ZXJp bG9nLWluc2VydC1pbmRlbnQgImB1bmRlZiAiIChjYXIgZGVmcykgIlxuIikKCSAgKHNldHEgZGVm cyAoY2RyIGRlZnMpKSkKCSh2ZXJpbG9nLWluc2VydC1pbmRlbnQgIi8vIEVuZCBvZiBhdXRvbWF0 aWNzXG4iKSkpKSkKCihkZWZ1biB2ZXJpbG9nLWF1dG8tdW51c2VkICgpCiAgIkV4cGFuZCBBVVRP VU5VU0VEIHN0YXRlbWVudHMsIGFzIHBhcnQgb2YgXFxbdmVyaWxvZy1hdXRvXS4KUmVwbGFjZSB0 aGUgLypBVVRPVU5VU0VEKi8gY29tbWVudCB3aXRoIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2Yg YWxsIHVudXNlZAppbnB1dCBhbmQgaW5vdXQgc2lnbmFscy4KCi8qQVVUT1VOVVNFRCovIGlzIHVz ZWQgdG8gbWFrZSBzdHViIG1vZHVsZXM7IG1vZHVsZXMgdGhhdCBoYXZlIHRoZSBzYW1lCmlucHV0 L291dHB1dCBsaXN0IGFzIGFub3RoZXIgbW9kdWxlLCBidXQgbm8gaW50ZXJuYWxzLiAgU3BlY2lm aWNhbGx5LCBpdApmaW5kcyBhbGwgaW5wdXRzIGFuZCBpbm91dHMgaW4gdGhlIG1vZHVsZSwgYW5k IGlmIHRoYXQgaW5wdXQgaXMgbm90IG90aGVyd2lzZQp1c2VkLCBhZGRzIGl0IHRvIGEgY29tbWEg c2VwYXJhdGVkIGxpc3QuCgpUaGUgY29tbWEgc2VwYXJhdGVkIGxpc3QgaXMgaW50ZW5kZWQgdG8g YmUgdXNlZCB0byBjcmVhdGUgYSBfdW51c2VkX29rCnNpZ25hbC4gIFVzaW5nIHRoZSBleGFjdCBu YW1lIFwiX3VudXNlZF9va1wiIGZvciBuYW1lIG9mIHRoZSB0ZW1wb3JhcnkKc2lnbmFsIGlzIHJl Y29tbWVuZGVkIGFzIGl0IHdpbGwgaW5zdXJlIG1heGltdW0gZm9yd2FyZCBjb21wYXRpYmlsaXR5 LCBpdAphbHNvIG1ha2VzIGxpbnQgd2FybmluZ3MgZWFzeSB0byB1bmRlcnN0YW5kOyBpZ25vcmUg YW55IHVudXNlZCB3YXJuaW5ncwp3aXRoIFwidW51c2VkXCIgaW4gdGhlIHNpZ25hbCBuYW1lLgoK VG8gcmVkdWNlIHNpbXVsYXRpb24gdGltZSwgdGhlIF91bnVzZWRfb2sgc2lnbmFsIHNob3VsZCBi ZSBmb3JjZWQgdG8gYQpjb25zdGFudCB0byBwcmV2ZW50IHdpZ2dsaW5nLiAgVGhlIGVhc2llc3Qg dGhpbmcgdG8gZG8gaXMgdXNlIGEKcmVkdWN0aW9uLWFuZCB3aXRoIDFcXD0nYjAgYXMgc2hvd24u CgpUaGlzIHdheSBhbGwgdW51c2VkIHNpZ25hbHMgYXJlIGluIG9uZSBwbGFjZSwgbWFraW5nIGl0 IGNvbnZlbmllbnQgdG8gYWRkCnlvdXIgdG9vbCdzIHNwZWNpZmljIHByYWdtYXMgYXJvdW5kIHRo ZSBhc3NpZ25tZW50IHRvIGRpc2FibGUgYW55IHVudXNlZAp3YXJuaW5ncy4KCllvdSBjYW4gYWRk IHNpZ25hbHMgeW91IGRvIG5vdCB3YW50IGluY2x1ZGVkIGluIEFVVE9VTlVTRUQgd2l0aApgdmVy aWxvZy1hdXRvLXVudXNlZC1pZ25vcmUtcmVnZXhwJy4KCkFuIGV4YW1wbGUgb2YgbWFraW5nIGEg c3R1YiBmb3IgYW5vdGhlciBtb2R1bGU6CgogICAgICAgIG1vZHVsZSBFeGFtcE1haW4KICAgICAg ICAgIChpbnB1dCB1bnVzZWRfaW5wdXRfYSwgaW5wdXQgdW51c2VkX2lucHV0X2IpOwogICAgICAg IGVuZG1vZHVsZQoKICAgICAgICBtb2R1bGUgRXhhbXBTdHViMiAoLypBVVRPQVJHKi8pOwogICAg ICAgICAgICAvKkFVVE9JTk9VVFBBUkFNKFwiRXhhbXBNYWluXCIpKi8KICAgICAgICAgICAgLypB VVRPSU5PVVRNT0RVTEUoXCJFeGFtcE1haW5cIikqLwoKICAgICAgICAgICAgLypBVVRPVElFT0ZG Ki8KCiAgICAgICAgICAgIC8vIHZlcmlsYXRvciBsaW50X29mZiBVTlVTRUQKICAgICAgICAgICAg d2lyZSBfdW51c2VkX29rID0gJnsxXFw9J2IwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qQVVUT1VOVVNFRCovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxcPSdi MH07CiAgICAgICAgICAgIC8vIHZlcmlsYXRvciBsaW50X29uICBVTlVTRUQKICAgICAgICBlbmRt b2R1bGUKClR5cGluZyBcXFt2ZXJpbG9nLWF1dG9dIHdpbGwgbWFrZSB0aGlzIGludG86CgogICAg ICAgICAgICAuLi4KICAgICAgICAgICAgLy8gdmVyaWxhdG9yIGxpbnRfb2ZmIFVOVVNFRAogICAg ICAgICAgICB3aXJlIF91bnVzZWRfb2sgPSAmezFcXD0nYjAsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLypBVVRPVU5VU0VEKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvLyBCZWdpbm5pbmcgb2YgYXV0b21hdGljcwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVudXNlZF9pbnB1dF9hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNl ZF9pbnB1dF9iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5kIG9mIGF1dG9t YXRpY3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXFw9J2IwfTsKICAgICAgICAg ICAgLy8gdmVyaWxhdG9yIGxpbnRfb24gIFVOVVNFRAogICAgICAgIGVuZG1vZHVsZSIKICAoaW50 ZXJhY3RpdmUpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICA7OyBGaW5kIGJlZ2lubmluZwogICAgKGxl dCogKChpbmRlbnQtcHQgKHByb2duIChzZWFyY2gtYmFja3dhcmQgIi8qIikgKGN1cnJlbnQtY29s dW1uKSkpCgkgICAobW9kaSAodmVyaWxvZy1tb2RpLWN1cnJlbnQpKQoJICAgKG1vZGRlY2xzICh2 ZXJpbG9nLW1vZGktZ2V0LWRlY2xzIG1vZGkpKQoJICAgKG1vZHN1YmRlY2xzICh2ZXJpbG9nLW1v ZGktZ2V0LXN1Yi1kZWNscyBtb2RpKSkKCSAgIChzaWctbGlzdCAodmVyaWxvZy1zaWduYWxzLW5v dC1pbgoJCSAgICAgIChhcHBlbmQgKHZlcmlsb2ctZGVjbHMtZ2V0LWlucHV0cyBtb2RkZWNscykK CQkJICAgICAgKHZlcmlsb2ctZGVjbHMtZ2V0LWlub3V0cyBtb2RkZWNscykpCgkJICAgICAgKGFw cGVuZCAodmVyaWxvZy1zdWJkZWNscy1nZXQtaW5wdXRzIG1vZHN1YmRlY2xzKQoJCQkgICAgICAo dmVyaWxvZy1zdWJkZWNscy1nZXQtaW5vdXRzIG1vZHN1YmRlY2xzKSkpKSkKICAgICAgKHNldHEg c2lnLWxpc3QgKHZlcmlsb2ctc2lnbmFscy1ub3QtbWF0Y2hpbmctcmVnZXhwCgkJICAgICAgc2ln LWxpc3QgdmVyaWxvZy1hdXRvLXVudXNlZC1pZ25vcmUtcmVnZXhwKSkKICAgICAgKHdoZW4gc2ln LWxpc3QKCSh2ZXJpbG9nLWZvcndhcmQtb3ItaW5zZXJ0LWxpbmUpCgkodmVyaWxvZy1pbnNlcnQt aW5kZW50ICIvLyBCZWdpbm5pbmcgb2YgYXV0b21hdGljIHVudXNlZCBpbnB1dHNcbiIpCgkoc2V0 cSBzaWctbGlzdCAoc29ydCAoY29weS1hbGlzdCBzaWctbGlzdCkgIyd2ZXJpbG9nLXNpZ25hbHMt c29ydC1jb21wYXJlKSkKCSh3aGlsZSBzaWctbGlzdAoJICAobGV0ICgoc2lnIChjYXIgc2lnLWxp c3QpKSkKCSAgICAoaW5kZW50LXRvIGluZGVudC1wdCkKCSAgICAoaW5zZXJ0ICh2ZXJpbG9nLXNp Zy1uYW1lIHNpZykgIixcbiIpCgkgICAgKHNldHEgc2lnLWxpc3QgKGNkciBzaWctbGlzdCkpKSkK CSh2ZXJpbG9nLWluc2VydC1pbmRlbnQgIi8vIEVuZCBvZiBhdXRvbWF0aWNzXG4iKSkpKSkKCihk ZWZ1biB2ZXJpbG9nLWVudW0tYXNjaWkgKHNpZ25tIGVsaW0tcmVnZXhwKQogICJDb252ZXJ0IGFu IGVudW0gbmFtZSBTSUdOTSB0byBhbiBhc2NpaSBzdHJpbmcgZm9yIGluc2VydGlvbi4KUmVtb3Zl IHVzZXIgcHJvdmlkZWQgcHJlZml4IEVMSU0tUkVHRVhQLiIKICAob3IgZWxpbS1yZWdleHAgKHNl dHEgZWxpbS1yZWdleHAgIl8gRE9OVCBNQVRDSCBJVF8iKSkKICAobGV0ICgoY2FzZS1mb2xkLXNl YXJjaCB0KSkKICAgIDs7IEFsbCB1cHBlciBiZWNvbWVzIGFsbCBsb3dlciBmb3IgcmVhZGFiaWxp dHkKICAgIChkb3duY2FzZSAodmVyaWxvZy1zdHJpbmctcmVwbGFjZS1tYXRjaGVzIGVsaW0tcmVn ZXhwICIiIG5pbCBuaWwgc2lnbm0pKSkpCgooZGVmdW4gdmVyaWxvZy1hdXRvLWFzY2lpLWVudW0g KCkKICAiRXhwYW5kIEFVVE9BU0NJSUVOVU0gc3RhdGVtZW50cywgYXMgcGFydCBvZiBcXFt2ZXJp bG9nLWF1dG9dLgpDcmVhdGUgYSByZWdpc3RlciB0byBjb250YWluIHRoZSBBU0NJSSBkZWNvZGUg b2YgYW4gZW51bWVyYXRlZCBzaWduYWwgdHlwZS4KVGhpcyB3aWxsIGFsbG93IHRyYWNlIHZpZXdl cnMgdG8gc2hvdyB0aGUgQVNDSUkgbmFtZSBvZiBzdGF0ZXMuCgpGaXJzdCwgcGFyYW1ldGVycyBh cmUgYnVpbHQgaW50byBhbiBlbnVtZXJhdGlvbiB1c2luZyB0aGUgc3lub3BzeXMgZW51bQpjb21t ZW50LiAgVGhlIGNvbW1lbnQgbXVzdCBiZSBiZXR3ZWVuIHRoZSBrZXl3b3JkIGFuZCB0aGUgc3lt Ym9sLgpcKEFubm95aW5nLCBidXQgdGhhdCdzIHdoYXQgU3lub3BzeXMncyBkY19zaGVsbCBGU00g cmVhZGVyIHJlcXVpcmVzLikKCk5leHQsIHJlZ2lzdGVycyB3aGljaCB0aGF0IGVudW0gYXBwbGll cyB0byBhcmUgYWxzbyB0YWdnZWQgd2l0aCB0aGUgc2FtZQplbnVtLgoKRmluYWxseSwgYW4gQVVU T0FTQ0lJRU5VTSBjb21tYW5kIGlzIHVzZWQuCgogIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhl IG5hbWUgb2YgdGhlIHNpZ25hbCB0byBiZSBkZWNvZGVkLgoKICBUaGUgc2Vjb25kIHBhcmFtZXRl ciBpcyB0aGUgbmFtZSB0byBzdG9yZSB0aGUgQVNDSUkgY29kZSBpbnRvLiAgRm9yIHRoZQogIHNp Z25hbCBmb28sIEkgc3VnZ2VzdCB0aGUgbmFtZSBfZm9vX19hc2NpaSwgd2hlcmUgdGhlIGxlYWRp bmcgXyBpbmRpY2F0ZXMKICBhIHNpZ25hbCB0aGF0IGlzIGp1c3QgZm9yIHNpbXVsYXRpb24sIGFu ZCB0aGUgbWFnaWMgY2hhcmFjdGVycyBfYXNjaWkKICB0ZWxsIHZpZXdlcnMgbGlrZSBEaW5vdHJh Y2UgdG8gZGlzcGxheSBpbiBBU0NJSSBmb3JtYXQuCgogIFRoZSB0aGlyZCBvcHRpb25hbCBwYXJh bWV0ZXIgaXMgYSBzdHJpbmcgd2hpY2ggd2lsbCBiZSByZW1vdmVkCiAgZnJvbSB0aGUgc3RhdGUg bmFtZXMuICBJdCBkZWZhdWx0cyB0byBcIlwiIHdoaWNoIHJlbW92ZXMgbm90aGluZy4KCiAgVGhl IGZvdXJ0aCBvcHRpb25hbCBwYXJhbWV0ZXIgaXMgXCJvbmVob3RcIiB0byBmb3JjZSBvbmUtaG90 CiAgZGVjb2RpbmcuICBJZiB1bnNwZWNpZmllZCwgaWYgYW5kIG9ubHkgaWYgdGhlIGZpcnN0IHBh cmFtZXRlcgogIHdpZHRoIGlzIDJeKG51bWJlciBvZiBzdGF0ZXMgaW4gZW51bSkgYW5kIGRvZXMg Tk9UIG1hdGNoIHRoZQogIHdpZHRoIG9mIHRoZSBlbnVtLCB0aGUgc2lnbmFsIGlzIGFzc3VtZWQg dG8gYmUgYSBvbmUtaG90CiAgZGVjb2RlLiAgT3RoZXJ3aXNlLCBpdCdzIGEgbm9ybWFsIGVuY29k ZWQgc3RhdGUgdmVjdG9yLgoKICBgdmVyaWxvZy1hdXRvLXdpcmUtdHlwZScgbWF5IGJlIHVzZWQg dG8gY2hhbmdlIHRoZSBkYXRhdHlwZSBvZgogIHRoZSBkZWNsYXJhdGlvbnMuCgogIFwic3lub3Bz eXMgZW51bVwiIG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIFwiYXV0byBlbnVtXCIuCgpBbiBleGFt cGxlOgoKICAgICAgICAvLz09IFN0YXRlIGVudW1lcmF0aW9uCiAgICAgICAgcGFyYW1ldGVyIFsy OjBdIC8vIGF1dG8gZW51bSBzdGF0ZV9pbmZvCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNN X0lETEUgPSAgM1xcPSdiMDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBTTV9TRU5EID0g IDNcXD0nYjAwMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgU01fV0FJVDEgPSAzXFw9J2Iw MTA7CiAgICAgICAgLy89PSBTdGF0ZSB2YXJpYWJsZXMKICAgICAgICByZWcgWzI6MF0gIC8qIGF1 dG8gZW51bSBzdGF0ZV9pbmZvICovCiAgICAgICAgICAgICAgICAgICBzdGF0ZV9yOyAgLyogYXV0 byBzdGF0ZV92ZWN0b3Igc3RhdGVfciAqLwogICAgICAgIHJlZyBbMjowXSAgLyogYXV0byBlbnVt IHN0YXRlX2luZm8gKi8KICAgICAgICAgICAgICAgICAgIHN0YXRlX2UxOwoKICAgICAgICAvKkFV VE9BU0NJSUVOVU0oXCJzdGF0ZV9yXCIsIFwic3RhdGVfYXNjaWlfclwiLCBcIlNNX1wiKSovCgpU eXBpbmcgXFxbdmVyaWxvZy1hdXRvXSB3aWxsIG1ha2UgdGhpcyBpbnRvOgoKICAgICAgICAuLi4K ICAgICAgICAvKkFVVE9BU0NJSUVOVU0oXCJzdGF0ZV9yXCIsIFwic3RhdGVfYXNjaWlfclwiLCBc IlNNX1wiKSovCiAgICAgICAgLy8gQmVnaW5uaW5nIG9mIGF1dG9tYXRpYyBBU0NJSSBlbnVtIGRl Y29kaW5nCiAgICAgICAgcmVnIFszOTowXSAgICAgICAgICAgICAgc3RhdGVfYXNjaWlfcjsgICAg ICAgICAgLy8gRGVjb2RlIG9mIHN0YXRlX3IKICAgICAgICBhbHdheXMgQChzdGF0ZV9yKSBiZWdp bgogICAgICAgICAgIGNhc2UgKHtzdGF0ZV9yfSkKICAgICAgICAgICAgICAgIFNNX0lETEU6ICBz dGF0ZV9hc2NpaV9yID0gXCJpZGxlIFwiOwogICAgICAgICAgICAgICAgU01fU0VORDogIHN0YXRl X2FzY2lpX3IgPSBcInNlbmQgXCI7CiAgICAgICAgICAgICAgICBTTV9XQUlUMTogc3RhdGVfYXNj aWlfciA9IFwid2FpdDFcIjsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICBzdGF0ZV9hc2NpaV9y ID0gXCIlRXJyb1wiOwogICAgICAgICAgIGVuZGNhc2UKICAgICAgICBlbmQKICAgICAgICAvLyBF bmQgb2YgYXV0b21hdGljcyIKICAoc2F2ZS1leGN1cnNpb24KICAgIChsZXQqICgocGFyYW1zICh2 ZXJpbG9nLXJlYWQtYXV0by1wYXJhbXMgMiA0KSkKCSAgICh1bmRlY29kZS1uYW1lIChudGggMCBw YXJhbXMpKQoJICAgKGFzY2lpLW5hbWUgKG50aCAxIHBhcmFtcykpCgkgICAoZWxpbS1yZWdleHAg KGFuZCAobnRoIDIgcGFyYW1zKQoJCQkgICAgIChub3QgKGVxdWFsIChudGggMiBwYXJhbXMpICIi KSkKCQkJICAgICAobnRoIDIgcGFyYW1zKSkpCgkgICAob25lLWhvdC1mbGFnIChudGggMyBwYXJh bXMpKQoJICAgOzsKCSAgIChpbmRlbnQtcHQgKGN1cnJlbnQtaW5kZW50YXRpb24pKQoJICAgKG1v ZGkgKHZlcmlsb2ctbW9kaS1jdXJyZW50KSkKCSAgIChtb2RkZWNscyAodmVyaWxvZy1tb2RpLWdl dC1kZWNscyBtb2RpKSkKCSAgIDs7CgkgICAoc2lnLWxpc3QtY29uc3RzIChhcHBlbmQgKHZlcmls b2ctZGVjbHMtZ2V0LWNvbnN0cyBtb2RkZWNscykKCQkJCSAgICAodmVyaWxvZy1kZWNscy1nZXQt Z3BhcmFtcyBtb2RkZWNscykpKQoJICAgKHNpZy1saXN0LWFsbCAgKHZlcmlsb2ctZGVjbHMtZ2V0 LWlvdmFycyBtb2RkZWNscykpCgkgICA7OwoJICAgKHVuZGVjb2RlLXNpZyAob3IgKGFzc29jIHVu ZGVjb2RlLW5hbWUgc2lnLWxpc3QtYWxsKQoJCQkgICAgIChlcnJvciAiJXM6IFNpZ25hbCBgJXMn IG5vdCBmb3VuZCBpbiBkZXNpZ24iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh2ZXJpbG9nLXBvaW50LXRleHQpIHVuZGVjb2RlLW5hbWUpKSkKCSAgICh1bmRlY29kZS1lbnVt IChvciAodmVyaWxvZy1zaWctZW51bSB1bmRlY29kZS1zaWcpCgkJCSAgICAgIChlcnJvciAiJXM6 IFNpZ25hbCBgJXMnIGRvZXMgbm90IGhhdmUgYW4gZW51bSB0YWciCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAodmVyaWxvZy1wb2ludC10ZXh0KSB1bmRlY29kZS1uYW1lKSkp CgkgICA7OwoJICAgKGVudW0tc2lncyAodmVyaWxvZy1zaWduYWxzLW5vdC1pbgoJCSAgICAgICAo b3IgKHZlcmlsb2ctc2lnbmFscy1tYXRjaGluZy1lbnVtIHNpZy1saXN0LWNvbnN0cyB1bmRlY29k ZS1lbnVtKQoJCQkgICAoZXJyb3IgIiVzOiBObyBzdGF0ZSBkZWZpbml0aW9ucyBmb3IgYCVzJyIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLXBvaW50LXRleHQpIHVu ZGVjb2RlLWVudW0pKQoJCSAgICAgICBuaWwpKQoJICAgOzsKCSAgIChvbmUtaG90IChvcgoJCSAg ICAgKHN0cmluZy1tYXRjaCAib25laG90IiAob3Igb25lLWhvdC1mbGFnICIiKSkKICAgICAgICAg ICAgICAgICAgICAgKGFuZCAgOyB3aWR0aChlbnVtKSAhPSB3aWR0aChzaWcpCgkJICAgICAgKG9y IChub3QgKHZlcmlsb2ctc2lnLWJpdHMgKGNhciBlbnVtLXNpZ3MpKSkKCQkJICAobm90IChlcXVh bCAodmVyaWxvZy1zaWctd2lkdGggKGNhciBlbnVtLXNpZ3MpKQoJCQkJICAgICAgKHZlcmlsb2ct c2lnLXdpZHRoIHVuZGVjb2RlLXNpZykpKSkKCQkgICAgICA7OyBjb3VudChlbnVtcykgPT0gd2lk dGgoc2lnKQoJCSAgICAgIChlcXVhbCAobnVtYmVyLXRvLXN0cmluZyAobGVuZ3RoIGVudW0tc2ln cykpCgkJCSAgICAgKHZlcmlsb2ctc2lnLXdpZHRoIHVuZGVjb2RlLXNpZykpKSkpCgkgICAoZW51 bS1jaGFycyAwKQoJICAgKGFzY2lpLWNoYXJzIDApKQogICAgICA7OwogICAgICA7OyBGaW5kIG51 bWJlciBvZiBhc2NpaSBjaGFycyBuZWVkZWQKICAgICAgKGxldCAoKHRtcC1zaWdzIGVudW0tc2ln cykpCgkod2hpbGUgdG1wLXNpZ3MKCSAgKHNldHEgZW51bS1jaGFycyAobWF4IGVudW0tY2hhcnMg KGxlbmd0aCAodmVyaWxvZy1zaWctbmFtZSAoY2FyIHRtcC1zaWdzKSkpKQoJCWFzY2lpLWNoYXJz IChtYXggYXNjaWktY2hhcnMgKGxlbmd0aCAodmVyaWxvZy1lbnVtLWFzY2lpCgkJCQkJCSAgICAg ICh2ZXJpbG9nLXNpZy1uYW1lIChjYXIgdG1wLXNpZ3MpKQoJCQkJCQkgICAgICBlbGltLXJlZ2V4 cCkpKQoJCXRtcC1zaWdzIChjZHIgdG1wLXNpZ3MpKSkpCiAgICAgIDs7CiAgICAgICh2ZXJpbG9n LWZvcndhcmQtb3ItaW5zZXJ0LWxpbmUpCiAgICAgICh2ZXJpbG9nLWluc2VydC1pbmRlbnQgIi8v IEJlZ2lubmluZyBvZiBhdXRvbWF0aWMgQVNDSUkgZW51bSBkZWNvZGluZ1xuIikKICAgICAgKGxl dCAoKGRlY29kZS1zaWctbGlzdCAobGlzdCAobGlzdCBhc2NpaS1uYW1lIChmb3JtYXQgIlslZDow XSIgKC0gKCogYXNjaWktY2hhcnMgOCkgMSkpCgkJCQkJIChjb25jYXQgIkRlY29kZSBvZiAiIHVu ZGVjb2RlLW5hbWUpIG5pbCBuaWwpKSkpCgkodmVyaWxvZy1pbnNlcnQtZGVmaW5pdGlvbiBtb2Rp IGRlY29kZS1zaWctbGlzdCAicmVnIiBpbmRlbnQtcHQgbmlsKSkKICAgICAgOzsKICAgICAgKHZl cmlsb2ctaW5zZXJ0LWluZGVudCAiYWx3YXlzIEAoIiB1bmRlY29kZS1uYW1lICIpIGJlZ2luXG4i KQogICAgICAoc2V0cSBpbmRlbnQtcHQgKCsgaW5kZW50LXB0IHZlcmlsb2ctaW5kZW50LWxldmVs KSkKICAgICAgKHZlcmlsb2ctaW5zZXJ0LWluZGVudCAiY2FzZSAoeyIgdW5kZWNvZGUtbmFtZSAi fSlcbiIpCiAgICAgIChzZXRxIGluZGVudC1wdCAoKyBpbmRlbnQtcHQgdmVyaWxvZy1jYXNlLWlu ZGVudCkpCiAgICAgIDs7CiAgICAgIChsZXQgKCh0bXAtc2lncyBlbnVtLXNpZ3MpCgkgICAgKGNo cmZtdCAoZm9ybWF0ICIlJS0lZHMgJXMgPSBcIiUlLSVkc1wiO1xuIgoJCQkgICAgKCsgKGlmIG9u ZS1ob3QgOSAxKSAobWF4IDggZW51bS1jaGFycykpCgkJCSAgICBhc2NpaS1uYW1lIGFzY2lpLWNo YXJzKSkKCSAgICAoZXJybmFtZSAoc3Vic3RyaW5nICIlRXJyb3IiIDAgKG1pbiA2IGFzY2lpLWNo YXJzKSkpKQoJKHdoaWxlIHRtcC1zaWdzCgkgICh2ZXJpbG9nLWluc2VydC1pbmRlbnQKCSAgIChj b25jYXQKCSAgICAoZm9ybWF0IGNocmZtdAoJCSAgICAoY29uY2F0IChpZiBvbmUtaG90ICIoIikK CQkJICAgIDs7IFVzZSBlbnVtLXNpZ3MgbGVuZ3RoIGFzIHRoYXQncyBudW1lcmljCgkJCSAgICA7 OyB2ZXJpbG9nLXNpZy13aWR0aCB1bmRlY29kZS1zaWcgbWlnaHQgbm90IGJlLgoJCQkgICAgKGlm IG9uZS1ob3QgKG51bWJlci10by1zdHJpbmcgKGxlbmd0aCBlbnVtLXNpZ3MpKSkKCQkJICAgIDs7 IFdlIHVzZSBhIHNoaWZ0IGluc3RlYWQgb2YgdmFyW2luZGV4XQoJCQkgICAgOzsgc28gdGhhdCBh IG5vbi1vbmUgaG90IHZhbHVlIHdpbGwgc2hvdyBhcyBlcnJvci4KCQkJICAgIChpZiBvbmUtaG90 ICInYjE8PCIpCgkJCSAgICAodmVyaWxvZy1zaWctbmFtZSAoY2FyIHRtcC1zaWdzKSkKCQkJICAg IChpZiBvbmUtaG90ICIpIikgIjoiKQoJCSAgICAodmVyaWxvZy1lbnVtLWFzY2lpICh2ZXJpbG9n LXNpZy1uYW1lIChjYXIgdG1wLXNpZ3MpKQoJCQkJCWVsaW0tcmVnZXhwKSkpKQoJICAoc2V0cSB0 bXAtc2lncyAoY2RyIHRtcC1zaWdzKSkpCgkodmVyaWxvZy1pbnNlcnQtaW5kZW50IChmb3JtYXQg Y2hyZm10ICJkZWZhdWx0OiIgZXJybmFtZSkpKQogICAgICA7OwogICAgICAoc2V0cSBpbmRlbnQt cHQgKC0gaW5kZW50LXB0IHZlcmlsb2ctY2FzZS1pbmRlbnQpKQogICAgICAodmVyaWxvZy1pbnNl cnQtaW5kZW50ICJlbmRjYXNlXG4iKQogICAgICAoc2V0cSBpbmRlbnQtcHQgKC0gaW5kZW50LXB0 IHZlcmlsb2ctaW5kZW50LWxldmVsKSkKICAgICAgKHZlcmlsb2ctaW5zZXJ0LWluZGVudCAiZW5k XG4iCgkJCSAgICAgIi8vIEVuZCBvZiBhdXRvbWF0aWNzXG4iKSkpKQoKKGRlZnVuIHZlcmlsb2ct YXV0by10ZW1wbGF0ZWQtcmVsICgpCiAgIlJlcGxhY2UgVGVtcGxhdGVkIHJlbGF0aXZlIGxpbmUg bnVtYmVycyB3aXRoIGFic29sdXRlIGxpbmUgbnVtYmVycy4KSW50ZXJuYWwgdXNlIG9ubHkuICBU aGlzIGhhY2tzIGFyb3VuZCB0aGUgbGluZSBudW1iZXJzIGluIEFVVE9JTlNUIFRlbXBsYXRlcwpi ZWluZyBkaWZmZXJlbnQgZnJvbSB0aGUgZmluYWwgb3V0cHV0J3MgbGluZSBudW1iZXJpbmcuIgog IChsZXQgKCh0ZW1wbGF0ZW5vIDApICh0ZW1wbGF0ZS1saW5lIChsaXN0IDApKSAoYnVmLWxpbmUg MSkpCiAgICA7OyBGaW5kIGxpbmUgbnVtYmVyIGVhY2ggdGVtcGxhdGUgaXMgb24KICAgIDs7IENv dW50IGxpbmVzIGFzIHdlIGdvLCBhcyBvdGhlcndpc2UgaXQncyBPKG5eMikgdG8gdXNlIGNvdW50 LWxpbmVzCiAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgKHdoaWxlIChub3QgKGVvYnAp KQogICAgICAod2hlbiAobG9va2luZy1hdCAiLipBVVRPX1RFTVBMQVRFIikKCShzZXRxIHRlbXBs YXRlbm8gKDErIHRlbXBsYXRlbm8pKQoJKHNldHEgdGVtcGxhdGUtbGluZSAoY29ucyBidWYtbGlu ZSB0ZW1wbGF0ZS1saW5lKSkpCiAgICAgIChzZXRxIGJ1Zi1saW5lICgxKyBidWYtbGluZSkpCiAg ICAgIChmb3J3YXJkLWxpbmUgMSkpCiAgICAoc2V0cSB0ZW1wbGF0ZS1saW5lIChucmV2ZXJzZSB0 ZW1wbGF0ZS1saW5lKSkKICAgIDs7IFJlcGxhY2UgVCMgTCMgd2l0aCBhYnNvbHV0ZSBsaW5lIG51 bWJlcgogICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICh3aGlsZSAocmUtc2VhcmNoLWZv cndhcmQgIiBUZW1wbGF0ZWQgVFxcKFswLTldK1xcKSBMXFwoWzAtOV0rXFwpIiBuaWwgdCkKICAg ICAgKHJlcGxhY2UtbWF0Y2gKICAgICAgIChjb25jYXQgIiBUZW1wbGF0ZWQgIgogICAgICAgICAg ICAgICAoaW50LXRvLXN0cmluZyAoKyAobnRoIChzdHJpbmctdG8tbnVtYmVyCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAx KSkKCQkJCSAgICAgIHRlbXBsYXRlLWxpbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdHJpbmctdG8tbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMikpKSkpCiAgICAgICB0IHQpKSkpCgooZGVmdW4g dmVyaWxvZy1hdXRvLXRlbXBsYXRlLWxpbnQgKCkKICAiQ2hlY2sgQVVUT19URU1QTEFURXMgZm9y IHVudXNlZCBsaW5lcy4KRW5hYmxlIHdpdGggYHZlcmlsb2ctYXV0by10ZW1wbGF0ZS13YXJuLXVu dXNlZCcuIgogIChsZXQgKChuYW1lMSAob3IgKGJ1ZmZlci1maWxlLW5hbWUpIChidWZmZXItbmFt ZSkpKSkKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQog ICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkCgkgICAgICAiXlxccy0qLz9cXCo/XFxzLSpb YS16QS1aMC05YF8kXStcXHMtK0FVVE9fVEVNUExBVEUiIG5pbCB0KQoJKGxldCogKCh0cGwtaW5m byAodmVyaWxvZy1yZWFkLWF1dG8tdGVtcGxhdGUtbWlkZGxlKSkKCSAgICAgICAodHBsLWxpc3Qg KGFyZWYgdHBsLWluZm8gMSkpCgkgICAgICAgKHRsaW5lcyAoYXBwZW5kIChudGggMCB0cGwtbGlz dCkgKG50aCAxIHRwbC1saXN0KSkpCgkgICAgICAgdHBsLWFzcykKCSAgKHdoaWxlIHRsaW5lcwoJ ICAgIChzZXRxIHRwbC1hc3MgKGNhciB0bGluZXMpCgkJICB0bGluZXMgKGNkciB0bGluZXMpKQoJ ICAgIDs7CiAgICAgICAgICAgICh1bmxlc3MgKG9yIChub3QgKGV2YWwtd2hlbi1jb21waWxlIChm Ym91bmRwICdtYWtlLWhhc2gtdGFibGUpKSkgIDsgTm90IHN1cHBvcnRlZCwgbm8gd2FybmluZwoJ CQkobm90IHZlcmlsb2ctYXV0by10ZW1wbGF0ZS1oaXRzKQoJCQkoZ2V0aGFzaCAodmVjdG9yIChu dGggMiB0cGwtYXNzKSAobnRoIDMgdHBsLWFzcykpCgkJCQkgdmVyaWxvZy1hdXRvLXRlbXBsYXRl LWhpdHMpKQoJICAgICAgKHZlcmlsb2ctd2Fybi1lcnJvciAiJXM6JWQ6IEFVVE9fVEVNUExBVEUg bGluZSB1bnVzZWQ6IFwiLiVzICglcylcIiIKCQkJCSAgbmFtZTEKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgrIChlbHQgdHBsLWFzcyAzKSAgOyBUZW1wbGF0ZSBsaW5lIG51bWJl cgoJCQkJICAgICAoY291bnQtbGluZXMgKHBvaW50LW1pbikgKHBvaW50KSkpCgkJCQkgIChlbHQg dHBsLWFzcyAwKSAoZWx0IHRwbC1hc3MgMSkpCgkgICAgICApKSkpKSkpCgoMCjs7OyBBdXRvIHRv cCBsZXZlbDoKOzsKCihkZWZ1biB2ZXJpbG9nLWF1dG8gKCZvcHRpb25hbCBpbmplY3QpICA7IFVz ZSB2ZXJpbG9nLWluamVjdC1hdXRvIGluc3RlYWQgb2YgcGFzc2luZyBhbiBhcmcKICAiRXhwYW5k IEFVVE8gc3RhdGVtZW50cy4KTG9vayBmb3IgYW55IC8qQVVUTy4uLiovIGNvbW1hbmRzIGluIHRo ZSBjb2RlLCBhcyB1c2VkIGluCmluc3RhbnRpYXRpb25zIG9yIGFyZ3VtZW50IGhlYWRlcnMuICBV cGRhdGUgdGhlIGxpc3Qgb2Ygc2lnbmFscwpmb2xsb3dpbmcgdGhlIC8qQVVUTy4uLiovIGNvbW1h bmQuCgpVc2UgXFxbdmVyaWxvZy1kZWxldGUtYXV0b10gdG8gcmVtb3ZlIHRoZSBBVVRPcy4KClVz ZSBcXFt2ZXJpbG9nLWRpZmYtYXV0b10gdG8gc2VlIGRpZmZlcmVuY2VzIGluIEFVVE8gZXhwYW5z aW9uLgoKVXNlIFxcW3Zlcmlsb2ctaW5qZWN0LWF1dG9dIHRvIGluc2VydCBBVVRPcyBmb3IgdGhl IGZpcnN0IHRpbWUuCgpVc2UgXFxbdmVyaWxvZy1mYXFdIGZvciBhIHBvaW50ZXIgdG8gZnJlcXVl bnRseSBhc2tlZCBxdWVzdGlvbnMuCgpGb3IgbmV3IHVzZXJzLCB3ZSByZWNvbW1lbmQgc2V0dGlu ZyBgdmVyaWxvZy1jYXNlLWZvbGQnIHRvIG5pbAphbmQgYHZlcmlsb2ctYXV0by1hcmctc29ydCcg dG8gdC4KClRoZSBob29rcyBgdmVyaWxvZy1iZWZvcmUtYXV0by1ob29rJyBhbmQgYHZlcmlsb2ct YXV0by1ob29rJyBhcmUKY2FsbGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBmdW5jdGlvbiwgcmVz cGVjdGl2ZWx5LgoKRm9yIGV4YW1wbGU6CiAgICAgICAgbW9kdWxlIEV4YW1wTW9kdWxlICgvKkFV VE9BUkcqLyk7CiAgICAgICAgICAgIC8qQVVUT0lOUFVUKi8KICAgICAgICAgICAgLypBVVRPT1VU UFVUKi8KICAgICAgICAgICAgLypBVVRPV0lSRSovCiAgICAgICAgICAgIC8qQVVUT1JFRyovCiAg ICAgICAgICAgIEluc3RNb2QgaW5zdE5hbWUgIygvKkFVVE9JTlNUUEFSQU0qLykgKC8qQVVUT0lO U1QqLyk7CiAgICAgICAgZW5kbW9kdWxlCgpZb3UgY2FuIGFsc28gdXBkYXRlIHRoZSBBVVRPcyBm cm9tIHRoZSBzaGVsbCB1c2luZzoKCWVtYWNzIC0tYmF0Y2ggIDxmaWxlbmFtZXMudj4gIC1mIHZl cmlsb2ctYmF0Y2gtYXV0bwpPciBmaXggaW5kZW50YXRpb24gd2l0aDoKCWVtYWNzIC0tYmF0Y2gg IDxmaWxlbmFtZXMudj4gIC1mIHZlcmlsb2ctYmF0Y2gtaW5kZW50Ckxpa2V3aXNlLCB5b3UgY2Fu IGRlbGV0ZSBvciBpbmplY3QgQVVUT3Mgd2l0aDoKCWVtYWNzIC0tYmF0Y2ggIDxmaWxlbmFtZXMu dj4gIC1mIHZlcmlsb2ctYmF0Y2gtZGVsZXRlLWF1dG8KCWVtYWNzIC0tYmF0Y2ggIDxmaWxlbmFt ZXMudj4gIC1mIHZlcmlsb2ctYmF0Y2gtaW5qZWN0LWF1dG8KT3IgY2hlY2sgaWYgQVVUT3MgaGF2 ZSB0aGUgc2FtZSBleHBhbnNpb24KCWVtYWNzIC0tYmF0Y2ggIDxmaWxlbmFtZXMudj4gIC1mIHZl cmlsb2ctYmF0Y2gtZGlmZi1hdXRvCgpVc2luZyBcXFtkZXNjcmliZS1mdW5jdGlvbl0sIHNlZSBh bHNvOgogICAgYHZlcmlsb2ctYXV0by1hcmcnICAgICAgICAgIGZvciBBVVRPQVJHIG1vZHVsZSBp bnN0YW50aWF0aW9ucwogICAgYHZlcmlsb2ctYXV0by1hc2NpaS1lbnVtJyAgIGZvciBBVVRPQVND SUlFTlVNIGVudW1lcmF0aW9uIGRlY29kaW5nCiAgICBgdmVyaWxvZy1hdXRvLWFzc2lnbi1tb2Rw b3J0JyBmb3IgQVVUT0FTU0lHTk1PRFBPUlQgYXNzaWdubWVudCB0by9mcm9tIG1vZHBvcnQKICAg IGB2ZXJpbG9nLWF1dG8taW5vdXQnICAgICAgICBmb3IgQVVUT0lOT1VUIG1ha2luZyBoaWVyYXJj aHkgaW5vdXRzCiAgICBgdmVyaWxvZy1hdXRvLWlub3V0LWNvbXAnICAgZm9yIEFVVE9JTk9VVENP TVAgY29weSBjb21wbGVtZW50ZWQgaS9vCiAgICBgdmVyaWxvZy1hdXRvLWlub3V0LWluJyAgICAg Zm9yIEFVVE9JTk9VVElOIGlucHV0cyBmb3IgYWxsIGkvbwogICAgYHZlcmlsb2ctYXV0by1pbm91 dC1tb2Rwb3J0JyAgZm9yIEFVVE9JTk9VVE1PRFBPUlQgaS9vIGZyb20gYW4gaW50ZXJmYWNlIG1v ZHBvcnQKICAgIGB2ZXJpbG9nLWF1dG8taW5vdXQtbW9kdWxlJyBmb3IgQVVUT0lOT1VUTU9EVUxF IGNvcHlpbmcgaS9vIGZyb20gZWxzZXdoZXJlCiAgICBgdmVyaWxvZy1hdXRvLWlub3V0LXBhcmFt JyAgZm9yIEFVVE9JTk9VVFBBUkFNIGNvcHlpbmcgcGFyYW1zIGZyb20gZWxzZXdoZXJlCiAgICBg dmVyaWxvZy1hdXRvLWlucHV0JyAgICAgICAgZm9yIEFVVE9JTlBVVCBtYWtpbmcgaGllcmFyY2h5 IGlucHV0cwogICAgYHZlcmlsb2ctYXV0by1pbnNlcnQtbGlzcCcgIGZvciBBVVRPSU5TRVJUTElT UCBpbnNlcnQgY29kZSBmcm9tIGxpc3AgZnVuY3Rpb24KICAgIGB2ZXJpbG9nLWF1dG8taW5zZXJ0 LWxhc3QnICBmb3IgQVVUT0lOU0VSVExBU1QgaW5zZXJ0IGNvZGUgZnJvbSBsaXNwIGZ1bmN0aW9u CiAgICBgdmVyaWxvZy1hdXRvLWluc3QnICAgICAgICAgZm9yIEFVVE9JTlNUIGluc3RhbnRpYXRp b24gcGlucwogICAgYHZlcmlsb2ctYXV0by1zdGFyJyAgICAgICAgIGZvciBBVVRPSU5TVCAuKiBT eXN0ZW1WZXJpbG9nIHBpbnMKICAgIGB2ZXJpbG9nLWF1dG8taW5zdC1wYXJhbScgICBmb3IgQVVU T0lOU1RQQVJBTSBpbnN0YW50aWF0aW9uIHBhcmFtcwogICAgYHZlcmlsb2ctYXV0by1sb2dpYycg ICAgICAgIGZvciBBVVRPTE9HSUMgZGVjbGFyaW5nIGxvZ2ljIHNpZ25hbHMKICAgIGB2ZXJpbG9n LWF1dG8tb3V0cHV0JyAgICAgICBmb3IgQVVUT09VVFBVVCBtYWtpbmcgaGllcmFyY2h5IG91dHB1 dHMKICAgIGB2ZXJpbG9nLWF1dG8tb3V0cHV0LWV2ZXJ5JyBmb3IgQVVUT09VVFBVVEVWRVJZIG1h a2luZyBhbGwgb3V0cHV0cwogICAgYHZlcmlsb2ctYXV0by1yZWcnICAgICAgICAgIGZvciBBVVRP UkVHIHJlZ2lzdGVycwogICAgYHZlcmlsb2ctYXV0by1yZWctaW5wdXQnICAgIGZvciBBVVRPUkVH SU5QVVQgaW5zdGFudGlhdGlvbiByZWdpc3RlcnMKICAgIGB2ZXJpbG9nLWF1dG8tcmVzZXQnICAg ICAgICBmb3IgQVVUT1JFU0VUIGZsb3AgcmVzZXRzCiAgICBgdmVyaWxvZy1hdXRvLXNlbnNlJyAg ICAgICAgZm9yIEFVVE9TRU5TRSBvciBBUyBhbHdheXMgc2Vuc2l0aXZpdHkgbGlzdHMKICAgIGB2 ZXJpbG9nLWF1dG8tdGllb2ZmJyAgICAgICBmb3IgQVVUT1RJRU9GRiBvdXRwdXQgdGllb2Zmcwog ICAgYHZlcmlsb2ctYXV0by11bmRlZicgICAgICAgIGZvciBBVVRPVU5ERUYgXFw9YHVuZGVmIG9m IGxvY2FsIFxcPWBkZWZpbmVzCiAgICBgdmVyaWxvZy1hdXRvLXVudXNlZCcgICAgICAgZm9yIEFV VE9VTlVTRUQgdW51c2VkIGlucHV0cy9pbm91dHMKICAgIGB2ZXJpbG9nLWF1dG8td2lyZScgICAg ICAgICBmb3IgQVVUT1dJUkUgaW5zdGFudGlhdGlvbiB3aXJlcwoKICAgIGB2ZXJpbG9nLXJlYWQt ZGVmaW5lcycgICAgICBmb3IgcmVhZGluZyBcXD1gZGVmaW5lIHZhbHVlcwogICAgYHZlcmlsb2ct cmVhZC1pbmNsdWRlcycgICAgIGZvciByZWFkaW5nIFxcPWBpbmNsdWRlcwoKSWYgeW91IGhhdmUg YnVncyB3aXRoIHRoZXNlIGF1dG9zLCBwbGVhc2UgZmlsZSBhbiBpc3N1ZSBhdApVUkwgYGh0dHBz Oi8vd3d3LnZlcmlwb29sLm9yZy92ZXJpbG9nLW1vZGUnIG9yIGNvbnRhY3QgdGhlIEFVVE9BVVRI T1IKV2lsc29uIFNueWRlciAod3NueWRlckB3c255ZGVyLm9yZykuIgogIChpbnRlcmFjdGl2ZSkK ICAodW5sZXNzIG5vbmludGVyYWN0aXZlIChtZXNzYWdlICJVcGRhdGluZyBBVVRPcy4uLiIpKQog IChpZiAoZmJvdW5kcCAnZGlub3RyYWNlLXVuYW5ub3RhdGUtYWxsKQogICAgICAoZGlub3RyYWNl LXVuYW5ub3RhdGUtYWxsKSkKICA7OyBEaXNhYmxlIGNoYW5nZSBob29rcyBmb3Igc3BlZWQKICA7 OyBUaGlzIGxldCBjYW4ndCBiZSBwYXJ0IG9mIGFib3ZlIGxldDsgbXVzdCByZXN0b3JlCiAgOzsg YWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucyBiZWZvcmUgZm9udC1sb2NrIHJlc3VtZXMKICAodmVyaWxv Zy1zYXZlLWZvbnQtbm8tY2hhbmdlLWZ1bmN0aW9ucwogICAobGV0ICgob2xkYnVmIChpZiAobm90 IChidWZmZXItbW9kaWZpZWQtcCkpCiAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3RyaW5n KSkpCiAgICAgICAgIChjYXNlLWZvbGQtc2VhcmNoIHZlcmlsb2ctY2FzZS1mb2xkKQogICAgICAg ICA7OyBDYWNoZSBkaXJlY3Rvcmllczsgd2UgZG9uJ3Qgd3JpdGUgbmV3IGZpbGVzLCBzbyBjYW4n dCBjaGFuZ2UKICAgICAgICAgKHZlcmlsb2ctZGlyLWNhY2hlLXByZXNlcnZpbmcgdCkKICAgICAg ICAgOzsgQ2FjaGUgY3VycmVudCBtb2R1bGUKICAgICAgICAgKHZlcmlsb2ctbW9kaS1jYWNoZS1j dXJyZW50LWVuYWJsZSB0KQogICAgICAgICAodmVyaWxvZy1tb2RpLWNhY2hlLWN1cnJlbnQtbWF4 IChwb2ludC1taW4pKSA7IElFIGl0J3MgaW52YWxpZAogICAgICAgICB2ZXJpbG9nLW1vZGktY2Fj aGUtY3VycmVudCkKICAgICAodmVyaWxvZy1zYXZlLXNjYW4tY2FjaGUKICAgICAgKHNhdmUtZXhj dXJzaW9uCiAgICAgICAgOzsgV2lwZSBjYWNoZTsgb3RoZXJ3aXNlIGlmIHdlIEFVVE9lZCBhIGJs b2NrIGFib3ZlIHRoaXMgb25lLAogICAgICAgIDs7IHdlJ2xsIG1pc3JlbWVtYmVyIHdlIGhhdmUg Z2VuZXJhdGVkIElPcywgY29uZnVzaW5nIEFVVE9PVVRQVVQKICAgICAgICAoc2V0cSB2ZXJpbG9n LW1vZGktY2FjaGUtbGlzdCBuaWwpCiAgICAgICAgOzsgTG9jYWwgc3RhdGUKICAgICAgICAodmVy aWxvZy1yZWFkLWF1dG8tdGVtcGxhdGUtaW5pdCkKICAgICAgICA7OyBJZiB3ZSdyZSBub3QgaW4g dmVyaWxvZy1tb2RlLCBjaGFuZ2Ugc3ludGF4IHRhYmxlIHNvIHBhcnNpbmcgd29ya3MgcmlnaHQK ICAgICAgICAodW5sZXNzIChlcSBtYWpvci1tb2RlICd2ZXJpbG9nLW1vZGUpICh2ZXJpbG9nLW1v ZGUpKQogICAgICAgIDs7IEFsbG93IHVzZXIgdG8gY3VzdG9taXplCiAgICAgICAgKHZlcmlsb2ct cnVuLWhvb2tzICd2ZXJpbG9nLWJlZm9yZS1hdXRvLWhvb2spCiAgICAgICAgOzsgVHJ5IHRvIHNh dmUgdGhlIHVzZXIgZnJvbSBuZWVkaW5nIHRvIHJldmVydC1maWxlIHRvIHJlcmVhZCBmaWxlIGxv Y2FsLXZhcmlhYmxlcwogICAgICAgICh2ZXJpbG9nLWF1dG8tcmVldmFsLWxvY2FscykKICAgICAg ICAodmVyaWxvZy1yZWFkLWF1dG8tbGlzcC1wcmVzZW50KQogICAgICAgICh2ZXJpbG9nLXJlYWQt YXV0by1saXNwIChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICAgICAgICh2ZXJpbG9nLWdldG9w dC1mbGFncykKICAgICAgICA7OyBGcm9tIGhlcmUgb24gb3V0LCB3ZSBjYW4gY2FjaGUgYW55dGhp bmcgd2UgcmVhZCBmcm9tIGRpc2sKICAgICAgICAodmVyaWxvZy1wcmVzZXJ2ZS1kaXItY2FjaGUK ICAgICAgICAgOzsgVGhlc2UgdHdvIG1heSBzZWVtIG9idmlvdXMgdG8gZG8gYWx3YXlzLCBidXQg b24gbGFyZ2UgaW5jbHVkZXMgaXQgY2FuIGJlIHdheSB0b28gc2xvdwogICAgICAgICAod2hlbiB2 ZXJpbG9nLWF1dG8tcmVhZC1pbmNsdWRlcwogICAgICAgICAgICh2ZXJpbG9nLXJlYWQtaW5jbHVk ZXMpCiAgICAgICAgICAgKHZlcmlsb2ctcmVhZC1kZWZpbmVzIG5pbCBuaWwgdCkpCiAgICAgICAg IDs7IFNldHVwIHZhcmlhYmxlcyBkdWUgdG8gU3lzdGVtVmVyaWxvZyBleHBhbnNpb24KICAgICAg ICAgKHZlcmlsb2ctYXV0by1yZS1zZWFyY2gtZG8gIi9cXCpBVVRPTE9HSUNcXCovIiAndmVyaWxv Zy1hdXRvLWxvZ2ljLXNldHVwKQogICAgICAgICA7OyBUaGlzIHBhcnRpY3VsYXIgb3JkZXJpbmcg aXMgaW1wb3J0YW50CiAgICAgICAgIDs7IElOU1Q6IExvd2VyIG1vZHVsZXMgY29ycmVjdCwgbm8g aW50ZXJuYWwgZGVwZW5kZW5jaWVzLCBGSVJTVAogICAgICAgICAodmVyaWxvZy1wcmVzZXJ2ZS1t b2RpLWNhY2hlCiAgICAgICAgICA7OyBDbGVhciBleGlzdGluZyBhdXRvcyBlbHNlIHdlJ2xsIGJl IHNjcmV3ZWQgYnkgZXhpc3Rpbmcgb25lcwogICAgICAgICAgKHZlcmlsb2ctZGVsZXRlLWF1dG8t YnVmZmVyKQogICAgICAgICAgOzsgSW5qZWN0aW9uIGlmIGFwcHJvcHJpYXRlCiAgICAgICAgICAo d2hlbiBpbmplY3QKICAgICAgICAgICAgKHZlcmlsb2ctaW5qZWN0LWluc3QpCiAgICAgICAgICAg ICh2ZXJpbG9nLWluamVjdC1zZW5zZSkKICAgICAgICAgICAgKHZlcmlsb2ctaW5qZWN0LWFyZykp CiAgICAgICAgICA7OwogICAgICAgICAgOzsgRG8gdXNlciBpbnNlcnRzIGZpcnN0LCBzbyB0aGVp ciBjb2RlIGNhbiBpbnNlcnQgQVVUT3MKICAgICAgICAgICh2ZXJpbG9nLWF1dG8tcmUtc2VhcmNo LWRvICIvXFwqQVVUT0lOU0VSVExJU1AoLio/KVxcKi8iCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAndmVyaWxvZy1hdXRvLWluc2VydC1saXNwKQogICAgICAgICAgOzsgRXhw YW5kIGluc3RhbmNlcyBiZWZvcmUgbmVlZCB0aGUgc2lnbmFscyB0aGUgaW5zdGFuY2VzIGlucHV0 L291dHB1dAogICAgICAgICAgKHZlcmlsb2ctYXV0by1yZS1zZWFyY2gtZG8gIi9cXCpBVVRPSU5T VFBBUkFNXFwoKC4qPylcXCk/XFwqLyIgJ3Zlcmlsb2ctYXV0by1pbnN0LXBhcmFtKQogICAgICAg ICAgKHZlcmlsb2ctYXV0by1yZS1zZWFyY2gtZG8gIi9cXCpBVVRPSU5TVFxcKCguKj8pXFwpP1xc Ki8iICd2ZXJpbG9nLWF1dG8taW5zdCkKICAgICAgICAgICh2ZXJpbG9nLWF1dG8tcmUtc2VhcmNo LWRvICJcXC5cXCoiICd2ZXJpbG9nLWF1dG8tc3RhcikKICAgICAgICAgIDs7IE11c3QgYmUgZG9u ZSBiZWZvcmUgYXV0b2luL291dCBhcyBjcmVhdGVzIGEgcmVnCiAgICAgICAgICAodmVyaWxvZy1h dXRvLXJlLXNlYXJjaC1kbyAiL1xcKkFVVE9BU0NJSUVOVU0oLio/KVxcKi8iICd2ZXJpbG9nLWF1 dG8tYXNjaWktZW51bSkKICAgICAgICAgIDs7CiAgICAgICAgICA7OyBmaXJzdCBpbi9vdXRzIGZy b20gb3RoZXIgZmlsZXMKICAgICAgICAgICh2ZXJpbG9nLWF1dG8tcmUtc2VhcmNoLWRvICIvXFwq QVVUT0lOT1VUTU9EUE9SVCguKj8pXFwqLyIgJ3Zlcmlsb2ctYXV0by1pbm91dC1tb2Rwb3J0KQog ICAgICAgICAgKHZlcmlsb2ctYXV0by1yZS1zZWFyY2gtZG8gIi9cXCpBVVRPSU5PVVRNT0RVTEUo Lio/KVxcKi8iICd2ZXJpbG9nLWF1dG8taW5vdXQtbW9kdWxlKQogICAgICAgICAgKHZlcmlsb2ct YXV0by1yZS1zZWFyY2gtZG8gIi9cXCpBVVRPSU5PVVRDT01QKC4qPylcXCovIiAndmVyaWxvZy1h dXRvLWlub3V0LWNvbXApCiAgICAgICAgICAodmVyaWxvZy1hdXRvLXJlLXNlYXJjaC1kbyAiL1xc KkFVVE9JTk9VVElOKC4qPylcXCovIiAndmVyaWxvZy1hdXRvLWlub3V0LWluKQogICAgICAgICAg KHZlcmlsb2ctYXV0by1yZS1zZWFyY2gtZG8gIi9cXCpBVVRPSU5PVVRQQVJBTSguKj8pXFwqLyIg J3Zlcmlsb2ctYXV0by1pbm91dC1wYXJhbSkKICAgICAgICAgIDs7IG5leHQgaW4vb3V0cyB3aGlj aCBuZWVkIHByZXZpb3VzIHN1Y2tlZCBpbnB1dHMgZmlyc3QKICAgICAgICAgICh2ZXJpbG9nLWF1 dG8tcmUtc2VhcmNoLWRvICIvXFwqQVVUT09VVFBVVFxcKCguKj8pXFwpP1xcKi8iICd2ZXJpbG9n LWF1dG8tb3V0cHV0KQogICAgICAgICAgKHZlcmlsb2ctYXV0by1yZS1zZWFyY2gtZG8gIi9cXCpB VVRPSU5QVVRcXCgoLio/KVxcKT9cXCovIiAndmVyaWxvZy1hdXRvLWlucHV0KQogICAgICAgICAg KHZlcmlsb2ctYXV0by1yZS1zZWFyY2gtZG8gIi9cXCpBVVRPSU5PVVRcXCgoLio/KVxcKT9cXCov IiAndmVyaWxvZy1hdXRvLWlub3V0KQogICAgICAgICAgOzsgVGhlbiB0aWUgb2ZmIHRob3NlIGlu L291dHMKICAgICAgICAgICh2ZXJpbG9nLWF1dG8tcmUtc2VhcmNoLWRvICIvXFwqQVVUT1RJRU9G RlxcKi8iICd2ZXJpbG9nLWF1dG8tdGllb2ZmKQogICAgICAgICAgOzsgVGhlc2UgY2FuIGJlIGFu eXdoZXJlIGFmdGVyIEFVVE9JTlNFUlRMSVNQCiAgICAgICAgICAodmVyaWxvZy1hdXRvLXJlLXNl YXJjaC1kbyAiL1xcKkFVVE9VTkRFRlxcKCguKj8pXFwpP1xcKi8iICd2ZXJpbG9nLWF1dG8tdW5k ZWYpCiAgICAgICAgICA7OyBXaXJlcy9yZWdzIG11c3QgYmUgYWZ0ZXIgaW5wdXRzL291dHB1dHMK ICAgICAgICAgICh2ZXJpbG9nLWF1dG8tcmUtc2VhcmNoLWRvICIvXFwqQVVUT0FTU0lHTk1PRFBP UlQoLio/KVxcKi8iICd2ZXJpbG9nLWF1dG8tYXNzaWduLW1vZHBvcnQpCiAgICAgICAgICAodmVy aWxvZy1hdXRvLXJlLXNlYXJjaC1kbyAiL1xcKkFVVE9MT0dJQ1xcKi8iICd2ZXJpbG9nLWF1dG8t bG9naWMpCiAgICAgICAgICAodmVyaWxvZy1hdXRvLXJlLXNlYXJjaC1kbyAiL1xcKkFVVE9XSVJF XFwqLyIgJ3Zlcmlsb2ctYXV0by13aXJlKQogICAgICAgICAgKHZlcmlsb2ctYXV0by1yZS1zZWFy Y2gtZG8gIi9cXCpBVVRPUkVHXFwqLyIgJ3Zlcmlsb2ctYXV0by1yZWcpCiAgICAgICAgICAodmVy aWxvZy1hdXRvLXJlLXNlYXJjaC1kbyAiL1xcKkFVVE9SRUdJTlBVVFxcKi8iICd2ZXJpbG9nLWF1 dG8tcmVnLWlucHV0KQogICAgICAgICAgOzsgb3V0cHV0ZXZlcnkgbmVlZHMgQVVUT09VVFBVVHMg ZG9uZSBmaXJzdAogICAgICAgICAgKHZlcmlsb2ctYXV0by1yZS1zZWFyY2gtZG8gIi9cXCpBVVRP T1VUUFVURVZFUllcXCgoLio/KVxcKT9cXCovIiAndmVyaWxvZy1hdXRvLW91dHB1dC1ldmVyeSkK ICAgICAgICAgIDs7IERvZXNuJ3QgbWF0dGVyIHdoZW4gZG9uZSwgYnV0IGNvbWJpbmUgaXQgd2l0 aCBhIGNvbW1vbiBjaGFuZ2VyCiAgICAgICAgICAodmVyaWxvZy1hdXRvLXJlLXNlYXJjaC1kbyAi L1xcKlxcKEFVVE9TRU5TRVxcfEFTXFwpXFwqLyIgJ3Zlcmlsb2ctYXV0by1zZW5zZSkKICAgICAg ICAgIDs7IEFmdGVyIEFVVE9SRUcqLCBhcyB0aGV5IG1heSBoYXZlIHNldCBzaWduYWwgd2lkdGhz CiAgICAgICAgICAodmVyaWxvZy1hdXRvLXJlLXNlYXJjaC1kbyAiL1xcKkFVVE9SRVNFVFxcKi8i ICd2ZXJpbG9nLWF1dG8tcmVzZXQpCiAgICAgICAgICA7OyBBZnRlciB3ZSd2ZSBjcmVhdGVkIGFs bCBuZXcgdmFyaWFibGVzCiAgICAgICAgICAodmVyaWxvZy1hdXRvLXJlLXNlYXJjaC1kbyAiL1xc KkFVVE9VTlVTRURcXCovIiAndmVyaWxvZy1hdXRvLXVudXNlZCkKICAgICAgICAgIDs7IE11c3Qg YmUgYWZ0ZXIgYWxsIGlucHV0cyBvdXRwdXRzIGFyZSBnZW5lcmF0ZWQKICAgICAgICAgICh2ZXJp bG9nLWF1dG8tcmUtc2VhcmNoLWRvICIvXFwqQVVUT0FSR1xcKi8iICd2ZXJpbG9nLWF1dG8tYXJn KQogICAgICAgICAgOzsgVXNlciBpbnNlcnRzCiAgICAgICAgICAodmVyaWxvZy1hdXRvLXJlLXNl YXJjaC1kbyAiL1xcKkFVVE9JTlNFUlRMQVNUKC4qPylcXCovIiAndmVyaWxvZy1hdXRvLWluc2Vy dC1sYXN0KQogICAgICAgICAgOzsgRml4IGxpbmUgbnVtYmVycyAoY29tbWVudHMgb25seSkKICAg ICAgICAgICh3aGVuIHZlcmlsb2ctYXV0by1pbnN0LXRlbXBsYXRlLW51bWJlcnMKICAgICAgICAg ICAgKHZlcmlsb2ctYXV0by10ZW1wbGF0ZWQtcmVsKSkKICAgICAgICAgICh3aGVuIHZlcmlsb2ct YXV0by10ZW1wbGF0ZS13YXJuLXVudXNlZAogICAgICAgICAgICAodmVyaWxvZy1hdXRvLXRlbXBs YXRlLWxpbnQpKSkpCiAgICAgICAgOzsKICAgICAgICAodmVyaWxvZy1ydW4taG9va3MgJ3Zlcmls b2ctYXV0by1ob29rKQogICAgICAgIDs7CiAgICAgICAgKHdoZW4gdmVyaWxvZy1hdXRvLWRlbGV0 ZS10cmFpbGluZy13aGl0ZXNwYWNlCiAgICAgICAgICAodmVyaWxvZy1kZWxldGUtdHJhaWxpbmct d2hpdGVzcGFjZSkpCiAgICAgICAgOzsKICAgICAgICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxl ICd2ZXJpbG9nLWF1dG8tdXBkYXRlLXRpY2spIChidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaykp CiAgICAgICAgOzsKICAgICAgICA7OyBJZiBlbmQgcmVzdWx0IGlzIHNhbWUgYXMgd2hlbiBzdGFy dGVkLCBjbGVhciBtb2RpZmllZCBmbGFnCiAgICAgICAgKGNvbmQgKChhbmQgb2xkYnVmIChlcXVh bCBvbGRidWYgKGJ1ZmZlci1zdHJpbmcpKSkKICAgICAgICAgICAgICAgKHZlcmlsb2ctcmVzdG9y ZS1idWZmZXItbW9kaWZpZWQtcCBuaWwpCiAgICAgICAgICAgICAgICh1bmxlc3Mgbm9uaW50ZXJh Y3RpdmUgKG1lc3NhZ2UgIlVwZGF0aW5nIEFVVE9zLi4uZG9uZSAobm8gY2hhbmdlcykiKSkpCiAg ICAgICAgICAgICAgKHQgKHVubGVzcyBub25pbnRlcmFjdGl2ZSAobWVzc2FnZSAiVXBkYXRpbmcg QVVUT3MuLi5kb25lIikpKSkKICAgICAgICA7OyBFbmQgb2Ygc2F2ZS1jYWNoZQogICAgICAgICkp KSkpCgwKOzs7IFNrZWxldG9uczoKOzsKCihkZWZ2YXIgdmVyaWxvZy10ZW1wbGF0ZS1tYXAKICAo bGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgIChkZWZpbmUta2V5IG1hcCAiYSIg J3Zlcmlsb2ctc2stYWx3YXlzKQogICAgKGRlZmluZS1rZXkgbWFwICJiIiAndmVyaWxvZy1zay1i ZWdpbikKICAgIChkZWZpbmUta2V5IG1hcCAiYyIgJ3Zlcmlsb2ctc2stY2FzZSkKICAgIChkZWZp bmUta2V5IG1hcCAiZiIgJ3Zlcmlsb2ctc2stZm9yKQogICAgKGRlZmluZS1rZXkgbWFwICJnIiAn dmVyaWxvZy1zay1nZW5lcmF0ZSkKICAgIChkZWZpbmUta2V5IG1hcCAiaCIgJ3Zlcmlsb2ctc2st aGVhZGVyKQogICAgKGRlZmluZS1rZXkgbWFwICJpIiAndmVyaWxvZy1zay1pbml0aWFsKQogICAg KGRlZmluZS1rZXkgbWFwICJqIiAndmVyaWxvZy1zay1mb3JrKQogICAgKGRlZmluZS1rZXkgbWFw ICJtIiAndmVyaWxvZy1zay1tb2R1bGUpCiAgICAoZGVmaW5lLWtleSBtYXAgIm8iICd2ZXJpbG9n LXNrLW92bS1jbGFzcykKICAgIChkZWZpbmUta2V5IG1hcCAicCIgJ3Zlcmlsb2ctc2stcHJpbWl0 aXZlKQogICAgKGRlZmluZS1rZXkgbWFwICJyIiAndmVyaWxvZy1zay1yZXBlYXQpCiAgICAoZGVm aW5lLWtleSBtYXAgInMiICd2ZXJpbG9nLXNrLXNwZWNpZnkpCiAgICAoZGVmaW5lLWtleSBtYXAg InQiICd2ZXJpbG9nLXNrLXRhc2spCiAgICAoZGVmaW5lLWtleSBtYXAgInUiICd2ZXJpbG9nLXNr LXV2bS1vYmplY3QpCiAgICAoZGVmaW5lLWtleSBtYXAgInciICd2ZXJpbG9nLXNrLXdoaWxlKQog ICAgKGRlZmluZS1rZXkgbWFwICJ4IiAndmVyaWxvZy1zay1jYXNleCkKICAgIChkZWZpbmUta2V5 IG1hcCAieiIgJ3Zlcmlsb2ctc2stY2FzZXopCiAgICAoZGVmaW5lLWtleSBtYXAgIj8iICd2ZXJp bG9nLXNrLWlmKQogICAgKGRlZmluZS1rZXkgbWFwICI6IiAndmVyaWxvZy1zay1lbHNlLWlmKQog ICAgKGRlZmluZS1rZXkgbWFwICIvIiAndmVyaWxvZy1zay1jb21tZW50KQogICAgKGRlZmluZS1r ZXkgbWFwICJBIiAndmVyaWxvZy1zay1hc3NpZ24pCiAgICAoZGVmaW5lLWtleSBtYXAgIkYiICd2 ZXJpbG9nLXNrLWZ1bmN0aW9uKQogICAgKGRlZmluZS1rZXkgbWFwICJJIiAndmVyaWxvZy1zay1p bnB1dCkKICAgIChkZWZpbmUta2V5IG1hcCAiTyIgJ3Zlcmlsb2ctc2stb3V0cHV0KQogICAgKGRl ZmluZS1rZXkgbWFwICJTIiAndmVyaWxvZy1zay1zdGF0ZS1tYWNoaW5lKQogICAgKGRlZmluZS1r ZXkgbWFwICI9IiAndmVyaWxvZy1zay1pbm91dCkKICAgIChkZWZpbmUta2V5IG1hcCAiVSIgJ3Zl cmlsb2ctc2stdXZtLWNvbXBvbmVudCkKICAgIChkZWZpbmUta2V5IG1hcCAiVyIgJ3Zlcmlsb2ct c2std2lyZSkKICAgIChkZWZpbmUta2V5IG1hcCAiUiIgJ3Zlcmlsb2ctc2stcmVnKQogICAgKGRl ZmluZS1rZXkgbWFwICJEIiAndmVyaWxvZy1zay1kZWZpbmUtc2lnbmFsKQogICAgbWFwKQogICJL ZXltYXAgdXNlZCBpbiBWZXJpbG9nIG1vZGUgZm9yIHNtYXJ0IHRlbXBsYXRlIG9wZXJhdGlvbnMu IikKCgo7Owo7OyBQbGFjZSB0aGUgdGVtcGxhdGVzIGludG8gVmVyaWxvZyBNb2RlLiAgVGhleSBt YXkgYmUgaW5zZXJ0ZWQgdW5kZXIgYW55IGtleS4KOzsgQy1jIEMtdCB3aWxsIGJlIHRoZSBkZWZh dWx0LiAgSWYgeW91IHVzZSB0ZW1wbGF0ZXMgYSBsb3QsIHlvdQo7OyBtYXkgd2FudCB0byBjb25z aWRlciBtb3ZpbmcgdGhlIGJpbmRpbmcgdG8gYW5vdGhlciBrZXkgaW4geW91ciBpbml0Cjs7IGZp bGUuCjs7Cjs7IE5vdGUgXEMtYyBhbmQgbGV0dGVyIGFyZSByZXNlcnZlZCBmb3IgdXNlcnMKKGRl ZmluZS1rZXkgdmVyaWxvZy1tb2RlLW1hcCAiXEMtY1xDLXQiIHZlcmlsb2ctdGVtcGxhdGUtbWFw KQoKOzsgLS0tLSBzdGF0ZW1lbnQgc2tlbGV0b25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQoKKGRlZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLXByb21wdC1jb25k aXRpb24KICAiUHJvbXB0IGZvciB0aGUgbG9vcCBjb25kaXRpb24uIgogICJbY29uZGl0aW9uXTog IiBzdHIgKQoKKGRlZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLXByb21wdC1pbml0CiAgIlByb21w dCBmb3IgdGhlIGxvb3AgaW5pdCBzdGF0ZW1lbnQuIgogICJbaW5pdGlhbCBzdGF0ZW1lbnRdOiAi IHN0ciApCgooZGVmaW5lLXNrZWxldG9uIHZlcmlsb2ctc2stcHJvbXB0LWluYwogICJQcm9tcHQg Zm9yIHRoZSBsb29wIGluY3JlbWVudCBzdGF0ZW1lbnQuIgogICJbaW5jcmVtZW50IHN0YXRlbWVu dF06ICIgc3RyICkKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay1wcm9tcHQtbmFtZQogICJQ cm9tcHQgZm9yIHRoZSBuYW1lIG9mIHNvbWV0aGluZy4iCiAgIltuYW1lXTogIiBzdHIpCgooZGVm aW5lLXNrZWxldG9uIHZlcmlsb2ctc2stcHJvbXB0LWNsb2NrCiAgIlByb21wdCBmb3IgdGhlIG5h bWUgb2Ygc29tZXRoaW5nLiIKICAibmFtZSBhbmQgZWRnZSBvZiBjbG9jayhzKTogIiBzdHIpCgoo ZGVmdmFyIHZlcmlsb2ctc2stcmVzZXQgbmlsKQooZGVmdW4gdmVyaWxvZy1zay1wcm9tcHQtcmVz ZXQgKCkKICAiUHJvbXB0IGZvciB0aGUgbmFtZSBvZiBhIHN0YXRlIG1hY2hpbmUgcmVzZXQuIgog IChzZXRxIHZlcmlsb2ctc2stcmVzZXQgKHJlYWQtc3RyaW5nICJuYW1lIG9mIHJlc2V0OiAiICJy c3QiKSkpCgoKKGRlZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLXByb21wdC1zdGF0ZS1zZWxlY3Rv cgogICJQcm9tcHQgZm9yIHRoZSBuYW1lIG9mIGEgc3RhdGUgbWFjaGluZSBzZWxlY3Rvci4iCiAg Im5hbWUgb2Ygc2VsZWN0b3IgKGVnIHthLGIsYyxkfSk6ICIgc3RyICkKCihkZWZpbmUtc2tlbGV0 b24gdmVyaWxvZy1zay1wcm9tcHQtb3V0cHV0CiAgIlByb21wdCBmb3IgdGhlIG5hbWUgb2Ygc29t ZXRoaW5nLiIKICAib3V0cHV0OiAiIHN0cikKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay1w cm9tcHQtbXNiCiAgIlByb21wdCBmb3IgbW9zdCBzaWduaWZpY2FudCBiaXQgc3BlY2lmaWNhdGlv bi4iCiAgIm1zYjoiIHN0ciAmID86ICYgJyh2ZXJpbG9nLXNrLXByb21wdC1sc2IpIHwgLTEgKQoK KGRlZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLXByb21wdC1sc2IKICAiUHJvbXB0IGZvciBsZWFz dCBzaWduaWZpY2FudCBiaXQgc3BlY2lmaWNhdGlvbi4iCiAgImxzYjoiIHN0ciApCgooZGVmdmFy IHZlcmlsb2ctc2stcCBuaWwpCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay1wcm9tcHQtd2lk dGgKICAiUHJvbXB0IGZvciBhIHdpZHRoIHNwZWNpZmljYXRpb24uIgogICgpCiAgKHByb2duCiAg ICAoc2V0cSB2ZXJpbG9nLXNrLXAgKHBvaW50KSkKICAgICh2ZXJpbG9nLXNrLXByb21wdC1tc2Ip CiAgICAoaWYgKD4gKHBvaW50KSB2ZXJpbG9nLXNrLXApICJdICIgIiAiKSkpCgooZGVmdW4gdmVy aWxvZy1zay1oZWFkZXIgKCkKICAiSW5zZXJ0IGEgZGVzY3JpcHRpdmUgaGVhZGVyIGF0IHRoZSB0 b3Agb2YgdGhlIGZpbGUuClNlZSBhbHNvIGB2ZXJpbG9nLWhlYWRlcicgZm9yIGFuIGFsdGVybmF0 aXZlIGZvcm1hdC4iCiAgKGludGVyYWN0aXZlICIqIikKICAoc2F2ZS1leGN1cnNpb24KICAgIChn b3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAodmVyaWxvZy1zay1oZWFkZXItdG1wbCkpKQoKKGRl ZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLWhlYWRlci10bXBsCiAgIkluc2VydCBhIGNvbW1lbnQg YmxvY2sgY29udGFpbmluZyB0aGUgbW9kdWxlIHRpdGxlLCBhdXRob3IsIGV0Yy4iCiAgIltEZXNj cmlwdGlvbl06ICIKICAiLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gTW9kZTog VmVyaWxvZyAtKi0iCiAgIlxuLy8gRmlsZW5hbWUgICAgICAgIDogIiAoYnVmZmVyLW5hbWUpCiAg IlxuLy8gRGVzY3JpcHRpb24gICAgIDogIiBzdHIKICAiXG4vLyBBdXRob3IgICAgICAgICAgOiAi ICh1c2VyLWZ1bGwtbmFtZSkKICAiXG4vLyBDcmVhdGVkIE9uICAgICAgOiAiIChjdXJyZW50LXRp bWUtc3RyaW5nKQogICJcbi8vIExhc3QgTW9kaWZpZWQgQnk6ICIgKHVzZXItZnVsbC1uYW1lKQog ICJcbi8vIExhc3QgTW9kaWZpZWQgT246ICIgKGN1cnJlbnQtdGltZS1zdHJpbmcpCiAgIlxuLy8g VXBkYXRlIENvdW50ICAgIDogMCIKICAiXG4vLyBTdGF0dXMgICAgICAgICAgOiBVbmtub3duLCBV c2Ugd2l0aCBjYXV0aW9uISIKICAiXG4iKQoKKGRlZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLW1v ZHVsZQogICJJbnNlcnQgYSBtb2R1bGUgZGVmaW5pdGlvbi4iCiAgKCkKICA+ICJtb2R1bGUgIiAn KHZlcmlsb2ctc2stcHJvbXB0LW5hbWUpICIgKC8qQVVUT0FSRyovICkgOyIgXG4KICA+IF8gXG4K ICA+ICgtIHZlcmlsb2ctaW5kZW50LWxldmVsLWJlaGF2aW9yYWwpICJlbmRtb2R1bGUiIChwcm9n biAoZWxlY3RyaWMtdmVyaWxvZy10ZXJtaW5hdGUtbGluZSkgbmlsKSkKCjs7IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo7OyBEZWZpbmUgYSBkZWZhdWx0IE9WTSBjbGFzcywgd2l0aCBtYWNyb3MgYW5kIG5ldygp Cjs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQoKKGRlZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLW92bS1jbGFz cwogICJJbnNlcnQgYSBjbGFzcyBkZWZpbml0aW9uIgogICgpCiAgPiAiY2xhc3MgIiAoc2V0cSBu YW1lIChza2VsZXRvbi1yZWFkICJOYW1lOiAiKSkgIiBleHRlbmRzICIgKHNrZWxldG9uLXJlYWQg IkV4dGVuZHM6ICIpICI7IiBcbgogID4gXyBcbgogID4gImBvdm1fb2JqZWN0X3V0aWxzX2JlZ2lu KCIgbmFtZSAiKSIgXG4KICA+ICgtIHZlcmlsb2ctaW5kZW50LWxldmVsKSAiIGBvdm1fb2JqZWN0 X3V0aWxzX2VuZCIgXG4KICA+IF8gXG4KICA+ICJmdW5jdGlvbiBuZXcoc3RyaW5nIG5hbWU9XCIi IG5hbWUgIlwiKTsiIFxuCiAgPiAic3VwZXIubmV3KG5hbWUpOyIgXG4KICA+ICgtIHZlcmlsb2ct aW5kZW50LWxldmVsKSAiZW5kZnVuY3Rpb24iIFxuCiAgPiBfIFxuCiAgPiAiZW5kY2xhc3MiIChw cm9nbiAoZWxlY3RyaWMtdmVyaWxvZy10ZXJtaW5hdGUtbGluZSkgbmlsKSkKCihkZWZpbmUtc2tl bGV0b24gdmVyaWxvZy1zay11dm0tb2JqZWN0CiAgIkluc2VydCBhIGNsYXNzIGRlZmluaXRpb24i CiAgKCkKICA+ICJjbGFzcyAiIChzZXRxIG5hbWUgKHNrZWxldG9uLXJlYWQgIk5hbWU6ICIpKSAi IGV4dGVuZHMgIiAoc2tlbGV0b24tcmVhZCAiRXh0ZW5kczogIikgIjsiIFxuCiAgPiBfIFxuCiAg PiAiYHV2bV9vYmplY3RfdXRpbHNfYmVnaW4oIiBuYW1lICIpIiBcbgogID4gKC0gdmVyaWxvZy1p bmRlbnQtbGV2ZWwpICJgdXZtX29iamVjdF91dGlsc19lbmQiIFxuCiAgPiBfIFxuCiAgPiAiZnVu Y3Rpb24gbmV3KHN0cmluZyBuYW1lPVwiIiBuYW1lICJcIik7IiBcbgogID4gInN1cGVyLm5ldyhu YW1lKTsiIFxuCiAgPiAoLSB2ZXJpbG9nLWluZGVudC1sZXZlbCkgImVuZGZ1bmN0aW9uIiBcbgog ID4gXyBcbgogID4gImVuZGNsYXNzIiAocHJvZ24gKGVsZWN0cmljLXZlcmlsb2ctdGVybWluYXRl LWxpbmUpIG5pbCkpCgooZGVmaW5lLXNrZWxldG9uIHZlcmlsb2ctc2stdXZtLWNvbXBvbmVudAog ICJJbnNlcnQgYSBjbGFzcyBkZWZpbml0aW9uIgogICgpCiAgPiAiY2xhc3MgIiAoc2V0cSBuYW1l IChza2VsZXRvbi1yZWFkICJOYW1lOiAiKSkgIiBleHRlbmRzICIgKHNrZWxldG9uLXJlYWQgIkV4 dGVuZHM6ICIpICI7IiBcbgogID4gXyBcbgogID4gImB1dm1fY29tcG9uZW50X3V0aWxzX2JlZ2lu KCIgbmFtZSAiKSIgXG4KICA+ICgtIHZlcmlsb2ctaW5kZW50LWxldmVsKSAiYHV2bV9jb21wb25l bnRfdXRpbHNfZW5kIiBcbgogID4gXyBcbgogID4gImZ1bmN0aW9uIG5ldyhzdHJpbmcgbmFtZT1c IlwiLCB1dm1fY29tcG9uZW50IHBhcmVudCk7IiBcbgogID4gInN1cGVyLm5ldyhuYW1lLCBwYXJl bnQpOyIgXG4KICA+ICgtIHZlcmlsb2ctaW5kZW50LWxldmVsKSAiZW5kZnVuY3Rpb24iIFxuCiAg PiBfIFxuCiAgPiAiZW5kY2xhc3MiIChwcm9nbiAoZWxlY3RyaWMtdmVyaWxvZy10ZXJtaW5hdGUt bGluZSkgbmlsKSkKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay1wcmltaXRpdmUKICAiSW5z ZXJ0IGEgdGFzayBkZWZpbml0aW9uLiIKICAoKQogID4gInByaW1pdGl2ZSAiICcodmVyaWxvZy1z ay1wcm9tcHQtbmFtZSkgIiAoICIgJyh2ZXJpbG9nLXNrLXByb21wdC1vdXRwdXQpICgiaW5wdXQ6 IiAiLCAiIHN0ciApICIgKTsiXG4KICA+IF8gXG4KICA+ICgtIHZlcmlsb2ctaW5kZW50LWxldmVs LWJlaGF2aW9yYWwpICJlbmRwcmltaXRpdmUiIChwcm9nbiAoZWxlY3RyaWMtdmVyaWxvZy10ZXJt aW5hdGUtbGluZSkgbmlsKSkKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay10YXNrCiAgIklu c2VydCBhIHRhc2sgZGVmaW5pdGlvbi4iCiAgKCkKICA+ICJ0YXNrICIgJyh2ZXJpbG9nLXNrLXBy b21wdC1uYW1lKSAmID9cOyBcbgogID4gXyBcbgogID4gImJlZ2luIiBcbgogID4gXG4KICA+ICgt IHZlcmlsb2ctaW5kZW50LWxldmVsLWJlaGF2aW9yYWwpICJlbmQiIFxuCiAgPiAoLSB2ZXJpbG9n LWluZGVudC1sZXZlbC1iZWhhdmlvcmFsKSAiZW5kdGFzayIgKHByb2duIChlbGVjdHJpYy12ZXJp bG9nLXRlcm1pbmF0ZS1saW5lKSBuaWwpKQoKKGRlZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLWZ1 bmN0aW9uCiAgIkluc2VydCBhIGZ1bmN0aW9uIGRlZmluaXRpb24uIgogICgpCiAgPiAiZnVuY3Rp b24gWyIgJyh2ZXJpbG9nLXNrLXByb21wdC13aWR0aCkgfCAtMSAnKHZlcmlsb2ctc2stcHJvbXB0 LW5hbWUpID9cOyBcbgogID4gXyBcbgogID4gImJlZ2luIiBcbgogID4gXG4KICA+ICgtIHZlcmls b2ctaW5kZW50LWxldmVsLWJlaGF2aW9yYWwpICJlbmQiIFxuCiAgPiAoLSB2ZXJpbG9nLWluZGVu dC1sZXZlbC1iZWhhdmlvcmFsKSAiZW5kZnVuY3Rpb24iIChwcm9nbiAoZWxlY3RyaWMtdmVyaWxv Zy10ZXJtaW5hdGUtbGluZSkgbmlsKSkKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay1hbHdh eXMKICAiSW5zZXJ0IGFsd2F5cyBibG9jay4gIFVzZXMgdGhlIG1pbmlidWZmZXIgdG8gcHJvbXB0 CmZvciBzZW5zaXRpdml0eSBsaXN0LiIKICAoKQogID4gImFsd2F5cyBAICggLypBVVRPU0VOU0Uq LyApIGJlZ2luXG4iCiAgPiBfIFxuCiAgPiAoLSB2ZXJpbG9nLWluZGVudC1sZXZlbC1iZWhhdmlv cmFsKSAiZW5kIiBcbiA+CiAgKQoKKGRlZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLWluaXRpYWwK ICAiSW5zZXJ0IGFuIGluaXRpYWwgYmxvY2suIgogICgpCiAgPiAiaW5pdGlhbCBiZWdpblxuIgog ID4gXyBcbgogID4gKC0gdmVyaWxvZy1pbmRlbnQtbGV2ZWwtYmVoYXZpb3JhbCkgImVuZCIgXG4g PiApCgooZGVmaW5lLXNrZWxldG9uIHZlcmlsb2ctc2stc3BlY2lmeQogICJJbnNlcnQgc3BlY2lm eSBibG9jay4gICIKICAoKQogID4gInNwZWNpZnlcbiIKICA+IF8gXG4KICA+ICgtIHZlcmlsb2ct aW5kZW50LWxldmVsLWJlaGF2aW9yYWwpICJlbmRzcGVjaWZ5IiBcbiA+ICkKCihkZWZpbmUtc2tl bGV0b24gdmVyaWxvZy1zay1nZW5lcmF0ZQogICJJbnNlcnQgZ2VuZXJhdGUgYmxvY2suICAiCiAg KCkKICA+ICJnZW5lcmF0ZVxuIgogID4gXyBcbgogID4gKC0gdmVyaWxvZy1pbmRlbnQtbGV2ZWwt YmVoYXZpb3JhbCkgImVuZGdlbmVyYXRlIiBcbiA+ICkKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxv Zy1zay1iZWdpbgogICJJbnNlcnQgYmVnaW4gZW5kIGJsb2NrLiAgVXNlcyB0aGUgbWluaWJ1ZmZl ciB0byBwcm9tcHQgZm9yIG5hbWUuIgogICgpCiAgPiAiYmVnaW4iICcodmVyaWxvZy1zay1wcm9t cHQtbmFtZSkgXG4KICA+IF8gXG4KICA+ICgtIHZlcmlsb2ctaW5kZW50LWxldmVsLWJlaGF2aW9y YWwpICJlbmQiICkKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay1mb3JrCiAgIkluc2VydCBh IGZvcmsgam9pbiBibG9jay4iCiAgKCkKICA+ICJmb3JrXG4iCiAgPiAiYmVnaW4iIFxuCiAgPiBf IFxuCiAgPiAoLSB2ZXJpbG9nLWluZGVudC1sZXZlbC1iZWhhdmlvcmFsKSAiZW5kIiBcbgogID4g ImJlZ2luIiBcbgogID4gXG4KICA+ICgtIHZlcmlsb2ctaW5kZW50LWxldmVsLWJlaGF2aW9yYWwp ICJlbmQiIFxuCiAgPiAoLSB2ZXJpbG9nLWluZGVudC1sZXZlbC1iZWhhdmlvcmFsKSAiam9pbiIg XG4KICA+ICkKCgooZGVmaW5lLXNrZWxldG9uIHZlcmlsb2ctc2stY2FzZQogICJCdWlsZCBza2Vs ZXRvbiBjYXNlIHN0YXRlbWVudCwgcHJvbXB0aW5nIGZvciB0aGUgc2VsZWN0b3IgZXhwcmVzc2lv biwKYW5kIHRoZSBjYXNlIGl0ZW1zLiIKICAiW3NlbGVjdG9yIGV4cHJlc3Npb25dOiAiCiAgPiAi Y2FzZSAoIiBzdHIgIikgIiBcbgogID4gKCJjYXNlIHNlbGVjdG9yOiAiIHN0ciAiOiBiZWdpbiIg XG4gPiBfIFxuID4gKC0gdmVyaWxvZy1pbmRlbnQtbGV2ZWwtYmVoYXZpb3JhbCkgImVuZCIgXG4g PiApCiAgcmVzdW1lOiA+ICAoLSB2ZXJpbG9nLWNhc2UtaW5kZW50KSAiZW5kY2FzZSIgKHByb2du IChlbGVjdHJpYy12ZXJpbG9nLXRlcm1pbmF0ZS1saW5lKSBuaWwpKQoKKGRlZmluZS1za2VsZXRv biB2ZXJpbG9nLXNrLWNhc2V4CiAgIkJ1aWxkIHNrZWxldG9uIGNhc2V4IHN0YXRlbWVudCwgcHJv bXB0aW5nIGZvciB0aGUgc2VsZWN0b3IgZXhwcmVzc2lvbiwKYW5kIHRoZSBjYXNlIGl0ZW1zLiIK ICAiW3NlbGVjdG9yIGV4cHJlc3Npb25dOiAiCiAgPiAiY2FzZXggKCIgc3RyICIpICIgXG4KICA+ ICgiY2FzZSBzZWxlY3RvcjogIiBzdHIgIjogYmVnaW4iIFxuID4gXyBcbiA+ICgtIHZlcmlsb2ct aW5kZW50LWxldmVsLWJlaGF2aW9yYWwpICJlbmQiIFxuID4gKQogIHJlc3VtZTogPiAgKC0gdmVy aWxvZy1jYXNlLWluZGVudCkgImVuZGNhc2UiIChwcm9nbiAoZWxlY3RyaWMtdmVyaWxvZy10ZXJt aW5hdGUtbGluZSkgbmlsKSkKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay1jYXNlegogICJC dWlsZCBza2VsZXRvbiBjYXNleiBzdGF0ZW1lbnQsIHByb21wdGluZyBmb3IgdGhlIHNlbGVjdG9y IGV4cHJlc3Npb24sCmFuZCB0aGUgY2FzZSBpdGVtcy4iCiAgIltzZWxlY3RvciBleHByZXNzaW9u XTogIgogID4gImNhc2V6ICgiIHN0ciAiKSAiIFxuCiAgPiAoImNhc2Ugc2VsZWN0b3I6ICIgc3Ry ICI6IGJlZ2luIiBcbiA+IF8gXG4gPiAoLSB2ZXJpbG9nLWluZGVudC1sZXZlbC1iZWhhdmlvcmFs KSAiZW5kIiBcbiA+ICkKICByZXN1bWU6ID4gICgtIHZlcmlsb2ctY2FzZS1pbmRlbnQpICJlbmRj YXNlIiAocHJvZ24gKGVsZWN0cmljLXZlcmlsb2ctdGVybWluYXRlLWxpbmUpIG5pbCkpCgooZGVm aW5lLXNrZWxldG9uIHZlcmlsb2ctc2staWYKICAiSW5zZXJ0IGEgc2tlbGV0b24gaWYgc3RhdGVt ZW50LiIKICA+ICJpZiAoIiAnKHZlcmlsb2ctc2stcHJvbXB0LWNvbmRpdGlvbikgJiAiKSIgIiBi ZWdpbiIgXG4KICA+IF8gXG4KICA+ICgtIHZlcmlsb2ctaW5kZW50LWxldmVsLWJlaGF2aW9yYWwp ICJlbmQgIiBcbiApCgooZGVmaW5lLXNrZWxldG9uIHZlcmlsb2ctc2stZWxzZS1pZgogICJJbnNl cnQgYSBza2VsZXRvbiBlbHNlIGlmIHN0YXRlbWVudC4iCiAgPiAodmVyaWxvZy1pbmRlbnQtbGlu ZSkgImVsc2UgaWYgKCIKICAocHJvZ24gKHNldHEgdmVyaWxvZy1zay1wIChwb2ludCkpIG5pbCkg Jyh2ZXJpbG9nLXNrLXByb21wdC1jb25kaXRpb24pIChpZiAoPiAocG9pbnQpIHZlcmlsb2ctc2st cCkgIikgIiAtMSApICYgIiBiZWdpbiIgXG4KICA+IF8gXG4KICA+ICJlbmQiIChwcm9nbiAoZWxl Y3RyaWMtdmVyaWxvZy10ZXJtaW5hdGUtbGluZSkgbmlsKSkKCihkZWZpbmUtc2tlbGV0b24gdmVy aWxvZy1zay1kYXRhZGVmCiAgIkNvbW1vbiByb3V0aW5lIHRvIGdldCBkYXRhIGRlZmluaXRpb24u IgogICgpCiAgJyh2ZXJpbG9nLXNrLXByb21wdC13aWR0aCkgfCAtMSAoIm5hbWUgKFJFVCB0byBl bmQpOiIgc3RyICIsICIpIC0yICI7IiBcbikKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay1p bnB1dAogICJJbnNlcnQgYW4gaW5wdXQgZGVmaW5pdGlvbi4iCiAgKCkKICA+ICJpbnB1dCAgWyIg Jyh2ZXJpbG9nLXNrLWRhdGFkZWYpKQoKKGRlZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLW91dHB1 dAogICJJbnNlcnQgYW4gb3V0cHV0IGRlZmluaXRpb24uIgogICgpCiAgPiAib3V0cHV0IFsiICco dmVyaWxvZy1zay1kYXRhZGVmKSkKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay1pbm91dAog ICJJbnNlcnQgYW4gaW5vdXQgZGVmaW5pdGlvbi4iCiAgKCkKICA+ICJpbm91dCAgWyIgJyh2ZXJp bG9nLXNrLWRhdGFkZWYpKQoKKGRlZnZhciB2ZXJpbG9nLXNrLXNpZ25hbCBuaWwpCihkZWZpbmUt c2tlbGV0b24gdmVyaWxvZy1zay1kZWYtcmVnCiAgIkluc2VydCBhIHJlZyBkZWZpbml0aW9uLiIK ICAoKQogID4gInJlZyAgICBbIiAnKHZlcmlsb2ctc2stcHJvbXB0LXdpZHRoKSB8IC0xIHZlcmls b2ctc2stc2lnbmFsICI7IiBcbiAodmVyaWxvZy1wcmV0dHktZGVjbGFyYXRpb25zLWF1dG8pICkK CihkZWZ1biB2ZXJpbG9nLXNrLWRlZmluZS1zaWduYWwgKCkKICAiSW5zZXJ0IGEgZGVmaW5pdGlv biBvZiBzaWduYWwgdW5kZXIgcG9pbnQgYXQgdG9wIG9mIG1vZHVsZS4iCiAgKGludGVyYWN0aXZl ICIqIikKICAobGV0KiAoKHNpZy1jaGFycyAiYS16QS1aMC05XyIpCgkgKHYxIChidWZmZXItc3Vi c3RyaW5nCiAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAgICAoc2tp cC1jaGFycy1iYWNrd2FyZCBzaWctY2hhcnMpCiAgICAgICAgICAgICAgICAocG9pbnQpKQogICAg ICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9y d2FyZCBzaWctY2hhcnMpCiAgICAgICAgICAgICAgICAocG9pbnQpKSkpKQogICAgKGlmIChub3Qg KG1lbWJlciB2MSB2ZXJpbG9nLWtleXdvcmRzKSkKCShzYXZlLWV4Y3Vyc2lvbgoJICAoc2V0cSB2 ZXJpbG9nLXNrLXNpZ25hbCB2MSkKCSAgKHZlcmlsb2ctYmVnLW9mLWRlZnVuKQoJICAodmVyaWxv Zy1lbmQtb2Ytc3RhdGVtZW50KQoJICAodmVyaWxvZy1mb3J3YXJkLXN5bnRhY3RpYy13cykKCSAg KHZlcmlsb2ctc2stZGVmLXJlZykKCSAgKG1lc3NhZ2UgInNpZ25hbCBhdCBwb2ludCBpcyAlcyIg djEpKQogICAgICAobWVzc2FnZSAib2JqZWN0IGF0IHBvaW50ICglcykgaXMgYSBrZXl3b3JkIiB2 MSkpKSkKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay13aXJlCiAgIkluc2VydCBhIHdpcmUg ZGVmaW5pdGlvbi4iCiAgKCkKICA+ICJ3aXJlICAgWyIgJyh2ZXJpbG9nLXNrLWRhdGFkZWYpKQoK KGRlZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLXJlZwogICJJbnNlcnQgYSByZWcgZGVmaW5pdGlv bi4iCiAgKCkKICA+ICJyZWcgICBbIiAnKHZlcmlsb2ctc2stZGF0YWRlZikpCgooZGVmaW5lLXNr ZWxldG9uIHZlcmlsb2ctc2stYXNzaWduCiAgIkluc2VydCBhIHNrZWxldG9uIGFzc2lnbiBzdGF0 ZW1lbnQuIgogICgpCiAgPiAiYXNzaWduICIgJyh2ZXJpbG9nLXNrLXByb21wdC1uYW1lKSAiID0g IiBfICI7IiBcbikKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay13aGlsZQogICJJbnNlcnQg YSBza2VsZXRvbiB3aGlsZSBsb29wIHN0YXRlbWVudC4iCiAgKCkKICA+ICJ3aGlsZSAoIiAgJyh2 ZXJpbG9nLXNrLXByb21wdC1jb25kaXRpb24pICAiKSBiZWdpbiIgXG4KICA+IF8gXG4KICA+ICgt IHZlcmlsb2ctaW5kZW50LWxldmVsLWJlaGF2aW9yYWwpICJlbmQgIiAocHJvZ24gKGVsZWN0cmlj LXZlcmlsb2ctdGVybWluYXRlLWxpbmUpIG5pbCkpCgooZGVmaW5lLXNrZWxldG9uIHZlcmlsb2ct c2stcmVwZWF0CiAgIkluc2VydCBhIHNrZWxldG9uIHJlcGVhdCBsb29wIHN0YXRlbWVudC4iCiAg KCkKICA+ICJyZXBlYXQgKCIgICcodmVyaWxvZy1zay1wcm9tcHQtY29uZGl0aW9uKSAgIikgYmVn aW4iIFxuCiAgPiBfIFxuCiAgPiAoLSB2ZXJpbG9nLWluZGVudC1sZXZlbC1iZWhhdmlvcmFsKSAi ZW5kICIgKHByb2duIChlbGVjdHJpYy12ZXJpbG9nLXRlcm1pbmF0ZS1saW5lKSBuaWwpKQoKKGRl ZmluZS1za2VsZXRvbiB2ZXJpbG9nLXNrLWZvcgogICJJbnNlcnQgYSBza2VsZXRvbiB3aGlsZSBs b29wIHN0YXRlbWVudC4iCiAgKCkKICA+ICJmb3IgKCIKICAnKHZlcmlsb2ctc2stcHJvbXB0LWlu aXQpICI7ICIKICAnKHZlcmlsb2ctc2stcHJvbXB0LWNvbmRpdGlvbikgIjsgIgogICcodmVyaWxv Zy1zay1wcm9tcHQtaW5jKQogICIpIGJlZ2luIiBcbgogID4gXyBcbgogID4gKC0gdmVyaWxvZy1p bmRlbnQtbGV2ZWwtYmVoYXZpb3JhbCkgImVuZCAiIChwcm9nbiAoZWxlY3RyaWMtdmVyaWxvZy10 ZXJtaW5hdGUtbGluZSkgbmlsKSkKCihkZWZpbmUtc2tlbGV0b24gdmVyaWxvZy1zay1jb21tZW50 CiAgIkluc2VydHMgdGhyZWUgY29tbWVudCBsaW5lcywgbWFraW5nIGEgZGlzcGxheSBjb21tZW50 LiIKICAoKQogID4gIi8qXG4iCiAgPiAiKiAiIF8gXG4KICA+ICIqLyIpCgooZGVmaW5lLXNrZWxl dG9uIHZlcmlsb2ctc2stc3RhdGUtbWFjaGluZQogICJJbnNlcnQgYSBzdGF0ZSBtYWNoaW5lIGRl ZmluaXRpb24uIgogICJOYW1lIG9mIHN0YXRlIHZhcmlhYmxlOiAiCiAgJyhzZXRxIGlucHV0ICJz dGF0ZSIpCiAgPiAiLy8gU3RhdGUgcmVnaXN0ZXJzIGZvciAiIHN0ciB8IC0yMyBcbgogICcoc2V0 cSB2ZXJpbG9nLXNrLXN0YXRlIHN0cikKICA+ICJyZWcgWyIgJyh2ZXJpbG9nLXNrLXByb21wdC13 aWR0aCkgfCAtMSB2ZXJpbG9nLXNrLXN0YXRlICIsIG5leHRfIiB2ZXJpbG9nLXNrLXN0YXRlID9c OyBcbgogICcoc2V0cSBpbnB1dCBuaWwpCiAgPiBcbgogID4gIi8vIFN0YXRlIEZGIGZvciAiIHZl cmlsb2ctc2stc3RhdGUgXG4KICA+ICJhbHdheXMgQCAoICIgKHJlYWQtc3RyaW5nICJjbG9jazoi ICJwb3NlZGdlIGNsayIpICIgb3IgIiAodmVyaWxvZy1zay1wcm9tcHQtcmVzZXQpICIgKSBiZWdp biIgXG4KICA+ICJpZiAoICIgdmVyaWxvZy1zay1yZXNldCAiICkgIiB2ZXJpbG9nLXNrLXN0YXRl ICIgPSAwOyBlbHNlIiBcbgogID4gdmVyaWxvZy1zay1zdGF0ZSAiID0gbmV4dF8iIHZlcmlsb2ct c2stc3RhdGUgP1w7IFxuCiAgPiAoLSB2ZXJpbG9nLWluZGVudC1sZXZlbC1iZWhhdmlvcmFsKSAi ZW5kIiAocHJvZ24gKGVsZWN0cmljLXZlcmlsb2ctdGVybWluYXRlLWxpbmUpIG5pbCkKICA+IFxu CiAgPiAiLy8gTmV4dCBTdGF0ZSBMb2dpYyBmb3IgIiB2ZXJpbG9nLXNrLXN0YXRlIFxuCiAgPiAi YWx3YXlzIEAgKCAvKkFVVE9TRU5TRSovICkgYmVnaW5cbiIKICA+ICJjYXNlICgiICcodmVyaWxv Zy1zay1wcm9tcHQtc3RhdGUtc2VsZWN0b3IpICIpICIgXG4KICA+ICgiY2FzZSBzZWxlY3Rvcjog IiBzdHIgIjogYmVnaW4iIFxuID4gIm5leHRfIiB2ZXJpbG9nLXNrLXN0YXRlICIgPSAiIF8gIjsi IFxuID4gKC0gdmVyaWxvZy1pbmRlbnQtbGV2ZWwtYmVoYXZpb3JhbCkgImVuZCIgXG4gKQogIHJl c3VtZTogPiAgKC0gdmVyaWxvZy1jYXNlLWluZGVudCkgImVuZGNhc2UiIChwcm9nbiAoZWxlY3Ry aWMtdmVyaWxvZy10ZXJtaW5hdGUtbGluZSkgbmlsKQogID4gKC0gdmVyaWxvZy1pbmRlbnQtbGV2 ZWwtYmVoYXZpb3JhbCkgImVuZCIgKHByb2duIChlbGVjdHJpYy12ZXJpbG9nLXRlcm1pbmF0ZS1s aW5lKSBuaWwpKQoMCjs7OyBNb3VzZSBFdmVudHM6Cjs7Cjs7IEluY2x1ZGUgZmlsZSBsb2FkaW5n IHdpdGggbW91c2UvcmV0dXJuIGV2ZW50Cjs7Cjs7IGlkZWEgJiBmaXJzdCBpbXBsLjogTS4gUm91 YXQgKGVsZG8tbW9kZS5lbCkKOzsgc2Vjb25kIChlbWFjcy94ZW1hY3MpIGltcGwuOiBHLiBWYW4g ZGVyIFBsYXMgKHNwaWNlLW1vZGUuZWwpCgooaWYgKGZlYXR1cmVwICd4ZW1hY3MpCiAgICAocmVx dWlyZSAnb3ZlcmxheSkpCgooZGVmY29uc3QgdmVyaWxvZy1pbmNsdWRlLWZpbGUtcmVnZXhwCiAg Il5gaW5jbHVkZVxccy0rXCJcXChbXlxuXCJdKlxcKVwiIgogICJSZWdleHAgdGhhdCBtYXRjaGVz IHRoZSBpbmNsdWRlIGZpbGUuIikKCihkZWZ2YXIgdmVyaWxvZy1tb2RlLW1vdXNlLW1hcAogIChs ZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKSA7IGFzIGRlc2NyaWJlZCBpbiBpbmZvIHBh Z2VzLCBtYWtlIGEgbWFwCiAgICAoc2V0LWtleW1hcC1wYXJlbnQgbWFwIHZlcmlsb2ctbW9kZS1t YXApCiAgICA7OyBtb3VzZSBidXR0b24gYmluZGluZ3MKICAgIChkZWZpbmUta2V5IG1hcCAiXHIi ICAgICAgICAgICAgJ3Zlcmlsb2ctbG9hZC1maWxlLWF0LXBvaW50KQogICAgKGlmIChmZWF0dXJl cCAneGVtYWNzKQoJKGRlZmluZS1rZXkgbWFwICdidXR0b24yICAgICd2ZXJpbG9nLWxvYWQtZmls ZS1hdC1tb3VzZSk7ZmZhcC1hdC1tb3VzZSA/CiAgICAgIChkZWZpbmUta2V5IG1hcCBbbW91c2Ut Ml0gICAgICd2ZXJpbG9nLWxvYWQtZmlsZS1hdC1tb3VzZSkpCiAgICAoaWYgKGZlYXR1cmVwICd4 ZW1hY3MpCgkoZGVmaW5lLWtleSBtYXAgJ1NoLWJ1dHRvbjIgJ21vdXNlLXlhbmspIDsgeW91IHdh bm5hIHBhc3RlIGRvbid0IHlvdSA/CiAgICAgIChkZWZpbmUta2V5IG1hcCBbUy1tb3VzZS0yXSAg ICdtb3VzZS15YW5rLWF0LWNsaWNrKSkKICAgIG1hcCkKICAiTWFwIGNvbnRhaW5pbmcgbW91c2Ug YmluZGluZ3MgZm9yIGB2ZXJpbG9nLW1vZGUnLiIpCgoKKGRlZnVuIHZlcmlsb2ctaGlnaGxpZ2h0 LXJlZ2lvbiAoYmVnIGVuZCBfb2xkLWxlbikKICAiQ29sb3JpemUgaW5jbHVkZWQgZmlsZXMgYW5k IG1vZHVsZXMgaW4gdGhlIChjaGFuZ2VkPykgcmVnaW9uLgpDbGlja2luZyBvbiB0aGUgbWlkZGxl LW1vdXNlIGJ1dHRvbiBsb2FkcyB0aGVtIGluIGEgYnVmZmVyIChhcyBpbiBkaXJlZCkuIgogICh3 aGVuIChvciB2ZXJpbG9nLWhpZ2hsaWdodC1pbmNsdWRlcwoJICAgIHZlcmlsb2ctaGlnaGxpZ2h0 LW1vZHVsZXMpCiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKHNhdmUtbWF0Y2gtZGF0YSAgOyBB IHF1ZXJ5LXJlcGxhY2UgbWF5IGNhbGwgdGhpcyBmdW5jdGlvbiAtIGRvIG5vdCBkaXN0dXJiCgko dmVyaWxvZy1zYXZlLWJ1ZmZlci1zdGF0ZQoJICh2ZXJpbG9nLXNhdmUtc2Nhbi1jYWNoZQoJICAo bGV0IChlbmQtcG9pbnQpCgkgICAgKGdvdG8tY2hhciBlbmQpCgkgICAgKHNldHEgZW5kLXBvaW50 IChwb2ludC1hdC1lb2wpKQoJICAgIChnb3RvLWNoYXIgYmVnKQoJICAgIChiZWdpbm5pbmctb2Yt bGluZSkgIDsgc2NhbiBlbnRpcmUgbGluZQoJICAgIDs7IGRlbGV0ZSBvdmVybGF5cyBleGlzdGlu ZyBvbiB0aGlzIGxpbmUKCSAgICAobGV0ICgob3ZlcmxheXMgKG92ZXJsYXlzLWluIChwb2ludCkg ZW5kLXBvaW50KSkpCgkgICAgICAod2hpbGUgb3ZlcmxheXMKCQkoaWYgKGFuZAoJCSAgICAgKG92 ZXJsYXktZ2V0IChjYXIgb3ZlcmxheXMpICdkZXRhY2hhYmxlKQoJCSAgICAgKG9yIChvdmVybGF5 LWdldCAoY2FyIG92ZXJsYXlzKSAndmVyaWxvZy1pbmNsdWRlLWZpbGUpCgkJCSAob3ZlcmxheS1n ZXQgKGNhciBvdmVybGF5cykgJ3Zlcmlsb2ctaW5zdC1tb2R1bGUpKSkKCQkgICAgKGRlbGV0ZS1v dmVybGF5IChjYXIgb3ZlcmxheXMpKSkKCQkoc2V0cSBvdmVybGF5cyAoY2RyIG92ZXJsYXlzKSkp KQoJICAgIDs7CgkgICAgOzsgbWFrZSBuZXcgaW5jbHVkZSBvdmVybGF5cwoJICAgICh3aGVuIHZl cmlsb2ctaGlnaGxpZ2h0LWluY2x1ZGVzCgkgICAgICAod2hpbGUgKHNlYXJjaC1mb3J3YXJkLXJl Z2V4cCB2ZXJpbG9nLWluY2x1ZGUtZmlsZS1yZWdleHAgZW5kLXBvaW50IHQpCgkJKGdvdG8tY2hh ciAobWF0Y2gtYmVnaW5uaW5nIDEpKQoJCShsZXQgKChvdiAobWFrZS1vdmVybGF5IChtYXRjaC1i ZWdpbm5pbmcgMSkgKG1hdGNoLWVuZCAxKSkpKQoJCSAgKG92ZXJsYXktcHV0IG92ICdzdGFydC1j bG9zZWQgJ3QpCgkJICAob3ZlcmxheS1wdXQgb3YgJ2VuZC1jbG9zZWQgJ3QpCgkJICAob3Zlcmxh eS1wdXQgb3YgJ2V2YXBvcmF0ZSAndCkKCQkgIChvdmVybGF5LXB1dCBvdiAndmVyaWxvZy1pbmNs dWRlLWZpbGUgJ3QpCgkJICAob3ZlcmxheS1wdXQgb3YgJ21vdXNlLWZhY2UgJ2hpZ2hsaWdodCkK CQkgIChvdmVybGF5LXB1dCBvdiAnbG9jYWwtbWFwIHZlcmlsb2ctbW9kZS1tb3VzZS1tYXApKSkp CgkgICAgOzsKCSAgICA7OyBtYWtlIG5ldyBtb2R1bGUgb3ZlcmxheXMKCSAgICAoZ290by1jaGFy IGJlZykKCSAgICA7OyBUaGlzIHNjYW5uZXIgaXMgc3ludGF4LWZyYWdpbGUsIHNvIGRvbid0IGdl dCBiZW50CgkgICAgKHdoZW4gdmVyaWxvZy1oaWdobGlnaHQtbW9kdWxlcwoJICAgICAgKGNvbmRp dGlvbi1jYXNlIG5pbAoJCSAgKHdoaWxlICh2ZXJpbG9nLXJlLXNlYXJjaC1mb3J3YXJkLXF1aWNr ICJcXCgvXFwqQVVUT0lOU1RcXCgoLio/KVxcKT9cXCovXFx8XFwuXFwqXFwpIiBlbmQtcG9pbnQg dCkKCQkgICAgKHNhdmUtZXhjdXJzaW9uCgkJICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5u aW5nIDApKQoJCSAgICAgICh1bmxlc3MgKHZlcmlsb2ctaW5zaWRlLWNvbW1lbnQtb3Itc3RyaW5n LXApCiAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJpbG9nLXJlYWQtaW5zdC1tb2R1bGUtbWF0 Y2hlcikgIDsgc2V0cyBtYXRjaCAwCgkJCShsZXQqICgob3YgKG1ha2Utb3ZlcmxheSAobWF0Y2gt YmVnaW5uaW5nIDApIChtYXRjaC1lbmQgMCkpKSkKCQkJICAob3ZlcmxheS1wdXQgb3YgJ3N0YXJ0 LWNsb3NlZCAndCkKCQkJICAob3ZlcmxheS1wdXQgb3YgJ2VuZC1jbG9zZWQgJ3QpCgkJCSAgKG92 ZXJsYXktcHV0IG92ICdldmFwb3JhdGUgJ3QpCgkJCSAgKG92ZXJsYXktcHV0IG92ICd2ZXJpbG9n LWluc3QtbW9kdWxlICd0KQoJCQkgIChvdmVybGF5LXB1dCBvdiAnbW91c2UtZmFjZSAnaGlnaGxp Z2h0KQoJCQkgIChvdmVybGF5LXB1dCBvdiAnbG9jYWwtbWFwIHZlcmlsb2ctbW9kZS1tb3VzZS1t YXApKSkpKQoJCShlcnJvciBuaWwpKSkKCSAgICA7OwoJICAgIDs7IEZ1dHVyZSBoaWdobGlnaHRz OgoJICAgIDs7ICB2YXJpYWJsZXMgLSBtYWtlIGFuIE9jY3VyIGJ1ZmZlciBvZiB3aGVyZSByZWZl cmVuY2VkCgkgICAgOzsgIHBpbnMgLSBtYWtlIGFuIE9jY3VyIGJ1ZmZlciBvZiB0aGUgc2lnIGlu IHRoZSBkZWNsYXJhdGlvbiBtb2R1bGUKCSAgICApKSkpKSkpCgooZGVmdW4gdmVyaWxvZy1oaWdo bGlnaHQtYnVmZmVyICgpCiAgIkNvbG9yaXplIGluY2x1ZGVkIGZpbGVzIGFuZCBtb2R1bGVzIGFj cm9zcyB0aGUgd2hvbGUgYnVmZmVyLiIKICA7OyBJbnZva2VkIHZpYSB2ZXJpbG9nLW1vZGUgY2Fs bGluZyBmb250LWxvY2sgdGhlbiBgZm9udC1sb2NrLW1vZGUtaG9vaycKICAoaW50ZXJhY3RpdmUp CiAgOzsgZGVsZXRlIGFuZCByZW1ha2Ugb3ZlcmxheXMKICAodmVyaWxvZy1oaWdobGlnaHQtcmVn aW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpIG5pbCkpCgo7OyBEZXByZWNhdGVkLCBidXQgd2Fz IGludGVyYWN0aXZlLCBzbyB3ZSdsbCBrZWVwIGl0IGFyb3VuZAooZGVmYWxpYXMgJ3Zlcmlsb2ct Y29sb3JpemUtaW5jbHVkZS1maWxlcy1idWZmZXIgJ3Zlcmlsb2ctaGlnaGxpZ2h0LWJ1ZmZlcikK Cjs7IGZmYXAtYXQtbW91c2UgaXNuJ3QgdXNlZnVsIGZvciBWZXJpbG9nIG1vZGUuIEl0IHVzZXMg bGlicmFyeSBwYXRocy4KOzsgc28gZGVmaW5lIHRoaXMgZnVuY3Rpb24gdG8gZG8gbW9yZSBvciBs ZXNzIHRoZSBzYW1lIGFzIGZmYXAtYXQtbW91c2UKOzsgYnV0IGZpcnN0IHJlc29sdmUgZmlsZW5h bWUuLi4KKGRlZnVuIHZlcmlsb2ctbG9hZC1maWxlLWF0LW1vdXNlIChldmVudCkKICAiTG9hZCBm aWxlIHVuZGVyIGJ1dHRvbiAyIGNsaWNrJ3MgRVZFTlQuCkZpbGVzIGFyZSBjaGVja2VkIGJhc2Vk IG9uIGB2ZXJpbG9nLWxpYnJhcnktZmxhZ3MnLiIKICAoaW50ZXJhY3RpdmUgIkBlIikKICAoc2F2 ZS1leGN1cnNpb24gIDsgaW1wbGVtZW50IGEgVmVyaWxvZyBzcGVjaWZpYyBmZmFwLWF0LW1vdXNl CiAgICAobW91c2Utc2V0LXBvaW50IGV2ZW50KQogICAgKHZlcmlsb2ctbG9hZC1maWxlLWF0LXBv aW50IHQpKSkKCjs7IGZmYXAgaXNuJ3QgdXNhYmxlIGZvciBWZXJpbG9nIG1vZGUuIEl0IHVzZXMg bGlicmFyeSBwYXRocy4KOzsgc28gZGVmaW5lIHRoaXMgZnVuY3Rpb24gdG8gZG8gbW9yZSBvciBs ZXNzIHRoZSBzYW1lIGFzIGZmYXAKOzsgYnV0IGZpcnN0IHJlc29sdmUgZmlsZW5hbWUuLi4KKGRl ZnVuIHZlcmlsb2ctbG9hZC1maWxlLWF0LXBvaW50ICgmb3B0aW9uYWwgd2FybikKICAiTG9hZCBm aWxlIHVuZGVyIHBvaW50LgpJZiBXQVJOLCB0aHJvdyB3YXJuaW5nIGlmIG5vdCBmb3VuZC4KRmls ZXMgYXJlIGNoZWNrZWQgYmFzZWQgb24gYHZlcmlsb2ctbGlicmFyeS1mbGFncycuIgogIChpbnRl cmFjdGl2ZSkKICAoc2F2ZS1leGN1cnNpb24gIDsgaW1wbGVtZW50IGEgVmVyaWxvZyBzcGVjaWZp YyBmZmFwCiAgICAobGV0ICgob3ZlcmxheXMgKG92ZXJsYXlzLWluIChwb2ludCkgKHBvaW50KSkp CgkgIGhpdCkKICAgICAgKHdoaWxlIChhbmQgb3ZlcmxheXMgKG5vdCBoaXQpKQoJKHdoZW4gKG92 ZXJsYXktZ2V0IChjYXIgb3ZlcmxheXMpICd2ZXJpbG9nLWluc3QtbW9kdWxlKQoJICAodmVyaWxv Zy1nb3RvLWRlZnVuLWZpbGUgKGJ1ZmZlci1zdWJzdHJpbmcKCQkJCSAgICAob3ZlcmxheS1zdGFy dCAoY2FyIG92ZXJsYXlzKSkKCQkJCSAgICAob3ZlcmxheS1lbmQgKGNhciBvdmVybGF5cykpKSkK CSAgKHNldHEgaGl0IHQpKQoJKHNldHEgb3ZlcmxheXMgKGNkciBvdmVybGF5cykpKQogICAgICA7 OyBJbmNsdWRlPwogICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICh3aGVuIChhbmQgKG5v dCBoaXQpCgkJIChsb29raW5nLWF0IHZlcmlsb2ctaW5jbHVkZS1maWxlLXJlZ2V4cCkpCgkoaWYg KGFuZCAoY2FyICh2ZXJpbG9nLWxpYnJhcnktZmlsZW5hbWVzCiAgICAgICAgICAgICAgICAgICAg ICAgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDEpCiAgICAgICAgICAgICAgICAgICAgICAg KGJ1ZmZlci1maWxlLW5hbWUpKSkKCQkgKGZpbGUtcmVhZGFibGUtcCAoY2FyICh2ZXJpbG9nLWxp YnJhcnktZmlsZW5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChidWZmZXItZmlsZS1uYW1lKSkpKSkKCSAgICAoZmluZC1maWxlIChjYXIg KHZlcmlsb2ctbGlicmFyeS1maWxlbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYnVmZmVyLWZpbGUtbmFtZSkpKSkKCSAgKHdoZW4gd2FybgoJICAgIChtZXNzYWdlCgkgICAg ICJGaWxlIGAlcycgaXNuJ3QgcmVhZGFibGUsIHVzZSBzaGlmdC1tb3VzZTIgdG8gcGFzdGUgaW4g dGhpcyBmaWVsZCIKCSAgICAgKG1hdGNoLXN0cmluZyAxKSkpKSkpKSkKCgwKOzs7IEJ1ZyByZXBv cnRpbmc6Cjs7CgooZGVmdW4gdmVyaWxvZy1mYXEgKCkKICAiVGVsbCB0aGUgdXNlciB0aGVpciBj dXJyZW50IHZlcnNpb24sIGFuZCB3aGVyZSB0byBnZXQgdGhlIEZBUSBldGMuIgogIChpbnRlcmFj dGl2ZSkKICAod2l0aC1vdXRwdXQtdG8tdGVtcC1idWZmZXIgIip2ZXJpbG9nLW1vZGUgaGVscCoi CiAgICAocHJpbmMgKGZvcm1hdCAiWW91IGFyZSB1c2luZyB2ZXJpbG9nLW1vZGUgJXNcbiIgdmVy aWxvZy1tb2RlLXZlcnNpb24pKQogICAgKHByaW5jICJcbiIpCiAgICAocHJpbmMgIkZvciBuZXcg cmVsZWFzZXMsIHNlZSBodHRwczovL3d3dy52ZXJpcG9vbC5vcmcvdmVyaWxvZy1tb2RlXG4iKQog ICAgKHByaW5jICJcbiIpCiAgICAocHJpbmMgIkZvciBmcmVxdWVudGx5IGFza2VkIHF1ZXN0aW9u cywgc2VlIGh0dHBzOi8vd3d3LnZlcmlwb29sLm9yZy92ZXJpbG9nLW1vZGUtZmFxLmh0bWxcbiIp CiAgICAocHJpbmMgIlxuIikKICAgIChwcmluYyAiVG8gc3VibWl0IGEgYnVnLCB1c2UgTS14IHZl cmlsb2ctc3VibWl0LWJ1Zy1yZXBvcnRcbiIpCiAgICAocHJpbmMgIlxuIikpKQoKKGF1dG9sb2Fk ICdyZXBvcnRlci1zdWJtaXQtYnVnLXJlcG9ydCAicmVwb3J0ZXIiKQooZGVmdmFyIHJlcG9ydGVy LXByb21wdC1mb3Itc3VtbWFyeS1wKQoKKGRlZnVuIHZlcmlsb2ctc3VibWl0LWJ1Zy1yZXBvcnQg KCkKICAiU3VibWl0IHZpYSBtYWlsIGEgYnVnIHJlcG9ydCBvbiB2ZXJpbG9nLW1vZGUuZWwuIgog IChpbnRlcmFjdGl2ZSkKICAobGV0ICgocmVwb3J0ZXItcHJvbXB0LWZvci1zdW1tYXJ5LXAgdCkp CiAgICAocmVwb3J0ZXItc3VibWl0LWJ1Zy1yZXBvcnQKICAgICAid3NueWRlckB3c255ZGVyLm9y ZyIKICAgICAoY29uY2F0ICJ2ZXJpbG9nLW1vZGUgdiIgdmVyaWxvZy1tb2RlLXZlcnNpb24pCiAg ICAgJygKICAgICAgIHZlcmlsb2ctYWN0aXZlLWxvdy1yZWdleHAKICAgICAgIHZlcmlsb2ctYWZ0 ZXItc2F2ZS1mb250LWhvb2sKICAgICAgIHZlcmlsb2ctYWxpZ24taWZlbHNlCiAgICAgICB2ZXJp bG9nLWFzc2lnbm1lbnQtZGVsYXkKICAgICAgIHZlcmlsb2ctYXV0by1hcmctc29ydAogICAgICAg dmVyaWxvZy1hdXRvLWRlY2xhcmUtbmV0dHlwZQogICAgICAgdmVyaWxvZy1hdXRvLWRlbGV0ZS10 cmFpbGluZy13aGl0ZXNwYWNlCiAgICAgICB2ZXJpbG9nLWF1dG8tZW5kY29tbWVudHMKICAgICAg IHZlcmlsb2ctYXV0by1ob29rCiAgICAgICB2ZXJpbG9nLWF1dG8taWdub3JlLWNvbmNhdAogICAg ICAgdmVyaWxvZy1hdXRvLWluZGVudC1vbi1uZXdsaW5lCiAgICAgICB2ZXJpbG9nLWF1dG8taW5v dXQtaWdub3JlLXJlZ2V4cAogICAgICAgdmVyaWxvZy1hdXRvLWlucHV0LWlnbm9yZS1yZWdleHAK ICAgICAgIHZlcmlsb2ctYXV0by1pbnN0LWNvbHVtbgogICAgICAgdmVyaWxvZy1hdXRvLWluc3Qt ZG90LW5hbWUKICAgICAgIHZlcmlsb2ctYXV0by1pbnN0LWludGVyZmFjZWQtcG9ydHMKICAgICAg IHZlcmlsb2ctYXV0by1pbnN0LXBhcmFtLXZhbHVlCiAgICAgICB2ZXJpbG9nLWF1dG8taW5zdC1z b3J0CiAgICAgICB2ZXJpbG9nLWF1dG8taW5zdC10ZW1wbGF0ZS1udW1iZXJzCiAgICAgICB2ZXJp bG9nLWF1dG8taW5zdC12ZWN0b3IKICAgICAgIHZlcmlsb2ctYXV0by1saW5ldXAKICAgICAgIHZl cmlsb2ctYXV0by1uZXdsaW5lCiAgICAgICB2ZXJpbG9nLWF1dG8tb3V0cHV0LWlnbm9yZS1yZWdl eHAKICAgICAgIHZlcmlsb2ctYXV0by1yZWFkLWluY2x1ZGVzCiAgICAgICB2ZXJpbG9nLWF1dG8t cmVzZXQtYmxvY2tpbmctaW4tbm9uCiAgICAgICB2ZXJpbG9nLWF1dG8tcmVzZXQtd2lkdGhzCiAg ICAgICB2ZXJpbG9nLWF1dG8tc2F2ZS1wb2xpY3kKICAgICAgIHZlcmlsb2ctYXV0by1zZW5zZS1k ZWZpbmVzLWNvbnN0YW50CiAgICAgICB2ZXJpbG9nLWF1dG8tc2Vuc2UtaW5jbHVkZS1pbnB1dHMK ICAgICAgIHZlcmlsb2ctYXV0by1zdGFyLWV4cGFuZAogICAgICAgdmVyaWxvZy1hdXRvLXN0YXIt c2F2ZQogICAgICAgdmVyaWxvZy1hdXRvLXRlbXBsYXRlLXdhcm4tdW51c2VkCiAgICAgICB2ZXJp bG9nLWF1dG8tdGllb2ZmLWRlY2xhcmF0aW9uCiAgICAgICB2ZXJpbG9nLWF1dG8tdGllb2ZmLWln bm9yZS1yZWdleHAKICAgICAgIHZlcmlsb2ctYXV0by11bnVzZWQtaWdub3JlLXJlZ2V4cAogICAg ICAgdmVyaWxvZy1hdXRvLXdpcmUtdHlwZQogICAgICAgdmVyaWxvZy1iZWZvcmUtYXV0by1ob29r CiAgICAgICB2ZXJpbG9nLWJlZm9yZS1kZWxldGUtYXV0by1ob29rCiAgICAgICB2ZXJpbG9nLWJl Zm9yZS1nZXRvcHQtZmxhZ3MtaG9vawogICAgICAgdmVyaWxvZy1iZWZvcmUtc2F2ZS1mb250LWhv b2sKICAgICAgIHZlcmlsb2ctY2FjaGUtZW5hYmxlZAogICAgICAgdmVyaWxvZy1jYXNlLWZvbGQK ICAgICAgIHZlcmlsb2ctY2FzZS1pbmRlbnQKICAgICAgIHZlcmlsb2ctY2V4cC1pbmRlbnQKICAg ICAgIHZlcmlsb2ctY29tcGlsZXIKICAgICAgIHZlcmlsb2ctY292ZXJhZ2UKICAgICAgIHZlcmls b2ctZGVsZXRlLWF1dG8taG9vawogICAgICAgdmVyaWxvZy1nZXRvcHQtZmxhZ3MtaG9vawogICAg ICAgdmVyaWxvZy1oaWdobGlnaHQtZ3JvdXBpbmcta2V5d29yZHMKICAgICAgIHZlcmlsb2ctaGln aGxpZ2h0LWluY2x1ZGVzCiAgICAgICB2ZXJpbG9nLWhpZ2hsaWdodC1tb2R1bGVzCiAgICAgICB2 ZXJpbG9nLWhpZ2hsaWdodC10cmFuc2xhdGUtb2ZmCiAgICAgICB2ZXJpbG9nLWluZGVudC1iZWdp bi1hZnRlci1pZgogICAgICAgdmVyaWxvZy1pbmRlbnQtZGVjbGFyYXRpb24tbWFjcm9zCiAgICAg ICB2ZXJpbG9nLWluZGVudC1sZXZlbAogICAgICAgdmVyaWxvZy1pbmRlbnQtbGV2ZWwtYmVoYXZp b3JhbAogICAgICAgdmVyaWxvZy1pbmRlbnQtbGV2ZWwtZGVjbGFyYXRpb24KICAgICAgIHZlcmls b2ctaW5kZW50LWxldmVsLWRpcmVjdGl2ZQogICAgICAgdmVyaWxvZy1pbmRlbnQtbGV2ZWwtbW9k dWxlCiAgICAgICB2ZXJpbG9nLWluZGVudC1saXN0cwogICAgICAgdmVyaWxvZy1saWJyYXJ5LWRp cmVjdG9yaWVzCiAgICAgICB2ZXJpbG9nLWxpYnJhcnktZXh0ZW5zaW9ucwogICAgICAgdmVyaWxv Zy1saWJyYXJ5LWZpbGVzCiAgICAgICB2ZXJpbG9nLWxpYnJhcnktZmxhZ3MKICAgICAgIHZlcmls b2ctbGludGVyCiAgICAgICB2ZXJpbG9nLW1pbmltdW0tY29tbWVudC1kaXN0YW5jZQogICAgICAg dmVyaWxvZy1tb2RlLWhvb2sKICAgICAgIHZlcmlsb2ctbW9kZS1yZWxlYXNlLWVtYWNzCiAgICAg ICB2ZXJpbG9nLW1vZGUtdmVyc2lvbgogICAgICAgdmVyaWxvZy1wcmVwcm9jZXNzb3IKICAgICAg IHZlcmlsb2ctc2ltdWxhdG9yCiAgICAgICB2ZXJpbG9nLXRhYi1hbHdheXMtaW5kZW50CiAgICAg ICB2ZXJpbG9nLXRhYi10by1jb21tZW50CiAgICAgICB2ZXJpbG9nLXR5cGVkZWYtcmVnZXhwCiAg ICAgICB2ZXJpbG9nLXdhcm4tZmF0YWwKICAgICAgICkKICAgICBuaWwgbmlsCiAgICAgKGNvbmNh dCAiSGksCgpJIHdhbnQgdG8gcmVwb3J0IGEgYnVnLgoKQmVmb3JlIEkgZ28gZnVydGhlciwgSSB3 YW50IHRvIHNheSB0aGF0IFZlcmlsb2cgbW9kZSBoYXMgY2hhbmdlZCBteSBsaWZlLgpJIHNhdmUg c28gbXVjaCB0aW1lLCBteSBmaWxlcyBhcmUgY29sb3JlZCBuaWNlbHksIG15IGNvIHdvcmtlcnMg cmVzcGVjdApteSBjb2RpbmcgYWJpbGl0eS4uLiB1bnRpbCBub3cuICBJJ2QgcmVhbGx5IGFwcHJl Y2lhdGUgYW55dGhpbmcgeW91CmNvdWxkIGRvIHRvIGhlbHAgbWUgb3V0IHdpdGggdGhpcyBtaW5v ciBkZWZpY2llbmN5IGluIHRoZSBwcm9kdWN0LgoKSSd2ZSB0YWtlbiBhIGxvb2sgYXQgdGhlIFZl cmlsb2ctTW9kZSBGQVEgYXQKaHR0cHM6Ly93d3cudmVyaXBvb2wub3JnL3Zlcmlsb2ctbW9kZS1m YXEuaHRtbC4KCkFuZCwgSSd2ZSBjb25zaWRlcmVkIGZpbGluZyB0aGUgYnVnIG9uIHRoZSBpc3N1 ZSB0cmFja2VyIGF0Cmh0dHBzOi8vd3d3LnZlcmlwb29sLm9yZy92ZXJpbG9nLW1vZGUtYnVncwpz aW5jZSBJIHJlYWxpemUgdGhhdCBwdWJsaWMgYnVncyBhcmUgZWFzaWVyIGZvciB5b3UgdG8gdHJh Y2ssCmFuZCBmb3Igb3RoZXJzIHRvIHNlYXJjaCwgYnV0IHdvdWxkIHByZWZlciB0byBlbWFpbC4K ClNvLCB0byByZXByb2R1Y2UgdGhlIGJ1Zywgc3RhcnQgYSBmcmVzaCBFbWFjcyB2aWEgIiBpbnZv Y2F0aW9uLW5hbWUgIgotbm8taW5pdC1maWxlIC1uby1zaXRlLWZpbGUnLiAgSW4gYSBuZXcgYnVm ZmVyLCBpbiBWZXJpbG9nIG1vZGUsIHR5cGUKdGhlIGNvZGUgaW5jbHVkZWQgYmVsb3cuCgpHaXZl biB0aG9zZSBsaW5lcywgSSBleHBlY3RlZCBbW0ZpbGwgaW4gaGVyZV1dIHRvIGhhcHBlbjsKYnV0 IGluc3RlYWQsIFtbRmlsbCBpbiBoZXJlXV0gaGFwcGVucyEuCgo9PSBUaGUgY29kZTogPT0iKSkp KQoKKHByb3ZpZGUgJ3Zlcmlsb2ctbW9kZSkKCjs7IExvY2FsIFZhcmlhYmxlczoKOzsgY2hlY2tk b2MtcGVybWl0LWNvbW1hLXRlcm1pbmF0aW9uLWZsYWc6dAo7OyBjaGVja2RvYy1mb3JjZS1kb2Nz dHJpbmdzLWZsYWc6bmlsCjs7IGluZGVudC10YWJzLW1vZGU6bmlsCjs7IEVuZDoKCjs7OyB2ZXJp bG9nLW1vZGUuZWwgZW5kcyBoZXJlCg== --00000000000073d2d105b374f1ec--