<?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>77805</bug_id>
          
          <creation_ts>2012-02-03 21:20:10 -0800</creation_ts>
          <short_desc>Port some indexeddb layout tests to workers.</short_desc>
          <delta_ts>2012-02-06 17:39:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>549363</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-03 21:20:10 -0800</bug_when>
    <thetext>port some idb layout tests to workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549364</commentid>
    <comment_count>1</comment_count>
      <attachid>125477</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-03 21:20:28 -0800</bug_when>
    <thetext>Created attachment 125477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550171</commentid>
    <comment_count>2</comment_count>
      <attachid>125681</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-06 11:58:54 -0800</bug_when>
    <thetext>Created attachment 125681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550175</commentid>
    <comment_count>3</comment_count>
      <attachid>125681</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-06 12:03:24 -0800</bug_when>
    <thetext>Comment on attachment 125681
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=125681&amp;action=review

Josh, do you know what&apos;s going on with DOMException here?

&gt; LayoutTests/storage/indexeddb/objectstore-basics-expected.txt:84
&gt; +PASS code is 25

DOMException.DATA_CLONE_ERR is the only problem I&apos;ve run into so far - JS from workers thinks it is undefined.

&gt; LayoutTests/storage/indexeddb/objectstore-basics-workers-expected.txt:85
&gt; +FAIL [Worker] code should be 25 (of type number). Was undefined (of type undefined).

And undefined is propogated out anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550234</commentid>
    <comment_count>4</comment_count>
      <attachid>125681</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-06 13:11:48 -0800</bug_when>
    <thetext>Comment on attachment 125681
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=125681&amp;action=review

&gt; LayoutTests/storage/indexeddb/resources/objectstore-basics.js:168
&gt; +        store.add({x: &apos;bar&apos;, y: document.getElementById(&apos;console&apos;)}, &apos;bar&apos;);

Discussed this offline, but for the record:

The &quot;document&quot; reference here will fail as undefined in workers. Since this is just trying to grab an object that can&apos;t be cloned, replace &quot;document.getElementById(&apos;console&apos;)&quot; with &quot;self&quot;

&gt; LayoutTests/storage/indexeddb/resources/objectstore-basics.js:173
&gt; +        shouldBe(&quot;code&quot;, &quot;25&quot;);

... and DOMException itself will be undefined, so we probably need to leave this as 25. Add a FIXME indicating that when we move to DOM4-style exceptions this should look for the name &quot;DataCloneError&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550260</commentid>
    <comment_count>5</comment_count>
      <attachid>125703</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-06 13:57:34 -0800</bug_when>
    <thetext>Created attachment 125703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550264</commentid>
    <comment_count>6</comment_count>
      <attachid>125703</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-06 14:00:32 -0800</bug_when>
    <thetext>Comment on attachment 125703
Patch

This patch fixes the non-cloneable test to use &apos;self&apos; and the worker version now passes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550309</commentid>
    <comment_count>7</comment_count>
      <attachid>125712</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-06 14:47:55 -0800</bug_when>
    <thetext>Created attachment 125712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550318</commentid>
    <comment_count>8</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-06 14:59:14 -0800</bug_when>
    <thetext>Tony, could you review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550437</commentid>
    <comment_count>9</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-06 17:07:18 -0800</bug_when>
    <thetext>*** Bug 73297 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550467</commentid>
    <comment_count>10</comment_count>
      <attachid>125712</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 17:39:29 -0800</bug_when>
    <thetext>Comment on attachment 125712
Patch

Clearing flags on attachment: 125712

Committed r106886: &lt;http://trac.webkit.org/changeset/106886&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550468</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 17:39:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125477</attachid>
            <date>2012-02-03 21:20:28 -0800</date>
            <delta_ts>2012-02-06 11:58:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77805-20120203212027.patch</filename>
            <type>text/plain</type>
            <size>64753</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NzI1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTNmZjMxMjBlOTkwMTcwYzQ3ZTg4ZjhiNWVjNzliMTUyODYzMzM1MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2lj
cy13b3JrZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk4IEBACitbV29ya2VyXSBUZXN0IHRo
ZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3Mgd2Via2l0SURCSW5kZXguCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9pbmRleC1iYXNpY3Mu
anMKK1tXb3JrZXJdIHdlYmtpdEluZGV4ZWREQi5vcGVuKCdpbmRleC1iYXNpY3MnKQorW1dvcmtl
cl0gZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitbV29ya2VyXSBkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpCitbV29ya2VyXSBzZXRWZXJzaW9uU3VjY2VzcygpOgorW1dvcmtlcl0gdHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIFtXb3JrZXJdIHRyYW5zICE9PSBudWxsIGlzIHRy
dWUKK1tXb3JrZXJdIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitbV29ya2VyXSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkKK1tXb3JrZXJdIHN0b3JlLmNyZWF0ZUlu
ZGV4KCdpbmRleE5hbWUnLCAneCcpCitbV29ya2VyXSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhO
YW1lMicsICd5JywgZmFsc2UpCitbV29ya2VyXSBzdG9yZS5jcmVhdGVJbmRleCgnekluZGV4Jywg
J3onLCB0cnVlKQorUEFTUyBbV29ya2VyXSAnbmFtZScgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQor
UEFTUyBbV29ya2VyXSBpbmRleE9iamVjdC5uYW1lIGlzICJpbmRleE5hbWUiCitQQVNTIFtXb3Jr
ZXJdICdvYmplY3RTdG9yZScgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSBp
bmRleE9iamVjdC5vYmplY3RTdG9yZS5uYW1lIGlzICJzdG9yZU5hbWUiCitQQVNTIFtXb3JrZXJd
ICdrZXlQYXRoJyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGluZGV4T2Jq
ZWN0LmtleVBhdGggaXMgIngiCitQQVNTIFtXb3JrZXJdICd1bmlxdWUnIGluIGluZGV4T2JqZWN0
IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gJ211bHRpRW50cnknIGluIGluZGV4T2JqZWN0IGlzIHRy
dWUKK1BBU1MgW1dvcmtlcl0gaW5kZXhPYmplY3QudW5pcXVlIGlzIGZhbHNlCitQQVNTIFtXb3Jr
ZXJdIGluZGV4T2JqZWN0Lm11bHRpRW50cnkgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gJ29wZW5L
ZXlDdXJzb3InIGluIGluZGV4T2JqZWN0IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIGlu
ZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnb3Bl
bkN1cnNvcicgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSB0eXBlb2YgaW5k
ZXhPYmplY3Qub3BlbkN1cnNvciBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdnZXRLZXkn
IGluIGluZGV4T2JqZWN0IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIGluZGV4T2JqZWN0
LmdldEtleSBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdnZXQnIGluIGluZGV4T2JqZWN0
IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIGluZGV4T2JqZWN0LmdldCBpcyAiZnVuY3Rp
b24iCitQQVNTIFtXb3JrZXJdICdjb3VudCcgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyBb
V29ya2VyXSB0eXBlb2YgaW5kZXhPYmplY3QuY291bnQgaXMgImZ1bmN0aW9uIgorW1dvcmtlcl0g
c3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6JywgejogMi43Mn0sICdrZXknKQorW1dvcmtl
cl0gZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6MicsIHo6IDIu
NzEsIGZvb2JhcjogMTJ9LCAna2V5MicpCitbV29ya2VyXSBzdG9yZS5jcmVhdGVJbmRleCgnaW5k
ZXhXaGlsZUFkZElzSW5GbGlnaHQnLCAneCcpCitbV29ya2VyXSBzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXhXaXRoV2VpcmRLZXlQYXRoJywgJ2Zvb2JhcicpCitbV29ya2VyXSBldmVudC50YXJnZXQu
c291cmNlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICc0NTYnfSwgJ2tleTMnKQorW1dvcmtlcl0gaW5k
ZXhPYmplY3QuZ2V0S2V5KCd2YWx1ZScpCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1
bHQgaXMgImtleSIKK1tXb3JrZXJdIGluZGV4T2JqZWN0Mi5nZXRLZXkoJ3p6eicpCitQQVNTIFtX
b3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgImtleSIKK1tXb3JrZXJdIGluZGV4T2JqZWN0
My5nZXQoMi43MSkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC54IGlzICJ2YWx1
ZTIiCitbV29ya2VyXSBpbmRleE9iamVjdC5nZXQoJ3ZhbHVlJykKK1BBU1MgW1dvcmtlcl0gZXZl
bnQudGFyZ2V0LnJlc3VsdC54IGlzICJ2YWx1ZSIKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0
LnJlc3VsdC55IGlzICJ6enoiCitbV29ya2VyXSBpbmRleE9iamVjdC5nZXRLZXkoJ2RvZXMgbm90
IGV4aXN0JykKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQK
K1tXb3JrZXJdIGluZGV4T2JqZWN0LmdldCgnZG9lcyBub3QgZXhpc3QnKQorUEFTUyBbV29ya2Vy
XSBldmVudC50YXJnZXQucmVzdWx0IGlzIHVuZGVmaW5lZAorW1dvcmtlcl0gaW5kZXhPYmplY3Q0
LmdldEtleSgndmFsdWUyJykKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyAi
a2V5MiIKK1tXb3JrZXJdIGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoKQorUEFTUyBbV29ya2Vy
XSBldmVudC50YXJnZXQuc291cmNlIGlzIGluZGV4T2JqZWN0CitQQVNTIFtXb3JrZXJdIGV2ZW50
LnRhcmdldC5yZXN1bHQgPT09IG51bGwgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFy
Z2V0LnJlc3VsdC5rZXkgaXMgInZhbHVlIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVz
dWx0LnByaW1hcnlLZXkgaXMgImtleSIKK1tXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoKQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIGlzIGZh
bHNlCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQua2V5IGlzICJ2YWx1ZTIiCitQ
QVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSBpcyAia2V5MiIKK1tX
b3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKQorUEFTUyBbV29ya2VyXSBldmVu
dC50YXJnZXQucmVzdWx0ID09PSBudWxsIGlzIGZhbHNlCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRh
cmdldC5yZXN1bHQua2V5IGlzICJ2YWx1ZTMiCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5y
ZXN1bHQucHJpbWFyeUtleSBpcyAia2V5MyIKK1tXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIGlz
IHRydWUKK1tXb3JrZXJdIGluZGV4T2JqZWN0Lm9wZW5DdXJzb3IoKQorUEFTUyBbV29ya2VyXSBl
dmVudC50YXJnZXQuc291cmNlIGlzIGluZGV4T2JqZWN0CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRh
cmdldC5yZXN1bHQgPT09IG51bGwgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0
LnJlc3VsdC5rZXkgaXMgInZhbHVlIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0
LnZhbHVlLnggaXMgInZhbHVlIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LnZh
bHVlLnkgaXMgInp6eiIKK1tXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKQor
UEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIGlzIGZhbHNlCitQQVNT
IFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQua2V5IGlzICJ2YWx1ZTIiCitQQVNTIFtXb3Jr
ZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCBpcyAidmFsdWUyIgorUEFTUyBbV29ya2Vy
XSBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLnkgaXMgInp6ejIiCitbV29ya2VyXSBldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCA9PT0gbnVsbCBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0Lmtl
eSBpcyAidmFsdWUzIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngg
aXMgInZhbHVlMyIKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IGlz
ICI0NTYiCitbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkKK1BBU1MgW1dv
cmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCBpcyB0cnVlCitbV29ya2VyXSBQYXNz
aW5nIGFuIGludmFsaWQga2V5IGludG8gaW5kZXhPYmplY3QuZ2V0KHt9KS4KK1BBU1MgW1dvcmtl
cl0gQ2F1Z2h0IGV4Y2VwdGlvbjogRXJyb3I6IERBVEFfRVJSOiBET00gSURCRGF0YWJhc2UgRXhj
ZXB0aW9uIDUKK1tXb3JrZXJdIFBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBpbmRleE9iamVj
dC5nZXRLZXkoe30pLgorUEFTUyBbV29ya2VyXSBDYXVnaHQgZXhjZXB0aW9uOiBFcnJvcjogREFU
QV9FUlI6IERPTSBJREJEYXRhYmFzZSBFeGNlcHRpb24gNQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy13b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4
MDAzNjRmNTk5MDEzZDFjOWM0YmQwZjEyZmUyODU0NDE1YTI1NzQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PnN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpzJyk7
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwKaW5kZXggZmI0YzAwNDBiZDhlNjMyOWIz
MDdjMjZhMDk1NzAxN2JiOTlkMzYyNy4uYTI0MTE2ZDZiYmY3ZDAzODY3ZTQ0OTQwOTU4ZjljODli
YTFjMmRjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgt
YmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFz
aWNzLmh0bWwKQEAgLTYsMjY1ICs2LDcgQEAKIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3Mgd2Via2l0SURCSW5kZXguIik7Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coIndlYmtpdEluZGV4ZWREQi5vcGVuKCdpbmRleC1iYXNpY3MnKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAg
IGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHdpbmRvdy50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgd2luZG93LnN0
b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwp
Iik7Ci0gICAgd2luZG93LmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5k
ZXgoJ2luZGV4TmFtZScsICd4JykiKTsKLSAgICB3aW5kb3cuaW5kZXhPYmplY3QyID0gZXZhbEFu
ZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZTInLCAneScsIGZhbHNlKSIpOwotICAg
IHdpbmRvdy5pbmRleE9iamVjdDMgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgneklu
ZGV4JywgJ3onLCB0cnVlKSIpOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0
YSgpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCInbmFtZScgaW4gaW5kZXhPYmplY3QiKTsKLSAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImluZGV4T2JqZWN0Lm5hbWUiLCAiaW5kZXhOYW1lIik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCInb2JqZWN0U3RvcmUnIGluIGluZGV4T2JqZWN0Iik7Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5vYmplY3RTdG9yZS5uYW1lIiwgInN0b3Jl
TmFtZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2tleVBhdGgnIGluIGluZGV4T2JqZWN0Iik7Ci0g
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5rZXlQYXRoIiwgIngiKTsKLSAg
ICBzaG91bGRCZVRydWUoIid1bmlxdWUnIGluIGluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVU
cnVlKCInbXVsdGlFbnRyeScgaW4gaW5kZXhPYmplY3QiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJp
bmRleE9iamVjdC51bmlxdWUiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleE9iamVjdC5tdWx0
aUVudHJ5Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCInb3BlbktleUN1cnNvcicgaW4gaW5kZXhPYmpl
Y3QiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5vcGVu
S2V5Q3Vyc29yIiwgImZ1bmN0aW9uIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInb3BlbkN1cnNvcicg
aW4gaW5kZXhPYmplY3QiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRl
eE9iamVjdC5vcGVuQ3Vyc29yIiwgImZ1bmN0aW9uIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInZ2V0
S2V5JyBpbiBpbmRleE9iamVjdCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9m
IGluZGV4T2JqZWN0LmdldEtleSIsICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2dl
dCcgaW4gaW5kZXhPYmplY3QiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBp
bmRleE9iamVjdC5nZXQiLCAiZnVuY3Rpb24iKTsKLSAgICBzaG91bGRCZVRydWUoIidjb3VudCcg
aW4gaW5kZXhPYmplY3QiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRl
eE9iamVjdC5jb3VudCIsICJmdW5jdGlvbiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eicsIHo6IDIuNzJ9LCAna2V5JykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGEyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGREYXRhMigpCi17Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFsdWUy
JywgeTogJ3p6ejInLCB6OiAyLjcxLCBmb29iYXI6IDEyfSwgJ2tleTInKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkRGF0YTM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgd2luZG93LmluZGV4T2JqZWN0NCA9IGV2YWxBbmRMb2coInN0
b3JlLmNyZWF0ZUluZGV4KCdpbmRleFdoaWxlQWRkSXNJbkZsaWdodCcsICd4JykiKTsKLSAgICB3
aW5kb3cuaW5kZXhPYmplY3Q1ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4
V2l0aFdlaXJkS2V5UGF0aCcsICdmb29iYXInKSIpOwotfQotCi1mdW5jdGlvbiBhZGREYXRhMygp
Ci17Ci0gICAgLy8gQWRkIGRhdGEgd2hpY2ggZG9lc24ndCBoYXZlIGEga2V5IGluIHRoZSB6SW5k
ZXguCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4
OiAndmFsdWUzJywgeTogJzQ1Nid9LCAna2V5MycpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBnZXREYXRhOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBnZXREYXRhKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhPYmplY3QuZ2V0S2V5KCd2YWx1ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBn
ZXRPYmplY3REYXRhOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBnZXRPYmplY3REYXRhKCkKLXsKLSAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAia2V5Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhPYmplY3QyLmdldEtleSgnenp6JykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGdldE9iamVjdERhdGEyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRPYmplY3REYXRhMigpCi17Ci0gICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0My5nZXQoMi43MSkiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGEzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRPYmplY3REYXRhMygp
Ci17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LngiLCAi
dmFsdWUyIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QuZ2V0KCd2
YWx1ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhRmFpbDsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0
RGF0YUZhaWwoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC54IiwgInZhbHVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJn
ZXQucmVzdWx0LnkiLCAienp6Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhP
YmplY3QuZ2V0S2V5KCdkb2VzIG5vdCBleGlzdCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBnZXRPYmplY3REYXRhRmFpbDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkU3Vj
Y2Vzc0NhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRPYmplY3REYXRhRmFpbCgpCi17Ci0gICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QuZ2V0KCdkb2VzIG5vdCBleGlzdCcpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhNDsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRPYmplY3RE
YXRhNCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVk
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Q0LmdldEtleSgndmFs
dWUyJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5LZXlDdXJzb3I7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBv
cGVuS2V5Q3Vyc29yKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAia2V5MiIpOwotCi0gICAgd2luZG93LnJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1
cnNvcjFDb250aW51ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gY3Vyc29yMUNvbnRpbnVlKCkKLXsKLSAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnNvdXJjZSIsICJpbmRleE9iamVjdCIpOwotICAgIHNob3VsZEJlRmFsc2Uo
ImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlIik7Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAia2V5Iik7Ci0KLSAg
ICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCi0gICAgZXZhbEFuZExvZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgd2luZG93LnJlcXVlc3Qub25z
dWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlMjsKLX0KLQotZnVuY3Rpb24gY3Vyc29yMUNvbnRpbnVl
MigpCi17Ci0gICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIp
OwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAi
dmFsdWUyIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0
LnByaW1hcnlLZXkiLCAia2V5MiIpOwotCi0gICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVl
c3Qgb2JqZWN0LgotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUo
KSIpOwotICAgIHdpbmRvdy5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTM7Ci19
Ci0KLWZ1bmN0aW9uIGN1cnNvcjFDb250aW51ZTMoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2
ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMyIpOwotICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleTMiKTsKLQotICAg
IC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB3aW5kb3cucmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuT2JqZWN0Q3Vyc29yOwotfQotCi1mdW5jdGlvbiBvcGVuT2JqZWN0Q3Vyc29y
KCkKLXsKLSAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsK
LQotICAgIHdpbmRvdy5yZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbkN1cnNv
cigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29udGludWU7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGN1
cnNvcjJDb250aW51ZSgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5zb3VyY2UiLCAi
aW5kZXhPYmplY3QiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09
PSBudWxsIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0
LmtleSIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC52YWx1ZS54IiwgInZhbHVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LnZhbHVlLnkiLCAienp6Iik7Ci0KLSAgICAvLyBXZSByZS11c2Ug
dGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCi0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jb250aW51ZSgpIik7Ci0gICAgd2luZG93LnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29y
MkNvbnRpbnVlMjsKLX0KLQotZnVuY3Rpb24gY3Vyc29yMkNvbnRpbnVlMigpCi17Ci0gICAgc2hv
dWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUyIik7Ci0gICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAidmFs
dWUyIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZh
bHVlLnkiLCAienp6MiIpOwotCi0gICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2Jq
ZWN0LgotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwot
ICAgIHdpbmRvdy5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJDb250aW51ZTM7Ci19Ci0KLWZ1
bmN0aW9uIGN1cnNvcjJDb250aW51ZTMoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRh
cmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMyIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS54IiwgInZhbHVlMyIpOwotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgIjQ1NiIpOwotCi0g
ICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHdpbmRvdy5yZXF1ZXN0Lm9u
c3VjY2VzcyA9IGxhc3Q7Ci19Ci0KLWZ1bmN0aW9uIGxhc3QoKQotewotICAgIHNob3VsZEJlVHJ1
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotCi0gICAgdHJ5IHsKLSAgICAgICAg
ZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBpbmRleE9iamVjdC5nZXQoe30pLiIp
OwotICAgICAgICBpbmRleE9iamVjdC5nZXQoe30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBl
eGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2Vk
KCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICB0cnkg
ewotICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGluZGV4T2JqZWN0
LmdldEtleSh7fSkuIik7Ci0gICAgICAgIGluZGV4T2JqZWN0LmdldEtleSh7fSk7Ci0gICAgICAg
IHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0g
ICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwot
ICAgIH0KLSAgICBkb25lKCk7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggNmE5NDBkZTNjNzQ0MWE0
YWE5YzViMGJlZDBhYTI2ZmJiOWIxZjFmMC4uOTc3ZTZiZjJhZDBiMzhiYzhlNDQwMmNhODkwNDJm
OGFhYTIxYTFlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC04MSw3ICs4MSw3IEBA
IHN0b3JlLmFkZCh7eDogJ2Zvbyd9LCB0ZXN0RGF0ZSkKIFRyeSB0byBpbnNlcnQgYSB2YWx1ZSBu
b3QgaGFuZGxlZCBieSBzdHJ1Y3R1cmVkIGNsb25lOgogc3RvcmUuYWRkKHt4OiAnYmFyJywgeTog
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKX0sICdiYXInKQogUEFTUyBFeGNlcHRp
b24gdGhyb3duCi1QQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCitQQVNT
IGNvZGUgaXMgMjUKIFRyeSB0byBpbnNlcnQgZGF0YSB3aGVyZSBrZXkgcGF0aCB5aWVsZHMgYSBE
YXRlIGtleToKIHN0b3JlLmFkZCh7eDogdGVzdERhdGVCLCB5OiAndmFsdWUnfSwgJ2tleScpCiBh
ZGRTdWNjZXNzKCk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzhkMGM1NmYyMDYxNzI2MGE4Y2ZiNDJjMWI1YTcyNGU0YWUxZTY2NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJh
c2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5OSBAQAorW1dvcmtlcl0gVGVz
dCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvb2JqZWN0c3Rv
cmUtYmFzaWNzLmpzCitbV29ya2VyXSB3ZWJraXRJbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUt
YmFzaWNzJykKK1tXb3JrZXJdIG9wZW5TdWNjZXNzKCk6CitbV29ya2VyXSBkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQKK1tXb3JrZXJdIGRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykKK1tXb3Jr
ZXJdIHNldFZlcnNpb25TdWNjZXNzKCk6CitbV29ya2VyXSB0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQKK1BBU1MgW1dvcmtlcl0gdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorW1dvcmtlcl0gRGVs
ZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK1tXb3JrZXJdIGNyZWF0ZU9iamVjdFN0b3JlKCk6Citb
V29ya2VyXSBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKQor
W1dvcmtlcl0gc3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMKK1BBU1MgW1dvcmtlcl0g
J25hbWUnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gJ2tleVBhdGgnIGluIHN0b3Jl
IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gJ2luZGV4TmFtZXMnIGluIHN0b3JlIGlzIHRydWUKK1BB
U1MgW1dvcmtlcl0gJ3RyYW5zYWN0aW9uJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJd
ICdwdXQnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIHN0b3JlLnB1dCBp
cyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdhZGQnIGluIHN0b3JlIGlzIHRydWUKK1BBU1Mg
W1dvcmtlcl0gdHlwZW9mIHN0b3JlLmFkZCBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdk
ZWxldGUnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIHN0b3JlLmRlbGV0
ZSBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdnZXQnIGluIHN0b3JlIGlzIHRydWUKK1BB
U1MgW1dvcmtlcl0gdHlwZW9mIHN0b3JlLmdldCBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJd
ICdjbGVhcicgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSB0eXBlb2Ygc3RvcmUuY2xl
YXIgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnb3BlbkN1cnNvcicgaW4gc3RvcmUgaXMg
dHJ1ZQorUEFTUyBbV29ya2VyXSB0eXBlb2Ygc3RvcmUub3BlbkN1cnNvciBpcyAiZnVuY3Rpb24i
CitQQVNTIFtXb3JrZXJdICdjcmVhdGVJbmRleCcgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyBbV29y
a2VyXSB0eXBlb2Ygc3RvcmUuY3JlYXRlSW5kZXggaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2Vy
XSAnaW5kZXgnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIHN0b3JlLmlu
ZGV4IGlzICJmdW5jdGlvbiIKK1BBU1MgW1dvcmtlcl0gJ2RlbGV0ZUluZGV4JyBpbiBzdG9yZSBp
cyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5cGVvZiBzdG9yZS5kZWxldGVJbmRleCBpcyAiZnVuY3Rp
b24iCitQQVNTIFtXb3JrZXJdICdjb3VudCcgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyBbV29ya2Vy
XSB0eXBlb2Ygc3RvcmUuY291bnQgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSBzdG9yZS5u
YW1lIGlzICJzdG9yZU5hbWUiCitQQVNTIFtXb3JrZXJdIHN0b3JlLmtleVBhdGggaXMgbnVsbAor
UEFTUyBbV29ya2VyXSBzdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZU5hbWUnKSBpcyB0cnVlCitQ
QVNTIFtXb3JrZXJdIHN0b3JlTmFtZXMubGVuZ3RoIGlzIDEKK1tXb3JrZXJdIEFzayBmb3IgYW4g
aW5kZXggdGhhdCBkb2Vzbid0IGV4aXN0OgorW1dvcmtlcl0gaW5kZXggPSBzdG9yZS5pbmRleCgn
YXNkZicpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNv
ZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUgorW1dvcmtlcl0g
Y3JlYXRlSW5kZXgoKToKK1tXb3JrZXJdIGluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4
TmFtZScsICd4Jywge3VuaXF1ZTogdHJ1ZX0pCitQQVNTIFtXb3JrZXJdIGluZGV4ICE9PSBudWxs
IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gc3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhO
YW1lJykgaXMgdHJ1ZQorW1dvcmtlcl0gaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXhOYW1lJykK
K1BBU1MgW1dvcmtlcl0gaW5kZXggIT09IG51bGwgaXMgdHJ1ZQorW1dvcmtlcl0gQXNrIGZvciBh
biBpbmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6CitbV29ya2VyXSBpbmRleCA9IHN0b3JlLmluZGV4
KCdhc2RmJykKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHRocm93bi4KK1BBU1MgW1dvcmtlcl0g
Y29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSCitbV29ya2Vy
XSBkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGZhaWwiKQorUEFTUyBbV29ya2VyXSBkYi52ZXJzaW9u
IGlzICJ2ZXJzaW9uIGZhaWwiCitbV29ya2VyXSBzZXRWZXJzaW9uVHJhbnMgPSBldmVudC50YXJn
ZXQucmVzdWx0CitQQVNTIFtXb3JrZXJdIHNldFZlcnNpb25UcmFucyAhPT0gbnVsbCBpcyB0cnVl
CitbV29ya2VyXSBzdG9yZSA9IHNldFZlcnNpb25UcmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykKK1tXb3JrZXJdIGluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykK
K1BBU1MgW1dvcmtlcl0gZGIudmVyc2lvbiBpcyAibmV3IHZlcnNpb24iCitQQVNTIFtXb3JrZXJd
IHN0b3JlLnRyYW5zYWN0aW9uIGlzIHNldFZlcnNpb25UcmFucworUEFTUyBbV29ya2VyXSBzdG9y
ZS5pbmRleE5hbWVzIGlzIFsnaW5kZXhOYW1lJ10KK1BBU1MgW1dvcmtlcl0gc3RvcmUuaW5kZXhO
YW1lcy5sZW5ndGggaXMgMQorUEFTUyBbV29ya2VyXSBzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5z
KCcnKSBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSBzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdp
bmRleEZhaWwnKSBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSBzdG9yZS5pbmRleE5hbWVzLmNvbnRh
aW5zKCdpbmRleE5hbWUnKSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHN0b3JlLmluZGV4TmFtZXNb
MF0gaXMgImluZGV4TmFtZSIKK1BBU1MgW1dvcmtlcl0gc3RvcmUuaW5kZXhOYW1lc1sxXSBpcyBu
dWxsCitQQVNTIFtXb3JrZXJdIHN0b3JlLmluZGV4TmFtZXNbMTAwXSBpcyBudWxsCitQQVNTIFtX
b3JrZXJdIHN0b3JlLmluZGV4TmFtZXMuaXRlbSgxKSBpcyBudWxsCitQQVNTIFtXb3JrZXJdIHN0
b3JlLmluZGV4TmFtZXMuaXRlbSgxMDApIGlzIG51bGwKK1tXb3JrZXJdIHRyYW5zYWN0aW9uID0g
ZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkKK1tXb3JrZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpCitbV29ya2VyXSBUcnkgdG8gaW5zZXJ0IGRhdGEgd2l0aCBhIERhdGUga2V5OgorW1dvcmtl
cl0gc3RvcmUuYWRkKHt4OiAnZm9vJ30sIHRlc3REYXRlKQorW1dvcmtlcl0gVHJ5IHRvIGluc2Vy
dCBhIHZhbHVlIG5vdCBoYW5kbGVkIGJ5IHN0cnVjdHVyZWQgY2xvbmU6CitbV29ya2VyXSBzdG9y
ZS5hZGQoe3g6ICdiYXInLCB5OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpfSwg
J2JhcicpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB0aHJvd24KK0ZBSUwgW1dvcmtlcl0gY29k
ZSBzaG91bGQgYmUgMjUgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1
bmRlZmluZWQpLgorW1dvcmtlcl0gVHJ5IHRvIGluc2VydCBkYXRhIHdoZXJlIGtleSBwYXRoIHlp
ZWxkcyBhIERhdGUga2V5OgorW1dvcmtlcl0gc3RvcmUuYWRkKHt4OiB0ZXN0RGF0ZUIsIHk6ICd2
YWx1ZSd9LCAna2V5JykKK1tXb3JrZXJdIGFkZFN1Y2Nlc3MoKToKK1BBU1MgW1dvcmtlcl0gZXZl
bnQudGFyZ2V0LnJlc3VsdCBpcyAia2V5IgorW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnNvdXJjZS5h
ZGQoe3g6ICdmb28nfSwgJ3p6eicpCitbV29ya2VyXSBhZGRBZ2FpbkZhaWx1cmUoKToKK1BBU1Mg
W1dvcmtlcl0gZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5DT05TVFJBSU5UX0VSUgorW1dvcmtlcl0gZXZlbnQucHJldmVudERlZmF1bHQoKQorW1dv
cmtlcl0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkKK1tXb3JrZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpCitbV29ya2VyXSBzdG9yZS5hZGQoe3g6ICdzb21ldmFsdWUnfSwgJ3NvbWVrZXkn
KQorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmFkZCh7eDogJ290aGVy
dmFsdWUnfSwgbnVsbCkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNT
IFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tX
b3JrZXJdIGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpCitbV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKQorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmFkZCh7
eDogbnVsbH0sICd2YWxpZGtleScpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSCitbV29ya2VyXSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKQorW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykKK1tXb3JrZXJdIHN0b3JlLmdldCgna2V5JykKK1tXb3JrZXJdIGdl
dFN1Y2Nlc3MoKToKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC55IGlzICJ2YWx1
ZSIKK1tXb3JrZXJdIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZQorW1dvcmtlcl0gc3RvcmUu
Z2V0KHRlc3REYXRlKQorW1dvcmtlcl0gZ2V0U3VjY2Vzc0RhdGVLZXkoKToKK1BBU1MgW1dvcmtl
cl0gZXZlbnQudGFyZ2V0LnJlc3VsdC54IGlzICJmb28iCitbV29ya2VyXSBzdG9yZS5kZWxldGUo
J2tleScpCitbV29ya2VyXSByZW1vdmVTdWNjZXNzKCk6CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRh
cmdldC5yZXN1bHQgaXMgdHJ1ZQorW1dvcmtlcl0gc3RvcmUuZGVsZXRlKCdrZXknKQorW1dvcmtl
cl0gcmVtb3ZlU3VjY2Vzc0J1dEZhbHNlKCk6CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5y
ZXN1bHQgaXMgZmFsc2UKK1tXb3JrZXJdIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZQorW1dv
cmtlcl0gUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmdldCgpLgorW1dvcmtlcl0g
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCh7fSkKK1BBU1MgW1dvcmtlcl0gRXhj
ZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIFBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50
byBzdG9yZS5kZWxldGUoKS4KK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9y
ZS5kZWxldGUoe30pCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBb
V29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29y
a2VyXSBQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gc3RvcmUuYWRkKCkuCitbV29ya2VyXSBF
eHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKG51bGwsIHt9KQorUEFTUyBbV29ya2Vy
XSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorW1dvcmtlcl0gUGFzc2luZyBhbiBpbnZhbGlkIGtl
eSBpbnRvIHN0b3JlLnB1dCgpLgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0
b3JlLnB1dChudWxsLCB7fSkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQ
QVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIK
K1tXb3JrZXJdIAorW1dvcmtlcl0gdGVzdFByZUNvbmRpdGlvbnMoKToKK1tXb3JrZXJdIGRiLnNl
dFZlcnNpb24oJ3ByZWNvbmRpdGlvbiB2ZXJzaW9uJykKK1tXb3JrZXJdIHN0b3JlV2l0aEluTGlu
ZUtleXMgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVXaXRoSW5MaW5lS2V5cycsIHtrZXlQ
YXRoOiAna2V5J30pCitbV29ya2VyXSBzdG9yZVdpdGhPdXRPZkxpbmVLZXlzID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlV2l0aE91dElPZkxpbmVLZXlzJykKK1tXb3JrZXJdIHN0b3JlV2l0
aEluZGV4ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlV2l0aEluZGV4JykKK1tXb3JrZXJd
IGluZGV4ID0gc3RvcmVXaXRoSW5kZXguY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICdpbmRleEtl
eScpCitbV29ya2VyXSAKK1tXb3JrZXJdIElEQk9iamVjdFN0b3JlLnB1dCgpCitbV29ya2VyXSBU
aGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3
YXMgcHJvdmlkZWQuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRo
SW5MaW5lS2V5cy5wdXQoe2tleTogMX0sICdrZXknKQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24g
d2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUgorW1dvcmtlcl0gVGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5l
IGtleXMgYW5kIGhhcyBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMg
bm90IHByb3ZpZGVkLgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0
aE91dE9mTGluZUtleXMucHV0KHt9KQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUgorW1dvcmtlcl0gVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhl
IHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCB5aWVsZHMg
YSB2YWx1ZSBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuCitbV29ya2VyXSBFeHBl
Y3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoSW5MaW5lS2V5cy5wdXQoe2tleTogbnVsbH0p
CitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2Rl
IGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBUaGUgb2Jq
ZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGJ1dCBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUg
cmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIGRvZXMgbm90
IHlpZWxkIGEgdmFsdWUuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVX
aXRoSW5MaW5lS2V5cy5wdXQoe30pCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSCitbV29ya2VyXSBUaGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90
IGNvbnRhaW4gYSB2YWxpZCBrZXkuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
c3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5wdXQoe30sIG51bGwpCitQQVNTIFtXb3JrZXJdIEV4Y2Vw
dGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVm
ZXJlbmNpbmcgdGhpcyBvYmplY3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2
YWx1YXRpbmcgdGhlaXIga2V5IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2
YWx1ZSwgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LgorW1dvcmtlcl0gRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aEluZGV4LnB1dCh7aW5kZXhLZXk6IG51bGx9LCAn
a2V5JykKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJd
IGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIAor
W1dvcmtlcl0gSURCT2JqZWN0U3RvcmUuYWRkKCkKK1tXb3JrZXJdIFRoZSBvYmplY3Qgc3RvcmUg
dXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZC4KK1tX
b3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhJbkxpbmVLZXlzLmFkZCh7
a2V5OiAxfSwgJ2tleScpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFT
UyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitb
V29ya2VyXSBUaGUgb2JqZWN0IHN0b3JlIHVzZXMgb3V0LW9mLWxpbmUga2V5cyBhbmQgaGFzIG5v
IGtleSBnZW5lcmF0b3IgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBub3QgcHJvdmlkZWQuCitb
V29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5h
ZGQoe30pCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2Vy
XSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBU
aGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1
YXRpbmcgdGhlIG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIHlpZWxkcyBhIHZhbHVlIGFuZCB0aGF0
IHZhbHVlIGlzIG5vdCBhIHZhbGlkIGtleS4KK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBzdG9yZVdpdGhJbkxpbmVLZXlzLmFkZCh7a2V5OiBudWxsfSkKK1BBU1MgW1dvcmtlcl0g
RXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0
YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIFRoZSBvYmplY3Qgc3RvcmUgdXNlcyBp
bi1saW5lIGtleXMgYnV0IG5vIGtleSBnZW5lcmF0b3IgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVh
dGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggZG9lcyBub3QgeWllbGQgYSB2YWx1ZS4K
K1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhJbkxpbmVLZXlzLmFk
ZCh7fSkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJd
IGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIFRo
ZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZCBidXQgZG9lcyBub3QgY29udGFpbiBhIHZhbGlk
IGtleS4KK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhPdXRPZkxp
bmVLZXlzLmFkZCh7fSwgbnVsbCkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIKK1tXb3JrZXJdIElmIHRoZXJlIGFyZSBhbnkgaW5kZXhlcyByZWZlcmVuY2luZyB0aGlzIG9i
amVjdCBzdG9yZSB3aG9zZSBrZXkgcGF0aCBpcyBhIHN0cmluZywgZXZhbHVhdGluZyB0aGVpciBr
ZXkgcGF0aCBvbiB0aGUgdmFsdWUgcGFyYW1ldGVyIHlpZWxkcyBhIHZhbHVlLCBhbmQgdGhhdCB2
YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZy
b20gc3RvcmVXaXRoSW5kZXguYWRkKHtpbmRleEtleTogbnVsbH0sICdrZXknKQorUEFTUyBbV29y
a2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhYzIxMjk3N2U5OWQ4OTc0YjdmNjQzYzMzZDdlNDhiYjVlYzljYzQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mt
d29ya2Vycy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PnN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvb2JqZWN0
c3RvcmUtYmFzaWNzLmpzJyk7PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2lj
cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNz
Lmh0bWwKaW5kZXggNmQ4YjVmZDA2YTYwMjExNGM3ZWRlNjZmMTY0OTMyMzhmN2MxZGQ2YS4uNGFi
NDQxZWQwYmY1MjMyOTI3MGUyOWZjZWMxZjA1NjFhMzFiNmFiOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKQEAgLTYs
MzM5ICs2LDcgQEAKIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mg
b2YgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUuIik7Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRl
eGVkREIub3Blbignb2JqZWN0c3RvcmUtYmFzaWNzJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5T
dWNjZXNzKCk6Iik7Ci0gICAgd2luZG93LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1
Y2Nlc3MoKToiKTsKLSAgICB3aW5kb3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0g
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIGRlYnVnKCJjcmVhdGVPYmplY3RTdG9yZSgpOiIp
OwotICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgdmFyIHN0b3JlTmFtZXMgPSBldmFsQW5k
TG9nKCJzdG9yZU5hbWVzID0gZGIub2JqZWN0U3RvcmVOYW1lcyIpOwotCi0gICAgc2hvdWxkQmVU
cnVlKCInbmFtZScgaW4gc3RvcmUiKTsKLSAgICBzaG91bGRCZVRydWUoIidrZXlQYXRoJyBpbiBz
dG9yZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2luZGV4TmFtZXMnIGluIHN0b3JlIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCIndHJhbnNhY3Rpb24nIGluIHN0b3JlIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCIncHV0JyBpbiBzdG9yZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0
b3JlLnB1dCIsICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2FkZCcgaW4gc3RvcmUi
KTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5hZGQiLCAiZnVuY3Rp
b24iKTsKLSAgICBzaG91bGRCZVRydWUoIidkZWxldGUnIGluIHN0b3JlIik7Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuZGVsZXRlIiwgImZ1bmN0aW9uIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCInZ2V0JyBpbiBzdG9yZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygidHlwZW9mIHN0b3JlLmdldCIsICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2Ns
ZWFyJyBpbiBzdG9yZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3Jl
LmNsZWFyIiwgImZ1bmN0aW9uIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInb3BlbkN1cnNvcicgaW4g
c3RvcmUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5vcGVuQ3Vy
c29yIiwgImZ1bmN0aW9uIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInY3JlYXRlSW5kZXgnIGluIHN0
b3JlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuY3JlYXRlSW5k
ZXgiLCAiZnVuY3Rpb24iKTsKLSAgICBzaG91bGRCZVRydWUoIidpbmRleCcgaW4gc3RvcmUiKTsK
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5pbmRleCIsICJmdW5jdGlv
biIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2RlbGV0ZUluZGV4JyBpbiBzdG9yZSIpOwotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmRlbGV0ZUluZGV4IiwgImZ1bmN0aW9u
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCInY291bnQnIGluIHN0b3JlIik7Ci0gICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuY291bnQiLCAiZnVuY3Rpb24iKTsKLQotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsKLSAgICBzaG91
bGRCZU51bGwoInN0b3JlLmtleVBhdGgiKTsKLSAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5jb250
YWlucygnc3RvcmVOYW1lJykiLCAidHJ1ZSIpOwotICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmxl
bmd0aCIsICIxIik7Ci0gICAgLy8gRklYTUU6IHRlc3QgYWxsIG9mIG9iamVjdCBzdG9yZSdzIG1l
dGhvZHMuCi0KLSAgICBkZWJ1ZygiQXNrIGZvciBhbiBpbmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6
Iik7Ci0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoImluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYn
KSIpOwotICAgICAgICBpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJyk7Ci0gICAgICAgIHRlc3RG
YWlsZWQoIkFza2luZyBmb3IgYSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgc2hvdWxkIGhhdmUg
dGhyb3duLiIpOwotICAgIH0gY2F0Y2ggKGVycikgewotICAgICAgICB0ZXN0UGFzc2VkKCJFeGNl
cHRpb24gdGhyb3duLiIpOwotICAgICAgICBjb2RlID0gZXJyLmNvZGU7Ci0gICAgICAgIHNob3Vs
ZEJlKCJjb2RlIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsK
LSAgICB9Ci0KLSAgICBjcmVhdGVJbmRleCgpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVJbmRleCgp
Ci17Ci0gICAgZGVidWcoImNyZWF0ZUluZGV4KCk6Iik7Ci0gICAgdmFyIGluZGV4ID0gZXZhbEFu
ZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnLCB7dW5pcXVl
OiB0cnVlfSkiKTsgLy8gdHJ1ZSA9PSB1bmlxdWUgcmVxdWlyZW1lbnQuCi0gICAgc2hvdWxkQmVU
cnVlKCJpbmRleCAhPT0gbnVsbCIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1l
cy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4
ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleCAh
PT0gbnVsbCIpOwotIAotICAgIGRlYnVnKCJBc2sgZm9yIGFuIGluZGV4IHRoYXQgZG9lc24ndCBl
eGlzdDoiKTsKLSAgICB0cnkgewotICAgICAgICBkZWJ1ZygiaW5kZXggPSBzdG9yZS5pbmRleCgn
YXNkZicpIik7Ci0gICAgICAgIGluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKTsKLSAgICAgICAg
dGVzdEZhaWxlZCgiQXNraW5nIGZvciBhIHN0b3JlIHRoYXQgZG9lc24ndCBleGlzdCBzaG91bGQg
aGF2ZSB0aHJvd24uIik7Ci0gICAgfSBjYXRjaCAoZXJyKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQo
IkV4Y2VwdGlvbiB0aHJvd24uIik7Ci0gICAgICAgIGNvZGUgPSBlcnIuY29kZQotICAgICAgICBz
aG91bGRCZSgiY29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJS
Iik7Ci0gICAgfQotCi0gICAgY29tbWl0QW5kQ29udGludWUoKTsgICAgCi19Ci0KLWZ1bmN0aW9u
IGNvbW1pdEFuZENvbnRpbnVlKCkKLXsKLSAgICB3aW5kb3cuc2V0VGltZW91dCh0ZXN0U2V0VmVy
c2lvbkFib3J0LCAwKTsKLX0KLQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydCgpCi17Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gZmFpbCIpJyk7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbm90aGVySW5kZXg7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0
ZUFub3RoZXJJbmRleCgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9u
IiwgInZlcnNpb24gZmFpbCIpOwotCi0gICAgdmFyIHNldFZlcnNpb25UcmFucyA9IGV2YWxBbmRM
b2coInNldFZlcnNpb25UcmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRC
ZVRydWUoInNldFZlcnNpb25UcmFucyAhPT0gbnVsbCIpOwotICAgIHNldFZlcnNpb25UcmFucy5v
bmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAgc2V0VmVyc2lvblRy
YW5zLm9uYWJvcnQgPSBjaGVja01ldGFkYXRhOwotICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gc2V0VmVyc2lvblRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwot
ICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2lu
ZGV4RmFpbCcsICd4JykiKTsKLQotICAgIHNldFZlcnNpb25UcmFucy5hYm9ydCgpOwotfQotCi1m
dW5jdGlvbiBjaGVja01ldGFkYXRhKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRi
LnZlcnNpb24iLCAibmV3IHZlcnNpb24iKTsKLSAgICBzaG91bGRCZSgic3RvcmUudHJhbnNhY3Rp
b24iLCAic2V0VmVyc2lvblRyYW5zIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMi
LCAiWydpbmRleE5hbWUnXSIpOwotICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVzLmxlbmd0
aCIsICIxIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJycpIiwg
ImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4
RmFpbCcpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMuY29udGFp
bnMoJ2luZGV4TmFtZScpIiwgInRydWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0
b3JlLmluZGV4TmFtZXNbMF0iLCAiaW5kZXhOYW1lIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJzdG9y
ZS5pbmRleE5hbWVzWzFdIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5pbmRleE5hbWVzWzEw
MF0iKTsKLSAgICBzaG91bGRCZU51bGwoInN0b3JlLmluZGV4TmFtZXMuaXRlbSgxKSIpOwotICAg
IHNob3VsZEJlTnVsbCgic3RvcmUuaW5kZXhOYW1lcy5pdGVtKDEwMCkiKTsKLSAgICBhZGREYXRh
KCk7Ci19Ci0KLXZhciB0ZXN0RGF0ZSA9IG5ldyBEYXRlKCJBdWd1c3QgMjUsIDE5OTEgMjA6NTc6
MDgiKTsKLXZhciB0ZXN0RGF0ZUIgPSBuZXcgRGF0ZSgiV2VkIEphbiAwNSAyMDExIDE1OjU0OjQ5
Iik7Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLQotICAgIGRl
YnVnKCJUcnkgdG8gaW5zZXJ0IGRhdGEgd2l0aCBhIERhdGUga2V5OiIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICdmb28nfSwgdGVzdERhdGUpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBhZGREYXRlU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkRGF0ZVN1Y2Nlc3MoKQot
ewotICAgIGRlYnVnKCJUcnkgdG8gaW5zZXJ0IGEgdmFsdWUgbm90IGhhbmRsZWQgYnkgc3RydWN0
dXJlZCBjbG9uZToiKTsKLSAgICB0cnkgewotICAgICAgICBkZWJ1Zygic3RvcmUuYWRkKHt4OiAn
YmFyJywgeTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKX0sICdiYXInKSIpOwot
ICAgICAgICBzdG9yZS5hZGQoe3g6ICdiYXInLCB5OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29uc29sZScpfSwgJ2JhcicpOwotICAgICAgICB0ZXN0RmFpbGVkKCJQYXNzaW5nIGEgRE9NIG5v
ZGUgYXMgdmFsdWUgc2hvdWxkIGhhdmUgdGhyb3duLiIpOwotICAgIH0gY2F0Y2ggKGVycikgewot
ICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gdGhyb3duIik7Ci0gICAgICAgIGNvZGUgPSBl
cnIuY29kZTsKLSAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xP
TkVfRVJSIik7Ci0gICAgfQotCi0gICAgZGVidWcoIlRyeSB0byBpbnNlcnQgZGF0YSB3aGVyZSBr
ZXkgcGF0aCB5aWVsZHMgYSBEYXRlIGtleToiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHt4OiB0ZXN0RGF0ZUIsIHk6ICd2YWx1ZSd9LCAna2V5JykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGFkZFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQotewotICAgIGRl
YnVnKCJhZGRTdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0IiwgImtleSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAnZm9vJ30sICd6enonKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0LmFkZEV2ZW50
TGlzdGVuZXIoJ2Vycm9yJywgYWRkQWdhaW5GYWlsdXJlLCBmYWxzZSk7Ci19Ci0KLWZ1bmN0aW9u
IGFkZEFnYWluRmFpbHVyZSgpCi17Ci0gICAgZGVidWcoImFkZEFnYWluRmFpbHVyZSgpOiIpOwot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIndlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7Ci0KLSAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2
ZW50RGVmYXVsdCgpIik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5z
YWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7
Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpIik7Ci0KLSAgICBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICdzb21ldmFs
dWUnfSwgJ3NvbWVrZXknKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFk
ZCh7eDogJ290aGVydmFsdWUnfSwgbnVsbCkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKLQotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rp
b24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAg
ICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmFy
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykiKTsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7eDog
bnVsbH0sICd2YWxpZGtleScpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZhciBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCdrZXknKSIpOwotICAg
IHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIGdldFN1Y2Nlc3MsIHRydWUpOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBnZXRTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiZ2V0U3VjY2VzcygpOiIpOwotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC55IiwgInZhbHVlIik7Ci0K
LSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGV2ZW50LnRhcmdldC5zb3VyY2Ui
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KHRlc3REYXRlKSIpOwotICAg
IHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIGdldFN1Y2Nlc3NEYXRlS2V5LCBm
YWxzZSk7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGdldFN1Y2Nlc3NEYXRlS2V5KCkKLXsKLSAgICBkZWJ1ZygiZ2V0U3VjY2Vz
c0RhdGVLZXkoKToiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5y
ZXN1bHQueCIsICJmb28iKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5kZWxl
dGUoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSByZW1vdmVTdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biByZW1vdmVTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygicmVtb3ZlU3VjY2VzcygpOiIpOwotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInRydWUiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSByZW1vdmVTdWNjZXNzQnV0RmFsc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSgp
Ci17Ci0gICAgZGVidWcoInJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSgpOiIpOwotICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgImZhbHNlIik7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSBldmVudC50YXJnZXQuc291cmNlIik7Ci0KLSAgICBkZWJ1ZygiUGFzc2lu
ZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmdldCgpLiIpOwotICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInN0b3JlLmdldCh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKLQotICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gc3RvcmUu
ZGVsZXRlKCkuIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlKHt9
KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWco
IlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5hZGQoKS4iKTsKLSAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQobnVsbCwge30pIiwgIndlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtl
eSBpbnRvIHN0b3JlLnB1dCgpLiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
LnB1dChudWxsLCB7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsK
LQotICAgIHRlc3RQcmVDb25kaXRpb25zKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RQcmVDb25kaXRp
b25zKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RQcmVDb25kaXRpb25zKCk6
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ByZWNvbmRpdGlv
biB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBzdG9y
ZVdpdGhJbkxpbmVLZXlzID0gZXZhbEFuZExvZygic3RvcmVXaXRoSW5MaW5lS2V5cyA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhJbkxpbmVLZXlzJywge2tleVBhdGg6ICdrZXknfSki
KTsKLSAgICAgICAgc3RvcmVXaXRoT3V0T2ZMaW5lS2V5cyA9IGV2YWxBbmRMb2coInN0b3JlV2l0
aE91dE9mTGluZUtleXMgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVXaXRoT3V0SU9mTGlu
ZUtleXMnKSIpOwotICAgICAgICBzdG9yZVdpdGhJbmRleCA9IGV2YWxBbmRMb2coInN0b3JlV2l0
aEluZGV4ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlV2l0aEluZGV4JykiKTsKLSAgICAg
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlV2l0aEluZGV4LmNyZWF0ZUluZGV4
KCdpbmRleE5hbWUnLCAnaW5kZXhLZXknKSIpOwotCi0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAg
ICAgZGVidWcoIklEQk9iamVjdFN0b3JlLnB1dCgpIik7Ci0gICAgICAgIGRlYnVnKCJUaGUgb2Jq
ZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgcHJv
dmlkZWQuIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGlu
ZUtleXMucHV0KHtrZXk6IDF9LCAna2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKLQotICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1v
Zi1saW5lIGtleXMgYW5kIGhhcyBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRl
ciB3YXMgbm90IHByb3ZpZGVkLiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJz
dG9yZVdpdGhPdXRPZkxpbmVLZXlzLnB1dCh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKLQotICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGlu
LWxpbmUga2V5cyBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUn
cyBrZXkgcGF0aCB5aWVsZHMgYSB2YWx1ZSBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBr
ZXkuIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtl
eXMucHV0KHtrZXk6IG51bGx9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOwotCi0gICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlz
IGJ1dCBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9i
amVjdCBzdG9yZSdzIGtleSBwYXRoIGRvZXMgbm90IHlpZWxkIGEgdmFsdWUuIik7Ci0gICAgICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMucHV0KHt9KSIsICJ3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCJU
aGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxp
ZCBrZXkuIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91dE9m
TGluZUtleXMucHV0KHt9LCBudWxsKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCJJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVmZXJl
bmNpbmcgdGhpcyBvYmplY3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2YWx1
YXRpbmcgdGhlaXIga2V5IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2YWx1
ZSwgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LiIpOwotICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbmRleC5wdXQoe2luZGV4S2V5OiBudWxsfSwgJ2tl
eScpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAgICAg
ZGVidWcoIiIpOwotICAgICAgICBkZWJ1ZygiSURCT2JqZWN0U3RvcmUuYWRkKCkiKTsKLSAgICAg
ICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSBrZXkg
cGFyYW1ldGVyIHdhcyBwcm92aWRlZC4iKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQoe2tleTogMX0sICdrZXknKSIsICJ3ZWJraXRJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0
IHN0b3JlIHVzZXMgb3V0LW9mLWxpbmUga2V5cyBhbmQgaGFzIG5vIGtleSBnZW5lcmF0b3IgYW5k
IHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBub3QgcHJvdmlkZWQuIik7Ci0gICAgICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91dE9mTGluZUtleXMuYWRkKHt9KSIsICJ3ZWJraXRJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCJUaGUgb2Jq
ZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcg
dGhlIG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIHlpZWxkcyBhIHZhbHVlIGFuZCB0aGF0IHZhbHVl
IGlzIG5vdCBhIHZhbGlkIGtleS4iKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQoe2tleTogbnVsbH0pIiwgIndlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUg
dXNlcyBpbi1saW5lIGtleXMgYnV0IG5vIGtleSBnZW5lcmF0b3IgYW5kIHRoZSByZXN1bHQgb2Yg
ZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggZG9lcyBub3QgeWllbGQgYSB2
YWx1ZS4iKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5MaW5l
S2V5cy5hZGQoe30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0K
LSAgICAgICAgZGVidWcoIlRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZCBidXQgZG9lcyBu
b3QgY29udGFpbiBhIHZhbGlkIGtleS4iKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5hZGQoe30sIG51bGwpIiwgIndlYmtpdElEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAgICAgZGVidWcoIklmIHRoZXJlIGFyZSBh
bnkgaW5kZXhlcyByZWZlcmVuY2luZyB0aGlzIG9iamVjdCBzdG9yZSB3aG9zZSBrZXkgcGF0aCBp
cyBhIHN0cmluZywgZXZhbHVhdGluZyB0aGVpciBrZXkgcGF0aCBvbiB0aGUgdmFsdWUgcGFyYW1l
dGVyIHlpZWxkcyBhIHZhbHVlLCBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuIik7
Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluZGV4LmFkZCh7aW5k
ZXhLZXk6IG51bGx9LCAna2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKLQotICAgICAgICBkb25lKCk7Ci0gICAgfTsKLX0KLQotCi0KLXRlc3QoKTsKLQotCi08
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWJhc2ljcy5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1iYXNpY3MuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTAxZTM2ZmEyNmFmNDIxNDQ2NGQxYjcyN2Q1N2FkODNjMTZkNDUwYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1iYXNp
Y3MuanMKQEAgLTAsMCArMSwyODAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJ2lkYi13b3JrZXItY29tbW9uLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mg
b2YgSW5kZXhlZERCJ3Mgd2Via2l0SURCSW5kZXguIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3BlbignaW5kZXgtYmFz
aWNzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb24oZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVs
ZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKGV2dCkKK3sKKyAgICBldmVudCA9IGV2
dDsKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxm
LnN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51
bGwpIik7CisgICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUlu
ZGV4KCdpbmRleE5hbWUnLCAneCcpIik7CisgICAgc2VsZi5pbmRleE9iamVjdDIgPSBldmFsQW5k
TG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lMicsICd5JywgZmFsc2UpIik7CisgICAg
c2VsZi5pbmRleE9iamVjdDMgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnekluZGV4
JywgJ3onLCB0cnVlKSIpOworICAgIGFkZERhdGEoKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgp
Cit7CisgICAgc2hvdWxkQmVUcnVlKCInbmFtZScgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImluZGV4T2JqZWN0Lm5hbWUiLCAiaW5kZXhOYW1lIik7CisgICAg
c2hvdWxkQmVUcnVlKCInb2JqZWN0U3RvcmUnIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5vYmplY3RTdG9yZS5uYW1lIiwgInN0b3JlTmFt
ZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2tleVBhdGgnIGluIGluZGV4T2JqZWN0Iik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5rZXlQYXRoIiwgIngiKTsKKyAgICBz
aG91bGRCZVRydWUoIid1bmlxdWUnIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVUcnVl
KCInbXVsdGlFbnRyeScgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRl
eE9iamVjdC51bmlxdWUiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleE9iamVjdC5tdWx0aUVu
dHJ5Iik7CisgICAgc2hvdWxkQmVUcnVlKCInb3BlbktleUN1cnNvcicgaW4gaW5kZXhPYmplY3Qi
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5vcGVuS2V5
Q3Vyc29yIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInb3BlbkN1cnNvcicgaW4g
aW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9i
amVjdC5vcGVuQ3Vyc29yIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInZ2V0S2V5
JyBpbiBpbmRleE9iamVjdCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIGlu
ZGV4T2JqZWN0LmdldEtleSIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2dldCcg
aW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRl
eE9iamVjdC5nZXQiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidjb3VudCcgaW4g
aW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9i
amVjdC5jb3VudCIsICJmdW5jdGlvbiIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0
b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eicsIHo6IDIuNzJ9LCAna2V5JykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGEyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGREYXRhMihldnQpCit7CisgICAg
ZXZlbnQgPSBldnQ7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3Vy
Y2UuYWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInLCB6OiAyLjcxLCBmb29iYXI6IDEyfSwgJ2tl
eTInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRGF0YTM7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2VsZi5pbmRleE9iamVjdDQg
PSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhXaGlsZUFkZElzSW5GbGlnaHQn
LCAneCcpIik7CisgICAgc2VsZi5pbmRleE9iamVjdDUgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVh
dGVJbmRleCgnaW5kZXhXaXRoV2VpcmRLZXlQYXRoJywgJ2Zvb2JhcicpIik7Cit9CisKK2Z1bmN0
aW9uIGFkZERhdGEzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICAvLyBBZGQgZGF0YSB3
aGljaCBkb2Vzbid0IGhhdmUgYSBrZXkgaW4gdGhlIHpJbmRleC4KKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnNDU2J30s
ICdrZXkzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGE7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERh
dGEoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleE9iamVjdC5nZXRLZXkoJ3ZhbHVlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdl
dE9iamVjdERhdGE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERhdGEoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXki
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdDIuZ2V0S2V5KCd6enon
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTI7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9i
amVjdERhdGEyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAia2V5Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhPYmplY3QzLmdldCgyLjcxKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZ2V0T2JqZWN0RGF0YTM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERhdGEzKGV2dCkKK3sKKyAgICBldmVu
dCA9IGV2dDsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
eCIsICJ2YWx1ZTIiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5n
ZXQoJ3ZhbHVlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFGYWlsOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBnZXREYXRhRmFpbChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LngiLCAidmFsdWUiKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueSIsICJ6enoiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ2RvZXMgbm90IGV4aXN0Jyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGFGYWlsOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdl
dE9iamVjdERhdGFGYWlsKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleE9iamVjdC5nZXQoJ2RvZXMgbm90IGV4aXN0JykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGE0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERhdGE0KGV2dCkK
K3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIs
ICJ1bmRlZmluZWQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdDQu
Z2V0S2V5KCd2YWx1ZTInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNv
cjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSAgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5LZXlDdXJzb3IoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkyIik7CisKKyAg
ICBzZWxmLnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKCki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3Vyc29y
MUNvbnRpbnVlKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnNvdXJjZSIsICJpbmRleE9iamVjdCIpOworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50
LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAia2V5Iik7CisKKyAgICAvLyBX
ZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCisgICAgZXZhbEFuZExvZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9
IGN1cnNvcjFDb250aW51ZTI7Cit9CisKK2Z1bmN0aW9uIGN1cnNvcjFDb250aW51ZTIoZXZ0KQor
eworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1
bHQgPT09IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5y
ZXN1bHQua2V5IiwgInZhbHVlMiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleTIiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0
aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVz
dWx0LmNvbnRpbnVlKCkiKTsKKyAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMUNv
bnRpbnVlMzsKK30KKworZnVuY3Rpb24gY3Vyc29yMUNvbnRpbnVlMyhldnQpCit7CisgICAgZXZl
bnQgPSBldnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVs
bCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXki
LCAidmFsdWUzIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVz
dWx0LnByaW1hcnlLZXkiLCAia2V5MyIpOworCisgICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJl
cXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuT2JqZWN0Q3Vyc29yOwor
fQorCitmdW5jdGlvbiBvcGVuT2JqZWN0Q3Vyc29yKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsK
KyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKworICAg
IHNlbGYucmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5DdXJzb3IoKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjdXJzb3IyQ29u
dGludWUoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQuc291cmNlIiwgImluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6eiIpOworCisgICAg
Ly8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjdXJzb3IyQ29udGludWUyOworfQorCitmdW5jdGlvbiBjdXJzb3IyQ29udGludWUyKGV2
dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQu
cmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJn
ZXQucmVzdWx0LmtleSIsICJ2YWx1ZTIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZTIiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueSIsICJ6enoyIik7CisKKyAgICAv
LyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCisgICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGN1cnNvcjJDb250aW51ZTM7Cit9CisKK2Z1bmN0aW9uIGN1cnNvcjJDb250aW51ZTMoZXZ0
KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5y
ZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQua2V5IiwgInZhbHVlMyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC52YWx1ZS54IiwgInZhbHVlMyIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgIjQ1NiIpOworCisgICAgLy8g
V2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBsYXN0OworfQorCitmdW5jdGlvbiBsYXN0KGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAg
ICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKworICAgIHRy
eSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gaW5kZXhPYmpl
Y3QuZ2V0KHt9KS4iKTsKKyAgICAgICAgaW5kZXhPYmplY3QuZ2V0KHt9KTsKKyAgICAgICAgdGVz
dEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAg
fQorCisgICAgdHJ5IHsKKyAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50
byBpbmRleE9iamVjdC5nZXRLZXkoe30pLiIpOworICAgICAgICBpbmRleE9iamVjdC5nZXRLZXko
e30pOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50
b1N0cmluZygpKTsKKyAgICB9CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzNjQwYjM3ZTU5ODFjOTJhNzBlZTYzNWQyZTc5NzE2NTZiMjZmODIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3Rv
cmUtYmFzaWNzLmpzCkBAIC0wLDAgKzEsMzM3IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdpZGItd29ya2VyLWNvbW1vbi5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGUg
YmFzaWNzIG9mIEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLiIpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ29i
amVjdHN0b3JlLWJhc2ljcycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVn
KCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9u
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0
OworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGRlYnVn
KCJjcmVhdGVPYmplY3RTdG9yZSgpOiIpOworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHZh
ciBzdG9yZU5hbWVzID0gZXZhbEFuZExvZygic3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFt
ZXMiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiJ25hbWUnIGluIHN0b3JlIik7CisgICAgc2hvdWxk
QmVUcnVlKCIna2V5UGF0aCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZVRydWUoIidpbmRleE5h
bWVzJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ3RyYW5zYWN0aW9uJyBpbiBzdG9y
ZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ3B1dCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5wdXQiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRC
ZVRydWUoIidhZGQnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBl
b2Ygc3RvcmUuYWRkIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInZGVsZXRlJyBp
biBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmRlbGV0
ZSIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2dldCcgaW4gc3RvcmUiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5nZXQiLCAiZnVuY3Rpb24iKTsK
KyAgICBzaG91bGRCZVRydWUoIidjbGVhcicgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInR5cGVvZiBzdG9yZS5jbGVhciIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJl
VHJ1ZSgiJ29wZW5DdXJzb3InIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ0eXBlb2Ygc3RvcmUub3BlbkN1cnNvciIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1
ZSgiJ2NyZWF0ZUluZGV4JyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
dHlwZW9mIHN0b3JlLmNyZWF0ZUluZGV4IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVl
KCInaW5kZXgnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Yg
c3RvcmUuaW5kZXgiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidkZWxldGVJbmRl
eCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5k
ZWxldGVJbmRleCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2NvdW50JyBpbiBz
dG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmNvdW50Iiwg
ImZ1bmN0aW9uIik7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlLm5hbWUiLCAi
c3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5rZXlQYXRoIik7CisgICAgc2hv
dWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlTmFtZScpIiwgInRydWUiKTsKKyAgICBz
aG91bGRCZSgic3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIC8vIEZJWE1FOiB0ZXN0IGFs
bCBvZiBvYmplY3Qgc3RvcmUncyBtZXRob2RzLgorCisgICAgZGVidWcoIkFzayBmb3IgYW4gaW5k
ZXggdGhhdCBkb2Vzbid0IGV4aXN0OiIpOworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJpbmRl
eCA9IHN0b3JlLmluZGV4KCdhc2RmJykiKTsKKyAgICAgICAgaW5kZXggPSBzdG9yZS5pbmRleCgn
YXNkZicpOworICAgICAgICB0ZXN0RmFpbGVkKCJBc2tpbmcgZm9yIGEgc3RvcmUgdGhhdCBkb2Vz
bid0IGV4aXN0IHNob3VsZCBoYXZlIHRocm93bi4iKTsKKyAgICB9IGNhdGNoIChlcnIpIHsKKyAg
ICAgICAgdGVzdFBhc3NlZCgiRXhjZXB0aW9uIHRocm93bi4iKTsKKyAgICAgICAgY29kZSA9IGVy
ci5jb2RlOworICAgICAgICBzaG91bGRCZSgiY29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgfQorCisgICAgY3JlYXRlSW5kZXgoKTsKK30KKwor
ZnVuY3Rpb24gY3JlYXRlSW5kZXgoKQoreworICAgIGRlYnVnKCJjcmVhdGVJbmRleCgpOiIpOwor
ICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2lu
ZGV4TmFtZScsICd4Jywge3VuaXF1ZTogdHJ1ZX0pIik7IC8vIHRydWUgPT0gdW5pcXVlIHJlcXVp
cmVtZW50LgorICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwiKTsKKyAgICBzaG91bGRC
ZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7CisgICAgaW5k
ZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIpOworICAg
IHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwiKTsKKyAKKyAgICBkZWJ1ZygiQXNrIGZvciBh
biBpbmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6Iik7CisgICAgdHJ5IHsKKyAgICAgICAgZGVidWco
ImluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKSIpOworICAgICAgICBpbmRleCA9IHN0b3JlLmlu
ZGV4KCdhc2RmJyk7CisgICAgICAgIHRlc3RGYWlsZWQoIkFza2luZyBmb3IgYSBzdG9yZSB0aGF0
IGRvZXNuJ3QgZXhpc3Qgc2hvdWxkIGhhdmUgdGhyb3duLiIpOworICAgIH0gY2F0Y2ggKGVycikg
eworICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gdGhyb3duLiIpOworICAgICAgICBjb2Rl
ID0gZXJyLmNvZGUKKyAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAid2Via2l0SURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIH0KKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
dGVzdFNldFZlcnNpb25BYm9ydDsKK30KKworZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydCgp
Cit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gZmFp
bCIpJyk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbm90aGVySW5kZXg7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZUFub3RoZXJJbmRleChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gZmFpbCIpOworCisgICAgdmFy
IHNldFZlcnNpb25UcmFucyA9IGV2YWxBbmRMb2coInNldFZlcnNpb25UcmFucyA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInNldFZlcnNpb25UcmFucyAhPT0gbnVs
bCIpOworICAgIHNldFZlcnNpb25UcmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRl
Q2FsbGJhY2s7CisgICAgc2V0VmVyc2lvblRyYW5zLm9uYWJvcnQgPSBjaGVja01ldGFkYXRhOwor
ICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHNldFZlcnNpb25UcmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRl
eCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICBzZXRWZXJz
aW9uVHJhbnMuYWJvcnQoKTsKK30KKworZnVuY3Rpb24gY2hlY2tNZXRhZGF0YSgpCit7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIm5ldyB2ZXJzaW9uIik7CisgICAg
c2hvdWxkQmUoInN0b3JlLnRyYW5zYWN0aW9uIiwgInNldFZlcnNpb25UcmFucyIpOworICAgIHNo
b3VsZEJlKCJzdG9yZS5pbmRleE5hbWVzIiwgIlsnaW5kZXhOYW1lJ10iKTsKKyAgICBzaG91bGRC
ZSgic3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJzdG9yZS5p
bmRleE5hbWVzLmNvbnRhaW5zKCcnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJzdG9yZS5p
bmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleEZhaWwnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJl
KCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIsICJ0cnVlIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZS5pbmRleE5hbWVzWzBdIiwgImluZGV4TmFtZSIp
OworICAgIHNob3VsZEJlTnVsbCgic3RvcmUuaW5kZXhOYW1lc1sxXSIpOworICAgIHNob3VsZEJl
TnVsbCgic3RvcmUuaW5kZXhOYW1lc1sxMDBdIik7CisgICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5p
bmRleE5hbWVzLml0ZW0oMSkiKTsKKyAgICBzaG91bGRCZU51bGwoInN0b3JlLmluZGV4TmFtZXMu
aXRlbSgxMDApIik7CisgICAgYWRkRGF0YSgpOworfQorCit2YXIgdGVzdERhdGUgPSBuZXcgRGF0
ZSgiQXVndXN0IDI1LCAxOTkxIDIwOjU3OjA4Iik7Cit2YXIgdGVzdERhdGVCID0gbmV3IERhdGUo
IldlZCBKYW4gMDUgMjAxMSAxNTo1NDo0OSIpOworCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAg
ICB2YXIgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0
aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Cisg
ICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHNl
bGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKSIpOworCisgICAgZGVidWcoIlRyeSB0byBpbnNlcnQgZGF0YSB3aXRoIGEgRGF0
ZSBrZXk6Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ2Zvbyd9
LCB0ZXN0RGF0ZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGVTdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBhZGREYXRlU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWco
IlRyeSB0byBpbnNlcnQgYSB2YWx1ZSBub3QgaGFuZGxlZCBieSBzdHJ1Y3R1cmVkIGNsb25lOiIp
OworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJzdG9yZS5hZGQoe3g6ICdiYXInLCB5OiBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpfSwgJ2JhcicpIik7CisgICAgICAgIHN0b3Jl
LmFkZCh7eDogJ2JhcicsIHk6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyl9LCAn
YmFyJyk7CisgICAgICAgIHRlc3RGYWlsZWQoIlBhc3NpbmcgYSBET00gbm9kZSBhcyB2YWx1ZSBz
aG91bGQgaGF2ZSB0aHJvd24uIik7CisgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAgIHRlc3RQ
YXNzZWQoIkV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICAgICAgY29kZSA9IGVyci5jb2RlOworICAg
ICAgICBzaG91bGRCZSgiY29kZSIsICIyNSIpOworICAgIH0KKworICAgIGRlYnVnKCJUcnkgdG8g
aW5zZXJ0IGRhdGEgd2hlcmUga2V5IHBhdGggeWllbGRzIGEgRGF0ZSBrZXk6Iik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogdGVzdERhdGVCLCB5OiAndmFsdWUnfSwg
J2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRT
dWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiYWRkU3VjY2Vzcygp
OiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJr
ZXkiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmFk
ZCh7eDogJ2Zvbyd9LCAnenp6JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0
ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcics
IGFkZEFnYWluRmFpbHVyZSwgZmFsc2UpOworfQorCitmdW5jdGlvbiBhZGRBZ2FpbkZhaWx1cmUo
ZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCJhZGRBZ2FpbkZhaWx1cmUoKToi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJ3ZWJraXRJREJEYXRh
YmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOworCisgICAgZXZhbEFuZExvZygiZXZlbnQu
cHJldmVudERlZmF1bHQoKSIpOworCisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50
cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAnc29t
ZXZhbHVlJ30sICdzb21la2V5JykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9y
ZS5hZGQoe3g6ICdvdGhlcnZhbHVlJ30sIG51bGwpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7CisKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5z
YWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7
CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQo
e3g6IG51bGx9LCAndmFsaWRrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOworCisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihb
J3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2YXIgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsK
KyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBnZXRTdWNjZXNzLCB0cnVl
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gZ2V0U3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWco
ImdldFN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQueSIsICJ2YWx1ZSIpOworCisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSBldmVudC50YXJnZXQuc291cmNlIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0
b3JlLmdldCh0ZXN0RGF0ZSkiKTsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nl
c3MnLCBnZXRTdWNjZXNzRGF0ZUtleSwgZmFsc2UpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRTdWNjZXNzRGF0ZUtleShl
dnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoImdldFN1Y2Nlc3NEYXRlS2V5KCk6
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LngiLCAi
Zm9vIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKCdrZXknKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVtb3ZlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcmVtb3ZlU3Vj
Y2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoInJlbW92ZVN1Y2Nlc3Mo
KToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0cnVlIik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKCdrZXknKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcmVtb3ZlU3VjY2Vzc0J1dEZhbHNlOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiByZW1vdmVTdWNjZXNz
QnV0RmFsc2UoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCJyZW1vdmVTdWNj
ZXNzQnV0RmFsc2UoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJm
YWxzZSIpOworICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZXZlbnQudGFyZ2V0
LnNvdXJjZSIpOworCisgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9y
ZS5nZXQoKS4iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoe30pIiwg
IndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiUGFz
c2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmRlbGV0ZSgpLiIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLmRlbGV0ZSh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKKworICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGlu
dG8gc3RvcmUuYWRkKCkuIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRk
KG51bGwsIHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisg
ICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5wdXQoKS4iKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQobnVsbCwge30pIiwgIndlYmtpdElE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICB0ZXN0UHJlQ29uZGl0aW9ucygp
OworfQorCitmdW5jdGlvbiB0ZXN0UHJlQ29uZGl0aW9ucygpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJ0ZXN0UHJlQ29uZGl0aW9ucygpOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCdwcmVjb25kaXRpb24gdmVyc2lvbicpIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc3RvcmVXaXRoSW5MaW5lS2V5cyA9IGV2YWxBbmRM
b2coInN0b3JlV2l0aEluTGluZUtleXMgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVXaXRo
SW5MaW5lS2V5cycsIHtrZXlQYXRoOiAna2V5J30pIik7CisgICAgICAgIHN0b3JlV2l0aE91dE9m
TGluZUtleXMgPSBldmFsQW5kTG9nKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlV2l0aE91dElPZkxpbmVLZXlzJykiKTsKKyAgICAgICAgc3RvcmVX
aXRoSW5kZXggPSBldmFsQW5kTG9nKCJzdG9yZVdpdGhJbmRleCA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZVdpdGhJbmRleCcpIik7CisgICAgICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5k
ZXggPSBzdG9yZVdpdGhJbmRleC5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ2luZGV4S2V5Jyki
KTsKKworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJJREJPYmplY3RTdG9yZS5w
dXQoKSIpOworICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5
cyBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkLiIpOworICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7a2V5OiAxfSwgJ2tleScp
IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVi
dWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBvdXQtb2YtbGluZSBrZXlzIGFuZCBoYXMgbm8ga2V5
IGdlbmVyYXRvciBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIG5vdCBwcm92aWRlZC4iKTsKKyAg
ICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5wdXQo
e30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAg
ZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSByZXN1bHQg
b2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggeWllbGRzIGEgdmFsdWUg
YW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LiIpOworICAgICAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7a2V5OiBudWxsfSkiLCAid2Vi
a2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1ZygiVGhl
IG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBidXQgbm8ga2V5IGdlbmVyYXRvciBhbmQg
dGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCBkb2Vz
IG5vdCB5aWVsZCBhIHZhbHVlLiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJz
dG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1ZygiVGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3Zp
ZGVkIGJ1dCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQga2V5LiIpOworICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLnB1dCh7fSwgbnVsbCkiLCAi
d2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1Zygi
SWYgdGhlcmUgYXJlIGFueSBpbmRleGVzIHJlZmVyZW5jaW5nIHRoaXMgb2JqZWN0IHN0b3JlIHdo
b3NlIGtleSBwYXRoIGlzIGEgc3RyaW5nLCBldmFsdWF0aW5nIHRoZWlyIGtleSBwYXRoIG9uIHRo
ZSB2YWx1ZSBwYXJhbWV0ZXIgeWllbGRzIGEgdmFsdWUsIGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBh
IHZhbGlkIGtleS4iKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRo
SW5kZXgucHV0KHtpbmRleEtleTogbnVsbH0sICdrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWco
IklEQk9iamVjdFN0b3JlLmFkZCgpIik7CisgICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3Jl
IHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQuIik7
CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMuYWRk
KHtrZXk6IDF9LCAna2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKKworICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5lIGtl
eXMgYW5kIGhhcyBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgbm90
IHByb3ZpZGVkLiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhP
dXRPZkxpbmVLZXlzLmFkZCh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKKworICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5
cyBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0
aCB5aWVsZHMgYSB2YWx1ZSBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuIik7Cisg
ICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMuYWRkKHtr
ZXk6IG51bGx9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisg
ICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGJ1dCBubyBr
ZXkgZ2VuZXJhdG9yIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9y
ZSdzIGtleSBwYXRoIGRvZXMgbm90IHlpZWxkIGEgdmFsdWUuIik7CisgICAgICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMuYWRkKHt9KSIsICJ3ZWJraXRJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAgIGRlYnVnKCJUaGUga2V5IHBh
cmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBrZXkuIik7
CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91dE9mTGluZUtleXMu
YWRkKHt9LCBudWxsKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwor
CisgICAgICAgIGRlYnVnKCJJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVmZXJlbmNpbmcgdGhp
cyBvYmplY3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2YWx1YXRpbmcgdGhl
aXIga2V5IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2YWx1ZSwgYW5kIHRo
YXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZVdpdGhJbmRleC5hZGQoe2luZGV4S2V5OiBudWxsfSwgJ2tleScpIiwgIndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgfTsKK30KKwordmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCit0ZXN0KCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125681</attachid>
            <date>2012-02-06 11:58:54 -0800</date>
            <delta_ts>2012-02-06 13:57:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77805-20120206115853.patch</filename>
            <type>text/plain</type>
            <size>67106</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODE5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDExZmNjOGUwYTNmNzU3OTIxNWVj
YTFiNDg4YWEwMzgxYTNiYWU4OS4uNDNkYTlmMDY1MjliMzg5NjFkNDAxODZjYmE2N2I5MmEwN2Y5
ZjVmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTAyLTA2ICBEYXZpZCBHcm9nYW4gIDxk
Z3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb3J0IHNvbWUgaW5kZXhlZGRiIGxheW91
dCB0ZXN0cyB0byB3b3JrZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzc4MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBKdXN0IGluZGV4LWJhc2ljcyBhbmQgb2JqZWN0c3RvcmUtYmFzaWNzIGluIHRo
aXMgcGF0Y2guCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29y
a2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2lu
ZGV4LWJhc2ljcy13b3JrZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL2luZGV4LWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRt
bC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxl
dGVFeGlzdGluZyk6CisgICAgICAgIChhZGREYXRhKToKKyAgICAgICAgKGFkZERhdGEyKToKKyAg
ICAgICAgKGFkZERhdGEzKToKKyAgICAgICAgKGdldERhdGEpOgorICAgICAgICAoZ2V0T2JqZWN0
RGF0YSk6CisgICAgICAgIChnZXRPYmplY3REYXRhMik6CisgICAgICAgIChnZXRPYmplY3REYXRh
Myk6CisgICAgICAgIChnZXREYXRhRmFpbCk6CisgICAgICAgIChnZXRPYmplY3REYXRhRmFpbCk6
CisgICAgICAgIChnZXRPYmplY3REYXRhNCk6CisgICAgICAgIChvcGVuS2V5Q3Vyc29yKToKKyAg
ICAgICAgKGN1cnNvcjFDb250aW51ZSk6CisgICAgICAgIChjdXJzb3IxQ29udGludWUyKToKKyAg
ICAgICAgKGN1cnNvcjFDb250aW51ZTMpOgorICAgICAgICAob3Blbk9iamVjdEN1cnNvcik6Cisg
ICAgICAgIChjdXJzb3IyQ29udGludWUpOgorICAgICAgICAoY3Vyc29yMkNvbnRpbnVlMik6Cisg
ICAgICAgIChjdXJzb3IyQ29udGludWUzKToKKyAgICAgICAgKGxhc3QudHJ5LmdldCB0ZXN0RmFp
bGVkKToKKyAgICAgICAgKGxhc3QpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sLgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAg
ICAgIChjcmVhdGVJbmRleCk6CisgICAgICAgICh0ZXN0U2V0VmVyc2lvbkFib3J0KToKKyAgICAg
ICAgKGNyZWF0ZUFub3RoZXJJbmRleCk6CisgICAgICAgIChjaGVja01ldGFkYXRhKToKKyAgICAg
ICAgKGFkZERhdGEpOgorICAgICAgICAoYWRkRGF0ZVN1Y2Nlc3MpOgorICAgICAgICAoYWRkU3Vj
Y2Vzcyk6CisgICAgICAgIChhZGRBZ2FpbkZhaWx1cmUpOgorICAgICAgICAoZ2V0U3VjY2Vzcyk6
CisgICAgICAgIChnZXRTdWNjZXNzRGF0ZUtleSk6CisgICAgICAgIChyZW1vdmVTdWNjZXNzKToK
KyAgICAgICAgKHJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSk6CisgICAgICAgICh0ZXN0UHJlQ29uZGl0
aW9ucy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0UHJlQ29uZGl0aW9ucyk6CisK
IDIwMTItMDItMDYgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBDcmFzaCBpbiBTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLXdvcmtlcnMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLXdvcmtl
cnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzZmYzMTIwZTk5MDE3MGM0N2U4OGY4YjVlYzc5
YjE1Mjg2MzMzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5OCBAQAor
W1dvcmtlcl0gVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIHdlYmtpdElEQkluZGV4Lgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJj
ZXMvaW5kZXgtYmFzaWNzLmpzCitbV29ya2VyXSB3ZWJraXRJbmRleGVkREIub3BlbignaW5kZXgt
YmFzaWNzJykKK1tXb3JrZXJdIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorW1dvcmtlcl0gZGIu
c2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQorW1dvcmtlcl0gc2V0VmVyc2lvblN1Y2Nlc3MoKToK
K1tXb3JrZXJdIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBbV29ya2VyXSB0cmFu
cyAhPT0gbnVsbCBpcyB0cnVlCitbV29ya2VyXSBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgor
W1dvcmtlcl0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpCitbV29ya2Vy
XSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnKQorW1dvcmtlcl0gc3RvcmUuY3Jl
YXRlSW5kZXgoJ2luZGV4TmFtZTInLCAneScsIGZhbHNlKQorW1dvcmtlcl0gc3RvcmUuY3JlYXRl
SW5kZXgoJ3pJbmRleCcsICd6JywgdHJ1ZSkKK1BBU1MgW1dvcmtlcl0gJ25hbWUnIGluIGluZGV4
T2JqZWN0IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gaW5kZXhPYmplY3QubmFtZSBpcyAiaW5kZXhO
YW1lIgorUEFTUyBbV29ya2VyXSAnb2JqZWN0U3RvcmUnIGluIGluZGV4T2JqZWN0IGlzIHRydWUK
K1BBU1MgW1dvcmtlcl0gaW5kZXhPYmplY3Qub2JqZWN0U3RvcmUubmFtZSBpcyAic3RvcmVOYW1l
IgorUEFTUyBbV29ya2VyXSAna2V5UGF0aCcgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyBb
V29ya2VyXSBpbmRleE9iamVjdC5rZXlQYXRoIGlzICJ4IgorUEFTUyBbV29ya2VyXSAndW5pcXVl
JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdICdtdWx0aUVudHJ5JyBpbiBp
bmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGluZGV4T2JqZWN0LnVuaXF1ZSBpcyBm
YWxzZQorUEFTUyBbV29ya2VyXSBpbmRleE9iamVjdC5tdWx0aUVudHJ5IGlzIGZhbHNlCitQQVNT
IFtXb3JrZXJdICdvcGVuS2V5Q3Vyc29yJyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtX
b3JrZXJdIHR5cGVvZiBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yIGlzICJmdW5jdGlvbiIKK1BB
U1MgW1dvcmtlcl0gJ29wZW5DdXJzb3InIGluIGluZGV4T2JqZWN0IGlzIHRydWUKK1BBU1MgW1dv
cmtlcl0gdHlwZW9mIGluZGV4T2JqZWN0Lm9wZW5DdXJzb3IgaXMgImZ1bmN0aW9uIgorUEFTUyBb
V29ya2VyXSAnZ2V0S2V5JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5
cGVvZiBpbmRleE9iamVjdC5nZXRLZXkgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnZ2V0
JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5cGVvZiBpbmRleE9iamVj
dC5nZXQgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnY291bnQnIGluIGluZGV4T2JqZWN0
IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIGluZGV4T2JqZWN0LmNvdW50IGlzICJmdW5j
dGlvbiIKK1tXb3JrZXJdIHN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eicsIHo6IDIuNzJ9
LCAna2V5JykKK1tXb3JrZXJdIGV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFsdWUyJywg
eTogJ3p6ejInLCB6OiAyLjcxLCBmb29iYXI6IDEyfSwgJ2tleTInKQorW1dvcmtlcl0gc3RvcmUu
Y3JlYXRlSW5kZXgoJ2luZGV4V2hpbGVBZGRJc0luRmxpZ2h0JywgJ3gnKQorW1dvcmtlcl0gc3Rv
cmUuY3JlYXRlSW5kZXgoJ2luZGV4V2l0aFdlaXJkS2V5UGF0aCcsICdmb29iYXInKQorW1dvcmtl
cl0gZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnNDU2J30sICdrZXkz
JykKK1tXb3JrZXJdIGluZGV4T2JqZWN0LmdldEtleSgndmFsdWUnKQorUEFTUyBbV29ya2VyXSBl
dmVudC50YXJnZXQucmVzdWx0IGlzICJrZXkiCitbV29ya2VyXSBpbmRleE9iamVjdDIuZ2V0S2V5
KCd6enonKQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlzICJrZXkiCitbV29y
a2VyXSBpbmRleE9iamVjdDMuZ2V0KDIuNzEpCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5y
ZXN1bHQueCBpcyAidmFsdWUyIgorW1dvcmtlcl0gaW5kZXhPYmplY3QuZ2V0KCd2YWx1ZScpCitQ
QVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQueCBpcyAidmFsdWUiCitQQVNTIFtXb3Jr
ZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQueSBpcyAienp6IgorW1dvcmtlcl0gaW5kZXhPYmplY3Qu
Z2V0S2V5KCdkb2VzIG5vdCBleGlzdCcpCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1
bHQgaXMgdW5kZWZpbmVkCitbV29ya2VyXSBpbmRleE9iamVjdC5nZXQoJ2RvZXMgbm90IGV4aXN0
JykKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQKK1tXb3Jr
ZXJdIGluZGV4T2JqZWN0NC5nZXRLZXkoJ3ZhbHVlMicpCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRh
cmdldC5yZXN1bHQgaXMgImtleTIiCitbV29ya2VyXSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29y
KCkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnNvdXJjZSBpcyBpbmRleE9iamVjdAorUEFT
UyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIGlzIGZhbHNlCitQQVNTIFtX
b3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQua2V5IGlzICJ2YWx1ZSIKK1BBU1MgW1dvcmtlcl0g
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IGlzICJrZXkiCitbV29ya2VyXSBldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCA9PT0gbnVsbCBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0Lmtl
eSBpcyAidmFsdWUyIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkgaXMgImtleTIiCitbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkKK1BB
U1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCBpcyBmYWxzZQorUEFTUyBb
V29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LmtleSBpcyAidmFsdWUzIgorUEFTUyBbV29ya2Vy
XSBldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkgaXMgImtleTMiCitbV29ya2VyXSBldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJl
c3VsdCA9PT0gbnVsbCBpcyB0cnVlCitbV29ya2VyXSBpbmRleE9iamVjdC5vcGVuQ3Vyc29yKCkK
K1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnNvdXJjZSBpcyBpbmRleE9iamVjdAorUEFTUyBb
V29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIGlzIGZhbHNlCitQQVNTIFtXb3Jr
ZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQua2V5IGlzICJ2YWx1ZSIKK1BBU1MgW1dvcmtlcl0gZXZl
bnQudGFyZ2V0LnJlc3VsdC52YWx1ZS54IGlzICJ2YWx1ZSIKK1BBU1MgW1dvcmtlcl0gZXZlbnQu
dGFyZ2V0LnJlc3VsdC52YWx1ZS55IGlzICJ6enoiCitbV29ya2VyXSBldmVudC50YXJnZXQucmVz
dWx0LmNvbnRpbnVlKCkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVs
bCBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LmtleSBpcyAidmFs
dWUyIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLnggaXMgInZhbHVl
MiIKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IGlzICJ6enoyIgor
W1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpCitQQVNTIFtXb3JrZXJdIGV2
ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gZXZlbnQu
dGFyZ2V0LnJlc3VsdC5rZXkgaXMgInZhbHVlMyIKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0
LnJlc3VsdC52YWx1ZS54IGlzICJ2YWx1ZTMiCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUueSBpcyAiNDU2IgorW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgpCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwgaXMgdHJ1
ZQorW1dvcmtlcl0gUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGluZGV4T2JqZWN0LmdldCh7
fSkuCitQQVNTIFtXb3JrZXJdIENhdWdodCBleGNlcHRpb246IEVycm9yOiBEQVRBX0VSUjogRE9N
IElEQkRhdGFiYXNlIEV4Y2VwdGlvbiA1CitbV29ya2VyXSBQYXNzaW5nIGFuIGludmFsaWQga2V5
IGludG8gaW5kZXhPYmplY3QuZ2V0S2V5KHt9KS4KK1BBU1MgW1dvcmtlcl0gQ2F1Z2h0IGV4Y2Vw
dGlvbjogRXJyb3I6IERBVEFfRVJSOiBET00gSURCRGF0YWJhc2UgRXhjZXB0aW9uIDUKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLXdvcmtlcnMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wODAwMzY0ZjU5OTAxM2QxYzljNGJkMGYxMmZlMjg1NDQxNWEyNTc0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFz
aWNzLXdvcmtlcnMuaHRtbApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD5zdGFydFdvcmtlcigncmVzb3VyY2VzL2lu
ZGV4LWJhc2ljcy5qcycpOzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCmluZGV4IGZi
NGMwMDQwYmQ4ZTYzMjliMzA3YzI2YTA5NTcwMTdiYjk5ZDM2MjcuLmEyNDExNmQ2YmJmN2QwMzg2
N2U0NDk0MDk1OGY5Yzg5YmExYzJkYzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCkBAIC02LDI2NSArNiw3IEBACiA8Ym9keT4KIDxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIHdlYmtpdElEQklu
ZGV4LiIpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3BlbignaW5kZXgtYmFzaWNzJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24o
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4
aXN0aW5nKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICB3aW5k
b3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHdpbmRvdy5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2co
InN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcpIik7Ci0gICAgd2luZG93LmluZGV4
T2JqZWN0MiA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUyJywgJ3kn
LCBmYWxzZSkiKTsKLSAgICB3aW5kb3cuaW5kZXhPYmplY3QzID0gZXZhbEFuZExvZygic3RvcmUu
Y3JlYXRlSW5kZXgoJ3pJbmRleCcsICd6JywgdHJ1ZSkiKTsKLSAgICBhZGREYXRhKCk7Ci19Ci0K
LWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHNob3VsZEJlVHJ1ZSgiJ25hbWUnIGluIGluZGV4
T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5uYW1lIiwg
ImluZGV4TmFtZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ29iamVjdFN0b3JlJyBpbiBpbmRleE9i
amVjdCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5kZXhPYmplY3Qub2JqZWN0U3Rv
cmUubmFtZSIsICJzdG9yZU5hbWUiKTsKLSAgICBzaG91bGRCZVRydWUoIidrZXlQYXRoJyBpbiBp
bmRleE9iamVjdCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5kZXhPYmplY3Qua2V5
UGF0aCIsICJ4Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCIndW5pcXVlJyBpbiBpbmRleE9iamVjdCIp
OwotICAgIHNob3VsZEJlVHJ1ZSgiJ211bHRpRW50cnknIGluIGluZGV4T2JqZWN0Iik7Ci0gICAg
c2hvdWxkQmVGYWxzZSgiaW5kZXhPYmplY3QudW5pcXVlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgi
aW5kZXhPYmplY3QubXVsdGlFbnRyeSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ29wZW5LZXlDdXJz
b3InIGluIGluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Yg
aW5kZXhPYmplY3Qub3BlbktleUN1cnNvciIsICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1
ZSgiJ29wZW5DdXJzb3InIGluIGluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ0eXBlb2YgaW5kZXhPYmplY3Qub3BlbkN1cnNvciIsICJmdW5jdGlvbiIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgiJ2dldEtleScgaW4gaW5kZXhPYmplY3QiKTsKLSAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5nZXRLZXkiLCAiZnVuY3Rpb24iKTsKLSAgICBz
aG91bGRCZVRydWUoIidnZXQnIGluIGluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3QuZ2V0IiwgImZ1bmN0aW9uIik7Ci0gICAgc2hvdWxk
QmVUcnVlKCInY291bnQnIGluIGluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ0eXBlb2YgaW5kZXhPYmplY3QuY291bnQiLCAiZnVuY3Rpb24iKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonLCB6OiAyLjcy
fSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGREYXRhMjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRk
RGF0YTIoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNl
LmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJywgejogMi43MSwgZm9vYmFyOiAxMn0sICdrZXky
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGEzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHdpbmRvdy5pbmRleE9iamVjdDQg
PSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhXaGlsZUFkZElzSW5GbGlnaHQn
LCAneCcpIik7Ci0gICAgd2luZG93LmluZGV4T2JqZWN0NSA9IGV2YWxBbmRMb2coInN0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleFdpdGhXZWlyZEtleVBhdGgnLCAnZm9vYmFyJykiKTsKLX0KLQotZnVu
Y3Rpb24gYWRkRGF0YTMoKQotewotICAgIC8vIEFkZCBkYXRhIHdoaWNoIGRvZXNuJ3QgaGF2ZSBh
IGtleSBpbiB0aGUgekluZGV4LgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQuc291cmNlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICc0NTYnfSwgJ2tleTMnKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZ2V0RGF0YTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0RGF0YSgpCi17Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldEtleSgndmFsdWUnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YSgpCi17Ci0g
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Mi5nZXRLZXkoJ3p6eicpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhMjsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0T2JqZWN0
RGF0YTIoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICJrZXkiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdDMuZ2V0
KDIuNzEpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhMzsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
Z2V0T2JqZWN0RGF0YTMoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC54IiwgInZhbHVlMiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4T2JqZWN0LmdldCgndmFsdWUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0RGF0
YUZhaWw7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGdldERhdGFGYWlsKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQueCIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC55IiwgInp6eiIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4T2JqZWN0LmdldEtleSgnZG9lcyBub3QgZXhpc3QnKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YUZhaWw7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0T2JqZWN0RGF0
YUZhaWwoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5l
ZCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldCgnZG9lcyBu
b3QgZXhpc3QnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTQ7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZ2V0T2JqZWN0RGF0YTQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0IiwgInVuZGVmaW5lZCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2Jq
ZWN0NC5nZXRLZXkoJ3ZhbHVlMicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuS2V5
Q3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9ICB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gb3BlbktleUN1cnNvcigpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTIiKTsKLQotICAgIHdpbmRvdy5yZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcigpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjdXJzb3IxQ29udGludWU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjFDb250aW51ZSgpCi17
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5zb3VyY2UiLCAiaW5kZXhPYmplY3QiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZSIpOwot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgImtleSIpOwotCi0gICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0Lgot
ICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHdp
bmRvdy5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTI7Ci19Ci0KLWZ1bmN0aW9u
IGN1cnNvcjFDb250aW51ZTIoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5y
ZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleTIiKTsKLQotICAgIC8vIFdlIHJlLXVz
ZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQu
cmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB3aW5kb3cucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJz
b3IxQ29udGludWUzOwotfQotCi1mdW5jdGlvbiBjdXJzb3IxQ29udGludWUzKCkKLXsKLSAgICBz
aG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTMiKTsKLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIs
ICJrZXkzIik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCi0g
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgd2lu
ZG93LnJlcXVlc3Qub25zdWNjZXNzID0gb3Blbk9iamVjdEN1cnNvcjsKLX0KLQotZnVuY3Rpb24g
b3Blbk9iamVjdEN1cnNvcigpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVz
dWx0ID09PSBudWxsIik7Ci0KLSAgICB3aW5kb3cucmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
T2JqZWN0Lm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNv
bnRpbnVlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBjdXJzb3IyQ29udGludWUoKQotewotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQuc291cmNlIiwgImluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6eiIpOwotCi0g
ICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHdpbmRvdy5yZXF1ZXN0Lm9u
c3VjY2VzcyA9IGN1cnNvcjJDb250aW51ZTI7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjJDb250aW51
ZTIoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwi
KTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5Iiwg
InZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC52YWx1ZS54IiwgInZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6ejIiKTsKLQotICAgIC8vIFdlIHJlLXVzZSB0aGUg
bGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0
LmNvbnRpbnVlKCkiKTsKLSAgICB3aW5kb3cucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29u
dGludWUzOwotfQotCi1mdW5jdGlvbiBjdXJzb3IyQ29udGludWUzKCkKLXsKLSAgICBzaG91bGRC
ZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTMiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZTMi
KTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUu
eSIsICI0NTYiKTsKLQotICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4K
LSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB3
aW5kb3cucmVxdWVzdC5vbnN1Y2Nlc3MgPSBsYXN0OwotfQotCi1mdW5jdGlvbiBsYXN0KCkKLXsK
LSAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLQotICAg
IHRyeSB7Ci0gICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gaW5kZXhP
YmplY3QuZ2V0KHt9KS4iKTsKLSAgICAgICAgaW5kZXhPYmplY3QuZ2V0KHt9KTsKLSAgICAgICAg
dGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7Ci0g
ICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkg
aW50byBpbmRleE9iamVjdC5nZXRLZXkoe30pLiIpOwotICAgICAgICBpbmRleE9iamVjdC5nZXRL
ZXkoe30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAg
fSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsg
ZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgZG9uZSgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2luZGV4LWJhc2ljcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4
IDZhOTQwZGUzYzc0NDFhNGFhOWM1YjBiZWQwYWEyNmZiYjliMWYxZjAuLjk3N2U2YmYyYWQwYjM4
YmM4ZTQ0MDJjYTg5MDQyZjhhYWEyMWExZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dApA
QCAtODEsNyArODEsNyBAQCBzdG9yZS5hZGQoe3g6ICdmb28nfSwgdGVzdERhdGUpCiBUcnkgdG8g
aW5zZXJ0IGEgdmFsdWUgbm90IGhhbmRsZWQgYnkgc3RydWN0dXJlZCBjbG9uZToKIHN0b3JlLmFk
ZCh7eDogJ2JhcicsIHk6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyl9LCAnYmFy
JykKIFBBU1MgRXhjZXB0aW9uIHRocm93bgotUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5EQVRB
X0NMT05FX0VSUgorUEFTUyBjb2RlIGlzIDI1CiBUcnkgdG8gaW5zZXJ0IGRhdGEgd2hlcmUga2V5
IHBhdGggeWllbGRzIGEgRGF0ZSBrZXk6CiBzdG9yZS5hZGQoe3g6IHRlc3REYXRlQiwgeTogJ3Zh
bHVlJ30sICdrZXknKQogYWRkU3VjY2VzcygpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4ZDBjNTZmMjA2MTcyNjBhOGNmYjQyYzFiNWE3MjRl
NGFlMWU2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOTkg
QEAKK1tXb3JrZXJdIFRlc3QgdGhlIGJhc2ljcyBvZiBJbmRleGVkREIncyBJREJPYmplY3RTdG9y
ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVz
b3VyY2VzL29iamVjdHN0b3JlLWJhc2ljcy5qcworW1dvcmtlcl0gd2Via2l0SW5kZXhlZERCLm9w
ZW4oJ29iamVjdHN0b3JlLWJhc2ljcycpCitbV29ya2VyXSBvcGVuU3VjY2VzcygpOgorW1dvcmtl
cl0gZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitbV29ya2VyXSBkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpCitbV29ya2VyXSBzZXRWZXJzaW9uU3VjY2VzcygpOgorW1dvcmtlcl0gdHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIFtXb3JrZXJdIHRyYW5zICE9PSBudWxsIGlzIHRy
dWUKK1tXb3JrZXJdIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitbV29ya2VyXSBjcmVhdGVP
YmplY3RTdG9yZSgpOgorW1dvcmtlcl0gc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJywgbnVsbCkKK1tXb3JrZXJdIHN0b3JlTmFtZXMgPSBkYi5vYmplY3RTdG9yZU5hbWVz
CitQQVNTIFtXb3JrZXJdICduYW1lJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdICdr
ZXlQYXRoJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdICdpbmRleE5hbWVzJyBpbiBz
dG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdICd0cmFuc2FjdGlvbicgaW4gc3RvcmUgaXMgdHJ1
ZQorUEFTUyBbV29ya2VyXSAncHV0JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5
cGVvZiBzdG9yZS5wdXQgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnYWRkJyBpbiBzdG9y
ZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5cGVvZiBzdG9yZS5hZGQgaXMgImZ1bmN0aW9uIgor
UEFTUyBbV29ya2VyXSAnZGVsZXRlJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5
cGVvZiBzdG9yZS5kZWxldGUgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnZ2V0JyBpbiBz
dG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5cGVvZiBzdG9yZS5nZXQgaXMgImZ1bmN0aW9u
IgorUEFTUyBbV29ya2VyXSAnY2xlYXInIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0g
dHlwZW9mIHN0b3JlLmNsZWFyIGlzICJmdW5jdGlvbiIKK1BBU1MgW1dvcmtlcl0gJ29wZW5DdXJz
b3InIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIHN0b3JlLm9wZW5DdXJz
b3IgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnY3JlYXRlSW5kZXgnIGluIHN0b3JlIGlz
IHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIHN0b3JlLmNyZWF0ZUluZGV4IGlzICJmdW5jdGlv
biIKK1BBU1MgW1dvcmtlcl0gJ2luZGV4JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJd
IHR5cGVvZiBzdG9yZS5pbmRleCBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdkZWxldGVJ
bmRleCcgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSB0eXBlb2Ygc3RvcmUuZGVsZXRl
SW5kZXggaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnY291bnQnIGluIHN0b3JlIGlzIHRy
dWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIHN0b3JlLmNvdW50IGlzICJmdW5jdGlvbiIKK1BBU1Mg
W1dvcmtlcl0gc3RvcmUubmFtZSBpcyAic3RvcmVOYW1lIgorUEFTUyBbV29ya2VyXSBzdG9yZS5r
ZXlQYXRoIGlzIG51bGwKK1BBU1MgW1dvcmtlcl0gc3RvcmVOYW1lcy5jb250YWlucygnc3RvcmVO
YW1lJykgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSBzdG9yZU5hbWVzLmxlbmd0aCBpcyAxCitbV29y
a2VyXSBBc2sgZm9yIGFuIGluZGV4IHRoYXQgZG9lc24ndCBleGlzdDoKK1tXb3JrZXJdIGluZGV4
ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gdGhyb3duLgor
UEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VO
RF9FUlIKK1tXb3JrZXJdIGNyZWF0ZUluZGV4KCk6CitbV29ya2VyXSBpbmRleCA9IHN0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcsIHt1bmlxdWU6IHRydWV9KQorUEFTUyBbV29ya2Vy
XSBpbmRleCAhPT0gbnVsbCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHN0b3JlLmluZGV4TmFtZXMu
Y29udGFpbnMoJ2luZGV4TmFtZScpIGlzIHRydWUKK1tXb3JrZXJdIGluZGV4ID0gc3RvcmUuaW5k
ZXgoJ2luZGV4TmFtZScpCitQQVNTIFtXb3JrZXJdIGluZGV4ICE9PSBudWxsIGlzIHRydWUKK1tX
b3JrZXJdIEFzayBmb3IgYW4gaW5kZXggdGhhdCBkb2Vzbid0IGV4aXN0OgorW1dvcmtlcl0gaW5k
ZXggPSBzdG9yZS5pbmRleCgnYXNkZicpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB0aHJvd24u
CitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZP
VU5EX0VSUgorW1dvcmtlcl0gZGIuc2V0VmVyc2lvbigidmVyc2lvbiBmYWlsIikKK1BBU1MgW1dv
cmtlcl0gZGIudmVyc2lvbiBpcyAidmVyc2lvbiBmYWlsIgorW1dvcmtlcl0gc2V0VmVyc2lvblRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBbV29ya2VyXSBzZXRWZXJzaW9uVHJhbnMg
IT09IG51bGwgaXMgdHJ1ZQorW1dvcmtlcl0gc3RvcmUgPSBzZXRWZXJzaW9uVHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpCitbV29ya2VyXSBpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdp
bmRleEZhaWwnLCAneCcpCitQQVNTIFtXb3JrZXJdIGRiLnZlcnNpb24gaXMgIm5ldyB2ZXJzaW9u
IgorUEFTUyBbV29ya2VyXSBzdG9yZS50cmFuc2FjdGlvbiBpcyBzZXRWZXJzaW9uVHJhbnMKK1BB
U1MgW1dvcmtlcl0gc3RvcmUuaW5kZXhOYW1lcyBpcyBbJ2luZGV4TmFtZSddCitQQVNTIFtXb3Jr
ZXJdIHN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDEKK1BBU1MgW1dvcmtlcl0gc3RvcmUuaW5k
ZXhOYW1lcy5jb250YWlucygnJykgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gc3RvcmUuaW5kZXhO
YW1lcy5jb250YWlucygnaW5kZXhGYWlsJykgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gc3RvcmUu
aW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSBz
dG9yZS5pbmRleE5hbWVzWzBdIGlzICJpbmRleE5hbWUiCitQQVNTIFtXb3JrZXJdIHN0b3JlLmlu
ZGV4TmFtZXNbMV0gaXMgbnVsbAorUEFTUyBbV29ya2VyXSBzdG9yZS5pbmRleE5hbWVzWzEwMF0g
aXMgbnVsbAorUEFTUyBbV29ya2VyXSBzdG9yZS5pbmRleE5hbWVzLml0ZW0oMSkgaXMgbnVsbAor
UEFTUyBbV29ya2VyXSBzdG9yZS5pbmRleE5hbWVzLml0ZW0oMTAwKSBpcyBudWxsCitbV29ya2Vy
XSB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpCitbV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKQorW1dvcmtlcl0gVHJ5IHRvIGluc2VydCBkYXRhIHdpdGggYSBE
YXRlIGtleToKK1tXb3JrZXJdIHN0b3JlLmFkZCh7eDogJ2Zvbyd9LCB0ZXN0RGF0ZSkKK1tXb3Jr
ZXJdIFRyeSB0byBpbnNlcnQgYSB2YWx1ZSBub3QgaGFuZGxlZCBieSBzdHJ1Y3R1cmVkIGNsb25l
OgorW1dvcmtlcl0gc3RvcmUuYWRkKHt4OiAnYmFyJywgeTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKX0sICdiYXInKQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gdGhyb3duCitG
QUlMIFtXb3JrZXJdIGNvZGUgc2hvdWxkIGJlIDI1IChvZiB0eXBlIG51bWJlcikuIFdhcyB1bmRl
ZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KK1tXb3JrZXJdIFRyeSB0byBpbnNlcnQgZGF0YSB3
aGVyZSBrZXkgcGF0aCB5aWVsZHMgYSBEYXRlIGtleToKK1tXb3JrZXJdIHN0b3JlLmFkZCh7eDog
dGVzdERhdGVCLCB5OiAndmFsdWUnfSwgJ2tleScpCitbV29ya2VyXSBhZGRTdWNjZXNzKCk6CitQ
QVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgImtleSIKK1tXb3JrZXJdIGV2ZW50
LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAnZm9vJ30sICd6enonKQorW1dvcmtlcl0gYWRkQWdhaW5G
YWlsdXJlKCk6CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgd2Via2l0
SURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIKK1tXb3JrZXJdIGV2ZW50LnByZXZl
bnREZWZhdWx0KCkKK1tXb3JrZXJdIGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtp
dElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitbV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorW1dvcmtlcl0gc3RvcmUuYWRkKHt4OiAnc29tZXZh
bHVlJ30sICdzb21la2V5JykKK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9y
ZS5hZGQoe3g6ICdvdGhlcnZhbHVlJ30sIG51bGwpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3
YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSCitbV29ya2VyXSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJr
aXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBzdG9yZS5hZGQoe3g6IG51bGx9LCAndmFsaWRrZXknKQorUEFTUyBbV29ya2VyXSBFeGNl
cHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUgorW1dvcmtlcl0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUn
XSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK1tXb3JrZXJdIHN0b3JlID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitbV29ya2VyXSBzdG9yZS5nZXQoJ2tl
eScpCitbV29ya2VyXSBnZXRTdWNjZXNzKCk6CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5y
ZXN1bHQueSBpcyAidmFsdWUiCitbV29ya2VyXSBzdG9yZSA9IGV2ZW50LnRhcmdldC5zb3VyY2UK
K1tXb3JrZXJdIHN0b3JlLmdldCh0ZXN0RGF0ZSkKK1tXb3JrZXJdIGdldFN1Y2Nlc3NEYXRlS2V5
KCk6CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQueCBpcyAiZm9vIgorW1dvcmtl
cl0gc3RvcmUuZGVsZXRlKCdrZXknKQorW1dvcmtlcl0gcmVtb3ZlU3VjY2VzcygpOgorUEFTUyBb
V29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlzIHRydWUKK1tXb3JrZXJdIHN0b3JlLmRlbGV0
ZSgna2V5JykKK1tXb3JrZXJdIHJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSgpOgorUEFTUyBbV29ya2Vy
XSBldmVudC50YXJnZXQucmVzdWx0IGlzIGZhbHNlCitbV29ya2VyXSBzdG9yZSA9IGV2ZW50LnRh
cmdldC5zb3VyY2UKK1tXb3JrZXJdIFBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5n
ZXQoKS4KK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5nZXQoe30pCitQ
QVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlz
IHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBQYXNzaW5nIGFu
IGludmFsaWQga2V5IGludG8gc3RvcmUuZGVsZXRlKCkuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhj
ZXB0aW9uIGZyb20gc3RvcmUuZGVsZXRlKHt9KQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUgorW1dvcmtlcl0gUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmFk
ZCgpLgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmFkZChudWxsLCB7
fSkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNv
ZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIFBhc3Np
bmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5wdXQoKS4KK1tXb3JrZXJdIEV4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSBzdG9yZS5wdXQobnVsbCwge30pCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlv
biB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSAKK1tXb3JrZXJdIHRlc3RQcmVDb25kaXRpb25zKCk6
CitbV29ya2VyXSBkYi5zZXRWZXJzaW9uKCdwcmVjb25kaXRpb24gdmVyc2lvbicpCitbV29ya2Vy
XSBzdG9yZVdpdGhJbkxpbmVLZXlzID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlV2l0aElu
TGluZUtleXMnLCB7a2V5UGF0aDogJ2tleSd9KQorW1dvcmtlcl0gc3RvcmVXaXRoT3V0T2ZMaW5l
S2V5cyA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhPdXRJT2ZMaW5lS2V5cycpCitb
V29ya2VyXSBzdG9yZVdpdGhJbmRleCA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhJ
bmRleCcpCitbV29ya2VyXSBpbmRleCA9IHN0b3JlV2l0aEluZGV4LmNyZWF0ZUluZGV4KCdpbmRl
eE5hbWUnLCAnaW5kZXhLZXknKQorW1dvcmtlcl0gCitbV29ya2VyXSBJREJPYmplY3RTdG9yZS5w
dXQoKQorW1dvcmtlcl0gVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhl
IGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkLgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIHN0b3JlV2l0aEluTGluZUtleXMucHV0KHtrZXk6IDF9LCAna2V5JykKK1BBU1MgW1dv
cmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIFRoZSBvYmplY3Qgc3RvcmUg
dXNlcyBvdXQtb2YtbGluZSBrZXlzIGFuZCBoYXMgbm8ga2V5IGdlbmVyYXRvciBhbmQgdGhlIGtl
eSBwYXJhbWV0ZXIgd2FzIG5vdCBwcm92aWRlZC4KK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRp
b24gZnJvbSBzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLnB1dCh7fSkKK1BBU1MgW1dvcmtlcl0gRXhj
ZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIFRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1s
aW5lIGtleXMgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mg
a2V5IHBhdGggeWllbGRzIGEgdmFsdWUgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5
LgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aEluTGluZUtleXMu
cHV0KHtrZXk6IG51bGx9KQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BB
U1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgor
W1dvcmtlcl0gVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBidXQgbm8ga2V5IGdl
bmVyYXRvciBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBr
ZXkgcGF0aCBkb2VzIG5vdCB5aWVsZCBhIHZhbHVlLgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIHN0b3JlV2l0aEluTGluZUtleXMucHV0KHt9KQorUEFTUyBbV29ya2VyXSBFeGNl
cHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUgorW1dvcmtlcl0gVGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3Zp
ZGVkIGJ1dCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQga2V5LgorW1dvcmtlcl0gRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aE91dE9mTGluZUtleXMucHV0KHt9LCBudWxsKQorUEFT
UyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorW1dvcmtlcl0gSWYgdGhlcmUgYXJl
IGFueSBpbmRleGVzIHJlZmVyZW5jaW5nIHRoaXMgb2JqZWN0IHN0b3JlIHdob3NlIGtleSBwYXRo
IGlzIGEgc3RyaW5nLCBldmFsdWF0aW5nIHRoZWlyIGtleSBwYXRoIG9uIHRoZSB2YWx1ZSBwYXJh
bWV0ZXIgeWllbGRzIGEgdmFsdWUsIGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBhIHZhbGlkIGtleS4K
K1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhJbmRleC5wdXQoe2lu
ZGV4S2V5OiBudWxsfSwgJ2tleScpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSCitbV29ya2VyXSAKK1tXb3JrZXJdIElEQk9iamVjdFN0b3JlLmFkZCgpCitbV29ya2VyXSBU
aGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3
YXMgcHJvdmlkZWQuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRo
SW5MaW5lS2V5cy5hZGQoe2tleTogMX0sICdrZXknKQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24g
d2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUgorW1dvcmtlcl0gVGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5l
IGtleXMgYW5kIGhhcyBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMg
bm90IHByb3ZpZGVkLgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0
aE91dE9mTGluZUtleXMuYWRkKHt9KQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUgorW1dvcmtlcl0gVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhl
IHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCB5aWVsZHMg
YSB2YWx1ZSBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuCitbV29ya2VyXSBFeHBl
Y3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQoe2tleTogbnVsbH0p
CitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2Rl
IGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBUaGUgb2Jq
ZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGJ1dCBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUg
cmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIGRvZXMgbm90
IHlpZWxkIGEgdmFsdWUuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVX
aXRoSW5MaW5lS2V5cy5hZGQoe30pCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSCitbV29ya2VyXSBUaGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90
IGNvbnRhaW4gYSB2YWxpZCBrZXkuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
c3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5hZGQoe30sIG51bGwpCitQQVNTIFtXb3JrZXJdIEV4Y2Vw
dGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVm
ZXJlbmNpbmcgdGhpcyBvYmplY3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2
YWx1YXRpbmcgdGhlaXIga2V5IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2
YWx1ZSwgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LgorW1dvcmtlcl0gRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aEluZGV4LmFkZCh7aW5kZXhLZXk6IG51bGx9LCAn
a2V5JykKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJd
IGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtl
cnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yYWMyMTI5NzdlOTlkODk3NGI3ZjY0M2MzM2Q3ZTQ4YmI1ZWM5
Y2M0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMuaHRtbApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10
ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD5zdGFydFdvcmtlcign
cmVzb3VyY2VzL29iamVjdHN0b3JlLWJhc2ljcy5qcycpOzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy5odG1sCmluZGV4IDZkOGI1ZmQwNmE2MDIxMTRjN2VkZTY2ZjE2NDkz
MjM4ZjdjMWRkNmEuLjRhYjQ0MWVkMGJmNTIzMjkyNzBlMjlmY2VjMWYwNTYxYTMxYjZhYjkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2lj
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJh
c2ljcy5odG1sCkBAIC02LDMzOSArNiw3IEBACiA8Ym9keT4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigi
VGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLiIpOwotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWJhc2ljcycpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIHdpbmRvdy5kYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVi
dWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBkZWJ1ZygiY3JlYXRl
T2JqZWN0U3RvcmUoKToiKTsKLSAgICB3aW5kb3cuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHZhciBzdG9y
ZU5hbWVzID0gZXZhbEFuZExvZygic3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMiKTsK
LQotICAgIHNob3VsZEJlVHJ1ZSgiJ25hbWUnIGluIHN0b3JlIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCIna2V5UGF0aCcgaW4gc3RvcmUiKTsKLSAgICBzaG91bGRCZVRydWUoIidpbmRleE5hbWVzJyBp
biBzdG9yZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ3RyYW5zYWN0aW9uJyBpbiBzdG9yZSIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgiJ3B1dCcgaW4gc3RvcmUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInR5cGVvZiBzdG9yZS5wdXQiLCAiZnVuY3Rpb24iKTsKLSAgICBzaG91bGRCZVRydWUo
IidhZGQnIGluIHN0b3JlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3Rv
cmUuYWRkIiwgImZ1bmN0aW9uIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInZGVsZXRlJyBpbiBzdG9y
ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmRlbGV0ZSIsICJm
dW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2dldCcgaW4gc3RvcmUiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5nZXQiLCAiZnVuY3Rpb24iKTsKLSAgICBz
aG91bGRCZVRydWUoIidjbGVhcicgaW4gc3RvcmUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInR5cGVvZiBzdG9yZS5jbGVhciIsICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
J29wZW5DdXJzb3InIGluIHN0b3JlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBl
b2Ygc3RvcmUub3BlbkN1cnNvciIsICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2Ny
ZWF0ZUluZGV4JyBpbiBzdG9yZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9m
IHN0b3JlLmNyZWF0ZUluZGV4IiwgImZ1bmN0aW9uIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInaW5k
ZXgnIGluIHN0b3JlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUu
aW5kZXgiLCAiZnVuY3Rpb24iKTsKLSAgICBzaG91bGRCZVRydWUoIidkZWxldGVJbmRleCcgaW4g
c3RvcmUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5kZWxldGVJ
bmRleCIsICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2NvdW50JyBpbiBzdG9yZSIp
OwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmNvdW50IiwgImZ1bmN0
aW9uIik7Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlLm5hbWUiLCAic3RvcmVO
YW1lIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5rZXlQYXRoIik7Ci0gICAgc2hvdWxkQmUo
InN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlTmFtZScpIiwgInRydWUiKTsKLSAgICBzaG91bGRC
ZSgic3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOwotICAgIC8vIEZJWE1FOiB0ZXN0IGFsbCBvZiBv
YmplY3Qgc3RvcmUncyBtZXRob2RzLgotCi0gICAgZGVidWcoIkFzayBmb3IgYW4gaW5kZXggdGhh
dCBkb2Vzbid0IGV4aXN0OiIpOwotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJpbmRleCA9IHN0
b3JlLmluZGV4KCdhc2RmJykiKTsKLSAgICAgICAgaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicp
OwotICAgICAgICB0ZXN0RmFpbGVkKCJBc2tpbmcgZm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4
aXN0IHNob3VsZCBoYXZlIHRocm93bi4iKTsKLSAgICB9IGNhdGNoIChlcnIpIHsKLSAgICAgICAg
dGVzdFBhc3NlZCgiRXhjZXB0aW9uIHRocm93bi4iKTsKLSAgICAgICAgY29kZSA9IGVyci5jb2Rl
OwotICAgICAgICBzaG91bGRCZSgiY29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T1RfRk9VTkRfRVJSIik7Ci0gICAgfQotCi0gICAgY3JlYXRlSW5kZXgoKTsKLX0KLQotZnVuY3Rp
b24gY3JlYXRlSW5kZXgoKQotewotICAgIGRlYnVnKCJjcmVhdGVJbmRleCgpOiIpOwotICAgIHZh
ciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFt
ZScsICd4Jywge3VuaXF1ZTogdHJ1ZX0pIik7IC8vIHRydWUgPT0gdW5pcXVlIHJlcXVpcmVtZW50
LgotICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwiKTsKLSAgICBzaG91bGRCZVRydWUo
InN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7Ci0gICAgaW5kZXggPSBl
dmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwiKTsKLSAKLSAgICBkZWJ1ZygiQXNrIGZvciBhbiBpbmRl
eCB0aGF0IGRvZXNuJ3QgZXhpc3Q6Iik7Ci0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoImluZGV4
ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKSIpOwotICAgICAgICBpbmRleCA9IHN0b3JlLmluZGV4KCdh
c2RmJyk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkFza2luZyBmb3IgYSBzdG9yZSB0aGF0IGRvZXNu
J3QgZXhpc3Qgc2hvdWxkIGhhdmUgdGhyb3duLiIpOwotICAgIH0gY2F0Y2ggKGVycikgewotICAg
ICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gdGhyb3duLiIpOwotICAgICAgICBjb2RlID0gZXJy
LmNvZGUKLSAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIH0KLQotICAgIGNvbW1pdEFuZENvbnRpbnVlKCk7ICAg
IAotfQotCi1mdW5jdGlvbiBjb21taXRBbmRDb250aW51ZSgpCi17Ci0gICAgd2luZG93LnNldFRp
bWVvdXQodGVzdFNldFZlcnNpb25BYm9ydCwgMCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RTZXRWZXJz
aW9uQWJvcnQoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCdkYi5zZXRWZXJzaW9uKCJ2
ZXJzaW9uIGZhaWwiKScpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5vdGhlcklu
ZGV4OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBjcmVhdGVBbm90aGVySW5kZXgoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZGIudmVyc2lvbiIsICJ2ZXJzaW9uIGZhaWwiKTsKLQotICAgIHZhciBzZXRWZXJzaW9u
VHJhbnMgPSBldmFsQW5kTG9nKCJzZXRWZXJzaW9uVHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzZXRWZXJzaW9uVHJhbnMgIT09IG51bGwiKTsKLSAgICBz
ZXRWZXJzaW9uVHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwot
ICAgIHNldFZlcnNpb25UcmFucy5vbmFib3J0ID0gY2hlY2tNZXRhZGF0YTsKLSAgICB3aW5kb3cu
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHNldFZlcnNpb25UcmFucy5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykiKTsKLSAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7Ci0KLSAgICBzZXRWZXJzaW9uVHJhbnMu
YWJvcnQoKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tNZXRhZGF0YSgpCi17Ci0gICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIm5ldyB2ZXJzaW9uIik7Ci0gICAgc2hvdWxkQmUo
InN0b3JlLnRyYW5zYWN0aW9uIiwgInNldFZlcnNpb25UcmFucyIpOwotICAgIHNob3VsZEJlKCJz
dG9yZS5pbmRleE5hbWVzIiwgIlsnaW5kZXhOYW1lJ10iKTsKLSAgICBzaG91bGRCZSgic3RvcmUu
aW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOwotICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVz
LmNvbnRhaW5zKCcnKSIsICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVz
LmNvbnRhaW5zKCdpbmRleEZhaWwnKSIsICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJzdG9yZS5p
bmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJzdG9yZS5pbmRleE5hbWVzWzBdIiwgImluZGV4TmFtZSIpOwotICAgIHNo
b3VsZEJlTnVsbCgic3RvcmUuaW5kZXhOYW1lc1sxXSIpOwotICAgIHNob3VsZEJlTnVsbCgic3Rv
cmUuaW5kZXhOYW1lc1sxMDBdIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5pbmRleE5hbWVz
Lml0ZW0oMSkiKTsKLSAgICBzaG91bGRCZU51bGwoInN0b3JlLmluZGV4TmFtZXMuaXRlbSgxMDAp
Iik7Ci0gICAgYWRkRGF0YSgpOwotfQotCi12YXIgdGVzdERhdGUgPSBuZXcgRGF0ZSgiQXVndXN0
IDI1LCAxOTkxIDIwOjU3OjA4Iik7Ci12YXIgdGVzdERhdGVCID0gbmV3IERhdGUoIldlZCBKYW4g
MDUgMjAxMSAxNTo1NDo0OSIpOwotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICB2YXIgdHJh
bnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHdpbmRvdy5zdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpIik7Ci0KLSAgICBkZWJ1ZygiVHJ5IHRvIGluc2VydCBkYXRhIHdpdGggYSBEYXRlIGtleToi
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAnZm9vJ30sIHRlc3RE
YXRlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRGF0ZVN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFk
ZERhdGVTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiVHJ5IHRvIGluc2VydCBhIHZhbHVlIG5vdCBo
YW5kbGVkIGJ5IHN0cnVjdHVyZWQgY2xvbmU6Iik7Ci0gICAgdHJ5IHsKLSAgICAgICAgZGVidWco
InN0b3JlLmFkZCh7eDogJ2JhcicsIHk6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
Jyl9LCAnYmFyJykiKTsKLSAgICAgICAgc3RvcmUuYWRkKHt4OiAnYmFyJywgeTogZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKX0sICdiYXInKTsKLSAgICAgICAgdGVzdEZhaWxlZCgi
UGFzc2luZyBhIERPTSBub2RlIGFzIHZhbHVlIHNob3VsZCBoYXZlIHRocm93bi4iKTsKLSAgICB9
IGNhdGNoIChlcnIpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiRXhjZXB0aW9uIHRocm93biIpOwot
ICAgICAgICBjb2RlID0gZXJyLmNvZGU7Ci0gICAgICAgIHNob3VsZEJlKCJjb2RlIiwgIkRPTUV4
Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOwotICAgIH0KLQotICAgIGRlYnVnKCJUcnkgdG8gaW5z
ZXJ0IGRhdGEgd2hlcmUga2V5IHBhdGggeWllbGRzIGEgRGF0ZSBrZXk6Iik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogdGVzdERhdGVCLCB5OiAndmFsdWUnfSwgJ2tl
eScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRTdWNj
ZXNzKCkKLXsKLSAgICBkZWJ1ZygiYWRkU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmFkZCh7eDogJ2Zvbyd9LCAnenp6JykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGFkZEFnYWluRmFpbHVyZSwgZmFsc2Up
OwotfQotCi1mdW5jdGlvbiBhZGRBZ2FpbkZhaWx1cmUoKQotewotICAgIGRlYnVnKCJhZGRBZ2Fp
bkZhaWx1cmUoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJ3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwotCi0gICAgZXZhbEFu
ZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOwotCi0gICAgdHJhbnNhY3Rpb24gPSBldmFs
QW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotCi0gICAgZXZhbEFuZExvZygic3RvcmUu
YWRkKHt4OiAnc29tZXZhbHVlJ30sICdzb21la2V5JykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5hZGQoe3g6ICdvdGhlcnZhbHVlJ30sIG51bGwpIiwgIndlYmtpdElEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5hZGQoe3g6IG51bGx9LCAndmFsaWRrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50
cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdl
dCgna2V5JykiKTsKLSAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBnZXRT
dWNjZXNzLCB0cnVlKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImdldFN1Y2Nl
c3MoKToiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
eSIsICJ2YWx1ZSIpOwotCi0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBldmVu
dC50YXJnZXQuc291cmNlIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCh0
ZXN0RGF0ZSkiKTsKLSAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBnZXRT
dWNjZXNzRGF0ZUtleSwgZmFsc2UpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRTdWNjZXNzRGF0ZUtleSgpCi17Ci0gICAg
ZGVidWcoImdldFN1Y2Nlc3NEYXRlS2V5KCk6Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0LngiLCAiZm9vIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuZGVsZXRlKCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVt
b3ZlU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gcmVtb3ZlU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInJlbW92ZVN1
Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0cnVlIik7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKCdrZXknKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gcmVtb3ZlU3VjY2Vzc0J1dEZhbHNlOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiByZW1vdmVT
dWNjZXNzQnV0RmFsc2UoKQotewotICAgIGRlYnVnKCJyZW1vdmVTdWNjZXNzQnV0RmFsc2UoKToi
KTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJmYWxzZSIpOwotICAgIHZh
ciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZSIpOwotCi0g
ICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5nZXQoKS4iKTsKLSAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoe30pIiwgIndlYmtpdElEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlk
IGtleSBpbnRvIHN0b3JlLmRlbGV0ZSgpLiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLmRlbGV0ZSh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKLQotICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gc3RvcmUuYWRkKCku
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKG51bGwsIHt9KSIsICJ3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIlBhc3Np
bmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5wdXQoKS4iKTsKLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5wdXQobnVsbCwge30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7Ci0KLSAgICB0ZXN0UHJlQ29uZGl0aW9ucygpOwotfQotCi1mdW5jdGlv
biB0ZXN0UHJlQ29uZGl0aW9ucygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ0ZXN0
UHJlQ29uZGl0aW9ucygpOiIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCdwcmVjb25kaXRpb24gdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgc3RvcmVXaXRoSW5MaW5lS2V5cyA9IGV2YWxBbmRMb2coInN0b3JlV2l0aElu
TGluZUtleXMgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVXaXRoSW5MaW5lS2V5cycsIHtr
ZXlQYXRoOiAna2V5J30pIik7Ci0gICAgICAgIHN0b3JlV2l0aE91dE9mTGluZUtleXMgPSBldmFs
QW5kTG9nKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlV2l0aE91dElPZkxpbmVLZXlzJykiKTsKLSAgICAgICAgc3RvcmVXaXRoSW5kZXggPSBldmFs
QW5kTG9nKCJzdG9yZVdpdGhJbmRleCA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhJ
bmRleCcpIik7Ci0gICAgICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZVdpdGhJ
bmRleC5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ2luZGV4S2V5JykiKTsKLQotICAgICAgICBk
ZWJ1ZygiIik7Ci0gICAgICAgIGRlYnVnKCJJREJPYmplY3RTdG9yZS5wdXQoKSIpOwotICAgICAg
ICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhlIGtleSBw
YXJhbWV0ZXIgd2FzIHByb3ZpZGVkLiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7a2V5OiAxfSwgJ2tleScpIiwgIndlYmtpdElEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qg
c3RvcmUgdXNlcyBvdXQtb2YtbGluZSBrZXlzIGFuZCBoYXMgbm8ga2V5IGdlbmVyYXRvciBhbmQg
dGhlIGtleSBwYXJhbWV0ZXIgd2FzIG5vdCBwcm92aWRlZC4iKTsKLSAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5wdXQoe30pIiwgIndlYmtpdElE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAgICAgZGVidWcoIlRoZSBvYmpl
Y3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0
aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggeWllbGRzIGEgdmFsdWUgYW5kIHRoYXQgdmFsdWUg
aXMgbm90IGEgdmFsaWQga2V5LiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJz
dG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7a2V5OiBudWxsfSkiLCAid2Via2l0SURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1
c2VzIGluLWxpbmUga2V5cyBidXQgbm8ga2V5IGdlbmVyYXRvciBhbmQgdGhlIHJlc3VsdCBvZiBl
dmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCBkb2VzIG5vdCB5aWVsZCBhIHZh
bHVlLiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbkxpbmVL
ZXlzLnB1dCh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQot
ICAgICAgICBkZWJ1ZygiVGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkIGJ1dCBkb2VzIG5v
dCBjb250YWluIGEgdmFsaWQga2V5LiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLnB1dCh7fSwgbnVsbCkiLCAid2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgICAgICBkZWJ1ZygiSWYgdGhlcmUgYXJlIGFu
eSBpbmRleGVzIHJlZmVyZW5jaW5nIHRoaXMgb2JqZWN0IHN0b3JlIHdob3NlIGtleSBwYXRoIGlz
IGEgc3RyaW5nLCBldmFsdWF0aW5nIHRoZWlyIGtleSBwYXRoIG9uIHRoZSB2YWx1ZSBwYXJhbWV0
ZXIgeWllbGRzIGEgdmFsdWUsIGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBhIHZhbGlkIGtleS4iKTsK
LSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5kZXgucHV0KHtpbmRl
eEtleTogbnVsbH0sICdrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOwotCi0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZGVidWcoIklEQk9iamVjdFN0b3Jl
LmFkZCgpIik7Ci0gICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBr
ZXlzIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQuIik7Ci0gICAgICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMuYWRkKHtrZXk6IDF9LCAna2V5
JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgICAgICBk
ZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5lIGtleXMgYW5kIGhhcyBubyBr
ZXkgZ2VuZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgbm90IHByb3ZpZGVkLiIpOwot
ICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLmFk
ZCh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgICAg
ICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhlIHJlc3Vs
dCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCB5aWVsZHMgYSB2YWx1
ZSBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuIik7Ci0gICAgICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMuYWRkKHtrZXk6IG51bGx9KSIsICJ3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCJU
aGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGJ1dCBubyBrZXkgZ2VuZXJhdG9yIGFu
ZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIGRv
ZXMgbm90IHlpZWxkIGEgdmFsdWUuIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlV2l0aEluTGluZUtleXMuYWRkKHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCJUaGUga2V5IHBhcmFtZXRlciB3YXMgcHJv
dmlkZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBrZXkuIik7Ci0gICAgICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91dE9mTGluZUtleXMuYWRkKHt9LCBudWxsKSIs
ICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVn
KCJJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVmZXJlbmNpbmcgdGhpcyBvYmplY3Qgc3RvcmUg
d2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2YWx1YXRpbmcgdGhlaXIga2V5IHBhdGggb24g
dGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2YWx1ZSwgYW5kIHRoYXQgdmFsdWUgaXMgbm90
IGEgdmFsaWQga2V5LiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdp
dGhJbmRleC5hZGQoe2luZGV4S2V5OiBudWxsfSwgJ2tleScpIiwgIndlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAgICAgZG9uZSgpOwotICAgIH07Ci19Ci0KLQot
Ci10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdHN0
b3JlLWJhc2ljcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1iYXNp
Y3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtYmFz
aWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUwMWUzNmZhMjZhZjQyMTQ0NjRkMWI3MjdkNTdhZDgzYzE2ZDQ1
MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvaW5kZXgtYmFzaWNzLmpzCkBAIC0wLDAgKzEsMjgwIEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdpZGItd29ya2VyLWNvbW1vbi5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIHdlYmtpdElEQkluZGV4LiIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERC
Lm9wZW4oJ2luZGV4LWJhc2ljcycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJz
aW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBzZXRWZXJzaW9uKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZyhldnQpCit7
CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Cisg
ICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOworCisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnKSIpOworICAgIHNlbGYuaW5kZXhP
YmplY3QyID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZTInLCAneScs
IGZhbHNlKSIpOworICAgIHNlbGYuaW5kZXhPYmplY3QzID0gZXZhbEFuZExvZygic3RvcmUuY3Jl
YXRlSW5kZXgoJ3pJbmRleCcsICd6JywgdHJ1ZSkiKTsKKyAgICBhZGREYXRhKCk7Cit9CisKK2Z1
bmN0aW9uIGFkZERhdGEoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiJ25hbWUnIGluIGluZGV4T2Jq
ZWN0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5uYW1lIiwgImlu
ZGV4TmFtZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ29iamVjdFN0b3JlJyBpbiBpbmRleE9iamVj
dCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5kZXhPYmplY3Qub2JqZWN0U3RvcmUu
bmFtZSIsICJzdG9yZU5hbWUiKTsKKyAgICBzaG91bGRCZVRydWUoIidrZXlQYXRoJyBpbiBpbmRl
eE9iamVjdCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5kZXhPYmplY3Qua2V5UGF0
aCIsICJ4Iik7CisgICAgc2hvdWxkQmVUcnVlKCIndW5pcXVlJyBpbiBpbmRleE9iamVjdCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiJ211bHRpRW50cnknIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hv
dWxkQmVGYWxzZSgiaW5kZXhPYmplY3QudW5pcXVlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5k
ZXhPYmplY3QubXVsdGlFbnRyeSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ29wZW5LZXlDdXJzb3In
IGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgaW5k
ZXhPYmplY3Qub3BlbktleUN1cnNvciIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgi
J29wZW5DdXJzb3InIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ0eXBlb2YgaW5kZXhPYmplY3Qub3BlbkN1cnNvciIsICJmdW5jdGlvbiIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiJ2dldEtleScgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5nZXRLZXkiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91
bGRCZVRydWUoIidnZXQnIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ0eXBlb2YgaW5kZXhPYmplY3QuZ2V0IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVU
cnVlKCInY291bnQnIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ0eXBlb2YgaW5kZXhPYmplY3QuY291bnQiLCAiZnVuY3Rpb24iKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonLCB6OiAyLjcyfSwg
J2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGREYXRhMjsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkRGF0
YTIoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQuc291cmNlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJywgejogMi43MSwg
Zm9vYmFyOiAxMn0sICdrZXkyJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGEz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHNl
bGYuaW5kZXhPYmplY3Q0ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4V2hp
bGVBZGRJc0luRmxpZ2h0JywgJ3gnKSIpOworICAgIHNlbGYuaW5kZXhPYmplY3Q1ID0gZXZhbEFu
ZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4V2l0aFdlaXJkS2V5UGF0aCcsICdmb29iYXIn
KSIpOworfQorCitmdW5jdGlvbiBhZGREYXRhMyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7Cisg
ICAgLy8gQWRkIGRhdGEgd2hpY2ggZG9lc24ndCBoYXZlIGEga2V5IGluIHRoZSB6SW5kZXguCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFs
dWUzJywgeTogJzQ1Nid9LCAna2V5MycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRE
YXRhOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBnZXREYXRhKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QuZ2V0S2V5KCd2YWx1ZScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRPYmplY3REYXRhKGV2dCkKK3sK
KyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAia2V5Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmpl
Y3QyLmdldEtleSgnenp6JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERh
dGEyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBnZXRPYmplY3REYXRhMihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0My5nZXQoMi43MSkiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGEzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRPYmplY3REYXRhMyhl
dnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0LngiLCAidmFsdWUyIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3QuZ2V0KCd2YWx1ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBn
ZXREYXRhRmFpbDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gZ2V0RGF0YUZhaWwoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0Owor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC54IiwgInZhbHVl
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnkiLCAi
enp6Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QuZ2V0S2V5KCdk
b2VzIG5vdCBleGlzdCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRh
RmFpbDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBnZXRPYmplY3REYXRhRmFpbChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QuZ2V0KCdkb2VzIG5vdCBleGlzdCcp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhNDsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRP
YmplY3REYXRhNChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3Q0LmdldEtleSgndmFsdWUyJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5LZXlDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gIHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuS2V5Q3Vyc29yKGV2dCkKK3sKKyAgICBldmVu
dCA9IGV2dDsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAia2V5MiIpOworCisgICAgc2VsZi5yZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qu
b3BlbktleUN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IxQ29udGlu
dWU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGN1cnNvcjFDb250aW51ZShldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5zb3VyY2UiLCAiaW5kZXhPYmplY3QiKTsKKyAgICBzaG91
bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtl
eSIpOworCisgICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IxQ29udGludWUyOworfQorCitmdW5jdGlvbiBjdXJzb3Ix
Q29udGludWUyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZUZhbHNlKCJl
dmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTIiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJrZXkyIik7CisKKyAg
ICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCisgICAgZXZhbEFuZExvZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgc2VsZi5yZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGN1cnNvcjFDb250aW51ZTM7Cit9CisKK2Z1bmN0aW9uIGN1cnNvcjFDb250aW51ZTMo
ZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdl
dC5yZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5yZXN1bHQua2V5IiwgInZhbHVlMyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleTMiKTsKKworICAgIC8vIFdlIHJl
LXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
bk9iamVjdEN1cnNvcjsKK30KKworZnVuY3Rpb24gb3Blbk9iamVjdEN1cnNvcihldnQpCit7Cisg
ICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09
PSBudWxsIik7CisKKyAgICBzZWxmLnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5v
cGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJDb250aW51ZTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gY3Vyc29yMkNvbnRpbnVlKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnNvdXJjZSIsICJpbmRleE9iamVjdCIpOworICAgIHNob3VsZEJl
RmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAidmFsdWUiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueSIs
ICJ6enoiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KKyAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICBzZWxm
LnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlMjsKK30KKworZnVuY3Rpb24gY3Vy
c29yMkNvbnRpbnVlMihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVGYWxz
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUyIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAidmFsdWUyIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLnkiLCAi
enp6MiIpOworCisgICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAg
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYu
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29udGludWUzOworfQorCitmdW5jdGlvbiBjdXJz
b3IyQ29udGludWUzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZUZhbHNl
KCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTMiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZTMiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueSIsICI0
NTYiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KKyAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICBzZWxmLnJl
cXVlc3Qub25zdWNjZXNzID0gbGFzdDsKK30KKworZnVuY3Rpb24gbGFzdChldnQpCit7CisgICAg
ZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBu
dWxsIik7CisKKyAgICB0cnkgeworICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtl
eSBpbnRvIGluZGV4T2JqZWN0LmdldCh7fSkuIik7CisgICAgICAgIGluZGV4T2JqZWN0LmdldCh7
fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRv
U3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFu
IGludmFsaWQga2V5IGludG8gaW5kZXhPYmplY3QuZ2V0S2V5KHt9KS4iKTsKKyAgICAgICAgaW5k
ZXhPYmplY3QuZ2V0S2V5KHt9KTsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRo
cm93biIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4
Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAgfQorICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWJh
c2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMzY0MGIzN2U1OTgxYzkyYTcwZWU2MzVkMmU3OTcxNjU2YjI2
ZjgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL29iamVjdHN0b3JlLWJhc2ljcy5qcwpAQCAtMCwwICsxLDMzNyBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnaWRiLXdvcmtlci1j
b21tb24uanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlRlc3QgdGhlIGJhc2ljcyBvZiBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS4iKTsK
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIndlYmtpdElu
ZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1iYXNpY3MnKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9
IGV2dDsKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKGV2dCkKK3sK
KyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICBkZWJ1ZygiY3JlYXRlT2JqZWN0U3RvcmUoKToiKTsKKyAgICBzZWxmLnN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywg
bnVsbCkiKTsKKyAgICB2YXIgc3RvcmVOYW1lcyA9IGV2YWxBbmRMb2coInN0b3JlTmFtZXMgPSBk
Yi5vYmplY3RTdG9yZU5hbWVzIik7CisKKyAgICBzaG91bGRCZVRydWUoIiduYW1lJyBpbiBzdG9y
ZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2tleVBhdGgnIGluIHN0b3JlIik7CisgICAgc2hvdWxk
QmVUcnVlKCInaW5kZXhOYW1lcycgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZVRydWUoIid0cmFu
c2FjdGlvbicgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZVRydWUoIidwdXQnIGluIHN0b3JlIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUucHV0IiwgImZ1bmN0aW9u
Iik7CisgICAgc2hvdWxkQmVUcnVlKCInYWRkJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmFkZCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJl
VHJ1ZSgiJ2RlbGV0ZScgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5
cGVvZiBzdG9yZS5kZWxldGUiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidnZXQn
IGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuZ2V0
IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInY2xlYXInIGluIHN0b3JlIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuY2xlYXIiLCAiZnVuY3Rpb24i
KTsKKyAgICBzaG91bGRCZVRydWUoIidvcGVuQ3Vyc29yJyBpbiBzdG9yZSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLm9wZW5DdXJzb3IiLCAiZnVuY3Rpb24iKTsK
KyAgICBzaG91bGRCZVRydWUoIidjcmVhdGVJbmRleCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5jcmVhdGVJbmRleCIsICJmdW5jdGlvbiIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiJ2luZGV4JyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygidHlwZW9mIHN0b3JlLmluZGV4IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVU
cnVlKCInZGVsZXRlSW5kZXgnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ0eXBlb2Ygc3RvcmUuZGVsZXRlSW5kZXgiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRy
dWUoIidjb3VudCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVv
ZiBzdG9yZS5jb3VudCIsICJmdW5jdGlvbiIpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzdG9yZS5uYW1lIiwgInN0b3JlTmFtZSIpOworICAgIHNob3VsZEJlTnVsbCgic3RvcmUua2V5
UGF0aCIpOworICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZU5hbWUnKSIs
ICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICAv
LyBGSVhNRTogdGVzdCBhbGwgb2Ygb2JqZWN0IHN0b3JlJ3MgbWV0aG9kcy4KKworICAgIGRlYnVn
KCJBc2sgZm9yIGFuIGluZGV4IHRoYXQgZG9lc24ndCBleGlzdDoiKTsKKyAgICB0cnkgeworICAg
ICAgICBkZWJ1ZygiaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpIik7CisgICAgICAgIGluZGV4
ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKTsKKyAgICAgICAgdGVzdEZhaWxlZCgiQXNraW5nIGZvciBh
IHN0b3JlIHRoYXQgZG9lc24ndCBleGlzdCBzaG91bGQgaGF2ZSB0aHJvd24uIik7CisgICAgfSBj
YXRjaCAoZXJyKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkV4Y2VwdGlvbiB0aHJvd24uIik7Cisg
ICAgICAgIGNvZGUgPSBlcnIuY29kZTsKKyAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAid2Via2l0
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIH0KKworICAgIGNyZWF0
ZUluZGV4KCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUluZGV4KCkKK3sKKyAgICBkZWJ1ZygiY3Jl
YXRlSW5kZXgoKToiKTsKKyAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcsIHt1bmlxdWU6IHRydWV9KSIpOyAvLyB0cnVl
ID09IHVuaXF1ZSByZXF1aXJlbWVudC4KKyAgICBzaG91bGRCZVRydWUoImluZGV4ICE9PSBudWxs
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5h
bWUnKSIpOworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnaW5k
ZXhOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoImluZGV4ICE9PSBudWxsIik7CisgCisgICAg
ZGVidWcoIkFzayBmb3IgYW4gaW5kZXggdGhhdCBkb2Vzbid0IGV4aXN0OiIpOworICAgIHRyeSB7
CisgICAgICAgIGRlYnVnKCJpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJykiKTsKKyAgICAgICAg
aW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpOworICAgICAgICB0ZXN0RmFpbGVkKCJBc2tpbmcg
Zm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0IHNob3VsZCBoYXZlIHRocm93bi4iKTsKKyAg
ICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiRXhjZXB0aW9uIHRocm93bi4i
KTsKKyAgICAgICAgY29kZSA9IGVyci5jb2RlCisgICAgICAgIHNob3VsZEJlKCJjb2RlIiwgIndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICB9CisgICAgdHJh
bnMub25jb21wbGV0ZSA9IHRlc3RTZXRWZXJzaW9uQWJvcnQ7Cit9CisKK2Z1bmN0aW9uIHRlc3RT
ZXRWZXJzaW9uQWJvcnQoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCdkYi5zZXRWZXJz
aW9uKCJ2ZXJzaW9uIGZhaWwiKScpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5v
dGhlckluZGV4OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjcmVhdGVBbm90aGVySW5kZXgoZXZ0KQoreworICAgIGV2ZW50ID0g
ZXZ0OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2ZXJzaW9uIGZh
aWwiKTsKKworICAgIHZhciBzZXRWZXJzaW9uVHJhbnMgPSBldmFsQW5kTG9nKCJzZXRWZXJzaW9u
VHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJzZXRWZXJz
aW9uVHJhbnMgIT09IG51bGwiKTsKKyAgICBzZXRWZXJzaW9uVHJhbnMub25jb21wbGV0ZSA9IHVu
ZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgIHNldFZlcnNpb25UcmFucy5vbmFib3J0ID0g
Y2hlY2tNZXRhZGF0YTsKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBzZXRW
ZXJzaW9uVHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgdmFyIGluZGV4ID0g
ZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIp
OworCisgICAgc2V0VmVyc2lvblRyYW5zLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTWV0
YWRhdGEoKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJuZXcg
dmVyc2lvbiIpOworICAgIHNob3VsZEJlKCJzdG9yZS50cmFuc2FjdGlvbiIsICJzZXRWZXJzaW9u
VHJhbnMiKTsKKyAgICBzaG91bGRCZSgic3RvcmUuaW5kZXhOYW1lcyIsICJbJ2luZGV4TmFtZSdd
Iik7CisgICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBz
aG91bGRCZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKKyAgICBz
aG91bGRCZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhGYWlsJykiLCAiZmFsc2Ui
KTsKKyAgICBzaG91bGRCZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJyki
LCAidHJ1ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUuaW5kZXhOYW1lc1sw
XSIsICJpbmRleE5hbWUiKTsKKyAgICBzaG91bGRCZU51bGwoInN0b3JlLmluZGV4TmFtZXNbMV0i
KTsKKyAgICBzaG91bGRCZU51bGwoInN0b3JlLmluZGV4TmFtZXNbMTAwXSIpOworICAgIHNob3Vs
ZEJlTnVsbCgic3RvcmUuaW5kZXhOYW1lcy5pdGVtKDEpIik7CisgICAgc2hvdWxkQmVOdWxsKCJz
dG9yZS5pbmRleE5hbWVzLml0ZW0oMTAwKSIpOworICAgIGFkZERhdGEoKTsKK30KKwordmFyIHRl
c3REYXRlID0gbmV3IERhdGUoIkF1Z3VzdCAyNSwgMTk5MSAyMDo1NzowOCIpOwordmFyIHRlc3RE
YXRlQiA9IG5ldyBEYXRlKCJXZWQgSmFuIDA1IDIwMTEgMTU6NTQ6NDkiKTsKKworZnVuY3Rpb24g
YWRkRGF0YSgpCit7CisgICAgdmFyIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rp
b24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKworICAgIGRlYnVnKCJUcnkgdG8gaW5zZXJ0
IGRhdGEgd2l0aCBhIERhdGUga2V5OiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9y
ZS5hZGQoe3g6ICdmb28nfSwgdGVzdERhdGUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGREYXRlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gYWRkRGF0ZVN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0g
ZXZ0OworICAgIGRlYnVnKCJUcnkgdG8gaW5zZXJ0IGEgdmFsdWUgbm90IGhhbmRsZWQgYnkgc3Ry
dWN0dXJlZCBjbG9uZToiKTsKKyAgICB0cnkgeworICAgICAgICBkZWJ1Zygic3RvcmUuYWRkKHt4
OiAnYmFyJywgeTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKX0sICdiYXInKSIp
OworICAgICAgICBzdG9yZS5hZGQoe3g6ICdiYXInLCB5OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29uc29sZScpfSwgJ2JhcicpOworICAgICAgICB0ZXN0RmFpbGVkKCJQYXNzaW5nIGEgRE9N
IG5vZGUgYXMgdmFsdWUgc2hvdWxkIGhhdmUgdGhyb3duLiIpOworICAgIH0gY2F0Y2ggKGVycikg
eworICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gdGhyb3duIik7CisgICAgICAgIGNvZGUg
PSBlcnIuY29kZTsKKyAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAiMjUiKTsKKyAgICB9CisKKyAg
ICBkZWJ1ZygiVHJ5IHRvIGluc2VydCBkYXRhIHdoZXJlIGtleSBwYXRoIHlpZWxkcyBhIERhdGUg
a2V5OiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6IHRlc3REYXRl
QiwgeTogJ3ZhbHVlJ30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gYWRkU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVi
dWcoImFkZFN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5yZXN1bHQiLCAia2V5Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQu
dGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICdmb28nfSwgJ3p6eicpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3QuYWRkRXZlbnRM
aXN0ZW5lcignZXJyb3InLCBhZGRBZ2FpbkZhaWx1cmUsIGZhbHNlKTsKK30KKworZnVuY3Rpb24g
YWRkQWdhaW5GYWlsdXJlKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiYWRk
QWdhaW5GYWlsdXJlKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUi
LCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIGV2
YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKKworICAgIHRyYW5zYWN0aW9uID0g
ZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKworICAgIGV2YWxBbmRMb2coInN0
b3JlLmFkZCh7eDogJ3NvbWV2YWx1ZSd9LCAnc29tZWtleScpIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigic3RvcmUuYWRkKHt4OiAnb3RoZXJ2YWx1ZSd9LCBudWxsKSIsICJ3ZWJraXRJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgdHJhbnNhY3Rpb24gPSBldmFs
QW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUuYWRkKHt4OiBudWxsfSwgJ3ZhbGlka2V5JykiLCAid2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygi
ZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9y
ZS5nZXQoJ2tleScpIik7CisgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywg
Z2V0U3VjY2VzcywgdHJ1ZSk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldFN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0g
ZXZ0OworICAgIGRlYnVnKCJnZXRTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LnkiLCAidmFsdWUiKTsKKworICAgIHZhciBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5nZXQodGVzdERhdGUpIik7CisgICAgcmVxdWVzdC5hZGRFdmVu
dExpc3RlbmVyKCdzdWNjZXNzJywgZ2V0U3VjY2Vzc0RhdGVLZXksIGZhbHNlKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0
U3VjY2Vzc0RhdGVLZXkoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCJnZXRT
dWNjZXNzRGF0ZUtleSgpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC54IiwgImZvbyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3Jl
LmRlbGV0ZSgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlbW92ZVN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHJlbW92ZVN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVn
KCJyZW1vdmVTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAidHJ1ZSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZSgna2V5
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlbW92ZVN1Y2Nlc3NCdXRGYWxzZTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gcmVtb3ZlU3VjY2Vzc0J1dEZhbHNlKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBk
ZWJ1ZygicmVtb3ZlU3VjY2Vzc0J1dEZhbHNlKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQiLCAiZmFsc2UiKTsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IGV2ZW50LnRhcmdldC5zb3VyY2UiKTsKKworICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFs
aWQga2V5IGludG8gc3RvcmUuZ2V0KCkuIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUuZ2V0KHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwor
CisgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5kZWxldGUoKS4i
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5kZWxldGUoe30pIiwgIndlYmtp
dElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiUGFzc2luZyBh
biBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmFkZCgpLiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlLmFkZChudWxsLCB7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKKworICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gc3Rv
cmUucHV0KCkuIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGws
IHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgdGVz
dFByZUNvbmRpdGlvbnMoKTsKK30KKworZnVuY3Rpb24gdGVzdFByZUNvbmRpdGlvbnMoKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFByZUNvbmRpdGlvbnMoKToiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigncHJlY29uZGl0aW9uIHZlcnNpb24n
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHN0b3JlV2l0aEluTGlu
ZUtleXMgPSBldmFsQW5kTG9nKCJzdG9yZVdpdGhJbkxpbmVLZXlzID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlV2l0aEluTGluZUtleXMnLCB7a2V5UGF0aDogJ2tleSd9KSIpOworICAgICAg
ICBzdG9yZVdpdGhPdXRPZkxpbmVLZXlzID0gZXZhbEFuZExvZygic3RvcmVXaXRoT3V0T2ZMaW5l
S2V5cyA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhPdXRJT2ZMaW5lS2V5cycpIik7
CisgICAgICAgIHN0b3JlV2l0aEluZGV4ID0gZXZhbEFuZExvZygic3RvcmVXaXRoSW5kZXggPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVXaXRoSW5kZXgnKSIpOworICAgICAgICBpbmRleCA9
IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmVXaXRoSW5kZXguY3JlYXRlSW5kZXgoJ2luZGV4TmFt
ZScsICdpbmRleEtleScpIik7CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1Zygi
SURCT2JqZWN0U3RvcmUucHV0KCkiKTsKKyAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUg
dXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZC4iKTsK
KyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5MaW5lS2V5cy5wdXQo
e2tleTogMX0sICdrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworCisgICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgb3V0LW9mLWxpbmUga2V5
cyBhbmQgaGFzIG5vIGtleSBnZW5lcmF0b3IgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBub3Qg
cHJvdmlkZWQuIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91
dE9mTGluZUtleXMucHV0KHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOworCisgICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlz
IGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9yZSdzIGtleSBwYXRo
IHlpZWxkcyBhIHZhbHVlIGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBhIHZhbGlkIGtleS4iKTsKKyAg
ICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5MaW5lS2V5cy5wdXQoe2tl
eTogbnVsbH0pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAg
ICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYnV0IG5vIGtl
eSBnZW5lcmF0b3IgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3Jl
J3Mga2V5IHBhdGggZG9lcyBub3QgeWllbGQgYSB2YWx1ZS4iKTsKKyAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5MaW5lS2V5cy5wdXQoe30pIiwgIndlYmtpdElEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIlRoZSBrZXkgcGFy
YW1ldGVyIHdhcyBwcm92aWRlZCBidXQgZG9lcyBub3QgY29udGFpbiBhIHZhbGlkIGtleS4iKTsK
KyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5w
dXQoe30sIG51bGwpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisK
KyAgICAgICAgZGVidWcoIklmIHRoZXJlIGFyZSBhbnkgaW5kZXhlcyByZWZlcmVuY2luZyB0aGlz
IG9iamVjdCBzdG9yZSB3aG9zZSBrZXkgcGF0aCBpcyBhIHN0cmluZywgZXZhbHVhdGluZyB0aGVp
ciBrZXkgcGF0aCBvbiB0aGUgdmFsdWUgcGFyYW1ldGVyIHlpZWxkcyBhIHZhbHVlLCBhbmQgdGhh
dCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlV2l0aEluZGV4LnB1dCh7aW5kZXhLZXk6IG51bGx9LCAna2V5JykiLCAid2Vi
a2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1ZygiIik7
CisgICAgICAgIGRlYnVnKCJJREJPYmplY3RTdG9yZS5hZGQoKSIpOworICAgICAgICBkZWJ1Zygi
VGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhlIGtleSBwYXJhbWV0ZXIg
d2FzIHByb3ZpZGVkLiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdp
dGhJbkxpbmVLZXlzLmFkZCh7a2V5OiAxfSwgJ2tleScpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNl
cyBvdXQtb2YtbGluZSBrZXlzIGFuZCBoYXMgbm8ga2V5IGdlbmVyYXRvciBhbmQgdGhlIGtleSBw
YXJhbWV0ZXIgd2FzIG5vdCBwcm92aWRlZC4iKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5hZGQoe30pIiwgIndlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUg
dXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0
IHN0b3JlJ3Mga2V5IHBhdGggeWllbGRzIGEgdmFsdWUgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEg
dmFsaWQga2V5LiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJ
bkxpbmVLZXlzLmFkZCh7a2V5OiBudWxsfSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxp
bmUga2V5cyBidXQgbm8ga2V5IGdlbmVyYXRvciBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5n
IHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCBkb2VzIG5vdCB5aWVsZCBhIHZhbHVlLiIpOwor
ICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbkxpbmVLZXlzLmFkZCh7
fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAgICBk
ZWJ1ZygiVGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkIGJ1dCBkb2VzIG5vdCBjb250YWlu
IGEgdmFsaWQga2V5LiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdp
dGhPdXRPZkxpbmVLZXlzLmFkZCh7fSwgbnVsbCkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1ZygiSWYgdGhlcmUgYXJlIGFueSBpbmRleGVz
IHJlZmVyZW5jaW5nIHRoaXMgb2JqZWN0IHN0b3JlIHdob3NlIGtleSBwYXRoIGlzIGEgc3RyaW5n
LCBldmFsdWF0aW5nIHRoZWlyIGtleSBwYXRoIG9uIHRoZSB2YWx1ZSBwYXJhbWV0ZXIgeWllbGRz
IGEgdmFsdWUsIGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBhIHZhbGlkIGtleS4iKTsKKyAgICAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5kZXguYWRkKHtpbmRleEtleTogbnVs
bH0sICdrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07Cit9CisKK3ZhciBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKwordGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125703</attachid>
            <date>2012-02-06 13:57:34 -0800</date>
            <delta_ts>2012-02-06 14:47:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77805-20120206135733.patch</filename>
            <type>text/plain</type>
            <size>67195</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODE5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDExZmNjOGUwYTNmNzU3OTIxNWVj
YTFiNDg4YWEwMzgxYTNiYWU4OS4uNDNkYTlmMDY1MjliMzg5NjFkNDAxODZjYmE2N2I5MmEwN2Y5
ZjVmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTAyLTA2ICBEYXZpZCBHcm9nYW4gIDxk
Z3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb3J0IHNvbWUgaW5kZXhlZGRiIGxheW91
dCB0ZXN0cyB0byB3b3JrZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzc4MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBKdXN0IGluZGV4LWJhc2ljcyBhbmQgb2JqZWN0c3RvcmUtYmFzaWNzIGluIHRo
aXMgcGF0Y2guCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29y
a2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2lu
ZGV4LWJhc2ljcy13b3JrZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL2luZGV4LWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRt
bC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxl
dGVFeGlzdGluZyk6CisgICAgICAgIChhZGREYXRhKToKKyAgICAgICAgKGFkZERhdGEyKToKKyAg
ICAgICAgKGFkZERhdGEzKToKKyAgICAgICAgKGdldERhdGEpOgorICAgICAgICAoZ2V0T2JqZWN0
RGF0YSk6CisgICAgICAgIChnZXRPYmplY3REYXRhMik6CisgICAgICAgIChnZXRPYmplY3REYXRh
Myk6CisgICAgICAgIChnZXREYXRhRmFpbCk6CisgICAgICAgIChnZXRPYmplY3REYXRhRmFpbCk6
CisgICAgICAgIChnZXRPYmplY3REYXRhNCk6CisgICAgICAgIChvcGVuS2V5Q3Vyc29yKToKKyAg
ICAgICAgKGN1cnNvcjFDb250aW51ZSk6CisgICAgICAgIChjdXJzb3IxQ29udGludWUyKToKKyAg
ICAgICAgKGN1cnNvcjFDb250aW51ZTMpOgorICAgICAgICAob3Blbk9iamVjdEN1cnNvcik6Cisg
ICAgICAgIChjdXJzb3IyQ29udGludWUpOgorICAgICAgICAoY3Vyc29yMkNvbnRpbnVlMik6Cisg
ICAgICAgIChjdXJzb3IyQ29udGludWUzKToKKyAgICAgICAgKGxhc3QudHJ5LmdldCB0ZXN0RmFp
bGVkKToKKyAgICAgICAgKGxhc3QpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sLgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAg
ICAgIChjcmVhdGVJbmRleCk6CisgICAgICAgICh0ZXN0U2V0VmVyc2lvbkFib3J0KToKKyAgICAg
ICAgKGNyZWF0ZUFub3RoZXJJbmRleCk6CisgICAgICAgIChjaGVja01ldGFkYXRhKToKKyAgICAg
ICAgKGFkZERhdGEpOgorICAgICAgICAoYWRkRGF0ZVN1Y2Nlc3MpOgorICAgICAgICAoYWRkU3Vj
Y2Vzcyk6CisgICAgICAgIChhZGRBZ2FpbkZhaWx1cmUpOgorICAgICAgICAoZ2V0U3VjY2Vzcyk6
CisgICAgICAgIChnZXRTdWNjZXNzRGF0ZUtleSk6CisgICAgICAgIChyZW1vdmVTdWNjZXNzKToK
KyAgICAgICAgKHJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSk6CisgICAgICAgICh0ZXN0UHJlQ29uZGl0
aW9ucy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0UHJlQ29uZGl0aW9ucyk6CisK
IDIwMTItMDItMDYgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBDcmFzaCBpbiBTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLXdvcmtlcnMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLXdvcmtl
cnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzZmYzMTIwZTk5MDE3MGM0N2U4OGY4YjVlYzc5
YjE1Mjg2MzMzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5OCBAQAor
W1dvcmtlcl0gVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIHdlYmtpdElEQkluZGV4Lgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJj
ZXMvaW5kZXgtYmFzaWNzLmpzCitbV29ya2VyXSB3ZWJraXRJbmRleGVkREIub3BlbignaW5kZXgt
YmFzaWNzJykKK1tXb3JrZXJdIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorW1dvcmtlcl0gZGIu
c2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQorW1dvcmtlcl0gc2V0VmVyc2lvblN1Y2Nlc3MoKToK
K1tXb3JrZXJdIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBbV29ya2VyXSB0cmFu
cyAhPT0gbnVsbCBpcyB0cnVlCitbV29ya2VyXSBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgor
W1dvcmtlcl0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpCitbV29ya2Vy
XSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnKQorW1dvcmtlcl0gc3RvcmUuY3Jl
YXRlSW5kZXgoJ2luZGV4TmFtZTInLCAneScsIGZhbHNlKQorW1dvcmtlcl0gc3RvcmUuY3JlYXRl
SW5kZXgoJ3pJbmRleCcsICd6JywgdHJ1ZSkKK1BBU1MgW1dvcmtlcl0gJ25hbWUnIGluIGluZGV4
T2JqZWN0IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gaW5kZXhPYmplY3QubmFtZSBpcyAiaW5kZXhO
YW1lIgorUEFTUyBbV29ya2VyXSAnb2JqZWN0U3RvcmUnIGluIGluZGV4T2JqZWN0IGlzIHRydWUK
K1BBU1MgW1dvcmtlcl0gaW5kZXhPYmplY3Qub2JqZWN0U3RvcmUubmFtZSBpcyAic3RvcmVOYW1l
IgorUEFTUyBbV29ya2VyXSAna2V5UGF0aCcgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyBb
V29ya2VyXSBpbmRleE9iamVjdC5rZXlQYXRoIGlzICJ4IgorUEFTUyBbV29ya2VyXSAndW5pcXVl
JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdICdtdWx0aUVudHJ5JyBpbiBp
bmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGluZGV4T2JqZWN0LnVuaXF1ZSBpcyBm
YWxzZQorUEFTUyBbV29ya2VyXSBpbmRleE9iamVjdC5tdWx0aUVudHJ5IGlzIGZhbHNlCitQQVNT
IFtXb3JrZXJdICdvcGVuS2V5Q3Vyc29yJyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtX
b3JrZXJdIHR5cGVvZiBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yIGlzICJmdW5jdGlvbiIKK1BB
U1MgW1dvcmtlcl0gJ29wZW5DdXJzb3InIGluIGluZGV4T2JqZWN0IGlzIHRydWUKK1BBU1MgW1dv
cmtlcl0gdHlwZW9mIGluZGV4T2JqZWN0Lm9wZW5DdXJzb3IgaXMgImZ1bmN0aW9uIgorUEFTUyBb
V29ya2VyXSAnZ2V0S2V5JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5
cGVvZiBpbmRleE9iamVjdC5nZXRLZXkgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnZ2V0
JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5cGVvZiBpbmRleE9iamVj
dC5nZXQgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnY291bnQnIGluIGluZGV4T2JqZWN0
IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIGluZGV4T2JqZWN0LmNvdW50IGlzICJmdW5j
dGlvbiIKK1tXb3JrZXJdIHN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eicsIHo6IDIuNzJ9
LCAna2V5JykKK1tXb3JrZXJdIGV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFsdWUyJywg
eTogJ3p6ejInLCB6OiAyLjcxLCBmb29iYXI6IDEyfSwgJ2tleTInKQorW1dvcmtlcl0gc3RvcmUu
Y3JlYXRlSW5kZXgoJ2luZGV4V2hpbGVBZGRJc0luRmxpZ2h0JywgJ3gnKQorW1dvcmtlcl0gc3Rv
cmUuY3JlYXRlSW5kZXgoJ2luZGV4V2l0aFdlaXJkS2V5UGF0aCcsICdmb29iYXInKQorW1dvcmtl
cl0gZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnNDU2J30sICdrZXkz
JykKK1tXb3JrZXJdIGluZGV4T2JqZWN0LmdldEtleSgndmFsdWUnKQorUEFTUyBbV29ya2VyXSBl
dmVudC50YXJnZXQucmVzdWx0IGlzICJrZXkiCitbV29ya2VyXSBpbmRleE9iamVjdDIuZ2V0S2V5
KCd6enonKQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlzICJrZXkiCitbV29y
a2VyXSBpbmRleE9iamVjdDMuZ2V0KDIuNzEpCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5y
ZXN1bHQueCBpcyAidmFsdWUyIgorW1dvcmtlcl0gaW5kZXhPYmplY3QuZ2V0KCd2YWx1ZScpCitQ
QVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQueCBpcyAidmFsdWUiCitQQVNTIFtXb3Jr
ZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQueSBpcyAienp6IgorW1dvcmtlcl0gaW5kZXhPYmplY3Qu
Z2V0S2V5KCdkb2VzIG5vdCBleGlzdCcpCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1
bHQgaXMgdW5kZWZpbmVkCitbV29ya2VyXSBpbmRleE9iamVjdC5nZXQoJ2RvZXMgbm90IGV4aXN0
JykKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQKK1tXb3Jr
ZXJdIGluZGV4T2JqZWN0NC5nZXRLZXkoJ3ZhbHVlMicpCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRh
cmdldC5yZXN1bHQgaXMgImtleTIiCitbV29ya2VyXSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29y
KCkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnNvdXJjZSBpcyBpbmRleE9iamVjdAorUEFT
UyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIGlzIGZhbHNlCitQQVNTIFtX
b3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQua2V5IGlzICJ2YWx1ZSIKK1BBU1MgW1dvcmtlcl0g
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IGlzICJrZXkiCitbV29ya2VyXSBldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCA9PT0gbnVsbCBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0Lmtl
eSBpcyAidmFsdWUyIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkgaXMgImtleTIiCitbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkKK1BB
U1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCBpcyBmYWxzZQorUEFTUyBb
V29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LmtleSBpcyAidmFsdWUzIgorUEFTUyBbV29ya2Vy
XSBldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkgaXMgImtleTMiCitbV29ya2VyXSBldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJl
c3VsdCA9PT0gbnVsbCBpcyB0cnVlCitbV29ya2VyXSBpbmRleE9iamVjdC5vcGVuQ3Vyc29yKCkK
K1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnNvdXJjZSBpcyBpbmRleE9iamVjdAorUEFTUyBb
V29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIGlzIGZhbHNlCitQQVNTIFtXb3Jr
ZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQua2V5IGlzICJ2YWx1ZSIKK1BBU1MgW1dvcmtlcl0gZXZl
bnQudGFyZ2V0LnJlc3VsdC52YWx1ZS54IGlzICJ2YWx1ZSIKK1BBU1MgW1dvcmtlcl0gZXZlbnQu
dGFyZ2V0LnJlc3VsdC52YWx1ZS55IGlzICJ6enoiCitbV29ya2VyXSBldmVudC50YXJnZXQucmVz
dWx0LmNvbnRpbnVlKCkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVs
bCBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LmtleSBpcyAidmFs
dWUyIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLnggaXMgInZhbHVl
MiIKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IGlzICJ6enoyIgor
W1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpCitQQVNTIFtXb3JrZXJdIGV2
ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gZXZlbnQu
dGFyZ2V0LnJlc3VsdC5rZXkgaXMgInZhbHVlMyIKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0
LnJlc3VsdC52YWx1ZS54IGlzICJ2YWx1ZTMiCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUueSBpcyAiNDU2IgorW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgpCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwgaXMgdHJ1
ZQorW1dvcmtlcl0gUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGluZGV4T2JqZWN0LmdldCh7
fSkuCitQQVNTIFtXb3JrZXJdIENhdWdodCBleGNlcHRpb246IEVycm9yOiBEQVRBX0VSUjogRE9N
IElEQkRhdGFiYXNlIEV4Y2VwdGlvbiA1CitbV29ya2VyXSBQYXNzaW5nIGFuIGludmFsaWQga2V5
IGludG8gaW5kZXhPYmplY3QuZ2V0S2V5KHt9KS4KK1BBU1MgW1dvcmtlcl0gQ2F1Z2h0IGV4Y2Vw
dGlvbjogRXJyb3I6IERBVEFfRVJSOiBET00gSURCRGF0YWJhc2UgRXhjZXB0aW9uIDUKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLXdvcmtlcnMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wODAwMzY0ZjU5OTAxM2QxYzljNGJkMGYxMmZlMjg1NDQxNWEyNTc0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFz
aWNzLXdvcmtlcnMuaHRtbApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD5zdGFydFdvcmtlcigncmVzb3VyY2VzL2lu
ZGV4LWJhc2ljcy5qcycpOzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCmluZGV4IGZi
NGMwMDQwYmQ4ZTYzMjliMzA3YzI2YTA5NTcwMTdiYjk5ZDM2MjcuLmEyNDExNmQ2YmJmN2QwMzg2
N2U0NDk0MDk1OGY5Yzg5YmExYzJkYzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCkBAIC02LDI2NSArNiw3IEBACiA8Ym9keT4KIDxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIHdlYmtpdElEQklu
ZGV4LiIpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3BlbignaW5kZXgtYmFzaWNzJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24o
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4
aXN0aW5nKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICB3aW5k
b3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHdpbmRvdy5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2co
InN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcpIik7Ci0gICAgd2luZG93LmluZGV4
T2JqZWN0MiA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUyJywgJ3kn
LCBmYWxzZSkiKTsKLSAgICB3aW5kb3cuaW5kZXhPYmplY3QzID0gZXZhbEFuZExvZygic3RvcmUu
Y3JlYXRlSW5kZXgoJ3pJbmRleCcsICd6JywgdHJ1ZSkiKTsKLSAgICBhZGREYXRhKCk7Ci19Ci0K
LWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHNob3VsZEJlVHJ1ZSgiJ25hbWUnIGluIGluZGV4
T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5uYW1lIiwg
ImluZGV4TmFtZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ29iamVjdFN0b3JlJyBpbiBpbmRleE9i
amVjdCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5kZXhPYmplY3Qub2JqZWN0U3Rv
cmUubmFtZSIsICJzdG9yZU5hbWUiKTsKLSAgICBzaG91bGRCZVRydWUoIidrZXlQYXRoJyBpbiBp
bmRleE9iamVjdCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5kZXhPYmplY3Qua2V5
UGF0aCIsICJ4Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCIndW5pcXVlJyBpbiBpbmRleE9iamVjdCIp
OwotICAgIHNob3VsZEJlVHJ1ZSgiJ211bHRpRW50cnknIGluIGluZGV4T2JqZWN0Iik7Ci0gICAg
c2hvdWxkQmVGYWxzZSgiaW5kZXhPYmplY3QudW5pcXVlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgi
aW5kZXhPYmplY3QubXVsdGlFbnRyeSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ29wZW5LZXlDdXJz
b3InIGluIGluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Yg
aW5kZXhPYmplY3Qub3BlbktleUN1cnNvciIsICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1
ZSgiJ29wZW5DdXJzb3InIGluIGluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ0eXBlb2YgaW5kZXhPYmplY3Qub3BlbkN1cnNvciIsICJmdW5jdGlvbiIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgiJ2dldEtleScgaW4gaW5kZXhPYmplY3QiKTsKLSAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5nZXRLZXkiLCAiZnVuY3Rpb24iKTsKLSAgICBz
aG91bGRCZVRydWUoIidnZXQnIGluIGluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3QuZ2V0IiwgImZ1bmN0aW9uIik7Ci0gICAgc2hvdWxk
QmVUcnVlKCInY291bnQnIGluIGluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ0eXBlb2YgaW5kZXhPYmplY3QuY291bnQiLCAiZnVuY3Rpb24iKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonLCB6OiAyLjcy
fSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGREYXRhMjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRk
RGF0YTIoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNl
LmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJywgejogMi43MSwgZm9vYmFyOiAxMn0sICdrZXky
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGEzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHdpbmRvdy5pbmRleE9iamVjdDQg
PSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhXaGlsZUFkZElzSW5GbGlnaHQn
LCAneCcpIik7Ci0gICAgd2luZG93LmluZGV4T2JqZWN0NSA9IGV2YWxBbmRMb2coInN0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleFdpdGhXZWlyZEtleVBhdGgnLCAnZm9vYmFyJykiKTsKLX0KLQotZnVu
Y3Rpb24gYWRkRGF0YTMoKQotewotICAgIC8vIEFkZCBkYXRhIHdoaWNoIGRvZXNuJ3QgaGF2ZSBh
IGtleSBpbiB0aGUgekluZGV4LgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQuc291cmNlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICc0NTYnfSwgJ2tleTMnKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZ2V0RGF0YTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0RGF0YSgpCi17Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldEtleSgndmFsdWUnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YSgpCi17Ci0g
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Mi5nZXRLZXkoJ3p6eicpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhMjsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0T2JqZWN0
RGF0YTIoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICJrZXkiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdDMuZ2V0
KDIuNzEpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhMzsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
Z2V0T2JqZWN0RGF0YTMoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC54IiwgInZhbHVlMiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4T2JqZWN0LmdldCgndmFsdWUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0RGF0
YUZhaWw7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGdldERhdGFGYWlsKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQueCIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC55IiwgInp6eiIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4T2JqZWN0LmdldEtleSgnZG9lcyBub3QgZXhpc3QnKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YUZhaWw7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0T2JqZWN0RGF0
YUZhaWwoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5l
ZCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldCgnZG9lcyBu
b3QgZXhpc3QnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTQ7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZ2V0T2JqZWN0RGF0YTQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0IiwgInVuZGVmaW5lZCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2Jq
ZWN0NC5nZXRLZXkoJ3ZhbHVlMicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuS2V5
Q3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9ICB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gb3BlbktleUN1cnNvcigpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTIiKTsKLQotICAgIHdpbmRvdy5yZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcigpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjdXJzb3IxQ29udGludWU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjFDb250aW51ZSgpCi17
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5zb3VyY2UiLCAiaW5kZXhPYmplY3QiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZSIpOwot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgImtleSIpOwotCi0gICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0Lgot
ICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHdp
bmRvdy5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTI7Ci19Ci0KLWZ1bmN0aW9u
IGN1cnNvcjFDb250aW51ZTIoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5y
ZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleTIiKTsKLQotICAgIC8vIFdlIHJlLXVz
ZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQu
cmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB3aW5kb3cucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJz
b3IxQ29udGludWUzOwotfQotCi1mdW5jdGlvbiBjdXJzb3IxQ29udGludWUzKCkKLXsKLSAgICBz
aG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTMiKTsKLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIs
ICJrZXkzIik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCi0g
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgd2lu
ZG93LnJlcXVlc3Qub25zdWNjZXNzID0gb3Blbk9iamVjdEN1cnNvcjsKLX0KLQotZnVuY3Rpb24g
b3Blbk9iamVjdEN1cnNvcigpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVz
dWx0ID09PSBudWxsIik7Ci0KLSAgICB3aW5kb3cucmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
T2JqZWN0Lm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNv
bnRpbnVlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBjdXJzb3IyQ29udGludWUoKQotewotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQuc291cmNlIiwgImluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6eiIpOwotCi0g
ICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHdpbmRvdy5yZXF1ZXN0Lm9u
c3VjY2VzcyA9IGN1cnNvcjJDb250aW51ZTI7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjJDb250aW51
ZTIoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwi
KTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5Iiwg
InZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC52YWx1ZS54IiwgInZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6ejIiKTsKLQotICAgIC8vIFdlIHJlLXVzZSB0aGUg
bGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0
LmNvbnRpbnVlKCkiKTsKLSAgICB3aW5kb3cucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29u
dGludWUzOwotfQotCi1mdW5jdGlvbiBjdXJzb3IyQ29udGludWUzKCkKLXsKLSAgICBzaG91bGRC
ZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTMiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZTMi
KTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUu
eSIsICI0NTYiKTsKLQotICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4K
LSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB3
aW5kb3cucmVxdWVzdC5vbnN1Y2Nlc3MgPSBsYXN0OwotfQotCi1mdW5jdGlvbiBsYXN0KCkKLXsK
LSAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLQotICAg
IHRyeSB7Ci0gICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gaW5kZXhP
YmplY3QuZ2V0KHt9KS4iKTsKLSAgICAgICAgaW5kZXhPYmplY3QuZ2V0KHt9KTsKLSAgICAgICAg
dGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7Ci0g
ICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkg
aW50byBpbmRleE9iamVjdC5nZXRLZXkoe30pLiIpOwotICAgICAgICBpbmRleE9iamVjdC5nZXRL
ZXkoe30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAg
fSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsg
ZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgZG9uZSgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2luZGV4LWJhc2ljcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4
IDZhOTQwZGUzYzc0NDFhNGFhOWM1YjBiZWQwYWEyNmZiYjliMWYxZjAuLmIzNzk1YjY5ZTVlMzE1
MzJjNjNmMjE4YWM0NzJjYzEyZTEzNTczMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dApA
QCAtNzksOSArNzksOSBAQCBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKQogVHJ5IHRvIGluc2VydCBkYXRhIHdpdGggYSBEYXRlIGtleToKIHN0b3JlLmFkZCh7eDog
J2Zvbyd9LCB0ZXN0RGF0ZSkKIFRyeSB0byBpbnNlcnQgYSB2YWx1ZSBub3QgaGFuZGxlZCBieSBz
dHJ1Y3R1cmVkIGNsb25lOgotc3RvcmUuYWRkKHt4OiAnYmFyJywgeTogZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKX0sICdiYXInKQorc3RvcmUuYWRkKHt4OiAnYmFyJywgeTogc2Vs
Zn0sICdiYXInKQogUEFTUyBFeGNlcHRpb24gdGhyb3duCi1QQVNTIGNvZGUgaXMgRE9NRXhjZXB0
aW9uLkRBVEFfQ0xPTkVfRVJSCitQQVNTIGNvZGUgaXMgMjUKIFRyeSB0byBpbnNlcnQgZGF0YSB3
aGVyZSBrZXkgcGF0aCB5aWVsZHMgYSBEYXRlIGtleToKIHN0b3JlLmFkZCh7eDogdGVzdERhdGVC
LCB5OiAndmFsdWUnfSwgJ2tleScpCiBhZGRTdWNjZXNzKCk6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mt
d29ya2Vycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWYzNGI1OGVlODMzNTUwYjE3NzMyMzE1
MTIxNzY0OTFmMWYzNzEyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE5OSBAQAorW1dvcmtlcl0gVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQk9i
amVjdFN0b3JlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU3RhcnRpbmcgd29y
a2VyOiByZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzCitbV29ya2VyXSB3ZWJraXRJbmRl
eGVkREIub3Blbignb2JqZWN0c3RvcmUtYmFzaWNzJykKK1tXb3JrZXJdIG9wZW5TdWNjZXNzKCk6
CitbV29ya2VyXSBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1tXb3JrZXJdIGRiLnNldFZlcnNp
b24oJ25ldyB2ZXJzaW9uJykKK1tXb3JrZXJdIHNldFZlcnNpb25TdWNjZXNzKCk6CitbV29ya2Vy
XSB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgW1dvcmtlcl0gdHJhbnMgIT09IG51
bGwgaXMgdHJ1ZQorW1dvcmtlcl0gRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK1tXb3JrZXJd
IGNyZWF0ZU9iamVjdFN0b3JlKCk6CitbV29ya2VyXSBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnLCBudWxsKQorW1dvcmtlcl0gc3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0
b3JlTmFtZXMKK1BBU1MgW1dvcmtlcl0gJ25hbWUnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dv
cmtlcl0gJ2tleVBhdGgnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gJ2luZGV4TmFt
ZXMnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gJ3RyYW5zYWN0aW9uJyBpbiBzdG9y
ZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdICdwdXQnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dv
cmtlcl0gdHlwZW9mIHN0b3JlLnB1dCBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdhZGQn
IGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIHN0b3JlLmFkZCBpcyAiZnVu
Y3Rpb24iCitQQVNTIFtXb3JrZXJdICdkZWxldGUnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dv
cmtlcl0gdHlwZW9mIHN0b3JlLmRlbGV0ZSBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdn
ZXQnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIHN0b3JlLmdldCBpcyAi
ZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdjbGVhcicgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyBb
V29ya2VyXSB0eXBlb2Ygc3RvcmUuY2xlYXIgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAn
b3BlbkN1cnNvcicgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSB0eXBlb2Ygc3RvcmUu
b3BlbkN1cnNvciBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdjcmVhdGVJbmRleCcgaW4g
c3RvcmUgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSB0eXBlb2Ygc3RvcmUuY3JlYXRlSW5kZXggaXMg
ImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnaW5kZXgnIGluIHN0b3JlIGlzIHRydWUKK1BBU1Mg
W1dvcmtlcl0gdHlwZW9mIHN0b3JlLmluZGV4IGlzICJmdW5jdGlvbiIKK1BBU1MgW1dvcmtlcl0g
J2RlbGV0ZUluZGV4JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5cGVvZiBzdG9y
ZS5kZWxldGVJbmRleCBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdjb3VudCcgaW4gc3Rv
cmUgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSB0eXBlb2Ygc3RvcmUuY291bnQgaXMgImZ1bmN0aW9u
IgorUEFTUyBbV29ya2VyXSBzdG9yZS5uYW1lIGlzICJzdG9yZU5hbWUiCitQQVNTIFtXb3JrZXJd
IHN0b3JlLmtleVBhdGggaXMgbnVsbAorUEFTUyBbV29ya2VyXSBzdG9yZU5hbWVzLmNvbnRhaW5z
KCdzdG9yZU5hbWUnKSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHN0b3JlTmFtZXMubGVuZ3RoIGlz
IDEKK1tXb3JrZXJdIEFzayBmb3IgYW4gaW5kZXggdGhhdCBkb2Vzbid0IGV4aXN0OgorW1dvcmtl
cl0gaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB0
aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUgorW1dvcmtlcl0gY3JlYXRlSW5kZXgoKToKK1tXb3JrZXJdIGluZGV4ID0g
c3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4Jywge3VuaXF1ZTogdHJ1ZX0pCitQQVNT
IFtXb3JrZXJdIGluZGV4ICE9PSBudWxsIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gc3RvcmUuaW5k
ZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykgaXMgdHJ1ZQorW1dvcmtlcl0gaW5kZXggPSBz
dG9yZS5pbmRleCgnaW5kZXhOYW1lJykKK1BBU1MgW1dvcmtlcl0gaW5kZXggIT09IG51bGwgaXMg
dHJ1ZQorW1dvcmtlcl0gQXNrIGZvciBhbiBpbmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6CitbV29y
a2VyXSBpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJykKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9u
IHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfRk9VTkRfRVJSCitbV29ya2VyXSBkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGZhaWwiKQor
UEFTUyBbV29ya2VyXSBkYi52ZXJzaW9uIGlzICJ2ZXJzaW9uIGZhaWwiCitbV29ya2VyXSBzZXRW
ZXJzaW9uVHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIFtXb3JrZXJdIHNldFZlcnNp
b25UcmFucyAhPT0gbnVsbCBpcyB0cnVlCitbV29ya2VyXSBzdG9yZSA9IHNldFZlcnNpb25UcmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK1tXb3JrZXJdIGluZGV4ID0gc3RvcmUuY3JlYXRl
SW5kZXgoJ2luZGV4RmFpbCcsICd4JykKK1BBU1MgW1dvcmtlcl0gZGIudmVyc2lvbiBpcyAibmV3
IHZlcnNpb24iCitQQVNTIFtXb3JrZXJdIHN0b3JlLnRyYW5zYWN0aW9uIGlzIHNldFZlcnNpb25U
cmFucworUEFTUyBbV29ya2VyXSBzdG9yZS5pbmRleE5hbWVzIGlzIFsnaW5kZXhOYW1lJ10KK1BB
U1MgW1dvcmtlcl0gc3RvcmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMQorUEFTUyBbV29ya2VyXSBz
dG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCcnKSBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSBzdG9y
ZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleEZhaWwnKSBpcyBmYWxzZQorUEFTUyBbV29ya2Vy
XSBzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSBpcyB0cnVlCitQQVNTIFtX
b3JrZXJdIHN0b3JlLmluZGV4TmFtZXNbMF0gaXMgImluZGV4TmFtZSIKK1BBU1MgW1dvcmtlcl0g
c3RvcmUuaW5kZXhOYW1lc1sxXSBpcyBudWxsCitQQVNTIFtXb3JrZXJdIHN0b3JlLmluZGV4TmFt
ZXNbMTAwXSBpcyBudWxsCitQQVNTIFtXb3JrZXJdIHN0b3JlLmluZGV4TmFtZXMuaXRlbSgxKSBp
cyBudWxsCitQQVNTIFtXb3JrZXJdIHN0b3JlLmluZGV4TmFtZXMuaXRlbSgxMDApIGlzIG51bGwK
K1tXb3JrZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Vi
a2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK1tXb3JrZXJdIHN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitbV29ya2VyXSBUcnkgdG8gaW5zZXJ0IGRhdGEg
d2l0aCBhIERhdGUga2V5OgorW1dvcmtlcl0gc3RvcmUuYWRkKHt4OiAnZm9vJ30sIHRlc3REYXRl
KQorW1dvcmtlcl0gVHJ5IHRvIGluc2VydCBhIHZhbHVlIG5vdCBoYW5kbGVkIGJ5IHN0cnVjdHVy
ZWQgY2xvbmU6CitbV29ya2VyXSBzdG9yZS5hZGQoe3g6ICdiYXInLCB5OiBzZWxmfSwgJ2Jhcicp
CitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB0aHJvd24KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyAy
NQorW1dvcmtlcl0gVHJ5IHRvIGluc2VydCBkYXRhIHdoZXJlIGtleSBwYXRoIHlpZWxkcyBhIERh
dGUga2V5OgorW1dvcmtlcl0gc3RvcmUuYWRkKHt4OiB0ZXN0RGF0ZUIsIHk6ICd2YWx1ZSd9LCAn
a2V5JykKK1tXb3JrZXJdIGFkZFN1Y2Nlc3MoKToKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0
LnJlc3VsdCBpcyAia2V5IgorW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICdm
b28nfSwgJ3p6eicpCitbV29ya2VyXSBhZGRBZ2FpbkZhaWx1cmUoKToKK1BBU1MgW1dvcmtlcl0g
ZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05T
VFJBSU5UX0VSUgorW1dvcmtlcl0gZXZlbnQucHJldmVudERlZmF1bHQoKQorW1dvcmtlcl0gZGIu
dHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklU
RSkKK1tXb3JrZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
CitbV29ya2VyXSBzdG9yZS5hZGQoe3g6ICdzb21ldmFsdWUnfSwgJ3NvbWVrZXknKQorW1dvcmtl
cl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmFkZCh7eDogJ290aGVydmFsdWUnfSwg
bnVsbCkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJd
IGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIGRi
LnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUpCitbV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KQorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmFkZCh7eDogbnVsbH0s
ICd2YWxpZGtleScpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBb
V29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29y
a2VyXSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKQorW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykKK1tXb3JrZXJdIHN0b3JlLmdldCgna2V5JykKK1tXb3JrZXJdIGdldFN1Y2Nlc3Mo
KToKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC55IGlzICJ2YWx1ZSIKK1tXb3Jr
ZXJdIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZQorW1dvcmtlcl0gc3RvcmUuZ2V0KHRlc3RE
YXRlKQorW1dvcmtlcl0gZ2V0U3VjY2Vzc0RhdGVLZXkoKToKK1BBU1MgW1dvcmtlcl0gZXZlbnQu
dGFyZ2V0LnJlc3VsdC54IGlzICJmb28iCitbV29ya2VyXSBzdG9yZS5kZWxldGUoJ2tleScpCitb
V29ya2VyXSByZW1vdmVTdWNjZXNzKCk6CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1
bHQgaXMgdHJ1ZQorW1dvcmtlcl0gc3RvcmUuZGVsZXRlKCdrZXknKQorW1dvcmtlcl0gcmVtb3Zl
U3VjY2Vzc0J1dEZhbHNlKCk6CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMg
ZmFsc2UKK1tXb3JrZXJdIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZQorW1dvcmtlcl0gUGFz
c2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmdldCgpLgorW1dvcmtlcl0gRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCh7fSkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdh
cyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIKK1tXb3JrZXJdIFBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5k
ZWxldGUoKS4KK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5kZWxldGUo
e30pCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBj
b2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBQYXNz
aW5nIGFuIGludmFsaWQga2V5IGludG8gc3RvcmUuYWRkKCkuCitbV29ya2VyXSBFeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKG51bGwsIHt9KQorUEFTUyBbV29ya2VyXSBFeGNlcHRp
b24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUgorW1dvcmtlcl0gUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0
b3JlLnB1dCgpLgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLnB1dChu
dWxsLCB7fSkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3Jr
ZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJd
IAorW1dvcmtlcl0gdGVzdFByZUNvbmRpdGlvbnMoKToKK1tXb3JrZXJdIGRiLnNldFZlcnNpb24o
J3ByZWNvbmRpdGlvbiB2ZXJzaW9uJykKK1tXb3JrZXJdIHN0b3JlV2l0aEluTGluZUtleXMgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVXaXRoSW5MaW5lS2V5cycsIHtrZXlQYXRoOiAna2V5
J30pCitbV29ya2VyXSBzdG9yZVdpdGhPdXRPZkxpbmVLZXlzID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlV2l0aE91dElPZkxpbmVLZXlzJykKK1tXb3JrZXJdIHN0b3JlV2l0aEluZGV4ID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlV2l0aEluZGV4JykKK1tXb3JrZXJdIGluZGV4ID0g
c3RvcmVXaXRoSW5kZXguY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICdpbmRleEtleScpCitbV29y
a2VyXSAKK1tXb3JrZXJdIElEQk9iamVjdFN0b3JlLnB1dCgpCitbV29ya2VyXSBUaGUgb2JqZWN0
IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlk
ZWQuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoSW5MaW5lS2V5
cy5wdXQoe2tleTogMX0sICdrZXknKQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUgorW1dvcmtlcl0gVGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5lIGtleXMgYW5k
IGhhcyBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgbm90IHByb3Zp
ZGVkLgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aE91dE9mTGlu
ZUtleXMucHV0KHt9KQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1Mg
W1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorW1dv
cmtlcl0gVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhlIHJlc3VsdCBv
ZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCB5aWVsZHMgYSB2YWx1ZSBh
bmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhj
ZXB0aW9uIGZyb20gc3RvcmVXaXRoSW5MaW5lS2V5cy5wdXQoe2tleTogbnVsbH0pCitQQVNTIFtX
b3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtp
dElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBUaGUgb2JqZWN0IHN0b3Jl
IHVzZXMgaW4tbGluZSBrZXlzIGJ1dCBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUgcmVzdWx0IG9m
IGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIGRvZXMgbm90IHlpZWxkIGEg
dmFsdWUuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoSW5MaW5l
S2V5cy5wdXQoe30pCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBb
V29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29y
a2VyXSBUaGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4g
YSB2YWxpZCBrZXkuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRo
T3V0T2ZMaW5lS2V5cy5wdXQoe30sIG51bGwpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMg
dGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSCitbV29ya2VyXSBJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVmZXJlbmNpbmcg
dGhpcyBvYmplY3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2YWx1YXRpbmcg
dGhlaXIga2V5IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2YWx1ZSwgYW5k
IHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIHN0b3JlV2l0aEluZGV4LnB1dCh7aW5kZXhLZXk6IG51bGx9LCAna2V5JykKK1BB
U1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMg
d2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIAorW1dvcmtlcl0g
SURCT2JqZWN0U3RvcmUuYWRkKCkKK1tXb3JrZXJdIFRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1s
aW5lIGtleXMgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZC4KK1tXb3JrZXJdIEV4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhJbkxpbmVLZXlzLmFkZCh7a2V5OiAxfSwg
J2tleScpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2Vy
XSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBU
aGUgb2JqZWN0IHN0b3JlIHVzZXMgb3V0LW9mLWxpbmUga2V5cyBhbmQgaGFzIG5vIGtleSBnZW5l
cmF0b3IgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBub3QgcHJvdmlkZWQuCitbV29ya2VyXSBF
eHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5hZGQoe30pCitQ
QVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlz
IHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBUaGUgb2JqZWN0
IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhl
IG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIHlpZWxkcyBhIHZhbHVlIGFuZCB0aGF0IHZhbHVlIGlz
IG5vdCBhIHZhbGlkIGtleS4KK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9y
ZVdpdGhJbkxpbmVLZXlzLmFkZCh7a2V5OiBudWxsfSkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9u
IHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIFRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtl
eXMgYnV0IG5vIGtleSBnZW5lcmF0b3IgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUg
b2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggZG9lcyBub3QgeWllbGQgYSB2YWx1ZS4KK1tXb3JrZXJd
IEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhJbkxpbmVLZXlzLmFkZCh7fSkKK1BB
U1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMg
d2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIFRoZSBrZXkgcGFy
YW1ldGVyIHdhcyBwcm92aWRlZCBidXQgZG9lcyBub3QgY29udGFpbiBhIHZhbGlkIGtleS4KK1tX
b3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLmFk
ZCh7fSwgbnVsbCkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtX
b3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tXb3Jr
ZXJdIElmIHRoZXJlIGFyZSBhbnkgaW5kZXhlcyByZWZlcmVuY2luZyB0aGlzIG9iamVjdCBzdG9y
ZSB3aG9zZSBrZXkgcGF0aCBpcyBhIHN0cmluZywgZXZhbHVhdGluZyB0aGVpciBrZXkgcGF0aCBv
biB0aGUgdmFsdWUgcGFyYW1ldGVyIHlpZWxkcyBhIHZhbHVlLCBhbmQgdGhhdCB2YWx1ZSBpcyBu
b3QgYSB2YWxpZCBrZXkuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVX
aXRoSW5kZXguYWRkKHtpbmRleEtleTogbnVsbH0sICdrZXknKQorUEFTUyBbV29ya2VyXSBFeGNl
cHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhYzIx
Mjk3N2U5OWQ4OTc0YjdmNjQzYzMzZDdlNDhiYjVlYzljYzQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy5o
dG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PnN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFz
aWNzLmpzJyk7PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKaW5k
ZXggNmQ4YjVmZDA2YTYwMjExNGM3ZWRlNjZmMTY0OTMyMzhmN2MxZGQ2YS4uNGFiNDQxZWQwYmY1
MjMyOTI3MGUyOWZjZWMxZjA1NjFhMzFiNmFiOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKQEAgLTYsMzM5ICs2LDcg
QEAKIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhl
ZERCJ3MgSURCT2JqZWN0U3RvcmUuIik7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3Bl
bignb2JqZWN0c3RvcmUtYmFzaWNzJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6
Iik7Ci0gICAgd2luZG93LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToi
KTsKLSAgICB3aW5kb3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKLQotICAgIGRlYnVnKCJjcmVhdGVPYmplY3RTdG9yZSgpOiIpOwotICAgIHdp
bmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScsIG51bGwpIik7Ci0gICAgdmFyIHN0b3JlTmFtZXMgPSBldmFsQW5kTG9nKCJzdG9y
ZU5hbWVzID0gZGIub2JqZWN0U3RvcmVOYW1lcyIpOwotCi0gICAgc2hvdWxkQmVUcnVlKCInbmFt
ZScgaW4gc3RvcmUiKTsKLSAgICBzaG91bGRCZVRydWUoIidrZXlQYXRoJyBpbiBzdG9yZSIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgiJ2luZGV4TmFtZXMnIGluIHN0b3JlIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCIndHJhbnNhY3Rpb24nIGluIHN0b3JlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCIncHV0JyBp
biBzdG9yZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLnB1dCIs
ICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2FkZCcgaW4gc3RvcmUiKTsKLSAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5hZGQiLCAiZnVuY3Rpb24iKTsKLSAg
ICBzaG91bGRCZVRydWUoIidkZWxldGUnIGluIHN0b3JlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ0eXBlb2Ygc3RvcmUuZGVsZXRlIiwgImZ1bmN0aW9uIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCInZ2V0JyBpbiBzdG9yZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9m
IHN0b3JlLmdldCIsICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2NsZWFyJyBpbiBz
dG9yZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmNsZWFyIiwg
ImZ1bmN0aW9uIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInb3BlbkN1cnNvcicgaW4gc3RvcmUiKTsK
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5vcGVuQ3Vyc29yIiwgImZ1
bmN0aW9uIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInY3JlYXRlSW5kZXgnIGluIHN0b3JlIik7Ci0g
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuY3JlYXRlSW5kZXgiLCAiZnVu
Y3Rpb24iKTsKLSAgICBzaG91bGRCZVRydWUoIidpbmRleCcgaW4gc3RvcmUiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5pbmRleCIsICJmdW5jdGlvbiIpOwotICAg
IHNob3VsZEJlVHJ1ZSgiJ2RlbGV0ZUluZGV4JyBpbiBzdG9yZSIpOwotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmRlbGV0ZUluZGV4IiwgImZ1bmN0aW9uIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCInY291bnQnIGluIHN0b3JlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ0eXBlb2Ygc3RvcmUuY291bnQiLCAiZnVuY3Rpb24iKTsKLQotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsKLSAgICBzaG91bGRCZU51bGwo
InN0b3JlLmtleVBhdGgiKTsKLSAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5jb250YWlucygnc3Rv
cmVOYW1lJykiLCAidHJ1ZSIpOwotICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmxlbmd0aCIsICIx
Iik7Ci0gICAgLy8gRklYTUU6IHRlc3QgYWxsIG9mIG9iamVjdCBzdG9yZSdzIG1ldGhvZHMuCi0K
LSAgICBkZWJ1ZygiQXNrIGZvciBhbiBpbmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6Iik7Ci0gICAg
dHJ5IHsKLSAgICAgICAgZGVidWcoImluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKSIpOwotICAg
ICAgICBpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJyk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkFz
a2luZyBmb3IgYSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgc2hvdWxkIGhhdmUgdGhyb3duLiIp
OwotICAgIH0gY2F0Y2ggKGVycikgewotICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gdGhy
b3duLiIpOwotICAgICAgICBjb2RlID0gZXJyLmNvZGU7Ci0gICAgICAgIHNob3VsZEJlKCJjb2Rl
IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICB9Ci0K
LSAgICBjcmVhdGVJbmRleCgpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVJbmRleCgpCi17Ci0gICAg
ZGVidWcoImNyZWF0ZUluZGV4KCk6Iik7Ci0gICAgdmFyIGluZGV4ID0gZXZhbEFuZExvZygiaW5k
ZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnLCB7dW5pcXVlOiB0cnVlfSki
KTsgLy8gdHJ1ZSA9PSB1bmlxdWUgcmVxdWlyZW1lbnQuCi0gICAgc2hvdWxkQmVUcnVlKCJpbmRl
eCAhPT0gbnVsbCIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlu
cygnaW5kZXhOYW1lJykiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUu
aW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleCAhPT0gbnVsbCIp
OwotIAotICAgIGRlYnVnKCJBc2sgZm9yIGFuIGluZGV4IHRoYXQgZG9lc24ndCBleGlzdDoiKTsK
LSAgICB0cnkgewotICAgICAgICBkZWJ1ZygiaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpIik7
Ci0gICAgICAgIGluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKTsKLSAgICAgICAgdGVzdEZhaWxl
ZCgiQXNraW5nIGZvciBhIHN0b3JlIHRoYXQgZG9lc24ndCBleGlzdCBzaG91bGQgaGF2ZSB0aHJv
d24uIik7Ci0gICAgfSBjYXRjaCAoZXJyKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkV4Y2VwdGlv
biB0aHJvd24uIik7Ci0gICAgICAgIGNvZGUgPSBlcnIuY29kZQotICAgICAgICBzaG91bGRCZSgi
Y29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAg
fQotCi0gICAgY29tbWl0QW5kQ29udGludWUoKTsgICAgCi19Ci0KLWZ1bmN0aW9uIGNvbW1pdEFu
ZENvbnRpbnVlKCkKLXsKLSAgICB3aW5kb3cuc2V0VGltZW91dCh0ZXN0U2V0VmVyc2lvbkFib3J0
LCAwKTsKLX0KLQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydCgpCi17Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gZmFpbCIpJyk7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbm90aGVySW5kZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFub3RoZXJJ
bmRleCgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNp
b24gZmFpbCIpOwotCi0gICAgdmFyIHNldFZlcnNpb25UcmFucyA9IGV2YWxBbmRMb2coInNldFZl
cnNpb25UcmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInNl
dFZlcnNpb25UcmFucyAhPT0gbnVsbCIpOwotICAgIHNldFZlcnNpb25UcmFucy5vbmNvbXBsZXRl
ID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAgc2V0VmVyc2lvblRyYW5zLm9uYWJv
cnQgPSBjaGVja01ldGFkYXRhOwotICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gc2V0VmVyc2lvblRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHZhciBp
bmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcs
ICd4JykiKTsKLQotICAgIHNldFZlcnNpb25UcmFucy5hYm9ydCgpOwotfQotCi1mdW5jdGlvbiBj
aGVja01ldGFkYXRhKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24i
LCAibmV3IHZlcnNpb24iKTsKLSAgICBzaG91bGRCZSgic3RvcmUudHJhbnNhY3Rpb24iLCAic2V0
VmVyc2lvblRyYW5zIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMiLCAiWydpbmRl
eE5hbWUnXSIpOwotICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICIxIik7
Ci0gICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7
Ci0gICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4RmFpbCcpIiwg
ImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4
TmFtZScpIiwgInRydWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlLmluZGV4
TmFtZXNbMF0iLCAiaW5kZXhOYW1lIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5pbmRleE5h
bWVzWzFdIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5pbmRleE5hbWVzWzEwMF0iKTsKLSAg
ICBzaG91bGRCZU51bGwoInN0b3JlLmluZGV4TmFtZXMuaXRlbSgxKSIpOwotICAgIHNob3VsZEJl
TnVsbCgic3RvcmUuaW5kZXhOYW1lcy5pdGVtKDEwMCkiKTsKLSAgICBhZGREYXRhKCk7Ci19Ci0K
LXZhciB0ZXN0RGF0ZSA9IG5ldyBEYXRlKCJBdWd1c3QgMjUsIDE5OTEgMjA6NTc6MDgiKTsKLXZh
ciB0ZXN0RGF0ZUIgPSBuZXcgRGF0ZSgiV2VkIEphbiAwNSAyMDExIDE1OjU0OjQ5Iik7Ci0KLWZ1
bmN0aW9uIGFkZERhdGEoKQotewotICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7Ci0gICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLQotICAgIGRlYnVnKCJUcnkg
dG8gaW5zZXJ0IGRhdGEgd2l0aCBhIERhdGUga2V5OiIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5hZGQoe3g6ICdmb28nfSwgdGVzdERhdGUpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBhZGREYXRlU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkRGF0ZVN1Y2Nlc3MoKQotewotICAgIGRl
YnVnKCJUcnkgdG8gaW5zZXJ0IGEgdmFsdWUgbm90IGhhbmRsZWQgYnkgc3RydWN0dXJlZCBjbG9u
ZToiKTsKLSAgICB0cnkgewotICAgICAgICBkZWJ1Zygic3RvcmUuYWRkKHt4OiAnYmFyJywgeTog
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKX0sICdiYXInKSIpOwotICAgICAgICBz
dG9yZS5hZGQoe3g6ICdiYXInLCB5OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScp
fSwgJ2JhcicpOwotICAgICAgICB0ZXN0RmFpbGVkKCJQYXNzaW5nIGEgRE9NIG5vZGUgYXMgdmFs
dWUgc2hvdWxkIGhhdmUgdGhyb3duLiIpOwotICAgIH0gY2F0Y2ggKGVycikgewotICAgICAgICB0
ZXN0UGFzc2VkKCJFeGNlcHRpb24gdGhyb3duIik7Ci0gICAgICAgIGNvZGUgPSBlcnIuY29kZTsK
LSAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7
Ci0gICAgfQotCi0gICAgZGVidWcoIlRyeSB0byBpbnNlcnQgZGF0YSB3aGVyZSBrZXkgcGF0aCB5
aWVsZHMgYSBEYXRlIGtleToiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRk
KHt4OiB0ZXN0RGF0ZUIsIHk6ICd2YWx1ZSd9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGFkZFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRT
dWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVz
dWx0IiwgImtleSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5z
b3VyY2UuYWRkKHt4OiAnZm9vJ30sICd6enonKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
dW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIo
J2Vycm9yJywgYWRkQWdhaW5GYWlsdXJlLCBmYWxzZSk7Ci19Ci0KLWZ1bmN0aW9uIGFkZEFnYWlu
RmFpbHVyZSgpCi17Ci0gICAgZGVidWcoImFkZEFnYWluRmFpbHVyZSgpOiIpOwotICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
LkNPTlNUUkFJTlRfRVJSIik7Ci0KLSAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVs
dCgpIik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsn
c3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJh
bnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZhciBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpIik7Ci0KLSAgICBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICdzb21ldmFsdWUnfSwgJ3Nv
bWVrZXknKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7eDogJ290
aGVydmFsdWUnfSwgbnVsbCkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKLQotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9y
ZU5hbWUnXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmFyIHN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7eDogbnVsbH0sICd2
YWxpZGtleScpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAg
ICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10s
IHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25h
Ym9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVlc3Qu
YWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIGdldFN1Y2Nlc3MsIHRydWUpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRT
dWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiZ2V0U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC55IiwgInZhbHVlIik7Ci0KLSAgICB2YXIg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGV2ZW50LnRhcmdldC5zb3VyY2UiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KHRlc3REYXRlKSIpOwotICAgIHJlcXVlc3Qu
YWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIGdldFN1Y2Nlc3NEYXRlS2V5LCBmYWxzZSk7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGdldFN1Y2Nlc3NEYXRlS2V5KCkKLXsKLSAgICBkZWJ1ZygiZ2V0U3VjY2Vzc0RhdGVLZXko
KToiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueCIs
ICJmb28iKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoJ2tleScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSByZW1vdmVTdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiByZW1vdmVT
dWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygicmVtb3ZlU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgInRydWUiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5kZWxldGUoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSByZW1v
dmVTdWNjZXNzQnV0RmFsc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSgpCi17Ci0gICAg
ZGVidWcoInJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSgpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0IiwgImZhbHNlIik7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSBldmVudC50YXJnZXQuc291cmNlIik7Ci0KLSAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZh
bGlkIGtleSBpbnRvIHN0b3JlLmdldCgpLiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLmdldCh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsK
LQotICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gc3RvcmUuZGVsZXRlKCku
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlKHt9KSIsICJ3ZWJr
aXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIlBhc3Npbmcg
YW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5hZGQoKS4iKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5hZGQobnVsbCwge30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0
b3JlLnB1dCgpLiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChudWxs
LCB7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIHRl
c3RQcmVDb25kaXRpb25zKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RQcmVDb25kaXRpb25zKCkKLXsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RQcmVDb25kaXRpb25zKCk6Iik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ByZWNvbmRpdGlvbiB2ZXJzaW9u
JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBzdG9yZVdpdGhJbkxp
bmVLZXlzID0gZXZhbEFuZExvZygic3RvcmVXaXRoSW5MaW5lS2V5cyA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZVdpdGhJbkxpbmVLZXlzJywge2tleVBhdGg6ICdrZXknfSkiKTsKLSAgICAg
ICAgc3RvcmVXaXRoT3V0T2ZMaW5lS2V5cyA9IGV2YWxBbmRMb2coInN0b3JlV2l0aE91dE9mTGlu
ZUtleXMgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVXaXRoT3V0SU9mTGluZUtleXMnKSIp
OwotICAgICAgICBzdG9yZVdpdGhJbmRleCA9IGV2YWxBbmRMb2coInN0b3JlV2l0aEluZGV4ID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlV2l0aEluZGV4JykiKTsKLSAgICAgICAgaW5kZXgg
PSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlV2l0aEluZGV4LmNyZWF0ZUluZGV4KCdpbmRleE5h
bWUnLCAnaW5kZXhLZXknKSIpOwotCi0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZGVidWco
IklEQk9iamVjdFN0b3JlLnB1dCgpIik7Ci0gICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3Jl
IHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQuIik7
Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMucHV0
KHtrZXk6IDF9LCAna2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKLQotICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5lIGtl
eXMgYW5kIGhhcyBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgbm90
IHByb3ZpZGVkLiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhP
dXRPZkxpbmVLZXlzLnB1dCh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKLQotICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5
cyBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0
aCB5aWVsZHMgYSB2YWx1ZSBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuIik7Ci0g
ICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMucHV0KHtr
ZXk6IG51bGx9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0g
ICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGJ1dCBubyBr
ZXkgZ2VuZXJhdG9yIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9y
ZSdzIGtleSBwYXRoIGRvZXMgbm90IHlpZWxkIGEgdmFsdWUuIik7Ci0gICAgICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMucHV0KHt9KSIsICJ3ZWJraXRJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCJUaGUga2V5IHBh
cmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBrZXkuIik7
Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91dE9mTGluZUtleXMu
cHV0KHt9LCBudWxsKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwot
Ci0gICAgICAgIGRlYnVnKCJJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVmZXJlbmNpbmcgdGhp
cyBvYmplY3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2YWx1YXRpbmcgdGhl
aXIga2V5IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2YWx1ZSwgYW5kIHRo
YXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZVdpdGhJbmRleC5wdXQoe2luZGV4S2V5OiBudWxsfSwgJ2tleScpIiwgIndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAgICAgZGVidWcoIiIp
OwotICAgICAgICBkZWJ1ZygiSURCT2JqZWN0U3RvcmUuYWRkKCkiKTsKLSAgICAgICAgZGVidWco
IlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSBrZXkgcGFyYW1ldGVy
IHdhcyBwcm92aWRlZC4iKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVX
aXRoSW5MaW5lS2V5cy5hZGQoe2tleTogMX0sICdrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVz
ZXMgb3V0LW9mLWxpbmUga2V5cyBhbmQgaGFzIG5vIGtleSBnZW5lcmF0b3IgYW5kIHRoZSBrZXkg
cGFyYW1ldGVyIHdhcyBub3QgcHJvdmlkZWQuIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlV2l0aE91dE9mTGluZUtleXMuYWRkKHt9KSIsICJ3ZWJraXRJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3Jl
IHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVj
dCBzdG9yZSdzIGtleSBwYXRoIHlpZWxkcyBhIHZhbHVlIGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBh
IHZhbGlkIGtleS4iKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRo
SW5MaW5lS2V5cy5hZGQoe2tleTogbnVsbH0pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7Ci0KLSAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1s
aW5lIGtleXMgYnV0IG5vIGtleSBnZW5lcmF0b3IgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVhdGlu
ZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggZG9lcyBub3QgeWllbGQgYSB2YWx1ZS4iKTsK
LSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQo
e30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAgICAg
ZGVidWcoIlRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZCBidXQgZG9lcyBub3QgY29udGFp
biBhIHZhbGlkIGtleS4iKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVX
aXRoT3V0T2ZMaW5lS2V5cy5hZGQoe30sIG51bGwpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAgICAgZGVidWcoIklmIHRoZXJlIGFyZSBhbnkgaW5kZXhl
cyByZWZlcmVuY2luZyB0aGlzIG9iamVjdCBzdG9yZSB3aG9zZSBrZXkgcGF0aCBpcyBhIHN0cmlu
ZywgZXZhbHVhdGluZyB0aGVpciBrZXkgcGF0aCBvbiB0aGUgdmFsdWUgcGFyYW1ldGVyIHlpZWxk
cyBhIHZhbHVlLCBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuIik7Ci0gICAgICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluZGV4LmFkZCh7aW5kZXhLZXk6IG51
bGx9LCAna2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQot
ICAgICAgICBkb25lKCk7Ci0gICAgfTsKLX0KLQotCi0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWJhc2ljcy5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1iYXNpY3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAxZTM2
ZmEyNmFmNDIxNDQ2NGQxYjcyN2Q1N2FkODNjMTZkNDUwYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1iYXNpY3MuanMKQEAg
LTAsMCArMSwyODAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJ2lkYi13b3JrZXItY29tbW9uLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhl
ZERCJ3Mgd2Via2l0SURCSW5kZXguIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3BlbignaW5kZXgtYmFzaWNzJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oZXZ0
KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lv
bignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rp
bmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBk
ZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLnN0b3JlID0g
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Cisg
ICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRl
eE5hbWUnLCAneCcpIik7CisgICAgc2VsZi5pbmRleE9iamVjdDIgPSBldmFsQW5kTG9nKCJzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lMicsICd5JywgZmFsc2UpIik7CisgICAgc2VsZi5pbmRl
eE9iamVjdDMgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnekluZGV4JywgJ3onLCB0
cnVlKSIpOworICAgIGFkZERhdGEoKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAg
c2hvdWxkQmVUcnVlKCInbmFtZScgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImluZGV4T2JqZWN0Lm5hbWUiLCAiaW5kZXhOYW1lIik7CisgICAgc2hvdWxkQmVU
cnVlKCInb2JqZWN0U3RvcmUnIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJpbmRleE9iamVjdC5vYmplY3RTdG9yZS5uYW1lIiwgInN0b3JlTmFtZSIpOworICAg
IHNob3VsZEJlVHJ1ZSgiJ2tleVBhdGgnIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5rZXlQYXRoIiwgIngiKTsKKyAgICBzaG91bGRCZVRy
dWUoIid1bmlxdWUnIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVUcnVlKCInbXVsdGlF
bnRyeScgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleE9iamVjdC51
bmlxdWUiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleE9iamVjdC5tdWx0aUVudHJ5Iik7Cisg
ICAgc2hvdWxkQmVUcnVlKCInb3BlbktleUN1cnNvcicgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yIiwg
ImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInb3BlbkN1cnNvcicgaW4gaW5kZXhPYmpl
Y3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5vcGVu
Q3Vyc29yIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInZ2V0S2V5JyBpbiBpbmRl
eE9iamVjdCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIGluZGV4T2JqZWN0
LmdldEtleSIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2dldCcgaW4gaW5kZXhP
YmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5n
ZXQiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidjb3VudCcgaW4gaW5kZXhPYmpl
Y3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5jb3Vu
dCIsICJmdW5jdGlvbiIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7
eDogJ3ZhbHVlJywgeTogJ3p6eicsIHo6IDIuNzJ9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGFkZERhdGEyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGREYXRhMihldnQpCit7CisgICAgZXZlbnQgPSBl
dnQ7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4
OiAndmFsdWUyJywgeTogJ3p6ejInLCB6OiAyLjcxLCBmb29iYXI6IDEyfSwgJ2tleTInKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRGF0YTM7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2VsZi5pbmRleE9iamVjdDQgPSBldmFsQW5k
TG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhXaGlsZUFkZElzSW5GbGlnaHQnLCAneCcpIik7
CisgICAgc2VsZi5pbmRleE9iamVjdDUgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXhXaXRoV2VpcmRLZXlQYXRoJywgJ2Zvb2JhcicpIik7Cit9CisKK2Z1bmN0aW9uIGFkZERh
dGEzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICAvLyBBZGQgZGF0YSB3aGljaCBkb2Vz
bid0IGhhdmUgYSBrZXkgaW4gdGhlIHpJbmRleC4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnNDU2J30sICdrZXkzJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGE7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGEoZXZ0KQor
eworICAgIGV2ZW50ID0gZXZ0OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVj
dC5nZXRLZXkoJ3ZhbHVlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERh
dGE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGdldE9iamVjdERhdGEoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdDIuZ2V0S2V5KCd6enonKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTI7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERhdGEy
KGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnRhcmdldC5yZXN1bHQiLCAia2V5Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhPYmplY3QzLmdldCgyLjcxKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2Jq
ZWN0RGF0YTM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERhdGEzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueCIsICJ2YWx1
ZTIiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXQoJ3ZhbHVl
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFGYWlsOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXREYXRh
RmFpbChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0LngiLCAidmFsdWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueSIsICJ6enoiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ2RvZXMgbm90IGV4aXN0JykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGFGYWlsOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERh
dGFGYWlsKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleE9iamVjdC5nZXQoJ2RvZXMgbm90IGV4aXN0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGdldE9iamVjdERhdGE0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRTdWNj
ZXNzQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERhdGE0KGV2dCkKK3sKKyAgICBl
dmVudCA9IGV2dDsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmlu
ZWQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdDQuZ2V0S2V5KCd2
YWx1ZTInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNvcjsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSAgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5LZXlDdXJzb3IoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkyIik7CisKKyAgICBzZWxmLnJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKCkiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3Vyc29yMUNvbnRpbnVl
KGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnNv
dXJjZSIsICJpbmRleE9iamVjdCIpOworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5y
ZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQua2V5IiwgInZhbHVlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAia2V5Iik7CisKKyAgICAvLyBXZSByZS11c2Ug
dGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jb250aW51ZSgpIik7CisgICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFD
b250aW51ZTI7Cit9CisKK2Z1bmN0aW9uIGN1cnNvcjFDb250aW51ZTIoZXZ0KQoreworICAgIGV2
ZW50ID0gZXZ0OworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51
bGwiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5
IiwgInZhbHVlMiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5wcmltYXJ5S2V5IiwgImtleTIiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCBy
ZXF1ZXN0IG9iamVjdC4KKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRp
bnVlKCkiKTsKKyAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlMzsK
K30KKworZnVuY3Rpb24gY3Vyc29yMUNvbnRpbnVlMyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7
CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUz
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1h
cnlLZXkiLCAia2V5MyIpOworCisgICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2Jq
ZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwor
ICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuT2JqZWN0Q3Vyc29yOworfQorCitmdW5j
dGlvbiBvcGVuT2JqZWN0Q3Vyc29yKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91
bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKworICAgIHNlbGYucmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjdXJzb3IyQ29udGludWUoZXZ0
KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuc291cmNl
IiwgImluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5rZXkiLCAidmFsdWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6eiIpOworCisgICAgLy8gV2UgcmUt
dXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJz
b3IyQ29udGludWUyOworfQorCitmdW5jdGlvbiBjdXJzb3IyQ29udGludWUyKGV2dCkKK3sKKyAg
ICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09
PSBudWxsIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0
LmtleSIsICJ2YWx1ZTIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZTIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueSIsICJ6enoyIik7CisKKyAgICAvLyBXZSByZS11
c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNv
cjJDb250aW51ZTM7Cit9CisKK2Z1bmN0aW9uIGN1cnNvcjJDb250aW51ZTMoZXZ0KQoreworICAg
IGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09
IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
a2V5IiwgInZhbHVlMyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC52YWx1ZS54IiwgInZhbHVlMyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgIjQ1NiIpOworCisgICAgLy8gV2UgcmUtdXNl
IHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBsYXN0Owor
fQorCitmdW5jdGlvbiBsYXN0KGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRC
ZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKworICAgIHRyeSB7CisgICAg
ICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gaW5kZXhPYmplY3QuZ2V0KHt9
KS4iKTsKKyAgICAgICAgaW5kZXhPYmplY3QuZ2V0KHt9KTsKKyAgICAgICAgdGVzdEZhaWxlZCgi
Tm8gZXhjZXB0aW9uIHRocm93biIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBh
c3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAg
dHJ5IHsKKyAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBpbmRleE9i
amVjdC5nZXRLZXkoe30pLiIpOworICAgICAgICBpbmRleE9iamVjdC5nZXRLZXkoe30pOworICAg
ICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygp
KTsKKyAgICB9CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmY2My
ZTU3MGExNWVhYjRiNmYwZTk5YmI0YzEyMDEzODM2ZGU3ODgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNz
LmpzCkBAIC0wLDAgKzEsMzM5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdpZGItd29ya2VyLWNvbW1vbi5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9m
IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3Jl
LWJhc2ljcycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCJvcGVuU3Vj
Y2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRl
YnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGRlYnVnKCJjcmVhdGVP
YmplY3RTdG9yZSgpOiIpOworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHZhciBzdG9yZU5h
bWVzID0gZXZhbEFuZExvZygic3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMiKTsKKwor
ICAgIHNob3VsZEJlVHJ1ZSgiJ25hbWUnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVUcnVlKCIn
a2V5UGF0aCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZVRydWUoIidpbmRleE5hbWVzJyBpbiBz
dG9yZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ3RyYW5zYWN0aW9uJyBpbiBzdG9yZSIpOworICAg
IHNob3VsZEJlVHJ1ZSgiJ3B1dCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInR5cGVvZiBzdG9yZS5wdXQiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidh
ZGQnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUu
YWRkIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInZGVsZXRlJyBpbiBzdG9yZSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmRlbGV0ZSIsICJmdW5j
dGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2dldCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5nZXQiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91
bGRCZVRydWUoIidjbGVhcicgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InR5cGVvZiBzdG9yZS5jbGVhciIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ29w
ZW5DdXJzb3InIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Yg
c3RvcmUub3BlbkN1cnNvciIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2NyZWF0
ZUluZGV4JyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0
b3JlLmNyZWF0ZUluZGV4IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInaW5kZXgn
IGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuaW5k
ZXgiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidkZWxldGVJbmRleCcgaW4gc3Rv
cmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5kZWxldGVJbmRl
eCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2NvdW50JyBpbiBzdG9yZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmNvdW50IiwgImZ1bmN0aW9u
Iik7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlLm5hbWUiLCAic3RvcmVOYW1l
Iik7CisgICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5rZXlQYXRoIik7CisgICAgc2hvdWxkQmUoInN0
b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlTmFtZScpIiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgi
c3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIC8vIEZJWE1FOiB0ZXN0IGFsbCBvZiBvYmpl
Y3Qgc3RvcmUncyBtZXRob2RzLgorCisgICAgZGVidWcoIkFzayBmb3IgYW4gaW5kZXggdGhhdCBk
b2Vzbid0IGV4aXN0OiIpOworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJpbmRleCA9IHN0b3Jl
LmluZGV4KCdhc2RmJykiKTsKKyAgICAgICAgaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpOwor
ICAgICAgICB0ZXN0RmFpbGVkKCJBc2tpbmcgZm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0
IHNob3VsZCBoYXZlIHRocm93bi4iKTsKKyAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAgdGVz
dFBhc3NlZCgiRXhjZXB0aW9uIHRocm93bi4iKTsKKyAgICAgICAgY29kZSA9IGVyci5jb2RlOwor
ICAgICAgICBzaG91bGRCZSgiY29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
Rk9VTkRfRVJSIik7CisgICAgfQorCisgICAgY3JlYXRlSW5kZXgoKTsKK30KKworZnVuY3Rpb24g
Y3JlYXRlSW5kZXgoKQoreworICAgIGRlYnVnKCJjcmVhdGVJbmRleCgpOiIpOworICAgIHZhciBp
bmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScs
ICd4Jywge3VuaXF1ZTogdHJ1ZX0pIik7IC8vIHRydWUgPT0gdW5pcXVlIHJlcXVpcmVtZW50Lgor
ICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoInN0
b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7CisgICAgaW5kZXggPSBldmFs
QW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIpOworICAgIHNob3VsZEJl
VHJ1ZSgiaW5kZXggIT09IG51bGwiKTsKKyAKKyAgICBkZWJ1ZygiQXNrIGZvciBhbiBpbmRleCB0
aGF0IGRvZXNuJ3QgZXhpc3Q6Iik7CisgICAgdHJ5IHsKKyAgICAgICAgZGVidWcoImluZGV4ID0g
c3RvcmUuaW5kZXgoJ2FzZGYnKSIpOworICAgICAgICBpbmRleCA9IHN0b3JlLmluZGV4KCdhc2Rm
Jyk7CisgICAgICAgIHRlc3RGYWlsZWQoIkFza2luZyBmb3IgYSBzdG9yZSB0aGF0IGRvZXNuJ3Qg
ZXhpc3Qgc2hvdWxkIGhhdmUgdGhyb3duLiIpOworICAgIH0gY2F0Y2ggKGVycikgeworICAgICAg
ICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gdGhyb3duLiIpOworICAgICAgICBjb2RlID0gZXJyLmNv
ZGUKKyAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUiIpOworICAgIH0KKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdFNldFZl
cnNpb25BYm9ydDsKK30KKworZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydCgpCit7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gZmFpbCIpJyk7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbm90aGVySW5kZXg7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFu
b3RoZXJJbmRleChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gZmFpbCIpOworCisgICAgdmFyIHNldFZlcnNp
b25UcmFucyA9IGV2YWxBbmRMb2coInNldFZlcnNpb25UcmFucyA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInNldFZlcnNpb25UcmFucyAhPT0gbnVsbCIpOworICAg
IHNldFZlcnNpb25UcmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7
CisgICAgc2V0VmVyc2lvblRyYW5zLm9uYWJvcnQgPSBjaGVja01ldGFkYXRhOworICAgIHNlbGYu
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHNldFZlcnNpb25UcmFucy5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykiKTsKKyAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICBzZXRWZXJzaW9uVHJhbnMu
YWJvcnQoKTsKK30KKworZnVuY3Rpb24gY2hlY2tNZXRhZGF0YSgpCit7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIm5ldyB2ZXJzaW9uIik7CisgICAgc2hvdWxkQmUo
InN0b3JlLnRyYW5zYWN0aW9uIiwgInNldFZlcnNpb25UcmFucyIpOworICAgIHNob3VsZEJlKCJz
dG9yZS5pbmRleE5hbWVzIiwgIlsnaW5kZXhOYW1lJ10iKTsKKyAgICBzaG91bGRCZSgic3RvcmUu
aW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVz
LmNvbnRhaW5zKCcnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVz
LmNvbnRhaW5zKCdpbmRleEZhaWwnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJzdG9yZS5p
bmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJzdG9yZS5pbmRleE5hbWVzWzBdIiwgImluZGV4TmFtZSIpOworICAgIHNo
b3VsZEJlTnVsbCgic3RvcmUuaW5kZXhOYW1lc1sxXSIpOworICAgIHNob3VsZEJlTnVsbCgic3Rv
cmUuaW5kZXhOYW1lc1sxMDBdIik7CisgICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5pbmRleE5hbWVz
Lml0ZW0oMSkiKTsKKyAgICBzaG91bGRCZU51bGwoInN0b3JlLmluZGV4TmFtZXMuaXRlbSgxMDAp
Iik7CisgICAgYWRkRGF0YSgpOworfQorCit2YXIgdGVzdERhdGUgPSBuZXcgRGF0ZSgiQXVndXN0
IDI1LCAxOTkxIDIwOjU3OjA4Iik7Cit2YXIgdGVzdERhdGVCID0gbmV3IERhdGUoIldlZCBKYW4g
MDUgMjAxMSAxNTo1NDo0OSIpOworCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICB2YXIgdHJh
bnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHNlbGYuc3RvcmUg
PSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KSIpOworCisgICAgZGVidWcoIlRyeSB0byBpbnNlcnQgZGF0YSB3aXRoIGEgRGF0ZSBrZXk6Iik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ2Zvbyd9LCB0ZXN0RGF0
ZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGVTdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRE
YXRlU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIlRyeSB0byBp
bnNlcnQgYSB2YWx1ZSBub3QgaGFuZGxlZCBieSBzdHJ1Y3R1cmVkIGNsb25lOiIpOworICAgIHRy
eSB7CisgICAgICAgIGRlYnVnKCJzdG9yZS5hZGQoe3g6ICdiYXInLCB5OiBzZWxmfSwgJ2Jhcicp
Iik7CisgICAgICAgIHN0b3JlLmFkZCh7eDogJ2JhcicsIHk6IHNlbGZ9LCAnYmFyJyk7CisgICAg
ICAgIHRlc3RGYWlsZWQoIlBhc3NpbmcgYSBET00gbm9kZSBhcyB2YWx1ZSBzaG91bGQgaGF2ZSB0
aHJvd24uIik7CisgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkV4Y2Vw
dGlvbiB0aHJvd24iKTsKKyAgICAgICAgY29kZSA9IGVyci5jb2RlOworICAgICAgICAvLyBGSVhN
RTogV2hlbiB3ZSBtb3ZlIHRvIERPTTQtc3R5bGUgZXhjZXB0aW9ucyB0aGlzIHNob3VsZCBsb29r
IGZvciB0aGUKKyAgICAgICAgLy8gbmFtZSAiRGF0YUNsb25lRXJyb3IiLgorICAgICAgICBzaG91
bGRCZSgiY29kZSIsICIyNSIpOworICAgIH0KKworICAgIGRlYnVnKCJUcnkgdG8gaW5zZXJ0IGRh
dGEgd2hlcmUga2V5IHBhdGggeWllbGRzIGEgRGF0ZSBrZXk6Iik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmFkZCh7eDogdGVzdERhdGVCLCB5OiAndmFsdWUnfSwgJ2tleScpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRTdWNjZXNzKGV2
dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiYWRkU3VjY2VzcygpOiIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkiKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmFkZCh7eDogJ2Zv
byd9LCAnenp6JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNz
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGFkZEFnYWlu
RmFpbHVyZSwgZmFsc2UpOworfQorCitmdW5jdGlvbiBhZGRBZ2FpbkZhaWx1cmUoZXZ0KQorewor
ICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCJhZGRBZ2FpbkZhaWx1cmUoKToiKTsKKyAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5DT05TVFJBSU5UX0VSUiIpOworCisgICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERl
ZmF1bHQoKSIpOworCisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlv
bihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2YXIg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOworCisgICAgZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAnc29tZXZhbHVlJ30s
ICdzb21la2V5JykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6
ICdvdGhlcnZhbHVlJ30sIG51bGwpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSIik7CisKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsn
c3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJh
bnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZhciBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6IG51bGx9
LCAndmFsaWRrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwor
CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFt
ZSddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9u
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1
ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBnZXRTdWNjZXNzLCB0cnVlKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Z2V0U3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoImdldFN1Y2Nl
c3MoKToiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
eSIsICJ2YWx1ZSIpOworCisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBldmVu
dC50YXJnZXQuc291cmNlIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCh0
ZXN0RGF0ZSkiKTsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBnZXRT
dWNjZXNzRGF0ZUtleSwgZmFsc2UpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRTdWNjZXNzRGF0ZUtleShldnQpCit7Cisg
ICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoImdldFN1Y2Nlc3NEYXRlS2V5KCk6Iik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LngiLCAiZm9vIik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKCdrZXknKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gcmVtb3ZlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcmVtb3ZlU3VjY2VzcyhldnQp
Cit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoInJlbW92ZVN1Y2Nlc3MoKToiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0cnVlIik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKCdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gcmVtb3ZlU3VjY2Vzc0J1dEZhbHNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiByZW1vdmVTdWNjZXNzQnV0RmFsc2Uo
ZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCJyZW1vdmVTdWNjZXNzQnV0RmFs
c2UoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJmYWxzZSIpOwor
ICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZSIp
OworCisgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5nZXQoKS4i
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoe30pIiwgIndlYmtpdElE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiUGFzc2luZyBhbiBp
bnZhbGlkIGtleSBpbnRvIHN0b3JlLmRlbGV0ZSgpLiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlLmRlbGV0ZSh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKKworICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gc3RvcmUu
YWRkKCkuIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKG51bGwsIHt9
KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWco
IlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5wdXQoKS4iKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQobnVsbCwge30pIiwgIndlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICB0ZXN0UHJlQ29uZGl0aW9ucygpOworfQorCitm
dW5jdGlvbiB0ZXN0UHJlQ29uZGl0aW9ucygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJ0ZXN0UHJlQ29uZGl0aW9ucygpOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5z
ZXRWZXJzaW9uKCdwcmVjb25kaXRpb24gdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgc3RvcmVXaXRoSW5MaW5lS2V5cyA9IGV2YWxBbmRMb2coInN0b3Jl
V2l0aEluTGluZUtleXMgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVXaXRoSW5MaW5lS2V5
cycsIHtrZXlQYXRoOiAna2V5J30pIik7CisgICAgICAgIHN0b3JlV2l0aE91dE9mTGluZUtleXMg
PSBldmFsQW5kTG9nKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlV2l0aE91dElPZkxpbmVLZXlzJykiKTsKKyAgICAgICAgc3RvcmVXaXRoSW5kZXgg
PSBldmFsQW5kTG9nKCJzdG9yZVdpdGhJbmRleCA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZVdpdGhJbmRleCcpIik7CisgICAgICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZVdpdGhJbmRleC5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ2luZGV4S2V5JykiKTsKKworICAg
ICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJJREJPYmplY3RTdG9yZS5wdXQoKSIpOwor
ICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhl
IGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkLiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7a2V5OiAxfSwgJ2tleScpIiwgIndlYmtp
dElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIlRoZSBv
YmplY3Qgc3RvcmUgdXNlcyBvdXQtb2YtbGluZSBrZXlzIGFuZCBoYXMgbm8ga2V5IGdlbmVyYXRv
ciBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIG5vdCBwcm92aWRlZC4iKTsKKyAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5wdXQoe30pIiwgIndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIlRo
ZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVh
dGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggeWllbGRzIGEgdmFsdWUgYW5kIHRoYXQg
dmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7a2V5OiBudWxsfSkiLCAid2Via2l0SURCRGF0
YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBz
dG9yZSB1c2VzIGluLWxpbmUga2V5cyBidXQgbm8ga2V5IGdlbmVyYXRvciBhbmQgdGhlIHJlc3Vs
dCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCBkb2VzIG5vdCB5aWVs
ZCBhIHZhbHVlLiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJ
bkxpbmVLZXlzLnB1dCh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKKworICAgICAgICBkZWJ1ZygiVGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkIGJ1dCBk
b2VzIG5vdCBjb250YWluIGEgdmFsaWQga2V5LiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLnB1dCh7fSwgbnVsbCkiLCAid2Via2l0SURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1ZygiSWYgdGhlcmUg
YXJlIGFueSBpbmRleGVzIHJlZmVyZW5jaW5nIHRoaXMgb2JqZWN0IHN0b3JlIHdob3NlIGtleSBw
YXRoIGlzIGEgc3RyaW5nLCBldmFsdWF0aW5nIHRoZWlyIGtleSBwYXRoIG9uIHRoZSB2YWx1ZSBw
YXJhbWV0ZXIgeWllbGRzIGEgdmFsdWUsIGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBhIHZhbGlkIGtl
eS4iKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5kZXgucHV0
KHtpbmRleEtleTogbnVsbH0sICdrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIklEQk9iamVj
dFN0b3JlLmFkZCgpIik7CisgICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4t
bGluZSBrZXlzIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQuIik7CisgICAgICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMuYWRkKHtrZXk6IDF9
LCAna2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAg
ICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5lIGtleXMgYW5kIGhh
cyBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgbm90IHByb3ZpZGVk
LiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhPdXRPZkxpbmVL
ZXlzLmFkZCh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKwor
ICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhl
IHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCB5aWVsZHMg
YSB2YWx1ZSBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuIik7CisgICAgICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMuYWRkKHtrZXk6IG51bGx9
KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAgIGRl
YnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGJ1dCBubyBrZXkgZ2VuZXJh
dG9yIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9yZSdzIGtleSBw
YXRoIGRvZXMgbm90IHlpZWxkIGEgdmFsdWUuIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlV2l0aEluTGluZUtleXMuYWRkKHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAgIGRlYnVnKCJUaGUga2V5IHBhcmFtZXRlciB3
YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBrZXkuIik7CisgICAgICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91dE9mTGluZUtleXMuYWRkKHt9LCBu
dWxsKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAg
IGRlYnVnKCJJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVmZXJlbmNpbmcgdGhpcyBvYmplY3Qg
c3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2YWx1YXRpbmcgdGhlaXIga2V5IHBh
dGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2YWx1ZSwgYW5kIHRoYXQgdmFsdWUg
aXMgbm90IGEgdmFsaWQga2V5LiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJz
dG9yZVdpdGhJbmRleC5hZGQoe2luZGV4S2V5OiBudWxsfSwgJ2tleScpIiwgIndlYmtpdElEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgfTsKK30KKwordmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCit0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125712</attachid>
            <date>2012-02-06 14:47:55 -0800</date>
            <delta_ts>2012-02-06 17:39:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77805-20120206144753.patch</filename>
            <type>text/plain</type>
            <size>67216</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODUzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjJmN2UxOGU2MWViYmE2MDkxM2Q1
Y2RjNDg5Zjg5NDVkZTI4ZWNiYy4uNjllNWViMzdmNTUxMDllMGYzMDVmZDVmNjVkNmQ5NjllZjQz
M2IyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAyLTA2ICBEYXZpZCBHcm9nYW4gIDxk
Z3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb3J0IHNvbWUgaW5kZXhlZGRiIGxheW91
dCB0ZXN0cyB0byB3b3JrZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzc4MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy13b3JrZXJzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNz
LXdvcmtlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgt
YmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFz
aWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1iYXNpY3MuanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sLgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChzZXRWZXJzaW9uKToKKyAgICAgICAgKGRlbGV0ZUV4aXN0aW5n
KToKKyAgICAgICAgKGFkZERhdGEpOgorICAgICAgICAoYWRkRGF0YTIpOgorICAgICAgICAoYWRk
RGF0YTMpOgorICAgICAgICAoZ2V0RGF0YSk6CisgICAgICAgIChnZXRPYmplY3REYXRhKToKKyAg
ICAgICAgKGdldE9iamVjdERhdGEyKToKKyAgICAgICAgKGdldE9iamVjdERhdGEzKToKKyAgICAg
ICAgKGdldERhdGFGYWlsKToKKyAgICAgICAgKGdldE9iamVjdERhdGFGYWlsKToKKyAgICAgICAg
KGdldE9iamVjdERhdGE0KToKKyAgICAgICAgKG9wZW5LZXlDdXJzb3IpOgorICAgICAgICAoY3Vy
c29yMUNvbnRpbnVlKToKKyAgICAgICAgKGN1cnNvcjFDb250aW51ZTIpOgorICAgICAgICAoY3Vy
c29yMUNvbnRpbnVlMyk6CisgICAgICAgIChvcGVuT2JqZWN0Q3Vyc29yKToKKyAgICAgICAgKGN1
cnNvcjJDb250aW51ZSk6CisgICAgICAgIChjdXJzb3IyQ29udGludWUyKToKKyAgICAgICAgKGN1
cnNvcjJDb250aW51ZTMpOgorICAgICAgICAobGFzdC50cnkuZ2V0IHRlc3RGYWlsZWQpOgorICAg
ICAgICAobGFzdCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVj
dHN0b3JlLWJhc2ljcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9w
ZW5TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0
ZUluZGV4KToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uQWJvcnQpOgorICAgICAgICAoY3JlYXRl
QW5vdGhlckluZGV4KToKKyAgICAgICAgKGNoZWNrTWV0YWRhdGEpOgorICAgICAgICAoYWRkRGF0
YSk6CisgICAgICAgIChhZGREYXRlU3VjY2Vzcyk6CisgICAgICAgIChhZGRTdWNjZXNzKToKKyAg
ICAgICAgKGFkZEFnYWluRmFpbHVyZSk6CisgICAgICAgIChnZXRTdWNjZXNzKToKKyAgICAgICAg
KGdldFN1Y2Nlc3NEYXRlS2V5KToKKyAgICAgICAgKHJlbW92ZVN1Y2Nlc3MpOgorICAgICAgICAo
cmVtb3ZlU3VjY2Vzc0J1dEZhbHNlKToKKyAgICAgICAgKHRlc3RQcmVDb25kaXRpb25zLnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RQcmVDb25kaXRpb25zKToKKwogMjAxMi0wMi0w
NiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIGh0dHAvdGVzdHMv
c2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLXBsdWdpbi1pbi1pZnJhbWUuaHRtbCBpcyBm
bGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFz
aWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMDJlMGVlMjc5
MWJhNGVlZTFmNzEyOGU4N2NlZTRjMmFmYTlhZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw5OCBAQAorW1dvcmtlcl0gVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidz
IHdlYmtpdElEQkluZGV4LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU3RhcnRp
bmcgd29ya2VyOiByZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpzCitbV29ya2VyXSB3ZWJraXRJbmRl
eGVkREIub3BlbignaW5kZXgtYmFzaWNzJykKK1tXb3JrZXJdIGRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdAorW1dvcmtlcl0gZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQorW1dvcmtlcl0gc2V0
VmVyc2lvblN1Y2Nlc3MoKToKK1tXb3JrZXJdIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdAor
UEFTUyBbV29ya2VyXSB0cmFucyAhPT0gbnVsbCBpcyB0cnVlCitbV29ya2VyXSBEZWxldGVkIGFs
bCBvYmplY3Qgc3RvcmVzLgorW1dvcmtlcl0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScsIG51bGwpCitbV29ya2VyXSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnKQor
W1dvcmtlcl0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZTInLCAneScsIHt1bmlxdWU6IGZh
bHNlfSkKK1tXb3JrZXJdIHN0b3JlLmNyZWF0ZUluZGV4KCd6SW5kZXgnLCAneicsIHt1bmlxdWU6
IHRydWV9KQorUEFTUyBbV29ya2VyXSAnbmFtZScgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFT
UyBbV29ya2VyXSBpbmRleE9iamVjdC5uYW1lIGlzICJpbmRleE5hbWUiCitQQVNTIFtXb3JrZXJd
ICdvYmplY3RTdG9yZScgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSBpbmRl
eE9iamVjdC5vYmplY3RTdG9yZS5uYW1lIGlzICJzdG9yZU5hbWUiCitQQVNTIFtXb3JrZXJdICdr
ZXlQYXRoJyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGluZGV4T2JqZWN0
LmtleVBhdGggaXMgIngiCitQQVNTIFtXb3JrZXJdICd1bmlxdWUnIGluIGluZGV4T2JqZWN0IGlz
IHRydWUKK1BBU1MgW1dvcmtlcl0gJ211bHRpRW50cnknIGluIGluZGV4T2JqZWN0IGlzIHRydWUK
K1BBU1MgW1dvcmtlcl0gaW5kZXhPYmplY3QudW5pcXVlIGlzIGZhbHNlCitQQVNTIFtXb3JrZXJd
IGluZGV4T2JqZWN0Lm11bHRpRW50cnkgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gJ29wZW5LZXlD
dXJzb3InIGluIGluZGV4T2JqZWN0IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIGluZGV4
T2JqZWN0Lm9wZW5LZXlDdXJzb3IgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnb3BlbkN1
cnNvcicgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSB0eXBlb2YgaW5kZXhP
YmplY3Qub3BlbkN1cnNvciBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdnZXRLZXknIGlu
IGluZGV4T2JqZWN0IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIGluZGV4T2JqZWN0Lmdl
dEtleSBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJdICdnZXQnIGluIGluZGV4T2JqZWN0IGlz
IHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIGluZGV4T2JqZWN0LmdldCBpcyAiZnVuY3Rpb24i
CitQQVNTIFtXb3JrZXJdICdjb3VudCcgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyBbV29y
a2VyXSB0eXBlb2YgaW5kZXhPYmplY3QuY291bnQgaXMgImZ1bmN0aW9uIgorW1dvcmtlcl0gc3Rv
cmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6JywgejogMi43Mn0sICdrZXknKQorW1dvcmtlcl0g
ZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6MicsIHo6IDIuNzEs
IGZvb2JhcjogMTJ9LCAna2V5MicpCitbV29ya2VyXSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhX
aGlsZUFkZElzSW5GbGlnaHQnLCAneCcpCitbV29ya2VyXSBzdG9yZS5jcmVhdGVJbmRleCgnaW5k
ZXhXaXRoV2VpcmRLZXlQYXRoJywgJ2Zvb2JhcicpCitbV29ya2VyXSBldmVudC50YXJnZXQuc291
cmNlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICc0NTYnfSwgJ2tleTMnKQorW1dvcmtlcl0gaW5kZXhP
YmplY3QuZ2V0S2V5KCd2YWx1ZScpCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQg
aXMgImtleSIKK1tXb3JrZXJdIGluZGV4T2JqZWN0Mi5nZXRLZXkoJ3p6eicpCitQQVNTIFtXb3Jr
ZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgImtleSIKK1tXb3JrZXJdIGluZGV4T2JqZWN0My5n
ZXQoMi43MSkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC54IGlzICJ2YWx1ZTIi
CitbV29ya2VyXSBpbmRleE9iamVjdC5nZXQoJ3ZhbHVlJykKK1BBU1MgW1dvcmtlcl0gZXZlbnQu
dGFyZ2V0LnJlc3VsdC54IGlzICJ2YWx1ZSIKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJl
c3VsdC55IGlzICJ6enoiCitbV29ya2VyXSBpbmRleE9iamVjdC5nZXRLZXkoJ2RvZXMgbm90IGV4
aXN0JykKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQKK1tX
b3JrZXJdIGluZGV4T2JqZWN0LmdldCgnZG9lcyBub3QgZXhpc3QnKQorUEFTUyBbV29ya2VyXSBl
dmVudC50YXJnZXQucmVzdWx0IGlzIHVuZGVmaW5lZAorW1dvcmtlcl0gaW5kZXhPYmplY3Q0Lmdl
dEtleSgndmFsdWUyJykKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyAia2V5
MiIKK1tXb3JrZXJdIGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoKQorUEFTUyBbV29ya2VyXSBl
dmVudC50YXJnZXQuc291cmNlIGlzIGluZGV4T2JqZWN0CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRh
cmdldC5yZXN1bHQgPT09IG51bGwgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0
LnJlc3VsdC5rZXkgaXMgInZhbHVlIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0
LnByaW1hcnlLZXkgaXMgImtleSIKK1tXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoKQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIGlzIGZhbHNl
CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQua2V5IGlzICJ2YWx1ZTIiCitQQVNT
IFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSBpcyAia2V5MiIKK1tXb3Jr
ZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKQorUEFTUyBbV29ya2VyXSBldmVudC50
YXJnZXQucmVzdWx0ID09PSBudWxsIGlzIGZhbHNlCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdl
dC5yZXN1bHQua2V5IGlzICJ2YWx1ZTMiCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSBpcyAia2V5MyIKK1tXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoKQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIGlzIHRy
dWUKK1tXb3JrZXJdIGluZGV4T2JqZWN0Lm9wZW5DdXJzb3IoKQorUEFTUyBbV29ya2VyXSBldmVu
dC50YXJnZXQuc291cmNlIGlzIGluZGV4T2JqZWN0CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdl
dC5yZXN1bHQgPT09IG51bGwgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJl
c3VsdC5rZXkgaXMgInZhbHVlIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LnZh
bHVlLnggaXMgInZhbHVlIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LnZhbHVl
LnkgaXMgInp6eiIKK1tXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKQorUEFT
UyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIGlzIGZhbHNlCitQQVNTIFtX
b3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQua2V5IGlzICJ2YWx1ZTIiCitQQVNTIFtXb3JrZXJd
IGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCBpcyAidmFsdWUyIgorUEFTUyBbV29ya2VyXSBl
dmVudC50YXJnZXQucmVzdWx0LnZhbHVlLnkgaXMgInp6ejIiCitbV29ya2VyXSBldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKCkKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCA9
PT0gbnVsbCBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LmtleSBp
cyAidmFsdWUzIgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLnggaXMg
InZhbHVlMyIKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IGlzICI0
NTYiCitbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkKK1BBU1MgW1dvcmtl
cl0gZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCBpcyB0cnVlCitbV29ya2VyXSBQYXNzaW5n
IGFuIGludmFsaWQga2V5IGludG8gaW5kZXhPYmplY3QuZ2V0KHt9KS4KK1BBU1MgW1dvcmtlcl0g
Q2F1Z2h0IGV4Y2VwdGlvbjogRXJyb3I6IERBVEFfRVJSOiBET00gSURCRGF0YWJhc2UgRXhjZXB0
aW9uIDUKK1tXb3JrZXJdIFBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBpbmRleE9iamVjdC5n
ZXRLZXkoe30pLgorUEFTUyBbV29ya2VyXSBDYXVnaHQgZXhjZXB0aW9uOiBFcnJvcjogREFUQV9F
UlI6IERPTSBJREJEYXRhYmFzZSBFeGNlcHRpb24gNQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy13b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4MDAz
NjRmNTk5MDEzZDFjOWM0YmQwZjEyZmUyODU0NDE1YTI1NzQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy5odG1sCkBA
IC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PnN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpzJyk7PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwKaW5kZXggMzFiNmQzYTY0NjQ4ZmVhZTM5MTg5
NDJkNTMyOGQyYzM2ZDdhMWY4MC4uYTI0MTE2ZDZiYmY3ZDAzODY3ZTQ0OTQwOTU4ZjljODliYTFj
MmRjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFz
aWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNz
Lmh0bWwKQEAgLTYsMjY1ICs2LDcgQEAKIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3Mgd2Via2l0SURCSW5kZXguIik7Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
IndlYmtpdEluZGV4ZWREQi5vcGVuKCdpbmRleC1iYXNpY3MnKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRl
YnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHdpbmRvdy50cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJh
bnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgd2luZG93LnN0b3Jl
ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7
Ci0gICAgd2luZG93LmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgo
J2luZGV4TmFtZScsICd4JykiKTsKLSAgICB3aW5kb3cuaW5kZXhPYmplY3QyID0gZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZTInLCAneScsIHt1bmlxdWU6IGZhbHNlfSki
KTsKLSAgICB3aW5kb3cuaW5kZXhPYmplY3QzID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5k
ZXgoJ3pJbmRleCcsICd6Jywge3VuaXF1ZTogdHJ1ZX0pIik7Ci0gICAgYWRkRGF0YSgpOwotfQot
Ci1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICBzaG91bGRCZVRydWUoIiduYW1lJyBpbiBpbmRl
eE9iamVjdCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5kZXhPYmplY3QubmFtZSIs
ICJpbmRleE5hbWUiKTsKLSAgICBzaG91bGRCZVRydWUoIidvYmplY3RTdG9yZScgaW4gaW5kZXhP
YmplY3QiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImluZGV4T2JqZWN0Lm9iamVjdFN0
b3JlLm5hbWUiLCAic3RvcmVOYW1lIik7Ci0gICAgc2hvdWxkQmVUcnVlKCIna2V5UGF0aCcgaW4g
aW5kZXhPYmplY3QiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImluZGV4T2JqZWN0Lmtl
eVBhdGgiLCAieCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ3VuaXF1ZScgaW4gaW5kZXhPYmplY3Qi
KTsKLSAgICBzaG91bGRCZVRydWUoIidtdWx0aUVudHJ5JyBpbiBpbmRleE9iamVjdCIpOwotICAg
IHNob3VsZEJlRmFsc2UoImluZGV4T2JqZWN0LnVuaXF1ZSIpOwotICAgIHNob3VsZEJlRmFsc2Uo
ImluZGV4T2JqZWN0Lm11bHRpRW50cnkiKTsKLSAgICBzaG91bGRCZVRydWUoIidvcGVuS2V5Q3Vy
c29yJyBpbiBpbmRleE9iamVjdCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9m
IGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IiLCAiZnVuY3Rpb24iKTsKLSAgICBzaG91bGRCZVRy
dWUoIidvcGVuQ3Vyc29yJyBpbiBpbmRleE9iamVjdCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygidHlwZW9mIGluZGV4T2JqZWN0Lm9wZW5DdXJzb3IiLCAiZnVuY3Rpb24iKTsKLSAgICBz
aG91bGRCZVRydWUoIidnZXRLZXknIGluIGluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3QuZ2V0S2V5IiwgImZ1bmN0aW9uIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCInZ2V0JyBpbiBpbmRleE9iamVjdCIpOwotICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygidHlwZW9mIGluZGV4T2JqZWN0LmdldCIsICJmdW5jdGlvbiIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgiJ2NvdW50JyBpbiBpbmRleE9iamVjdCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygidHlwZW9mIGluZGV4T2JqZWN0LmNvdW50IiwgImZ1bmN0aW9uIik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6JywgejogMi43
Mn0sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRGF0YTI7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFk
ZERhdGEyKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJj
ZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6MicsIHo6IDIuNzEsIGZvb2JhcjogMTJ9LCAna2V5
MicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGREYXRhMzsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB3aW5kb3cuaW5kZXhPYmplY3Q0
ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4V2hpbGVBZGRJc0luRmxpZ2h0
JywgJ3gnKSIpOwotICAgIHdpbmRvdy5pbmRleE9iamVjdDUgPSBldmFsQW5kTG9nKCJzdG9yZS5j
cmVhdGVJbmRleCgnaW5kZXhXaXRoV2VpcmRLZXlQYXRoJywgJ2Zvb2JhcicpIik7Ci19Ci0KLWZ1
bmN0aW9uIGFkZERhdGEzKCkKLXsKLSAgICAvLyBBZGQgZGF0YSB3aGljaCBkb2Vzbid0IGhhdmUg
YSBrZXkgaW4gdGhlIHpJbmRleC4KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnNDU2J30sICdrZXkzJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGEoKQotewotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ3ZhbHVlJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldE9iamVjdERhdGEoKQotewot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdDIuZ2V0S2V5KCd6enonKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTI7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldE9iamVj
dERhdGEyKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1
bHQiLCAia2V5Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QzLmdl
dCgyLjcxKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTM7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGdldE9iamVjdERhdGEzKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5yZXN1bHQueCIsICJ2YWx1ZTIiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleE9iamVjdC5nZXQoJ3ZhbHVlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERh
dGFGYWlsOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBnZXREYXRhRmFpbCgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0LngiLCAidmFsdWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueSIsICJ6enoiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ2RvZXMgbm90IGV4aXN0JykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGFGYWlsOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldE9iamVjdERh
dGFGYWlsKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmlu
ZWQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXQoJ2RvZXMg
bm90IGV4aXN0JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGE0Owot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGdldE9iamVjdERhdGE0KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJ1bmRlZmluZWQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9i
amVjdDQuZ2V0S2V5KCd2YWx1ZTInKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Blbktl
eUN1cnNvcjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSAgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5LZXlDdXJzb3IoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkyIik7Ci0KLSAgICB3aW5kb3cucmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjdXJzb3IxQ29udGludWUoKQot
ewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuc291cmNlIiwgImluZGV4T2JqZWN0Iik7Ci0g
ICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsK
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSIsICJrZXkiKTsKLQotICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4K
LSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB3
aW5kb3cucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IxQ29udGludWUyOwotfQotCi1mdW5jdGlv
biBjdXJzb3IxQ29udGludWUyKCkKLXsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQu
cmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJn
ZXQucmVzdWx0LmtleSIsICJ2YWx1ZTIiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJrZXkyIik7Ci0KLSAgICAvLyBXZSByZS11
c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCi0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgd2luZG93LnJlcXVlc3Qub25zdWNjZXNzID0gY3Vy
c29yMUNvbnRpbnVlMzsKLX0KLQotZnVuY3Rpb24gY3Vyc29yMUNvbnRpbnVlMygpCi17Ci0gICAg
c2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUzIik7Ci0g
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXki
LCAia2V5MyIpOwotCi0gICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0Lgot
ICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHdp
bmRvdy5yZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5PYmplY3RDdXJzb3I7Ci19Ci0KLWZ1bmN0aW9u
IG9wZW5PYmplY3RDdXJzb3IoKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCA9PT0gbnVsbCIpOwotCi0gICAgd2luZG93LnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eE9iamVjdC5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJD
b250aW51ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gY3Vyc29yMkNvbnRpbnVlKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnNvdXJjZSIsICJpbmRleE9iamVjdCIpOwotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50
LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAidmFsdWUiKTsKLSAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueSIsICJ6enoiKTsKLQot
ICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB3aW5kb3cucmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjdXJzb3IyQ29udGludWUyOwotfQotCi1mdW5jdGlvbiBjdXJzb3IyQ29udGlu
dWUyKCkKLXsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxs
Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIs
ICJ2YWx1ZTIiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1
bHQudmFsdWUueCIsICJ2YWx1ZTIiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQudmFsdWUueSIsICJ6enoyIik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhl
IGxhc3QgcmVxdWVzdCBvYmplY3QuCi0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgpIik7Ci0gICAgd2luZG93LnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNv
bnRpbnVlMzsKLX0KLQotZnVuY3Rpb24gY3Vyc29yMkNvbnRpbnVlMygpCi17Ci0gICAgc2hvdWxk
QmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUzIik7Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAidmFsdWUz
Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVl
LnkiLCAiNDU2Iik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3Qu
Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAg
d2luZG93LnJlcXVlc3Qub25zdWNjZXNzID0gbGFzdDsKLX0KLQotZnVuY3Rpb24gbGFzdCgpCi17
Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0KLSAg
ICB0cnkgewotICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGluZGV4
T2JqZWN0LmdldCh7fSkuIik7Ci0gICAgICAgIGluZGV4T2JqZWN0LmdldCh7fSk7Ci0gICAgICAg
IHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0g
ICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwot
ICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5
IGludG8gaW5kZXhPYmplY3QuZ2V0S2V5KHt9KS4iKTsKLSAgICAgICAgaW5kZXhPYmplY3QuZ2V0
S2V5KHt9KTsKLSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAg
IH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiAr
IGUudG9TdHJpbmcoKSk7Ci0gICAgfQotICAgIGRvbmUoKTsKLX0KLQotdGVzdCgpOwotCi0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9pbmRleC1iYXNpY3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRl
eCA2YTk0MGRlM2M3NDQxYTRhYTljNWIwYmVkMGFhMjZmYmI5YjFmMWYwLi5iMzc5NWI2OWU1ZTMx
NTMyYzYzZjIxOGFjNDcyY2MxMmUxMzU3MzFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQK
QEAgLTc5LDkgKzc5LDkgQEAgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykKIFRyeSB0byBpbnNlcnQgZGF0YSB3aXRoIGEgRGF0ZSBrZXk6CiBzdG9yZS5hZGQoe3g6
ICdmb28nfSwgdGVzdERhdGUpCiBUcnkgdG8gaW5zZXJ0IGEgdmFsdWUgbm90IGhhbmRsZWQgYnkg
c3RydWN0dXJlZCBjbG9uZToKLXN0b3JlLmFkZCh7eDogJ2JhcicsIHk6IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJyl9LCAnYmFyJykKK3N0b3JlLmFkZCh7eDogJ2JhcicsIHk6IHNl
bGZ9LCAnYmFyJykKIFBBU1MgRXhjZXB0aW9uIHRocm93bgotUEFTUyBjb2RlIGlzIERPTUV4Y2Vw
dGlvbi5EQVRBX0NMT05FX0VSUgorUEFTUyBjb2RlIGlzIDI1CiBUcnkgdG8gaW5zZXJ0IGRhdGEg
d2hlcmUga2V5IHBhdGggeWllbGRzIGEgRGF0ZSBrZXk6CiBzdG9yZS5hZGQoe3g6IHRlc3REYXRl
QiwgeTogJ3ZhbHVlJ30sICdrZXknKQogYWRkU3VjY2VzcygpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNz
LXdvcmtlcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmMzRiNThlZTgzMzU1MGIxNzczMjMx
NTEyMTc2NDkxZjFmMzcxMjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxOTkgQEAKK1tXb3JrZXJdIFRlc3QgdGhlIGJhc2ljcyBvZiBJbmRleGVkREIncyBJREJP
YmplY3RTdG9yZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1N0YXJ0aW5nIHdv
cmtlcjogcmVzb3VyY2VzL29iamVjdHN0b3JlLWJhc2ljcy5qcworW1dvcmtlcl0gd2Via2l0SW5k
ZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWJhc2ljcycpCitbV29ya2VyXSBvcGVuU3VjY2Vzcygp
OgorW1dvcmtlcl0gZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitbV29ya2VyXSBkYi5zZXRWZXJz
aW9uKCduZXcgdmVyc2lvbicpCitbV29ya2VyXSBzZXRWZXJzaW9uU3VjY2VzcygpOgorW1dvcmtl
cl0gdHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIFtXb3JrZXJdIHRyYW5zICE9PSBu
dWxsIGlzIHRydWUKK1tXb3JrZXJdIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitbV29ya2Vy
XSBjcmVhdGVPYmplY3RTdG9yZSgpOgorW1dvcmtlcl0gc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmVOYW1lJywgbnVsbCkKK1tXb3JrZXJdIHN0b3JlTmFtZXMgPSBkYi5vYmplY3RT
dG9yZU5hbWVzCitQQVNTIFtXb3JrZXJdICduYW1lJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtX
b3JrZXJdICdrZXlQYXRoJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdICdpbmRleE5h
bWVzJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdICd0cmFuc2FjdGlvbicgaW4gc3Rv
cmUgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSAncHV0JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtX
b3JrZXJdIHR5cGVvZiBzdG9yZS5wdXQgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnYWRk
JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5cGVvZiBzdG9yZS5hZGQgaXMgImZ1
bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnZGVsZXRlJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtX
b3JrZXJdIHR5cGVvZiBzdG9yZS5kZWxldGUgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAn
Z2V0JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHR5cGVvZiBzdG9yZS5nZXQgaXMg
ImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnY2xlYXInIGluIHN0b3JlIGlzIHRydWUKK1BBU1Mg
W1dvcmtlcl0gdHlwZW9mIHN0b3JlLmNsZWFyIGlzICJmdW5jdGlvbiIKK1BBU1MgW1dvcmtlcl0g
J29wZW5DdXJzb3InIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIHN0b3Jl
Lm9wZW5DdXJzb3IgaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnY3JlYXRlSW5kZXgnIGlu
IHN0b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIHN0b3JlLmNyZWF0ZUluZGV4IGlz
ICJmdW5jdGlvbiIKK1BBU1MgW1dvcmtlcl0gJ2luZGV4JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNT
IFtXb3JrZXJdIHR5cGVvZiBzdG9yZS5pbmRleCBpcyAiZnVuY3Rpb24iCitQQVNTIFtXb3JrZXJd
ICdkZWxldGVJbmRleCcgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSB0eXBlb2Ygc3Rv
cmUuZGVsZXRlSW5kZXggaXMgImZ1bmN0aW9uIgorUEFTUyBbV29ya2VyXSAnY291bnQnIGluIHN0
b3JlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdHlwZW9mIHN0b3JlLmNvdW50IGlzICJmdW5jdGlv
biIKK1BBU1MgW1dvcmtlcl0gc3RvcmUubmFtZSBpcyAic3RvcmVOYW1lIgorUEFTUyBbV29ya2Vy
XSBzdG9yZS5rZXlQYXRoIGlzIG51bGwKK1BBU1MgW1dvcmtlcl0gc3RvcmVOYW1lcy5jb250YWlu
cygnc3RvcmVOYW1lJykgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSBzdG9yZU5hbWVzLmxlbmd0aCBp
cyAxCitbV29ya2VyXSBBc2sgZm9yIGFuIGluZGV4IHRoYXQgZG9lc24ndCBleGlzdDoKK1tXb3Jr
ZXJdIGluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24g
dGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PVF9GT1VORF9FUlIKK1tXb3JrZXJdIGNyZWF0ZUluZGV4KCk6CitbV29ya2VyXSBpbmRleCA9
IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcsIHt1bmlxdWU6IHRydWV9KQorUEFT
UyBbV29ya2VyXSBpbmRleCAhPT0gbnVsbCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHN0b3JlLmlu
ZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIGlzIHRydWUKK1tXb3JrZXJdIGluZGV4ID0g
c3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpCitQQVNTIFtXb3JrZXJdIGluZGV4ICE9PSBudWxsIGlz
IHRydWUKK1tXb3JrZXJdIEFzayBmb3IgYW4gaW5kZXggdGhhdCBkb2Vzbid0IGV4aXN0OgorW1dv
cmtlcl0gaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlv
biB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uTk9UX0ZPVU5EX0VSUgorW1dvcmtlcl0gZGIuc2V0VmVyc2lvbigidmVyc2lvbiBmYWlsIikK
K1BBU1MgW1dvcmtlcl0gZGIudmVyc2lvbiBpcyAidmVyc2lvbiBmYWlsIgorW1dvcmtlcl0gc2V0
VmVyc2lvblRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBbV29ya2VyXSBzZXRWZXJz
aW9uVHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorW1dvcmtlcl0gc3RvcmUgPSBzZXRWZXJzaW9uVHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitbV29ya2VyXSBpbmRleCA9IHN0b3JlLmNyZWF0
ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpCitQQVNTIFtXb3JrZXJdIGRiLnZlcnNpb24gaXMgIm5l
dyB2ZXJzaW9uIgorUEFTUyBbV29ya2VyXSBzdG9yZS50cmFuc2FjdGlvbiBpcyBzZXRWZXJzaW9u
VHJhbnMKK1BBU1MgW1dvcmtlcl0gc3RvcmUuaW5kZXhOYW1lcyBpcyBbJ2luZGV4TmFtZSddCitQ
QVNTIFtXb3JrZXJdIHN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDEKK1BBU1MgW1dvcmtlcl0g
c3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnJykgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gc3Rv
cmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhGYWlsJykgaXMgZmFsc2UKK1BBU1MgW1dvcmtl
cl0gc3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykgaXMgdHJ1ZQorUEFTUyBb
V29ya2VyXSBzdG9yZS5pbmRleE5hbWVzWzBdIGlzICJpbmRleE5hbWUiCitQQVNTIFtXb3JrZXJd
IHN0b3JlLmluZGV4TmFtZXNbMV0gaXMgbnVsbAorUEFTUyBbV29ya2VyXSBzdG9yZS5pbmRleE5h
bWVzWzEwMF0gaXMgbnVsbAorUEFTUyBbV29ya2VyXSBzdG9yZS5pbmRleE5hbWVzLml0ZW0oMSkg
aXMgbnVsbAorUEFTUyBbV29ya2VyXSBzdG9yZS5pbmRleE5hbWVzLml0ZW0oMTAwKSBpcyBudWxs
CitbV29ya2VyXSB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdl
YmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitbV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorW1dvcmtlcl0gVHJ5IHRvIGluc2VydCBkYXRh
IHdpdGggYSBEYXRlIGtleToKK1tXb3JrZXJdIHN0b3JlLmFkZCh7eDogJ2Zvbyd9LCB0ZXN0RGF0
ZSkKK1tXb3JrZXJdIFRyeSB0byBpbnNlcnQgYSB2YWx1ZSBub3QgaGFuZGxlZCBieSBzdHJ1Y3R1
cmVkIGNsb25lOgorW1dvcmtlcl0gc3RvcmUuYWRkKHt4OiAnYmFyJywgeTogc2VsZn0sICdiYXIn
KQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gdGhyb3duCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMg
MjUKK1tXb3JrZXJdIFRyeSB0byBpbnNlcnQgZGF0YSB3aGVyZSBrZXkgcGF0aCB5aWVsZHMgYSBE
YXRlIGtleToKK1tXb3JrZXJdIHN0b3JlLmFkZCh7eDogdGVzdERhdGVCLCB5OiAndmFsdWUnfSwg
J2tleScpCitbV29ya2VyXSBhZGRTdWNjZXNzKCk6CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdl
dC5yZXN1bHQgaXMgImtleSIKK1tXb3JrZXJdIGV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAn
Zm9vJ30sICd6enonKQorW1dvcmtlcl0gYWRkQWdhaW5GYWlsdXJlKCk6CitQQVNTIFtXb3JrZXJd
IGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uQ09O
U1RSQUlOVF9FUlIKK1tXb3JrZXJdIGV2ZW50LnByZXZlbnREZWZhdWx0KCkKK1tXb3JrZXJdIGRi
LnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUpCitbV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KQorW1dvcmtlcl0gc3RvcmUuYWRkKHt4OiAnc29tZXZhbHVlJ30sICdzb21la2V5JykKK1tXb3Jr
ZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5hZGQoe3g6ICdvdGhlcnZhbHVlJ30s
IG51bGwpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2Vy
XSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKQorW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykKK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5hZGQoe3g6IG51bGx9
LCAndmFsaWRrZXknKQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1Mg
W1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorW1dv
cmtlcl0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkKK1tXb3JrZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpCitbV29ya2VyXSBzdG9yZS5nZXQoJ2tleScpCitbV29ya2VyXSBnZXRTdWNjZXNz
KCk6CitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQueSBpcyAidmFsdWUiCitbV29y
a2VyXSBzdG9yZSA9IGV2ZW50LnRhcmdldC5zb3VyY2UKK1tXb3JrZXJdIHN0b3JlLmdldCh0ZXN0
RGF0ZSkKK1tXb3JrZXJdIGdldFN1Y2Nlc3NEYXRlS2V5KCk6CitQQVNTIFtXb3JrZXJdIGV2ZW50
LnRhcmdldC5yZXN1bHQueCBpcyAiZm9vIgorW1dvcmtlcl0gc3RvcmUuZGVsZXRlKCdrZXknKQor
W1dvcmtlcl0gcmVtb3ZlU3VjY2VzcygpOgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVz
dWx0IGlzIHRydWUKK1tXb3JrZXJdIHN0b3JlLmRlbGV0ZSgna2V5JykKK1tXb3JrZXJdIHJlbW92
ZVN1Y2Nlc3NCdXRGYWxzZSgpOgorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlz
IGZhbHNlCitbV29ya2VyXSBzdG9yZSA9IGV2ZW50LnRhcmdldC5zb3VyY2UKK1tXb3JrZXJdIFBh
c3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5nZXQoKS4KK1tXb3JrZXJdIEV4cGVjdGlu
ZyBleGNlcHRpb24gZnJvbSBzdG9yZS5nZXQoe30pCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3
YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSCitbV29ya2VyXSBQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gc3RvcmUu
ZGVsZXRlKCkuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZGVsZXRl
KHt9KQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0g
Y29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorW1dvcmtlcl0gUGFz
c2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmFkZCgpLgorW1dvcmtlcl0gRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmFkZChudWxsLCB7fSkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0
aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIKK1tXb3JrZXJdIFBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBz
dG9yZS5wdXQoKS4KK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5wdXQo
bnVsbCwge30pCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29y
a2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2Vy
XSAKK1tXb3JrZXJdIHRlc3RQcmVDb25kaXRpb25zKCk6CitbV29ya2VyXSBkYi5zZXRWZXJzaW9u
KCdwcmVjb25kaXRpb24gdmVyc2lvbicpCitbV29ya2VyXSBzdG9yZVdpdGhJbkxpbmVLZXlzID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlV2l0aEluTGluZUtleXMnLCB7a2V5UGF0aDogJ2tl
eSd9KQorW1dvcmtlcl0gc3RvcmVXaXRoT3V0T2ZMaW5lS2V5cyA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZVdpdGhPdXRJT2ZMaW5lS2V5cycpCitbV29ya2VyXSBzdG9yZVdpdGhJbmRleCA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhJbmRleCcpCitbV29ya2VyXSBpbmRleCA9
IHN0b3JlV2l0aEluZGV4LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnaW5kZXhLZXknKQorW1dv
cmtlcl0gCitbV29ya2VyXSBJREJPYmplY3RTdG9yZS5wdXQoKQorW1dvcmtlcl0gVGhlIG9iamVj
dCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3Zp
ZGVkLgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aEluTGluZUtl
eXMucHV0KHtrZXk6IDF9LCAna2V5JykKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIKK1tXb3JrZXJdIFRoZSBvYmplY3Qgc3RvcmUgdXNlcyBvdXQtb2YtbGluZSBrZXlzIGFu
ZCBoYXMgbm8ga2V5IGdlbmVyYXRvciBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIG5vdCBwcm92
aWRlZC4KK1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhPdXRPZkxp
bmVLZXlzLnB1dCh7fSkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNT
IFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1tX
b3JrZXJdIFRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSByZXN1bHQg
b2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggeWllbGRzIGEgdmFsdWUg
YW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aEluTGluZUtleXMucHV0KHtrZXk6IG51bGx9KQorUEFTUyBb
V29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJr
aXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorW1dvcmtlcl0gVGhlIG9iamVjdCBzdG9y
ZSB1c2VzIGluLWxpbmUga2V5cyBidXQgbm8ga2V5IGdlbmVyYXRvciBhbmQgdGhlIHJlc3VsdCBv
ZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCBkb2VzIG5vdCB5aWVsZCBh
IHZhbHVlLgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aEluTGlu
ZUtleXMucHV0KHt9KQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1Mg
W1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorW1dv
cmtlcl0gVGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkIGJ1dCBkb2VzIG5vdCBjb250YWlu
IGEgdmFsaWQga2V5LgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0
aE91dE9mTGluZUtleXMucHV0KHt9LCBudWxsKQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUgorW1dvcmtlcl0gSWYgdGhlcmUgYXJlIGFueSBpbmRleGVzIHJlZmVyZW5jaW5n
IHRoaXMgb2JqZWN0IHN0b3JlIHdob3NlIGtleSBwYXRoIGlzIGEgc3RyaW5nLCBldmFsdWF0aW5n
IHRoZWlyIGtleSBwYXRoIG9uIHRoZSB2YWx1ZSBwYXJhbWV0ZXIgeWllbGRzIGEgdmFsdWUsIGFu
ZCB0aGF0IHZhbHVlIGlzIG5vdCBhIHZhbGlkIGtleS4KK1tXb3JrZXJdIEV4cGVjdGluZyBleGNl
cHRpb24gZnJvbSBzdG9yZVdpdGhJbmRleC5wdXQoe2luZGV4S2V5OiBudWxsfSwgJ2tleScpCitQ
QVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlz
IHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSAKK1tXb3JrZXJd
IElEQk9iamVjdFN0b3JlLmFkZCgpCitbV29ya2VyXSBUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4t
bGluZSBrZXlzIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQuCitbV29ya2VyXSBF
eHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQoe2tleTogMX0s
ICdrZXknKQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtl
cl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorW1dvcmtlcl0g
VGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5lIGtleXMgYW5kIGhhcyBubyBrZXkgZ2Vu
ZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgbm90IHByb3ZpZGVkLgorW1dvcmtlcl0g
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aE91dE9mTGluZUtleXMuYWRkKHt9KQor
UEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBp
cyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorW1dvcmtlcl0gVGhlIG9iamVj
dCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRo
ZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCB5aWVsZHMgYSB2YWx1ZSBhbmQgdGhhdCB2YWx1ZSBp
cyBub3QgYSB2YWxpZCBrZXkuCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3Rv
cmVXaXRoSW5MaW5lS2V5cy5hZGQoe2tleTogbnVsbH0pCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlv
biB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBr
ZXlzIGJ1dCBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhl
IG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIGRvZXMgbm90IHlpZWxkIGEgdmFsdWUuCitbV29ya2Vy
XSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQoe30pCitQ
QVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlz
IHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29ya2VyXSBUaGUga2V5IHBh
cmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBrZXkuCitb
V29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5h
ZGQoe30sIG51bGwpCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBb
V29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitbV29y
a2VyXSBJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVmZXJlbmNpbmcgdGhpcyBvYmplY3Qgc3Rv
cmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2YWx1YXRpbmcgdGhlaXIga2V5IHBhdGgg
b24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2YWx1ZSwgYW5kIHRoYXQgdmFsdWUgaXMg
bm90IGEgdmFsaWQga2V5LgorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3Jl
V2l0aEluZGV4LmFkZCh7aW5kZXhLZXk6IG51bGx9LCAna2V5JykKK1BBU1MgW1dvcmtlcl0gRXhj
ZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWMy
MTI5NzdlOTlkODk3NGI3ZjY0M2MzM2Q3ZTQ4YmI1ZWM5Y2M0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMu
aHRtbApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD5zdGFydFdvcmtlcigncmVzb3VyY2VzL29iamVjdHN0b3JlLWJh
c2ljcy5qcycpOzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCmlu
ZGV4IDZkOGI1ZmQwNmE2MDIxMTRjN2VkZTY2ZjE2NDkzMjM4ZjdjMWRkNmEuLjRhYjQ0MWVkMGJm
NTIzMjkyNzBlMjlmY2VjMWYwNTYxYTMxYjZhYjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCkBAIC02LDMzOSArNiw3
IEBACiA8Ym9keT4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4
ZWREQidzIElEQk9iamVjdFN0b3JlLiIpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi1mdW5jdGlv
biB0ZXN0KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9w
ZW4oJ29iamVjdHN0b3JlLWJhc2ljcycpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVuU3VjY2Vzcygp
OiIpOwotICAgIHdpbmRvdy5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJz
aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6
Iik7Ci0gICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7Ci0KLSAgICBkZWJ1ZygiY3JlYXRlT2JqZWN0U3RvcmUoKToiKTsKLSAgICB3
aW5kb3cuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHZhciBzdG9yZU5hbWVzID0gZXZhbEFuZExvZygic3Rv
cmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMiKTsKLQotICAgIHNob3VsZEJlVHJ1ZSgiJ25h
bWUnIGluIHN0b3JlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCIna2V5UGF0aCcgaW4gc3RvcmUiKTsK
LSAgICBzaG91bGRCZVRydWUoIidpbmRleE5hbWVzJyBpbiBzdG9yZSIpOwotICAgIHNob3VsZEJl
VHJ1ZSgiJ3RyYW5zYWN0aW9uJyBpbiBzdG9yZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ3B1dCcg
aW4gc3RvcmUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5wdXQi
LCAiZnVuY3Rpb24iKTsKLSAgICBzaG91bGRCZVRydWUoIidhZGQnIGluIHN0b3JlIik7Ci0gICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuYWRkIiwgImZ1bmN0aW9uIik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCInZGVsZXRlJyBpbiBzdG9yZSIpOwotICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygidHlwZW9mIHN0b3JlLmRlbGV0ZSIsICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJl
VHJ1ZSgiJ2dldCcgaW4gc3RvcmUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVv
ZiBzdG9yZS5nZXQiLCAiZnVuY3Rpb24iKTsKLSAgICBzaG91bGRCZVRydWUoIidjbGVhcicgaW4g
c3RvcmUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5jbGVhciIs
ICJmdW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ29wZW5DdXJzb3InIGluIHN0b3JlIik7
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUub3BlbkN1cnNvciIsICJm
dW5jdGlvbiIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2NyZWF0ZUluZGV4JyBpbiBzdG9yZSIpOwot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmNyZWF0ZUluZGV4IiwgImZ1
bmN0aW9uIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInaW5kZXgnIGluIHN0b3JlIik7Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuaW5kZXgiLCAiZnVuY3Rpb24iKTsKLSAg
ICBzaG91bGRCZVRydWUoIidkZWxldGVJbmRleCcgaW4gc3RvcmUiKTsKLSAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5kZWxldGVJbmRleCIsICJmdW5jdGlvbiIpOwotICAg
IHNob3VsZEJlVHJ1ZSgiJ2NvdW50JyBpbiBzdG9yZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygidHlwZW9mIHN0b3JlLmNvdW50IiwgImZ1bmN0aW9uIik7Ci0KLSAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInN0b3JlLm5hbWUiLCAic3RvcmVOYW1lIik7Ci0gICAgc2hvdWxkQmVOdWxs
KCJzdG9yZS5rZXlQYXRoIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ3N0
b3JlTmFtZScpIiwgInRydWUiKTsKLSAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5sZW5ndGgiLCAi
MSIpOwotICAgIC8vIEZJWE1FOiB0ZXN0IGFsbCBvZiBvYmplY3Qgc3RvcmUncyBtZXRob2RzLgot
Ci0gICAgZGVidWcoIkFzayBmb3IgYW4gaW5kZXggdGhhdCBkb2Vzbid0IGV4aXN0OiIpOwotICAg
IHRyeSB7Ci0gICAgICAgIGRlYnVnKCJpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJykiKTsKLSAg
ICAgICAgaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpOwotICAgICAgICB0ZXN0RmFpbGVkKCJB
c2tpbmcgZm9yIGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0IHNob3VsZCBoYXZlIHRocm93bi4i
KTsKLSAgICB9IGNhdGNoIChlcnIpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiRXhjZXB0aW9uIHRo
cm93bi4iKTsKLSAgICAgICAgY29kZSA9IGVyci5jb2RlOwotICAgICAgICBzaG91bGRCZSgiY29k
ZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgfQot
Ci0gICAgY3JlYXRlSW5kZXgoKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlSW5kZXgoKQotewotICAg
IGRlYnVnKCJjcmVhdGVJbmRleCgpOiIpOwotICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImlu
ZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4Jywge3VuaXF1ZTogdHJ1ZX0p
Iik7IC8vIHRydWUgPT0gdW5pcXVlIHJlcXVpcmVtZW50LgotICAgIHNob3VsZEJlVHJ1ZSgiaW5k
ZXggIT09IG51bGwiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFp
bnMoJ2luZGV4TmFtZScpIik7Ci0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmluZGV4KCdpbmRleE5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwi
KTsKLSAKLSAgICBkZWJ1ZygiQXNrIGZvciBhbiBpbmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6Iik7
Ci0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoImluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKSIp
OwotICAgICAgICBpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJyk7Ci0gICAgICAgIHRlc3RGYWls
ZWQoIkFza2luZyBmb3IgYSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgc2hvdWxkIGhhdmUgdGhy
b3duLiIpOwotICAgIH0gY2F0Y2ggKGVycikgewotICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRp
b24gdGhyb3duLiIpOwotICAgICAgICBjb2RlID0gZXJyLmNvZGUKLSAgICAgICAgc2hvdWxkQmUo
ImNvZGUiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAg
IH0KLQotICAgIGNvbW1pdEFuZENvbnRpbnVlKCk7ICAgIAotfQotCi1mdW5jdGlvbiBjb21taXRB
bmRDb250aW51ZSgpCi17Ci0gICAgd2luZG93LnNldFRpbWVvdXQodGVzdFNldFZlcnNpb25BYm9y
dCwgMCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQoKQotewotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGZhaWwiKScpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5vdGhlckluZGV4OwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbm90aGVy
SW5kZXgoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2ZXJz
aW9uIGZhaWwiKTsKLQotICAgIHZhciBzZXRWZXJzaW9uVHJhbnMgPSBldmFsQW5kTG9nKCJzZXRW
ZXJzaW9uVHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJz
ZXRWZXJzaW9uVHJhbnMgIT09IG51bGwiKTsKLSAgICBzZXRWZXJzaW9uVHJhbnMub25jb21wbGV0
ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIHNldFZlcnNpb25UcmFucy5vbmFi
b3J0ID0gY2hlY2tNZXRhZGF0YTsKLSAgICB3aW5kb3cuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHNldFZlcnNpb25UcmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICB2YXIg
aW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwn
LCAneCcpIik7Ci0KLSAgICBzZXRWZXJzaW9uVHJhbnMuYWJvcnQoKTsKLX0KLQotZnVuY3Rpb24g
Y2hlY2tNZXRhZGF0YSgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9u
IiwgIm5ldyB2ZXJzaW9uIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlLnRyYW5zYWN0aW9uIiwgInNl
dFZlcnNpb25UcmFucyIpOwotICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVzIiwgIlsnaW5k
ZXhOYW1lJ10iKTsKLSAgICBzaG91bGRCZSgic3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIp
OwotICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCcnKSIsICJmYWxzZSIp
OwotICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleEZhaWwnKSIs
ICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRl
eE5hbWUnKSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZS5pbmRl
eE5hbWVzWzBdIiwgImluZGV4TmFtZSIpOwotICAgIHNob3VsZEJlTnVsbCgic3RvcmUuaW5kZXhO
YW1lc1sxXSIpOwotICAgIHNob3VsZEJlTnVsbCgic3RvcmUuaW5kZXhOYW1lc1sxMDBdIik7Ci0g
ICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5pbmRleE5hbWVzLml0ZW0oMSkiKTsKLSAgICBzaG91bGRC
ZU51bGwoInN0b3JlLmluZGV4TmFtZXMuaXRlbSgxMDApIik7Ci0gICAgYWRkRGF0YSgpOwotfQot
Ci12YXIgdGVzdERhdGUgPSBuZXcgRGF0ZSgiQXVndXN0IDI1LCAxOTkxIDIwOjU3OjA4Iik7Ci12
YXIgdGVzdERhdGVCID0gbmV3IERhdGUoIldlZCBKYW4gMDUgMjAxMSAxNTo1NDo0OSIpOwotCi1m
dW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOwotICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAgICBkZWJ1ZygiVHJ5
IHRvIGluc2VydCBkYXRhIHdpdGggYSBEYXRlIGtleToiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuYWRkKHt4OiAnZm9vJ30sIHRlc3REYXRlKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYWRkRGF0ZVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZERhdGVTdWNjZXNzKCkKLXsKLSAgICBk
ZWJ1ZygiVHJ5IHRvIGluc2VydCBhIHZhbHVlIG5vdCBoYW5kbGVkIGJ5IHN0cnVjdHVyZWQgY2xv
bmU6Iik7Ci0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoInN0b3JlLmFkZCh7eDogJ2JhcicsIHk6
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyl9LCAnYmFyJykiKTsKLSAgICAgICAg
c3RvcmUuYWRkKHt4OiAnYmFyJywgeTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUn
KX0sICdiYXInKTsKLSAgICAgICAgdGVzdEZhaWxlZCgiUGFzc2luZyBhIERPTSBub2RlIGFzIHZh
bHVlIHNob3VsZCBoYXZlIHRocm93bi4iKTsKLSAgICB9IGNhdGNoIChlcnIpIHsKLSAgICAgICAg
dGVzdFBhc3NlZCgiRXhjZXB0aW9uIHRocm93biIpOwotICAgICAgICBjb2RlID0gZXJyLmNvZGU7
Ci0gICAgICAgIHNob3VsZEJlKCJjb2RlIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIp
OwotICAgIH0KLQotICAgIGRlYnVnKCJUcnkgdG8gaW5zZXJ0IGRhdGEgd2hlcmUga2V5IHBhdGgg
eWllbGRzIGEgRGF0ZSBrZXk6Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCh7eDogdGVzdERhdGVCLCB5OiAndmFsdWUnfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBhZGRTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiYWRk
U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJrZXkiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQu
c291cmNlLmFkZCh7eDogJ2Zvbyd9LCAnenp6JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVy
KCdlcnJvcicsIGFkZEFnYWluRmFpbHVyZSwgZmFsc2UpOwotfQotCi1mdW5jdGlvbiBhZGRBZ2Fp
bkZhaWx1cmUoKQotewotICAgIGRlYnVnKCJhZGRBZ2FpbkZhaWx1cmUoKToiKTsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlv
bi5DT05TVFJBSU5UX0VSUiIpOwotCi0gICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1
bHQoKSIpOwotCi0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihb
J3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2YXIgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOwotCi0gICAgZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAnc29tZXZhbHVlJ30sICdz
b21la2V5JykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6ICdv
dGhlcnZhbHVlJ30sIG51bGwpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZhciBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6IG51bGx9LCAn
dmFsaWRrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0g
ICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSdd
LCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2YXIgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKLSAgICByZXF1ZXN0
LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBnZXRTdWNjZXNzLCB0cnVlKTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0
U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImdldFN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueSIsICJ2YWx1ZSIpOwotCi0gICAgdmFy
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBldmVudC50YXJnZXQuc291cmNlIik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCh0ZXN0RGF0ZSkiKTsKLSAgICByZXF1ZXN0
LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBnZXRTdWNjZXNzRGF0ZUtleSwgZmFsc2UpOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBnZXRTdWNjZXNzRGF0ZUtleSgpCi17Ci0gICAgZGVidWcoImdldFN1Y2Nlc3NEYXRlS2V5
KCk6Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lngi
LCAiZm9vIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKCdrZXkn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVtb3ZlU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcmVtb3Zl
U3VjY2VzcygpCi17Ci0gICAgZGVidWcoInJlbW92ZVN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0cnVlIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuZGVsZXRlKCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVt
b3ZlU3VjY2Vzc0J1dEZhbHNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiByZW1vdmVTdWNjZXNzQnV0RmFsc2UoKQotewotICAg
IGRlYnVnKCJyZW1vdmVTdWNjZXNzQnV0RmFsc2UoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICJmYWxzZSIpOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZSIpOwotCi0gICAgZGVidWcoIlBhc3NpbmcgYW4gaW52
YWxpZCBrZXkgaW50byBzdG9yZS5nZXQoKS4iKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5nZXQoe30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
Ci0KLSAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmRlbGV0ZSgp
LiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmRlbGV0ZSh7fSkiLCAid2Vi
a2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIGRlYnVnKCJQYXNzaW5n
IGFuIGludmFsaWQga2V5IGludG8gc3RvcmUuYWRkKCkuIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUuYWRkKG51bGwsIHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBz
dG9yZS5wdXQoKS4iKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQobnVs
bCwge30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICB0
ZXN0UHJlQ29uZGl0aW9ucygpOwotfQotCi1mdW5jdGlvbiB0ZXN0UHJlQ29uZGl0aW9ucygpCi17
Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ0ZXN0UHJlQ29uZGl0aW9ucygpOiIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdwcmVjb25kaXRpb24gdmVyc2lv
bicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgc3RvcmVXaXRoSW5M
aW5lS2V5cyA9IGV2YWxBbmRMb2coInN0b3JlV2l0aEluTGluZUtleXMgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVXaXRoSW5MaW5lS2V5cycsIHtrZXlQYXRoOiAna2V5J30pIik7Ci0gICAg
ICAgIHN0b3JlV2l0aE91dE9mTGluZUtleXMgPSBldmFsQW5kTG9nKCJzdG9yZVdpdGhPdXRPZkxp
bmVLZXlzID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlV2l0aE91dElPZkxpbmVLZXlzJyki
KTsKLSAgICAgICAgc3RvcmVXaXRoSW5kZXggPSBldmFsQW5kTG9nKCJzdG9yZVdpdGhJbmRleCA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhJbmRleCcpIik7Ci0gICAgICAgIGluZGV4
ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZVdpdGhJbmRleC5jcmVhdGVJbmRleCgnaW5kZXhO
YW1lJywgJ2luZGV4S2V5JykiKTsKLQotICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgIGRlYnVn
KCJJREJPYmplY3RTdG9yZS5wdXQoKSIpOwotICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9y
ZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkLiIp
OwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbkxpbmVLZXlzLnB1
dCh7a2V5OiAxfSwgJ2tleScpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7Ci0KLSAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBvdXQtb2YtbGluZSBr
ZXlzIGFuZCBoYXMgbm8ga2V5IGdlbmVyYXRvciBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIG5v
dCBwcm92aWRlZC4iKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRo
T3V0T2ZMaW5lS2V5cy5wdXQoe30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSIik7Ci0KLSAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtl
eXMgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBh
dGggeWllbGRzIGEgdmFsdWUgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LiIpOwot
ICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7
a2V5OiBudWxsfSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQot
ICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBidXQgbm8g
a2V5IGdlbmVyYXRvciBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3Rv
cmUncyBrZXkgcGF0aCBkb2VzIG5vdCB5aWVsZCBhIHZhbHVlLiIpOwotICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7fSkiLCAid2Via2l0SURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgICAgICBkZWJ1ZygiVGhlIGtleSBw
YXJhbWV0ZXIgd2FzIHByb3ZpZGVkIGJ1dCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQga2V5LiIp
OwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlz
LnB1dCh7fSwgbnVsbCkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsK
LQotICAgICAgICBkZWJ1ZygiSWYgdGhlcmUgYXJlIGFueSBpbmRleGVzIHJlZmVyZW5jaW5nIHRo
aXMgb2JqZWN0IHN0b3JlIHdob3NlIGtleSBwYXRoIGlzIGEgc3RyaW5nLCBldmFsdWF0aW5nIHRo
ZWlyIGtleSBwYXRoIG9uIHRoZSB2YWx1ZSBwYXJhbWV0ZXIgeWllbGRzIGEgdmFsdWUsIGFuZCB0
aGF0IHZhbHVlIGlzIG5vdCBhIHZhbGlkIGtleS4iKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmVXaXRoSW5kZXgucHV0KHtpbmRleEtleTogbnVsbH0sICdrZXknKSIsICJ3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCIi
KTsKLSAgICAgICAgZGVidWcoIklEQk9iamVjdFN0b3JlLmFkZCgpIik7Ci0gICAgICAgIGRlYnVn
KCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUga2V5IHBhcmFtZXRl
ciB3YXMgcHJvdmlkZWQuIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
V2l0aEluTGluZUtleXMuYWRkKHtrZXk6IDF9LCAna2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1
c2VzIG91dC1vZi1saW5lIGtleXMgYW5kIGhhcyBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUga2V5
IHBhcmFtZXRlciB3YXMgbm90IHByb3ZpZGVkLiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLmFkZCh7fSkiLCAid2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9y
ZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmpl
Y3Qgc3RvcmUncyBrZXkgcGF0aCB5aWVsZHMgYSB2YWx1ZSBhbmQgdGhhdCB2YWx1ZSBpcyBub3Qg
YSB2YWxpZCBrZXkuIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0
aEluTGluZUtleXMuYWRkKHtrZXk6IG51bGx9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4t
bGluZSBrZXlzIGJ1dCBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRp
bmcgdGhlIG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIGRvZXMgbm90IHlpZWxkIGEgdmFsdWUuIik7
Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMuYWRk
KHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAg
IGRlYnVnKCJUaGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90IGNvbnRh
aW4gYSB2YWxpZCBrZXkuIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
V2l0aE91dE9mTGluZUtleXMuYWRkKHt9LCBudWxsKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCJJZiB0aGVyZSBhcmUgYW55IGluZGV4
ZXMgcmVmZXJlbmNpbmcgdGhpcyBvYmplY3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJp
bmcsIGV2YWx1YXRpbmcgdGhlaXIga2V5IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVs
ZHMgYSB2YWx1ZSwgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LiIpOwotICAgICAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbmRleC5hZGQoe2luZGV4S2V5OiBu
dWxsfSwgJ2tleScpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0K
LSAgICAgICAgZG9uZSgpOwotICAgIH07Ci19Ci0KLQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdHN0b3JlLWJhc2ljcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyZGVj
NjYwNjQyMzViNWQ1NjE1M2I4YzdiZWM0Yjc1NzhhZDUzYzYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpzCkBA
IC0wLDAgKzEsMjgwIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdpZGItd29ya2VyLWNvbW1vbi5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4
ZWREQidzIHdlYmtpdElEQkluZGV4LiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ2luZGV4LWJhc2ljcycpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKGV2
dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNp
b24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0
aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBkZWxldGVFeGlzdGluZyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAg
ZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJh
bnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2VsZi5zdG9yZSA9
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwor
ICAgIHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5k
ZXhOYW1lJywgJ3gnKSIpOworICAgIHNlbGYuaW5kZXhPYmplY3QyID0gZXZhbEFuZExvZygic3Rv
cmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZTInLCAneScsIHt1bmlxdWU6IGZhbHNlfSkiKTsKKyAg
ICBzZWxmLmluZGV4T2JqZWN0MyA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCd6SW5k
ZXgnLCAneicsIHt1bmlxdWU6IHRydWV9KSIpOworICAgIGFkZERhdGEoKTsKK30KKworZnVuY3Rp
b24gYWRkRGF0YSgpCit7CisgICAgc2hvdWxkQmVUcnVlKCInbmFtZScgaW4gaW5kZXhPYmplY3Qi
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImluZGV4T2JqZWN0Lm5hbWUiLCAiaW5kZXhO
YW1lIik7CisgICAgc2hvdWxkQmVUcnVlKCInb2JqZWN0U3RvcmUnIGluIGluZGV4T2JqZWN0Iik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5vYmplY3RTdG9yZS5uYW1l
IiwgInN0b3JlTmFtZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2tleVBhdGgnIGluIGluZGV4T2Jq
ZWN0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5rZXlQYXRoIiwg
IngiKTsKKyAgICBzaG91bGRCZVRydWUoIid1bmlxdWUnIGluIGluZGV4T2JqZWN0Iik7CisgICAg
c2hvdWxkQmVUcnVlKCInbXVsdGlFbnRyeScgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJpbmRleE9iamVjdC51bmlxdWUiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleE9i
amVjdC5tdWx0aUVudHJ5Iik7CisgICAgc2hvdWxkQmVUcnVlKCInb3BlbktleUN1cnNvcicgaW4g
aW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9i
amVjdC5vcGVuS2V5Q3Vyc29yIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInb3Bl
bkN1cnNvcicgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5
cGVvZiBpbmRleE9iamVjdC5vcGVuQ3Vyc29yIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVU
cnVlKCInZ2V0S2V5JyBpbiBpbmRleE9iamVjdCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygidHlwZW9mIGluZGV4T2JqZWN0LmdldEtleSIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJl
VHJ1ZSgiJ2dldCcgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InR5cGVvZiBpbmRleE9iamVjdC5nZXQiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUo
Iidjb3VudCcgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5
cGVvZiBpbmRleE9iamVjdC5jb3VudCIsICJmdW5jdGlvbiIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eicsIHo6IDIuNzJ9LCAna2V5
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGEyOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGREYXRhMihl
dnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInLCB6OiAyLjcxLCBmb29i
YXI6IDEyfSwgJ2tleTInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRGF0YTM7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2VsZi5p
bmRleE9iamVjdDQgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhXaGlsZUFk
ZElzSW5GbGlnaHQnLCAneCcpIik7CisgICAgc2VsZi5pbmRleE9iamVjdDUgPSBldmFsQW5kTG9n
KCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhXaXRoV2VpcmRLZXlQYXRoJywgJ2Zvb2JhcicpIik7
Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICAv
LyBBZGQgZGF0YSB3aGljaCBkb2Vzbid0IGhhdmUgYSBrZXkgaW4gdGhlIHpJbmRleC4KKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTMn
LCB5OiAnNDU2J30sICdrZXkzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGE7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGdldERhdGEoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ3ZhbHVlJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGdldE9iamVjdERhdGE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERhdGEoZXZ0KQoreworICAg
IGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJrZXkiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdDIu
Z2V0S2V5KCd6enonKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTI7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGdldE9iamVjdERhdGEyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAia2V5Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QzLmdldCgyLjcxKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERhdGEzKGV2dCkK
K3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5yZXN1bHQueCIsICJ2YWx1ZTIiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleE9iamVjdC5nZXQoJ3ZhbHVlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERh
dGFGYWlsOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBnZXREYXRhRmFpbChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LngiLCAidmFsdWUiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueSIsICJ6enoi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ2RvZXMg
bm90IGV4aXN0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGFGYWls
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGdldE9iamVjdERhdGFGYWlsKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXQoJ2RvZXMgbm90IGV4aXN0JykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGE0OworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVj
dERhdGE0KGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleE9iamVjdDQuZ2V0S2V5KCd2YWx1ZTInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlbktleUN1cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSAgdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5LZXlDdXJzb3IoZXZ0KQoreworICAgIGV2ZW50ID0g
ZXZ0OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJr
ZXkyIik7CisKKyAgICBzZWxmLnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVu
S2V5Q3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gY3Vyc29yMUNvbnRpbnVlKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnNvdXJjZSIsICJpbmRleE9iamVjdCIpOworICAgIHNob3VsZEJl
RmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAia2V5Iik7
CisKKyAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCisgICAgZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgc2VsZi5yZXF1ZXN0
Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTI7Cit9CisKK2Z1bmN0aW9uIGN1cnNvcjFDb250
aW51ZTIoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50
LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleTIiKTsKKworICAgIC8v
IFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KKyAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNz
ID0gY3Vyc29yMUNvbnRpbnVlMzsKK30KKworZnVuY3Rpb24gY3Vyc29yMUNvbnRpbnVlMyhldnQp
Cit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC5rZXkiLCAidmFsdWUzIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAia2V5MyIpOworCisgICAgLy8gV2UgcmUtdXNl
IHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuT2Jq
ZWN0Q3Vyc29yOworfQorCitmdW5jdGlvbiBvcGVuT2JqZWN0Q3Vyc29yKGV2dCkKK3sKKyAgICBl
dmVudCA9IGV2dDsKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51
bGwiKTsKKworICAgIHNlbGYucmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5D
dXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBjdXJzb3IyQ29udGludWUoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQuc291cmNlIiwgImluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6
eiIpOworCisgICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29udGludWUyOworfQorCitmdW5jdGlvbiBjdXJzb3Iy
Q29udGludWUyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZUZhbHNlKCJl
dmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTIiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZTIiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueSIsICJ6enoy
Iik7CisKKyAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCisgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgc2VsZi5yZXF1
ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJDb250aW51ZTM7Cit9CisKK2Z1bmN0aW9uIGN1cnNvcjJD
b250aW51ZTMoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlRmFsc2UoImV2
ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMyIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS54IiwgInZhbHVlMyIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgIjQ1NiIp
OworCisgICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxB
bmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVz
dC5vbnN1Y2Nlc3MgPSBsYXN0OworfQorCitmdW5jdGlvbiBsYXN0KGV2dCkKK3sKKyAgICBldmVu
dCA9IGV2dDsKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwi
KTsKKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGlu
dG8gaW5kZXhPYmplY3QuZ2V0KHt9KS4iKTsKKyAgICAgICAgaW5kZXhPYmplY3QuZ2V0KHt9KTsK
KyAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJp
bmcoKSk7CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52
YWxpZCBrZXkgaW50byBpbmRleE9iamVjdC5nZXRLZXkoe30pLiIpOworICAgICAgICBpbmRleE9i
amVjdC5nZXRLZXkoe30pOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3du
Iik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0
aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICB9CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3ZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVmY2MyZTU3MGExNWVhYjRiNmYwZTk5YmI0YzEyMDEzODM2ZGU3ODgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzCkBAIC0wLDAgKzEsMzM5IEBACitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdpZGItd29ya2VyLWNvbW1v
bi5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLiIpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhl
ZERCLm9wZW4oJ29iamVjdHN0b3JlLWJhc2ljcycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0
OworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoZXZ0KQoreworICAg
IGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
KworICAgIGRlYnVnKCJjcmVhdGVPYmplY3RTdG9yZSgpOiIpOworICAgIHNlbGYuc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxs
KSIpOworICAgIHZhciBzdG9yZU5hbWVzID0gZXZhbEFuZExvZygic3RvcmVOYW1lcyA9IGRiLm9i
amVjdFN0b3JlTmFtZXMiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiJ25hbWUnIGluIHN0b3JlIik7
CisgICAgc2hvdWxkQmVUcnVlKCIna2V5UGF0aCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZVRy
dWUoIidpbmRleE5hbWVzJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ3RyYW5zYWN0
aW9uJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ3B1dCcgaW4gc3RvcmUiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5wdXQiLCAiZnVuY3Rpb24iKTsK
KyAgICBzaG91bGRCZVRydWUoIidhZGQnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ0eXBlb2Ygc3RvcmUuYWRkIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVl
KCInZGVsZXRlJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9m
IHN0b3JlLmRlbGV0ZSIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2dldCcgaW4g
c3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5nZXQiLCAi
ZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidjbGVhcicgaW4gc3RvcmUiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5jbGVhciIsICJmdW5jdGlvbiIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiJ29wZW5DdXJzb3InIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUub3BlbkN1cnNvciIsICJmdW5jdGlvbiIpOworICAg
IHNob3VsZEJlVHJ1ZSgiJ2NyZWF0ZUluZGV4JyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmNyZWF0ZUluZGV4IiwgImZ1bmN0aW9uIik7CisgICAg
c2hvdWxkQmVUcnVlKCInaW5kZXgnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ0eXBlb2Ygc3RvcmUuaW5kZXgiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUo
IidkZWxldGVJbmRleCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5
cGVvZiBzdG9yZS5kZWxldGVJbmRleCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgi
J2NvdW50JyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0
b3JlLmNvdW50IiwgImZ1bmN0aW9uIik7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0
b3JlLm5hbWUiLCAic3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5rZXlQYXRo
Iik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlTmFtZScpIiwgInRy
dWUiKTsKKyAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIC8vIEZJ
WE1FOiB0ZXN0IGFsbCBvZiBvYmplY3Qgc3RvcmUncyBtZXRob2RzLgorCisgICAgZGVidWcoIkFz
ayBmb3IgYW4gaW5kZXggdGhhdCBkb2Vzbid0IGV4aXN0OiIpOworICAgIHRyeSB7CisgICAgICAg
IGRlYnVnKCJpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJykiKTsKKyAgICAgICAgaW5kZXggPSBz
dG9yZS5pbmRleCgnYXNkZicpOworICAgICAgICB0ZXN0RmFpbGVkKCJBc2tpbmcgZm9yIGEgc3Rv
cmUgdGhhdCBkb2Vzbid0IGV4aXN0IHNob3VsZCBoYXZlIHRocm93bi4iKTsKKyAgICB9IGNhdGNo
IChlcnIpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiRXhjZXB0aW9uIHRocm93bi4iKTsKKyAgICAg
ICAgY29kZSA9IGVyci5jb2RlOworICAgICAgICBzaG91bGRCZSgiY29kZSIsICJ3ZWJraXRJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgfQorCisgICAgY3JlYXRlSW5k
ZXgoKTsKK30KKworZnVuY3Rpb24gY3JlYXRlSW5kZXgoKQoreworICAgIGRlYnVnKCJjcmVhdGVJ
bmRleCgpOiIpOworICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3Jl
YXRlSW5kZXgoJ2luZGV4TmFtZScsICd4Jywge3VuaXF1ZTogdHJ1ZX0pIik7IC8vIHRydWUgPT0g
dW5pcXVlIHJlcXVpcmVtZW50LgorICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwiKTsK
KyAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScp
Iik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5h
bWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwiKTsKKyAKKyAgICBkZWJ1
ZygiQXNrIGZvciBhbiBpbmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6Iik7CisgICAgdHJ5IHsKKyAg
ICAgICAgZGVidWcoImluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKSIpOworICAgICAgICBpbmRl
eCA9IHN0b3JlLmluZGV4KCdhc2RmJyk7CisgICAgICAgIHRlc3RGYWlsZWQoIkFza2luZyBmb3Ig
YSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgc2hvdWxkIGhhdmUgdGhyb3duLiIpOworICAgIH0g
Y2F0Y2ggKGVycikgeworICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gdGhyb3duLiIpOwor
ICAgICAgICBjb2RlID0gZXJyLmNvZGUKKyAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAid2Via2l0
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIH0KKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gdGVzdFNldFZlcnNpb25BYm9ydDsKK30KKworZnVuY3Rpb24gdGVzdFNldFZl
cnNpb25BYm9ydCgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24o
InZlcnNpb24gZmFpbCIpJyk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbm90aGVy
SW5kZXg7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGNyZWF0ZUFub3RoZXJJbmRleChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gZmFpbCIp
OworCisgICAgdmFyIHNldFZlcnNpb25UcmFucyA9IGV2YWxBbmRMb2coInNldFZlcnNpb25UcmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInNldFZlcnNpb25U
cmFucyAhPT0gbnVsbCIpOworICAgIHNldFZlcnNpb25UcmFucy5vbmNvbXBsZXRlID0gdW5leHBl
Y3RlZENvbXBsZXRlQ2FsbGJhY2s7CisgICAgc2V0VmVyc2lvblRyYW5zLm9uYWJvcnQgPSBjaGVj
a01ldGFkYXRhOworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHNldFZlcnNp
b25UcmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICB2YXIgaW5kZXggPSBldmFs
QW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisK
KyAgICBzZXRWZXJzaW9uVHJhbnMuYWJvcnQoKTsKK30KKworZnVuY3Rpb24gY2hlY2tNZXRhZGF0
YSgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIm5ldyB2ZXJz
aW9uIik7CisgICAgc2hvdWxkQmUoInN0b3JlLnRyYW5zYWN0aW9uIiwgInNldFZlcnNpb25UcmFu
cyIpOworICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVzIiwgIlsnaW5kZXhOYW1lJ10iKTsK
KyAgICBzaG91bGRCZSgic3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3Vs
ZEJlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCcnKSIsICJmYWxzZSIpOworICAgIHNob3Vs
ZEJlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleEZhaWwnKSIsICJmYWxzZSIpOwor
ICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIsICJ0
cnVlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZS5pbmRleE5hbWVzWzBdIiwg
ImluZGV4TmFtZSIpOworICAgIHNob3VsZEJlTnVsbCgic3RvcmUuaW5kZXhOYW1lc1sxXSIpOwor
ICAgIHNob3VsZEJlTnVsbCgic3RvcmUuaW5kZXhOYW1lc1sxMDBdIik7CisgICAgc2hvdWxkQmVO
dWxsKCJzdG9yZS5pbmRleE5hbWVzLml0ZW0oMSkiKTsKKyAgICBzaG91bGRCZU51bGwoInN0b3Jl
LmluZGV4TmFtZXMuaXRlbSgxMDApIik7CisgICAgYWRkRGF0YSgpOworfQorCit2YXIgdGVzdERh
dGUgPSBuZXcgRGF0ZSgiQXVndXN0IDI1LCAxOTkxIDIwOjU3OjA4Iik7Cit2YXIgdGVzdERhdGVC
ID0gbmV3IERhdGUoIldlZCBKYW4gMDUgMjAxMSAxNTo1NDo0OSIpOworCitmdW5jdGlvbiBhZGRE
YXRhKCkKK3sKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgZGVidWcoIlRyeSB0byBpbnNlcnQgZGF0
YSB3aXRoIGEgRGF0ZSBrZXk6Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCh7eDogJ2Zvbyd9LCB0ZXN0RGF0ZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERh
dGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBhZGREYXRlU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7
CisgICAgZGVidWcoIlRyeSB0byBpbnNlcnQgYSB2YWx1ZSBub3QgaGFuZGxlZCBieSBzdHJ1Y3R1
cmVkIGNsb25lOiIpOworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJzdG9yZS5hZGQoe3g6ICdi
YXInLCB5OiBzZWxmfSwgJ2JhcicpIik7CisgICAgICAgIHN0b3JlLmFkZCh7eDogJ2JhcicsIHk6
IHNlbGZ9LCAnYmFyJyk7CisgICAgICAgIHRlc3RGYWlsZWQoIlBhc3NpbmcgYSBET00gbm9kZSBh
cyB2YWx1ZSBzaG91bGQgaGF2ZSB0aHJvd24uIik7CisgICAgfSBjYXRjaCAoZXJyKSB7CisgICAg
ICAgIHRlc3RQYXNzZWQoIkV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICAgICAgY29kZSA9IGVyci5j
b2RlOworICAgICAgICAvLyBGSVhNRTogV2hlbiB3ZSBtb3ZlIHRvIERPTTQtc3R5bGUgZXhjZXB0
aW9ucyB0aGlzIHNob3VsZCBsb29rIGZvciB0aGUKKyAgICAgICAgLy8gbmFtZSAiRGF0YUNsb25l
RXJyb3IiLgorICAgICAgICBzaG91bGRCZSgiY29kZSIsICIyNSIpOworICAgIH0KKworICAgIGRl
YnVnKCJUcnkgdG8gaW5zZXJ0IGRhdGEgd2hlcmUga2V5IHBhdGggeWllbGRzIGEgRGF0ZSBrZXk6
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogdGVzdERhdGVCLCB5
OiAndmFsdWUnfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBhZGRTdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1Zygi
YWRkU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICJrZXkiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQuc291cmNlLmFkZCh7eDogJ2Zvbyd9LCAnenp6JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5hZGRFdmVudExpc3Rl
bmVyKCdlcnJvcicsIGFkZEFnYWluRmFpbHVyZSwgZmFsc2UpOworfQorCitmdW5jdGlvbiBhZGRB
Z2FpbkZhaWx1cmUoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCJhZGRBZ2Fp
bkZhaWx1cmUoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJ3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOworCisgICAgZXZhbEFu
ZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworCisgICAgdHJhbnNhY3Rpb24gPSBldmFs
QW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgZXZhbEFuZExvZygic3RvcmUu
YWRkKHt4OiAnc29tZXZhbHVlJ30sICdzb21la2V5JykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5hZGQoe3g6ICdvdGhlcnZhbHVlJ30sIG51bGwpIiwgIndlYmtpdElEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5hZGQoe3g6IG51bGx9LCAndmFsaWRrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50
cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdl
dCgna2V5JykiKTsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBnZXRT
dWNjZXNzLCB0cnVlKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gZ2V0U3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7
CisgICAgZGVidWcoImdldFN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQueSIsICJ2YWx1ZSIpOworCisgICAgdmFyIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBldmVudC50YXJnZXQuc291cmNlIik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmdldCh0ZXN0RGF0ZSkiKTsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlz
dGVuZXIoJ3N1Y2Nlc3MnLCBnZXRTdWNjZXNzRGF0ZUtleSwgZmFsc2UpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRTdWNj
ZXNzRGF0ZUtleShldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoImdldFN1Y2Nl
c3NEYXRlS2V5KCk6Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQu
cmVzdWx0LngiLCAiZm9vIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZGVs
ZXRlKCdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVtb3ZlU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gcmVtb3ZlU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoInJl
bW92ZVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0
cnVlIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKCdrZXknKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVtb3ZlU3VjY2Vzc0J1dEZhbHNlOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBy
ZW1vdmVTdWNjZXNzQnV0RmFsc2UoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVn
KCJyZW1vdmVTdWNjZXNzQnV0RmFsc2UoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICJmYWxzZSIpOworICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
ZXZlbnQudGFyZ2V0LnNvdXJjZSIpOworCisgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBr
ZXkgaW50byBzdG9yZS5nZXQoKS4iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9y
ZS5nZXQoe30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAg
ICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmRlbGV0ZSgpLiIpOwor
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmRlbGV0ZSh7fSkiLCAid2Via2l0SURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgIGRlYnVnKCJQYXNzaW5nIGFuIGlu
dmFsaWQga2V5IGludG8gc3RvcmUuYWRkKCkuIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUuYWRkKG51bGwsIHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOworCisgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5w
dXQoKS4iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQobnVsbCwge30p
IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICB0ZXN0UHJl
Q29uZGl0aW9ucygpOworfQorCitmdW5jdGlvbiB0ZXN0UHJlQ29uZGl0aW9ucygpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0UHJlQ29uZGl0aW9ucygpOiIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdwcmVjb25kaXRpb24gdmVyc2lvbicpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc3RvcmVXaXRoSW5MaW5lS2V5
cyA9IGV2YWxBbmRMb2coInN0b3JlV2l0aEluTGluZUtleXMgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVXaXRoSW5MaW5lS2V5cycsIHtrZXlQYXRoOiAna2V5J30pIik7CisgICAgICAgIHN0
b3JlV2l0aE91dE9mTGluZUtleXMgPSBldmFsQW5kTG9nKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlz
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlV2l0aE91dElPZkxpbmVLZXlzJykiKTsKKyAg
ICAgICAgc3RvcmVXaXRoSW5kZXggPSBldmFsQW5kTG9nKCJzdG9yZVdpdGhJbmRleCA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhJbmRleCcpIik7CisgICAgICAgIGluZGV4ID0gZXZh
bEFuZExvZygiaW5kZXggPSBzdG9yZVdpdGhJbmRleC5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywg
J2luZGV4S2V5JykiKTsKKworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJJREJP
YmplY3RTdG9yZS5wdXQoKSIpOworICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2Vz
IGluLWxpbmUga2V5cyBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkLiIpOworICAg
ICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7a2V5
OiAxfSwgJ2tleScpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisK
KyAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBvdXQtb2YtbGluZSBrZXlzIGFu
ZCBoYXMgbm8ga2V5IGdlbmVyYXRvciBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIG5vdCBwcm92
aWRlZC4iKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoT3V0T2ZM
aW5lS2V5cy5wdXQoe30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
CisKKyAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYW5k
IHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggeWll
bGRzIGEgdmFsdWUgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LiIpOworICAgICAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7a2V5OiBu
dWxsfSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAg
ICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBidXQgbm8ga2V5IGdl
bmVyYXRvciBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBr
ZXkgcGF0aCBkb2VzIG5vdCB5aWVsZCBhIHZhbHVlLiIpOworICAgICAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZVdpdGhJbkxpbmVLZXlzLnB1dCh7fSkiLCAid2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1ZygiVGhlIGtleSBwYXJhbWV0
ZXIgd2FzIHByb3ZpZGVkIGJ1dCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQga2V5LiIpOworICAg
ICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLnB1dCh7
fSwgbnVsbCkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAg
ICAgICBkZWJ1ZygiSWYgdGhlcmUgYXJlIGFueSBpbmRleGVzIHJlZmVyZW5jaW5nIHRoaXMgb2Jq
ZWN0IHN0b3JlIHdob3NlIGtleSBwYXRoIGlzIGEgc3RyaW5nLCBldmFsdWF0aW5nIHRoZWlyIGtl
eSBwYXRoIG9uIHRoZSB2YWx1ZSBwYXJhbWV0ZXIgeWllbGRzIGEgdmFsdWUsIGFuZCB0aGF0IHZh
bHVlIGlzIG5vdCBhIHZhbGlkIGtleS4iKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmVXaXRoSW5kZXgucHV0KHtpbmRleEtleTogbnVsbH0sICdrZXknKSIsICJ3ZWJraXRJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgZGVidWcoIklEQk9iamVjdFN0b3JlLmFkZCgpIik7CisgICAgICAgIGRlYnVnKCJUaGUg
b2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMg
cHJvdmlkZWQuIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aElu
TGluZUtleXMuYWRkKHtrZXk6IDF9LCAna2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIG91
dC1vZi1saW5lIGtleXMgYW5kIGhhcyBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFt
ZXRlciB3YXMgbm90IHByb3ZpZGVkLiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLmFkZCh7fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2Vz
IGluLWxpbmUga2V5cyBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3Rv
cmUncyBrZXkgcGF0aCB5aWVsZHMgYSB2YWx1ZSBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxp
ZCBrZXkuIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGlu
ZUtleXMuYWRkKHtrZXk6IG51bGx9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOworCisgICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBr
ZXlzIGJ1dCBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhl
IG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIGRvZXMgbm90IHlpZWxkIGEgdmFsdWUuIik7CisgICAg
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMuYWRkKHt9KSIs
ICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAgIGRlYnVn
KCJUaGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4gYSB2
YWxpZCBrZXkuIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91
dE9mTGluZUtleXMuYWRkKHt9LCBudWxsKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOworCisgICAgICAgIGRlYnVnKCJJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVm
ZXJlbmNpbmcgdGhpcyBvYmplY3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2
YWx1YXRpbmcgdGhlaXIga2V5IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2
YWx1ZSwgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LiIpOworICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbmRleC5hZGQoe2luZGV4S2V5OiBudWxsfSwg
J2tleScpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKK30KKwordmFyIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworCit0ZXN0KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>