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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>123064</bug_id>
          
          <creation_ts>2013-10-19 11:57:50 -0700</creation_ts>
          <short_desc>REGRESSION(r155373): Mac WK2 EWS bots is actually Mac WK1 debug</short_desc>
          <delta_ts>2013-10-19 14:23:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>lforschler</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>941533</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-19 11:57:50 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/155373 regressed port detection mechanism in EWS.

This patch needs to be either rolled out manually or the regression needs to be fixed ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941534</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-19 12:00:41 -0700</bug_when>
    <thetext>Seriously, EWS needs to be rewritten. The current implementation is too fragile.

And we need to stop doing these refactoring until that&apos;s done because we&apos;re going to break things one way or another in the current state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941575</commentid>
    <comment_count>2</comment_count>
      <attachid>214668</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-19 14:11:27 -0700</bug_when>
    <thetext>Created attachment 214668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941576</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-19 14:13:04 -0700</bug_when>
    <thetext>Attachment 214668 did not pass style-queue:

Traceback (most recent call last):
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkit-patch&quot;, line 44, in &lt;module&gt;
    from webkitpy.tool.main import WebKitPatch
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/tool/main.py&quot;, line 36, in &lt;module&gt;
    from webkitpy.common.config.ports import DeprecatedPort
ImportError: No module named ports


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941577</commentid>
    <comment_count>4</comment_count>
      <attachid>214668</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-19 14:15:36 -0700</bug_when>
    <thetext>Comment on attachment 214668
Patch

r=me provided the deleted files are being added. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941578</commentid>
    <comment_count>5</comment_count>
      <attachid>214669</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-19 14:16:47 -0700</bug_when>
    <thetext>Created attachment 214669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941582</commentid>
    <comment_count>6</comment_count>
      <attachid>214669</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-19 14:23:41 -0700</bug_when>
    <thetext>Comment on attachment 214669
Patch

Clearing flags on attachment: 214669

Committed r157682: &lt;http://trac.webkit.org/changeset/157682&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941583</commentid>
    <comment_count>7</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-19 14:23:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214668</attachid>
            <date>2013-10-19 14:11:27 -0700</date>
            <delta_ts>2013-10-19 14:16:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123064-20131019141126.patch</filename>
            <type>text/plain</type>
            <size>39298</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1NzY4MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY0IEBACisyMDEzLTEwLTE5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNv
bT4KKworICAgICAgICBSRUdSRVNTSU9OKHIxNTUzNzMpOiBNYWMgV0syIEVXUyBib3RzIGlzIGFj
dHVhbGx5IE1hYyBXSzEgZGVidWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMzA2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJldmVydCByMTU1MzczIGFzIGl0IGlzIGNhdXNpbmcgaW5jb3JyZWN0IHBv
cnQvcGxhdGZvcm0gZGVkdWN0aW9uIGZvciB0aGUgTWFjIEVXUyBzeXN0ZW1zLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0Ll9wb3J0X2Zs
YWdfZm9yX3NjcmlwdHMpOgorICAgICAgICAoUG9ydC5fd2syX3BvcnRfbmFtZSk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6CisgICAgICAgIChQb3J0
VGVzdC50ZXN0X2J1aWxkX3BhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9l
ZmxfdW5pdHRlc3QucHk6CisgICAgICAgIChFZmxQb3J0VGVzdC50ZXN0X3Nob3dfcmVzdWx0c19o
dG1sX2ZpbGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGtfdW5pdHRlc3Qu
cHk6CisgICAgICAgIChHdGtQb3J0VGVzdC50ZXN0X2dldF9jcmFzaF9sb2cpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWNfdW5pdHRlc3QucHk6CisgICAgICAgICh0ZXN0XzY0
Yml0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weToKKyAgICAgICAg
KFRlc3RQb3J0LnZpcnR1YWxfdGVzdF9zdWl0ZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXIucHk6CisgICAgICAgIChGbGFreVRlc3RSZXBv
cnRlci5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNf
Y29tbWFuZC5weToKKyAgICAgICAgKFJvbGxvdXQuX3VwZGF0ZV93b3JraW5nX2NvcHkpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5n
c3lzdGVtLnB5OgorICAgICAgICAoQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0ucnVuX2NvbW1h
bmQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHk6
CisgICAgICAgIChQYXRjaFByb2Nlc3NpbmdRdWV1ZS5iZWdpbl93b3JrX3F1ZXVlKToKKyAgICAg
ICAgKENvbW1pdFF1ZXVlLnJ1bl9jb21tYW5kKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvbWFpbi5weToKKyAgICAgICAgKFdlYktpdFBhdGNoLl9faW5pdF9fKToKKyAgICAgICAg
KFdlYktpdFBhdGNoLmRlcHJlY2F0ZWRfcG9ydCk6CisgICAgICAgIChXZWJLaXRQYXRjaC5oYW5k
bGVfZ2xvYmFsX29wdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2Nr
dG9vbC5weToKKyAgICAgICAgKE1vY2tUb29sLl9faW5pdF9fKToKKyAgICAgICAgKE1vY2tUb29s
LmRlcHJlY2F0ZWRfcG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2J1aWxkLnB5OgorICAgICAgICAoQnVpbGQuYnVpbGQpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5OgorICAgICAgICAoQ2hlY2tTdHlsZS5ydW4p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHk6CisgICAg
ICAgIChDb21taXQuX2NoZWNrX3Rlc3RfZXhwZWN0YXRpb25zKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weToKKyAgICAgICAgKFByZXBh
cmVDaGFuZ2VMb2cucnVuKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
cHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weToKKyAgICAgICAgKFByZXBhcmVDaGFuZ2VMb2dG
b3JSZXZlcnQucnVuKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVu
dGVzdHMucHk6CisgICAgICAgIChSdW5UZXN0cy5ydW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0c191bml0dGVzdC5weToKKyAgICAgICAgKFJ1blRlc3Rz
VGVzdC50ZXN0X3dlYmtpdF9ydW5fdW5pdF90ZXN0cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5OgorICAgICAgICAoU3RlcHNUZXN0LnRl
c3RfcnVudGVzdHNfYXJncyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L3VwZGF0ZS5weToKKyAgICAgICAgKFVwZGF0ZS5fdXBkYXRlX2NvbW1hbmQpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVfdW5pdHRlc3QucHk6CisgICAgICAg
IChVcGRhdGVUZXN0LnRlc3RfdXBkYXRlX2NvbW1hbmRfbm9uX2ludGVyYWN0aXZlKToKKyAgICAg
ICAgKFVwZGF0ZVRlc3QudGVzdF91cGRhdGVfY29tbWFuZF9pbnRlcmFjdGl2ZSk6CisKIDIwMTMt
MTAtMTkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZlB0
cjo6cmVsZWFzZU5vbk51bGwoKSBpbmNvcnJlY3RseSBpbmNyZW1lbnRzIHRoZSByZWZjb3VudC4K
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lvbiAxNTc2NzcpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2luZyBjb3B5KQpAQCAt
NTIsNyArNTIsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgZmluZF9maWxlcwogZnJv
bSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtIGltcG9ydCBwYXRoCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9u
LndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24K
QEAgLTE0MTMsOSArMTQxMyw2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIyBUaGlz
IGlzIG92ZXJycmlkZW4gYnkgcG9ydHMgd2hpY2ggbmVlZCBhIGZsYWcgcGFzc2VkIHRvIHNjcmlw
dHMgdG8gZGlzdGluZ3Vpc2ggdGhlIHVzZSBvZiB0aGF0IHBvcnQuCiAgICAgICAgIHJldHVybiBO
b25lCiAKLSAgICBkZWYgdG9vbGluZ19mbGFnKHNlbGYpOgotICAgICAgICByZXR1cm4gIi0tcG9y
dD0lcyVzIiAlIChzZWxmLnBvcnRfbmFtZSwgJy13azInIGlmIHNlbGYuZ2V0X29wdGlvbignd2Vi
a2l0X3Rlc3RfcnVubmVyJykgZWxzZSAnJykKLQogICAgICMgVGhpcyBpcyBtb2RlbGVkIGFmdGVy
IHdlYmtpdGRpcnMucG0gYXJndW1lbnRzRm9yQ29uZmlndXJhdGlvbigpIGZyb20gb2xkLXJ1bi13
ZWJraXQtdGVzdHMKICAgICBkZWYgX2FyZ3VtZW50c19mb3JfY29uZmlndXJhdGlvbihzZWxmKToK
ICAgICAgICAgY29uZmlnX2FyZ3MgPSBbXQpAQCAtMTUzOCw1MyArMTUzNSw2IEBAIGNsYXNzIFBv
cnQob2JqZWN0KToKICAgICAgICAgIyBCeSBjdXJyZW50IGNvbnZlbnRpb24sIHRoZSBXZWJLaXQy
IG5hbWUgaXMgYWx3YXlzIG1hYy13azIsIHdpbi13azIsIG5vdCBtYWMtbGVvcGFyZC13azIsIGV0
YywKICAgICAgICAgcmV0dXJuICIlcy13azIiICUgc2VsZi5wb3J0X25hbWUKIAotICAgICMgV2Ug
bWlnaHQgbmVlZCB0byBwYXNzIHNjbSBpbnRvIHRoaXMgZnVuY3Rpb24gZm9yIHNjbS5jaGVja291
dF9yb290Ci0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBzY3JpcHRfc2hlbGxfY29tbWFuZChz
Y3JpcHRfbmFtZSk6Ci0gICAgICAgIHNjcmlwdF9wYXRoID0gb3MucGF0aC5qb2luKCJUb29scyIs
ICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpCi0gICAgICAgIHJldHVybiBFeGVjdXRpdmUuc2hlbGxf
Y29tbWFuZF9mb3Jfc2NyaXB0KHNjcmlwdF9wYXRoKQotCi0gICAgZGVmIG1ha2VfYXJncyhzZWxm
KToKLSAgICAgICAgYXJncyA9ICItLW1ha2VhcmdzPVwiLWolc1wiIiAlIHNlbGYuX2V4ZWN1dGl2
ZS5jcHVfY291bnQoKQotICAgICAgICBpZiAiTUFLRUZMQUdTIiBpbiBvcy5lbnZpcm9uOgotICAg
ICAgICAgICAgYXJncyA9ICItLW1ha2VhcmdzPVwiJXNcIiIgJSBvcy5lbnZpcm9uWyJNQUtFRkxB
R1MiXQotICAgICAgICByZXR1cm4gYXJncwotCi0gICAgZGVmIHVwZGF0ZV93ZWJraXRfY29tbWFu
ZChzZWxmLCBub25faW50ZXJhY3RpdmU9RmFsc2UpOgotICAgICAgICByZXR1cm4gc2VsZi5zY3Jp
cHRfc2hlbGxfY29tbWFuZCgidXBkYXRlLXdlYmtpdCIpCi0KLSAgICBkZWYgY2hlY2tfd2Via2l0
X3N0eWxlX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnNjcmlwdF9zaGVsbF9j
b21tYW5kKCJjaGVjay13ZWJraXQtc3R5bGUiKQotCi0gICAgZGVmIHByZXBhcmVfY2hhbmdlbG9n
X2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnNjcmlwdF9zaGVsbF9jb21tYW5k
KCJwcmVwYXJlLUNoYW5nZUxvZyIpCi0KLSAgICBkZWYgYnVpbGRfd2Via2l0X2NvbW1hbmQoc2Vs
ZiwgYnVpbGRfc3R5bGU9Tm9uZSk6Ci0gICAgICAgIGNvbW1hbmQgPSBzZWxmLnNjcmlwdF9zaGVs
bF9jb21tYW5kKCJidWlsZC13ZWJraXQiKQotICAgICAgICBpZiBidWlsZF9zdHlsZSA9PSAiZGVi
dWciOgotICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQoIi0tZGVidWciKQotICAgICAgICBpZiBi
dWlsZF9zdHlsZSA9PSAicmVsZWFzZSI6Ci0gICAgICAgICAgICBjb21tYW5kLmFwcGVuZCgiLS1y
ZWxlYXNlIikKLSAgICAgICAgcmV0dXJuIGNvbW1hbmQKLQotICAgIGRlZiBydW5famF2YXNjcmlw
dGNvcmVfdGVzdHNfY29tbWFuZChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc2NyaXB0X3No
ZWxsX2NvbW1hbmQoInJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyIpCi0KLSAgICBkZWYgcnVuX3dl
YmtpdF91bml0X3Rlc3RzX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAg
ICBkZWYgcnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKHNlbGYpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLXdlYmtpdC10ZXN0cyIpCi0KLSAgICBkZWYgcnVu
X3B5dGhvbl91bml0dGVzdHNfY29tbWFuZChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc2Ny
aXB0X3NoZWxsX2NvbW1hbmQoInRlc3Qtd2Via2l0cHkiKQotCi0gICAgZGVmIHJ1bl9wZXJsX3Vu
aXR0ZXN0c19jb21tYW5kKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zY3JpcHRfc2hlbGxf
Y29tbWFuZCgidGVzdC13ZWJraXRwZXJsIikKLQotICAgIGRlZiBydW5fYmluZGluZ3NfdGVzdHNf
Y29tbWFuZChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc2NyaXB0X3NoZWxsX2NvbW1hbmQo
InJ1bi1iaW5kaW5ncy10ZXN0cyIpCi0KIAogY2xhc3MgVmlydHVhbFRlc3RTdWl0ZShvYmplY3Qp
OgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBiYXNlLCBhcmdzLCB0ZXN0cz1Ob25lKToK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZV91bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDYzLDEyICs0NjMsNiBAQCBjbGFzcyBQb3J0VGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChvcHRp
b25zPW9wdHBhcnNlLlZhbHVlcyh7J2J1aWxkX2RpcmVjdG9yeSc6ICcvbXktYnVpbGQtZGlyZWN0
b3J5Lyd9KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9idWlsZF9wYXRoKCksICcv
bXktYnVpbGQtZGlyZWN0b3J5L1JlbGVhc2UnKQogCi0gICAgZGVmIHRlc3RfYnVpbGRfd2Via2l0
X2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5idWlsZF93ZWJraXRfY29tbWFuZCgpLCBbIlRvb2xzL1Nj
cmlwdHMvYnVpbGQtd2Via2l0Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5idWls
ZF93ZWJraXRfY29tbWFuZCgicmVsZWFzZSIpLCBbIlRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0
IiwgIi0tcmVsZWFzZSJdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuYnVpbGRfd2Vi
a2l0X2NvbW1hbmQoImRlYnVnIiksIFsiVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQiLCAiLS1k
ZWJ1ZyJdKQotCiAKIGNsYXNzIE5hdHVyYWxDb21wYXJlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgZGVmIHNldFVwKHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2VmbF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZWZsX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZWZsX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw2
IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXIKIGZyb20gd2Via2l0
cHkucG9ydC5lZmwgaW1wb3J0IEVmbFBvcnQKIGZyb20gd2Via2l0cHkucG9ydC5wdWxzZWF1ZGlv
X3Nhbml0aXplcl9tb2NrIGltcG9ydCBQdWxzZUF1ZGlvU2FuaXRpemVyTW9jawogZnJvbSB3ZWJr
aXRweS5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCi1mcm9tIHdlYmtpdHB5LnBvcnQuYmFzZSBp
bXBvcnQgUG9ydAotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9u
cwogCiAKIGNsYXNzIEVmbFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKQEAg
LTUxLDMzICs0OSw2IEBAIGNsYXNzIEVmbFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3QK
ICAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1Njcmlw
dHMvcnVuLWxhdW5jaGVyJywgJy0tcmVsZWFzZScsICctLWVmbCcsICdmaWxlOi8vdGVzdC5odG1s
J10sIGN3ZD0vbW9jay1jaGVja291dFxuIgogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0
X291dHB1dHMoc2VsZiwgcG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlLCBbInRlc3QuaHRtbCJd
LCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCiAKLSAgICBkZWYgdGVzdF9jb21tYW5kcyhz
ZWxmKToKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0iZWZsIikKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnRvb2xpbmdfZmxhZygpLCAiLS1wb3J0PWVmbCIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC51cGRhdGVfd2Via2l0X2NvbW1hbmQoKSwg
UG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidXBkYXRlLXdlYmtpdCIpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBvcnQuY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoKSwgUG9ydC5zY3Jp
cHRfc2hlbGxfY29tbWFuZCgiY2hlY2std2Via2l0LXN0eWxlIikpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocG9ydC5wcmVwYXJlX2NoYW5nZWxvZ19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3No
ZWxsX2NvbW1hbmQoInByZXBhcmUtQ2hhbmdlTG9nIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5idWlsZF93ZWJraXRfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5k
KCJidWlsZC13ZWJraXQiKSArIFsiLS1lZmwiLCAiLS11cGRhdGUtZWZsIiwgIi0tbm8td2Via2l0
MiIsIHBvcnQubWFrZV9hcmdzKCldKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVu
X2phdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFu
ZCgicnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cG9ydC5ydW5fd2Via2l0X3VuaXRfdGVzdHNfY29tbWFuZCgpLCBOb25lKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBvcnQucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0
X3NoZWxsX2NvbW1hbmQoInJ1bi13ZWJraXQtdGVzdHMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0LnJ1bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hl
bGxfY29tbWFuZCgidGVzdC13ZWJraXRweSIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQucnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFu
ZCgidGVzdC13ZWJraXRwZXJsIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5f
YmluZGluZ3NfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4t
YmluZGluZ3MtdGVzdHMiKSkKLQotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9u
YW1lPSJlZmwiLCBvcHRpb25zPU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj1UcnVlKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnRvb2xpbmdfZmxhZygpLCAiLS1wb3J0PWVm
bC13azIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQudXBkYXRlX3dlYmtpdF9jb21t
YW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInVwZGF0ZS13ZWJraXQiKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmNoZWNrX3dlYmtpdF9zdHlsZV9jb21tYW5kKCksIFBv
cnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImNoZWNrLXdlYmtpdC1zdHlsZSIpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBvcnQucHJlcGFyZV9jaGFuZ2Vsb2dfY29tbWFuZCgpLCBQb3J0LnNj
cmlwdF9zaGVsbF9jb21tYW5kKCJwcmVwYXJlLUNoYW5nZUxvZyIpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBvcnQuYnVpbGRfd2Via2l0X2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxf
Y29tbWFuZCgiYnVpbGQtd2Via2l0IikgKyBbIi0tZWZsIiwgIi0tdXBkYXRlLWVmbCIsICItLW5v
LXdlYmtpdDEiLCBwb3J0Lm1ha2VfYXJncygpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
b3J0LnJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxs
X2NvbW1hbmQoInJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyIpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBvcnQucnVuX3dlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQoKSwgTm9uZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpLCBQb3J0
LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4td2Via2l0LXRlc3RzIikpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocG9ydC5ydW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2Ny
aXB0X3NoZWxsX2NvbW1hbmQoInRlc3Qtd2Via2l0cHkiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0LnJ1bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxs
X2NvbW1hbmQoInRlc3Qtd2Via2l0cGVybCIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQucnVuX2JpbmRpbmdzX3Rlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFu
ZCgicnVuLWJpbmRpbmdzLXRlc3RzIikpCi0KICAgICBkZWYgdGVzdF9nZXRfY3Jhc2hfbG9nKHNl
bGYpOgogICAgICAgICAjIFRoaXMgZnVuY3Rpb24gdGVzdGVkIGluIGxpbnV4X2dldF9jcmFzaF9s
b2dfdW5pdHRlc3QucHkKICAgICAgICAgcGFzcwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2d0a191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvZ3RrX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvZ3RrX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXIKIGZyb20g
d2Via2l0cHkucG9ydC5ndGsgaW1wb3J0IEd0a1BvcnQKIGZyb20gd2Via2l0cHkucG9ydC5wdWxz
ZWF1ZGlvX3Nhbml0aXplcl9tb2NrIGltcG9ydCBQdWxzZUF1ZGlvU2FuaXRpemVyTW9jawogZnJv
bSB3ZWJraXRweS5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCi1mcm9tIHdlYmtpdHB5LnBvcnQu
YmFzZSBpbXBvcnQgUG9ydAogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1v
Y2sKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIApAQCAt
ODUsMzAgKzg0LDMgQEAgY2xhc3MgR3RrUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdAog
ICAgIGRlZiB0ZXN0X2dldF9jcmFzaF9sb2coc2VsZik6CiAgICAgICAgICMgVGhpcyBmdW5jdGlv
biB0ZXN0ZWQgaW4gbGludXhfZ2V0X2NyYXNoX2xvZ191bml0dGVzdC5weQogICAgICAgICBwYXNz
Ci0KLSAgICBkZWYgdGVzdF9jb21tYW5kcyhzZWxmKToKLSAgICAgICAgcG9ydCA9IHNlbGYubWFr
ZV9wb3J0KHBvcnRfbmFtZT0iZ3RrIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnRv
b2xpbmdfZmxhZygpLCAiLS1wb3J0PWd0ayIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9y
dC51cGRhdGVfd2Via2l0X2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidXBk
YXRlLXdlYmtpdCIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuY2hlY2tfd2Via2l0
X3N0eWxlX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgiY2hlY2std2Via2l0
LXN0eWxlIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wcmVwYXJlX2NoYW5nZWxv
Z19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInByZXBhcmUtQ2hhbmdlTG9n
IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5idWlsZF93ZWJraXRfY29tbWFuZCgp
LCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJidWlsZC13ZWJraXQiKSArIFsiLS1ndGsiLCAi
LS11cGRhdGUtZ3RrIiwgIi0tbm8td2Via2l0MiIsIHBvcnQubWFrZV9hcmdzKCldKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX2phdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQo
KSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzIikp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fd2Via2l0X3VuaXRfdGVzdHNfY29t
bWFuZCgpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3dlYmtpdF90
ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi13ZWJraXQtdGVz
dHMiKSArIFsiLS1ndGsiXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9weXRo
b25fdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidGVzdC13
ZWJraXRweSIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3BlcmxfdW5pdHRl
c3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidGVzdC13ZWJraXRwZXJs
IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fYmluZGluZ3NfdGVzdHNfY29t
bWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4tYmluZGluZ3MtdGVzdHMiKSkK
LQotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSJndGsiLCBvcHRpb25z
PU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj1UcnVlKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwb3J0LnRvb2xpbmdfZmxhZygpLCAiLS1wb3J0PWd0ay13azIiKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBvcnQudXBkYXRlX3dlYmtpdF9jb21tYW5kKCksIFBvcnQuc2NyaXB0
X3NoZWxsX2NvbW1hbmQoInVwZGF0ZS13ZWJraXQiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwb3J0LmNoZWNrX3dlYmtpdF9zdHlsZV9jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2Nv
bW1hbmQoImNoZWNrLXdlYmtpdC1zdHlsZSIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQucHJlcGFyZV9jaGFuZ2Vsb2dfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5k
KCJwcmVwYXJlLUNoYW5nZUxvZyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuYnVp
bGRfd2Via2l0X2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgiYnVpbGQtd2Vi
a2l0IikgKyBbIi0tZ3RrIiwgIi0tdXBkYXRlLWd0ayIsICItLW5vLXdlYmtpdDEiLCBwb3J0Lm1h
a2VfYXJncygpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9qYXZhc2NyaXB0
Y29yZV90ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi1qYXZh
c2NyaXB0Y29yZS10ZXN0cyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3dl
YmtpdF91bml0X3Rlc3RzX2NvbW1hbmQoKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwb3J0LnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21t
YW5kKCJydW4td2Via2l0LXRlc3RzIikgKyBbIi0tZ3RrIiwgIi0yIl0pCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocG9ydC5ydW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2Ny
aXB0X3NoZWxsX2NvbW1hbmQoInRlc3Qtd2Via2l0cHkiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0LnJ1bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxs
X2NvbW1hbmQoInRlc3Qtd2Via2l0cGVybCIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQucnVuX2JpbmRpbmdzX3Rlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFu
ZCgicnVuLWJpbmRpbmdzLXRlc3RzIikpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvbWFjX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9tYWNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9tYWNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0ICsy
NiwxMyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAorZnJvbSB3ZWJraXRweS5w
b3J0Lm1hYyBpbXBvcnQgTWFjUG9ydAorZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBwb3J0X3Rl
c3RjYXNlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9y
dCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1
cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBv
cnQgTW9ja09wdGlvbnMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9j
ayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZSwgTW9ja0V4ZWN1dGl2ZTIsIE1vY2tQcm9jZXNzLCBTY3Jp
cHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBv
cnQgTW9ja1N5c3RlbUhvc3QKLWZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2Fz
ZQotZnJvbSB3ZWJraXRweS5wb3J0LmJhc2UgaW1wb3J0IFBvcnQKLWZyb20gd2Via2l0cHkucG9y
dC5tYWMgaW1wb3J0IE1hY1BvcnQKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQg
TW9ja09wdGlvbnMKIAogCiBjbGFzcyBNYWNUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNl
KToKQEAgLTI1NiwzMCArMjU1LDMgQEAgamF2YS8KICAgICAgICAgcG9ydC5fcnVuX3NjcmlwdCA9
IHJ1bl9zY3JpcHQKICAgICAgICAgcG9ydC5fYnVpbGRfZHJpdmVyKCkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWxmLmFyZ3MsIFtdKQotCi0gICAgZGVmIHRlc3RfY29tbWFuZHMoc2VsZik6
Ci0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9Im1hYyIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC50b29saW5nX2ZsYWcoKSwgIi0tcG9ydD1tYWMiKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQudXBkYXRlX3dlYmtpdF9jb21tYW5kKCksIFBvcnQu
c2NyaXB0X3NoZWxsX2NvbW1hbmQoInVwZGF0ZS13ZWJraXQiKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwb3J0LmNoZWNrX3dlYmtpdF9zdHlsZV9jb21tYW5kKCksIFBvcnQuc2NyaXB0X3No
ZWxsX2NvbW1hbmQoImNoZWNrLXdlYmtpdC1zdHlsZSIpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBvcnQucHJlcGFyZV9jaGFuZ2Vsb2dfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9j
b21tYW5kKCJwcmVwYXJlLUNoYW5nZUxvZyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQuYnVpbGRfd2Via2l0X2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgiYnVp
bGQtd2Via2l0IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5famF2YXNjcmlw
dGNvcmVfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4tamF2
YXNjcmlwdGNvcmUtdGVzdHMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl93
ZWJraXRfdW5pdF90ZXN0c19jb21tYW5kKCksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5ydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29t
bWFuZCgicnVuLXdlYmtpdC10ZXN0cyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQu
cnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5k
KCJ0ZXN0LXdlYmtpdHB5IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fcGVy
bF91bml0dGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ0ZXN0LXdl
YmtpdHBlcmwiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9iaW5kaW5nc190
ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi1iaW5kaW5ncy10
ZXN0cyIpKQotCi0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9Im1hYyIs
IG9wdGlvbnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBvcnQudG9vbGluZ19mbGFnKCksICItLXBvcnQ9bWFjLXdrMiIpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC51cGRhdGVfd2Via2l0X2NvbW1hbmQoKSwgUG9y
dC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidXBkYXRlLXdlYmtpdCIpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBvcnQuY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRf
c2hlbGxfY29tbWFuZCgiY2hlY2std2Via2l0LXN0eWxlIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocG9ydC5wcmVwYXJlX2NoYW5nZWxvZ19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxs
X2NvbW1hbmQoInByZXBhcmUtQ2hhbmdlTG9nIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cG9ydC5idWlsZF93ZWJraXRfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJi
dWlsZC13ZWJraXQiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9qYXZhc2Ny
aXB0Y29yZV90ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi1q
YXZhc2NyaXB0Y29yZS10ZXN0cyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVu
X3dlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQoKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0LnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9j
b21tYW5kKCJydW4td2Via2l0LXRlc3RzIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9y
dC5ydW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1h
bmQoInRlc3Qtd2Via2l0cHkiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9w
ZXJsX3VuaXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInRlc3Qt
d2Via2l0cGVybCIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX2JpbmRpbmdz
X3Rlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWJpbmRpbmdz
LXRlc3RzIikpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQkocmV2aXNpb24g
MTU3Njc3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTUzNywzOSArNTM3LDYgQEAgY2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgICAg
ICAgICBWaXJ0dWFsVGVzdFN1aXRlKCd2aXJ0dWFsL3NraXBwZWQnLCAnZmFpbHVyZXMvZXhwZWN0
ZWQnLCBbJy0tdmlydHVhbC1hcmcyJ10pLAogICAgICAgICBdCiAKLSAgICBkZWYgbWFrZV9hcmdz
KHNlbGYpOgotICAgICAgICByZXR1cm4gJy0tbWFrZWFyZ3M9Ii1qNCInCi0KLSAgICBkZWYgY2hl
Y2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBbIm1vY2stY2hl
Y2std2Via2l0LXN0eWxlIl0KLQotICAgIGRlZiB1cGRhdGVfd2Via2l0X2NvbW1hbmQoc2VsZiwg
bm9uX2ludGVyYWN0aXZlPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIFsibW9jay11cGRhdGUtd2Vi
a2l0Il0KLQotICAgIGRlZiBidWlsZF93ZWJraXRfY29tbWFuZChzZWxmLCBidWlsZF9zdHlsZT1O
b25lKToKLSAgICAgICAgcmV0dXJuIFsibW9jay1idWlsZC13ZWJraXQiXQotCi0gICAgZGVmIHBy
ZXBhcmVfY2hhbmdlbG9nX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBbJ21vY2stcHJl
cGFyZS1DaGFuZ2VMb2cnXQotCi0gICAgZGVmIHJ1bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQo
c2VsZik6Ci0gICAgICAgIHJldHVybiBbJ21vY2stdGVzdC13ZWJraXRweSddCi0KLSAgICBkZWYg
cnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBbJ21vY2st
dGVzdC13ZWJraXRwZXJsJ10KLQotICAgIGRlZiBydW5famF2YXNjcmlwdGNvcmVfdGVzdHNfY29t
bWFuZChzZWxmKToKLSAgICAgICAgcmV0dXJuIFsnbW9jay1ydW4tamF2YXNjcmlwdGNvcmUtdGVz
dHMnXQotCi0gICAgZGVmIHJ1bl93ZWJraXRfdW5pdF90ZXN0c19jb21tYW5kKHNlbGYpOgotICAg
ICAgICByZXR1cm4gWydtb2NrLXJ1bi13ZWJraXQtdW5pdC10ZXN0cyddCi0KLSAgICBkZWYgcnVu
X3dlYmtpdF90ZXN0c19jb21tYW5kKHNlbGYpOgotICAgICAgICByZXR1cm4gWydtb2NrLXJ1bi13
ZWJraXQtdGVzdHMnXQotCi0gICAgZGVmIHJ1bl9iaW5kaW5nc190ZXN0c19jb21tYW5kKHNlbGYp
OgotICAgICAgICByZXR1cm4gWydtb2NrLXJ1bi1iaW5kaW5ncy10ZXN0cyddCi0KIAogY2xhc3Mg
VGVzdERyaXZlcihEcml2ZXIpOgogICAgICIiIlRlc3QvRHVtbXkgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIER1bXBSZW5kZXJUcmVlIGludGVyZmFjZS4iIiIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9tYWluLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9tYWluLnB5CShyZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvbWFpbi5weQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEwIEBAIGZyb20gb3B0
cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiBpbXBvcnQgb3MKIGltcG9ydCB0aHJlYWRpbmcKIAor
ZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGltcG9ydCBEZXByZWNhdGVkUG9ydAog
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAogZnJvbSB3ZWJraXRweS5jb21t
b24ubmV0LmlyYyBpbXBvcnQgaXJjcHJveHkKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5zdGF0
dXNzZXJ2ZXIgaW1wb3J0IFN0YXR1c1NlcnZlcgotZnJvbSB3ZWJraXRweS5wb3J0LmZhY3Rvcnkg
aW1wb3J0IFBvcnRGYWN0b3J5CiBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBp
bXBvcnQgTXVsdGlDb21tYW5kVG9vbAogZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBjb21tYW5k
cwogCkBAIC02MCwxMCArNjAsMTAgQEAgY2xhc3MgV2ViS2l0UGF0Y2goTXVsdGlDb21tYW5kVG9v
bCwgSG9zdAogCiAgICAgICAgIHNlbGYud2FrZXVwX2V2ZW50ID0gdGhyZWFkaW5nLkV2ZW50KCkK
ICAgICAgICAgc2VsZi5faXJjID0gTm9uZQotICAgICAgICBzZWxmLl9wb3J0ID0gTm9uZQorICAg
ICAgICBzZWxmLl9kZXByZWNhdGVkX3BvcnQgPSBOb25lCiAKLSAgICBkZWYgcG9ydChzZWxmKToK
LSAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQKKyAgICBkZWYgZGVwcmVjYXRlZF9wb3J0KHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi5fZGVwcmVjYXRlZF9wb3J0CiAKICAgICBkZWYgcGF0aChz
ZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKQEAgLTk5LDcgKzk5LDcgQEAgY2xhc3Mg
V2ViS2l0UGF0Y2goTXVsdGlDb21tYW5kVG9vbCwgSG9zdAogICAgICAgICBpZiBvcHRpb25zLmly
Y19wYXNzd29yZDoKICAgICAgICAgICAgIHNlbGYuaXJjX3Bhc3N3b3JkID0gb3B0aW9ucy5pcmNf
cGFzc3dvcmQKICAgICAgICAgIyBJZiBvcHRpb25zLnBvcnQgaXMgTm9uZSwgd2UnbGwgZ2V0IHRo
ZSBkZWZhdWx0IHBvcnQgZm9yIHRoaXMgcGxhdGZvcm0uCi0gICAgICAgIHNlbGYuX3BvcnQgPSBz
ZWxmLnBvcnRfZmFjdG9yeS5nZXQob3B0aW9ucy5wb3J0KQorICAgICAgICBzZWxmLl9kZXByZWNh
dGVkX3BvcnQgPSBEZXByZWNhdGVkUG9ydC5wb3J0KG9wdGlvbnMucG9ydCkKIAogICAgIGRlZiBz
aG91bGRfZXhlY3V0ZV9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgogICAgICAgICBpZiBjb21tYW5k
LnJlcXVpcmVzX2xvY2FsX2NvbW1pdHMgYW5kIG5vdCBzZWxmLnNjbSgpLnN1cHBvcnRzX2xvY2Fs
X2NvbW1pdHMoKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkJ
KHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9v
bC5weQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsOSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5ob3N0X21vY2sgaW1wb3J0IE1vCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3Qu
YnVpbGRib3RfbW9jayBpbXBvcnQgTW9ja0J1aWxkQm90CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5u
ZXQuc3RhdHVzc2VydmVyX21vY2sgaW1wb3J0IE1vY2tTdGF0dXNTZXJ2ZXIKIGZyb20gd2Via2l0
cHkuY29tbW9uLm5ldC5pcmMuaXJjX21vY2sgaW1wb3J0IE1vY2tJUkMKLWZyb20gd2Via2l0cHku
cG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydAorCisjIEZJWE1FOiBPbGQtc3R5bGUgIlBvcnRzIiBu
ZWVkIHRvIGRpZSBhbmQgYmUgcmVwbGFjZWQgYnkgbW9kZXJuIGxheW91dF90ZXN0cy5wb3J0IHdo
aWNoIG5lZWRzIHRvIG1vdmUgdG8gY29tbW9uLgorZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmln
LnBvcnRzX21vY2sgaW1wb3J0IE1vY2tQb3J0CiAKIAogIyBGSVhNRTogV2Ugc2hvdWxkIGp1c3Qg
cmVwbGFjZSB0aGlzIHdpdGggb3B0cGFyc2UuVmFsdWVzKGRlZmF1bHQ9a3dhcmdzKQpAQCAtNjIs
MTYgKzY0LDE1IEBAIGNsYXNzIE1vY2tUb29sKE1vY2tIb3N0KToKICAgICBkZWYgX19pbml0X18o
c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgTW9ja0hvc3QuX19pbml0X18oc2VsZiwg
KmFyZ3MsICoqa3dhcmdzKQogCi0gICAgICAgIHNlbGYuX3BvcnQgPSBUZXN0UG9ydChzZWxmKQot
ICAgICAgICBzZWxmLl9wb3J0Lm5hbWUgPSBsYW1iZGE6ICJNb2NrUG9ydCIKKyAgICAgICAgc2Vs
Zi5fZGVwcmVjYXRlZF9wb3J0ID0gTW9ja1BvcnQoKQogICAgICAgICBzZWxmLnN0YXR1c19zZXJ2
ZXIgPSBNb2NrU3RhdHVzU2VydmVyKCkKIAogICAgICAgICBzZWxmLl9pcmMgPSBOb25lCiAgICAg
ICAgIHNlbGYuaXJjX3Bhc3N3b3JkID0gIk1PQ0sgaXJjIHBhc3N3b3JkIgogICAgICAgICBzZWxm
Lndha2V1cF9ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCiAKLSAgICBkZWYgcG9ydChzZWxmKToK
LSAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQKKyAgICBkZWYgZGVwcmVjYXRlZF9wb3J0KHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi5fZGVwcmVjYXRlZF9wb3J0CiAKICAgICBkZWYgcGF0aChz
ZWxmKToKICAgICAgICAgcmV0dXJuICJlY2hvIgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyLnB5CShyZXZpc2lvbiAxNTc2
NzcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVy
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEZsYWt5VGVzdFJlcG9y
dGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3Rvb2wgPSB0b29sCiAgICAgICAgIHNlbGYuX2Jv
dF9uYW1lID0gYm90X25hbWUKICAgICAgICAgIyBGSVhNRTogVXNlIHRoZSByZWFsIHBvcnQgb2Jq
ZWN0Ci0gICAgICAgIHNlbGYuX2JvdF9pbmZvID0gQm90SW5mbyh0b29sLCB0b29sLnBvcnQoKS5u
YW1lKCkpCisgICAgICAgIHNlbGYuX2JvdF9pbmZvID0gQm90SW5mbyh0b29sLCB0b29sLmRlcHJl
Y2F0ZWRfcG9ydCgpLm5hbWUoKSkKIAogICAgIGRlZiBfYXV0aG9yX2VtYWlsc19mb3JfdGVzdChz
ZWxmLCBmbGFreV90ZXN0KToKICAgICAgICAgdGVzdF9wYXRoID0gcGF0aF9mb3JfbGF5b3V0X3Rl
c3QoZmxha3lfdGVzdCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJj
X2NvbW1hbmQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Jv
dC9pcmNfY29tbWFuZC5weQkocmV2aXNpb24gMTU3Njc3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIx
Niw3IEBAIGNsYXNzIFJvbGxvdXQoSVJDQ29tbWFuZCk6CiAKICAgICBkZWYgX3VwZGF0ZV93b3Jr
aW5nX2NvcHkoc2VsZiwgdG9vbCk6CiAgICAgICAgIHRvb2wuc2NtKCkuZGlzY2FyZF9sb2NhbF9j
aGFuZ2VzKCkKLSAgICAgICAgdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHRv
b2wucG9ydCgpLnVwZGF0ZV93ZWJraXRfY29tbWFuZCgpLCBxdWlldD1UcnVlLCBjd2Q9dG9vbC5z
Y20oKS5jaGVja291dF9yb290KQorICAgICAgICB0b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93
X2lmX2ZhaWwodG9vbC5kZXByZWNhdGVkX3BvcnQoKS51cGRhdGVfd2Via2l0X2NvbW1hbmQoKSwg
cXVpZXQ9VHJ1ZSwgY3dkPXRvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkKIAogICAgIGRlZiBfY2hl
Y2tfZGlmZl9mYWlsdXJlKHNlbGYsIGVycm9yX2xvZywgdG9vbCk6CiAgICAgICAgIGlmIG5vdCBl
cnJvcl9sb2c6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93
bmxvYWRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTc2NzcpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBNT0NLIHJ1bl9hbmRfdGhyb3dfaWZf
ZmFpbDogWydtb2NrLXRlc3QtCiBSdW5uaW5nIFBlcmwgdW5pdCB0ZXN0cwogTU9DSyBydW5fYW5k
X3Rocm93X2lmX2ZhaWw6IFsnbW9jay10ZXN0LXdlYmtpdHBlcmwnXSwgY3dkPS9tb2NrLWNoZWNr
b3V0CiBSdW5uaW5nIEphdmFTY3JpcHRDb3JlIHRlc3RzCi1NT0NLIHJ1bl9hbmRfdGhyb3dfaWZf
ZmFpbDogWydtb2NrLXJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyddLCBjd2Q9L21vY2stY2hlY2tv
dXQKK01PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ21vY2stcnVuLWphdmFjcmlwdGNvcmUt
dGVzdHMnXSwgY3dkPS9tb2NrLWNoZWNrb3V0CiBSdW5uaW5nIGJpbmRpbmdzIGdlbmVyYXRpb24g
dGVzdHMKIE1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ21vY2stcnVuLWJpbmRpbmdzLXRl
c3RzJ10sIGN3ZD0vbW9jay1jaGVja291dAogUnVubmluZyBXZWJLaXQgdW5pdCB0ZXN0cwpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3Rl
bS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
ZWFybHl3YXJuaW5nc3lzdGVtLnB5CShyZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw3IEBAIGltcG9ydCBsb2dnaW5nCiBmcm9tIG9wdHBhcnNlIGltcG9y
dCBtYWtlX29wdGlvbgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBp
bXBvcnQgQ29tbWl0dGVyTGlzdAorZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGlt
cG9ydCBEZXByZWNhdGVkUG9ydAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0
ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmVhcmx5d2Fybmlu
Z3N5c3RlbXRhc2sgaW1wb3J0IEVhcmx5V2FybmluZ1N5c3RlbVRhc2ssIEVhcmx5V2FybmluZ1N5
c3RlbVRhc2tEZWxlZ2F0ZQpAQCAtMTAyLDcgKzEwMyw3IEBAIGNsYXNzIEFic3RyYWN0RWFybHlX
YXJuaW5nU3lzdGVtKEFic3RyYWMKICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQogCiAgICAgZGVm
IHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgotICAgICAgICBzZWxmLnJ1bl93ZWJraXRfcGF0
Y2goY29tbWFuZCArIFtzZWxmLl9wb3J0LnRvb2xpbmdfZmxhZygpXSkKKyAgICAgICAgc2VsZi5y
dW5fd2Via2l0X3BhdGNoKGNvbW1hbmQgKyBbc2VsZi5fZGVwcmVjYXRlZF9wb3J0LmZsYWcoKV0p
CiAKICAgICBkZWYgY29tbWFuZF9wYXNzZWQoc2VsZiwgbWVzc2FnZSwgcGF0Y2gpOgogICAgICAg
ICBwYXNzCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVz
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9x
dWV1ZXMucHkJKHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9xdWV1ZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgZnJv
bSBvcHRwYXJzZSBpbXBvcnQgbWFrZV9vcHRpb24KIGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmlu
Z0lPCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJ2YWxpZGF0b3IgaW1w
b3J0IENvbW1pdHRlclZhbGlkYXRvcgorZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRz
IGltcG9ydCBEZXByZWNhdGVkUG9ydAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxh
IGltcG9ydCBBdHRhY2htZW50CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuc3RhdHVzc2VydmVy
IGltcG9ydCBTdGF0dXNTZXJ2ZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW1wb3J0IFNjcmlwdEVycm9yCkBAIC0yNzIsOSArMjczLDExIEBAIGNsYXNzIFBhdGNoUHJv
Y2Vzc2luZ1F1ZXVlKEFic3RyYWN0UGF0Y2gKICAgICAgICAgQWJzdHJhY3RQYXRjaFF1ZXVlLmJl
Z2luX3dvcmtfcXVldWUoc2VsZikKICAgICAgICAgaWYgbm90IHNlbGYucG9ydF9uYW1lOgogICAg
ICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX3BvcnQgPSBzZWxmLl90b29sLnBvcnRfZmFj
dG9yeS5nZXQoc2VsZi5fbmV3X3BvcnRfbmFtZV9mcm9tX29sZChzZWxmLnBvcnRfbmFtZSwgc2Vs
Zi5fdG9vbC5wbGF0Zm9ybSkpCisgICAgICAgICMgRklYTUU6IFRoaXMgaXMgb25seSB1c2VkIGZv
ciBzZWxmLl9kZXByZWNhdGVkX3BvcnQuZmxhZygpCisgICAgICAgIHNlbGYuX2RlcHJlY2F0ZWRf
cG9ydCA9IERlcHJlY2F0ZWRQb3J0LnBvcnQoc2VsZi5wb3J0X25hbWUpCiAgICAgICAgICMgRklY
TUU6IFRoaXMgdmlvbGF0ZXMgYWJzdHJhY3Rpb24KLSAgICAgICAgc2VsZi5fdG9vbC5fcG9ydCA9
IHNlbGYuX3BvcnQKKyAgICAgICAgc2VsZi5fdG9vbC5fZGVwcmVjYXRlZF9wb3J0ID0gc2VsZi5f
ZGVwcmVjYXRlZF9wb3J0CisgICAgICAgIHNlbGYuX3BvcnQgPSBzZWxmLl90b29sLnBvcnRfZmFj
dG9yeS5nZXQoc2VsZi5fbmV3X3BvcnRfbmFtZV9mcm9tX29sZChzZWxmLnBvcnRfbmFtZSwgc2Vs
Zi5fdG9vbC5wbGF0Zm9ybSkpCiAKICAgICBkZWYgX3VwbG9hZF9yZXN1bHRzX2FyY2hpdmVfZm9y
X3BhdGNoKHNlbGYsIHBhdGNoLCByZXN1bHRzX2FyY2hpdmVfemlwKToKICAgICAgICAgaWYgbm90
IHNlbGYuX3BvcnQ6CkBAIC0zNDcsNyArMzUwLDcgQEAgY2xhc3MgQ29tbWl0UXVldWUoUGF0Y2hQ
cm9jZXNzaW5nUXVldWUsCiAgICAgIyBDb21taXRRdWV1ZVRhc2tEZWxlZ2F0ZSBtZXRob2RzCiAK
ICAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6Ci0gICAgICAgIHNlbGYucnVuX3dl
YmtpdF9wYXRjaChjb21tYW5kICsgW3NlbGYuX3BvcnQudG9vbGluZ19mbGFnKCldKQorICAgICAg
ICBzZWxmLnJ1bl93ZWJraXRfcGF0Y2goY29tbWFuZCArIFtzZWxmLl9kZXByZWNhdGVkX3BvcnQu
ZmxhZygpXSkKIAogICAgIGRlZiBjb21tYW5kX3Bhc3NlZChzZWxmLCBtZXNzYWdlLCBwYXRjaCk6
CiAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMobWVzc2FnZSwgcGF0Y2g9cGF0Y2gpCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYnVpbGQucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2J1aWxkLnB5CShyZXZpc2lvbiAx
NTc2NzcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYnVpbGQucHkJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgQnVpbGQoQWJzdHJhY3RTdGVwKToK
ICAgICAgICAgZW52aXJvbm1lbnQuZGlzYWJsZV9nY2Nfc21hcnRxdW90ZXMoKQogICAgICAgICBl
bnYgPSBlbnZpcm9ubWVudC50b19kaWN0aW9uYXJ5KCkKIAotICAgICAgICBidWlsZF93ZWJraXRf
Y29tbWFuZCA9IHNlbGYuX3Rvb2wucG9ydCgpLmJ1aWxkX3dlYmtpdF9jb21tYW5kKGJ1aWxkX3N0
eWxlPWJ1aWxkX3N0eWxlKQorICAgICAgICBidWlsZF93ZWJraXRfY29tbWFuZCA9IHNlbGYuX3Rv
b2wuZGVwcmVjYXRlZF9wb3J0KCkuYnVpbGRfd2Via2l0X2NvbW1hbmQoYnVpbGRfc3R5bGU9YnVp
bGRfc3R5bGUpCiAgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZf
ZmFpbChidWlsZF93ZWJraXRfY29tbWFuZCwgc2VsZi5fb3B0aW9ucy5xdWlldCwKICAgICAgICAg
ICAgIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QsIGVudj1lbnYpCiAKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CShy
ZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hl
Y2tzdHlsZS5weQkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBDaGVja1N0
eWxlKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZChzZWxmLl9vcHRpb25z
LmNoZWNrX3N0eWxlX2ZpbHRlcikKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl90
b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5fdG9vbC5wb3J0KCkuY2hl
Y2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoKSArIGFyZ3MsIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNo
ZWNrb3V0X3Jvb3QpCisgICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Ro
cm93X2lmX2ZhaWwoc2VsZi5fdG9vbC5kZXByZWNhdGVkX3BvcnQoKS5jaGVja193ZWJraXRfc3R5
bGVfY29tbWFuZCgpICsgYXJncywgY3dkPXNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkK
ICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgogICAgICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHJlLXJh
aXNlIHRoZSBleGNlcHRpb24gaGVyZSB0byBoYXZlIHRoZQpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5CShyZXZpc2lvbiAxNTc2NzcpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC02MCw3ICs2MCw3IEBAIGNsYXNzIENvbW1pdChBYnN0cmFjdFN0ZXApOgogICAgICAgICBhcmdz
ID0gWyItLWRpZmYtZmlsZXMiXQogICAgICAgICBhcmdzLmV4dGVuZCh0ZXN0X2V4cGVjdGF0aW9u
c19maWxlcykKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUu
cnVuX2FuZF90aHJvd19pZl9mYWlsKHNlbGYuX3Rvb2wucG9ydCgpLmNoZWNrX3dlYmtpdF9zdHls
ZV9jb21tYW5kKCkgKyBhcmdzLCBjd2Q9c2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290KQor
ICAgICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHNl
bGYuX3Rvb2wuZGVwcmVjYXRlZF9wb3J0KCkuY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoKSAr
IGFyZ3MsIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAgICAgICAgIGV4Y2Vw
dCBTY3JpcHRFcnJvciwgZToKICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMubm9uX2ludGVy
YWN0aXZlOgogICAgICAgICAgICAgICAgIHJhaXNlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQkocmV2aXNpb24g
MTU3Njc3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFu
Z2Vsb2cucHkJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBjbGFzcyBQcmVwYXJl
Q2hhbmdlTG9nKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9u
cy51cGRhdGVfY2hhbmdlbG9nczoKICAgICAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBh
cmdzID0gc2VsZi5fdG9vbC5wb3J0KCkucHJlcGFyZV9jaGFuZ2Vsb2dfY29tbWFuZCgpCisgICAg
ICAgIGFyZ3MgPSBzZWxmLl90b29sLmRlcHJlY2F0ZWRfcG9ydCgpLnByZXBhcmVfY2hhbmdlbG9n
X2NvbW1hbmQoKQogICAgICAgICBpZiBzdGF0ZS5nZXQoImJ1Z19pZCIpOgogICAgICAgICAgICAg
YXJncy5hcHBlbmQoIi0tYnVnPSVzIiAlIHN0YXRlWyJidWdfaWQiXSkKICAgICAgICAgICAgIGFy
Z3MuYXBwZW5kKCItLWRlc2NyaXB0aW9uPSVzIiAlIHNlbGYuY2FjaGVkX2xvb2t1cChzdGF0ZSwg
J2J1Z190aXRsZScpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3By
ZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkJKHJldmlzaW9u
IDE1NzY3NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hh
bmdlbG9nZm9ycmV2ZXJ0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNz
IFByZXBhcmVDaGFuZ2VMb2dGb3JSZXZlcnQoQWJzdHJhY3QKIAogICAgIGRlZiBydW4oc2VsZiwg
c3RhdGUpOgogICAgICAgICAjIFRoaXMgY291bGQgbW92ZSB0byBwcmVwYXJlLUNoYW5nZUxvZyBi
eSBhZGRpbmcgYSAtLXJldmVydD0gb3B0aW9uLgotICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2
ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5fdG9vbC5wb3J0KCkucHJlcGFyZV9jaGFuZ2Vs
b2dfY29tbWFuZCgpLCBjd2Q9c2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290KQorICAgICAg
ICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5fdG9vbC5k
ZXByZWNhdGVkX3BvcnQoKS5wcmVwYXJlX2NoYW5nZWxvZ19jb21tYW5kKCksIGN3ZD1zZWxmLl90
b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYu
X3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQ9Tm9uZSkKICAg
ICAgICAgYnVnX3VybCA9IHNlbGYuX3Rvb2wuYnVncy5idWdfdXJsX2Zvcl9idWdfaWQoc3RhdGVb
ImJ1Z19pZCJdKSBpZiBzdGF0ZVsiYnVnX2lkIl0gZWxzZSBOb25lCiAgICAgICAgIG1lc3NhZ2Ug
PSBzZWxmLl9tZXNzYWdlX2Zvcl9yZXZlcnQoc3RhdGVbInJldmlzaW9uX2xpc3QiXSwgc3RhdGVb
InJlYXNvbiJdLCBidWdfdXJsKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3J1bnRlc3RzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9ydW50ZXN0cy5weQkocmV2aXNpb24gMTU3Njc3KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01NiwyMiAr
NTYsMjIgQEAgY2xhc3MgUnVuVGVzdHMoQWJzdHJhY3RTdGVwKToKICAgICAgICAgaWYgbm90IHNl
bGYuX29wdGlvbnMubm9uX2ludGVyYWN0aXZlOgogICAgICAgICAgICAgIyBGSVhNRTogV2Ugc2hv
dWxkIHRlYWNoIHRoZSBjb21taXQtcXVldWUgYW5kIHRoZSBFV1MgaG93IHRvIHJ1biB0aGVzZSB0
ZXN0cy4KIAotICAgICAgICAgICAgcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kID0gc2VsZi5fdG9v
bC5wb3J0KCkucnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFuZCgpCisgICAgICAgICAgICBweXRo
b25fdW5pdHRlc3RzX2NvbW1hbmQgPSBzZWxmLl90b29sLmRlcHJlY2F0ZWRfcG9ydCgpLnJ1bl9w
eXRob25fdW5pdHRlc3RzX2NvbW1hbmQoKQogICAgICAgICAgICAgaWYgcHl0aG9uX3VuaXR0ZXN0
c19jb21tYW5kOgogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiUnVubmluZyBQeXRob24gdW5p
dCB0ZXN0cyIpCiAgICAgICAgICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90
aHJvd19pZl9mYWlsKHB5dGhvbl91bml0dGVzdHNfY29tbWFuZCwgY3dkPXNlbGYuX3Rvb2wuc2Nt
KCkuY2hlY2tvdXRfcm9vdCkKIAotICAgICAgICAgICAgcGVybF91bml0dGVzdHNfY29tbWFuZCA9
IHNlbGYuX3Rvb2wucG9ydCgpLnJ1bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5kKCkKKyAgICAgICAg
ICAgIHBlcmxfdW5pdHRlc3RzX2NvbW1hbmQgPSBzZWxmLl90b29sLmRlcHJlY2F0ZWRfcG9ydCgp
LnJ1bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5kKCkKICAgICAgICAgICAgIGlmIHBlcmxfdW5pdHRl
c3RzX2NvbW1hbmQ6CiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJSdW5uaW5nIFBlcmwgdW5p
dCB0ZXN0cyIpCiAgICAgICAgICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90
aHJvd19pZl9mYWlsKHBlcmxfdW5pdHRlc3RzX2NvbW1hbmQsIGN3ZD1zZWxmLl90b29sLnNjbSgp
LmNoZWNrb3V0X3Jvb3QpCiAKLSAgICAgICAgICAgIGphdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1h
bmQgPSBzZWxmLl90b29sLnBvcnQoKS5ydW5famF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCgp
CisgICAgICAgICAgICBqYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kID0gc2VsZi5fdG9vbC5k
ZXByZWNhdGVkX3BvcnQoKS5ydW5famF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCgpCiAgICAg
ICAgICAgICBpZiBqYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kOgogICAgICAgICAgICAgICAg
IF9sb2cuaW5mbygiUnVubmluZyBKYXZhU2NyaXB0Q29yZSB0ZXN0cyIpCiAgICAgICAgICAgICAg
ICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGphdmFzY3JpcHRj
b3JlX3Rlc3RzX2NvbW1hbmQsIHF1aWV0PVRydWUsIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNr
b3V0X3Jvb3QpCiAKLSAgICAgICAgYmluZGluZ3NfdGVzdHNfY29tbWFuZCA9IHNlbGYuX3Rvb2wu
cG9ydCgpLnJ1bl9iaW5kaW5nc190ZXN0c19jb21tYW5kKCkKKyAgICAgICAgYmluZGluZ3NfdGVz
dHNfY29tbWFuZCA9IHNlbGYuX3Rvb2wuZGVwcmVjYXRlZF9wb3J0KCkucnVuX2JpbmRpbmdzX3Rl
c3RzX2NvbW1hbmQoKQogICAgICAgICBpZiBiaW5kaW5nc190ZXN0c19jb21tYW5kOgogICAgICAg
ICAgICAgX2xvZy5pbmZvKCJSdW5uaW5nIGJpbmRpbmdzIGdlbmVyYXRpb24gdGVzdHMiKQogICAg
ICAgICAgICAgYXJncyA9IGJpbmRpbmdzX3Rlc3RzX2NvbW1hbmQKQEAgLTgwLDcgKzgwLDcgQEAg
Y2xhc3MgUnVuVGVzdHMoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIGV4Y2VwdCBTY3JpcHRF
cnJvciwgZToKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oIkVycm9yIHJ1bm5pbmcgcnVuLWJp
bmRpbmdzLXRlc3RzOiAlcyIgJSBlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQoKSkKIAotICAgICAgICB3
ZWJraXRfdW5pdF90ZXN0c19jb21tYW5kID0gc2VsZi5fdG9vbC5wb3J0KCkucnVuX3dlYmtpdF91
bml0X3Rlc3RzX2NvbW1hbmQoKQorICAgICAgICB3ZWJraXRfdW5pdF90ZXN0c19jb21tYW5kID0g
c2VsZi5fdG9vbC5kZXByZWNhdGVkX3BvcnQoKS5ydW5fd2Via2l0X3VuaXRfdGVzdHNfY29tbWFu
ZCgpCiAgICAgICAgIGlmIHdlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQ6CiAgICAgICAgICAgICBf
bG9nLmluZm8oIlJ1bm5pbmcgV2ViS2l0IHVuaXQgdGVzdHMiKQogICAgICAgICAgICAgYXJncyA9
IHdlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQKQEAgLTkxLDcgKzkxLDcgQEAgY2xhc3MgUnVuVGVz
dHMoQWJzdHJhY3RTdGVwKToKIAogCiAgICAgICAgIF9sb2cuaW5mbygiUnVubmluZyBydW4td2Vi
a2l0LXRlc3RzIikKLSAgICAgICAgYXJncyA9IHNlbGYuX3Rvb2wucG9ydCgpLnJ1bl93ZWJraXRf
dGVzdHNfY29tbWFuZCgpCisgICAgICAgIGFyZ3MgPSBzZWxmLl90b29sLmRlcHJlY2F0ZWRfcG9y
dCgpLnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
bm9uX2ludGVyYWN0aXZlOgogICAgICAgICAgICAgYXJncy5leHRlbmQoWwogICAgICAgICAgICAg
ICAgICItLW5vLW5ldy10ZXN0LXJlc3VsdHMiLApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL3J1bnRlc3RzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0c191bml0dGVzdC5weQkocmV2aXNpb24g
MTU3Njc3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBAIGZyb20gd2Via2l0cHku
dG9vbC5zdGVwcy5ydW50ZXN0cyBpbXBvcnQKIGNsYXNzIFJ1blRlc3RzVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfd2Via2l0X3J1bl91bml0X3Rlc3RzKHNlbGYpOgogICAg
ICAgICB0b29sID0gTW9ja1Rvb2wobG9nX2V4ZWN1dGl2ZT1UcnVlKQotICAgICAgICB0b29sLl9w
b3J0LnJ1bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQgPSBsYW1iZGE6IE5vbmUKLSAgICAgICAg
dG9vbC5fcG9ydC5ydW5fcGVybF91bml0dGVzdHNfY29tbWFuZCA9IGxhbWJkYTogTm9uZQorICAg
ICAgICB0b29sLl9kZXByZWNhdGVkX3BvcnQucnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFuZCA9
IGxhbWJkYTogTm9uZQorICAgICAgICB0b29sLl9kZXByZWNhdGVkX3BvcnQucnVuX3BlcmxfdW5p
dHRlc3RzX2NvbW1hbmQgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgc3RlcCA9IFJ1blRlc3RzKHRv
b2wsIE1vY2tPcHRpb25zKHRlc3Q9VHJ1ZSwgbm9uX2ludGVyYWN0aXZlPVRydWUsIHF1aWV0PUZh
bHNlKSkKIAogICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gImN5Z3dpbiI6CkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
c3RlcHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIGltcG9y
dCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91
dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNv
bmZpZy5wb3J0cyBpbXBvcnQgRGVwcmVjYXRlZFBvcnQKIGZyb20gd2Via2l0cHkudG9vbC5tb2Nr
dG9vbCBpbXBvcnQgTW9ja09wdGlvbnMsIE1vY2tUb29sCiAKIGZyb20gd2Via2l0cHkudG9vbCBp
bXBvcnQgc3RlcHMKQEAgLTk5LDE4ICsxMDAsMTggQEAgY2xhc3MgU3RlcHNUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgbW9ja19vcHRpb25zLm5vbl9pbnRlcmFjdGl2ZSA9IEZhbHNl
CiAgICAgICAgIHN0ZXAgPSBzdGVwcy5SdW5UZXN0cyhNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRy
dWUpLCBtb2NrX29wdGlvbnMpCiAgICAgICAgIHRvb2wgPSBNb2NrVG9vbChsb2dfZXhlY3V0aXZl
PVRydWUpCisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZG4ndCB1c2UgYSByZWFsIHBvcnQtb2Jq
ZWN0IGhlcmUsIGJ1dCB0aGVyZSBpcyB0b28gbXVjaCB0byBtb2NrIGF0IHRoZSBtb21lbnQuCisg
ICAgICAgIHRvb2wuX2RlcHJlY2F0ZWRfcG9ydCA9IERlcHJlY2F0ZWRQb3J0KCkKICAgICAgICAg
c3RlcCA9IHN0ZXBzLlJ1blRlc3RzKHRvb2wsIG1vY2tfb3B0aW9ucykKICAgICAgICAgZXhwZWN0
ZWRfbG9ncyA9ICIiIlJ1bm5pbmcgUHl0aG9uIHVuaXQgdGVzdHMKLU1PQ0sgcnVuX2FuZF90aHJv
d19pZl9mYWlsOiBbJ21vY2stdGVzdC13ZWJraXRweSddLCBjd2Q9L21vY2stY2hlY2tvdXQKK01P
Q0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweSdd
LCBjd2Q9L21vY2stY2hlY2tvdXQKIFJ1bm5pbmcgUGVybCB1bml0IHRlc3RzCi1NT0NLIHJ1bl9h
bmRfdGhyb3dfaWZfZmFpbDogWydtb2NrLXRlc3Qtd2Via2l0cGVybCddLCBjd2Q9L21vY2stY2hl
Y2tvdXQKK01PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ1Rvb2xzL1NjcmlwdHMvdGVzdC13
ZWJraXRwZXJsJ10sIGN3ZD0vbW9jay1jaGVja291dAogUnVubmluZyBKYXZhU2NyaXB0Q29yZSB0
ZXN0cwotTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnbW9jay1ydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMnXSwgY3dkPS9tb2NrLWNoZWNrb3V0CitNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFp
bDogWydUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyddLCBjd2Q9L21vY2st
Y2hlY2tvdXQKIFJ1bm5pbmcgYmluZGluZ3MgZ2VuZXJhdGlvbiB0ZXN0cwotTU9DSyBydW5fYW5k
X3Rocm93X2lmX2ZhaWw6IFsnbW9jay1ydW4tYmluZGluZ3MtdGVzdHMnXSwgY3dkPS9tb2NrLWNo
ZWNrb3V0Ci1SdW5uaW5nIFdlYktpdCB1bml0IHRlc3RzCi1NT0NLIHJ1bl9hbmRfdGhyb3dfaWZf
ZmFpbDogWydtb2NrLXJ1bi13ZWJraXQtdW5pdC10ZXN0cyddLCBjd2Q9L21vY2stY2hlY2tvdXQK
K01PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdz
LXRlc3RzJ10sIGN3ZD0vbW9jay1jaGVja291dAogUnVubmluZyBydW4td2Via2l0LXRlc3RzCi1N
T0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydtb2NrLXJ1bi13ZWJraXQtdGVzdHMnLCAnLS1x
dWlldCddLCBjd2Q9L21vY2stY2hlY2tvdXQKK01PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBb
J1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cycsICctLXF1aWV0J10sIGN3ZD0vbW9jay1j
aGVja291dAogIiIiCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxm
LCBzdGVwLnJ1biwgW3t9XSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZS5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlLnB5CShyZXZpc2lvbiAxNTc2
NzcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw1ICs1MCw1IEBAIGNsYXNzIFVwZGF0ZShBYnN0cmFjdFN0ZXApOgog
ICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5f
dXBkYXRlX2NvbW1hbmQoKSwgcXVpZXQ9c2VsZi5fb3B0aW9ucy5xdWlldCwgY3dkPXNlbGYuX3Rv
b2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkKIAogICAgIGRlZiBfdXBkYXRlX2NvbW1hbmQoc2VsZik6
Ci0gICAgICAgIHVwZGF0ZV9jb21tYW5kID0gc2VsZi5fdG9vbC5wb3J0KCkudXBkYXRlX3dlYmtp
dF9jb21tYW5kKHNlbGYuX29wdGlvbnMubm9uX2ludGVyYWN0aXZlKQorICAgICAgICB1cGRhdGVf
Y29tbWFuZCA9IHNlbGYuX3Rvb2wuZGVwcmVjYXRlZF9wb3J0KCkudXBkYXRlX3dlYmtpdF9jb21t
YW5kKHNlbGYuX29wdGlvbnMubm9uX2ludGVyYWN0aXZlKQogICAgICAgICByZXR1cm4gdXBkYXRl
X2NvbW1hbmQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3VwZGF0ZV91bml0dGVzdC5weQkocmV2aXNpb24gMTU3Njc3KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiBpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CiAKK2Zyb20g
d2Via2l0cHkuY29tbW9uLmNvbmZpZy5wb3J0cyBpbXBvcnQgTWFjUG9ydCwgTWFjV0syUG9ydAog
ZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9ja1Rvb2wK
IGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy51cGRhdGUgaW1wb3J0IFVwZGF0ZQogCkBAIC00MCwx
MCArNDEsMTAgQEAgY2xhc3MgVXBkYXRlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHN0ZXAgPSBVcGRhdGUodG9vbCwgb3B0aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChb
Im1vY2stdXBkYXRlLXdlYmtpdCJdLCBzdGVwLl91cGRhdGVfY29tbWFuZCgpKQogCi0gICAgICAg
IHRvb2wuX3BvcnQgPSB0b29sLnBvcnRfZmFjdG9yeS5nZXQoIm1hYyIpCisgICAgICAgIHRvb2wu
X2RlcHJlY2F0ZWRfcG9ydCA9IE1hY1BvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsi
VG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0Il0sIHN0ZXAuX3VwZGF0ZV9jb21tYW5kKCkpCiAK
LSAgICAgICAgdG9vbC5fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldCgibWFjLXdrMiIpCisg
ICAgICAgIHRvb2wuX2RlcHJlY2F0ZWRfcG9ydCA9IE1hY1dLMlBvcnQoKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFsiVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0Il0sIHN0ZXAuX3VwZGF0
ZV9jb21tYW5kKCkpCiAKICAgICBkZWYgdGVzdF91cGRhdGVfY29tbWFuZF9pbnRlcmFjdGl2ZShz
ZWxmKToKQEAgLTUyLDggKzUzLDggQEAgY2xhc3MgVXBkYXRlVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIHN0ZXAgPSBVcGRhdGUodG9vbCwgb3B0aW9ucykKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbIm1vY2stdXBkYXRlLXdlYmtpdCJdLCBzdGVwLl91cGRhdGVfY29tbWFuZCgp
KQogCi0gICAgICAgIHRvb2wuX3BvcnQgPSB0b29sLnBvcnRfZmFjdG9yeS5nZXQoIm1hYyIpCisg
ICAgICAgIHRvb2wuX2RlcHJlY2F0ZWRfcG9ydCA9IE1hY1BvcnQoKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFsiVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0Il0sIHN0ZXAuX3VwZGF0ZV9j
b21tYW5kKCkpCiAKLSAgICAgICAgdG9vbC5fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldCgi
bWFjLXdrMiIpCisgICAgICAgIHRvb2wuX2RlcHJlY2F0ZWRfcG9ydCA9IE1hY1dLMlBvcnQoKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsiVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0Il0s
IHN0ZXAuX3VwZGF0ZV9jb21tYW5kKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214669</attachid>
            <date>2013-10-19 14:16:47 -0700</date>
            <delta_ts>2013-10-19 14:23:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123064-20131019141646.patch</filename>
            <type>text/plain</type>
            <size>58545</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1NzY4MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyNCBAQAorMjAxMy0xMC0xOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMTU1MzczKTogTWFjIFdLMiBFV1MgYm90cyBpcyBh
Y3R1YWxseSBNYWMgV0sxIGRlYnVnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjMwNjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXZlcnQgcjE1NTM3MyBhcyBpdCBpcyBjYXVzaW5nIGluY29ycmVjdCBw
b3J0L3BsYXRmb3JtIGRlZHVjdGlvbiBmb3IgdGhlIE1hYyBFV1Mgc3lzdGVtcy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weTogQWRkZWQuCisgICAg
ICAgIChEZXByZWNhdGVkUG9ydCk6CisgICAgICAgIChEZXByZWNhdGVkUG9ydC5uYW1lKToKKyAg
ICAgICAgKERlcHJlY2F0ZWRQb3J0LmZsYWcpOgorICAgICAgICAoRGVwcmVjYXRlZFBvcnQuc2Ny
aXB0X3BhdGgpOgorICAgICAgICAoRGVwcmVjYXRlZFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQp
OgorICAgICAgICAoRGVwcmVjYXRlZFBvcnQucG9ydCk6CisgICAgICAgIChEZXByZWNhdGVkUG9y
dC5tYWtlQXJncyk6CisgICAgICAgIChEZXByZWNhdGVkUG9ydC51cGRhdGVfd2Via2l0X2NvbW1h
bmQpOgorICAgICAgICAoRGVwcmVjYXRlZFBvcnQuY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQp
OgorICAgICAgICAoRGVwcmVjYXRlZFBvcnQucHJlcGFyZV9jaGFuZ2Vsb2dfY29tbWFuZCk6Cisg
ICAgICAgIChEZXByZWNhdGVkUG9ydC5idWlsZF93ZWJraXRfY29tbWFuZCk6CisgICAgICAgIChE
ZXByZWNhdGVkUG9ydC5ydW5famF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCk6CisgICAgICAg
IChEZXByZWNhdGVkUG9ydC5ydW5fd2Via2l0X3VuaXRfdGVzdHNfY29tbWFuZCk6CisgICAgICAg
IChEZXByZWNhdGVkUG9ydC5ydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQpOgorICAgICAgICAoRGVw
cmVjYXRlZFBvcnQucnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFuZCk6CisgICAgICAgIChEZXBy
ZWNhdGVkUG9ydC5ydW5fcGVybF91bml0dGVzdHNfY29tbWFuZCk6CisgICAgICAgIChEZXByZWNh
dGVkUG9ydC5ydW5fYmluZGluZ3NfdGVzdHNfY29tbWFuZCk6CisgICAgICAgIChNYWNQb3J0KToK
KyAgICAgICAgKE1hY1dLMlBvcnQpOgorICAgICAgICAoTWFjV0syUG9ydC5ydW5fd2Via2l0X3Rl
c3RzX2NvbW1hbmQpOgorICAgICAgICAoV2luUG9ydCk6CisgICAgICAgIChXaW5Qb3J0LnJ1bl9i
aW5kaW5nc190ZXN0c19jb21tYW5kKToKKyAgICAgICAgKEd0a1BvcnQpOgorICAgICAgICAoR3Rr
UG9ydC5idWlsZF93ZWJraXRfY29tbWFuZCk6CisgICAgICAgIChHdGtQb3J0LnJ1bl93ZWJraXRf
dGVzdHNfY29tbWFuZCk6CisgICAgICAgIChHdGtXSzJQb3J0KToKKyAgICAgICAgKEd0a1dLMlBv
cnQuYnVpbGRfd2Via2l0X2NvbW1hbmQpOgorICAgICAgICAoR3RrV0syUG9ydC5ydW5fd2Via2l0
X3Rlc3RzX2NvbW1hbmQpOgorICAgICAgICAoUXRQb3J0KToKKyAgICAgICAgKFF0UG9ydC5idWls
ZF93ZWJraXRfY29tbWFuZCk6CisgICAgICAgIChRdFBvcnQucnVuX3dlYmtpdF90ZXN0c19jb21t
YW5kKToKKyAgICAgICAgKFF0V0syUG9ydCk6CisgICAgICAgIChRdFdLMlBvcnQuYnVpbGRfd2Vi
a2l0X2NvbW1hbmQpOgorICAgICAgICAoUXRXSzJQb3J0LnJ1bl93ZWJraXRfdGVzdHNfY29tbWFu
ZCk6CisgICAgICAgIChFZmxQb3J0KToKKyAgICAgICAgKEVmbFBvcnQuYnVpbGRfd2Via2l0X2Nv
bW1hbmQpOgorICAgICAgICAoRWZsV0syUG9ydCk6CisgICAgICAgIChFZmxXSzJQb3J0LmJ1aWxk
X3dlYmtpdF9jb21tYW5kKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25m
aWcvcG9ydHNfbW9jay5weTogQWRkZWQuCisgICAgICAgIChNb2NrUG9ydCk6CisgICAgICAgIChN
b2NrUG9ydC5uYW1lKToKKyAgICAgICAgKE1vY2tQb3J0LmNoZWNrX3dlYmtpdF9zdHlsZV9jb21t
YW5kKToKKyAgICAgICAgKE1vY2tQb3J0LnVwZGF0ZV93ZWJraXRfY29tbWFuZCk6CisgICAgICAg
IChNb2NrUG9ydC5idWlsZF93ZWJraXRfY29tbWFuZCk6CisgICAgICAgIChNb2NrUG9ydC5wcmVw
YXJlX2NoYW5nZWxvZ19jb21tYW5kKToKKyAgICAgICAgKE1vY2tQb3J0LnJ1bl9weXRob25fdW5p
dHRlc3RzX2NvbW1hbmQpOgorICAgICAgICAoTW9ja1BvcnQucnVuX3BlcmxfdW5pdHRlc3RzX2Nv
bW1hbmQpOgorICAgICAgICAoTW9ja1BvcnQucnVuX2phdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1h
bmQpOgorICAgICAgICAoTW9ja1BvcnQucnVuX3dlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQpOgor
ICAgICAgICAoTW9ja1BvcnQucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKToKKyAgICAgICAgKE1v
Y2tQb3J0LnJ1bl9iaW5kaW5nc190ZXN0c19jb21tYW5kKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jb25maWcvcG9ydHNfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAo
RGVwcmVjYXRlZFBvcnRUZXN0KToKKyAgICAgICAgKERlcHJlY2F0ZWRQb3J0VGVzdC50ZXN0X21h
Y19wb3J0KToKKyAgICAgICAgKERlcHJlY2F0ZWRQb3J0VGVzdC50ZXN0X2d0a19wb3J0KToKKyAg
ICAgICAgKERlcHJlY2F0ZWRQb3J0VGVzdC50ZXN0X2d0a193azJfcG9ydCk6CisgICAgICAgIChE
ZXByZWNhdGVkUG9ydFRlc3QudGVzdF9lZmxfcG9ydCk6CisgICAgICAgIChEZXByZWNhdGVkUG9y
dFRlc3QudGVzdF9xdF9wb3J0KToKKyAgICAgICAgKERlcHJlY2F0ZWRQb3J0VGVzdC50ZXN0X3F0
X3drMl9wb3J0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weToKKyAg
ICAgICAgKFBvcnQuX3BvcnRfZmxhZ19mb3Jfc2NyaXB0cyk6CisgICAgICAgIChQb3J0Ll93azJf
cG9ydF9uYW1lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZV91bml0dGVz
dC5weToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfYnVpbGRfcGF0aCk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2VmbF91bml0dGVzdC5weToKKyAgICAgICAgKEVmbFBvcnRUZXN0
LnRlc3Rfc2hvd19yZXN1bHRzX2h0bWxfZmlsZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2d0a191bml0dGVzdC5weToKKyAgICAgICAgKEd0a1BvcnRUZXN0LnRlc3RfZ2V0X2Ny
YXNoX2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5w
eToKKyAgICAgICAgKHRlc3RfNjRiaXQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9y
dC90ZXN0LnB5OgorICAgICAgICAoVGVzdFBvcnQudmlydHVhbF90ZXN0X3N1aXRlcyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRlci5weToKKyAg
ICAgICAgKEZsYWt5VGVzdFJlcG9ydGVyLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5OgorICAgICAgICAoUm9sbG91dC5fdXBkYXRl
X3dvcmtpbmdfY29weSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2Rvd25sb2FkX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHk6CisgICAgICAgIChBYnN0cmFjdEVhcmx5V2Fy
bmluZ1N5c3RlbS5ydW5fY29tbWFuZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3F1ZXVlcy5weToKKyAgICAgICAgKFBhdGNoUHJvY2Vzc2luZ1F1ZXVlLmJlZ2lu
X3dvcmtfcXVldWUpOgorICAgICAgICAoQ29tbWl0UXVldWUucnVuX2NvbW1hbmQpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5OgorICAgICAgICAoV2ViS2l0UGF0Y2gu
X19pbml0X18pOgorICAgICAgICAoV2ViS2l0UGF0Y2guZGVwcmVjYXRlZF9wb3J0KToKKyAgICAg
ICAgKFdlYktpdFBhdGNoLmhhbmRsZV9nbG9iYWxfb3B0aW9ucyk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5OgorICAgICAgICAoTW9ja1Rvb2wuX19pbml0X18p
OgorICAgICAgICAoTW9ja1Rvb2wuZGVwcmVjYXRlZF9wb3J0KToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvYnVpbGQucHk6CisgICAgICAgIChCdWlsZC5idWlsZCk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHk6CisgICAg
ICAgIChDaGVja1N0eWxlLnJ1bik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2NvbW1pdC5weToKKyAgICAgICAgKENvbW1pdC5fY2hlY2tfdGVzdF9leHBlY3RhdGlvbnMp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9n
LnB5OgorICAgICAgICAoUHJlcGFyZUNoYW5nZUxvZy5ydW4pOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5OgorICAgICAg
ICAoUHJlcGFyZUNoYW5nZUxvZ0ZvclJldmVydC5ydW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0cy5weToKKyAgICAgICAgKFJ1blRlc3RzLnJ1bik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzX3VuaXR0ZXN0LnB5
OgorICAgICAgICAoUnVuVGVzdHNUZXN0LnRlc3Rfd2Via2l0X3J1bl91bml0X3Rlc3RzKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHk6Cisg
ICAgICAgIChTdGVwc1Rlc3QudGVzdF9ydW50ZXN0c19hcmdzKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlLnB5OgorICAgICAgICAoVXBkYXRlLl91cGRhdGVf
Y29tbWFuZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZV91
bml0dGVzdC5weToKKyAgICAgICAgKFVwZGF0ZVRlc3QudGVzdF91cGRhdGVfY29tbWFuZF9ub25f
aW50ZXJhY3RpdmUpOgorICAgICAgICAoVXBkYXRlVGVzdC50ZXN0X3VwZGF0ZV9jb21tYW5kX2lu
dGVyYWN0aXZlKToKKwogMjAxMy0xMC0xOSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgUmVmUHRyOjpyZWxlYXNlTm9uTnVsbCgpIGluY29ycmVjdGx5IGluY3Jl
bWVudHMgdGhlIHJlZmNvdW50LgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y29uZmlnL3BvcnRzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NvbmZpZy9wb3J0cy5weQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzMiBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBXZWJLaXQncyBQeXRob24gbW9kdWxlIGZvciB1bmRl
cnN0YW5kaW5nIHRoZSB2YXJpb3VzIHBvcnRzCisKK2ltcG9ydCBvcworaW1wb3J0IHBsYXRmb3Jt
CitpbXBvcnQgc3lzCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IEV4ZWN1dGl2ZQorCisKK2NsYXNzIERlcHJlY2F0ZWRQb3J0KG9iamVjdCk6CisgICAgcmVz
dWx0c19kaXJlY3RvcnkgPSAiL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzIgorCisgICAgIyBTdWJj
bGFzc2VzIG11c3Qgb3ZlcnJpZGUKKyAgICBwb3J0X2ZsYWdfbmFtZSA9IE5vbmUKKworICAgICMg
RklYTUU6IFRoaXMgaXMgb25seSB1c2VkIGJ5IEJvdEluZm8uCisgICAgZGVmIG5hbWUoc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXworCisgICAgZGVmIGZsYWcoc2VsZik6Cisg
ICAgICAgIGlmIHNlbGYucG9ydF9mbGFnX25hbWU6CisgICAgICAgICAgICByZXR1cm4gIi0tcG9y
dD0lcyIgJSBzZWxmLnBvcnRfZmxhZ19uYW1lCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICAj
IFdlIG1pZ2h0IG5lZWQgdG8gcGFzcyBzY20gaW50byB0aGlzIGZ1bmN0aW9uIGZvciBzY20uY2hl
Y2tvdXRfcm9vdAorICAgIGRlZiBzY3JpcHRfcGF0aChzZWxmLCBzY3JpcHRfbmFtZSk6CisgICAg
ICAgIHJldHVybiBvcy5wYXRoLmpvaW4oIlRvb2xzIiwgIlNjcmlwdHMiLCBzY3JpcHRfbmFtZSkK
KworICAgIGRlZiBzY3JpcHRfc2hlbGxfY29tbWFuZChzZWxmLCBzY3JpcHRfbmFtZSk6CisgICAg
ICAgIHNjcmlwdF9wYXRoID0gc2VsZi5zY3JpcHRfcGF0aChzY3JpcHRfbmFtZSkKKyAgICAgICAg
cmV0dXJuIEV4ZWN1dGl2ZS5zaGVsbF9jb21tYW5kX2Zvcl9zY3JpcHQoc2NyaXB0X3BhdGgpCisK
KyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHBvcnQocG9ydF9uYW1lKToKKyAgICAgICAgcG9y
dHMgPSB7CisgICAgICAgICAgICAiZ3RrIjogR3RrUG9ydCwKKyAgICAgICAgICAgICJndGstd2sy
IjogR3RrV0syUG9ydCwKKyAgICAgICAgICAgICJtYWMiOiBNYWNQb3J0LAorICAgICAgICAgICAg
Im1hYy13azIiOiBNYWNXSzJQb3J0LAorICAgICAgICAgICAgIndpbiI6IFdpblBvcnQsCisgICAg
ICAgICAgICAicXQiOiBRdFBvcnQsCisgICAgICAgICAgICAicXQtd2syIjogUXRXSzJQb3J0LAor
ICAgICAgICAgICAgImVmbCI6IEVmbFBvcnQsCisgICAgICAgICAgICAiZWZsLXdrMiI6IEVmbFdL
MlBvcnQsCisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdF9wb3J0ID0geworICAgICAgICAgICAg
IldpbmRvd3MiOiBXaW5Qb3J0LAorICAgICAgICAgICAgIkRhcndpbiI6IE1hY1BvcnQsCisgICAg
ICAgIH0KKyAgICAgICAgIyBEbyB3ZSByZWFsbHkgbmVlZCBNYWNQb3J0IGFzIHRoZSB1bHRpbWF0
ZSBkZWZhdWx0PworICAgICAgICByZXR1cm4gcG9ydHMuZ2V0KHBvcnRfbmFtZSwgZGVmYXVsdF9w
b3J0LmdldChwbGF0Zm9ybS5zeXN0ZW0oKSwgTWFjUG9ydCkpKCkKKworICAgIGRlZiBtYWtlQXJn
cyhzZWxmKToKKyAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgdXNlIGEgc3RhdGljIEV4
ZWN1dGl2ZSgpLgorICAgICAgICBhcmdzID0gJy0tbWFrZWFyZ3M9Ii1qJXMiJyAlIEV4ZWN1dGl2
ZSgpLmNwdV9jb3VudCgpCisgICAgICAgIGlmIG9zLmVudmlyb24uaGFzX2tleSgnTUFLRUZMQUdT
Jyk6CisgICAgICAgICAgICBhcmdzID0gJy0tbWFrZWFyZ3M9IiVzIicgJSBvcy5lbnZpcm9uWydN
QUtFRkxBR1MnXQorICAgICAgICByZXR1cm4gYXJncworCisgICAgZGVmIHVwZGF0ZV93ZWJraXRf
Y29tbWFuZChzZWxmLCBub25faW50ZXJhY3RpdmU9RmFsc2UpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5zY3JpcHRfc2hlbGxfY29tbWFuZCgidXBkYXRlLXdlYmtpdCIpCisKKyAgICBkZWYgY2hlY2tf
d2Via2l0X3N0eWxlX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnNjcmlwdF9z
aGVsbF9jb21tYW5kKCJjaGVjay13ZWJraXQtc3R5bGUiKQorCisgICAgZGVmIHByZXBhcmVfY2hh
bmdlbG9nX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnNjcmlwdF9zaGVsbF9j
b21tYW5kKCJwcmVwYXJlLUNoYW5nZUxvZyIpCisKKyAgICBkZWYgYnVpbGRfd2Via2l0X2NvbW1h
bmQoc2VsZiwgYnVpbGRfc3R5bGU9Tm9uZSk6CisgICAgICAgIGNvbW1hbmQgPSBzZWxmLnNjcmlw
dF9zaGVsbF9jb21tYW5kKCJidWlsZC13ZWJraXQiKQorICAgICAgICBpZiBidWlsZF9zdHlsZSA9
PSAiZGVidWciOgorICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQoIi0tZGVidWciKQorICAgICAg
ICBpZiBidWlsZF9zdHlsZSA9PSAicmVsZWFzZSI6CisgICAgICAgICAgICBjb21tYW5kLmFwcGVu
ZCgiLS1yZWxlYXNlIikKKyAgICAgICAgcmV0dXJuIGNvbW1hbmQKKworICAgIGRlZiBydW5famF2
YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Ny
aXB0X3NoZWxsX2NvbW1hbmQoInJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyIpCisKKyAgICBkZWYg
cnVuX3dlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVybiBOb25l
CisKKyAgICBkZWYgcnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLXdlYmtpdC10ZXN0cyIpCisKKyAgICBk
ZWYgcnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFuZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl
bGYuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInRlc3Qtd2Via2l0cHkiKQorCisgICAgZGVmIHJ1bl9w
ZXJsX3VuaXR0ZXN0c19jb21tYW5kKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5zY3JpcHRf
c2hlbGxfY29tbWFuZCgidGVzdC13ZWJraXRwZXJsIikKKworICAgIGRlZiBydW5fYmluZGluZ3Nf
dGVzdHNfY29tbWFuZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2NyaXB0X3NoZWxsX2Nv
bW1hbmQoInJ1bi1iaW5kaW5ncy10ZXN0cyIpCisKKworY2xhc3MgTWFjUG9ydChEZXByZWNhdGVk
UG9ydCk6CisgICAgcG9ydF9mbGFnX25hbWUgPSAibWFjIgorCisKK2NsYXNzIE1hY1dLMlBvcnQo
RGVwcmVjYXRlZFBvcnQpOgorICAgIHBvcnRfZmxhZ19uYW1lID0gIm1hYy13azIiCisKKyAgICBk
ZWYgcnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKHNlbGYpOgorICAgICAgICBjb21tYW5kID0gc3Vw
ZXIoTWFjV0syUG9ydCwgc2VsZikucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCkKKyAgICAgICAg
Y29tbWFuZC5hcHBlbmQoIi0yIikKKyAgICAgICAgcmV0dXJuIGNvbW1hbmQKKworCitjbGFzcyBX
aW5Qb3J0KERlcHJlY2F0ZWRQb3J0KToKKyAgICBwb3J0X2ZsYWdfbmFtZSA9ICJ3aW4iCisKKyAg
ICBkZWYgcnVuX2JpbmRpbmdzX3Rlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVybiBO
b25lCisKKworY2xhc3MgR3RrUG9ydChEZXByZWNhdGVkUG9ydCk6CisgICAgcG9ydF9mbGFnX25h
bWUgPSAiZ3RrIgorCisgICAgZGVmIGJ1aWxkX3dlYmtpdF9jb21tYW5kKHNlbGYsIGJ1aWxkX3N0
eWxlPU5vbmUpOgorICAgICAgICBjb21tYW5kID0gc3VwZXIoR3RrUG9ydCwgc2VsZikuYnVpbGRf
d2Via2l0X2NvbW1hbmQoYnVpbGRfc3R5bGU9YnVpbGRfc3R5bGUpCisgICAgICAgIGNvbW1hbmQu
YXBwZW5kKCItLWd0ayIpCisgICAgICAgIGNvbW1hbmQuYXBwZW5kKCItLXVwZGF0ZS1ndGsiKQor
ICAgICAgICBjb21tYW5kLmFwcGVuZCgiLS1uby13ZWJraXQyIikKKyAgICAgICAgY29tbWFuZC5h
cHBlbmQoc3VwZXIoR3RrUG9ydCwgc2VsZikubWFrZUFyZ3MoKSkKKyAgICAgICAgcmV0dXJuIGNv
bW1hbmQKKworICAgIGRlZiBydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAg
IGNvbW1hbmQgPSBzdXBlcihHdGtQb3J0LCBzZWxmKS5ydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQo
KQorICAgICAgICBjb21tYW5kLmFwcGVuZCgiLS1ndGsiKQorICAgICAgICByZXR1cm4gY29tbWFu
ZAorCisKK2NsYXNzIEd0a1dLMlBvcnQoRGVwcmVjYXRlZFBvcnQpOgorICAgIHBvcnRfZmxhZ19u
YW1lID0gImd0ay13azIiCisKKyAgICBkZWYgYnVpbGRfd2Via2l0X2NvbW1hbmQoc2VsZiwgYnVp
bGRfc3R5bGU9Tm9uZSk6CisgICAgICAgIGNvbW1hbmQgPSBzdXBlcihHdGtXSzJQb3J0LCBzZWxm
KS5idWlsZF93ZWJraXRfY29tbWFuZChidWlsZF9zdHlsZT1idWlsZF9zdHlsZSkKKyAgICAgICAg
Y29tbWFuZC5hcHBlbmQoIi0tZ3RrIikKKyAgICAgICAgY29tbWFuZC5hcHBlbmQoIi0tdXBkYXRl
LWd0ayIpCisgICAgICAgIGNvbW1hbmQuYXBwZW5kKCItLW5vLXdlYmtpdDEiKQorICAgICAgICBj
b21tYW5kLmFwcGVuZChzdXBlcihHdGtXSzJQb3J0LCBzZWxmKS5tYWtlQXJncygpKQorICAgICAg
ICByZXR1cm4gY29tbWFuZAorCisgICAgZGVmIHJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZChzZWxm
KToKKyAgICAgICAgY29tbWFuZCA9IHN1cGVyKEd0a1dLMlBvcnQsIHNlbGYpLnJ1bl93ZWJraXRf
dGVzdHNfY29tbWFuZCgpCisgICAgICAgIGNvbW1hbmQuYXBwZW5kKCItLWd0ayIpCisgICAgICAg
IGNvbW1hbmQuYXBwZW5kKCItMiIpCisgICAgICAgIHJldHVybiBjb21tYW5kCisKKworY2xhc3Mg
UXRQb3J0KERlcHJlY2F0ZWRQb3J0KToKKyAgICBwb3J0X2ZsYWdfbmFtZSA9ICJxdCIKKworICAg
IGRlZiBidWlsZF93ZWJraXRfY29tbWFuZChzZWxmLCBidWlsZF9zdHlsZT1Ob25lKToKKyAgICAg
ICAgY29tbWFuZCA9IHN1cGVyKFF0UG9ydCwgc2VsZikuYnVpbGRfd2Via2l0X2NvbW1hbmQoYnVp
bGRfc3R5bGU9YnVpbGRfc3R5bGUpCisgICAgICAgIGNvbW1hbmQuYXBwZW5kKCItLXF0IikKKyAg
ICAgICAgY29tbWFuZC5hcHBlbmQoIi0tbm8td2Via2l0MiIpCisgICAgICAgIGNvbW1hbmQuYXBw
ZW5kKHN1cGVyKFF0UG9ydCwgc2VsZikubWFrZUFyZ3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbW1h
bmQKKworICAgIGRlZiBydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAgIGNv
bW1hbmQgPSBzdXBlcihRdFBvcnQsIHNlbGYpLnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpCisg
ICAgICAgIGNvbW1hbmQuYXBwZW5kKCItLXF0IikKKyAgICAgICAgcmV0dXJuIGNvbW1hbmQKKwor
CitjbGFzcyBRdFdLMlBvcnQoRGVwcmVjYXRlZFBvcnQpOgorICAgIHBvcnRfZmxhZ19uYW1lID0g
InF0LXdrMiIKKworICAgIGRlZiBidWlsZF93ZWJraXRfY29tbWFuZChzZWxmLCBidWlsZF9zdHls
ZT1Ob25lKToKKyAgICAgICAgY29tbWFuZCA9IHN1cGVyKFF0V0syUG9ydCwgc2VsZikuYnVpbGRf
d2Via2l0X2NvbW1hbmQoYnVpbGRfc3R5bGU9YnVpbGRfc3R5bGUpCisgICAgICAgIGNvbW1hbmQu
YXBwZW5kKCItLXF0IikKKyAgICAgICAgY29tbWFuZC5hcHBlbmQoc3VwZXIoUXRXSzJQb3J0LCBz
ZWxmKS5tYWtlQXJncygpKQorICAgICAgICByZXR1cm4gY29tbWFuZAorCisgICAgZGVmIHJ1bl93
ZWJraXRfdGVzdHNfY29tbWFuZChzZWxmKToKKyAgICAgICAgY29tbWFuZCA9IHN1cGVyKFF0V0sy
UG9ydCwgc2VsZikucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCkKKyAgICAgICAgY29tbWFuZC5h
cHBlbmQoIi0tcXQiKQorICAgICAgICBjb21tYW5kLmFwcGVuZCgiLTIiKQorICAgICAgICByZXR1
cm4gY29tbWFuZAorCisKK2NsYXNzIEVmbFBvcnQoRGVwcmVjYXRlZFBvcnQpOgorICAgIHBvcnRf
ZmxhZ19uYW1lID0gImVmbCIKKworICAgIGRlZiBidWlsZF93ZWJraXRfY29tbWFuZChzZWxmLCBi
dWlsZF9zdHlsZT1Ob25lKToKKyAgICAgICAgY29tbWFuZCA9IHN1cGVyKEVmbFBvcnQsIHNlbGYp
LmJ1aWxkX3dlYmtpdF9jb21tYW5kKGJ1aWxkX3N0eWxlPWJ1aWxkX3N0eWxlKQorICAgICAgICBj
b21tYW5kLmFwcGVuZCgiLS1lZmwiKQorICAgICAgICBjb21tYW5kLmFwcGVuZCgiLS11cGRhdGUt
ZWZsIikKKyAgICAgICAgY29tbWFuZC5hcHBlbmQoIi0tbm8td2Via2l0MiIpCisgICAgICAgIGNv
bW1hbmQuYXBwZW5kKHN1cGVyKEVmbFBvcnQsIHNlbGYpLm1ha2VBcmdzKCkpCisgICAgICAgIHJl
dHVybiBjb21tYW5kCisKKworY2xhc3MgRWZsV0syUG9ydChEZXByZWNhdGVkUG9ydCk6CisgICAg
cG9ydF9mbGFnX25hbWUgPSAiZWZsLXdrMiIKKworICAgIGRlZiBidWlsZF93ZWJraXRfY29tbWFu
ZChzZWxmLCBidWlsZF9zdHlsZT1Ob25lKToKKyAgICAgICAgY29tbWFuZCA9IHN1cGVyKEVmbFdL
MlBvcnQsIHNlbGYpLmJ1aWxkX3dlYmtpdF9jb21tYW5kKGJ1aWxkX3N0eWxlPWJ1aWxkX3N0eWxl
KQorICAgICAgICBjb21tYW5kLmFwcGVuZCgiLS1lZmwiKQorICAgICAgICBjb21tYW5kLmFwcGVu
ZCgiLS11cGRhdGUtZWZsIikKKyAgICAgICAgY29tbWFuZC5hcHBlbmQoIi0tbm8td2Via2l0MSIp
CisgICAgICAgIGNvbW1hbmQuYXBwZW5kKHN1cGVyKEVmbFdLMlBvcnQsIHNlbGYpLm1ha2VBcmdz
KCkpCisgICAgICAgIHJldHVybiBjb21tYW5kCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvcG9ydHNfbW9jay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvcG9ydHNfbW9jay5weQkocmV2aXNpb24gMCkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0c19tb2NrLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2NsYXNzIE1vY2tQb3J0
KG9iamVjdCk6CisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiTW9ja1BvcnQi
CisKKyAgICBkZWYgY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJl
dHVybiBbIm1vY2stY2hlY2std2Via2l0LXN0eWxlIl0KKworICAgIGRlZiB1cGRhdGVfd2Via2l0
X2NvbW1hbmQoc2VsZiwgbm9uX2ludGVyYWN0aXZlPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIFsi
bW9jay11cGRhdGUtd2Via2l0Il0KKworICAgIGRlZiBidWlsZF93ZWJraXRfY29tbWFuZChzZWxm
LCBidWlsZF9zdHlsZT1Ob25lKToKKyAgICAgICAgcmV0dXJuIFsibW9jay1idWlsZC13ZWJraXQi
XQorCisgICAgZGVmIHByZXBhcmVfY2hhbmdlbG9nX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJl
dHVybiBbJ21vY2stcHJlcGFyZS1DaGFuZ2VMb2cnXQorCisgICAgZGVmIHJ1bl9weXRob25fdW5p
dHRlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVybiBbJ21vY2stdGVzdC13ZWJraXRw
eSddCisKKyAgICBkZWYgcnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAg
IHJldHVybiBbJ21vY2stdGVzdC13ZWJraXRwZXJsJ10KKworICAgIGRlZiBydW5famF2YXNjcmlw
dGNvcmVfdGVzdHNfY29tbWFuZChzZWxmKToKKyAgICAgICAgcmV0dXJuIFsnbW9jay1ydW4tamF2
YWNyaXB0Y29yZS10ZXN0cyddCisKKyAgICBkZWYgcnVuX3dlYmtpdF91bml0X3Rlc3RzX2NvbW1h
bmQoc2VsZik6CisgICAgICAgIHJldHVybiBbJ21vY2stcnVuLXdlYmtpdC11bml0LXRlc3RzJ10K
KworICAgIGRlZiBydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVy
biBbJ21vY2stcnVuLXdlYmtpdC10ZXN0cyddCisKKyAgICBkZWYgcnVuX2JpbmRpbmdzX3Rlc3Rz
X2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVybiBbJ21vY2stcnVuLWJpbmRpbmdzLXRlc3Rz
J10KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0c191bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25m
aWcvcG9ydHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jb25maWcvcG9ydHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2OSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdDIgYXMgdW5p
dHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGltcG9ydCAqCisKKwor
Y2xhc3MgRGVwcmVjYXRlZFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVz
dF9tYWNfcG9ydChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNYWNQb3J0KCkuZmxh
ZygpLCAiLS1wb3J0PW1hYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTWFjUG9ydCgpLnJ1
bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpLCBEZXByZWNhdGVkUG9ydCgpLnNjcmlwdF9zaGVsbF9j
b21tYW5kKCJydW4td2Via2l0LXRlc3RzIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTWFj
UG9ydCgpLmJ1aWxkX3dlYmtpdF9jb21tYW5kKCksIERlcHJlY2F0ZWRQb3J0KCkuc2NyaXB0X3No
ZWxsX2NvbW1hbmQoImJ1aWxkLXdlYmtpdCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1h
Y1BvcnQoKS5idWlsZF93ZWJraXRfY29tbWFuZChidWlsZF9zdHlsZT0iZGVidWciKSwgRGVwcmVj
YXRlZFBvcnQoKS5zY3JpcHRfc2hlbGxfY29tbWFuZCgiYnVpbGQtd2Via2l0IikgKyBbIi0tZGVi
dWciXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNYWNQb3J0KCkuYnVpbGRfd2Via2l0X2Nv
bW1hbmQoYnVpbGRfc3R5bGU9InJlbGVhc2UiKSwgRGVwcmVjYXRlZFBvcnQoKS5zY3JpcHRfc2hl
bGxfY29tbWFuZCgiYnVpbGQtd2Via2l0IikgKyBbIi0tcmVsZWFzZSJdKQorCisgICAgZGVmIHRl
c3RfZ3RrX3BvcnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoR3RrUG9ydCgpLmZs
YWcoKSwgIi0tcG9ydD1ndGsiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEd0a1BvcnQoKS5y
dW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoKSwgRGVwcmVjYXRlZFBvcnQoKS5zY3JpcHRfc2hlbGxf
Y29tbWFuZCgicnVuLXdlYmtpdC10ZXN0cyIpICsgWyItLWd0ayJdKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKEd0a1BvcnQoKS5idWlsZF93ZWJraXRfY29tbWFuZCgpLCBEZXByZWNhdGVkUG9y
dCgpLnNjcmlwdF9zaGVsbF9jb21tYW5kKCJidWlsZC13ZWJraXQiKSArIFsiLS1ndGsiLCAiLS11
cGRhdGUtZ3RrIiwgIi0tbm8td2Via2l0MiIsIERlcHJlY2F0ZWRQb3J0KCkubWFrZUFyZ3MoKV0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoR3RrUG9ydCgpLmJ1aWxkX3dlYmtpdF9jb21tYW5k
KGJ1aWxkX3N0eWxlPSJkZWJ1ZyIpLCBEZXByZWNhdGVkUG9ydCgpLnNjcmlwdF9zaGVsbF9jb21t
YW5kKCJidWlsZC13ZWJraXQiKSArIFsiLS1kZWJ1ZyIsICItLWd0ayIsICItLXVwZGF0ZS1ndGsi
LCAiLS1uby13ZWJraXQyIiwgRGVwcmVjYXRlZFBvcnQoKS5tYWtlQXJncygpXSkKKworICAgIGRl
ZiB0ZXN0X2d0a193azJfcG9ydChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChHdGtX
SzJQb3J0KCkuZmxhZygpLCAiLS1wb3J0PWd0ay13azIiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKEd0a1dLMlBvcnQoKS5ydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoKSwgRGVwcmVjYXRlZFBv
cnQoKS5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLXdlYmtpdC10ZXN0cyIpICsgWyItLWd0ayIs
ICItMiJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEd0a1dLMlBvcnQoKS5idWlsZF93ZWJr
aXRfY29tbWFuZCgpLCBEZXByZWNhdGVkUG9ydCgpLnNjcmlwdF9zaGVsbF9jb21tYW5kKCJidWls
ZC13ZWJraXQiKSArIFsiLS1ndGsiLCAiLS11cGRhdGUtZ3RrIiwgIi0tbm8td2Via2l0MSIsIERl
cHJlY2F0ZWRQb3J0KCkubWFrZUFyZ3MoKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoR3Rr
V0syUG9ydCgpLmJ1aWxkX3dlYmtpdF9jb21tYW5kKGJ1aWxkX3N0eWxlPSJkZWJ1ZyIpLCBEZXBy
ZWNhdGVkUG9ydCgpLnNjcmlwdF9zaGVsbF9jb21tYW5kKCJidWlsZC13ZWJraXQiKSArIFsiLS1k
ZWJ1ZyIsICItLWd0ayIsICItLXVwZGF0ZS1ndGsiLCAiLS1uby13ZWJraXQxIiwgRGVwcmVjYXRl
ZFBvcnQoKS5tYWtlQXJncygpXSkKKworICAgIGRlZiB0ZXN0X2VmbF9wb3J0KHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKEVmbFBvcnQoKS5mbGFnKCksICItLXBvcnQ9ZWZsIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChFZmxQb3J0KCkuYnVpbGRfd2Via2l0X2NvbW1hbmQoKSwg
RGVwcmVjYXRlZFBvcnQoKS5zY3JpcHRfc2hlbGxfY29tbWFuZCgiYnVpbGQtd2Via2l0IikgKyBb
Ii0tZWZsIiwgIi0tdXBkYXRlLWVmbCIsICItLW5vLXdlYmtpdDIiLCBEZXByZWNhdGVkUG9ydCgp
Lm1ha2VBcmdzKCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVmbFBvcnQoKS5idWlsZF93
ZWJraXRfY29tbWFuZChidWlsZF9zdHlsZT0iZGVidWciKSwgRGVwcmVjYXRlZFBvcnQoKS5zY3Jp
cHRfc2hlbGxfY29tbWFuZCgiYnVpbGQtd2Via2l0IikgKyBbIi0tZGVidWciLCAiLS1lZmwiLCAi
LS11cGRhdGUtZWZsIiwgIi0tbm8td2Via2l0MiIsIERlcHJlY2F0ZWRQb3J0KCkubWFrZUFyZ3Mo
KV0pCisKKyAgICBkZWYgdGVzdF9xdF9wb3J0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFF0UG9ydCgpLmZsYWcoKSwgIi0tcG9ydD1xdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoUXRQb3J0KCkucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCksIERlcHJlY2F0ZWRQb3J0KCku
c2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi13ZWJraXQtdGVzdHMiKSArIFsiLS1xdCJdKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFF0UG9ydCgpLmJ1aWxkX3dlYmtpdF9jb21tYW5kKCksIERl
cHJlY2F0ZWRQb3J0KCkuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImJ1aWxkLXdlYmtpdCIpICsgWyIt
LXF0IiwgIi0tbm8td2Via2l0MiIsIERlcHJlY2F0ZWRQb3J0KCkubWFrZUFyZ3MoKV0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoUXRQb3J0KCkuYnVpbGRfd2Via2l0X2NvbW1hbmQoYnVpbGRf
c3R5bGU9ImRlYnVnIiksIERlcHJlY2F0ZWRQb3J0KCkuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImJ1
aWxkLXdlYmtpdCIpICsgWyItLWRlYnVnIiwgIi0tcXQiLCAiLS1uby13ZWJraXQyIiwgRGVwcmVj
YXRlZFBvcnQoKS5tYWtlQXJncygpXSkKKworICAgIGRlZiB0ZXN0X3F0X3drMl9wb3J0KHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFF0V0syUG9ydCgpLmZsYWcoKSwgIi0tcG9ydD1x
dC13azIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFF0V0syUG9ydCgpLnJ1bl93ZWJraXRf
dGVzdHNfY29tbWFuZCgpLCBEZXByZWNhdGVkUG9ydCgpLnNjcmlwdF9zaGVsbF9jb21tYW5kKCJy
dW4td2Via2l0LXRlc3RzIikgKyBbIi0tcXQiLCAiLTIiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChRdFdLMlBvcnQoKS5idWlsZF93ZWJraXRfY29tbWFuZCgpLCBEZXByZWNhdGVkUG9ydCgp
LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJidWlsZC13ZWJraXQiKSArIFsiLS1xdCIsIERlcHJlY2F0
ZWRQb3J0KCkubWFrZUFyZ3MoKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUXRXSzJQb3J0
KCkuYnVpbGRfd2Via2l0X2NvbW1hbmQoYnVpbGRfc3R5bGU9ImRlYnVnIiksIERlcHJlY2F0ZWRQ
b3J0KCkuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImJ1aWxkLXdlYmtpdCIpICsgWyItLWRlYnVnIiwg
Ii0tcXQiLCBEZXByZWNhdGVkUG9ydCgpLm1ha2VBcmdzKCldKQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIGZyb20g
d2Via2l0cHkuY29tbW9uIGltcG9ydCBmaW5kX2ZpbGVzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBp
bXBvcnQgcmVhZF9jaGVja3N1bV9mcm9tX3BuZwogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6
ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHBh
dGgKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2
ZSwgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBp
bXBvcnQgU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBv
cnQgV2ViS2l0RmluZGVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9j
b25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgpAQCAtMTQxMyw5ICsxNDEzLDYg
QEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAjIFRoaXMgaXMgb3ZlcnJyaWRlbiBieSBw
b3J0cyB3aGljaCBuZWVkIGEgZmxhZyBwYXNzZWQgdG8gc2NyaXB0cyB0byBkaXN0aW5ndWlzaCB0
aGUgdXNlIG9mIHRoYXQgcG9ydC4KICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiB0b29s
aW5nX2ZsYWcoc2VsZik6Ci0gICAgICAgIHJldHVybiAiLS1wb3J0PSVzJXMiICUgKHNlbGYucG9y
dF9uYW1lLCAnLXdrMicgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKSBl
bHNlICcnKQotCiAgICAgIyBUaGlzIGlzIG1vZGVsZWQgYWZ0ZXIgd2Via2l0ZGlycy5wbSBhcmd1
bWVudHNGb3JDb25maWd1cmF0aW9uKCkgZnJvbSBvbGQtcnVuLXdlYmtpdC10ZXN0cwogICAgIGRl
ZiBfYXJndW1lbnRzX2Zvcl9jb25maWd1cmF0aW9uKHNlbGYpOgogICAgICAgICBjb25maWdfYXJn
cyA9IFtdCkBAIC0xNTM4LDUzICsxNTM1LDYgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAjIEJ5IGN1cnJlbnQgY29udmVudGlvbiwgdGhlIFdlYktpdDIgbmFtZSBpcyBhbHdheXMgbWFj
LXdrMiwgd2luLXdrMiwgbm90IG1hYy1sZW9wYXJkLXdrMiwgZXRjLAogICAgICAgICByZXR1cm4g
IiVzLXdrMiIgJSBzZWxmLnBvcnRfbmFtZQogCi0gICAgIyBXZSBtaWdodCBuZWVkIHRvIHBhc3Mg
c2NtIGludG8gdGhpcyBmdW5jdGlvbiBmb3Igc2NtLmNoZWNrb3V0X3Jvb3QKLSAgICBAc3RhdGlj
bWV0aG9kCi0gICAgZGVmIHNjcmlwdF9zaGVsbF9jb21tYW5kKHNjcmlwdF9uYW1lKToKLSAgICAg
ICAgc2NyaXB0X3BhdGggPSBvcy5wYXRoLmpvaW4oIlRvb2xzIiwgIlNjcmlwdHMiLCBzY3JpcHRf
bmFtZSkKLSAgICAgICAgcmV0dXJuIEV4ZWN1dGl2ZS5zaGVsbF9jb21tYW5kX2Zvcl9zY3JpcHQo
c2NyaXB0X3BhdGgpCi0KLSAgICBkZWYgbWFrZV9hcmdzKHNlbGYpOgotICAgICAgICBhcmdzID0g
Ii0tbWFrZWFyZ3M9XCItaiVzXCIiICUgc2VsZi5fZXhlY3V0aXZlLmNwdV9jb3VudCgpCi0gICAg
ICAgIGlmICJNQUtFRkxBR1MiIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICBhcmdzID0gIi0t
bWFrZWFyZ3M9XCIlc1wiIiAlIG9zLmVudmlyb25bIk1BS0VGTEFHUyJdCi0gICAgICAgIHJldHVy
biBhcmdzCi0KLSAgICBkZWYgdXBkYXRlX3dlYmtpdF9jb21tYW5kKHNlbGYsIG5vbl9pbnRlcmFj
dGl2ZT1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ1
cGRhdGUtd2Via2l0IikKLQotICAgIGRlZiBjaGVja193ZWJraXRfc3R5bGVfY29tbWFuZChzZWxm
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImNoZWNrLXdlYmtp
dC1zdHlsZSIpCi0KLSAgICBkZWYgcHJlcGFyZV9jaGFuZ2Vsb2dfY29tbWFuZChzZWxmKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInByZXBhcmUtQ2hhbmdlTG9n
IikKLQotICAgIGRlZiBidWlsZF93ZWJraXRfY29tbWFuZChzZWxmLCBidWlsZF9zdHlsZT1Ob25l
KToKLSAgICAgICAgY29tbWFuZCA9IHNlbGYuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImJ1aWxkLXdl
YmtpdCIpCi0gICAgICAgIGlmIGJ1aWxkX3N0eWxlID09ICJkZWJ1ZyI6Ci0gICAgICAgICAgICBj
b21tYW5kLmFwcGVuZCgiLS1kZWJ1ZyIpCi0gICAgICAgIGlmIGJ1aWxkX3N0eWxlID09ICJyZWxl
YXNlIjoKLSAgICAgICAgICAgIGNvbW1hbmQuYXBwZW5kKCItLXJlbGVhc2UiKQotICAgICAgICBy
ZXR1cm4gY29tbWFuZAotCi0gICAgZGVmIHJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5k
KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWph
dmFzY3JpcHRjb3JlLXRlc3RzIikKLQotICAgIGRlZiBydW5fd2Via2l0X3VuaXRfdGVzdHNfY29t
bWFuZChzZWxmKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBydW5fd2Via2l0X3Rl
c3RzX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnNjcmlwdF9zaGVsbF9jb21t
YW5kKCJydW4td2Via2l0LXRlc3RzIikKLQotICAgIGRlZiBydW5fcHl0aG9uX3VuaXR0ZXN0c19j
b21tYW5kKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zY3JpcHRfc2hlbGxfY29tbWFuZCgi
dGVzdC13ZWJraXRweSIpCi0KLSAgICBkZWYgcnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBzZWxmLnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ0ZXN0LXdlYmtp
dHBlcmwiKQotCi0gICAgZGVmIHJ1bl9iaW5kaW5nc190ZXN0c19jb21tYW5kKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZi5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWJpbmRpbmdzLXRlc3Rz
IikKLQogCiBjbGFzcyBWaXJ0dWFsVGVzdFN1aXRlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIG5hbWUsIGJhc2UsIGFyZ3MsIHRlc3RzPU5vbmUpOgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE1NzY3NykKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC00NjMsMTIgKzQ2Myw2IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9b3B0cGFyc2UuVmFsdWVz
KHsnYnVpbGRfZGlyZWN0b3J5JzogJy9teS1idWlsZC1kaXJlY3RvcnkvJ30pKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBvcnQuX2J1aWxkX3BhdGgoKSwgJy9teS1idWlsZC1kaXJlY3Rvcnkv
UmVsZWFzZScpCiAKLSAgICBkZWYgdGVzdF9idWlsZF93ZWJraXRfY29tbWFuZChzZWxmKToKLSAg
ICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
b3J0LmJ1aWxkX3dlYmtpdF9jb21tYW5kKCksIFsiVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQi
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmJ1aWxkX3dlYmtpdF9jb21tYW5kKCJy
ZWxlYXNlIiksIFsiVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQiLCAiLS1yZWxlYXNlIl0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5idWlsZF93ZWJraXRfY29tbWFuZCgiZGVidWci
KSwgWyJUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCIsICItLWRlYnVnIl0pCi0KIAogY2xhc3Mg
TmF0dXJhbENvbXBhcmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2Vs
Zik6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZWZsX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9lZmxfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9lZmxfdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDYgQEAgZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm91dHB1dGNhcHR1cgogZnJvbSB3ZWJraXRweS5wb3J0LmVmbCBpbXBvcnQg
RWZsUG9ydAogZnJvbSB3ZWJraXRweS5wb3J0LnB1bHNlYXVkaW9fc2FuaXRpemVyX21vY2sgaW1w
b3J0IFB1bHNlQXVkaW9TYW5pdGl6ZXJNb2NrCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBv
cnRfdGVzdGNhc2UKLWZyb20gd2Via2l0cHkucG9ydC5iYXNlIGltcG9ydCBQb3J0Ci1mcm9tIHdl
YmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiAKIAogY2xhc3MgRWZsUG9y
dFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgpAQCAtNTEsMzMgKzQ5LDYgQEAgY2xh
c3MgRWZsUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdAogICAgICAgICBleHBlY3RlZF9s
b2dzID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNoZXInLCAn
LS1yZWxlYXNlJywgJy0tZWZsJywgJ2ZpbGU6Ly90ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNr
b3V0XG4iCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0
LnNob3dfcmVzdWx0c19odG1sX2ZpbGUsIFsidGVzdC5odG1sIl0sIGV4cGVjdGVkX2xvZ3M9ZXhw
ZWN0ZWRfbG9ncykKIAotICAgIGRlZiB0ZXN0X2NvbW1hbmRzKHNlbGYpOgotICAgICAgICBwb3J0
ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSJlZmwiKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBvcnQudG9vbGluZ19mbGFnKCksICItLXBvcnQ9ZWZsIikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwb3J0LnVwZGF0ZV93ZWJraXRfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9j
b21tYW5kKCJ1cGRhdGUtd2Via2l0IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5j
aGVja193ZWJraXRfc3R5bGVfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJj
aGVjay13ZWJraXQtc3R5bGUiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnByZXBh
cmVfY2hhbmdlbG9nX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicHJlcGFy
ZS1DaGFuZ2VMb2ciKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmJ1aWxkX3dlYmtp
dF9jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImJ1aWxkLXdlYmtpdCIpICsg
WyItLWVmbCIsICItLXVwZGF0ZS1lZmwiLCAiLS1uby13ZWJraXQyIiwgcG9ydC5tYWtlX2FyZ3Mo
KV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5famF2YXNjcmlwdGNvcmVfdGVz
dHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl93ZWJraXRfdW5p
dF90ZXN0c19jb21tYW5kKCksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5y
dW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVu
LXdlYmtpdC10ZXN0cyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3B5dGhv
bl91bml0dGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ0ZXN0LXdl
YmtpdHB5IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fcGVybF91bml0dGVz
dHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ0ZXN0LXdlYmtpdHBlcmwi
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9iaW5kaW5nc190ZXN0c19jb21t
YW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi1iaW5kaW5ncy10ZXN0cyIpKQot
Ci0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9ImVmbCIsIG9wdGlvbnM9
TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBvcnQudG9vbGluZ19mbGFnKCksICItLXBvcnQ9ZWZsLXdrMiIpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocG9ydC51cGRhdGVfd2Via2l0X2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRf
c2hlbGxfY29tbWFuZCgidXBkYXRlLXdlYmtpdCIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBvcnQuY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29t
bWFuZCgiY2hlY2std2Via2l0LXN0eWxlIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9y
dC5wcmVwYXJlX2NoYW5nZWxvZ19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQo
InByZXBhcmUtQ2hhbmdlTG9nIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5idWls
ZF93ZWJraXRfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJidWlsZC13ZWJr
aXQiKSArIFsiLS1lZmwiLCAiLS11cGRhdGUtZWZsIiwgIi0tbm8td2Via2l0MSIsIHBvcnQubWFr
ZV9hcmdzKCldKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX2phdmFzY3JpcHRj
b3JlX3Rlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWphdmFz
Y3JpcHRjb3JlLXRlc3RzIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fd2Vi
a2l0X3VuaXRfdGVzdHNfY29tbWFuZCgpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBvcnQucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1h
bmQoInJ1bi13ZWJraXQtdGVzdHMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1
bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgi
dGVzdC13ZWJraXRweSIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3Blcmxf
dW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidGVzdC13ZWJr
aXRwZXJsIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fYmluZGluZ3NfdGVz
dHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4tYmluZGluZ3MtdGVz
dHMiKSkKLQogICAgIGRlZiB0ZXN0X2dldF9jcmFzaF9sb2coc2VsZik6CiAgICAgICAgICMgVGhp
cyBmdW5jdGlvbiB0ZXN0ZWQgaW4gbGludXhfZ2V0X2NyYXNoX2xvZ191bml0dGVzdC5weQogICAg
ICAgICBwYXNzCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGtfdW5pdHRl
c3QucHkJKHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9n
dGtfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cgogZnJvbSB3ZWJraXRweS5wb3J0Lmd0ayBp
bXBvcnQgR3RrUG9ydAogZnJvbSB3ZWJraXRweS5wb3J0LnB1bHNlYXVkaW9fc2FuaXRpemVyX21v
Y2sgaW1wb3J0IFB1bHNlQXVkaW9TYW5pdGl6ZXJNb2NrCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1w
b3J0IHBvcnRfdGVzdGNhc2UKLWZyb20gd2Via2l0cHkucG9ydC5iYXNlIGltcG9ydCBQb3J0CiBm
cm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50
b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogCkBAIC04NSwzMCArODQsMyBAQCBjbGFz
cyBHdGtQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0CiAgICAgZGVmIHRlc3RfZ2V0X2Ny
YXNoX2xvZyhzZWxmKToKICAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIHRlc3RlZCBpbiBsaW51eF9n
ZXRfY3Jhc2hfbG9nX3VuaXR0ZXN0LnB5CiAgICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0X2Nv
bW1hbmRzKHNlbGYpOgotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSJn
dGsiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQudG9vbGluZ19mbGFnKCksICItLXBv
cnQ9Z3RrIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnVwZGF0ZV93ZWJraXRfY29t
bWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ1cGRhdGUtd2Via2l0IikpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5jaGVja193ZWJraXRfc3R5bGVfY29tbWFuZCgpLCBQ
b3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJjaGVjay13ZWJraXQtc3R5bGUiKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwb3J0LnByZXBhcmVfY2hhbmdlbG9nX2NvbW1hbmQoKSwgUG9ydC5z
Y3JpcHRfc2hlbGxfY29tbWFuZCgicHJlcGFyZS1DaGFuZ2VMb2ciKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwb3J0LmJ1aWxkX3dlYmtpdF9jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxs
X2NvbW1hbmQoImJ1aWxkLXdlYmtpdCIpICsgWyItLWd0ayIsICItLXVwZGF0ZS1ndGsiLCAiLS1u
by13ZWJraXQyIiwgcG9ydC5tYWtlX2FyZ3MoKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cG9ydC5ydW5famF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVs
bF9jb21tYW5kKCJydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMiKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwb3J0LnJ1bl93ZWJraXRfdW5pdF90ZXN0c19jb21tYW5kKCksIE5vbmUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoKSwgUG9y
dC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLXdlYmtpdC10ZXN0cyIpICsgWyItLWd0ayJdKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFu
ZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ0ZXN0LXdlYmtpdHB5IikpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fcGVybF91bml0dGVzdHNfY29tbWFuZCgpLCBQb3J0
LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ0ZXN0LXdlYmtpdHBlcmwiKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwb3J0LnJ1bl9iaW5kaW5nc190ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0
X3NoZWxsX2NvbW1hbmQoInJ1bi1iaW5kaW5ncy10ZXN0cyIpKQotCi0gICAgICAgIHBvcnQgPSBz
ZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9Imd0ayIsIG9wdGlvbnM9TW9ja09wdGlvbnMod2Via2l0
X3Rlc3RfcnVubmVyPVRydWUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQudG9vbGlu
Z19mbGFnKCksICItLXBvcnQ9Z3RrLXdrMiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9y
dC51cGRhdGVfd2Via2l0X2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidXBk
YXRlLXdlYmtpdCIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuY2hlY2tfd2Via2l0
X3N0eWxlX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgiY2hlY2std2Via2l0
LXN0eWxlIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wcmVwYXJlX2NoYW5nZWxv
Z19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInByZXBhcmUtQ2hhbmdlTG9n
IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5idWlsZF93ZWJraXRfY29tbWFuZCgp
LCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJidWlsZC13ZWJraXQiKSArIFsiLS1ndGsiLCAi
LS11cGRhdGUtZ3RrIiwgIi0tbm8td2Via2l0MSIsIHBvcnQubWFrZV9hcmdzKCldKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX2phdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQo
KSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzIikp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fd2Via2l0X3VuaXRfdGVzdHNfY29t
bWFuZCgpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3dlYmtpdF90
ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi13ZWJraXQtdGVz
dHMiKSArIFsiLS1ndGsiLCAiLTIiXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1
bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgi
dGVzdC13ZWJraXRweSIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3Blcmxf
dW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidGVzdC13ZWJr
aXRwZXJsIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fYmluZGluZ3NfdGVz
dHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4tYmluZGluZ3MtdGVz
dHMiKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWNfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5w
eQkocmV2aXNpb24gMTU3Njc3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDEzIEBACiAjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCitmcm9tIHdlYmtpdHB5LnBvcnQubWFjIGltcG9ydCBNYWNQ
b3J0Citmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0
aXZlLCBNb2NrRXhlY3V0aXZlMiwgTW9ja1Byb2Nlc3MsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAot
ZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCi1mcm9tIHdlYmtpdHB5LnBv
cnQuYmFzZSBpbXBvcnQgUG9ydAotZnJvbSB3ZWJraXRweS5wb3J0Lm1hYyBpbXBvcnQgTWFjUG9y
dAotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogCiAKIGNs
YXNzIE1hY1Rlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgpAQCAtMjU2LDMwICsyNTUs
MyBAQCBqYXZhLwogICAgICAgICBwb3J0Ll9ydW5fc2NyaXB0ID0gcnVuX3NjcmlwdAogICAgICAg
ICBwb3J0Ll9idWlsZF9kcml2ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYXJn
cywgW10pCi0KLSAgICBkZWYgdGVzdF9jb21tYW5kcyhzZWxmKToKLSAgICAgICAgcG9ydCA9IHNl
bGYubWFrZV9wb3J0KHBvcnRfbmFtZT0ibWFjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
b3J0LnRvb2xpbmdfZmxhZygpLCAiLS1wb3J0PW1hYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC51cGRhdGVfd2Via2l0X2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFu
ZCgidXBkYXRlLXdlYmtpdCIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuY2hlY2tf
d2Via2l0X3N0eWxlX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgiY2hlY2st
d2Via2l0LXN0eWxlIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wcmVwYXJlX2No
YW5nZWxvZ19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInByZXBhcmUtQ2hh
bmdlTG9nIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5idWlsZF93ZWJraXRfY29t
bWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJidWlsZC13ZWJraXQiKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5k
KCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyIp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3dlYmtpdF91bml0X3Rlc3RzX2Nv
bW1hbmQoKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl93ZWJraXRf
dGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4td2Via2l0LXRl
c3RzIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fcHl0aG9uX3VuaXR0ZXN0
c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInRlc3Qtd2Via2l0cHkiKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5k
KCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInRlc3Qtd2Via2l0cGVybCIpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX2JpbmRpbmdzX3Rlc3RzX2NvbW1hbmQoKSwgUG9y
dC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWJpbmRpbmdzLXRlc3RzIikpCi0KLSAgICAgICAg
cG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0ibWFjIiwgb3B0aW9ucz1Nb2NrT3B0aW9u
cyh3ZWJraXRfdGVzdF9ydW5uZXI9VHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9y
dC50b29saW5nX2ZsYWcoKSwgIi0tcG9ydD1tYWMtd2syIikKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0LnVwZGF0ZV93ZWJraXRfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21t
YW5kKCJ1cGRhdGUtd2Via2l0IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5jaGVj
a193ZWJraXRfc3R5bGVfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJjaGVj
ay13ZWJraXQtc3R5bGUiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnByZXBhcmVf
Y2hhbmdlbG9nX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicHJlcGFyZS1D
aGFuZ2VMb2ciKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmJ1aWxkX3dlYmtpdF9j
b21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImJ1aWxkLXdlYmtpdCIpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX2phdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1h
bmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWphdmFzY3JpcHRjb3JlLXRlc3Rz
IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fd2Via2l0X3VuaXRfdGVzdHNf
Y29tbWFuZCgpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3dlYmtp
dF90ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi13ZWJraXQt
dGVzdHMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9weXRob25fdW5pdHRl
c3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidGVzdC13ZWJraXRweSIp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1h
bmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidGVzdC13ZWJraXRwZXJsIikpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fYmluZGluZ3NfdGVzdHNfY29tbWFuZCgpLCBQ
b3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4tYmluZGluZ3MtdGVzdHMiKSkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CShyZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNTM3LDM5ICs1
MzcsNiBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICAgICAgICAgIFZpcnR1YWxUZXN0U3Vp
dGUoJ3ZpcnR1YWwvc2tpcHBlZCcsICdmYWlsdXJlcy9leHBlY3RlZCcsIFsnLS12aXJ0dWFsLWFy
ZzInXSksCiAgICAgICAgIF0KIAotICAgIGRlZiBtYWtlX2FyZ3Moc2VsZik6Ci0gICAgICAgIHJl
dHVybiAnLS1tYWtlYXJncz0iLWo0IicKLQotICAgIGRlZiBjaGVja193ZWJraXRfc3R5bGVfY29t
bWFuZChzZWxmKToKLSAgICAgICAgcmV0dXJuIFsibW9jay1jaGVjay13ZWJraXQtc3R5bGUiXQot
Ci0gICAgZGVmIHVwZGF0ZV93ZWJraXRfY29tbWFuZChzZWxmLCBub25faW50ZXJhY3RpdmU9RmFs
c2UpOgotICAgICAgICByZXR1cm4gWyJtb2NrLXVwZGF0ZS13ZWJraXQiXQotCi0gICAgZGVmIGJ1
aWxkX3dlYmtpdF9jb21tYW5kKHNlbGYsIGJ1aWxkX3N0eWxlPU5vbmUpOgotICAgICAgICByZXR1
cm4gWyJtb2NrLWJ1aWxkLXdlYmtpdCJdCi0KLSAgICBkZWYgcHJlcGFyZV9jaGFuZ2Vsb2dfY29t
bWFuZChzZWxmKToKLSAgICAgICAgcmV0dXJuIFsnbW9jay1wcmVwYXJlLUNoYW5nZUxvZyddCi0K
LSAgICBkZWYgcnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFuZChzZWxmKToKLSAgICAgICAgcmV0
dXJuIFsnbW9jay10ZXN0LXdlYmtpdHB5J10KLQotICAgIGRlZiBydW5fcGVybF91bml0dGVzdHNf
Y29tbWFuZChzZWxmKToKLSAgICAgICAgcmV0dXJuIFsnbW9jay10ZXN0LXdlYmtpdHBlcmwnXQot
Ci0gICAgZGVmIHJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kKHNlbGYpOgotICAgICAg
ICByZXR1cm4gWydtb2NrLXJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyddCi0KLSAgICBkZWYgcnVu
X3dlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBbJ21vY2st
cnVuLXdlYmtpdC11bml0LXRlc3RzJ10KLQotICAgIGRlZiBydW5fd2Via2l0X3Rlc3RzX2NvbW1h
bmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBbJ21vY2stcnVuLXdlYmtpdC10ZXN0cyddCi0KLSAg
ICBkZWYgcnVuX2JpbmRpbmdzX3Rlc3RzX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBb
J21vY2stcnVuLWJpbmRpbmdzLXRlc3RzJ10KLQogCiBjbGFzcyBUZXN0RHJpdmVyKERyaXZlcik6
CiAgICAgIiIiVGVzdC9EdW1teSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRHVtcFJlbmRlclRyZWUg
aW50ZXJmYWNlLiIiIgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkJKHJldmlz
aW9uIDE1NzY3NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTAgQEAgZnJvbSBvcHRwYXJzZSBpbXBvcnQgbWFrZV9v
cHRpb24KIGltcG9ydCBvcwogaW1wb3J0IHRocmVhZGluZwogCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5jb25maWcucG9ydHMgaW1wb3J0IERlcHJlY2F0ZWRQb3J0CiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuaXJjIGltcG9ydCBp
cmNwcm94eQogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnN0YXR1c3NlcnZlciBpbXBvcnQgU3Rh
dHVzU2VydmVyCi1mcm9tIHdlYmtpdHB5LnBvcnQuZmFjdG9yeSBpbXBvcnQgUG9ydEZhY3RvcnkK
IGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBNdWx0aUNvbW1hbmRU
b29sCiBmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IGNvbW1hbmRzCiAKQEAgLTYwLDEwICs2MCwx
MCBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29sLCBIb3N0CiAKICAgICAgICAg
c2VsZi53YWtldXBfZXZlbnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBzZWxmLl9pcmMg
PSBOb25lCi0gICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCisgICAgICAgIHNlbGYuX2RlcHJlY2F0
ZWRfcG9ydCA9IE5vbmUKIAotICAgIGRlZiBwb3J0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5fcG9ydAorICAgIGRlZiBkZXByZWNhdGVkX3BvcnQoc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9kZXByZWNhdGVkX3BvcnQKIAogICAgIGRlZiBwYXRoKHNlbGYpOgogICAgICAgICByZXR1
cm4gc2VsZi5fcGF0aApAQCAtOTksNyArOTksNyBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNv
bW1hbmRUb29sLCBIb3N0CiAgICAgICAgIGlmIG9wdGlvbnMuaXJjX3Bhc3N3b3JkOgogICAgICAg
ICAgICAgc2VsZi5pcmNfcGFzc3dvcmQgPSBvcHRpb25zLmlyY19wYXNzd29yZAogICAgICAgICAj
IElmIG9wdGlvbnMucG9ydCBpcyBOb25lLCB3ZSdsbCBnZXQgdGhlIGRlZmF1bHQgcG9ydCBmb3Ig
dGhpcyBwbGF0Zm9ybS4KLSAgICAgICAgc2VsZi5fcG9ydCA9IHNlbGYucG9ydF9mYWN0b3J5Lmdl
dChvcHRpb25zLnBvcnQpCisgICAgICAgIHNlbGYuX2RlcHJlY2F0ZWRfcG9ydCA9IERlcHJlY2F0
ZWRQb3J0LnBvcnQob3B0aW9ucy5wb3J0KQogCiAgICAgZGVmIHNob3VsZF9leGVjdXRlX2NvbW1h
bmQoc2VsZiwgY29tbWFuZCk6CiAgICAgICAgIGlmIGNvbW1hbmQucmVxdWlyZXNfbG9jYWxfY29t
bWl0cyBhbmQgbm90IHNlbGYuc2NtKCkuc3VwcG9ydHNfbG9jYWxfY29tbWl0cygpOgpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQkocmV2aXNpb24gMTU3Njc3KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw5IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQg
TW8KIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdC5idWlsZGJvdF9tb2NrIGltcG9y
dCBNb2NrQnVpbGRCb3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5zdGF0dXNzZXJ2ZXJfbW9j
ayBpbXBvcnQgTW9ja1N0YXR1c1NlcnZlcgogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmlyYy5p
cmNfbW9jayBpbXBvcnQgTW9ja0lSQwotZnJvbSB3ZWJraXRweS5wb3J0LnRlc3QgaW1wb3J0IFRl
c3RQb3J0CisKKyMgRklYTUU6IE9sZC1zdHlsZSAiUG9ydHMiIG5lZWQgdG8gZGllIGFuZCBiZSBy
ZXBsYWNlZCBieSBtb2Rlcm4gbGF5b3V0X3Rlc3RzLnBvcnQgd2hpY2ggbmVlZHMgdG8gbW92ZSB0
byBjb21tb24uCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcucG9ydHNfbW9jayBpbXBvcnQg
TW9ja1BvcnQKIAogCiAjIEZJWE1FOiBXZSBzaG91bGQganVzdCByZXBsYWNlIHRoaXMgd2l0aCBv
cHRwYXJzZS5WYWx1ZXMoZGVmYXVsdD1rd2FyZ3MpCkBAIC02MiwxNiArNjQsMTUgQEAgY2xhc3Mg
TW9ja1Rvb2woTW9ja0hvc3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2Fy
Z3MpOgogICAgICAgICBNb2NrSG9zdC5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCiAK
LSAgICAgICAgc2VsZi5fcG9ydCA9IFRlc3RQb3J0KHNlbGYpCi0gICAgICAgIHNlbGYuX3BvcnQu
bmFtZSA9IGxhbWJkYTogIk1vY2tQb3J0IgorICAgICAgICBzZWxmLl9kZXByZWNhdGVkX3BvcnQg
PSBNb2NrUG9ydCgpCiAgICAgICAgIHNlbGYuc3RhdHVzX3NlcnZlciA9IE1vY2tTdGF0dXNTZXJ2
ZXIoKQogCiAgICAgICAgIHNlbGYuX2lyYyA9IE5vbmUKICAgICAgICAgc2VsZi5pcmNfcGFzc3dv
cmQgPSAiTU9DSyBpcmMgcGFzc3dvcmQiCiAgICAgICAgIHNlbGYud2FrZXVwX2V2ZW50ID0gdGhy
ZWFkaW5nLkV2ZW50KCkKIAotICAgIGRlZiBwb3J0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5fcG9ydAorICAgIGRlZiBkZXByZWNhdGVkX3BvcnQoc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9kZXByZWNhdGVkX3BvcnQKIAogICAgIGRlZiBwYXRoKHNlbGYpOgogICAgICAgICByZXR1
cm4gImVjaG8iCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVz
dHJlcG9ydGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvZmxha3l0ZXN0cmVwb3J0ZXIucHkJKHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXIucHkJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgRmxha3lUZXN0UmVwb3J0ZXIob2JqZWN0KToKICAgICAg
ICAgc2VsZi5fdG9vbCA9IHRvb2wKICAgICAgICAgc2VsZi5fYm90X25hbWUgPSBib3RfbmFtZQog
ICAgICAgICAjIEZJWE1FOiBVc2UgdGhlIHJlYWwgcG9ydCBvYmplY3QKLSAgICAgICAgc2VsZi5f
Ym90X2luZm8gPSBCb3RJbmZvKHRvb2wsIHRvb2wucG9ydCgpLm5hbWUoKSkKKyAgICAgICAgc2Vs
Zi5fYm90X2luZm8gPSBCb3RJbmZvKHRvb2wsIHRvb2wuZGVwcmVjYXRlZF9wb3J0KCkubmFtZSgp
KQogCiAgICAgZGVmIF9hdXRob3JfZW1haWxzX2Zvcl90ZXN0KHNlbGYsIGZsYWt5X3Rlc3QpOgog
ICAgICAgICB0ZXN0X3BhdGggPSBwYXRoX2Zvcl9sYXlvdXRfdGVzdChmbGFreV90ZXN0KQpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5CShy
ZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19j
b21tYW5kLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAgY2xhc3MgUm9sbG91
dChJUkNDb21tYW5kKToKIAogICAgIGRlZiBfdXBkYXRlX3dvcmtpbmdfY29weShzZWxmLCB0b29s
KToKICAgICAgICAgdG9vbC5zY20oKS5kaXNjYXJkX2xvY2FsX2NoYW5nZXMoKQotICAgICAgICB0
b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwodG9vbC5wb3J0KCkudXBkYXRlX3dl
YmtpdF9jb21tYW5kKCksIHF1aWV0PVRydWUsIGN3ZD10b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3Qp
CisgICAgICAgIHRvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbCh0b29sLmRlcHJl
Y2F0ZWRfcG9ydCgpLnVwZGF0ZV93ZWJraXRfY29tbWFuZCgpLCBxdWlldD1UcnVlLCBjd2Q9dG9v
bC5zY20oKS5jaGVja291dF9yb290KQogCiAgICAgZGVmIF9jaGVja19kaWZmX2ZhaWx1cmUoc2Vs
ZiwgZXJyb3JfbG9nLCB0b29sKToKICAgICAgICAgaWYgbm90IGVycm9yX2xvZzoKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxv
YWRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MTY4LDcgKzE2OCw3IEBAIE1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ21vY2stdGVzdC0K
IFJ1bm5pbmcgUGVybCB1bml0IHRlc3RzCiBNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydt
b2NrLXRlc3Qtd2Via2l0cGVybCddLCBjd2Q9L21vY2stY2hlY2tvdXQKIFJ1bm5pbmcgSmF2YVNj
cmlwdENvcmUgdGVzdHMKLU1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ21vY2stcnVuLWph
dmFzY3JpcHRjb3JlLXRlc3RzJ10sIGN3ZD0vbW9jay1jaGVja291dAorTU9DSyBydW5fYW5kX3Ro
cm93X2lmX2ZhaWw6IFsnbW9jay1ydW4tamF2YWNyaXB0Y29yZS10ZXN0cyddLCBjd2Q9L21vY2st
Y2hlY2tvdXQKIFJ1bm5pbmcgYmluZGluZ3MgZ2VuZXJhdGlvbiB0ZXN0cwogTU9DSyBydW5fYW5k
X3Rocm93X2lmX2ZhaWw6IFsnbW9jay1ydW4tYmluZGluZ3MtdGVzdHMnXSwgY3dkPS9tb2NrLWNo
ZWNrb3V0CiBSdW5uaW5nIFdlYktpdCB1bml0IHRlc3RzCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0u
cHkJKHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAgaW1wb3J0IGxvZ2dpbmcKIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcucG9ydHMgaW1wb3J0IERlcHJlY2F0ZWRQb3J0
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3Rl
bQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJy
b3IKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZWFybHl3YXJuaW5nc3lzdGVtdGFzayBpbXBvcnQg
RWFybHlXYXJuaW5nU3lzdGVtVGFzaywgRWFybHlXYXJuaW5nU3lzdGVtVGFza0RlbGVnYXRlCkBA
IC0xMDIsNyArMTAzLDcgQEAgY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0oQWJzdHJh
YwogICAgICAgICByZXR1cm4gc2VsZi5uYW1lCiAKICAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwg
Y29tbWFuZCk6Ci0gICAgICAgIHNlbGYucnVuX3dlYmtpdF9wYXRjaChjb21tYW5kICsgW3NlbGYu
X3BvcnQudG9vbGluZ19mbGFnKCldKQorICAgICAgICBzZWxmLnJ1bl93ZWJraXRfcGF0Y2goY29t
bWFuZCArIFtzZWxmLl9kZXByZWNhdGVkX3BvcnQuZmxhZygpXSkKIAogICAgIGRlZiBjb21tYW5k
X3Bhc3NlZChzZWxmLCBtZXNzYWdlLCBwYXRjaCk6CiAgICAgICAgIHBhc3MKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQkocmV2aXNpb24g
MTU3Njc3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBmcm9tIG9wdHBhcnNlIGltcG9ydCBt
YWtlX29wdGlvbgogZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSB3ZWJraXRw
eS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnZhbGlkYXRvciBpbXBvcnQgQ29tbWl0dGVyVmFsaWRh
dG9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcucG9ydHMgaW1wb3J0IERlcHJlY2F0ZWRQ
b3J0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEF0dGFjaG1lbnQK
IGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5zdGF0dXNzZXJ2ZXIgaW1wb3J0IFN0YXR1c1NlcnZl
cgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJy
b3IKQEAgLTI3Miw5ICsyNzMsMTEgQEAgY2xhc3MgUGF0Y2hQcm9jZXNzaW5nUXVldWUoQWJzdHJh
Y3RQYXRjaAogICAgICAgICBBYnN0cmFjdFBhdGNoUXVldWUuYmVnaW5fd29ya19xdWV1ZShzZWxm
KQogICAgICAgICBpZiBub3Qgc2VsZi5wb3J0X25hbWU6CiAgICAgICAgICAgICByZXR1cm4KLSAg
ICAgICAgc2VsZi5fcG9ydCA9IHNlbGYuX3Rvb2wucG9ydF9mYWN0b3J5LmdldChzZWxmLl9uZXdf
cG9ydF9uYW1lX2Zyb21fb2xkKHNlbGYucG9ydF9uYW1lLCBzZWxmLl90b29sLnBsYXRmb3JtKSkK
KyAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNlbGYuX2RlcHJlY2F0ZWRf
cG9ydC5mbGFnKCkKKyAgICAgICAgc2VsZi5fZGVwcmVjYXRlZF9wb3J0ID0gRGVwcmVjYXRlZFBv
cnQucG9ydChzZWxmLnBvcnRfbmFtZSkKICAgICAgICAgIyBGSVhNRTogVGhpcyB2aW9sYXRlcyBh
YnN0cmFjdGlvbgotICAgICAgICBzZWxmLl90b29sLl9wb3J0ID0gc2VsZi5fcG9ydAorICAgICAg
ICBzZWxmLl90b29sLl9kZXByZWNhdGVkX3BvcnQgPSBzZWxmLl9kZXByZWNhdGVkX3BvcnQKKyAg
ICAgICAgc2VsZi5fcG9ydCA9IHNlbGYuX3Rvb2wucG9ydF9mYWN0b3J5LmdldChzZWxmLl9uZXdf
cG9ydF9uYW1lX2Zyb21fb2xkKHNlbGYucG9ydF9uYW1lLCBzZWxmLl90b29sLnBsYXRmb3JtKSkK
IAogICAgIGRlZiBfdXBsb2FkX3Jlc3VsdHNfYXJjaGl2ZV9mb3JfcGF0Y2goc2VsZiwgcGF0Y2gs
IHJlc3VsdHNfYXJjaGl2ZV96aXApOgogICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydDoKQEAgLTM0
Nyw3ICszNTAsNyBAQCBjbGFzcyBDb21taXRRdWV1ZShQYXRjaFByb2Nlc3NpbmdRdWV1ZSwKICAg
ICAjIENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlIG1ldGhvZHMKIAogICAgIGRlZiBydW5fY29tbWFu
ZChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgc2VsZi5ydW5fd2Via2l0X3BhdGNoKGNvbW1hbmQg
KyBbc2VsZi5fcG9ydC50b29saW5nX2ZsYWcoKV0pCisgICAgICAgIHNlbGYucnVuX3dlYmtpdF9w
YXRjaChjb21tYW5kICsgW3NlbGYuX2RlcHJlY2F0ZWRfcG9ydC5mbGFnKCldKQogCiAgICAgZGVm
IGNvbW1hbmRfcGFzc2VkKHNlbGYsIG1lc3NhZ2UsIHBhdGNoKToKICAgICAgICAgc2VsZi5fdXBk
YXRlX3N0YXR1cyhtZXNzYWdlLCBwYXRjaD1wYXRjaCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9idWlsZC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvYnVpbGQucHkJKHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9idWlsZC5weQkod29ya2luZyBjb3B5KQpAQCAtNDgs
NyArNDgsNyBAQCBjbGFzcyBCdWlsZChBYnN0cmFjdFN0ZXApOgogICAgICAgICBlbnZpcm9ubWVu
dC5kaXNhYmxlX2djY19zbWFydHF1b3RlcygpCiAgICAgICAgIGVudiA9IGVudmlyb25tZW50LnRv
X2RpY3Rpb25hcnkoKQogCi0gICAgICAgIGJ1aWxkX3dlYmtpdF9jb21tYW5kID0gc2VsZi5fdG9v
bC5wb3J0KCkuYnVpbGRfd2Via2l0X2NvbW1hbmQoYnVpbGRfc3R5bGU9YnVpbGRfc3R5bGUpCisg
ICAgICAgIGJ1aWxkX3dlYmtpdF9jb21tYW5kID0gc2VsZi5fdG9vbC5kZXByZWNhdGVkX3BvcnQo
KS5idWlsZF93ZWJraXRfY29tbWFuZChidWlsZF9zdHlsZT1idWlsZF9zdHlsZSkKICAgICAgICAg
c2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGJ1aWxkX3dlYmtpdF9j
b21tYW5kLCBzZWxmLl9vcHRpb25zLnF1aWV0LAogICAgICAgICAgICAgY3dkPXNlbGYuX3Rvb2wu
c2NtKCkuY2hlY2tvdXRfcm9vdCwgZW52PWVudikKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkJKHJldmlzaW9uIDE1NzY3NykKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RTdGVwKToK
ICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHNlbGYuX29wdGlvbnMuY2hlY2tfc3R5bGVfZmlsdGVy
KQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9h
bmRfdGhyb3dfaWZfZmFpbChzZWxmLl90b29sLnBvcnQoKS5jaGVja193ZWJraXRfc3R5bGVfY29t
bWFuZCgpICsgYXJncywgY3dkPXNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkKKyAgICAg
ICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90
b29sLmRlcHJlY2F0ZWRfcG9ydCgpLmNoZWNrX3dlYmtpdF9zdHlsZV9jb21tYW5kKCkgKyBhcmdz
LCBjd2Q9c2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290KQogICAgICAgICBleGNlcHQgU2Ny
aXB0RXJyb3IsIGU6CiAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFjdGl2
ZToKICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcmUtcmFpc2UgdGhlIGV4Y2VwdGlvbiBo
ZXJlIHRvIGhhdmUgdGhlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
Y29tbWl0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9jb21taXQucHkJKHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9jb21taXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgY2xh
c3MgQ29tbWl0KEFic3RyYWN0U3RlcCk6CiAgICAgICAgIGFyZ3MgPSBbIi0tZGlmZi1maWxlcyJd
CiAgICAgICAgIGFyZ3MuZXh0ZW5kKHRlc3RfZXhwZWN0YXRpb25zX2ZpbGVzKQogICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2Zh
aWwoc2VsZi5fdG9vbC5wb3J0KCkuY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoKSArIGFyZ3Ms
IGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCisgICAgICAgICAgICBzZWxmLl90
b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5fdG9vbC5kZXByZWNhdGVk
X3BvcnQoKS5jaGVja193ZWJraXRfc3R5bGVfY29tbWFuZCgpICsgYXJncywgY3dkPXNlbGYuX3Rv
b2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkKICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgog
ICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAgICAg
ICAgICAgcmFpc2UKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVw
YXJlY2hhbmdlbG9nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5CShyZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQkod29ya2luZyBj
b3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2coQWJzdHJhY3RT
dGVwKToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLnVwZGF0ZV9jaGFuZ2Vsb2dz
OgogICAgICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGFyZ3MgPSBzZWxmLl90b29sLnBv
cnQoKS5wcmVwYXJlX2NoYW5nZWxvZ19jb21tYW5kKCkKKyAgICAgICAgYXJncyA9IHNlbGYuX3Rv
b2wuZGVwcmVjYXRlZF9wb3J0KCkucHJlcGFyZV9jaGFuZ2Vsb2dfY29tbWFuZCgpCiAgICAgICAg
IGlmIHN0YXRlLmdldCgiYnVnX2lkIik6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1idWc9
JXMiICUgc3RhdGVbImJ1Z19pZCJdKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZGVzY3Jp
cHRpb249JXMiICUgc2VsZi5jYWNoZWRfbG9va3VwKHN0YXRlLCAnYnVnX3RpdGxlJykpCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJl
dmVydC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
cHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weQkocmV2aXNpb24gMTU3Njc3KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgUHJlcGFyZUNoYW5nZUxvZ0Zv
clJldmVydChBYnN0cmFjdAogCiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgICMg
VGhpcyBjb3VsZCBtb3ZlIHRvIHByZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGluZyBhIC0tcmV2ZXJ0
PSBvcHRpb24uCi0gICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZf
ZmFpbChzZWxmLl90b29sLnBvcnQoKS5wcmVwYXJlX2NoYW5nZWxvZ19jb21tYW5kKCksIGN3ZD1z
ZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCisgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0
aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl90b29sLmRlcHJlY2F0ZWRfcG9ydCgpLnBy
ZXBhcmVfY2hhbmdlbG9nX2NvbW1hbmQoKSwgY3dkPXNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRf
cm9vdCkKICAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5fdG9vbC5jaGVja291dCgpLm1v
ZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lKQogICAgICAgICBidWdfdXJsID0gc2Vs
Zi5fdG9vbC5idWdzLmJ1Z191cmxfZm9yX2J1Z19pZChzdGF0ZVsiYnVnX2lkIl0pIGlmIHN0YXRl
WyJidWdfaWQiXSBlbHNlIE5vbmUKICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX21lc3NhZ2VfZm9y
X3JldmVydChzdGF0ZVsicmV2aXNpb25fbGlzdCJdLCBzdGF0ZVsicmVhc29uIl0sIGJ1Z191cmwp
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzLnB5
CShyZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
cnVudGVzdHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTU2LDIyICs1NiwyMiBAQCBjbGFzcyBSdW5U
ZXN0cyhBYnN0cmFjdFN0ZXApOgogICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5ub25faW50
ZXJhY3RpdmU6CiAgICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgdGVhY2ggdGhlIGNvbW1p
dC1xdWV1ZSBhbmQgdGhlIEVXUyBob3cgdG8gcnVuIHRoZXNlIHRlc3RzLgogCi0gICAgICAgICAg
ICBweXRob25fdW5pdHRlc3RzX2NvbW1hbmQgPSBzZWxmLl90b29sLnBvcnQoKS5ydW5fcHl0aG9u
X3VuaXR0ZXN0c19jb21tYW5kKCkKKyAgICAgICAgICAgIHB5dGhvbl91bml0dGVzdHNfY29tbWFu
ZCA9IHNlbGYuX3Rvb2wuZGVwcmVjYXRlZF9wb3J0KCkucnVuX3B5dGhvbl91bml0dGVzdHNfY29t
bWFuZCgpCiAgICAgICAgICAgICBpZiBweXRob25fdW5pdHRlc3RzX2NvbW1hbmQ6CiAgICAgICAg
ICAgICAgICAgX2xvZy5pbmZvKCJSdW5uaW5nIFB5dGhvbiB1bml0IHRlc3RzIikKICAgICAgICAg
ICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwocHl0aG9u
X3VuaXR0ZXN0c19jb21tYW5kLCBjd2Q9c2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290KQog
Ci0gICAgICAgICAgICBwZXJsX3VuaXR0ZXN0c19jb21tYW5kID0gc2VsZi5fdG9vbC5wb3J0KCku
cnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoKQorICAgICAgICAgICAgcGVybF91bml0dGVzdHNf
Y29tbWFuZCA9IHNlbGYuX3Rvb2wuZGVwcmVjYXRlZF9wb3J0KCkucnVuX3BlcmxfdW5pdHRlc3Rz
X2NvbW1hbmQoKQogICAgICAgICAgICAgaWYgcGVybF91bml0dGVzdHNfY29tbWFuZDoKICAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oIlJ1bm5pbmcgUGVybCB1bml0IHRlc3RzIikKICAgICAgICAg
ICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwocGVybF91
bml0dGVzdHNfY29tbWFuZCwgY3dkPXNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkKIAot
ICAgICAgICAgICAgamF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCA9IHNlbGYuX3Rvb2wucG9y
dCgpLnJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kKCkKKyAgICAgICAgICAgIGphdmFz
Y3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQgPSBzZWxmLl90b29sLmRlcHJlY2F0ZWRfcG9ydCgpLnJ1
bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kKCkKICAgICAgICAgICAgIGlmIGphdmFzY3Jp
cHRjb3JlX3Rlc3RzX2NvbW1hbmQ6CiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJSdW5uaW5n
IEphdmFTY3JpcHRDb3JlIHRlc3RzIikKICAgICAgICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1
dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoamF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCwg
cXVpZXQ9VHJ1ZSwgY3dkPXNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkKIAotICAgICAg
ICBiaW5kaW5nc190ZXN0c19jb21tYW5kID0gc2VsZi5fdG9vbC5wb3J0KCkucnVuX2JpbmRpbmdz
X3Rlc3RzX2NvbW1hbmQoKQorICAgICAgICBiaW5kaW5nc190ZXN0c19jb21tYW5kID0gc2VsZi5f
dG9vbC5kZXByZWNhdGVkX3BvcnQoKS5ydW5fYmluZGluZ3NfdGVzdHNfY29tbWFuZCgpCiAgICAg
ICAgIGlmIGJpbmRpbmdzX3Rlc3RzX2NvbW1hbmQ6CiAgICAgICAgICAgICBfbG9nLmluZm8oIlJ1
bm5pbmcgYmluZGluZ3MgZ2VuZXJhdGlvbiB0ZXN0cyIpCiAgICAgICAgICAgICBhcmdzID0gYmlu
ZGluZ3NfdGVzdHNfY29tbWFuZApAQCAtODAsNyArODAsNyBAQCBjbGFzcyBSdW5UZXN0cyhBYnN0
cmFjdFN0ZXApOgogICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgogICAgICAgICAg
ICAgICAgIF9sb2cuaW5mbygiRXJyb3IgcnVubmluZyBydW4tYmluZGluZ3MtdGVzdHM6ICVzIiAl
IGUubWVzc2FnZV93aXRoX291dHB1dCgpKQogCi0gICAgICAgIHdlYmtpdF91bml0X3Rlc3RzX2Nv
bW1hbmQgPSBzZWxmLl90b29sLnBvcnQoKS5ydW5fd2Via2l0X3VuaXRfdGVzdHNfY29tbWFuZCgp
CisgICAgICAgIHdlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQgPSBzZWxmLl90b29sLmRlcHJlY2F0
ZWRfcG9ydCgpLnJ1bl93ZWJraXRfdW5pdF90ZXN0c19jb21tYW5kKCkKICAgICAgICAgaWYgd2Vi
a2l0X3VuaXRfdGVzdHNfY29tbWFuZDoKICAgICAgICAgICAgIF9sb2cuaW5mbygiUnVubmluZyBX
ZWJLaXQgdW5pdCB0ZXN0cyIpCiAgICAgICAgICAgICBhcmdzID0gd2Via2l0X3VuaXRfdGVzdHNf
Y29tbWFuZApAQCAtOTEsNyArOTEsNyBAQCBjbGFzcyBSdW5UZXN0cyhBYnN0cmFjdFN0ZXApOgog
CiAKICAgICAgICAgX2xvZy5pbmZvKCJSdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMiKQotICAgICAg
ICBhcmdzID0gc2VsZi5fdG9vbC5wb3J0KCkucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCkKKyAg
ICAgICAgYXJncyA9IHNlbGYuX3Rvb2wuZGVwcmVjYXRlZF9wb3J0KCkucnVuX3dlYmtpdF90ZXN0
c19jb21tYW5kKCkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6CiAg
ICAgICAgICAgICBhcmdzLmV4dGVuZChbCiAgICAgICAgICAgICAgICAgIi0tbm8tbmV3LXRlc3Qt
cmVzdWx0cyIsCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVz
dHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL3J1bnRlc3RzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHNfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDggKzM3LDggQEAgZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnJ1bnRlc3Rz
IGltcG9ydAogY2xhc3MgUnVuVGVzdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYg
dGVzdF93ZWJraXRfcnVuX3VuaXRfdGVzdHMoc2VsZik6CiAgICAgICAgIHRvb2wgPSBNb2NrVG9v
bChsb2dfZXhlY3V0aXZlPVRydWUpCi0gICAgICAgIHRvb2wuX3BvcnQucnVuX3B5dGhvbl91bml0
dGVzdHNfY29tbWFuZCA9IGxhbWJkYTogTm9uZQotICAgICAgICB0b29sLl9wb3J0LnJ1bl9wZXJs
X3VuaXR0ZXN0c19jb21tYW5kID0gbGFtYmRhOiBOb25lCisgICAgICAgIHRvb2wuX2RlcHJlY2F0
ZWRfcG9ydC5ydW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kID0gbGFtYmRhOiBOb25lCisgICAg
ICAgIHRvb2wuX2RlcHJlY2F0ZWRfcG9ydC5ydW5fcGVybF91bml0dGVzdHNfY29tbWFuZCA9IGxh
bWJkYTogTm9uZQogICAgICAgICBzdGVwID0gUnVuVGVzdHModG9vbCwgTW9ja09wdGlvbnModGVz
dD1UcnVlLCBub25faW50ZXJhY3RpdmU9VHJ1ZSwgcXVpZXQ9RmFsc2UpKQogCiAgICAgICAgIGlm
IHN5cy5wbGF0Zm9ybSAhPSAiY3lnd2luIjoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE1NzY3NykK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogaW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0
dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQg
T3V0cHV0Q2FwdHVyZQorZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGltcG9ydCBE
ZXByZWNhdGVkUG9ydAogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0
aW9ucywgTW9ja1Rvb2wKIAogZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBzdGVwcwpAQCAtOTks
MTggKzEwMCwxOCBAQCBjbGFzcyBTdGVwc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBtb2NrX29wdGlvbnMubm9uX2ludGVyYWN0aXZlID0gRmFsc2UKICAgICAgICAgc3RlcCA9IHN0
ZXBzLlJ1blRlc3RzKE1vY2tUb29sKGxvZ19leGVjdXRpdmU9VHJ1ZSksIG1vY2tfb3B0aW9ucykK
ICAgICAgICAgdG9vbCA9IE1vY2tUb29sKGxvZ19leGVjdXRpdmU9VHJ1ZSkKKyAgICAgICAgIyBG
SVhNRTogV2Ugc2hvdWxkbid0IHVzZSBhIHJlYWwgcG9ydC1vYmplY3QgaGVyZSwgYnV0IHRoZXJl
IGlzIHRvbyBtdWNoIHRvIG1vY2sgYXQgdGhlIG1vbWVudC4KKyAgICAgICAgdG9vbC5fZGVwcmVj
YXRlZF9wb3J0ID0gRGVwcmVjYXRlZFBvcnQoKQogICAgICAgICBzdGVwID0gc3RlcHMuUnVuVGVz
dHModG9vbCwgbW9ja19vcHRpb25zKQogICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiUnVubmlu
ZyBQeXRob24gdW5pdCB0ZXN0cwotTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnbW9jay10
ZXN0LXdlYmtpdHB5J10sIGN3ZD0vbW9jay1jaGVja291dAorTU9DSyBydW5fYW5kX3Rocm93X2lm
X2ZhaWw6IFsnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5J10sIGN3ZD0vbW9jay1jaGVja291
dAogUnVubmluZyBQZXJsIHVuaXQgdGVzdHMKLU1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBb
J21vY2stdGVzdC13ZWJraXRwZXJsJ10sIGN3ZD0vbW9jay1jaGVja291dAorTU9DSyBydW5fYW5k
X3Rocm93X2lmX2ZhaWw6IFsnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHBlcmwnXSwgY3dkPS9t
b2NrLWNoZWNrb3V0CiBSdW5uaW5nIEphdmFTY3JpcHRDb3JlIHRlc3RzCi1NT0NLIHJ1bl9hbmRf
dGhyb3dfaWZfZmFpbDogWydtb2NrLXJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyddLCBjd2Q9L21v
Y2stY2hlY2tvdXQKK01PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ1Rvb2xzL1NjcmlwdHMv
cnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJ10sIGN3ZD0vbW9jay1jaGVja291dAogUnVubmluZyBi
aW5kaW5ncyBnZW5lcmF0aW9uIHRlc3RzCi1NT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydt
b2NrLXJ1bi1iaW5kaW5ncy10ZXN0cyddLCBjd2Q9L21vY2stY2hlY2tvdXQKLVJ1bm5pbmcgV2Vi
S2l0IHVuaXQgdGVzdHMKLU1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ21vY2stcnVuLXdl
YmtpdC11bml0LXRlc3RzJ10sIGN3ZD0vbW9jay1jaGVja291dAorTU9DSyBydW5fYW5kX3Rocm93
X2lmX2ZhaWw6IFsnVG9vbHMvU2NyaXB0cy9ydW4tYmluZGluZ3MtdGVzdHMnXSwgY3dkPS9tb2Nr
LWNoZWNrb3V0CiBSdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMKLU1PQ0sgcnVuX2FuZF90aHJvd19p
Zl9mYWlsOiBbJ21vY2stcnVuLXdlYmtpdC10ZXN0cycsICctLXF1aWV0J10sIGN3ZD0vbW9jay1j
aGVja291dAorTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnVG9vbHMvU2NyaXB0cy9ydW4t
d2Via2l0LXRlc3RzJywgJy0tcXVpZXQnXSwgY3dkPS9tb2NrLWNoZWNrb3V0CiAiIiIKICAgICAg
ICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHN0ZXAucnVuLCBbe31dLCBl
eHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvdXBkYXRlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy91cGRhdGUucHkJKHJldmlzaW9uIDE1NzY3NykKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGUucHkJKHdvcmtpbmcgY29weSkKQEAgLTUwLDUg
KzUwLDUgQEAgY2xhc3MgVXBkYXRlKEFic3RyYWN0U3RlcCk6CiAgICAgICAgIHNlbGYuX3Rvb2wu
ZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLl91cGRhdGVfY29tbWFuZCgpLCBx
dWlldD1zZWxmLl9vcHRpb25zLnF1aWV0LCBjd2Q9c2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9y
b290KQogCiAgICAgZGVmIF91cGRhdGVfY29tbWFuZChzZWxmKToKLSAgICAgICAgdXBkYXRlX2Nv
bW1hbmQgPSBzZWxmLl90b29sLnBvcnQoKS51cGRhdGVfd2Via2l0X2NvbW1hbmQoc2VsZi5fb3B0
aW9ucy5ub25faW50ZXJhY3RpdmUpCisgICAgICAgIHVwZGF0ZV9jb21tYW5kID0gc2VsZi5fdG9v
bC5kZXByZWNhdGVkX3BvcnQoKS51cGRhdGVfd2Via2l0X2NvbW1hbmQoc2VsZi5fb3B0aW9ucy5u
b25faW50ZXJhY3RpdmUpCiAgICAgICAgIHJldHVybiB1cGRhdGVfY29tbWFuZApJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZV91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAxNTc2NzcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvdXBkYXRlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
IGltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24uY29u
ZmlnLnBvcnRzIGltcG9ydCBNYWNQb3J0LCBNYWNXSzJQb3J0CiBmcm9tIHdlYmtpdHB5LnRvb2wu
bW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9vbAogZnJvbSB3ZWJraXRweS50b29s
LnN0ZXBzLnVwZGF0ZSBpbXBvcnQgVXBkYXRlCiAKQEAgLTQwLDEwICs0MSwxMCBAQCBjbGFzcyBV
cGRhdGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc3RlcCA9IFVwZGF0ZSh0b29s
LCBvcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsibW9jay11cGRhdGUtd2Via2l0
Il0sIHN0ZXAuX3VwZGF0ZV9jb21tYW5kKCkpCiAKLSAgICAgICAgdG9vbC5fcG9ydCA9IHRvb2wu
cG9ydF9mYWN0b3J5LmdldCgibWFjIikKKyAgICAgICAgdG9vbC5fZGVwcmVjYXRlZF9wb3J0ID0g
TWFjUG9ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyJUb29scy9TY3JpcHRzL3VwZGF0
ZS13ZWJraXQiXSwgc3RlcC5fdXBkYXRlX2NvbW1hbmQoKSkKIAotICAgICAgICB0b29sLl9wb3J0
ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCJtYWMtd2syIikKKyAgICAgICAgdG9vbC5fZGVwcmVj
YXRlZF9wb3J0ID0gTWFjV0syUG9ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyJUb29s
cy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQiXSwgc3RlcC5fdXBkYXRlX2NvbW1hbmQoKSkKIAogICAg
IGRlZiB0ZXN0X3VwZGF0ZV9jb21tYW5kX2ludGVyYWN0aXZlKHNlbGYpOgpAQCAtNTIsOCArNTMs
OCBAQCBjbGFzcyBVcGRhdGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc3RlcCA9
IFVwZGF0ZSh0b29sLCBvcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsibW9jay11
cGRhdGUtd2Via2l0Il0sIHN0ZXAuX3VwZGF0ZV9jb21tYW5kKCkpCiAKLSAgICAgICAgdG9vbC5f
cG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldCgibWFjIikKKyAgICAgICAgdG9vbC5fZGVwcmVj
YXRlZF9wb3J0ID0gTWFjUG9ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyJUb29scy9T
Y3JpcHRzL3VwZGF0ZS13ZWJraXQiXSwgc3RlcC5fdXBkYXRlX2NvbW1hbmQoKSkKIAotICAgICAg
ICB0b29sLl9wb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCJtYWMtd2syIikKKyAgICAgICAg
dG9vbC5fZGVwcmVjYXRlZF9wb3J0ID0gTWFjV0syUG9ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoWyJUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQiXSwgc3RlcC5fdXBkYXRlX2NvbW1h
bmQoKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>