<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.freebsd.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.freebsd.org/bugzilla/"
          
          maintainer="bugmeister@FreeBSD.org"
>

    <bug>
          <bug_id>163213</bug_id>
          
          <creation_ts>2011-12-12 22:50:11 +0000</creation_ts>
          <short_desc>[new port]: databases/tarantool Tarantool, is a high performance key/value storage server</short_desc>
          <delta_ts>2012-01-02 15:50:07 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Ports &amp; Packages</product>
          <component>Individual Port(s)</component>
          <version>Latest</version>
          <rep_platform>Any</rep_platform>
          <op_sys>Any</op_sys>
          <bug_status>Closed</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Normal</priority>
          <bug_severity>Affects Only Me</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Veniamin">g.veniamin</reporter>
          <assigned_to name="Eitan Adler">eadler</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>641583</commentid>
    <comment_count>0</comment_count>
    <who name="Veniamin">g.veniamin</who>
    <bug_when>2011-12-12 22:50:11 +0000</bug_when>
    <thetext>Tarantool/Box, or simply Tarantool, is a high performance key/value storage server. The code is available for free under the terms of BSD license. Supported platforms are GNU/Linux and FreeBSD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641584</commentid>
    <comment_count>1</comment_count>
    <who name="Eitan Adler">eadler</who>
    <bug_when>2011-12-25 18:30:49 +0000</bug_when>
    <thetext>Responsible Changed
From-To: freebsd-ports-bugs-&gt;eadler

I&apos;ll take it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641587</commentid>
    <comment_count>2</comment_count>
    <who name="Eitan Adler">eadler</who>
    <bug_when>2012-01-02 04:06:29 +0000</bug_when>
    <thetext>The port fails to compile:

-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- Looking for __libc_stack_end in
-- Looking for __libc_stack_end in  - not found
CMake Error at CMakeLists.txt:83 (set_target_properties):
  set_target_properties Can not find target to add properties to: coro


-- Looking for __gcov_flush in gcov
-- Looking for __gcov_flush in gcov - found
CMake Error at CMakeLists.txt:175 (message):
  ENABLE_BACKTRACE option is set but the system is not x86 based (amd64) or
  the compiler is not GNU GCC (/usr/bin/cc).


On Sun, Dec 25, 2011 at 1:30 PM,  &lt;eadler@freebsd.org&gt; wrote:
&gt; Synopsis: [new port]: databases/tarantool Tarantool, is a high performance key/value storage server
&gt;
&gt; Responsible-Changed-From-To: freebsd-ports-bugs-&gt;eadler
&gt; Responsible-Changed-By: eadler
&gt; Responsible-Changed-When: Sun Dec 25 18:30:49 UTC 2011
&gt; Responsible-Changed-Why:
&gt; I&apos;ll take it.
&gt;
&gt; http://www.freebsd.org/cgi/query-pr.cgi?pr=163213
&gt;



-- 
Eitan Adler
Ports committer
X11, Bugbusting teams</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641585</commentid>
    <comment_count>3</comment_count>
    <who name="Eitan Adler">eadler</who>
    <bug_when>2012-01-02 04:07:07 +0000</bug_when>
    <thetext>State Changed
From-To: open-&gt;feedback

per followup - port fails to compile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641588</commentid>
    <comment_count>4</comment_count>
    <who name="dfilter service">dfilter</who>
    <bug_when>2012-01-02 15:41:37 +0000</bug_when>
    <thetext>eadler      2012-01-02 15:41:28 UTC

  FreeBSD ports repository

  Modified files:
    databases            Makefile 
  Added files:
    databases/tarantool  Makefile distinfo pkg-descr pkg-plist 
    databases/tarantool/files patch-CMakeLists.txt 
                              patch-test_CMakeLists.txt 
                              patch-test_box_tarantool.cfg 
                              patch-test_lib_sql.g 
                              patch-test_lib_sql.py 
                              patch-test_lib_sql_ast.py 
                              patch-test_lib_tarantool_connection.py 
                              patch-test_lib_tarantool_silverbox_server.py 
                              patch-test_lib_test_suite.py 
                              patch-test_tarantool pkg-message.in 
                              tarantool.in 
  Log:
  Tarantool/Box, or simply Tarantool, is a high performance key/value
  storage server. The code is available for free under the terms of
  BSD license. Supported platforms are GNU/Linux and FreeBSD.
  
  WWW:    http://tarantool.org/
  
  PR:             ports/163213
  Submitted by:   Gvozdikov Veniamin &lt;g.veniamin@googlemail.com&gt;
  
  Revision  Changes    Path
  1.1067    +1 -0      ports/databases/Makefile
  1.1       +43 -0     ports/databases/tarantool/Makefile (new)
  1.1       +2 -0      ports/databases/tarantool/distinfo (new)
  1.1       +11 -0     ports/databases/tarantool/files/patch-CMakeLists.txt (new)
  1.1       +9 -0      ports/databases/tarantool/files/patch-test_CMakeLists.txt (new)
  1.1       +17 -0     ports/databases/tarantool/files/patch-test_box_tarantool.cfg (new)
  1.1       +57 -0     ports/databases/tarantool/files/patch-test_lib_sql.g (new)
  1.1       +92 -0     ports/databases/tarantool/files/patch-test_lib_sql.py (new)
  1.1       +45 -0     ports/databases/tarantool/files/patch-test_lib_sql_ast.py (new)
  1.1       +158 -0    ports/databases/tarantool/files/patch-test_lib_tarantool_connection.py (new)
  1.1       +266 -0    ports/databases/tarantool/files/patch-test_lib_tarantool_silverbox_server.py (new)
  1.1       +210 -0    ports/databases/tarantool/files/patch-test_lib_test_suite.py (new)
  1.1       +30 -0     ports/databases/tarantool/files/patch-test_tarantool (new)
  1.1       +10 -0     ports/databases/tarantool/files/pkg-message.in (new)
  1.1       +29 -0     ports/databases/tarantool/files/tarantool.in (new)
  1.1       +5 -0      ports/databases/tarantool/pkg-descr (new)
  1.1       +21 -0     ports/databases/tarantool/pkg-plist (new)
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to &quot;cvs-all-unsubscribe@freebsd.org&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641586</commentid>
    <comment_count>5</comment_count>
    <who name="Eitan Adler">eadler</who>
    <bug_when>2012-01-02 15:42:05 +0000</bug_when>
    <thetext>State Changed
From-To: feedback-&gt;closed

committed and changed per discussion</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>120410</attachid>
            <date>2011-12-12 22:50:11 +0000</date>
            <delta_ts>2011-12-12 22:50:11 +0000</delta_ts>
            <desc>file.shar</desc>
            <filename>file.shar</filename>
            <type>text/plain</type>
            <size>39479</size>
            <attacher name="Veniamin">g.veniamin</attacher>
            
              <data encoding="base64">IyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZS4gIFNhdmUgaXQgaW4gYSBmaWxlLCByZW1vdmUgYW55
dGhpbmcgYmVmb3JlCiMgdGhpcyBsaW5lLCBhbmQgdGhlbiB1bnBhY2sgaXQgYnkgZW50ZXJpbmcg
InNoIGZpbGUiLiAgTm90ZSwgaXQgbWF5CiMgY3JlYXRlIGRpcmVjdG9yaWVzOyBmaWxlcyBhbmQg
ZGlyZWN0b3JpZXMgd2lsbCBiZSBvd25lZCBieSB5b3UgYW5kCiMgaGF2ZSBkZWZhdWx0IHBlcm1p
c3Npb25zLgojCiMgVGhpcyBhcmNoaXZlIGNvbnRhaW5zOgojCiMJdGFyYW50b29sCiMJdGFyYW50
b29sL2Rpc3RpbmZvCiMJdGFyYW50b29sL3BrZy1wbGlzdAojCXRhcmFudG9vbC9NYWtlZmlsZQoj
CXRhcmFudG9vbC9wa2ctZGVzY3IKIwl0YXJhbnRvb2wvZmlsZXMKIwl0YXJhbnRvb2wvZmlsZXMv
cGF0Y2gtdGVzdF9saWJfc3FsLnB5CiMJdGFyYW50b29sL2ZpbGVzL3BhdGNoLXRlc3RfYm94X3Rh
cmFudG9vbC5jZmcKIwl0YXJhbnRvb2wvZmlsZXMvcGF0Y2gtdGVzdF9saWJfdGFyYW50b29sX3Np
bHZlcmJveF9zZXJ2ZXIucHkKIwl0YXJhbnRvb2wvZmlsZXMvcGtnLW1lc3NhZ2UuaW4KIwl0YXJh
bnRvb2wvZmlsZXMvdGFyYW50b29sLmluCiMJdGFyYW50b29sL2ZpbGVzL3BhdGNoLXRlc3RfbGli
X3RhcmFudG9vbF9jb25uZWN0aW9uLnB5CiMJdGFyYW50b29sL2ZpbGVzL3BhdGNoLXRlc3RfbGli
X3Rlc3Rfc3VpdGUucHkKIwl0YXJhbnRvb2wvZmlsZXMvcGF0Y2gtdGVzdF9saWJfc3FsLmcKIwl0
YXJhbnRvb2wvZmlsZXMvcGF0Y2gtdGVzdF90YXJhbnRvb2wKIwl0YXJhbnRvb2wvZmlsZXMvcGF0
Y2gtQ01ha2VMaXN0cy50eHQKIwl0YXJhbnRvb2wvZmlsZXMvcGF0Y2gtdGVzdF9saWJfc3FsX2Fz
dC5weQojCXRhcmFudG9vbC9maWxlcy9wYXRjaC10ZXN0X0NNYWtlTGlzdHMudHh0CiMKZWNobyBj
IC0gdGFyYW50b29sCm1rZGlyIC1wIHRhcmFudG9vbCA+IC9kZXYvbnVsbCAyPiYxCmVjaG8geCAt
IHRhcmFudG9vbC9kaXN0aW5mbwpzZWQgJ3MvXlgvLycgPnRhcmFudG9vbC9kaXN0aW5mbyA8PCAn
ZTAwOWY5ZGQxODM3MDQyNzA1M2U5MDNiYmFlYWU0MTcnClhTSEEyNTYgKHRhcmFudG9vbC0xLjMu
NS1zcmMudGFyLmd6KSA9IGM3OGViMzAyZWFiYWM3YjZhZTA0YThlYWRmOGIyODE5ZTk5MmQyOTEz
Y2RhZmUxYTg2MjIyMTQ4OTgyMzUxZWMKWFNJWkUgKHRhcmFudG9vbC0xLjMuNS1zcmMudGFyLmd6
KSA9IDgyOTMyNwplMDA5ZjlkZDE4MzcwNDI3MDUzZTkwM2JiYWVhZTQxNwplY2hvIHggLSB0YXJh
bnRvb2wvcGtnLXBsaXN0CnNlZCAncy9eWC8vJyA+dGFyYW50b29sL3BrZy1wbGlzdCA8PCAnOGM0
MTM3NWQyYjFiMGZlOGZmOTFmNDkzODc1ZWQwMTcnClhiaW4vbGliL19faW5pdF9fLnB5ClhiaW4v
bGliL3NxbC5nClhiaW4vbGliL3NxbC5weQpYYmluL2xpYi9zcWxfYXN0LnB5ClhiaW4vbGliL3Rh
cmFudG9vbF9jb25uZWN0aW9uLnB5ClhiaW4vbGliL3RhcmFudG9vbF9wcmVwcm9jZXNzb3IucHkK
WGJpbi9saWIvdGFyYW50b29sX3NpbHZlcmJveF9zZXJ2ZXIucHkKWGJpbi9saWIvdGVzdF9zdWl0
ZS5weQpYYmluL2xpYi95YXBwcy9fX2luaXRfXy5weQpYYmluL2xpYi95YXBwcy9ydW50aW1lLnB5
ClhiaW4vdGFyYW50b29sClhiaW4vdGFyYW50b29sX2ZlZWRlcgpYYmluL3RhcmFudG9vbF9zaWx2
ZXJib3gKWCUlRE9DU0RJUiUlL0xJQ0VOU0UKWCUlRE9DU0RJUiUlL1JFQURNRQpYJSVET0NTRElS
JSUvc2lsdmVyYm94LXByb3RvY29sLnR4dApYJSVFVENESVIlJS90YXJhbnRvb2wuY2ZnClhAZGly
cm0gJSVET0NTRElSJSUKWEBkaXJybSAlJUVUQ0RJUiUlClhAZGlycm0gYmluL2xpYi95YXBwcwpY
QGRpcnJtIGJpbi9saWIKOGM0MTM3NWQyYjFiMGZlOGZmOTFmNDkzODc1ZWQwMTcKZWNobyB4IC0g
dGFyYW50b29sL01ha2VmaWxlCnNlZCAncy9eWC8vJyA+dGFyYW50b29sL01ha2VmaWxlIDw8ICdi
ZTNlYmJmNmRjZTk4ZTMzMjA2NDY3NDc1ZWQzMmNhOCcKWCMgTmV3IHBvcnRzIGNvbGxlY3Rpb24g
bWFrZWZpbGUgZm9yOgl0YXJhbnRvb2wKWCMgRGF0ZSBjcmVhdGVkOgkJMjAxMS0xMS0yNQpYIyBX
aG9tOgkJCUd2b3pkaWtvdiBWZW5pYW1pbiA8Zy52ZW5pYW1pbkBnb29nbGVtYWlsLmNvbT4KWCMK
WCMgJEZyZWVCU0QkClgjClgKWFBPUlROQU1FPQl0YXJhbnRvb2wKWFBPUlRWRVJTSU9OPQkxLjMu
NQpYQ0FURUdPUklFUz0JZGF0YWJhc2VzClhNQVNURVJfU0lURVM9CWh0dHA6Ly9sYXVuY2hwYWRs
aWJyYXJpYW4ubmV0LzcxNzA1MDk0LwpYRElTVE5BTUU9CSR7UE9SVE5BTUV9LSR7UE9SVFZFUlNJ
T059LXNyYwpYClhNQUlOVEFJTkVSPQlnLnZlbmlhbWluQGdvb2dsZW1haWwuY29tClhDT01NRU5U
PQlUYXJhbnRvb2wsIGlzIGEgaGlnaCBwZXJmb3JtYW5jZSBrZXkvdmFsdWUgc3RvcmFnZSBzZXJ2
ZXIKWApYTElDRU5TRT0JQlNEClgKWFVTRV9DTUFLRT0JeWVzClhBUkNIPQkJaTM4NgpYVVNFX1JD
X1NVQlI9CSR7UE9SVE5BTUV9ClhTVUJfRklMRVM9CXBrZy1tZXNzYWdlClgKWC5pbmNsdWRlIDxi
c2QucG9ydC5wcmUubWs+ClgKWHBvc3QtcGF0Y2g6ClgJQCR7UkVJTlBMQUNFX0NNRH0gLWUgJ3N8
JSVET0NTRElSJSV8JHtET0NTRElSfXxnJyBcClgJCSR7V1JLU1JDfS9DTWFrZUxpc3RzLnR4dApY
CUAke1JFSU5QTEFDRV9DTUR9IC1lICdzfCUlRVRDRElSJSV8JHtFVENESVJ9fGcnIFwKWAkJJHtX
UktTUkN9L3Rlc3QvQ01ha2VMaXN0cy50eHQKWAlAJHtSTX0gJHtXUktTUkN9L3Rlc3QvbGliL3Nl
cnZlci5weSBcClgJCSR7V1JLU1JDfS90ZXN0L2xpYi9zaWx2ZXJib3gucHkgXApYCQkke1dSS1NS
Q30vdGVzdC9saWIvdGFyYW50b29sX2FkbWluLnB5IFwKWAkJJHtXUktTUkN9L3Rlc3QvbGliL3Rh
cmFudG9vbF9mZWVkZXJfc2VydmVyLnB5IFwKWAkJJHtXUktTUkN9L3Rlc3QvbGliL3RhcmFudG9v
bF9zZXJ2ZXIucHkgXApYCQkke1dSS1NSQ30vdGVzdC9saWIvKi5vcmlnClgKWHBvc3QtaW5zdGFs
bDoKWAlAJHtDQVR9ICR7UEtHTUVTU0FHRX0KWApYLmluY2x1ZGUgPGJzZC5wb3J0LnBvc3QubWs+
CmJlM2ViYmY2ZGNlOThlMzMyMDY0Njc0NzVlZDMyY2E4CmVjaG8geCAtIHRhcmFudG9vbC9wa2ct
ZGVzY3IKc2VkICdzL15YLy8nID50YXJhbnRvb2wvcGtnLWRlc2NyIDw8ICc5M2RjMTE0YTRmYzk5
OWY0MGQwN2E5MmQ1YjBmZDE0NCcKWFRhcmFudG9vbC9Cb3gsIG9yIHNpbXBseSBUYXJhbnRvb2ws
IGlzIGEgaGlnaCBwZXJmb3JtYW5jZSBrZXkvdmFsdWUKWHN0b3JhZ2Ugc2VydmVyLiBUaGUgY29k
ZSBpcyBhdmFpbGFibGUgZm9yIGZyZWUgdW5kZXIgdGhlIHRlcm1zIG9mClhCU0QgbGljZW5zZS4g
U3VwcG9ydGVkIHBsYXRmb3JtcyBhcmUgR05VL0xpbnV4IGFuZCBGcmVlQlNELgpYClhXV1c6CWh0
dHA6Ly90YXJhbnRvb2wub3JnLwo5M2RjMTE0YTRmYzk5OWY0MGQwN2E5MmQ1YjBmZDE0NAplY2hv
IGMgLSB0YXJhbnRvb2wvZmlsZXMKbWtkaXIgLXAgdGFyYW50b29sL2ZpbGVzID4gL2Rldi9udWxs
IDI+JjEKZWNobyB4IC0gdGFyYW50b29sL2ZpbGVzL3BhdGNoLXRlc3RfbGliX3NxbC5weQpzZWQg
J3MvXlgvLycgPnRhcmFudG9vbC9maWxlcy9wYXRjaC10ZXN0X2xpYl9zcWwucHkgPDwgJ2Q0NGY0
MjcwM2U5OGEzMWZhNGM1MjFiOGQ2M2JmOTg5JwpYLS0tIHRlc3QvbGliL3NxbC5weS5vcmlnCTIw
MTEtMDUtMTQgMTI6MTY6MzIuMDAwMDAwMDAwICswMDAwClgrKysgdGVzdC9saWIvc3FsLnB5CTIw
MTEtMTItMTMgMDA6MjM6MDQuNjczMTA3ODkxICswMDAwClhAQCAtMzAsOCArMzAsNiBAQApYICAg
ICAgICAgKCdXSEVSRScsIHJlLmNvbXBpbGUoJ3doZXJlJykpLApYICAgICAgICAgKCdWQUxVRVMn
LCByZS5jb21waWxlKCd2YWx1ZXMnKSksClggICAgICAgICAoJ1NFVCcsIHJlLmNvbXBpbGUoJ3Nl
dCcpKSwKWC0gICAgICAgICgnT1InLCByZS5jb21waWxlKCdvcicpKSwKWC0gICAgICAgICgnTElN
SVQnLCByZS5jb21waWxlKCdsaW1pdCcpKSwKWCAgICAgICAgICgnRU5EJywgcmUuY29tcGlsZSgn
XFxzKiQnKSksClggICAgIF0KWCAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0ciwqYXJncywqKmt3
KToKWEBAIC03NiwxNiArNzQsMTYgQEAKWCAgICAgICAgIGlkZW50ID0gc2VsZi5pZGVudChfY29u
dGV4dCkKWCAgICAgICAgIFNFVCA9IHNlbGYuX3NjYW4oJ1NFVCcsIGNvbnRleHQ9X2NvbnRleHQp
ClggICAgICAgICB1cGRhdGVfbGlzdCA9IHNlbGYudXBkYXRlX2xpc3QoX2NvbnRleHQpClgtICAg
ICAgICBvcHRfc2ltcGxlX3doZXJlID0gc2VsZi5vcHRfc2ltcGxlX3doZXJlKF9jb250ZXh0KQpY
LSAgICAgICAgcmV0dXJuIHNxbF9hc3QuU3RhdGVtZW50VXBkYXRlKGlkZW50LCB1cGRhdGVfbGlz
dCwgb3B0X3NpbXBsZV93aGVyZSkKWCsgICAgICAgIG9wdF93aGVyZSA9IHNlbGYub3B0X3doZXJl
KF9jb250ZXh0KQpYKyAgICAgICAgcmV0dXJuIHNxbF9hc3QuU3RhdGVtZW50VXBkYXRlKGlkZW50
LCB1cGRhdGVfbGlzdCwgb3B0X3doZXJlKQpYIApYICAgICBkZWYgZGVsZXRlKHNlbGYsIF9wYXJl
bnQ9Tm9uZSk6ClggICAgICAgICBfY29udGV4dCA9IHNlbGYuQ29udGV4dChfcGFyZW50LCBzZWxm
Ll9zY2FubmVyLCAnZGVsZXRlJywgW10pClggICAgICAgICBERUxFVEUgPSBzZWxmLl9zY2FuKCdE
RUxFVEUnLCBjb250ZXh0PV9jb250ZXh0KQpYICAgICAgICAgRlJPTSA9IHNlbGYuX3NjYW4oJ0ZS
T00nLCBjb250ZXh0PV9jb250ZXh0KQpYICAgICAgICAgaWRlbnQgPSBzZWxmLmlkZW50KF9jb250
ZXh0KQpYLSAgICAgICAgb3B0X3NpbXBsZV93aGVyZSA9IHNlbGYub3B0X3NpbXBsZV93aGVyZShf
Y29udGV4dCkKWC0gICAgICAgIHJldHVybiBzcWxfYXN0LlN0YXRlbWVudERlbGV0ZShpZGVudCwg
b3B0X3NpbXBsZV93aGVyZSkKWCsgICAgICAgIG9wdF93aGVyZSA9IHNlbGYub3B0X3doZXJlKF9j
b250ZXh0KQpYKyAgICAgICAgcmV0dXJuIHNxbF9hc3QuU3RhdGVtZW50RGVsZXRlKGlkZW50LCBv
cHRfd2hlcmUpClggClggICAgIGRlZiBzZWxlY3Qoc2VsZiwgX3BhcmVudD1Ob25lKToKWCAgICAg
ICAgIF9jb250ZXh0ID0gc2VsZi5Db250ZXh0KF9wYXJlbnQsIHNlbGYuX3NjYW5uZXIsICdzZWxl
Y3QnLCBbXSkKWEBAIC05NCw4ICs5Miw3IEBAClggICAgICAgICBGUk9NID0gc2VsZi5fc2Nhbign
RlJPTScsIGNvbnRleHQ9X2NvbnRleHQpClggICAgICAgICBpZGVudCA9IHNlbGYuaWRlbnQoX2Nv
bnRleHQpClggICAgICAgICBvcHRfd2hlcmUgPSBzZWxmLm9wdF93aGVyZShfY29udGV4dCkKWC0g
ICAgICAgIG9wdF9saW1pdCA9IHNlbGYub3B0X2xpbWl0KF9jb250ZXh0KQpYLSAgICAgICAgcmV0
dXJuIHNxbF9hc3QuU3RhdGVtZW50U2VsZWN0KGlkZW50LCBvcHRfd2hlcmUsIG9wdF9saW1pdCkK
WCsgICAgICAgIHJldHVybiBzcWxfYXN0LlN0YXRlbWVudFNlbGVjdChpZGVudCwgb3B0X3doZXJl
KQpYIApYICAgICBkZWYgcGluZyhzZWxmLCBfcGFyZW50PU5vbmUpOgpYICAgICAgICAgX2NvbnRl
eHQgPSBzZWxmLkNvbnRleHQoX3BhcmVudCwgc2VsZi5fc2Nhbm5lciwgJ3BpbmcnLCBbXSkKWEBA
IC0xMDksOCArMTA2LDggQEAKWCAgICAgICAgIGNvbnN0YW50ID0gc2VsZi5jb25zdGFudChfY29u
dGV4dCkKWCAgICAgICAgIHJldHVybiAoaWRlbnQsIGNvbnN0YW50KQpYIApYLSAgICBkZWYgb3B0
X3NpbXBsZV93aGVyZShzZWxmLCBfcGFyZW50PU5vbmUpOgpYLSAgICAgICAgX2NvbnRleHQgPSBz
ZWxmLkNvbnRleHQoX3BhcmVudCwgc2VsZi5fc2Nhbm5lciwgJ29wdF9zaW1wbGVfd2hlcmUnLCBb
XSkKWCsgICAgZGVmIG9wdF93aGVyZShzZWxmLCBfcGFyZW50PU5vbmUpOgpYKyAgICAgICAgX2Nv
bnRleHQgPSBzZWxmLkNvbnRleHQoX3BhcmVudCwgc2VsZi5fc2Nhbm5lciwgJ29wdF93aGVyZScs
IFtdKQpYICAgICAgICAgX3Rva2VuID0gc2VsZi5fcGVlaygnV0hFUkUnLCAnRU5EJywgY29udGV4
dD1fY29udGV4dCkKWCAgICAgICAgIGlmIF90b2tlbiA9PSAnRU5EJzoKWCAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQpYQEAgLTExOSwzOCArMTE2LDYgQEAKWCAgICAgICAgICAgICBwcmVkaWNhdGUg
PSBzZWxmLnByZWRpY2F0ZShfY29udGV4dCkKWCAgICAgICAgICAgICByZXR1cm4gcHJlZGljYXRl
ClggClgtICAgIGRlZiBvcHRfd2hlcmUoc2VsZiwgX3BhcmVudD1Ob25lKToKWC0gICAgICAgIF9j
b250ZXh0ID0gc2VsZi5Db250ZXh0KF9wYXJlbnQsIHNlbGYuX3NjYW5uZXIsICdvcHRfd2hlcmUn
LCBbXSkKWC0gICAgICAgIF90b2tlbiA9IHNlbGYuX3BlZWsoJ1dIRVJFJywgJ0xJTUlUJywgJ0VO
RCcsIGNvbnRleHQ9X2NvbnRleHQpClgtICAgICAgICBpZiBfdG9rZW4gIT0gJ1dIRVJFJzoKWC0g
ICAgICAgICAgICByZXR1cm4gTm9uZQpYLSAgICAgICAgZWxzZTogIyA9PSAnV0hFUkUnClgtICAg
ICAgICAgICAgV0hFUkUgPSBzZWxmLl9zY2FuKCdXSEVSRScsIGNvbnRleHQ9X2NvbnRleHQpClgt
ICAgICAgICAgICAgZGlzanVuY3Rpb24gPSBzZWxmLmRpc2p1bmN0aW9uKF9jb250ZXh0KQpYLSAg
ICAgICAgICAgIHJldHVybiBkaXNqdW5jdGlvbgpYLQpYLSAgICBkZWYgZGlzanVuY3Rpb24oc2Vs
ZiwgX3BhcmVudD1Ob25lKToKWC0gICAgICAgIF9jb250ZXh0ID0gc2VsZi5Db250ZXh0KF9wYXJl
bnQsIHNlbGYuX3NjYW5uZXIsICdkaXNqdW5jdGlvbicsIFtdKQpYLSAgICAgICAgcHJlZGljYXRl
ID0gc2VsZi5wcmVkaWNhdGUoX2NvbnRleHQpClgtICAgICAgICBkaXNqdW5jdGlvbiA9IFtwcmVk
aWNhdGVdClgtICAgICAgICBpZiBzZWxmLl9wZWVrKCdPUicsICdMSU1JVCcsICdFTkQnLCBjb250
ZXh0PV9jb250ZXh0KSA9PSAnT1InOgpYLSAgICAgICAgICAgIHdoaWxlIDE6ClgtICAgICAgICAg
ICAgICAgIE9SID0gc2VsZi5fc2NhbignT1InLCBjb250ZXh0PV9jb250ZXh0KQpYLSAgICAgICAg
ICAgICAgICBwcmVkaWNhdGUgPSBzZWxmLnByZWRpY2F0ZShfY29udGV4dCkKWC0gICAgICAgICAg
ICAgICAgZGlzanVuY3Rpb24uYXBwZW5kKHByZWRpY2F0ZSkKWC0gICAgICAgICAgICAgICAgaWYg
c2VsZi5fcGVlaygnT1InLCAnTElNSVQnLCAnRU5EJywgY29udGV4dD1fY29udGV4dCkgIT0gJ09S
JzogYnJlYWsKWC0gICAgICAgIHJldHVybiBkaXNqdW5jdGlvbgpYLQpYLSAgICBkZWYgb3B0X2xp
bWl0KHNlbGYsIF9wYXJlbnQ9Tm9uZSk6ClgtICAgICAgICBfY29udGV4dCA9IHNlbGYuQ29udGV4
dChfcGFyZW50LCBzZWxmLl9zY2FubmVyLCAnb3B0X2xpbWl0JywgW10pClgtICAgICAgICBfdG9r
ZW4gPSBzZWxmLl9wZWVrKCdMSU1JVCcsICdFTkQnLCBjb250ZXh0PV9jb250ZXh0KQpYLSAgICAg
ICAgaWYgX3Rva2VuID09ICdFTkQnOgpYLSAgICAgICAgICAgIHJldHVybiAweGZmZmZmZmZmClgt
ICAgICAgICBlbHNlOiAjID09ICdMSU1JVCcKWC0gICAgICAgICAgICBMSU1JVCA9IHNlbGYuX3Nj
YW4oJ0xJTUlUJywgY29udGV4dD1fY29udGV4dCkKWC0gICAgICAgICAgICBOVU0gPSBzZWxmLl9z
Y2FuKCdOVU0nLCBjb250ZXh0PV9jb250ZXh0KQpYLSAgICAgICAgICAgIHJldHVybiBpbnQoTlVN
KQpYLQpYICAgICBkZWYgdmFsdWVfbGlzdChzZWxmLCBfcGFyZW50PU5vbmUpOgpYICAgICAgICAg
X2NvbnRleHQgPSBzZWxmLkNvbnRleHQoX3BhcmVudCwgc2VsZi5fc2Nhbm5lciwgJ3ZhbHVlX2xp
c3QnLCBbXSkKWCAgICAgICAgIHNlbGYuX3NjYW4oIidcXCgnIiwgY29udGV4dD1fY29udGV4dCkK
ZDQ0ZjQyNzAzZTk4YTMxZmE0YzUyMWI4ZDYzYmY5ODkKZWNobyB4IC0gdGFyYW50b29sL2ZpbGVz
L3BhdGNoLXRlc3RfYm94X3RhcmFudG9vbC5jZmcKc2VkICdzL15YLy8nID50YXJhbnRvb2wvZmls
ZXMvcGF0Y2gtdGVzdF9ib3hfdGFyYW50b29sLmNmZyA8PCAnMDNkMzNlN2IyMTk2NGEyOGZkNjY4
M2RhODcwZDE1ZGYnClgtLS0gdGVzdC9ib3gvdGFyYW50b29sLmNmZy5vcmlnCTIwMTEtMTItMTMg
MDE6MDI6MDIuMDY5NzYwMjU5ICswMDAwClgrKysgdGVzdC9ib3gvdGFyYW50b29sLmNmZwkyMDEx
LTEyLTEzIDAxOjAzOjUyLjU1MDA1NTEwMSArMDAwMApYQEAgLTEsMTEgKzEsMTEgQEAKWCBzbGFi
X2FsbG9jX2FyZW5hID0gMC4xClggClgtcGlkX2ZpbGUgPSAiYm94LnBpZCIKWC0KWCtwaWRfZmls
ZSA9ICIvdmFyL3J1bi90YXJhbnRvb2wucGlkIgpYK3dvcmtfZGlyID0gIi92YXIvZGIvdGFyYW50
b29sIgpYIApYICMgVXNlIC1hIG5vdCAtYSB0byB3b3JrIGNvcnJlY3RseSBvbiBGcmVlQlNEClgg
IwpYLWxvZ2dlcj0idGVlIC1hIHRhcmFudG9vbC5sb2ciClgrbG9nZ2VyPSJjYXQgPj4gL3Zhci9s
b2cvdGFyYW50b29sLmxvZyIKWCAKWCBwcmltYXJ5X3BvcnQgPSAzMzAxMwpYIHNlY29uZGFyeV9w
b3J0ID0gMzMwMTQKMDNkMzNlN2IyMTk2NGEyOGZkNjY4M2RhODcwZDE1ZGYKZWNobyB4IC0gdGFy
YW50b29sL2ZpbGVzL3BhdGNoLXRlc3RfbGliX3RhcmFudG9vbF9zaWx2ZXJib3hfc2VydmVyLnB5
CnNlZCAncy9eWC8vJyA+dGFyYW50b29sL2ZpbGVzL3BhdGNoLXRlc3RfbGliX3RhcmFudG9vbF9z
aWx2ZXJib3hfc2VydmVyLnB5IDw8ICdlNDdjMGE5NjM4YjEwMjFlYmJhM2JjNWE2NTQ3YmM0NicK
WC0tLSB0ZXN0L2xpYi90YXJhbnRvb2xfc2lsdmVyYm94X3NlcnZlci5weS5vcmlnCTIwMTEtMDUt
MTQgMTI6MTY6MzIuMDAwMDAwMDAwICswMDAwClgrKysgdGVzdC9saWIvdGFyYW50b29sX3NpbHZl
cmJveF9zZXJ2ZXIucHkJMjAxMS0xMi0xMyAwMDoyMzowNC42NzMxMDc4OTEgKzAwMDAKWEBAIC0x
LDM1ICsxLDIzNCBAQApYK2ltcG9ydCBvcwpYK2ltcG9ydCBzdGF0ClggaW1wb3J0IHNodXRpbApY
IGltcG9ydCBzdWJwcm9jZXNzClgtaW1wb3J0IHlhbWwKWC1pbXBvcnQgQ29uZmlnUGFyc2VyClgt
ZnJvbSB0YXJhbnRvb2xfc2VydmVyIGltcG9ydCBUYXJhbnRvb2xTZXJ2ZXIsIFRhcmFudG9vbENv
bmZpZ0ZpbGUKWC1mcm9tIHRhcmFudG9vbF9hZG1pbiBpbXBvcnQgVGFyYW50b29sQWRtaW4KWC1m
cm9tIHNpbHZlcmJveCBpbXBvcnQgU2lsdmVyYm94ClgtClgtY2xhc3MgVGFyYW50b29sU2lsdmVy
Ym94U2VydmVyKFRhcmFudG9vbFNlcnZlcik6ClgtICBkZWYgX19uZXdfXyhjbHMsIGNvcmU9InRh
cmFudG9vbCIsIG1vZHVsZT0ic2lsdmVyYm94Iik6ClgtICAgIHJldHVybiBUYXJhbnRvb2xTZXJ2
ZXIuX19uZXdfXyhjbHMpClgtClgtICBkZWYgX19pbml0X18oc2VsZiwgY29yZT0idGFyYW50b29s
IiwgbW9kdWxlPSJzaWx2ZXJib3giKToKWC0gICAgVGFyYW50b29sU2VydmVyLl9faW5pdF9fKHNl
bGYsIGNvcmUsIG1vZHVsZSkKWC0KWC0gIGRlZiBjb25maWd1cmUoc2VsZiwgY29uZmlnKToKWC0g
ICAgVGFyYW50b29sU2VydmVyLmNvbmZpZ3VyZShzZWxmLCBjb25maWcpClgtICAgIHdpdGggb3Bl
bihzZWxmLmNvbmZpZykgYXMgZnA6ClgtICAgICAgZHVtbXlfc2VjdGlvbl9uYW1lID0gInRhcmFu
dG9vbCIKWC0gICAgICBjb25maWcgPSBDb25maWdQYXJzZXIuQ29uZmlnUGFyc2VyKCkKWC0gICAg
ICBjb25maWcucmVhZGZwKFRhcmFudG9vbENvbmZpZ0ZpbGUoZnAsIGR1bW15X3NlY3Rpb25fbmFt
ZSkpClgtICAgICAgc2VsZi5wcmltYXJ5X3BvcnQgPSBpbnQoY29uZmlnLmdldChkdW1teV9zZWN0
aW9uX25hbWUsICJwcmltYXJ5X3BvcnQiKSkKWC0gICAgICBzZWxmLmFkbWluX3BvcnQgPSBpbnQo
Y29uZmlnLmdldChkdW1teV9zZWN0aW9uX25hbWUsICJhZG1pbl9wb3J0IikpClgtICAgICAgc2Vs
Zi5wb3J0ID0gc2VsZi5hZG1pbl9wb3J0ClgtICAgICAgc2VsZi5hZG1pbiA9IFRhcmFudG9vbEFk
bWluKCJsb2NhbGhvc3QiLCBzZWxmLmFkbWluX3BvcnQpClgtICAgICAgc2VsZi5zcWwgPSBTaWx2
ZXJib3goImxvY2FsaG9zdCIsIHNlbGYucHJpbWFyeV9wb3J0KQpYLQpYLSAgZGVmIGluaXQoc2Vs
Zik6ClgtIyBpbml0IHN0b3JhZ2UKWC0gICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtzZWxmLmJp
bmFyeSwgIi0taW5pdF9zdG9yYWdlIl0sClgtICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Qg
PSBzZWxmLnZhcmRpciwKWCtpbXBvcnQgcGV4cGVjdApYK2ltcG9ydCBzeXMKWCtpbXBvcnQgc2ln
bmFsClgraW1wb3J0IHRpbWUKWCtpbXBvcnQgc29ja2V0ClgraW1wb3J0IGRhZW1vbgpYK2ltcG9y
dCBnbG9iClgrClgrZGVmIHdhaXRfdW50aWxfY29ubmVjdGVkKGhvc3QsIHBvcnQpOgpYKyAgIiIi
V2FpdCB1bnRpbCB0aGUgc2VydmVyIGlzIHN0YXJ0ZWQgYW5kIGFjY2VwdGluZyBjb25uZWN0aW9u
cyIiIgpYKyAgaXNfY29ubmVjdGVkID0gRmFsc2UKWCsgIHdoaWxlIG5vdCBpc19jb25uZWN0ZWQ6
ClgrICAgIHRyeToKWCsgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwg
c29ja2V0LlNPQ0tfU1RSRUFNKQpYKyAgICAgIHNvY2suY29ubmVjdCgoaG9zdCwgcG9ydCkpClgr
ICAgICAgaXNfY29ubmVjdGVkID0gVHJ1ZQpYKyAgICAgIHNvY2suY2xvc2UoKQpYKyAgICBleGNl
cHQgc29ja2V0LmVycm9yIGFzIGU6ClgrICAgICAgdGltZS5zbGVlcCgwLjAwMSkKWCsKWCsKWCtk
ZWYgcHJlcGFyZV9nZGIoYXJncyk6ClgrICAiIiJQcmVwYXJlIHNlcnZlciBzdGFydHVwIGFyZ3Vt
ZW50cyB0byBydW4gdW5kZXIgZ2RiLiIiIgpYKyAgaWYgIlRFUk0iIGluIG9zLmVudmlyb246Clgr
ICAgIHRlcm0gPSBvcy5lbnZpcm9uWyJURVJNIl0KWCsgIGVsc2U6ClgrICAgIHRlcm0gPSAieHRl
cm0iClgrClgrICBpZiB0ZXJtIG5vdCBpbiBbInh0ZXJtIiwgInJ4dnQiLCAidXJ4dnQiLCAiZ25v
bWUtdGVybWluYWwiLCAia29uc29sZSJdOgpYKyAgICByYWlzZSBSdW50aW1lRXJyb3IoIi0tZ2Ri
OiB1bnN1cHBvcnRlZCB0ZXJtaW5hbCB7MH0iLmZvcm1hdCh0ZXJtKSkKWCsKWCsgIGFyZ3MgPSBb
IHRlcm0sICItZSAiLCAiZ2RiIiwgIi1leCIsICJicmVhayBtYWluIiwgIi1leCIsICJydW4iXSAr
IGFyZ3MKWCsgIHJldHVybiBhcmdzClgrClgrClgrZGVmIHByZXBhcmVfdmFsZ3JpbmQoYXJncywg
dmFsZ3JpbmRfb3B0cyk6ClgrICAiUHJlcGFyZSBzZXJ2ZXIgc3RhcnR1cCBhcmd1bWVudHMgdG8g
cnVuIHVuZGVyIHZhbGdyaW5kLiIKWCsgIGFyZ3MgPSAoWyAidmFsZ3JpbmQiLCAiLS1sb2ctZmls
ZT12YWxncmluZC5sb2ciLCAiLS1xdWlldCIgXSArClgrICAgICAgICAgIHZhbGdyaW5kX29wdHMu
c3BsaXQoIiAiKSArIGFyZ3MpClgrICByZXR1cm4gYXJncwpYKwpYKwpYK2RlZiBjaGVja190bXBm
c19leGlzdHMoKToKWCsgIHJldHVybiBvcy51bmFtZSgpWzBdIGluICdMaW51eCcgYW5kIG9zLnBh
dGguaXNkaXIoIi9kZXYvc2htIikKWCsKWCtkZWYgY3JlYXRlX3RtcGZzX3ZhcmRpcih2YXJkaXIp
OgpYKyAgb3MubWtkaXIob3MucGF0aC5qb2luKCIvZGV2L3NobSIsIHZhcmRpcikpClgrICBvcy5z
eW1saW5rKG9zLnBhdGguam9pbigiL2Rldi9zaG0iLCB2YXJkaXIpLCB2YXJkaXIpClgrClgrY2xh
c3MgVGFyYW50b29sU2lsdmVyYm94U2VydmVyOgpYKyAgIiIiU2VydmVyIHJlcHJlc2VudHMgYSBz
aW5nbGUgc2VydmVyIGluc3RhbmNlLiBOb3JtYWxseSwgdGhlClgrICBwcm9ncmFtIG9wZXJhdGVz
IHdpdGggb25seSBvbmUgc2VydmVyLCBidXQgaW4gZnV0dXJlIHdlIG1heSBhZGQKWCsgIHJlcGxp
Y2F0aW9uIHNsYXZlcy4gVGhlIHNlcnZlciBpcyBzdGFydGVkIG9uY2UgYXQgdGhlIGJlZ2lubmlu
ZwpYKyAgb2YgZWFjaCBzdWl0ZSwgYW5kIHN0b3BwZWQgYXQgdGhlIGVuZC4iIiIKWCsKWCsgIGRl
ZiBfX2luaXRfXyhzZWxmLCBhcmdzLCBzdWl0ZV9pbmkpOgpYKyAgICAiIiJTZXQgc2VydmVyIG9w
dGlvbnM6IHBhdGggdG8gY29uZmlndXJhdGlvbiBmaWxlLCBwaWQgZmlsZSwgZXhlLCBldGMuIiIi
ClgrICAgIHNlbGYuYXJncyA9IGFyZ3MKWCsgICAgc2VsZi5zdWl0ZV9pbmkgPSBzdWl0ZV9pbmkK
WCsgICAgc2VsZi5wYXRoX3RvX3BpZGZpbGUgPSBvcy5wYXRoLmpvaW4oYXJncy52YXJkaXIsIHN1
aXRlX2luaVsicGlkZmlsZSJdKQpYKyAgICBzZWxmLnBhdGhfdG9fZXhlID0gTm9uZQpYKyAgICBz
ZWxmLmFic3BhdGhfdG9fZXhlID0gTm9uZQpYKyAgICBzZWxmLmlzX3N0YXJ0ZWQgPSBGYWxzZQpY
KwpYKyAgZGVmIGluc3RhbGwoc2VsZiwgc2lsZW50ID0gRmFsc2UpOgpYKyAgICAiIiJTdGFydCBz
ZXJ2ZXIgaW5zdGFuY2U6IGNoZWNrIGlmIHRoZSBvbGQgb25lIGV4aXN0cywga2lsbCBpdApYKyAg
ICBpZiBuZWNlc3NhcnksIGNyZWF0ZSBuZWNlc3NhcnkgZGlyZWN0b3JpZXMgYW5kIGZpbGVzLCBz
dGFydApYKyAgICB0aGUgc2VydmVyLiBUaGUgc2VydmVyIHdvcmtpbmcgZGlyZWN0b3J5IGlzIHRh
a2VuIGZyb20gJ3ZhcmRpcicsClgrICAgIHNwZWNpZmllZCBpbiB0aGUgcHJnb3JhbSBvcHRpb25z
LgpYKyAgICBDdXJyZW50bHkgdGhpcyBpcyBpbXBsZW1lbnRlZCBmb3IgdGFyYW50b29sX3NpbHZl
cmJveCBvbmx5LiIiIgpYKwpYKyAgICB2YXJkaXIgPSBzZWxmLmFyZ3MudmFyZGlyClgrClgrICAg
IGlmIG5vdCBzaWxlbnQ6ClgrICAgICAgcHJpbnQgIkluc3RhbGxpbmcgdGhlIHNlcnZlci4uLiIK
WCsKWCsgICAgaWYgc2VsZi5wYXRoX3RvX2V4ZSA9PSBOb25lOgpYKyAgICAgIHNlbGYucGF0aF90
b19leGUgPSBzZWxmLmZpbmRfZXhlKCkKWCsgICAgICBzZWxmLmFic3BhdGhfdG9fZXhlID0gb3Mu
cGF0aC5hYnNwYXRoKHNlbGYucGF0aF90b19leGUpClgrClgrICAgIGlmIG5vdCBzaWxlbnQ6Clgr
ICAgICAgcHJpbnQgIiAgRm91bmQgZXhlY3V0YWJsZSBhdCAiICsgc2VsZi5wYXRoX3RvX2V4ZSAr
ICIuIgpYKwpYKyAgICBpZiBub3Qgc2lsZW50OgpYKyAgICAgIHByaW50ICIgIENyZWF0aW5nIGFu
ZCBwb3B1bGF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5IGluICIgK1wKWCsgICAgICB2YXJkaXIgKyAi
Li4uIgpYKwpYKyAgICBpZiBvcy5hY2Nlc3ModmFyZGlyLCBvcy5GX09LKToKWCsgICAgICBpZiBu
b3Qgc2lsZW50OgpYKyAgICAgICAgcHJpbnQgIiAgRm91bmQgb2xkIHZhcmRpciwgZGVsZXRpbmcu
Li4iClgrICAgICAgc2VsZi5raWxsX29sZF9zZXJ2ZXIoKQpYKyAgICAgIGZvciBmaWxlbmFtZSBp
biAoZ2xvYi5nbG9iKG9zLnBhdGguam9pbih2YXJkaXIsICIqLnNuYXAiKSkgKwpYKyAgICAgICAg
ICAgICAgICAgICAgICBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHZhcmRpciwgIiouaW5wcm9ncmVz
cyIpKSArClgrICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4odmFy
ZGlyLCAiKi54bG9nIikpICsKWCsgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKG9zLnBh
dGguam9pbih2YXJkaXIsICIqLmNmZyIpKSArClgrICAgICAgICAgICAgICAgICAgICAgIGdsb2Iu
Z2xvYihvcy5wYXRoLmpvaW4odmFyZGlyLCAiKi5sb2ciKSkgKwpYKyAgICAgICAgICAgICAgICAg
ICAgICBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHZhcmRpciwgIiouY29yZS4qIikpICsKWCsgICAg
ICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKG9zLnBhdGguam9pbih2YXJkaXIsICJjb3JlIikp
KToKWCsgICAgICAgIG9zLnJlbW92ZShmaWxlbmFtZSkKWCsgICAgZWxzZToKWCsgICAgICBpZiAo
c2VsZi5hcmdzLm1lbSA9PSBUcnVlIGFuZCBjaGVja190bXBmc19leGlzdHMoKSBhbmQKWCsgICAg
ICAgICAgb3MucGF0aC5iYXNlbmFtZSh2YXJkaXIpID09IHZhcmRpcik6ClgrICAgICAgICBjcmVh
dGVfdG1wZnNfdmFyZGlyKHZhcmRpcikKWCsgICAgICBlbHNlOgpYKyAgICAgICAgb3MubWtkaXIo
dmFyZGlyKQpYKwpYKyAgICBzaHV0aWwuY29weShzZWxmLnN1aXRlX2luaVsiY29uZmlnIl0sIHNl
bGYuYXJncy52YXJkaXIpClgrClgrICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbc2VsZi5hYnNw
YXRoX3RvX2V4ZSwgIi0taW5pdF9zdG9yYWdlIl0sClgrICAgICAgICAgICAgICAgICAgICAgICAg
ICBjd2QgPSBzZWxmLmFyZ3MudmFyZGlyLApYICMgY2F0Y2ggc3Rkb3V0L3N0ZGVyciB0byBub3Qg
Y2x1dHRlciBvdXRwdXQKWCAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dCA9IHN1YnBy
b2Nlc3MuUElQRSwKWCAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVyciA9IHN1YnByb2Nl
c3MuUElQRSkKWCAKWCsgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3NlbGYuYWJzcGF0aF90b19l
eGUsICItLXZlcnNpb24iXSwKWCsgICAgICAgICAgICAgICAgICAgICAgICAgY3dkID0gc2VsZi5h
cmdzLnZhcmRpciwKWCsgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc3VicHJvY2Vz
cy5QSVBFKQpYKyAgICB2ZXJzaW9uID0gcC5zdGRvdXQucmVhZCgpLnJzdHJpcCgpClgrICAgIHAu
d2FpdCgpClgrClgrICAgIGlmIG5vdCBzaWxlbnQ6ClgrICAgICAgcHJpbnQgIlN0YXJ0aW5nIHsw
fSB7MX0uIi5mb3JtYXQob3MucGF0aC5iYXNlbmFtZShzZWxmLmFic3BhdGhfdG9fZXhlKSwKWCsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uKQpYKwpYKyAgZGVm
IHN0YXJ0KHNlbGYsIHNpbGVudCA9IEZhbHNlKToKWCsKWCsgICAgaWYgc2VsZi5pc19zdGFydGVk
OgpYKyAgICAgIGlmIG5vdCBzaWxlbnQ6ClgrICAgICAgICBwcmludCAiVGhlIHNlcnZlciBpcyBh
bHJlYWR5IHN0YXJ0ZWQuIgpYKyAgICAgIHJldHVybgpYKwpYKyAgICBpZiBub3Qgc2lsZW50OgpY
KyAgICAgIHByaW50ICJTdGFydGluZyB0aGUgc2VydmVyLi4uIgpYKwpYKyAgICBhcmdzID0gW3Nl
bGYuYWJzcGF0aF90b19leGVdClgrClgrICAgIGlmIChzZWxmLmFyZ3Muc3RhcnRfYW5kX2V4aXQg
YW5kClgrICAgICAgICBub3Qgc2VsZi5hcmdzLnZhbGdyaW5kIGFuZCBub3Qgc2VsZi5hcmdzLmdk
Yik6ClgrICAgICAgYXJncy5hcHBlbmQoIi0tZGFlbW9uaXplIikKWCsgICAgaWYgc2VsZi5hcmdz
LmdkYjoKWCsgICAgICBhcmdzID0gcHJlcGFyZV9nZGIoYXJncykKWCsgICAgZWxpZiBzZWxmLmFy
Z3MudmFsZ3JpbmQ6ClgrICAgICAgYXJncyA9IHByZXBhcmVfdmFsZ3JpbmQoYXJncywgc2VsZi5h
cmdzLnZhbGdyaW5kX29wdHMpClgrClgrICAgIGlmIHNlbGYuYXJncy5zdGFydF9hbmRfZXhpdCBh
bmQgc2VsZi5hcmdzLnZhbGdyaW5kOgpYKyAgICAgIHBpZCA9IG9zLmZvcmsoKQpYKyAgICAgIGlm
IHBpZCA+IDA6ClgrICAgICAgICBvcy53YWl0KCkKWCsgICAgICBlbHNlOgpYKyAgICAgICAgd2l0
aCBkYWVtb24uRGFlbW9uQ29udGV4dCh3b3JraW5nX2RpcmVjdG9yeSA9IHNlbGYuYXJncy52YXJk
aXIpOgpYKwkgIG9zLmV4ZWN2cChhcmdzWzBdLCBhcmdzKQpYKyAgICBlbHNlOgpYKyAgICAgIHNl
bGYuc2VydmVyID0gcGV4cGVjdC5zcGF3bihhcmdzWzBdLCBhcmdzWzE6XSwgY3dkID0gc2VsZi5h
cmdzLnZhcmRpcikKWCsgICAgICBpZiBzZWxmLmFyZ3Muc3RhcnRfYW5kX2V4aXQ6ClgrICAgICAg
ICBzZWxmLnNlcnZlci53YWl0KCkKWCsKWCsjIHdhaXQgdW50aWwgdGhlIHNlcnZlciBpcyBjb25u
ZWN0ZWRrClgrICAgIGlmIHNlbGYuYXJncy5nZGIgYW5kIHNlbGYuYXJncy5zdGFydF9hbmRfZXhp
dDoKWCsgICAgICB0aW1lLnNsZWVwKDEpClgrICAgIGVsaWYgbm90IHNlbGYuYXJncy5zdGFydF9h
bmRfZXhpdCBhbmQgbm90IHNlbGYuYXJncy5nZGI6ClgrICAgICAgc2VsZi5zZXJ2ZXIuZXhwZWN0
X2V4YWN0KCJlbnRlcmluZyBldmVudCBsb29wIikKWCsgICAgZWxzZToKWCsgICAgICB3YWl0X3Vu
dGlsX2Nvbm5lY3RlZChzZWxmLnN1aXRlX2luaVsiaG9zdCJdLCBzZWxmLnN1aXRlX2luaVsicG9y
dCJdKQpYKwpYKyMgU2V0IGlzX3N0YXJ0ZWQgZmxhZywgdG8gbmljZWx5IHN1cHBvcnQgY2xlYW51
cCBkdXJpbmcgYW4gZXhjZXB0aW9uLgpYKyAgICBzZWxmLmlzX3N0YXJ0ZWQgPSBUcnVlClgrClgr
ClgrICBkZWYgc3RvcChzZWxmLCBzaWxlbnQgPSBGYWxzZSk6ClgrICAgICIiIlN0b3Agc2VydmVy
IGluc3RhbmNlLiBEbyBub3RoaW5nIGlmIHRoZSBzZXJ2ZXIgaXMgbm90IHN0YXJ0ZWQsClgrICAg
IHRvIHByb3Blcmx5IHNodXQgZG93biB0aGUgc2VydmVyIGluIGNhc2Ugb2YgYW4gZXhjZXB0aW9u
IGR1cmluZwpYKyAgICBzdGFydCB1cC4iIiIKWCsgICAgaWYgc2VsZi5pc19zdGFydGVkOgpYKyAg
ICAgIGlmIG5vdCBzaWxlbnQ6ClgrICAgICAgICBwcmludCAiU3RvcHBpbmcgdGhlIHNlcnZlci4u
LiIKWCsgICAgICBpZiBzZWxmLmFyZ3MuZ2RiOgpYKyAgICAgICAgc2VsZi5raWxsX29sZF9zZXJ2
ZXIoVHJ1ZSkKWCsgICAgICBzZWxmLnNlcnZlci50ZXJtaW5hdGUoKQpYKyAgICAgIHNlbGYuc2Vy
dmVyLmV4cGVjdChwZXhwZWN0LkVPRikKWCsgICAgICBzZWxmLmlzX3N0YXJ0ZWQgPSBGYWxzZQpY
KyAgICBlbGlmIG5vdCBzaWxlbnQ6ClgrICAgICAgcHJpbnQgIlRoZSBzZXJ2ZXIgaXMgbm90IHN0
YXJ0ZWQuIgpYKwpYKyAgZGVmIHJlc3RhcnQoc2VsZik6ClgrICAgIHNlbGYuc3RvcChUcnVlKQpY
KyAgICBzZWxmLnN0YXJ0KFRydWUpClgrClgrICBkZWYgdGVzdF9vcHRpb24oc2VsZiwgb3B0aW9u
X2xpc3Rfc3RyKToKWCsgICAgICBhcmdzID0gW3NlbGYuYWJzcGF0aF90b19leGVdICsgb3B0aW9u
X2xpc3Rfc3RyLnNwbGl0KCkKWCsgICAgICBwcmludCAiICIuam9pbihbb3MucGF0aC5iYXNlbmFt
ZShzZWxmLmFic3BhdGhfdG9fZXhlKV0gKyBhcmdzWzE6XSkKWCsgICAgICBvdXRwdXQgPSBzdWJw
cm9jZXNzLlBvcGVuKGFyZ3MsClgrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Qg
PSBzZWxmLmFyZ3MudmFyZGlyLApYKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
b3V0ID0gc3VicHJvY2Vzcy5QSVBFLApYKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkZXJyID0gc3VicHJvY2Vzcy5TVERPVVQpLnN0ZG91dC5yZWFkKCkKWCsgICAgICBwcmludCBv
dXRwdXQKWCsKWCsKWCsgIGRlZiBmaW5kX2V4ZShzZWxmKToKWCsgICAgIiIiTG9jYXRlIHNlcnZl
ciBleGVjdXRhYmxlIGluIHRoZSBiaW5kaXIuIFdlIGp1c3QgdGFrZQpYKyAgICB0aGUgZmlyc3Qg
dGhpbmcgbG9va2luZyBsaWtlIGFuIGV4ZSBpbiB0aGVyZS4iIiIKWCsKWCsgICAgcHJpbnQgIiAg
TG9va2luZyBmb3Igc2VydmVyIGJpbmFyeSBpbiB7MH0uLi4iLmZvcm1hdChzZWxmLmFyZ3MuYmlu
ZGlyKQpYKyAgICBpZiAob3MuYWNjZXNzKHNlbGYuYXJncy5iaW5kaXIsIG9zLkZfT0spID09IEZh
bHNlIG9yClgrICAgICAgICBzdGF0LlNfSVNESVIob3Muc3RhdChzZWxmLmFyZ3MuYmluZGlyKS5z
dF9tb2RlKSA9PSBGYWxzZSk6ClgrICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJEaXJlY3Rvcnkg
IiArIHNlbGYuYXJncy5iaW5kaXIgKyAiIGRvZXNuJ3QgZXhpc3QiKQpYKwpYKyAgICBmb3IgZiBp
biBvcy5saXN0ZGlyKHNlbGYuYXJncy5iaW5kaXIpOgpYKyAgICAgIGYgPSBvcy5wYXRoLmpvaW4o
c2VsZi5hcmdzLmJpbmRpciwgZikKWCsgICAgICBzdF9tb2RlID0gb3Muc3RhdChmKS5zdF9tb2Rl
ClgrICAgICAgaWYgc3RhdC5TX0lTUkVHKHN0X21vZGUpIGFuZCBzdF9tb2RlICYgc3RhdC5TX0lY
VVNSOgpYKyAgICAgICAgcmV0dXJuIGYKWCsKWCsgICAgcmFpc2UgUnVudGltZUVycm9yKCJDYW4n
dCBmaW5kIHNlcnZlciBleGVjdXRhYmxlIGluICIgKyBzZWxmLmFyZ3MuYmluZGlyKQpYKwpYKyAg
ZGVmIGtpbGxfb2xkX3NlcnZlcihzZWxmLCBzaWxlbnQgPSBGYWxzZSk6ClgrICAgICIiIktpbGwg
b2xkIHNlcnZlciBpbnN0YW5jZSBpZiBpdCBleGlzdHMuIiIiClgrICAgIGlmIG9zLmFjY2Vzcyhz
ZWxmLnBhdGhfdG9fcGlkZmlsZSwgb3MuRl9PSykgPT0gRmFsc2U6ClgrICAgICAgcmV0dXJuICMg
Tm90aGluZyB0byBkbwpYKyAgICBwaWQgPSAwClgrICAgIHdpdGggb3BlbihzZWxmLnBhdGhfdG9f
cGlkZmlsZSkgYXMgZjoKWCsgICAgICBwaWQgPSBpbnQoZi5yZWFkKCkpClgrICAgIGlmIG5vdCBz
aWxlbnQ6ClgrICAgICAgcHJpbnQgIiAgRm91bmQgb2xkIHNlcnZlciwgcGlkIHswfSwga2lsbGlu
Zy4uLiIuZm9ybWF0KHBpZCkKWCsgICAgdHJ5OgpYKyAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwu
U0lHVEVSTSkKWCsgICAgICB3aGlsZSBvcy5raWxsKHBpZCwgMCkgIT0gLTE6ClgrICAgICAgICB0
aW1lLnNsZWVwKDAuMDAxKQpYKyAgICBleGNlcHQgT1NFcnJvcjoKWCsgICAgICBwYXNzClgrCmU0
N2MwYTk2MzhiMTAyMWViYmEzYmM1YTY1NDdiYzQ2CmVjaG8geCAtIHRhcmFudG9vbC9maWxlcy9w
a2ctbWVzc2FnZS5pbgpzZWQgJ3MvXlgvLycgPnRhcmFudG9vbC9maWxlcy9wa2ctbWVzc2FnZS5p
biA8PCAnMjVhYzNiM2Q2Y2JmZDFkODE5NDRhMGIxNDQyZjI5ODUnClgjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKWCMKWCMKWCMgICAgICAg
IEFmdGVyIGluc3RhbGwgeW91J2xsIG5lZWQgaW5pdCBzdG9yYWdlOgpYIwpYIyAgICAlJVBSRUZJ
WCUlL2Jpbi90YXJhbnRvb2xfc2lsdmVyYm94IC0taW5pdC1zdG9yYWdlIFwKWCMgICAgCS1jICUl
RVRDRElSJSUvdGFyYW50b29sLmNmZwpYIwpYIwpYIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCjI1YWMzYjNkNmNiZmQxZDgxOTQ0YTBiMTQ0
MmYyOTg1CmVjaG8geCAtIHRhcmFudG9vbC9maWxlcy90YXJhbnRvb2wuaW4Kc2VkICdzL15YLy8n
ID50YXJhbnRvb2wvZmlsZXMvdGFyYW50b29sLmluIDw8ICdlYTlhNGNmYWQ4N2RiNWQ5M2RhNmZm
ODkwYTI2Y2IxZicKWCMhL2Jpbi9zaApYIwpYClgjIFBST1ZJREU6IHRhcmFudG9vbApYIyBSRVFV
SVJFOiBEQUVNT04KWCMgQkVGT1JFOiBMT0dJTgpYIyBLRVlXT1JEOiBzaHV0ZG93bgpYIwpYIyB0
YXJhbnRvb2xfZW5hYmxlPSJZRVMiClgjIHRhcmFudG9vbF9jb25maWc9IiIKWCMKWApYLiAvZXRj
L3JjLnN1YnIKWApYbmFtZT0idGFyYW50b29sIgpYClh0YXJhbnRvb2xfZW5hYmxlPSR7dGFyYW50
b29sX2VuYWJsZTotIk5PIn0KWHRhcmFudG9vbF9jb25maWc9JHt0YXJhbnRvb2xfY29uZmlnOi0i
JSVFVENESVIlJS8kbmFtZS5jZmcifQpYClhyY3Zhcj1gc2V0X3JjdmFyYApYClhsb2FkX3JjX2Nv
bmZpZyAiJG5hbWUiClgKWGNvbW1hbmQ9IiUlUFJFRklYJSUvYmluL3RhcmFudG9vbF9zaWx2ZXJi
b3giClhjb21tYW5kX2FyZ3M9Ii0tZGFlbW9uaXplIC0tY29uZmlnICR7dGFyYW50b29sX2NvbmZp
Z30iClhwaWRmaWxlPSIvdmFyL3J1bi8kbmFtZS5waWQiClgKWHJ1bl9yY19jb21tYW5kICIkMSIK
WAplYTlhNGNmYWQ4N2RiNWQ5M2RhNmZmODkwYTI2Y2IxZgplY2hvIHggLSB0YXJhbnRvb2wvZmls
ZXMvcGF0Y2gtdGVzdF9saWJfdGFyYW50b29sX2Nvbm5lY3Rpb24ucHkKc2VkICdzL15YLy8nID50
YXJhbnRvb2wvZmlsZXMvcGF0Y2gtdGVzdF9saWJfdGFyYW50b29sX2Nvbm5lY3Rpb24ucHkgPDwg
J2E4MjFmMmIwN2NiYWUwMzUyYjRkNDJmNzA1MDA3MTVlJwpYLS0tIHRlc3QvbGliL3RhcmFudG9v
bF9jb25uZWN0aW9uLnB5Lm9yaWcJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK
WCsrKyB0ZXN0L2xpYi90YXJhbnRvb2xfY29ubmVjdGlvbi5weQkyMDExLTEyLTEzIDAwOjIzOjA0
LjY3MzEwNzg5MSArMDAwMApYQEAgLTAsMCArMSwxNTUgQEAKWCtfX2F1dGhvcl9fID0gIktvbnN0
YW50aW4gT3NpcG92IDxrb3N0amEub3NpcG92QGdtYWlsLmNvbT4iClgrClgrIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
WCsjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpYKyMgYXJlIG1ldDoKWCsjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0ClgrIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuClgrIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodApYKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQpYKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KWCsjClgrIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKWCsjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQpYKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKWCsjIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUKWCsjIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMClgrIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwpYKyMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pClgrIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVApYKyMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQpYKyMgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRgpYKyMgU1VDSCBEQU1BR0UuClgrClgraW1wb3J0IHNvY2tldApYK2ltcG9ydCBz
eXMKWCtpbXBvcnQgc3RyaW5nClgraW1wb3J0IGNTdHJpbmdJTwpYK2ltcG9ydCB5YW1sClgraW1w
b3J0IHJlClgraW1wb3J0IHNxbApYK2ltcG9ydCBzdHJ1Y3QKWCtpbXBvcnQgZXJybm8KWCsKWCtp
c19hZG1pbl9yZSA9IHJlLmNvbXBpbGUoIl5ccyooc2hvd3xzYXZlfGV4ZWN8ZXhpdHxyZWxvYWR8
aGVscCkiLCByZS5JKQpYKwpYK2NsYXNzIEFkbWluQ29ubmVjdGlvbjoKWCsgIGRlZiBfX2luaXRf
XyhzZWxmLCBob3N0LCBwb3J0KToKWCsgICAgc2VsZi5ob3N0ID0gaG9zdApYKyAgICBzZWxmLnBv
cnQgPSBwb3J0ClgrICAgIHNlbGYuaXNfY29ubmVjdGVkID0gRmFsc2UKWCsgICAgc2VsZi5zdHJl
YW0gPSBjU3RyaW5nSU8uU3RyaW5nSU8oKQpYKwpYKyAgZGVmIGNvbm5lY3Qoc2VsZik6ClgrICAg
IHNlbGYuc29ja2V0ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tf
U1RSRUFNKQpYKyAgICBzZWxmLnNvY2tldC5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfVENQLCBzb2Nr
ZXQuVENQX05PREVMQVksIDEpClgrICAgIHNlbGYuc29ja2V0LmNvbm5lY3QoKHNlbGYuaG9zdCwg
c2VsZi5wb3J0KSkKWCsgICAgc2VsZi5pc19jb25uZWN0ZWQgPSBUcnVlClgrClgrICBkZWYgZGlz
Y29ubmVjdChzZWxmKToKWCsgICAgaWYgc2VsZi5pc19jb25uZWN0ZWQ6ClgrICAgICAgc2VsZi5z
b2NrZXQuY2xvc2UoKQpYKyAgICAgIHNlbGYuaXNfY29ubmVjdGVkID0gRmFsc2UKWCsKWCsgIGRl
ZiByZWNvbm5lY3Qoc2VsZik6ClgrICAgIHNlbGYuZGlzY29ubmVjdCgpClgrICAgIHNlbGYuY29u
bmVjdCgpClgrClgrICBkZWYgb3B0X3JlY29ubmVjdChzZWxmKToKWCsgICAgIiIiIE9uIGEgc29j
a2V0IHdoaWNoIHdhcyBkaXNjb25uZWN0ZWQsIHJlY3Ygb2YgMCBieXRlcyBpbW1lZGlhdGVseQpY
KyAgICAgICAgcmV0dXJucyB3aXRoIG5vIGRhdGEuIE9uIGEgc29ja2V0IHdoaWNoIGlzIGFsaXZl
LCBpdCByZXR1cm5zIEVBR0FJTi4KWCsgICAgICAgIE1ha2UgdXNlIG9mIHRoaXMgcHJvcGVydHkg
YW5kIGRldGVjdCB3aGV0aGVyIG9yIG5vdCB0aGUgc29ja2V0IGlzClgrICAgICAgICBkZWFkLiBS
ZWNvbm5lY3QgYSBkZWFkIHNvY2tldCwgZG8gbm90aGluZyBpZiB0aGUgc29ja2V0IGlzIGdvb2Qu
IiIiClgrICAgIHRyeToKWCsgICAgICBpZiBzZWxmLnNvY2tldC5yZWN2KDAsIHNvY2tldC5NU0df
RE9OVFdBSVQpID09ICcnOgpYKyAgICAgICAgc2VsZi5yZWNvbm5lY3QoKQpYKyAgICBleGNlcHQg
c29ja2V0LmVycm9yIGFzIGU6ClgrICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FQUdBSU46Clgr
ICAgICAgICBwYXNzClgrICAgICAgZWxzZToKWCsgICAgICAgIHNlbGYucmVjb25uZWN0KCkKWCsK
WCsgIGRlZiBleGVjdXRlKHNlbGYsIGNvbW1hbmQpOgpYKyAgICBzZWxmLm9wdF9yZWNvbm5lY3Qo
KQpYKyAgICByZXR1cm4gc2VsZi5leGVjdXRlX25vX3JlY29ubmVjdChjb21tYW5kKQpYKwpYKyAg
ZGVmIGV4ZWN1dGVfbm9fcmVjb25uZWN0KHNlbGYsIGNvbW1hbmQpOgpYKyAgICBzZWxmLnNvY2tl
dC5zZW5kYWxsKGNvbW1hbmQpClgrClgrICAgIGJ1ZnNpeiA9IDQwOTYKWCsgICAgcmVzID0gIiIK
WCsKWCsgICAgd2hpbGUgVHJ1ZToKWCsgICAgICBidWYgPSBzZWxmLnNvY2tldC5yZWN2KGJ1ZnNp
eikKWCsgICAgICBpZiBub3QgYnVmOgpYKyAgICAgICAgYnJlYWsKWCsgICAgICByZXMgPSByZXMg
KyBidWY7ClgrICAgICAgaWYgKHJlcy5yZmluZCgiXHJcbi4uLlxyXG4iKSA+PSAwKToKWCsgICAg
ICAgIGJyZWFrClgrClgrICAgICMgdmFsaWRhdGUgeWFtbCBieSBwYXJzaW5nIGl0ClgrICAgIHlh
bWwubG9hZChyZXMpClgrClgrICAgIHJldHVybiByZXMKWCsKWCsgIGRlZiB3cml0ZShzZWxmLCBm
cmFnbWVudCk6ClgrICAgICIiIlRoaXMgaXMgdG8gc3VwcG9ydCBwcmludCA+PiBhZG1pbiwgImNv
bW1hbmQiIHN5bnRheC4KWCsgICAgRm9yIGV2ZXJ5IHByaW50IHN0YXRlbWVudCwgd3JpdGUgaXMg
aW52b2tlZCB0d2ljZTogb25lIHRvClgrICAgIHdyaXRlIHRoZSBjb21tYW5kIGl0c2VsZiwgYW5k
IGFub3RoZXIgdG8gd3JpdGUgXG4uIFdlIHNob3VsZApYKyAgICBhY2N1bXVsYXRlIGFsbCB3cml0
ZXMgdW50aWwgd2UgcmVjZWl2ZSBcbi4gV2hlbiB3ZSByZWNlaXZlIGl0LApYKyAgICB3ZSBleGVj
dXRlIHRoZSBjb21tYW5kLCBhbmQgcmV3aW5kIHRoZSBzdHJlYW0uIiIiClgrICAgICAgIApYKyAg
ICBuZXdsaW5lX3BvcyA9IGZyYWdtZW50LnJmaW5kKCJcbiIpClgrICAgIHdoaWxlIG5ld2xpbmVf
cG9zID49IDA6ClgrICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoZnJhZ21lbnRbOm5ld2xpbmVfcG9z
KzFdKQpYKyAgICAgIHN0YXRlbWVudCA9IHNlbGYuc3RyZWFtLmdldHZhbHVlKCkKWCsgICAgICBz
eXMuc3Rkb3V0LndyaXRlKHN0YXRlbWVudCkKWCsgICAgICBzeXMuc3Rkb3V0LndyaXRlKHNlbGYu
ZXhlY3V0ZShzdGF0ZW1lbnQpKQpYKyAgICAgIGZyYWdtZW50ID0gZnJhZ21lbnRbbmV3bGluZV9w
b3MrMTpdClgrICAgICAgbmV3bGluZV9wb3MgPSBmcmFnbWVudC5yZmluZCgiXG4iKQpYKyAgICAg
IHNlbGYuc3RyZWFtLnNlZWsoMCkKWCsgICAgICBzZWxmLnN0cmVhbS50cnVuY2F0ZSgpClgrClgr
ICAgIHNlbGYuc3RyZWFtLndyaXRlKGZyYWdtZW50KQpYKwpYKyAgZGVmIF9fZW50ZXJfXyhzZWxm
KToKWCsgICAgc2VsZi5jb25uZWN0KCkKWCsgICAgcmV0dXJuIHNlbGYKWCsKWCsgIGRlZiBfX2V4
aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdGIpOgpYKyAgICBzZWxmLmRpc2Nvbm5lY3QoKQpYKwpY
K2NsYXNzIERhdGFDb25uZWN0aW9uKEFkbWluQ29ubmVjdGlvbik6ClgrClgrICBkZWYgcmVjdmFs
bChzZWxmLCBsZW5ndGgpOgpYKyAgICByZXMgPSAiIgpYKyAgICB3aGlsZSBsZW4ocmVzKSA8IGxl
bmd0aDoKWCsgICAgICBidWYgPSBzZWxmLnNvY2tldC5yZWN2KGxlbmd0aCAtIGxlbihyZXMpKQpY
KyAgICAgIHJlcyA9IHJlcyArIGJ1ZgpYKyAgICByZXR1cm4gcmVzClgrClgrICBkZWYgZXhlY3V0
ZV9ub19yZWNvbm5lY3Qoc2VsZiwgY29tbWFuZCk6ClgrICAgIHN0YXRlbWVudCA9IHNxbC5wYXJz
ZSgic3FsIiwgY29tbWFuZCkKWCsgICAgaWYgc3RhdGVtZW50ID09IE5vbmU6ClgrICAgICAgcmV0
dXJuICJZb3UgaGF2ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXhcbiIKWCsKWCsgICAgcGF5
bG9hZCA9IHN0YXRlbWVudC5wYWNrKCkKWCsgICAgaGVhZGVyID0gc3RydWN0LnBhY2soIjxsbGwi
LCBzdGF0ZW1lbnQucmVxZXVzdF90eXBlLCBsZW4ocGF5bG9hZCksIDApClgrClgrICAgIHNlbGYu
c29ja2V0LnNlbmRhbGwoaGVhZGVyKQpYKyAgICBpZiBsZW4ocGF5bG9hZCk6ClgrICAgICAgc2Vs
Zi5zb2NrZXQuc2VuZGFsbChwYXlsb2FkKQpYKwpYKyAgICBJUFJPVE9fSEVBREVSX1NJWkUgPSAx
MgpYKwpYKyAgICBoZWFkZXIgPSBzZWxmLnJlY3ZhbGwoSVBST1RPX0hFQURFUl9TSVpFKQpYKwpY
KyAgICByZXNwb25zZV9sZW4gPSBzdHJ1Y3QudW5wYWNrKCI8bGxsIiwgaGVhZGVyKVsxXQpYKwpY
KyAgICBpZiByZXNwb25zZV9sZW46ClgrICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlY3ZhbGwocmVz
cG9uc2VfbGVuKQpYKyAgICBlbHNlOgpYKyAgICAgIHJlc3BvbnNlID0gTm9uZQpYKyAgICAKWCsg
ICAgcmV0dXJuIHN0YXRlbWVudC51bnBhY2socmVzcG9uc2UpICsgIlxuIgpYKwphODIxZjJiMDdj
YmFlMDM1MmI0ZDQyZjcwNTAwNzE1ZQplY2hvIHggLSB0YXJhbnRvb2wvZmlsZXMvcGF0Y2gtdGVz
dF9saWJfdGVzdF9zdWl0ZS5weQpzZWQgJ3MvXlgvLycgPnRhcmFudG9vbC9maWxlcy9wYXRjaC10
ZXN0X2xpYl90ZXN0X3N1aXRlLnB5IDw8ICdlMjkyOGU2MTkwYWJhYzA3Yjc2MTJlZDAyMjM0NmU4
MycKWC0tLSB0ZXN0L2xpYi90ZXN0X3N1aXRlLnB5Lm9yaWcJMjAxMS0wNS0xNCAxMjoxNjozMi4w
MDAwMDAwMDAgKzAwMDAKWCsrKyB0ZXN0L2xpYi90ZXN0X3N1aXRlLnB5CTIwMTEtMTItMTMgMDA6
MjM6MDQuNjczMTA3ODkxICswMDAwClhAQCAtMTAsMTMgKzEwLDIxIEBAClggaW1wb3J0IGZpbGVj
bXAKWCBpbXBvcnQgc2hsZXgKWCBpbXBvcnQgdGltZQpYLWZyb20gc2VydmVyIGltcG9ydCBTZXJ2
ZXIKWCtmcm9tIHRhcmFudG9vbF9zaWx2ZXJib3hfc2VydmVyIGltcG9ydCBUYXJhbnRvb2xTaWx2
ZXJib3hTZXJ2ZXIKWCtmcm9tIHRhcmFudG9vbF9jb25uZWN0aW9uIGltcG9ydCBBZG1pbkNvbm5l
Y3Rpb24sIERhdGFDb25uZWN0aW9uClggaW1wb3J0IHRhcmFudG9vbF9wcmVwcm9jZXNzb3IKWCBp
bXBvcnQgcmUKWCBpbXBvcnQgY1N0cmluZ0lPClggaW1wb3J0IHN0cmluZwpYIGltcG9ydCB0cmFj
ZWJhY2sKWCAKWCtjbGFzcyBUZXN0UnVuRXhjZXB0aW9uKFJ1bnRpbWVFcnJvcik6ClgrICAiIiJB
IGNvbW1vbiBleGNlcHRpb24gdG8gdXNlIGFjcm9zcyB0aGUgcHJvZ3JhbS4iIiIKWCsgIGRlZiBf
X2luaXRfXyhzZWxmLCBtZXNzYWdlKToKWCsgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQpYKyAg
ZGVmIF9fc3RyX18oc2VsZik6ClgrICAgIHJldHVybiBzZWxmLm1lc3NhZ2UKWCsKWCBjbGFzcyBG
aWx0ZXJlZFN0cmVhbToKWCAgICIiIkhlbHBlciBjbGFzcyB0byBmaWx0ZXIgLnJlc3VsdCBmaWxl
IG91dHB1dCIiIgpYICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lKToKWEBAIC02NiwxMiAr
NzQsMTIgQEAKWCAgICAgIiIiSW5pdGlhbGl6ZSB0ZXN0IHByb3BlcnRpZXM6IHBhdGggdG8gdGVz
dCBmaWxlLCBwYXRoIHRvClggICAgIHRlbXBvcmFyeSByZXN1bHQgZmlsZSwgcGF0aCB0byB0aGUg
Y2xpZW50IHByb2dyYW0sIHRlc3Qgc3RhdHVzLiIiIgpYICAgICBzZWxmLm5hbWUgPSBuYW1lClgt
ICAgIHNlbGYuYXJncyA9IGFyZ3MKWC0gICAgc2VsZi5zdWl0ZV9pbmkgPSBzdWl0ZV9pbmkKWCAg
ICAgc2VsZi5yZXN1bHQgPSBuYW1lLnJlcGxhY2UoIi50ZXN0IiwgIi5yZXN1bHQiKQpYLSAgICBz
ZWxmLnRtcF9yZXN1bHQgPSBvcy5wYXRoLmpvaW4oc2VsZi5hcmdzLnZhcmRpciwKWCsgICAgc2Vs
Zi50bXBfcmVzdWx0ID0gb3MucGF0aC5qb2luKHN1aXRlX2luaVsidmFyZGlyIl0sClggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHNlbGYucmVzdWx0
KSkKWCAgICAgc2VsZi5yZWplY3QgPSBuYW1lLnJlcGxhY2UoIi50ZXN0IiwgIi5yZWplY3QiKQpY
KyAgICBzZWxmLmFyZ3MgPSBhcmdzClgrICAgIHNlbGYuc3VpdGVfaW5pID0gc3VpdGVfaW5pClgg
ICAgIHNlbGYuaXNfZXhlY3V0ZWQgPSBGYWxzZQpYICAgICBzZWxmLmlzX2V4ZWN1dGVkX29rID0g
Tm9uZQpYICAgICBzZWxmLmlzX2VxdWFsX3Jlc3VsdCA9IE5vbmUKWEBAIC04MSw3ICs4OSw3IEBA
ClggICAgICIiIlJldHVybiB0cnVlIGlmIHRoaXMgdGVzdCB3YXMgcnVuIHN1Y2Nlc3NmdWxseS4i
IiIKWCAgICAgcmV0dXJuIHNlbGYuaXNfZXhlY3V0ZWQgYW5kIHNlbGYuaXNfZXhlY3V0ZWRfb2sg
YW5kIHNlbGYuaXNfZXF1YWxfcmVzdWx0ClggClgtICBkZWYgcnVuKHNlbGYsIHNlcnZlcik6Clgr
ICBkZWYgcnVuKHNlbGYpOgpYICAgICAiIiJFeGVjdXRlIHRoZSB0ZXN0IGFzc3VtaW5nIGl0J3Mg
YSBweXRob24gcHJvZ3JhbS4KWCAgICAgSWYgdGhlIHRlc3QgYWJvcnRzLCBwcmludCBpdHMgb3V0
cHV0IHRvIHN0ZG91dCwgYW5kIHJhaXNlClggICAgIGFuIGV4Y2VwdGlvbi4gRWxzZSwgY29tcHJh
cmUgcmVzdWx0IGFuZCByZWplY3QgZmlsZXMuClhAQCAtOTEsMTAgKzk5LDE4IEBAClggClggICAg
IGRpYWdub3N0aWNzID0gInVua25vd24iClggICAgIHNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dApY
KyAgICBhZG1pbiA9IEFkbWluQ29ubmVjdGlvbihzZWxmLnN1aXRlX2luaVsiaG9zdCJdLApYKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN1aXRlX2luaVsiYWRtaW5fcG9ydCJdKQpY
KyAgICBzcWwgPSBEYXRhQ29ubmVjdGlvbihzZWxmLnN1aXRlX2luaVsiaG9zdCJdLApYKyAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnN1aXRlX2luaVsicG9ydCJdKQpYKyAgICBzZXJ2ZXIg
PSBzZWxmLnN1aXRlX2luaVsic2VydmVyIl0KWCAgICAgdHJ5OgpYKyAgICAgIGFkbWluLmNvbm5l
Y3QoKQpYKyAgICAgIHNxbC5jb25uZWN0KCkKWCAgICAgICBzeXMuc3Rkb3V0ID0gRmlsdGVyZWRT
dHJlYW0oc2VsZi50bXBfcmVzdWx0KQpYLSAgICAgIHN0ZG91dF9maWxlbm8gPSBzeXMuc3Rkb3V0
LnN0cmVhbS5maWxlbm8oKQpYLSAgICAgIGV4ZWNmaWxlKHNlbGYubmFtZSwgZGljdChsb2NhbHMo
KSwgKipzZXJ2ZXIuX19kaWN0X18pKQpYKyAgICAgIHNlcnZlciA9IHNlbGYuc3VpdGVfaW5pWyJz
ZXJ2ZXIiXQpYKyAgICAgIHZhcmRpciA9IHNlbGYuc3VpdGVfaW5pWyJ2YXJkaXIiXQpYKyAgICAg
IGV4ZWNmaWxlKHNlbGYubmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSkKWCAgICAgICBzZWxmLmlz
X2V4ZWN1dGVkX29rID0gVHJ1ZQpYICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6ClggICAgICAg
dHJhY2ViYWNrLnByaW50X2V4YyhlKQpYQEAgLTEwMyw2ICsxMTksOCBAQApYICAgICAgIGlmIHN5
cy5zdGRvdXQgYW5kIHN5cy5zdGRvdXQgIT0gc2F2ZV9zdGRvdXQ6ClggICAgICAgICBzeXMuc3Rk
b3V0LmNsb3NlKCkKWCAgICAgICBzeXMuc3Rkb3V0ID0gc2F2ZV9zdGRvdXQ7ClgrICAgICAgYWRt
aW4uZGlzY29ubmVjdCgpClgrICAgICAgc3FsLmRpc2Nvbm5lY3QoKQpYIApYICAgICBzZWxmLmlz
X2V4ZWN1dGVkID0gVHJ1ZQpYIApYQEAgLTExMSw3ICsxMjksNyBAQApYIApYICAgICBpZiBzZWxm
LmFyZ3MudmFsZ3JpbmQ6ClggICAgICAgc2VsZi5pc192YWxncmluZF9jbGVhbiA9IFwKWC0gICAg
ICBjaGVja192YWxncmluZF9sb2coc2VydmVyLnZhbGdyaW5kX2xvZykgPT0gRmFsc2UKWCsgICAg
ICBjaGVja192YWxncmluZF9sb2coc2VsZi5zdWl0ZV9pbmlbInZhbGdyaW5kX2xvZyJdKSA9PSBG
YWxzZQpYIApYICAgICBpZiBzZWxmLmlzX2V4ZWN1dGVkX29rIGFuZCBzZWxmLmlzX2VxdWFsX3Jl
c3VsdCBhbmQgc2VsZi5pc192YWxncmluZF9jbGVhbjoKWCAgICAgICBwcmludCAiWyBwYXNzIF0i
ClhAQCAtMTMzLDEyICsxNTEsMTIgQEAKWCAgICAgICAgIHdoZXJlID0gIjogd3JvbmcgdGVzdCBv
dXRwdXQiClggICAgICAgZWxpZiBub3Qgc2VsZi5pc192YWxncmluZF9jbGVhbjoKWCAgICAgICAg
IG9zLnJlbW92ZShzZWxmLnJlamVjdCkKWC0gICAgICAgIHNlbGYucHJpbnRfZGlhZ25vc3RpY3Mo
c2VydmVyLnZhbGdyaW5kX2xvZywKWCsgICAgICAgIHNlbGYucHJpbnRfZGlhZ25vc3RpY3Moc2Vs
Zi5zdWl0ZV9pbmlbInZhbGdyaW5kX2xvZyJdLApYICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiVGVzdCBmYWlsZWQhIExhc3QgMTAgbGluZXMgb2YgdmFsZ3JpbmQubG9nOiIpClggICAg
ICAgICB3aGVyZSA9ICI6IHRoZXJlIHdlcmUgd2FybmluZ3MgaW4gdmFsZ3JpbmQubG9nIgpYIApY
LSAgICAgIGlmIG5vdCBzZWxmLmFyZ3MuaXNfZm9yY2U6ClgtICAgICAgICByYWlzZSBSdW50aW1l
RXJyb3IoIkZhaWxlZCB0byBydW4gdGVzdCAiICsgc2VsZi5uYW1lICsgd2hlcmUpClgrICAgICAg
aWYgbm90IHNlbGYuc3VpdGVfaW5pWyJpc19mb3JjZSJdOgpYKyAgICAgICAgcmFpc2UgVGVzdFJ1
bkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJ1biB0ZXN0ICIgKyBzZWxmLm5hbWUgKyB3aGVyZSkKWCAK
WCAKWCAgIGRlZiBwcmludF9kaWFnbm9zdGljcyhzZWxmLCBsb2dmaWxlLCBtZXNzYWdlKToKWEBA
IC0xNjcsNiArMTg1LDIwIEBAClggICAgICAgICBmb3IgbGluZSBpbiBkaWZmOgpYICAgICAgICAg
ICBzeXMuc3Rkb3V0LndyaXRlKGxpbmUpClggClgrY2xhc3MgVGFyYW50b29sQ29uZmlnRmlsZToK
WCsgICIiIkNvbmZpZ1BhcnNlciBjYW4ndCByZWFkIGZpbGVzIHdpdGhvdXQgc2VjdGlvbnMsIHdv
cmsgaXQgYXJvdW5kIiIiClgrICBkZWYgX19pbml0X18oc2VsZiwgZnAsIHNlY3Rpb25fbmFtZSk6
ClgrICAgIHNlbGYuZnAgPSBmcApYKyAgICBzZWxmLnNlY3Rpb25fbmFtZSA9ICJbIiArIHNlY3Rp
b25fbmFtZSArICJdIgpYKyAgZGVmIHJlYWRsaW5lKHNlbGYpOgpYKyAgICBpZiBzZWxmLnNlY3Rp
b25fbmFtZToKWCsgICAgICBzZWN0aW9uX25hbWUgPSBzZWxmLnNlY3Rpb25fbmFtZQpYKyAgICAg
IHNlbGYuc2VjdGlvbl9uYW1lID0gTm9uZQpYKyAgICAgIHJldHVybiBzZWN0aW9uX25hbWUKWCsg
ICAgIyB0YXJhbnRvb2wuY2ZnIHB1dHMgc3RyaW5nIHZhbHVlcyBpbiBxdW90ZQpYKyAgICByZXR1
cm4gc2VsZi5mcC5yZWFkbGluZSgpLnJlcGxhY2UoIlwiIiwgJycpClgrClgrClggY2xhc3MgVGVz
dFN1aXRlOgpYICAgIiIiRWFjaCB0ZXN0IHN1aXRlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIHJlbGF0
ZWQgdGVzdHMgZmlsZXMsClggICBsb2NhdGVkIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBvbiBkaXNr
LiBFYWNoIHRlc3QgZmlsZSBoYXMKWEBAIC0xODYsMTMgKzIxOCwxNSBAQApYICAgICBzZWxmLmFy
Z3MgPSBhcmdzClggICAgIHNlbGYudGVzdHMgPSBbXQpYICAgICBzZWxmLmluaSA9IHt9ClgtClgt
ICAgIHNlbGYuaW5pWyJjb3JlIl0gPSAidGFyYW50b29sIgpYLSAgICBzZWxmLmluaVsibW9kdWxl
Il0gPSAic2lsdmVyYm94IgpYKyAgICBzZWxmLmluaVsic3VpdGVfcGF0aCJdID0gc3VpdGVfcGF0
aApYKyAgICBzZWxmLmluaVsiaG9zdCJdID0gImxvY2FsaG9zdCIKWCsgICAgc2VsZi5pbmlbImlz
X2ZvcmNlIl0gPSBzZWxmLmFyZ3MuaXNfZm9yY2UKWCsgICAgc2VsZi5pbmlbInZhcmRpciJdID0g
YXJncy52YXJkaXIKWCsgICAgc2VsZi5pbmlbInZhbGdyaW5kX2xvZyJdID0gb3MucGF0aC5qb2lu
KGFyZ3MudmFyZGlyLCAidmFsZ3JpbmQubG9nIikKWCAKWCAgICAgaWYgb3MuYWNjZXNzKHN1aXRl
X3BhdGgsIG9zLkZfT0spID09IEZhbHNlOgpYLSAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU3Vp
dGUgXCIiICsgc3VpdGVfcGF0aCArXApYLSAgICAgICAgICAgICAgICAgICAgICAgICAiXCIgZG9l
c24ndCBleGlzdCIpClgrICAgICAgcmFpc2UgVGVzdFJ1bkV4Y2VwdGlvbigiU3VpdGUgXCIiICsg
c3VpdGVfcGF0aCArXApYKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiIGRvZXNuJ3Qg
ZXhpc3QiKQpYIApYICMgcmVhZCB0aGUgc3VpdGUgY29uZmlnClggICAgIGNvbmZpZyA9IENvbmZp
Z1BhcnNlci5Db25maWdQYXJzZXIoKQpYQEAgLTIwMyw2ICsyMzcsMTYgQEAKWCAgICAgICBzZWxm
LmluaVsiZGlzYWJsZWQiXSA9IGRpY3QuZnJvbWtleXMoc2VsZi5pbmlbImRpc2FibGVkIl0uc3Bs
aXQoIiAiKSkKWCAgICAgZWxzZToKWCAgICAgICBzZWxmLmluaVsiZGlzYWJsZWQiXSA9IGRpY3Qo
KQpYKyMgaW1wb3J0IHRoZSBuZWNlc3NhcnkgbW9kdWxlIGZvciB0ZXN0IHN1aXRlIGNsaWVudApY
KwpYKyMgbm93IHJlYWQgdGhlIHNlcnZlciBjb25maWcsIHdlIG5lZWQgc29tZSBwcm9wZXJ0aWVz
IGZyb20gaXQKWCsKWCsgICAgd2l0aCBvcGVuKHNlbGYuaW5pWyJjb25maWciXSkgYXMgZnA6Clgr
ICAgICAgZHVtbXlfc2VjdGlvbl9uYW1lID0gInRhcmFudG9vbF9zaWx2ZXJib3giClgrICAgICAg
Y29uZmlnLnJlYWRmcChUYXJhbnRvb2xDb25maWdGaWxlKGZwLCBkdW1teV9zZWN0aW9uX25hbWUp
KQpYKyAgICAgIHNlbGYuaW5pWyJwaWRmaWxlIl0gPSBjb25maWcuZ2V0KGR1bW15X3NlY3Rpb25f
bmFtZSwgInBpZF9maWxlIikKWCsgICAgICBzZWxmLmluaVsiYWRtaW5fcG9ydCJdID0gaW50KGNv
bmZpZy5nZXQoZHVtbXlfc2VjdGlvbl9uYW1lLCAiYWRtaW5fcG9ydCIpKQpYKyAgICAgIHNlbGYu
aW5pWyJwb3J0Il0gPSBpbnQoY29uZmlnLmdldChkdW1teV9zZWN0aW9uX25hbWUsICJwcmltYXJ5
X3BvcnQiKSkKWCAKWCAgICAgcHJpbnQgIkNvbGxlY3RpbmcgdGVzdHMgaW4gXCIiICsgc3VpdGVf
cGF0aCArICJcIjogIiArXApYICAgICAgIHNlbGYuaW5pWyJkZXNjcmlwdGlvbiJdICsgIi4iClhA
QCAtMjE2LDE3ICsyNjAsOSBAQApYICAgZGVmIHJ1bl9hbGwoc2VsZik6ClggICAgICIiIkZvciBl
YWNoIGZpbGUgaW4gdGhlIHRlc3Qgc3VpdGUsIHJ1biBjbGllbnQgcHJvZ3JhbQpYICAgICBhc3N1
bWluZyBlYWNoIGZpbGUgcmVwcmVzZW50cyBhbiBpbmRpdmlkdWFsIHRlc3QuIiIiClgtICAgIHRy
eToKWC0gICAgICBzZXJ2ZXIgPSBTZXJ2ZXIoc2VsZi5pbmlbImNvcmUiXSwgc2VsZi5pbmlbIm1v
ZHVsZSJdKQpYLSAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6ClgtICAgICAgcHJpbnQgZQpYLSAg
ICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVW5rbm93biBzZXJ2ZXI6IGNvcmUgPSB7MH0sIG1vZHVs
ZSA9IHsxfSIuZm9ybWF0KApYLSAgICAgICAgc2VsZi5pbmlbImNvcmUiXSwgc2VsZi5pbmlbIm1v
ZHVsZSJdKSkKWC0gICAgc2VydmVyLmRlcGxveShzZWxmLmluaVsiY29uZmlnIl0sClgtICAgICAg
ICAgICAgICAgICAgc2VydmVyLmZpbmRfZXhlKHNlbGYuYXJncy5idWlsZGRpciwgc2lsZW50PUZh
bHNlKSwKWC0JCSAgc2VsZi5hcmdzLnZhcmRpciwKWC0gICAgICAgICAgICAgICAgICBzZWxmLmFy
Z3MubWVtLCBzZWxmLmFyZ3Muc3RhcnRfYW5kX2V4aXQsIHNlbGYuYXJncy5nZGIsIHNlbGYuYXJn
cy52YWxncmluZCwKWC0JCSAgc2lsZW50PUZhbHNlKQpYKyAgICBzZXJ2ZXIgPSBUYXJhbnRvb2xT
aWx2ZXJib3hTZXJ2ZXIoc2VsZi5hcmdzLCBzZWxmLmluaSkKWCsgICAgc2VydmVyLmluc3RhbGwo
KQpYKyAgICBzZXJ2ZXIuc3RhcnQoKQpYICAgICBpZiBzZWxmLmFyZ3Muc3RhcnRfYW5kX2V4aXQ6
ClggICAgICAgcHJpbnQgIiAgU3RhcnQgYW5kIGV4aXQgcmVxdWVzdGVkLCBleGl0aW5nLi4uIgpY
ICAgICAgIGV4aXQoMCkKWEBAIC0yNDcsNyArMjgzLDcgQEAKWCAgICAgICBpZiBvcy5wYXRoLmJh
c2VuYW1lKHRlc3QubmFtZSkgaW4gc2VsZi5pbmlbImRpc2FibGVkIl06ClggICAgICAgICBwcmlu
dCAiWyBza2lwIF0iClggICAgICAgZWxzZToKWC0gICAgICAgIHRlc3QucnVuKHNlcnZlcikKWCsg
ICAgICAgIHRlc3QucnVuKCkKWCAgICAgICAgIGlmIG5vdCB0ZXN0LnBhc3NlZCgpOgpYICAgICAg
ICAgICBmYWlsZWRfdGVzdHMuYXBwZW5kKHRlc3QubmFtZSkKWCAKWEBAIC0yNTUsMTEgKzI5MSw5
IEBAClggICAgIGlmIGxlbihmYWlsZWRfdGVzdHMpOgpYICAgICAgIHByaW50ICJGYWlsZWQgezB9
IHRlc3RzOiB7MX0uIi5mb3JtYXQobGVuKGZhaWxlZF90ZXN0cyksClggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLmpvaW4oZmFpbGVkX3Rlc3RzKSkKWC0g
ICAgc2VydmVyLnN0b3Aoc2lsZW50PUZhbHNlKQpYLSAgICBzZXJ2ZXIuY2xlYW51cCgpClgrICAg
IHNlcnZlci5zdG9wKCk7ClggClgtICAgIGlmIHNlbGYuYXJncy52YWxncmluZCBhbmQgY2hlY2tf
dmFsZ3JpbmRfbG9nKHNlcnZlci52YWxncmluZF9sb2cpOgpYKyAgICBpZiBzZWxmLmFyZ3MudmFs
Z3JpbmQgYW5kIGNoZWNrX3ZhbGdyaW5kX2xvZyhzZWxmLmluaVsidmFsZ3JpbmRfbG9nIl0pOgpY
ICAgICAgIHByaW50ICIgIEVycm9yISBUaGVyZSB3ZXJlIHdhcm5pbmdzL2Vycm9ycyBpbiB2YWxn
cmluZCBsb2cgZmlsZToiClgtICAgICAgcHJpbnRfdGFpbF9uKHNlcnZlci52YWxncmluZF9sb2cs
IDIwKQpYLSAgICAgIHJldHVybiAxClgtICAgIHJldHVybiBsZW4oZmFpbGVkX3Rlc3RzKQpYKyAg
ICAgIHByaW50X3RhaWxfbihzZWxmLmluaVsidmFsZ3JpbmRfbG9nIl0sIDIwKQpYKwplMjkyOGU2
MTkwYWJhYzA3Yjc2MTJlZDAyMjM0NmU4MwplY2hvIHggLSB0YXJhbnRvb2wvZmlsZXMvcGF0Y2gt
dGVzdF9saWJfc3FsLmcKc2VkICdzL15YLy8nID50YXJhbnRvb2wvZmlsZXMvcGF0Y2gtdGVzdF9s
aWJfc3FsLmcgPDwgJzc4YjQyMDdiMjMzNDVjMDhkM2JkNWRjM2JmYmEyZjdkJwpYLS0tIHRlc3Qv
bGliL3NxbC5nLm9yaWcJMjAxMS0wNS0xNCAxMjoxNjozMi4wMDAwMDAwMDAgKzAwMDAKWCsrKyB0
ZXN0L2xpYi9zcWwuZwkyMDExLTEyLTEzIDAwOjQxOjM3LjcyOTAwNDkzOSArMDAwMApYQEAgLTUs
MTAgKzUsNiBAQApYIApYICUlClggClgtIyBUaGUgZ3JhbW1hciBiZWxvdyBzb2xlbHkgY292ZXJz
IHRoZSBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5ClgtIyBUYXJhbnRvb2wgYmluYXJ5IHByb3Rv
Y29sLCBmcm9tIHdoaWNoIGZvbGxvdyBhbGwgdGhlClgtIyBsaW1pdGF0aW9ucy4gRm9yIHJlZmVy
ZW5jZSBwbGVhc2Ugc2VlIGRvYy9ib3gtcHJvdG9jb2wudHh0LgpYLQpYIHBhcnNlciBzcWw6Clgg
ClggICAgIGlnbm9yZTogICAgICAgICAgICdcXHMrJwpYQEAgLTI1LDggKzIxLDYgQEAKWCAgICAg
dG9rZW4gV0hFUkU6ICAgICAgJ3doZXJlJwpYICAgICB0b2tlbiBWQUxVRVM6ICAgICAndmFsdWVz
JwpYICAgICB0b2tlbiBTRVQ6ICAgICAgICAnc2V0JwpYLSAgICB0b2tlbiBPUjogICAgICAgICAn
b3InClgtICAgIHRva2VuIExJTUlUOiAgICAgICdsaW1pdCcKWCAgICAgdG9rZW4gRU5EOiAgICAg
ICAgJ1xccyokJwpYIApYICAgICBydWxlIHNxbDogICAgICAgICAoaW5zZXJ0IHt7IHN0bXQgPSBp
bnNlcnQgfX0gfApYQEAgLTM3LDI3ICszMSwxOSBAQApYICAgICAgICAgICAgICAgICAgICAgICAK
WCAgICAgcnVsZSBpbnNlcnQ6ICAgICAgSU5TRVJUIFtJTlRPXSBpZGVudCBWQUxVRVMgdmFsdWVf
bGlzdApYICAgICAgICAgICAgICAgICAgICAgICB7eyByZXR1cm4gc3FsX2FzdC5TdGF0ZW1lbnRJ
bnNlcnQoaWRlbnQsIHZhbHVlX2xpc3QpIH19ClgtICAgIHJ1bGUgdXBkYXRlOiAgICAgIFVQREFU
RSBpZGVudCBTRVQgdXBkYXRlX2xpc3Qgb3B0X3NpbXBsZV93aGVyZQpYLSAgICAgICAgICAgICAg
ICAgICAgICB7eyByZXR1cm4gc3FsX2FzdC5TdGF0ZW1lbnRVcGRhdGUoaWRlbnQsIHVwZGF0ZV9s
aXN0LCBvcHRfc2ltcGxlX3doZXJlKSB9fQpYLSAgICBydWxlIGRlbGV0ZTogICAgICBERUxFVEUg
RlJPTSBpZGVudCBvcHRfc2ltcGxlX3doZXJlClgtICAgICAgICAgICAgICAgICAgICAgIHt7IHJl
dHVybiBzcWxfYXN0LlN0YXRlbWVudERlbGV0ZShpZGVudCwgb3B0X3NpbXBsZV93aGVyZSkgfX0K
WC0gICAgcnVsZSBzZWxlY3Q6ICAgICAgU0VMRUNUICdcKicgRlJPTSBpZGVudCBvcHRfd2hlcmUg
b3B0X2xpbWl0ClgtICAgICAgICAgICAgICAgICAgICAgIHt7IHJldHVybiBzcWxfYXN0LlN0YXRl
bWVudFNlbGVjdChpZGVudCwgb3B0X3doZXJlLCBvcHRfbGltaXQpIH19ClgrICAgIHJ1bGUgdXBk
YXRlOiAgICAgIFVQREFURSBpZGVudCBTRVQgdXBkYXRlX2xpc3Qgb3B0X3doZXJlIApYKyAgICAg
ICAgICAgICAgICAgICAgICB7eyByZXR1cm4gc3FsX2FzdC5TdGF0ZW1lbnRVcGRhdGUoaWRlbnQs
IHVwZGF0ZV9saXN0LCBvcHRfd2hlcmUpIH19ClgrICAgIHJ1bGUgZGVsZXRlOiAgICAgIERFTEVU
RSBGUk9NIGlkZW50IG9wdF93aGVyZQpYKyAgICAgICAgICAgICAgICAgICAgICB7eyByZXR1cm4g
c3FsX2FzdC5TdGF0ZW1lbnREZWxldGUoaWRlbnQsIG9wdF93aGVyZSkgfX0KWCsgICAgcnVsZSBz
ZWxlY3Q6ICAgICAgU0VMRUNUICdcKicgRlJPTSBpZGVudCBvcHRfd2hlcmUKWCsgICAgICAgICAg
ICAgICAgICAgICAge3sgcmV0dXJuIHNxbF9hc3QuU3RhdGVtZW50U2VsZWN0KGlkZW50LCBvcHRf
d2hlcmUpIH19ClggICAgIHJ1bGUgcGluZzogICAgICAgIFBJTkcKWCAgICAgICAgICAgICAgICAg
ICAgICAge3sgcmV0dXJuIHNxbF9hc3QuU3RhdGVtZW50UGluZygpIH19ClggICAgIHJ1bGUgcHJl
ZGljYXRlOiAgIGlkZW50ICc9JyBjb25zdGFudApYICAgICAgICAgICAgICAgICAgICAgICB7eyBy
ZXR1cm4gKGlkZW50LCBjb25zdGFudCkgfX0KWC0gICAgcnVsZSBvcHRfc2ltcGxlX3doZXJlOiAg
IHt7IHJldHVybiBOb25lIH19ClgrICAgIHJ1bGUgb3B0X3doZXJlOiAgIHt7IHJldHVybiBOb25l
IH19ClggICAgICAgICAgICAgICAgICAgICAgIHwgV0hFUkUgcHJlZGljYXRlClggICAgICAgICAg
ICAgICAgICAgICAgIHt7IHJldHVybiBwcmVkaWNhdGUgfX0KWC0gICAgcnVsZSBvcHRfd2hlcmU6
ICAge3sgcmV0dXJuIE5vbmUgfX0KWC0gICAgICAgICAgICAgICAgICAgICAgfCBXSEVSRSBkaXNq
dW5jdGlvbgpYLSAgICAgICAgICAgICAgICAgICAgICB7eyByZXR1cm4gZGlzanVuY3Rpb24gfX0K
WC0gICAgcnVsZSBkaXNqdW5jdGlvbjogcHJlZGljYXRlIHt7IGRpc2p1bmN0aW9uID0gW3ByZWRp
Y2F0ZV0gfX0KWC0gICAgICAgICAgICAgICAgICAgICAgWyhPUiBwcmVkaWNhdGUge3sgZGlzanVu
Y3Rpb24uYXBwZW5kKHByZWRpY2F0ZSkgfX0pK10KWC0gICAgICAgICAgICAgICAgICAgICAge3sg
cmV0dXJuIGRpc2p1bmN0aW9uIH19ClgtICAgIHJ1bGUgb3B0X2xpbWl0OiAgIHt7IHJldHVybiAw
eGZmZmZmZmZmIH19ClgtICAgICAgICAgICAgICAgICAgICAgIHwgTElNSVQgTlVNIHt7IHJldHVy
biBpbnQoTlVNKSB9fQpYICAgICBydWxlIHZhbHVlX2xpc3Q6ICAnXCgnIGV4cHIge3sgdmFsdWVf
bGlzdCA9IFtleHByXSB9fQpYICAgICAgICAgICAgICAgICAgICAgICAgICAgWygiLCIgZXhwciB7
eyB2YWx1ZV9saXN0LmFwcGVuZChleHByKSB9fSApK10KWCAgICAgICAgICAgICAgICAgICAgICAg
J1wpJyB7eyByZXR1cm4gdmFsdWVfbGlzdCB9fQo3OGI0MjA3YjIzMzQ1YzA4ZDNiZDVkYzNiZmJh
MmY3ZAplY2hvIHggLSB0YXJhbnRvb2wvZmlsZXMvcGF0Y2gtdGVzdF90YXJhbnRvb2wKc2VkICdz
L15YLy8nID50YXJhbnRvb2wvZmlsZXMvcGF0Y2gtdGVzdF90YXJhbnRvb2wgPDwgJ2VmODUxMGQz
ZmU1ZDczOTg0YTZkNDI5MmJhZmZkZTAwJwpYLS0tIHRlc3QvdGFyYW50b29sLm9yaWcJMjAxMS0w
NS0xNCAxMjoxNjozMi4wMDAwMDAwMDAgKzAwMDAKWCsrKyB0ZXN0L3RhcmFudG9vbAkyMDExLTEy
LTEzIDAxOjEyOjEyLjY5NjY5OTQzNyArMDAwMApYQEAgLTEsNCArMSw0IEBAClgtIyEgL3Vzci9i
aW4vcHl0aG9uIApYKyMhIC91c3IvYmluL2VudiBweXRob24gClggIiIiQSBzaW1wbGlzdGljIGNs
aWVudCBmb3IgdGFyYW50b29sL3NpbHZlcmJveDogYWRtaW5pc3RyYXRpdmUKWCBjb25zb2xlIGFu
ZCBTUUwgY2xpZW50LgpYIApYQEAgLTMyLDggKzMyLDggQEAKWCBpbXBvcnQgc29ja2V0ClggaW1w
b3J0IHN5cwpYIGltcG9ydCBzdHJpbmcKWC1mcm9tIGxpYi50YXJhbnRvb2xfYWRtaW4gaW1wb3J0
IFRhcmFudG9vbEFkbWluLCBpc19hZG1pbl9yZQpYLWZyb20gbGliLmJveCBpbXBvcnQgQm94Clgr
ZnJvbSBsaWIudGFyYW50b29sX2Nvbm5lY3Rpb24gaW1wb3J0IEFkbWluQ29ubmVjdGlvbiwgRGF0
YUNvbm5lY3Rpb24sIFwKWCsgICAgICAgaXNfYWRtaW5fcmUKWCAKWCBjbGFzcyBPcHRpb25zOgpY
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgpYQEAgLTk0LDggKzk0LDggQEAKWCBkZWYgbWFpbigpOgpY
ICAgaW5pdF9yZWFkbGluZV9oaXN0b3J5KCkKWCAgIG9wdGlvbnMgPSBPcHRpb25zKCkKWC0gIGFk
bWluX2NvbiA9IFRhcmFudG9vbEFkbWluKG9wdGlvbnMuYXJncy5ob3N0LCBvcHRpb25zLmFyZ3Mu
YWRtaW5fcG9ydCkKWC0gIGRhdGFfY29uID0gQm94KG9wdGlvbnMuYXJncy5ob3N0LCBvcHRpb25z
LmFyZ3MucG9ydCkKWCsgIGFkbWluX2NvbiA9IEFkbWluQ29ubmVjdGlvbihvcHRpb25zLmFyZ3Mu
aG9zdCwgb3B0aW9ucy5hcmdzLmFkbWluX3BvcnQpClgrICBkYXRhX2NvbiA9IERhdGFDb25uZWN0
aW9uKG9wdGlvbnMuYXJncy5ob3N0LCBvcHRpb25zLmFyZ3MucG9ydCkKWCAgIHRyeToKWCAgICAg
YWRtaW5fY29uLmNvbm5lY3QoKQpYICAgICBkYXRhX2Nvbi5jb25uZWN0KCkKZWY4NTEwZDNmZTVk
NzM5ODRhNmQ0MjkyYmFmZmRlMDAKZWNobyB4IC0gdGFyYW50b29sL2ZpbGVzL3BhdGNoLUNNYWtl
TGlzdHMudHh0CnNlZCAncy9eWC8vJyA+dGFyYW50b29sL2ZpbGVzL3BhdGNoLUNNYWtlTGlzdHMu
dHh0IDw8ICcxY2JlMzA5OTJmYjFkODcyODU2MDk3NTM2ZjhjNmNhMicKWC0tLSBDTWFrZUxpc3Rz
LnR4dC5vcmlnCTIwMTEtMTEtMjUgMTU6MzM6MDguOTk3NDQ0OTI0ICswMDAwClgrKysgQ01ha2VM
aXN0cy50eHQJMjAxMS0xMS0yNSAxNTozMzozMC40Mjg1OTM4NTUgKzAwMDAKWEBAIC0xOTcsNyAr
MTk3LDcgQEAKWCBhZGRfc3ViZGlyZWN0b3J5KHRlc3QpClggClggaW5zdGFsbCAoRklMRVMgUkVB
RE1FIExJQ0VOU0UgZG9jL3NpbHZlcmJveC1wcm90b2NvbC50eHQKWC0gICAgICAgICBERVNUSU5B
VElPTiBkb2MpClgrICAgICAgICAgREVTVElOQVRJT04gJSVET0NTRElSJSUpClggClggaW5jbHVk
ZSAoY21ha2UvdGFyYW50b29sX2NwYWNrLmNtYWtlKQpYICMKMWNiZTMwOTkyZmIxZDg3Mjg1NjA5
NzUzNmY4YzZjYTIKZWNobyB4IC0gdGFyYW50b29sL2ZpbGVzL3BhdGNoLXRlc3RfbGliX3NxbF9h
c3QucHkKc2VkICdzL15YLy8nID50YXJhbnRvb2wvZmlsZXMvcGF0Y2gtdGVzdF9saWJfc3FsX2Fz
dC5weSA8PCAnYjE5YTUxMDczNmZjNDY2ZDZlMzQ5ODA4MzhiNThmZmInClgtLS0gdGVzdC9saWIv
c3FsX2FzdC5weS5vcmlnCTIwMTEtMDUtMTQgMTI6MTY6MzIuMDAwMDAwMDAwICswMDAwClgrKysg
dGVzdC9saWIvc3FsX2FzdC5weQkyMDExLTEyLTEzIDAwOjIzOjA0LjY3MzEwNzg5MSArMDAwMApY
QEAgLTI0MiwyMiArMjQyLDE2IEBAClggY2xhc3MgU3RhdGVtZW50U2VsZWN0KFN0YXRlbWVudFBp
bmcpOgpYICAgcmVxZXVzdF90eXBlID0gU0VMRUNUX1JFUVVFU1RfVFlQRQpYIApYLSAgZGVmIF9f
aW5pdF9fKHNlbGYsIHRhYmxlX25hbWUsIHdoZXJlLCBsaW1pdCk6ClgrICBkZWYgX19pbml0X18o
c2VsZiwgdGFibGVfbmFtZSwgd2hlcmUpOgpYICAgICBzZWxmLm5hbWVzcGFjZV9ubyA9IHRhYmxl
X25hbWUKWC0gICAgc2VsZi5pbmRleF9ubyA9IE5vbmUKWC0gICAgc2VsZi5rZXlfbGlzdCA9IFtd
ClgtICAgIGlmIG5vdCB3aGVyZToKWC0gICAgICBzZWxmLmluZGV4X25vID0gMApYLSAgICAgIHNl
bGYua2V5X2xpc3QgPSBbIiIsXQpYKyAgICBpZiB3aGVyZToKWCsgICAgICAoc2VsZi5pbmRleF9u
bywga2V5KSA9IHdoZXJlClgrICAgICAgc2VsZi5rZXkgPSBba2V5XQpYICAgICBlbHNlOgpYLSAg
ICAgIGZvciAoaW5kZXhfbm8sIGtleSkgaW4gd2hlcmU6ClgtICAgICAgICBzZWxmLmtleV9saXN0
LmFwcGVuZChrZXkpClgtICAgICAgICBpZiBzZWxmLmluZGV4X25vID09IE5vbmU6ClgtICAgICAg
ICAgIHNlbGYuaW5kZXhfbm8gPSBpbmRleF9ubwpYLSAgICAgICAgZWxpZiBzZWxmLmluZGV4X25v
ICE9IGluZGV4X25vOgpYLSAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkFsbCBrZXkgdmFs
dWVzIGluIGEgZGlzanVuY3Rpb24gbXVzdCByZWZlciB0byB0aGUgc2FtZSBpbmRleCIpClgrICAg
ICAgc2VsZi5pbmRleF9ubyA9IDAKWCsgICAgICBzZWxmLmtleSA9IFsiIl0KWCAgICAgc2VsZi5v
ZmZzZXQgPSAwClgtICAgIHNlbGYubGltaXQgPSBsaW1pdApYKyAgICBzZWxmLmxpbWl0ID0gMHhm
ZmZmZmZmZgpYIApYICAgZGVmIHBhY2soc2VsZik6ClggICAgIGJ1ZiA9IGN0eXBlcy5jcmVhdGVf
c3RyaW5nX2J1ZmZlcihQQUNLRVRfQlVGX0xFTikKWEBAIC0yNjYsMTAgKzI2MCw4IEBAClggICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5pbmRleF9ubywKWCAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLm9mZnNldCwKWCAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbWl0LApYLSAgICAgICAg
ICAgICAgICAgICAgIGxlbihzZWxmLmtleV9saXN0KSkKWC0gICAgb2Zmc2V0ID0gU0VMRUNUX1JF
UVVFU1RfRklYRURfTEVOClgtICAgIGZvciBrZXkgaW4gc2VsZi5rZXlfbGlzdDoKWC0gICAgICAo
YnVmLCBvZmZzZXQpID0gcGFja190dXBsZShba2V5XSwgYnVmLCBvZmZzZXQpClgrICAgICAgICAg
ICAgICAgICAgICAgMSkKWCsgICAgKGJ1Ziwgb2Zmc2V0KSA9IHBhY2tfdHVwbGUoc2VsZi5rZXks
IGJ1ZiwgU0VMRUNUX1JFUVVFU1RfRklYRURfTEVOKQpYIApYICAgICByZXR1cm4gYnVmWzpvZmZz
ZXRdClggCmIxOWE1MTA3MzZmYzQ2NmQ2ZTM0OTgwODM4YjU4ZmZiCmVjaG8geCAtIHRhcmFudG9v
bC9maWxlcy9wYXRjaC10ZXN0X0NNYWtlTGlzdHMudHh0CnNlZCAncy9eWC8vJyA+dGFyYW50b29s
L2ZpbGVzL3BhdGNoLXRlc3RfQ01ha2VMaXN0cy50eHQgPDwgJ2U1NWM2ODY3NTNmYTAwNGU1MWFj
YjQwM2Y3MTQ4ODMzJwpYLS0tIHRlc3QvQ01ha2VMaXN0cy50eHQub3JpZwkyMDExLTEyLTExIDE2
OjE2OjQwLjU5NDIzMDU1MSArMDAwMApYKysrIHRlc3QvQ01ha2VMaXN0cy50eHQJMjAxMS0xMi0x
MSAxNjoxOTo0NC45MTUwMTA3MDYgKzAwMDAKWEBAIC05LDUgKzksNCBAQApYIApYIGluc3RhbGwg
KFBST0dSQU1TIHRhcmFudG9vbCBERVNUSU5BVElPTiBiaW4pClggaW5zdGFsbCAoRElSRUNUT1JZ
IGxpYiBERVNUSU5BVElPTiBiaW4pClgtaW5zdGFsbCAoRklMRVMgYm94L3RhcmFudG9vbC5jZmcg
Ym94LzAwMDAwMDAwMDAwMDAwMDAwMDAxLnNuYXAKWC0gICAgREVTVElOQVRJT04gYmluKQpYK2lu
c3RhbGwgKEZJTEVTIGJveC90YXJhbnRvb2wuY2ZnIERFU1RJTkFUSU9OICUlRVRDRElSJSUpCmU1
NWM2ODY3NTNmYTAwNGU1MWFjYjQwM2Y3MTQ4ODMzCmV4aXQ=
</data>

          </attachment>
      

    </bug>

</bugzilla>