<?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>101512</bug_id>
          
          <creation_ts>2012-11-07 14:37:20 -0800</creation_ts>
          <short_desc>Move empty loading to DocumentLoader, simplify FrameLoader::init()</short_desc>
          <delta_ts>2012-11-30 07:30:52 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102413</dependson>
    
    <dependson>102710</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>dglazkov</cc>
    
    <cc>naginenis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>761063</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-07 14:37:20 -0800</bug_when>
    <thetext>The logic for loading an empty main resource is spread across several functions in MainResourceLoader.  It can be done in about 5 lines in DocumentLoader::startLoadingMainResource(), without creating a MainResourceLoader.  As an added bonus, it makes it very simple to treat a Frame&apos;s initial empty document much more like a normal empty load, reducing code in FrameLoader::init().

The downside is that there will no longer be FrameLoaderClient calls for empty loads, but those would be going away in https://bugs.webkit.org/show_bug.cgi?id=49246 anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761069</commentid>
    <comment_count>1</comment_count>
      <attachid>172875</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-07 14:44:05 -0800</bug_when>
    <thetext>Created attachment 172875
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761102</commentid>
    <comment_count>2</comment_count>
      <attachid>172875</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 15:26:32 -0800</bug_when>
    <thetext>Comment on attachment 172875
patch

Wow, this patch is really cool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761106</commentid>
    <comment_count>3</comment_count>
      <attachid>172875</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 15:29:29 -0800</bug_when>
    <thetext>Comment on attachment 172875
patch

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

&gt; LayoutTests/http/tests/loading/redirect-methods-expected.txt:-9
&gt; -about:blank - willSendRequest &lt;NSURLRequest URL about:blank, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method GET&gt; redirectResponse (null)
&gt; -about:blank - didReceiveResponse &lt;NSURLResponse about:blank, http status code 0&gt;

Is it ok that we&apos;re dropping these callbacks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761136</commentid>
    <comment_count>4</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-07 16:09:05 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 172875 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172875&amp;action=review
&gt; 
&gt; &gt; LayoutTests/http/tests/loading/redirect-methods-expected.txt:-9
&gt; &gt; -about:blank - willSendRequest &lt;NSURLRequest URL about:blank, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method GET&gt; redirectResponse (null)
&gt; &gt; -about:blank - didReceiveResponse &lt;NSURLResponse about:blank, http status code 0&gt;
&gt; 
&gt; Is it ok that we&apos;re dropping these callbacks?

I haven&apos;t found any problems with it between this patch and my experiments with caching main resources, but I wouldn&apos;t call that definitive proof.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761281</commentid>
    <comment_count>5</comment_count>
      <attachid>172875</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-07 19:09:53 -0800</bug_when>
    <thetext>Comment on attachment 172875
patch

Attachment 172875 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14766282

New failing tests:
fast/loader/javascript-url-iframe-remove-on-navigate.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762088</commentid>
    <comment_count>6</comment_count>
      <attachid>172875</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 12:54:07 -0800</bug_when>
    <thetext>Comment on attachment 172875
patch

Attachment 172875 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14764689

New failing tests:
http/tests/navigation/new-window-redirect-history.html
fast/frames/frame-limit.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762195</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-08 14:36:13 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 172875 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172875&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/http/tests/loading/redirect-methods-expected.txt:-9
&gt; &gt; &gt; -about:blank - willSendRequest &lt;NSURLRequest URL about:blank, main document URL http://127.0.0.1:8000/loading/redirect-methods.html, http method GET&gt; redirectResponse (null)
&gt; &gt; &gt; -about:blank - didReceiveResponse &lt;NSURLResponse about:blank, http status code 0&gt;
&gt; &gt; 
&gt; &gt; Is it ok that we&apos;re dropping these callbacks?
&gt; 
&gt; I haven&apos;t found any problems with it between this patch and my experiments with caching main resources, but I wouldn&apos;t call that definitive proof.

FWIW, we had *a LOT* of fallout from dropping callbacks for the empty document load in breaking both Safari and many 3rd party WebKit apps.

I&apos;m not sure if this is okay, but I&apos;m also not sure if it&apos;s not okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762196</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-08 14:36:55 -0800</bug_when>
    <thetext>Is this groundwork for 49246?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762258</commentid>
    <comment_count>9</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-08 15:47:21 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Is this groundwork for 49246?

Partially. 49246 as currently written drops the empty load callbacks, so it&apos;ll trim down the diff.

This is a mostly separate patch that came out of studying this code carefully in writing 49246.

(In reply to comment #7)
&gt; 
&gt; FWIW, we had *a LOT* of fallout from dropping callbacks for the empty document load in breaking both Safari and many 3rd party WebKit apps.
&gt; 
&gt; I&apos;m not sure if this is okay, but I&apos;m also not sure if it&apos;s not okay.

Interesting. Do you have any suggestions where I should look for fallout from this patch, or references to the previous breakages?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762267</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-08 15:53:06 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; 
&gt; &gt; FWIW, we had *a LOT* of fallout from dropping callbacks for the empty document load in breaking both Safari and many 3rd party WebKit apps.
&gt; &gt; 
&gt; &gt; I&apos;m not sure if this is okay, but I&apos;m also not sure if it&apos;s not okay.
&gt; 
&gt; Interesting. Do you have any suggestions where I should look for fallout from this patch, or references to the previous breakages?

I asked Anders to take a look, and he remembers that the fallout we had was from getting *too many* callbacks on the empty document, not getting too few.  If that&apos;s the case, then this is potentially an improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762296</commentid>
    <comment_count>11</comment_count>
      <attachid>173142</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-08 16:17:25 -0800</bug_when>
    <thetext>Created attachment 173142
fix tests

I&apos;m not sure this patch fixes *all* the tests, so uploading without r? to ask EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762825</commentid>
    <comment_count>12</comment_count>
      <attachid>173142</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-09 04:28:51 -0800</bug_when>
    <thetext>Comment on attachment 173142
fix tests

Attachment 173142 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14770597

New failing tests:
fast/loader/javascript-url-iframe-remove-on-navigate.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763074</commentid>
    <comment_count>13</comment_count>
      <attachid>173142</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-09 09:16:22 -0800</bug_when>
    <thetext>Comment on attachment 173142
fix tests

Attachment 173142 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14771719

New failing tests:
fast/frames/frame-limit.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764749</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-12 13:30:13 -0800</bug_when>
    <thetext>&gt; fast/frames/frame-limit.html

I was not able to reproduce this failure.  I wonder if its timing-related somehow given that this test is marked as timing out in Debug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764791</commentid>
    <comment_count>15</comment_count>
      <attachid>173718</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-12 13:57:10 -0800</bug_when>
    <thetext>Created attachment 173718
EWS experiment #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765725</commentid>
    <comment_count>16</comment_count>
      <attachid>173718</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-13 10:01:07 -0800</bug_when>
    <thetext>Comment on attachment 173718
EWS experiment #2

Attachment 173718 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14810934

New failing tests:
fast/loader/javascript-url-iframe-remove-on-navigate.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766117</commentid>
    <comment_count>17</comment_count>
      <attachid>174010</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-13 15:40:41 -0800</bug_when>
    <thetext>Created attachment 174010
patch #2

I got the mac crash to repro some locally, and it appears it was related to willSendRequest() nulling out a ResourceRequest for a main resource.  Currently, willSendRequest() null the ResourceRequest functins exactly the same as an empty url getting passed in from the beginning.  I can think of three ways to resolve this:

1. Call willSendRequest() from startLoadingMainResource() for the initial load, rather than in MainResourceLoader.
2. Check whether willSendRequest() cancelled the load in MainResourceLoader, and fallback to empty loading in DocumentLoader.
3. Keep empty loading back to MainResourceLoader, scrapping the FrameLoader::init() cleanup.

This patch implements #2.  It seems ok, but it&apos;s not quite as clean as I was hoping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766456</commentid>
    <comment_count>18</comment_count>
      <attachid>174010</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 22:49:28 -0800</bug_when>
    <thetext>Comment on attachment 174010
patch #2

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

Overall, I think this patch is worth doing.  The improvement to FrameLoader::init is really compelling.  The more stuff we do in init, the more code has to be aware of its not-quite-consistent states.

&gt; Source/WebCore/loader/MainResourceLoader.cpp:631
&gt; +    willSendRequest(request, ResourceResponse());

I see.  This feels a bit sub-optimal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766561</commentid>
    <comment_count>19</comment_count>
      <attachid>174010</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 00:37:03 -0800</bug_when>
    <thetext>Comment on attachment 174010
patch #2

Attachment 174010 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14833193

New failing tests:
fast/loader/onload-willSendRequest-null-for-frame.html
plugins/plugin-document-willSendRequest-null.html
fast/loader/javascript-url-iframe-remove-on-navigate.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767156</commentid>
    <comment_count>20</comment_count>
      <attachid>174220</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-14 12:12:27 -0800</bug_when>
    <thetext>Created attachment 174220
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767182</commentid>
    <comment_count>21</comment_count>
      <attachid>174220</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 12:35:54 -0800</bug_when>
    <thetext>Comment on attachment 174220
Patch for landing

Clearing flags on attachment: 174220

Committed r134649: &lt;http://trac.webkit.org/changeset/134649&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767183</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 12:35:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768277</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-15 10:40:43 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 102413</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768904</commentid>
    <comment_count>24</comment_count>
      <attachid>174010</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-15 21:25:04 -0800</bug_when>
    <thetext>Comment on attachment 174010
patch #2

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

&gt;&gt; Source/WebCore/loader/MainResourceLoader.cpp:631
&gt;&gt; +    willSendRequest(request, ResourceResponse());
&gt; 
&gt; I see.  This feels a bit sub-optimal.

Seems that with a bit of time and effort we can fix “clients expect it”.

&gt; Source/WebCore/loader/MainResourceLoader.cpp:634
&gt; +    // &lt;rdar://problem/4801066&gt;

This seems strange. Why is this URL here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769396</commentid>
    <comment_count>25</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-16 10:00:33 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 174010 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174010&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/loader/MainResourceLoader.cpp:631
&gt; &gt;&gt; +    willSendRequest(request, ResourceResponse());
&gt; &gt; 
&gt; &gt; I see.  This feels a bit sub-optimal.
&gt; 
&gt; Seems that with a bit of time and effort we can fix “clients expect it”.
&gt; 
&gt; &gt; Source/WebCore/loader/MainResourceLoader.cpp:634
&gt; &gt; +    // &lt;rdar://problem/4801066&gt;
&gt; 
&gt; This seems strange. Why is this URL here?

I may have cargo-culted both of these comments, as I moved those code blocks via copy/paste. :)

Between this patch and bugs.webkit.org/show_bug.cgi?id=49246, I&apos;m planning on doing quite a bit of work on MainResourceLoader in the near future. Please do let me know if you have requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769568</commentid>
    <comment_count>26</comment_count>
      <attachid>174741</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-16 12:28:10 -0800</bug_when>
    <thetext>Created attachment 174741
Set the url to about:blank for non-initial empty loads

Diffs from previous patch are all in DocumentLoader.cpp. This resolves the issues I saw in chromium&apos;s downstream browser_tests, and still appears to pass layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769761</commentid>
    <comment_count>27</comment_count>
      <attachid>174779</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-16 16:28:51 -0800</bug_when>
    <thetext>Created attachment 174779
Fix up some mac failures

All diffs from reverted version are still in DocumentLoader.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769959</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-17 10:02:34 -0800</bug_when>
    <thetext>Do you have thoughts on Darin&apos;s comment about change clients to not expect this callback?  I think Nate mentioned to me that this call will get removed in his patch to cache main resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770823</commentid>
    <comment_count>29</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-19 09:47:47 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Do you have thoughts on Darin&apos;s comment about change clients to not expect this callback?  I think Nate mentioned to me that this call will get removed in his patch to cache main resources.

My main resource patch as currently written won&apos;t remove that call, but I can certainly add this to the list of things to think about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770833</commentid>
    <comment_count>30</comment_count>
      <attachid>174779</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 10:01:34 -0800</bug_when>
    <thetext>Comment on attachment 174779
Fix up some mac failures

Clearing flags on attachment: 174779

Committed r135172: &lt;http://trac.webkit.org/changeset/135172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770834</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 10:01:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770924</commentid>
    <comment_count>32</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-19 12:07:06 -0800</bug_when>
    <thetext>This patch seems to have broken several API tests:

EFL:
http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug%20WK2/builds/6080/steps/API%20tests/logs/stdio

Mac:
http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK2%20%28Tests%29/builds/3784/steps/run-api-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770982</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 13:08:53 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 102710</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777998</commentid>
    <comment_count>34</comment_count>
      <attachid>176503</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-11-28 09:58:42 -0800</bug_when>
    <thetext>Created attachment 176503
Fix TestWebKitAPI failures

Ok, I believe I&apos;ve tested this patch on API tests for mac, layout tests for mac and chromium linux, and chromium&apos;s downstream browser_tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778095</commentid>
    <comment_count>35</comment_count>
      <attachid>176503</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-28 11:12:38 -0800</bug_when>
    <thetext>Comment on attachment 176503
Fix TestWebKitAPI failures

Sounds like we should try this one again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778107</commentid>
    <comment_count>36</comment_count>
      <attachid>176503</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 11:31:38 -0800</bug_when>
    <thetext>Comment on attachment 176503
Fix TestWebKitAPI failures

Clearing flags on attachment: 176503

Committed r136031: &lt;http://trac.webkit.org/changeset/136031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778109</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 11:31:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779989</commentid>
    <comment_count>38</comment_count>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-11-30 03:53:14 -0800</bug_when>
    <thetext>This patch broke the API test on EFL debug bot.

http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug%20WK2/builds/6449
http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug%20WK2/builds/6449/steps/API%20tests/logs/stdio

ASSERTION FAILED: m_currentItem
/home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WebCore/loader/HistoryController.cpp(112) : void WebCore::HistoryController::restoreScrollPositionAndViewState()
1   0x2b42615c05c3 WebCore::HistoryController::restoreScrollPositionAndViewState()
2   0x2b42615b465b WebCore::FrameLoader::checkLoadCompleteForThisFrame()
3   0x2b42615b5362 WebCore::FrameLoader::checkLoadComplete()
4   0x2b426158e2ca WebCore::DocumentLoader::finishedLoading()
5   0x2b4261590101 WebCore::DocumentLoader::maybeLoadEmpty()
6   0x2b42615901d5 WebCore::DocumentLoader::startLoadingMainResource()
7   0x2b42615b4972 WebCore::FrameLoader::continueLoadAfterWillSubmitForm()
8   0x2b42615b7461 WebCore::FrameLoader::continueLoadAfterNavigationPolicy(WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)
9   0x2b42615b6b95 WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void*, WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)
10  0x2b42615ce664 WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, void (*)(void*, WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool), void*)
11  0x2b42615b10dc WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader*, WebCore::FrameLoadType, WTF::PassRefPtr&lt;WebCore::FormState&gt;)
12  0x2b42615b1739 WebCore::FrameLoader::reloadWithOverrideEncoding(WTF::String const&amp;)
13  0x2b425df33ff5 WebKit::WebPage::setCustomTextEncodingName(WTF::String const&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780102</commentid>
    <comment_count>39</comment_count>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-11-30 07:30:52 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; This patch broke the API test on EFL debug bot.
&gt; 
&gt; http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug%20WK2/builds/6449
&gt; http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug%20WK2/builds/6449/steps/API%20tests/logs/stdio

I filed a new bug report to track this issue - https://bugs.webkit.org/show_bug.cgi?id=103732</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172875</attachid>
            <date>2012-11-07 14:44:05 -0800</date>
            <delta_ts>2012-11-08 16:17:25 -0800</delta_ts>
            <desc>patch</desc>
            <filename>empty.txt</filename>
            <type>text/plain</type>
            <size>23088</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1p
ZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUu
aHRtbAkocmV2aXNpb24gMTMzNjkyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNyArNDMsNyBAQAogCiAgICAgZnVuY3Rpb24gc3RlcDIoKQogICAgIHsKLSAg
ICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVz
dHNbV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHMubGVuZ3RoIC0gM107Cisg
ICAgICAgIHZhciByZXF1ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVl
c3RzW1dlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDJdOwog
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXF1ZXN0MS51cmwpOwogICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UudHlwZTogIiArIHJlcXVlc3QxLnR5cGUp
OwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBiZWZv
cmUgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVxdWVzdDEuY29udGVudCk7CkBAIC01Miw3ICs1
Miw3IEBACiAKICAgICBmdW5jdGlvbiBzdGVwMygpCiAgICAgewotICAgICAgICB2YXIgcmVxdWVz
dDEgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0b3Iu
cGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5ndGggLSAzXTsKKyAgICAgICAgdmFyIHJlcXVl
c3QxID0gV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHNbV2ViSW5zcGVjdG9y
LnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHMubGVuZ3RoIC0gMl07CiAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29udGVu
dDogIiArIHJlcXVlc3QxLmNvbnRlbnQpOwogCiAgICAgICAgIHZhciByZXF1ZXN0MiA9IFdlYklu
c3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbCgibmV0
d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDFdOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTMzNjkyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jl
ZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDEzICs1LDEw
IEBACiBtYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCiA8dW5rbm93bj4gLSBkaWRG
aW5pc2hMb2FkaW5nCiBmcmFtZSAiMCIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
Ci1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpi
bGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVk
aXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51
bGwpCi1hYm91dDpibGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91
dDpibGFuaywgaHR0cCBzdGF0dXMgY29kZSAwPgogZnJhbWUgIjAiIC0gZGlkQ29tbWl0TG9hZEZv
ckZyYW1lCiBmcmFtZSAiMCIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUg
IjAiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEZpbmlz
aExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMCIg
LSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9s
b2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAKIGZyYW1lICIwIiAt
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9s
b2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIHdpbGxTZW5kUmVx
dWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNv
dXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRo
b2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQpAQCAtMzIsMTMgKzI5LDEwIEBACiBmcmFt
ZSAiMCIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91
dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2Ug
KG51bGwpCi1hYm91dDpibGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBh
Ym91dDpibGFuaywgaHR0cCBzdGF0dXMgY29kZSAwPgogZnJhbWUgIjEiIC0gZGlkQ29tbWl0TG9h
ZEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJh
bWUgIjEiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEZp
bmlzaExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAi
MSIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAKIGZyYW1lICIw
IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMCIgLSBkaWRGaW5pc2hM
b2FkRm9yRnJhbWUKQEAgLTYyLDEzICs1NiwxMCBAQAogZnJhbWUgIjEiIC0gZGlkQ29tbWl0TG9h
ZEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJh
bWUgIjIiIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSB3
aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9jdW1l
bnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRt
bCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6Ymxhbmsg
LSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3Rh
dHVzIGNvZGUgMD4KIGZyYW1lICIyIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjIi
IC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEhhbmRsZU9u
bG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWFi
b3V0OmJsYW5rIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjIiIC0gd2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgCiBmcmFtZSAiMSIgLSBkaWRIYW5kbGVPbmxvYWRF
dmVudHNGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCkBAIC05Miwx
MyArODMsMTAgQEAKIGZyYW1lICIyIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjIi
IC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIzIiAtIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUKLWFib3V0OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VS
TFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4g
cmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWFib3V0OmJsYW5rIC0gZGlkUmVjZWl2ZVJlc3BvbnNl
IDxOU1VSTFJlc3BvbnNlIGFib3V0OmJsYW5rLCBodHRwIHN0YXR1cyBjb2RlIDA+CiBmcmFtZSAi
MyIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIzIiAtIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQog
ZnJhbWUgIjMiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCi1hYm91dDpibGFuayAtIGRpZEZpbmlz
aExvYWRpbmcKIGZyYW1lICIzIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9y
bS5odG1sIAogZnJhbWUgIjIiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1l
ICIyIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBh
cmVudC1zYW1lLW9yaWdpbi1kZW55LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRl
bnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRlbnktZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxMzM2OTIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlv
bnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsNiBAQAogaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9u
cy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwgLSBk
aWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEt
dGFnLXN1YmZyYW1lLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwsIGh0dHAgc3RhdHVzIGNv
ZGUgMjAwPgogaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVz
b3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLXBhcmVudC1zYW1l
LW9yaWdpbi1kZW55Lmh0bWwgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9t
YWluIE5TVVJMRXJyb3JEb21haW4sIGNvZGUgLTk5OSwgZmFpbGluZyBVUkwgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlv
bnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sIj4K
IENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBkaXNwbGF5ICdodHRwOi8vbG9jYWxob3N0Ojgw
MDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnkt
bWV0YS10YWctc3ViZnJhbWUtcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCcgaW4gYSBmcmFt
ZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0byAnc2FtZW9yaWdpbicuCi1hYm91
dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywg
bWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9w
dGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRl
bnkuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6
YmxhbmsgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0
dHAgc3RhdHVzIGNvZGUgMD4KIFRoZXJlIHNob3VsZCBiZSBubyBjb250ZW50IGluIHRoZSBpZnJh
bWUgYmVsb3cKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVP
cHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWluLWJvZHktZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxMzM2OTIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hG
cmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw2IEBACiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnkt
bWV0YS10YWctc3ViZnJhbWUtaW4tYm9keS5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VS
TFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jl
c291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1pbi1ib2R5Lmh0
bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1
YmZyYW1lLWluLWJvZHkuaHRtbCAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBk
b21haW4gTlNVUkxFcnJvckRvbWFpbiwgY29kZSAtOTk5LCBmYWlsaW5nIFVSTCAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0
aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLWluLWJvZHkuaHRtbCI+CiBDT05TT0xFIE1FU1NB
R0U6IFJlZnVzZWQgdG8gZGlzcGxheSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hG
cmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZy
YW1lLWluLWJvZHkuaHRtbCcgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRp
b25zJyB0byAnZGVueScuCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1
ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWct
aW4tYm9keS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1h
Ym91dDpibGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFu
aywgaHR0cCBzdGF0dXMgY29kZSAwPgogVGhlcmUgc2hvdWxkIGJlIG5vIGNvbnRlbnQgaW4gdGhl
IGlmcmFtZSBiZWxvdwogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
WEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRp
b25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTMzNjkyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25z
L3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMyw4ICszLDYgQEAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVP
cHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS5o
dG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVu
eS1tZXRhLXRhZy1zdWJmcmFtZS5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9w
dGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS5odG1sIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJy
b3I6IDxOU0Vycm9yIGRvbWFpbiBOU1VSTEVycm9yRG9tYWluLCBjb2RlIC05OTksIGZhaWxpbmcg
VVJMICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJj
ZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUuaHRtbCI+CiBDT05TT0xF
IE1FU1NBR0U6IFJlZnVzZWQgdG8gZGlzcGxheSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFn
LXN1YmZyYW1lLmh0bWwnIGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9u
cycgdG8gJ2RlbnknLgotYWJvdXQ6YmxhbmsgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVz
dCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLmh0
bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWFib3V0OmJsYW5r
IC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGFib3V0OmJsYW5rLCBodHRwIHN0
YXR1cyBjb2RlIDA+CiBUaGVyZSBzaG91bGQgYmUgbm8gY29udGVudCBpbiB0aGUgaWZyYW1lIGJl
bG93CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNo
aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyU3Rh
dGVNYWNoaW5lLmgJKHJldmlzaW9uIDEzMzY5MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlclN0YXRlTWFjaGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw2IEBA
CiAgICAgLy8gYWx0ZXJuYXRlIGJldHdlZW4gQ29tbWl0dGVkRmlyc3RSZWFsTG9hZCBhbmQgRmly
c3RMYXlvdXREb25lLgogICAgIC8vIE90aGVyd2lzZSwgdGhlIHN0YXRlcyBvbmx5IGdvIGRvd24g
dGhlIGxpc3QuCiAgICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIFVuaW5pdGlhbGl6ZWQsCiAgICAg
ICAgIENyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQsCiAgICAgICAgIERpc3BsYXlpbmdJbml0
aWFsRW1wdHlEb2N1bWVudCwKICAgICAgICAgRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50
UG9zdENvbW1pdCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShy
ZXZpc2lvbiAxMzM2OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDYgKzMwNyw3IEBACiAgICAgICAgIGJvb2wgbV9pc1N0
b3BwaW5nOwogICAgICAgICBib29sIG1fZ290Rmlyc3RCeXRlOwogICAgICAgICBib29sIG1faXND
bGllbnRSZWRpcmVjdDsKKyAgICAgICAgYm9vbCBtX2xvYWRpbmdFbXB0eURvY3VtZW50OwogCiAg
ICAgICAgIC8vIEZJWE1FOiBEb2N1bWVudDo6bV9wcm9jZXNzaW5nTG9hZEV2ZW50IGFuZCBEb2N1
bWVudExvYWRlcjo6bV93YXNPbmxvYWRIYW5kbGVkIGFyZSByb3VnaGx5IHRoZSBzYW1lCiAgICAg
ICAgIC8vIGFuZCBzaG91bGQgYmUgbWVyZ2VkLgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzMzY5MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NywxMSArNjcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHNob3Vs
ZExvYWRBc0VtcHR5RG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsKQotewotICAgIHJldHVybiB1cmwu
aXNFbXB0eSgpIHx8IFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRMb2FkVVJMU2NoZW1lQXNFbXB0eURv
Y3VtZW50KHVybC5wcm90b2NvbCgpKTsKLX0KLQogTWFpblJlc291cmNlTG9hZGVyOjpNYWluUmVz
b3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1lKQogICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJl
c291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRh
dGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVu
dGlhbHMsIFNraXBTZWN1cml0eUNoZWNrKSkKICAgICAsIG1fZGF0YUxvYWRUaW1lcih0aGlzLCAm
TWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpCkBAIC0zMzgs
MTMgKzMzMywxMCBAQAogICAgIGlmICghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShyKTsKIAotICAgIGlmIChmcmFtZUxv
YWRlcigpICYmICFmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0b3Bw
aW5nKCkpIHsKLSAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7Ci0gICAg
ICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSkKLSAgICAgICAg
ICAgICAgICBkaWRSZWNlaXZlRGF0YShtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+ZGF0YSgp
LCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNv
bnRlbnQoKS0+c2l6ZSgpLCB0cnVlKTsKLSAgICAgICAgICAgIGlmIChmcmFtZUxvYWRlcigpICYm
ICFmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpIAot
ICAgICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRpbmcoMCk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
c2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudCh1cmwpIHx8IGZyYW1lTG9hZGVyKCktPmNsaWVudCgp
LT5yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSh1cmwucHJvdG9jb2woKSkpCisgICAg
aWYgKGZyYW1lTG9hZGVyKCkgJiYgIWZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPmlzU3RvcHBpbmcoKSAmJiBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgeworICAgICAg
ICBpZiAobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSkKKyAgICAgICAgICAgIGRp
ZFJlY2VpdmVEYXRhKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5kYXRhKCksIG1fc3Vic3Rp
dHV0ZURhdGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5z
aXplKCksIHRydWUpOworICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKSAmJiAhZnJhbWVMb2FkZXIo
KS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+aXNTdG9wcGluZygpKSAKICAgICAgICAgICAgIGRp
ZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpAQCAtMzg0LDcgKzM3Niw3IEBACiAgICAgLy8g
VGhlcmUgaXMgYSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxiYWNrcyBjYW4gYmUgZGlzcGF0
Y2hlZCBldmVuIHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgogICAgIC8vIFNlZSA8cmRhcjovL3By
b2JsZW0vNjMwNDYwMD4gZm9yIG1vcmUgZGV0YWlscy4KICNpZiAhVVNFKENGKQotICAgIEFTU0VS
VChzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KHIudXJsKCkpIHx8ICFkZWZlcnNMb2FkaW5nKCkp
OworICAgIEFTU0VSVCghZGVmZXJzTG9hZGluZygpKTsKICNlbmRpZgogCiAgICAgaWYgKG1fbG9h
ZGluZ011bHRpcGFydENvbnRlbnQpIHsKQEAgLTQ5OSw3ICs0OTEsNyBAQAogICAgIC8vIFRoZXJl
IGlzIGEgYnVnIGluIENGTmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQg
ZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZlcnJlZC4KICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVt
LzYzMDQ2MDA+IGZvciBtb3JlIGRldGFpbHMuCiAjaWYgIVVTRShDRikKLSAgICBBU1NFUlQoc2hv
dWxkTG9hZEFzRW1wdHlEb2N1bWVudChmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT51cmwoKSkgfHwgIWRlZmVyc0xvYWRpbmcoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmlzRGVidWdnZXJQYXVzZWQobV9mcmFtZS5nZXQoKSkpOworICAgIEFTU0VSVCghZGVmZXJz
TG9hZGluZygpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNEZWJ1Z2dlclBhdXNlZCht
X2ZyYW1lLmdldCgpKSk7CiAjZW5kaWYKIAogICAgIC8vIFRoZSBhZGRpdGlvbmFsIHByb2Nlc3Np
bmcgY2FuIGRvIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSByZW1vdmluZyB0aGUgbGFzdApA
QCAtNTYwLDE4ICs1NTIsNiBAQAogICAgIGluZm8uYWRkTWVtYmVyKG1fZGF0YUxvYWRUaW1lcik7
CiB9CiAKLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVFbXB0eUxvYWQoY29uc3QgS1VS
TCYgdXJsLCBib29sIGZvclVSTFNjaGVtZSkKLXsKLSAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAg
aWYgKGZvclVSTFNjaGVtZSkKLSAgICAgICAgbWltZVR5cGUgPSBmcmFtZUxvYWRlcigpLT5jbGll
bnQoKS0+Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUodXJsLnByb3RvY29sKCkpOwotICAg
IGVsc2UKLSAgICAgICAgbWltZVR5cGUgPSAidGV4dC9odG1sIjsKLSAgICAKLSAgICBSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbWltZVR5cGUsIDAsIFN0cmluZygpLCBTdHJpbmcoKSk7
Ci0gICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLX0KLQogdm9pZCBNYWluUmVzb3Vy
Y2VMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdyhNYWluUmVzb3VyY2VMb2FkZXJU
aW1lciopCiB7CiAgICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsK
QEAgLTYwOCwxMiArNTg4LDEwIEBACiAgICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5v
dygwKTsKIH0KIAotYm9vbCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWROb3coUmVzb3VyY2VSZXF1
ZXN0JiByKQordm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWROb3coUmVzb3VyY2VSZXF1ZXN0
JiByKQogewotICAgIGJvb2wgc2hvdWxkTG9hZEVtcHR5QmVmb3JlUmVkaXJlY3QgPSBzaG91bGRM
b2FkQXNFbXB0eURvY3VtZW50KHIudXJsKCkpOwotCiAgICAgQVNTRVJUKCFtX2hhbmRsZSk7Ci0g
ICAgQVNTRVJUKHNob3VsZExvYWRFbXB0eUJlZm9yZVJlZGlyZWN0IHx8ICFkZWZlcnNMb2FkaW5n
KCkpOworICAgIEFTU0VSVCghZGVmZXJzTG9hZGluZygpKTsKIAogICAgIC8vIFNlbmQgdGhpcyBz
eW50aGV0aWMgZGVsZWdhdGUgY2FsbGJhY2sgc2luY2UgY2xpZW50cyBleHBlY3QgaXQsIGFuZAog
ICAgIC8vIHdlIG5vIGxvbmdlciBzZW5kIHRoZSBjYWxsYmFjayBmcm9tIHdpdGhpbiBOU1VSTENv
bm5lY3Rpb24gZm9yCkBAIC02MjQsMTQgKzYwMiw4IEBACiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVt
LzQ4MDEwNjY+CiAgICAgLy8gd2lsbFNlbmRSZXF1ZXN0KCkgaXMgbGlhYmxlIHRvIG1ha2UgdGhl
IGNhbGwgdG8gZnJhbWVMb2FkZXIoKSByZXR1cm4gTlVMTCwgc28gd2UgbmVlZCB0byBjaGVjayB0
aGF0IGhlcmUKICAgICBpZiAoIWZyYW1lTG9hZGVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSByLnVybCgpOwotICAgIGJvb2wgc2hvdWxkTG9h
ZEVtcHR5ID0gc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudCh1cmwpICYmICFtX3N1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHNob3VsZExvYWRFbXB0
eUJlZm9yZVJlZGlyZWN0ICYmICFzaG91bGRMb2FkRW1wdHkgJiYgZGVmZXJzTG9hZGluZygpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQogICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5yZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKS0+YWRkTWFpblJlc291cmNlTG9hZCh0aGlzKTsKICNlbHNlCkBAIC02NDAsMTIgKzYx
MiwxMCBAQAogCiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBo
YW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKHIpOwotICAgIGVsc2UgaWYgKHNob3VsZExvYWRF
bXB0eSB8fCBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+cmVwcmVzZW50YXRpb25FeGlzdHNGb3JV
UkxTY2hlbWUodXJsLnByb3RvY29sKCkpKQotICAgICAgICBoYW5kbGVFbXB0eUxvYWQodXJsLCAh
c2hvdWxkTG9hZEVtcHR5KTsKICAgICBlbHNlCiAgICAgICAgIG1faGFuZGxlID0gUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZShtX2ZyYW1lLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKSwgciwg
dGhpcywgZmFsc2UsIHRydWUpOwogCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybjsKIH0K
IAogdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCkBAIC02NjUsMjEgKzYzNSwx
MCBAQAogCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5
YmVMb2FkTWFpblJlc291cmNlKHJlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOwogCi0gICAgYm9v
bCBkZWZlciA9IGRlZmVyc0xvYWRpbmcoKTsKLSAgICBpZiAoZGVmZXIpIHsKLSAgICAgICAgYm9v
bCBzaG91bGRMb2FkRW1wdHkgPSBzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KHJlcXVlc3QudXJs
KCkpOwotICAgICAgICBpZiAoc2hvdWxkTG9hZEVtcHR5KQotICAgICAgICAgICAgZGVmZXIgPSBm
YWxzZTsKLSAgICB9Ci0gICAgaWYgKCFkZWZlcikgewotICAgICAgICBpZiAobG9hZE5vdyhyZXF1
ZXN0KSkgewotICAgICAgICAgICAgLy8gU3RhcnRlZCBhcyBhbiBlbXB0eSBkb2N1bWVudCwgYnV0
IHdhcyByZWRpcmVjdGVkIHRvIHNvbWV0aGluZyBub24tZW1wdHkuCi0gICAgICAgICAgICBBU1NF
UlQoZGVmZXJzTG9hZGluZygpKTsKLSAgICAgICAgICAgIGRlZmVyID0gdHJ1ZTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBpZiAoZGVmZXIpCisgICAgaWYgKGRlZmVyc0xvYWRpbmcoKSkKICAgICAg
ICAgbV9pbml0aWFsUmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgZWxzZQorICAgICAgICBsb2FkTm93
KHJlcXVlc3QpOwogfQogCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGlu
Zyhib29sIGRlZmVycykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAkocmV2aXNpb24gMTMzNjkyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIk1h
aW5SZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgpAQCAtOTcsNiArOTgsNyBAQAogICAgICwgbV9pc1N0
b3BwaW5nKGZhbHNlKQogICAgICwgbV9nb3RGaXJzdEJ5dGUoZmFsc2UpCiAgICAgLCBtX2lzQ2xp
ZW50UmVkaXJlY3QoZmFsc2UpCisgICAgLCBtX2xvYWRpbmdFbXB0eURvY3VtZW50KGZhbHNlKQog
ICAgICwgbV93YXNPbmxvYWRIYW5kbGVkKGZhbHNlKQogICAgICwgbV9zdG9wUmVjb3JkaW5nUmVz
cG9uc2VzKGZhbHNlKQogICAgICwgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyKHRo
aXMsICZEb2N1bWVudExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVk
KQpAQCAtMTE0LDcgKzExNiw3IEBACiAKIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIo
KQogewotICAgIEFTU0VSVCghbV9mcmFtZSB8fCBmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVu
dExvYWRlcigpICE9IHRoaXMgfHwgIWZyYW1lTG9hZGVyKCktPmlzTG9hZGluZygpKTsKKyAgICBB
U1NFUlQoIW1fZnJhbWUgfHwgZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSAh
PSB0aGlzIHx8ICFpc0xvYWRpbmcoKSk7CiAgICAgaWYgKG1faWNvbkxvYWREZWNpc2lvbkNhbGxi
YWNrKQogICAgICAgICBtX2ljb25Mb2FkRGVjaXNpb25DYWxsYmFjay0+aW52YWxpZGF0ZSgpOwog
ICAgIGlmIChtX2ljb25EYXRhQ2FsbGJhY2spCkBAIC0yODUsNyArMjg3LDcgQEAKIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiB7CiAgICAgY29tbWl0SWZSZWFkeSgpOwot
ICAgIGlmICghZnJhbWVMb2FkZXIoKSB8fCBmcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS0+
Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQorICAgIGlmICghZnJhbWVMb2FkZXIoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtYXliZUNyZWF0ZUFyY2hpdmUoKSkgewpAQCAt
NDQ5LDYgKzQ1MSw3IEBACiAgICAgICAgIG1fbWFpblJlc291cmNlRGF0YSA9IG1fbWFpblJlc291
cmNlTG9hZGVyLT5yZXNvdXJjZURhdGEoKTsKICAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXIg
PSAwOwogICAgIH0KKyAgICBtX2xvYWRpbmdFbXB0eURvY3VtZW50ID0gZmFsc2U7CiAKICAgICBp
ZiAodGhpcyA9PSBmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpKQogICAgICAg
ICBjaGVja0xvYWRDb21wbGV0ZSgpOwpAQCAtNDYzLDcgKzQ2Niw3IEBACiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCk7Ci0gICAgICAgIGlmICgobV9tYWluUmVzb3VyY2VMb2FkZXIgfHwgIW1fZnJhbWUtPmRv
Y3VtZW50KCktPmxvYWRFdmVudEZpbmlzaGVkKCkpICYmIGlzTG9hZGluZygpKQorICAgICAgICBp
ZiAoKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5sb2Fk
RXZlbnRGaW5pc2hlZCgpKSAmJiBpc0xvYWRpbmcoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBpZiAobV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdENvdW50KCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc2OCw3ICs3NzEsNyBAQAogICAgICAgICB1cmwg
PSByZXF1ZXN0VVJMKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IHJl
c3BvbnNlVVJMKCk7Ci0gICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgaWYgKHVybC5pc0VtcHR5
KCkgJiYgIWZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLT5jcmVhdGluZ0luaXRpYWxFbXB0
eURvY3VtZW50KCkpCiAgICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CiAgICAgcmV0dXJuIHVybDsK
IH0KQEAgLTgyOSw3ICs4MzIsNyBAQAogCiBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdN
YWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIHJldHVybiAhIW1fbWFpblJlc291cmNlTG9hZGVy
OworICAgIHJldHVybiAhIW1fbWFpblJlc291cmNlTG9hZGVyIHx8IG1fbG9hZGluZ0VtcHR5RG9j
dW1lbnQ7CiB9CiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZ011bHRpcGFydENvbnRl
bnQoKSBjb25zdApAQCAtODQ3LDYgKzg1MCwxNiBAQAogICAgIG1fbWFpbkRvY3VtZW50RXJyb3Ig
PSBSZXNvdXJjZUVycm9yKCk7CiAgICAgdGltaW5nKCktPm1hcmtOYXZpZ2F0aW9uU3RhcnQoKTsK
ICAgICBBU1NFUlQoIW1fbWFpblJlc291cmNlTG9hZGVyKTsKKworICAgIGJvb2wgc2hvdWRMb2Fk
RW1wdHkgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgKG1fcmVxdWVzdC51cmwoKS5p
c0VtcHR5KCkgfHwgU2NoZW1lUmVnaXN0cnk6OnNob3VsZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9j
dW1lbnQobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sKCkpKTsKKyAgICBpZiAoc2hvdWRMb2FkRW1w
dHkgfHwgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJM
U2NoZW1lKG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbCgpKSkgeworICAgICAgICBtX2xvYWRpbmdF
bXB0eURvY3VtZW50ID0gdHJ1ZTsKKyAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gc2hvdWRMb2Fk
RW1wdHkgPyAidGV4dC9odG1sIiA6IGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5nZW5lcmF0ZWRN
SU1FVHlwZUZvclVSTFNjaGVtZShtX3JlcXVlc3QudXJsKCkucHJvdG9jb2woKSk7CisgICAgICAg
IHNldFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXF1ZXN0LnVybCgpLCBtaW1lVHlwZSwg
MCwgU3RyaW5nKCksIFN0cmluZygpKSk7CisgICAgICAgIGZpbmlzaGVkTG9hZGluZygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXIgPSBNYWluUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZShtX2ZyYW1lKTsKIAogICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBh
bnkgd2F5IHRoZSBleHRyYSBmaWVsZHMgY291bGQgaGF2ZSBub3QgYmVlbiBhZGRlZCBieSBub3c/
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzMzY5
MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNCwxNCArMjE0LDE0IEBACiAgICAgLCBtX3N1YmZyYW1lTG9hZGVyKGZyYW1lKQog
ICAgICwgbV9pY29uKGZyYW1lKQogICAgICwgbV9taXhlZENvbnRlbnRDaGVja2VyKGZyYW1lKQot
ICAgICwgbV9zdGF0ZShGcmFtZVN0YXRlQ29tbWl0dGVkUGFnZSkKKyAgICAsIG1fc3RhdGUoRnJh
bWVTdGF0ZVByb3Zpc2lvbmFsKQogICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRUeXBlU3RhbmRh
cmQpCiAgICAgLCBtX2RlbGVnYXRlSXNIYW5kbGluZ1Byb3Zpc2lvbmFsTG9hZEVycm9yKGZhbHNl
KQogICAgICwgbV9xdWlja1JlZGlyZWN0Q29taW5nKGZhbHNlKQogICAgICwgbV9zZW50UmVkaXJl
Y3ROb3RpZmljYXRpb24oZmFsc2UpCiAgICAgLCBtX2luU3RvcEFsbExvYWRlcnMoZmFsc2UpCiAg
ICAgLCBtX2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb24oZmFsc2UpCi0gICAgLCBtX2Rp
ZENhbGxJbXBsaWNpdENsb3NlKGZhbHNlKQorICAgICwgbV9kaWRDYWxsSW1wbGljaXRDbG9zZSh0
cnVlKQogICAgICwgbV93YXNVbmxvYWRFdmVudEVtaXR0ZWQoZmFsc2UpCiAgICAgLCBtX3BhZ2VE
aXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZChOb0Rpc21pc3NhbCkKICAgICAsIG1faXNDb21w
bGV0ZShmYWxzZSkKQEAgLTI1NCwxOSArMjU0LDExIEBACiB2b2lkIEZyYW1lTG9hZGVyOjppbml0
KCkKIHsKICAgICAvLyBUaGlzIHNvbWV3aGF0IG9kZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZy
YW1lIGFuIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQuCi0gICAgLy8gSXQgd291bGQgYmUgYmV0dGVy
IGlmIHRoaXMgY291bGQgYmUgZG9uZSB3aXRoIGV2ZW4gZmV3ZXIgc3RlcHMuCi0gICAgbV9zdGF0
ZU1hY2hpbmUuYWR2YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpDcmVhdGluZ0luaXRp
YWxFbXB0eURvY3VtZW50KTsKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihtX2NsaWVudC0+
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCBlbXB0eVN0cmluZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLmdldCgpKTsKICAgICBzZXRQcm92
aXNpb25hbERvY3VtZW50TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwotICAg
IHNldFN0YXRlKEZyYW1lU3RhdGVQcm92aXNpb25hbCk7Ci0gICAgbV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyLT5zZXRSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKEtVUkwoKSwgInRleHQvaHRt
bCIsIDAsIFN0cmluZygpLCBTdHJpbmcoKSkpOwotICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlci0+ZmluaXNoZWRMb2FkaW5nKCk7Ci0gICAgQVNTRVJUKCFtX2ZyYW1lLT5kb2N1bWVudCgp
KTsKLSAgICBtX2RvY3VtZW50TG9hZGVyLT53cml0ZXIoKS0+YmVnaW4oS1VSTCgpLCBmYWxzZSk7
Ci0gICAgbV9kb2N1bWVudExvYWRlci0+d3JpdGVyKCktPmVuZCgpOworICAgIG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+Y2FuY2VsUGFyc2luZygpOwogICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFu
Y2VUbyhGcmFtZUxvYWRlclN0YXRlTWFjaGluZTo6RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3Vt
ZW50KTsKLSAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gdHJ1ZTsKIAogICAgIG1fbmV0d29y
a2luZ0NvbnRleHQgPSBtX2NsaWVudC0+Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKICAgICBt
X3Byb2dyZXNzVHJhY2tlciA9IEZyYW1lUHJvZ3Jlc3NUcmFja2VyOjpjcmVhdGUobV9mcmFtZSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFj
aGluZS5jcHAJKHJldmlzaW9uIDEzMzY5MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlclN0YXRlTWFjaGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAK
IAogICAgIAogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkZyYW1lTG9hZGVyU3RhdGVNYWNoaW5l
KCkgCi0gICAgOiBtX3N0YXRlKFVuaW5pdGlhbGl6ZWQpCisgICAgOiBtX3N0YXRlKENyZWF0aW5n
SW5pdGlhbEVtcHR5RG9jdW1lbnQpCiB7IAogfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTMzNjkyKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw5ICs4MSw4IEBACiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIE9WRVJSSURFOwogCi0gICAgYm9vbCBsb2FkTm93KFJlc291cmNlUmVxdWVzdCYp
OworICAgIHZvaWQgbG9hZE5vdyhSZXNvdXJjZVJlcXVlc3QmKTsKIAotICAgIHZvaWQgaGFuZGxl
RW1wdHlMb2FkKGNvbnN0IEtVUkwmLCBib29sIGZvclVSTFNjaGVtZSk7CiAgICAgdm9pZCBoYW5k
bGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZv
aWQgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KE1haW5SZXNvdXJjZUxvYWRlclRpbWVyKik7
CiAK
</data>
<flag name="commit-queue"
          id="187357"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173142</attachid>
            <date>2012-11-08 16:17:25 -0800</date>
            <delta_ts>2012-11-12 13:57:10 -0800</delta_ts>
            <desc>fix tests</desc>
            <filename>empty2.txt</filename>
            <type>text/plain</type>
            <size>29427</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiAxMzM5MjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTEgKzY3LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgYm9vbCBzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KGNvbnN0IEtV
UkwmIHVybCkKLXsKLSAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkTG9hZFVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudCh1cmwucHJvdG9jb2woKSk7Ci19Ci0K
IE1haW5SZXNvdXJjZUxvYWRlcjo6TWFpblJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFtZSkKICAg
ICA6IFJlc291cmNlTG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxi
YWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBB
c2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaykpCiAg
ICAgLCBtX2RhdGFMb2FkVGltZXIodGhpcywgJk1haW5SZXNvdXJjZUxvYWRlcjo6aGFuZGxlU3Vi
c3RpdHV0ZURhdGFMb2FkTm93KQpAQCAtMzM4LDEzICszMzMsMTAgQEAKICAgICBpZiAoIXJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2Uocik7CiAKLSAgICBpZiAoZnJhbWVMb2FkZXIoKSAmJiAhZnJhbWVMb2FkZXIoKS0+YWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+aXNTdG9wcGluZygpKSB7Ci0gICAgICAgIGlmIChtX3N1YnN0
aXR1dGVEYXRhLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEu
Y29udGVudCgpLT5zaXplKCkpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEobV9zdWJz
dGl0dXRlRGF0YS5jb250ZW50KCktPmRhdGEoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCkt
PnNpemUoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSwgdHJ1ZSk7Ci0gICAg
ICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKSAmJiAhZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1l
bnRMb2FkZXIoKS0+aXNTdG9wcGluZygpKSAKLSAgICAgICAgICAgICAgICBkaWRGaW5pc2hMb2Fk
aW5nKDApOwotICAgICAgICB9IGVsc2UgaWYgKHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQodXJs
KSB8fCBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxT
Y2hlbWUodXJsLnByb3RvY29sKCkpKQorICAgIGlmIChmcmFtZUxvYWRlcigpICYmICFmcmFtZUxv
YWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkgJiYgbV9zdWJzdGl0
dXRlRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuY29udGVu
dCgpLT5zaXplKCkpCisgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShtX3N1YnN0aXR1dGVEYXRh
LmNvbnRlbnQoKS0+ZGF0YSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBt
X3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCB0cnVlKTsKKyAgICAgICAgaWYgKGZy
YW1lTG9hZGVyKCkgJiYgIWZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlz
U3RvcHBpbmcoKSkgCiAgICAgICAgICAgICBkaWRGaW5pc2hMb2FkaW5nKDApOwogICAgIH0KIH0K
QEAgLTM4NCw3ICszNzYsNyBAQAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29yayB3
aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZl
cnJlZC4KICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYzMDQ2MDA+IGZvciBtb3JlIGRldGFp
bHMuCiAjaWYgIVVTRShDRikKLSAgICBBU1NFUlQoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChy
LnVybCgpKSB8fCAhZGVmZXJzTG9hZGluZygpKTsKKyAgICBBU1NFUlQoIWRlZmVyc0xvYWRpbmco
KSk7CiAjZW5kaWYKIAogICAgIGlmIChtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KSB7CkBAIC00
OTksNyArNDkxLDcgQEAKICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUg
Y2FsbGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQu
CiAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS82MzA0NjAwPiBmb3IgbW9yZSBkZXRhaWxzLgog
I2lmICFVU0UoQ0YpCi0gICAgQVNTRVJUKHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQoZnJhbWVM
b2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkpIHx8ICFkZWZlcnNMb2FkaW5n
KCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0RlYnVnZ2VyUGF1c2VkKG1fZnJhbWUu
Z2V0KCkpKTsKKyAgICBBU1NFUlQoIWRlZmVyc0xvYWRpbmcoKSB8fCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmlzRGVidWdnZXJQYXVzZWQobV9mcmFtZS5nZXQoKSkpOwogI2VuZGlmCiAKICAg
ICAvLyBUaGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbyBhbnl0aGluZyBpbmNsdWRpbmcg
cG9zc2libHkgcmVtb3ZpbmcgdGhlIGxhc3QKQEAgLTU2MCwxOCArNTUyLDYgQEAKICAgICBpbmZv
LmFkZE1lbWJlcihtX2RhdGFMb2FkVGltZXIpOwogfQogCi12b2lkIE1haW5SZXNvdXJjZUxvYWRl
cjo6aGFuZGxlRW1wdHlMb2FkKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JVUkxTY2hlbWUpCi17
Ci0gICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIGlmIChmb3JVUkxTY2hlbWUpCi0gICAgICAgIG1p
bWVUeXBlID0gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmdlbmVyYXRlZE1JTUVUeXBlRm9yVVJM
U2NoZW1lKHVybC5wcm90b2NvbCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1pbWVUeXBlID0gInRl
eHQvaHRtbCI7Ci0gICAgCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1pbWVU
eXBlLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwotICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNw
b25zZSk7Ci19Ci0KIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0
YUxvYWROb3coTWFpblJlc291cmNlTG9hZGVyVGltZXIqKQogewogICAgIFJlZlB0cjxNYWluUmVz
b3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CkBAIC02MDgsMTIgKzU4OCwxMCBAQAogICAgICAg
ICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coMCk7CiB9CiAKLWJvb2wgTWFpblJlc291cmNl
TG9hZGVyOjpsb2FkTm93KFJlc291cmNlUmVxdWVzdCYgcikKK3ZvaWQgTWFpblJlc291cmNlTG9h
ZGVyOjpsb2FkTm93KFJlc291cmNlUmVxdWVzdCYgcikKIHsKLSAgICBib29sIHNob3VsZExvYWRF
bXB0eUJlZm9yZVJlZGlyZWN0ID0gc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChyLnVybCgpKTsK
LQogICAgIEFTU0VSVCghbV9oYW5kbGUpOwotICAgIEFTU0VSVChzaG91bGRMb2FkRW1wdHlCZWZv
cmVSZWRpcmVjdCB8fCAhZGVmZXJzTG9hZGluZygpKTsKKyAgICBBU1NFUlQoIWRlZmVyc0xvYWRp
bmcoKSk7CiAKICAgICAvLyBTZW5kIHRoaXMgc3ludGhldGljIGRlbGVnYXRlIGNhbGxiYWNrIHNp
bmNlIGNsaWVudHMgZXhwZWN0IGl0LCBhbmQKICAgICAvLyB3ZSBubyBsb25nZXIgc2VuZCB0aGUg
Y2FsbGJhY2sgZnJvbSB3aXRoaW4gTlNVUkxDb25uZWN0aW9uIGZvcgpAQCAtNjI0LDE0ICs2MDIs
OCBAQAogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS80ODAxMDY2PgogICAgIC8vIHdpbGxTZW5kUmVx
dWVzdCgpIGlzIGxpYWJsZSB0byBtYWtlIHRoZSBjYWxsIHRvIGZyYW1lTG9hZGVyKCkgcmV0dXJu
IE5VTEwsIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCBoZXJlCiAgICAgaWYgKCFmcmFtZUxvYWRl
cigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgY29uc3QgS1VSTCYgdXJsID0g
ci51cmwoKTsKLSAgICBib29sIHNob3VsZExvYWRFbXB0eSA9IHNob3VsZExvYWRBc0VtcHR5RG9j
dW1lbnQodXJsKSAmJiAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCk7CisgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChzaG91bGRMb2FkRW1wdHlCZWZvcmVSZWRpcmVjdCAmJiAhc2hvdWxkTG9h
ZEVtcHR5ICYmIGRlZmVyc0xvYWRpbmcoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICNpZiBV
U0UoUExBVEZPUk1fU1RSQVRFR0lFUykKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVy
U3RyYXRlZ3koKS0+cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPmFkZE1haW5SZXNvdXJjZUxvYWQo
dGhpcyk7CiAjZWxzZQpAQCAtNjQwLDEyICs2MTIsMTAgQEAKIAogICAgIGlmIChtX3N1YnN0aXR1
dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbihy
KTsKLSAgICBlbHNlIGlmIChzaG91bGRMb2FkRW1wdHkgfHwgZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCktPnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKHVybC5wcm90b2NvbCgpKSkKLSAg
ICAgICAgaGFuZGxlRW1wdHlMb2FkKHVybCwgIXNob3VsZExvYWRFbXB0eSk7CiAgICAgZWxzZQog
ICAgICAgICBtX2hhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUobV9mcmFtZS0+bG9hZGVy
KCktPm5ldHdvcmtpbmdDb250ZXh0KCksIHIsIHRoaXMsIGZhbHNlLCB0cnVlKTsKIAotICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm47CiB9CiAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjps
b2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0
aXR1dGVEYXRhKQpAQCAtNjY1LDIxICs2MzUsMTAgQEAKIAogICAgIGRvY3VtZW50TG9hZGVyKCkt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZE1haW5SZXNvdXJjZShyZXF1ZXN0LCBt
X3N1YnN0aXR1dGVEYXRhKTsKIAotICAgIGJvb2wgZGVmZXIgPSBkZWZlcnNMb2FkaW5nKCk7Ci0g
ICAgaWYgKGRlZmVyKSB7Ci0gICAgICAgIGJvb2wgc2hvdWxkTG9hZEVtcHR5ID0gc2hvdWxkTG9h
ZEFzRW1wdHlEb2N1bWVudChyZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgaWYgKHNob3VsZExvYWRF
bXB0eSkKLSAgICAgICAgICAgIGRlZmVyID0gZmFsc2U7Ci0gICAgfQotICAgIGlmICghZGVmZXIp
IHsKLSAgICAgICAgaWYgKGxvYWROb3cocmVxdWVzdCkpIHsKLSAgICAgICAgICAgIC8vIFN0YXJ0
ZWQgYXMgYW4gZW1wdHkgZG9jdW1lbnQsIGJ1dCB3YXMgcmVkaXJlY3RlZCB0byBzb21ldGhpbmcg
bm9uLWVtcHR5LgotICAgICAgICAgICAgQVNTRVJUKGRlZmVyc0xvYWRpbmcoKSk7Ci0gICAgICAg
ICAgICBkZWZlciA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGRlZmVyKQorICAg
IGlmIChkZWZlcnNMb2FkaW5nKCkpCiAgICAgICAgIG1faW5pdGlhbFJlcXVlc3QgPSByZXF1ZXN0
OworICAgIGVsc2UKKyAgICAgICAgbG9hZE5vdyhyZXF1ZXN0KTsKIH0KIAogdm9pZCBNYWluUmVz
b3VyY2VMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxMzM5MjApCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgxLDkgKzgxLDggQEAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CiAKLSAgICBib29sIGxvYWROb3coUmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgdm9pZCBsb2FkTm93KFJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgdm9p
ZCBoYW5kbGVFbXB0eUxvYWQoY29uc3QgS1VSTCYsIGJvb2wgZm9yVVJMU2NoZW1lKTsKICAgICB2
b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgdm9pZCBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coTWFpblJlc291cmNlTG9hZGVy
VGltZXIqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJl
dmlzaW9uIDEzMzkyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDcgQEAKICAgICAgICAgYm9vbCBtX2lzU3Rv
cHBpbmc7CiAgICAgICAgIGJvb2wgbV9nb3RGaXJzdEJ5dGU7CiAgICAgICAgIGJvb2wgbV9pc0Ns
aWVudFJlZGlyZWN0OworICAgICAgICBib29sIG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQ7CiAKICAg
ICAgICAgLy8gRklYTUU6IERvY3VtZW50OjptX3Byb2Nlc3NpbmdMb2FkRXZlbnQgYW5kIERvY3Vt
ZW50TG9hZGVyOjptX3dhc09ubG9hZEhhbmRsZWQgYXJlIHJvdWdobHkgdGhlIHNhbWUKICAgICAg
ICAgLy8gYW5kIHNob3VsZCBiZSBtZXJnZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAJKHJldmlzaW9uIDEzMzkyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogICAgIAogRnJhbWVMb2FkZXJTdGF0ZU1hY2hp
bmU6OkZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lKCkgCi0gICAgOiBtX3N0YXRlKFVuaW5pdGlhbGl6
ZWQpCisgICAgOiBtX3N0YXRlKENyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpCiB7IAogfQog
ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZp
c2lvbiAxMzM5MjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiTWFpblJlc291cmNl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgi
CisjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCkBAIC05Nyw2ICs5OCw3IEBACiAgICAgLCBtX2lzU3RvcHBpbmcoZmFs
c2UpCiAgICAgLCBtX2dvdEZpcnN0Qnl0ZShmYWxzZSkKICAgICAsIG1faXNDbGllbnRSZWRpcmVj
dChmYWxzZSkKKyAgICAsIG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQoZmFsc2UpCiAgICAgLCBtX3dh
c09ubG9hZEhhbmRsZWQoZmFsc2UpCiAgICAgLCBtX3N0b3BSZWNvcmRpbmdSZXNwb25zZXMoZmFs
c2UpCiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIodGhpcywgJkRvY3Vt
ZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQpCkBAIC0xMTQs
NyArMTE2LDcgQEAKIAogRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVudExvYWRlcigpCiB7Ci0gICAg
QVNTRVJUKCFtX2ZyYW1lIHx8IGZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkg
IT0gdGhpcyB8fCAhZnJhbWVMb2FkZXIoKS0+aXNMb2FkaW5nKCkpOworICAgIEFTU0VSVCghbV9m
cmFtZSB8fCBmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpICE9IHRoaXMgfHwg
IWlzTG9hZGluZygpKTsKICAgICBpZiAobV9pY29uTG9hZERlY2lzaW9uQ2FsbGJhY2spCiAgICAg
ICAgIG1faWNvbkxvYWREZWNpc2lvbkNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgaWYgKG1f
aWNvbkRhdGFDYWxsYmFjaykKQEAgLTI4NSw3ICsyODcsNyBAQAogdm9pZCBEb2N1bWVudExvYWRl
cjo6ZmluaXNoZWRMb2FkaW5nKCkKIHsKICAgICBjb21taXRJZlJlYWR5KCk7Ci0gICAgaWYgKCFm
cmFtZUxvYWRlcigpIHx8IGZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLT5jcmVhdGluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCkpCisgICAgaWYgKCFmcmFtZUxvYWRlcigpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIW1heWJlQ3JlYXRlQXJjaGl2ZSgpKSB7CkBAIC00NDksNiArNDUx
LDcgQEAKICAgICAgICAgbV9tYWluUmVzb3VyY2VEYXRhID0gbV9tYWluUmVzb3VyY2VMb2FkZXIt
PnJlc291cmNlRGF0YSgpOwogICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlciA9IDA7CiAgICAg
fQorICAgIG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQgPSBmYWxzZTsKIAogICAgIGlmICh0aGlzID09
IGZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgIGNoZWNrTG9h
ZENvbXBsZXRlKCk7CkBAIC00NjMsNyArNDY2LDcgQEAKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAogICAgICAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLSAg
ICAgICAgaWYgKChtX21haW5SZXNvdXJjZUxvYWRlciB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
bG9hZEV2ZW50RmluaXNoZWQoKSkgJiYgaXNMb2FkaW5nKCkpCisgICAgICAgIGlmICgoaXNMb2Fk
aW5nTWFpblJlc291cmNlKCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPmxvYWRFdmVudEZpbmlz
aGVkKCkpICYmIGlzTG9hZGluZygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGlmIChtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0Q291bnQoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNzY4LDcgKzc3MSw3IEBACiAgICAgICAgIHVybCA9IHJlcXVlc3RV
UkwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgdXJsID0gcmVzcG9uc2VVUkwo
KTsKLSAgICBpZiAodXJsLmlzRW1wdHkoKSkKKyAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiAhZnJh
bWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQo
KSkKICAgICAgICAgdXJsID0gYmxhbmtVUkwoKTsKICAgICByZXR1cm4gdXJsOwogfQpAQCAtODI5
LDcgKzgzMiw3IEBACiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZ01haW5SZXNvdXJj
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEhbV9tYWluUmVzb3VyY2VMb2FkZXI7CisgICAgcmV0
dXJuICEhbV9tYWluUmVzb3VyY2VMb2FkZXIgfHwgbV9sb2FkaW5nRW1wdHlEb2N1bWVudDsKIH0K
IAogYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpIGNvbnN0
CkBAIC04NDcsNiArODUwLDE2IEBACiAgICAgbV9tYWluRG9jdW1lbnRFcnJvciA9IFJlc291cmNl
RXJyb3IoKTsKICAgICB0aW1pbmcoKS0+bWFya05hdmlnYXRpb25TdGFydCgpOwogICAgIEFTU0VS
VCghbV9tYWluUmVzb3VyY2VMb2FkZXIpOworCisgICAgYm9vbCBzaG91ZExvYWRFbXB0eSA9ICFt
X3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiAobV9yZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSB8
fCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkTG9hZFVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChtX3Jl
cXVlc3QudXJsKCkucHJvdG9jb2woKSkpOworICAgIGlmIChzaG91ZExvYWRFbXB0eSB8fCBmcmFt
ZUxvYWRlcigpLT5jbGllbnQoKS0+cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUobV9y
ZXF1ZXN0LnVybCgpLnByb3RvY29sKCkpKSB7CisgICAgICAgIG1fbG9hZGluZ0VtcHR5RG9jdW1l
bnQgPSB0cnVlOworICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBzaG91ZExvYWRFbXB0eSA/ICJ0
ZXh0L2h0bWwiIDogZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmdlbmVyYXRlZE1JTUVUeXBlRm9y
VVJMU2NoZW1lKG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbCgpKTsKKyAgICAgICAgc2V0UmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZShtX3JlcXVlc3QudXJsKCksIG1pbWVUeXBlLCAwLCBTdHJpbmco
KSwgU3RyaW5nKCkpKTsKKyAgICAgICAgZmluaXNoZWRMb2FkaW5nKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBtX21haW5SZXNvdXJjZUxvYWRlciA9IE1haW5SZXNvdXJjZUxvYWRl
cjo6Y3JlYXRlKG1fZnJhbWUpOwogCiAgICAgLy8gRklYTUU6IElzIHRoZXJlIGFueSB3YXkgdGhl
IGV4dHJhIGZpZWxkcyBjb3VsZCBoYXZlIG5vdCBiZWVuIGFkZGVkIGJ5IG5vdz8KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oCShyZXZp
c2lvbiAxMzM5MjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1h
Y2hpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQAogICAgIC8vIGFsdGVybmF0
ZSBiZXR3ZWVuIENvbW1pdHRlZEZpcnN0UmVhbExvYWQgYW5kIEZpcnN0TGF5b3V0RG9uZS4KICAg
ICAvLyBPdGhlcndpc2UsIHRoZSBzdGF0ZXMgb25seSBnbyBkb3duIHRoZSBsaXN0LgogICAgIGVu
dW0gU3RhdGUgewotICAgICAgICBVbmluaXRpYWxpemVkLAogICAgICAgICBDcmVhdGluZ0luaXRp
YWxFbXB0eURvY3VtZW50LAogICAgICAgICBEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQs
CiAgICAgICAgIERpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudFBvc3RDb21taXQsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzMzkyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxNCwxNCArMjE0LDE0IEBACiAgICAgLCBtX3N1YmZyYW1lTG9hZGVyKGZyYW1lKQogICAgICwg
bV9pY29uKGZyYW1lKQogICAgICwgbV9taXhlZENvbnRlbnRDaGVja2VyKGZyYW1lKQotICAgICwg
bV9zdGF0ZShGcmFtZVN0YXRlQ29tbWl0dGVkUGFnZSkKKyAgICAsIG1fc3RhdGUoRnJhbWVTdGF0
ZVByb3Zpc2lvbmFsKQogICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRUeXBlU3RhbmRhcmQpCiAg
ICAgLCBtX2RlbGVnYXRlSXNIYW5kbGluZ1Byb3Zpc2lvbmFsTG9hZEVycm9yKGZhbHNlKQogICAg
ICwgbV9xdWlja1JlZGlyZWN0Q29taW5nKGZhbHNlKQogICAgICwgbV9zZW50UmVkaXJlY3ROb3Rp
ZmljYXRpb24oZmFsc2UpCiAgICAgLCBtX2luU3RvcEFsbExvYWRlcnMoZmFsc2UpCiAgICAgLCBt
X2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb24oZmFsc2UpCi0gICAgLCBtX2RpZENhbGxJ
bXBsaWNpdENsb3NlKGZhbHNlKQorICAgICwgbV9kaWRDYWxsSW1wbGljaXRDbG9zZSh0cnVlKQog
ICAgICwgbV93YXNVbmxvYWRFdmVudEVtaXR0ZWQoZmFsc2UpCiAgICAgLCBtX3BhZ2VEaXNtaXNz
YWxFdmVudEJlaW5nRGlzcGF0Y2hlZChOb0Rpc21pc3NhbCkKICAgICAsIG1faXNDb21wbGV0ZShm
YWxzZSkKQEAgLTI1NCwxOSArMjU0LDExIEBACiB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKIHsK
ICAgICAvLyBUaGlzIHNvbWV3aGF0IG9kZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZyYW1lIGFu
IGluaXRpYWwgZW1wdHkgZG9jdW1lbnQuCi0gICAgLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRo
aXMgY291bGQgYmUgZG9uZSB3aXRoIGV2ZW4gZmV3ZXIgc3RlcHMuCi0gICAgbV9zdGF0ZU1hY2hp
bmUuYWR2YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpDcmVhdGluZ0luaXRpYWxFbXB0
eURvY3VtZW50KTsKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihtX2NsaWVudC0+Y3JlYXRl
RG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0
eVN0cmluZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLmdldCgpKTsKICAgICBzZXRQcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwotICAgIHNldFN0
YXRlKEZyYW1lU3RhdGVQcm92aXNpb25hbCk7Ci0gICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyLT5zZXRSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKEtVUkwoKSwgInRleHQvaHRtbCIsIDAs
IFN0cmluZygpLCBTdHJpbmcoKSkpOwotICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+
ZmluaXNoZWRMb2FkaW5nKCk7Ci0gICAgQVNTRVJUKCFtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAg
ICBtX2RvY3VtZW50TG9hZGVyLT53cml0ZXIoKS0+YmVnaW4oS1VSTCgpLCBmYWxzZSk7Ci0gICAg
bV9kb2N1bWVudExvYWRlci0+d3JpdGVyKCktPmVuZCgpOworICAgIG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+Y2FuY2VsUGFyc2luZygpOwogICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhG
cmFtZUxvYWRlclN0YXRlTWFjaGluZTo6RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KTsK
LSAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gdHJ1ZTsKIAogICAgIG1fbmV0d29ya2luZ0Nv
bnRleHQgPSBtX2NsaWVudC0+Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKICAgICBtX3Byb2dy
ZXNzVHJhY2tlciA9IEZyYW1lUHJvZ3Jlc3NUcmFja2VyOjpjcmVhdGUobV9mcmFtZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMzM5MjApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0xMS0wNyAgTmF0ZSBDaGFwaW4g
IDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgZW1wdHkgbG9hZGluZyB0byBE
b2N1bWVudExvYWRlciwgc2ltcGxpZnkgRnJhbWVMb2FkZXI6OmluaXQoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTEyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aG91Z2gg
c2V2ZXJhbCBvdXRwdXRzIGNoYW5nZWQgYmVjYXVzZSB3ZSBubyBsb25nZXIgc2VuZCByZXNvdXJj
ZQorICAgICAgICAgICAgbG9hZCBjYWxsYmFja3MgZm9yIGVtcHR5IGxvYWRzLgorCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UpOiBIYW5kbGUgZW1wdHkgbWFpbiByZXNv
dXJjZQorICAgICAgICAgICAgbG9hZHMgZGlyZWN0bHkgaGVyZS4KKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKTogSW5pdGlhbGl6ZSBzb21l
IHZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMKKyAgICAgICAgICAgIHdlcmUgcHJldmlvdXNseSBiZWlu
ZyByZXNldCBpbiBpbml0KCkuIEdpdmVuIHRoYXQgdGhlIEZyYW1lTG9hZGVyIGlzIGluCisgICAg
ICAgICAgICBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgYmVmb3JlIGluaXQoKSBpcyBjYWxsZWQgYW55
d2F5LCB0aGVyZSBkb2Vzbid0IHNlZW0KKyAgICAgICAgICAgIHRvIGJlIGEgZGlzYWR2YW50YWdl
IHRvIGp1c3QgaW5pdGlhbGl6aW5nIHRoZW0gdG8gdGhlaXIgcG9zdC1pbml0KCkgdmFsdWVzLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOiBKdXN0IGNhbGwgc3RhcnRMb2Fk
aW5nTWFpblJlc291cmNlKCksIGluc3RlYWQgb2YKKyAgICAgICAgICAgIGRvaW5nIGEgYnVuY2gg
b2YgZGlyZWN0IGNhbGxzIHRvIGZ1bmN0aW9ucyBGcmFtZUxvYWRlciBzaG91bGRuJ3Qga25vdyBh
Ym91dC4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oOgorICAgICAgICAqIGxvYWRl
ci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOiBUaHJvdWdob3V0LCByZW1vdmUgdGhlIGNvbmNlcHQg
b2YgYW4gZW1wdHkgbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6
bG9hZE5vdyk6IFRoaXMgb25seSByZXR1cm5lZCB0cnVlIHdoZW4gYW4gZW1wdHkKKyAgICAgICAg
ICAgIGxvYWQgZ290IGRlZmVycmVkLCB3aGljaCB3b24ndCBoYXBwZW4gbm93LiBSZXR1cm4gdm9p
ZCBhbmQgYWx3YXlzIHRyZWF0CisgICAgICAgICAgICBhcyByZXR1cm5pbmcgZmFsc2UuCisgICAg
ICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oOgorCiAyMDEyLTExLTA4ICBBbmRyZXkg
S29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
c2hvdyBzdGF0aXN0aWNzIG92ZXIgc2VsZWN0ZWQgZnJhbWUgcmFuZ2UgaW4gVGltZWxpbmUncyBG
cmFtZSBtb2RlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzOTY1
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxMi0xMS0wOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIE1vdmUgZW1wdHkgbG9hZGluZyB0byBEb2N1bWVudExvYWRlciwgc2lt
cGxpZnkgRnJhbWVMb2FkZXI6OmluaXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHNvbWUgdmVyeSBvbGQgYW5kIHNlZW1pbmdseSB1bm5l
Y2Vzc2FyeSBjb2RlIHRoYXQgY29udmVydHMKKyAgICAgICAgZW1wdHkgdXJscyB0byBhYm91dDpi
bGFuay4KKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KToKKwogMjAxMi0xMS0wOCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEV4cG9zZSBzbmFwc2hvdHMgaW4gcGxhdGZvcm0vbGV2ZWxkYiB3cmFwcGVyIEFQSQpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzM5MjApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksMTMg
KzM3OSw2IEBACiAgICAgICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJldHVybkNhY2hl
RGF0YURvbnRMb2FkKTsKICAgICB9CiAKLSAgICAvLyBGcmFtZUxvYWRlcjo6bG9hZEVtcHR5RG9j
dW1lbnRTeW5jaHJvbm91c2x5KCkgY3JlYXRlcyBhbiBlbXB0eSBkb2N1bWVudAotICAgIC8vIHdp
dGggbm8gVVJMLiAgV2UgZG9uJ3QgbGlrZSB0aGF0LCBzbyB3ZSdsbCByZW5hbWUgaXQgdG8gYWJv
dXQ6YmxhbmsuCi0gICAgaWYgKHJlcXVlc3QudXJsKCkuaXNFbXB0eSgpKQotICAgICAgICByZXF1
ZXN0LnNldFVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgImFib3V0OmJsYW5rIikpOwotICAgIGlm
IChyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkuaXNFbXB0eSgpKQotICAgICAgICByZXF1
ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6
YmxhbmsiKSk7Ci0KICAgICAvLyBHaXZlIHRoZSBXZWJGcmFtZUNsaWVudCBhIGNyYWNrIGF0IHRo
ZSByZXF1ZXN0LgogICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkgewogICAgICAgICBXcmFw
cGVkUmVzb3VyY2VSZXF1ZXN0IHdlYnJlcShyZXF1ZXN0KTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDEzMzkyMCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTczMiw3ICsxNzMyLDggQEAKIHsKICAgICAvLyBDb2RlIGR1cGxpY2F0ZWQgZnJv
bSBSZW5kZXJWaWV3OjpEaWRDb21taXRMb2FkRm9yRnJhbWUuCiAgICAgVGVzdFNoZWxsRXh0cmFE
YXRhKiBleHRyYURhdGEgPSBzdGF0aWNfY2FzdDxUZXN0U2hlbGxFeHRyYURhdGEqPihmcmFtZS0+
ZGF0YVNvdXJjZSgpLT5leHRyYURhdGEoKSk7Ci0gICAgYm9vbCBub25CbGFua1BhZ2VBZnRlclJl
c2V0ID0gbV9wYWdlSWQgPT0gLTEgJiYgc3RyY21wKGZyYW1lLT5kYXRhU291cmNlKCktPnJlcXVl
c3QoKS51cmwoKS5zcGVjKCkuZGF0YSgpLCAiYWJvdXQ6YmxhbmsiKTsKKyAgICBjb25zdCBXZWJV
UkwmIHVybCA9IGZyYW1lLT5kYXRhU291cmNlKCktPnJlcXVlc3QoKS51cmwoKTsKKyAgICBib29s
IG5vbkJsYW5rUGFnZUFmdGVyUmVzZXQgPSBtX3BhZ2VJZCA9PSAtMSAmJiAhdXJsLmlzRW1wdHko
KSAmJiBzdHJjbXAodXJsLnNwZWMoKS5kYXRhKCksICJhYm91dDpibGFuayIpOwogCiAgICAgaWYg
KGlzTmV3TmF2aWdhdGlvbiB8fCBub25CbGFua1BhZ2VBZnRlclJlc2V0KSB7CiAgICAgICAgIC8v
IE5ldyBuYXZpZ2F0aW9uLgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzOTY1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEtMDggIE5hdGUgQ2hhcGluICA8amFw
aGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIGVtcHR5IGxvYWRpbmcgdG8gRG9jdW1l
bnRMb2FkZXIsIHNpbXBsaWZ5IEZyYW1lTG9hZGVyOjppbml0KCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUxMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9taXVtIERSVCBoYXMgc29tZSBjb2Rl
IHRoYXQgZG9lc24ndCBwbGF5IG5pY2VseSB3aXRoIGVtcHR5IHVybHMgYW5kIGluY29ycmVjdGx5
CisgICAgICAgIGludGVycHJldHMgdGhlbSBhcyBhIG5vbi1lbXB0eSBsb2FkLiBUaGlzIGVuc3Vy
ZXMKKyAgICAgICAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL25ldy13aW5kb3ctcmVkaXJlY3QtaGlz
dG9yeS5odG1sIGNvbnRpbnVlcyB0byBwYXNzCisgICAgICAgIGluIGNocm9taXVtLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAo
V2ViVmlld0hvc3Q6OnVwZGF0ZUZvckNvbW1pdHRlZExvYWQpOgorCiAyMDEyLTExLTA4ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VG
TF1bV0syXSBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIGZ1bGxzY3JlZW4gQVBJIHRvIE1pbmlCcm93
c2VyCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzM5MjApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMS0wNyAgTmF0ZSBDaGFwaW4g
IDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgZW1wdHkgbG9hZGluZyB0byBE
b2N1bWVudExvYWRlciwgc2ltcGxpZnkgRnJhbWVMb2FkZXI6OmluaXQoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTEyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgZXhwZWN0IHJlc291cmNl
IGxvYWQgY2FsbGJhY2tzIGZvciBlbXB0eSBsb2Fkcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1pZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9w
dGlvbnMtZGVueS1tZXRhLXRhZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWluLWJv
ZHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0
aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVu
eS1leHBlY3RlZC50eHQ6CisKIDIwMTItMTEtMDggIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25A
aW50ZWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIE1vcmUgZ2FyZGVuaW5nIGFmdGVyIHIx
MzM4OTguCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlv
bnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25z
L3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWluLWJvZHktZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxMzM5MjApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9w
dGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw2IEBACiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10
YWctc3ViZnJhbWUtaW4tYm9keS5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3Bv
bnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNl
cy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1pbi1ib2R5Lmh0bWwsIGh0
dHAgc3RhdHVzIGNvZGUgMjAwPgogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1l
LWluLWJvZHkuaHRtbCAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4g
TlNVUkxFcnJvckRvbWFpbiwgY29kZSAtOTk5LCBmYWlsaW5nIFVSTCAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1k
ZW55LW1ldGEtdGFnLXN1YmZyYW1lLWluLWJvZHkuaHRtbCI+CiBDT05TT0xFIE1FU1NBR0U6IFJl
ZnVzZWQgdG8gZGlzcGxheSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9w
dGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLWlu
LWJvZHkuaHRtbCcgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0
byAnZGVueScuCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVS
TCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9k
eS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91dDpi
bGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFuaywgaHR0
cCBzdGF0dXMgY29kZSAwPgogVGhlcmUgc2hvdWxkIGJlIG5vIGNvbnRlbnQgaW4gdGhlIGlmcmFt
ZSBiZWxvdwogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1l
T3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4t
ZGVueS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVu
dC1zYW1lLW9yaWdpbi1kZW55LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTMzOTIwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9u
cy1kZW55LW1ldGEtdGFnLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMyw4ICszLDYgQEAKIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1z
dWJmcmFtZS1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNl
IDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRp
b25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1wYXJl
bnQtc2FtZS1vcmlnaW4tZGVueS5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KIGh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9w
dGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1s
IC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBOU1VSTEVycm9yRG9t
YWluLCBjb2RlIC05OTksIGZhaWxpbmcgVVJMICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJp
dHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWct
c3ViZnJhbWUtcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCI+CiBDT05TT0xFIE1FU1NBR0U6
IFJlZnVzZWQgdG8gZGlzcGxheSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1l
LXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwnIGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQg
J1gtRnJhbWUtT3B0aW9ucycgdG8gJ3NhbWVvcmlnaW4nLgotYWJvdXQ6YmxhbmsgLSB3aWxsU2Vu
ZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9jdW1lbnQgVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0
aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwsIGh0dHAgbWV0
aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWFib3V0OmJsYW5rIC0gZGlkUmVjZWl2
ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGFib3V0OmJsYW5rLCBodHRwIHN0YXR1cyBjb2RlIDA+
CiBUaGVyZSBzaG91bGQgYmUgbm8gY29udGVudCBpbiB0aGUgaWZyYW1lIGJlbG93CiAKIApJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUt
b3B0aW9ucy1kZW55LW1ldGEtdGFnLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRl
bnktbWV0YS10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzM5MjApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkt
bWV0YS10YWctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsNiBAQAogaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJh
bWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9u
c2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9w
dGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLmh0
bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1
YmZyYW1lLmh0bWwgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIE5T
VVJMRXJyb3JEb21haW4sIGNvZGUgLTk5OSwgZmFpbGluZyBVUkwgImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVu
eS1tZXRhLXRhZy1zdWJmcmFtZS5odG1sIj4KIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBk
aXNwbGF5ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNv
dXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUuaHRtbCcgaW4gYSBm
cmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0byAnZGVueScuCi1hYm91dDpi
bGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFp
biBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlv
bnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWcuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBy
ZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZlUmVzcG9uc2Ug
PE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUgMD4KIFRoZXJlIHNo
b3VsZCBiZSBubyBjb250ZW50IGluIHRoZSBpZnJhbWUgYmVsb3cKIAogCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5k
LWRlbGV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1pZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0bWwJKHJldmlzaW9u
IDEzMzkyMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1pZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcg
KzQzLDcgQEAKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHZhciByZXF1
ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rv
ci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDNdOworICAgICAgICB2YXIgcmVx
dWVzdDEgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0
b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5ndGggLSAyXTsKICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDEudXJsKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXF1ZXN0MS50eXBlKTsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3Rpbmcg
Y29udGVudDogIiArIHJlcXVlc3QxLmNvbnRlbnQpOwpAQCAtNTIsNyArNTIsNyBAQAogCiAgICAg
ZnVuY3Rpb24gc3RlcDMoKQogICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVj
dG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3Jr
IikucmVxdWVzdHMubGVuZ3RoIC0gM107CisgICAgICAgIHZhciByZXF1ZXN0MSA9IFdlYkluc3Bl
Y3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbCgibmV0d29y
ayIpLnJlcXVlc3RzLmxlbmd0aCAtIDJdOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgicmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXF1ZXN0
MS5jb250ZW50KTsKIAogICAgICAgICB2YXIgcmVxdWVzdDIgPSBXZWJJbnNwZWN0b3IucGFuZWwo
Im5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0
cy5sZW5ndGggLSAxXTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRp
cmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEz
MzkyMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2Rz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSwxMyArNSwxMCBAQAogbWFpbiBmcmFt
ZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQogPHVua25vd24+IC0gZGlkRmluaXNoTG9hZGluZwog
ZnJhbWUgIjAiIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQotYWJvdXQ6Ymxhbmsg
LSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9j
dW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMu
aHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6Ymxh
bmsgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAg
c3RhdHVzIGNvZGUgMD4KIGZyYW1lICIwIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUg
IjAiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEhhbmRs
ZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMCIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUK
LWFib3V0OmJsYW5rIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjAiIC0gd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgCiBmcmFtZSAiMCIgLSBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVx
dWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtZm9ybS5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJl
Y3RSZXNwb25zZSAobnVsbCkKQEAgLTMyLDEzICsyOSwxMCBAQAogZnJhbWUgIjAiIC0gZGlkQ29t
bWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMCIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZQogZnJhbWUgIjEiIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQotYWJvdXQ6Ymxh
bmsgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgYWJvdXQ6YmxhbmssIG1haW4g
ZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhv
ZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6
YmxhbmsgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0
dHAgc3RhdHVzIGNvZGUgMD4KIGZyYW1lICIxIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJh
bWUgIjEiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEhh
bmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hMb2FkRm9yRnJh
bWUKLWFib3V0OmJsYW5rIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjEiIC0gd2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNv
dXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgCiBmcmFtZSAiMCIgLSBkaWRIYW5kbGVP
bmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjAiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCkBA
IC02MiwxMyArNTYsMTAgQEAKIGZyYW1lICIxIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJh
bWUgIjEiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKLWFib3V0OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0
IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9k
IEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWFib3V0OmJsYW5rIC0gZGlkUmVjZWl2ZVJl
c3BvbnNlIDxOU1VSTFJlc3BvbnNlIGFib3V0OmJsYW5rLCBodHRwIHN0YXR1cyBjb2RlIDA+CiBm
cmFtZSAiMiIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZQogZnJhbWUgIjIiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCi1hYm91dDpibGFuayAtIGRp
ZEZpbmlzaExvYWRpbmcKIGZyYW1lICIyIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VS
TDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhv
ZHMtZm9ybS5odG1sIAogZnJhbWUgIjEiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUK
IGZyYW1lICIxIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQpAQCAtOTIsMTMgKzgzLDEwIEBACiBm
cmFtZSAiMiIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBh
Ym91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRp
bmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9u
c2UgKG51bGwpCi1hYm91dDpibGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25z
ZSBhYm91dDpibGFuaywgaHR0cCBzdGF0dXMgY29kZSAwPgogZnJhbWUgIjMiIC0gZGlkQ29tbWl0
TG9hZEZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQog
ZnJhbWUgIjMiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIzIiAtIGRp
ZEZpbmlzaExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFt
ZSAiMyIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAKIGZyYW1l
ICIyIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUK
</data>
<flag name="commit-queue"
          id="187897"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173718</attachid>
            <date>2012-11-12 13:57:10 -0800</date>
            <delta_ts>2012-11-13 15:40:41 -0800</delta_ts>
            <desc>EWS experiment #2</desc>
            <filename>empty3.txt</filename>
            <type>text/plain</type>
            <size>28084</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzMzk2NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE4IEBACisyMDEyLTExLTA4ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgTW92ZSBlbXB0eSBsb2FkaW5nIHRvIERvY3VtZW50TG9hZGVyLCBzaW1wbGlm
eSBGcmFtZUxvYWRlcjo6aW5pdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDE1MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDaHJvbWl1bSBEUlQgaGFzIHNvbWUgY29kZSB0aGF0IGRvZXNuJ3QgcGxh
eSBuaWNlbHkgd2l0aCBlbXB0eSB1cmxzIGFuZCBpbmNvcnJlY3RseQorICAgICAgICBpbnRlcnBy
ZXRzIHRoZW0gYXMgYSBub24tZW1wdHkgbG9hZC4gVGhpcyBlbnN1cmVzCisgICAgICAgIGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9uZXctd2luZG93LXJlZGlyZWN0LWhpc3RvcnkuaHRtbCBjb250aW51
ZXMgdG8gcGFzcworICAgICAgICBpbiBjaHJvbWl1bS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojp1cGRh
dGVGb3JDb21taXR0ZWRMb2FkKToKKwogMjAxMi0xMS0wOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
cmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIHByb3Bl
ciBzdXBwb3J0IGZvciBmdWxsc2NyZWVuIEFQSSB0byBNaW5pQnJvd3NlcgpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gMTMz
OTIwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzMyLDcgKzE3MzIsOCBAQAogewogICAgIC8vIENvZGUgZHVwbGlj
YXRlZCBmcm9tIFJlbmRlclZpZXc6OkRpZENvbW1pdExvYWRGb3JGcmFtZS4KICAgICBUZXN0U2hl
bGxFeHRyYURhdGEqIGV4dHJhRGF0YSA9IHN0YXRpY19jYXN0PFRlc3RTaGVsbEV4dHJhRGF0YSo+
KGZyYW1lLT5kYXRhU291cmNlKCktPmV4dHJhRGF0YSgpKTsKLSAgICBib29sIG5vbkJsYW5rUGFn
ZUFmdGVyUmVzZXQgPSBtX3BhZ2VJZCA9PSAtMSAmJiBzdHJjbXAoZnJhbWUtPmRhdGFTb3VyY2Uo
KS0+cmVxdWVzdCgpLnVybCgpLnNwZWMoKS5kYXRhKCksICJhYm91dDpibGFuayIpOworICAgIGNv
bnN0IFdlYlVSTCYgdXJsID0gZnJhbWUtPmRhdGFTb3VyY2UoKS0+cmVxdWVzdCgpLnVybCgpOwor
ICAgIGJvb2wgbm9uQmxhbmtQYWdlQWZ0ZXJSZXNldCA9IG1fcGFnZUlkID09IC0xICYmICF1cmwu
aXNFbXB0eSgpICYmIHN0cmNtcCh1cmwuc3BlYygpLmRhdGEoKSwgImFib3V0OmJsYW5rIik7CiAK
ICAgICBpZiAoaXNOZXdOYXZpZ2F0aW9uIHx8IG5vbkJsYW5rUGFnZUFmdGVyUmVzZXQpIHsKICAg
ICAgICAgLy8gTmV3IG5hdmlnYXRpb24uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay1pZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0bWwJKHJldmlzaW9uIDEzMzkyMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1pZnJhbWUtbG9hZC1h
bmQtZGVsZXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAKIAogICAgIGZ1
bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHZhciByZXF1ZXN0MSA9IFdlYkluc3BlY3Rv
ci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIp
LnJlcXVlc3RzLmxlbmd0aCAtIDNdOworICAgICAgICB2YXIgcmVxdWVzdDEgPSBXZWJJbnNwZWN0
b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsi
KS5yZXF1ZXN0cy5sZW5ndGggLSAyXTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
cmVxdWVzdDEudXJsKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNl
LnR5cGU6ICIgKyByZXF1ZXN0MS50eXBlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoInJlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlcXVl
c3QxLmNvbnRlbnQpOwpAQCAtNTIsNyArNTIsNyBAQAogCiAgICAgZnVuY3Rpb24gc3RlcDMoKQog
ICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3Jr
IikucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHMubGVuZ3Ro
IC0gM107CisgICAgICAgIHZhciByZXF1ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29y
ayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzLmxlbmd0
aCAtIDJdOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVu
dCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXF1ZXN0MS5jb250ZW50KTsKIAogICAg
ICAgICB2YXIgcmVxdWVzdDIgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0
c1tXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVk
aXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMzkyMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNSwxMyArNSwxMCBAQAogbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRG
b3JGcmFtZQogPHVua25vd24+IC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjAiIC0gZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSB3aWxsU2VuZFJlcXVlc3Qg
PE5TVVJMUmVxdWVzdCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2Qg
R0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZlUmVz
cG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUgMD4KIGZy
YW1lICIwIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjAiIC0gZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZy
YW1lCiBmcmFtZSAiMCIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWFib3V0OmJsYW5rIC0gZGlk
RmluaXNoTG9hZGluZwogZnJhbWUgIjAiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1mb3JtLmh0bWwgCiBmcmFtZSAiMCIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1mb3JtLmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1s
LCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVj
dC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkK
QEAgLTMyLDEzICsyOSwxMCBAQAogZnJhbWUgIjAiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBm
cmFtZSAiMCIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSB3aWxsU2VuZFJlcXVl
c3QgPE5TVVJMUmVxdWVzdCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRo
b2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZl
UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUgMD4K
IGZyYW1lICIxIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWFib3V0OmJsYW5rIC0g
ZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjEiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRv
VVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0
aG9kcy1mb3JtLmh0bWwgCiBmcmFtZSAiMCIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFt
ZQogZnJhbWUgIjAiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCkBAIC02MiwxMyArNTYsMTAgQEAK
IGZyYW1lICIxIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUKLWFib3V0OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJM
IGFib3V0OmJsYW5rLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9h
ZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNw
b25zZSAobnVsbCkKLWFib3V0OmJsYW5rIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3Bv
bnNlIGFib3V0OmJsYW5rLCBodHRwIHN0YXR1cyBjb2RlIDA+CiBmcmFtZSAiMiIgLSBkaWRDb21t
aXRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
CiBmcmFtZSAiMiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjIiIC0g
ZGlkRmluaXNoTG9hZEZvckZyYW1lCi1hYm91dDpibGFuayAtIGRpZEZpbmlzaExvYWRpbmcKIGZy
YW1lICIyIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIAogZnJh
bWUgIjEiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEZp
bmlzaExvYWRGb3JGcmFtZQpAQCAtOTIsMTMgKzgzLDEwIEBACiBmcmFtZSAiMiIgLSBkaWRDb21t
aXRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
CiBmcmFtZSAiMyIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCi1hYm91dDpibGFu
ayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBk
b2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9k
cy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91dDpi
bGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFuaywgaHR0
cCBzdGF0dXMgY29kZSAwPgogZnJhbWUgIjMiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFt
ZSAiMyIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIzIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZQotYWJvdXQ6YmxhbmsgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMyIgLSB3aWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAKIGZyYW1lICIyIiAtIGRpZEhhbmRsZU9u
bG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1l
LW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1v
cHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMzky
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZy
YW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMyw4ICszLDYgQEAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJh
bWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFt
ZS1pbi1ib2R5Lmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUt
b3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLWluLWJvZHkuaHRtbCwgaHR0cCBzdGF0dXMg
Y29kZSAyMDA+CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9y
ZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtaW4tYm9keS5o
dG1sIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBOU1VSTEVycm9y
RG9tYWluLCBjb2RlIC05OTksIGZhaWxpbmcgVVJMICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10
YWctc3ViZnJhbWUtaW4tYm9keS5odG1sIj4KIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBk
aXNwbGF5ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNv
dXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtaW4tYm9keS5odG1s
JyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICdkZW55Jy4K
LWFib3V0OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJs
YW5rLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZy
YW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5Lmh0bWwsIGh0
dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWFib3V0OmJsYW5rIC0gZGlk
UmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGFib3V0OmJsYW5rLCBodHRwIHN0YXR1cyBj
b2RlIDA+CiBUaGVyZSBzaG91bGQgYmUgbm8gY29udGVudCBpbiB0aGUgaWZyYW1lIGJlbG93CiAK
IApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gt
ZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hG
cmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3Jp
Z2luLWRlbnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzM5MjApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0
YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRlbnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0zLDggKzMsNiBAQAogaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L1hGcmFtZU9w
dGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLXBh
cmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVz
cG9uc2UgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3Vy
Y2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLXBhcmVudC1zYW1lLW9y
aWdpbi1kZW55Lmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55
LW1ldGEtdGFnLXN1YmZyYW1lLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwgLSBkaWRGYWls
TG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIE5TVVJMRXJyb3JEb21haW4sIGNvZGUg
LTk5OSwgZmFpbGluZyBVUkwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9YRnJhbWVP
cHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1w
YXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sIj4KIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0
byBkaXNwbGF5ICdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9y
ZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtcGFyZW50LXNh
bWUtb3JpZ2luLWRlbnkuaHRtbCcgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1P
cHRpb25zJyB0byAnc2FtZW9yaWdpbicuCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8
TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkt
bWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBy
ZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZlUmVzcG9uc2Ug
PE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUgMD4KIFRoZXJlIHNo
b3VsZCBiZSBubyBjb250ZW50IGluIHRoZSBpZnJhbWUgYmVsb3cKIAogCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRl
bnktbWV0YS10YWctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRh
Zy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMzkyMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw2IEBACiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25z
LWRlbnktbWV0YS10YWctc3ViZnJhbWUuaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxS
ZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNv
dXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUuaHRtbCwgaHR0cCBz
dGF0dXMgY29kZSAyMDA+CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0
aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUuaHRt
bCAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gTlNVUkxFcnJvckRv
bWFpbiwgY29kZSAtOTk5LCBmYWlsaW5nIFVSTCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFn
LXN1YmZyYW1lLmh0bWwiPgogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGRpc3BsYXkgJ2h0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZy
YW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS5odG1sJyBpbiBhIGZyYW1lIGJlY2F1
c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICdkZW55Jy4KLWFib3V0OmJsYW5rIC0gd2ls
bFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBtYWluIGRvY3VtZW50
IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1l
LW9wdGlvbnMtZGVueS1tZXRhLXRhZy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVz
cG9uc2UgKG51bGwpCi1hYm91dDpibGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNw
b25zZSBhYm91dDpibGFuaywgaHR0cCBzdGF0dXMgY29kZSAwPgogVGhlcmUgc2hvdWxkIGJlIG5v
IGNvbnRlbnQgaW4gdGhlIGlmcmFtZSBiZWxvdwogCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzky
MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4
IEBACisyMDEyLTExLTA3ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgTW92ZSBlbXB0eSBsb2FkaW5nIHRvIERvY3VtZW50TG9hZGVyLCBzaW1wbGlmeSBGcmFt
ZUxvYWRlcjo6aW5pdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDE1MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBEb24ndCBleHBlY3QgcmVzb3VyY2UgbG9hZCBjYWxsYmFja3MgZm9yIGVtcHR5IGxv
YWRzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlm
cmFtZS1sb2FkLWFuZC1kZWxldGUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcv
cmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFt
ZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1l
dGEtdGFnLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55LWV4cGVjdGVkLnR4dDoKKwogMjAxMi0xMS0w
OCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBpbnRlbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gTW9yZSBnYXJkZW5pbmcgYWZ0ZXIgcjEzMzg5OC4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDEzMzkyMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
ODEsOSArODEsOCBAQAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBPVkVSUklERTsKIAotICAgIGJvb2wgbG9hZE5vdyhSZXNvdXJjZVJlcXVlc3Qm
KTsKKyAgICB2b2lkIGxvYWROb3coUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICB2b2lkIGhhbmRs
ZUVtcHR5TG9hZChjb25zdCBLVVJMJiwgYm9vbCBmb3JVUkxTY2hlbWUpOwogICAgIHZvaWQgaGFu
ZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2
b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdyhNYWluUmVzb3VyY2VMb2FkZXJUaW1lciop
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24g
MTMzOTIwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwNyw2ICszMDcsNyBAQAogICAgICAgICBib29sIG1faXNTdG9wcGluZzsK
ICAgICAgICAgYm9vbCBtX2dvdEZpcnN0Qnl0ZTsKICAgICAgICAgYm9vbCBtX2lzQ2xpZW50UmVk
aXJlY3Q7CisgICAgICAgIGJvb2wgbV9sb2FkaW5nRW1wdHlEb2N1bWVudDsKIAogICAgICAgICAv
LyBGSVhNRTogRG9jdW1lbnQ6Om1fcHJvY2Vzc2luZ0xvYWRFdmVudCBhbmQgRG9jdW1lbnRMb2Fk
ZXI6Om1fd2FzT25sb2FkSGFuZGxlZCBhcmUgcm91Z2hseSB0aGUgc2FtZQogICAgICAgICAvLyBh
bmQgc2hvdWxkIGJlIG1lcmdlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlclN0YXRlTWFjaGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcAkocmV2aXNpb24gMTMzOTIwKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQAogCiAgICAgCiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZTo6RnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmUoKSAKLSAgICA6IG1fc3RhdGUoVW5pbml0aWFsaXplZCkKKyAg
ICA6IG1fc3RhdGUoQ3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCkKIHsgCiB9CiAgICAgCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDEz
MzkyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJNYWluUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKKyNpbmNs
dWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50
YXRpb24uaCIKQEAgLTk3LDYgKzk4LDcgQEAKICAgICAsIG1faXNTdG9wcGluZyhmYWxzZSkKICAg
ICAsIG1fZ290Rmlyc3RCeXRlKGZhbHNlKQogICAgICwgbV9pc0NsaWVudFJlZGlyZWN0KGZhbHNl
KQorICAgICwgbV9sb2FkaW5nRW1wdHlEb2N1bWVudChmYWxzZSkKICAgICAsIG1fd2FzT25sb2Fk
SGFuZGxlZChmYWxzZSkKICAgICAsIG1fc3RvcFJlY29yZGluZ1Jlc3BvbnNlcyhmYWxzZSkKICAg
ICAsIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lcih0aGlzLCAmRG9jdW1lbnRMb2Fk
ZXI6OnN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJlZCkKQEAgLTExNCw3ICsxMTYs
NyBAQAogCiBEb2N1bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKIHsKLSAgICBBU1NFUlQo
IW1fZnJhbWUgfHwgZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSAhPSB0aGlz
IHx8ICFmcmFtZUxvYWRlcigpLT5pc0xvYWRpbmcoKSk7CisgICAgQVNTRVJUKCFtX2ZyYW1lIHx8
IGZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgIT0gdGhpcyB8fCAhaXNMb2Fk
aW5nKCkpOwogICAgIGlmIChtX2ljb25Mb2FkRGVjaXNpb25DYWxsYmFjaykKICAgICAgICAgbV9p
Y29uTG9hZERlY2lzaW9uQ2FsbGJhY2stPmludmFsaWRhdGUoKTsKICAgICBpZiAobV9pY29uRGF0
YUNhbGxiYWNrKQpAQCAtMjg1LDcgKzI4Nyw3IEBACiB2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5p
c2hlZExvYWRpbmcoKQogewogICAgIGNvbW1pdElmUmVhZHkoKTsKLSAgICBpZiAoIWZyYW1lTG9h
ZGVyKCkgfHwgZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVt
cHR5RG9jdW1lbnQoKSkKKyAgICBpZiAoIWZyYW1lTG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghbWF5YmVDcmVhdGVBcmNoaXZlKCkpIHsKQEAgLTMwMCw3ICszMDIsOCBAQAog
ICAgIGlmICghbV9tYWluRG9jdW1lbnRFcnJvci5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7Ci0gICAgZnJhbWVMb2FkZXIoKS0+Y2hlY2tM
b2FkQ29tcGxldGUoKTsKKyAgICBpZiAoIWZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLT5j
cmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpCisgICAgICAgIGZyYW1lTG9hZGVyKCktPmNo
ZWNrTG9hZENvbXBsZXRlKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQo
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTQ0OSw2ICs0NTIsNyBAQAogICAgICAg
ICBtX21haW5SZXNvdXJjZURhdGEgPSBtX21haW5SZXNvdXJjZUxvYWRlci0+cmVzb3VyY2VEYXRh
KCk7CiAgICAgICAgIG1fbWFpblJlc291cmNlTG9hZGVyID0gMDsKICAgICB9CisgICAgbV9sb2Fk
aW5nRW1wdHlEb2N1bWVudCA9IGZhbHNlOwogCiAgICAgaWYgKHRoaXMgPT0gZnJhbWVMb2FkZXIo
KS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgY2hlY2tMb2FkQ29tcGxldGUoKTsK
QEAgLTQ2Myw3ICs0NjcsNyBAQAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAg
ICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwotICAgICAgICBpZiAoKG1f
bWFpblJlc291cmNlTG9hZGVyIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5sb2FkRXZlbnRGaW5p
c2hlZCgpKSAmJiBpc0xvYWRpbmcoKSkKKyAgICAgICAgaWYgKChpc0xvYWRpbmdNYWluUmVzb3Vy
Y2UoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bG9hZEV2ZW50RmluaXNoZWQoKSkgJiYgaXNM
b2FkaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKG1fY2FjaGVk
UmVzb3VyY2VMb2FkZXItPnJlcXVlc3RDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC03NjgsNyArNzcyLDcgQEAKICAgICAgICAgdXJsID0gcmVxdWVzdFVSTCgpOwogICAgIGlm
ICh1cmwuaXNFbXB0eSgpKQogICAgICAgICB1cmwgPSByZXNwb25zZVVSTCgpOwotICAgIGlmICh1
cmwuaXNFbXB0eSgpKQorICAgIGlmICh1cmwuaXNFbXB0eSgpICYmICFmcmFtZUxvYWRlcigpLT5z
dGF0ZU1hY2hpbmUoKS0+Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICB1
cmwgPSBibGFua1VSTCgpOwogICAgIHJldHVybiB1cmw7CiB9CkBAIC04MjksNyArODMzLDcgQEAK
IAogYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nTWFpblJlc291cmNlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gISFtX21haW5SZXNvdXJjZUxvYWRlcjsKKyAgICByZXR1cm4gISFtX21haW5S
ZXNvdXJjZUxvYWRlciB8fCBtX2xvYWRpbmdFbXB0eURvY3VtZW50OwogfQogCiBib29sIERvY3Vt
ZW50TG9hZGVyOjppc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkgY29uc3QKQEAgLTg0Nyw2ICs4
NTEsMTYgQEAKICAgICBtX21haW5Eb2N1bWVudEVycm9yID0gUmVzb3VyY2VFcnJvcigpOwogICAg
IHRpbWluZygpLT5tYXJrTmF2aWdhdGlvblN0YXJ0KCk7CiAgICAgQVNTRVJUKCFtX21haW5SZXNv
dXJjZUxvYWRlcik7CisKKyAgICBib29sIHNob3VkTG9hZEVtcHR5ID0gIW1fc3Vic3RpdHV0ZURh
dGEuaXNWYWxpZCgpICYmIChtX3JlcXVlc3QudXJsKCkuaXNFbXB0eSgpIHx8IFNjaGVtZVJlZ2lz
dHJ5OjpzaG91bGRMb2FkVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KG1fcmVxdWVzdC51cmwoKS5w
cm90b2NvbCgpKSk7CisgICAgaWYgKHNob3VkTG9hZEVtcHR5IHx8IGZyYW1lTG9hZGVyKCktPmNs
aWVudCgpLT5yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShtX3JlcXVlc3QudXJsKCku
cHJvdG9jb2woKSkpIHsKKyAgICAgICAgbV9sb2FkaW5nRW1wdHlEb2N1bWVudCA9IHRydWU7Cisg
ICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IHNob3VkTG9hZEVtcHR5ID8gInRleHQvaHRtbCIgOiBm
cmFtZUxvYWRlcigpLT5jbGllbnQoKS0+Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUobV9y
ZXF1ZXN0LnVybCgpLnByb3RvY29sKCkpOworICAgICAgICBzZXRSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlKG1fcmVxdWVzdC51cmwoKSwgbWltZVR5cGUsIDAsIFN0cmluZygpLCBTdHJpbmcoKSkp
OworICAgICAgICBmaW5pc2hlZExvYWRpbmcoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIG1fbWFpblJlc291cmNlTG9hZGVyID0gTWFpblJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9m
cmFtZSk7CiAKICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IHdheSB0aGUgZXh0cmEgZmllbGRz
IGNvdWxkIGhhdmUgbm90IGJlZW4gYWRkZWQgYnkgbm93PwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmgJKHJldmlzaW9uIDEzMzkyMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw3ICs0NCw2IEBACiAgICAgLy8gYWx0ZXJuYXRlIGJldHdlZW4gQ29t
bWl0dGVkRmlyc3RSZWFsTG9hZCBhbmQgRmlyc3RMYXlvdXREb25lLgogICAgIC8vIE90aGVyd2lz
ZSwgdGhlIHN0YXRlcyBvbmx5IGdvIGRvd24gdGhlIGxpc3QuCiAgICAgZW51bSBTdGF0ZSB7Ci0g
ICAgICAgIFVuaW5pdGlhbGl6ZWQsCiAgICAgICAgIENyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1l
bnQsCiAgICAgICAgIERpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCwKICAgICAgICAgRGlz
cGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50UG9zdENvbW1pdCwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTMzOTIwKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDE0ICsyMTQs
MTQgQEAKICAgICAsIG1fc3ViZnJhbWVMb2FkZXIoZnJhbWUpCiAgICAgLCBtX2ljb24oZnJhbWUp
CiAgICAgLCBtX21peGVkQ29udGVudENoZWNrZXIoZnJhbWUpCi0gICAgLCBtX3N0YXRlKEZyYW1l
U3RhdGVDb21taXR0ZWRQYWdlKQorICAgICwgbV9zdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwp
CiAgICAgLCBtX2xvYWRUeXBlKEZyYW1lTG9hZFR5cGVTdGFuZGFyZCkKICAgICAsIG1fZGVsZWdh
dGVJc0hhbmRsaW5nUHJvdmlzaW9uYWxMb2FkRXJyb3IoZmFsc2UpCiAgICAgLCBtX3F1aWNrUmVk
aXJlY3RDb21pbmcoZmFsc2UpCiAgICAgLCBtX3NlbnRSZWRpcmVjdE5vdGlmaWNhdGlvbihmYWxz
ZSkKICAgICAsIG1faW5TdG9wQWxsTG9hZGVycyhmYWxzZSkKICAgICAsIG1faXNFeGVjdXRpbmdK
YXZhU2NyaXB0Rm9ybUFjdGlvbihmYWxzZSkKLSAgICAsIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2Uo
ZmFsc2UpCisgICAgLCBtX2RpZENhbGxJbXBsaWNpdENsb3NlKHRydWUpCiAgICAgLCBtX3dhc1Vu
bG9hZEV2ZW50RW1pdHRlZChmYWxzZSkKICAgICAsIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdE
aXNwYXRjaGVkKE5vRGlzbWlzc2FsKQogICAgICwgbV9pc0NvbXBsZXRlKGZhbHNlKQpAQCAtMjU0
LDE5ICsyNTQsMTEgQEAKIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQogewogICAgIC8vIFRoaXMg
c29tZXdoYXQgb2RkIHNldCBvZiBzdGVwcyBnaXZlcyB0aGUgZnJhbWUgYW4gaW5pdGlhbCBlbXB0
eSBkb2N1bWVudC4KLSAgICAvLyBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgdGhpcyBjb3VsZCBiZSBk
b25lIHdpdGggZXZlbiBmZXdlciBzdGVwcy4KLSAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8o
RnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpOwog
ICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50LT5jcmVhdGVEb2N1bWVudExvYWRl
cihSZXNvdXJjZVJlcXVlc3QoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpKSwg
U3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIobV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7Ci0gICAgc2V0U3RhdGUoRnJhbWVTdGF0
ZVByb3Zpc2lvbmFsKTsKLSAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnNldFJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UoS1VSTCgpLCAidGV4dC9odG1sIiwgMCwgU3RyaW5nKCksIFN0
cmluZygpKSk7Ci0gICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5maW5pc2hlZExvYWRp
bmcoKTsKLSAgICBBU1NFUlQoIW1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIG1fZG9jdW1lbnRM
b2FkZXItPndyaXRlcigpLT5iZWdpbihLVVJMKCksIGZhbHNlKTsKLSAgICBtX2RvY3VtZW50TG9h
ZGVyLT53cml0ZXIoKS0+ZW5kKCk7CisgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5z
dGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jYW5j
ZWxQYXJzaW5nKCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuYWR2YW5jZVRvKEZyYW1lTG9hZGVyU3Rh
dGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpOwotICAgIG1fZGlkQ2Fs
bEltcGxpY2l0Q2xvc2UgPSB0cnVlOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1fY2xp
ZW50LT5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0g
RnJhbWVQcm9ncmVzc1RyYWNrZXI6OmNyZWF0ZShtX2ZyYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzM5MjApCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsMTEgKzY3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
Ym9vbCBzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICBy
ZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkTG9hZFVSTFNjaGVt
ZUFzRW1wdHlEb2N1bWVudCh1cmwucHJvdG9jb2woKSk7Ci19Ci0KIE1haW5SZXNvdXJjZUxvYWRl
cjo6TWFpblJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFtZSkKICAgICA6IFJlc291cmNlTG9hZGVy
KGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50
LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JDcm9zc09y
aWdpbkNyZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaykpCiAgICAgLCBtX2RhdGFMb2FkVGlt
ZXIodGhpcywgJk1haW5SZXNvdXJjZUxvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93
KQpAQCAtMzM4LDEzICszMzMsMTAgQEAKICAgICBpZiAoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkp
CiAgICAgICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uocik7CiAKLSAgICBp
ZiAoZnJhbWVMb2FkZXIoKSAmJiAhZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+aXNTdG9wcGluZygpKSB7Ci0gICAgICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQo
KSkgewotICAgICAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCkp
Ci0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50
KCktPmRhdGEoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSwgbV9zdWJzdGl0
dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoZnJhbWVM
b2FkZXIoKSAmJiAhZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+aXNTdG9w
cGluZygpKSAKLSAgICAgICAgICAgICAgICBkaWRGaW5pc2hMb2FkaW5nKDApOwotICAgICAgICB9
IGVsc2UgaWYgKHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQodXJsKSB8fCBmcmFtZUxvYWRlcigp
LT5jbGllbnQoKS0+cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUodXJsLnByb3RvY29s
KCkpKQorICAgIGlmIChmcmFtZUxvYWRlcigpICYmICFmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkgJiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkp
IHsKKyAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCkpCisgICAg
ICAgICAgICBkaWRSZWNlaXZlRGF0YShtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+ZGF0YSgp
LCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNv
bnRlbnQoKS0+c2l6ZSgpLCB0cnVlKTsKKyAgICAgICAgaWYgKGZyYW1lTG9hZGVyKCkgJiYgIWZy
YW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBpbmcoKSkgCiAgICAg
ICAgICAgICBkaWRGaW5pc2hMb2FkaW5nKDApOwogICAgIH0KIH0KQEAgLTM4NCw3ICszNzYsNyBA
QAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2Fu
IGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZlcnJlZC4KICAgICAvLyBTZWUg
PHJkYXI6Ly9wcm9ibGVtLzYzMDQ2MDA+IGZvciBtb3JlIGRldGFpbHMuCiAjaWYgIVVTRShDRikK
LSAgICBBU1NFUlQoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChyLnVybCgpKSB8fCAhZGVmZXJz
TG9hZGluZygpKTsKKyAgICBBU1NFUlQoIWRlZmVyc0xvYWRpbmcoKSk7CiAjZW5kaWYKIAogICAg
IGlmIChtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KSB7CkBAIC00OTksNyArNDkxLDcgQEAKICAg
ICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBiZSBk
aXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCiAgICAgLy8gU2VlIDxyZGFy
Oi8vcHJvYmxlbS82MzA0NjAwPiBmb3IgbW9yZSBkZXRhaWxzLgogI2lmICFVU0UoQ0YpCi0gICAg
QVNTRVJUKHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQoZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9j
dW1lbnRMb2FkZXIoKS0+dXJsKCkpIHx8ICFkZWZlcnNMb2FkaW5nKCkgfHwgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppc0RlYnVnZ2VyUGF1c2VkKG1fZnJhbWUuZ2V0KCkpKTsKKyAgICBBU1NF
UlQoIWRlZmVyc0xvYWRpbmcoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzRGVidWdn
ZXJQYXVzZWQobV9mcmFtZS5nZXQoKSkpOwogI2VuZGlmCiAKICAgICAvLyBUaGUgYWRkaXRpb25h
bCBwcm9jZXNzaW5nIGNhbiBkbyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgcmVtb3Zpbmcg
dGhlIGxhc3QKQEAgLTU2MCwxOCArNTUyLDYgQEAKICAgICBpbmZvLmFkZE1lbWJlcihtX2RhdGFM
b2FkVGltZXIpOwogfQogCi12b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6aGFuZGxlRW1wdHlMb2Fk
KGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JVUkxTY2hlbWUpCi17Ci0gICAgU3RyaW5nIG1pbWVU
eXBlOwotICAgIGlmIChmb3JVUkxTY2hlbWUpCi0gICAgICAgIG1pbWVUeXBlID0gZnJhbWVMb2Fk
ZXIoKS0+Y2xpZW50KCktPmdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKHVybC5wcm90b2Nv
bCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1pbWVUeXBlID0gInRleHQvaHRtbCI7Ci0gICAgCi0g
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1pbWVUeXBlLCAwLCBTdHJpbmcoKSwg
U3RyaW5nKCkpOwotICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci19Ci0KIHZvaWQg
TWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coTWFpblJlc291
cmNlTG9hZGVyVGltZXIqKQogewogICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3Rl
Y3QodGhpcyk7CkBAIC02MDgsMTIgKzU4OCwxMCBAQAogICAgICAgICBoYW5kbGVTdWJzdGl0dXRl
RGF0YUxvYWROb3coMCk7CiB9CiAKLWJvb2wgTWFpblJlc291cmNlTG9hZGVyOjpsb2FkTm93KFJl
c291cmNlUmVxdWVzdCYgcikKK3ZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpsb2FkTm93KFJlc291
cmNlUmVxdWVzdCYgcikKIHsKLSAgICBib29sIHNob3VsZExvYWRFbXB0eUJlZm9yZVJlZGlyZWN0
ID0gc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChyLnVybCgpKTsKLQogICAgIEFTU0VSVCghbV9o
YW5kbGUpOwotICAgIEFTU0VSVChzaG91bGRMb2FkRW1wdHlCZWZvcmVSZWRpcmVjdCB8fCAhZGVm
ZXJzTG9hZGluZygpKTsKKyAgICBBU1NFUlQoIWRlZmVyc0xvYWRpbmcoKSk7CiAKICAgICAvLyBT
ZW5kIHRoaXMgc3ludGhldGljIGRlbGVnYXRlIGNhbGxiYWNrIHNpbmNlIGNsaWVudHMgZXhwZWN0
IGl0LCBhbmQKICAgICAvLyB3ZSBubyBsb25nZXIgc2VuZCB0aGUgY2FsbGJhY2sgZnJvbSB3aXRo
aW4gTlNVUkxDb25uZWN0aW9uIGZvcgpAQCAtNjI0LDE0ICs2MDIsOCBAQAogICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS80ODAxMDY2PgogICAgIC8vIHdpbGxTZW5kUmVxdWVzdCgpIGlzIGxpYWJsZSB0
byBtYWtlIHRoZSBjYWxsIHRvIGZyYW1lTG9hZGVyKCkgcmV0dXJuIE5VTEwsIHNvIHdlIG5lZWQg
dG8gY2hlY2sgdGhhdCBoZXJlCiAgICAgaWYgKCFmcmFtZUxvYWRlcigpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCi0gICAgY29uc3QgS1VSTCYgdXJsID0gci51cmwoKTsKLSAgICBib29s
IHNob3VsZExvYWRFbXB0eSA9IHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQodXJsKSAmJiAhbV9z
dWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCk7CisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzaG91
bGRMb2FkRW1wdHlCZWZvcmVSZWRpcmVjdCAmJiAhc2hvdWxkTG9hZEVtcHR5ICYmIGRlZmVyc0xv
YWRpbmcoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICNpZiBVU0UoUExBVEZPUk1fU1RSQVRF
R0lFUykKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyKCktPmFkZE1haW5SZXNvdXJjZUxvYWQodGhpcyk7CiAjZWxzZQpAQCAt
NjQwLDEyICs2MTIsMTAgQEAKIAogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkK
ICAgICAgICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbihyKTsKLSAgICBlbHNlIGlmIChz
aG91bGRMb2FkRW1wdHkgfHwgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPnJlcHJlc2VudGF0aW9u
RXhpc3RzRm9yVVJMU2NoZW1lKHVybC5wcm90b2NvbCgpKSkKLSAgICAgICAgaGFuZGxlRW1wdHlM
b2FkKHVybCwgIXNob3VsZExvYWRFbXB0eSk7CiAgICAgZWxzZQogICAgICAgICBtX2hhbmRsZSA9
IFJlc291cmNlSGFuZGxlOjpjcmVhdGUobV9mcmFtZS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250
ZXh0KCksIHIsIHRoaXMsIGZhbHNlLCB0cnVlKTsKIAotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm47CiB9CiAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpsb2FkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQpAQCAtNjY1
LDIxICs2MzUsMTAgQEAKIAogICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVI
b3N0KCktPm1heWJlTG9hZE1haW5SZXNvdXJjZShyZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsK
IAotICAgIGJvb2wgZGVmZXIgPSBkZWZlcnNMb2FkaW5nKCk7Ci0gICAgaWYgKGRlZmVyKSB7Ci0g
ICAgICAgIGJvb2wgc2hvdWxkTG9hZEVtcHR5ID0gc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChy
ZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgaWYgKHNob3VsZExvYWRFbXB0eSkKLSAgICAgICAgICAg
IGRlZmVyID0gZmFsc2U7Ci0gICAgfQotICAgIGlmICghZGVmZXIpIHsKLSAgICAgICAgaWYgKGxv
YWROb3cocmVxdWVzdCkpIHsKLSAgICAgICAgICAgIC8vIFN0YXJ0ZWQgYXMgYW4gZW1wdHkgZG9j
dW1lbnQsIGJ1dCB3YXMgcmVkaXJlY3RlZCB0byBzb21ldGhpbmcgbm9uLWVtcHR5LgotICAgICAg
ICAgICAgQVNTRVJUKGRlZmVyc0xvYWRpbmcoKSk7Ci0gICAgICAgICAgICBkZWZlciA9IHRydWU7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGRlZmVyKQorICAgIGlmIChkZWZlcnNMb2FkaW5n
KCkpCiAgICAgICAgIG1faW5pdGlhbFJlcXVlc3QgPSByZXF1ZXN0OworICAgIGVsc2UKKyAgICAg
ICAgbG9hZE5vdyhyZXF1ZXN0KTsKIH0KIAogdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OnNldERl
ZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzM5MjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwz
MiBAQAorMjAxMi0xMS0wNyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIE1vdmUgZW1wdHkgbG9hZGluZyB0byBEb2N1bWVudExvYWRlciwgc2ltcGxpZnkgRnJh
bWVMb2FkZXI6OmluaXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAxNTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aG91Z2ggc2V2ZXJhbCBvdXRwdXRzIGNoYW5nZWQgYmVj
YXVzZSB3ZSBubyBsb25nZXIgc2VuZCByZXNvdXJjZQorICAgICAgICAgICAgbG9hZCBjYWxsYmFj
a3MgZm9yIGVtcHR5IGxvYWRzLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVz
b3VyY2UpOiBIYW5kbGUgZW1wdHkgbWFpbiByZXNvdXJjZQorICAgICAgICAgICAgbG9hZHMgZGly
ZWN0bHkgaGVyZS4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OkZyYW1lTG9hZGVyKTogSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMKKyAg
ICAgICAgICAgIHdlcmUgcHJldmlvdXNseSBiZWluZyByZXNldCBpbiBpbml0KCkuIEdpdmVuIHRo
YXQgdGhlIEZyYW1lTG9hZGVyIGlzIGluCisgICAgICAgICAgICBhbiBpbmNvbnNpc3RlbnQgc3Rh
dGUgYmVmb3JlIGluaXQoKSBpcyBjYWxsZWQgYW55d2F5LCB0aGVyZSBkb2Vzbid0IHNlZW0KKyAg
ICAgICAgICAgIHRvIGJlIGEgZGlzYWR2YW50YWdlIHRvIGp1c3QgaW5pdGlhbGl6aW5nIHRoZW0g
dG8gdGhlaXIgcG9zdC1pbml0KCkgdmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmluaXQpOiBKdXN0IGNhbGwgc3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCksIGluc3RlYWQg
b2YKKyAgICAgICAgICAgIGRvaW5nIGEgYnVuY2ggb2YgZGlyZWN0IGNhbGxzIHRvIGZ1bmN0aW9u
cyBGcmFtZUxvYWRlciBzaG91bGRuJ3Qga25vdyBhYm91dC4KKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclN0
YXRlTWFjaGluZS5oOgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOiBU
aHJvdWdob3V0LCByZW1vdmUgdGhlIGNvbmNlcHQgb2YgYW4gZW1wdHkgbG9hZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZE5vdyk6IFRoaXMgb25seSByZXR1cm5l
ZCB0cnVlIHdoZW4gYW4gZW1wdHkKKyAgICAgICAgICAgIGxvYWQgZ290IGRlZmVycmVkLCB3aGlj
aCB3b24ndCBoYXBwZW4gbm93LiBSZXR1cm4gdm9pZCBhbmQgYWx3YXlzIHRyZWF0CisgICAgICAg
ICAgICBhcyByZXR1cm5pbmcgZmFsc2UuCisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxv
YWRlci5oOgorCiAyMDEyLTExLTA4ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc2hvdyBzdGF0aXN0aWNzIG92ZXIgc2VsZWN0
ZWQgZnJhbWUgcmFuZ2UgaW4gVGltZWxpbmUncyBGcmFtZSBtb2RlCg==
</data>
<flag name="commit-queue"
          id="188778"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174010</attachid>
            <date>2012-11-13 15:40:41 -0800</date>
            <delta_ts>2012-11-15 21:25:04 -0800</delta_ts>
            <desc>patch #2</desc>
            <filename>empty4.txt</filename>
            <type>text/plain</type>
            <size>29417</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzNDMyNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE4IEBACisyMDEyLTExLTA4ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgTW92ZSBlbXB0eSBsb2FkaW5nIHRvIERvY3VtZW50TG9hZGVyLCBzaW1wbGlm
eSBGcmFtZUxvYWRlcjo6aW5pdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDE1MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDaHJvbWl1bSBEUlQgaGFzIHNvbWUgY29kZSB0aGF0IGRvZXNuJ3QgcGxh
eSBuaWNlbHkgd2l0aCBlbXB0eSB1cmxzIGFuZCBpbmNvcnJlY3RseQorICAgICAgICBpbnRlcnBy
ZXRzIHRoZW0gYXMgYSBub24tZW1wdHkgbG9hZC4gVGhpcyBlbnN1cmVzCisgICAgICAgIGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9uZXctd2luZG93LXJlZGlyZWN0LWhpc3RvcnkuaHRtbCBjb250aW51
ZXMgdG8gcGFzcworICAgICAgICBpbiBjaHJvbWl1bS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojp1cGRh
dGVGb3JDb21taXR0ZWRMb2FkKToKKwogMjAxMi0xMS0xMiAgRGlyayBQcmFua2UgIDxkcHJhbmtl
QGNocm9taXVtLm9yZz4KIAogICAgICAgICB3ZWJraXRweTogaW50ZWdyYXRlIHB5bGludCBpbnRv
IGNoZWNrLXdlYmtpdC1zdHlsZSwgcGFydCBJCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCShyZXZpc2lvbiAxMzQzMjcpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2NDIsNyArMTY0Miw4IEBACiB7CiAgICAgLy8gQ29kZSBkdXBsaWNhdGVkIGZyb20gUmVuZGVy
Vmlldzo6RGlkQ29tbWl0TG9hZEZvckZyYW1lLgogICAgIFRlc3RTaGVsbEV4dHJhRGF0YSogZXh0
cmFEYXRhID0gc3RhdGljX2Nhc3Q8VGVzdFNoZWxsRXh0cmFEYXRhKj4oZnJhbWUtPmRhdGFTb3Vy
Y2UoKS0+ZXh0cmFEYXRhKCkpOwotICAgIGJvb2wgbm9uQmxhbmtQYWdlQWZ0ZXJSZXNldCA9IG1f
cGFnZUlkID09IC0xICYmIHN0cmNtcChmcmFtZS0+ZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJs
KCkuc3BlYygpLmRhdGEoKSwgImFib3V0OmJsYW5rIik7CisgICAgY29uc3QgV2ViVVJMJiB1cmwg
PSBmcmFtZS0+ZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJsKCk7CisgICAgYm9vbCBub25CbGFu
a1BhZ2VBZnRlclJlc2V0ID0gbV9wYWdlSWQgPT0gLTEgJiYgIXVybC5pc0VtcHR5KCkgJiYgc3Ry
Y21wKHVybC5zcGVjKCkuZGF0YSgpLCAiYWJvdXQ6YmxhbmsiKTsKIAogICAgIGlmIChpc05ld05h
dmlnYXRpb24gfHwgbm9uQmxhbmtQYWdlQWZ0ZXJSZXNldCkgewogICAgICAgICAvLyBOZXcgbmF2
aWdhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAko
cmV2aXNpb24gMTM0MzI3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIk1haW5SZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZl
ci5oIgorI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9y
eUluc3RydW1lbnRhdGlvbi5oIgpAQCAtOTcsNiArOTgsNyBAQAogICAgICwgbV9pc1N0b3BwaW5n
KGZhbHNlKQogICAgICwgbV9nb3RGaXJzdEJ5dGUoZmFsc2UpCiAgICAgLCBtX2lzQ2xpZW50UmVk
aXJlY3QoZmFsc2UpCisgICAgLCBtX2xvYWRpbmdFbXB0eURvY3VtZW50KGZhbHNlKQogICAgICwg
bV93YXNPbmxvYWRIYW5kbGVkKGZhbHNlKQogICAgICwgbV9zdG9wUmVjb3JkaW5nUmVzcG9uc2Vz
KGZhbHNlKQogICAgICwgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyKHRoaXMsICZE
b2N1bWVudExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVkKQpAQCAt
MTE0LDcgKzExNiw3IEBACiAKIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIoKQogewot
ICAgIEFTU0VSVCghbV9mcmFtZSB8fCBmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRl
cigpICE9IHRoaXMgfHwgIWZyYW1lTG9hZGVyKCktPmlzTG9hZGluZygpKTsKKyAgICBBU1NFUlQo
IW1fZnJhbWUgfHwgZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSAhPSB0aGlz
IHx8ICFpc0xvYWRpbmcoKSk7CiAgICAgaWYgKG1faWNvbkxvYWREZWNpc2lvbkNhbGxiYWNrKQog
ICAgICAgICBtX2ljb25Mb2FkRGVjaXNpb25DYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogICAgIGlm
IChtX2ljb25EYXRhQ2FsbGJhY2spCkBAIC0yODUsNyArMjg3LDcgQEAKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiB7CiAgICAgY29tbWl0SWZSZWFkeSgpOwotICAgIGlm
ICghZnJhbWVMb2FkZXIoKSB8fCBmcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS0+Y3JlYXRp
bmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQorICAgIGlmICghZnJhbWVMb2FkZXIoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtYXliZUNyZWF0ZUFyY2hpdmUoKSkgewpAQCAtMzAwLDcg
KzMwMiw4IEBACiAgICAgaWYgKCFtX21haW5Eb2N1bWVudEVycm9yLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAgICAgY2xlYXJNYWluUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBmcmFtZUxvYWRl
cigpLT5jaGVja0xvYWRDb21wbGV0ZSgpOworICAgIGlmICghZnJhbWVMb2FkZXIoKS0+c3RhdGVN
YWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkKKyAgICAgICAgZnJhbWVM
b2FkZXIoKS0+Y2hlY2tMb2FkQ29tcGxldGUoKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6
Y29tbWl0TG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQpAQCAtNDQ5LDYgKzQ1Miw3
IEBACiAgICAgICAgIG1fbWFpblJlc291cmNlRGF0YSA9IG1fbWFpblJlc291cmNlTG9hZGVyLT5y
ZXNvdXJjZURhdGEoKTsKICAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXIgPSAwOwogICAgIH0K
KyAgICBtX2xvYWRpbmdFbXB0eURvY3VtZW50ID0gZmFsc2U7CiAKICAgICBpZiAodGhpcyA9PSBm
cmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpKQogICAgICAgICBjaGVja0xvYWRD
b21wbGV0ZSgpOwpAQCAtNDYzLDcgKzQ2Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAKICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAg
ICAgIGlmICgobV9tYWluUmVzb3VyY2VMb2FkZXIgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPmxv
YWRFdmVudEZpbmlzaGVkKCkpICYmIGlzTG9hZGluZygpKQorICAgICAgICBpZiAoKGlzTG9hZGlu
Z01haW5SZXNvdXJjZSgpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hl
ZCgpKSAmJiBpc0xvYWRpbmcoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBp
ZiAobV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdENvdW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTc2OSw3ICs3NzMsNyBAQAogICAgICAgICB1cmwgPSByZXF1ZXN0VVJM
KCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IHJlc3BvbnNlVVJMKCk7
Ci0gICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgaWYgKHVybC5pc0VtcHR5KCkgJiYgIWZyYW1l
TG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLT5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkp
CiAgICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CiAgICAgcmV0dXJuIHVybDsKIH0KQEAgLTgzMCw3
ICs4MzQsNyBAQAogCiBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdNYWluUmVzb3VyY2Uo
KSBjb25zdAogewotICAgIHJldHVybiAhIW1fbWFpblJlc291cmNlTG9hZGVyOworICAgIHJldHVy
biAhIW1fbWFpblJlc291cmNlTG9hZGVyIHx8IG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQ7CiB9CiAK
IGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKSBjb25zdApA
QCAtODQzLDE3ICs4NDcsMzkgQEAKICAgICByZXR1cm4gaXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVu
dCgpICYmIGZyYW1lTG9hZGVyKCktPmlzUmVwbGFjaW5nKCk7CiB9CiAKK2Jvb2wgRG9jdW1lbnRM
b2FkZXI6Om1heWJlTG9hZEVtcHR5KCkKK3sKKyAgICBib29sIHNob3VkTG9hZEVtcHR5ID0gIW1f
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmIChtX3JlcXVlc3QudXJsKCkuaXNFbXB0eSgpIHx8
IFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRMb2FkVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KG1fcmVx
dWVzdC51cmwoKS5wcm90b2NvbCgpKSk7CisgICAgaWYgKCFzaG91ZExvYWRFbXB0eSAmJiAhZnJh
bWVMb2FkZXIoKS0+Y2xpZW50KCktPnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKG1f
cmVxdWVzdC51cmwoKS5wcm90b2NvbCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKKyAgICBtX2xvYWRpbmdFbXB0eURvY3VtZW50ID0gdHJ1ZTsKKyAgICBTdHJpbmcgbWltZVR5
cGUgPSBzaG91ZExvYWRFbXB0eSA/ICJ0ZXh0L2h0bWwiIDogZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCktPmdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKG1fcmVxdWVzdC51cmwoKS5wcm90b2Nv
bCgpKTsKKyAgICBzZXRSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVxdWVzdC51cmwoKSwg
bWltZVR5cGUsIDAsIFN0cmluZygpLCBTdHJpbmcoKSkpOworICAgIGZpbmlzaGVkTG9hZGluZygp
OworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRp
bmdNYWluUmVzb3VyY2UoKQogewogICAgIG1fbWFpbkRvY3VtZW50RXJyb3IgPSBSZXNvdXJjZUVy
cm9yKCk7CiAgICAgdGltaW5nKCktPm1hcmtOYXZpZ2F0aW9uU3RhcnQoKTsKICAgICBBU1NFUlQo
IW1fbWFpblJlc291cmNlTG9hZGVyKTsKKworICAgIGlmIChtYXliZUxvYWRFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKICAgICBtX21haW5SZXNvdXJjZUxvYWRlciA9IE1haW5SZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKG1fZnJhbWUpOwogCiAgICAgLy8gRklYTUU6IElzIHRoZXJlIGFueSB3YXkg
dGhlIGV4dHJhIGZpZWxkcyBjb3VsZCBoYXZlIG5vdCBiZWVuIGFkZGVkIGJ5IG5vdz8KICAgICAv
LyBJZiBub3QsIGl0IHdvdWxkIGJlIGdyZWF0IHRvIHJlbW92ZSB0aGlzIGxpbmUgb2YgY29kZS4K
ICAgICBmcmFtZUxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1RvTWFpblJlc291cmNlUmVxdWVzdCht
X3JlcXVlc3QpOwogICAgIG1fbWFpblJlc291cmNlTG9hZGVyLT5sb2FkKG1fcmVxdWVzdCwgbV9z
dWJzdGl0dXRlRGF0YSk7CisKKyAgICBpZiAobV9yZXF1ZXN0LmlzTnVsbCgpKSB7CisgICAgICAg
IG1fbWFpblJlc291cmNlTG9hZGVyID0gMDsKKyAgICAgICAgbWF5YmVMb2FkRW1wdHkoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaAkocmV2aXNpb24gMTM0MzI3KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDcgKzQ0LDYgQEAKICAgICAvLyBhbHRlcm5hdGUgYmV0d2VlbiBDb21taXR0ZWRGaXJz
dFJlYWxMb2FkIGFuZCBGaXJzdExheW91dERvbmUuCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgc3Rh
dGVzIG9ubHkgZ28gZG93biB0aGUgbGlzdC4KICAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgVW5p
bml0aWFsaXplZCwKICAgICAgICAgQ3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCwKICAgICAg
ICAgRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50LAogICAgICAgICBEaXNwbGF5aW5nSW5p
dGlhbEVtcHR5RG9jdW1lbnRQb3N0Q29tbWl0LApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzQzMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsMTQgKzIxNCwxNCBAQAogICAg
ICwgbV9zdWJmcmFtZUxvYWRlcihmcmFtZSkKICAgICAsIG1faWNvbihmcmFtZSkKICAgICAsIG1f
bWl4ZWRDb250ZW50Q2hlY2tlcihmcmFtZSkKLSAgICAsIG1fc3RhdGUoRnJhbWVTdGF0ZUNvbW1p
dHRlZFBhZ2UpCisgICAgLCBtX3N0YXRlKEZyYW1lU3RhdGVQcm92aXNpb25hbCkKICAgICAsIG1f
bG9hZFR5cGUoRnJhbWVMb2FkVHlwZVN0YW5kYXJkKQogICAgICwgbV9kZWxlZ2F0ZUlzSGFuZGxp
bmdQcm92aXNpb25hbExvYWRFcnJvcihmYWxzZSkKICAgICAsIG1fcXVpY2tSZWRpcmVjdENvbWlu
ZyhmYWxzZSkKICAgICAsIG1fc2VudFJlZGlyZWN0Tm90aWZpY2F0aW9uKGZhbHNlKQogICAgICwg
bV9pblN0b3BBbGxMb2FkZXJzKGZhbHNlKQogICAgICwgbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRG
b3JtQWN0aW9uKGZhbHNlKQotICAgICwgbV9kaWRDYWxsSW1wbGljaXRDbG9zZShmYWxzZSkKKyAg
ICAsIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UodHJ1ZSkKICAgICAsIG1fd2FzVW5sb2FkRXZlbnRF
bWl0dGVkKGZhbHNlKQogICAgICwgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQo
Tm9EaXNtaXNzYWwpCiAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2UpCkBAIC0yNTQsMTkgKzI1NCwx
MSBAQAogdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiB7CiAgICAgLy8gVGhpcyBzb21ld2hhdCBv
ZGQgc2V0IG9mIHN0ZXBzIGdpdmVzIHRoZSBmcmFtZSBhbiBpbml0aWFsIGVtcHR5IGRvY3VtZW50
LgotICAgIC8vIEl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGlzIGNvdWxkIGJlIGRvbmUgd2l0aCBl
dmVuIGZld2VyIHN0ZXBzLgotICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhGcmFtZUxvYWRl
clN0YXRlTWFjaGluZTo6Q3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7CiAgICAgc2V0UG9s
aWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQtPmNyZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNl
UmVxdWVzdChLVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRl
RGF0YSgpKS5nZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihtX3BvbGlj
eURvY3VtZW50TG9hZGVyLmdldCgpKTsKLSAgICBzZXRTdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9u
YWwpOwotICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c2V0UmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZShLVVJMKCksICJ0ZXh0L2h0bWwiLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpKTsK
LSAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPmZpbmlzaGVkTG9hZGluZygpOwotICAg
IEFTU0VSVCghbV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgbV9kb2N1bWVudExvYWRlci0+d3Jp
dGVyKCktPmJlZ2luKEtVUkwoKSwgZmFsc2UpOwotICAgIG1fZG9jdW1lbnRMb2FkZXItPndyaXRl
cigpLT5lbmQoKTsKKyAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGlu
Z01haW5SZXNvdXJjZSgpOwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhbmNlbFBhcnNpbmco
KTsKICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6
OkRpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7Ci0gICAgbV9kaWRDYWxsSW1wbGljaXRD
bG9zZSA9IHRydWU7CiAKICAgICBtX25ldHdvcmtpbmdDb250ZXh0ID0gbV9jbGllbnQtPmNyZWF0
ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAgICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBGcmFtZVByb2dy
ZXNzVHJhY2tlcjo6Y3JlYXRlKG1fZnJhbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzNDMyNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NywxMSArNjcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHNob3Vs
ZExvYWRBc0VtcHR5RG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsKQotewotICAgIHJldHVybiB1cmwu
aXNFbXB0eSgpIHx8IFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRMb2FkVVJMU2NoZW1lQXNFbXB0eURv
Y3VtZW50KHVybC5wcm90b2NvbCgpKTsKLX0KLQogTWFpblJlc291cmNlTG9hZGVyOjpNYWluUmVz
b3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1lKQogICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJl
c291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRh
dGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVu
dGlhbHMsIFNraXBTZWN1cml0eUNoZWNrKSkKICAgICAsIG1fZGF0YUxvYWRUaW1lcih0aGlzLCAm
TWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpCkBAIC0zMzgs
MTMgKzMzMywxMCBAQAogICAgIGlmICghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShyKTsKIAotICAgIGlmIChmcmFtZUxv
YWRlcigpICYmICFmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0b3Bw
aW5nKCkpIHsKLSAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7Ci0gICAg
ICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSkKLSAgICAgICAg
ICAgICAgICBkaWRSZWNlaXZlRGF0YShtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+ZGF0YSgp
LCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNv
bnRlbnQoKS0+c2l6ZSgpLCB0cnVlKTsKLSAgICAgICAgICAgIGlmIChmcmFtZUxvYWRlcigpICYm
ICFmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpIAot
ICAgICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRpbmcoMCk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
c2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudCh1cmwpIHx8IGZyYW1lTG9hZGVyKCktPmNsaWVudCgp
LT5yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSh1cmwucHJvdG9jb2woKSkpCisgICAg
aWYgKGZyYW1lTG9hZGVyKCkgJiYgIWZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPmlzU3RvcHBpbmcoKSAmJiBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgeworICAgICAg
ICBpZiAobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSkKKyAgICAgICAgICAgIGRp
ZFJlY2VpdmVEYXRhKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5kYXRhKCksIG1fc3Vic3Rp
dHV0ZURhdGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5z
aXplKCksIHRydWUpOworICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKSAmJiAhZnJhbWVMb2FkZXIo
KS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+aXNTdG9wcGluZygpKSAKICAgICAgICAgICAgIGRp
ZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpAQCAtMzg1LDcgKzM3Nyw3IEBACiAgICAgLy8g
VGhlcmUgaXMgYSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxiYWNrcyBjYW4gYmUgZGlzcGF0
Y2hlZCBldmVuIHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgogICAgIC8vIFNlZSA8cmRhcjovL3By
b2JsZW0vNjMwNDYwMD4gZm9yIG1vcmUgZGV0YWlscy4KICNpZiAhVVNFKENGKQotICAgIEFTU0VS
VChzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KHIudXJsKCkpIHx8ICFkZWZlcnNMb2FkaW5nKCkp
OworICAgIEFTU0VSVCghZGVmZXJzTG9hZGluZygpKTsKICNlbmRpZgogCiAgICAgaWYgKG1fbG9h
ZGluZ011bHRpcGFydENvbnRlbnQpIHsKQEAgLTUwMCw3ICs0OTIsNyBAQAogICAgIC8vIFRoZXJl
IGlzIGEgYnVnIGluIENGTmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQg
ZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZlcnJlZC4KICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVt
LzYzMDQ2MDA+IGZvciBtb3JlIGRldGFpbHMuCiAjaWYgIVVTRShDRikKLSAgICBBU1NFUlQoc2hv
dWxkTG9hZEFzRW1wdHlEb2N1bWVudChmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT51cmwoKSkgfHwgIWRlZmVyc0xvYWRpbmcoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmlzRGVidWdnZXJQYXVzZWQobV9mcmFtZS5nZXQoKSkpOworICAgIEFTU0VSVCghZGVmZXJz
TG9hZGluZygpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNEZWJ1Z2dlclBhdXNlZCht
X2ZyYW1lLmdldCgpKSk7CiAjZW5kaWYKIAogICAgIC8vIFRoZSBhZGRpdGlvbmFsIHByb2Nlc3Np
bmcgY2FuIGRvIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSByZW1vdmluZyB0aGUgbGFzdApA
QCAtNTYxLDE4ICs1NTMsNiBAQAogICAgIGluZm8uYWRkTWVtYmVyKG1fZGF0YUxvYWRUaW1lcik7
CiB9CiAKLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVFbXB0eUxvYWQoY29uc3QgS1VS
TCYgdXJsLCBib29sIGZvclVSTFNjaGVtZSkKLXsKLSAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAg
aWYgKGZvclVSTFNjaGVtZSkKLSAgICAgICAgbWltZVR5cGUgPSBmcmFtZUxvYWRlcigpLT5jbGll
bnQoKS0+Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUodXJsLnByb3RvY29sKCkpOwotICAg
IGVsc2UKLSAgICAgICAgbWltZVR5cGUgPSAidGV4dC9odG1sIjsKLSAgICAKLSAgICBSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbWltZVR5cGUsIDAsIFN0cmluZygpLCBTdHJpbmcoKSk7
Ci0gICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLX0KLQogdm9pZCBNYWluUmVzb3Vy
Y2VMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdyhNYWluUmVzb3VyY2VMb2FkZXJU
aW1lciopCiB7CiAgICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsK
QEAgLTYwOSwzMCArNTg5LDExIEBACiAgICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5v
dygwKTsKIH0KIAotYm9vbCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWROb3coUmVzb3VyY2VSZXF1
ZXN0JiByKQordm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWROb3coUmVzb3VyY2VSZXF1ZXN0
JiByKQogewotICAgIGJvb2wgc2hvdWxkTG9hZEVtcHR5QmVmb3JlUmVkaXJlY3QgPSBzaG91bGRM
b2FkQXNFbXB0eURvY3VtZW50KHIudXJsKCkpOwotCiAgICAgQVNTRVJUKCFtX2hhbmRsZSk7Ci0g
ICAgQVNTRVJUKHNob3VsZExvYWRFbXB0eUJlZm9yZVJlZGlyZWN0IHx8ICFkZWZlcnNMb2FkaW5n
KCkpOworICAgIEFTU0VSVCghZGVmZXJzTG9hZGluZygpKTsKIAotICAgIC8vIFNlbmQgdGhpcyBz
eW50aGV0aWMgZGVsZWdhdGUgY2FsbGJhY2sgc2luY2UgY2xpZW50cyBleHBlY3QgaXQsIGFuZAot
ICAgIC8vIHdlIG5vIGxvbmdlciBzZW5kIHRoZSBjYWxsYmFjayBmcm9tIHdpdGhpbiBOU1VSTENv
bm5lY3Rpb24gZm9yCi0gICAgLy8gaW5pdGlhbCByZXF1ZXN0cy4KLSAgICB3aWxsU2VuZFJlcXVl
c3QociwgUmVzb3VyY2VSZXNwb25zZSgpKTsKLSAgICBBU1NFUlQoIWRlbGV0aW9uSGFzQmVndW4o
KSk7Ci0KLSAgICAvLyA8cmRhcjovL3Byb2JsZW0vNDgwMTA2Nj4KLSAgICAvLyB3aWxsU2VuZFJl
cXVlc3QoKSBpcyBsaWFibGUgdG8gbWFrZSB0aGUgY2FsbCB0byBmcmFtZUxvYWRlcigpIHJldHVy
biBOVUxMLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgaGVyZQotICAgIGlmICghZnJhbWVMb2Fk
ZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGNvbnN0IEtVUkwmIHVybCA9
IHIudXJsKCk7Ci0gICAgYm9vbCBzaG91bGRMb2FkRW1wdHkgPSBzaG91bGRMb2FkQXNFbXB0eURv
Y3VtZW50KHVybCkgJiYgIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpOwotCi0gICAgaWYgKHNo
b3VsZExvYWRFbXB0eUJlZm9yZVJlZGlyZWN0ICYmICFzaG91bGRMb2FkRW1wdHkgJiYgZGVmZXJz
TG9hZGluZygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogI2lmIFVTRShQTEFURk9STV9TVFJB
VEVHSUVTKQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5yZXNv
dXJjZUxvYWRTY2hlZHVsZXIoKS0+YWRkTWFpblJlc291cmNlTG9hZCh0aGlzKTsKICNlbHNlCkBA
IC02NDEsMTIgKzYwMiwxMCBAQAogCiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
KQogICAgICAgICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKHIpOwotICAgIGVsc2UgaWYg
KHNob3VsZExvYWRFbXB0eSB8fCBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+cmVwcmVzZW50YXRp
b25FeGlzdHNGb3JVUkxTY2hlbWUodXJsLnByb3RvY29sKCkpKQotICAgICAgICBoYW5kbGVFbXB0
eUxvYWQodXJsLCAhc2hvdWxkTG9hZEVtcHR5KTsKICAgICBlbHNlCiAgICAgICAgIG1faGFuZGxl
ID0gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShtX2ZyYW1lLT5sb2FkZXIoKS0+bmV0d29ya2luZ0Nv
bnRleHQoKSwgciwgdGhpcywgZmFsc2UsIHRydWUpOwogCi0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybjsKIH0KIAogdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCkBAIC02
NjYsMjEgKzYyNSwyMyBAQAogCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNo
ZUhvc3QoKS0+bWF5YmVMb2FkTWFpblJlc291cmNlKHJlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEp
OwogCi0gICAgYm9vbCBkZWZlciA9IGRlZmVyc0xvYWRpbmcoKTsKLSAgICBpZiAoZGVmZXIpIHsK
LSAgICAgICAgYm9vbCBzaG91bGRMb2FkRW1wdHkgPSBzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50
KHJlcXVlc3QudXJsKCkpOwotICAgICAgICBpZiAoc2hvdWxkTG9hZEVtcHR5KQotICAgICAgICAg
ICAgZGVmZXIgPSBmYWxzZTsKKyAgICAvLyBTZW5kIHRoaXMgc3ludGhldGljIGRlbGVnYXRlIGNh
bGxiYWNrIHNpbmNlIGNsaWVudHMgZXhwZWN0IGl0LCBhbmQKKyAgICAvLyB3ZSBubyBsb25nZXIg
c2VuZCB0aGUgY2FsbGJhY2sgZnJvbSB3aXRoaW4gTlNVUkxDb25uZWN0aW9uIGZvcgorICAgIC8v
IGluaXRpYWwgcmVxdWVzdHMuCisgICAgd2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UoKSk7CisgICAgQVNTRVJUKCFkZWxldGlvbkhhc0JlZ3VuKCkpOworCisgICAgLy8g
PHJkYXI6Ly9wcm9ibGVtLzQ4MDEwNjY+CisgICAgLy8gd2lsbFNlbmRSZXF1ZXN0KCkgaXMgbGlh
YmxlIHRvIG1ha2UgdGhlIGNhbGwgdG8gZnJhbWVMb2FkZXIoKSByZXR1cm4gbnVsbCwgc28gd2Ug
bmVlZCB0byBjaGVjayB0aGF0IGhlcmUKKyAgICBpZiAoIWZyYW1lTG9hZGVyKCkgfHwgcmVxdWVz
dC5pc051bGwoKSkgeworICAgICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CisgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgaWYgKCFkZWZlcikgewotICAgICAgICBpZiAobG9hZE5vdyhyZXF1ZXN0
KSkgewotICAgICAgICAgICAgLy8gU3RhcnRlZCBhcyBhbiBlbXB0eSBkb2N1bWVudCwgYnV0IHdh
cyByZWRpcmVjdGVkIHRvIHNvbWV0aGluZyBub24tZW1wdHkuCi0gICAgICAgICAgICBBU1NFUlQo
ZGVmZXJzTG9hZGluZygpKTsKLSAgICAgICAgICAgIGRlZmVyID0gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBpZiAoZGVmZXIpCisKKyAgICBpZiAoZGVmZXJzTG9hZGluZygpKQogICAgICAg
ICBtX2luaXRpYWxSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBlbHNlCisgICAgICAgIGxvYWROb3co
cmVxdWVzdCk7CiB9CiAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5n
KGJvb2wgZGVmZXJzKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VM
b2FkZXIuaAkocmV2aXNpb24gMTM0MzI3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5S
ZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw5ICs4MSw4IEBACiAgICAgdmly
dHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwog
Ci0gICAgYm9vbCBsb2FkTm93KFJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgbG9hZE5vdyhS
ZXNvdXJjZVJlcXVlc3QmKTsKIAotICAgIHZvaWQgaGFuZGxlRW1wdHlMb2FkKGNvbnN0IEtVUkwm
LCBib29sIGZvclVSTFNjaGVtZSk7CiAgICAgdm9pZCBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRT
b29uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgaGFuZGxlU3Vic3RpdHV0ZURh
dGFMb2FkTm93KE1haW5SZXNvdXJjZUxvYWRlclRpbWVyKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAxMzQzMjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2
NSw4IEBACiAgICAgICAgIHZvaWQgY2xlYXJBcmNoaXZlUmVzb3VyY2VzKCk7CiAjZW5kaWYKIAor
ICAgICAgICBib29sIG1heWJlTG9hZEVtcHR5KCk7CisKICAgICAgICAgYm9vbCBpc011bHRpcGFy
dFJlcGxhY2luZ0xvYWQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGRlbGl2ZXJTdWJzdGl0dXRl
UmVzb3VyY2VzQWZ0ZXJEZWxheSgpOwpAQCAtMzA3LDYgKzMwOSw3IEBACiAgICAgICAgIGJvb2wg
bV9pc1N0b3BwaW5nOwogICAgICAgICBib29sIG1fZ290Rmlyc3RCeXRlOwogICAgICAgICBib29s
IG1faXNDbGllbnRSZWRpcmVjdDsKKyAgICAgICAgYm9vbCBtX2xvYWRpbmdFbXB0eURvY3VtZW50
OwogCiAgICAgICAgIC8vIEZJWE1FOiBEb2N1bWVudDo6bV9wcm9jZXNzaW5nTG9hZEV2ZW50IGFu
ZCBEb2N1bWVudExvYWRlcjo6bV93YXNPbmxvYWRIYW5kbGVkIGFyZSByb3VnaGx5IHRoZSBzYW1l
CiAgICAgICAgIC8vIGFuZCBzaG91bGQgYmUgbWVyZ2VkLgpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwCShyZXZpc2lvbiAxMzQz
MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKICAgICAKIEZyYW1lTG9hZGVyU3Rh
dGVNYWNoaW5lOjpGcmFtZUxvYWRlclN0YXRlTWFjaGluZSgpIAotICAgIDogbV9zdGF0ZShVbmlu
aXRpYWxpemVkKQorICAgIDogbV9zdGF0ZShDcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KQog
eyAKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDMyNykKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEx
LTA3ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSBl
bXB0eSBsb2FkaW5nIHRvIERvY3VtZW50TG9hZGVyLCBzaW1wbGlmeSBGcmFtZUxvYWRlcjo6aW5p
dCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1
MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMsIHRob3VnaCBzZXZlcmFsIG91dHB1dHMgY2hhbmdlZCBiZWNhdXNlIHdlIG5vIGxv
bmdlciBzZW5kIHJlc291cmNlCisgICAgICAgICAgICBsb2FkIGNhbGxiYWNrcyBmb3IgZW1wdHkg
bG9hZHMuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6IEhhbmRs
ZSBlbXB0eSBtYWluIHJlc291cmNlCisgICAgICAgICAgICBsb2FkcyBkaXJlY3RseSBoZXJlLgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIp
OiBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHdob3NlIHZhbHVlcworICAgICAgICAgICAgd2Vy
ZSBwcmV2aW91c2x5IGJlaW5nIHJlc2V0IGluIGluaXQoKS4gR2l2ZW4gdGhhdCB0aGUgRnJhbWVM
b2FkZXIgaXMgaW4KKyAgICAgICAgICAgIGFuIGluY29uc2lzdGVudCBzdGF0ZSBiZWZvcmUgaW5p
dCgpIGlzIGNhbGxlZCBhbnl3YXksIHRoZXJlIGRvZXNuJ3Qgc2VlbQorICAgICAgICAgICAgdG8g
YmUgYSBkaXNhZHZhbnRhZ2UgdG8ganVzdCBpbml0aWFsaXppbmcgdGhlbSB0byB0aGVpciBwb3N0
LWluaXQoKSB2YWx1ZXMuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdCk6IEp1
c3QgY2FsbCBzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKSwgaW5zdGVhZCBvZgorICAgICAgICAg
ICAgZG9pbmcgYSBidW5jaCBvZiBkaXJlY3QgY2FsbHMgdG8gZnVuY3Rpb25zIEZyYW1lTG9hZGVy
IHNob3VsZG4ndCBrbm93IGFib3V0LgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclN0YXRl
TWFjaGluZS5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmg6
CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6IFRocm91Z2hvdXQsIHJl
bW92ZSB0aGUgY29uY2VwdCBvZiBhbiBlbXB0eSBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6TWFp
blJlc291cmNlTG9hZGVyOjpsb2FkTm93KTogVGhpcyBvbmx5IHJldHVybmVkIHRydWUgd2hlbiBh
biBlbXB0eQorICAgICAgICAgICAgbG9hZCBnb3QgZGVmZXJyZWQsIHdoaWNoIHdvbid0IGhhcHBl
biBub3cuIFJldHVybiB2b2lkIGFuZCBhbHdheXMgdHJlYXQKKyAgICAgICAgICAgIGFzIHJldHVy
bmluZyBmYWxzZS4KKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmg6CisKIDIw
MTItMTEtMTIgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBGaXggZG9ja2luZyBiZWhhdmlvdXIgb24gV2luZG93cy4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3Qt
bWV0aG9kcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzNDMyNykKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNSwxMyArNSwxMCBAQAogbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZQogPHVua25vd24+IC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjAiIC0gZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJM
UmVxdWVzdCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBy
ZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZlUmVzcG9uc2Ug
PE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUgMD4KIGZyYW1lICIw
IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjAiIC0gZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBm
cmFtZSAiMCIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWFib3V0OmJsYW5rIC0gZGlkRmluaXNo
TG9hZGluZwogZnJhbWUgIjAiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3Jt
Lmh0bWwgCiBmcmFtZSAiMCIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3Jt
Lmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sLCBtYWlu
IGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRo
b2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKQEAgLTMy
LDEzICsyOSwxMCBAQAogZnJhbWUgIjAiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAi
MCIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSB3aWxsU2VuZFJlcXVlc3QgPE5T
VVJMUmVxdWVzdCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VU
PiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZlUmVzcG9u
c2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUgMD4KIGZyYW1l
ICIxIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1l
CiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWFib3V0OmJsYW5rIC0gZGlkRmlu
aXNoTG9hZGluZwogZnJhbWUgIjEiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1m
b3JtLmh0bWwgCiBmcmFtZSAiMCIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJh
bWUgIjAiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCkBAIC02MiwxMyArNTYsMTAgQEAKIGZyYW1l
ICIxIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUKLWFib3V0OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0
OmJsYW5rLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAo
bnVsbCkKLWFib3V0OmJsYW5rIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGFi
b3V0OmJsYW5rLCBodHRwIHN0YXR1cyBjb2RlIDA+CiBmcmFtZSAiMiIgLSBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFt
ZSAiMiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjIiIC0gZGlkRmlu
aXNoTG9hZEZvckZyYW1lCi1hYm91dDpibGFuayAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIy
IiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIAogZnJhbWUgIjEi
IC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEZpbmlzaExv
YWRGb3JGcmFtZQpAQCAtOTIsMTMgKzgzLDEwIEBACiBmcmFtZSAiMiIgLSBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFt
ZSAiMyIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCi1hYm91dDpibGFuayAtIHdp
bGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVu
dCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1s
LCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91dDpibGFuayAt
IGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFuaywgaHR0cCBzdGF0
dXMgY29kZSAwPgogZnJhbWUgIjMiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMyIg
LSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkSGFuZGxlT25s
b2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIzIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQotYWJv
dXQ6YmxhbmsgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMyIgLSB3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9y
ZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAKIGZyYW1lICIyIiAtIGRpZEhhbmRsZU9ubG9hZEV2
ZW50c0ZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlv
bnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25z
LWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzNDMyNykKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9w
dGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMyw4ICszLDYgQEAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRp
b25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1pbi1i
b2R5Lmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9u
cy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLWluLWJvZHkuaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAy
MDA+CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJj
ZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtaW4tYm9keS5odG1sIC0g
ZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBOU1VSTEVycm9yRG9tYWlu
LCBjb2RlIC05OTksIGZhaWxpbmcgVVJMICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
WEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3Vi
ZnJhbWUtaW4tYm9keS5odG1sIj4KIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBkaXNwbGF5
ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMv
eC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtaW4tYm9keS5odG1sJyBpbiBh
IGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICdkZW55Jy4KLWFib3V0
OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBt
YWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0
aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5Lmh0bWwsIGh0dHAgbWV0
aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWFib3V0OmJsYW5rIC0gZGlkUmVjZWl2
ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGFib3V0OmJsYW5rLCBodHRwIHN0YXR1cyBjb2RlIDA+
CiBUaGVyZSBzaG91bGQgYmUgbm8gY29udGVudCBpbiB0aGUgaWZyYW1lIGJlbG93CiAKIApJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUt
b3B0aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9w
dGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRl
bnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzQzMjcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWct
cGFyZW50LXNhbWUtb3JpZ2luLWRlbnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0z
LDggKzMsNiBAQAogaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMv
cmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLXBhcmVudC1z
YW1lLW9yaWdpbi1kZW55Lmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2Ug
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gt
ZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLXBhcmVudC1zYW1lLW9yaWdpbi1k
ZW55Lmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEt
dGFnLXN1YmZyYW1lLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwgLSBkaWRGYWlsTG9hZGlu
Z1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIE5TVVJMRXJyb3JEb21haW4sIGNvZGUgLTk5OSwg
ZmFpbGluZyBVUkwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25z
L3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1wYXJlbnQt
c2FtZS1vcmlnaW4tZGVueS5odG1sIj4KIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBkaXNw
bGF5ICdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJj
ZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtcGFyZW50LXNhbWUtb3Jp
Z2luLWRlbnkuaHRtbCcgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25z
JyB0byAnc2FtZW9yaWdpbicuCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxS
ZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10
YWctcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVj
dFJlc3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJM
UmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUgMD4KIFRoZXJlIHNob3VsZCBi
ZSBubyBjb250ZW50IGluIHRoZSBpZnJhbWUgYmVsb3cKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0
YS10YWctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDEzNDMyNykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw2IEBACiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnkt
bWV0YS10YWctc3ViZnJhbWUuaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25z
ZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMv
eC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUuaHRtbCwgaHR0cCBzdGF0dXMg
Y29kZSAyMDA+CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9y
ZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUuaHRtbCAtIGRp
ZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gTlNVUkxFcnJvckRvbWFpbiwg
Y29kZSAtOTk5LCBmYWlsaW5nIFVSTCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hG
cmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZy
YW1lLmh0bWwiPgogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGRpc3BsYXkgJ2h0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9w
dGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS5odG1sJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQg
c2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICdkZW55Jy4KLWFib3V0OmJsYW5rIC0gd2lsbFNlbmRS
ZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBtYWluIGRvY3VtZW50IFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlv
bnMtZGVueS1tZXRhLXRhZy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2Ug
KG51bGwpCi1hYm91dDpibGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBh
Ym91dDpibGFuaywgaHR0cCBzdGF0dXMgY29kZSAwPgogVGhlcmUgc2hvdWxkIGJlIG5vIGNvbnRl
bnQgaW4gdGhlIGlmcmFtZSBiZWxvdwogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1pZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUuaHRtbAkocmV2aXNpb24gMTM0MzI3KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1sb2Fk
LWFuZC1kZWxldGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogCiAgICAg
ZnVuY3Rpb24gc3RlcDIoKQogICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVj
dG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3Jr
IikucmVxdWVzdHMubGVuZ3RoIC0gM107CisgICAgICAgIHZhciByZXF1ZXN0MSA9IFdlYkluc3Bl
Y3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbCgibmV0d29y
ayIpLnJlcXVlc3RzLmxlbmd0aCAtIDJdOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dChyZXF1ZXN0MS51cmwpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3Vy
Y2UudHlwZTogIiArIHJlcXVlc3QxLnR5cGUpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgicmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVx
dWVzdDEuY29udGVudCk7CkBAIC01Miw3ICs1Miw3IEBACiAKICAgICBmdW5jdGlvbiBzdGVwMygp
CiAgICAgewotICAgICAgICB2YXIgcmVxdWVzdDEgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdv
cmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5n
dGggLSAzXTsKKyAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3
b3JrIikucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHMubGVu
Z3RoIC0gMl07CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS5jb250
ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlcXVlc3QxLmNvbnRlbnQpOwogCiAg
ICAgICAgIHZhciByZXF1ZXN0MiA9IFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVl
c3RzW1dlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDFdOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTM0MzI3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEtMDcgIE5hdGUgQ2hhcGluICA8amFw
aGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIGVtcHR5IGxvYWRpbmcgdG8gRG9jdW1l
bnRMb2FkZXIsIHNpbXBsaWZ5IEZyYW1lTG9hZGVyOjppbml0KCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUxMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvbid0IGV4cGVjdCByZXNvdXJjZSBsb2Fk
IGNhbGxiYWNrcyBmb3IgZW1wdHkgbG9hZHMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25z
LWRlbnktbWV0YS10YWctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMv
eC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRlbnktZXhw
ZWN0ZWQudHh0OgorCiAyMDEyLTExLTEyICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYXBoYWVs
Lmt1Ym8uZGEuY29zdGFAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFdlYktpdDEgZ2FyZGVu
aW5nLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174220</attachid>
            <date>2012-11-14 12:12:27 -0800</date>
            <delta_ts>2012-11-16 12:28:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-101512-20121114121025.patch</filename>
            <type>text/plain</type>
            <size>30735</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDMyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTExLTA3ICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSBlbXB0eSBsb2FkaW5n
IHRvIERvY3VtZW50TG9hZGVyLCBzaW1wbGlmeSBGcmFtZUxvYWRlcjo6aW5pdCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1MTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhvdWdo
IHNldmVyYWwgb3V0cHV0cyBjaGFuZ2VkIGJlY2F1c2Ugd2Ugbm8gbG9uZ2VyIHNlbmQgcmVzb3Vy
Y2UKKyAgICAgICAgICAgIGxvYWQgY2FsbGJhY2tzIGZvciBlbXB0eSBsb2Fkcy4KKworICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKTogSGFuZGxlIGVtcHR5IG1haW4gcmVz
b3VyY2UKKyAgICAgICAgICAgIGxvYWRzIGRpcmVjdGx5IGhlcmUuCisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcik6IEluaXRpYWxpemUgc29t
ZSB2YXJpYWJsZXMgd2hvc2UgdmFsdWVzCisgICAgICAgICAgICB3ZXJlIHByZXZpb3VzbHkgYmVp
bmcgcmVzZXQgaW4gaW5pdCgpLiBHaXZlbiB0aGF0IHRoZSBGcmFtZUxvYWRlciBpcyBpbgorICAg
ICAgICAgICAgYW4gaW5jb25zaXN0ZW50IHN0YXRlIGJlZm9yZSBpbml0KCkgaXMgY2FsbGVkIGFu
eXdheSwgdGhlcmUgZG9lc24ndCBzZWVtCisgICAgICAgICAgICB0byBiZSBhIGRpc2FkdmFudGFn
ZSB0byBqdXN0IGluaXRpYWxpemluZyB0aGVtIHRvIHRoZWlyIHBvc3QtaW5pdCgpIHZhbHVlcy4K
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KTogSnVzdCBjYWxsIHN0YXJ0TG9h
ZGluZ01haW5SZXNvdXJjZSgpLCBpbnN0ZWFkIG9mCisgICAgICAgICAgICBkb2luZyBhIGJ1bmNo
IG9mIGRpcmVjdCBjYWxscyB0byBmdW5jdGlvbnMgRnJhbWVMb2FkZXIgc2hvdWxkbid0IGtub3cg
YWJvdXQuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDogVGhyb3VnaG91dCwgcmVtb3ZlIHRoZSBjb25jZXB0
IG9mIGFuIGVtcHR5IGxvYWQuCisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6
OmxvYWROb3cpOiBUaGlzIG9ubHkgcmV0dXJuZWQgdHJ1ZSB3aGVuIGFuIGVtcHR5CisgICAgICAg
ICAgICBsb2FkIGdvdCBkZWZlcnJlZCwgd2hpY2ggd29uJ3QgaGFwcGVuIG5vdy4gUmV0dXJuIHZv
aWQgYW5kIGFsd2F5cyB0cmVhdAorICAgICAgICAgICAgYXMgcmV0dXJuaW5nIGZhbHNlLgorICAg
ICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaDoKKwogMjAxMi0xMS0xMiAgUm9nZXIg
Rm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZp
eCBkb2NraW5nIGJlaGF2aW91ciBvbiBXaW5kb3dzLgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzQzMjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3
IEBACiAjaW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCisjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIK
ICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCkBAIC05Nyw2ICs5OCw3
IEBAIERvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXMKICAgICAsIG1faXNT
dG9wcGluZyhmYWxzZSkKICAgICAsIG1fZ290Rmlyc3RCeXRlKGZhbHNlKQogICAgICwgbV9pc0Ns
aWVudFJlZGlyZWN0KGZhbHNlKQorICAgICwgbV9sb2FkaW5nRW1wdHlEb2N1bWVudChmYWxzZSkK
ICAgICAsIG1fd2FzT25sb2FkSGFuZGxlZChmYWxzZSkKICAgICAsIG1fc3RvcFJlY29yZGluZ1Jl
c3BvbnNlcyhmYWxzZSkKICAgICAsIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lcih0
aGlzLCAmRG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJl
ZCkKQEAgLTExNCw3ICsxMTYsNyBAQCBGcmFtZUxvYWRlciogRG9jdW1lbnRMb2FkZXI6OmZyYW1l
TG9hZGVyCiAKIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIoKQogewotICAgIEFTU0VS
VCghbV9mcmFtZSB8fCBmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpICE9IHRo
aXMgfHwgIWZyYW1lTG9hZGVyKCktPmlzTG9hZGluZygpKTsKKyAgICBBU1NFUlQoIW1fZnJhbWUg
fHwgZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSAhPSB0aGlzIHx8ICFpc0xv
YWRpbmcoKSk7CiAgICAgaWYgKG1faWNvbkxvYWREZWNpc2lvbkNhbGxiYWNrKQogICAgICAgICBt
X2ljb25Mb2FkRGVjaXNpb25DYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogICAgIGlmIChtX2ljb25E
YXRhQ2FsbGJhY2spCkBAIC0yODUsNyArMjg3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29t
bWl0SWZSZWFkeSgpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcoKQogewog
ICAgIGNvbW1pdElmUmVhZHkoKTsKLSAgICBpZiAoIWZyYW1lTG9hZGVyKCkgfHwgZnJhbWVMb2Fk
ZXIoKS0+c3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkKKyAg
ICBpZiAoIWZyYW1lTG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbWF5YmVD
cmVhdGVBcmNoaXZlKCkpIHsKQEAgLTMwMCw3ICszMDIsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpmaW5pc2hlZExvYWRpbmcoKQogICAgIGlmICghbV9tYWluRG9jdW1lbnRFcnJvci5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7Ci0gICAg
ZnJhbWVMb2FkZXIoKS0+Y2hlY2tMb2FkQ29tcGxldGUoKTsKKyAgICBpZiAoIWZyYW1lTG9hZGVy
KCktPnN0YXRlTWFjaGluZSgpLT5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpCisgICAg
ICAgIGZyYW1lTG9hZGVyKCktPmNoZWNrTG9hZENvbXBsZXRlKCk7CiB9CiAKIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTQ0
OSw2ICs0NTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZUxvCiAg
ICAgICAgIG1fbWFpblJlc291cmNlRGF0YSA9IG1fbWFpblJlc291cmNlTG9hZGVyLT5yZXNvdXJj
ZURhdGEoKTsKICAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXIgPSAwOwogICAgIH0KKyAgICBt
X2xvYWRpbmdFbXB0eURvY3VtZW50ID0gZmFsc2U7CiAKICAgICBpZiAodGhpcyA9PSBmcmFtZUxv
YWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpKQogICAgICAgICBjaGVja0xvYWRDb21wbGV0
ZSgpOwpAQCAtNDYzLDcgKzQ2Nyw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZ0lu
QVBJU2Vuc2UKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgICAgICBEb2N1bWVu
dCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgaWYgKChtX21haW5SZXNvdXJj
ZUxvYWRlciB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bG9hZEV2ZW50RmluaXNoZWQoKSkgJiYg
aXNMb2FkaW5nKCkpCisgICAgICAgIGlmICgoaXNMb2FkaW5nTWFpblJlc291cmNlKCkgfHwgIW1f
ZnJhbWUtPmRvY3VtZW50KCktPmxvYWRFdmVudEZpbmlzaGVkKCkpICYmIGlzTG9hZGluZygpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChtX2NhY2hlZFJlc291cmNlTG9h
ZGVyLT5yZXF1ZXN0Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzY5LDcg
Kzc3Myw3IEBAIEtVUkwgRG9jdW1lbnRMb2FkZXI6OmRvY3VtZW50VVJMKCkgY29uc3QKICAgICAg
ICAgdXJsID0gcmVxdWVzdFVSTCgpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICB1
cmwgPSByZXNwb25zZVVSTCgpOwotICAgIGlmICh1cmwuaXNFbXB0eSgpKQorICAgIGlmICh1cmwu
aXNFbXB0eSgpICYmICFmcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS0+Y3JlYXRpbmdJbml0
aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICB1cmwgPSBibGFua1VSTCgpOwogICAgIHJldHVy
biB1cmw7CiB9CkBAIC04MzAsNyArODM0LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVtb3Zl
UGx1Z0luU3RyZWFtTAogCiBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdNYWluUmVzb3Vy
Y2UoKSBjb25zdAogewotICAgIHJldHVybiAhIW1fbWFpblJlc291cmNlTG9hZGVyOworICAgIHJl
dHVybiAhIW1fbWFpblJlc291cmNlTG9hZGVyIHx8IG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQ7CiB9
CiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKSBjb25z
dApAQCAtODQzLDE3ICs4NDcsMzkgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6aXNNdWx0aXBhcnRS
ZXBsYWNpbgogICAgIHJldHVybiBpc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkgJiYgZnJhbWVM
b2FkZXIoKS0+aXNSZXBsYWNpbmcoKTsKIH0KIAorYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVM
b2FkRW1wdHkoKQoreworICAgIGJvb2wgc2hvdWRMb2FkRW1wdHkgPSAhbV9zdWJzdGl0dXRlRGF0
YS5pc1ZhbGlkKCkgJiYgKG1fcmVxdWVzdC51cmwoKS5pc0VtcHR5KCkgfHwgU2NoZW1lUmVnaXN0
cnk6OnNob3VsZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQobV9yZXF1ZXN0LnVybCgpLnBy
b3RvY29sKCkpKTsKKyAgICBpZiAoIXNob3VkTG9hZEVtcHR5ICYmICFmcmFtZUxvYWRlcigpLT5j
bGllbnQoKS0+cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVybCgp
LnByb3RvY29sKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIG1fbG9h
ZGluZ0VtcHR5RG9jdW1lbnQgPSB0cnVlOworICAgIFN0cmluZyBtaW1lVHlwZSA9IHNob3VkTG9h
ZEVtcHR5ID8gInRleHQvaHRtbCIgOiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+Z2VuZXJhdGVk
TUlNRVR5cGVGb3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sKCkpOworICAgIHNl
dFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXF1ZXN0LnVybCgpLCBtaW1lVHlwZSwgMCwg
U3RyaW5nKCksIFN0cmluZygpKSk7CisgICAgZmluaXNoZWRMb2FkaW5nKCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJj
ZSgpCiB7CiAgICAgbV9tYWluRG9jdW1lbnRFcnJvciA9IFJlc291cmNlRXJyb3IoKTsKICAgICB0
aW1pbmcoKS0+bWFya05hdmlnYXRpb25TdGFydCgpOwogICAgIEFTU0VSVCghbV9tYWluUmVzb3Vy
Y2VMb2FkZXIpOworCisgICAgaWYgKG1heWJlTG9hZEVtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KwogICAgIG1fbWFpblJlc291cmNlTG9hZGVyID0gTWFpblJlc291cmNlTG9hZGVyOjpjcmVhdGUo
bV9mcmFtZSk7CiAKICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IHdheSB0aGUgZXh0cmEgZmll
bGRzIGNvdWxkIGhhdmUgbm90IGJlZW4gYWRkZWQgYnkgbm93PwogICAgIC8vIElmIG5vdCwgaXQg
d291bGQgYmUgZ3JlYXQgdG8gcmVtb3ZlIHRoaXMgbGluZSBvZiBjb2RlLgogICAgIGZyYW1lTG9h
ZGVyKCktPmFkZEV4dHJhRmllbGRzVG9NYWluUmVzb3VyY2VSZXF1ZXN0KG1fcmVxdWVzdCk7CiAg
ICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPmxvYWQobV9yZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRh
KTsKKworICAgIGlmIChtX3JlcXVlc3QuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9tYWluUmVzb3Vy
Y2VMb2FkZXIgPSAwOworICAgICAgICBtYXliZUxvYWRFbXB0eSgpOworICAgIH0KIH0KIAogdm9p
ZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShy
ZXZpc2lvbiAxMzQzMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBjbGVhckFyY2hpdmVSZXNvdXJjZXMoKTsKICNlbmRpZgogCisgICAgICAg
IGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKKwogICAgICAgICBib29sIGlzTXVsdGlwYXJ0UmVwbGFj
aW5nTG9hZCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZGVsaXZlclN1YnN0aXR1dGVSZXNvdXJj
ZXNBZnRlckRlbGF5KCk7CkBAIC0zMDcsNiArMzA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBib29sIG1faXNTdG9wcGluZzsKICAgICAgICAgYm9vbCBtX2dvdEZpcnN0Qnl0ZTsK
ICAgICAgICAgYm9vbCBtX2lzQ2xpZW50UmVkaXJlY3Q7CisgICAgICAgIGJvb2wgbV9sb2FkaW5n
RW1wdHlEb2N1bWVudDsKIAogICAgICAgICAvLyBGSVhNRTogRG9jdW1lbnQ6Om1fcHJvY2Vzc2lu
Z0xvYWRFdmVudCBhbmQgRG9jdW1lbnRMb2FkZXI6Om1fd2FzT25sb2FkSGFuZGxlZCBhcmUgcm91
Z2hseSB0aGUgc2FtZQogICAgICAgICAvLyBhbmQgc2hvdWxkIGJlIG1lcmdlZC4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTM0MzI3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0
LDE0ICsyMTQsMTQgQEAgRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1lKiBmcmFtZSwgRgog
ICAgICwgbV9zdWJmcmFtZUxvYWRlcihmcmFtZSkKICAgICAsIG1faWNvbihmcmFtZSkKICAgICAs
IG1fbWl4ZWRDb250ZW50Q2hlY2tlcihmcmFtZSkKLSAgICAsIG1fc3RhdGUoRnJhbWVTdGF0ZUNv
bW1pdHRlZFBhZ2UpCisgICAgLCBtX3N0YXRlKEZyYW1lU3RhdGVQcm92aXNpb25hbCkKICAgICAs
IG1fbG9hZFR5cGUoRnJhbWVMb2FkVHlwZVN0YW5kYXJkKQogICAgICwgbV9kZWxlZ2F0ZUlzSGFu
ZGxpbmdQcm92aXNpb25hbExvYWRFcnJvcihmYWxzZSkKICAgICAsIG1fcXVpY2tSZWRpcmVjdENv
bWluZyhmYWxzZSkKICAgICAsIG1fc2VudFJlZGlyZWN0Tm90aWZpY2F0aW9uKGZhbHNlKQogICAg
ICwgbV9pblN0b3BBbGxMb2FkZXJzKGZhbHNlKQogICAgICwgbV9pc0V4ZWN1dGluZ0phdmFTY3Jp
cHRGb3JtQWN0aW9uKGZhbHNlKQotICAgICwgbV9kaWRDYWxsSW1wbGljaXRDbG9zZShmYWxzZSkK
KyAgICAsIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UodHJ1ZSkKICAgICAsIG1fd2FzVW5sb2FkRXZl
bnRFbWl0dGVkKGZhbHNlKQogICAgICwgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNo
ZWQoTm9EaXNtaXNzYWwpCiAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2UpCkBAIC0yNTQsMTkgKzI1
NCwxMSBAQCBGcmFtZUxvYWRlcjo6fkZyYW1lTG9hZGVyKCkKIHZvaWQgRnJhbWVMb2FkZXI6Omlu
aXQoKQogewogICAgIC8vIFRoaXMgc29tZXdoYXQgb2RkIHNldCBvZiBzdGVwcyBnaXZlcyB0aGUg
ZnJhbWUgYW4gaW5pdGlhbCBlbXB0eSBkb2N1bWVudC4KLSAgICAvLyBJdCB3b3VsZCBiZSBiZXR0
ZXIgaWYgdGhpcyBjb3VsZCBiZSBkb25lIHdpdGggZXZlbiBmZXdlciBzdGVwcy4KLSAgICBtX3N0
YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkNyZWF0aW5nSW5p
dGlhbEVtcHR5RG9jdW1lbnQpOwogICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50
LT5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoS1VSTChQYXJzZWRVUkxTdHJp
bmcsIGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOwogICAgIHNldFBy
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7Ci0g
ICAgc2V0U3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKTsKLSAgICBtX3Byb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXItPnNldFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UoS1VSTCgpLCAidGV4dC9o
dG1sIiwgMCwgU3RyaW5nKCksIFN0cmluZygpKSk7Ci0gICAgbV9wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyLT5maW5pc2hlZExvYWRpbmcoKTsKLSAgICBBU1NFUlQoIW1fZnJhbWUtPmRvY3VtZW50
KCkpOwotICAgIG1fZG9jdW1lbnRMb2FkZXItPndyaXRlcigpLT5iZWdpbihLVVJMKCksIGZhbHNl
KTsKLSAgICBtX2RvY3VtZW50TG9hZGVyLT53cml0ZXIoKS0+ZW5kKCk7CisgICAgbV9wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5jYW5jZWxQYXJzaW5nKCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuYWR2
YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9j
dW1lbnQpOwotICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSB0cnVlOwogCiAgICAgbV9uZXR3
b3JraW5nQ29udGV4dCA9IG1fY2xpZW50LT5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogICAg
IG1fcHJvZ3Jlc3NUcmFja2VyID0gRnJhbWVQcm9ncmVzc1RyYWNrZXI6OmNyZWF0ZShtX2ZyYW1l
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVN
YWNoaW5lLmNwcAkocmV2aXNpb24gMTM0MzI3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAKIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpG
cmFtZUxvYWRlclN0YXRlTWFjaGluZSgpIAotICAgIDogbV9zdGF0ZShVbmluaXRpYWxpemVkKQor
ICAgIDogbV9zdGF0ZShDcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KQogeyAKIH0KICAgICAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGlu
ZS5oCShyZXZpc2lvbiAxMzQzMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJTdGF0ZU1hY2hpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBwdWJsaWM6
CiAgICAgLy8gYWx0ZXJuYXRlIGJldHdlZW4gQ29tbWl0dGVkRmlyc3RSZWFsTG9hZCBhbmQgRmly
c3RMYXlvdXREb25lLgogICAgIC8vIE90aGVyd2lzZSwgdGhlIHN0YXRlcyBvbmx5IGdvIGRvd24g
dGhlIGxpc3QuCiAgICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIFVuaW5pdGlhbGl6ZWQsCiAgICAg
ICAgIENyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQsCiAgICAgICAgIERpc3BsYXlpbmdJbml0
aWFsRW1wdHlEb2N1bWVudCwKICAgICAgICAgRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50
UG9zdENvbW1pdCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAxMzQzMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFp
blJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTEgKzY3LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBzaG91bGRMb2FkQXNFbXB0eURvY3Vt
ZW50KGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBTY2hl
bWVSZWdpc3RyeTo6c2hvdWxkTG9hZFVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudCh1cmwucHJvdG9j
b2woKSk7Ci19Ci0KIE1haW5SZXNvdXJjZUxvYWRlcjo6TWFpblJlc291cmNlTG9hZGVyKEZyYW1l
KiBmcmFtZSkKICAgICA6IFJlc291cmNlTG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBTa2lwU2VjdXJp
dHlDaGVjaykpCiAgICAgLCBtX2RhdGFMb2FkVGltZXIodGhpcywgJk1haW5SZXNvdXJjZUxvYWRl
cjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KQpAQCAtMzM4LDEzICszMzMsMTAgQEAgdm9p
ZCBNYWluUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDbwogICAgIGlmICghcmVhY2hlZFRl
cm1pbmFsU3RhdGUoKSkKICAgICAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShyKTsKIAotICAgIGlmIChmcmFtZUxvYWRlcigpICYmICFmcmFtZUxvYWRlcigpLT5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpIHsKLSAgICAgICAgaWYgKG1fc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5jb250
ZW50KCktPnNpemUoKSkKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShtX3N1YnN0aXR1
dGVEYXRhLmNvbnRlbnQoKS0+ZGF0YSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6
ZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCB0cnVlKTsKLSAgICAgICAg
ICAgIGlmIChmcmFtZUxvYWRlcigpICYmICFmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExv
YWRlcigpLT5pc1N0b3BwaW5nKCkpIAotICAgICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRpbmco
MCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudCh1cmwpIHx8
IGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVt
ZSh1cmwucHJvdG9jb2woKSkpCisgICAgaWYgKGZyYW1lTG9hZGVyKCkgJiYgIWZyYW1lTG9hZGVy
KCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBpbmcoKSAmJiBtX3N1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSkgeworICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCkt
PnNpemUoKSkKKyAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKG1fc3Vic3RpdHV0ZURhdGEuY29u
dGVudCgpLT5kYXRhKCksIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vi
c3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCksIHRydWUpOworICAgICAgICBpZiAoZnJhbWVM
b2FkZXIoKSAmJiAhZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+aXNTdG9w
cGluZygpKSAKICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpAQCAt
Mzg1LDcgKzM3Nyw3IEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG8K
ICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBi
ZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCiAgICAgLy8gU2VlIDxy
ZGFyOi8vcHJvYmxlbS82MzA0NjAwPiBmb3IgbW9yZSBkZXRhaWxzLgogI2lmICFVU0UoQ0YpCi0g
ICAgQVNTRVJUKHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQoci51cmwoKSkgfHwgIWRlZmVyc0xv
YWRpbmcoKSk7CisgICAgQVNTRVJUKCFkZWZlcnNMb2FkaW5nKCkpOwogI2VuZGlmCiAKICAgICBp
ZiAobV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCkgewpAQCAtNTAwLDcgKzQ5Miw3IEBAIHZvaWQg
TWFpblJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW4KICAgICAvLyBUaGVyZSBpcyBhIGJ1
ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hl
biBsb2FkcyBhcmUgZGVmZXJyZWQuCiAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS82MzA0NjAw
PiBmb3IgbW9yZSBkZXRhaWxzLgogI2lmICFVU0UoQ0YpCi0gICAgQVNTRVJUKHNob3VsZExvYWRB
c0VtcHR5RG9jdW1lbnQoZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+dXJs
KCkpIHx8ICFkZWZlcnNMb2FkaW5nKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0Rl
YnVnZ2VyUGF1c2VkKG1fZnJhbWUuZ2V0KCkpKTsKKyAgICBBU1NFUlQoIWRlZmVyc0xvYWRpbmco
KSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzRGVidWdnZXJQYXVzZWQobV9mcmFtZS5n
ZXQoKSkpOwogI2VuZGlmCiAKICAgICAvLyBUaGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBk
byBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgcmVtb3ZpbmcgdGhlIGxhc3QKQEAgLTU2MSwx
OCArNTUzLDYgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OnJlcG9ydE1lbW9yeVVzYQogICAg
IGluZm8uYWRkTWVtYmVyKG1fZGF0YUxvYWRUaW1lcik7CiB9CiAKLXZvaWQgTWFpblJlc291cmNl
TG9hZGVyOjpoYW5kbGVFbXB0eUxvYWQoY29uc3QgS1VSTCYgdXJsLCBib29sIGZvclVSTFNjaGVt
ZSkKLXsKLSAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgaWYgKGZvclVSTFNjaGVtZSkKLSAgICAg
ICAgbWltZVR5cGUgPSBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+Z2VuZXJhdGVkTUlNRVR5cGVG
b3JVUkxTY2hlbWUodXJsLnByb3RvY29sKCkpOwotICAgIGVsc2UKLSAgICAgICAgbWltZVR5cGUg
PSAidGV4dC9odG1sIjsKLSAgICAKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwg
bWltZVR5cGUsIDAsIFN0cmluZygpLCBTdHJpbmcoKSk7Ci0gICAgZGlkUmVjZWl2ZVJlc3BvbnNl
KHJlc3BvbnNlKTsKLX0KLQogdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVN1YnN0aXR1
dGVEYXRhTG9hZE5vdyhNYWluUmVzb3VyY2VMb2FkZXJUaW1lciopCiB7CiAgICAgUmVmUHRyPE1h
aW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKQEAgLTYwOSwyOSArNTg5LDEwIEBAIHZv
aWQgTWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVTdWJzdGl0dXQKICAgICAgICAgaGFuZGxlU3Vi
c3RpdHV0ZURhdGFMb2FkTm93KDApOwogfQogCi1ib29sIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9h
ZE5vdyhSZXNvdXJjZVJlcXVlc3QmIHIpCit2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZE5v
dyhSZXNvdXJjZVJlcXVlc3QmIHIpCiB7Ci0gICAgYm9vbCBzaG91bGRMb2FkRW1wdHlCZWZvcmVS
ZWRpcmVjdCA9IHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQoci51cmwoKSk7Ci0KICAgICBBU1NF
UlQoIW1faGFuZGxlKTsKLSAgICBBU1NFUlQoc2hvdWxkTG9hZEVtcHR5QmVmb3JlUmVkaXJlY3Qg
fHwgIWRlZmVyc0xvYWRpbmcoKSk7Ci0KLSAgICAvLyBTZW5kIHRoaXMgc3ludGhldGljIGRlbGVn
YXRlIGNhbGxiYWNrIHNpbmNlIGNsaWVudHMgZXhwZWN0IGl0LCBhbmQKLSAgICAvLyB3ZSBubyBs
b25nZXIgc2VuZCB0aGUgY2FsbGJhY2sgZnJvbSB3aXRoaW4gTlNVUkxDb25uZWN0aW9uIGZvcgot
ICAgIC8vIGluaXRpYWwgcmVxdWVzdHMuCi0gICAgd2lsbFNlbmRSZXF1ZXN0KHIsIFJlc291cmNl
UmVzcG9uc2UoKSk7Ci0gICAgQVNTRVJUKCFkZWxldGlvbkhhc0JlZ3VuKCkpOwotCi0gICAgLy8g
PHJkYXI6Ly9wcm9ibGVtLzQ4MDEwNjY+Ci0gICAgLy8gd2lsbFNlbmRSZXF1ZXN0KCkgaXMgbGlh
YmxlIHRvIG1ha2UgdGhlIGNhbGwgdG8gZnJhbWVMb2FkZXIoKSByZXR1cm4gTlVMTCwgc28gd2Ug
bmVlZCB0byBjaGVjayB0aGF0IGhlcmUKLSAgICBpZiAoIWZyYW1lTG9hZGVyKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSByLnVybCgpOwotICAg
IGJvb2wgc2hvdWxkTG9hZEVtcHR5ID0gc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudCh1cmwpICYm
ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKTsKLQotICAgIGlmIChzaG91bGRMb2FkRW1wdHlC
ZWZvcmVSZWRpcmVjdCAmJiAhc2hvdWxkTG9hZEVtcHR5ICYmIGRlZmVyc0xvYWRpbmcoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgQVNTRVJUKCFkZWZlcnNMb2FkaW5nKCkpOwogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRl
clN0cmF0ZWd5KCktPnJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5hZGRNYWluUmVzb3VyY2VMb2Fk
KHRoaXMpOwpAQCAtNjQxLDEyICs2MDIsMTAgQEAgYm9vbCBNYWluUmVzb3VyY2VMb2FkZXI6Omxv
YWROb3coUmVzb3VyYwogCiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAg
ICAgICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKHIpOwotICAgIGVsc2UgaWYgKHNob3Vs
ZExvYWRFbXB0eSB8fCBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+cmVwcmVzZW50YXRpb25FeGlz
dHNGb3JVUkxTY2hlbWUodXJsLnByb3RvY29sKCkpKQotICAgICAgICBoYW5kbGVFbXB0eUxvYWQo
dXJsLCAhc2hvdWxkTG9hZEVtcHR5KTsKICAgICBlbHNlCiAgICAgICAgIG1faGFuZGxlID0gUmVz
b3VyY2VIYW5kbGU6OmNyZWF0ZShtX2ZyYW1lLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQo
KSwgciwgdGhpcywgZmFsc2UsIHRydWUpOwogCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
bjsKIH0KIAogdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCkBAIC02NjQsMjMg
KzYyMywyNSBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvCiAgICAg
ZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPm1hcmtGZXRjaFN0YXJ0KCk7CiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3Qocik7CiAKLSAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlv
bkNhY2hlSG9zdCgpLT5tYXliZUxvYWRNYWluUmVzb3VyY2UocmVxdWVzdCwgbV9zdWJzdGl0dXRl
RGF0YSk7CisgICAgLy8gU2VuZCB0aGlzIHN5bnRoZXRpYyBkZWxlZ2F0ZSBjYWxsYmFjayBzaW5j
ZSBjbGllbnRzIGV4cGVjdCBpdCwgYW5kCisgICAgLy8gd2Ugbm8gbG9uZ2VyIHNlbmQgdGhlIGNh
bGxiYWNrIGZyb20gd2l0aGluIE5TVVJMQ29ubmVjdGlvbiBmb3IKKyAgICAvLyBpbml0aWFsIHJl
cXVlc3RzLgorICAgIHdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkp
OworICAgIEFTU0VSVCghZGVsZXRpb25IYXNCZWd1bigpKTsKIAotICAgIGJvb2wgZGVmZXIgPSBk
ZWZlcnNMb2FkaW5nKCk7Ci0gICAgaWYgKGRlZmVyKSB7Ci0gICAgICAgIGJvb2wgc2hvdWxkTG9h
ZEVtcHR5ID0gc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChyZXF1ZXN0LnVybCgpKTsKLSAgICAg
ICAgaWYgKHNob3VsZExvYWRFbXB0eSkKLSAgICAgICAgICAgIGRlZmVyID0gZmFsc2U7Ci0gICAg
fQotICAgIGlmICghZGVmZXIpIHsKLSAgICAgICAgaWYgKGxvYWROb3cocmVxdWVzdCkpIHsKLSAg
ICAgICAgICAgIC8vIFN0YXJ0ZWQgYXMgYW4gZW1wdHkgZG9jdW1lbnQsIGJ1dCB3YXMgcmVkaXJl
Y3RlZCB0byBzb21ldGhpbmcgbm9uLWVtcHR5LgotICAgICAgICAgICAgQVNTRVJUKGRlZmVyc0xv
YWRpbmcoKSk7Ci0gICAgICAgICAgICBkZWZlciA9IHRydWU7Ci0gICAgICAgIH0KKyAgICAvLyA8
cmRhcjovL3Byb2JsZW0vNDgwMTA2Nj4KKyAgICAvLyB3aWxsU2VuZFJlcXVlc3QoKSBpcyBsaWFi
bGUgdG8gbWFrZSB0aGUgY2FsbCB0byBmcmFtZUxvYWRlcigpIHJldHVybiBudWxsLCBzbyB3ZSBu
ZWVkIHRvIGNoZWNrIHRoYXQgaGVyZQorICAgIGlmICghZnJhbWVMb2FkZXIoKSB8fCByZXF1ZXN0
LmlzTnVsbCgpKSB7CisgICAgICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBpZiAoZGVmZXIpCisKKyAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRNYWluUmVzb3VyY2UocmVxdWVzdCwgbV9zdWJzdGl0
dXRlRGF0YSk7CisKKyAgICBpZiAoZGVmZXJzTG9hZGluZygpKQogICAgICAgICBtX2luaXRpYWxS
ZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBlbHNlCisgICAgICAgIGxvYWROb3cocmVxdWVzdCk7CiB9
CiAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJz
KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAkocmV2
aXNpb24gMTM0MzI3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw5ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogCi0g
ICAgYm9vbCBsb2FkTm93KFJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgbG9hZE5vdyhSZXNv
dXJjZVJlcXVlc3QmKTsKIAotICAgIHZvaWQgaGFuZGxlRW1wdHlMb2FkKGNvbnN0IEtVUkwmLCBi
b29sIGZvclVSTFNjaGVtZSk7CiAgICAgdm9pZCBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgaGFuZGxlU3Vic3RpdHV0ZURhdGFM
b2FkTm93KE1haW5SZXNvdXJjZUxvYWRlclRpbWVyKik7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDMyNykKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTA4
ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSBlbXB0
eSBsb2FkaW5nIHRvIERvY3VtZW50TG9hZGVyLCBzaW1wbGlmeSBGcmFtZUxvYWRlcjo6aW5pdCgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1MTIK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIENocm9taXVtIERS
VCBoYXMgc29tZSBjb2RlIHRoYXQgZG9lc24ndCBwbGF5IG5pY2VseSB3aXRoIGVtcHR5IHVybHMg
YW5kIGluY29ycmVjdGx5CisgICAgICAgIGludGVycHJldHMgdGhlbSBhcyBhIG5vbi1lbXB0eSBs
b2FkLiBUaGlzIGVuc3VyZXMKKyAgICAgICAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL25ldy13aW5k
b3ctcmVkaXJlY3QtaGlzdG9yeS5odG1sIGNvbnRpbnVlcyB0byBwYXNzCisgICAgICAgIGluIGNo
cm9taXVtLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnVwZGF0ZUZvckNvbW1pdHRlZExvYWQpOgorCiAy
MDEyLTExLTEyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IHdlYmtpdHB5OiBpbnRlZ3JhdGUgcHlsaW50IGludG8gY2hlY2std2Via2l0LXN0eWxlLCBwYXJ0
IEkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5j
cHAJKHJldmlzaW9uIDEzNDMyNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0Miw3ICsxNjQyLDggQEAgdm9pZCBX
ZWJWaWV3SG9zdDo6dXBkYXRlRm9yQ29tbWl0dGVkTG9hZAogewogICAgIC8vIENvZGUgZHVwbGlj
YXRlZCBmcm9tIFJlbmRlclZpZXc6OkRpZENvbW1pdExvYWRGb3JGcmFtZS4KICAgICBUZXN0U2hl
bGxFeHRyYURhdGEqIGV4dHJhRGF0YSA9IHN0YXRpY19jYXN0PFRlc3RTaGVsbEV4dHJhRGF0YSo+
KGZyYW1lLT5kYXRhU291cmNlKCktPmV4dHJhRGF0YSgpKTsKLSAgICBib29sIG5vbkJsYW5rUGFn
ZUFmdGVyUmVzZXQgPSBtX3BhZ2VJZCA9PSAtMSAmJiBzdHJjbXAoZnJhbWUtPmRhdGFTb3VyY2Uo
KS0+cmVxdWVzdCgpLnVybCgpLnNwZWMoKS5kYXRhKCksICJhYm91dDpibGFuayIpOworICAgIGNv
bnN0IFdlYlVSTCYgdXJsID0gZnJhbWUtPmRhdGFTb3VyY2UoKS0+cmVxdWVzdCgpLnVybCgpOwor
ICAgIGJvb2wgbm9uQmxhbmtQYWdlQWZ0ZXJSZXNldCA9IG1fcGFnZUlkID09IC0xICYmICF1cmwu
aXNFbXB0eSgpICYmIHN0cmNtcCh1cmwuc3BlYygpLmRhdGEoKSwgImFib3V0OmJsYW5rIik7CiAK
ICAgICBpZiAoaXNOZXdOYXZpZ2F0aW9uIHx8IG5vbkJsYW5rUGFnZUFmdGVyUmVzZXQpIHsKICAg
ICAgICAgLy8gTmV3IG5hdmlnYXRpb24uCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzQzMjcpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAx
Mi0xMS0wNyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1v
dmUgZW1wdHkgbG9hZGluZyB0byBEb2N1bWVudExvYWRlciwgc2ltcGxpZnkgRnJhbWVMb2FkZXI6
OmluaXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAxNTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBEb24n
dCBleHBlY3QgcmVzb3VyY2UgbG9hZCBjYWxsYmFja3MgZm9yIGVtcHR5IGxvYWRzLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1sb2FkLWFu
ZC1kZWxldGUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0
aG9kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVP
cHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRl
bnktbWV0YS10YWctaW4tYm9keS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVu
dC1zYW1lLW9yaWdpbi1kZW55LWV4cGVjdGVkLnR4dDoKKwogMjAxMi0xMS0xMiAgUmFwaGFlbCBL
dWJvIGRhIENvc3RhICA8cmFwaGFlbC5rdWJvLmRhLmNvc3RhQGludGVsLmNvbT4KIAogICAgICAg
ICBbRUZMXSBXZWJLaXQxIGdhcmRlbmluZy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1pZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUuaHRtbAkocmV2aXNpb24gMTM0MzI3KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1sb2Fk
LWFuZC1kZWxldGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBmdW5jdGlv
biB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHZhciByZXF1
ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rv
ci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDNdOworICAgICAgICB2YXIgcmVx
dWVzdDEgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0
b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5ndGggLSAyXTsKICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDEudXJsKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXF1ZXN0MS50eXBlKTsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3Rpbmcg
Y29udGVudDogIiArIHJlcXVlc3QxLmNvbnRlbnQpOwpAQCAtNTIsNyArNTIsNyBAQCBmdW5jdGlv
biB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICB7Ci0gICAgICAgIHZhciByZXF1
ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rv
ci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDNdOworICAgICAgICB2YXIgcmVx
dWVzdDEgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0
b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5ndGggLSAyXTsKICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250
ZW50OiAiICsgcmVxdWVzdDEuY29udGVudCk7CiAKICAgICAgICAgdmFyIHJlcXVlc3QyID0gV2Vi
SW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVsKCJu
ZXR3b3JrIikucmVxdWVzdHMubGVuZ3RoIC0gMV07CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxMzQzMjcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
cmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMTMgKzUs
MTAgQEAgbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYQogbWFpbiBmcmFt
ZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQogPHVua25vd24+IC0gZGlkRmluaXNoTG9hZGluZwog
ZnJhbWUgIjAiIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQotYWJvdXQ6Ymxhbmsg
LSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9j
dW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMu
aHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6Ymxh
bmsgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAg
c3RhdHVzIGNvZGUgMD4KIGZyYW1lICIwIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUg
IjAiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEhhbmRs
ZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMCIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUK
LWFib3V0OmJsYW5rIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjAiIC0gd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgCiBmcmFtZSAiMCIgLSBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVx
dWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtZm9ybS5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJl
Y3RSZXNwb25zZSAobnVsbCkKQEAgLTMyLDEzICsyOSwxMCBAQCBmcmFtZSAiMCIgLSBkaWRDYW5j
ZWxDbGllbnRSZWRpcmVjdEZvckZyCiBmcmFtZSAiMCIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUK
IGZyYW1lICIwIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIgLSBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVx
dWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1l
dGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91dDpibGFuayAtIGRpZFJlY2Vp
dmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFuaywgaHR0cCBzdGF0dXMgY29kZSAw
PgogZnJhbWUgIjEiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRz
Rm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQotYWJvdXQ6Ymxhbmsg
LSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMSIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1t
ZXRob2RzLWZvcm0uaHRtbCAKIGZyYW1lICIwIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZy
YW1lCiBmcmFtZSAiMCIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKQEAgLTYyLDEzICs1NiwxMCBA
QCBmcmFtZSAiMSIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyCiBmcmFtZSAiMSIgLSBk
aWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCi1hYm91
dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywg
bWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3Qt
bWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1h
Ym91dDpibGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFu
aywgaHR0cCBzdGF0dXMgY29kZSAwPgogZnJhbWUgIjIiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1l
CiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjIiIC0g
ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaExvYWRG
b3JGcmFtZQotYWJvdXQ6YmxhbmsgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMiIgLSB3aWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAKIGZyYW1lICIxIiAtIGRpZEhh
bmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hMb2FkRm9yRnJh
bWUKQEAgLTkyLDEzICs4MywxMCBAQCBmcmFtZSAiMiIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyCiBmcmFtZSAiMiIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1
ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGly
ZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91dDpibGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNV
UkxSZXNwb25zZSBhYm91dDpibGFuaywgaHR0cCBzdGF0dXMgY29kZSAwPgogZnJhbWUgIjMiIC0g
ZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1l
ICIzIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSBkaWRGaW5pc2hMb2Fk
aW5nCiBmcmFtZSAiMyIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRt
bCAKIGZyYW1lICIyIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMiIg
LSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJh
bWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTM0MzI3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVP
cHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw4ICszLDYgQEAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hG
cmFtZU9wdAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVz
b3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLmh0bWwgLSBkaWRS
ZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFn
LXN1YmZyYW1lLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55
LW1ldGEtdGFnLXN1YmZyYW1lLmh0bWwgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJy
b3IgZG9tYWluIE5TVVJMRXJyb3JEb21haW4sIGNvZGUgLTk5OSwgZmFpbGluZyBVUkwgImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1l
LW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS5odG1sIj4KIENPTlNPTEUgTUVTU0FHRTog
UmVmdXNlZCB0byBkaXNwbGF5ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1l
T3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUu
aHRtbCcgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0byAnZGVu
eScuCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91
dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWcuaHRtbCwgaHR0cCBt
ZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNl
aXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUg
MD4KIFRoZXJlIHNob3VsZCBiZSBubyBjb250ZW50IGluIHRoZSBpZnJhbWUgYmVsb3cKIAogCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFt
ZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUt
b3B0aW9ucy1kZW55LW1ldGEtdGFnLWluLWJvZHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzQz
MjcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1m
cmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTMsOCArMyw2IEBAIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJh
bWVPcHQKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291
cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1pbi1ib2R5Lmh0bWwg
LSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1l
dGEtdGFnLXN1YmZyYW1lLWluLWJvZHkuaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFt
ZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtaW4tYm9keS5odG1sIC0gZGlkRmFpbExv
YWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRvbWFpbiBOU1VSTEVycm9yRG9tYWluLCBjb2RlIC05
OTksIGZhaWxpbmcgVVJMICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0
aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtaW4t
Ym9keS5odG1sIj4KIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBkaXNwbGF5ICdodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1v
cHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtaW4tYm9keS5odG1sJyBpbiBhIGZyYW1lIGJl
Y2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICdkZW55Jy4KLWFib3V0OmJsYW5rIC0g
d2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBtYWluIGRvY3Vt
ZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZy
YW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4g
cmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWFib3V0OmJsYW5rIC0gZGlkUmVjZWl2ZVJlc3BvbnNl
IDxOU1VSTFJlc3BvbnNlIGFib3V0OmJsYW5rLCBodHRwIHN0YXR1cyBjb2RlIDA+CiBUaGVyZSBz
aG91bGQgYmUgbm8gY29udGVudCBpbiB0aGUgaWZyYW1lIGJlbG93CiAKIApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1k
ZW55LW1ldGEtdGFnLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1m
cmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRlbnktZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxMzQzMjcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNh
bWUtb3JpZ2luLWRlbnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsNiBA
QCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0CiBodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25z
LWRlbnktbWV0YS10YWctc3ViZnJhbWUtcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCAtIGRp
ZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2Vj
dXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10
YWctc3ViZnJhbWUtcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCwgaHR0cCBzdGF0dXMgY29k
ZSAyMDA+CiBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNv
dXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtcGFyZW50LXNhbWUt
b3JpZ2luLWRlbnkuaHRtbCAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21h
aW4gTlNVUkxFcnJvckRvbWFpbiwgY29kZSAtOTk5LCBmYWlsaW5nIFVSTCAiaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9u
cy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwiPgog
Q09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGRpc3BsYXkgJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1t
ZXRhLXRhZy1zdWJmcmFtZS1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sJyBpbiBhIGZyYW1l
IGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICdzYW1lb3JpZ2luJy4KLWFib3V0
OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBt
YWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0
aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVu
eS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91dDpi
bGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFuaywgaHR0
cCBzdGF0dXMgY29kZSAwPgogVGhlcmUgc2hvdWxkIGJlIG5vIGNvbnRlbnQgaW4gdGhlIGlmcmFt
ZSBiZWxvdwogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174741</attachid>
            <date>2012-11-16 12:28:10 -0800</date>
            <delta_ts>2012-11-16 16:28:51 -0800</delta_ts>
            <desc>Set the url to about:blank for non-initial empty loads</desc>
            <filename>empty.txt</filename>
            <type>text/plain</type>
            <size>30088</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTM0ODAw
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE0LDE0ICsyMTQsMTQgQEAKICAgICAsIG1fc3ViZnJhbWVMb2FkZXIoZnJhbWUpCiAg
ICAgLCBtX2ljb24oZnJhbWUpCiAgICAgLCBtX21peGVkQ29udGVudENoZWNrZXIoZnJhbWUpCi0g
ICAgLCBtX3N0YXRlKEZyYW1lU3RhdGVDb21taXR0ZWRQYWdlKQorICAgICwgbV9zdGF0ZShGcmFt
ZVN0YXRlUHJvdmlzaW9uYWwpCiAgICAgLCBtX2xvYWRUeXBlKEZyYW1lTG9hZFR5cGVTdGFuZGFy
ZCkKICAgICAsIG1fZGVsZWdhdGVJc0hhbmRsaW5nUHJvdmlzaW9uYWxMb2FkRXJyb3IoZmFsc2Up
CiAgICAgLCBtX3F1aWNrUmVkaXJlY3RDb21pbmcoZmFsc2UpCiAgICAgLCBtX3NlbnRSZWRpcmVj
dE5vdGlmaWNhdGlvbihmYWxzZSkKICAgICAsIG1faW5TdG9wQWxsTG9hZGVycyhmYWxzZSkKICAg
ICAsIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbihmYWxzZSkKLSAgICAsIG1fZGlk
Q2FsbEltcGxpY2l0Q2xvc2UoZmFsc2UpCisgICAgLCBtX2RpZENhbGxJbXBsaWNpdENsb3NlKHRy
dWUpCiAgICAgLCBtX3dhc1VubG9hZEV2ZW50RW1pdHRlZChmYWxzZSkKICAgICAsIG1fcGFnZURp
c21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKE5vRGlzbWlzc2FsKQogICAgICwgbV9pc0NvbXBs
ZXRlKGZhbHNlKQpAQCAtMjU0LDE5ICsyNTQsMTEgQEAKIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQo
KQogewogICAgIC8vIFRoaXMgc29tZXdoYXQgb2RkIHNldCBvZiBzdGVwcyBnaXZlcyB0aGUgZnJh
bWUgYW4gaW5pdGlhbCBlbXB0eSBkb2N1bWVudC4KLSAgICAvLyBJdCB3b3VsZCBiZSBiZXR0ZXIg
aWYgdGhpcyBjb3VsZCBiZSBkb25lIHdpdGggZXZlbiBmZXdlciBzdGVwcy4KLSAgICBtX3N0YXRl
TWFjaGluZS5hZHZhbmNlVG8oRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkNyZWF0aW5nSW5pdGlh
bEVtcHR5RG9jdW1lbnQpOwogICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50LT5j
cmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoS1VSTChQYXJzZWRVUkxTdHJpbmcs
IGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOwogICAgIHNldFByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7Ci0gICAg
c2V0U3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKTsKLSAgICBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXItPnNldFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UoS1VSTCgpLCAidGV4dC9odG1s
IiwgMCwgU3RyaW5nKCksIFN0cmluZygpKSk7Ci0gICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyLT5maW5pc2hlZExvYWRpbmcoKTsKLSAgICBBU1NFUlQoIW1fZnJhbWUtPmRvY3VtZW50KCkp
OwotICAgIG1fZG9jdW1lbnRMb2FkZXItPndyaXRlcigpLT5iZWdpbihLVVJMKCksIGZhbHNlKTsK
LSAgICBtX2RvY3VtZW50TG9hZGVyLT53cml0ZXIoKS0+ZW5kKCk7CisgICAgbV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5jYW5jZWxQYXJzaW5nKCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuYWR2YW5j
ZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1l
bnQpOwotICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSB0cnVlOwogCiAgICAgbV9uZXR3b3Jr
aW5nQ29udGV4dCA9IG1fY2xpZW50LT5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogICAgIG1f
cHJvZ3Jlc3NUcmFja2VyID0gRnJhbWVQcm9ncmVzc1RyYWNrZXI6OmNyZWF0ZShtX2ZyYW1lKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHJldmlz
aW9uIDEzNDgwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtODEsOSArODEsOCBAQAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
Q2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKIAotICAgIGJvb2wgbG9h
ZE5vdyhSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIGxvYWROb3coUmVzb3VyY2VSZXF1ZXN0
Jik7CiAKLSAgICB2b2lkIGhhbmRsZUVtcHR5TG9hZChjb25zdCBLVVJMJiwgYm9vbCBmb3JVUkxT
Y2hlbWUpOwogICAgIHZvaWQgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdyhNYWlu
UmVzb3VyY2VMb2FkZXJUaW1lciopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAkocmV2aXNpb24gMTM0ODAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw2ICsyNjUsOCBAQAogICAgICAg
ICB2b2lkIGNsZWFyQXJjaGl2ZVJlc291cmNlcygpOwogI2VuZGlmCiAKKyAgICAgICAgYm9vbCBt
YXliZUxvYWRFbXB0eSgpOworCiAgICAgICAgIGJvb2wgaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2Fk
KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBkZWxpdmVyU3Vic3RpdHV0ZVJlc291cmNlc0FmdGVy
RGVsYXkoKTsKQEAgLTMwNyw2ICszMDksNyBAQAogICAgICAgICBib29sIG1faXNTdG9wcGluZzsK
ICAgICAgICAgYm9vbCBtX2dvdEZpcnN0Qnl0ZTsKICAgICAgICAgYm9vbCBtX2lzQ2xpZW50UmVk
aXJlY3Q7CisgICAgICAgIGJvb2wgbV9sb2FkaW5nRW1wdHlEb2N1bWVudDsKIAogICAgICAgICAv
LyBGSVhNRTogRG9jdW1lbnQ6Om1fcHJvY2Vzc2luZ0xvYWRFdmVudCBhbmQgRG9jdW1lbnRMb2Fk
ZXI6Om1fd2FzT25sb2FkSGFuZGxlZCBhcmUgcm91Z2hseSB0aGUgc2FtZQogICAgICAgICAvLyBh
bmQgc2hvdWxkIGJlIG1lcmdlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlclN0YXRlTWFjaGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlclN0YXRlTWFjaGluZS5oCShyZXZpc2lvbiAxMzQ4MDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNyArNDQsNiBAQAogICAgIC8vIGFsdGVybmF0ZSBiZXR3ZWVuIENvbW1pdHRlZEZpcnN0UmVh
bExvYWQgYW5kIEZpcnN0TGF5b3V0RG9uZS4KICAgICAvLyBPdGhlcndpc2UsIHRoZSBzdGF0ZXMg
b25seSBnbyBkb3duIHRoZSBsaXN0LgogICAgIGVudW0gU3RhdGUgewotICAgICAgICBVbmluaXRp
YWxpemVkLAogICAgICAgICBDcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50LAogICAgICAgICBE
aXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQsCiAgICAgICAgIERpc3BsYXlpbmdJbml0aWFs
RW1wdHlEb2N1bWVudFBvc3RDb21taXQsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFp
blJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWFpblJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTM0ODAwKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDEx
ICs2Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgc2hvdWxkTG9h
ZEFzRW1wdHlEb2N1bWVudChjb25zdCBLVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIHVybC5pc0Vt
cHR5KCkgfHwgU2NoZW1lUmVnaXN0cnk6OnNob3VsZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1l
bnQodXJsLnByb3RvY29sKCkpOwotfQotCiBNYWluUmVzb3VyY2VMb2FkZXI6Ok1haW5SZXNvdXJj
ZUxvYWRlcihGcmFtZSogZnJhbWUpCiAgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwg
QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFs
cywgU2tpcFNlY3VyaXR5Q2hlY2spKQogICAgICwgbV9kYXRhTG9hZFRpbWVyKHRoaXMsICZNYWlu
UmVzb3VyY2VMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdykKQEAgLTMzOCwxMyAr
MzMzLDEwIEBACiAgICAgaWYgKCFyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHIpOwogCi0gICAgaWYgKGZyYW1lTG9hZGVy
KCkgJiYgIWZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBpbmco
KSkgewotICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKLSAgICAgICAg
ICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpKQotICAgICAgICAgICAg
ICAgIGRpZFJlY2VpdmVEYXRhKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5kYXRhKCksIG1f
c3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0ZURhdGEuY29udGVu
dCgpLT5zaXplKCksIHRydWUpOwotICAgICAgICAgICAgaWYgKGZyYW1lTG9hZGVyKCkgJiYgIWZy
YW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBpbmcoKSkgCi0gICAg
ICAgICAgICAgICAgZGlkRmluaXNoTG9hZGluZygwKTsKLSAgICAgICAgfSBlbHNlIGlmIChzaG91
bGRMb2FkQXNFbXB0eURvY3VtZW50KHVybCkgfHwgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPnJl
cHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKHVybC5wcm90b2NvbCgpKSkKKyAgICBpZiAo
ZnJhbWVMb2FkZXIoKSAmJiAhZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
aXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgICAgIGlm
IChtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpKQorICAgICAgICAgICAgZGlkUmVj
ZWl2ZURhdGEobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmRhdGEoKSwgbV9zdWJzdGl0dXRl
RGF0YS5jb250ZW50KCktPnNpemUoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUo
KSwgdHJ1ZSk7CisgICAgICAgIGlmIChmcmFtZUxvYWRlcigpICYmICFmcmFtZUxvYWRlcigpLT5h
Y3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpIAogICAgICAgICAgICAgZGlkRmlu
aXNoTG9hZGluZygwKTsKICAgICB9CiB9CkBAIC0zODUsNyArMzc3LDcgQEAKICAgICAvLyBUaGVy
ZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVk
IGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCiAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxl
bS82MzA0NjAwPiBmb3IgbW9yZSBkZXRhaWxzLgogI2lmICFVU0UoQ0YpCi0gICAgQVNTRVJUKHNo
b3VsZExvYWRBc0VtcHR5RG9jdW1lbnQoci51cmwoKSkgfHwgIWRlZmVyc0xvYWRpbmcoKSk7Cisg
ICAgQVNTRVJUKCFkZWZlcnNMb2FkaW5nKCkpOwogI2VuZGlmCiAKICAgICBpZiAobV9sb2FkaW5n
TXVsdGlwYXJ0Q29udGVudCkgewpAQCAtNTAwLDcgKzQ5Miw3IEBACiAgICAgLy8gVGhlcmUgaXMg
YSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxiYWNrcyBjYW4gYmUgZGlzcGF0Y2hlZCBldmVu
IHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgogICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNjMw
NDYwMD4gZm9yIG1vcmUgZGV0YWlscy4KICNpZiAhVVNFKENGKQotICAgIEFTU0VSVChzaG91bGRM
b2FkQXNFbXB0eURvY3VtZW50KGZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkt
PnVybCgpKSB8fCAhZGVmZXJzTG9hZGluZygpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aXNEZWJ1Z2dlclBhdXNlZChtX2ZyYW1lLmdldCgpKSk7CisgICAgQVNTRVJUKCFkZWZlcnNMb2Fk
aW5nKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0RlYnVnZ2VyUGF1c2VkKG1fZnJh
bWUuZ2V0KCkpKTsKICNlbmRpZgogCiAgICAgLy8gVGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBj
YW4gZG8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IHJlbW92aW5nIHRoZSBsYXN0CkBAIC01
NjEsMTggKzU1Myw2IEBACiAgICAgaW5mby5hZGRNZW1iZXIobV9kYXRhTG9hZFRpbWVyKTsKIH0K
IAotdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZUVtcHR5TG9hZChjb25zdCBLVVJMJiB1
cmwsIGJvb2wgZm9yVVJMU2NoZW1lKQotewotICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBpZiAo
Zm9yVVJMU2NoZW1lKQotICAgICAgICBtaW1lVHlwZSA9IGZyYW1lTG9hZGVyKCktPmNsaWVudCgp
LT5nZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZSh1cmwucHJvdG9jb2woKSk7Ci0gICAgZWxz
ZQotICAgICAgICBtaW1lVHlwZSA9ICJ0ZXh0L2h0bWwiOwotICAgIAotICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UodXJsLCBtaW1lVHlwZSwgMCwgU3RyaW5nKCksIFN0cmluZygpKTsKLSAg
ICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotfQotCiB2b2lkIE1haW5SZXNvdXJjZUxv
YWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KE1haW5SZXNvdXJjZUxvYWRlclRpbWVy
KikKIHsKICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwpAQCAt
NjA5LDMwICs1ODksMTEgQEAKICAgICAgICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KDAp
OwogfQogCi1ib29sIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZE5vdyhSZXNvdXJjZVJlcXVlc3Qm
IHIpCit2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZE5vdyhSZXNvdXJjZVJlcXVlc3QmIHIp
CiB7Ci0gICAgYm9vbCBzaG91bGRMb2FkRW1wdHlCZWZvcmVSZWRpcmVjdCA9IHNob3VsZExvYWRB
c0VtcHR5RG9jdW1lbnQoci51cmwoKSk7Ci0KICAgICBBU1NFUlQoIW1faGFuZGxlKTsKLSAgICBB
U1NFUlQoc2hvdWxkTG9hZEVtcHR5QmVmb3JlUmVkaXJlY3QgfHwgIWRlZmVyc0xvYWRpbmcoKSk7
CisgICAgQVNTRVJUKCFkZWZlcnNMb2FkaW5nKCkpOwogCi0gICAgLy8gU2VuZCB0aGlzIHN5bnRo
ZXRpYyBkZWxlZ2F0ZSBjYWxsYmFjayBzaW5jZSBjbGllbnRzIGV4cGVjdCBpdCwgYW5kCi0gICAg
Ly8gd2Ugbm8gbG9uZ2VyIHNlbmQgdGhlIGNhbGxiYWNrIGZyb20gd2l0aGluIE5TVVJMQ29ubmVj
dGlvbiBmb3IKLSAgICAvLyBpbml0aWFsIHJlcXVlc3RzLgotICAgIHdpbGxTZW5kUmVxdWVzdChy
LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwotICAgIEFTU0VSVCghZGVsZXRpb25IYXNCZWd1bigpKTsK
LQotICAgIC8vIDxyZGFyOi8vcHJvYmxlbS80ODAxMDY2PgotICAgIC8vIHdpbGxTZW5kUmVxdWVz
dCgpIGlzIGxpYWJsZSB0byBtYWtlIHRoZSBjYWxsIHRvIGZyYW1lTG9hZGVyKCkgcmV0dXJuIE5V
TEwsIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCBoZXJlCi0gICAgaWYgKCFmcmFtZUxvYWRlcigp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgY29uc3QgS1VSTCYgdXJsID0gci51
cmwoKTsKLSAgICBib29sIHNob3VsZExvYWRFbXB0eSA9IHNob3VsZExvYWRBc0VtcHR5RG9jdW1l
bnQodXJsKSAmJiAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCk7Ci0KLSAgICBpZiAoc2hvdWxk
TG9hZEVtcHR5QmVmb3JlUmVkaXJlY3QgJiYgIXNob3VsZExvYWRFbXB0eSAmJiBkZWZlcnNMb2Fk
aW5nKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnJlc291cmNl
TG9hZFNjaGVkdWxlcigpLT5hZGRNYWluUmVzb3VyY2VMb2FkKHRoaXMpOwogI2Vsc2UKQEAgLTY0
MSwxMiArNjAyLDEwIEBACiAKICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAg
ICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24ocik7Ci0gICAgZWxzZSBpZiAoc2hv
dWxkTG9hZEVtcHR5IHx8IGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5yZXByZXNlbnRhdGlvbkV4
aXN0c0ZvclVSTFNjaGVtZSh1cmwucHJvdG9jb2woKSkpCi0gICAgICAgIGhhbmRsZUVtcHR5TG9h
ZCh1cmwsICFzaG91bGRMb2FkRW1wdHkpOwogICAgIGVsc2UKICAgICAgICAgbV9oYW5kbGUgPSBS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKG1fZnJhbWUtPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4
dCgpLCByLCB0aGlzLCBmYWxzZSwgdHJ1ZSk7CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuOwogfQogCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKQEAgLTY2NCwy
MyArNjIzLDI2IEBACiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPm1hcmtGZXRjaFN0
YXJ0KCk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qocik7CiAKLSAgICBkb2N1bWVudExv
YWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRNYWluUmVzb3VyY2UocmVx
dWVzdCwgbV9zdWJzdGl0dXRlRGF0YSk7CisgICAgLy8gU2VuZCB0aGlzIHN5bnRoZXRpYyBkZWxl
Z2F0ZSBjYWxsYmFjayBzaW5jZSBjbGllbnRzIGV4cGVjdCBpdCwgYW5kCisgICAgLy8gd2Ugbm8g
bG9uZ2VyIHNlbmQgdGhlIGNhbGxiYWNrIGZyb20gd2l0aGluIE5TVVJMQ29ubmVjdGlvbiBmb3IK
KyAgICAvLyBpbml0aWFsIHJlcXVlc3RzLgorICAgIHdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIEFTU0VSVCghZGVsZXRpb25IYXNCZWd1bigpKTsKIAot
ICAgIGJvb2wgZGVmZXIgPSBkZWZlcnNMb2FkaW5nKCk7Ci0gICAgaWYgKGRlZmVyKSB7Ci0gICAg
ICAgIGJvb2wgc2hvdWxkTG9hZEVtcHR5ID0gc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChyZXF1
ZXN0LnVybCgpKTsKLSAgICAgICAgaWYgKHNob3VsZExvYWRFbXB0eSkKLSAgICAgICAgICAgIGRl
ZmVyID0gZmFsc2U7CisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzQ4MDEwNjY+CisgICAgLy8gd2ls
bFNlbmRSZXF1ZXN0KCkgaXMgbGlhYmxlIHRvIG1ha2UgdGhlIGNhbGwgdG8gZnJhbWVMb2FkZXIo
KSByZXR1cm4gbnVsbCwgc28gd2UgbmVlZCB0byBjaGVjayB0aGF0IGhlcmUKKyAgICBpZiAoIWZy
YW1lTG9hZGVyKCkgfHwgcmVxdWVzdC5pc051bGwoKSkgeworICAgICAgICBpZiAoIXJlYWNoZWRU
ZXJtaW5hbFN0YXRlKCkpCisgICAgICAgICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CisgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFkZWZlcikgewotICAgICAgICBpZiAobG9hZE5vdyhy
ZXF1ZXN0KSkgewotICAgICAgICAgICAgLy8gU3RhcnRlZCBhcyBhbiBlbXB0eSBkb2N1bWVudCwg
YnV0IHdhcyByZWRpcmVjdGVkIHRvIHNvbWV0aGluZyBub24tZW1wdHkuCi0gICAgICAgICAgICBB
U1NFUlQoZGVmZXJzTG9hZGluZygpKTsKLSAgICAgICAgICAgIGRlZmVyID0gdHJ1ZTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBpZiAoZGVmZXIpCisKKyAgICBkb2N1bWVudExvYWRlcigpLT5hcHBs
aWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRNYWluUmVzb3VyY2UocmVxdWVzdCwgbV9zdWJz
dGl0dXRlRGF0YSk7CisKKyAgICBpZiAoZGVmZXJzTG9hZGluZygpKQogICAgICAgICBtX2luaXRp
YWxSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBlbHNlCisgICAgICAgIGxvYWROb3cocmVxdWVzdCk7
CiB9CiAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVm
ZXJzKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZp
c2lvbiAxMzQ4MDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiTWFpblJlc291cmNl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgi
CisjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCkBAIC05Nyw2ICs5OCw3IEBACiAgICAgLCBtX2lzU3RvcHBpbmcoZmFs
c2UpCiAgICAgLCBtX2dvdEZpcnN0Qnl0ZShmYWxzZSkKICAgICAsIG1faXNDbGllbnRSZWRpcmVj
dChmYWxzZSkKKyAgICAsIG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQoZmFsc2UpCiAgICAgLCBtX3dh
c09ubG9hZEhhbmRsZWQoZmFsc2UpCiAgICAgLCBtX3N0b3BSZWNvcmRpbmdSZXNwb25zZXMoZmFs
c2UpCiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIodGhpcywgJkRvY3Vt
ZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQpCkBAIC0xMTQs
NyArMTE2LDcgQEAKIAogRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVudExvYWRlcigpCiB7Ci0gICAg
QVNTRVJUKCFtX2ZyYW1lIHx8IGZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkg
IT0gdGhpcyB8fCAhZnJhbWVMb2FkZXIoKS0+aXNMb2FkaW5nKCkpOworICAgIEFTU0VSVCghbV9m
cmFtZSB8fCBmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpICE9IHRoaXMgfHwg
IWlzTG9hZGluZygpKTsKICAgICBpZiAobV9pY29uTG9hZERlY2lzaW9uQ2FsbGJhY2spCiAgICAg
ICAgIG1faWNvbkxvYWREZWNpc2lvbkNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgaWYgKG1f
aWNvbkRhdGFDYWxsYmFjaykKQEAgLTI4NSw3ICsyODcsNyBAQAogdm9pZCBEb2N1bWVudExvYWRl
cjo6ZmluaXNoZWRMb2FkaW5nKCkKIHsKICAgICBjb21taXRJZlJlYWR5KCk7Ci0gICAgaWYgKCFm
cmFtZUxvYWRlcigpIHx8IGZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLT5jcmVhdGluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCkpCisgICAgaWYgKCFmcmFtZUxvYWRlcigpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIW1heWJlQ3JlYXRlQXJjaGl2ZSgpKSB7CkBAIC0zMDAsNyArMzAy
LDggQEAKICAgICBpZiAoIW1fbWFpbkRvY3VtZW50RXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBjbGVhck1haW5SZXNvdXJjZUxvYWRlcigpOwotICAgIGZyYW1lTG9hZGVyKCkt
PmNoZWNrTG9hZENvbXBsZXRlKCk7CisgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hp
bmUoKS0+Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQorICAgICAgICBmcmFtZUxvYWRl
cigpLT5jaGVja0xvYWRDb21wbGV0ZSgpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjb21t
aXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCkBAIC00NDksNiArNDUyLDcgQEAK
ICAgICAgICAgbV9tYWluUmVzb3VyY2VEYXRhID0gbV9tYWluUmVzb3VyY2VMb2FkZXItPnJlc291
cmNlRGF0YSgpOwogICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlciA9IDA7CiAgICAgfQorICAg
IG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQgPSBmYWxzZTsKIAogICAgIGlmICh0aGlzID09IGZyYW1l
TG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgIGNoZWNrTG9hZENvbXBs
ZXRlKCk7CkBAIC00NjMsNyArNDY3LDcgQEAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IAogICAgICAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAg
aWYgKChtX21haW5SZXNvdXJjZUxvYWRlciB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bG9hZEV2
ZW50RmluaXNoZWQoKSkgJiYgaXNMb2FkaW5nKCkpCisgICAgICAgIGlmICgoaXNMb2FkaW5nTWFp
blJlc291cmNlKCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPmxvYWRFdmVudEZpbmlzaGVkKCkp
ICYmIGlzTG9hZGluZygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICht
X2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0Q291bnQoKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtODMwLDcgKzgzNCw3IEBACiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9h
ZGluZ01haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEhbV9tYWluUmVzb3VyY2VM
b2FkZXI7CisgICAgcmV0dXJuICEhbV9tYWluUmVzb3VyY2VMb2FkZXIgfHwgbV9sb2FkaW5nRW1w
dHlEb2N1bWVudDsKIH0KIAogYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCgpIGNvbnN0CkBAIC04NDMsMTcgKzg0Nyw0MSBAQAogICAgIHJldHVybiBpc0xvYWRp
bmdNdWx0aXBhcnRDb250ZW50KCkgJiYgZnJhbWVMb2FkZXIoKS0+aXNSZXBsYWNpbmcoKTsKIH0K
IAorYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQoreworICAgIGJvb2wgc2hv
dWxkTG9hZEVtcHR5ID0gIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmIChtX3JlcXVlc3Qu
dXJsKCkuaXNFbXB0eSgpIHx8IFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRMb2FkVVJMU2NoZW1lQXNF
bXB0eURvY3VtZW50KG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbCgpKSk7CisgICAgaWYgKCFzaG91
bGRMb2FkRW1wdHkgJiYgIWZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5yZXByZXNlbnRhdGlvbkV4
aXN0c0ZvclVSTFNjaGVtZShtX3JlcXVlc3QudXJsKCkucHJvdG9jb2woKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQgPSB0cnVlOworICAgIGlm
IChzaG91bGRMb2FkRW1wdHkgJiYgIWZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLT5jcmVh
dGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpCisgICAgICAgIG1fcmVxdWVzdC5zZXRVUkwoYmxh
bmtVUkwoKSk7CisgICAgU3RyaW5nIG1pbWVUeXBlID0gc2hvdWxkTG9hZEVtcHR5ID8gInRleHQv
aHRtbCIgOiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxT
Y2hlbWUobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sKCkpOworICAgIHNldFJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UobV9yZXF1ZXN0LnVybCgpLCBtaW1lVHlwZSwgMCwgU3RyaW5nKCksIFN0cmlu
ZygpKSk7CisgICAgZmluaXNoZWRMb2FkaW5nKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpCiB7CiAgICAgbV9t
YWluRG9jdW1lbnRFcnJvciA9IFJlc291cmNlRXJyb3IoKTsKICAgICB0aW1pbmcoKS0+bWFya05h
dmlnYXRpb25TdGFydCgpOwogICAgIEFTU0VSVCghbV9tYWluUmVzb3VyY2VMb2FkZXIpOworCisg
ICAgaWYgKG1heWJlTG9hZEVtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fbWFpblJl
c291cmNlTG9hZGVyID0gTWFpblJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9mcmFtZSk7CiAKICAg
ICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IHdheSB0aGUgZXh0cmEgZmllbGRzIGNvdWxkIGhhdmUg
bm90IGJlZW4gYWRkZWQgYnkgbm93PwogICAgIC8vIElmIG5vdCwgaXQgd291bGQgYmUgZ3JlYXQg
dG8gcmVtb3ZlIHRoaXMgbGluZSBvZiBjb2RlLgogICAgIGZyYW1lTG9hZGVyKCktPmFkZEV4dHJh
RmllbGRzVG9NYWluUmVzb3VyY2VSZXF1ZXN0KG1fcmVxdWVzdCk7CiAgICAgbV9tYWluUmVzb3Vy
Y2VMb2FkZXItPmxvYWQobV9yZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsKKworICAgIGlmICht
X3JlcXVlc3QuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXIgPSAwOwor
ICAgICAgICBtYXliZUxvYWRFbXB0eSgpOworICAgIH0KIH0KIAogdm9pZCBEb2N1bWVudExvYWRl
cjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5l
LmNwcAkocmV2aXNpb24gMTM0ODAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyU3RhdGVNYWNoaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiAg
ICAgCiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZTo6RnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUoKSAK
LSAgICA6IG1fc3RhdGUoVW5pbml0aWFsaXplZCkKKyAgICA6IG1fc3RhdGUoQ3JlYXRpbmdJbml0
aWFsRW1wdHlEb2N1bWVudCkKIHsgCiB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MzQ5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw0MyBAQAorMjAxMi0xMS0xNiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIE1vdmUgZW1wdHkgbG9hZGluZyB0byBEb2N1bWVudExvYWRlciwgc2ltcGxp
ZnkgRnJhbWVMb2FkZXI6OmluaXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAxNTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aG91Z2ggc2V2ZXJhbCBvdXRwdXRzIGNoYW5n
ZWQgYmVjYXVzZSB3ZSBubyBsb25nZXIgc2VuZCByZXNvdXJjZQorICAgICAgICAgICAgbG9hZCBj
YWxsYmFja3MgZm9yIGVtcHR5IGxvYWRzLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdJbkFQSVNlbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdNYWluUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0
TG9hZGluZ01haW5SZXNvdXJjZSk6IEhhbmRsZSBlbXB0eSBtYWluIHJlc291cmNlCisgICAgICAg
ICAgICAgbG9hZHMgZGlyZWN0bHkgaGVyZS4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaDoKKyAgICAgICAgKERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKTog
SW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMKKyAgICAgICAgICAgIHdlcmUg
cHJldmlvdXNseSBiZWluZyByZXNldCBpbiBpbml0KCkuIEdpdmVuIHRoYXQgdGhlIEZyYW1lTG9h
ZGVyIGlzIGluCisgICAgICAgICAgICBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgYmVmb3JlIGluaXQo
KSBpcyBjYWxsZWQgYW55d2F5LCB0aGVyZSBkb2Vzbid0IHNlZW0KKyAgICAgICAgICAgIHRvIGJl
IGEgZGlzYWR2YW50YWdlIHRvIGp1c3QgaW5pdGlhbGl6aW5nIHRoZW0gdG8gdGhlaXIgcG9zdC1p
bml0KCkgdmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOiBKdXN0
IGNhbGwgc3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCksIGluc3RlYWQgb2YKKyAgICAgICAgICAg
IGRvaW5nIGEgYnVuY2ggb2YgZGlyZWN0IGNhbGxzIHRvIGZ1bmN0aW9ucyBGcmFtZUxvYWRlciBz
aG91bGRuJ3Qga25vdyBhYm91dC4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1h
Y2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkZy
YW1lTG9hZGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJTdGF0
ZU1hY2hpbmUuaDoKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDogVGhy
b3VnaG91dCwgcmVtb3ZlIHRoZSBjb25jZXB0IG9mIGFuIGVtcHR5IGxvYWQuCisgICAgICAgIChX
ZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWROb3cpOiBUaGlzIG9ubHkgcmV0dXJuZWQg
dHJ1ZSB3aGVuIGFuIGVtcHR5CisgICAgICAgICAgICBsb2FkIGdvdCBkZWZlcnJlZCwgd2hpY2gg
d29uJ3QgaGFwcGVuIG5vdy4gUmV0dXJuIHZvaWQgYW5kIGFsd2F5cyB0cmVhdAorICAgICAgICAg
ICAgYXMgcmV0dXJuaW5nIGZhbHNlLgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKE1haW5SZXNvdXJjZUxvYWRlcik6CisKIDIwMTItMTEtMTYgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMzQ4NjcuCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzQ5NzkpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAx
Mi0xMS0xNiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1v
dmUgZW1wdHkgbG9hZGluZyB0byBEb2N1bWVudExvYWRlciwgc2ltcGxpZnkgRnJhbWVMb2FkZXI6
OmluaXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAxNTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RG9uJ3QgZXhwZWN0IHJlc291cmNlIGxvYWQgY2FsbGJhY2tzIGZvciBlbXB0eSBsb2Fkcy4KKwor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1pZnJhbWUtbG9h
ZC1hbmQtZGVsZXRlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0
LW1ldGhvZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvWEZy
YW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9u
cy1kZW55LW1ldGEtdGFnLWluLWJvZHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1w
YXJlbnQtc2FtZS1vcmlnaW4tZGVueS1leHBlY3RlZC50eHQ6CisKIDIwMTItMTEtMTYgIERpbWl0
cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1d
IGFkanVzdGluZyBleHBlY3RhdGlvbnMgZm9yIGNoZWNrZXJib2FyZC5odG1sCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQt
YW5kLWRlbGV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1pZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0bWwJKHJldmlz
aW9uIDEzNDgwMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1pZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDcgKzQzLDcgQEAKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHZhciBy
ZXF1ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3Bl
Y3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDNdOworICAgICAgICB2YXIg
cmVxdWVzdDEgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNw
ZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5ndGggLSAyXTsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVzdDEudXJsKTsKICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXF1ZXN0MS50eXBlKTsKICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3Rp
bmcgY29udGVudDogIiArIHJlcXVlc3QxLmNvbnRlbnQpOwpAQCAtNTIsNyArNTIsNyBAQAogCiAg
ICAgZnVuY3Rpb24gc3RlcDMoKQogICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5z
cGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3
b3JrIikucmVxdWVzdHMubGVuZ3RoIC0gM107CisgICAgICAgIHZhciByZXF1ZXN0MSA9IFdlYklu
c3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbCgibmV0
d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDJdOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXF1
ZXN0MS5jb250ZW50KTsKIAogICAgICAgICB2YXIgcmVxdWVzdDIgPSBXZWJJbnNwZWN0b3IucGFu
ZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1
ZXN0cy5sZW5ndGggLSAxXTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
WEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hG
cmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDEzNDgwMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDYgQEAKIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMt
ZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1pbi1ib2R5Lmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2Ug
PE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlv
bnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLWluLWJv
ZHkuaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10
YWctc3ViZnJhbWUtaW4tYm9keS5odG1sIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vy
cm9yIGRvbWFpbiBOU1VSTEVycm9yRG9tYWluLCBjb2RlIC05OTksIGZhaWxpbmcgVVJMICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFt
ZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtaW4tYm9keS5odG1sIj4KIENPTlNPTEUg
TUVTU0FHRTogUmVmdXNlZCB0byBkaXNwbGF5ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWct
c3ViZnJhbWUtaW4tYm9keS5odG1sJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1l
LU9wdGlvbnMnIHRvICdkZW55Jy4KLWFib3V0OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VS
TFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRh
LXRhZy1pbi1ib2R5Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVs
bCkKLWFib3V0OmJsYW5rIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGFib3V0
OmJsYW5rLCBodHRwIHN0YXR1cyBjb2RlIDA+CiBUaGVyZSBzaG91bGQgYmUgbm8gY29udGVudCBp
biB0aGUgaWZyYW1lIGJlbG93CiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxMzQ4MDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9w
dGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0zLDggKzMsNiBAQAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hG
cmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZy
YW1lLmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9u
cy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJh
bWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLmh0bWwgLSBkaWRGYWlsTG9hZGluZ1dp
dGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIE5TVVJMRXJyb3JEb21haW4sIGNvZGUgLTk5OSwgZmFp
bGluZyBVUkwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jl
c291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS5odG1sIj4KIENP
TlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBkaXNwbGF5ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0
YS10YWctc3ViZnJhbWUuaHRtbCcgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1P
cHRpb25zJyB0byAnZGVueScuCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxS
ZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10
YWcuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6
YmxhbmsgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0
dHAgc3RhdHVzIGNvZGUgMD4KIFRoZXJlIHNob3VsZCBiZSBubyBjb250ZW50IGluIHRoZSBpZnJh
bWUgYmVsb3cKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2lu
LWRlbnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1wYXJl
bnQtc2FtZS1vcmlnaW4tZGVueS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzNDgwMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlv
bnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTMsOCArMyw2IEBACiBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJp
dHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWct
c3ViZnJhbWUtcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25z
ZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0
aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtcGFy
ZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CiBodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1v
cHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRt
bCAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gTlNVUkxFcnJvckRv
bWFpbiwgY29kZSAtOTk5LCBmYWlsaW5nIFVSTCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFn
LXN1YmZyYW1lLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwiPgogQ09OU09MRSBNRVNTQUdF
OiBSZWZ1c2VkIHRvIGRpc3BsYXkgJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9YRnJh
bWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFt
ZS1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0
ICdYLUZyYW1lLU9wdGlvbnMnIHRvICdzYW1lb3JpZ2luJy4KLWFib3V0OmJsYW5rIC0gd2lsbFNl
bmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBtYWluIGRvY3VtZW50IFVS
TCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9w
dGlvbnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sLCBodHRwIG1l
dGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91dDpibGFuayAtIGRpZFJlY2Vp
dmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFuaywgaHR0cCBzdGF0dXMgY29kZSAw
PgogVGhlcmUgc2hvdWxkIGJlIG5vIGNvbnRlbnQgaW4gdGhlIGlmcmFtZSBiZWxvdwogCiAKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVk
aXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzNDgwMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNSwxMyArNSwxMCBAQAogbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRG
b3JGcmFtZQogPHVua25vd24+IC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjAiIC0gZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSB3aWxsU2VuZFJlcXVlc3Qg
PE5TVVJMUmVxdWVzdCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2Qg
R0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZlUmVz
cG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUgMD4KIGZy
YW1lICIwIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjAiIC0gZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZy
YW1lCiBmcmFtZSAiMCIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWFib3V0OmJsYW5rIC0gZGlk
RmluaXNoTG9hZGluZwogZnJhbWUgIjAiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1mb3JtLmh0bWwgCiBmcmFtZSAiMCIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1mb3JtLmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1s
LCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVj
dC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkK
QEAgLTMyLDEzICsyOSwxMCBAQAogZnJhbWUgIjAiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBm
cmFtZSAiMCIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSB3aWxsU2VuZFJlcXVl
c3QgPE5TVVJMUmVxdWVzdCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRo
b2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZl
UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUgMD4K
IGZyYW1lICIxIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWFib3V0OmJsYW5rIC0g
ZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjEiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRv
VVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0
aG9kcy1mb3JtLmh0bWwgCiBmcmFtZSAiMCIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFt
ZQogZnJhbWUgIjAiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCkBAIC02MiwxMyArNTYsMTAgQEAK
IGZyYW1lICIxIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUKLWFib3V0OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJM
IGFib3V0OmJsYW5rLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9h
ZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNw
b25zZSAobnVsbCkKLWFib3V0OmJsYW5rIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3Bv
bnNlIGFib3V0OmJsYW5rLCBodHRwIHN0YXR1cyBjb2RlIDA+CiBmcmFtZSAiMiIgLSBkaWRDb21t
aXRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
CiBmcmFtZSAiMiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjIiIC0g
ZGlkRmluaXNoTG9hZEZvckZyYW1lCi1hYm91dDpibGFuayAtIGRpZEZpbmlzaExvYWRpbmcKIGZy
YW1lICIyIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIAogZnJh
bWUgIjEiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEZp
bmlzaExvYWRGb3JGcmFtZQpAQCAtOTIsMTMgKzgzLDEwIEBACiBmcmFtZSAiMiIgLSBkaWRDb21t
aXRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
CiBmcmFtZSAiMyIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCi1hYm91dDpibGFu
ayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBk
b2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9k
cy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91dDpi
bGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFuaywgaHR0
cCBzdGF0dXMgY29kZSAwPgogZnJhbWUgIjMiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFt
ZSAiMyIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIzIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZQotYWJvdXQ6YmxhbmsgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMyIgLSB3aWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAKIGZyYW1lICIyIiAtIGRpZEhhbmRsZU9u
bG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJl
dmlzaW9uIDEzNDgwMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyOCw3ICsxNjI4LDggQEAKIHsKICAgICAvLyBD
b2RlIGR1cGxpY2F0ZWQgZnJvbSBSZW5kZXJWaWV3OjpEaWRDb21taXRMb2FkRm9yRnJhbWUuCiAg
ICAgVGVzdFNoZWxsRXh0cmFEYXRhKiBleHRyYURhdGEgPSBzdGF0aWNfY2FzdDxUZXN0U2hlbGxF
eHRyYURhdGEqPihmcmFtZS0+ZGF0YVNvdXJjZSgpLT5leHRyYURhdGEoKSk7Ci0gICAgYm9vbCBu
b25CbGFua1BhZ2VBZnRlclJlc2V0ID0gbV9wYWdlSWQgPT0gLTEgJiYgc3RyY21wKGZyYW1lLT5k
YXRhU291cmNlKCktPnJlcXVlc3QoKS51cmwoKS5zcGVjKCkuZGF0YSgpLCAiYWJvdXQ6Ymxhbmsi
KTsKKyAgICBjb25zdCBXZWJVUkwmIHVybCA9IGZyYW1lLT5kYXRhU291cmNlKCktPnJlcXVlc3Qo
KS51cmwoKTsKKyAgICBib29sIG5vbkJsYW5rUGFnZUFmdGVyUmVzZXQgPSBtX3BhZ2VJZCA9PSAt
MSAmJiAhdXJsLmlzRW1wdHkoKSAmJiBzdHJjbXAodXJsLnNwZWMoKS5kYXRhKCksICJhYm91dDpi
bGFuayIpOwogCiAgICAgaWYgKGlzTmV3TmF2aWdhdGlvbiB8fCBub25CbGFua1BhZ2VBZnRlclJl
c2V0KSB7CiAgICAgICAgIC8vIE5ldyBuYXZpZ2F0aW9uLgpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTM0OTc5KQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEtMTYg
IE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIGVtcHR5
IGxvYWRpbmcgdG8gRG9jdW1lbnRMb2FkZXIsIHNpbXBsaWZ5IEZyYW1lTG9hZGVyOjppbml0KCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUxMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9taXVt
IERSVCBoYXMgc29tZSBjb2RlIHRoYXQgZG9lc24ndCBwbGF5IG5pY2VseSB3aXRoIGVtcHR5IHVy
bHMgYW5kIGluY29ycmVjdGx5CisgICAgICAgIGludGVycHJldHMgdGhlbSBhcyBhIG5vbi1lbXB0
eSBsb2FkLiBUaGlzIGVuc3VyZXMKKyAgICAgICAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL25ldy13
aW5kb3ctcmVkaXJlY3QtaGlzdG9yeS5odG1sIGNvbnRpbnVlcyB0byBwYXNzCisgICAgICAgIGlu
IGNocm9taXVtLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnVwZGF0ZUZvckNvbW1pdHRlZExvYWQpOgor
CiAyMDEyLTExLTE2ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGQgbWlzc2luZyBXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OmRpZEFkZFJlbW90ZURhdGFDaGFubmVsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174779</attachid>
            <date>2012-11-16 16:28:51 -0800</date>
            <delta_ts>2012-11-28 09:58:42 -0800</delta_ts>
            <desc>Fix up some mac failures</desc>
            <filename>empty2.txt</filename>
            <type>text/plain</type>
            <size>30274</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNo
aW5lLmNwcAkocmV2aXNpb24gMTM0ODAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyU3RhdGVNYWNoaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
CiAgICAgCiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZTo6RnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUo
KSAKLSAgICA6IG1fc3RhdGUoVW5pbml0aWFsaXplZCkKKyAgICA6IG1fc3RhdGUoQ3JlYXRpbmdJ
bml0aWFsRW1wdHlEb2N1bWVudCkKIHsgCiB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTM0ODAwKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY3LDExICs2Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wg
c2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChjb25zdCBLVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJu
IHVybC5pc0VtcHR5KCkgfHwgU2NoZW1lUmVnaXN0cnk6OnNob3VsZExvYWRVUkxTY2hlbWVBc0Vt
cHR5RG9jdW1lbnQodXJsLnByb3RvY29sKCkpOwotfQotCiBNYWluUmVzb3VyY2VMb2FkZXI6Ok1h
aW5SZXNvdXJjZUxvYWRlcihGcmFtZSogZnJhbWUpCiAgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFt
ZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVm
ZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5D
cmVkZW50aWFscywgU2tpcFNlY3VyaXR5Q2hlY2spKQogICAgICwgbV9kYXRhTG9hZFRpbWVyKHRo
aXMsICZNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdykKQEAg
LTMzOCwxMyArMzMzLDEwIEBACiAgICAgaWYgKCFyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAg
ICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHIpOwogCi0gICAgaWYgKGZy
YW1lTG9hZGVyKCkgJiYgIWZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlz
U3RvcHBpbmcoKSkgewotICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpKQotICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5k
YXRhKCksIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0ZURh
dGEuY29udGVudCgpLT5zaXplKCksIHRydWUpOwotICAgICAgICAgICAgaWYgKGZyYW1lTG9hZGVy
KCkgJiYgIWZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBpbmco
KSkgCi0gICAgICAgICAgICAgICAgZGlkRmluaXNoTG9hZGluZygwKTsKLSAgICAgICAgfSBlbHNl
IGlmIChzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KHVybCkgfHwgZnJhbWVMb2FkZXIoKS0+Y2xp
ZW50KCktPnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKHVybC5wcm90b2NvbCgpKSkK
KyAgICBpZiAoZnJhbWVMb2FkZXIoKSAmJiAhZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+aXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7Cisg
ICAgICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpKQorICAgICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmRhdGEoKSwgbV9z
dWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50
KCktPnNpemUoKSwgdHJ1ZSk7CisgICAgICAgIGlmIChmcmFtZUxvYWRlcigpICYmICFmcmFtZUxv
YWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpIAogICAgICAgICAg
ICAgZGlkRmluaXNoTG9hZGluZygwKTsKICAgICB9CiB9CkBAIC0zODUsNyArMzc3LDcgQEAKICAg
ICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBiZSBk
aXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCiAgICAgLy8gU2VlIDxyZGFy
Oi8vcHJvYmxlbS82MzA0NjAwPiBmb3IgbW9yZSBkZXRhaWxzLgogI2lmICFVU0UoQ0YpCi0gICAg
QVNTRVJUKHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQoci51cmwoKSkgfHwgIWRlZmVyc0xvYWRp
bmcoKSk7CisgICAgQVNTRVJUKCFkZWZlcnNMb2FkaW5nKCkpOwogI2VuZGlmCiAKICAgICBpZiAo
bV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCkgewpAQCAtNTAwLDcgKzQ5Miw3IEBACiAgICAgLy8g
VGhlcmUgaXMgYSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxiYWNrcyBjYW4gYmUgZGlzcGF0
Y2hlZCBldmVuIHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgogICAgIC8vIFNlZSA8cmRhcjovL3By
b2JsZW0vNjMwNDYwMD4gZm9yIG1vcmUgZGV0YWlscy4KICNpZiAhVVNFKENGKQotICAgIEFTU0VS
VChzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KGZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPnVybCgpKSB8fCAhZGVmZXJzTG9hZGluZygpIHx8IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aXNEZWJ1Z2dlclBhdXNlZChtX2ZyYW1lLmdldCgpKSk7CisgICAgQVNTRVJUKCFk
ZWZlcnNMb2FkaW5nKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0RlYnVnZ2VyUGF1
c2VkKG1fZnJhbWUuZ2V0KCkpKTsKICNlbmRpZgogCiAgICAgLy8gVGhlIGFkZGl0aW9uYWwgcHJv
Y2Vzc2luZyBjYW4gZG8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IHJlbW92aW5nIHRoZSBs
YXN0CkBAIC01NjEsMTggKzU1Myw2IEBACiAgICAgaW5mby5hZGRNZW1iZXIobV9kYXRhTG9hZFRp
bWVyKTsKIH0KIAotdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZUVtcHR5TG9hZChjb25z
dCBLVVJMJiB1cmwsIGJvb2wgZm9yVVJMU2NoZW1lKQotewotICAgIFN0cmluZyBtaW1lVHlwZTsK
LSAgICBpZiAoZm9yVVJMU2NoZW1lKQotICAgICAgICBtaW1lVHlwZSA9IGZyYW1lTG9hZGVyKCkt
PmNsaWVudCgpLT5nZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZSh1cmwucHJvdG9jb2woKSk7
Ci0gICAgZWxzZQotICAgICAgICBtaW1lVHlwZSA9ICJ0ZXh0L2h0bWwiOwotICAgIAotICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UodXJsLCBtaW1lVHlwZSwgMCwgU3RyaW5nKCksIFN0cmlu
ZygpKTsKLSAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotfQotCiB2b2lkIE1haW5S
ZXNvdXJjZUxvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KE1haW5SZXNvdXJjZUxv
YWRlclRpbWVyKikKIHsKICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRo
aXMpOwpAQCAtNjA5LDMwICs1ODksMTEgQEAKICAgICAgICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFM
b2FkTm93KDApOwogfQogCi1ib29sIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZE5vdyhSZXNvdXJj
ZVJlcXVlc3QmIHIpCit2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZE5vdyhSZXNvdXJjZVJl
cXVlc3QmIHIpCiB7Ci0gICAgYm9vbCBzaG91bGRMb2FkRW1wdHlCZWZvcmVSZWRpcmVjdCA9IHNo
b3VsZExvYWRBc0VtcHR5RG9jdW1lbnQoci51cmwoKSk7Ci0KICAgICBBU1NFUlQoIW1faGFuZGxl
KTsKLSAgICBBU1NFUlQoc2hvdWxkTG9hZEVtcHR5QmVmb3JlUmVkaXJlY3QgfHwgIWRlZmVyc0xv
YWRpbmcoKSk7CisgICAgQVNTRVJUKCFkZWZlcnNMb2FkaW5nKCkpOwogCi0gICAgLy8gU2VuZCB0
aGlzIHN5bnRoZXRpYyBkZWxlZ2F0ZSBjYWxsYmFjayBzaW5jZSBjbGllbnRzIGV4cGVjdCBpdCwg
YW5kCi0gICAgLy8gd2Ugbm8gbG9uZ2VyIHNlbmQgdGhlIGNhbGxiYWNrIGZyb20gd2l0aGluIE5T
VVJMQ29ubmVjdGlvbiBmb3IKLSAgICAvLyBpbml0aWFsIHJlcXVlc3RzLgotICAgIHdpbGxTZW5k
UmVxdWVzdChyLCBSZXNvdXJjZVJlc3BvbnNlKCkpOwotICAgIEFTU0VSVCghZGVsZXRpb25IYXNC
ZWd1bigpKTsKLQotICAgIC8vIDxyZGFyOi8vcHJvYmxlbS80ODAxMDY2PgotICAgIC8vIHdpbGxT
ZW5kUmVxdWVzdCgpIGlzIGxpYWJsZSB0byBtYWtlIHRoZSBjYWxsIHRvIGZyYW1lTG9hZGVyKCkg
cmV0dXJuIE5VTEwsIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCBoZXJlCi0gICAgaWYgKCFmcmFt
ZUxvYWRlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgY29uc3QgS1VSTCYg
dXJsID0gci51cmwoKTsKLSAgICBib29sIHNob3VsZExvYWRFbXB0eSA9IHNob3VsZExvYWRBc0Vt
cHR5RG9jdW1lbnQodXJsKSAmJiAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCk7Ci0KLSAgICBp
ZiAoc2hvdWxkTG9hZEVtcHR5QmVmb3JlUmVkaXJlY3QgJiYgIXNob3VsZExvYWRFbXB0eSAmJiBk
ZWZlcnNMb2FkaW5nKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAjaWYgVVNFKFBMQVRGT1JN
X1NUUkFURUdJRVMpCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCkt
PnJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5hZGRNYWluUmVzb3VyY2VMb2FkKHRoaXMpOwogI2Vs
c2UKQEAgLTY0MSwxMiArNjAyLDEwIEBACiAKICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1Zh
bGlkKCkpCiAgICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24ocik7Ci0gICAgZWxz
ZSBpZiAoc2hvdWxkTG9hZEVtcHR5IHx8IGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5yZXByZXNl
bnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSh1cmwucHJvdG9jb2woKSkpCi0gICAgICAgIGhhbmRs
ZUVtcHR5TG9hZCh1cmwsICFzaG91bGRMb2FkRW1wdHkpOwogICAgIGVsc2UKICAgICAgICAgbV9o
YW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKG1fZnJhbWUtPmxvYWRlcigpLT5uZXR3b3Jr
aW5nQ29udGV4dCgpLCByLCB0aGlzLCBmYWxzZSwgdHJ1ZSk7CiAKLSAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuOwogfQogCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkK
QEAgLTY2NCwyMyArNjIzLDI2IEBACiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPm1h
cmtGZXRjaFN0YXJ0KCk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qocik7CiAKLSAgICBk
b2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRNYWluUmVz
b3VyY2UocmVxdWVzdCwgbV9zdWJzdGl0dXRlRGF0YSk7CisgICAgLy8gU2VuZCB0aGlzIHN5bnRo
ZXRpYyBkZWxlZ2F0ZSBjYWxsYmFjayBzaW5jZSBjbGllbnRzIGV4cGVjdCBpdCwgYW5kCisgICAg
Ly8gd2Ugbm8gbG9uZ2VyIHNlbmQgdGhlIGNhbGxiYWNrIGZyb20gd2l0aGluIE5TVVJMQ29ubmVj
dGlvbiBmb3IKKyAgICAvLyBpbml0aWFsIHJlcXVlc3RzLgorICAgIHdpbGxTZW5kUmVxdWVzdChy
ZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIEFTU0VSVCghZGVsZXRpb25IYXNCZWd1
bigpKTsKIAotICAgIGJvb2wgZGVmZXIgPSBkZWZlcnNMb2FkaW5nKCk7Ci0gICAgaWYgKGRlZmVy
KSB7Ci0gICAgICAgIGJvb2wgc2hvdWxkTG9hZEVtcHR5ID0gc2hvdWxkTG9hZEFzRW1wdHlEb2N1
bWVudChyZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgaWYgKHNob3VsZExvYWRFbXB0eSkKLSAgICAg
ICAgICAgIGRlZmVyID0gZmFsc2U7CisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzQ4MDEwNjY+Cisg
ICAgLy8gd2lsbFNlbmRSZXF1ZXN0KCkgaXMgbGlhYmxlIHRvIG1ha2UgdGhlIGNhbGwgdG8gZnJh
bWVMb2FkZXIoKSByZXR1cm4gbnVsbCwgc28gd2UgbmVlZCB0byBjaGVjayB0aGF0IGhlcmUKKyAg
ICBpZiAoIWZyYW1lTG9hZGVyKCkgfHwgcmVxdWVzdC5pc051bGwoKSkgeworICAgICAgICBpZiAo
IXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgICAgICByZWxlYXNlUmVzb3VyY2VzKCk7
CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFkZWZlcikgewotICAgICAgICBpZiAo
bG9hZE5vdyhyZXF1ZXN0KSkgewotICAgICAgICAgICAgLy8gU3RhcnRlZCBhcyBhbiBlbXB0eSBk
b2N1bWVudCwgYnV0IHdhcyByZWRpcmVjdGVkIHRvIHNvbWV0aGluZyBub24tZW1wdHkuCi0gICAg
ICAgICAgICBBU1NFUlQoZGVmZXJzTG9hZGluZygpKTsKLSAgICAgICAgICAgIGRlZmVyID0gdHJ1
ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZGVmZXIpCisKKyAgICBkb2N1bWVudExvYWRl
cigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRNYWluUmVzb3VyY2UocmVxdWVz
dCwgbV9zdWJzdGl0dXRlRGF0YSk7CisKKyAgICBpZiAoZGVmZXJzTG9hZGluZygpKQogICAgICAg
ICBtX2luaXRpYWxSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBlbHNlCisgICAgICAgIGxvYWROb3co
cmVxdWVzdCk7CiB9CiAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5n
KGJvb2wgZGVmZXJzKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCShyZXZpc2lvbiAxMzQ4MDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiTWFp
blJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNl
QnVmZmVyLmgiCisjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXZWJDb3Jl
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCkBAIC05Nyw2ICs5OCw3IEBACiAgICAgLCBtX2lzU3Rv
cHBpbmcoZmFsc2UpCiAgICAgLCBtX2dvdEZpcnN0Qnl0ZShmYWxzZSkKICAgICAsIG1faXNDbGll
bnRSZWRpcmVjdChmYWxzZSkKKyAgICAsIG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQoZmFsc2UpCiAg
ICAgLCBtX3dhc09ubG9hZEhhbmRsZWQoZmFsc2UpCiAgICAgLCBtX3N0b3BSZWNvcmRpbmdSZXNw
b25zZXMoZmFsc2UpCiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIodGhp
cywgJkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQp
CkBAIC0xMTQsNyArMTE2LDcgQEAKIAogRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVudExvYWRlcigp
CiB7Ci0gICAgQVNTRVJUKCFtX2ZyYW1lIHx8IGZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50
TG9hZGVyKCkgIT0gdGhpcyB8fCAhZnJhbWVMb2FkZXIoKS0+aXNMb2FkaW5nKCkpOworICAgIEFT
U0VSVCghbV9mcmFtZSB8fCBmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpICE9
IHRoaXMgfHwgIWlzTG9hZGluZygpKTsKICAgICBpZiAobV9pY29uTG9hZERlY2lzaW9uQ2FsbGJh
Y2spCiAgICAgICAgIG1faWNvbkxvYWREZWNpc2lvbkNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAg
ICAgaWYgKG1faWNvbkRhdGFDYWxsYmFjaykKQEAgLTI4NSw3ICsyODcsNyBAQAogdm9pZCBEb2N1
bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nKCkKIHsKICAgICBjb21taXRJZlJlYWR5KCk7Ci0g
ICAgaWYgKCFmcmFtZUxvYWRlcigpIHx8IGZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLT5j
cmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpCisgICAgaWYgKCFmcmFtZUxvYWRlcigpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1heWJlQ3JlYXRlQXJjaGl2ZSgpKSB7CkBAIC0z
MDAsNyArMzAyLDggQEAKICAgICBpZiAoIW1fbWFpbkRvY3VtZW50RXJyb3IuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBjbGVhck1haW5SZXNvdXJjZUxvYWRlcigpOwotICAgIGZyYW1l
TG9hZGVyKCktPmNoZWNrTG9hZENvbXBsZXRlKCk7CisgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5z
dGF0ZU1hY2hpbmUoKS0+Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQorICAgICAgICBm
cmFtZUxvYWRlcigpLT5jaGVja0xvYWRDb21wbGV0ZSgpOwogfQogCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCkBAIC00NDksNiAr
NDUyLDcgQEAKICAgICAgICAgbV9tYWluUmVzb3VyY2VEYXRhID0gbV9tYWluUmVzb3VyY2VMb2Fk
ZXItPnJlc291cmNlRGF0YSgpOwogICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlciA9IDA7CiAg
ICAgfQorICAgIG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQgPSBmYWxzZTsKIAogICAgIGlmICh0aGlz
ID09IGZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgIGNoZWNr
TG9hZENvbXBsZXRlKCk7CkBAIC00NjMsNyArNDY3LDcgQEAKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIAogICAgICAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsK
LSAgICAgICAgaWYgKChtX21haW5SZXNvdXJjZUxvYWRlciB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+bG9hZEV2ZW50RmluaXNoZWQoKSkgJiYgaXNMb2FkaW5nKCkpCisgICAgICAgIGlmICgoaXNM
b2FkaW5nTWFpblJlc291cmNlKCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPmxvYWRFdmVudEZp
bmlzaGVkKCkpICYmIGlzTG9hZGluZygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGlmIChtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0Q291bnQoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNzY5LDggKzc3Myw2IEBACiAgICAgICAgIHVybCA9IHJlcXVl
c3RVUkwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgdXJsID0gcmVzcG9uc2VV
UkwoKTsKLSAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgdXJsID0gYmxhbmtVUkwoKTsK
ICAgICByZXR1cm4gdXJsOwogfQogCkBAIC04MzAsNyArODMyLDcgQEAKIAogYm9vbCBEb2N1bWVu
dExvYWRlcjo6aXNMb2FkaW5nTWFpblJlc291cmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gISFt
X21haW5SZXNvdXJjZUxvYWRlcjsKKyAgICByZXR1cm4gISFtX21haW5SZXNvdXJjZUxvYWRlciB8
fCBtX2xvYWRpbmdFbXB0eURvY3VtZW50OwogfQogCiBib29sIERvY3VtZW50TG9hZGVyOjppc0xv
YWRpbmdNdWx0aXBhcnRDb250ZW50KCkgY29uc3QKQEAgLTg0MywxNyArODQ1LDQxIEBACiAgICAg
cmV0dXJuIGlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKSAmJiBmcmFtZUxvYWRlcigpLT5pc1Jl
cGxhY2luZygpOwogfQogCitib29sIERvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSgpCit7
CisgICAgYm9vbCBzaG91bGRMb2FkRW1wdHkgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkg
JiYgKG1fcmVxdWVzdC51cmwoKS5pc0VtcHR5KCkgfHwgU2NoZW1lUmVnaXN0cnk6OnNob3VsZExv
YWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sKCkpKTsK
KyAgICBpZiAoIXNob3VsZExvYWRFbXB0eSAmJiAhZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPnJl
cHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbCgp
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9sb2FkaW5nRW1wdHlEb2N1bWVudCA9
IHRydWU7CisgICAgaWYgKG1fcmVxdWVzdC51cmwoKS5pc0VtcHR5KCkgJiYgIWZyYW1lTG9hZGVy
KCktPnN0YXRlTWFjaGluZSgpLT5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpCisgICAg
ICAgIG1fcmVxdWVzdC5zZXRVUkwoYmxhbmtVUkwoKSk7CisgICAgU3RyaW5nIG1pbWVUeXBlID0g
c2hvdWxkTG9hZEVtcHR5ID8gInRleHQvaHRtbCIgOiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+
Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sKCkp
OworICAgIHNldFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXF1ZXN0LnVybCgpLCBtaW1l
VHlwZSwgMCwgU3RyaW5nKCksIFN0cmluZygpKSk7CisgICAgZmluaXNoZWRMb2FkaW5nKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01h
aW5SZXNvdXJjZSgpCiB7CiAgICAgbV9tYWluRG9jdW1lbnRFcnJvciA9IFJlc291cmNlRXJyb3Io
KTsKICAgICB0aW1pbmcoKS0+bWFya05hdmlnYXRpb25TdGFydCgpOwogICAgIEFTU0VSVCghbV9t
YWluUmVzb3VyY2VMb2FkZXIpOworCisgICAgaWYgKG1heWJlTG9hZEVtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKwogICAgIG1fbWFpblJlc291cmNlTG9hZGVyID0gTWFpblJlc291cmNlTG9hZGVy
OjpjcmVhdGUobV9mcmFtZSk7CiAKICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IHdheSB0aGUg
ZXh0cmEgZmllbGRzIGNvdWxkIGhhdmUgbm90IGJlZW4gYWRkZWQgYnkgbm93PwogICAgIC8vIElm
IG5vdCwgaXQgd291bGQgYmUgZ3JlYXQgdG8gcmVtb3ZlIHRoaXMgbGluZSBvZiBjb2RlLgogICAg
IGZyYW1lTG9hZGVyKCktPmFkZEV4dHJhRmllbGRzVG9NYWluUmVzb3VyY2VSZXF1ZXN0KG1fcmVx
dWVzdCk7CiAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPmxvYWQobV9yZXF1ZXN0LCBtX3N1YnN0
aXR1dGVEYXRhKTsKKworICAgIGlmIChtX3JlcXVlc3QuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9t
YWluUmVzb3VyY2VMb2FkZXIgPSAwOworICAgICAgICBtYXliZUxvYWRFbXB0eSgpOworICAgIH0K
IH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlclN0YXRlTWFjaGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlclN0YXRlTWFjaGluZS5oCShyZXZpc2lvbiAxMzQ4MDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNyArNDQsNiBAQAogICAgIC8vIGFsdGVybmF0ZSBiZXR3ZWVuIENvbW1pdHRlZEZpcnN0UmVh
bExvYWQgYW5kIEZpcnN0TGF5b3V0RG9uZS4KICAgICAvLyBPdGhlcndpc2UsIHRoZSBzdGF0ZXMg
b25seSBnbyBkb3duIHRoZSBsaXN0LgogICAgIGVudW0gU3RhdGUgewotICAgICAgICBVbmluaXRp
YWxpemVkLAogICAgICAgICBDcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50LAogICAgICAgICBE
aXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQsCiAgICAgICAgIERpc3BsYXlpbmdJbml0aWFs
RW1wdHlEb2N1bWVudFBvc3RDb21taXQsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFp
blJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01h
aW5SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxMzQ4MDApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDkgKzgxLDgg
QEAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikg
T1ZFUlJJREU7CiAKLSAgICBib29sIGxvYWROb3coUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9p
ZCBsb2FkTm93KFJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgdm9pZCBoYW5kbGVFbXB0eUxvYWQo
Y29uc3QgS1VSTCYsIGJvb2wgZm9yVVJMU2NoZW1lKTsKICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1
dGVEYXRhTG9hZFNvb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBoYW5kbGVT
dWJzdGl0dXRlRGF0YUxvYWROb3coTWFpblJlc291cmNlTG9hZGVyVGltZXIqKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDEzNDgwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNjUsNiArMjY1LDggQEAKICAgICAgICAgdm9pZCBjbGVhckFyY2hpdmVSZXNvdXJjZXMoKTsK
ICNlbmRpZgogCisgICAgICAgIGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKKwogICAgICAgICBib29s
IGlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZGVsaXZl
clN1YnN0aXR1dGVSZXNvdXJjZXNBZnRlckRlbGF5KCk7CkBAIC0zMDcsNiArMzA5LDcgQEAKICAg
ICAgICAgYm9vbCBtX2lzU3RvcHBpbmc7CiAgICAgICAgIGJvb2wgbV9nb3RGaXJzdEJ5dGU7CiAg
ICAgICAgIGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OworICAgICAgICBib29sIG1fbG9hZGluZ0Vt
cHR5RG9jdW1lbnQ7CiAKICAgICAgICAgLy8gRklYTUU6IERvY3VtZW50OjptX3Byb2Nlc3NpbmdM
b2FkRXZlbnQgYW5kIERvY3VtZW50TG9hZGVyOjptX3dhc09ubG9hZEhhbmRsZWQgYXJlIHJvdWdo
bHkgdGhlIHNhbWUKICAgICAgICAgLy8gYW5kIHNob3VsZCBiZSBtZXJnZWQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzNDgwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCwx
NCArMjE0LDE0IEBACiAgICAgLCBtX3N1YmZyYW1lTG9hZGVyKGZyYW1lKQogICAgICwgbV9pY29u
KGZyYW1lKQogICAgICwgbV9taXhlZENvbnRlbnRDaGVja2VyKGZyYW1lKQotICAgICwgbV9zdGF0
ZShGcmFtZVN0YXRlQ29tbWl0dGVkUGFnZSkKKyAgICAsIG1fc3RhdGUoRnJhbWVTdGF0ZVByb3Zp
c2lvbmFsKQogICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRUeXBlU3RhbmRhcmQpCiAgICAgLCBt
X2RlbGVnYXRlSXNIYW5kbGluZ1Byb3Zpc2lvbmFsTG9hZEVycm9yKGZhbHNlKQogICAgICwgbV9x
dWlja1JlZGlyZWN0Q29taW5nKGZhbHNlKQogICAgICwgbV9zZW50UmVkaXJlY3ROb3RpZmljYXRp
b24oZmFsc2UpCiAgICAgLCBtX2luU3RvcEFsbExvYWRlcnMoZmFsc2UpCiAgICAgLCBtX2lzRXhl
Y3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb24oZmFsc2UpCi0gICAgLCBtX2RpZENhbGxJbXBsaWNp
dENsb3NlKGZhbHNlKQorICAgICwgbV9kaWRDYWxsSW1wbGljaXRDbG9zZSh0cnVlKQogICAgICwg
bV93YXNVbmxvYWRFdmVudEVtaXR0ZWQoZmFsc2UpCiAgICAgLCBtX3BhZ2VEaXNtaXNzYWxFdmVu
dEJlaW5nRGlzcGF0Y2hlZChOb0Rpc21pc3NhbCkKICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkK
QEAgLTI1NCwxOSArMjU0LDExIEBACiB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKIHsKICAgICAv
LyBUaGlzIHNvbWV3aGF0IG9kZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZyYW1lIGFuIGluaXRp
YWwgZW1wdHkgZG9jdW1lbnQuCi0gICAgLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoaXMgY291
bGQgYmUgZG9uZSB3aXRoIGV2ZW4gZmV3ZXIgc3RlcHMuCi0gICAgbV9zdGF0ZU1hY2hpbmUuYWR2
YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpDcmVhdGluZ0luaXRpYWxFbXB0eURvY3Vt
ZW50KTsKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihtX2NsaWVudC0+Y3JlYXRlRG9jdW1l
bnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmlu
ZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLmdldCgpKTsKICAgICBzZXRQcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwotICAgIHNldFN0YXRlKEZy
YW1lU3RhdGVQcm92aXNpb25hbCk7Ci0gICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5z
ZXRSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKEtVUkwoKSwgInRleHQvaHRtbCIsIDAsIFN0cmlu
ZygpLCBTdHJpbmcoKSkpOwotICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+ZmluaXNo
ZWRMb2FkaW5nKCk7Ci0gICAgQVNTRVJUKCFtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBtX2Rv
Y3VtZW50TG9hZGVyLT53cml0ZXIoKS0+YmVnaW4oS1VSTCgpLCBmYWxzZSk7Ci0gICAgbV9kb2N1
bWVudExvYWRlci0+d3JpdGVyKCktPmVuZCgpOworICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+Y2FuY2VsUGFyc2luZygpOwogICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhGcmFtZUxv
YWRlclN0YXRlTWFjaGluZTo6RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KTsKLSAgICBt
X2RpZENhbGxJbXBsaWNpdENsb3NlID0gdHJ1ZTsKIAogICAgIG1fbmV0d29ya2luZ0NvbnRleHQg
PSBtX2NsaWVudC0+Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKICAgICBtX3Byb2dyZXNzVHJh
Y2tlciA9IEZyYW1lUHJvZ3Jlc3NUcmFja2VyOjpjcmVhdGUobV9mcmFtZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMzQ5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0xMS0xNiAgTmF0ZSBDaGFwaW4gIDxqYXBo
ZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgZW1wdHkgbG9hZGluZyB0byBEb2N1bWVu
dExvYWRlciwgc2ltcGxpZnkgRnJhbWVMb2FkZXI6OmluaXQoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTEyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aG91Z2ggc2V2ZXJh
bCBvdXRwdXRzIGNoYW5nZWQgYmVjYXVzZSB3ZSBubyBsb25nZXIgc2VuZCByZXNvdXJjZQorICAg
ICAgICAgICAgbG9hZCBjYWxsYmFja3MgZm9yIGVtcHR5IGxvYWRzLgorCisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6fkRv
Y3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpmaW5pc2hl
ZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJl
c291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppc0xvYWRp
bmdJbkFQSVNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppc0xvYWRp
bmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJl
TG9hZEVtcHR5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6IEhhbmRsZSBlbXB0eSBtYWluIHJl
c291cmNlCisgICAgICAgICAgICAgbG9hZHMgZGlyZWN0bHkgaGVyZS4KKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKERvY3VtZW50TG9hZGVyKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OkZyYW1lTG9hZGVyKTogSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMKKyAg
ICAgICAgICAgIHdlcmUgcHJldmlvdXNseSBiZWluZyByZXNldCBpbiBpbml0KCkuIEdpdmVuIHRo
YXQgdGhlIEZyYW1lTG9hZGVyIGlzIGluCisgICAgICAgICAgICBhbiBpbmNvbnNpc3RlbnQgc3Rh
dGUgYmVmb3JlIGluaXQoKSBpcyBjYWxsZWQgYW55d2F5LCB0aGVyZSBkb2Vzbid0IHNlZW0KKyAg
ICAgICAgICAgIHRvIGJlIGEgZGlzYWR2YW50YWdlIHRvIGp1c3QgaW5pdGlhbGl6aW5nIHRoZW0g
dG8gdGhlaXIgcG9zdC1pbml0KCkgdmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmluaXQpOiBKdXN0IGNhbGwgc3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCksIGluc3RlYWQg
b2YKKyAgICAgICAgICAgIGRvaW5nIGEgYnVuY2ggb2YgZGlyZWN0IGNhbGxzIHRvIGZ1bmN0aW9u
cyBGcmFtZUxvYWRlciBzaG91bGRuJ3Qga25vdyBhYm91dC4KKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJT
dGF0ZU1hY2hpbmU6OkZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNl
TG9hZGVyLmNwcDogVGhyb3VnaG91dCwgcmVtb3ZlIHRoZSBjb25jZXB0IG9mIGFuIGVtcHR5IGxv
YWQuCisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWROb3cpOiBUaGlz
IG9ubHkgcmV0dXJuZWQgdHJ1ZSB3aGVuIGFuIGVtcHR5CisgICAgICAgICAgICBsb2FkIGdvdCBk
ZWZlcnJlZCwgd2hpY2ggd29uJ3QgaGFwcGVuIG5vdy4gUmV0dXJuIHZvaWQgYW5kIGFsd2F5cyB0
cmVhdAorICAgICAgICAgICAgYXMgcmV0dXJuaW5nIGZhbHNlLgorICAgICAgICAqIGxvYWRlci9N
YWluUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKE1haW5SZXNvdXJjZUxvYWRlcik6CisKIDIw
MTItMTEtMTYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzQ4NjcuCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkt
bWV0YS10YWctcGFyZW50LXNhbWUtb3JpZ2luLWRlbnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1l
LW9wdGlvbnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDEzNDgwMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
WEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1v
cmlnaW4tZGVueS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw2IEBACiBo
dHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1m
cmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtcGFyZW50LXNhbWUtb3JpZ2luLWRl
bnkuaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25z
LWRlbnktbWV0YS10YWctc3ViZnJhbWUtcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCwgaHR0
cCBzdGF0dXMgY29kZSAyMDA+CiBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1l
T3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUt
cGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8
TlNFcnJvciBkb21haW4gTlNVUkxFcnJvckRvbWFpbiwgY29kZSAtOTk5LCBmYWlsaW5nIFVSTCAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gt
ZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLXBhcmVudC1zYW1lLW9yaWdpbi1k
ZW55Lmh0bWwiPgogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGRpc3BsYXkgJ2h0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9w
dGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1s
JyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICdzYW1lb3Jp
Z2luJy4KLWFib3V0OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFi
b3V0OmJsYW5rLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2Ft
ZS1vcmlnaW4tZGVueS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51
bGwpCi1hYm91dDpibGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91
dDpibGFuaywgaHR0cCBzdGF0dXMgY29kZSAwPgogVGhlcmUgc2hvdWxkIGJlIG5vIGNvbnRlbnQg
aW4gdGhlIGlmcmFtZSBiZWxvdwogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDEzNDgwMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1i
b2R5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDYgQEAKIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9w
dGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS1pbi1ib2R5Lmh0bWwgLSBkaWRSZWNlaXZlUmVz
cG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1l
LWluLWJvZHkuaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnkt
bWV0YS10YWctc3ViZnJhbWUtaW4tYm9keS5odG1sIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6
IDxOU0Vycm9yIGRvbWFpbiBOU1VSTEVycm9yRG9tYWluLCBjb2RlIC05OTksIGZhaWxpbmcgVVJM
ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMv
eC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtaW4tYm9keS5odG1sIj4KIENP
TlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBkaXNwbGF5ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0
YS10YWctc3ViZnJhbWUtaW4tYm9keS5odG1sJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdY
LUZyYW1lLU9wdGlvbnMnIHRvICdkZW55Jy4KLWFib3V0OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0
IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVu
eS1tZXRhLXRhZy1pbi1ib2R5Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25z
ZSAobnVsbCkKLWFib3V0OmJsYW5rIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNl
IGFib3V0OmJsYW5rLCBodHRwIHN0YXR1cyBjb2RlIDA+CiBUaGVyZSBzaG91bGQgYmUgbm8gY29u
dGVudCBpbiB0aGUgaWZyYW1lIGJlbG93CiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxMzQ4MDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hG
cmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsNiBAQAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFn
LXN1YmZyYW1lLmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUt
b3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAw
PgogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2Vz
L3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLmh0bWwgLSBkaWRGYWlsTG9h
ZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIE5TVVJMRXJyb3JEb21haW4sIGNvZGUgLTk5
OSwgZmFpbGluZyBVUkwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRp
b25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS5odG1s
Ij4KIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBkaXNwbGF5ICdodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRl
bnktbWV0YS10YWctc3ViZnJhbWUuaHRtbCcgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1G
cmFtZS1PcHRpb25zJyB0byAnZGVueScuCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8
TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkt
bWV0YS10YWcuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQot
YWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6Ymxh
bmssIGh0dHAgc3RhdHVzIGNvZGUgMD4KIFRoZXJlIHNob3VsZCBiZSBubyBjb250ZW50IGluIHRo
ZSBpZnJhbWUgYmVsb3cKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
cmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxMzQ4MDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0
aG9kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMTMgKzUsMTAgQEAKIG1haW4g
ZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKIDx1bmtub3duPiAtIGRpZEZpbmlzaExvYWRp
bmcKIGZyYW1lICIwIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKLWFib3V0OmJs
YW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBtYWlu
IGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRo
b2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWFib3V0
OmJsYW5rIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGFib3V0OmJsYW5rLCBo
dHRwIHN0YXR1cyBjb2RlIDA+CiBmcmFtZSAiMCIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZy
YW1lICIwIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMCIgLSBkaWRI
YW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjAiIC0gZGlkRmluaXNoTG9hZEZvckZy
YW1lCi1hYm91dDpibGFuayAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIwIiAtIHdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVz
b3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIAogZnJhbWUgIjAiIC0gZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVz
b3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VS
TFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRp
cmVjdC1tZXRob2RzLWZvcm0uaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJl
ZGlyZWN0UmVzcG9uc2UgKG51bGwpCkBAIC0zMiwxMyArMjksMTAgQEAKIGZyYW1lICIwIiAtIGRp
ZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjAiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUKIGZyYW1lICIxIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKLWFib3V0
OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBt
YWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1t
ZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWFi
b3V0OmJsYW5rIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGFib3V0OmJsYW5r
LCBodHRwIHN0YXR1cyBjb2RlIDA+CiBmcmFtZSAiMSIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUK
IGZyYW1lICIxIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIgLSBk
aWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkRmluaXNoTG9hZEZv
ckZyYW1lCi1hYm91dDpibGFuayAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIxIiAtIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIAogZnJhbWUgIjAiIC0gZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZQpAQCAtNjIsMTMgKzU2LDEwIEBACiBmcmFtZSAiMSIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUK
IGZyYW1lICIxIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMiIgLSBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVx
dWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1l
dGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91dDpibGFuayAtIGRpZFJlY2Vp
dmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFuaywgaHR0cCBzdGF0dXMgY29kZSAw
PgogZnJhbWUgIjIiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjIiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRz
Rm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQotYWJvdXQ6Ymxhbmsg
LSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMiIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1t
ZXRob2RzLWZvcm0uaHRtbCAKIGZyYW1lICIxIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZy
YW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKQEAgLTkyLDEzICs4MywxMCBA
QAogZnJhbWUgIjIiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBV
UkwgYWJvdXQ6YmxhbmssIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9s
b2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJl
c3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVz
cG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUgMD4KIGZyYW1lICIzIiAtIGRpZENv
bW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUKIGZyYW1lICIzIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMyIg
LSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWFib3V0OmJsYW5rIC0gZGlkRmluaXNoTG9hZGluZwog
ZnJhbWUgIjMiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgCiBm
cmFtZSAiMiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjIiIC0gZGlk
RmluaXNoTG9hZEZvckZyYW1lCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1pZnJh
bWUtbG9hZC1hbmQtZGVsZXRlLmh0bWwJKHJldmlzaW9uIDEzNDgwMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1pZnJhbWUtbG9hZC1hbmQtZGVs
ZXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAKIAogICAgIGZ1bmN0aW9u
IHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHZhciByZXF1ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5l
bCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVl
c3RzLmxlbmd0aCAtIDNdOworICAgICAgICB2YXIgcmVxdWVzdDEgPSBXZWJJbnNwZWN0b3IucGFu
ZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1
ZXN0cy5sZW5ndGggLSAyXTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVxdWVz
dDEudXJsKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLnR5cGU6
ICIgKyByZXF1ZXN0MS50eXBlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJl
c291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlcXVlc3QxLmNv
bnRlbnQpOwpAQCAtNTIsNyArNTIsNyBAQAogCiAgICAgZnVuY3Rpb24gc3RlcDMoKQogICAgIHsK
LSAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVx
dWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHMubGVuZ3RoIC0gM107
CisgICAgICAgIHZhciByZXF1ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJl
cXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDJd
OwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRl
ciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXF1ZXN0MS5jb250ZW50KTsKIAogICAgICAgICB2
YXIgcmVxdWVzdDIgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJ
bnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEzNDk3OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTE2ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSBlbXB0eSBsb2FkaW5nIHRvIERvY3VtZW50TG9hZGVy
LCBzaW1wbGlmeSBGcmFtZUxvYWRlcjo6aW5pdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBleHBlY3QgcmVzb3VyY2UgbG9hZCBjYWxsYmFj
a3MgZm9yIGVtcHR5IGxvYWRzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1l
dGEtdGFnLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUt
b3B0aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55LWV4cGVjdGVkLnR4
dDoKKwogMjAxMi0xMS0xNiAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtDaHJvbWl1bV0gYWRqdXN0aW5nIGV4cGVjdGF0aW9ucyBmb3IgY2hlY2tl
cmJvYXJkLmh0bWwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5jcHAJKHJldmlzaW9uIDEzNDgwMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyOCw3ICsxNjI4LDgg
QEAKIHsKICAgICAvLyBDb2RlIGR1cGxpY2F0ZWQgZnJvbSBSZW5kZXJWaWV3OjpEaWRDb21taXRM
b2FkRm9yRnJhbWUuCiAgICAgVGVzdFNoZWxsRXh0cmFEYXRhKiBleHRyYURhdGEgPSBzdGF0aWNf
Y2FzdDxUZXN0U2hlbGxFeHRyYURhdGEqPihmcmFtZS0+ZGF0YVNvdXJjZSgpLT5leHRyYURhdGEo
KSk7Ci0gICAgYm9vbCBub25CbGFua1BhZ2VBZnRlclJlc2V0ID0gbV9wYWdlSWQgPT0gLTEgJiYg
c3RyY21wKGZyYW1lLT5kYXRhU291cmNlKCktPnJlcXVlc3QoKS51cmwoKS5zcGVjKCkuZGF0YSgp
LCAiYWJvdXQ6YmxhbmsiKTsKKyAgICBjb25zdCBXZWJVUkwmIHVybCA9IGZyYW1lLT5kYXRhU291
cmNlKCktPnJlcXVlc3QoKS51cmwoKTsKKyAgICBib29sIG5vbkJsYW5rUGFnZUFmdGVyUmVzZXQg
PSBtX3BhZ2VJZCA9PSAtMSAmJiAhdXJsLmlzRW1wdHkoKSAmJiBzdHJjbXAodXJsLnNwZWMoKS5k
YXRhKCksICJhYm91dDpibGFuayIpOwogCiAgICAgaWYgKGlzTmV3TmF2aWdhdGlvbiB8fCBub25C
bGFua1BhZ2VBZnRlclJlc2V0KSB7CiAgICAgICAgIC8vIE5ldyBuYXZpZ2F0aW9uLgpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTM0OTc5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMTEtMTYgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBNb3ZlIGVtcHR5IGxvYWRpbmcgdG8gRG9jdW1lbnRMb2FkZXIsIHNpbXBsaWZ5IEZyYW1l
TG9hZGVyOjppbml0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMTUxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENocm9taXVtIERSVCBoYXMgc29tZSBjb2RlIHRoYXQgZG9lc24ndCBwbGF5IG5pY2Vs
eSB3aXRoIGVtcHR5IHVybHMgYW5kIGluY29ycmVjdGx5CisgICAgICAgIGludGVycHJldHMgdGhl
bSBhcyBhIG5vbi1lbXB0eSBsb2FkLiBUaGlzIGVuc3VyZXMKKyAgICAgICAgaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL25ldy13aW5kb3ctcmVkaXJlY3QtaGlzdG9yeS5odG1sIGNvbnRpbnVlcyB0byBw
YXNzCisgICAgICAgIGluIGNocm9taXVtLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnVwZGF0ZUZvckNv
bW1pdHRlZExvYWQpOgorCiAyMDEyLTExLTE2ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGQgbWlz
c2luZyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OmRpZEFkZFJlbW90ZURhdGFD
aGFubmVsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176503</attachid>
            <date>2012-11-28 09:58:42 -0800</date>
            <delta_ts>2012-11-28 11:31:38 -0800</delta_ts>
            <desc>Fix TestWebKitAPI failures</desc>
            <filename>empty.txt</filename>
            <type>text/plain</type>
            <size>33530</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTM2MDE3
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE0LDE0ICsyMTQsMTQgQEAKICAgICAsIG1fc3ViZnJhbWVMb2FkZXIoZnJhbWUpCiAg
ICAgLCBtX2ljb24oZnJhbWUpCiAgICAgLCBtX21peGVkQ29udGVudENoZWNrZXIoZnJhbWUpCi0g
ICAgLCBtX3N0YXRlKEZyYW1lU3RhdGVDb21taXR0ZWRQYWdlKQorICAgICwgbV9zdGF0ZShGcmFt
ZVN0YXRlUHJvdmlzaW9uYWwpCiAgICAgLCBtX2xvYWRUeXBlKEZyYW1lTG9hZFR5cGVTdGFuZGFy
ZCkKICAgICAsIG1fZGVsZWdhdGVJc0hhbmRsaW5nUHJvdmlzaW9uYWxMb2FkRXJyb3IoZmFsc2Up
CiAgICAgLCBtX3F1aWNrUmVkaXJlY3RDb21pbmcoZmFsc2UpCiAgICAgLCBtX3NlbnRSZWRpcmVj
dE5vdGlmaWNhdGlvbihmYWxzZSkKICAgICAsIG1faW5TdG9wQWxsTG9hZGVycyhmYWxzZSkKICAg
ICAsIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbihmYWxzZSkKLSAgICAsIG1fZGlk
Q2FsbEltcGxpY2l0Q2xvc2UoZmFsc2UpCisgICAgLCBtX2RpZENhbGxJbXBsaWNpdENsb3NlKHRy
dWUpCiAgICAgLCBtX3dhc1VubG9hZEV2ZW50RW1pdHRlZChmYWxzZSkKICAgICAsIG1fcGFnZURp
c21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKE5vRGlzbWlzc2FsKQogICAgICwgbV9pc0NvbXBs
ZXRlKGZhbHNlKQpAQCAtMjU0LDE5ICsyNTQsMTEgQEAKIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQo
KQogewogICAgIC8vIFRoaXMgc29tZXdoYXQgb2RkIHNldCBvZiBzdGVwcyBnaXZlcyB0aGUgZnJh
bWUgYW4gaW5pdGlhbCBlbXB0eSBkb2N1bWVudC4KLSAgICAvLyBJdCB3b3VsZCBiZSBiZXR0ZXIg
aWYgdGhpcyBjb3VsZCBiZSBkb25lIHdpdGggZXZlbiBmZXdlciBzdGVwcy4KLSAgICBtX3N0YXRl
TWFjaGluZS5hZHZhbmNlVG8oRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkNyZWF0aW5nSW5pdGlh
bEVtcHR5RG9jdW1lbnQpOwogICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50LT5j
cmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoS1VSTChQYXJzZWRVUkxTdHJpbmcs
IGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOwogICAgIHNldFByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7Ci0gICAg
c2V0U3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKTsKLSAgICBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXItPnNldFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UoS1VSTCgpLCAidGV4dC9odG1s
IiwgMCwgU3RyaW5nKCksIFN0cmluZygpKSk7Ci0gICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyLT5maW5pc2hlZExvYWRpbmcoKTsKLSAgICBBU1NFUlQoIW1fZnJhbWUtPmRvY3VtZW50KCkp
OwotICAgIG1fZG9jdW1lbnRMb2FkZXItPndyaXRlcigpLT5iZWdpbihLVVJMKCksIGZhbHNlKTsK
LSAgICBtX2RvY3VtZW50TG9hZGVyLT53cml0ZXIoKS0+ZW5kKCk7CisgICAgbV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5jYW5jZWxQYXJzaW5nKCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuYWR2YW5j
ZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1l
bnQpOwotICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSB0cnVlOwogCiAgICAgbV9uZXR3b3Jr
aW5nQ29udGV4dCA9IG1fY2xpZW50LT5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogICAgIG1f
cHJvZ3Jlc3NUcmFja2VyID0gRnJhbWVQcm9ncmVzc1RyYWNrZXI6OmNyZWF0ZShtX2ZyYW1lKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHJldmlz
aW9uIDEzNjAxNykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtODEsOSArODEsOCBAQAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
Q2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKIAotICAgIGJvb2wgbG9h
ZE5vdyhSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIGxvYWROb3coUmVzb3VyY2VSZXF1ZXN0
Jik7CiAKLSAgICB2b2lkIGhhbmRsZUVtcHR5TG9hZChjb25zdCBLVVJMJiwgYm9vbCBmb3JVUkxT
Y2hlbWUpOwogICAgIHZvaWQgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdyhNYWlu
UmVzb3VyY2VMb2FkZXJUaW1lciopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAkocmV2aXNpb24gMTM2MDE3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBAQAogICAgICAg
ICBTdHJpbmcgY2xpZW50UmVkaXJlY3REZXN0aW5hdGlvbkZvckhpc3RvcnkoKSBjb25zdCB7IHJl
dHVybiB1cmxGb3JIaXN0b3J5KCk7IH0KICAgICAgICAgdm9pZCBzZXRDbGllbnRSZWRpcmVjdFNv
dXJjZUZvckhpc3RvcnkoY29uc3QgU3RyaW5nJiBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rv
cnkpIHsgbV9jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBjbGllbnRSZWRpcmVjdFNv
dXJjZUZvckhpc3Rvcnk7IH0KICAgICAgICAgCi0gICAgICAgIFN0cmluZyBzZXJ2ZXJSZWRpcmVj
dFNvdXJjZUZvckhpc3RvcnkoKSBjb25zdCB7IHJldHVybiB1cmxGb3JIaXN0b3J5KCkgPT0gdXJs
KCkgPyBTdHJpbmcoKSA6IHVybEZvckhpc3RvcnkoKS5zdHJpbmcoKTsgfSAvLyBudWxsIGlmIG5v
IHNlcnZlciByZWRpcmVjdCBvY2N1cnJlZC4KKyAgICAgICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuICh1cmxGb3JIaXN0b3J5KCkgPT0gdXJs
KCkgfHwgdXJsKCkgPT0gYmxhbmtVUkwoKSkgPyBTdHJpbmcoKSA6IHVybEZvckhpc3RvcnkoKS5z
dHJpbmcoKTsgfSAvLyBudWxsIGlmIG5vIHNlcnZlciByZWRpcmVjdCBvY2N1cnJlZC4KICAgICAg
ICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0RGVzdGluYXRpb25Gb3JIaXN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gdXJsKCk7IH0KIAogICAgICAgICBib29sIGRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRy
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5OyB9CkBAIC0y
NjUsNiArMjY1LDggQEAKICAgICAgICAgdm9pZCBjbGVhckFyY2hpdmVSZXNvdXJjZXMoKTsKICNl
bmRpZgogCisgICAgICAgIGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKKwogICAgICAgICBib29sIGlz
TXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZGVsaXZlclN1
YnN0aXR1dGVSZXNvdXJjZXNBZnRlckRlbGF5KCk7CkBAIC0zMDcsNiArMzA5LDcgQEAKICAgICAg
ICAgYm9vbCBtX2lzU3RvcHBpbmc7CiAgICAgICAgIGJvb2wgbV9nb3RGaXJzdEJ5dGU7CiAgICAg
ICAgIGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OworICAgICAgICBib29sIG1fbG9hZGluZ0VtcHR5
RG9jdW1lbnQ7CiAKICAgICAgICAgLy8gRklYTUU6IERvY3VtZW50OjptX3Byb2Nlc3NpbmdMb2Fk
RXZlbnQgYW5kIERvY3VtZW50TG9hZGVyOjptX3dhc09ubG9hZEhhbmRsZWQgYXJlIHJvdWdobHkg
dGhlIHNhbWUKICAgICAgICAgLy8gYW5kIHNob3VsZCBiZSBtZXJnZWQuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaAkocmV2aXNpb24g
MTM2MDE3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDYgQEAKICAgICAvLyBhbHRlcm5hdGUgYmV0
d2VlbiBDb21taXR0ZWRGaXJzdFJlYWxMb2FkIGFuZCBGaXJzdExheW91dERvbmUuCiAgICAgLy8g
T3RoZXJ3aXNlLCB0aGUgc3RhdGVzIG9ubHkgZ28gZG93biB0aGUgbGlzdC4KICAgICBlbnVtIFN0
YXRlIHsKLSAgICAgICAgVW5pbml0aWFsaXplZCwKICAgICAgICAgQ3JlYXRpbmdJbml0aWFsRW1w
dHlEb2N1bWVudCwKICAgICAgICAgRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50LAogICAg
ICAgICBEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnRQb3N0Q29tbWl0LApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDEz
NjAxNykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NywxMSArNjcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBib29sIHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsKQot
ewotICAgIHJldHVybiB1cmwuaXNFbXB0eSgpIHx8IFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRMb2Fk
VVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KHVybC5wcm90b2NvbCgpKTsKLX0KLQogTWFpblJlc291
cmNlTG9hZGVyOjpNYWluUmVzb3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1lKQogICAgIDogUmVzb3Vy
Y2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlm
ZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZv
ckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMsIFNraXBTZWN1cml0eUNoZWNrKSkKICAgICAsIG1fZGF0
YUxvYWRUaW1lcih0aGlzLCAmTWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0
YUxvYWROb3cpCkBAIC0zMzgsMTMgKzMzMywxMCBAQAogICAgIGlmICghcmVhY2hlZFRlcm1pbmFs
U3RhdGUoKSkKICAgICAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShyKTsK
IAotICAgIGlmIChmcmFtZUxvYWRlcigpICYmICFmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVu
dExvYWRlcigpLT5pc1N0b3BwaW5nKCkpIHsKLSAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCkt
PnNpemUoKSkKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShtX3N1YnN0aXR1dGVEYXRh
LmNvbnRlbnQoKS0+ZGF0YSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBt
X3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCB0cnVlKTsKLSAgICAgICAgICAgIGlm
IChmcmFtZUxvYWRlcigpICYmICFmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigp
LT5pc1N0b3BwaW5nKCkpIAotICAgICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRpbmcoMCk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudCh1cmwpIHx8IGZyYW1l
TG9hZGVyKCktPmNsaWVudCgpLT5yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSh1cmwu
cHJvdG9jb2woKSkpCisgICAgaWYgKGZyYW1lTG9hZGVyKCkgJiYgIWZyYW1lTG9hZGVyKCktPmFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBpbmcoKSAmJiBtX3N1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSkgeworICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUo
KSkKKyAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgp
LT5kYXRhKCksIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0
ZURhdGEuY29udGVudCgpLT5zaXplKCksIHRydWUpOworICAgICAgICBpZiAoZnJhbWVMb2FkZXIo
KSAmJiAhZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+aXNTdG9wcGluZygp
KSAKICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpAQCAtMzg1LDcg
KzM3Nyw3IEBACiAgICAgLy8gVGhlcmUgaXMgYSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxi
YWNrcyBjYW4gYmUgZGlzcGF0Y2hlZCBldmVuIHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgogICAg
IC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNjMwNDYwMD4gZm9yIG1vcmUgZGV0YWlscy4KICNpZiAh
VVNFKENGKQotICAgIEFTU0VSVChzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KHIudXJsKCkpIHx8
ICFkZWZlcnNMb2FkaW5nKCkpOworICAgIEFTU0VSVCghZGVmZXJzTG9hZGluZygpKTsKICNlbmRp
ZgogCiAgICAgaWYgKG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQpIHsKQEAgLTUwMCw3ICs0OTIs
NyBAQAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29yayB3aGVyZSBjYWxsYmFja3Mg
Y2FuIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZlcnJlZC4KICAgICAvLyBT
ZWUgPHJkYXI6Ly9wcm9ibGVtLzYzMDQ2MDA+IGZvciBtb3JlIGRldGFpbHMuCiAjaWYgIVVTRShD
RikKLSAgICBBU1NFUlQoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChmcmFtZUxvYWRlcigpLT5h
Y3RpdmVEb2N1bWVudExvYWRlcigpLT51cmwoKSkgfHwgIWRlZmVyc0xvYWRpbmcoKSB8fCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmlzRGVidWdnZXJQYXVzZWQobV9mcmFtZS5nZXQoKSkpOwor
ICAgIEFTU0VSVCghZGVmZXJzTG9hZGluZygpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aXNEZWJ1Z2dlclBhdXNlZChtX2ZyYW1lLmdldCgpKSk7CiAjZW5kaWYKIAogICAgIC8vIFRoZSBh
ZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBy
ZW1vdmluZyB0aGUgbGFzdApAQCAtNTYxLDE4ICs1NTMsNiBAQAogICAgIGluZm8uYWRkTWVtYmVy
KG1fZGF0YUxvYWRUaW1lcik7CiB9CiAKLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVF
bXB0eUxvYWQoY29uc3QgS1VSTCYgdXJsLCBib29sIGZvclVSTFNjaGVtZSkKLXsKLSAgICBTdHJp
bmcgbWltZVR5cGU7Ci0gICAgaWYgKGZvclVSTFNjaGVtZSkKLSAgICAgICAgbWltZVR5cGUgPSBm
cmFtZUxvYWRlcigpLT5jbGllbnQoKS0+Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUodXJs
LnByb3RvY29sKCkpOwotICAgIGVsc2UKLSAgICAgICAgbWltZVR5cGUgPSAidGV4dC9odG1sIjsK
LSAgICAKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbWltZVR5cGUsIDAsIFN0
cmluZygpLCBTdHJpbmcoKSk7Ci0gICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLX0K
LQogdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdyhN
YWluUmVzb3VyY2VMb2FkZXJUaW1lciopCiB7CiAgICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRl
cj4gcHJvdGVjdCh0aGlzKTsKQEAgLTYwOSwzMCArNTg5LDExIEBACiAgICAgICAgIGhhbmRsZVN1
YnN0aXR1dGVEYXRhTG9hZE5vdygwKTsKIH0KIAotYm9vbCBNYWluUmVzb3VyY2VMb2FkZXI6Omxv
YWROb3coUmVzb3VyY2VSZXF1ZXN0JiByKQordm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWRO
b3coUmVzb3VyY2VSZXF1ZXN0JiByKQogewotICAgIGJvb2wgc2hvdWxkTG9hZEVtcHR5QmVmb3Jl
UmVkaXJlY3QgPSBzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KHIudXJsKCkpOwotCiAgICAgQVNT
RVJUKCFtX2hhbmRsZSk7Ci0gICAgQVNTRVJUKHNob3VsZExvYWRFbXB0eUJlZm9yZVJlZGlyZWN0
IHx8ICFkZWZlcnNMb2FkaW5nKCkpOworICAgIEFTU0VSVCghZGVmZXJzTG9hZGluZygpKTsKIAot
ICAgIC8vIFNlbmQgdGhpcyBzeW50aGV0aWMgZGVsZWdhdGUgY2FsbGJhY2sgc2luY2UgY2xpZW50
cyBleHBlY3QgaXQsIGFuZAotICAgIC8vIHdlIG5vIGxvbmdlciBzZW5kIHRoZSBjYWxsYmFjayBm
cm9tIHdpdGhpbiBOU1VSTENvbm5lY3Rpb24gZm9yCi0gICAgLy8gaW5pdGlhbCByZXF1ZXN0cy4K
LSAgICB3aWxsU2VuZFJlcXVlc3QociwgUmVzb3VyY2VSZXNwb25zZSgpKTsKLSAgICBBU1NFUlQo
IWRlbGV0aW9uSGFzQmVndW4oKSk7Ci0KLSAgICAvLyA8cmRhcjovL3Byb2JsZW0vNDgwMTA2Nj4K
LSAgICAvLyB3aWxsU2VuZFJlcXVlc3QoKSBpcyBsaWFibGUgdG8gbWFrZSB0aGUgY2FsbCB0byBm
cmFtZUxvYWRlcigpIHJldHVybiBOVUxMLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgaGVyZQot
ICAgIGlmICghZnJhbWVMb2FkZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAg
IGNvbnN0IEtVUkwmIHVybCA9IHIudXJsKCk7Ci0gICAgYm9vbCBzaG91bGRMb2FkRW1wdHkgPSBz
aG91bGRMb2FkQXNFbXB0eURvY3VtZW50KHVybCkgJiYgIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpOwotCi0gICAgaWYgKHNob3VsZExvYWRFbXB0eUJlZm9yZVJlZGlyZWN0ICYmICFzaG91bGRM
b2FkRW1wdHkgJiYgZGVmZXJzTG9hZGluZygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogI2lm
IFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2Fk
ZXJTdHJhdGVneSgpLT5yZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+YWRkTWFpblJlc291cmNlTG9h
ZCh0aGlzKTsKICNlbHNlCkBAIC02NDEsMTIgKzYwMiwxMCBAQAogCiAgICAgaWYgKG1fc3Vic3Rp
dHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29u
KHIpOwotICAgIGVsc2UgaWYgKHNob3VsZExvYWRFbXB0eSB8fCBmcmFtZUxvYWRlcigpLT5jbGll
bnQoKS0+cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUodXJsLnByb3RvY29sKCkpKQot
ICAgICAgICBoYW5kbGVFbXB0eUxvYWQodXJsLCAhc2hvdWxkTG9hZEVtcHR5KTsKICAgICBlbHNl
CiAgICAgICAgIG1faGFuZGxlID0gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShtX2ZyYW1lLT5sb2Fk
ZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKSwgciwgdGhpcywgZmFsc2UsIHRydWUpOwogCi0gICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybjsKIH0KIAogdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6
OmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vi
c3RpdHV0ZURhdGEpCkBAIC02NjQsMjMgKzYyMywyNiBAQAogICAgIGRvY3VtZW50TG9hZGVyKCkt
PnRpbWluZygpLT5tYXJrRmV0Y2hTdGFydCgpOwogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0
KHIpOwogCi0gICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5
YmVMb2FkTWFpblJlc291cmNlKHJlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOworICAgIC8vIFNl
bmQgdGhpcyBzeW50aGV0aWMgZGVsZWdhdGUgY2FsbGJhY2sgc2luY2UgY2xpZW50cyBleHBlY3Qg
aXQsIGFuZAorICAgIC8vIHdlIG5vIGxvbmdlciBzZW5kIHRoZSBjYWxsYmFjayBmcm9tIHdpdGhp
biBOU1VSTENvbm5lY3Rpb24gZm9yCisgICAgLy8gaW5pdGlhbCByZXF1ZXN0cy4KKyAgICB3aWxs
U2VuZFJlcXVlc3QocmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICBBU1NFUlQoIWRl
bGV0aW9uSGFzQmVndW4oKSk7CiAKLSAgICBib29sIGRlZmVyID0gZGVmZXJzTG9hZGluZygpOwot
ICAgIGlmIChkZWZlcikgewotICAgICAgICBib29sIHNob3VsZExvYWRFbXB0eSA9IHNob3VsZExv
YWRBc0VtcHR5RG9jdW1lbnQocmVxdWVzdC51cmwoKSk7Ci0gICAgICAgIGlmIChzaG91bGRMb2Fk
RW1wdHkpCi0gICAgICAgICAgICBkZWZlciA9IGZhbHNlOworICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS80ODAxMDY2PgorICAgIC8vIHdpbGxTZW5kUmVxdWVzdCgpIGlzIGxpYWJsZSB0byBtYWtlIHRo
ZSBjYWxsIHRvIGZyYW1lTG9hZGVyKCkgcmV0dXJuIG51bGwsIHNvIHdlIG5lZWQgdG8gY2hlY2sg
dGhhdCBoZXJlCisgICAgaWYgKCFmcmFtZUxvYWRlcigpIHx8IHJlcXVlc3QuaXNOdWxsKCkpIHsK
KyAgICAgICAgaWYgKCFyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgICAgICAgICAgcmVsZWFz
ZVJlc291cmNlcygpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghZGVmZXIpIHsK
LSAgICAgICAgaWYgKGxvYWROb3cocmVxdWVzdCkpIHsKLSAgICAgICAgICAgIC8vIFN0YXJ0ZWQg
YXMgYW4gZW1wdHkgZG9jdW1lbnQsIGJ1dCB3YXMgcmVkaXJlY3RlZCB0byBzb21ldGhpbmcgbm9u
LWVtcHR5LgotICAgICAgICAgICAgQVNTRVJUKGRlZmVyc0xvYWRpbmcoKSk7Ci0gICAgICAgICAg
ICBkZWZlciA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGRlZmVyKQorCisgICAg
ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkTWFpblJl
c291cmNlKHJlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOworCisgICAgaWYgKGRlZmVyc0xvYWRp
bmcoKSkKICAgICAgICAgbV9pbml0aWFsUmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgZWxzZQorICAg
ICAgICBsb2FkTm93KHJlcXVlc3QpOwogfQogCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6c2V0
RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMTM2MDE3KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAog
I2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgpAQCAtOTcsNiArOTgsNyBAQAog
ICAgICwgbV9pc1N0b3BwaW5nKGZhbHNlKQogICAgICwgbV9nb3RGaXJzdEJ5dGUoZmFsc2UpCiAg
ICAgLCBtX2lzQ2xpZW50UmVkaXJlY3QoZmFsc2UpCisgICAgLCBtX2xvYWRpbmdFbXB0eURvY3Vt
ZW50KGZhbHNlKQogICAgICwgbV93YXNPbmxvYWRIYW5kbGVkKGZhbHNlKQogICAgICwgbV9zdG9w
UmVjb3JkaW5nUmVzcG9uc2VzKGZhbHNlKQogICAgICwgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxp
dmVyeVRpbWVyKHRoaXMsICZEb2N1bWVudExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZl
cnlUaW1lckZpcmVkKQpAQCAtMTE0LDcgKzExNiw3IEBACiAKIERvY3VtZW50TG9hZGVyOjp+RG9j
dW1lbnRMb2FkZXIoKQogewotICAgIEFTU0VSVCghbV9mcmFtZSB8fCBmcmFtZUxvYWRlcigpLT5h
Y3RpdmVEb2N1bWVudExvYWRlcigpICE9IHRoaXMgfHwgIWZyYW1lTG9hZGVyKCktPmlzTG9hZGlu
ZygpKTsKKyAgICBBU1NFUlQoIW1fZnJhbWUgfHwgZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1l
bnRMb2FkZXIoKSAhPSB0aGlzIHx8ICFpc0xvYWRpbmcoKSk7CiAgICAgaWYgKG1faWNvbkxvYWRE
ZWNpc2lvbkNhbGxiYWNrKQogICAgICAgICBtX2ljb25Mb2FkRGVjaXNpb25DYWxsYmFjay0+aW52
YWxpZGF0ZSgpOwogICAgIGlmIChtX2ljb25EYXRhQ2FsbGJhY2spCkBAIC0yODUsNyArMjg3LDcg
QEAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiB7CiAgICAgY29tbWl0
SWZSZWFkeSgpOwotICAgIGlmICghZnJhbWVMb2FkZXIoKSB8fCBmcmFtZUxvYWRlcigpLT5zdGF0
ZU1hY2hpbmUoKS0+Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQorICAgIGlmICghZnJh
bWVMb2FkZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtYXliZUNyZWF0ZUFyY2hp
dmUoKSkgewpAQCAtMzAwLDcgKzMwMiw4IEBACiAgICAgaWYgKCFtX21haW5Eb2N1bWVudEVycm9y
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAgICAgY2xlYXJNYWluUmVzb3VyY2VMb2FkZXIo
KTsKLSAgICBmcmFtZUxvYWRlcigpLT5jaGVja0xvYWRDb21wbGV0ZSgpOworICAgIGlmICghZnJh
bWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQo
KSkKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2hlY2tMb2FkQ29tcGxldGUoKTsKIH0KIAogdm9p
ZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQpAQCAtMzI3LDYgKzMzMCw5IEBACiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKICAg
ICAgICAgbV93cml0ZXIuYmVnaW4oZG9jdW1lbnRVUkwoKSwgZmFsc2UpOwogICAgICAgICBtX3dy
aXRlci5zZXREb2N1bWVudFdhc0xvYWRlZEFzUGFydE9mTmF2aWdhdGlvbigpOworCisgICAgICAg
IGlmIChmcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS0+Y3JlYXRpbmdJbml0aWFsRW1wdHlE
b2N1bWVudCgpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICNpZiBFTkFCTEUoTUhU
TUwpCiAgICAgICAgIC8vIFRoZSBvcmlnaW4gaXMgdGhlIE1IVE1MIGZpbGUsIHdlIG5lZWQgdG8g
c2V0IHRoZSBiYXNlIFVSTCB0byB0aGUgZG9jdW1lbnQgZW5jb2RlZCBpbiB0aGUgTUhUTUwgc28K
QEAgLTQ0OSw2ICs0NTUsNyBAQAogICAgICAgICBtX21haW5SZXNvdXJjZURhdGEgPSBtX21haW5S
ZXNvdXJjZUxvYWRlci0+cmVzb3VyY2VEYXRhKCk7CiAgICAgICAgIG1fbWFpblJlc291cmNlTG9h
ZGVyID0gMDsKICAgICB9CisgICAgbV9sb2FkaW5nRW1wdHlEb2N1bWVudCA9IGZhbHNlOwogCiAg
ICAgaWYgKHRoaXMgPT0gZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkKICAg
ICAgICAgY2hlY2tMb2FkQ29tcGxldGUoKTsKQEAgLTQ2Myw3ICs0NzAsNyBAQAogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5k
b2N1bWVudCgpOwotICAgICAgICBpZiAoKG1fbWFpblJlc291cmNlTG9hZGVyIHx8ICFtX2ZyYW1l
LT5kb2N1bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpKSAmJiBpc0xvYWRpbmcoKSkKKyAgICAg
ICAgaWYgKChpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
bG9hZEV2ZW50RmluaXNoZWQoKSkgJiYgaXNMb2FkaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgaWYgKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RDb3VudCgp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03NjksOCArNzc2LDYgQEAKICAgICAgICAg
dXJsID0gcmVxdWVzdFVSTCgpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICB1cmwg
PSByZXNwb25zZVVSTCgpOwotICAgIGlmICh1cmwuaXNFbXB0eSgpKQotICAgICAgICB1cmwgPSBi
bGFua1VSTCgpOwogICAgIHJldHVybiB1cmw7CiB9CiAKQEAgLTgzMCw3ICs4MzUsNyBAQAogCiBi
b29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdNYWluUmVzb3VyY2UoKSBjb25zdAogewotICAg
IHJldHVybiAhIW1fbWFpblJlc291cmNlTG9hZGVyOworICAgIHJldHVybiAhIW1fbWFpblJlc291
cmNlTG9hZGVyIHx8IG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQ7CiB9CiAKIGJvb2wgRG9jdW1lbnRM
b2FkZXI6OmlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKSBjb25zdApAQCAtODQzLDE3ICs4NDgs
NDEgQEAKICAgICByZXR1cm4gaXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpICYmIGZyYW1lTG9h
ZGVyKCktPmlzUmVwbGFjaW5nKCk7CiB9CiAKK2Jvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlTG9h
ZEVtcHR5KCkKK3sKKyAgICBib29sIHNob3VsZExvYWRFbXB0eSA9ICFtX3N1YnN0aXR1dGVEYXRh
LmlzVmFsaWQoKSAmJiAobV9yZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSB8fCBTY2hlbWVSZWdpc3Ry
eTo6c2hvdWxkTG9hZFVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChtX3JlcXVlc3QudXJsKCkucHJv
dG9jb2woKSkpOworICAgIGlmICghc2hvdWxkTG9hZEVtcHR5ICYmICFmcmFtZUxvYWRlcigpLT5j
bGllbnQoKS0+cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVybCgp
LnByb3RvY29sKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2xvYWRpbmdFbXB0
eURvY3VtZW50ID0gdHJ1ZTsKKyAgICBpZiAobV9yZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSAmJiAh
ZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1l
bnQoKSkKKyAgICAgICAgbV9yZXF1ZXN0LnNldFVSTChibGFua1VSTCgpKTsKKyAgICBTdHJpbmcg
bWltZVR5cGUgPSBzaG91bGRMb2FkRW1wdHkgPyAidGV4dC9odG1sIiA6IGZyYW1lTG9hZGVyKCkt
PmNsaWVudCgpLT5nZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShtX3JlcXVlc3QudXJsKCku
cHJvdG9jb2woKSk7CisgICAgc2V0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3JlcXVlc3Qu
dXJsKCksIG1pbWVUeXBlLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpKTsKKyAgICBmaW5pc2hlZExv
YWRpbmcoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBEb2N1bWVudExvYWRlcjo6c3Rh
cnRMb2FkaW5nTWFpblJlc291cmNlKCkKIHsKICAgICBtX21haW5Eb2N1bWVudEVycm9yID0gUmVz
b3VyY2VFcnJvcigpOwogICAgIHRpbWluZygpLT5tYXJrTmF2aWdhdGlvblN0YXJ0KCk7CiAgICAg
QVNTRVJUKCFtX21haW5SZXNvdXJjZUxvYWRlcik7CisKKyAgICBpZiAobWF5YmVMb2FkRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXIgPSBNYWluUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZShtX2ZyYW1lKTsKIAogICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBh
bnkgd2F5IHRoZSBleHRyYSBmaWVsZHMgY291bGQgaGF2ZSBub3QgYmVlbiBhZGRlZCBieSBub3c/
CiAgICAgLy8gSWYgbm90LCBpdCB3b3VsZCBiZSBncmVhdCB0byByZW1vdmUgdGhpcyBsaW5lIG9m
IGNvZGUuCiAgICAgZnJhbWVMb2FkZXIoKS0+YWRkRXh0cmFGaWVsZHNUb01haW5SZXNvdXJjZVJl
cXVlc3QobV9yZXF1ZXN0KTsKICAgICBtX21haW5SZXNvdXJjZUxvYWRlci0+bG9hZChtX3JlcXVl
c3QsIG1fc3Vic3RpdHV0ZURhdGEpOworCisgICAgaWYgKG1fcmVxdWVzdC5pc051bGwoKSkgewor
ICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlciA9IDA7CisgICAgICAgIG1heWJlTG9hZEVtcHR5
KCk7CisgICAgfQogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwCShyZXZpc2lvbiAxMzYwMTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKICAgICAKIEZyYW1lTG9hZGVyU3RhdGVN
YWNoaW5lOjpGcmFtZUxvYWRlclN0YXRlTWFjaGluZSgpIAotICAgIDogbV9zdGF0ZShVbmluaXRp
YWxpemVkKQorICAgIDogbV9zdGF0ZShDcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KQogeyAK
IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjAyMCkKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTExLTI4
ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSBlbXB0
eSBsb2FkaW5nIHRvIERvY3VtZW50TG9hZGVyLCBzaW1wbGlmeSBGcmFtZUxvYWRlcjo6aW5pdCgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1MTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIHRob3VnaCBzZXZlcmFsIG91dHB1dHMgY2hhbmdlZCBiZWNhdXNlIHdlIG5vIGxvbmdl
ciBzZW5kIHJlc291cmNlCisgICAgICAgICAgICBsb2FkIGNhbGxiYWNrcyBmb3IgZW1wdHkgbG9h
ZHMuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6Y29tbWl0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y2xlYXJNYWluUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmlzTG9hZGluZ0luQVBJU2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmRvY3VtZW50VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppc0xv
YWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1h
eWJlTG9hZEVtcHR5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6IEhhbmRsZSBlbXB0eSBtYWlu
IHJlc291cmNlCisgICAgICAgICAgICAgbG9hZHMgZGlyZWN0bHkgaGVyZS4KKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpzZXJ2ZXJSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpOgorICAgICAgICAoRG9jdW1lbnRMb2Fk
ZXIpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOiBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHdo
b3NlIHZhbHVlcworICAgICAgICAgICAgd2VyZSBwcmV2aW91c2x5IGJlaW5nIHJlc2V0IGluIGlu
aXQoKS4gR2l2ZW4gdGhhdCB0aGUgRnJhbWVMb2FkZXIgaXMgaW4KKyAgICAgICAgICAgIGFuIGlu
Y29uc2lzdGVudCBzdGF0ZSBiZWZvcmUgaW5pdCgpIGlzIGNhbGxlZCBhbnl3YXksIHRoZXJlIGRv
ZXNuJ3Qgc2VlbQorICAgICAgICAgICAgdG8gYmUgYSBkaXNhZHZhbnRhZ2UgdG8ganVzdCBpbml0
aWFsaXppbmcgdGhlbSB0byB0aGVpciBwb3N0LWluaXQoKSB2YWx1ZXMuCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6aW5pdCk6IEp1c3QgY2FsbCBzdGFydExvYWRpbmdNYWluUmVzb3Vy
Y2UoKSwgaW5zdGVhZCBvZgorICAgICAgICAgICAgZG9pbmcgYSBidW5jaCBvZiBkaXJlY3QgY2Fs
bHMgdG8gZnVuY3Rpb25zIEZyYW1lTG9hZGVyIHNob3VsZG4ndCBrbm93IGFib3V0LgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlclN0YXRlTWFjaGluZTo6RnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oOgorICAgICAgICAqIGxvYWRl
ci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOiBUaHJvdWdob3V0LCByZW1vdmUgdGhlIGNvbmNlcHQg
b2YgYW4gZW1wdHkgbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6
bG9hZE5vdyk6IFRoaXMgb25seSByZXR1cm5lZCB0cnVlIHdoZW4gYW4gZW1wdHkKKyAgICAgICAg
ICAgIGxvYWQgZ290IGRlZmVycmVkLCB3aGljaCB3b24ndCBoYXBwZW4gbm93LiBSZXR1cm4gdm9p
ZCBhbmQgYWx3YXlzIHRyZWF0CisgICAgICAgICAgICBhcyByZXR1cm5pbmcgZmFsc2UuCisgICAg
ICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoTWFpblJlc291cmNl
TG9hZGVyKToKKwogMjAxMi0xMS0yOCAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBbUXRdW1dpbl0gRW5hYmxlIHVzYWdlIG9mIFFUV0VCS0lUX1BMVUdJTl9QQVRI
LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGlu
Zy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTM2MDE3KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC01LDEzICs1LDEwIEBACiBtYWluIGZyYW1lIC0gZGlkRmluaXNo
TG9hZEZvckZyYW1lCiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMCIgLSBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVx
dWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1l
dGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91dDpibGFuayAtIGRpZFJlY2Vp
dmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFuaywgaHR0cCBzdGF0dXMgY29kZSAw
PgogZnJhbWUgIjAiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMCIgLSBkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjAiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRz
Rm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQotYWJvdXQ6Ymxhbmsg
LSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMCIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1t
ZXRob2RzLWZvcm0uaHRtbCAKIGZyYW1lICIwIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1t
ZXRob2RzLWZvcm0uaHRtbCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3Jt
Lmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jl
ZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChu
dWxsKQpAQCAtMzIsMTMgKzI5LDEwIEBACiBmcmFtZSAiMCIgLSBkaWRDb21taXRMb2FkRm9yRnJh
bWUKIGZyYW1lICIwIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIg
LSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCi1hYm91dDpibGFuayAtIHdpbGxTZW5k
UmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRw
IG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91dDpibGFuayAtIGRpZFJl
Y2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFuaywgaHR0cCBzdGF0dXMgY29k
ZSAwPgogZnJhbWUgIjEiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkSGFuZGxlT25sb2FkRXZl
bnRzRm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQotYWJvdXQ6Ymxh
bmsgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMSIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGly
ZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVj
dC1tZXRob2RzLWZvcm0uaHRtbCAKIGZyYW1lICIwIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lCiBmcmFtZSAiMCIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKQEAgLTYyLDEzICs1Niwx
MCBAQAogZnJhbWUgIjEiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjIiIC0gZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZQotYWJvdXQ6YmxhbmsgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVz
dCBVUkwgYWJvdXQ6YmxhbmssIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVj
dFJlc3BvbnNlIChudWxsKQotYWJvdXQ6YmxhbmsgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJM
UmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAgc3RhdHVzIGNvZGUgMD4KIGZyYW1lICIyIiAtIGRp
ZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjIiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUKIGZyYW1lICIyIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAi
MiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWFib3V0OmJsYW5rIC0gZGlkRmluaXNoTG9hZGlu
ZwogZnJhbWUgIjIiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwg
CiBmcmFtZSAiMSIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjEiIC0g
ZGlkRmluaXNoTG9hZEZvckZyYW1lCkBAIC05MiwxMyArODMsMTAgQEAKIGZyYW1lICIyIiAtIGRp
ZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjIiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUKIGZyYW1lICIzIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKLWFib3V0
OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5rLCBt
YWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1t
ZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKLWFi
b3V0OmJsYW5rIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGFib3V0OmJsYW5r
LCBodHRwIHN0YXR1cyBjb2RlIDA+CiBmcmFtZSAiMyIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUK
IGZyYW1lICIzIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMyIgLSBk
aWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkRmluaXNoTG9hZEZv
ckZyYW1lCi1hYm91dDpibGFuayAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIzIiAtIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIAogZnJhbWUgIjIiIC0gZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LWlmcmFtZS1sb2FkLWFuZC1kZWxldGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0
ZS5odG1sCShyZXZpc2lvbiAxMzYwMTcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAKICAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgewot
ICAgICAgICB2YXIgcmVxdWVzdDEgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1
ZXN0c1tXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5ndGggLSAzXTsK
KyAgICAgICAgdmFyIHJlcXVlc3QxID0gV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVx
dWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHMubGVuZ3RoIC0gMl07
CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlcXVlc3QxLnVybCk7CiAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS50eXBlOiAiICsgcmVxdWVzdDEudHlw
ZSk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS5jb250ZW50IGJl
Zm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXF1ZXN0MS5jb250ZW50KTsKQEAgLTUyLDcg
KzUyLDcgQEAKIAogICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICB7Ci0gICAgICAgIHZhciByZXF1
ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rv
ci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDNdOworICAgICAgICB2YXIgcmVx
dWVzdDEgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0
b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5ndGggLSAyXTsKICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250
ZW50OiAiICsgcmVxdWVzdDEuY29udGVudCk7CiAKICAgICAgICAgdmFyIHJlcXVlc3QyID0gV2Vi
SW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVsKCJu
ZXR3b3JrIikucmVxdWVzdHMubGVuZ3RoIC0gMV07CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWct
cGFyZW50LXNhbWUtb3JpZ2luLWRlbnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMt
ZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDEzNjAxNykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0
aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tZGVu
eS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw2IEBACiBodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRp
b25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCAt
IGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0
YS10YWctc3ViZnJhbWUtcGFyZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbCwgaHR0cCBzdGF0dXMg
Y29kZSAyMDA+CiBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9y
ZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtcGFyZW50LXNh
bWUtb3JpZ2luLWRlbnkuaHRtbCAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBk
b21haW4gTlNVUkxFcnJvckRvbWFpbiwgY29kZSAtOTk5LCBmYWlsaW5nIFVSTCAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0
aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwi
PgogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGRpc3BsYXkgJ2h0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVu
eS1tZXRhLXRhZy1zdWJmcmFtZS1wYXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sJyBpbiBhIGZy
YW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICdzYW1lb3JpZ2luJy4KLWFi
b3V0OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGFib3V0OmJsYW5r
LCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1l
T3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4t
ZGVueS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCi1hYm91
dDpibGFuayAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBhYm91dDpibGFuaywg
aHR0cCBzdGF0dXMgY29kZSAwPgogVGhlcmUgc2hvdWxkIGJlIG5vIGNvbnRlbnQgaW4gdGhlIGlm
cmFtZSBiZWxvdwogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvWEZy
YW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctaW4tYm9keS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDEzNjAxNykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
WEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDYgQEAKIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVu
eS1tZXRhLXRhZy1zdWJmcmFtZS1pbi1ib2R5Lmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5T
VVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMv
cmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLWluLWJvZHku
aHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWct
c3ViZnJhbWUtaW4tYm9keS5odG1sIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9y
IGRvbWFpbiBOU1VSTEVycm9yRG9tYWluLCBjb2RlIC05OTksIGZhaWxpbmcgVVJMICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1v
cHRpb25zLWRlbnktbWV0YS10YWctc3ViZnJhbWUtaW4tYm9keS5odG1sIj4KIENPTlNPTEUgTUVT
U0FHRTogUmVmdXNlZCB0byBkaXNwbGF5ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
WEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctc3Vi
ZnJhbWUtaW4tYm9keS5odG1sJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9w
dGlvbnMnIHRvICdkZW55Jy4KLWFib3V0OmJsYW5rIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJl
cXVlc3QgVVJMIGFib3V0OmJsYW5rLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRh
Zy1pbi1ib2R5Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkK
LWFib3V0OmJsYW5rIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGFib3V0OmJs
YW5rLCBodHRwIHN0YXR1cyBjb2RlIDA+CiBUaGVyZSBzaG91bGQgYmUgbm8gY29udGVudCBpbiB0
aGUgaWZyYW1lIGJlbG93CiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9w
dGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxMzYwMTcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlv
bnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0zLDggKzMsNiBAQAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1l
Lmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUtb3B0aW9ucy1k
ZW55LW1ldGEtdGFnLXN1YmZyYW1lLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMvcmVzb3VyY2VzL3gtZnJhbWUt
b3B0aW9ucy1kZW55LW1ldGEtdGFnLXN1YmZyYW1lLmh0bWwgLSBkaWRGYWlsTG9hZGluZ1dpdGhF
cnJvcjogPE5TRXJyb3IgZG9tYWluIE5TVVJMRXJyb3JEb21haW4sIGNvZGUgLTk5OSwgZmFpbGlu
ZyBVUkwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3Jlc291
cmNlcy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1zdWJmcmFtZS5odG1sIj4KIENPTlNP
TEUgTUVTU0FHRTogUmVmdXNlZCB0byBkaXNwbGF5ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvWEZyYW1lT3B0aW9ucy9yZXNvdXJjZXMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10
YWctc3ViZnJhbWUuaHRtbCcgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRp
b25zJyB0byAnZGVueScuCi1hYm91dDpibGFuayAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1
ZXN0IFVSTCBhYm91dDpibGFuaywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWcu
aHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQotYWJvdXQ6Ymxh
bmsgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgYWJvdXQ6YmxhbmssIGh0dHAg
c3RhdHVzIGNvZGUgMD4KIFRoZXJlIHNob3VsZCBiZSBubyBjb250ZW50IGluIHRoZSBpZnJhbWUg
YmVsb3cKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzYwMjApCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMS0yOCAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgZW1wdHkgbG9hZGlu
ZyB0byBEb2N1bWVudExvYWRlciwgc2ltcGxpZnkgRnJhbWVMb2FkZXI6OmluaXQoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTEyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgZXhwZWN0IHJl
c291cmNlIGxvYWQgY2FsbGJhY2tzIGZvciBlbXB0eSBsb2Fkcy4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1pZnJhbWUtbG9hZC1hbmQtZGVsZXRlLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZy
YW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFn
LWluLWJvZHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvWEZy
YW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmln
aW4tZGVueS1leHBlY3RlZC50eHQ6CisKIDIwMTItMTEtMjggIFNhZHJ1bCBIYWJpYiBDaG93ZGh1
cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cgcGx1
Z2lucyB0byBvcHQtaW4gdG8gcmVjZWl2ZSBzeW50aGV0aWMgbW91c2UgZXZlbnRzIG91dCBvZiB0
b3VjaCBldmVudHMuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCShyZXZpc2lvbiAxMzYwMTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MjMsNyArMTYyMyw4
IEBACiB7CiAgICAgLy8gQ29kZSBkdXBsaWNhdGVkIGZyb20gUmVuZGVyVmlldzo6RGlkQ29tbWl0
TG9hZEZvckZyYW1lLgogICAgIFRlc3RTaGVsbEV4dHJhRGF0YSogZXh0cmFEYXRhID0gc3RhdGlj
X2Nhc3Q8VGVzdFNoZWxsRXh0cmFEYXRhKj4oZnJhbWUtPmRhdGFTb3VyY2UoKS0+ZXh0cmFEYXRh
KCkpOwotICAgIGJvb2wgbm9uQmxhbmtQYWdlQWZ0ZXJSZXNldCA9IG1fcGFnZUlkID09IC0xICYm
IHN0cmNtcChmcmFtZS0+ZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJsKCkuc3BlYygpLmRhdGEo
KSwgImFib3V0OmJsYW5rIik7CisgICAgY29uc3QgV2ViVVJMJiB1cmwgPSBmcmFtZS0+ZGF0YVNv
dXJjZSgpLT5yZXF1ZXN0KCkudXJsKCk7CisgICAgYm9vbCBub25CbGFua1BhZ2VBZnRlclJlc2V0
ID0gbV9wYWdlSWQgPT0gLTEgJiYgIXVybC5pc0VtcHR5KCkgJiYgc3RyY21wKHVybC5zcGVjKCku
ZGF0YSgpLCAiYWJvdXQ6YmxhbmsiKTsKIAogICAgIGlmIChpc05ld05hdmlnYXRpb24gfHwgbm9u
QmxhbmtQYWdlQWZ0ZXJSZXNldCkgewogICAgICAgICAvLyBOZXcgbmF2aWdhdGlvbi4KSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEzNjAyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5
IEBACisyMDEyLTExLTI4ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgTW92ZSBlbXB0eSBsb2FkaW5nIHRvIERvY3VtZW50TG9hZGVyLCBzaW1wbGlmeSBGcmFt
ZUxvYWRlcjo6aW5pdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDE1MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYlZpZXdIb3N0Ojp1cGRhdGVGb3JDb21taXR0ZWRMb2FkKTogVGhpcyBmdW5jdGlvbiBk
b2Vzbid0IHBsYXkgbmljZWx5IHdpdGggZW1wdHkgdXJscyBhbmQgaW5jb3JyZWN0bHkKKyAgICAg
ICAgICAgIGludGVycHJldHMgdGhlbSBhcyBhIG5vbi1lbXB0eSBsb2FkLiBUaGlzIGNoYW5nZSBp
cyByZXF1aXJlZCBmb3IKKyAgICAgICAgICAgICBodHRwL3Rlc3RzL25hdmlnYXRpb24vbmV3LXdp
bmRvdy1yZWRpcmVjdC1oaXN0b3J5Lmh0bWwgdG8gY29udGludWUgdG8gcGFzcyBpbiBjaHJvbWl1
bS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQWJvdXRCbGFua0xvYWQu
Y3BwOiBUaGlzIHRlc3QgcmVsaWVzIG9uIGEgY2FsbGJhY2sgdGhhdCBubyBsb25nZXIKKyAgICAg
ICAgICAgICBpcyBzZW50IGZvciBhYm91dDpibGFuayBsb2Fkcy4gIEhvb2sgaW50byBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoKSBpbnN0ZWFkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkRmlu
aXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDEy
LTExLTI4ICBTYWRydWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIEFsbG93IHBsdWdpbnMgdG8gb3B0LWluIHRvIHJlY2VpdmUgc3lu
dGhldGljIG1vdXNlIGV2ZW50cyBvdXQgb2YgdG91Y2ggZXZlbnRzLgpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Fib3V0QmxhbmtMb2FkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQWJvdXRCbGFua0xvYWQuY3BwCShy
ZXZpc2lvbiAxMzU5MjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQWJv
dXRCbGFua0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTAgQEAKICAgICAK
IHN0YXRpYyBib29sIGRvbmU7CiAKLXN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNl
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tVUkxS
ZXF1ZXN0UmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiwg
Y29uc3Qgdm9pZCopCitzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKIHsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoInRleHQvaHRtbCIsIFV0aWw6Ok1J
TUVUeXBlRm9yV0tVUkxSZXNwb25zZShyZXNwb25zZSkpOwotCi0gICAgV0tGcmFtZVBvbGljeUxp
c3RlbmVyVXNlKGxpc3RlbmVyKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWltZVR5
cGUgPSBhZG9wdFdLKFdLRnJhbWVDb3B5TUlNRVR5cGUoZnJhbWUpKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoInRleHQvaHRtbCIsIG1pbWVUeXBlKTsKICAgICBkb25lID0gdHJ1ZTsKIH0KIApAQCAt
NDQsMTIgKzQzLDExIEBACiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0g
YWRvcHRXSyhXS0NvbnRleHRDcmVhdGUoKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXco
Y29udGV4dC5nZXQoKSk7CiAKLSAgICBXS1BhZ2VQb2xpY3lDbGllbnQgcG9saWN5Q2xpZW50Owot
ICAgIG1lbXNldCgmcG9saWN5Q2xpZW50LCAwLCBzaXplb2YocG9saWN5Q2xpZW50KSk7CisgICAg
V0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRlckNsaWVu
dCwgMCAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKKyAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNo
TG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOworICAgIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCksICZsb2FkZXJDbGllbnQpOwogCi0gICAgcG9saWN5
Q2xpZW50LmRlY2lkZVBvbGljeUZvclJlc3BvbnNlID0gZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U7
Ci0gICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJnBvbGljeUNs
aWVudCk7Ci0KICAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFdLVVJM
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhYm91dDpibGFuayIpKS5nZXQoKSk7CiAKICAgICBVdGls
OjpydW4oJmRvbmUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>