<?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>53288</bug_id>
          
          <creation_ts>2011-01-28 01:04:45 -0800</creation_ts>
          <short_desc>Add webkit-patch roll-chromium-deps</short_desc>
          <delta_ts>2011-01-28 11:20:31 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>341355</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-28 01:04:45 -0800</bug_when>
    <thetext>Add webkit-patch roll-chromium-deps</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341357</commentid>
    <comment_count>1</comment_count>
      <attachid>80426</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-28 01:10:25 -0800</bug_when>
    <thetext>Created attachment 80426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341372</commentid>
    <comment_count>2</comment_count>
      <attachid>80426</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-28 02:01:05 -0800</bug_when>
    <thetext>Comment on attachment 80426
Patch

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

In general this seems fine as a v1.  Thanks.

&gt; Tools/Scripts/webkitpy/common/checkout/api.py:153
&gt; +    def chromium_deps(self):
&gt; +        return DEPS(os.path.join(self._scm.checkout_root, &quot;Source&quot;, &quot;WebKit&quot;, &quot;chromium&quot;, &quot;DEPS&quot;))

This doesn&apos;t really seem to belong on Checkout, IMO.  But I guess it&apos;s OK.

&gt; Tools/Scripts/webkitpy/tool/mocktool.py:498
&gt; +class MockChromiumDEPS(object):

MockDEPs, no?

&gt; Tools/Scripts/webkitpy/tool/commands/roll_unittest.py:48
&gt; +            self.assert_execute_outputs(RollChromiumDEPS(), [5764])

Just add an expected_exception argument and pass it along to OutputCapture, no?

&gt; Tools/Scripts/webkitpy/tool/steps/preparechangelogfordepsroll.py:40
&gt; +            ChangeLog(changelog_path).update_with_unreviewed_message(&quot;Rolled DEPS.\n\n&quot;)

In this case seems it should be rolled to latest known good revisoin (maybe even with the link).  Exept that doesn&apos;t belong here.  You&apos;d want to pass that in from the command or something, no?  I guess this wants to pull a message off of state?

Yes, that could be v2.

&gt; Tools/Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py:41
&gt; +class UpdateChangeLogsWithReviewerTest(unittest.TestCase):

None of these have reviewers.  Seems this is the wrong name for the class?

&gt; Tools/Scripts/webkitpy/tool/steps/updatechromiumdeps.py:43
&gt; +        new_chromium_revision = state[&quot;chromium_revision&quot;]

This needs a comment as to why you use [] instead of .get().

&gt; Tools/Scripts/webkitpy/tool/steps/updatechromiumdeps.py:57
&gt; +        if new_chromium_revision &lt; current_chromium_revision:
&gt; +            log(&quot;Current Chromium DEPS revision %s is newer than %s.&quot; % (current_chromium_revision, new_chromium_revision))
&gt; +            new_chromium_revision = self._tool.user.prompt(&quot;Enter new chromium revision (enter nothing to cancel):\n&quot;)
&gt; +            try:
&gt; +                new_chromium_revision = int(new_chromium_revision)
&gt; +            except ValueError, TypeError:
&gt; +                new_chromium_revision = None
&gt; +            if not new_chromium_revision:
&gt; +                error(&quot;Unable to update Chromium DEPS&quot;)

I would have split this out into some sort of _validate_blah_blah method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341373</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-28 02:14:31 -0800</bug_when>
    <thetext>Committed r76926: &lt;http://trac.webkit.org/changeset/76926&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341390</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-28 03:50:23 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76926 might have broken Leopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341464</commentid>
    <comment_count>5</comment_count>
      <attachid>80426</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-28 08:43:21 -0800</bug_when>
    <thetext>Comment on attachment 80426
Patch

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

&gt; Tools/Scripts/webkitpy/tool/commands/roll.py:38
&gt; +    steps = [

Given that DEPS rolls can result in a broken build unless other entries in the DEPS file are updated (e.g. http://trac.webkit.org/changeset/76863), I think adding a build step (to make sure that things still build) would be a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341554</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-28 11:20:31 -0800</bug_when>
    <thetext>&gt; I think adding a build step (to make sure that things still build) would be a good idea.

Will do.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80426</attachid>
            <date>2011-01-28 01:10:25 -0800</date>
            <delta_ts>2011-01-28 08:43:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53288-20110128011024.patch</filename>
            <type>text/plain</type>
            <size>42170</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc2OTI0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzggQEAKKzIwMTEtMDEtMjggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgd2Via2l0
LXBhdGNoIHJvbGwtY2hyb21pdW0tZGVwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTMyODgKKworICAgICAgICBUaGlzIGNvbW1hbmQgdXBkYXRlcyB0
aGUgU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTIGZpbGUgd2l0aCB0aGUKKyAgICAgICAgbGFz
dC1rbm93biBnb29kIHJldmlzaW9uIG9mIENocm9taXVtIChvciBhIHJldmlzaW9uIHNwZWNpZmll
ZCBvbiB0aGUKKyAgICAgICAgY29tbWFuZCBsaW5lKS4gIEknZCBldmVudHVhbGx5IGxpa2UgdG8g
dHVybiB0aGlzIGludG8gYSBTaGVyaWZmQm90CisgICAgICAgIGNvbW1hbmQsIGJ1dCB0aGlzIGlz
IHRoZSBmaXJzdCBzdGVwLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc29tZXdoYXQgc3ByYXdsZWQg
YmVjYXVzZSBJIG5lZWRlZCB0byBtb3ZlIGEgYnVuY2ggb2YgY29kZQorICAgICAgICBvdXQgb2Yg
Q2hhbmdlTG9nIHRoYXQgc2hvdWxkIG5ldmVyIGhhdmUgYmVlbiB0aGVyZSBpbiB0aGUgZmlyc3Qg
cGxhY2UuCisgICAgICAgIEFsc28sIEkgaGFkIHRvIGZpeCBhIGJ1ZyBpbiBNb2NrVXNlciBpbiBv
cmRlciB0byB0ZXN0IHRoZSBuZXcgY29tbWFuZC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RlcHMucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JvbGwucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yb2xsX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JkZXBzcm9sbC5weTogQWRk
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vs
b2dmb3JyZXZlcnQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3By
ZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnRfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdWdnZXN0cmV2aWV3ZXJzX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaHJvbWl1bWRlcHMu
cHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0
ZWNoYW5nZWxvZ3NfdW5pdHRlc3QucHk6CisKIDIwMTEtMDEtMjcgIEdyZWcgQ29sZXR0YSAgPGdy
ZWcuY29sZXR0YUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJv
cy4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGku
cHkJKHJldmlzaW9uIDc2OTE5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvYXBpLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIGZyb20gd2Via2l0
cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQgdXJscwogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tv
dXQuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2cKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNr
b3V0LmNvbW1pdGluZm8gaW1wb3J0IENvbW1pdEluZm8KIGZyb20gd2Via2l0cHkuY29tbW9uLmNo
ZWNrb3V0LnNjbSBpbXBvcnQgQ29tbWl0TWVzc2FnZQorZnJvbSB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuZGVwcyBpbXBvcnQgREVQUwogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1w
b3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IHBh
cnNlX2J1Z19pZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQg
RXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKQEAgLTE0OCw2ICsxNDksOSBAQCBj
bGFzcyBDaGVja291dChvYmplY3QpOgogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CiAg
ICAgICAgICAgICBwYXNzICMgV2UgbWlnaHQgbm90IGhhdmUgQ2hhbmdlTG9ncy4KIAorICAgIGRl
ZiBjaHJvbWl1bV9kZXBzKHNlbGYpOgorICAgICAgICByZXR1cm4gREVQUyhvcy5wYXRoLmpvaW4o
c2VsZi5fc2NtLmNoZWNrb3V0X3Jvb3QsICJTb3VyY2UiLCAiV2ViS2l0IiwgImNocm9taXVtIiwg
IkRFUFMiKSkKKwogICAgIGRlZiBhcHBseV9wYXRjaChzZWxmLCBwYXRjaCwgZm9yY2U9RmFsc2Up
OgogICAgICAgICAjIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF0Y2ggd2FzIG5vdCBtYWRlIGZy
b20gdGhlIHJvb3QgZGlyZWN0b3J5LgogICAgICAgICAjIFdlIHNob3VsZCBkZXRlY3QgYW5kIGhh
bmRsZSB0aGF0IGNhc2UuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9jaGFuZ2Vsb2cucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5CShyZXZpc2lvbiA3NjkxOSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQkod29ya2luZyBjb3B5
KQpAQCAtMzYsOSArMzYsNyBAQCBpbXBvcnQgdGV4dHdyYXAKIAogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdAotZnJvbSB3ZWJraXRw
eS5jb21tb24uY29uZmlnIGltcG9ydCB1cmxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVn
emlsbGEgaW1wb3J0IHBhcnNlX2J1Z19pZAotZnJvbSB3ZWJraXRweS50b29sLmdyYW1tYXIgaW1w
b3J0IGpvaW5fd2l0aF9zZXBhcmF0b3JzCiAKIAogY2xhc3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0
KToKQEAgLTE0NSwyOSArMTQzLDE0IEBAIGNsYXNzIENoYW5nZUxvZyhvYmplY3QpOgogICAgICAg
ICBsaW5lcyA9IFtzZWxmLl93cmFwX2xpbmUobGluZSkgZm9yIGxpbmUgaW4gbWVzc2FnZS5zcGxp
dGxpbmVzKCldCiAgICAgICAgIHJldHVybiAiXG4iLmpvaW4obGluZXMpCiAKLSAgICAjIFRoaXMg
cHJvYmFibHkgZG9lcyBub3QgYmVsb25nIGluIGNoYW5nZWxvZ3MucHkKLSAgICBkZWYgX21lc3Nh
Z2VfZm9yX3JldmVydChzZWxmLCByZXZpc2lvbl9saXN0LCByZWFzb24sIGJ1Z191cmwpOgotICAg
ICAgICBtZXNzYWdlID0gIlVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0ICVzLlxuIiAlIGpvaW5fd2l0
aF9zZXBhcmF0b3JzKFsncicgKyBzdHIocmV2aXNpb24pIGZvciByZXZpc2lvbiBpbiByZXZpc2lv
bl9saXN0XSkKLSAgICAgICAgZm9yIHJldmlzaW9uIGluIHJldmlzaW9uX2xpc3Q6Ci0gICAgICAg
ICAgICBtZXNzYWdlICs9ICIlc1xuIiAlIHVybHMudmlld19yZXZpc2lvbl91cmwocmV2aXNpb24p
Ci0gICAgICAgIGlmIGJ1Z191cmw6Ci0gICAgICAgICAgICBtZXNzYWdlICs9ICIlc1xuIiAlIGJ1
Z191cmwKLSAgICAgICAgIyBBZGQgYW4gZXh0cmEgbmV3IGxpbmUgYWZ0ZXIgdGhlIHJvbGxvdXQg
bGlua3MsIGJlZm9yZSBhbnkgcmVhc29uLgotICAgICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAg
ICAgaWYgcmVhc29uOgotICAgICAgICAgICAgbWVzc2FnZSArPSAiJXNcblxuIiAlIHJlYXNvbgot
ICAgICAgICByZXR1cm4gc2VsZi5fd3JhcF9saW5lcyhtZXNzYWdlKQotCi0gICAgZGVmIHVwZGF0
ZV9mb3JfcmV2ZXJ0KHNlbGYsIHJldmlzaW9uX2xpc3QsIHJlYXNvbiwgYnVnX3VybD1Ob25lKToK
KyAgICBkZWYgdXBkYXRlX3dpdGhfdW5yZXZpZXdlZF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgog
ICAgICAgICByZXZpZXdlZF9ieV9yZWdleHAgPSByZS5jb21waWxlKAogICAgICAgICAgICAgICAg
ICIlc1Jldmlld2VkIGJ5IE5PQk9EWSBcKE9PUFMhXClcLiIgJSBzZWxmLl9jaGFuZ2Vsb2dfaW5k
ZW50KQogICAgICAgICByZW1vdmluZ19ib2lsZXJwbGF0ZSA9IEZhbHNlCiAgICAgICAgICMgaW5w
bGFjZT0xIGNyZWF0ZXMgYSBiYWNrdXAgZmlsZSBhbmQgcmUtZGlyZWN0cyBzdGRvdXQgdG8gdGhl
IGZpbGUKICAgICAgICAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LkZpbGVJbnB1dChzZWxmLnBhdGgs
IGlucGxhY2U9MSk6CiAgICAgICAgICAgICBpZiByZXZpZXdlZF9ieV9yZWdleHAuc2VhcmNoKGxp
bmUpOgotICAgICAgICAgICAgICAgIG1lc3NhZ2VfbGluZXMgPSBzZWxmLl9tZXNzYWdlX2Zvcl9y
ZXZlcnQocmV2aXNpb25fbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Z191cmwpCisgICAgICAgICAgICAgICAg
bWVzc2FnZV9saW5lcyA9IHNlbGYuX3dyYXBfbGluZXMobWVzc2FnZSkKICAgICAgICAgICAgICAg
ICBwcmludCByZXZpZXdlZF9ieV9yZWdleHAuc3ViKG1lc3NhZ2VfbGluZXMsIGxpbmUpLAogICAg
ICAgICAgICAgICAgICMgUmVtb3ZlIGFsbCB0aGUgQ2hhbmdlTG9nIGJvaWxlcnBsYXRlIGJldHdl
ZW4gdGhlIFJldmlld2VkIGJ5CiAgICAgICAgICAgICAgICAgIyBsaW5lIGFuZCB0aGUgZmlyc3Qg
Y2hhbmdlZCBmaWxlLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQkocmV2aXNpb24gNzY5
MTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2df
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw4OSArMTQyLDMgQEAgY2xhc3MgQ2hh
bmdlTG9nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRz
ID0gY2hhbmdlbG9nX2NvbnRlbnRzLnJlcGxhY2UoIk5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBh
bmQgYnVnIFVSTCAoT09QUyEpIiwgZXhwZWN0ZWRfbWVzc2FnZSkKICAgICAgICAgb3MucmVtb3Zl
KGNoYW5nZWxvZ19wYXRoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhY3R1YWxfY29udGVu
dHMsIGV4cGVjdGVkX2NvbnRlbnRzKQotCi0gICAgX3JldmVydF9tZXNzYWdlID0gIiIiICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIzNDUuCi0gICAgICAgIGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzEyMzQ1Ci0gICAgICAgIGh0dHA6Ly9leGFtcGxlLmNvbS8xMjMK
LQotICAgICAgICBUaGlzIGlzIGEgdmVyeSBsb25nIHJlYXNvbiB3aGljaCBzaG91bGQgYmUgbG9u
ZyBlbm91Z2ggc28gdGhhdAotICAgICAgICBfbWVzc2FnZV9mb3JfcmV2ZXJ0IHdpbGwgbmVlZCB0
byB3cmFwIGl0LiAgV2UnbGwgYWxzbyBpbmNsdWRlCi0gICAgICAgIGEKLSAgICAgICAgaHR0cHM6
Ly92ZXJ5dmVyeXZlcnl2ZXJ5dmVyeWxvbmdidWd1cmwuY29tL3JlYWxseWxvbmdidWd0aGluZ3ku
Y2dpP2J1Z19pZD0xMjM1NAotICAgICAgICBsaW5rIHNvIHRoYXQgd2UgY2FuIG1ha2Ugc3VyZSB3
ZSB3cmFwIHRoYXQgcmlnaHQgdG9vLgotIiIiCi0KLSAgICBkZWYgdGVzdF9tZXNzYWdlX2Zvcl9y
ZXZlcnQoc2VsZik6Ci0gICAgICAgIGNoYW5nZWxvZyA9IENoYW5nZUxvZygiL2Zha2UvcGF0aCIp
Ci0gICAgICAgIGxvbmdfcmVhc29uID0gIlRoaXMgaXMgYSB2ZXJ5IGxvbmcgcmVhc29uIHdoaWNo
IHNob3VsZCBiZSBsb25nIGVub3VnaCBzbyB0aGF0IF9tZXNzYWdlX2Zvcl9yZXZlcnQgd2lsbCBu
ZWVkIHRvIHdyYXAgaXQuICBXZSdsbCBhbHNvIGluY2x1ZGUgYSBodHRwczovL3Zlcnl2ZXJ5dmVy
eXZlcnl2ZXJ5bG9uZ2J1Z3VybC5jb20vcmVhbGx5bG9uZ2J1Z3RoaW5neS5jZ2k/YnVnX2lkPTEy
MzU0IGxpbmsgc28gdGhhdCB3ZSBjYW4gbWFrZSBzdXJlIHdlIHdyYXAgdGhhdCByaWdodCB0b28u
IgotICAgICAgICBtZXNzYWdlID0gY2hhbmdlbG9nLl9tZXNzYWdlX2Zvcl9yZXZlcnQoWzEyMzQ1
XSwgbG9uZ19yZWFzb24sICJodHRwOi8vZXhhbXBsZS5jb20vMTIzIikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMobWVzc2FnZSwgc2VsZi5fcmV2ZXJ0X21lc3NhZ2UpCi0KLSAgICBfcmV2ZXJ0
X2VudHJ5X3dpdGhfYnVnX3VybCA9ICcnJzIwMDktMDgtMTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjM0NS4KLSAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIzNDUKLSAgICAgICAgaHR0
cDovL2V4YW1wbGUuY29tLzEyMwotCi0gICAgICAgIFJlYXNvbgotCi0gICAgICAgICogU2NyaXB0
cy9idWd6aWxsYS10b29sOgotJycnCi0KLSAgICBfcmV2ZXJ0X2VudHJ5X3dpdGhvdXRfYnVnX3Vy
bCA9ICcnJzIwMDktMDgtMTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgotCi0gICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjM0NS4KLSAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIzNDUKLQotICAgICAgICBSZWFzb24KLQotICAgICAgICAq
IFNjcmlwdHMvYnVnemlsbGEtdG9vbDoKLScnJwotCi0gICAgX211bHRpcGxlX3JldmVydF9lbnRy
eV93aXRoX2J1Z191cmwgPSAnJycyMDA5LTA4LTE5ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0
Lm9yZz4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIzNDUsIHIxMjM0Niwg
YW5kIHIxMjM0Ny4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIz
NDUKLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIzNDYKLSAgICAg
ICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIzNDcKLSAgICAgICAgaHR0cDov
L2V4YW1wbGUuY29tLzEyMwotCi0gICAgICAgIFJlYXNvbgotCi0gICAgICAgICogU2NyaXB0cy9i
dWd6aWxsYS10b29sOgotJycnCi0KLSAgICBfbXVsdGlwbGVfcmV2ZXJ0X2VudHJ5X3dpdGhvdXRf
YnVnX3VybCA9ICcnJzIwMDktMDgtMTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgot
Ci0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjM0NSwgcjEyMzQ2LCBhbmQgcjEy
MzQ3LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjM0NQotICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjM0NgotICAgICAgICBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjM0NwotCi0gICAgICAgIFJlYXNvbgotCi0g
ICAgICAgICogU2NyaXB0cy9idWd6aWxsYS10b29sOgotJycnCi0KLSAgICBkZWYgX2Fzc2VydF91
cGRhdGVfZm9yX3JldmVydF9vdXRwdXQoc2VsZiwgYXJncywgZXhwZWN0ZWRfZW50cnkpOgotICAg
ICAgICBjaGFuZ2Vsb2dfY29udGVudHMgPSB1IiVzXG4lcyIgJSAoc2VsZi5fbmV3X2VudHJ5X2Jv
aWxlcnBsYXRlLCBzZWxmLl9leGFtcGxlX2NoYW5nZWxvZykKLSAgICAgICAgY2hhbmdlbG9nX3Bh
dGggPSBzZWxmLl93cml0ZV90bXBfZmlsZV93aXRoX2NvbnRlbnRzKGNoYW5nZWxvZ19jb250ZW50
cy5lbmNvZGUoInV0Zi04IikpCi0gICAgICAgIGNoYW5nZWxvZyA9IENoYW5nZUxvZyhjaGFuZ2Vs
b2dfcGF0aCkKLSAgICAgICAgY2hhbmdlbG9nLnVwZGF0ZV9mb3JfcmV2ZXJ0KCphcmdzKQotICAg
ICAgICBhY3R1YWxfZW50cnkgPSBjaGFuZ2Vsb2cubGF0ZXN0X2VudHJ5KCkKLSAgICAgICAgb3Mu
cmVtb3ZlKGNoYW5nZWxvZ19wYXRoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhY3R1YWxf
ZW50cnkuY29udGVudHMoKSwgZXhwZWN0ZWRfZW50cnkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGFjdHVhbF9lbnRyeS5yZXZpZXdlcl90ZXh0KCksIE5vbmUpCi0gICAgICAgICMgVGhlc2Ug
Y2hlY2tzIGNvdWxkIGJlIHJlbW92ZWQgdG8gYWxsb3cgdGhpcyB0byB3b3JrIG9uIG90aGVyIGVu
dHJpZXM6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGFjdHVhbF9lbnRyeS5hdXRob3JfbmFt
ZSgpLCAiRXJpYyBTZWlkZWwiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhY3R1YWxfZW50
cnkuYXV0aG9yX2VtYWlsKCksICJlcmljQHdlYmtpdC5vcmciKQotCi0gICAgZGVmIHRlc3RfdXBk
YXRlX2Zvcl9yZXZlcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2Fzc2VydF91cGRhdGVfZm9yX3Jl
dmVydF9vdXRwdXQoW1sxMjM0NV0sICJSZWFzb24iXSwgc2VsZi5fcmV2ZXJ0X2VudHJ5X3dpdGhv
dXRfYnVnX3VybCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X3VwZGF0ZV9mb3JfcmV2ZXJ0X291dHB1
dChbWzEyMzQ1XSwgIlJlYXNvbiIsICJodHRwOi8vZXhhbXBsZS5jb20vMTIzIl0sIHNlbGYuX3Jl
dmVydF9lbnRyeV93aXRoX2J1Z191cmwpCi0gICAgICAgIHNlbGYuX2Fzc2VydF91cGRhdGVfZm9y
X3JldmVydF9vdXRwdXQoW1sxMjM0NSwgMTIzNDYsIDEyMzQ3XSwgIlJlYXNvbiJdLCBzZWxmLl9t
dWx0aXBsZV9yZXZlcnRfZW50cnlfd2l0aG91dF9idWdfdXJsKQotICAgICAgICBzZWxmLl9hc3Nl
cnRfdXBkYXRlX2Zvcl9yZXZlcnRfb3V0cHV0KFtbMTIzNDUsIDEyMzQ2LCAxMjM0N10sICJSZWFz
b24iLCAiaHR0cDovL2V4YW1wbGUuY29tLzEyMyJdLCBzZWxmLl9tdWx0aXBsZV9yZXZlcnRfZW50
cnlfd2l0aF9idWdfdXJsKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5p
dHRlc3QubWFpbigpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9kZXBzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2RlcHMucHkJKHJldmlzaW9uIDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9kZXBzLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisjIENv
cHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisjCisjIFdlYktpdCdzIFB5dGhvbiBtb2R1bGUgZm9yIHBhcnNpbmcgYW5k
IG1vZGlmeWluZyBDaGFuZ2VMb2cgZmlsZXMKKworaW1wb3J0IGNvZGVjcworaW1wb3J0IGZpbGVp
bnB1dAoraW1wb3J0IG9zLnBhdGgKK2ltcG9ydCByZQoraW1wb3J0IHRleHR3cmFwCisKKworY2xh
c3MgREVQUyhvYmplY3QpOgorCisgICAgX3ZhcmlhYmxlX3JlZ2V4cCA9IHIiXHMrJyVzJzpccysn
KD9QPHZhbHVlPlxkKyknIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAg
ICBzZWxmLl9wYXRoID0gcGF0aAorCisgICAgZGVmIHJlYWRfdmFyaWFibGUoc2VsZiwgbmFtZSk6
CisgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKHNlbGYuX3ZhcmlhYmxlX3JlZ2V4cCAlIG5h
bWUpCisgICAgICAgIGZvciBsaW5lIGluIGZpbGVpbnB1dC5GaWxlSW5wdXQoc2VsZi5fcGF0aCk6
CisgICAgICAgICAgICBtYXRjaCA9IHBhdHRlcm4ubWF0Y2gobGluZSkKKyAgICAgICAgICAgIGlm
IG1hdGNoOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnQobWF0Y2guZ3JvdXAoInZhbHVlIikp
CisKKyAgICBkZWYgd3JpdGVfdmFyaWFibGUoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBw
YXR0ZXJuID0gcmUuY29tcGlsZShzZWxmLl92YXJpYWJsZV9yZWdleHAgJSBuYW1lKQorICAgICAg
ICByZXBsYWNlbWVudF9saW5lID0gIiAgJyVzJzogJyVzJyIgJSAobmFtZSwgdmFsdWUpCisgICAg
ICAgICMgaW5wbGFjZT0xIGNyZWF0ZXMgYSBiYWNrdXAgZmlsZSBhbmQgcmUtZGlyZWN0cyBzdGRv
dXQgdG8gdGhlIGZpbGUKKyAgICAgICAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LkZpbGVJbnB1dChz
ZWxmLl9wYXRoLCBpbnBsYWNlPTEpOgorICAgICAgICAgICAgaWYgcGF0dGVybi5tYXRjaChsaW5l
KToKKyAgICAgICAgICAgICAgICBwcmludCByZXBsYWNlbWVudF9saW5lCisgICAgICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgICAgICMgVHJhaWxpbmcgY29tbWEgc3VwcHJlc3NlcyBwcmlu
dGluZyBuZXdsaW5lCisgICAgICAgICAgICBwcmludCBsaW5lLApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY29uZmlnL3VybHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3VybHMucHkJKHJldmlzaW9uIDc2OTE5KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3VybHMucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDUgKzM0LDYgQEAgZGVmIHZpZXdfc291cmNlX3VybChsb2NhbF9wYXRoKToKIGRl
ZiB2aWV3X3JldmlzaW9uX3VybChyZXZpc2lvbl9udW1iZXIpOgogICAgIHJldHVybiAiaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvJXMiICUgcmV2aXNpb25fbnVtYmVyCiAKK2Nocm9t
aXVtX2xrZ3JfdXJsID0gImh0dHA6Ly9jaHJvbWl1bS1zdGF0dXMuYXBwc3BvdC5jb20vbGtnciIK
IAogY29udHJpYnV0aW9uX2d1aWRlbGluZXMgPSAiaHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL2Nv
bnRyaWJ1dGluZy5odG1sIgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0
b29sLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9v
bC5weQkocmV2aXNpb24gNzY5MTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9j
a3Rvb2wucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ5NSw2ICs0OTUsMTQgQEAgY2xhc3MgTW9ja1ND
TShNb2NrKToKICAgICAgICAgICAgIHJldHVybiAwCiAKIAorY2xhc3MgTW9ja0Nocm9taXVtREVQ
UyhvYmplY3QpOgorICAgIGRlZiByZWFkX3ZhcmlhYmxlKHNlbGYsIG5hbWUpOgorICAgICAgICBy
ZXR1cm4gNjU2NAorCisgICAgZGVmIHdyaXRlX3ZhcmlhYmxlKHNlbGYsIG5hbWUsIHZhbHVlKToK
KyAgICAgICAgbG9nKCJNT0NLOiBNb2NrQ2hyb21pdW1ERVBTLndyaXRlX3ZhcmlhYmxlKCVzLCAl
cykiICUgKG5hbWUsIHZhbHVlKSkKKworCiBjbGFzcyBNb2NrQ2hlY2tvdXQob2JqZWN0KToKIAog
ICAgIF9jb21taXR0ZXJfbGlzdCA9IENvbW1pdHRlckxpc3QoKQpAQCAtNTI4LDYgKzUzNiw5IEBA
IGNsYXNzIE1vY2tDaGVja291dChvYmplY3QpOgogICAgICAgICBjb21taXRfbWVzc2FnZS5tZXNz
YWdlID0gbGFtYmRhOiJUaGlzIGlzIGEgZmFrZSBjb21taXQgbWVzc2FnZSB0aGF0IGlzIGF0IGxl
YXN0IDUwIGNoYXJhY3RlcnMuIgogICAgICAgICByZXR1cm4gY29tbWl0X21lc3NhZ2UKIAorICAg
IGRlZiBjaHJvbWl1bV9kZXBzKHNlbGYpOgorICAgICAgICByZXR1cm4gTW9ja0Nocm9taXVtREVQ
UygpCisKICAgICBkZWYgYXBwbHlfcGF0Y2goc2VsZiwgcGF0Y2gsIGZvcmNlPUZhbHNlKToKICAg
ICAgICAgcGFzcwogCkBAIC01NjEsNyArNTcyLDcgQEAgY2xhc3MgTW9ja1VzZXIob2JqZWN0KToK
ICAgICAgICAgcGFzcwogCiAgICAgZGVmIGNvbmZpcm0oc2VsZiwgbWVzc2FnZT1Ob25lLCBkZWZh
dWx0PSd5Jyk6Ci0gICAgICAgIHByaW50IG1lc3NhZ2UKKyAgICAgICAgbG9nKG1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybiBkZWZhdWx0ID09ICd5JwogCiAgICAgZGVmIGNhbl9vcGVuX3VybChzZWxm
KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19p
bml0X18ucHkJKHJldmlzaW9uIDc2OTE5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw1ICsxMCw2IEBAIGZy
b20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5xdWVyaWVzIGltcG8KIGZyb20gd2Via2l0cHkudG9v
bC5jb21tYW5kcy5xdWV1ZXMgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5y
ZWJhc2VsaW5lIGltcG9ydCBSZWJhc2VsaW5lCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMu
cmViYXNlbGluZXNlcnZlciBpbXBvcnQgUmViYXNlbGluZVNlcnZlcgorZnJvbSB3ZWJraXRweS50
b29sLmNvbW1hbmRzLnJvbGwgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5z
aGVyaWZmYm90IGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMudXBsb2FkIGlt
cG9ydCAqCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxv
YWRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA3NjkxOSkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCwxMyBAQCB3aGVyZSBBVFRBQ0hNRU5UX0lEIGlzIHRo
ZSBJRCBvZiB0aGlzIGF0CiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhDcmVh
dGVSb2xsb3V0KCksIFsiODU1IDg1MiA4NTQiLCAiUmVhc29uIl0sIG9wdGlvbnM9c2VsZi5fZGVm
YXVsdF9vcHRpb25zKCksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKICAgICBk
ZWYgdGVzdF9yb2xsb3V0KHNlbGYpOgotICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiUHJlcGFy
aW5nIHJvbGxvdXQgZm9yIGJ1ZyA0Mi5cblVwZGF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5XG5SdW5u
aW5nIHByZXBhcmUtQ2hhbmdlTG9nXG5NT0NLOiB1c2VyLm9wZW5fdXJsOiBmaWxlOi8vLi4uXG5C
dWlsZGluZyBXZWJLaXRcbkNvbW1pdHRlZCByNDk4MjQ6IDxodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC80OTgyND5cbiIKLSAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIldhcyB0aGF0
IGRpZmYgY29ycmVjdD9cbiIKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKFJv
bGxvdXQoKSwgWzg1MiwgIlJlYXNvbiJdLCBvcHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0aW9ucygp
LCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0
ZWRfc3RkZXJyKQorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJQcmVwYXJpbmcgcm9sbG91
dCBmb3IgYnVnIDQyLgorVXBkYXRpbmcgd29ya2luZyBkaXJlY3RvcnkKK1J1bm5pbmcgcHJlcGFy
ZS1DaGFuZ2VMb2cKK01PQ0s6IHVzZXIub3Blbl91cmw6IGZpbGU6Ly8uLi4KK1dhcyB0aGF0IGRp
ZmYgY29ycmVjdD8KK0J1aWxkaW5nIFdlYktpdAorQ29tbWl0dGVkIHI0OTgyNDogPGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzQ5ODI0PgorIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0
X2V4ZWN1dGVfb3V0cHV0cyhSb2xsb3V0KCksIFs4NTIsICJSZWFzb24iXSwgb3B0aW9ucz1zZWxm
Ll9kZWZhdWx0X29wdGlvbnMoKSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKIApJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JvbGwucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JvbGwucHkJKHJl
dmlzaW9uIDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcm9sbC5w
eQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20g
d2Via2l0cHkudG9vbC5jb21tYW5kcy5hYnN0cmFjdHNlcXVlbmNlZGNvbW1hbmQgaW1wb3J0IEFi
c3RyYWN0U2VxdWVuY2VkQ29tbWFuZAorCitpbXBvcnQgd2Via2l0cHkudG9vbC5zdGVwcyBhcyBz
dGVwcworCisKK2NsYXNzIFJvbGxDaHJvbWl1bURFUFMoQWJzdHJhY3RTZXF1ZW5jZWRDb21tYW5k
KToKKyAgICBuYW1lID0gInJvbGwtY2hyb21pdW0tZGVwcyIKKyAgICBoZWxwX3RleHQgPSAiVXBk
YXRlcyBDaHJvbWl1bSBERVBTIChkZWZhdWx0cyB0byB0aGUgbGFzdC1rbm93biBnb29kIHJldmlz
aW9uIG9mIENocm9taXVtKSIKKyAgICBhcmd1bWVudF9uYW1lcyA9ICJbQ0hST01JVU1fUkVWSVNJ
T05dIgorICAgIHN0ZXBzID0gWworICAgICAgICBzdGVwcy5VcGRhdGVDaHJvbWl1bURFUFMsCisg
ICAgICAgIHN0ZXBzLlByZXBhcmVDaGFuZ2VMb2dGb3JERVBTUm9sbCwKKyAgICAgICAgc3RlcHMu
Q29uZmlybURpZmYsCisgICAgICAgIHN0ZXBzLkNvbW1pdCwKKyAgICBdCisKKyAgICBkZWYgX3By
ZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIHJldHVybiB7
CisgICAgICAgICAgICAiY2hyb21pdW1fcmV2aXNpb24iOiAoYXJncyBhbmQgYXJnc1swXSksCisg
ICAgICAgIH0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yb2xs
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9yb2xsX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAwKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3JvbGxfdW5pdHRlc3QucHkJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9j
ayBpbXBvcnQgTW9jaworZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmNvbW1hbmR0ZXN0IGlt
cG9ydCBDb21tYW5kc1Rlc3QKK2Zyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5yb2xsIGltcG9y
dCAqCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2Nr
VG9vbAorCisKK2NsYXNzIFJvbGxDb21tYW5kc1Rlc3QoQ29tbWFuZHNUZXN0KToKKyAgICBkZWYg
dGVzdF91cGRhdGVfY2hyb21pdW1fZGVwcyhzZWxmKToKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJy
ID0gIiIiVXBkYXRpbmcgQ2hyb21pdW0gREVQUyB0byA2NzY0CitNT0NLOiBNb2NrQ2hyb21pdW1E
RVBTLndyaXRlX3ZhcmlhYmxlKGNocm9taXVtX3JldiwgNjc2NCkKK1J1bm5pbmcgcHJlcGFyZS1D
aGFuZ2VMb2cKK01PQ0s6IHVzZXIub3Blbl91cmw6IGZpbGU6Ly8uLi4KK1dhcyB0aGF0IGRpZmYg
Y29ycmVjdD8KK0NvbW1pdHRlZCByNDk4MjQ6IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC80OTgyND4KKyIiIgorICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoUm9s
bENocm9taXVtREVQUygpLCBbNjc2NF0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIp
CisKKyAgICBkZWYgdGVzdF91cGRhdGVfY2hyb21pdW1fZGVwc19vbGRlcl9yZXZpc2lvbihzZWxm
KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRz
KFJvbGxDaHJvbWl1bURFUFMoKSwgWzU3NjRdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoIlRoaXMgc2hvdWxkIiwgInRocm93IFN5c3RlbUV4aXQiKQorICAgICAgICBleGNlcHQgU3lz
dGVtRXhpdDoKKyAgICAgICAgICAgIHBhc3MKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy91cGxvYWRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZF91bml0dGVzdC5weQkocmV2aXNpb24g
NzY5MTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02MSwxMiArNjEsMTIgQEAgY2xhc3MgVXBsb2Fk
Q29tbWFuZHNUZXN0KENvbW1hbmRzVGVzdCk6CiAgICAgICAgIG9wdGlvbnMuc3VnZ2VzdF9yZXZp
ZXdlcnMgPSBGYWxzZQogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJSdW5uaW5nIGNoZWNr
LXdlYmtpdC1zdHlsZQogTU9DSzogdXNlci5vcGVuX3VybDogZmlsZTovLy4uLgorV2FzIHRoYXQg
ZGlmZiBjb3JyZWN0PwogT2Jzb2xldGluZyAyIG9sZCBwYXRjaGVzIG9uIGJ1ZyA0MgogTU9DSyBh
ZGRfcGF0Y2hfdG9fYnVnOiBidWdfaWQ9NDIsIGRlc2NyaXB0aW9uPU1PQ0sgZGVzY3JpcHRpb24s
IG1hcmtfZm9yX3Jldmlldz1UcnVlLCBtYXJrX2Zvcl9jb21taXRfcXVldWU9RmFsc2UsIG1hcmtf
Zm9yX2xhbmRpbmc9RmFsc2UKIE1PQ0s6IHVzZXIub3Blbl91cmw6IGh0dHA6Ly9leGFtcGxlLmNv
bS80MgogIiIiCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJXYXMgdGhhdCBkaWZmIGNvcnJl
Y3Q/XG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhQb3N0KCksIFs0Ml0s
IG9wdGlvbnM9b3B0aW9ucywgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCwgZXhwZWN0
ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9v
dXRwdXRzKFBvc3QoKSwgWzQyXSwgb3B0aW9ucz1vcHRpb25zLCBleHBlY3RlZF9zdGRlcnI9ZXhw
ZWN0ZWRfc3RkZXJyKQogCiAgICAgZGVmIHRlc3RfbGFuZF9zYWZlbHkoc2VsZik6CiAgICAgICAg
IGV4cGVjdGVkX3N0ZGVyciA9ICJPYnNvbGV0aW5nIDIgb2xkIHBhdGNoZXMgb24gYnVnIDQyXG5N
T0NLIGFkZF9wYXRjaF90b19idWc6IGJ1Z19pZD00MiwgZGVzY3JpcHRpb249UGF0Y2ggZm9yIGxh
bmRpbmcsIG1hcmtfZm9yX3Jldmlldz1GYWxzZSwgbWFya19mb3JfY29tbWl0X3F1ZXVlPUZhbHNl
LCBtYXJrX2Zvcl9sYW5kaW5nPVRydWVcbiIKQEAgLTkwLDEyICs5MCwxMiBAQCBNT0NLOiB1c2Vy
Lm9wZW5fdXJsOiBodHRwOi8vZXhhbXBsZS5jb20vCiAgICAgICAgIG9wdGlvbnMuc3VnZ2VzdF9y
ZXZpZXdlcnMgPSBGYWxzZQogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJSdW5uaW5nIGNo
ZWNrLXdlYmtpdC1zdHlsZQogTU9DSzogdXNlci5vcGVuX3VybDogZmlsZTovLy4uLgorV2FzIHRo
YXQgZGlmZiBjb3JyZWN0PwogT2Jzb2xldGluZyAyIG9sZCBwYXRjaGVzIG9uIGJ1ZyA0MgogTU9D
SyBhZGRfcGF0Y2hfdG9fYnVnOiBidWdfaWQ9NDIsIGRlc2NyaXB0aW9uPU1PQ0sgZGVzY3JpcHRp
b24sIG1hcmtfZm9yX3Jldmlldz1UcnVlLCBtYXJrX2Zvcl9jb21taXRfcXVldWU9RmFsc2UsIG1h
cmtfZm9yX2xhbmRpbmc9RmFsc2UKIE1PQ0s6IHVzZXIub3Blbl91cmw6IGh0dHA6Ly9leGFtcGxl
LmNvbS80MgogIiIiCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJXYXMgdGhhdCBkaWZmIGNv
cnJlY3Q/XG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhVcGxvYWQoKSwg
WzQyXSwgb3B0aW9ucz1vcHRpb25zLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBl
eHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydF9leGVj
dXRlX291dHB1dHMoVXBsb2FkKCksIFs0Ml0sIG9wdGlvbnM9b3B0aW9ucywgZXhwZWN0ZWRfc3Rk
ZXJyPWV4cGVjdGVkX3N0ZGVycikKIAogICAgIGRlZiB0ZXN0X21hcmtfYnVnX2ZpeGVkKHNlbGYp
OgogICAgICAgICB0b29sID0gTW9ja1Rvb2woKQpAQCAtMTA2LDYgKzEwNiw3IEBAIE1PQ0s6IHVz
ZXIub3Blbl91cmw6IGh0dHA6Ly9leGFtcGxlLmNvbS8KICAgICAgICAgZXhwZWN0ZWRfc3RkZXJy
ID0gIiIiQnVnOiA8aHR0cDovL2V4YW1wbGUuY29tLzQyPiBCdWcgd2l0aCB0d28gcisnZCBhbmQg
Y3ErJ2QgcGF0Y2hlcywgb25lIG9mIHdoaWNoIGhhcyBhbiBpbnZhbGlkIGNvbW1pdC1xdWV1ZSBz
ZXR0ZXIuCiBSZXZpc2lvbjogOTg3NgogTU9DSzogdXNlci5vcGVuX3VybDogaHR0cDovL2V4YW1w
bGUuY29tLzQyCitJcyB0aGlzIGNvcnJlY3Q/CiBBZGRpbmcgY29tbWVudCB0byBCdWcgNDIuCiBN
T0NLIGJ1ZyBjb21tZW50OiBidWdfaWQ9NDIsIGNjPU5vbmUKIC0tLSBCZWdpbiBjb21tZW50IC0t
LQpAQCAtMTE1LDggKzExNiw3IEBAIENvbW1pdHRlZCByOTg3NjogPGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcKIC0tLSBFbmQgY29tbWVudCAtLS0KIAogIiIiCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91
dCA9ICJJcyB0aGlzIGNvcnJlY3Q/XG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0
cHV0cyhNYXJrQnVnRml4ZWQoKSwgW10sIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQs
IGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIsIHRvb2w9dG9vbCwgb3B0aW9ucz1vcHRp
b25zKQorICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoTWFya0J1Z0ZpeGVkKCks
IFtdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCB0b29sPXRvb2wsIG9wdGlvbnM9
b3B0aW9ucykKIAogICAgIGRlZiB0ZXN0X2VkaXRfY2hhbmdlbG9nKHNlbGYpOgogICAgICAgICBz
ZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoRWRpdENoYW5nZUxvZ3MoKSwgW10pCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5CShyZXZpc2lv
biA3NjkxOSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5w
eQkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3Rl
cHMub3B0aW9ucyBpbXBvcnQgCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMucG9zdGRpZmYgaW1w
b3J0IFBvc3REaWZmCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMucG9zdGRpZmZmb3Jjb21taXQg
aW1wb3J0IFBvc3REaWZmRm9yQ29tbWl0CiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMucG9zdGRp
ZmZmb3JyZXZlcnQgaW1wb3J0IFBvc3REaWZmRm9yUmV2ZXJ0Citmcm9tIHdlYmtpdHB5LnRvb2wu
c3RlcHMucHJlcGFyZWNoYW5nZWxvZ2ZvcmRlcHNyb2xsIGltcG9ydCBQcmVwYXJlQ2hhbmdlTG9n
Rm9yREVQU1JvbGwKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5wcmVwYXJlY2hhbmdlbG9nZm9y
cmV2ZXJ0IGltcG9ydCBQcmVwYXJlQ2hhbmdlTG9nRm9yUmV2ZXJ0CiBmcm9tIHdlYmtpdHB5LnRv
b2wuc3RlcHMucHJlcGFyZWNoYW5nZWxvZyBpbXBvcnQgUHJlcGFyZUNoYW5nZUxvZwogZnJvbSB3
ZWJraXRweS50b29sLnN0ZXBzLnByb21wdGZvcmJ1Z29ydGl0bGUgaW1wb3J0IFByb21wdEZvckJ1
Z09yVGl0bGUKQEAgLTU1LDYgKzU2LDcgQEAgZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnJldmVy
dHJldmlzaW9uIAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnJ1bnRlc3RzIGltcG9ydCBSdW5U
ZXN0cwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnN1Z2dlc3RyZXZpZXdlcnMgaW1wb3J0IFN1
Z2dlc3RSZXZpZXdlcnMKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy51cGRhdGVjaGFuZ2Vsb2dz
d2l0aHJldmlld2VyIGltcG9ydCBVcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmlld2VyCitmcm9tIHdl
YmtpdHB5LnRvb2wuc3RlcHMudXBkYXRlY2hyb21pdW1kZXBzIGltcG9ydCBVcGRhdGVDaHJvbWl1
bURFUFMKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy51cGRhdGUgaW1wb3J0IFVwZGF0ZQogZnJv
bSB3ZWJraXRweS50b29sLnN0ZXBzLnZhbGlkYXRlY2hhbmdlbG9ncyBpbXBvcnQgVmFsaWRhdGVD
aGFuZ2VMb2dzCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudmFsaWRhdGVyZXZpZXdlciBpbXBv
cnQgVmFsaWRhdGVSZXZpZXdlcgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JkZXBzcm9sbC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcmRlcHNyb2xsLnB5
CShyZXZpc2lvbiAwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBh
cmVjaGFuZ2Vsb2dmb3JkZXBzcm9sbC5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZworZnJvbSB3ZWJraXRweS50b29sLnN0ZXBz
LmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RTdGVwCisKKworY2xhc3MgUHJlcGFyZUNoYW5n
ZUxvZ0ZvckRFUFNSb2xsKEFic3RyYWN0U3RlcCk6CisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6
CisgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoInByZXBhcmUtQ2hhbmdlTG9nIikKKyAgICAgICAg
Y2hhbmdlbG9nX3BhdGhzID0gc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxv
Z3MoZ2l0X2NvbW1pdD1Ob25lKQorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gY2hhbmdl
bG9nX3BhdGhzOgorICAgICAgICAgICAgQ2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS51cGRhdGVf
d2l0aF91bnJldmlld2VkX21lc3NhZ2UoIlJvbGxlZCBERVBTLlxuXG4iKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVj
aGFuZ2Vsb2dmb3JyZXZlcnQucHkJKHJldmlzaW9uIDc2OTE5KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDE2ICsyOSwzMiBAQAogaW1wb3J0IG9zCiAKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNoZWNrb3V0LmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5jb25maWcgaW1wb3J0IHVybHMKK2Zyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9y
dCBqb2luX3dpdGhfc2VwYXJhdG9ycwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0
c3RlcCBpbXBvcnQgQWJzdHJhY3RTdGVwCiAKIAogY2xhc3MgUHJlcGFyZUNoYW5nZUxvZ0ZvclJl
dmVydChBYnN0cmFjdFN0ZXApOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbWVzc2FnZV9m
b3JfcmV2ZXJ0KGNscywgcmV2aXNpb25fbGlzdCwgcmVhc29uLCBidWdfdXJsPU5vbmUpOgorICAg
ICAgICBtZXNzYWdlID0gIlVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0ICVzLlxuIiAlIGpvaW5fd2l0
aF9zZXBhcmF0b3JzKFsncicgKyBzdHIocmV2aXNpb24pIGZvciByZXZpc2lvbiBpbiByZXZpc2lv
bl9saXN0XSkKKyAgICAgICAgZm9yIHJldmlzaW9uIGluIHJldmlzaW9uX2xpc3Q6CisgICAgICAg
ICAgICBtZXNzYWdlICs9ICIlc1xuIiAlIHVybHMudmlld19yZXZpc2lvbl91cmwocmV2aXNpb24p
CisgICAgICAgIGlmIGJ1Z191cmw6CisgICAgICAgICAgICBtZXNzYWdlICs9ICIlc1xuIiAlIGJ1
Z191cmwKKyAgICAgICAgIyBBZGQgYW4gZXh0cmEgbmV3IGxpbmUgYWZ0ZXIgdGhlIHJvbGxvdXQg
bGlua3MsIGJlZm9yZSBhbnkgcmVhc29uLgorICAgICAgICBtZXNzYWdlICs9ICJcbiIKKyAgICAg
ICAgaWYgcmVhc29uOgorICAgICAgICAgICAgbWVzc2FnZSArPSAiJXNcblxuIiAlIHJlYXNvbgor
ICAgICAgICByZXR1cm4gbWVzc2FnZQorCiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAg
ICAgICMgVGhpcyBjb3VsZCBtb3ZlIHRvIHByZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGluZyBhIC0t
cmV2ZXJ0PSBvcHRpb24uCiAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoInByZXBhcmUtQ2hhbmdl
TG9nIikKICAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5fdG9vbC5jaGVja291dCgpLm1v
ZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lKQogICAgICAgICBidWdfdXJsID0gc2Vs
Zi5fdG9vbC5idWdzLmJ1Z191cmxfZm9yX2J1Z19pZChzdGF0ZVsiYnVnX2lkIl0pIGlmIHN0YXRl
WyJidWdfaWQiXSBlbHNlIE5vbmUKKyAgICAgICAgbWVzc2FnZSA9IHNlbGYuX21lc3NhZ2VfZm9y
X3JldmVydChzdGF0ZVsicmV2aXNpb25fbGlzdCJdLCBzdGF0ZVsicmVhc29uIl0sIGJ1Z191cmwp
CiAgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0aHM6CiAgICAgICAg
ICAgICAjIEZJWE1FOiBTZWVtcyB3ZSBzaG91bGQgcHJlcGFyZSB0aGUgbWVzc2FnZSBvdXRzaWRl
IG9mIGNoYW5nZWxvZ3MucHkgYW5kIHRoZW4ganVzdCBwYXNzIGluCiAgICAgICAgICAgICAjIHRl
eHQgdGhhdCB3ZSB3YW50IHRvIHVzZSB0byByZXBsYWNlIHRoZSByZXZpZXdlZCBieSBsaW5lLgot
ICAgICAgICAgICAgQ2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS51cGRhdGVfZm9yX3JldmVydChz
dGF0ZVsicmV2aXNpb25fbGlzdCJdLCBzdGF0ZVsicmVhc29uIl0sIGJ1Z191cmwpCisgICAgICAg
ICAgICBDaGFuZ2VMb2coY2hhbmdlbG9nX3BhdGgpLnVwZGF0ZV93aXRoX3VucmV2aWV3ZWRfbWVz
c2FnZShtZXNzYWdlKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3By
ZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnRfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydF91bml0dGVzdC5weQkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdp
dGhfc3RhdGVtZW50CisKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBvcworaW1wb3J0IHRlbXBmaWxl
CitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hhbmdl
bG9nIGltcG9ydCBDaGFuZ2VMb2cKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNoYW5n
ZWxvZ191bml0dGVzdCBpbXBvcnQgQ2hhbmdlTG9nVGVzdAorZnJvbSB3ZWJraXRweS50b29sLnN0
ZXBzLnByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQgaW1wb3J0ICoKKworCitjbGFzcyBVcGRhdGVD
aGFuZ2VMb2dzV2l0aFJldmlld2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHN0YXRp
Y21ldGhvZAorICAgIGRlZiBfd3JpdGVfdG1wX2ZpbGVfd2l0aF9jb250ZW50cyhieXRlX2FycmF5
KToKKyAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYnl0ZV9hcnJheSwgc3RyKSkKKyAgICAgICAg
KGZpbGVfZGVzY3JpcHRvciwgZmlsZV9wYXRoKSA9IHRlbXBmaWxlLm1rc3RlbXAoKSAgIyBOYW1l
ZFRlbXBvcmFyeUZpbGUgYWx3YXlzIGRlbGV0ZXMgdGhlIGZpbGUgb24gY2xvc2UgaW4gcHl0aG9u
IDwgMi42CisgICAgICAgIHdpdGggb3MuZmRvcGVuKGZpbGVfZGVzY3JpcHRvciwgInciKSBhcyBm
aWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZShieXRlX2FycmF5KQorICAgICAgICByZXR1cm4g
ZmlsZV9wYXRoCisKKyAgICBfcmV2ZXJ0X2VudHJ5X3dpdGhfYnVnX3VybCA9ICcnJzIwMDktMDgt
MTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxMjM0NS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTIzNDUKKyAgICAgICAgaHR0cDovL2V4YW1wbGUuY29tLzEyMworCisgICAgICAgIFJl
YXNvbgorCisgICAgICAgICogU2NyaXB0cy9idWd6aWxsYS10b29sOgorJycnCisKKyAgICBfcmV2
ZXJ0X2VudHJ5X3dpdGhvdXRfYnVnX3VybCA9ICcnJzIwMDktMDgtMTkgIEVyaWMgU2VpZGVsICA8
ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjM0
NS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIzNDUKKworICAg
ICAgICBSZWFzb24KKworICAgICAgICAqIFNjcmlwdHMvYnVnemlsbGEtdG9vbDoKKycnJworCisg
ICAgX211bHRpcGxlX3JldmVydF9lbnRyeV93aXRoX2J1Z191cmwgPSAnJycyMDA5LTA4LTE5ICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTIzNDUsIHIxMjM0NiwgYW5kIHIxMjM0Ny4KKyAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIzNDUKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTIzNDYKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMTIzNDcKKyAgICAgICAgaHR0cDovL2V4YW1wbGUuY29tLzEyMworCisgICAgICAgIFJlYXNv
bgorCisgICAgICAgICogU2NyaXB0cy9idWd6aWxsYS10b29sOgorJycnCisKKyAgICBfbXVsdGlw
bGVfcmV2ZXJ0X2VudHJ5X3dpdGhvdXRfYnVnX3VybCA9ICcnJzIwMDktMDgtMTkgIEVyaWMgU2Vp
ZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMjM0NSwgcjEyMzQ2LCBhbmQgcjEyMzQ3LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8xMjM0NQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8xMjM0NgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjM0
NworCisgICAgICAgIFJlYXNvbgorCisgICAgICAgICogU2NyaXB0cy9idWd6aWxsYS10b29sOgor
JycnCisKKyAgICBfcmV2ZXJ0X3dpdGhfbG9nX3JlYXNvbiA9ICIiIjIwMDktMDgtMTkgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMjM0NS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIz
NDUKKyAgICAgICAgaHR0cDovL2V4YW1wbGUuY29tLzEyMworCisgICAgICAgIFRoaXMgaXMgYSB2
ZXJ5IGxvbmcgcmVhc29uIHdoaWNoIHNob3VsZCBiZSBsb25nIGVub3VnaCBzbyB0aGF0CisgICAg
ICAgIF9tZXNzYWdlX2Zvcl9yZXZlcnQgd2lsbCBuZWVkIHRvIHdyYXAgaXQuICBXZSdsbCBhbHNv
IGluY2x1ZGUKKyAgICAgICAgYQorICAgICAgICBodHRwczovL3Zlcnl2ZXJ5dmVyeXZlcnl2ZXJ5
bG9uZ2J1Z3VybC5jb20vcmVhbGx5bG9uZ2J1Z3RoaW5neS5jZ2k/YnVnX2lkPTEyMzU0CisgICAg
ICAgIGxpbmsgc28gdGhhdCB3ZSBjYW4gbWFrZSBzdXJlIHdlIHdyYXAgdGhhdCByaWdodCB0b28u
CisKKyAgICAgICAgKiBTY3JpcHRzL2J1Z3ppbGxhLXRvb2w6CisiIiIKKworICAgIGRlZiBfYXNz
ZXJ0X21lc3NhZ2VfZm9yX3JldmVydF9vdXRwdXQoc2VsZiwgYXJncywgZXhwZWN0ZWRfZW50cnkp
OgorICAgICAgICBjaGFuZ2Vsb2dfY29udGVudHMgPSB1IiVzXG4lcyIgJSAoQ2hhbmdlTG9nVGVz
dC5fbmV3X2VudHJ5X2JvaWxlcnBsYXRlLCBDaGFuZ2VMb2dUZXN0Ll9leGFtcGxlX2NoYW5nZWxv
ZykKKyAgICAgICAgY2hhbmdlbG9nX3BhdGggPSBzZWxmLl93cml0ZV90bXBfZmlsZV93aXRoX2Nv
bnRlbnRzKGNoYW5nZWxvZ19jb250ZW50cy5lbmNvZGUoInV0Zi04IikpCisgICAgICAgIGNoYW5n
ZWxvZyA9IENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkKKyAgICAgICAgY2hhbmdlbG9nLnVwZGF0
ZV93aXRoX3VucmV2aWV3ZWRfbWVzc2FnZShQcmVwYXJlQ2hhbmdlTG9nRm9yUmV2ZXJ0Ll9tZXNz
YWdlX2Zvcl9yZXZlcnQoKmFyZ3MpKQorICAgICAgICBhY3R1YWxfZW50cnkgPSBjaGFuZ2Vsb2cu
bGF0ZXN0X2VudHJ5KCkKKyAgICAgICAgb3MucmVtb3ZlKGNoYW5nZWxvZ19wYXRoKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhhY3R1YWxfZW50cnkuY29udGVudHMoKSwgZXhwZWN0ZWRfZW50
cnkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGFjdHVhbF9lbnRyeS5yZXZpZXdlcl90ZXh0
KCksIE5vbmUpCisgICAgICAgICMgVGhlc2UgY2hlY2tzIGNvdWxkIGJlIHJlbW92ZWQgdG8gYWxs
b3cgdGhpcyB0byB3b3JrIG9uIG90aGVyIGVudHJpZXM6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGFjdHVhbF9lbnRyeS5hdXRob3JfbmFtZSgpLCAiRXJpYyBTZWlkZWwiKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhhY3R1YWxfZW50cnkuYXV0aG9yX2VtYWlsKCksICJlcmljQHdlYmtp
dC5vcmciKQorCisgICAgZGVmIHRlc3RfbWVzc2FnZV9mb3JfcmV2ZXJ0KHNlbGYpOgorICAgICAg
ICBzZWxmLl9hc3NlcnRfbWVzc2FnZV9mb3JfcmV2ZXJ0X291dHB1dChbWzEyMzQ1XSwgIlJlYXNv
biJdLCBzZWxmLl9yZXZlcnRfZW50cnlfd2l0aG91dF9idWdfdXJsKQorICAgICAgICBzZWxmLl9h
c3NlcnRfbWVzc2FnZV9mb3JfcmV2ZXJ0X291dHB1dChbWzEyMzQ1XSwgIlJlYXNvbiIsICJodHRw
Oi8vZXhhbXBsZS5jb20vMTIzIl0sIHNlbGYuX3JldmVydF9lbnRyeV93aXRoX2J1Z191cmwpCisg
ICAgICAgIHNlbGYuX2Fzc2VydF9tZXNzYWdlX2Zvcl9yZXZlcnRfb3V0cHV0KFtbMTIzNDUsIDEy
MzQ2LCAxMjM0N10sICJSZWFzb24iXSwgc2VsZi5fbXVsdGlwbGVfcmV2ZXJ0X2VudHJ5X3dpdGhv
dXRfYnVnX3VybCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X21lc3NhZ2VfZm9yX3JldmVydF9vdXRw
dXQoW1sxMjM0NSwgMTIzNDYsIDEyMzQ3XSwgIlJlYXNvbiIsICJodHRwOi8vZXhhbXBsZS5jb20v
MTIzIl0sIHNlbGYuX211bHRpcGxlX3JldmVydF9lbnRyeV93aXRoX2J1Z191cmwpCisgICAgICAg
IGxvbmdfcmVhc29uID0gIlRoaXMgaXMgYSB2ZXJ5IGxvbmcgcmVhc29uIHdoaWNoIHNob3VsZCBi
ZSBsb25nIGVub3VnaCBzbyB0aGF0IF9tZXNzYWdlX2Zvcl9yZXZlcnQgd2lsbCBuZWVkIHRvIHdy
YXAgaXQuICBXZSdsbCBhbHNvIGluY2x1ZGUgYSBodHRwczovL3Zlcnl2ZXJ5dmVyeXZlcnl2ZXJ5
bG9uZ2J1Z3VybC5jb20vcmVhbGx5bG9uZ2J1Z3RoaW5neS5jZ2k/YnVnX2lkPTEyMzU0IGxpbmsg
c28gdGhhdCB3ZSBjYW4gbWFrZSBzdXJlIHdlIHdyYXAgdGhhdCByaWdodCB0b28uIgorICAgICAg
ICBzZWxmLl9hc3NlcnRfbWVzc2FnZV9mb3JfcmV2ZXJ0X291dHB1dChbWzEyMzQ1XSwgbG9uZ19y
ZWFzb24sICJodHRwOi8vZXhhbXBsZS5jb20vMTIzIl0sIHNlbGYuX3JldmVydF93aXRoX2xvZ19y
ZWFzb24pCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvc3VnZ2VzdHJl
dmlld2Vyc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvc3VnZ2VzdHJldmlld2Vyc191bml0dGVzdC5weQkocmV2aXNpb24gNzY5MTkp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvc3VnZ2VzdHJldmlld2Vyc191
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDEsNSArNDEsNiBAQCBjbGFzcyBTdWdnZXN0
UmV2aWV3ZXJzVGVzdCh1bml0dGVzdC5UZXN0CiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAg
ICAgICAgIGNhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKICAgICAgICAgc3RlcCA9IFN1Z2dlc3RS
ZXZpZXdlcnMoTW9ja1Rvb2woKSwgTW9ja09wdGlvbnMoc3VnZ2VzdF9yZXZpZXdlcnM9VHJ1ZSwg
Z2l0X2NvbW1pdD1Ob25lKSkKLSAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlRoZSBmb2xsb3dp
bmcgcmV2aWV3ZXJzIGhhdmUgcmVjZW50bHkgbW9kaWZpZWQgZmlsZXMgaW4geW91ciBwYXRjaDpc
bkZvbyBCYXJcbldvdWxkIHlvdSBsaWtlIHRvIENDIHRoZW0/XG4iCi0gICAgICAgIGNhcHR1cmUu
YXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5ydW4sIFt7ImJ1Z19pZCI6ICIxMjMifV0sIGV4cGVj
dGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQpCisgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJU
aGUgZm9sbG93aW5nIHJldmlld2VycyBoYXZlIHJlY2VudGx5IG1vZGlmaWVkIGZpbGVzIGluIHlv
dXIgcGF0Y2g6XG5Gb28gQmFyXG4iCisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJXb3VsZCB5
b3UgbGlrZSB0byBDQyB0aGVtP1xuIgorICAgICAgICBjYXB0dXJlLmFzc2VydF9vdXRwdXRzKHNl
bGYsIHN0ZXAucnVuLCBbeyJidWdfaWQiOiAiMTIzIn1dLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0
ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZWNocm9taXVtZGVwcy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hyb21pdW1k
ZXBzLnB5CShyZXZpc2lvbiAwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L3VwZGF0ZWNocm9taXVtZGVwcy5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1cmxsaWIyCisKK2Zyb20gd2Via2l0cHkudG9vbC5zdGVw
cy5hYnN0cmFjdHN0ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAorZnJvbSB3ZWJraXRweS50b29sLnN0
ZXBzLm9wdGlvbnMgaW1wb3J0IE9wdGlvbnMKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBp
bXBvcnQgdXJscworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2lu
ZyBpbXBvcnQgbG9nLCBlcnJvcgorCisKK2NsYXNzIFVwZGF0ZUNocm9taXVtREVQUyhBYnN0cmFj
dFN0ZXApOgorICAgICMgTm90aWNlIHRoYXQgdGhpcyBtZXRob2QgdGhyb3dzIGxvdHMgb2YgZXhj
aXRpbmcgZXhjZXB0aW9ucyEKKyAgICBkZWYgX2ZldGNoX2xhc3Rfa25vd25fZ29vZF9yZXZpc2lv
bihzZWxmKToKKyAgICAgICAgcmV0dXJuIGludCh1cmxsaWIyLnVybG9wZW4odXJscy5jaHJvbWl1
bV9sa2dyX3VybCkucmVhZCgpKQorCisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CisgICAgICAg
IG5ld19jaHJvbWl1bV9yZXZpc2lvbiA9IHN0YXRlWyJjaHJvbWl1bV9yZXZpc2lvbiJdCisgICAg
ICAgIGlmIG5vdCBuZXdfY2hyb21pdW1fcmV2aXNpb246CisgICAgICAgICAgICBuZXdfY2hyb21p
dW1fcmV2aXNpb24gPSBzZWxmLl9mZXRjaF9sYXN0X2tub3duX2dvb2RfcmV2aXNpb24oKQorCisg
ICAgICAgIGRlcHMgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkuY2hyb21pdW1fZGVwcygpCisgICAg
ICAgIGN1cnJlbnRfY2hyb21pdW1fcmV2aXNpb24gPSBkZXBzLnJlYWRfdmFyaWFibGUoImNocm9t
aXVtX3JldiIpCisgICAgICAgIGlmIG5ld19jaHJvbWl1bV9yZXZpc2lvbiA8IGN1cnJlbnRfY2hy
b21pdW1fcmV2aXNpb246CisgICAgICAgICAgICBsb2coIkN1cnJlbnQgQ2hyb21pdW0gREVQUyBy
ZXZpc2lvbiAlcyBpcyBuZXdlciB0aGFuICVzLiIgJSAoY3VycmVudF9jaHJvbWl1bV9yZXZpc2lv
biwgbmV3X2Nocm9taXVtX3JldmlzaW9uKSkKKyAgICAgICAgICAgIG5ld19jaHJvbWl1bV9yZXZp
c2lvbiA9IHNlbGYuX3Rvb2wudXNlci5wcm9tcHQoIkVudGVyIG5ldyBjaHJvbWl1bSByZXZpc2lv
biAoZW50ZXIgbm90aGluZyB0byBjYW5jZWwpOlxuIikKKyAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICBuZXdfY2hyb21pdW1fcmV2aXNpb24gPSBpbnQobmV3X2Nocm9taXVtX3Jldmlz
aW9uKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIFR5cGVFcnJvcjoKKyAgICAgICAg
ICAgICAgICBuZXdfY2hyb21pdW1fcmV2aXNpb24gPSBOb25lCisgICAgICAgICAgICBpZiBub3Qg
bmV3X2Nocm9taXVtX3JldmlzaW9uOgorICAgICAgICAgICAgICAgIGVycm9yKCJVbmFibGUgdG8g
dXBkYXRlIENocm9taXVtIERFUFMiKQorICAgICAgICBsb2coIlVwZGF0aW5nIENocm9taXVtIERF
UFMgdG8gJXMiICUgbmV3X2Nocm9taXVtX3JldmlzaW9uKQorICAgICAgICBkZXBzLndyaXRlX3Zh
cmlhYmxlKCJjaHJvbWl1bV9yZXYiLCBuZXdfY2hyb21pdW1fcmV2aXNpb24pCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxp
ZGF0ZWNoYW5nZWxvZ3NfdW5pdHRlc3QucHkJKHJldmlzaW9uIDc2OTE5KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlY2hhbmdlbG9nc191bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOCBAQCBjbGFzcyBWYWxpZGF0ZUNoYW5nZUxvZ3NU
ZXN0KHVuaXR0ZXN0LlRlCiAgICAgICAgIGRpZmZfZmlsZS5saW5lcyA9IFsoc3RhcnRfbGluZSwg
c3RhcnRfbGluZSwgImZvbyIpXQogICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSBleHBlY3RlZF9z
dGRlcnIgPSAiIgogICAgICAgICBpZiBzaG91bGRfZmFpbCBhbmQgbm90IG5vbl9pbnRlcmFjdGl2
ZToKLSAgICAgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJPSyB0byBjb250aW51ZT9cbiIKLSAg
ICAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJUaGUgZGlmZiB0byBtb2NrL0NoYW5nZUxvZyBs
b29rcyB3cm9uZy4gIEFyZSB5b3Ugc3VyZSB5b3VyIENoYW5nZUxvZyBlbnRyeSBpcyBhdCB0aGUg
dG9wIG9mIHRoZSBmaWxlP1xuIgotICAgICAgICByZXN1bHQgPSBPdXRwdXRDYXB0dXJlKCkuYXNz
ZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5fY2hlY2tfY2hhbmdlbG9nX2RpZmYsIFtkaWZmX2ZpbGVd
LCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0
ZWRfc3RkZXJyKQorICAgICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIlRoZSBkaWZmIHRvIG1v
Y2svQ2hhbmdlTG9nIGxvb2tzIHdyb25nLiAgQXJlIHlvdSBzdXJlIHlvdXIgQ2hhbmdlTG9nIGVu
dHJ5IGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGU/XG5PSyB0byBjb250aW51ZT9cbiIKKyAgICAg
ICAgcmVzdWx0ID0gT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHN0ZXAuX2No
ZWNrX2NoYW5nZWxvZ19kaWZmLCBbZGlmZl9maWxlXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVk
X3N0ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3QgcmVzdWx0LCBzaG91bGRfZmFp
bCkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX2NoYW5nZWxvZ19kaWZmKHNlbGYpOgo=
</data>
<flag name="review"
          id="71904"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>