From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Kelvin White Newsgroups: gmane.emacs.bugs Subject: bug#17755: 24.3; ERC user mode support Date: Wed, 11 Jun 2014 07:45:12 -0400 Message-ID: References: <87wqcnag57.fsf@localhost.i-did-not-set--mail-host-address--so-tickle-me> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=089e0158c15a22e0cb04fb8dfae8 X-Trace: ger.gmane.org 1402501832 5336 80.91.229.3 (11 Jun 2014 15:50:32 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 11 Jun 2014 15:50:32 +0000 (UTC) To: 17755@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Jun 11 17:50:24 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Wukn1-0001xu-W6 for geb-bug-gnu-emacs@m.gmane.org; Wed, 11 Jun 2014 17:50:16 +0200 Original-Received: from localhost ([::1]:47431 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wukn1-0007Mp-KF for geb-bug-gnu-emacs@m.gmane.org; Wed, 11 Jun 2014 11:50:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:40222) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wukms-0007Dw-Mg for bug-gnu-emacs@gnu.org; Wed, 11 Jun 2014 11:50:10 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wukmp-0000Mk-5T for bug-gnu-emacs@gnu.org; Wed, 11 Jun 2014 11:50:06 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:53150) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wukmp-0000MK-11 for bug-gnu-emacs@gnu.org; Wed, 11 Jun 2014 11:50:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Wukmo-0002Wl-B3 for bug-gnu-emacs@gnu.org; Wed, 11 Jun 2014 11:50:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Kelvin White Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Jun 2014 15:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17755 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs Original-Received: via spool by submit@debbugs.gnu.org id=B.14025017439629 (code B ref -1); Wed, 11 Jun 2014 15:50:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 11 Jun 2014 15:49:03 +0000 Original-Received: from localhost ([127.0.0.1]:44300 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Wuklm-0002Uu-Ra for submit@debbugs.gnu.org; Wed, 11 Jun 2014 11:49:03 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:38219) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WugyC-0003AF-Db for submit@debbugs.gnu.org; Wed, 11 Jun 2014 07:45:34 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wugy3-0003ba-66 for submit@debbugs.gnu.org; Wed, 11 Jun 2014 07:45:27 -0400 Original-Received: from lists.gnu.org ([208.118.235.17]:42052) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wugy3-0003bV-2a for submit@debbugs.gnu.org; Wed, 11 Jun 2014 07:45:23 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39899) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wugxz-0005Lx-9H for bug-gnu-emacs@gnu.org; Wed, 11 Jun 2014 07:45:22 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wugxu-0003Yy-Ly for bug-gnu-emacs@gnu.org; Wed, 11 Jun 2014 07:45:19 -0400 Original-Received: from mail-la0-x232.google.com ([2a00:1450:4010:c03::232]:47719) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wugxt-0003YF-Ub for bug-gnu-emacs@gnu.org; Wed, 11 Jun 2014 07:45:14 -0400 Original-Received: by mail-la0-f50.google.com with SMTP id b8so4747964lan.37 for ; Wed, 11 Jun 2014 04:45:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=MjrlTdXzSyvUU2ycU3YQM5/SKVHsYENLpwlHnKzKZxs=; b=fjiZgHMLEUFvnf3KwvhA277yy29h9wP/AwiO+maG69CTR/067WKVcZG1bVsxkXrYoF Bqw+OkMyH4K3C9eOF0lZS5uiyqMpg0jik6eYfJRzB234re7RAEi3wa/+6mnpgT63oj50 PqPByzPzxIV+oCpuAQ8gqG9T93lgCdWC2MH30ycPaqCEWdSbIITmwhrhMJgc6WaHq9gp M/tjzalszdOEZ9YbjKP78wLKcszzJQhAiMPkF5NTtKlsPOzQJSybGqvde/bPYx/DWeTI SIVj5YLNxAUTadKVNHPCytl9pu5R02K859Z6J6Z62VO+qRieZPgmsaQY5JSpn7Gdx2FE RyuA== X-Received: by 10.152.28.99 with SMTP id a3mr27555818lah.22.1402487112385; Wed, 11 Jun 2014 04:45:12 -0700 (PDT) Original-Received: by 10.112.57.45 with HTTP; Wed, 11 Jun 2014 04:45:12 -0700 (PDT) In-Reply-To: <87wqcnag57.fsf@localhost.i-did-not-set--mail-host-address--so-tickle-me> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Mailman-Approved-At: Wed, 11 Jun 2014 11:48:56 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 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.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:90251 Archived-At: --089e0158c15a22e0cb04fb8dfae8 Content-Type: multipart/alternative; boundary=089e0158c15a22e0c304fb8dfae6 --089e0158c15a22e0c304fb8dfae6 Content-Type: text/plain; charset=UTF-8 Here is the patch to add this feature On Wed, Jun 11, 2014 at 6:34 AM, wrote: > ERC lacks support for user modes other than +o/+v (OP/VOICE), making it > difficult for IRC users to know what modes any user may have. Currently > user nicknames do not include any mode prefix by default. By setting > `erc-format-nick-function' to erc-format-@nick, a user can enable prefixes > @, or +, added to user nicknames. While that may be a sane default, most > IRC > servers support more user modes. ERC already parses the prefixes sent in > the server parameters, and adds available modes to a list, but they are > never utilized. > > > In GNU Emacs 24.3.1 (x86_64-pc-linux-gnu) > of 2013-07-26 on roseapple, modified by Debian > System Description: Ubuntu 13.10 > > Configured using: > `configure '--build' 'x86_64-linux-gnu' '--build' 'x86_64-linux-gnu' > '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' > '--localstatedir=/var/lib' '--infodir=/usr/share/info' > '--mandir=/usr/share/man' '--with-pop=yes' > > '--enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.3/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.3/site-lisp:/usr/share/emacs/site-lisp' > '--with-crt-dir=/usr/lib/x86_64-linux-gnu' '--with-x=no' > '--without-gconf' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 > -fstack-protector --param=ssp-buffer-size=4 -Wformat > -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions > -Wl,-z,relro' 'CPPFLAGS=-D_FORTIFY_SOURCE=2'' > > Important settings: > value of $LC_CTYPE: en_US.UTF-8 > value of $LANG: en_US.UTF-8 > locale-coding-system: utf-8-unix > default enable-multibyte-characters: t > > Major mode: Lisp Interaction > > Minor modes in effect: > paredit-mode: t > erc-services-mode: t > ido-everywhere: t > recentf-mode: t > show-paren-mode: t > erc-list-mode: t > erc-menu-mode: t > erc-autojoin-mode: t > erc-ring-mode: t > erc-networks-mode: t > erc-pcomplete-mode: t > erc-track-mode: t > erc-track-minor-mode: t > erc-match-mode: t > erc-button-mode: t > erc-fill-mode: t > erc-stamp-mode: t > erc-netsplit-mode: t > erc-irccontrols-mode: t > erc-noncommands-mode: t > erc-move-to-prompt-mode: t > erc-readonly-mode: t > file-name-shadow-mode: t > global-font-lock-mode: t > font-lock-mode: t > auto-composition-mode: t > auto-encryption-mode: t > auto-compression-mode: t > line-number-mode: t > transient-mark-mode: t > > Recent input: > A C-x C-s C-x ESC O C C-x ESC O D C-x ESC O C C-x ESC > O D C-x ESC O C h a h a RET n i c e RET C-x ESC O D > C-x ESC O C C-x ESC O D ESC O B ESC O B C-x C-s C-x > f e r c . e l RET ESC O A ESC O A C-a C-k C-y \ RET > DEL RET RET C-y ESC O A ESC O A ESC O D ESC O D ESC > O D ESC O D ESC O D ESC O D ESC O D m y - C-x C-s ESC > O A ESC O A ESC O A ESC O A ESC O A ESC O A ESC O A > ESC O A ESC O A ESC O A ESC O A ESC O A ESC O A ESC > O A ESC O A ESC O A ESC O A ESC O A ESC O A ESC O A > ESC O A TAB ESC O B TAB ESC O B TAB ESC O B TAB ESC > O B TAB ESC O B TAB ESC O A TAB ESC O A TAB ESC O A > TAB ESC O A C-a TAB ESC O D C-@ C-a DEL ESC O B TAB > ESC O D C-@ C-a DEL ESC O B TAB ESC O D C-@ C-a DEL > ESC O B TAB ESC O D C-@ C-a DEL C-x C-s C-x C-c ESC > [ > 0 ; 9 5 ; c C-x C-c ESC [ > 0 ; 9 5 ; c C-x C-c > ESC [ > 0 ; 9 5 ; c ESC x r e p o r t - e m a c s - > b u g RET > > Recent messages: > Wrote /home/l3thal/projects/emacs-dev/lisp/erc/erc.el > Mark set [4 times] > Saving file /home/l3thal/projects/emacs-dev/lisp/erc/erc.el... > Wrote /home/l3thal/projects/emacs-dev/lisp/erc/erc.el > (No files need saving) > When done with this frame, type C-x 5 0 > (No files need saving) > When done with this frame, type C-x 5 0 > (No files need saving) > When done with this frame, type C-x 5 0 > > Load-path shadows: > /usr/share/emacs/24.3/site-lisp/debian-startup hides > /usr/share/emacs/site-lisp/debian-startup > /usr/share/emacs24/site-lisp/dictionaries-common/flyspell hides > /usr/share/emacs/24.3/lisp/textmodes/flyspell > /usr/share/emacs24/site-lisp/dictionaries-common/ispell hides > /usr/share/emacs/24.3/lisp/textmodes/ispell > > Features: > (shadow sort mail-extr emacsbug message rfc822 mml mml-sec mm-decode > mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader > sendmail rfc2047 rfc2045 ietf-drums mail-utils tabify misearch > multi-isearch vc-git gnutls network-stream starttls tls server > magit-autoloads info git-rebase-mode-autoloads git-commit-mode-autoloads > finder-inf package awesome untabify-file paredit erc-init erc-services > erc-names ido recentf tree-widget paren erc-menu erc-join erc-ring > erc-networks erc-pcomplete pcomplete erc-track erc-match erc-button > wid-edit erc-fill erc-stamp erc-netsplit erc-goodies erc erc-backend > erc-compat format-spec auth-source eieio gnus-util time-date mm-util > mail-prsvr password-cache cus-start cus-load warnings slime-fancy > slime-trace-dialog slime-fontifying-fu slime-package-fu slime-references > slime-compiler-notes-tree slime-scratch slime-presentations bridge > slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c > slime-editing-commands slime-autodoc advice advice-preload eldoc > slime-repl slime-parse slime byte-opt bytecomp byte-compile cconv > derived help-fns edmacro kmacro gud compile tool-bar apropos etags > arc-mode archive-mode noutline outline easy-mmode easymenu pp comint > regexp-opt ansi-color ring hyperspec cl-macs gv thingatpt browse-url cl > cl-lib slime-autoloads ediff-hook vc-hooks lisp-float-type > tabulated-list newcomment lisp-mode register page menu-bar rfn-eshadow > timer select mouse jit-lock font-lock syntax facemenu font-core frame > cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao > korean japanese hebrew greek romanian slovak czech european ethiopic > indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple > abbrev minibuffer loaddefs button faces cus-face macroexp files > text-properties overlay sha1 md5 base64 format env code-pages mule > custom widget hashtable-print-readable backquote make-network-process > dbusbind multi-tty emacs) > --089e0158c15a22e0c304fb8dfae6 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Here is the patch to add this feature


On Wed, Jun 11, 2014 at 6:34= AM, <kelvin.white77@gmail.com> wrote:
ERC lacks support for user modes other than = +o/+v (OP/VOICE), making it
difficult for IRC users to know what modes any user may have. Currently
user nicknames do not include any mode prefix by default. By setting
`erc-format-nick-function' to erc-format-@nick, a user can enable prefi= xes
@, or +, added to user nicknames. While that may be a sane default, most IR= C
servers support more user modes. ERC already parses the prefixes sent in the server parameters, and adds available modes to a list, but they are
never utilized.


In GNU Emacs 24.3.1 (x86_64-pc-linux-gnu)
=C2=A0of 2013-07-26 on roseapple, modified by Debian
System Description: =C2=A0 =C2=A0 Ubuntu 13.10

Configured using:
=C2=A0`configure '--build' 'x86_64-linux-gnu' '--build&= #39; 'x86_64-linux-gnu'
=C2=A0'--prefix=3D/usr' '--sharedstatedir=3D/var/lib' '= --libexecdir=3D/usr/lib'
=C2=A0'--localstatedir=3D/var/lib' '--infodir=3D/usr/share/info= '
=C2=A0'--mandir=3D/usr/share/man' '--with-pop=3Dyes'
=C2=A0'--enable-locallisppath=3D/etc/emacs24:/etc/emacs:/usr/local/shar= e/emacs/24.3/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24= .3/site-lisp:/usr/share/emacs/site-lisp'
=C2=A0'--with-crt-dir=3D/usr/lib/x86_64-linux-gnu' '--with-x=3D= no'
=C2=A0'--without-gconf' 'build_alias=3Dx86_64-linux-gnu' &#= 39;CFLAGS=3D-g -O2
=C2=A0-fstack-protector --param=3Dssp-buffer-size=3D4 -Wformat
=C2=A0-Werror=3Dformat-security -Wall' 'LDFLAGS=3D-Wl,-Bsymbolic-fu= nctions
=C2=A0-Wl,-z,relro' 'CPPFLAGS=3D-D_FORTIFY_SOURCE=3D2''

Important settings:
=C2=A0 value of $LC_CTYPE: en_US.UTF-8
=C2=A0 value of $LANG: en_US.UTF-8
=C2=A0 locale-coding-system: utf-8-unix
=C2=A0 default enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
=C2=A0 paredit-mode: t
=C2=A0 erc-services-mode: t
=C2=A0 ido-everywhere: t
=C2=A0 recentf-mode: t
=C2=A0 show-paren-mode: t
=C2=A0 erc-list-mode: t
=C2=A0 erc-menu-mode: t
=C2=A0 erc-autojoin-mode: t
=C2=A0 erc-ring-mode: t
=C2=A0 erc-networks-mode: t
=C2=A0 erc-pcomplete-mode: t
=C2=A0 erc-track-mode: t
=C2=A0 erc-track-minor-mode: t
=C2=A0 erc-match-mode: t
=C2=A0 erc-button-mode: t
=C2=A0 erc-fill-mode: t
=C2=A0 erc-stamp-mode: t
=C2=A0 erc-netsplit-mode: t
=C2=A0 erc-irccontrols-mode: t
=C2=A0 erc-noncommands-mode: t
=C2=A0 erc-move-to-prompt-mode: t
=C2=A0 erc-readonly-mode: t
=C2=A0 file-name-shadow-mode: t
=C2=A0 global-font-lock-mode: t
=C2=A0 font-lock-mode: t
=C2=A0 auto-composition-mode: t
=C2=A0 auto-encryption-mode: t
=C2=A0 auto-compression-mode: t
=C2=A0 line-number-mode: t
=C2=A0 transient-mark-mode: t

Recent input:
A C-x C-s C-x ESC O C C-x ESC O D C-x ESC O C C-x ESC
O D C-x ESC O C h a h a RET n i c e RET C-x ESC O D
C-x ESC O C C-x ESC O D ESC O B ESC O B C-x C-s C-x
f e r c . e l RET ESC O A ESC O A C-a C-k C-y \ RET
DEL RET RET C-y ESC O A ESC O A ESC O D ESC O D ESC
O D ESC O D ESC O D ESC O D ESC O D m y - C-x C-s ESC
O A ESC O A ESC O A ESC O A ESC O A ESC O A ESC O A
ESC O A ESC O A ESC O A ESC O A ESC O A ESC O A ESC
O A ESC O A ESC O A ESC O A ESC O A ESC O A ESC O A
ESC O A TAB ESC O B TAB ESC O B TAB ESC O B TAB ESC
O B TAB ESC O B TAB ESC O A TAB ESC O A TAB ESC O A
TAB ESC O A C-a TAB ESC O D C-@ C-a DEL ESC O B TAB
ESC O D C-@ C-a DEL ESC O B TAB ESC O D C-@ C-a DEL
ESC O B TAB ESC O D C-@ C-a DEL C-x C-s C-x C-c ESC
[ > 0 ; 9 5 ; c C-x C-c ESC [ > 0 ; 9 5 ; c C-x C-c
ESC [ > 0 ; 9 5 ; c ESC x r e p o r t - e m a c s -
b u g RET

Recent messages:
Wrote /home/l3thal/projects/emacs-dev/lisp/erc/erc.el
Mark set [4 times]
Saving file /home/l3thal/projects/emacs-dev/lisp/erc/erc.el...
Wrote /home/l3thal/projects/emacs-dev/lisp/erc/erc.el
(No files need saving)
When done with this frame, type C-x 5 0
(No files need saving)
When done with this frame, type C-x 5 0
(No files need saving)
When done with this frame, type C-x 5 0

Load-path shadows:
/usr/share/emacs/24.3/site-lisp/debian-startup hides /usr/share/emacs/site-= lisp/debian-startup
/usr/share/emacs24/site-lisp/dictionaries-common/flyspell hides /usr/share/= emacs/24.3/lisp/textmodes/flyspell
/usr/share/emacs24/site-lisp/dictionaries-common/ispell hides /usr/share/em= acs/24.3/lisp/textmodes/ispell

Features:
(shadow sort mail-extr emacsbug message rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mail-utils tabify misearch
multi-isearch vc-git gnutls network-stream starttls tls server
magit-autoloads info git-rebase-mode-autoloads git-commit-mode-autoloads finder-inf package awesome untabify-file paredit erc-init erc-services
erc-names ido recentf tree-widget paren erc-menu erc-join erc-ring
erc-networks erc-pcomplete pcomplete erc-track erc-match erc-button
wid-edit erc-fill erc-stamp erc-netsplit erc-goodies erc erc-backend
erc-compat format-spec auth-source eieio gnus-util time-date mm-util
mail-prsvr password-cache cus-start cus-load warnings slime-fancy
slime-trace-dialog slime-fontifying-fu slime-package-fu slime-references slime-compiler-notes-tree slime-scratch slime-presentations bridge
slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c
slime-editing-commands slime-autodoc advice advice-preload eldoc
slime-repl slime-parse slime byte-opt bytecomp byte-compile cconv
derived help-fns edmacro kmacro gud compile tool-bar apropos etags
arc-mode archive-mode noutline outline easy-mmode easymenu pp comint
regexp-opt ansi-color ring hyperspec cl-macs gv thingatpt browse-url cl
cl-lib slime-autoloads ediff-hook vc-hooks lisp-float-type
tabulated-list newcomment lisp-mode register page menu-bar rfn-eshadow
timer select mouse jit-lock font-lock syntax facemenu font-core frame
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind multi-tty emacs)

--089e0158c15a22e0c304fb8dfae6-- --089e0158c15a22e0cb04fb8dfae8 Content-Type: text/plain; charset=US-ASCII; name="erc.diff" Content-Disposition: attachment; filename="erc.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hwakm3yj0 ZGlmZiAtLWlnbm9yZS1zcGFjZS1jaGFuZ2UgLWMgJy1GXltfYS16QS1aMC05JF0rICooJyBwcm9q ZWN0cy9lbWFjcy9saXNwL2VyYy9DaGFuZ2VMb2cgcHJvamVjdHMvZW1hY3MtZGV2L2xpc3AvZXJj L0NoYW5nZUxvZwoqKiogcHJvamVjdHMvZW1hY3MvbGlzcC9lcmMvQ2hhbmdlTG9nICAgMjAxNC0w Ni0xMCAwOTowNDo1MC41MzY4ODUyNzEgLTA0MDAKLS0tIHByb2plY3RzL2VtYWNzLWRldi9saXNw L2VyYy9DaGFuZ2VMb2cgICAgICAgMjAxNC0wNi0xMSAwNzozMDowMi40MjI1NjM2MzUgLTA0MDAK KioqKioqKioqKioqKioqCioqKiAxLDMgKioqKgotLS0gMSwxNSAtLS0tCisgMjAxNC0wNi0xMSAg S2VsdmluIFdoaXRlICA8a2VsdmluLndoaXRlNzdAZ21haWwuY29tPgorCisgICAgICAgKiBlcmMt YmFja2VuZC5lbCBIYW5kbGUgdXNlciBtb2RlcyBpbiByZWxldmVudCBzZXJ2ZXIgcmVzcG9uc2Vz CisgICAgICAgKiBlcmMuZWwgQmV0dGVyIHVzZXIgbW9kZSBzdXBwb3J0LgorICAgICAgIChlcmMt Y2hhbm5lbC11c2VyKTogQWRkIG1lbWJlcnMgZm9yIG5ldyBtb2Rlcy4KKyAgICAgICAoZXJjLWNo YW5uZWwtbWVtYmVyLWhhbGZvcC1wLCBlcmMtY2hhbm5lbC11c2VyLWFkbWluLXAsIGVyYy1jaGFu bmVsLXVzZXItb3duZXItcCk6IFVzZSBuZXcgc3RydWN0IG1lbWJlcnMuCisgICAgICAgKGVyYy1m b3JtYXQtbmljaywgZXJjLWZvcm1hdC1Abmljayk6IERpc3BsYXkgdXNlciBtb2RlcyBhcyBuaWNr IHByZWZpeC4KKyAgICAgICAoZXJjLW5pY2stcHJlZml4LWZhY2UsIGVyYy1teS1uaWNrLXByZWZp eC1mYWNlKTogQWRkIG5ldyBmYWNlcyB0byBzZXBhcmF0ZSBjb2xvcnMgaWYgZGVzaXJlZC4KKyAg ICAgICAoZXJjLWdldC11c2VyLW1vZGUtcHJlZml4KTogUmV0dXJuIHN5bWJvbCBmb3IgbW9kZSBw cmVmaXguCisgICAgICAgKGVyYy11cGRhdGUtY2hhbm5lbC1tZW1iZXIsIGVyYy11cGRhdGUtY3Vy cmVudC1jaGFubmVsLW1lbWJlciwgZXJjLWNoYW5uZWwtcmVjZWl2ZS1uYW1lcyk6IFVwZGF0ZSBj aGFubmVsIHVzZXJzLgorICAgICAgIChlcmMtbmljay1hdC1wb2ludCk6IFJldHVybiBjb3JyZWN0 IHVzZXIgaW5mby4KKwogIDIwMTQtMDQtMDQgIFN0ZWZhbiBNb25uaWVyICA8bW9ubmllckBpcm8u dW1vbnRyZWFsLmNhPgoKICAgICAgICAqIGVyYy5lbCAoZXJjLWludml0ZS1vbmx5LW1vZGUsIGVy Yy10b2dnbGUtY2hhbm5lbC1tb2RlKTogU2ltcGxpZnkuCioqKioqKioqKioqKioqKgoqKiogNjE1 LDYxOCAqKioqCiAgOzsgY29kaW5nOiB1dGYtOAogIDs7IGFkZC1sb2ctdGltZS16b25lLXJ1bGU6 IHQKICA7OyBFbmQ6Ci0KLS0tIDYyNyw2MjkgLS0tLQpkaWZmIC0taWdub3JlLXNwYWNlLWNoYW5n ZSAtYyAnLUZeW19hLXpBLVowLTkkXSsgKignIHByb2plY3RzL2VtYWNzL2xpc3AvZXJjL2VyYy1i YWNrZW5kLmVsIHByb2plY3RzL2VtYWNzLWRldi9saXNwL2VyYy9lcmMtYmFja2VuZC5lbAoqKiog cHJvamVjdHMvZW1hY3MvbGlzcC9lcmMvZXJjLWJhY2tlbmQuZWwgICAgICAyMDE0LTA2LTExIDA2 OjUzOjQ4LjE3NjQ1MTgyNCAtMDQwMAotLS0gcHJvamVjdHMvZW1hY3MtZGV2L2xpc3AvZXJjL2Vy Yy1iYWNrZW5kLmVsICAyMDE0LTA2LTExIDA2OjU1OjU3LjY4MjQ0OTE4MyAtMDQwMAoqKioqKioq KioqKioqKioKKioqIDEyNDQsMTI1MCAqKioqCiAgICAgICAgICAgICAgICAgICAgICAgICAoZXJj LWZvcm1hdC1tZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0pPSU4gP24gbmljayA/ dSBsb2dpbiA/aCBob3N0ID9jIGNobmwpKSkpKSkKICAgICAgICAgICAgKHdoZW4gYnVmZmVyIChz ZXQtYnVmZmVyIGJ1ZmZlcikpCiEgICAgICAgICAgIChlcmMtdXBkYXRlLWNoYW5uZWwtbWVtYmVy IGNobmwgbmljayBuaWNrIHQgbmlsIG5pbCBob3N0IGxvZ2luKQogICAgICAgICAgICA7OyBvbiBq b2luLCB3ZSB3YW50IHRvIHN0YXkgaW4gdGhlIG5ldyBjaGFubmVsIGJ1ZmZlcgogICAgICAgICAg ICA7OyhzZXQtYnVmZmVyIG9iKQogICAgICAgICAgICAoZXJjLWRpc3BsYXktbWVzc2FnZSBwYXJz ZWQgbmlsIGJ1ZmZlciBzdHIpKSkpKSkKLS0tIDEyNDQsMTI1MCAtLS0tCiAgICAgICAgICAgICAg ICAgICAgICAgICAoZXJjLWZvcm1hdC1tZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAg J0pPSU4gP24gbmljayA/dSBsb2dpbiA/aCBob3N0ID9jIGNobmwpKSkpKSkKICAgICAgICAgICAg KHdoZW4gYnVmZmVyIChzZXQtYnVmZmVyIGJ1ZmZlcikpCiEgICAgICAgICAgIChlcmMtdXBkYXRl LWNoYW5uZWwtbWVtYmVyIGNobmwgbmljayBuaWNrIHQgbmlsIG5pbCBuaWwgbmlsIG5pbCBob3N0 IGxvZ2luKQogICAgICAgICAgICA7OyBvbiBqb2luLCB3ZSB3YW50IHRvIHN0YXkgaW4gdGhlIG5l dyBjaGFubmVsIGJ1ZmZlcgogICAgICAgICAgICA7OyhzZXQtYnVmZmVyIG9iKQogICAgICAgICAg ICAoZXJjLWRpc3BsYXktbWVzc2FnZSBwYXJzZWQgbmlsIGJ1ZmZlciBzdHIpKSkpKSkKKioqKioq KioqKioqKioqCioqKiAxNDEzLDE0MTkgKioqKgogICAgICAgICAgICAgIDs7IG1lc3NhZ2UuICBX ZSB3aWxsIGFjY3VtdWxhdGUgcHJpdmF0ZSBpZGVudGl0aWVzIGluZGVmaW5pdGVseQogICAgICAg ICAgICAgIDs7IGF0IHRoaXMgcG9pbnQuCiAgICAgICAgICAgICAgKGVyYy11cGRhdGUtY2hhbm5l bC1tZW1iZXIgKGlmIHByaXZwIG5pY2sgdGd0KSBuaWNrIG5pY2sKISAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcml2cCBuaWwgbmlsIGhvc3QgbG9naW4gbmlsIG5pbCB0 KQogICAgICAgICAgICAgIChsZXQgKChjZGF0YSAoZXJjLWdldC1jaGFubmVsLXVzZXIgbmljaykp KQogICAgICAgICAgICAgICAgKHNldHEgZm5pY2sgKGZ1bmNhbGwgZXJjLWZvcm1hdC1uaWNrLWZ1 bmN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGNkYXRhKSAo Y2RyIGNkYXRhKSkpKSkpCi0tLSAxNDEzLDE0MTkgLS0tLQogICAgICAgICAgICAgIDs7IG1lc3Nh Z2UuICBXZSB3aWxsIGFjY3VtdWxhdGUgcHJpdmF0ZSBpZGVudGl0aWVzIGluZGVmaW5pdGVseQog ICAgICAgICAgICAgIDs7IGF0IHRoaXMgcG9pbnQuCiAgICAgICAgICAgICAgKGVyYy11cGRhdGUt Y2hhbm5lbC1tZW1iZXIgKGlmIHByaXZwIG5pY2sgdGd0KSBuaWNrIG5pY2sKISAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2cCBuaWwgbmlsIG5pbCBuaWwgbmlsIGhv c3QgbG9naW4gbmlsIG5pbCB0KQogICAgICAgICAgICAgIChsZXQgKChjZGF0YSAoZXJjLWdldC1j aGFubmVsLXVzZXIgbmljaykpKQogICAgICAgICAgICAgICAgKHNldHEgZm5pY2sgKGZ1bmNhbGwg ZXJjLWZvcm1hdC1uaWNrLWZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2FyIGNkYXRhKSAoY2RyIGNkYXRhKSkpKSkpCioqKioqKioqKioqKioqKgoqKiogMTQ3 MCwxNDc2ICoqKioKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50 LXRpbWUpKSkpCiAgICAgIChwY2FzZS1sZXQgKChgKCxuaWNrICxsb2dpbiAsaG9zdCkKICAgICAg ICAgICAgICAgICAgIChlcmMtcGFyc2UtdXNlciAoZXJjLXJlc3BvbnNlLnNlbmRlciBwYXJzZWQp KSkpCiEgICAgICAgKGVyYy11cGRhdGUtY2hhbm5lbC1tZW1iZXIgY2ggbmljayBuaWNrIG5pbCBu aWwgbmlsIGhvc3QgbG9naW4pCiAgICAgICAgKGVyYy11cGRhdGUtY2hhbm5lbC10b3BpYyBjaCAo Zm9ybWF0ICIlc1xDLW8gKCVzLCAlcykiIHRvcGljIG5pY2sgdGltZSkpCiAgICAgICAgKGVyYy1k aXNwbGF5LW1lc3NhZ2UgcGFyc2VkICdub3RpY2UgKGVyYy1nZXQtYnVmZmVyIGNoIHByb2MpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RPUElDID9uIG5pY2sgP3UgbG9naW4gP2ggaG9z dAotLS0gMTQ3MCwxNDc2IC0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChjdXJyZW50LXRpbWUpKSkpCiAgICAgIChwY2FzZS1sZXQgKChgKCxuaWNrICxsb2dpbiAsaG9z dCkKICAgICAgICAgICAgICAgICAgIChlcmMtcGFyc2UtdXNlciAoZXJjLXJlc3BvbnNlLnNlbmRl ciBwYXJzZWQpKSkpCiEgICAgICAgKGVyYy11cGRhdGUtY2hhbm5lbC1tZW1iZXIgY2ggbmljayBu aWNrIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIGhvc3QgbG9naW4pCiAgICAgICAgKGVyYy11cGRh dGUtY2hhbm5lbC10b3BpYyBjaCAoZm9ybWF0ICIlc1xDLW8gKCVzLCAlcykiIHRvcGljIG5pY2sg dGltZSkpCiAgICAgICAgKGVyYy1kaXNwbGF5LW1lc3NhZ2UgcGFyc2VkICdub3RpY2UgKGVyYy1n ZXQtYnVmZmVyIGNoIHByb2MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RPUElDID9u IG5pY2sgP3UgbG9naW4gP2ggaG9zdAoqKioqKioqKioqKioqKioKKioqIDE4MDAsMTgwNyAqKioq CiAgICAgICAgKHdoZW4gKHN0cmluZy1tYXRjaCAiXFwoXlswLTldKyBcXClcXCguKlxcKSQiIGZ1 bGwtbmFtZSkKICAgICAgICAgIChzZXRxIGhvcGNvdW50IChtYXRjaC1zdHJpbmcgMSBmdWxsLW5h bWUpKQogICAgICAgICAgKHNldHEgZnVsbC1uYW1lIChtYXRjaC1zdHJpbmcgMiBmdWxsLW5hbWUp KSkKISAgICAgICAoZXJjLXVwZGF0ZS1jaGFubmVsLW1lbWJlciBjaGFubmVsIG5pY2sgbmljayBu aWwgbmlsIG5pbCBob3N0CiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciBm dWxsLW5hbWUpCiAgICAgICAgKGVyYy1kaXNwbGF5LW1lc3NhZ2UgcGFyc2VkICdub3RpY2UgJ2Fj dGl2ZSAnczM1MgogICAgICAgICAgICAgICAgICAgICAgICAgICAgID9jIGNoYW5uZWwgP24gbmlj ayA/YSBhd2F5LWZsYWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/dSB1c2VyID9oIGhv c3QgP2YgZnVsbC1uYW1lKSkpKQotLS0gMTgwMCwxODA2IC0tLS0KICAgICAgICAod2hlbiAoc3Ry aW5nLW1hdGNoICJcXCheWzAtOV0rIFxcKVxcKC4qXFwpJCIgZnVsbC1uYW1lKQogICAgICAgICAg KHNldHEgaG9wY291bnQgKG1hdGNoLXN0cmluZyAxIGZ1bGwtbmFtZSkpCiAgICAgICAgICAoc2V0 cSBmdWxsLW5hbWUgKG1hdGNoLXN0cmluZyAyIGZ1bGwtbmFtZSkpKQohICAgICAgIChlcmMtdXBk YXRlLWNoYW5uZWwtbWVtYmVyIGNoYW5uZWwgbmljayBuaWNrIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIGhvc3QgdXNlciBmdWxsLW5hbWUpCiAgICAgICAgKGVyYy1kaXNwbGF5LW1lc3NhZ2UgcGFy c2VkICdub3RpY2UgJ2FjdGl2ZSAnczM1MgogICAgICAgICAgICAgICAgICAgICAgICAgICAgID9j IGNoYW5uZWwgP24gbmljayA/YSBhd2F5LWZsYWcKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA/dSB1c2VyID9oIGhvc3QgP2YgZnVsbC1uYW1lKSkpKQpkaWZmIC0taWdub3JlLXNwYWNlLWNo YW5nZSAtYyAnLUZeW19hLXpBLVowLTkkXSsgKignIHByb2plY3RzL2VtYWNzL2xpc3AvZXJjL2Vy Yy5lbCBwcm9qZWN0cy9lbWFjcy1kZXYvbGlzcC9lcmMvZXJjLmVsCioqKiBwcm9qZWN0cy9lbWFj cy9saXNwL2VyYy9lcmMuZWwgICAgICAyMDE0LTA2LTExIDA2OjUzOjQ4LjE3NjQ1MTgyNCAtMDQw MAotLS0gcHJvamVjdHMvZW1hY3MtZGV2L2xpc3AvZXJjL2VyYy5lbCAgMjAxNC0wNi0xMSAwNzow OTo0OS42MDMzOTM0MTAgLTA0MDAKKioqKioqKioqKioqKioqCioqKiAzNzAsMzc2ICoqKioKICAg ICkKCiAgKGNsLWRlZnN0cnVjdCAoZXJjLWNoYW5uZWwtdXNlciAoOnR5cGUgdmVjdG9yKSA6bmFt ZWQpCiEgICBvcCB2b2ljZQogICAgOzsgTGFzdCBtZXNzYWdlIHRpbWUgKGluIHRoZSBmb3JtIG9m IHRoZSByZXR1cm4gdmFsdWUgb2YKICAgIDs7IChjdXJyZW50LXRpbWUpCiAgICA7OwotLS0gMzcw LDM3NiAtLS0tCiAgICApCgogIChjbC1kZWZzdHJ1Y3QgKGVyYy1jaGFubmVsLXVzZXIgKDp0eXBl IHZlY3RvcikgOm5hbWVkKQohICAgdm9pY2UgaGFsZm9wIG9wIGFkbWluIG93bmVyCiAgICA7OyBM YXN0IG1lc3NhZ2UgdGltZSAoaW4gdGhlIGZvcm0gb2YgdGhlIHJldHVybiB2YWx1ZSBvZgogICAg OzsgKGN1cnJlbnQtdGltZSkKICAgIDs7CioqKioqKioqKioqKioqKgoqKiogNDc1LDQ4MCAqKioq Ci0tLSA0NzUsNDk2IC0tLS0KICAgICAgICAgICAgICAgZXJjLWNoYW5uZWwtdXNlcnMpCiAgICAg IChjbHJoYXNoIGVyYy1jaGFubmVsLXVzZXJzKSkpCgorIChkZWZzdWJzdCBlcmMtY2hhbm5lbC11 c2VyLW93bmVyLXAgKG5pY2spCisgICAiUmV0dXJuIHQgaWYgTklDSyBpcyBhbiBvd25lciBvZiB0 aGUgY3VycmVudCBjaGFubmVsLiIKKyAgIChhbmQgbmljaworICAgICAgICAoaGFzaC10YWJsZS1w IGVyYy1jaGFubmVsLXVzZXJzKQorICAgICAgICAobGV0ICgoY2RhdGEgKGVyYy1nZXQtY2hhbm5l bC11c2VyIG5pY2spKSkKKyAgICAgICAgICAoYW5kIGNkYXRhIChjZHIgY2RhdGEpCisgICAgICAg ICAgICAgICAoZXJjLWNoYW5uZWwtdXNlci1vd25lciAoY2RyIGNkYXRhKSkpKSkpCisKKyAoZGVm c3Vic3QgZXJjLWNoYW5uZWwtdXNlci1hZG1pbi1wIChuaWNrKQorICAgIlJldHVybiB0IGlmIE5J Q0sgaXMgYW4gYWRtaW4gaW4gdGhlIGN1cnJlbnQgY2hhbm5lbC4iCisgICAoYW5kIG5pY2sKKyAg ICAgICAgKGhhc2gtdGFibGUtcCBlcmMtY2hhbm5lbC11c2VycykKKyAgICAgICAgKGxldCAoKGNk YXRhIChlcmMtZ2V0LWNoYW5uZWwtdXNlciBuaWNrKSkpCisgICAgICAgICAgKGFuZCBjZGF0YSAo Y2RyIGNkYXRhKQorICAgICAgICAgICAgICAgKGVyYy1jaGFubmVsLXVzZXItYWRtaW4gKGNkciBj ZGF0YSkpKSkpKQorCiAgKGRlZnN1YnN0IGVyYy1jaGFubmVsLXVzZXItb3AtcCAobmljaykKICAg ICJSZXR1cm4gdCBpZiBOSUNLIGlzIGFuIG9wZXJhdG9yIGluIHRoZSBjdXJyZW50IGNoYW5uZWwu IgogICAgKGFuZCBuaWNrCioqKioqKioqKioqKioqKgoqKiogNDgzLDQ4OCAqKioqCi0tLSA0OTks NTEyIC0tLS0KICAgICAgICAgICAoYW5kIGNkYXRhIChjZHIgY2RhdGEpCiAgICAgICAgICAgICAg ICAoZXJjLWNoYW5uZWwtdXNlci1vcCAoY2RyIGNkYXRhKSkpKSkpCgorIChkZWZzdWJzdCBlcmMt Y2hhbm5lbC11c2VyLWhhbGZvcC1wIChuaWNrKQorICAgIlJldHVybiB0IGlmIE5JQ0sgaXMgYSBo YWxmLW9wZXJhdG9yIGluIHRoZSBjdXJyZW50IGNoYW5uZWwuIgorICAgKGFuZCBuaWNrCisgICAg ICAgIChoYXNoLXRhYmxlLXAgZXJjLWNoYW5uZWwtdXNlcnMpCisgICAgICAgIChsZXQgKChjZGF0 YSAoZXJjLWdldC1jaGFubmVsLXVzZXIgbmljaykpKQorICAgICAgICAgIChhbmQgY2RhdGEgKGNk ciBjZGF0YSkKKyAgICAgICAgICAgICAgIChlcmMtY2hhbm5lbC11c2VyLWhhbGZvcCAoY2RyIGNk YXRhKSkpKSkpCisKICAoZGVmc3Vic3QgZXJjLWNoYW5uZWwtdXNlci12b2ljZS1wIChuaWNrKQog ICAgIlJldHVybiB0IGlmIE5JQ0sgaGFzIHZvaWNlIGluIHRoZSBjdXJyZW50IGNoYW5uZWwuIgog ICAgKGFuZCBuaWNrCioqKioqKioqKioqKioqKgoqKiogMTEyMiwxMTI3ICoqKioKLS0tIDExNDYs MTE1OSAtLS0tCiAgICAiRVJDIGRlZmF1bHQgZmFjZS4iCiAgICA6Z3JvdXAgJ2VyYy1mYWNlcykK CisgKGRlZmZhY2UgZXJjLW5pY2stcHJlZml4LWZhY2UgJygodCA6d2VpZ2h0IGJvbGQpKQorICAg IkVSQyBmYWNlIHVzZWQgZm9yIHVzZXIgbW9kZSBwcmVmaXguIgorICAgOmdyb3VwICdlcmMtZmFj ZXMpCisKKyAoZGVmZmFjZSBlcmMtbXktbmljay1wcmVmaXgtZmFjZSAnKCh0IDp3ZWlnaHQgYm9s ZCkpCisgICAiRVJDIGZhY2UgdXNlZCBmb3IgbXkgdXNlciBtb2RlIHByZWZpeC4iCisgICA6Z3Jv dXAgJ2VyYy1mYWNlcykKKwogIChkZWZmYWNlIGVyYy1kaXJlY3QtbXNnLWZhY2UgJygodCA6Zm9y ZWdyb3VuZCAiSW5kaWFuUmVkIikpCiAgICAiRVJDIGZhY2UgdXNlZCBmb3IgbWVzc2FnZXMgeW91 IHJlY2VpdmUgaW4gdGhlIG1haW4gZXJjIGJ1ZmZlci4iCiAgICA6Z3JvdXAgJ2VyYy1mYWNlcykK KioqKioqKioqKioqKioqCioqKiA0MTkyLDQyMTUgKioqKgogIFNlZSBhbHNvIGBlcmMtZm9ybWF0 LW5pY2stZnVuY3Rpb24nLiIKICAgICh3aGVuIHVzZXIgKGVyYy1zZXJ2ZXItdXNlci1uaWNrbmFt ZSB1c2VyKSkpCgogIChkZWZ1biBlcmMtZm9ybWF0LUBuaWNrICgmb3B0aW9uYWwgdXNlciBjaGFu bmVsLWRhdGEpCiAgICAiRm9ybWF0IHRoZSBuaWNrbmFtZSBvZiBVU0VSIHNob3dpbmcgaWYgVVNF UiBpcyBhbiBvcGVyYXRvciBvciBoYXMgdm9pY2UuCiAgT3BlcmF0b3JzIGhhdmUgXCJAXCIgYW5k IHVzZXJzIHdpdGggdm9pY2UgaGF2ZSBcIitcIiBhcyBhIHByZWZpeC4KICBVc2UgQ0hBTk5FTC1E QVRBIHRvIGRldGVybWluZSBvcCBhbmQgdm9pY2Ugc3RhdHVzLgogIFNlZSBhbHNvIGBlcmMtZm9y bWF0LW5pY2stZnVuY3Rpb24nLiIKICAgICh3aGVuIHVzZXIKISAgICAgKGxldCAoKG9wIChhbmQg Y2hhbm5lbC1kYXRhIChlcmMtY2hhbm5lbC11c2VyLW9wIGNoYW5uZWwtZGF0YSkgIkAiKSkKISAg ICAgICAgICh2b2ljZSAoYW5kIGNoYW5uZWwtZGF0YSAoZXJjLWNoYW5uZWwtdXNlci12b2ljZSBj aGFubmVsLWRhdGEpICIrIikpKQohICAgICAgIChjb25jYXQgdm9pY2Ugb3AgKGVyYy1zZXJ2ZXIt dXNlci1uaWNrbmFtZSB1c2VyKSkpKSkKCiAgKGRlZnVuIGVyYy1mb3JtYXQtbXktbmljayAoKQog ICAgIlJldHVybiB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgdXNlcidzIG1lc3NhZ2UsIGNvcnJlY3Rs eSBwcm9wZXJ0aXplZC4iCiAgICAoaWYgZXJjLXNob3ctbXktbmljawohICAgICAgIChsZXQgKChv cGVuICI8IikKICAgICAgICAgICAgKGNsb3NlICI+ICIpCiEgICAgICAgICAgIChuaWNrIChlcmMt Y3VycmVudC1uaWNrKSkpCiAgICAgICAgKGNvbmNhdAogICAgICAgICAoZXJjLXByb3BlcnRpemUg b3BlbiAnZmFjZSAnZXJjLWRlZmF1bHQtZmFjZSkKICAgICAgICAgKGVyYy1wcm9wZXJ0aXplIG5p Y2sgJ2ZhY2UgJ2VyYy1teS1uaWNrLWZhY2UpCiAgICAgICAgIChlcmMtcHJvcGVydGl6ZSBjbG9z ZSAnZmFjZSAnZXJjLWRlZmF1bHQtZmFjZSkpKQogICAgICAobGV0ICgocHJlZml4ICI+ICIpKQot LS0gNDIyNCw0MjU3IC0tLS0KICBTZWUgYWxzbyBgZXJjLWZvcm1hdC1uaWNrLWZ1bmN0aW9uJy4i CiAgICAod2hlbiB1c2VyIChlcmMtc2VydmVyLXVzZXItbmlja25hbWUgdXNlcikpKQoKKyAoZGVm dW4gZXJjLWdldC11c2VyLW1vZGUtcHJlZml4ICh1c2VyKQorICAgKHdoZW4gdXNlcgorICAgICAo Y29uZCAoKGVyYy1jaGFubmVsLXVzZXItdm9pY2UtcCB1c2VyKSAiKyIpCisgICAgICAgICAgICgo ZXJjLWNoYW5uZWwtdXNlci1oYWxmLW9wLXAgdXNlcikgIiUiKQorICAgICAgICAgICAoKGVyYy1j aGFubmVsLXVzZXItb3AtcCB1c2VyKSAiQCIpCisgICAgICAgICAgICgoZXJjLWNoYW5uZWwtdXNl ci1hZG1pbi1wIHVzZXIpICImIikKKyAgICAgICAgICAgKChlcmMtY2hhbm5lbC11c2VyLW93bmVy LXAgdXNlcikgIn4iKQorICAgICAgICAgICAodCAiIikpKSkKKwogIChkZWZ1biBlcmMtZm9ybWF0 LUBuaWNrICgmb3B0aW9uYWwgdXNlciBjaGFubmVsLWRhdGEpCiAgICAiRm9ybWF0IHRoZSBuaWNr bmFtZSBvZiBVU0VSIHNob3dpbmcgaWYgVVNFUiBpcyBhbiBvcGVyYXRvciBvciBoYXMgdm9pY2Uu CiAgT3BlcmF0b3JzIGhhdmUgXCJAXCIgYW5kIHVzZXJzIHdpdGggdm9pY2UgaGF2ZSBcIitcIiBh cyBhIHByZWZpeC4KICBVc2UgQ0hBTk5FTC1EQVRBIHRvIGRldGVybWluZSBvcCBhbmQgdm9pY2Ug c3RhdHVzLgogIFNlZSBhbHNvIGBlcmMtZm9ybWF0LW5pY2stZnVuY3Rpb24nLiIKICAgICh3aGVu IHVzZXIKISAgICAgKGxldCAoKG5pY2sgKGVyYy1zZXJ2ZXItdXNlci1uaWNrbmFtZSB1c2VyKSkp CiEgICAgICAgKGNvbmNhdCAoZXJjLXByb3BlcnRpemUgKGVyYy1nZXQtdXNlci1tb2RlLXByZWZp eCBuaWNrKSAnZmFjZSAnZXJjLW5pY2stcHJlZml4LWZhY2UpIG5pY2spKSkpCgogIChkZWZ1biBl cmMtZm9ybWF0LW15LW5pY2sgKCkKICAgICJSZXR1cm4gdGhlIGJlZ2lubmluZyBvZiB0aGlzIHVz ZXIncyBtZXNzYWdlLCBjb3JyZWN0bHkgcHJvcGVydGl6ZWQuIgogICAgKGlmIGVyYy1zaG93LW15 LW5pY2sKISAgICAgICAobGV0KiAoKG9wZW4gIjwiKQogICAgICAgICAgICAgICAoY2xvc2UgIj4g IikKISAgICAgICAgICAgICAgKG5pY2sgKGVyYy1jdXJyZW50LW5pY2spKQohICAgICAgICAgICAg ICAobW9kZSAoZXJjLWdldC11c2VyLW1vZGUtcHJlZml4IG5pY2spKSkKICAgICAgICAgIChjb25j YXQKICAgICAgICAgICAoZXJjLXByb3BlcnRpemUgb3BlbiAnZmFjZSAnZXJjLWRlZmF1bHQtZmFj ZSkKKyAgICAgICAgICAoZXJjLXByb3BlcnRpemUgbW9kZSAnZmFjZSAnZXJjLW15LW5pY2stcHJl Zml4LWZhY2UpCiAgICAgICAgICAgKGVyYy1wcm9wZXJ0aXplIG5pY2sgJ2ZhY2UgJ2VyYy1teS1u aWNrLWZhY2UpCiAgICAgICAgICAgKGVyYy1wcm9wZXJ0aXplIGNsb3NlICdmYWNlICdlcmMtZGVm YXVsdC1mYWNlKSkpCiAgICAgIChsZXQgKChwcmVmaXggIj4gIikpCioqKioqKioqKioqKioqKgoq KiogNDY4NSw0NjkxICoqKioKICAgIChsZXQgKChzdHIgKG9yIChjZHIgKGFzc29jICJQUkVGSVgi IChlcmMtd2l0aC1zZXJ2ZXItYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlcmMtc2VydmVyLXBhcmFtZXRlcnMpKSkKICAgICAgICAgICAgICAgICA7OyBwcm92 aWRlIGEgc2FuZSBkZWZhdWx0CiEgICAgICAgICAgICAgICAgIihvdilAKyIpKQogICAgICAgIHR5 cGVzIGNoYXJzKQogICAgICAod2hlbiAoc3RyaW5nLW1hdGNoICJeKFxcKFteKV0rXFwpKVxcKC4r XFwpJCIgc3RyKQogICAgICAgIChzZXRxIHR5cGVzIChtYXRjaC1zdHJpbmcgMSBzdHIpCi0tLSA0 NzI3LDQ3MzMgLS0tLQogICAgKGxldCAoKHN0ciAob3IgKGNkciAoYXNzb2MgIlBSRUZJWCIgKGVy Yy13aXRoLXNlcnZlci1idWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXJjLXNlcnZlci1wYXJhbWV0ZXJzKSkpCiAgICAgICAgICAgICAgICAgICA7OyBwcm92 aWRlIGEgc2FuZSBkZWZhdWx0CiEgICAgICAgICAgICAgICAgICAiKHFhb2h2KX4mQCUrIikpCiAg ICAgICAgICB0eXBlcyBjaGFycykKICAgICAgKHdoZW4gKHN0cmluZy1tYXRjaCAiXihcXChbXild K1xcKSlcXCguK1xcKSQiIHN0cikKICAgICAgICAoc2V0cSB0eXBlcyAobWF0Y2gtc3RyaW5nIDEg c3RyKQoqKioqKioqKioqKioqKioKKioqIDQ3MDUsNDcxNCAqKioqCiAgVXBkYXRlIGBlcmMtY2hh bm5lbC11c2VycycgYWNjb3JkaW5nIHRvIE5BTUVTLVNUUklORy4KICBOQU1FUy1TVFJJTkcgaXMg YSBzdHJpbmcgbGlzdGluZyBzb21lIG9mIHRoZSBuYW1lcyBvbiB0aGUKICBjaGFubmVsLiIKISAg IChsZXQgKHByZWZpeCBvcC1jaCB2b2ljZS1jaCBuYW1lcyBuYW1lIG9wIHZvaWNlKQogICAgICAo c2V0cSBwcmVmaXggKGVyYy1wYXJzZS1wcmVmaXgpKQohICAgICAoc2V0cSBvcC1jaCAoY2RyIChh c3NxID9vIHByZWZpeCkpCiEgICAgICAgICB2b2ljZS1jaCAoY2RyIChhc3NxID92IHByZWZpeCkp KQogICAgICA7OyBXZSBuZWVkIHRvIGRlbGV0ZSAiIiBiZWNhdXNlIGluIFhFbWFjcywgKHNwbGl0 LXN0cmluZyAiYSAiKQogICAgICA7OyByZXR1cm5zICgiYSIgIiIpLgogICAgICAoc2V0cSBuYW1l cyAoZGVsZXRlICIiIChzcGxpdC1zdHJpbmcgbmFtZXMtc3RyaW5nKSkpCi0tLSA0NzQ3LDQ3NTkg LS0tLQogIFVwZGF0ZSBgZXJjLWNoYW5uZWwtdXNlcnMnIGFjY29yZGluZyB0byBOQU1FUy1TVFJJ TkcuCiAgTkFNRVMtU1RSSU5HIGlzIGEgc3RyaW5nIGxpc3Rpbmcgc29tZSBvZiB0aGUgbmFtZXMg b24gdGhlCiAgY2hhbm5lbC4iCiEgICAobGV0IChwcmVmaXggdm9pY2UtY2ggaG9wLWNoIG9wLWNo IGFkbS1jaCBvd24tY2ggbmFtZXMgbmFtZSB2b2ljZSBoYWxmb3Agb3AgYWRtaW4gb3duZXIpCiAg ICAgIChzZXRxIHByZWZpeCAoZXJjLXBhcnNlLXByZWZpeCkpCiEgICAgIChzZXRxIHZvaWNlLWNo IChjZHIgKGFzc3EgP3YgcHJlZml4KSkKISAgICAgICAgICAgaG9wLWNoIChjZHIgKGFzc3EgP2gg cHJlZml4KSkKISAgICAgICAgICAgb3AtY2ggKGNkciAoYXNzcSA/byBwcmVmaXgpKQohICAgICAg ICAgICBhZG0tY2ggKGNkciAoYXNzcSA/YSBwcmVmaXgpKQohICAgICAgICAgICBvd24tY2ggKGNk ciAoYXNzcSA/cSBwcmVmaXgpKSkKICAgICAgOzsgV2UgbmVlZCB0byBkZWxldGUgIiIgYmVjYXVz ZSBpbiBYRW1hY3MsIChzcGxpdC1zdHJpbmcgImEgIikKICAgICAgOzsgcmV0dXJucyAoImEiICIi KS4KICAgICAgKHNldHEgbmFtZXMgKGRlbGV0ZSAiIiAoc3BsaXQtc3RyaW5nIG5hbWVzLXN0cmlu ZykpKQoqKioqKioqKioqKioqKioKKioqIDQ3MTgsNDc0MiAqKioqCiAgICAgICAgICAoaWYgKHJh c3NxIChlbHQgaXRlbSAwKSBwcmVmaXgpCiAgICAgICAgICAgICAgKGNvbmQgKCg9IChsZW5ndGgg aXRlbSkgMSkKICAgICAgICAgICAgICAgICAgICAgKHNldHEgdXBkYXRlcCBuaWwpKQogICAgICAg ICAgICAgICAgICAgICgoZXEgKGVsdCBpdGVtIDApIG9wLWNoKQogICAgICAgICAgICAgICAgICAg ICAoc2V0cSBuYW1lIChzdWJzdHJpbmcgaXRlbSAxKQogICAgICAgICAgICAgICAgICAgICAgICAg ICBvcCAnb24KISAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pY2UgJ29mZikpCiEgICAgICAg ICAgICAgICAgICAgKChlcSAoZWx0IGl0ZW0gMCkgdm9pY2UtY2gpCiAgICAgICAgICAgICAgICAg ICAgIChzZXRxIG5hbWUgKHN1YnN0cmluZyBpdGVtIDEpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9wICdvZmYKISAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pY2UgJ29uKSkKICAgICAg ICAgICAgICAgICAgICAodCAoc2V0cSBuYW1lIChzdWJzdHJpbmcgaXRlbSAxKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9wICdvZmYKISAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2ljZSAnb2ZmKSkpCiAgICAgICAgICAgIChzZXRxIG5hbWUgaXRlbQogICAgICAgICAgICAgICAg ICBvcCAnb2ZmCiEgICAgICAgICAgICAgICAgIHZvaWNlICdvZmYpKQogICAgICAgICAgKHdoZW4g dXBkYXRlcAogICAgICAgICAgICAocHV0aGFzaCAoZXJjLWRvd25jYXNlIG5hbWUpIHQKICAgICAg ICAgICAgICAgICAgICAgZXJjLWNoYW5uZWwtbmV3LW1lbWJlci1uYW1lcykKICAgICAgICAgICAg KGVyYy11cGRhdGUtY3VycmVudC1jaGFubmVsLW1lbWJlcgohICAgICAgICAgICAgbmFtZSBuYW1l IHQgb3Agdm9pY2UpKSkpKQogICAgICAocnVuLWhvb2tzICdlcmMtY2hhbm5lbC1tZW1iZXJzLWNo YW5nZWQtaG9vaykpKQoKICAoZGVmY3VzdG9tIGVyYy1jaGFubmVsLW1lbWJlcnMtY2hhbmdlZC1o b29rIG5pbAotLS0gNDc2Myw0ODIwIC0tLS0KICAgICAgICAgICAgKGlmIChyYXNzcSAoZWx0IGl0 ZW0gMCkgcHJlZml4KQogICAgICAgICAgICAgICAgKGNvbmQgKCg9IChsZW5ndGggaXRlbSkgMSkK ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB1cGRhdGVwIG5pbCkpCisgICAgICAgICAgICAg ICAgICAgICAoKGVxIChlbHQgaXRlbSAwKSB2b2ljZS1jaCkKKyAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBuYW1lIChzdWJzdHJpbmcgaXRlbSAxKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9wICdvZmYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2ljZSAnb24KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBoYWxmb3AgJ29mZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFkbWluICdvZmYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lciAnb2Zm KSkKKyAgICAgICAgICAgICAgICAgICAgICgoZXEgKGVsdCBpdGVtIDApIGhvcC1jaCkKKyAgICAg ICAgICAgICAgICAgICAgICAoc2V0cSBuYW1lIChzdWJzdHJpbmcgaXRlbSAxKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9wICdvZmYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2ljZSAnb2ZmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsZm9wICdvbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFkbWluICdvZmYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvd25lciAnb2ZmKSkKICAgICAgICAgICAgICAgICAgICAgICgoZXEgKGVsdCBpdGVtIDAp IG9wLWNoKQogICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG5hbWUgKHN1YnN0cmluZyBpdGVt IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgJ29uCiEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdm9pY2UgJ29mZgohICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGZv cCAnb2ZmCiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW4gJ29mZgohICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG93bmVyICdvZmYpKQohICAgICAgICAgICAgICAgICAgICAgKChl cSAoZWx0IGl0ZW0gMCkgYWRtLWNoKQohICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG5hbWUg KHN1YnN0cmluZyBpdGVtIDEpCiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgJ29mZgoh ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWNlICdvZmYKISAgICAgICAgICAgICAgICAg ICAgICAgICAgICBoYWxmb3AgJ29mZgohICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkbWlu ICdvbgohICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyICdvZmYpKQohICAgICAgICAg ICAgICAgICAgICAgKChlcSAoZWx0IGl0ZW0gMCkgb3duLWNoKQogICAgICAgICAgICAgICAgICAg ICAgIChzZXRxIG5hbWUgKHN1YnN0cmluZyBpdGVtIDEpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3AgJ29mZgohICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWNlICdvZmYKISAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoYWxmb3AgJ29mZgohICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFkbWluICdvZmYKISAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lciAn b24pKQogICAgICAgICAgICAgICAgICAgICAgKHQgKHNldHEgbmFtZSAoc3Vic3RyaW5nIGl0ZW0g MSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wICdvZmYKISAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZvaWNlICdvZmYKISAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGhhbGZvcCAnb2ZmCiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pbiAnb2ZmCiEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lciAnb2ZmKSkpCiAgICAgICAgICAgICAg KHNldHEgbmFtZSBpdGVtCiAgICAgICAgICAgICAgICAgICAgb3AgJ29mZgohICAgICAgICAgICAg ICAgICAgIHZvaWNlICdvZmYKISAgICAgICAgICAgICAgICAgICBoYWxmb3AgJ29mZgohICAgICAg ICAgICAgICAgICAgIGFkbWluICdvZmYKISAgICAgICAgICAgICAgICAgICBvd25lciAnb2ZmKSkK ICAgICAgICAgICAgKHdoZW4gdXBkYXRlcAogICAgICAgICAgICAgIChwdXRoYXNoIChlcmMtZG93 bmNhc2UgbmFtZSkgdAogICAgICAgICAgICAgICAgICAgICAgIGVyYy1jaGFubmVsLW5ldy1tZW1i ZXItbmFtZXMpCiAgICAgICAgICAgICAgKGVyYy11cGRhdGUtY3VycmVudC1jaGFubmVsLW1lbWJl cgohICAgICAgICAgICAgICBuYW1lIG5hbWUgdCB2b2ljZSBoYWxmb3Agb3AgYWRtaW4gb3duZXIp KSkpKQogICAgICAocnVuLWhvb2tzICdlcmMtY2hhbm5lbC1tZW1iZXJzLWNoYW5nZWQtaG9vaykp KQoKICAoZGVmY3VzdG9tIGVyYy1jaGFubmVsLW1lbWJlcnMtY2hhbmdlZC1ob29rIG5pbAoqKioq KioqKioqKioqKioKKioqIDQ3OTUsNDgxMCAqKioqCiAgICAgIGNoYW5nZWQpKQoKICAoZGVmdW4g ZXJjLXVwZGF0ZS1jdXJyZW50LWNoYW5uZWwtbWVtYmVyCiEgICAobmljayBuZXctbmljayAmb3B0 aW9uYWwgYWRkIG9wIHZvaWNlIGhvc3QgbG9naW4gZnVsbC1uYW1lIGluZm8KICAgICAgICB1cGRh dGUtbWVzc2FnZS10aW1lKQogICAgIlVwZGF0ZSB0aGUgc3RvcmVkIHVzZXIgaW5mb3JtYXRpb24g Zm9yIHRoZSB1c2VyIHdpdGggbmlja25hbWUgTklDSy4KICBgZXJjLXVwZGF0ZS11c2VyJyBpcyBj YWxsZWQgdG8gaGFuZGxlIGNoYW5nZXMgdG8gbmlja25hbWUsCiEgSE9TVCwgTE9HSU4sIEZVTEwt TkFNRSwgYW5kIElORk8uICBJZiBPUCBvciBWT0lDRSBhcmUgbm9uLW5pbCwKISB0aGV5IG11c3Qg YmUgZXF1YWwgdG8gZWl0aGVyIGBvbicgb3IgYG9mZicsIGluIHdoaWNoIGNhc2UgdGhlCiEgb3Bl cmF0b3Igb3Igdm9pY2Ugc3RhdHVzIG9mIHRoZSB1c2VyIGluIHRoZSBjdXJyZW50IGNoYW5uZWwg aXMKISBjaGFuZ2VkIGFjY29yZGluZ2x5LiAgSWYgVVBEQVRFLU1FU1NBR0UtVElNRSBpcyBub24t bmlsLCB0aGUKISBsYXN0LW1lc3NhZ2UtdGltZSBvZiB0aGUgdXNlciBpbiB0aGUgY3VycmVudCBj aGFubmVsIGlzIHNldAohIHRvIChjdXJyZW50LXRpbWUpLgoKICBJZiBBREQgaXMgbm9uLW5pbCwg dGhlIHVzZXIgd2lsbCBiZSBhZGRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKICBpbmZvcm1hdGlvbiBp ZiBpdCBpcyBub3QgYWxyZWFkeSBwcmVzZW50IGluIHRoZSB1c2VyIG9yIGNoYW5uZWwKLS0tIDQ4 NzMsNDg4NyAtLS0tCiAgICAgIGNoYW5nZWQpKQoKICAoZGVmdW4gZXJjLXVwZGF0ZS1jdXJyZW50 LWNoYW5uZWwtbWVtYmVyCiEgICAobmljayBuZXctbmljayAmb3B0aW9uYWwgYWRkIHZvaWNlIGhh bGZvcCBvcCBhZG1pbiBvd25lciBob3N0IGxvZ2luIGZ1bGwtbmFtZSBpbmZvCiAgICAgICAgICB1 cGRhdGUtbWVzc2FnZS10aW1lKQogICAgIlVwZGF0ZSB0aGUgc3RvcmVkIHVzZXIgaW5mb3JtYXRp b24gZm9yIHRoZSB1c2VyIHdpdGggbmlja25hbWUgTklDSy4KICBgZXJjLXVwZGF0ZS11c2VyJyBp cyBjYWxsZWQgdG8gaGFuZGxlIGNoYW5nZXMgdG8gbmlja25hbWUsCiEgSE9TVCwgTE9HSU4sIEZV TEwtTkFNRSwgYW5kIElORk8uICBJZiBWT0lDRSBIQUxGT1AgT1AgQURNSU4gb3IgT1dORVIKISBh cmUgbm9uLW5pbCwgdGhleSBtdXN0IGJlIGVxdWFsIHRvIGVpdGhlciBgb24nIG9yIGBvZmYnLCBp biB3aGljaAohIGNhc2UgdGhlIHN0YXR1cyBvZiB0aGUgdXNlciBpbiB0aGUgY3VycmVudCBjaGFu bmVsIGlzIGNoYW5nZWQgYWNjb3JkaW5nbHkuCiEgSWYgVVBEQVRFLU1FU1NBR0UtVElNRSBpcyBu b24tbmlsLCB0aGUgbGFzdC1tZXNzYWdlLXRpbWUgb2YgdGhlIHVzZXIKISAgaW4gdGhlIGN1cnJl bnQgY2hhbm5lbCBpcyBzZXQgdG8gKGN1cnJlbnQtdGltZSkuCgogIElmIEFERCBpcyBub24tbmls LCB0aGUgdXNlciB3aWxsIGJlIGFkZGVkIHdpdGggdGhlIHNwZWNpZmllZAogIGluZm9ybWF0aW9u IGlmIGl0IGlzIG5vdCBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHVzZXIgb3IgY2hhbm5lbAoqKioq KioqKioqKioqKioKKioqIDQ4MjIsNDgyNyAqKioqCi0tLSA0ODk5LDQ5MTggLS0tLQogICAgICAo aWYgY3VzZXIKICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAoZXJjLWxvZyAoZm9ybWF0ICJ1 cGRhdGUtbWVtYmVyOiB1c2VyID0gJVMsIGN1c2VyID0gJVMiIHVzZXIgY3VzZXIpKQorICAgICAg ICAgICAod2hlbiAoYW5kIHZvaWNlCisgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXEgKGVy Yy1jaGFubmVsLXVzZXItdm9pY2UgY3VzZXIpIHZvaWNlKSkpCisgICAgICAgICAgICAgKHNldHEg Y2hhbmdlZCB0KQorICAgICAgICAgICAgIChzZXRmIChlcmMtY2hhbm5lbC11c2VyLXZvaWNlIGN1 c2VyKQorICAgICAgICAgICAgICAgICAgIChjb25kICgoZXEgdm9pY2UgJ29uKSB0KQorICAgICAg ICAgICAgICAgICAgICAgICAgICgoZXEgdm9pY2UgJ29mZikgbmlsKQorICAgICAgICAgICAgICAg ICAgICAgICAgICh0IHZvaWNlKSkpKQorICAgICAgICAgICAod2hlbiAoYW5kIGhhbGZvcAorICAg ICAgICAgICAgICAgICAgICAgIChub3QgKGVxIChlcmMtY2hhbm5lbC11c2VyLWhhbGZvcCBjdXNl cikgaGFsZm9wKSkpCisgICAgICAgICAgICAgKHNldHEgY2hhbmdlZCB0KQorICAgICAgICAgICAg IChzZXRmIChlcmMtY2hhbm5lbC11c2VyLWhhbGZvcCBjdXNlcikKKyAgICAgICAgICAgICAgICAg ICAoY29uZCAoKGVxIGhhbGZvcCAnb24pIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKChl cSBoYWxmb3AgJ29mZikgbmlsKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0IGhhbGZvcCkp KSkKICAgICAgICAgICAgKHdoZW4gKGFuZCBvcAogICAgICAgICAgICAgICAgICAgICAgIChub3Qg KGVxIChlcmMtY2hhbm5lbC11c2VyLW9wIGN1c2VyKSBvcCkpKQogICAgICAgICAgICAgIChzZXRx IGNoYW5nZWQgdCkKKioqKioqKioqKioqKioqCioqKiA0ODI5LDQ4NDEgKioqKgogICAgICAgICAg ICAgICAgICAoY29uZCAoKGVxIG9wICdvbikgdCkKICAgICAgICAgICAgICAgICAgICAgICAgKChl cSBvcCAnb2ZmKSBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICh0IG9wKSkpKQohICAgICAg ICAgKHdoZW4gKGFuZCB2b2ljZQohICAgICAgICAgICAgICAgICAgICAobm90IChlcSAoZXJjLWNo YW5uZWwtdXNlci12b2ljZSBjdXNlcikgdm9pY2UpKSkKICAgICAgICAgICAgICAoc2V0cSBjaGFu Z2VkIHQpCiEgICAgICAgICAgIChzZXRmIChlcmMtY2hhbm5lbC11c2VyLXZvaWNlIGN1c2VyKQoh ICAgICAgICAgICAgICAgICAoY29uZCAoKGVxIHZvaWNlICdvbikgdCkKISAgICAgICAgICAgICAg ICAgICAgICAgKChlcSB2b2ljZSAnb2ZmKSBuaWwpCiEgICAgICAgICAgICAgICAgICAgICAgICh0 IHZvaWNlKSkpKQogICAgICAgICAgKHdoZW4gdXBkYXRlLW1lc3NhZ2UtdGltZQogICAgICAgICAg ICAoc2V0ZiAoZXJjLWNoYW5uZWwtdXNlci1sYXN0LW1lc3NhZ2UtdGltZSBjdXNlcikgKGN1cnJl bnQtdGltZSkpKQogICAgICAgICAgKHNldHEgdXNlci1jaGFuZ2VkCi0tLSA0OTIwLDQ5MzkgLS0t LQogICAgICAgICAgICAgICAgICAgIChjb25kICgoZXEgb3AgJ29uKSB0KQogICAgICAgICAgICAg ICAgICAgICAgICAgICgoZXEgb3AgJ29mZikgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAg ICh0IG9wKSkpKQohICAgICAgICAgICAod2hlbiAoYW5kIGFkbWluCiEgICAgICAgICAgICAgICAg ICAgICAgKG5vdCAoZXEgKGVyYy1jaGFubmVsLXVzZXItYWRtaW4gY3VzZXIpIGFkbWluKSkpCiAg ICAgICAgICAgICAgKHNldHEgY2hhbmdlZCB0KQohICAgICAgICAgICAgIChzZXRmIChlcmMtY2hh bm5lbC11c2VyLWFkbWluIGN1c2VyKQohICAgICAgICAgICAgICAgICAgIChjb25kICgoZXEgYWRt aW4gJ29uKSB0KQohICAgICAgICAgICAgICAgICAgICAgICAgICgoZXEgYWRtaW4gJ29mZikgbmls KQohICAgICAgICAgICAgICAgICAgICAgICAgICh0IGFkbWluKSkpKQohICAgICAgICAgICAod2hl biAoYW5kIG93bmVyCiEgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXEgKGVyYy1jaGFubmVs LXVzZXItb3duZXIgY3VzZXIpIG93bmVyKSkpCiEgICAgICAgICAgICAgKHNldHEgY2hhbmdlZCB0 KQohICAgICAgICAgICAgIChzZXRmIChlcmMtY2hhbm5lbC11c2VyLW93bmVyIGN1c2VyKQohICAg ICAgICAgICAgICAgICAgIChjb25kICgoZXEgb3duZXIgJ29uKSB0KQohICAgICAgICAgICAgICAg ICAgICAgICAgICgoZXEgb3duZXIgJ29mZikgbmlsKQohICAgICAgICAgICAgICAgICAgICAgICAg ICh0IG93bmVyKSkpKQogICAgICAgICAgICAod2hlbiB1cGRhdGUtbWVzc2FnZS10aW1lCiAgICAg ICAgICAgICAgKHNldGYgKGVyYy1jaGFubmVsLXVzZXItbGFzdC1tZXNzYWdlLXRpbWUgY3VzZXIp IChjdXJyZW50LXRpbWUpKSkKICAgICAgICAgICAgKHNldHEgdXNlci1jaGFuZ2VkCioqKioqKioq KioqKioqKgoqKiogNDg1Niw0ODY3ICoqKioKICAgICAgICAgICAgICAgIChjb25zIChjdXJyZW50 LWJ1ZmZlcikKICAgICAgICAgICAgICAgICAgICAgIChlcmMtc2VydmVyLXVzZXItYnVmZmVycyB1 c2VyKSkpKQogICAgICAgIChzZXRxIGN1c2VyIChtYWtlLWVyYy1jaGFubmVsLXVzZXIKLSAgICAg ICAgICAgICAgICAgICAgOm9wIChjb25kICgoZXEgb3AgJ29uKSB0KQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChlcSBvcCAnb2ZmKSBuaWwpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodCBvcCkpCiAgICAgICAgICAgICAgICAgICAgIDp2b2ljZSAoY29uZCAoKGVxIHZv aWNlICdvbikgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXEgdm9pY2Ug J29mZikgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQgdm9pY2UpKQog ICAgICAgICAgICAgICAgICAgICA6bGFzdC1tZXNzYWdlLXRpbWUKICAgICAgICAgICAgICAgICAg ICAgKGlmIHVwZGF0ZS1tZXNzYWdlLXRpbWUgKGN1cnJlbnQtdGltZSkpKSkKICAgICAgICAocHV0 aGFzaCAoZXJjLWRvd25jYXNlIG5pY2spIChjb25zIHVzZXIgY3VzZXIpCi0tLSA0OTU0LDQ5NzQg LS0tLQogICAgICAgICAgICAgICAgICAoY29ucyAoY3VycmVudC1idWZmZXIpCiAgICAgICAgICAg ICAgICAgICAgICAgIChlcmMtc2VydmVyLXVzZXItYnVmZmVycyB1c2VyKSkpKQogICAgICAgICAg KHNldHEgY3VzZXIgKG1ha2UtZXJjLWNoYW5uZWwtdXNlcgogICAgICAgICAgICAgICAgICAgICAg IDp2b2ljZSAoY29uZCAoKGVxIHZvaWNlICdvbikgdCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKChlcSB2b2ljZSAnb2ZmKSBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh0IHZvaWNlKSkKKyAgICAgICAgICAgICAgICAgICAgICA6aGFsZm9wIChj b25kICgoZXEgaGFsZm9wICdvbikgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoZXEgaGFsZm9wICdvZmYpIG5pbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh0IGhhbGZvcCkpCisgICAgICAgICAgICAgICAgICAgICAgOm9wIChjb25kICgoZXEgb3AgJ29u KSB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxIG9wICdvZmYpIG5pbCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQgb3ApKQorICAgICAgICAgICAgICAg ICAgICAgIDphZG1pbiAoY29uZCAoKGVxIGFkbWluICdvbikgdCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKChlcSBhZG1pbiAnb2ZmKSBuaWwpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh0IGFkbWluKSkKKyAgICAgICAgICAgICAgICAgICAgICA6b3du ZXIgKGNvbmQgKChlcSBvd25lciAnb24pIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoZXEgb3duZXIgJ29mZikgbmlsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodCBvd25lcikpCiAgICAgICAgICAgICAgICAgICAgICAgOmxhc3QtbWVzc2FnZS10 aW1lCiAgICAgICAgICAgICAgICAgICAgICAgKGlmIHVwZGF0ZS1tZXNzYWdlLXRpbWUgKGN1cnJl bnQtdGltZSkpKSkKICAgICAgICAgIChwdXRoYXNoIChlcmMtZG93bmNhc2UgbmljaykgKGNvbnMg dXNlciBjdXNlcikKKioqKioqKioqKioqKioqCioqKiA0ODcyLDQ4NzggKioqKgogICAgICAob3Ig Y2hhbmdlZCB1c2VyLWNoYW5nZWQgYWRkKSkpCgogIChkZWZ1biBlcmMtdXBkYXRlLWNoYW5uZWwt bWVtYmVyIChjaGFubmVsIG5pY2sgbmV3LW5pY2sKISAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZvcHRpb25hbCBhZGQgb3Agdm9pY2UgaG9zdCBsb2dpbgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZnVsbC1uYW1lIGluZm8gdXBkYXRlLW1lc3NhZ2UtdGltZSkKICAg ICJVcGRhdGUgdXNlciBhbmQgY2hhbm5lbCBpbmZvcm1hdGlvbiBmb3IgdGhlIHVzZXIgd2l0aAog IG5pY2tuYW1lIE5JQ0sgaW4gY2hhbm5lbCBDSEFOTkVMLgotLS0gNDk3OSw0OTg1IC0tLS0KICAg ICAgKG9yIGNoYW5nZWQgdXNlci1jaGFuZ2VkIGFkZCkpKQoKICAoZGVmdW4gZXJjLXVwZGF0ZS1j aGFubmVsLW1lbWJlciAoY2hhbm5lbCBuaWNrIG5ldy1uaWNrCiEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIGFkZCB2b2ljZSBoYWxmb3Agb3AgYWRt aW4gb3duZXIgaG9zdCBsb2dpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZ1bGwtbmFtZSBpbmZvIHVwZGF0ZS1tZXNzYWdlLXRpbWUpCiAgICAiVXBkYXRlIHVz ZXIgYW5kIGNoYW5uZWwgaW5mb3JtYXRpb24gZm9yIHRoZSB1c2VyIHdpdGgKICBuaWNrbmFtZSBO SUNLIGluIGNoYW5uZWwgQ0hBTk5FTC4KKioqKioqKioqKioqKioqCioqKiA0ODgwLDQ4ODYgKioq KgogIFNlZSBhbHNvOiBgZXJjLXVwZGF0ZS1jdXJyZW50LWNoYW5uZWwtbWVtYmVyJy4iCiAgICAo ZXJjLXdpdGgtYnVmZmVyCiAgICAgKGNoYW5uZWwpCiEgICAgKGVyYy11cGRhdGUtY3VycmVudC1j aGFubmVsLW1lbWJlciBuaWNrIG5ldy1uaWNrIGFkZCBvcCB2b2ljZSBob3N0CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW4gZnVsbC1uYW1lIGluZm8KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUtbWVzc2FnZS10aW1lKSkpCgotLS0g NDk4Nyw0OTkzIC0tLS0KICBTZWUgYWxzbzogYGVyYy11cGRhdGUtY3VycmVudC1jaGFubmVsLW1l bWJlcicuIgogICAgKGVyYy13aXRoLWJ1ZmZlcgogICAgICAgIChjaGFubmVsKQohICAgICAoZXJj LXVwZGF0ZS1jdXJyZW50LWNoYW5uZWwtbWVtYmVyIG5pY2sgbmV3LW5pY2sgYWRkIHZvaWNlIGhh bGZvcCBvcCBhZG1pbiBvd25lciBob3N0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbG9naW4gZnVsbC1uYW1lIGluZm8KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1cGRhdGUtbWVzc2FnZS10aW1lKSkpCgoqKioqKioqKioqKioqKioKKioq IDQ5NzksNDk4NSAqKioqCiAgICAgICAgKHdoaWxlIGNoYXJzCiAgICAgICAgICAoY29uZCAoKHN0 cmluZz0gKGNhciBjaGFycykgIisiKSAoc2V0cSBhZGQtcCB0KSkKICAgICAgICAgICAgICAgICgo c3RyaW5nPSAoY2FyIGNoYXJzKSAiLSIpIChzZXRxIGFkZC1wIG5pbCkpCiEgICAgICAgICAgICAg ICAoKHN0cmluZy1tYXRjaCAiXltvdmJPVkJdIiAoY2FyIGNoYXJzKSkKICAgICAgICAgICAgICAg ICAoc2V0cSBhcmctbW9kZXMgKGNvbnMgKGxpc3QgKGNhciBjaGFycykKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGFkZC1wICdvbiAnb2ZmKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgYXJncyAoY2FyIGFyZ3Mp IG5pbCkpCi0tLSA1MDg2LDUwOTIgLS0tLQogICAgICAgICAgKHdoaWxlIGNoYXJzCiAgICAgICAg ICAgIChjb25kICgoc3RyaW5nPSAoY2FyIGNoYXJzKSAiKyIpIChzZXRxIGFkZC1wIHQpKQogICAg ICAgICAgICAgICAgICAoKHN0cmluZz0gKGNhciBjaGFycykgIi0iKSAoc2V0cSBhZGQtcCBuaWwp KQohICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXltxYW92aGJRQU9WSEJdIiAoY2Fy IGNoYXJzKSkKICAgICAgICAgICAgICAgICAgIChzZXRxIGFyZy1tb2RlcyAoY29ucyAobGlzdCAo Y2FyIGNoYXJzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChpZiBhZGQtcCAnb24gJ29mZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaWYgYXJncyAoY2FyIGFyZ3MpIG5pbCkpCioqKioqKioqKioqKioqKgoqKiog NTAzNSw1MDQ1ICoqKioKICAgICAgICAgICAgICAgICAobGV0ICgobW9kZSAobnRoIDAgKGNhciBh cmctbW9kZXMpKSkKICAgICAgICAgICAgICAgICAgICAgICAob25vZmYgKG50aCAxIChjYXIgYXJn LW1vZGVzKSkpCiAgICAgICAgICAgICAgICAgICAgICAgKGFyZyAobnRoIDIgKGNhciBhcmctbW9k ZXMpKSkpCiEgICAgICAgICAgICAgICAgICAoY29uZCAoKHN0cmluZy1tYXRjaCAiXltvT10iIG1v ZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVyYy11cGRhdGUtY2hhbm5lbC1tZW1iZXIg dGd0IGFyZyBhcmcgbmlsIG9ub2ZmKSkKISAgICAgICAgICAgICAgICAgICAgICAgICgoc3RyaW5n LW1hdGNoICJeW1Z2XSIgbW9kZSkKISAgICAgICAgICAgICAgICAgICAgICAgICAoZXJjLXVwZGF0 ZS1jaGFubmVsLW1lbWJlciB0Z3QgYXJnIGFyZyBuaWwgbmlsCiEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25vZmYpKQogICAgICAgICAgICAgICAg ICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5bTGxdIiBtb2RlKQogICAgICAgICAgICAgICAgICAg ICAgICAgIChlcmMtdXBkYXRlLWNoYW5uZWwtbGltaXQgdGd0IG9ub2ZmIGFyZykpCiAgICAgICAg ICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXltLa10iIG1vZGUpCi0tLSA1MTQyLDUx NTcgLS0tLQogICAgICAgICAgICAgICAgICAgKGxldCAoKG1vZGUgKG50aCAwIChjYXIgYXJnLW1v ZGVzKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAob25vZmYgKG50aCAxIChjYXIgYXJnLW1v ZGVzKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoYXJnIChudGggMiAoY2FyIGFyZy1tb2Rl cykpKSkKISAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChzdHJpbmctbWF0Y2ggIl5bVnZdIiBt b2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVyYy11cGRhdGUtY2hhbm5lbC1tZW1i ZXIgdGd0IGFyZyBhcmcgbmlsIG9ub2ZmKSkKISAgICAgICAgICAgICAgICAgICAgICAgICAgKChz dHJpbmctbWF0Y2ggIl5baEhdIiBtb2RlKQohICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVy Yy11cGRhdGUtY2hhbm5lbC1tZW1iZXIgdGd0IGFyZyBhcmcgbmlsIG5pbCBvbm9mZikpCiEgICAg ICAgICAgICAgICAgICAgICAgICAgICgoc3RyaW5nLW1hdGNoICJeW29PXSIgbW9kZSkKISAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlcmMtdXBkYXRlLWNoYW5uZWwtbWVtYmVyIHRndCBhcmcg YXJnIG5pbCBuaWwgbmlsIG9ub2ZmKSkKISAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdHJp bmctbWF0Y2ggIl5bYUFdIiBtb2RlKQohICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVyYy11 cGRhdGUtY2hhbm5lbC1tZW1iZXIgdGd0IGFyZyBhcmcgbmlsIG5pbCBuaWwgbmlsIG9ub2ZmKSkK ISAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5bcVFdIiBtb2RlKQoh ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVyYy11cGRhdGUtY2hhbm5lbC1tZW1iZXIgdGd0 IGFyZyBhcmcgbmlsIG5pbCBuaWwgbmlsIG5pbCBvbm9mZikpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoc3RyaW5nLW1hdGNoICJeW0xsXSIgbW9kZSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChlcmMtdXBkYXRlLWNoYW5uZWwtbGltaXQgdGd0IG9ub2ZmIGFyZykpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoc3RyaW5nLW1hdGNoICJeW0trXSIgbW9kZSkKKioqKioqKioq KioqKioqCioqKiA1OTc4LDYwMDMgKioqKgogICAgICAgICAodXNlciAoaWYgY2hhbm5lbC1kYXRh CiAgICAgICAgICAgICAgICAgICAoY2FyIGNoYW5uZWwtZGF0YSkKICAgICAgICAgICAgICAgICAo ZXJjLWdldC1zZXJ2ZXItdXNlciB3b3JkKSkpCiEgICAgICAgIGhvc3QgbG9naW4gZnVsbC1uYW1l IG5pY2sgb3Agdm9pY2UpCiAgICAgICh3aGVuIHVzZXIKICAgICAgICAoc2V0cSBuaWNrIChlcmMt c2VydmVyLXVzZXItbmlja25hbWUgdXNlcikKICAgICAgICAgICAgaG9zdCAoZXJjLXNlcnZlci11 c2VyLWhvc3QgdXNlcikKICAgICAgICAgICAgbG9naW4gKGVyYy1zZXJ2ZXItdXNlci1sb2dpbiB1 c2VyKQogICAgICAgICAgICBmdWxsLW5hbWUgKGVyYy1zZXJ2ZXItdXNlci1mdWxsLW5hbWUgdXNl cikpCiAgICAgICAgKGlmIGN1c2VyCiEgICAgICAgICAoc2V0cSBvcCAoZXJjLWNoYW5uZWwtdXNl ci1vcCBjdXNlcikKISAgICAgICAgICAgICAgIHZvaWNlIChlcmMtY2hhbm5lbC11c2VyLXZvaWNl IGN1c2VyKSkpCiAgICAgICAgKGlmIChjYWxsZWQtaW50ZXJhY3RpdmVseS1wICdpbnRlcmFjdGl2 ZSkKICAgICAgICAgIChtZXNzYWdlICIlcyBpcyAlc0AlcyVzJXMiCiAgICAgICAgICAgICAgICAg ICBuaWNrIGxvZ2luIGhvc3QKICAgICAgICAgICAgICAgICAgIChpZiBmdWxsLW5hbWUgKGZvcm1h dCAiICglcykiIGZ1bGwtbmFtZSkgIiIpCiEgICAgICAgICAgICAgICAgICAoaWYgKG9yIG9wIHZv aWNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiIGFuZCBpcyArJXMl cyBvbiAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBvcCAibyIgIiIpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgdm9pY2UgInYiICIiKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGVyYy1kZWZhdWx0LXRhcmdldCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiIpKQohICAgICAgIHVzZXIpKSkpCgogIChkZWZ1biBlcmMtYXdheS10 aW1lICgpCiAgICAiUmV0dXJuIG5vbi1uaWwgaWYgdGhlIGN1cnJlbnQgRVJDIHByb2Nlc3MgaXMg c2V0IGF3YXkuCi0tLSA2MDkwLDYxMjEgLS0tLQogICAgICAgICAgICh1c2VyIChpZiBjaGFubmVs LWRhdGEKICAgICAgICAgICAgICAgICAgICAgKGNhciBjaGFubmVsLWRhdGEpCiAgICAgICAgICAg ICAgICAgICAoZXJjLWdldC1zZXJ2ZXItdXNlciB3b3JkKSkpCiEgICAgICAgICAgaG9zdCBsb2dp biBmdWxsLW5hbWUgbmljayB2b2ljZSBoYWxmb3Agb3AgYWRtaW4gb3duZXIpCiAgICAgICh3aGVu IHVzZXIKICAgICAgICAoc2V0cSBuaWNrIChlcmMtc2VydmVyLXVzZXItbmlja25hbWUgdXNlcikK ICAgICAgICAgICAgICBob3N0IChlcmMtc2VydmVyLXVzZXItaG9zdCB1c2VyKQogICAgICAgICAg ICAgIGxvZ2luIChlcmMtc2VydmVyLXVzZXItbG9naW4gdXNlcikKICAgICAgICAgICAgICBmdWxs LW5hbWUgKGVyYy1zZXJ2ZXItdXNlci1mdWxsLW5hbWUgdXNlcikpCiAgICAgICAgKGlmIGN1c2Vy CiEgICAgICAgICAgIChzZXRxIHZvaWNlIChlcmMtY2hhbm5lbC11c2VyLXZvaWNlIGN1c2VyKQoh ICAgICAgICAgICAgICAgICBoYWxmb3AgKGVyYy1jaGFubmVsLXVzZXItaGFsZm9wIGN1c2VyKQoh ICAgICAgICAgICAgICAgICBvcCAoZXJjLWNoYW5uZWwtdXNlci1vcCBjdXNlcikKISAgICAgICAg ICAgICAgICAgYWRtaW4gKGVyYy1jaGFubmVsLXVzZXItYWRtaW4gY3VzZXIpCiEgICAgICAgICAg ICAgICAgIG93bmVyIChlcmMtY2hhbm5lbC11c2VyLW93bmVyIGN1c2VyKSkpKQogICAgICAoaWYg KGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgJ2ludGVyYWN0aXZlKQogICAgICAgICAgKG1lc3NhZ2Ug IiVzIGlzICVzQCVzJXMlcyIKICAgICAgICAgICAgICAgICAgIG5pY2sgbG9naW4gaG9zdAogICAg ICAgICAgICAgICAgICAgKGlmIGZ1bGwtbmFtZSAoZm9ybWF0ICIgKCVzKSIgZnVsbC1uYW1lKSAi IikKISAgICAgICAgICAgICAgICAgIChpZiAob3Igdm9pY2UgaGFsZm9wIG9wIGFkbWluIG93bmVy KQogICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiBhbmQgaXMgKyVzJXMgb24gJXMiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgdm9pY2UgInYiICIiKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIGhhbGZvcCAiaCIgIiIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoaWYgb3AgIm8iICIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGlmIGFkbWluICJhIiAiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBv d25lciAicSIgIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJjLWRlZmF1bHQt dGFyZ2V0KSkKICAgICAgICAgICAgICAgICAgICAgIiIpKQohICAgICAgIHVzZXIpKSkKCiAgKGRl ZnVuIGVyYy1hd2F5LXRpbWUgKCkKICAgICJSZXR1cm4gbm9uLW5pbCBpZiB0aGUgY3VycmVudCBF UkMgcHJvY2VzcyBpcyBzZXQgYXdheS4K --089e0158c15a22e0cb04fb8dfae8--