<?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>35460</bug_id>
          
          <creation_ts>2010-02-26 14:47:26 -0800</creation_ts>
          <short_desc>EWS should test patches with r+</short_desc>
          <delta_ts>2010-10-23 01:28:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>47869</dependson>
    
    <dependson>47940</dependson>
    
    <dependson>47943</dependson>
    
    <dependson>48093</dependson>
    
    <dependson>48171</dependson>
    
    <dependson>48173</dependson>
          <blocked>44292</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abecsi</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>ossy</cc>
    
    <cc>wsiegrist</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>194323</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-26 14:47:26 -0800</bug_when>
    <thetext>Contributors are surprised when the EWS doesn&apos;t process patches that reviewed before the EWS bots have a chance to run.  We should just run the patch and make folks happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213529</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-16 17:34:07 -0700</bug_when>
    <thetext>*** Bug 36302 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213535</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-16 17:50:26 -0700</bug_when>
    <thetext>See duplicate.  The limiting factor here is that it&apos;s difficult to get a list of r+&apos;d patches from bugzilla w/o making lots of queries.  Right now we make one query to get all r? patches:
https://bugs.webkit.org/request.cgi

To get all r+ patches we would have to make a query to:
http://webkit.org/pending-commit
and then fetch each bug to see which patches on it cause it to be in the bug list.

That would be a lot more load on bugzilla.  Since currently every EWS bot makes its own set of queries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213579</commentid>
    <comment_count>3</comment_count>
    <who name="William Siegrist">wsiegrist</who>
    <bug_when>2010-04-16 21:41:32 -0700</bug_when>
    <thetext>If you can easily demo what the load would be, I&apos;ll let you know if its going to slow down the server. I think the bug pages are pretty light, so this probably isn&apos;t a problem.  Ping me on IRC if/when you want to try this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284595</commentid>
    <comment_count>4</comment_count>
      <attachid>68723</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-24 12:03:01 -0700</bug_when>
    <thetext>Created attachment 68723
the fix, minus testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284596</commentid>
    <comment_count>5</comment_count>
      <attachid>68723</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-24 12:04:02 -0700</bug_when>
    <thetext>Comment on attachment 68723
the fix, minus testing

I can write some unit tests for this, and then we can land it and try it.  I don&apos;t expect it will send will&apos;s servers up in smoke, but it will be much lighter load once we move the EWS bots to use the feeder queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284599</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-24 12:06:25 -0700</bug_when>
    <thetext>I think that looking at request.cgi and making a new CGI script based on it to give exactly the right list would be possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294722</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-15 06:25:40 -0700</bug_when>
    <thetext>OK.  My current thoughts on design for the EWS feeder queue (which will be used to solve this).

1.  Add a page to queues.webkit.org, which will expose the last status message across all queues for a single patch. (machine readable.  The query probably has to be &quot;all status messages matching this patch id, limited to the last 1000&quot; and then we&apos;ll filter for just one of each.  I don&apos;t think GQL can do unique/group style queries).
2.  Add a page to queues.webkit.org which allows a bot (or a user) to submit any attachment id to all EWSes (using checkboxes in the form).  (Careful to limit it only to EWSes, but otherwise no error checking.)
3.  Have an EWS feeder pull down all r? patches (and at a less frequent interval, all r+ patches).
4.  The EWS feeder will submit each patch to EWSes after checking the last-status page.  only submitting it to EWSes which either have no status, or the last status is RETRY (this allows a user to submit a patch again after PASS/FAIL, but the bot to only submit when RETRY).
5.  Change /next-patch to remove the patch from the active-work-items, or add a new /patch-completed action to do so.
6. Remove the update-work-items code from the EWS bots.  &quot;Submitting&quot; is a non-destructive action.  Never to we write to the server the entire list of patches to process.  We only add with submit-to-ews and remove with /patch-completed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294723</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-15 06:27:49 -0700</bug_when>
    <thetext>Note that in the above proposal I&apos;m not polling for r+ patches.  By making the clients stop spamming the server&apos;s ActiveWorkItem list with a full new list everytime, we will end up processing r+ patches long after they may have been r+&apos;d.  We could add an optimization to remove patches from the list once their bug gest closed if we wanted to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294784</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-15 09:37:41 -0700</bug_when>
    <thetext>&gt; 1.  Add a page to queues.webkit.org, which will expose the last status message across all queues for a single patch. (machine readable.  The query probably has to be &quot;all status messages matching this patch id, limited to the last 1000&quot; and then we&apos;ll filter for just one of each.  I don&apos;t think GQL can do unique/group style queries).

This page isn&apos;t needed.

&gt; 2.  Add a page to queues.webkit.org which allows a bot (or a user) to submit any attachment id to all EWSes (using checkboxes in the form).  (Careful to limit it only to EWSes, but otherwise no error checking.)

This requires the server to know the global list of all EWS.  It should just add the attachment to the datastore as &quot;an attachment that once upon a time had an r?&quot;.

&gt; 3.  Have an EWS feeder pull down all r? patches (and at a less frequent interval, all r+ patches).

There&apos;s no need to poll for the r+ patches.  If the patch is only up for review for 30 seconds, its ok if we miss it.

&gt; 4.  The EWS feeder will submit each patch to EWSes after checking the last-status page.  only submitting it to EWSes which either have no status, or the last status is RETRY (this allows a user to submit a patch again after PASS/FAIL, but the bot to only submit when RETRY).

It doesn&apos;t need to check the last-status page.  It can cache things in memory to avoid spamming the server all the time.  The server can do the final dedup.

&gt; 5.  Change /next-patch to remove the patch from the active-work-items, or add a new /patch-completed action to do so.

In the first phase, we shouldn&apos;t need to worry about changing the mechanism by which the EWS bots avoid processing the same patch again.  We can support multiple bots in a separate patch.

&gt; 6. Remove the update-work-items code from the EWS bots.  &quot;Submitting&quot; is a non-destructive action.  Never to we write to the server the entire list of patches to process.  We only add with submit-to-ews and remove with /patch-completed.

Ok.  We want to make sure we can still generate the #n parts of the status bubbles, but it sounds like we&apos;ll have a way to do this from the other data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294822</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-15 11:06:34 -0700</bug_when>
    <thetext>(In reply to comment #9)

Thank you for the reply.  I was attempting to engage you in a discussion about this feature with my previous post and you took the bait!

So you&apos;re suggestion is that the server does the logic necessary to maintain the individual ActiveWorkItem lists.  Every time something submits a new attachment for EWS processing, the server adds to a (new) table of EWSWorkItems to process (the existing Attachment class has no table backing it), and then adds it to any ActiveWorkItem lists for the various queues (which they pull from already to do their processing).  We&apos;d need some additional logic whenever a queue sends its /item-completed message to remove the EWSWorkItem if all EWS queues have processed it.

I&apos;m not sure this is exactly the model you were proposing, but what I attempted to explain just now seems like it would work w/o the additional /last-status page I originally proposed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294828</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-15 11:13:10 -0700</bug_when>
    <thetext>One complication my original proposal was trying to solve was differentiating between when a user proposes we (re-)process a patch, vs. when the feeder queue submits a patch as &quot;btw, I&apos;ve seen this r? patch, you should look at it if you haven&apos;t already&quot;.

But I know realize that could be easily solved by either two different request types, or by a checkbox on the page.

When the server gets a submission from a user (a v2 feature), it needs to mark the EWSWorkItem as such, so that it knows to add the patch to the ActiveWorkItems, even if the Attachment object already shows status for that patch.

I think I have this straight in my head now.  I&apos;ll post a patch to solve this all this afternoon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294835</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-15 11:24:13 -0700</bug_when>
    <thetext>&gt; I think I have this straight in my head now.  I&apos;ll post a patch to solve this all this afternoon.

Ok.  I didn&apos;t understand your explanation, I think partially because you&apos;re using the word &quot;table&quot; to mean something other than a database table.  Maybe the patch itself will be clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295908</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-18 19:04:39 -0700</bug_when>
    <thetext>The first step is now posted on bug 47869.

After that lands, I just need to add a /patch-completed handler, and then do the webkit-patch parts of the change (which should be pretty small).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296616</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-19 20:32:23 -0700</bug_when>
    <thetext>There were several other patches too, but I forgot to add them to the dependency chain.

Anyway, the final piece is ready now.  I&apos;ll upload a patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296617</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-19 20:33:52 -0700</bug_when>
    <thetext>Bah.  Uploading is blocked by bug 47940.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296643</commentid>
    <comment_count>16</comment_count>
      <attachid>71251</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-19 22:29:54 -0700</bug_when>
    <thetext>Created attachment 71251
manually created patch file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296644</commentid>
    <comment_count>17</comment_count>
      <attachid>71251</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-19 22:33:15 -0700</bug_when>
    <thetext>Comment on attachment 71251
manually created patch file

ok.  Looks kind of obvious at the end, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296658</commentid>
    <comment_count>18</comment_count>
      <attachid>71251</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-19 23:56:27 -0700</bug_when>
    <thetext>Comment on attachment 71251
manually created patch file

Rejecting patch 71251 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=abarth-cq-sl&apos;, &apos;build-and-test&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--test&apos;, &apos;--quiet&apos;, &apos;--non-interactive&apos;]&quot; exit_code: 2
Last 500 characters of output:
bKitTools/Scripts/webkitpy/tool/commands/queuestest.py&quot;, line 77, in assert_outputs
    expected_exception=exception)
  File &quot;/Users/abarth/git/webkit-queue/WebKitTools/Scripts/webkitpy/common/system/outputcapture.py&quot;, line 65, in assert_outputs
    testcase.assertEqual(stderr_string, expected_stderr)
AssertionError: &apos;&apos; != &apos;MOCK: update_work_items: style-queue [103]\n&apos;

----------------------------------------------------------------------
Ran 645 tests in 34.472s

FAILED (failures=8, errors=1)

Full output: http://queues.webkit.org/results/4541008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296820</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-20 09:05:34 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 71251 [details])
&gt; ok.  Looks kind of obvious at the end, no?

Yes, the patch doesn&apos;t do justice to all the underlying work. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296822</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-20 09:08:09 -0700</bug_when>
    <thetext>Oh, I should also note for those of you playing along at home:

This does not mean that existing r+ patches will get fed to the EWS queues.  But any patch which is r? for more than 30 seconds will always get processed now. Previously as soon as you marked it r+ the queues would forget about it.

It is also now possible under this infrastructure to submit any patch for review.  r?, r+, r- or not.

It is also possible under this infrastructure to run more than one copy of any EWS bot (there is a bug about doing that for the win-ews which I should now dup to this one).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296994</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-20 13:46:06 -0700</bug_when>
    <thetext>Bah.  Got committed as r70171 but git got confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297155</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-20 17:11:56 -0700</bug_when>
    <thetext>Committed r70193: &lt;http://trac.webkit.org/changeset/70193&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297993</commentid>
    <comment_count>23</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-10-22 08:41:45 -0700</bug_when>
    <thetext>After this patch, all EWS got crazy:

Chromium Linux EWS - 187 pending
Qt EWS - 9 pending
Gtk EWS - 198 pending
Mac EWS - 114 pending
Win EWS - 216 pending
Chromium Mac EWS - 157 pending

The problem is that EWS bots try to test r+ -ed and landed 
patches and it causes conflict like this:

Patch 71537 from bug 48116:  20 minutes ago Error: Failed to run &quot;[u&apos;/home/webkit/WebKit-qt-ews/WebKitTools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 2  [results]

I think EWS shouldn&apos;t run when the bug is closed or resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298030</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-22 10:14:47 -0700</bug_when>
    <thetext>Yup. I&apos;m aware of the issues. Sorry. I should have sent an announcement to Webkit-dev that the boys were sick. I wrote a patch or the closed/obsolete issue last night. (See bug 48093) ill have the bots healthy by Monday.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68723</attachid>
            <date>2010-09-24 12:03:01 -0700</date>
            <delta_ts>2010-10-19 22:29:54 -0700</delta_ts>
            <desc>the fix, minus testing</desc>
            <filename>bug-35460-20100924120300.patch</filename>
            <type>text/plain</type>
            <size>1473</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3OWVkMWU5MWRiZTNhMTZhNWFiNTE1YzVjYWYzZmM5YTgyM2VlMjhhLi5lM2VhOTg5
YWI4YTBhOTA1NjA1YjhlMzRkYzU5N2IwZTI3MTBmNWEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDktMjQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVXUyBzaG91bGQgdGVzdCBwYXRj
aGVzIHdpdGggcisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1NDYwCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVl
dWVzLnB5OgorCiAyMDEwLTA5LTI0ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQppbmRleCA4MGZk
MmVhMTJlNjI0ZDZkMjYwYTViMDAxYzVkOWJiNWY4ZmUzNmM0Li45MmQ0YzFjNzhhZmNhOTUzMmRk
MzIzYWE4MGU1YmVmNWM3ZWNiYTFmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKQEAgLTMzNiw3ICszMzYsOSBAQCBjbGFz
cyBBYnN0cmFjdFJldmlld1F1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgUGVyc2lzdGVudFBhdGNo
Q29sbGVjdGlvbkRlbGVnYXRlLAogICAgICAgICByZXR1cm4gc2VsZi5uYW1lCiAKICAgICBkZWYg
ZmV0Y2hfcG90ZW50aWFsX3BhdGNoX2lkcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rv
b2wuYnVncy5xdWVyaWVzLmZldGNoX2F0dGFjaG1lbnRfaWRzX2Zyb21fcmV2aWV3X3F1ZXVlKCkK
KyAgICAgICAgYXdhaXRpbmdfcmV2aWV3ID0gc2VsZi5fdG9vbC5idWdzLnF1ZXJpZXMuZmV0Y2hf
YXR0YWNobWVudF9pZHNfZnJvbV9yZXZpZXdfcXVldWUoKQorICAgICAgICBhd2FpdGluZ19jb21t
aXQgPSBbcGF0Y2guaWQoKSBmb3IgcGF0Y2ggaW4gc2VsZi5fdG9vbC5idWdzLnF1ZXJpZXMuZmV0
Y2hfcGF0Y2hlc19mcm9tX3BlbmRpbmdfY29tbWl0X2xpc3QoKV0KKyAgICAgICAgcmV0dXJuIGF3
YWl0aW5nX3JldmlldyArIGF3YWl0aW5nX2NvbW1pdAogCiAgICAgZGVmIHN0YXR1c19zZXJ2ZXIo
c2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl90b29sLnN0YXR1c19zZXJ2ZXIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71251</attachid>
            <date>2010-10-19 22:29:54 -0700</date>
            <delta_ts>2010-10-20 10:48:15 -0700</delta_ts>
            <desc>manually created patch file</desc>
            <filename>test.patch</filename>
            <type>text/plain</type>
            <size>12775</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiZGZmNzc0Li5mN2U3NWMxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTAtMTAt
MTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVXUyBzaG91bGQgdGVzdCBwYXRjaGVzIHdpdGgg
cisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NDYw
CisKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9zdWJtaXR0b2V3cy5weToK
KyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9xdWV1ZXMucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGNvbGxlY3Rpb24ucHk6IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGNvbGxlY3Rpb25fdW5pdHRl
c3QucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3F1ZXVlcy5weToKKworMjAxMC0xMC0xOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+
CisKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KIAogICAgICAgICBUZWFjaCBmZWVk
ZXItcXVldWUgaG93IHRvIGZlZWQgdGhlIEVXUyBib3RzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9zdWJtaXR0b2V3cy5weSBiL1dlYktpdFRvb2xz
L1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3N1Ym1pdHRvZXdzLnB5CmluZGV4IDExNTk4N2Mu
LjNiYTQzNzMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRs
ZXJzL3N1Ym1pdHRvZXdzLnB5CisrKyBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hh
bmRsZXJzL3N1Ym1pdHRvZXdzLnB5CkBAIC0zOSw2ICszOSw5IEBAIGNsYXNzIFN1Ym1pdFRvRVdT
KFVwZGF0ZUJhc2UpOgogICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSh0ZW1wbGF0ZS5y
ZW5kZXIoInRlbXBsYXRlcy9zdWJtaXR0b2V3cy5odG1sIiwgTm9uZSkpCiAKICAgICBkZWYgX3No
b3VsZF9hZGRfdG9fZXdzX3F1ZXVlKHNlbGYsIHF1ZXVlLCBhdHRhY2htZW50KToKKyAgICAgICAg
IyBUaGlzIGFzc2VydCgpIGlzIGhlcmUgdG8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBzdWJtaXR0aW5n
IHRvIHRoZSBjb21taXQtcXVldWUuCisgICAgICAgICMgVGhlIGNvbW1pdC1xdWV1ZSBjbGllbnRz
IGNoZWNrIGVhY2ggcGF0Y2ggYW55d2F5LCBidXQgdGhlcmUgaXMgbm90IHNlbnNlCisgICAgICAg
ICMgaW4gYWRkaW5nIHRoaW5ncyB0byB0aGUgY29tbWl0LXF1ZXVlIHdoZW4gdGhleSB3b24ndCBi
ZSBwcm9jZXNzZWQgYnkgaXQuCiAgICAgICAgIGFzc2VydChxdWV1ZS5pc19ld3MoKSkKICAgICAg
ICAgbGF0ZXN0X3N0YXR1cyA9IGF0dGFjaG1lbnQuc3RhdHVzX2Zvcl9xdWV1ZShxdWV1ZSkKICAg
ICAgICAgaWYgbm90IGxhdGVzdF9zdGF0dXM6CkBAIC01MSw3ICs1NCw3IEBAIGNsYXNzIFN1Ym1p
dFRvRVdTKFVwZGF0ZUJhc2UpOgogICAgICAgICByZXR1cm4gbGF0ZXN0X3N0YXR1cy5pc19yZXRy
eV9yZXF1ZXN0KCkKIAogICAgIGRlZiBfYWRkX2F0dGFjaG1lbnRfdG9fZXdzX3F1ZXVlcyhzZWxm
LCBhdHRhY2htZW50KToKLSAgICAgICAgZm9yIHF1ZXVlIGluIFF1ZXVlLmFsbF9ld3MoKToKKyAg
ICAgICAgZm9yIHF1ZXVlIGluIFF1ZXVlLmFsbF9ld3MoKTogICMgYWxsX2V3cygpIGN1cnJlbnRs
eSBpbmNsdWRlcyB0aGUgc3R5bGUtcXVldWUKICAgICAgICAgICAgIGlmIHNlbGYuX3Nob3VsZF9h
ZGRfdG9fZXdzX3F1ZXVlKHF1ZXVlLCBhdHRhY2htZW50KToKICAgICAgICAgICAgICAgICBxdWV1
ZS53b3JrX2l0ZW1zKCkuYWRkX3dvcmtfaXRlbShhdHRhY2htZW50LmlkKQogCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9xdWV1ZXMucHkgYi9XZWJLaXRU
b29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9xdWV1ZXMucHkKaW5kZXggMmZhNTdiNC4uMWQ0
NmY4OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvcXVl
dWVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlcy5w
eQpAQCAtMTA1LDQgKzEwNSw5IEBAIGNsYXNzIFF1ZXVlKG9iamVjdCk6CiAgICAgICAgIHJldHVy
biBzZWxmLl9kYXNoX3JlZ2V4cC5zdWIoIl8iLCBzZWxmLl9uYW1lKQogCiAgICAgZGVmIGlzX2V3
cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUuZW5kc3dpdGgoIi1ld3MiKQorICAg
ICAgICAjIE5vdGU6IFRoZSBzdHlsZS1xdWV1ZSBpcyBqdXN0IGxpa2UgYW4gRVdTIGluIHRoYXQg
aXQgaGFzIGFuIEVXUworICAgICAgICAjIGJ1YmJsZSwgYW5kIGl0IHdvcmtzIG9mZiBvZiB0aGUg
cj8gcGF0Y2hlcy4gIElmIGF0IHNvbWUgbGF0ZXIKKyAgICAgICAgIyBwb2ludCBjb2RlIHdhbnRz
IHRvIG5vdCB0cmVhdCB0aGUgc3R5bGUtcXVldWUgYXMgYW4gRVdTCisgICAgICAgICMgKGUuZy4g
ZXhwZWN0aW5nIGlzX2V3cygpIHF1ZXVlcyB0byBoYXZlIGJ1aWxkIHJlc3VsdHM/KQorICAgICAg
ICAjIHRoZW4gd2Ugc2hvdWxkIGZpeCBhbGwgY2FsbGVycyBhbmQgY2hhbmdlIHRoaXMgY2hlY2su
CisgICAgICAgIHJldHVybiBzZWxmLl9uYW1lLmVuZHN3aXRoKCItZXdzIikgb3Igc2VsZi5fbmFt
ZSA9PSAic3R5bGUtcXVldWUiCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L3BhdGNoY29sbGVjdGlvbi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvcGF0Y2hjb2xsZWN0aW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2MTAwY2Y4Li4wMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvcGF0Y2hjb2xsZWN0aW9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAs
MCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIyAKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMgCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1jbGFzcyBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0
aW9uRGVsZWdhdGU6Ci0gICAgZGVmIGNvbGxlY3Rpb25fbmFtZShzZWxmKToKLSAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCi0KLSAg
ICBkZWYgZmV0Y2hfcG90ZW50aWFsX3BhdGNoX2lkcyhzZWxmKToKLSAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCi0KLSAgICBkZWYg
c3RhdHVzX3NlcnZlcihzZWxmKToKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwg
InN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCi0KLSAgICBkZWYgaXNfdGVybWluYWxfc3RhdHVz
KHNlbGYsIHN0YXR1cyk6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJj
bGFzc2VzIG11c3QgaW1wbGVtZW50IgotCi0KLWNsYXNzIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rp
b246Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlbGVnYXRlKToKLSAgICAgICAgc2VsZi5fZGVs
ZWdhdGUgPSBkZWxlZ2F0ZQotICAgICAgICBzZWxmLl9uYW1lID0gc2VsZi5fZGVsZWdhdGUuY29s
bGVjdGlvbl9uYW1lKCkKLSAgICAgICAgc2VsZi5fc3RhdHVzID0gc2VsZi5fZGVsZWdhdGUuc3Rh
dHVzX3NlcnZlcigpCi0gICAgICAgIHNlbGYuX3N0YXR1c19jYWNoZSA9IHt9Ci0KLSAgICBkZWYg
X2NhY2hlZF9zdGF0dXMoc2VsZiwgcGF0Y2hfaWQpOgotICAgICAgICBjYWNoZWQgPSBzZWxmLl9z
dGF0dXNfY2FjaGUuZ2V0KHBhdGNoX2lkKQotICAgICAgICBpZiBjYWNoZWQ6Ci0gICAgICAgICAg
ICByZXR1cm4gY2FjaGVkCi0gICAgICAgIHN0YXR1cyA9IHNlbGYuX3N0YXR1cy5wYXRjaF9zdGF0
dXMoc2VsZi5fbmFtZSwgcGF0Y2hfaWQpCi0gICAgICAgIGlmIHN0YXR1cyBhbmQgc2VsZi5fZGVs
ZWdhdGUuaXNfdGVybWluYWxfc3RhdHVzKHN0YXR1cyk6Ci0gICAgICAgICAgICBzZWxmLl9zdGF0
dXNfY2FjaGVbcGF0Y2hfaWRdID0gc3RhdHVzCi0gICAgICAgIHJldHVybiBzdGF0dXMKLQotICAg
IGRlZiBfaXNfYWN0aXZlX3BhdGNoX2lkKHNlbGYsIHBhdGNoX2lkKToKLSAgICAgICAgIiIiQWN0
aXZlIHBhdGNoZXMgYXJlIHBhdGNoZXMgd2FpdGluZyB0byBiZSBwcm9jZXNzZWQgZnJvbSB0aGlz
IGNvbGxlY3Rpb24uIiIiCi0gICAgICAgIHN0YXR1cyA9IHNlbGYuX2NhY2hlZF9zdGF0dXMocGF0
Y2hfaWQpCi0gICAgICAgIHJldHVybiBub3Qgc3RhdHVzIG9yIG5vdCBzZWxmLl9kZWxlZ2F0ZS5p
c190ZXJtaW5hbF9zdGF0dXMoc3RhdHVzKQotCi0gICAgZGVmIF9mZXRjaF9hY3RpdmVfcGF0Y2hf
aWRzKHNlbGYpOgotICAgICAgICBwYXRjaF9pZHMgPSBzZWxmLl9kZWxlZ2F0ZS5mZXRjaF9wb3Rl
bnRpYWxfcGF0Y2hfaWRzKCkKLSAgICAgICAgcmV0dXJuIGZpbHRlcihsYW1iZGEgcGF0Y2hfaWQ6
IHNlbGYuX2lzX2FjdGl2ZV9wYXRjaF9pZChwYXRjaF9pZCksIHBhdGNoX2lkcykKLQotICAgIGRl
ZiBuZXh0KHNlbGYpOgotICAgICAgICAjIE5vdGU6IFdlIG9ubHkgZmV0Y2ggYWxsIHRoZSBpZHMg
c28gd2UgY2FuIHBvc3QgdGhlbSBiYWNrIHRvIHRoZSBzZXJ2ZXIuCi0gICAgICAgICMgVGhpcyB3
aWxsIGdvIGF3YXkgb25jZSB3ZSBoYXZlIGEgZmVlZGVyIHF1ZXVlIGFuZCBhbGwgb3RoZXIgcXVl
dWVzIGFyZQotICAgICAgICAjIGp1c3QgcHVsbGluZyB0aGVpciBuZXh0IHdvcmsgaXRlbSBmcm9t
IHRoZSBzZXJ2ZXIuCi0gICAgICAgIHBhdGNoX2lkcyA9IHNlbGYuX2ZldGNoX2FjdGl2ZV9wYXRj
aF9pZHMoKQotICAgICAgICAjIEZJWE1FOiBXZSdyZSBhc3N1bWluZyBzZWxmLl9uYW1lIGlzIGEg
dmFsaWQgcXVldWUtbmFtZS4KLSAgICAgICAgc2VsZi5fc3RhdHVzLnVwZGF0ZV93b3JrX2l0ZW1z
KHNlbGYuX25hbWUsIHBhdGNoX2lkcykKLSAgICAgICAgaWYgbm90IHBhdGNoX2lkczoKLSAgICAg
ICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBwYXRjaF9pZHNbMF0KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hjb2xsZWN0aW9u
X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRj
aGNvbGxlY3Rpb25fdW5pdHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRl
YzZlMjUuLjAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Jv
dC9wYXRjaGNvbGxlY3Rpb25fdW5pdHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCww
IEBACi0jIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jIAotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIyAKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSB3ZWJraXRw
eS50b29sLmJvdC5wYXRjaGNvbGxlY3Rpb24gaW1wb3J0IFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rp
b24sIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb25EZWxlZ2F0ZQotZnJvbSB3ZWJraXRweS50aGly
ZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKLQotCi1jbGFzcyBUZXN0UGVyc2lzdGVudFBhdGNoQ29s
bGVjdGlvbkRlbGVnYXRlKFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb25EZWxlZ2F0ZSk6Ci0gICAg
ZGVmIGNvbGxlY3Rpb25fbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICJ0ZXN0LWNvbGxlY3Rp
b24iCi0KLSAgICBkZWYgZmV0Y2hfcG90ZW50aWFsX3BhdGNoX2lkcyhzZWxmKToKLSAgICAgICAg
cmV0dXJuIFs0MiwgMTkyLCA4N10KLQotICAgIGRlZiBzdGF0dXNfc2VydmVyKHNlbGYpOgotICAg
ICAgICByZXR1cm4gTW9jaygpCi0KLSAgICBkZWYgaXNfdGVybWluYWxfc3RhdHVzKHNlbGYsIHN0
YXR1cyk6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWNsYXNzIFBlcnNpc3RlbnRQYXRjaENv
bGxlY3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9uZXh0KHNlbGYp
OgotICAgICAgICBjb2xsZWN0aW9uID0gUGVyc2lzdGVudFBhdGNoQ29sbGVjdGlvbihUZXN0UGVy
c2lzdGVudFBhdGNoQ29sbGVjdGlvbkRlbGVnYXRlKCkpCi0gICAgICAgIGNvbGxlY3Rpb24ubmV4
dCgpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3F1ZXVlcy5weQppbmRleCBjYTMwNjZiLi43YjMwMDJhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKQEAgLTQ2LDExICs0
NiwxMSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGlt
cG9ydCBlcnJvciwgbG9nCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc3RlcHNlcXVlbmNl
IGltcG9ydCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIKIGZyb20gd2Via2l0cHkudG9vbC5ib3Qu
Y29tbWl0cXVldWV0YXNrIGltcG9ydCBDb21taXRRdWV1ZVRhc2ssIENvbW1pdFF1ZXVlVGFza0Rl
bGVnYXRlCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmZlZWRlcnMgaW1wb3J0IENvbW1pdFF1ZXVl
RmVlZGVyLCBFV1NGZWVkZXIKLWZyb20gd2Via2l0cHkudG9vbC5ib3QucGF0Y2hjb2xsZWN0aW9u
IGltcG9ydCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0aW9uLCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0
aW9uRGVsZWdhdGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucXVldWVlbmdpbmUgaW1wb3J0IFF1
ZXVlRW5naW5lLCBRdWV1ZUVuZ2luZURlbGVnYXRlCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1h
ciBpbXBvcnQgcGx1cmFsaXplCiBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBp
bXBvcnQgQ29tbWFuZCwgVHJ5QWdhaW4KIAorCiBjbGFzcyBBYnN0cmFjdFF1ZXVlKENvbW1hbmQs
IFF1ZXVlRW5naW5lRGVsZWdhdGUpOgogICAgIHdhdGNoZXJzID0gWwogICAgIF0KQEAgLTMyNyw2
ICszMjcsNyBAQCBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1
ZW5jZUVycm9ySGFuZGxlciwgQ29tbWl0UXVldWVUYXNrRAogICAgICAgICByYWlzZSBUcnlBZ2Fp
bigpCiAKIAorIyBGSVhNRTogQWxsIHRoZSBSaWV0dmVsZCBjb2RlIGlzIG5vIGxvbmdlciB1c2Vk
IGFuZCBzaG91bGQgYmUgZGVsZXRlZC4KIGNsYXNzIFJpZXR2ZWxkVXBsb2FkUXVldWUoQWJzdHJh
Y3RQYXRjaFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIpOgogICAgIG5hbWUgPSAicmll
dHZlbGQtdXBsb2FkLXF1ZXVlIgogCkBAIC0zNzIsNDEgKzM3MywyNyBAQCBjbGFzcyBSaWV0dmVs
ZFVwbG9hZFF1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVy
KToKICAgICAgICAgY2xzLl9yZWplY3RfcGF0Y2godG9vbCwgc3RhdGVbInBhdGNoIl0uaWQoKSkK
IAogCi1jbGFzcyBBYnN0cmFjdFJldmlld1F1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgUGVyc2lz
dGVudFBhdGNoQ29sbGVjdGlvbkRlbGVnYXRlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIpOgor
Y2xhc3MgQWJzdHJhY3RSZXZpZXdRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5j
ZUVycm9ySGFuZGxlcik6CiAgICAgIiIiVGhpcyBpcyB0aGUgYmFzZS1jbGFzcyBmb3IgdGhlIEVX
UyBxdWV1ZXMgYW5kIHRoZSBzdHlsZS1xdWV1ZS4iIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwg
b3B0aW9ucz1Ob25lKToKICAgICAgICAgQWJzdHJhY3RQYXRjaFF1ZXVlLl9faW5pdF9fKHNlbGYs
IG9wdGlvbnMpCiAKICAgICBkZWYgcmV2aWV3X3BhdGNoKHNlbGYsIHBhdGNoKToKLSAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCi0K
LSAgICAjIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb25EZWxlZ2F0ZSBtZXRob2RzCi0KLSAgICBk
ZWYgY29sbGVjdGlvbl9uYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5uYW1lCi0KLSAg
ICBkZWYgZmV0Y2hfcG90ZW50aWFsX3BhdGNoX2lkcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3Rvb2wuYnVncy5xdWVyaWVzLmZldGNoX2F0dGFjaG1lbnRfaWRzX2Zyb21fcmV2aWV3X3F1
ZXVlKCkKLQotICAgIGRlZiBzdGF0dXNfc2VydmVyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5fdG9vbC5zdGF0dXNfc2VydmVyCi0KLSAgICBkZWYgaXNfdGVybWluYWxfc3RhdHVzKHNlbGYs
IHN0YXR1cyk6Ci0gICAgICAgIHJldHVybiBzdGF0dXMgPT0gIlBhc3MiIG9yIHN0YXR1cyA9PSAi
RmFpbCIgb3Igc3RhdHVzLnN0YXJ0c3dpdGgoIkVycm9yOiIpCisgICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQogCiAgICAgIyBBYnN0
cmFjdFBhdGNoUXVldWUgbWV0aG9kcwogCiAgICAgZGVmIGJlZ2luX3dvcmtfcXVldWUoc2VsZik6
CiAgICAgICAgIEFic3RyYWN0UGF0Y2hRdWV1ZS5iZWdpbl93b3JrX3F1ZXVlKHNlbGYpCi0gICAg
ICAgIHNlbGYuX3BhdGNoZXMgPSBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0aW9uKHNlbGYpCiAKICAg
ICBkZWYgbmV4dF93b3JrX2l0ZW0oc2VsZik6Ci0gICAgICAgIHBhdGNoX2lkID0gc2VsZi5fcGF0
Y2hlcy5uZXh0KCkKLSAgICAgICAgaWYgcGF0Y2hfaWQ6Ci0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQocGF0Y2hfaWQpCisgICAgICAgIHBhdGNoX2lk
ID0gc2VsZi5fZmV0Y2hfbmV4dF93b3JrX2l0ZW0oKQorICAgICAgICBpZiBub3QgcGF0Y2hfaWQ6
CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5fdG9vbC5idWdz
LmZldGNoX2F0dGFjaG1lbnQocGF0Y2hfaWQpCiAKICAgICBkZWYgc2hvdWxkX3Byb2NlZWRfd2l0
aF93b3JrX2l0ZW0oc2VsZiwgcGF0Y2gpOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCiAKICAgICBkZWYgcHJvY2Vz
c193b3JrX2l0ZW0oc2VsZiwgcGF0Y2gpOgogICAgICAgICB0cnk6CkBAIC00MTgsNiArNDA1LDgg
QEAgY2xhc3MgQWJzdHJhY3RSZXZpZXdRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFBlcnNpc3Rl
bnRQYXRjaENvbGxlY3Rpb25EZWxlZ2F0ZSwKICAgICAgICAgICAgIGlmIGUuZXhpdF9jb2RlICE9
IFF1ZXVlRW5naW5lLmhhbmRsZWRfZXJyb3JfY29kZToKICAgICAgICAgICAgICAgICBzZWxmLl9k
aWRfZmFpbChwYXRjaCkKICAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgZmluYWxseToKKyAg
ICAgICAgICAgIHNlbGYuX3JlbGVhc2Vfd29ya19pdGVtKHBhdGNoKQogCiAgICAgZGVmIGhhbmRs
ZV91bmV4cGVjdGVkX2Vycm9yKHNlbGYsIHBhdGNoLCBtZXNzYWdlKToKICAgICAgICAgbG9nKG1l
c3NhZ2UpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>