<?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>24731</bug_id>
          
          <creation_ts>2009-03-20 17:51:14 -0700</creation_ts>
          <short_desc>[Win] dropEffect is always set to &quot;copy&quot; at dragend</short_desc>
          <delta_ts>2009-11-22 11:46:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows Vista</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>30102</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sebastian Markbåge">sebastian</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aroben</cc>
    
    <cc>arv</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>jberlin</cc>
    
    <cc>jens</cc>
    
    <cc>jianli</cc>
    
    <cc>noel.gordon</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>114612</commentid>
    <comment_count>0</comment_count>
    <who name="Sebastian Markbåge">sebastian</who>
    <bug_when>2009-03-20 17:51:14 -0700</bug_when>
    <thetext>On drag and drop operations the dropEffect of dataTransfer is always set to &quot;copy&quot; at the dragend event. This makes it impossible to know whether or not the drag operation was canceled or should result in a move or link.

This seems to be Windows specific but it does occur in Chrome 1 and 2, Safari 4 and the nightly build.

The Mac versions works as expected and dropEffect is set to the last set value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128743</commentid>
    <comment_count>1</comment_count>
      <attachid>31992</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2009-06-28 10:55:27 -0700</bug_when>
    <thetext>Created attachment 31992
Test case for reading the value of event.dataTransfer.dropEffect in dragEnd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128744</commentid>
    <comment_count>2</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2009-06-28 11:51:56 -0700</bug_when>
    <thetext>Looks like this might be the culprit:

STDMETHODIMP WebDropSource::QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyState)
{

[....]

//FIXME: We need to figure out how to find out what actually happened in the drag &lt;rdar://problem/5015961&gt;
frame-&gt;eventHandler()-&gt;dragSourceEndedAt(generateMouseEvent(m_webView.get(), false), DragOperationCopy);

in \win\WebDropSource.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128749</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-28 13:23:00 -0700</bug_when>
    <thetext>This code from Gecko seems relevant: &lt;http://mxr.mozilla.org/mozilla-central/source/widget/src/windows/nsDragService.cpp#331&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128750</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-28 14:21:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/5015961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134644</commentid>
    <comment_count>5</comment_count>
      <attachid>33466</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2009-07-24 13:34:04 -0700</bug_when>
    <thetext>Created attachment 33466
Current state of investigating.

I am uploading this file so others can see where I have been going and where I am getting stuck.

Right now, I can&apos;t seem to make the changes to the value of pdwEffect stick in between calls the Windows DoDragDrop method (http://msdn.microsoft.com/en-us/library/ms678486(VS.85).aspx) to DragOver (http://msdn.microsoft.com/en-us/library/ms680129(VS.85).aspx) and Drop (http://msdn.microsoft.com/en-us/library/ms687242(VS.85).aspx).

I will next be uploading the values that I have seen when I have set breakpoints throughout the code.

THIS IS NOT A PATCH WAITING FOR REVIEW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134645</commentid>
    <comment_count>6</comment_count>
      <attachid>33467</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2009-07-24 13:39:31 -0700</bug_when>
    <thetext>Created attachment 33467
Output of putting in some breakpoints in Visual Studio and running the attached test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144105</commentid>
    <comment_count>7</comment_count>
      <attachid>38908</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-01 20:41:21 -0700</bug_when>
    <thetext>Created attachment 38908
Patch with test cases

Fixes this issue by implementing support for DHTML drag-and-drop operations in the Windows builds (these operations are already supported in the Mac OS X build).

The layout tests run via Dump Render Tree (DRT) only work in the Mac OS X build of DRT because DRT does not return the correct drop effect for a simulated mouse click in the Windows build. This should be addressed in another bug.

However, you can manually run the layout tests and compare to the corresponding expected file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144122</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-02 00:14:53 -0700</bug_when>
    <thetext>I wonder how much overlap there is here with bug 26700.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144227</commentid>
    <comment_count>9</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-09-02 09:13:55 -0700</bug_when>
    <thetext>My pending patch for bug 26700 (which has been out for review for more than a week now!) should address these problems and more. It includes a new layout test that checks the values of effectAllowed and dropEffect on every possible drag callback.

I&apos;d recommend closing this as a dup of 26700.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144259</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-02 11:55:00 -0700</bug_when>
    <thetext>I just built rev. 47975 under Windows both with and without the patch for bug #26700, and the patch does not appear to resolve the issue*.

Among the issues with drag-and-drop in the Windows build is that the keyboard state (i.e. modifier keys) are never looked at! Regardless of what DragController returns or the Clipboard state. That is, instead of determining the correct drop effect (i.e. move, copy, link) from the modifiers keys held down during the drag, hard coded values are used for the drop effect (either DragOperationCopy or DragOperationNone - see http://trac.webkit.org/browser/trunk/WebKit/win/WebDropSource.cpp#L112).

Briefly looking at Jens patch, it does not seem to address these issues.

*I should note that I get a build error when building rev. 47975, but it seems to be only with respect to building Dump Render Tree. Just in case, I will try to checkout a clean copy of rev. 47719, used in the patch for bug #26700, build and check to confirm.

(In reply to comment #9)
&gt; My pending patch for bug 26700 (which has been out for review for more than a
&gt; week now!) should address these problems and more. It includes a new layout
&gt; test that checks the values of effectAllowed and dropEffect on every possible
&gt; drag callback.
&gt; 
&gt; I&apos;d recommend closing this as a dup of 26700.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144266</commentid>
    <comment_count>11</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-09-02 12:37:54 -0700</bug_when>
    <thetext>True, there is no Windows-specific code in my patch, so it&apos;s not going to address that. This isn&apos;t a dup, then. But could you check whether there are other fixes in your patch that are already covered by mine, on the perhaps-optimistic assumption that mine gets landed first?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144268</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-02 12:50:37 -0700</bug_when>
    <thetext>I&apos;ll check. Notice, I only touch the Windows-specific files. So, hopefully there won&apos;t be much of a conflict.

(In reply to comment #11)
&gt; True, there is no Windows-specific code in my patch, so it&apos;s not going to
&gt; address that. This isn&apos;t a dup, then. But could you check whether there are
&gt; other fixes in your patch that are already covered by mine, on the
&gt; perhaps-optimistic assumption that mine gets landed first?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144413</commentid>
    <comment_count>13</comment_count>
      <attachid>38908</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-03 00:50:29 -0700</bug_when>
    <thetext>Comment on attachment 38908
Patch with test cases

wow.  What a copy/paste disaster.  Please re-write your tests to use some form of abstraction so that we don&apos;t just have 15 subtly altered boiler-plate tests.

Also tests are much nicer when written as js-only/dom only tests.
http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144534</commentid>
    <comment_count>14</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-09-03 09:41:11 -0700</bug_when>
    <thetext>You might be able to use the layout test I added in my patch (fast/events/drag-dropeffect.html), which seems to do similar things to your tests, but all in one. It might not fully pass without my patch, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144539</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-03 09:58:20 -0700</bug_when>
    <thetext>Will do.

On Jens suggestion, I might be able to use his test case. Otherwise, I&apos;ll re-write my test cases.

(In reply to comment #13)
&gt; (From update of attachment 38908 [details])
&gt; wow.  What a copy/paste disaster.  Please re-write your tests to use some form
&gt; of abstraction so that we don&apos;t just have 15 subtly altered boiler-plate tests.
&gt; 
&gt; Also tests are much nicer when written as js-only/dom only tests.
&gt; http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146013</commentid>
    <comment_count>16</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-09 16:55:18 -0700</bug_when>
    <thetext>Got sidetracked with another bug. I saw Jen&apos;s patch for bug #26700 was committed. I believe I can refactor my code a bit now that Jens patch is in. Also, condensing the test cases. Will post shortly.

(In reply to comment #15)
&gt; Will do.
&gt; 
&gt; On Jens suggestion, I might be able to use his test case. Otherwise, I&apos;ll
&gt; re-write my test cases.
&gt; 
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 38908 [details] [details])
&gt; &gt; wow.  What a copy/paste disaster.  Please re-write your tests to use some form
&gt; &gt; of abstraction so that we don&apos;t just have 15 subtly altered boiler-plate tests.
&gt; &gt; 
&gt; &gt; Also tests are much nicer when written as js-only/dom only tests.
&gt; &gt; http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146761</commentid>
    <comment_count>17</comment_count>
      <attachid>39479</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-11 15:21:20 -0700</bug_when>
    <thetext>Created attachment 39479
General test case

This is the condensed test case I came up with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146772</commentid>
    <comment_count>18</comment_count>
      <attachid>39483</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-11 15:38:33 -0700</bug_when>
    <thetext>Created attachment 39483
Path with test cases

Here&apos;s the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146863</commentid>
    <comment_count>19</comment_count>
      <attachid>39501</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-11 18:50:49 -0700</bug_when>
    <thetext>Created attachment 39501
Ouput from running general test on Mac

Here is the Mac output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146864</commentid>
    <comment_count>20</comment_count>
      <attachid>39502</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-11 18:53:07 -0700</bug_when>
    <thetext>Created attachment 39502
Output of general test on Windows

Here is the output of the general test under Windows. This test was done by hand since we need to fix bug #28902 to support DRT drag-and-drop tests under Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146867</commentid>
    <comment_count>21</comment_count>
      <attachid>39503</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-11 19:01:41 -0700</bug_when>
    <thetext>Created attachment 39503
Diff of Mac general test output to Win general test output

Notice, the Mac and Windows test differ in the handling of cases when effectAllowed=&quot;none&quot; and effectAllowed=&quot;uninitialized&quot;. The patch I uploaded follows the HTML 5 spec., but the current Mac version does not.

There are three options: 1) File another bug to bring the Mac version up to HTML 5 spec (I think Jen was attempting to do this in bug 26700), 2) Bring my patch inline with the Mac implementation. or 3) Let the Windows patch be a bit of ahead of the Mac version, skip the tests for effectAllowed=&quot;none&quot; and effectAllowed=&quot;uninitialized&quot; for now and we will do (1) or some Mac workaround to finally put DHTML drag-and-drop to rest.

Since this issue (and possible duplicates bug reports related to this issue) have been around for a long time, I am leaning towards (3). What are people&apos;s thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147130</commentid>
    <comment_count>22</comment_count>
      <attachid>39563</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-14 12:03:24 -0700</bug_when>
    <thetext>Created attachment 39563
Patch with manual test case

I renamed the test case file drag-and-drop.html and moved into WebCore/manual_test until we 1) fix the Mac build to handle the effectAllowed=&quot;uninitialized&quot; and effectAllowed=&quot;none&quot; cases according to the HTML 5 spec. and 2) Add drag-and-drop support to Windows DRT (see bug #28902).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147132</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-14 12:08:43 -0700</bug_when>
    <thetext>It would be better to check in a test with failing results on Mac and skipped on Windows, than to have a manual test.  Manual tests are mostly ignored as far as I can tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147156</commentid>
    <comment_count>24</comment_count>
      <attachid>39570</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-14 13:15:42 -0700</bug_when>
    <thetext>Created attachment 39570
Patch with test case

On Eric&apos;s and Mark&apos;s suggestion, I moved the layout test back to LayoutTests/fast/events and modified the file platform/win/Skipped so that the test is skipped under the Windows DRT.

The layout tests fails some of the test cases on the Mac because of the aforementioned reasons regarding effectsAllowed=&quot;uninitialized&quot; and effectsAllowed=&quot;none&quot;.

I didn&apos;t test this on Gtk or Qt, since I don&apos;t have a Gtk or Qt build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147160</commentid>
    <comment_count>25</comment_count>
      <attachid>39570</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-14 13:28:37 -0700</bug_when>
    <thetext>Comment on attachment 39570
Patch with test case

style:
 4569 DragOperation WebView::keyStateToDragOperation(DWORD grfKeyState) {

Why are we using a DragOperation enum to store/represent a mask?  Seems we should be using an &quot;unsigned&quot; no?
 4581         operation = (DragOperation)(DragOperationGeneric | DragOperationCopy);

What does this name mean? grfKeyState

We probably need a bug documenting how we fix this:
 854     // FIXME: This variable is part of a workaround. The drop effect (pdwEffect) passed to Drop is incorrect. 

Personally I find the &quot;testFailed&quot; &quot;testPassed&quot; output provided to you by fast/js/resources/js-test-pre.js more readable than custom solutions.  One could even make this a true js-test/script-test like the other recent drag-drop tests.  Certainly not a dealbreaker though.  http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree

It&apos;s difficult for me to read your test output, so it&apos;s difficult for me to tell what the state of this fix it.  It looks like there are a few test failures (which is fine, they just need to be more obvious).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147161</commentid>
    <comment_count>26</comment_count>
      <attachid>39570</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-14 13:29:23 -0700</bug_when>
    <thetext>Comment on attachment 39570
Patch with test case

I guess I&apos;ll r- this because it&apos;s difficult enough for me to read the test that I can&apos;t tell if this is right or not.  Kinda a lame reason, but I think it&apos;s still valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147185</commentid>
    <comment_count>27</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-14 14:08:46 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 39570 [details])
&gt; style:
&gt;  4569 DragOperation WebView::keyStateToDragOperation(DWORD grfKeyState) {
&gt; 
&gt; Why are we using a DragOperation enum to store/represent a mask?  Seems we
&gt; should be using an &quot;unsigned&quot; no?
&gt;  4581         operation = (DragOperation)(DragOperationGeneric |
&gt; DragOperationCopy);

Ok. Will change. This form was taken from the original file.

&gt; What does this name mean? grfKeyState

|grfKeyState| is the current state of the keyboard modifier keys.

This was left in from original file and conforms to the same variable passed to other WebView routines (such as WebView::DragEnter, WebView::DragOver, etc). Not sure what the name means, but it also conforms with the MSDN drag-and-drop docs, such as http://msdn.microsoft.com/en-us/library/ms680129(VS.85).aspx.

&gt; We probably need a bug documenting how we fix this:
&gt;  854     // FIXME: This variable is part of a workaround. The drop effect
&gt; (pdwEffect) passed to Drop is incorrect. 

Ok, will file a new bug.

&gt; Personally I find the &quot;testFailed&quot; &quot;testPassed&quot; output provided to you by
&gt; fast/js/resources/js-test-pre.js more readable than custom solutions.  One
&gt; could even make this a true js-test/script-test like the other recent drag-drop
&gt; tests.  Certainly not a dealbreaker though. 
&gt; http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree
&gt; 
&gt; It&apos;s difficult for me to read your test output, so it&apos;s difficult for me to
&gt; tell what the state of this fix it.  It looks like there are a few test
&gt; failures (which is fine, they just need to be more obvious).

Ok. I&apos;ll strip the &quot;debug&quot; messages from the test case and just make it say &quot;testFailed&quot; or &quot;testPassed&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147187</commentid>
    <comment_count>28</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-14 14:11:34 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Ok. I&apos;ll strip the &quot;debug&quot; messages from the test case and just make it say
&gt; &quot;testFailed&quot; or &quot;testPassed&quot;.

No. :)  &quot;testFailed&quot; and &quot;testPassed&quot; are functions used by most of our modern layout tests. :)  See fast/js/resources/js-test-pre.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147235</commentid>
    <comment_count>29</comment_count>
      <attachid>39581</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-14 17:50:33 -0700</bug_when>
    <thetext>Created attachment 39581
Patch with test case

Changed WebView::keyStateToDragOperation so that it returns a valid DropOperation. Cleaned up layout test. Filed bug #29264 to address drop effect issue and documented in WebView. Using workaround in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147236</commentid>
    <comment_count>30</comment_count>
      <attachid>39582</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-14 17:54:54 -0700</bug_when>
    <thetext>Created attachment 39582
Patch with test case

Oops, found tabs instead of spaces in layout test. Changed tabs to spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150349</commentid>
    <comment_count>31</comment_count>
      <attachid>40185</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-26 16:37:58 -0700</bug_when>
    <thetext>Created attachment 40185
Updated test case

I updated the test case to work under Firefox (for comparison). Will merge this test case into the patch for this bug shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150353</commentid>
    <comment_count>32</comment_count>
      <attachid>40187</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-26 19:22:43 -0700</bug_when>
    <thetext>Created attachment 40187
Patch with test case

Merged updated test case with patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150378</commentid>
    <comment_count>33</comment_count>
      <attachid>40187</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-09-27 07:26:57 -0700</bug_when>
    <thetext>Comment on attachment 40187
Patch with test case

&gt; +    // FIXME: This variable is part of a workaround. The drop effect (pdwEffect) passed to Drop is incorrect. 
&gt; +    // We set this variable in DragEnter and DragOver so that it can be used in Drop to set the correct drop effect. 
&gt; +    // Thus, on return from DoDragDrop we have the correct pdwEffect for the drag-and-drop operation.
&gt; +    // (see https://bugs.webkit.org/show_bug.cgi?id=29264)

I think this comment needs to be expanded upon. Who&apos;s bug are we working around?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150413</commentid>
    <comment_count>34</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-27 13:21:37 -0700</bug_when>
    <thetext>I filed a separate bug for this https://bugs.webkit.org/show_bug.cgi?id=29264.

In short, in WebView::Drop, we execute the assignment: *pdwEffect = DROPEFFECT_NONE &lt;http://trac.webkit.org/browser/trunk/WebKit/win/WebView.cpp?rev=48754#L4683&gt;. But now the caller of DoDragDrop(*) knows nothing about the actual drop effect because when method WebView::Drop returns, pdwEffect is always set to DROPEFFECT_NONE!

Expected result: the actual drop effect that will occur as a result of the drop. Is it a copy? a move? a link? none? WebView::Drop needs to set pdwEffect accordingly.

(*) DoDragDrag is a function that, as part of its event loop, calls WebView::Drop. When DoDragDrop returns, the pdwEffect parameter is the last set value (and WebView::Drop sets it last). See &lt;http://msdn.microsoft.com/en-us/library/ms678486%28VS.85%29.aspx&gt; for more details.

(In reply to comment #33)
&gt; (From update of attachment 40187 [details])
&gt; &gt; +    // FIXME: This variable is part of a workaround. The drop effect (pdwEffect) passed to Drop is incorrect. 
&gt; &gt; +    // We set this variable in DragEnter and DragOver so that it can be used in Drop to set the correct drop effect. 
&gt; &gt; +    // Thus, on return from DoDragDrop we have the correct pdwEffect for the drag-and-drop operation.
&gt; &gt; +    // (see https://bugs.webkit.org/show_bug.cgi?id=29264)
&gt; 
&gt; I think this comment needs to be expanded upon. Who&apos;s bug are we working
&gt; around?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150449</commentid>
    <comment_count>35</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-09-27 20:00:41 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; (From update of attachment 40187 [details] [details])
&gt; &gt; &gt; +    // FIXME: This variable is part of a workaround. The drop effect (pdwEffect) passed to Drop is incorrect. 
&gt; &gt; &gt; +    // We set this variable in DragEnter and DragOver so that it can be used in Drop to set the correct drop effect. 
&gt; &gt; &gt; +    // Thus, on return from DoDragDrop we have the correct pdwEffect for the drag-and-drop operation.
&gt; &gt; &gt; +    // (see https://bugs.webkit.org/show_bug.cgi?id=29264)
&gt; &gt; 
&gt; &gt; I think this comment needs to be expanded upon. Who&apos;s bug are we working
&gt; &gt; around?
&gt; 
&gt; I filed a separate bug for this https://bugs.webkit.org/show_bug.cgi?id=29264.

Great, thanks for filing it.

&gt; In short, in WebView::Drop, we execute the assignment: *pdwEffect =
&gt; DROPEFFECT_NONE
&gt; &lt;http://trac.webkit.org/browser/trunk/WebKit/win/WebView.cpp?rev=48754#L4683&gt;.
&gt; But now the caller of DoDragDrop(*) knows nothing about the actual drop effect
&gt; because when method WebView::Drop returns, pdwEffect is always set to
&gt; DROPEFFECT_NONE!
&gt; 
&gt; Expected result: the actual drop effect that will occur as a result of the
&gt; drop. Is it a copy? a move? a link? none? WebView::Drop needs to set pdwEffect
&gt; accordingly.

Yes, I understood this part. What I didn&apos;t understand was whose bug we&apos;re working around with m_lastDropEffect. Bug 29264 doesn&apos;t really explain this either. Do you think this is a bug in WebKit? Or a bug in Windows? Or a bug in DumpRenderTree? Or a bug somewhere else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150452</commentid>
    <comment_count>36</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-27 20:47:15 -0700</bug_when>
    <thetext>This is a bug in WebKit.

(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; (In reply to comment #33)
&gt; &gt; &gt; (From update of attachment 40187 [details] [details] [details])
&gt; &gt; &gt; &gt; +    // FIXME: This variable is part of a workaround. The drop effect (pdwEffect) passed to Drop is incorrect. 
&gt; &gt; &gt; &gt; +    // We set this variable in DragEnter and DragOver so that it can be used in Drop to set the correct drop effect. 
&gt; &gt; &gt; &gt; +    // Thus, on return from DoDragDrop we have the correct pdwEffect for the drag-and-drop operation.
&gt; &gt; &gt; &gt; +    // (see https://bugs.webkit.org/show_bug.cgi?id=29264)
&gt; &gt; &gt; 
&gt; &gt; &gt; I think this comment needs to be expanded upon. Who&apos;s bug are we working
&gt; &gt; &gt; around?
&gt; &gt; 
&gt; &gt; I filed a separate bug for this https://bugs.webkit.org/show_bug.cgi?id=29264.
&gt; 
&gt; Great, thanks for filing it.
&gt; 
&gt; &gt; In short, in WebView::Drop, we execute the assignment: *pdwEffect =
&gt; &gt; DROPEFFECT_NONE
&gt; &gt; &lt;http://trac.webkit.org/browser/trunk/WebKit/win/WebView.cpp?rev=48754#L4683&gt;.
&gt; &gt; But now the caller of DoDragDrop(*) knows nothing about the actual drop effect
&gt; &gt; because when method WebView::Drop returns, pdwEffect is always set to
&gt; &gt; DROPEFFECT_NONE!
&gt; &gt; 
&gt; &gt; Expected result: the actual drop effect that will occur as a result of the
&gt; &gt; drop. Is it a copy? a move? a link? none? WebView::Drop needs to set pdwEffect
&gt; &gt; accordingly.
&gt; 
&gt; Yes, I understood this part. What I didn&apos;t understand was whose bug we&apos;re
&gt; working around with m_lastDropEffect. Bug 29264 doesn&apos;t really explain this
&gt; either. Do you think this is a bug in WebKit? Or a bug in Windows? Or a bug in
&gt; DumpRenderTree? Or a bug somewhere else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151034</commentid>
    <comment_count>37</comment_count>
      <attachid>40187</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-29 13:58:08 -0700</bug_when>
    <thetext>Comment on attachment 40187
Patch with test case

Style:
+WebCore::PlatformMouseEvent generateMouseEvent(WebView* webView, bool isDrag);
(no arg names when they don&apos;t help)

Style:
 4618 DragOperation WebView::keyStateToDragOperation(DWORD grfKeyState) {

You could remove these nodes when running under DRT after the test completes so as to simplify the test output:
 effectAllowed  
 8 
 9 Drop the red square onto me.
 10 
 11 Expects dropEffect 
 12 Items that can be dragged to the drop target:
 13 
 14 Square

Extra line?
93         else
 94             shouldBeEqualToString(&apos;event.dataTransfer.dropEffect&apos;, &apos;none&apos;);
 95             
 96     }

I would have probably written these differently:

 102         if (chosenDropEffect == &quot;copy&quot; &amp;&amp; (allowedDropEffect == &quot;copy&quot; || allowedDropEffect == &quot;copyLink&quot; 
 103                                             || allowedDropEffect == &quot;copyMove&quot; || allowedDropEffect == &quot;uninitialized&quot;
 104                                             || allowedDropEffect == &quot;all&quot;))

if (chosenDropEffect == &quot;copy&quot; &amp;&amp; [&quot;copy&quot;, &quot;copyLink&quot;, &quot;copyMove&quot;, &quot;unitialized&quot;, &quot;all&quot;].contains(allowedDropEffect))

I think that woudl work at least.

You should land bug 28902 and then you don&apos;t need this change:
 # Windows DRT drag-and-drop does not work correctly (https://bugs.webkit.org/show_bug.cgi?id=28902)
 109 fast/events/drag-and-drop.html
or?

Adam or Oliver are really the right people to review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151359</commentid>
    <comment_count>38</comment_count>
      <attachid>40400</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-30 14:34:32 -0700</bug_when>
    <thetext>Created attachment 40400
Patch with test case

Now that bug #28902 has been fixed, the layout test can run under Windows DRT.

Updated the patch based on the Eric&apos;s suggestions. Also, I some changes to the ChangeLog based on Adam&apos;s suggestions on the patch for bug #28902.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151636</commentid>
    <comment_count>39</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-01 11:33:39 -0700</bug_when>
    <thetext>I misspoke, see my comment for bug #29264.

(In reply to comment #36)
&gt; This is a bug in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151643</commentid>
    <comment_count>40</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-01 11:49:07 -0700</bug_when>
    <thetext>With Jessie&apos;s permission, I am re-assigning this bug to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151675</commentid>
    <comment_count>41</comment_count>
      <attachid>40400</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-10-01 12:59:09 -0700</bug_when>
    <thetext>Comment on attachment 40400
Patch with test case

&gt; +++ WebKit/win/WebDropSource.h	(working copy)
&gt; @@ -30,8 +30,12 @@
&gt;  #include &quot;COMPtr.h&quot;
&gt;  #include &lt;objidl.h&gt;
&gt;  
&gt; +#include &lt;WebCore/PlatformMouseEvent.h&gt;
&gt; +
&gt;  class WebView;
&gt;  
&gt; +WebCore::PlatformMouseEvent generateMouseEvent(WebView*, bool isDrag);

Can we just forward-declare PlatformMouseEvent instead of including its header?

&gt; +    // Conforms to Microsoft&apos;s key combinations as documented for 
&gt; +    // IDropTarget::DragOver. Note, |grfKeyState| is the current 
&gt; +    // state of the keyboard modifier keys on the keyboard. See:
&gt; +    // http://msdn.microsoft.com/en-us/library/ms680129(VS.85).aspx
&gt; +    //
&gt; +    // By default, we return the source drag operation to conform with the Mac OS X build.
&gt; +    
&gt; +    DragOperation operation = m_page-&gt;dragController()-&gt;sourceDragOperation();
&gt; +    if (operation == DragOperationNone)
&gt; +        operation = DragOperationCopy;

This shouldn&apos;t have to be done in platform-specific code. Is this what&apos;s keeping Mac from matching HTML5? At the very least there should be a FIXME here. It would also be good to file a bug about the issue.

&gt; +    WebCore::DragOperation keyStateToDragOperation(DWORD grfKeyState);

I think this can be a const member function.

&gt; +        bool isUIDelegate = false;
&gt;          if (SUCCEEDED(m_webView-&gt;uiDelegate(&amp;ui))) {
&gt;              COMPtr&lt;IWebUIDelegatePrivate&gt; uiPrivate;
&gt;              if (SUCCEEDED(ui-&gt;QueryInterface(IID_IWebUIDelegatePrivate, (void**)&amp;uiPrivate)))
&gt;                  if (SUCCEEDED(uiPrivate-&gt;doDragDrop(m_webView, dataObject.get(), source.get(), okEffect, &amp;effect)))
&gt; -                    return;
&gt; +                    isUIDelegate = true;
&gt;          }
&gt;  
&gt; -        DoDragDrop(dataObject.get(), source.get(), okEffect, &amp;effect);
&gt; +        DragOperation operation = DragOperationNone;
&gt; +        if (isUIDelegate || DoDragDrop(dataObject.get(), source.get(), okEffect, &amp;effect) == DRAGDROP_S_DROP) {

Could we just make the UI delegate callback return the same values as DoDragDrop? DRT is the only implementor of this callback, so it should be easy to change.

I&apos;d like to figure out what&apos;s going on with sourceDragOperation before r+ing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151888</commentid>
    <comment_count>42</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-02 10:43:21 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 40400 [details])
&gt; &gt; +++ WebKit/win/WebDropSource.h	(working copy)
&gt; &gt; @@ -30,8 +30,12 @@
&gt; &gt;  #include &quot;COMPtr.h&quot;
&gt; &gt;  #include &lt;objidl.h&gt;
&gt; &gt;  
&gt; &gt; +#include &lt;WebCore/PlatformMouseEvent.h&gt;
&gt; &gt; +
&gt; &gt;  class WebView;
&gt; &gt;  
&gt; &gt; +WebCore::PlatformMouseEvent generateMouseEvent(WebView*, bool isDrag);
&gt; 
&gt; Can we just forward-declare PlatformMouseEvent instead of including its header?

Sure.

&gt; 
&gt; &gt; +    // Conforms to Microsoft&apos;s key combinations as documented for 
&gt; &gt; +    // IDropTarget::DragOver. Note, |grfKeyState| is the current 
&gt; &gt; +    // state of the keyboard modifier keys on the keyboard. See:
&gt; &gt; +    // http://msdn.microsoft.com/en-us/library/ms680129(VS.85).aspx
&gt; &gt; +    //
&gt; &gt; +    // By default, we return the source drag operation to conform with the Mac OS X build.
&gt; &gt; +    
&gt; &gt; +    DragOperation operation = m_page-&gt;dragController()-&gt;sourceDragOperation();
&gt; &gt; +    if (operation == DragOperationNone)
&gt; &gt; +        operation = DragOperationCopy;
&gt; 
&gt; This shouldn&apos;t have to be done in platform-specific code. Is this what&apos;s
&gt; keeping Mac from matching HTML5? At the very least there should be a FIXME
&gt; here. It would also be good to file a bug about the issue.
&gt; 

No, this is not keeping the Mac from matching HTML5. These lines emulate similar functionality as WebHTMLView::draggingSourceOperationMaskForLocal:
(which is called at the start of a Cocoa drag operation).

&gt; &gt; +    WebCore::DragOperation keyStateToDragOperation(DWORD grfKeyState);
&gt; 
&gt; I think this can be a const member function.

I&apos;ll change.

&gt; 
&gt; &gt; +        bool isUIDelegate = false;
&gt; &gt;          if (SUCCEEDED(m_webView-&gt;uiDelegate(&amp;ui))) {
&gt; &gt;              COMPtr&lt;IWebUIDelegatePrivate&gt; uiPrivate;
&gt; &gt;              if (SUCCEEDED(ui-&gt;QueryInterface(IID_IWebUIDelegatePrivate, (void**)&amp;uiPrivate)))
&gt; &gt;                  if (SUCCEEDED(uiPrivate-&gt;doDragDrop(m_webView, dataObject.get(), source.get(), okEffect, &amp;effect)))
&gt; &gt; -                    return;
&gt; &gt; +                    isUIDelegate = true;
&gt; &gt;          }
&gt; &gt;  
&gt; &gt; -        DoDragDrop(dataObject.get(), source.get(), okEffect, &amp;effect);
&gt; &gt; +        DragOperation operation = DragOperationNone;
&gt; &gt; +        if (isUIDelegate || DoDragDrop(dataObject.get(), source.get(), okEffect, &amp;effect) == DRAGDROP_S_DROP) {
&gt; 
&gt; Could we just make the UI delegate callback return the same values as
&gt; DoDragDrop? DRT is the only implementor of this callback, so it should be easy
&gt; to change.

I&apos;ll look into this.

&gt; 
&gt; I&apos;d like to figure out what&apos;s going on with sourceDragOperation before r+ing
&gt; this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151890</commentid>
    <comment_count>43</comment_count>
      <attachid>40400</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-02 10:44:14 -0700</bug_when>
    <thetext>Comment on attachment 40400
Patch with test case

Clearing the review flag while I work on an updated patch based on Adam&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151961</commentid>
    <comment_count>44</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-10-02 13:15:03 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; (In reply to comment #41)
&gt; &gt; (From update of attachment 40400 [details] [details])
&gt; &gt; &gt; +    // Conforms to Microsoft&apos;s key combinations as documented for 
&gt; &gt; &gt; +    // IDropTarget::DragOver. Note, |grfKeyState| is the current 
&gt; &gt; &gt; +    // state of the keyboard modifier keys on the keyboard. See:
&gt; &gt; &gt; +    // http://msdn.microsoft.com/en-us/library/ms680129(VS.85).aspx
&gt; &gt; &gt; +    //
&gt; &gt; &gt; +    // By default, we return the source drag operation to conform with the Mac OS X build.
&gt; &gt; &gt; +    
&gt; &gt; &gt; +    DragOperation operation = m_page-&gt;dragController()-&gt;sourceDragOperation();
&gt; &gt; &gt; +    if (operation == DragOperationNone)
&gt; &gt; &gt; +        operation = DragOperationCopy;
&gt; &gt; 
&gt; &gt; This shouldn&apos;t have to be done in platform-specific code. Is this what&apos;s
&gt; &gt; keeping Mac from matching HTML5? At the very least there should be a FIXME
&gt; &gt; here. It would also be good to file a bug about the issue.
&gt; &gt; 
&gt; 
&gt; No, this is not keeping the Mac from matching HTML5. These lines emulate
&gt; similar functionality as WebHTMLView::draggingSourceOperationMaskForLocal:
&gt; (which is called at the start of a Cocoa drag operation).

OK. I still think a FIXME + bug would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153958</commentid>
    <comment_count>45</comment_count>
      <attachid>41010</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-11 18:23:45 -0700</bug_when>
    <thetext>Created attachment 41010
Patch with test cases

Updated patch now that bugs #30102, #30107, and #30175 have been resolved.

Also made modifications as suggested by Adam.

Need to compile and test this on Windows. I hope to do this tomorrow (10/12).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154158</commentid>
    <comment_count>46</comment_count>
      <attachid>41057</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-12 14:09:42 -0700</bug_when>
    <thetext>Created attachment 41057
Patch with test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154241</commentid>
    <comment_count>47</comment_count>
      <attachid>41057</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-10-12 20:01:39 -0700</bug_when>
    <thetext>Comment on attachment 41057
Patch with test case

&gt; Index: WebKit/win/ChangeLog
&gt; ===================================================================
&gt; --- WebKit/win/ChangeLog	(revision 49429)
&gt; +++ WebKit/win/ChangeLog	(working copy)
&gt; @@ -1,3 +1,38 @@
&gt; +2009-10-11  Daniel Bates  &lt;dbates@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=24731
&gt; +        And
&gt; +        rdar://problem/5015961
&gt; +        
&gt; +        Implements support for DHTML drag-and-drop operations (i.e. ondragstart, ondragend)
&gt; +        in the Windows build so that it conforms to the Mac OS X build. Hence, dropEffect is
&gt; +        correctly set.
&gt; +        
&gt; +        The WebView and WebDropSource drag-and-drop functions, as called by function
&gt; +        DoDragDrop in its event loop, neither used the drop effect as specified by
&gt; +        event.dataTransfer.dropEffect nor respected event.dataTransfer.effectsAllowed.
&gt; +        Instead, these functions defaulted to some hardcoded drop effect and set of
&gt; +        allowed drop effects, respectively.
&gt; +
&gt; +        Tests: fast/events/drag-and-drop.html
&gt; +
&gt; +        * WebCoreSupport/WebDragClient.cpp:
&gt; +        (WebDragClient::startDrag):
&gt; +        * WebDropSource.cpp:
&gt; +        (WebDropSource::QueryContinueDrag): Moved call to EventHandler::dragSourceEndedAt
&gt; +        into method WebDragClient::startDrag.
&gt; +        * WebDropSource.h:
&gt; +        * WebView.cpp:
&gt; +        (WebView::keyStateToDragOperation): Fixes &lt;rdar://problem/5015961&gt;. Determines
&gt; +        appropriate drop effect from state of keyboard and allowed effects
&gt; +        m_page-&gt;dragController()-&gt;sourceDragOperation().
&gt; +        (WebView::DragEnter):
&gt; +        (WebView::DragOver):
&gt; +        (WebView::Drop):
&gt; +        * WebView.h:
&gt; +
&gt;  2009-10-09  Adam Barth  &lt;abarth@webkit.org&gt;
&gt;  
&gt;          Reviewed by Darin Adler.
&gt; Index: WebKit/win/WebDropSource.cpp
&gt; ===================================================================
&gt; --- WebKit/win/WebDropSource.cpp	(revision 49291)
&gt; +++ WebKit/win/WebDropSource.cpp	(working copy)
&gt; @@ -106,10 +106,6 @@ STDMETHODIMP WebDropSource::QueryContinu
&gt;  {
&gt;      if (fEscapePressed || !(grfKeyState &amp; (MK_LBUTTON|MK_RBUTTON))) {
&gt;          m_dropped = !fEscapePressed;
&gt; -        if (Page* page = m_webView-&gt;page())
&gt; -            if (Frame* frame = page-&gt;mainFrame()) 
&gt; -                //FIXME: We need to figure out how to find out what actually happened in the drag &lt;rdar://problem/5015961&gt;
&gt; -                frame-&gt;eventHandler()-&gt;dragSourceEndedAt(generateMouseEvent(m_webView.get(), false), fEscapePressed ? DragOperationNone : DragOperationCopy);
&gt;          return fEscapePressed? DRAGDROP_S_CANCEL : DRAGDROP_S_DROP;
&gt;      } else if (Page* page = m_webView-&gt;page())
&gt;          if (Frame* frame = page-&gt;mainFrame()) 
&gt; Index: WebKit/win/WebDropSource.h
&gt; ===================================================================
&gt; --- WebKit/win/WebDropSource.h	(revision 49291)
&gt; +++ WebKit/win/WebDropSource.h	(working copy)
&gt; @@ -32,6 +32,12 @@
&gt;  
&gt;  class WebView;
&gt;  
&gt; +namespace WebCore {
&gt; +class PlatformMouseEvent;
&gt; +} // namespace WebCore

I like that you&apos;re following our coding style for namespaces in headers. But I think we normally use a different style for a &quot;non-main&quot; namespace. Unfortunately this isn&apos;t documented anywhere! I think our de facto style in this case is to indent the &quot;class&quot; line and leave off the comment after the closing brace.

&gt; @@ -172,16 +172,26 @@ void WebDragClient::startDrag(DragImageR
&gt;          }
&gt;  
&gt;          DWORD okEffect = draggingSourceOperationMaskToDragCursors(m_webView-&gt;page()-&gt;dragController()-&gt;sourceDragOperation());
&gt; -        DWORD effect;
&gt; +        DWORD effect = DROPEFFECT_NONE;
&gt;          COMPtr&lt;IWebUIDelegate&gt; ui;
&gt; +        HRESULT hr = DRAGDROP_S_CANCEL;
&gt;          if (SUCCEEDED(m_webView-&gt;uiDelegate(&amp;ui))) {
&gt;              COMPtr&lt;IWebUIDelegatePrivate&gt; uiPrivate;
&gt;              if (SUCCEEDED(ui-&gt;QueryInterface(IID_IWebUIDelegatePrivate, (void**)&amp;uiPrivate)))
&gt; -                if (SUCCEEDED(uiPrivate-&gt;doDragDrop(m_webView, dataObject.get(), source.get(), okEffect, &amp;effect)))
&gt; -                    return;
&gt; +                hr = uiPrivate-&gt;doDragDrop(m_webView, dataObject.get(), source.get(), okEffect, &amp;effect);
&gt; +        } else
&gt; +            hr = DoDragDrop(dataObject.get(), source.get(), okEffect, &amp;effect);

This has the same bug as the last version of this patch where you&apos;re requiring all implementors of IWebUIDelegatePrivate to implement doDragDrop. I think all you need to do is change the &quot;else&quot; to &quot;if (hr == E_NOTIMPL)&quot;. That way implementors of IWebUIDelegatePrivate can just return E_NOTIMPL from doDragDrop and WebKit will fall back to the default behavior.

Once we get this doDragDrop thing fixed, I think this is ready to go!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154254</commentid>
    <comment_count>48</comment_count>
      <attachid>41082</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-12 21:44:31 -0700</bug_when>
    <thetext>Created attachment 41082
Patch with test cases

Updated patch based on Adam&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154279</commentid>
    <comment_count>49</comment_count>
      <attachid>41082</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-10-12 23:24:31 -0700</bug_when>
    <thetext>Comment on attachment 41082
Patch with test cases

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154885</commentid>
    <comment_count>50</comment_count>
      <attachid>41082</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-15 13:40:08 -0700</bug_when>
    <thetext>Comment on attachment 41082
Patch with test cases

Clearing flags on attachment: 41082

Committed r49651: &lt;http://trac.webkit.org/changeset/49651&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154886</commentid>
    <comment_count>51</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-15 13:40:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165734</commentid>
    <comment_count>52</comment_count>
    <who name="Sebastian Markbåge">sebastian</who>
    <bug_when>2009-11-22 10:05:48 -0800</bug_when>
    <thetext>(In reply to comment #51)
&gt; All reviewed patches have been landed.  Closing bug.

This has been fixed for dragEnd event. However, HTML5 also defines that the dropEffect is available on the drop event as well. Currently it seems to always be set to undefined at drop. Suggest: reopen or new bug report?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165746</commentid>
    <comment_count>53</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2009-11-22 11:46:31 -0800</bug_when>
    <thetext>(In reply to comment #52)
&gt; (In reply to comment #51)
&gt; &gt; All reviewed patches have been landed.  Closing bug.
&gt; 
&gt; This has been fixed for dragEnd event. However, HTML5 also defines that the
&gt; dropEffect is available on the drop event as well. Currently it seems to always
&gt; be set to undefined at drop. Suggest: reopen or new bug report?

I would suggest a new bug report with a test case that isolates checking the dropEffect on the drop event.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31992</attachid>
            <date>2009-06-28 10:55:27 -0700</date>
            <delta_ts>2009-06-28 10:55:27 -0700</delta_ts>
            <desc>Test case for reading the value of event.dataTransfer.dropEffect in dragEnd</desc>
            <filename>TestDropEffect.html</filename>
            <type>text/html</type>
            <size>2031</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">PGh0bWw+DQogICAgPGhlYWQ+DQogICAgICAgIDx0aXRsZT48L3RpdGxlPg0KICAgICAgICA8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICAgICAgLnRlc3Qgew0KICAgICAgICAgICAgICAg
IGJhY2tncm91bmQtY29sb3I6ICNjY2M7DQogICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29s
aWQgIzMzMzsNCiAgICAgICAgICAgICAgICB3aWR0aDogMjAwcHg7DQogICAgICAgICAgICAgICAg
dGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweDsNCiAgICAg
ICAgICAgIH0NCg0KICAgICAgICAgICAgI2RyYWdnYWJsZSB7DQogICAgICAgICAgICAgICAgLXdl
YmtpdC11c2VyLWRyYWc6IGVsZW1lbnQ7DQogICAgICAgICAgICAgICAgLXdlYmtpdC11c2VyLXNl
bGVjdDogbm9uZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgI2Ry
b3BUYXJnZXQgew0KICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5Y2VhZGU7DQog
ICAgICAgICAgICB9DQogICAgICAgIDwvc3R5bGU+DQoNCiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPg0KICAgICAgICANCiAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrRHJv
cEVmZmVjdChldmVudCwgbmFtZSkgew0KICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZm
ZWN0IGluICcgKyBuYW1lICsgJzogJyArIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ICsg
J1xuJykpOw0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0
KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnREcmFnKCkgew0K
ICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gIm1vdmUi
Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICBmdW5jdGlvbiBkcmFn
RW50ZXJlZCgpIHsNCiAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVj
dCA9ICJtb3ZlIjsNCiAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdkcmFn
RW50ZXJlZCcpOw0KICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQogICAg
ICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdPdmVyKCkg
ew0KICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICANCiAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbmQoKSB7DQogICAgICAg
ICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOw0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgDQogICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJvcCgpIHsNCiAg
ICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdyZWNlaXZlRHJvcCcpOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgIDwvc2NyaXB0Pg0KICAgIDwvaGVhZD4N
CiAgICA8Ym9keT4NCiAgICAgICAgPGRpdiBpZD0iZHJhZ2dhYmxlIiBjbGFzcz0idGVzdCIgb25k
cmFnc3RhcnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+DQogICAgICAgICAg
ICBEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQ0KICAgICAgICA8L2Rpdj4NCiAgICAgICAg
PGJyIC8+DQogICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIGNsYXNzPSJ0ZXN0IiBvbmRyYWdl
bnRlcj0iZHJhZ0VudGVyZWQoKSIgb25kcmFnb3Zlcj0iZHJhZ092ZXIoKSIgb25kcm9wPSJyZWNl
aXZlRHJvcCgpIj4NCiAgICAgICAgICAgIERST1AgVEFSR0VULg0KICAgICAgICA8L2Rpdj4NCiAg
ICAgICAgPGJyIC8+DQogICAgPC9ib2R5Pg0KPC9odG1sPg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>33466</attachid>
            <date>2009-07-24 13:34:04 -0700</date>
            <delta_ts>2009-09-01 20:41:21 -0700</delta_ts>
            <desc>Current state of investigating.</desc>
            <filename>windowsDropEffectInvestigation.txt</filename>
            <type>text/plain</type>
            <size>6436</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vQ2xpcGJvYXJkLmNwcAkocmV2aXNpb24gNDYzNTQpCisrKyBXZWJDb3JlL2RvbS9DbGlwYm9h
cmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBEcmFnT3BlcmF0
aW9uIGRyYWdPcEZyb21JRU9wKGNvbnMKICAgICBpZiAob3AgPT0gImxpbmsiKQogICAgICAgICBy
ZXR1cm4gRHJhZ09wZXJhdGlvbkxpbms7CiAgICAgaWYgKG9wID09ICJtb3ZlIikKLSAgICAgICAg
cmV0dXJuIERyYWdPcGVyYXRpb25HZW5lcmljOworICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlv
bk1vdmU7CiAgICAgaWYgKG9wID09ICJjb3B5TGluayIpCiAgICAgICAgIHJldHVybiAoRHJhZ09w
ZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uTGluayk7CiAgICAgaWYg
KG9wID09ICJjb3B5TW92ZSIpCkluZGV4OiBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAJKHJldmlzaW9uIDQ2MzU0
KQorKysgV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNiBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIK
IAotI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2
ZW50SGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KQEAgLTUxLDcgKzUwLDcgQEAgSFJFU1VMVCBXZWJEcm9wU291cmNlOjpjcmVh
dGVJbnN0YW5jZShXZQogCiBXZWJEcm9wU291cmNlOjpXZWJEcm9wU291cmNlKFdlYlZpZXcqIHdl
YlZpZXcpCiA6IG1fcmVmKDEpCi0sIG1fZHJvcHBlZChmYWxzZSkgCissIG1fZHJvcHBlZChmYWxz
ZSkKICwgbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTkxLDcg
KzkwLDcgQEAgU1RETUVUSE9ESU1QXyhVTE9ORykgV2ViRHJvcFNvdXJjZTo6UmVsZQogICAgIHJl
dHVybiBjOwogfQogCi1QbGF0Zm9ybU1vdXNlRXZlbnQgZ2VuZXJhdGVNb3VzZUV2ZW50KFdlYlZp
ZXcqIHdlYlZpZXcsIGJvb2wgaXNEcmFnKSB7CitQbGF0Zm9ybU1vdXNlRXZlbnQgV2ViRHJvcFNv
dXJjZTo6Z2VuZXJhdGVNb3VzZUV2ZW50KFdlYlZpZXcqIHdlYlZpZXcsIGJvb2wgaXNEcmFnKSB7
CiAgICAgUE9JTlRMIHB0OwogICAgIDo6R2V0Q3Vyc29yUG9zKChMUFBPSU5UKSZwdCk7CiAgICAg
UE9JTlRMIGxvY2FscHQgPSBwdDsKQEAgLTEwNiwxMCArMTA1LDYgQEAgU1RETUVUSE9ESU1QIFdl
YkRyb3BTb3VyY2U6OlF1ZXJ5Q29udGludQogewogICAgIGlmIChmRXNjYXBlUHJlc3NlZCB8fCAh
KGdyZktleVN0YXRlICYgKE1LX0xCVVRUT058TUtfUkJVVFRPTikpKSB7CiAgICAgICAgIG1fZHJv
cHBlZCA9ICFmRXNjYXBlUHJlc3NlZDsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3dlYlZp
ZXctPnBhZ2UoKSkKLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJh
bWUoKSkgCi0gICAgICAgICAgICAgICAgLy9GSVhNRTogV2UgbmVlZCB0byBmaWd1cmUgb3V0IGhv
dyB0byBmaW5kIG91dCB3aGF0IGFjdHVhbGx5IGhhcHBlbmVkIGluIHRoZSBkcmFnIDxyZGFyOi8v
cHJvYmxlbS81MDE1OTYxPgotICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
ZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1fd2ViVmlldy5nZXQoKSwgZmFs
c2UpLCBmRXNjYXBlUHJlc3NlZCA/IERyYWdPcGVyYXRpb25Ob25lIDogRHJhZ09wZXJhdGlvbkNv
cHkpOwogICAgICAgICByZXR1cm4gZkVzY2FwZVByZXNzZWQ/IERSQUdEUk9QX1NfQ0FOQ0VMIDog
RFJBR0RST1BfU19EUk9QOwogICAgIH0gZWxzZSBpZiAoUGFnZSogcGFnZSA9IG1fd2ViVmlldy0+
cGFnZSgpKQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCkpIApA
QCAtMTE4LDcgKzExMyw3IEBAIFNURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpRdWVyeUNvbnRp
bnUKICAgICByZXR1cm4gU19PSzsKIH0KIAotU1RETUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6Okdp
dmVGZWVkYmFjayhEV09SRCkKK1NURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpHaXZlRmVlZGJh
Y2soRFdPUkQgcGR3RWZmZWN0KQogewogICAgIHJldHVybiBEUkFHRFJPUF9TX1VTRURFRkFVTFRD
VVJTT1JTOwogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgJKHJldmlzaW9uIDQ2MzU0KQorKysgV2ViS2l0
L3dpbi9XZWJEcm9wU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCwxNyBAQAog
I2RlZmluZSBXZWJEcm9wU291cmNlX2gKIAogI2luY2x1ZGUgIkNPTVB0ci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTW91c2VF
dmVudC5oPgogI2luY2x1ZGUgPG9iamlkbC5oPgogCiBjbGFzcyBXZWJWaWV3OwogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgRHJhZ09wZXJhdGlvbjsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQ7
Cit9CisKIGNsYXNzIFdlYkRyb3BTb3VyY2UgOiBwdWJsaWMgSURyb3BTb3VyY2UKIHsKIHB1Ymxp
YzoKQEAgLTQyLDYgKzQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBHaXZlRmVlZGJhY2soRFdPUkQgZHdFZmZlY3QpOwogCiAgICAgc3RhdGljIEhS
RVNVTFQgY3JlYXRlSW5zdGFuY2UoV2ViVmlldyogd2ViVmlldywgSURyb3BTb3VyY2UqKiByZXN1
bHQpOworCisgICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGdlbmVyYXRlTW91c2VFdmVu
dChXZWJWaWV3KiB3ZWJWaWV3LCBib29sIGlzRHJhZyk7CiBwcml2YXRlOgogICAgIFdlYkRyb3BT
b3VyY2UoV2ViVmlldyogd2ViVmlldyk7CiAgICAgfldlYkRyb3BTb3VyY2UoKTsKSW5kZXg6IFdl
YktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAkocmV2aXNpb24gNDYzNTQpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NTE3LDcgKzQ1MTcsNyBAQCBzdGF0aWMgRHJhZ09wZXJhdGlvbiBrZXlTdGF0ZVRv
RHJhZ09wZXJhCiAgICAgLy9GSVhNRTogVGhpcyBpcyBjdXJyZW50bHkgdmVyeSBzaW1wbGUsIGl0
IG1heSBuZWVkIHRvIGFjdHVhbGx5CiAgICAgLy93b3JrIG91dCBhbiBhcHByb3ByaWF0ZSBEcmFn
T3BlcmF0aW9uIGluIGZ1dHVyZSAtLSBob3dldmVyIHRoaXMKICAgICAvL2JlaGF2aW91ciBhcHBl
YXJzIHRvIG1hdGNoIEZpcmVGb3gKLSAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVy
YXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxpbmspOworICAgIHJldHVybiAoRHJhZ09wZXJhdGlv
bikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uTGluayB8IERyYWdPcGVyYXRpb25N
b3ZlKTsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpEcmFnRW50ZXIo
CkBAIC00NTc4LDcgKzQ1NzgsMTQgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpEcm9wKAogICAgICAgICBtX2Ryb3BUYXJnZXRIZWxwZXItPkRyb3AocERhdGFPYmplY3QsIChQ
T0lOVCopJnB0LCAqcGR3RWZmZWN0KTsKIAogICAgIG1fZHJhZ0RhdGEgPSAwOwotICAgICpwZHdF
ZmZlY3QgPSBEUk9QRUZGRUNUX05PTkU7CisgICAgLy8gVGhpcyBpcyB0aGUgY3VscHJpdC4gSGVy
ZSBpcyB3aGVyZSB3ZSBuZWVkIHRvIGZpbmQgb3V0IHdoYXQgdGhlIGVmZmVjdCB3YXMgc3Vwb3Nl
ZCB0byBiZS4KKyAgICAvLyBCdXQgSSBhbSBub3Qgc3VyZSBob3cgdG8gYWNjZXNzIHRoZSByaWdo
dCBjbGlwYm9hcmQgaGVyZSB0aGF0IGtub3dzIHRoZSBkcm9wIGVmZmVjdC4KKyAgICAvLyBJIGFs
c28gYW0gc3VzcGljaW91cyB0aGF0IHRoZSBjbGlwYm9hcmQgdGhhdCBpcyBhY2Nlc3NlZCB3aGVu
IHRoZSBkcm9wIGVmZmVjdCBpcyBzZXQgaXMKKyAgICAvLyBub3QgZ2V0dGluZyBwcm9wZXJseSBj
b3BpZWQgdG8gdGhlIGNsaXBib2FyZCB1c2VkIGluIERyYWdPdmVyLgorCisgICAgLy8gT24gY2xv
c2VyIGludmVzdGlnYXRpb24sIHRoZSBwcm9ibGVtIG1pZ2h0IGxpZSB3aXRoIHBkd0VmZmVjdCBn
ZXR0aW5nIHJlc2V0LiBBbGwgdGhlIHRpbWUuCisgICAgLy8qcGR3RWZmZWN0ID0gRFJPUEVGRkVD
VF9OT05FOworICAgICpwZHdFZmZlY3QgPSBEUk9QRUZGRUNUX01PVkU7CiAgICAgUE9JTlRMIGxv
Y2FscHQgPSBwdDsKICAgICA6OlNjcmVlblRvQ2xpZW50KG1fdmlld1dpbmRvdywgKExQUE9JTlQp
JmxvY2FscHQpOwogICAgIERyYWdEYXRhIGRhdGEocERhdGFPYmplY3QsIEludFBvaW50KGxvY2Fs
cHQueCwgbG9jYWxwdC55KSwgCkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gNDYzNTQpCisrKyBXZWJLaXQvd2lu
L1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldl
YkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAorI2luY2x1ZGUgPFdlYkNv
cmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlTGlzdGVu
ZXIuaD4KQEAgLTg5MCw2ICs4OTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gdGhpcyBpcyB1cGRh
dGVkIGluIERyYWdFbnRlci9MZWF2ZS9Ecm9wCiAgICAgQ09NUHRyPElEYXRhT2JqZWN0PiBtX2Ry
YWdEYXRhOwogICAgIENPTVB0cjxJRHJvcFRhcmdldEhlbHBlcj4gbV9kcm9wVGFyZ2V0SGVscGVy
OworICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gbV9kcm9wRWZmZWN0OwogICAgIFVDaGFyIG1f
Y3VycmVudENoYXJhY3RlckNvZGU7CiAgICAgYm9vbCBtX2lzQmVpbmdEZXN0cm95ZWQ7CiAgICAg
dW5zaWduZWQgbV9wYWludENvdW50OwpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuY3BwCShyZXZpc2lvbiA0NjM1NCkKKysrIFdlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQs
MTcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlUgogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBEb0RyYWdEcm9wKGRhdGFP
YmplY3QuZ2V0KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOworICAgICAgICBp
ZiAoRG9EcmFnRHJvcChkYXRhT2JqZWN0LmdldCgpLCBzb3VyY2UuZ2V0KCksIG9rRWZmZWN0LCAm
ZWZmZWN0KSA9PSBEUkFHRFJPUF9TX0RST1ApIHsKKyAgICAgICAgICAgIERyYWdPcGVyYXRpb24g
b3AgPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgICAgIGlmIChlZmZlY3QgJiBEUk9QRUZG
RUNUX0NPUFkpCisgICAgICAgICAgICAgICAgb3AgPSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfTElOSykKKyAgICAgICAgICAgICAg
ICBvcCA9IERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYg
RFJPUEVGRkVDVF9NT1ZFKQorICAgICAgICAgICAgICAgIG9wID0gRHJhZ09wZXJhdGlvbk1vdmU7
CisKKyAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQo
c3RhdGljX2Nhc3Q8V2ViRHJvcFNvdXJjZSo+KHNvdXJjZS5nZXQoKSktPmdlbmVyYXRlTW91c2VF
dmVudChtX3dlYlZpZXcsIGZhbHNlKSwgb3ApOworICAgICAgICB9CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>33467</attachid>
            <date>2009-07-24 13:39:31 -0700</date>
            <delta_ts>2009-09-01 20:41:21 -0700</delta_ts>
            <desc>Output of putting in some breakpoints in Visual Studio and running the attached test case</desc>
            <filename>windowsDropEffectInvestigationVSBreakpointOutput.txt</filename>
            <type>text/plain</type>
            <size>7074</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">RnVuY3Rpb246IFdlYkNvcmU6OmRyYWdPcEZyb21JRU9wKGNvbnN0IFdlYkNvcmU6OlN0cmluZyAm
KSwgVGhyZWFkOiBvcCBtb3ZlDQpGdW5jdGlvbjogV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0
YXJ0RHJhZyhXZWJDb3JlOjpGcmFtZSAqLCBXZWJDb3JlOjpDbGlwYm9hcmQgKiwgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50ICYsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50ICYsIGJvb2wpLCBtX3NvdXJjZURyYWdPcGVyYXRpb24gRHJhZ09w
ZXJhdGlvbk1vdmUNCkZ1bmN0aW9uOiBXZWJWaWV3OjpEcmFnRW50ZXIoSURhdGFPYmplY3QgKiwg
dW5zaWduZWQgbG9uZywgX1BPSU5UTCwgdW5zaWduZWQgbG9uZyAqKSwgQmVmb3JlIG1fZHJvcFRh
cmdldEhlbHBlci0+RHJhZ0VudGVyIDcNCkZ1bmN0aW9uOiBXZWJWaWV3OjpEcmFnRW50ZXIoSURh
dGFPYmplY3QgKiwgdW5zaWduZWQgbG9uZywgX1BPSU5UTCwgdW5zaWduZWQgbG9uZyAqKSwgQWZ0
ZXIgbV9kcm9wVGFyZ2V0SGVscGVyLT5EcmFnRW50ZXIgNw0KRnVuY3Rpb246IFdlYlZpZXc6OkRy
YWdFbnRlcihJRGF0YU9iamVjdCAqLCB1bnNpZ25lZCBsb25nLCBfUE9JTlRMLCB1bnNpZ25lZCBs
b25nICopLCBBRnRlciBrZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbiA3DQpGdW5jdGlvbjogV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhXZWJDb3JlOjpEcmFnRGF0YSAqLCBX
ZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gJiks
IGp1c3QgZ290IGhlcmUsIG9wZXJhdGlvbiBEcmFnT3BlcmF0aW9uTm9uZQ0KRnVuY3Rpb246IFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWcoV2ViQ29yZTo6RHJhZ0RhdGEg
KiwgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
ICYpLCBCZWZvcmUgdHJ5REhUTUxEcmFnOiBEcmFnT3BlcmF0aW9uTm9uZQ0KRnVuY3Rpb246IFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoV2ViQ29yZTo6RHJhZ0RhdGEgKiwg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiAmKSwgc2V0dGluZyB0aGUgY2xpcGJvYXJkIHNldHNvdXJj
ZW9wIHNyY09wTWFzazogMTkNCkZ1bmN0aW9uOiBXZWJDb3JlOjpJRU9wRnJvbURyYWdPcChXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uKSwgb3BlcmF0b246IDE5DQpGdW5jdGlvbjogV2ViQ29yZTo6SUVP
cEZyb21EcmFnT3AoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiksIG1vdmVTZXQgOiB0cnVlDQpGdW5j
dGlvbjogV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBXZWJD
b3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgJiwgV2ViQ29yZTo6Q2xpcGJvYXJkICopLCBuZXcgdGFy
Z2V0IGRpc3BhdGNoaW5nIHRoZSBkcmFnIGVudGVyIGV2ZW50DQpGdW5jdGlvbjogV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhXZWJDb3JlOjpEcmFnRGF0YSAqLCBXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gJiksIG9w
ZXJhdGlvbiBpZiBuZXZlciB3ZW50IGluc2lkZSB0aGUgYmlnIGlmIHN0YXRlbWVudA0KRnVuY3Rp
b246IFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChXZWJDb3Jl
OjpEcmFnRGF0YSAqKSwgaGFuZGxlZEJ5RG9jdW1lbnQ6IGZhbHNlICwgbV9kcmFnRGVzdGluYXRp
b25BY3Rpb246IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueQ0KRnVuY3Rpb246IFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKFdlYkNvcmU6OkRyYWdEYXRhICopLCByZXR1
cm5pbmcgRHJhZ09wZXJhdGlvbk5vbmUNCkZ1bmN0aW9uOiBXZWJWaWV3OjpEcmFnRW50ZXIoSURh
dGFPYmplY3QgKiwgdW5zaWduZWQgbG9uZywgX1BPSU5UTCwgdW5zaWduZWQgbG9uZyAqKSwgQWZ0
ZXIgZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvciAwDQpGdW5jdGlvbjogV2ViRHJvcFNvdXJjZTo6
R2l2ZUZlZWRiYWNrKHVuc2lnbmVkIGxvbmcpLCBmZWVkYmFjazogMA0KRnVuY3Rpb246IFdlYlZp
ZXc6OkRyYWdPdmVyKHVuc2lnbmVkIGxvbmcsIF9QT0lOVEwsIHVuc2lnbmVkIGxvbmcgKiksIEJl
Zm9yZSBtX2Ryb3BUYXJnZXRIZWxwZXItPkRyYWdPdmVyIDcNCkZ1bmN0aW9uOiBXZWJWaWV3OjpE
cmFnT3Zlcih1bnNpZ25lZCBsb25nLCBfUE9JTlRMLCB1bnNpZ25lZCBsb25nICopLCBBZnRlciBt
X2Ryb3BUYXJnZXRIZWxwZXItPkRyYWdFbnRlciA3DQpGdW5jdGlvbjogV2ViQ29yZTo6RHJhZ0Nv
bnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhXZWJDb3JlOjpEcmFnRGF0YSAqLCBXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb24sIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gJiksIGp1c3QgZ290
IGhlcmUsIG9wZXJhdGlvbiBEcmFnT3BlcmF0aW9uTm9uZQ0KRnVuY3Rpb246IFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWcoV2ViQ29yZTo6RHJhZ0RhdGEgKiwgV2ViQ29y
ZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uICYpLCBCZWZv
cmUgdHJ5REhUTUxEcmFnOiBEcmFnT3BlcmF0aW9uTm9uZQ0KRnVuY3Rpb246IFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoV2ViQ29yZTo6RHJhZ0RhdGEgKiwgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbiAmKSwgc2V0dGluZyB0aGUgY2xpcGJvYXJkIHNldHNvdXJjZW9wIHNyY09w
TWFzazogMTkNCkZ1bmN0aW9uOiBXZWJDb3JlOjpJRU9wRnJvbURyYWdPcChXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uKSwgb3BlcmF0b246IDE5DQpGdW5jdGlvbjogV2ViQ29yZTo6SUVPcEZyb21EcmFn
T3AoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiksIG1vdmVTZXQgOiB0cnVlDQpGdW5jdGlvbjogV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBXZWJDb3JlOjpQbGF0
Zm9ybU1vdXNlRXZlbnQgJiwgV2ViQ29yZTo6Q2xpcGJvYXJkICopLCBkaXNwYXRjaGluZyB0aGUg
ZHJhZ292ZXJFdmVudA0KRnVuY3Rpb246IFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlEb2N1
bWVudERyYWcoV2ViQ29yZTo6RHJhZ0RhdGEgKiwgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uICYpLCBvcGVyYXRpb24gaWYgbmV2ZXIgd2VudCBp
bnNpZGUgdGhlIGJpZyBpZiBzdGF0ZW1lbnQNCkZ1bmN0aW9uOiBXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoV2ViQ29yZTo6RHJhZ0RhdGEgKiksIGhhbmRsZWRC
eURvY3VtZW50OiBmYWxzZSAsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOiBEcmFnRGVzdGluYXRp
b25BY3Rpb25BbnkNCkZ1bmN0aW9uOiBXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9u
Rm9yTG9hZChXZWJDb3JlOjpEcmFnRGF0YSAqKSwgcmV0dXJuaW5nIERyYWdPcGVyYXRpb25Ob25l
DQpGdW5jdGlvbjogV2ViVmlldzo6RHJhZ092ZXIodW5zaWduZWQgbG9uZywgX1BPSU5UTCwgdW5z
aWduZWQgbG9uZyAqKSwgYXQgdGhlIGVuZCwgcGR3RWZmZWN0IDANCkZ1bmN0aW9uOiBXZWJEcm9w
U291cmNlOjpHaXZlRmVlZGJhY2sodW5zaWduZWQgbG9uZyksIGZlZWRiYWNrOiAwDQpGdW5jdGlv
bjogV2ViVmlldzo6RHJhZ092ZXIodW5zaWduZWQgbG9uZywgX1BPSU5UTCwgdW5zaWduZWQgbG9u
ZyAqKSwgQmVmb3JlIG1fZHJvcFRhcmdldEhlbHBlci0+RHJhZ092ZXIgNw0KRnVuY3Rpb246IFdl
YlZpZXc6OkRyYWdPdmVyKHVuc2lnbmVkIGxvbmcsIF9QT0lOVEwsIHVuc2lnbmVkIGxvbmcgKiks
IEFmdGVyIG1fZHJvcFRhcmdldEhlbHBlci0+RHJhZ0VudGVyIDcNCkZ1bmN0aW9uOiBXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKFdlYkNvcmU6OkRyYWdEYXRhICosIFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiAmKSwg
anVzdCBnb3QgaGVyZSwgb3BlcmF0aW9uIERyYWdPcGVyYXRpb25Ob25lDQpGdW5jdGlvbjogV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhXZWJDb3JlOjpEcmFnRGF0YSAq
LCBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24g
JiksIEJlZm9yZSB0cnlESFRNTERyYWc6IERyYWdPcGVyYXRpb25Ob25lDQpGdW5jdGlvbjogV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhXZWJDb3JlOjpEcmFnRGF0YSAqLCBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uICYpLCBzZXR0aW5nIHRoZSBjbGlwYm9hcmQgc2V0c291cmNl
b3Agc3JjT3BNYXNrOiAxOQ0KRnVuY3Rpb246IFdlYkNvcmU6OklFT3BGcm9tRHJhZ09wKFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24pLCBvcGVyYXRvbjogMTkNCkZ1bmN0aW9uOiBXZWJDb3JlOjpJRU9w
RnJvbURyYWdPcChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uKSwgbW92ZVNldCA6IHRydWUNCkZ1bmN0
aW9uOiBXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFdlYkNv
cmU6OlBsYXRmb3JtTW91c2VFdmVudCAmLCBXZWJDb3JlOjpDbGlwYm9hcmQgKiksIG5ldyB0YXJn
ZXQgZGlzcGF0Y2hpbmcgdGhlIGRyYWcgZW50ZXIgZXZlbnQNCkZ1bmN0aW9uOiBXZWJDb3JlOjpD
bGlwYm9hcmQ6OnNldERyb3BFZmZlY3QoY29uc3QgV2ViQ29yZTo6U3RyaW5nICYpLCBzZXR0aW5n
IHRoZSBlZmZlY3Qge21faW1wbD17Li4ufSB9DQpGdW5jdGlvbjogV2ViQ29yZTo6Q2xpcGJvYXJk
Ojpkcm9wRWZmZWN0KHZvaWQpDQpGdW5jdGlvbjogV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRh
dGVEcmFnQW5kRHJvcChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgJiwgV2ViQ29y
ZTo6Q2xpcGJvYXJkICopLCBtX2RyYWdUYXJnZXQsIGRpc3BhdGNoaW5nIGEgZHJhZ0xlYXZlDQpG
dW5jdGlvbjogV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhXZWJDb3JlOjpE
cmFnRGF0YSAqLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uICYpLCBiZWZvcmUgZGVzdE9wLWluZyBv
cGVyYXRpb246IERyYWdPcGVyYXRpb25Ob25lDQpGdW5jdGlvbjogV2ViQ29yZTo6Q2xpcGJvYXJk
OjpkZXN0aW5hdGlvbk9wZXJhdGlvbihXZWJDb3JlOjpEcmFnT3BlcmF0aW9uICYpLCBvcGVyYXRp
b24gYmVmb3JlIGRyYWdPcEZyb21JRU9wIERyYWdPcGVyYXRpb25Ob25lDQpGdW5jdGlvbjogV2Vi
Q29yZTo6ZHJhZ09wRnJvbUlFT3AoY29uc3QgV2ViQ29yZTo6U3RyaW5nICYpLCBUaHJlYWQ6IG9w
IG1vdmUNCkZ1bmN0aW9uOiBXZWJDb3JlOjpDbGlwYm9hcmQ6OmRlc3RpbmF0aW9uT3BlcmF0aW9u
KFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gJiksIHJldHVybmluZywgb3BlcmF0aW9uIDogRHJhZ09w
ZXJhdGlvbk1vdmUNCkZ1bmN0aW9uOiBXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1l
bnREcmFnKFdlYkNvcmU6OkRyYWdEYXRhICosIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlv
biwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiAmKSwgcmV0dXJuaW5nIGVhcmx5IGJlY2F1c2UgbV9p
c0hhbmRsaW5nRHJhZyBvcGVyYXRpb24gRHJhZ09wZXJhdGlvbk1vdmUNCkZ1bmN0aW9uOiBXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoV2ViQ29yZTo6RHJhZ0Rh
dGEgKiksIGhhbmRsZWRCeURvY3VtZW50OiB0cnVlICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb246
IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueQ0KRnVuY3Rpb246IFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChXZWJDb3JlOjpEcmFnRGF0YSAqKSwgcmV0dXJuaW5n
IERyYWdPcGVyYXRpb25Nb3ZlDQpGdW5jdGlvbjogV2ViVmlldzo6RHJhZ092ZXIodW5zaWduZWQg
bG9uZywgX1BPSU5UTCwgdW5zaWduZWQgbG9uZyAqKSwgYXQgdGhlIGVuZCwgcGR3RWZmZWN0IDIN
CkZ1bmN0aW9uOiBXZWJEcm9wU291cmNlOjpHaXZlRmVlZGJhY2sodW5zaWduZWQgbG9uZyksIGZl
ZWRiYWNrOiAyDQpGdW5jdGlvbjogV2ViVmlldzo6RHJvcChJRGF0YU9iamVjdCAqLCB1bnNpZ25l
ZCBsb25nLCBfUE9JTlRMLCB1bnNpZ25lZCBsb25nICopLCAJV2ViS2l0X2RlYnVnLmRsbCFXZWJW
aWV3OjpEcm9wKCkgDQpGdW5jdGlvbjogV2ViVmlldzo6RHJvcChJRGF0YU9iamVjdCAqLCB1bnNp
Z25lZCBsb25nLCBfUE9JTlRMLCB1bnNpZ25lZCBsb25nICopLCBCZWZvcmUgbV9kcm9wVGFyZ2V0
SGVscGVyLT5EcmFnRW50ZXIgNw0KRnVuY3Rpb246IFdlYlZpZXc6OkRyb3AoSURhdGFPYmplY3Qg
KiwgdW5zaWduZWQgbG9uZywgX1BPSU5UTCwgdW5zaWduZWQgbG9uZyAqKSBkaXJlY3RseTogNw0K
RnVuY3Rpb246IFdlYlZpZXc6OkRyb3AoSURhdGFPYmplY3QgKiwgdW5zaWduZWQgbG9uZywgX1BP
SU5UTCwgdW5zaWduZWQgbG9uZyAqKSwgQWZ0ZXIgbV9kcm9wVGFyZ2V0SGVscGVyLT5EcmFnRW50
ZXIgMg0KRnVuY3Rpb246IFdlYkNvcmU6OklFT3BGcm9tRHJhZ09wKFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24pLCBvcGVyYXRvbjogMTkNCkZ1bmN0aW9uOiBXZWJDb3JlOjpJRU9wRnJvbURyYWdPcChX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uKSwgbW92ZVNldCA6IHRydWUNCkZ1bmN0aW9uOiBXZWJDb3Jl
OjpDbGlwYm9hcmQ6OmRyb3BFZmZlY3Qodm9pZCkNCkZ1bmN0aW9uOiBXZWJWaWV3OjpEcm9wKElE
YXRhT2JqZWN0ICosIHVuc2lnbmVkIGxvbmcsIF9QT0lOVEwsIHVuc2lnbmVkIGxvbmcgKiksIGRy
b3AgZWZmZWN0IGF0IGVuZDogMg0KRnVuY3Rpb246IFdlYkNvcmU6OklFT3BGcm9tRHJhZ09wKFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24pLCBvcGVyYXRvbjogRHJhZ09wZXJhdGlvbk1vdmUNCkZ1bmN0
aW9uOiBXZWJDb3JlOjpJRU9wRnJvbURyYWdPcChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uKSwgbW92
ZVNldCA6IHRydWUNCkZ1bmN0aW9uOiBXZWJDb3JlOjpDbGlwYm9hcmQ6OmRyb3BFZmZlY3Qodm9p
ZCkNCg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38908</attachid>
            <date>2009-09-01 20:41:21 -0700</date>
            <delta_ts>2009-09-11 15:38:33 -0700</delta_ts>
            <desc>Patch with test cases</desc>
            <filename>Bug24731_1.patch</filename>
            <type>text/plain</type>
            <size>125699</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA0Nzk1MykKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDktMDEgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAg
ICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAg
ICAgSW1wbGVtZW50cyBzdXBwb3J0IGZvciBESFRNTCBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMg
KGkuZS4gb25kcmFnc3RhcnQsIG9uZHJhZ2VuZCkKKyAgICAgICAgaW4gdGhlIFdpbmRvd3MgYnVp
bGQgc28gdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgTWFjIE9TIFggYnVpbGQuIEhlbmNlLCBkcm9w
RWZmZWN0IGlzCisgICAgICAgIGNvcnJlY3RseSBzZXQuCisgICAgICAgIAorICAgICAgICBUaGUg
V2ViVmlldyBhbmQgV2ViRHJvcFNvdXJjZSBkcmFnLWFuZC1kcm9wIGZ1bmN0aW9ucywgYXMgY2Fs
bGVkIGJ5IGZ1bmN0aW9uCisgICAgICAgIERvRHJhZ0Ryb3AgaW4gaXRzIGV2ZW50IGxvb3AsIG5l
aXRoZXIgdXNlZCB0aGUgZHJvcCBlZmZlY3QgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IG5vciByZXNwZWN0ZWQgZXZlbnQuZGF0YVRyYW5zZmVy
LmVmZmVjdHNBbGxvd2VkLgorICAgICAgICBJbnN0ZWFkLCB0aGVzZSBmdW5jdGlvbnMgZGVmYXVs
dGVkIHRvIHNvbWUgaGFyZGNvZGVkIGRyb3AgZWZmZWN0IGFuZCBzZXQgb2YKKyAgICAgICAgYWxs
b3dlZCBkcm9wIGVmZmVjdHMsIHJlc3BlY3RpdmVseS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFn
KToKKyAgICAgICAgKiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRyb3BTb3VyY2U6
OlF1ZXJ5Q29udGludWVEcmFnKTogTW92ZWQgY2FsbCB0byBFdmVudEhhbmRsZXI6OmRyYWdTb3Vy
Y2VFbmRlZEF0CisgICAgICAgIGludG8gbWV0aG9kIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZy4K
KyAgICAgICAgKiBXZWJEcm9wU291cmNlLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbik6IERldGVybWluZXMgYXBwcm9w
cmlhdGUgZHJvcCBlZmZlY3QgZnJvbSBzdGF0ZQorICAgICAgICBvZiBrZXlib2FyZCBhbmQgYWxs
b3dlZCBlZmZlY3RzIHxhbGxvd2VkT3B8LgorICAgICAgICAoV2ViVmlldzo6RHJhZ0VudGVyKToK
KyAgICAgICAgKFdlYlZpZXc6OkRyYWdPdmVyKToKKyAgICAgICAgKFdlYlZpZXc6OkRyb3ApOgor
ICAgICAgICAqIFdlYlZpZXcuaDogQWRkZWQgZmllbGQgbV9sYXN0RHJvcEVmZmVjdC4gRXhwb3Nl
ZCBtZXRob2QgV2ViVmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24uCisKIDIwMDktMDktMDEg
IEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFBvc3QgYSBub3RpZmlj
YXRpb24gd2hlbiBhIFdlYlZpZXcgaXMgY2xvc2luZwpJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9w
U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCShy
ZXZpc2lvbiA0NzExNykKKysrIFdlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogCiAjaW5jbHVkZSA8V2luZG93cy5oPgpAQCAtMTA2LDEwICsxMDUsNiBA
QCBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlDb250aW51CiB7CiAgICAgaWYgKGZF
c2NhcGVQcmVzc2VkIHx8ICEoZ3JmS2V5U3RhdGUgJiAoTUtfTEJVVFRPTnxNS19SQlVUVE9OKSkp
IHsKICAgICAgICAgbV9kcm9wcGVkID0gIWZFc2NhcGVQcmVzc2VkOwotICAgICAgICBpZiAoUGFn
ZSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgpKQotICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IHBhZ2UtPm1haW5GcmFtZSgpKSAKLSAgICAgICAgICAgICAgICAvL0ZJWE1FOiBXZSBuZWVk
IHRvIGZpZ3VyZSBvdXQgaG93IHRvIGZpbmQgb3V0IHdoYXQgYWN0dWFsbHkgaGFwcGVuZWQgaW4g
dGhlIGRyYWcgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NjE+Ci0gICAgICAgICAgICAgICAgZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRBdChnZW5lcmF0ZU1vdXNlRXZlbnQobV93
ZWJWaWV3LmdldCgpLCBmYWxzZSksIGZFc2NhcGVQcmVzc2VkID8gRHJhZ09wZXJhdGlvbk5vbmUg
OiBEcmFnT3BlcmF0aW9uQ29weSk7CiAgICAgICAgIHJldHVybiBmRXNjYXBlUHJlc3NlZD8gRFJB
R0RST1BfU19DQU5DRUwgOiBEUkFHRFJPUF9TX0RST1A7CiAgICAgfSBlbHNlIGlmIChQYWdlKiBw
YWdlID0gbV93ZWJWaWV3LT5wYWdlKCkpCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYWdl
LT5tYWluRnJhbWUoKSkgCkluZGV4OiBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuaAkocmV2aXNpb24gNDcxMTcpCisrKyBX
ZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsMTIg
QEAKICNpbmNsdWRlICJDT01QdHIuaCIKICNpbmNsdWRlIDxvYmppZGwuaD4KIAorI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CisKIGNsYXNzIFdlYlZpZXc7CiAKK1dlYkNv
cmU6OlBsYXRmb3JtTW91c2VFdmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2ViVmlldyogd2ViVmll
dywgYm9vbCBpc0RyYWcpOworCiBjbGFzcyBXZWJEcm9wU291cmNlIDogcHVibGljIElEcm9wU291
cmNlCiB7CiBwdWJsaWM6CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDQ3MTE3KQorKysgV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUyOSwxMSArNDUyOSwyNSBAQCBzdGF0
aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcihECiAgICAgcmV0dXJuIHJlczsKIH0K
IAotc3RhdGljIERyYWdPcGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQpIHsK
LSAgICAvL0ZJWE1FOiBUaGlzIGlzIGN1cnJlbnRseSB2ZXJ5IHNpbXBsZSwgaXQgbWF5IG5lZWQg
dG8gYWN0dWFsbHkKLSAgICAvL3dvcmsgb3V0IGFuIGFwcHJvcHJpYXRlIERyYWdPcGVyYXRpb24g
aW4gZnV0dXJlIC0tIGhvd2V2ZXIgdGhpcwotICAgIC8vYmVoYXZpb3VyIGFwcGVhcnMgdG8gbWF0
Y2ggRmlyZUZveAotICAgIHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkg
fCBEcmFnT3BlcmF0aW9uTGluayk7CitEcmFnT3BlcmF0aW9uIFdlYlZpZXc6OmtleVN0YXRlVG9E
cmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKSB7CisgICAgaWYgKCFtX3BhZ2UpCisgICAg
ICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKworICAgIC8vIENvbmZvcm1zIHRvIE1pY3Jv
c29mdCdzIGtleSBjb21iaW5hdGlvbnMgYXMgZG9jdW1lbnRlZCBmb3IgCisgICAgLy8gSURyb3BU
YXJnZXQ6OkRyYWdPdmVyLiBTZWU6CisgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9l
bi11cy9saWJyYXJ5L21zNjgwMTI5KFZTLjg1KS5hc3B4CisgICAgRHJhZ09wZXJhdGlvbiBhbGxv
d2VkT3AgPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCktPnNvdXJjZURyYWdPcGVyYXRpb24oKTsK
KyAgICBpZiAoYWxsb3dlZE9wID09IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICBhbGxvd2Vk
T3AgPSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9u
Q29weSk7CisKKyAgICBpZiAoKGdyZktleVN0YXRlICYgKE1LX0NPTlRST0wgfCBNS19TSElGVCkp
ID09IChNS19DT05UUk9MIHwgTUtfU0hJRlQpKQorICAgICAgICByZXR1cm4gKGFsbG93ZWRPcCAm
IERyYWdPcGVyYXRpb25MaW5rKT8gRHJhZ09wZXJhdGlvbkxpbmsgOiBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICBpZiAoKGdyZktleVN0YXRlICYgTUtfQ09OVFJPTCkgPT0gTUtfQ09OVFJPTCkKKyAg
ICAgICAgcmV0dXJuIChhbGxvd2VkT3AgJiBEcmFnT3BlcmF0aW9uQ29weSk/IERyYWdPcGVyYXRp
b25Db3B5IDogRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgaWYgKChncmZLZXlTdGF0ZSAmIE1LX1NI
SUZUKSA9PSBNS19TSElGVCkKKyAgICAgICAgcmV0dXJuIChhbGxvd2VkT3AgJiAoRHJhZ09wZXJh
dGlvbk1vdmUgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYykpPyAoRHJhZ09wZXJhdGlvbikoRHJhZ09w
ZXJhdGlvbk1vdmUgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYykgOiBEcmFnT3BlcmF0aW9uTm9uZTsK
KworICAgIHJldHVybiBhbGxvd2VkT3A7IC8vIEJ5IGRlZmF1bHQsIHdlIHJldHVybiB0aGUgc291
cmNlIGRyYWcgb3BlcmF0aW9uIHRvIGNvbmZvcm0gd2l0aCB0aGUgTWFjIE9TIFggYnVpbGQuCiB9
CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJhZ0VudGVyKApAQCAtNDU1
MCw2ICs0NTY0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpEcmFnRQog
ICAgICAgICBJbnRQb2ludChwdC54LCBwdC55KSwga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oZ3Jm
S2V5U3RhdGUpKTsKICAgICAqcGR3RWZmZWN0ID0gZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvciht
X3BhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRyYWdFbnRlcmVkKCZkYXRhKSk7CiAKKyAgICBtX2xh
c3REcm9wRWZmZWN0ID0gKnBkd0VmZmVjdDsKICAgICBtX2RyYWdEYXRhID0gcERhdGFPYmplY3Q7
CiAKICAgICByZXR1cm4gU19PSzsKQEAgLTQ1NzAsNiArNDU4NSw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJhZ08KICAgICB9IGVsc2UKICAgICAgICAgKnBkd0VmZmVj
dCA9IERST1BFRkZFQ1RfTk9ORTsKIAorICAgIG1fbGFzdERyb3BFZmZlY3QgPSAqcGR3RWZmZWN0
OwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NTk0LDcgKzQ2MTAsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OkRyb3AoCiAgICAgICAgIG1fZHJvcFRhcmdldEhlbHBl
ci0+RHJvcChwRGF0YU9iamVjdCwgKFBPSU5UKikmcHQsICpwZHdFZmZlY3QpOwogCiAgICAgbV9k
cmFnRGF0YSA9IDA7Ci0gICAgKnBkd0VmZmVjdCA9IERST1BFRkZFQ1RfTk9ORTsKKyAgICAqcGR3
RWZmZWN0ID0gbV9sYXN0RHJvcEVmZmVjdDsKICAgICBQT0lOVEwgbG9jYWxwdCA9IHB0OwogICAg
IDo6U2NyZWVuVG9DbGllbnQobV92aWV3V2luZG93LCAoTFBQT0lOVCkmbG9jYWxwdCk7CiAgICAg
RHJhZ0RhdGEgZGF0YShwRGF0YU9iamVjdCwgSW50UG9pbnQobG9jYWxwdC54LCBsb2NhbHB0Lnkp
LCAKSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViVmlldy5oCShyZXZpc2lvbiA0NzExNykKKysrIFdlYktpdC93aW4vV2ViVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlcy5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VMaXN0ZW5lci5oPgpAQCAtNjYsNiAr
NjcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgfldlYlZpZXcoKTsKIAogcHVibGljOgorICAgIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3Rh
dGUpOworICAgIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsK
ICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKTsKQEAgLTg0
NCw2ICs4NDcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50SW50b0JhY2tpbmdTdG9yZShX
ZWJDb3JlOjpGcmFtZVZpZXcqLCBIREMgYml0bWFwREMsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGRpcnR5UmVjdCwgV2luZG93c1RvUGFpbnQpOwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3Jl
KFdlYkNvcmU6OkZyYW1lVmlldyosIEhEQyA9IDAsIGJvb2wgYmFja2luZ1N0b3JlQ29tcGxldGVs
eURpcnR5ID0gZmFsc2UsIFdpbmRvd3NUb1BhaW50ID0gUGFpbnRXZWJWaWV3T25seSk7CiAKKyAg
ICAvLyBGSVhNRTogVGhpcyB2YXJpYWJsZSBpcyBwYXJ0IG9mIGEgd29ya2Fyb3VuZC4gVGhlIGRy
b3AgZWZmZWN0IChwZHdFZmZlY3QpIHBhc3NlZCB0byBEcm9wIGlzIGluY29ycmVjdC4gCisgICAg
Ly8gV2Ugc2V0IHRoaXMgdmFyaWFibGUgaW4gRHJhZ0VudGVyIGFuZCBEcmFnT3ZlciBzbyB0aGF0
IGl0IGNhbiBiZSB1c2VkIGluIERyb3AgdG8gc2V0IHRoZSBjb3JyZWN0IGRyb3AgZWZmZWN0LiAK
KyAgICAvLyBUaHVzLCBvbiByZXR1cm4gZnJvbSBEb0RyYWdEcm9wIHdlIGhhdmUgdGhlIGNvcnJl
Y3QgcGR3RWZmZWN0IGZvciB0aGUgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb24uCisgICAgRFdPUkQg
bV9sYXN0RHJvcEVmZmVjdDsKKwogcHJvdGVjdGVkOgogICAgIEhJTUMgZ2V0SU1NQ29udGV4dCgp
OwogICAgIHZvaWQgcmVsZWFzZUlNTUNvbnRleHQoSElNQyk7CkluZGV4OiBXZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHJldmlzaW9uIDQ3MTE3KQorKysgV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU2LDE2ICsxNTYsMjYgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0lt
YWdlUgogCiAgICAgICAgIC8vRklYTUU6IEVuc3VyZSBjb3JyZWN0IGRyYWcgb3BzIGFyZSBhdmFp
bGFibGUgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NTc+CiAgICAgICAgIERXT1JEIG9rRWZmZWN0ID0g
RFJPUEVGRkVDVF9DT1BZIHwgRFJPUEVGRkVDVF9MSU5LIHwgRFJPUEVGRkVDVF9NT1ZFOwotICAg
ICAgICBEV09SRCBlZmZlY3Q7CisgICAgICAgIERXT1JEIGVmZmVjdCA9IERST1BFRkZFQ1RfTk9O
RTsKICAgICAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aTsKKyAgICAgICAgYm9vbCBpc1VJ
RGVsZWdhdGUgPSBmYWxzZTsKICAgICAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVs
ZWdhdGUoJnVpKSkpIHsKICAgICAgICAgICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZVByaXZhdGU+
IHVpUHJpdmF0ZTsKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQodWktPlF1ZXJ5SW50ZXJmYWNl
KElJRF9JV2ViVUlEZWxlZ2F0ZVByaXZhdGUsICh2b2lkKiopJnVpUHJpdmF0ZSkpKQogICAgICAg
ICAgICAgICAgIGlmIChTVUNDRUVERUQodWlQcml2YXRlLT5kb0RyYWdEcm9wKG1fd2ViVmlldywg
ZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCkpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIGlzVUlEZWxlZ2F0
ZSA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBEb0RyYWdEcm9wKGRhdGFPYmplY3QuZ2V0
KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOworICAgICAgICBEcmFnT3BlcmF0
aW9uIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICBpZiAoaXNVSURlbGVn
YXRlIHx8IERvRHJhZ0Ryb3AoZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVj
dCwgJmVmZmVjdCkgPT0gRFJBR0RST1BfU19EUk9QKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0
ICYgRFJPUEVGRkVDVF9DT1BZKQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVy
YXRpb25Db3B5OworICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9MSU5L
KQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAgICAg
ICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9NT1ZFKQorICAgICAgICAgICAgICAg
IG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICB9CisgICAgICAgIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1f
d2ViVmlldywgZmFsc2UpLCBvcGVyYXRpb24pOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNDc5NTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw3OCBAQAorMjAwOS0wOS0wMSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NzMxCisgICAgICAgIEFuZAorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81MDE1OTYxCisgICAgICAgIAorICAgICAgICBUZXN0cyB0aGF0
IHRoZSBESFRNTCBkcmFnLWFuZC1kcm9wIHN1cHBvcnQgd29ya3MuIFRoaXMgaW5jbHVkZXMgdGVz
dGluZworICAgICAgICB0aGF0IHRoZSBkcm9wRWZmZWN0IGlzIHByb3Blcmx5IHNldC4KKworICAg
ICAgICAqIGZhc3QvZG9tL0RIVE1MOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9k
cmFnLWFuZC1kcm9wLWFsbC1jb3B5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1hbGwtY29weS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWFsbC1saW5rLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1hbGwtbGluay5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWFsbC1tb3Zl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vREhUTUwvZHJhZy1hbmQt
ZHJvcC1hbGwtbW92ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFn
LWFuZC1kcm9wLWFsbC1ub25lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vREhUTUwvZHJhZy1hbmQtZHJvcC1hbGwtbm9uZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHktbGluay1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weS1s
aW5rLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3At
Y29weS1tb3ZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vREhUTUwv
ZHJhZy1hbmQtZHJvcC1jb3B5LW1vdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
REhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5LW5vbmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHktbm9uZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHkuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TGluay1jb3B5LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJv
cC1jb3B5TGluay1jb3B5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2Ry
YWctYW5kLWRyb3AtY29weUxpbmstbGluay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weUxpbmstbGluay5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHlMaW5rLW1vdmUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9w
LWNvcHlMaW5rLW1vdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vREhUTUwvZHJh
Zy1hbmQtZHJvcC1jb3B5TGluay1ub25lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TGluay1ub25lLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weU1vdmUtY29weS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3At
Y29weU1vdmUtY29weS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFn
LWFuZC1kcm9wLWNvcHlNb3ZlLWxpbmstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHlNb3ZlLWxpbmsuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TW92ZS1tb3ZlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1j
b3B5TW92ZS1tb3ZlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWct
YW5kLWRyb3AtY29weU1vdmUtbm9uZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weU1vdmUtbm9uZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWxpbmstY29weS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbGluay1j
b3B5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3At
bGluay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWct
YW5kLWRyb3AtbGluay1tb3ZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rLW1vdmUuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rLW5vbmUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWxpbmstbm9uZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWxpbmsuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rTW92
ZS1jb3B5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vREhUTUwvZHJh
Zy1hbmQtZHJvcC1saW5rTW92ZS1jb3B5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0RIVE1ML2RyYWctYW5kLWRyb3AtbGlua01vdmUtbGluay1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbGlua01vdmUtbGluay5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWxpbmtNb3Zl
LW1vdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFn
LWFuZC1kcm9wLWxpbmtNb3ZlLW1vdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
REhUTUwvZHJhZy1hbmQtZHJvcC1saW5rTW92ZS1ub25lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rTW92ZS1ub25lLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbW92ZS1jb3B5
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vREhUTUwvZHJhZy1hbmQt
ZHJvcC1tb3ZlLWNvcHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vREhUTUwvZHJh
Zy1hbmQtZHJvcC1tb3ZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
REhUTUwvZHJhZy1hbmQtZHJvcC1tb3ZlLWxpbmstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLW1vdmUtbGluay5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLW1vdmUtbm9uZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbW92
ZS1ub25lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRy
b3AtbW92ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1k
cm9wLW5vbmUtY29weS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RI
VE1ML2RyYWctYW5kLWRyb3Atbm9uZS1jb3B5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0RIVE1ML2RyYWctYW5kLWRyb3Atbm9uZS1saW5rLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1ub25lLWxpbmsuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1ub25lLW1vdmUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9w
LW5vbmUtbW92ZS5odG1sOiBBZGRlZC4KKwogMjAwOS0wOS0wMSAgRXJpYyBTZWlkZWwgIDxlcmlj
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgU2ltb24gRnJhc2VyLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1hbGwtY29weS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJh
Zy1hbmQtZHJvcC1hbGwtY29weS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWFsbC1jb3B5LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VU
IQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJh
Z0VudGVyZWQ6IGNvcHkKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0Vu
ZDogY29weQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1h
bGwtY29weS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2Ry
YWctYW5kLWRyb3AtYWxsLWNvcHkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtYWxsLWNvcHkuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4MiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT48L3RpdGxl
PgorICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICAgICAgZGl2IHsgYmFj
a2dyb3VuZC1jb2xvcjogI2NjYzsgYm9yZGVyOiAxcHggc29saWQgIzMzMzsgd2lkdGg6IDIwMHB4
OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTBweDsgfQorICAgICAgICAgICAgI2RyYWdN
ZSB7IC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50OyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25l
OyB9CisgICAgICAgICAgICAjZHJvcFRhcmdldCB7IGJhY2tncm91bmQtY29sb3I6ICM5Y2VhZGU7
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGRy
b2dTb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgICAg
ICB2YXIgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wVGFyZ2V0Iik7
CisgICAgICAgICAgICB2YXIgc3RhcnRYID0gZHJvZ1NvdXJjZS5vZmZzZXRMZWZ0ICsgMTA7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRZID0gZHJvZ1NvdXJjZS5vZmZzZXRUb3AgKyBkcm9nU291cmNl
Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zm
c2V0TGVmdCArIDEwOworICAgICAgICAgICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRv
cCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5sZWFwRm9y
d2FyZCg1MDApOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kWCwgZW5k
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworICAgICAgICA8L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja0Ry
b3BFZmZlY3QoZXZlbnQsIG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFy
IHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2V2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0IGluICcgKyBuYW1lICsgJzogJyArIGV2ZW50LmRhdGFUcmFuc2Zlci5k
cm9wRWZmZWN0ICsgJ1xuJykpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3Rh
cnREcmFnKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNm
ZXIuZWZmZWN0QWxsb3dlZCA9ICJhbGwiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7CisgICAgICAg
ICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAgICAgICAg
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7CisgICAg
ICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJvcCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAn
cmVjZWl2ZURyb3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdNZSIg
b25kcmFnc3RhcnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+CisgICAgICAg
ICAgICBEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgPGJyIC8+CisgICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVyPSJkcmFn
RW50ZXJlZCgpIiBvbmRyYWdvdmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERST1AgVEFS
R0VULgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1hbGwtbGlu
ay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwv
ZHJhZy1hbmQtZHJvcC1hbGwtbGluay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWFsbC1saW5rLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFS
R0VUIQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4g
ZHJhZ0VudGVyZWQ6IGxpbmsKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJh
Z0VuZDogbGluawpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJv
cC1hbGwtbGluay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1M
L2RyYWctYW5kLWRyb3AtYWxsLWxpbmsuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtYWxsLWxpbmsuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4MiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT48L3Rp
dGxlPgorICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICAgICAgZGl2IHsg
YmFja2dyb3VuZC1jb2xvcjogI2NjYzsgYm9yZGVyOiAxcHggc29saWQgIzMzMzsgd2lkdGg6IDIw
MHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTBweDsgfQorICAgICAgICAgICAgI2Ry
YWdNZSB7IC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50OyAtd2Via2l0LXVzZXItc2VsZWN0OiBu
b25lOyB9CisgICAgICAgICAgICAjZHJvcFRhcmdldCB7IGJhY2tncm91bmQtY29sb3I6ICM5Y2Vh
ZGU7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdmFy
IGRyb2dTb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAg
ICAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wVGFyZ2V0
Iik7CisgICAgICAgICAgICB2YXIgc3RhcnRYID0gZHJvZ1NvdXJjZS5vZmZzZXRMZWZ0ICsgMTA7
CisgICAgICAgICAgICB2YXIgc3RhcnRZID0gZHJvZ1NvdXJjZS5vZmZzZXRUb3AgKyBkcm9nU291
cmNlLm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJnZXQu
b2Zmc2V0TGVmdCArIDEwOworICAgICAgICAgICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9mZnNl
dFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5sZWFw
Rm9yd2FyZCg1MDApOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kWCwg
ZW5kWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworICAgICAgICA8L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVj
a0Ryb3BFZmZlY3QoZXZlbnQsIG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2V2ZW50LmRhdGFU
cmFuc2Zlci5kcm9wRWZmZWN0IGluICcgKyBuYW1lICsgJzogJyArIGV2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0ICsgJ1xuJykpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
c3RhcnREcmFnKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJh
bnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJhbGwiOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibGluayI7CisgICAg
ICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAgICAg
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibGluayI7Cisg
ICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJv
cCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50
LCAncmVjZWl2ZURyb3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdN
ZSIgb25kcmFnc3RhcnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+CisgICAg
ICAgICAgICBEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgPGJyIC8+CisgICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVyPSJk
cmFnRW50ZXJlZCgpIiBvbmRyYWdvdmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERST1Ag
VEFSR0VULgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1hbGwt
bW92ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vREhU
TUwvZHJhZy1hbmQtZHJvcC1hbGwtbW92ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWFsbC1tb3ZlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhFIERST1Ag
VEFSR0VUIQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
aW4gZHJhZ0VudGVyZWQ6IG1vdmUKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4g
ZHJhZ0VuZDogbW92ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQt
ZHJvcC1hbGwtbW92ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RI
VE1ML2RyYWctYW5kLWRyb3AtYWxsLW1vdmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtYWxsLW1vdmUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT48
L3RpdGxlPgorICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICAgICAgZGl2
IHsgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsgYm9yZGVyOiAxcHggc29saWQgIzMzMzsgd2lkdGg6
IDIwMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTBweDsgfQorICAgICAgICAgICAg
I2RyYWdNZSB7IC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50OyAtd2Via2l0LXVzZXItc2VsZWN0
OiBub25lOyB9CisgICAgICAgICAgICAjZHJvcFRhcmdldCB7IGJhY2tncm91bmQtY29sb3I6ICM5
Y2VhZGU7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
dmFyIGRyb2dTb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAg
ICAgICAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wVGFy
Z2V0Iik7CisgICAgICAgICAgICB2YXIgc3RhcnRYID0gZHJvZ1NvdXJjZS5vZmZzZXRMZWZ0ICsg
MTA7CisgICAgICAgICAgICB2YXIgc3RhcnRZID0gZHJvZ1NvdXJjZS5vZmZzZXRUb3AgKyBkcm9n
U291cmNlLm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJn
ZXQub2Zmc2V0TGVmdCArIDEwOworICAgICAgICAgICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9m
ZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5s
ZWFwRm9yd2FyZCg1MDApOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5k
WCwgZW5kWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworICAgICAgICA8L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBj
aGVja0Ryb3BFZmZlY3QoZXZlbnQsIG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2V2ZW50LmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluICcgKyBuYW1lICsgJzogJyArIGV2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0ICsgJ1xuJykpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gc3RhcnREcmFnKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRh
VHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJhbGwiOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibW92ZSI7Cisg
ICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAg
ICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibW92ZSI7
CisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZl
RHJvcCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2
ZW50LCAncmVjZWl2ZURyb3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRy
YWdNZSIgb25kcmFnc3RhcnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+Cisg
ICAgICAgICAgICBEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4K
KyAgICAgICAgPGJyIC8+CisgICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVy
PSJkcmFnRW50ZXJlZCgpIiBvbmRyYWdvdmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERS
T1AgVEFSR0VULgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1h
bGwtbm9uZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
REhUTUwvZHJhZy1hbmQtZHJvcC1hbGwtbm9uZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWFsbC1ub25lLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhFIERS
T1AgVEFSR0VUIQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZl
Y3QgaW4gZHJhZ0VudGVyZWQ6IG5vbmUKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
aW4gZHJhZ0VuZDogbm9uZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1h
bmQtZHJvcC1hbGwtbm9uZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RIVE1ML2RyYWctYW5kLWRyb3AtYWxsLW5vbmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtYWxsLW5vbmUuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRs
ZT48L3RpdGxlPgorICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICAgICAg
ZGl2IHsgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsgYm9yZGVyOiAxcHggc29saWQgIzMzMzsgd2lk
dGg6IDIwMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTBweDsgfQorICAgICAgICAg
ICAgI2RyYWdNZSB7IC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50OyAtd2Via2l0LXVzZXItc2Vs
ZWN0OiBub25lOyB9CisgICAgICAgICAgICAjZHJvcFRhcmdldCB7IGJhY2tncm91bmQtY29sb3I6
ICM5Y2VhZGU7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVy
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgdmFyIGRyb2dTb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7Cisg
ICAgICAgICAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9w
VGFyZ2V0Iik7CisgICAgICAgICAgICB2YXIgc3RhcnRYID0gZHJvZ1NvdXJjZS5vZmZzZXRMZWZ0
ICsgMTA7CisgICAgICAgICAgICB2YXIgc3RhcnRZID0gZHJvZ1NvdXJjZS5vZmZzZXRUb3AgKyBk
cm9nU291cmNlLm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZW5kWCA9IGRyb3BU
YXJnZXQub2Zmc2V0TGVmdCArIDEwOworICAgICAgICAgICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0
Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5sZWFwRm9yd2FyZCg1MDApOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
ZW5kWCwgZW5kWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworICAgICAgICA8
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlv
biBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsIG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2V2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluICcgKyBuYW1lICsgJzogJyArIGV2ZW50LmRhdGFU
cmFuc2Zlci5kcm9wRWZmZWN0ICsgJ1xuJykpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVu
Y3Rpb24gc3RhcnREcmFnKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5k
YXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJhbGwiOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibm9uZSI7
CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsK
KyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibm9u
ZSI7CisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNl
aXZlRHJvcCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0
KGV2ZW50LCAncmVjZWl2ZURyb3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9
ImRyYWdNZSIgb25kcmFnc3RhcnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+
CisgICAgICAgICAgICBEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rp
dj4KKyAgICAgICAgPGJyIC8+CisgICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2Vu
dGVyPSJkcmFnRW50ZXJlZCgpIiBvbmRyYWdvdmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAg
IERST1AgVEFSR0VULgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJv
cC1jb3B5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
SFRNTC9kcmFnLWFuZC1kcm9wLWNvcHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VU
IQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJh
Z0VudGVyZWQ6IGNvcHkKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0Vu
ZDogY29weQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1j
b3B5LWxpbmstZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RIVE1ML2RyYWctYW5kLWRyb3AtY29weS1saW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weS1saW5rLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhF
IERST1AgVEFSR0VUIQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaW4gZHJhZ0VudGVyZWQ6IGxpbmsKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZl
Y3QgaW4gZHJhZ0VuZDogbm9uZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJh
Zy1hbmQtZHJvcC1jb3B5LWxpbmsuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHktbGluay5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5LWxpbmsuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDx0aXRsZT48L3RpdGxlPgorICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAg
ICAgICAgZGl2IHsgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsgYm9yZGVyOiAxcHggc29saWQgIzMz
Mzsgd2lkdGg6IDIwMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTBweDsgfQorICAg
ICAgICAgICAgI2RyYWdNZSB7IC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50OyAtd2Via2l0LXVz
ZXItc2VsZWN0OiBub25lOyB9CisgICAgICAgICAgICAjZHJvcFRhcmdldCB7IGJhY2tncm91bmQt
Y29sb3I6ICM5Y2VhZGU7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LmV2ZW50
U2VuZGVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgdmFyIGRyb2dTb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01l
Iik7CisgICAgICAgICAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkcm9wVGFyZ2V0Iik7CisgICAgICAgICAgICB2YXIgc3RhcnRYID0gZHJvZ1NvdXJjZS5vZmZz
ZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2YXIgc3RhcnRZID0gZHJvZ1NvdXJjZS5vZmZzZXRU
b3AgKyBkcm9nU291cmNlLm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZW5kWCA9
IGRyb3BUYXJnZXQub2Zmc2V0TGVmdCArIDEwOworICAgICAgICAgICAgdmFyIGVuZFkgPSBkcm9w
VGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5sZWFwRm9yd2FyZCg1MDApOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oZW5kWCwgZW5kWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworICAg
ICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgCisgICAgICAgICAgICBm
dW5jdGlvbiBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsIG5hbWUpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
J2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluICcgKyBuYW1lICsgJzogJyArIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ICsgJ1xuJykpOworICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gc3RhcnREcmFnKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBl
dmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJjb3B5IjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VudGVyZWQoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0g
ImxpbmsiOworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdFbnRl
cmVkJyk7CisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
ID0gImxpbmsiOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbmQoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2Ry
YWdFbmQnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rp
b24gcmVjZWl2ZURyb3AoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNrRHJv
cEVmZmVjdChldmVudCwgJ3JlY2VpdmVEcm9wJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8
ZGl2IGlkPSJkcmFnTWUiIG9uZHJhZ3N0YXJ0PSJzdGFydERyYWcoKSIgb25kcmFnZW5kPSJkcmFn
RW5kKCkiPgorICAgICAgICAgICAgRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKyAgICAg
ICAgPC9kaXY+CisgICAgICAgIDxiciAvPgorICAgICAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0IiBv
bmRyYWdlbnRlcj0iZHJhZ0VudGVyZWQoKSIgb25kcmFnb3Zlcj0iZHJhZ092ZXIoKSI+CisgICAg
ICAgICAgICBEUk9QIFRBUkdFVC4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxiciAvPgorICAg
IDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWct
YW5kLWRyb3AtY29weS1tb3ZlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHktbW92ZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNv
cHktbW92ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorRFJBRyBN
RSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKworRFJPUCBUQVJHRVQuCisKK2V2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbnRlcmVkOiBtb3ZlCisKK2V2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0IGluIGRyYWdFbmQ6IG5vbmUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0RIVE1ML2RyYWctYW5kLWRyb3AtY29weS1tb3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5LW1vdmUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weS1t
b3ZlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8dGl0bGU+PC90aXRsZT4KKyAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KKyAgICAgICAgICAgIGRpdiB7IGJhY2tncm91bmQtY29sb3I6ICNjY2M7IGJvcmRlcjogMXB4
IHNvbGlkICMzMzM7IHdpZHRoOiAyMDBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IDEw
cHg7IH0KKyAgICAgICAgICAgICNkcmFnTWUgeyAtd2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsg
LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgfQorICAgICAgICAgICAgI2Ryb3BUYXJnZXQgeyBi
YWNrZ3JvdW5kLWNvbG9yOiAjOWNlYWRlOyB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBpZiAoIXdp
bmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIHZhciBkcm9nU291cmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRyYWdNZSIpOworICAgICAgICAgICAgdmFyIGRyb3BUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZHJvcFRhcmdldCIpOworICAgICAgICAgICAgdmFyIHN0YXJ0WCA9IGRyb2dT
b3VyY2Uub2Zmc2V0TGVmdCArIDEwOworICAgICAgICAgICAgdmFyIHN0YXJ0WSA9IGRyb2dTb3Vy
Y2Uub2Zmc2V0VG9wICsgZHJvZ1NvdXJjZS5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAg
dmFyIGVuZFggPSBkcm9wVGFyZ2V0Lm9mZnNldExlZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBl
bmRZID0gZHJvcFRhcmdldC5vZmZzZXRUb3AgKyBkcm9wVGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
WCwgc3RhcnRZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoNTAwKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKGVuZFgsIGVuZFkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB3aW5kb3cub25sb2FkID0gcnVu
VGVzdDsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIAorICAg
ICAgICAgICAgZnVuY3Rpb24gY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCBuYW1lKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJwIik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCdldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiAnICsgbmFtZSArICc6
ICcgKyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCArICdcbicpKTsKKyAgICAgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJlc3VsdCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0RHJhZygpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAiY29weSI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbnRlcmVk
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJv
cEVmZmVjdCA9ICJtb3ZlIjsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQs
ICdkcmFnRW50ZXJlZCcpOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdP
dmVyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCA9ICJtb3ZlIjsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBk
cmFnRW5kKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3Qo
ZXZlbnQsICdkcmFnRW5kJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHJlY2VpdmVEcm9wKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdyZWNlaXZlRHJvcCcpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4K
KyAgICAgICAgPGRpdiBpZD0iZHJhZ01lIiBvbmRyYWdzdGFydD0ic3RhcnREcmFnKCkiIG9uZHJh
Z2VuZD0iZHJhZ0VuZCgpIj4KKyAgICAgICAgICAgIERSQUcgTUUgT05UTyBUSEUgRFJPUCBUQVJH
RVQhCisgICAgICAgIDwvZGl2PgorICAgICAgICA8YnIgLz4KKyAgICAgICAgPGRpdiBpZD0iZHJv
cFRhcmdldCIgb25kcmFnZW50ZXI9ImRyYWdFbnRlcmVkKCkiIG9uZHJhZ292ZXI9ImRyYWdPdmVy
KCkiPgorICAgICAgICAgICAgRFJPUCBUQVJHRVQuCisgICAgICAgIDwvZGl2PgorICAgICAgICA8
YnIgLz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
SFRNTC9kcmFnLWFuZC1kcm9wLWNvcHktbm9uZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5LW5vbmUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1h
bmQtZHJvcC1jb3B5LW5vbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcg
QEAKK0RSQUcgTUUgT05UTyBUSEUgRFJPUCBUQVJHRVQhCisKK0RST1AgVEFSR0VULgorCitldmVu
dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFnRW50ZXJlZDogbm9uZQorCitldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFnRW5kOiBub25lCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHktbm9uZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weS1ub25lLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1k
cm9wLWNvcHktbm9uZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPjwvdGl0bGU+CisgICAgICAgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyI+CisgICAgICAgICAgICBkaXYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOyBi
b3JkZXI6IDFweCBzb2xpZCAjMzMzOyB3aWR0aDogMjAwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsg
bWFyZ2luOiAxMHB4OyB9CisgICAgICAgICAgICAjZHJhZ01lIHsgLXdlYmtpdC11c2VyLWRyYWc6
IGVsZW1lbnQ7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IH0KKyAgICAgICAgICAgICNkcm9w
VGFyZ2V0IHsgYmFja2dyb3VuZC1jb2xvcjogIzljZWFkZTsgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAg
ICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZHJvZ1NvdXJjZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkcmFnTWUiKTsKKyAgICAgICAgICAgIHZhciBkcm9wVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyb3BUYXJnZXQiKTsKKyAgICAgICAgICAgIHZhciBzdGFy
dFggPSBkcm9nU291cmNlLm9mZnNldExlZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBzdGFydFkg
PSBkcm9nU291cmNlLm9mZnNldFRvcCArIGRyb2dTb3VyY2Uub2Zmc2V0SGVpZ2h0IC8gMjsKKyAg
ICAgICAgICAgIHZhciBlbmRYID0gZHJvcFRhcmdldC5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAg
ICAgICB2YXIgZW5kWSA9IGRyb3BUYXJnZXQub2Zmc2V0VG9wICsgZHJvcFRhcmdldC5vZmZzZXRI
ZWlnaHQgLyAyOworICAgICAgICAgICAgCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFgsIHN0YXJ0WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbmRYLCBlbmRZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93Lm9u
bG9hZCA9IHJ1blRlc3Q7CisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrRHJvcEVmZmVjdChldmVudCwgbmFtZSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgicCIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gJyAr
IG5hbWUgKyAnOiAnICsgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgKyAnXG4nKSk7Cisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZXN1bHQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydERyYWcoKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gImNv
cHkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBk
cmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRy
YW5zZmVyLmRyb3BFZmZlY3QgPSAibm9uZSI7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZm
ZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5j
dGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibm9uZSI7CisgICAgICAgICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tE
cm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJvcCgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAncmVjZWl2ZURyb3AnKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdNZSIgb25kcmFnc3RhcnQ9InN0YXJ0RHJh
ZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+CisgICAgICAgICAgICBEUkFHIE1FIE9OVE8gVEhF
IERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgICAgIDxk
aXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVyPSJkcmFnRW50ZXJlZCgpIiBvbmRyYWdvdmVy
PSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERST1AgVEFSR0VULgorICAgICAgICA8L2Rpdj4K
KyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHkuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDx0aXRsZT48L3RpdGxlPgorICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAg
ICAgICAgICAgZGl2IHsgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsgYm9yZGVyOiAxcHggc29saWQg
IzMzMzsgd2lkdGg6IDIwMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTBweDsgfQor
ICAgICAgICAgICAgI2RyYWdNZSB7IC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50OyAtd2Via2l0
LXVzZXItc2VsZWN0OiBub25lOyB9CisgICAgICAgICAgICAjZHJvcFRhcmdldCB7IGJhY2tncm91
bmQtY29sb3I6ICM5Y2VhZGU7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LmV2
ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgdmFyIGRyb2dTb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJh
Z01lIik7CisgICAgICAgICAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkcm9wVGFyZ2V0Iik7CisgICAgICAgICAgICB2YXIgc3RhcnRYID0gZHJvZ1NvdXJjZS5v
ZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2YXIgc3RhcnRZID0gZHJvZ1NvdXJjZS5vZmZz
ZXRUb3AgKyBkcm9nU291cmNlLm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZW5k
WCA9IGRyb3BUYXJnZXQub2Zmc2V0TGVmdCArIDEwOworICAgICAgICAgICAgdmFyIGVuZFkgPSBk
cm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFy
dFkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5sZWFwRm9yd2FyZCg1MDApOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oZW5kWCwgZW5kWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0Owor
ICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgCisgICAgICAgICAg
ICBmdW5jdGlvbiBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsIG5hbWUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsK
KyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluICcgKyBuYW1lICsgJzogJyArIGV2
ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ICsgJ1xuJykpOworICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZnVuY3Rpb24gc3RhcnREcmFnKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJjb3B5IjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VudGVyZWQoKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
ID0gImNvcHkiOworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdF
bnRlcmVkJyk7CisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZm
ZWN0ID0gImNvcHkiOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbmQo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwg
J2RyYWdFbmQnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVu
Y3Rpb24gcmVjZWl2ZURyb3AoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNr
RHJvcEVmZmVjdChldmVudCwgJ3JlY2VpdmVEcm9wJyk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAg
ICA8ZGl2IGlkPSJkcmFnTWUiIG9uZHJhZ3N0YXJ0PSJzdGFydERyYWcoKSIgb25kcmFnZW5kPSJk
cmFnRW5kKCkiPgorICAgICAgICAgICAgRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKyAg
ICAgICAgPC9kaXY+CisgICAgICAgIDxiciAvPgorICAgICAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0
IiBvbmRyYWdlbnRlcj0iZHJhZ0VudGVyZWQoKSIgb25kcmFnb3Zlcj0iZHJhZ092ZXIoKSI+Cisg
ICAgICAgICAgICBEUk9QIFRBUkdFVC4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxiciAvPgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2Ry
YWctYW5kLWRyb3AtY29weUxpbmstY29weS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TGluay1jb3B5LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWct
YW5kLWRyb3AtY29weUxpbmstY29weS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNyBAQAorRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKworRFJPUCBUQVJHRVQuCisK
K2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbnRlcmVkOiBjb3B5CisKK2V2
ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbmQ6IGNvcHkKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weUxpbmstY29weS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29w
eUxpbmstY29weS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhU
TUwvZHJhZy1hbmQtZHJvcC1jb3B5TGluay1jb3B5Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODIgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+PC90aXRsZT4KKyAg
ICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgICAgIGRpdiB7IGJhY2tncm91
bmQtY29sb3I6ICNjY2M7IGJvcmRlcjogMXB4IHNvbGlkICMzMzM7IHdpZHRoOiAyMDBweDsgdGV4
dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IDEwcHg7IH0KKyAgICAgICAgICAgICNkcmFnTWUgeyAt
d2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgfQor
ICAgICAgICAgICAgI2Ryb3BUYXJnZXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjOWNlYWRlOyB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHJ1blRl
c3QoKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBkcm9nU291
cmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdNZSIpOworICAgICAgICAgICAgdmFy
IGRyb3BUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcFRhcmdldCIpOworICAg
ICAgICAgICAgdmFyIHN0YXJ0WCA9IGRyb2dTb3VyY2Uub2Zmc2V0TGVmdCArIDEwOworICAgICAg
ICAgICAgdmFyIHN0YXJ0WSA9IGRyb2dTb3VyY2Uub2Zmc2V0VG9wICsgZHJvZ1NvdXJjZS5vZmZz
ZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGVuZFggPSBkcm9wVGFyZ2V0Lm9mZnNldExl
ZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBlbmRZID0gZHJvcFRhcmdldC5vZmZzZXRUb3AgKyBk
cm9wVGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQo
NTAwKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFgsIGVuZFkpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tEcm9wRWZm
ZWN0KGV2ZW50LCBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciByZXN1
bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCBpbiAnICsgbmFtZSArICc6ICcgKyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCArICdcbicpKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHJlc3VsdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0RHJh
ZygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVm
ZmVjdEFsbG93ZWQgPSAiY29weUxpbmsiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7CisgICAgICAg
ICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAgICAgICAg
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7CisgICAg
ICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJvcCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAn
cmVjZWl2ZURyb3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdNZSIg
b25kcmFnc3RhcnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+CisgICAgICAg
ICAgICBEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgPGJyIC8+CisgICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVyPSJkcmFn
RW50ZXJlZCgpIiBvbmRyYWdvdmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERST1AgVEFS
R0VULgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TGlu
ay1saW5rLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
SFRNTC9kcmFnLWFuZC1kcm9wLWNvcHlMaW5rLWxpbmstZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TGluay1s
aW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9O
VE8gVEhFIERST1AgVEFSR0VUIQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVy
LmRyb3BFZmZlY3QgaW4gZHJhZ0VudGVyZWQ6IGxpbmsKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRy
b3BFZmZlY3QgaW4gZHJhZ0VuZDogbGluawpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhU
TUwvZHJhZy1hbmQtZHJvcC1jb3B5TGluay1saW5rLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TGluay1saW5rLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNv
cHlMaW5rLWxpbmsuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT48L3RpdGxlPgorICAgICAgICA8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPgorICAgICAgICAgICAgZGl2IHsgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsgYm9y
ZGVyOiAxcHggc29saWQgIzMzMzsgd2lkdGg6IDIwMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1h
cmdpbjogMTBweDsgfQorICAgICAgICAgICAgI2RyYWdNZSB7IC13ZWJraXQtdXNlci1kcmFnOiBl
bGVtZW50OyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9CisgICAgICAgICAgICAjZHJvcFRh
cmdldCB7IGJhY2tncm91bmQtY29sb3I6ICM5Y2VhZGU7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAg
IGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGRyb2dTb3VyY2UgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgICAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wVGFyZ2V0Iik7CisgICAgICAgICAgICB2YXIgc3RhcnRY
ID0gZHJvZ1NvdXJjZS5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2YXIgc3RhcnRZID0g
ZHJvZ1NvdXJjZS5vZmZzZXRUb3AgKyBkcm9nU291cmNlLm9mZnNldEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zmc2V0TGVmdCArIDEwOworICAgICAgICAg
ICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCg1MDApOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kWCwgZW5kWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5vbmxv
YWQgPSBydW5UZXN0OworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsIG5hbWUpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInAiKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluICcgKyBu
YW1lICsgJzogJyArIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ICsgJ1xuJykpOworICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnREcmFnKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJjb3B5
TGluayI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGRyYWdFbnRlcmVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJsaW5rIjsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BF
ZmZlY3QoZXZlbnQsICdkcmFnRW50ZXJlZCcpOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGRyYWdPdmVyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJsaW5rIjsKKyAgICAgICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBmdW5jdGlvbiBkcmFnRW5kKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGVj
a0Ryb3BFZmZlY3QoZXZlbnQsICdkcmFnRW5kJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVEcm9wKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdyZWNlaXZlRHJvcCcpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0iZHJhZ01lIiBvbmRyYWdzdGFydD0ic3RhcnRE
cmFnKCkiIG9uZHJhZ2VuZD0iZHJhZ0VuZCgpIj4KKyAgICAgICAgICAgIERSQUcgTUUgT05UTyBU
SEUgRFJPUCBUQVJHRVQhCisgICAgICAgIDwvZGl2PgorICAgICAgICA8YnIgLz4KKyAgICAgICAg
PGRpdiBpZD0iZHJvcFRhcmdldCIgb25kcmFnZW50ZXI9ImRyYWdFbnRlcmVkKCkiIG9uZHJhZ292
ZXI9ImRyYWdPdmVyKCkiPgorICAgICAgICAgICAgRFJPUCBUQVJHRVQuCisgICAgICAgIDwvZGl2
PgorICAgICAgICA8YnIgLz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHlMaW5rLW1vdmUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3At
Y29weUxpbmstbW92ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHlMaW5rLW1vdmUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK0RSQUcgTUUgT05UTyBUSEUgRFJPUCBUQVJHRVQh
CisKK0RST1AgVEFSR0VULgorCitldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFn
RW50ZXJlZDogbW92ZQorCitldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFnRW5k
OiBub25lCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNv
cHlMaW5rLW1vdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRN
TC9kcmFnLWFuZC1kcm9wLWNvcHlMaW5rLW1vdmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weUxpbmstbW92ZS5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHRpdGxlPjwvdGl0bGU+CisgICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAg
ICAgICBkaXYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOyBib3JkZXI6IDFweCBzb2xpZCAjMzMz
OyB3aWR0aDogMjAwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOiAxMHB4OyB9CisgICAg
ICAgICAgICAjZHJhZ01lIHsgLXdlYmtpdC11c2VyLWRyYWc6IGVsZW1lbnQ7IC13ZWJraXQtdXNl
ci1zZWxlY3Q6IG5vbmU7IH0KKyAgICAgICAgICAgICNkcm9wVGFyZ2V0IHsgYmFja2dyb3VuZC1j
b2xvcjogIzljZWFkZTsgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRT
ZW5kZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICB2YXIgZHJvZ1NvdXJjZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnTWUi
KTsKKyAgICAgICAgICAgIHZhciBkcm9wVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImRyb3BUYXJnZXQiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFggPSBkcm9nU291cmNlLm9mZnNl
dExlZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBzdGFydFkgPSBkcm9nU291cmNlLm9mZnNldFRv
cCArIGRyb2dTb3VyY2Uub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBlbmRYID0g
ZHJvcFRhcmdldC5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2YXIgZW5kWSA9IGRyb3BU
YXJnZXQub2Zmc2V0VG9wICsgZHJvcFRhcmdldC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhlbmRYLCBlbmRZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAg
ICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRHJvcEVmZmVjdChldmVudCwgbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gJyArIG5hbWUgKyAnOiAnICsgZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgKyAnXG4nKSk7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChyZXN1bHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBzdGFydERyYWcoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2
ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gImNvcHlMaW5rIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VudGVyZWQoKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
ID0gIm1vdmUiOworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdF
bnRlcmVkJyk7CisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZm
ZWN0ID0gIm1vdmUiOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbmQo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwg
J2RyYWdFbmQnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVu
Y3Rpb24gcmVjZWl2ZURyb3AoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNr
RHJvcEVmZmVjdChldmVudCwgJ3JlY2VpdmVEcm9wJyk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAg
ICA8ZGl2IGlkPSJkcmFnTWUiIG9uZHJhZ3N0YXJ0PSJzdGFydERyYWcoKSIgb25kcmFnZW5kPSJk
cmFnRW5kKCkiPgorICAgICAgICAgICAgRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKyAg
ICAgICAgPC9kaXY+CisgICAgICAgIDxiciAvPgorICAgICAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0
IiBvbmRyYWdlbnRlcj0iZHJhZ0VudGVyZWQoKSIgb25kcmFnb3Zlcj0iZHJhZ092ZXIoKSI+Cisg
ICAgICAgICAgICBEUk9QIFRBUkdFVC4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxiciAvPgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2Ry
YWctYW5kLWRyb3AtY29weUxpbmstbm9uZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TGluay1ub25lLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWct
YW5kLWRyb3AtY29weUxpbmstbm9uZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNyBAQAorRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKworRFJPUCBUQVJHRVQuCisK
K2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbnRlcmVkOiBub25lCisKK2V2
ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbmQ6IG5vbmUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weUxpbmstbm9uZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29w
eUxpbmstbm9uZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhU
TUwvZHJhZy1hbmQtZHJvcC1jb3B5TGluay1ub25lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODIgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+PC90aXRsZT4KKyAg
ICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgICAgIGRpdiB7IGJhY2tncm91
bmQtY29sb3I6ICNjY2M7IGJvcmRlcjogMXB4IHNvbGlkICMzMzM7IHdpZHRoOiAyMDBweDsgdGV4
dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IDEwcHg7IH0KKyAgICAgICAgICAgICNkcmFnTWUgeyAt
d2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgfQor
ICAgICAgICAgICAgI2Ryb3BUYXJnZXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjOWNlYWRlOyB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHJ1blRl
c3QoKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBkcm9nU291
cmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdNZSIpOworICAgICAgICAgICAgdmFy
IGRyb3BUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcFRhcmdldCIpOworICAg
ICAgICAgICAgdmFyIHN0YXJ0WCA9IGRyb2dTb3VyY2Uub2Zmc2V0TGVmdCArIDEwOworICAgICAg
ICAgICAgdmFyIHN0YXJ0WSA9IGRyb2dTb3VyY2Uub2Zmc2V0VG9wICsgZHJvZ1NvdXJjZS5vZmZz
ZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGVuZFggPSBkcm9wVGFyZ2V0Lm9mZnNldExl
ZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBlbmRZID0gZHJvcFRhcmdldC5vZmZzZXRUb3AgKyBk
cm9wVGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQo
NTAwKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFgsIGVuZFkpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tEcm9wRWZm
ZWN0KGV2ZW50LCBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciByZXN1
bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCBpbiAnICsgbmFtZSArICc6ICcgKyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCArICdcbicpKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHJlc3VsdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0RHJh
ZygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVm
ZmVjdEFsbG93ZWQgPSAiY29weUxpbmsiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibm9uZSI7CisgICAgICAg
ICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAgICAgICAg
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibm9uZSI7CisgICAg
ICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJvcCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAn
cmVjZWl2ZURyb3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdNZSIg
b25kcmFnc3RhcnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+CisgICAgICAg
ICAgICBEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgPGJyIC8+CisgICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVyPSJkcmFn
RW50ZXJlZCgpIiBvbmRyYWdvdmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERST1AgVEFS
R0VULgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TW92
ZS1jb3B5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
SFRNTC9kcmFnLWFuZC1kcm9wLWNvcHlNb3ZlLWNvcHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TW92ZS1j
b3B5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9O
VE8gVEhFIERST1AgVEFSR0VUIQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVy
LmRyb3BFZmZlY3QgaW4gZHJhZ0VudGVyZWQ6IGNvcHkKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRy
b3BFZmZlY3QgaW4gZHJhZ0VuZDogY29weQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhU
TUwvZHJhZy1hbmQtZHJvcC1jb3B5TW92ZS1jb3B5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TW92ZS1jb3B5Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNv
cHlNb3ZlLWNvcHkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT48L3RpdGxlPgorICAgICAgICA8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPgorICAgICAgICAgICAgZGl2IHsgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsgYm9y
ZGVyOiAxcHggc29saWQgIzMzMzsgd2lkdGg6IDIwMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1h
cmdpbjogMTBweDsgfQorICAgICAgICAgICAgI2RyYWdNZSB7IC13ZWJraXQtdXNlci1kcmFnOiBl
bGVtZW50OyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9CisgICAgICAgICAgICAjZHJvcFRh
cmdldCB7IGJhY2tncm91bmQtY29sb3I6ICM5Y2VhZGU7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAg
IGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGRyb2dTb3VyY2UgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgICAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wVGFyZ2V0Iik7CisgICAgICAgICAgICB2YXIgc3RhcnRY
ID0gZHJvZ1NvdXJjZS5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2YXIgc3RhcnRZID0g
ZHJvZ1NvdXJjZS5vZmZzZXRUb3AgKyBkcm9nU291cmNlLm9mZnNldEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zmc2V0TGVmdCArIDEwOworICAgICAgICAg
ICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCg1MDApOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kWCwgZW5kWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5vbmxv
YWQgPSBydW5UZXN0OworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsIG5hbWUpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInAiKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluICcgKyBu
YW1lICsgJzogJyArIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ICsgJ1xuJykpOworICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnREcmFnKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJjb3B5
TW92ZSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGRyYWdFbnRlcmVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJjb3B5IjsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BF
ZmZlY3QoZXZlbnQsICdkcmFnRW50ZXJlZCcpOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGRyYWdPdmVyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJjb3B5IjsKKyAgICAgICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBmdW5jdGlvbiBkcmFnRW5kKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGVj
a0Ryb3BFZmZlY3QoZXZlbnQsICdkcmFnRW5kJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVEcm9wKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdyZWNlaXZlRHJvcCcpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0iZHJhZ01lIiBvbmRyYWdzdGFydD0ic3RhcnRE
cmFnKCkiIG9uZHJhZ2VuZD0iZHJhZ0VuZCgpIj4KKyAgICAgICAgICAgIERSQUcgTUUgT05UTyBU
SEUgRFJPUCBUQVJHRVQhCisgICAgICAgIDwvZGl2PgorICAgICAgICA8YnIgLz4KKyAgICAgICAg
PGRpdiBpZD0iZHJvcFRhcmdldCIgb25kcmFnZW50ZXI9ImRyYWdFbnRlcmVkKCkiIG9uZHJhZ292
ZXI9ImRyYWdPdmVyKCkiPgorICAgICAgICAgICAgRFJPUCBUQVJHRVQuCisgICAgICAgIDwvZGl2
PgorICAgICAgICA8YnIgLz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHlNb3ZlLWxpbmstZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3At
Y29weU1vdmUtbGluay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNvcHlNb3ZlLWxpbmstZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK0RSQUcgTUUgT05UTyBUSEUgRFJPUCBUQVJHRVQh
CisKK0RST1AgVEFSR0VULgorCitldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFn
RW50ZXJlZDogbGluaworCitldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFnRW5k
OiBub25lCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNv
cHlNb3ZlLWxpbmsuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRN
TC9kcmFnLWFuZC1kcm9wLWNvcHlNb3ZlLWxpbmsuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weU1vdmUtbGluay5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHRpdGxlPjwvdGl0bGU+CisgICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAg
ICAgICBkaXYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOyBib3JkZXI6IDFweCBzb2xpZCAjMzMz
OyB3aWR0aDogMjAwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOiAxMHB4OyB9CisgICAg
ICAgICAgICAjZHJhZ01lIHsgLXdlYmtpdC11c2VyLWRyYWc6IGVsZW1lbnQ7IC13ZWJraXQtdXNl
ci1zZWxlY3Q6IG5vbmU7IH0KKyAgICAgICAgICAgICNkcm9wVGFyZ2V0IHsgYmFja2dyb3VuZC1j
b2xvcjogIzljZWFkZTsgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRT
ZW5kZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICB2YXIgZHJvZ1NvdXJjZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnTWUi
KTsKKyAgICAgICAgICAgIHZhciBkcm9wVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImRyb3BUYXJnZXQiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFggPSBkcm9nU291cmNlLm9mZnNl
dExlZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBzdGFydFkgPSBkcm9nU291cmNlLm9mZnNldFRv
cCArIGRyb2dTb3VyY2Uub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBlbmRYID0g
ZHJvcFRhcmdldC5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2YXIgZW5kWSA9IGRyb3BU
YXJnZXQub2Zmc2V0VG9wICsgZHJvcFRhcmdldC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhlbmRYLCBlbmRZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAg
ICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRHJvcEVmZmVjdChldmVudCwgbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gJyArIG5hbWUgKyAnOiAnICsgZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgKyAnXG4nKSk7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChyZXN1bHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBzdGFydERyYWcoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2
ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gImNvcHlNb3ZlIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VudGVyZWQoKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
ID0gImxpbmsiOworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdF
bnRlcmVkJyk7CisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZm
ZWN0ID0gImxpbmsiOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbmQo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwg
J2RyYWdFbmQnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVu
Y3Rpb24gcmVjZWl2ZURyb3AoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNr
RHJvcEVmZmVjdChldmVudCwgJ3JlY2VpdmVEcm9wJyk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAg
ICA8ZGl2IGlkPSJkcmFnTWUiIG9uZHJhZ3N0YXJ0PSJzdGFydERyYWcoKSIgb25kcmFnZW5kPSJk
cmFnRW5kKCkiPgorICAgICAgICAgICAgRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKyAg
ICAgICAgPC9kaXY+CisgICAgICAgIDxiciAvPgorICAgICAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0
IiBvbmRyYWdlbnRlcj0iZHJhZ0VudGVyZWQoKSIgb25kcmFnb3Zlcj0iZHJhZ092ZXIoKSI+Cisg
ICAgICAgICAgICBEUk9QIFRBUkdFVC4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxiciAvPgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2Ry
YWctYW5kLWRyb3AtY29weU1vdmUtbW92ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TW92ZS1tb3ZlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWct
YW5kLWRyb3AtY29weU1vdmUtbW92ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNyBAQAorRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKworRFJPUCBUQVJHRVQuCisK
K2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbnRlcmVkOiBtb3ZlCisKK2V2
ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbmQ6IG1vdmUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29weU1vdmUtbW92ZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtY29w
eU1vdmUtbW92ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhU
TUwvZHJhZy1hbmQtZHJvcC1jb3B5TW92ZS1tb3ZlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODIgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+PC90aXRsZT4KKyAg
ICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgICAgIGRpdiB7IGJhY2tncm91
bmQtY29sb3I6ICNjY2M7IGJvcmRlcjogMXB4IHNvbGlkICMzMzM7IHdpZHRoOiAyMDBweDsgdGV4
dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IDEwcHg7IH0KKyAgICAgICAgICAgICNkcmFnTWUgeyAt
d2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgfQor
ICAgICAgICAgICAgI2Ryb3BUYXJnZXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjOWNlYWRlOyB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHJ1blRl
c3QoKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBkcm9nU291
cmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdNZSIpOworICAgICAgICAgICAgdmFy
IGRyb3BUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcFRhcmdldCIpOworICAg
ICAgICAgICAgdmFyIHN0YXJ0WCA9IGRyb2dTb3VyY2Uub2Zmc2V0TGVmdCArIDEwOworICAgICAg
ICAgICAgdmFyIHN0YXJ0WSA9IGRyb2dTb3VyY2Uub2Zmc2V0VG9wICsgZHJvZ1NvdXJjZS5vZmZz
ZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGVuZFggPSBkcm9wVGFyZ2V0Lm9mZnNldExl
ZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBlbmRZID0gZHJvcFRhcmdldC5vZmZzZXRUb3AgKyBk
cm9wVGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQo
NTAwKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFgsIGVuZFkpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tEcm9wRWZm
ZWN0KGV2ZW50LCBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciByZXN1
bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCBpbiAnICsgbmFtZSArICc6ICcgKyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCArICdcbicpKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHJlc3VsdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0RHJh
ZygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVm
ZmVjdEFsbG93ZWQgPSAiY29weU1vdmUiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibW92ZSI7CisgICAgICAg
ICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAgICAgICAg
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibW92ZSI7CisgICAg
ICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJvcCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAn
cmVjZWl2ZURyb3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdNZSIg
b25kcmFnc3RhcnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+CisgICAgICAg
ICAgICBEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgPGJyIC8+CisgICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVyPSJkcmFn
RW50ZXJlZCgpIiBvbmRyYWdvdmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERST1AgVEFS
R0VULgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TW92
ZS1ub25lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
SFRNTC9kcmFnLWFuZC1kcm9wLWNvcHlNb3ZlLW5vbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TW92ZS1u
b25lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9O
VE8gVEhFIERST1AgVEFSR0VUIQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVy
LmRyb3BFZmZlY3QgaW4gZHJhZ0VudGVyZWQ6IG5vbmUKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRy
b3BFZmZlY3QgaW4gZHJhZ0VuZDogbm9uZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhU
TUwvZHJhZy1hbmQtZHJvcC1jb3B5TW92ZS1ub25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1jb3B5TW92ZS1ub25lLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWNv
cHlNb3ZlLW5vbmUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT48L3RpdGxlPgorICAgICAgICA8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPgorICAgICAgICAgICAgZGl2IHsgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsgYm9y
ZGVyOiAxcHggc29saWQgIzMzMzsgd2lkdGg6IDIwMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1h
cmdpbjogMTBweDsgfQorICAgICAgICAgICAgI2RyYWdNZSB7IC13ZWJraXQtdXNlci1kcmFnOiBl
bGVtZW50OyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9CisgICAgICAgICAgICAjZHJvcFRh
cmdldCB7IGJhY2tncm91bmQtY29sb3I6ICM5Y2VhZGU7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAg
IGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGRyb2dTb3VyY2UgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgICAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wVGFyZ2V0Iik7CisgICAgICAgICAgICB2YXIgc3RhcnRY
ID0gZHJvZ1NvdXJjZS5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2YXIgc3RhcnRZID0g
ZHJvZ1NvdXJjZS5vZmZzZXRUb3AgKyBkcm9nU291cmNlLm9mZnNldEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zmc2V0TGVmdCArIDEwOworICAgICAgICAg
ICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCg1MDApOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kWCwgZW5kWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5vbmxv
YWQgPSBydW5UZXN0OworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsIG5hbWUpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInAiKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluICcgKyBu
YW1lICsgJzogJyArIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ICsgJ1xuJykpOworICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnREcmFnKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJjb3B5
TW92ZSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGRyYWdFbnRlcmVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJub25lIjsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BF
ZmZlY3QoZXZlbnQsICdkcmFnRW50ZXJlZCcpOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGRyYWdPdmVyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJub25lIjsKKyAgICAgICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBmdW5jdGlvbiBkcmFnRW5kKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGVj
a0Ryb3BFZmZlY3QoZXZlbnQsICdkcmFnRW5kJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVEcm9wKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdyZWNlaXZlRHJvcCcpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0iZHJhZ01lIiBvbmRyYWdzdGFydD0ic3RhcnRE
cmFnKCkiIG9uZHJhZ2VuZD0iZHJhZ0VuZCgpIj4KKyAgICAgICAgICAgIERSQUcgTUUgT05UTyBU
SEUgRFJPUCBUQVJHRVQhCisgICAgICAgIDwvZGl2PgorICAgICAgICA8YnIgLz4KKyAgICAgICAg
PGRpdiBpZD0iZHJvcFRhcmdldCIgb25kcmFnZW50ZXI9ImRyYWdFbnRlcmVkKCkiIG9uZHJhZ292
ZXI9ImRyYWdPdmVyKCkiPgorICAgICAgICAgICAgRFJPUCBUQVJHRVQuCisgICAgICAgIDwvZGl2
PgorICAgICAgICA8YnIgLz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWxpbmstY29weS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5r
LWNvcHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
REhUTUwvZHJhZy1hbmQtZHJvcC1saW5rLWNvcHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDcgQEAKK0RSQUcgTUUgT05UTyBUSEUgRFJPUCBUQVJHRVQhCisKK0RST1AgVEFS
R0VULgorCitldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFnRW50ZXJlZDogY29w
eQorCitldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFnRW5kOiBub25lCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWxpbmstY29weS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3At
bGluay1jb3B5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRN
TC9kcmFnLWFuZC1kcm9wLWxpbmstY29weS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgy
IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPjwvdGl0bGU+CisgICAgICAg
IDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgICAgICBkaXYgeyBiYWNrZ3JvdW5kLWNv
bG9yOiAjY2NjOyBib3JkZXI6IDFweCBzb2xpZCAjMzMzOyB3aWR0aDogMjAwcHg7IHRleHQtYWxp
Z246IGNlbnRlcjsgbWFyZ2luOiAxMHB4OyB9CisgICAgICAgICAgICAjZHJhZ01lIHsgLXdlYmtp
dC11c2VyLWRyYWc6IGVsZW1lbnQ7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IH0KKyAgICAg
ICAgICAgICNkcm9wVGFyZ2V0IHsgYmFja2dyb3VuZC1jb2xvcjogIzljZWFkZTsgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkg
eworICAgICAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZHJvZ1NvdXJjZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnTWUiKTsKKyAgICAgICAgICAgIHZhciBkcm9w
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyb3BUYXJnZXQiKTsKKyAgICAgICAg
ICAgIHZhciBzdGFydFggPSBkcm9nU291cmNlLm9mZnNldExlZnQgKyAxMDsKKyAgICAgICAgICAg
IHZhciBzdGFydFkgPSBkcm9nU291cmNlLm9mZnNldFRvcCArIGRyb2dTb3VyY2Uub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBlbmRYID0gZHJvcFRhcmdldC5vZmZzZXRMZWZ0ICsg
MTA7CisgICAgICAgICAgICB2YXIgZW5kWSA9IGRyb3BUYXJnZXQub2Zmc2V0VG9wICsgZHJvcFRh
cmdldC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbmRYLCBlbmRZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrRHJvcEVmZmVjdChl
dmVudCwgbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaW4gJyArIG5hbWUgKyAnOiAnICsgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
KyAnXG4nKSk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZXN1
bHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydERyYWcoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RB
bGxvd2VkID0gImxpbmsiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7CisgICAgICAgICAgICAgICAg
Y2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAgICAgICAgICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBmdW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7CisgICAgICAgICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJvcCgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAncmVjZWl2ZURy
b3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdNZSIgb25kcmFnc3Rh
cnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+CisgICAgICAgICAgICBEUkFH
IE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+
CisgICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVyPSJkcmFnRW50ZXJlZCgp
IiBvbmRyYWdvdmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERST1AgVEFSR0VULgorICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9w
LWxpbmstZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
REhUTUwvZHJhZy1hbmQtZHJvcC1saW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorCitEUk9QIFRBUkdFVC4K
KworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0VudGVyZWQ6IGxpbmsKKwor
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0VuZDogbGluawpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rLW1vdmUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRy
b3AtbGluay1tb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbGluay1tb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorCitE
Uk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0VudGVy
ZWQ6IG1vdmUKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0VuZDogbm9u
ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rLW1v
dmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFu
ZC1kcm9wLWxpbmstbW92ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rLW1vdmUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4MiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT48L3RpdGxlPgor
ICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICAgICAgZGl2IHsgYmFja2dy
b3VuZC1jb2xvcjogI2NjYzsgYm9yZGVyOiAxcHggc29saWQgIzMzMzsgd2lkdGg6IDIwMHB4OyB0
ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTBweDsgfQorICAgICAgICAgICAgI2RyYWdNZSB7
IC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50OyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9
CisgICAgICAgICAgICAjZHJvcFRhcmdldCB7IGJhY2tncm91bmQtY29sb3I6ICM5Y2VhZGU7IH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGRyb2dT
b3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgICAgICB2
YXIgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wVGFyZ2V0Iik7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRYID0gZHJvZ1NvdXJjZS5vZmZzZXRMZWZ0ICsgMTA7CisgICAg
ICAgICAgICB2YXIgc3RhcnRZID0gZHJvZ1NvdXJjZS5vZmZzZXRUb3AgKyBkcm9nU291cmNlLm9m
ZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zmc2V0
TGVmdCArIDEwOworICAgICAgICAgICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCAr
IGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2Fy
ZCg1MDApOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kWCwgZW5kWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworICAgICAgICA8L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja0Ryb3BF
ZmZlY3QoZXZlbnQsIG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJl
c3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKKyAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2V2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0IGluICcgKyBuYW1lICsgJzogJyArIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0ICsgJ1xuJykpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnRE
cmFnKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIu
ZWZmZWN0QWxsb3dlZCA9ICJsaW5rIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZnVuY3Rpb24gZHJhZ0VudGVyZWQoKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gIm1vdmUiOworICAgICAgICAg
ICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdFbnRlcmVkJyk7CisgICAgICAgICAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gIm1vdmUiOworICAgICAg
ICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbmQoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdFbmQnKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZURyb3AoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ3Jl
Y2VpdmVEcm9wJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJkcmFnTWUiIG9u
ZHJhZ3N0YXJ0PSJzdGFydERyYWcoKSIgb25kcmFnZW5kPSJkcmFnRW5kKCkiPgorICAgICAgICAg
ICAgRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKyAgICAgICAgPC9kaXY+CisgICAgICAg
IDxiciAvPgorICAgICAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0IiBvbmRyYWdlbnRlcj0iZHJhZ0Vu
dGVyZWQoKSIgb25kcmFnb3Zlcj0iZHJhZ092ZXIoKSI+CisgICAgICAgICAgICBEUk9QIFRBUkdF
VC4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxiciAvPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbGluay1ub25l
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9k
cmFnLWFuZC1kcm9wLWxpbmstbm9uZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWxpbmstbm9uZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRB
UkdFVCEKKworRFJPUCBUQVJHRVQuCisKK2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlu
IGRyYWdFbnRlcmVkOiBub25lCisKK2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRy
YWdFbmQ6IG5vbmUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRy
b3AtbGluay1ub25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vREhU
TUwvZHJhZy1hbmQtZHJvcC1saW5rLW5vbmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbGluay1ub25lLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODIgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+
PC90aXRsZT4KKyAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgICAgIGRp
diB7IGJhY2tncm91bmQtY29sb3I6ICNjY2M7IGJvcmRlcjogMXB4IHNvbGlkICMzMzM7IHdpZHRo
OiAyMDBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IDEwcHg7IH0KKyAgICAgICAgICAg
ICNkcmFnTWUgeyAtd2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVj
dDogbm9uZTsgfQorICAgICAgICAgICAgI2Ryb3BUYXJnZXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAj
OWNlYWRlOyB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IHZhciBkcm9nU291cmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdNZSIpOworICAg
ICAgICAgICAgdmFyIGRyb3BUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcFRh
cmdldCIpOworICAgICAgICAgICAgdmFyIHN0YXJ0WCA9IGRyb2dTb3VyY2Uub2Zmc2V0TGVmdCAr
IDEwOworICAgICAgICAgICAgdmFyIHN0YXJ0WSA9IGRyb2dTb3VyY2Uub2Zmc2V0VG9wICsgZHJv
Z1NvdXJjZS5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGVuZFggPSBkcm9wVGFy
Z2V0Lm9mZnNldExlZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBlbmRZID0gZHJvcFRhcmdldC5v
ZmZzZXRUb3AgKyBkcm9wVGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bGVhcEZvcndhcmQoNTAwKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVu
ZFgsIGVuZFkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24g
Y2hlY2tEcm9wRWZmZWN0KGV2ZW50LCBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiAnICsgbmFtZSArICc6ICcgKyBldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCArICdcbicpKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKHJlc3VsdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIHN0YXJ0RHJhZygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0
YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAibGluayI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbnRlcmVkKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJub25lIjsK
KyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdkcmFnRW50ZXJlZCcpOwor
ICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdPdmVyKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJub25l
IjsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnRW5kKCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdkcmFnRW5kJyk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlY2Vp
dmVEcm9wKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3Qo
ZXZlbnQsICdyZWNlaXZlRHJvcCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0i
ZHJhZ01lIiBvbmRyYWdzdGFydD0ic3RhcnREcmFnKCkiIG9uZHJhZ2VuZD0iZHJhZ0VuZCgpIj4K
KyAgICAgICAgICAgIERSQUcgTUUgT05UTyBUSEUgRFJPUCBUQVJHRVQhCisgICAgICAgIDwvZGl2
PgorICAgICAgICA8YnIgLz4KKyAgICAgICAgPGRpdiBpZD0iZHJvcFRhcmdldCIgb25kcmFnZW50
ZXI9ImRyYWdFbnRlcmVkKCkiIG9uZHJhZ292ZXI9ImRyYWdPdmVyKCkiPgorICAgICAgICAgICAg
RFJPUCBUQVJHRVQuCisgICAgICAgIDwvZGl2PgorICAgICAgICA8YnIgLz4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9w
LWxpbmsuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFn
LWFuZC1kcm9wLWxpbmsuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RIVE1ML2RyYWctYW5kLWRyb3AtbGluay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgy
IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPjwvdGl0bGU+CisgICAgICAg
IDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgICAgICBkaXYgeyBiYWNrZ3JvdW5kLWNv
bG9yOiAjY2NjOyBib3JkZXI6IDFweCBzb2xpZCAjMzMzOyB3aWR0aDogMjAwcHg7IHRleHQtYWxp
Z246IGNlbnRlcjsgbWFyZ2luOiAxMHB4OyB9CisgICAgICAgICAgICAjZHJhZ01lIHsgLXdlYmtp
dC11c2VyLWRyYWc6IGVsZW1lbnQ7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IH0KKyAgICAg
ICAgICAgICNkcm9wVGFyZ2V0IHsgYmFja2dyb3VuZC1jb2xvcjogIzljZWFkZTsgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkg
eworICAgICAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZHJvZ1NvdXJjZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnTWUiKTsKKyAgICAgICAgICAgIHZhciBkcm9w
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyb3BUYXJnZXQiKTsKKyAgICAgICAg
ICAgIHZhciBzdGFydFggPSBkcm9nU291cmNlLm9mZnNldExlZnQgKyAxMDsKKyAgICAgICAgICAg
IHZhciBzdGFydFkgPSBkcm9nU291cmNlLm9mZnNldFRvcCArIGRyb2dTb3VyY2Uub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBlbmRYID0gZHJvcFRhcmdldC5vZmZzZXRMZWZ0ICsg
MTA7CisgICAgICAgICAgICB2YXIgZW5kWSA9IGRyb3BUYXJnZXQub2Zmc2V0VG9wICsgZHJvcFRh
cmdldC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbmRYLCBlbmRZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrRHJvcEVmZmVjdChl
dmVudCwgbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaW4gJyArIG5hbWUgKyAnOiAnICsgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
KyAnXG4nKSk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZXN1
bHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydERyYWcoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RB
bGxvd2VkID0gImxpbmsiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibGluayI7CisgICAgICAgICAgICAgICAg
Y2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAgICAgICAgICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBmdW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibGluayI7CisgICAgICAgICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJvcCgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAncmVjZWl2ZURy
b3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdNZSIgb25kcmFnc3Rh
cnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+CisgICAgICAgICAgICBEUkFH
IE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+
CisgICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVyPSJkcmFnRW50ZXJlZCgp
IiBvbmRyYWdvdmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERST1AgVEFSR0VULgorICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rTW92ZS1jb3B5LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFn
LWFuZC1kcm9wLWxpbmtNb3ZlLWNvcHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rTW92ZS1jb3B5LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhFIERS
T1AgVEFSR0VUIQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZl
Y3QgaW4gZHJhZ0VudGVyZWQ6IGNvcHkKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
aW4gZHJhZ0VuZDogbm9uZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1h
bmQtZHJvcC1saW5rTW92ZS1jb3B5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rTW92ZS1jb3B5Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWxpbmtNb3ZlLWNv
cHkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDx0aXRsZT48L3RpdGxlPgorICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorICAgICAgICAgICAgZGl2IHsgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsgYm9yZGVyOiAxcHgg
c29saWQgIzMzMzsgd2lkdGg6IDIwMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTBw
eDsgfQorICAgICAgICAgICAgI2RyYWdNZSB7IC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50OyAt
d2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9CisgICAgICAgICAgICAjZHJvcFRhcmdldCB7IGJh
Y2tncm91bmQtY29sb3I6ICM5Y2VhZGU7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGlmICghd2lu
ZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgdmFyIGRyb2dTb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZHJhZ01lIik7CisgICAgICAgICAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJkcm9wVGFyZ2V0Iik7CisgICAgICAgICAgICB2YXIgc3RhcnRYID0gZHJvZ1Nv
dXJjZS5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2YXIgc3RhcnRZID0gZHJvZ1NvdXJj
ZS5vZmZzZXRUb3AgKyBkcm9nU291cmNlLm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICB2
YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zmc2V0TGVmdCArIDEwOworICAgICAgICAgICAgdmFyIGVu
ZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRY
LCBzdGFydFkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCg1MDApOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oZW5kWCwgZW5kWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBydW5U
ZXN0OworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgCisgICAg
ICAgICAgICBmdW5jdGlvbiBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsIG5hbWUpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InAiKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluICcgKyBuYW1lICsgJzog
JyArIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ICsgJ1xuJykpOworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnREcmFnKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJsaW5rTW92ZSI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbnRl
cmVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCA9ICJjb3B5IjsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZl
bnQsICdkcmFnRW50ZXJlZCcpOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRy
YWdPdmVyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNm
ZXIuZHJvcEVmZmVjdCA9ICJjb3B5IjsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlv
biBkcmFnRW5kKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZl
Y3QoZXZlbnQsICdkcmFnRW5kJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVEcm9wKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdyZWNlaXZlRHJvcCcpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPGRpdiBpZD0iZHJhZ01lIiBvbmRyYWdzdGFydD0ic3RhcnREcmFnKCkiIG9u
ZHJhZ2VuZD0iZHJhZ0VuZCgpIj4KKyAgICAgICAgICAgIERSQUcgTUUgT05UTyBUSEUgRFJPUCBU
QVJHRVQhCisgICAgICAgIDwvZGl2PgorICAgICAgICA8YnIgLz4KKyAgICAgICAgPGRpdiBpZD0i
ZHJvcFRhcmdldCIgb25kcmFnZW50ZXI9ImRyYWdFbnRlcmVkKCkiIG9uZHJhZ292ZXI9ImRyYWdP
dmVyKCkiPgorICAgICAgICAgICAgRFJPUCBUQVJHRVQuCisgICAgICAgIDwvZGl2PgorICAgICAg
ICA8YnIgLz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ESFRNTC9kcmFnLWFuZC1kcm9wLWxpbmtNb3ZlLWxpbmstZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbGlua01vdmUt
bGluay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
SFRNTC9kcmFnLWFuZC1kcm9wLWxpbmtNb3ZlLWxpbmstZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDcgQEAKK0RSQUcgTUUgT05UTyBUSEUgRFJPUCBUQVJHRVQhCisKK0RST1Ag
VEFSR0VULgorCitldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFnRW50ZXJlZDog
bGluaworCitldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFnRW5kOiBsaW5rCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWxpbmtNb3ZlLWxp
bmsuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFu
ZC1kcm9wLWxpbmtNb3ZlLWxpbmsuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbGlua01vdmUtbGluay5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDgyIEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPjwv
dGl0bGU+CisgICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgICAgICBkaXYg
eyBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOyBib3JkZXI6IDFweCBzb2xpZCAjMzMzOyB3aWR0aDog
MjAwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOiAxMHB4OyB9CisgICAgICAgICAgICAj
ZHJhZ01lIHsgLXdlYmtpdC11c2VyLWRyYWc6IGVsZW1lbnQ7IC13ZWJraXQtdXNlci1zZWxlY3Q6
IG5vbmU7IH0KKyAgICAgICAgICAgICNkcm9wVGFyZ2V0IHsgYmFja2dyb3VuZC1jb2xvcjogIzlj
ZWFkZTsgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB2
YXIgZHJvZ1NvdXJjZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnTWUiKTsKKyAgICAg
ICAgICAgIHZhciBkcm9wVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyb3BUYXJn
ZXQiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFggPSBkcm9nU291cmNlLm9mZnNldExlZnQgKyAx
MDsKKyAgICAgICAgICAgIHZhciBzdGFydFkgPSBkcm9nU291cmNlLm9mZnNldFRvcCArIGRyb2dT
b3VyY2Uub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBlbmRYID0gZHJvcFRhcmdl
dC5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2YXIgZW5kWSA9IGRyb3BUYXJnZXQub2Zm
c2V0VG9wICsgZHJvcFRhcmdldC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmxl
YXBGb3J3YXJkKDUwMCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbmRY
LCBlbmRZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAgICAgIDwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRHJvcEVmZmVjdChldmVudCwgbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gJyArIG5hbWUgKyAnOiAnICsgZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QgKyAnXG4nKSk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChyZXN1bHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biBzdGFydERyYWcoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFU
cmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gImxpbmtNb3ZlIjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VudGVyZWQoKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gImxpbmsi
OworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdFbnRlcmVkJyk7
CisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gImxp
bmsiOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbmQoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdFbmQn
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gcmVj
ZWl2ZURyb3AoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVj
dChldmVudCwgJ3JlY2VpdmVEcm9wJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlk
PSJkcmFnTWUiIG9uZHJhZ3N0YXJ0PSJzdGFydERyYWcoKSIgb25kcmFnZW5kPSJkcmFnRW5kKCki
PgorICAgICAgICAgICAgRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKyAgICAgICAgPC9k
aXY+CisgICAgICAgIDxiciAvPgorICAgICAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0IiBvbmRyYWdl
bnRlcj0iZHJhZ0VudGVyZWQoKSIgb25kcmFnb3Zlcj0iZHJhZ092ZXIoKSI+CisgICAgICAgICAg
ICBEUk9QIFRBUkdFVC4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxiciAvPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRy
b3AtbGlua01vdmUtbW92ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rTW92ZS1tb3ZlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3At
bGlua01vdmUtbW92ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAor
RFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKworRFJPUCBUQVJHRVQuCisKK2V2ZW50LmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbnRlcmVkOiBtb3ZlCisKK2V2ZW50LmRhdGFU
cmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbmQ6IG1vdmUKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbGlua01vdmUtbW92ZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbGlua01vdmUtbW92
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1h
bmQtZHJvcC1saW5rTW92ZS1tb3ZlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAK
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+PC90aXRsZT4KKyAgICAgICAgPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgICAgIGRpdiB7IGJhY2tncm91bmQtY29sb3I6
ICNjY2M7IGJvcmRlcjogMXB4IHNvbGlkICMzMzM7IHdpZHRoOiAyMDBweDsgdGV4dC1hbGlnbjog
Y2VudGVyOyBtYXJnaW46IDEwcHg7IH0KKyAgICAgICAgICAgICNkcmFnTWUgeyAtd2Via2l0LXVz
ZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgfQorICAgICAgICAg
ICAgI2Ryb3BUYXJnZXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjOWNlYWRlOyB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBkcm9nU291cmNlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdNZSIpOworICAgICAgICAgICAgdmFyIGRyb3BUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcFRhcmdldCIpOworICAgICAgICAgICAg
dmFyIHN0YXJ0WCA9IGRyb2dTb3VyY2Uub2Zmc2V0TGVmdCArIDEwOworICAgICAgICAgICAgdmFy
IHN0YXJ0WSA9IGRyb2dTb3VyY2Uub2Zmc2V0VG9wICsgZHJvZ1NvdXJjZS5vZmZzZXRIZWlnaHQg
LyAyOworICAgICAgICAgICAgdmFyIGVuZFggPSBkcm9wVGFyZ2V0Lm9mZnNldExlZnQgKyAxMDsK
KyAgICAgICAgICAgIHZhciBlbmRZID0gZHJvcFRhcmdldC5vZmZzZXRUb3AgKyBkcm9wVGFyZ2V0
Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoNTAwKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFgsIGVuZFkpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB3
aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tEcm9wRWZmZWN0KGV2ZW50
LCBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVj
dCBpbiAnICsgbmFtZSArICc6ICcgKyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCArICdc
bicpKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJlc3VsdCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0RHJhZygpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93
ZWQgPSAibGlua01vdmUiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibW92ZSI7CisgICAgICAgICAgICAgICAg
Y2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAgICAgICAgICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBmdW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibW92ZSI7CisgICAgICAgICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJvcCgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAncmVjZWl2ZURy
b3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdNZSIgb25kcmFnc3Rh
cnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+CisgICAgICAgICAgICBEUkFH
IE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+
CisgICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVyPSJkcmFnRW50ZXJlZCgp
IiBvbmRyYWdvdmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERST1AgVEFSR0VULgorICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rTW92ZS1ub25lLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFn
LWFuZC1kcm9wLWxpbmtNb3ZlLW5vbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rTW92ZS1ub25lLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhFIERS
T1AgVEFSR0VUIQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZl
Y3QgaW4gZHJhZ0VudGVyZWQ6IG5vbmUKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
aW4gZHJhZ0VuZDogbm9uZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1h
bmQtZHJvcC1saW5rTW92ZS1ub25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1saW5rTW92ZS1ub25lLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLWxpbmtNb3ZlLW5v
bmUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDx0aXRsZT48L3RpdGxlPgorICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorICAgICAgICAgICAgZGl2IHsgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsgYm9yZGVyOiAxcHgg
c29saWQgIzMzMzsgd2lkdGg6IDIwMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTBw
eDsgfQorICAgICAgICAgICAgI2RyYWdNZSB7IC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50OyAt
d2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9CisgICAgICAgICAgICAjZHJvcFRhcmdldCB7IGJh
Y2tncm91bmQtY29sb3I6ICM5Y2VhZGU7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGlmICghd2lu
ZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgdmFyIGRyb2dTb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZHJhZ01lIik7CisgICAgICAgICAgICB2YXIgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJkcm9wVGFyZ2V0Iik7CisgICAgICAgICAgICB2YXIgc3RhcnRYID0gZHJvZ1Nv
dXJjZS5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2YXIgc3RhcnRZID0gZHJvZ1NvdXJj
ZS5vZmZzZXRUb3AgKyBkcm9nU291cmNlLm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICB2
YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zmc2V0TGVmdCArIDEwOworICAgICAgICAgICAgdmFyIGVu
ZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRY
LCBzdGFydFkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCg1MDApOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oZW5kWCwgZW5kWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBydW5U
ZXN0OworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgCisgICAg
ICAgICAgICBmdW5jdGlvbiBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsIG5hbWUpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InAiKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluICcgKyBuYW1lICsgJzog
JyArIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ICsgJ1xuJykpOworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnREcmFnKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJsaW5rTW92ZSI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbnRl
cmVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCA9ICJub25lIjsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZl
bnQsICdkcmFnRW50ZXJlZCcpOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRy
YWdPdmVyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNm
ZXIuZHJvcEVmZmVjdCA9ICJub25lIjsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlv
biBkcmFnRW5kKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZl
Y3QoZXZlbnQsICdkcmFnRW5kJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVEcm9wKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdyZWNlaXZlRHJvcCcpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPGRpdiBpZD0iZHJhZ01lIiBvbmRyYWdzdGFydD0ic3RhcnREcmFnKCkiIG9u
ZHJhZ2VuZD0iZHJhZ0VuZCgpIj4KKyAgICAgICAgICAgIERSQUcgTUUgT05UTyBUSEUgRFJPUCBU
QVJHRVQhCisgICAgICAgIDwvZGl2PgorICAgICAgICA8YnIgLz4KKyAgICAgICAgPGRpdiBpZD0i
ZHJvcFRhcmdldCIgb25kcmFnZW50ZXI9ImRyYWdFbnRlcmVkKCkiIG9uZHJhZ292ZXI9ImRyYWdP
dmVyKCkiPgorICAgICAgICAgICAgRFJPUCBUQVJHRVQuCisgICAgICAgIDwvZGl2PgorICAgICAg
ICA8YnIgLz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ESFRNTC9kcmFnLWFuZC1kcm9wLW1vdmUtY29weS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1tb3ZlLWNvcHktZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJh
Zy1hbmQtZHJvcC1tb3ZlLWNvcHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDcgQEAKK0RSQUcgTUUgT05UTyBUSEUgRFJPUCBUQVJHRVQhCisKK0RST1AgVEFSR0VULgorCitl
dmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFnRW50ZXJlZDogY29weQorCitldmVu
dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpbiBkcmFnRW5kOiBub25lCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLW1vdmUtY29weS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbW92ZS1jb3B5
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFu
ZC1kcm9wLW1vdmUtY29weS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPjwvdGl0bGU+CisgICAgICAgIDxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgICAgICBkaXYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjY2Nj
OyBib3JkZXI6IDFweCBzb2xpZCAjMzMzOyB3aWR0aDogMjAwcHg7IHRleHQtYWxpZ246IGNlbnRl
cjsgbWFyZ2luOiAxMHB4OyB9CisgICAgICAgICAgICAjZHJhZ01lIHsgLXdlYmtpdC11c2VyLWRy
YWc6IGVsZW1lbnQ7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IH0KKyAgICAgICAgICAgICNk
cm9wVGFyZ2V0IHsgYmFja2dyb3VuZC1jb2xvcjogIzljZWFkZTsgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAg
ICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZHJvZ1NvdXJjZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkcmFnTWUiKTsKKyAgICAgICAgICAgIHZhciBkcm9wVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyb3BUYXJnZXQiKTsKKyAgICAgICAgICAgIHZhciBz
dGFydFggPSBkcm9nU291cmNlLm9mZnNldExlZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFkgPSBkcm9nU291cmNlLm9mZnNldFRvcCArIGRyb2dTb3VyY2Uub2Zmc2V0SGVpZ2h0IC8gMjsK
KyAgICAgICAgICAgIHZhciBlbmRYID0gZHJvcFRhcmdldC5vZmZzZXRMZWZ0ICsgMTA7CisgICAg
ICAgICAgICB2YXIgZW5kWSA9IGRyb3BUYXJnZXQub2Zmc2V0VG9wICsgZHJvcFRhcmdldC5vZmZz
ZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbmRYLCBlbmRZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93
Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrRHJvcEVmZmVjdChldmVudCwgbmFt
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgicCIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4g
JyArIG5hbWUgKyAnOiAnICsgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgKyAnXG4nKSk7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZXN1bHQpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydERyYWcoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0g
Im1vdmUiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlv
biBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9w
RWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBm
dW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7CisgICAgICAgICAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hl
Y2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJvcCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAncmVjZWl2ZURyb3AnKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdNZSIgb25kcmFnc3RhcnQ9InN0YXJ0
RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+CisgICAgICAgICAgICBEUkFHIE1FIE9OVE8g
VEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgICAg
IDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVyPSJkcmFnRW50ZXJlZCgpIiBvbmRyYWdv
dmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERST1AgVEFSR0VULgorICAgICAgICA8L2Rp
dj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1tb3ZlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLW1vdmUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJh
Zy1hbmQtZHJvcC1tb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBA
CitEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorCitEUk9QIFRBUkdFVC4KKworZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0VudGVyZWQ6IG1vdmUKKworZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0VuZDogbW92ZQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1tb3ZlLWxpbmstZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbW92ZS1s
aW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RI
VE1ML2RyYWctYW5kLWRyb3AtbW92ZS1saW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorCitEUk9QIFRBUkdF
VC4KKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0VudGVyZWQ6IGxpbmsK
KworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0VuZDogbm9uZQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1tb3ZlLWxpbmsuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLW1v
dmUtbGluay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwv
ZHJhZy1hbmQtZHJvcC1tb3ZlLWxpbmsuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBA
QAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT48L3RpdGxlPgorICAgICAgICA8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICAgICAgZGl2IHsgYmFja2dyb3VuZC1jb2xv
cjogI2NjYzsgYm9yZGVyOiAxcHggc29saWQgIzMzMzsgd2lkdGg6IDIwMHB4OyB0ZXh0LWFsaWdu
OiBjZW50ZXI7IG1hcmdpbjogMTBweDsgfQorICAgICAgICAgICAgI2RyYWdNZSB7IC13ZWJraXQt
dXNlci1kcmFnOiBlbGVtZW50OyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9CisgICAgICAg
ICAgICAjZHJvcFRhcmdldCB7IGJhY2tncm91bmQtY29sb3I6ICM5Y2VhZGU7IH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICAgICAgICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGRyb2dTb3VyY2UgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgICAgICB2YXIgZHJvcFRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wVGFyZ2V0Iik7CisgICAgICAgICAg
ICB2YXIgc3RhcnRYID0gZHJvZ1NvdXJjZS5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2
YXIgc3RhcnRZID0gZHJvZ1NvdXJjZS5vZmZzZXRUb3AgKyBkcm9nU291cmNlLm9mZnNldEhlaWdo
dCAvIDI7CisgICAgICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zmc2V0TGVmdCArIDEw
OworICAgICAgICAgICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJn
ZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCg1MDApOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kWCwgZW5kWSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja0Ryb3BFZmZlY3QoZXZl
bnQsIG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZm
ZWN0IGluICcgKyBuYW1lICsgJzogJyArIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ICsg
J1xuJykpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnREcmFnKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxs
b3dlZCA9ICJtb3ZlIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZnVuY3Rpb24gZHJhZ0VudGVyZWQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2
ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gImxpbmsiOworICAgICAgICAgICAgICAgIGNo
ZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdFbnRlcmVkJyk7CisgICAgICAgICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gImxpbmsiOworICAgICAgICAgICAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbmQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdFbmQnKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZURyb3AoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ3JlY2VpdmVEcm9w
Jyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJkcmFnTWUiIG9uZHJhZ3N0YXJ0
PSJzdGFydERyYWcoKSIgb25kcmFnZW5kPSJkcmFnRW5kKCkiPgorICAgICAgICAgICAgRFJBRyBN
RSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxiciAvPgor
ICAgICAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0IiBvbmRyYWdlbnRlcj0iZHJhZ0VudGVyZWQoKSIg
b25kcmFnb3Zlcj0iZHJhZ092ZXIoKSI+CisgICAgICAgICAgICBEUk9QIFRBUkdFVC4KKyAgICAg
ICAgPC9kaXY+CisgICAgICAgIDxiciAvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbW92ZS1ub25lLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1k
cm9wLW1vdmUtbm9uZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLW1vdmUtbm9uZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNyBAQAorRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKwor
RFJPUCBUQVJHRVQuCisKK2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbnRl
cmVkOiBub25lCisKK2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbmQ6IG5v
bmUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbW92ZS1u
b25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1h
bmQtZHJvcC1tb3ZlLW5vbmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RIVE1ML2RyYWctYW5kLWRyb3AtbW92ZS1ub25lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODIgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+PC90aXRsZT4K
KyAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgICAgIGRpdiB7IGJhY2tn
cm91bmQtY29sb3I6ICNjY2M7IGJvcmRlcjogMXB4IHNvbGlkICMzMzM7IHdpZHRoOiAyMDBweDsg
dGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IDEwcHg7IH0KKyAgICAgICAgICAgICNkcmFnTWUg
eyAtd2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsg
fQorICAgICAgICAgICAgI2Ryb3BUYXJnZXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjOWNlYWRlOyB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBkcm9n
U291cmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdNZSIpOworICAgICAgICAgICAg
dmFyIGRyb3BUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcFRhcmdldCIpOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0WCA9IGRyb2dTb3VyY2Uub2Zmc2V0TGVmdCArIDEwOworICAg
ICAgICAgICAgdmFyIHN0YXJ0WSA9IGRyb2dTb3VyY2Uub2Zmc2V0VG9wICsgZHJvZ1NvdXJjZS5v
ZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGVuZFggPSBkcm9wVGFyZ2V0Lm9mZnNl
dExlZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBlbmRZID0gZHJvcFRhcmdldC5vZmZzZXRUb3Ag
KyBkcm9wVGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndh
cmQoNTAwKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFgsIGVuZFkp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tEcm9w
RWZmZWN0KGV2ZW50LCBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBy
ZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdldmVudC5kYXRhVHJhbnNm
ZXIuZHJvcEVmZmVjdCBpbiAnICsgbmFtZSArICc6ICcgKyBldmVudC5kYXRhVHJhbnNmZXIuZHJv
cEVmZmVjdCArICdcbicpKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKHJlc3VsdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0
RHJhZygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVy
LmVmZmVjdEFsbG93ZWQgPSAibW92ZSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbnRlcmVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJub25lIjsKKyAgICAgICAg
ICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdkcmFnRW50ZXJlZCcpOworICAgICAgICAg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdPdmVyKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJub25lIjsKKyAgICAg
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnRW5kKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdkcmFnRW5kJyk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVEcm9wKCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdy
ZWNlaXZlRHJvcCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0iZHJhZ01lIiBv
bmRyYWdzdGFydD0ic3RhcnREcmFnKCkiIG9uZHJhZ2VuZD0iZHJhZ0VuZCgpIj4KKyAgICAgICAg
ICAgIERSQUcgTUUgT05UTyBUSEUgRFJPUCBUQVJHRVQhCisgICAgICAgIDwvZGl2PgorICAgICAg
ICA8YnIgLz4KKyAgICAgICAgPGRpdiBpZD0iZHJvcFRhcmdldCIgb25kcmFnZW50ZXI9ImRyYWdF
bnRlcmVkKCkiIG9uZHJhZ292ZXI9ImRyYWdPdmVyKCkiPgorICAgICAgICAgICAgRFJPUCBUQVJH
RVQuCisgICAgICAgIDwvZGl2PgorICAgICAgICA8YnIgLz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLW1vdmUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9w
LW1vdmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2Ry
YWctYW5kLWRyb3AtbW92ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPjwvdGl0bGU+CisgICAgICAgIDxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgICAgICBkaXYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjY2Nj
OyBib3JkZXI6IDFweCBzb2xpZCAjMzMzOyB3aWR0aDogMjAwcHg7IHRleHQtYWxpZ246IGNlbnRl
cjsgbWFyZ2luOiAxMHB4OyB9CisgICAgICAgICAgICAjZHJhZ01lIHsgLXdlYmtpdC11c2VyLWRy
YWc6IGVsZW1lbnQ7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IH0KKyAgICAgICAgICAgICNk
cm9wVGFyZ2V0IHsgYmFja2dyb3VuZC1jb2xvcjogIzljZWFkZTsgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAg
ICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZHJvZ1NvdXJjZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkcmFnTWUiKTsKKyAgICAgICAgICAgIHZhciBkcm9wVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyb3BUYXJnZXQiKTsKKyAgICAgICAgICAgIHZhciBz
dGFydFggPSBkcm9nU291cmNlLm9mZnNldExlZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFkgPSBkcm9nU291cmNlLm9mZnNldFRvcCArIGRyb2dTb3VyY2Uub2Zmc2V0SGVpZ2h0IC8gMjsK
KyAgICAgICAgICAgIHZhciBlbmRYID0gZHJvcFRhcmdldC5vZmZzZXRMZWZ0ICsgMTA7CisgICAg
ICAgICAgICB2YXIgZW5kWSA9IGRyb3BUYXJnZXQub2Zmc2V0VG9wICsgZHJvcFRhcmdldC5vZmZz
ZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbmRYLCBlbmRZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93
Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrRHJvcEVmZmVjdChldmVudCwgbmFt
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgicCIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4g
JyArIG5hbWUgKyAnOiAnICsgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgKyAnXG4nKSk7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZXN1bHQpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydERyYWcoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0g
Im1vdmUiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlv
biBkcmFnRW50ZXJlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibW92ZSI7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9w
RWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQnKTsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBm
dW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibW92ZSI7CisgICAgICAgICAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hl
Y2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VuZCcpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiByZWNlaXZlRHJvcCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAncmVjZWl2ZURyb3AnKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdNZSIgb25kcmFnc3RhcnQ9InN0YXJ0
RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoKSI+CisgICAgICAgICAgICBEUkFHIE1FIE9OVE8g
VEhFIERST1AgVEFSR0VUIQorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgICAg
IDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJhZ2VudGVyPSJkcmFnRW50ZXJlZCgpIiBvbmRyYWdv
dmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAgICAgIERST1AgVEFSR0VULgorICAgICAgICA8L2Rp
dj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1ub25lLWNvcHktZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3Atbm9u
ZS1jb3B5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RIVE1ML2RyYWctYW5kLWRyb3Atbm9uZS1jb3B5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3IEBACitEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorCitEUk9QIFRB
UkdFVC4KKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0VudGVyZWQ6IGNv
cHkKKworZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gZHJhZ0VuZDogY29weQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1ub25lLWNvcHkuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9w
LW5vbmUtY29weS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vREhU
TUwvZHJhZy1hbmQtZHJvcC1ub25lLWNvcHkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
MiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT48L3RpdGxlPgorICAgICAg
ICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICAgICAgZGl2IHsgYmFja2dyb3VuZC1j
b2xvcjogI2NjYzsgYm9yZGVyOiAxcHggc29saWQgIzMzMzsgd2lkdGg6IDIwMHB4OyB0ZXh0LWFs
aWduOiBjZW50ZXI7IG1hcmdpbjogMTBweDsgfQorICAgICAgICAgICAgI2RyYWdNZSB7IC13ZWJr
aXQtdXNlci1kcmFnOiBlbGVtZW50OyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9CisgICAg
ICAgICAgICAjZHJvcFRhcmdldCB7IGJhY2tncm91bmQtY29sb3I6ICM5Y2VhZGU7IH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICAgICAgICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGRyb2dTb3VyY2Ug
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgICAgICB2YXIgZHJv
cFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wVGFyZ2V0Iik7CisgICAgICAg
ICAgICB2YXIgc3RhcnRYID0gZHJvZ1NvdXJjZS5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAg
ICB2YXIgc3RhcnRZID0gZHJvZ1NvdXJjZS5vZmZzZXRUb3AgKyBkcm9nU291cmNlLm9mZnNldEhl
aWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zmc2V0TGVmdCAr
IDEwOworICAgICAgICAgICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BU
YXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCg1MDAp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kWCwgZW5kWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja0Ryb3BFZmZlY3Qo
ZXZlbnQsIG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0IGluICcgKyBuYW1lICsgJzogJyArIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
ICsgJ1xuJykpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVz
dWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnREcmFnKCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0
QWxsb3dlZCA9ICJub25lIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgZnVuY3Rpb24gZHJhZ0VudGVyZWQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gImNvcHkiOworICAgICAgICAgICAgICAg
IGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdFbnRlcmVkJyk7CisgICAgICAgICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gImNvcHkiOworICAgICAgICAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbmQoKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ2RyYWdFbmQnKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZURyb3AoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNoZWNrRHJvcEVmZmVjdChldmVudCwgJ3JlY2VpdmVE
cm9wJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJkcmFnTWUiIG9uZHJhZ3N0
YXJ0PSJzdGFydERyYWcoKSIgb25kcmFnZW5kPSJkcmFnRW5kKCkiPgorICAgICAgICAgICAgRFJB
RyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEKKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxiciAv
PgorICAgICAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0IiBvbmRyYWdlbnRlcj0iZHJhZ0VudGVyZWQo
KSIgb25kcmFnb3Zlcj0iZHJhZ092ZXIoKSI+CisgICAgICAgICAgICBEUk9QIFRBUkdFVC4KKyAg
ICAgICAgPC9kaXY+CisgICAgICAgIDxiciAvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3Atbm9uZS1saW5rLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFu
ZC1kcm9wLW5vbmUtbGluay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLW5vbmUtbGluay1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorRFJBRyBNRSBPTlRPIFRIRSBEUk9QIFRBUkdFVCEK
KworRFJPUCBUQVJHRVQuCisKK2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdF
bnRlcmVkOiBsaW5rCisKK2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGluIGRyYWdFbmQ6
IG5vbmUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3Atbm9u
ZS1saW5rLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJh
Zy1hbmQtZHJvcC1ub25lLWxpbmsuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RIVE1ML2RyYWctYW5kLWRyb3Atbm9uZS1saW5rLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODIgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+PC90aXRs
ZT4KKyAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgICAgIGRpdiB7IGJh
Y2tncm91bmQtY29sb3I6ICNjY2M7IGJvcmRlcjogMXB4IHNvbGlkICMzMzM7IHdpZHRoOiAyMDBw
eDsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IDEwcHg7IH0KKyAgICAgICAgICAgICNkcmFn
TWUgeyAtd2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9u
ZTsgfQorICAgICAgICAgICAgI2Ryb3BUYXJnZXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjOWNlYWRl
OyB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBk
cm9nU291cmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdNZSIpOworICAgICAgICAg
ICAgdmFyIGRyb3BUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcFRhcmdldCIp
OworICAgICAgICAgICAgdmFyIHN0YXJ0WCA9IGRyb2dTb3VyY2Uub2Zmc2V0TGVmdCArIDEwOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0WSA9IGRyb2dTb3VyY2Uub2Zmc2V0VG9wICsgZHJvZ1NvdXJj
ZS5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGVuZFggPSBkcm9wVGFyZ2V0Lm9m
ZnNldExlZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBlbmRZID0gZHJvcFRhcmdldC5vZmZzZXRU
b3AgKyBkcm9wVGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZv
cndhcmQoNTAwKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFgsIGVu
ZFkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tE
cm9wRWZmZWN0KGV2ZW50LCBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZh
ciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCBpbiAnICsgbmFtZSArICc6ICcgKyBldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCArICdcbicpKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKHJlc3VsdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0
YXJ0RHJhZygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5z
ZmVyLmVmZmVjdEFsbG93ZWQgPSAibm9uZSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdFbnRlcmVkKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJsaW5rIjsKKyAgICAg
ICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdkcmFnRW50ZXJlZCcpOworICAgICAg
ICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRyYWdPdmVyKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJsaW5rIjsKKyAg
ICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnRW5kKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQsICdkcmFnRW5kJyk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVEcm9w
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGVja0Ryb3BFZmZlY3QoZXZlbnQs
ICdyZWNlaXZlRHJvcCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0iZHJhZ01l
IiBvbmRyYWdzdGFydD0ic3RhcnREcmFnKCkiIG9uZHJhZ2VuZD0iZHJhZ0VuZCgpIj4KKyAgICAg
ICAgICAgIERSQUcgTUUgT05UTyBUSEUgRFJPUCBUQVJHRVQhCisgICAgICAgIDwvZGl2PgorICAg
ICAgICA8YnIgLz4KKyAgICAgICAgPGRpdiBpZD0iZHJvcFRhcmdldCIgb25kcmFnZW50ZXI9ImRy
YWdFbnRlcmVkKCkiIG9uZHJhZ292ZXI9ImRyYWdPdmVyKCkiPgorICAgICAgICAgICAgRFJPUCBU
QVJHRVQuCisgICAgICAgIDwvZGl2PgorICAgICAgICA8YnIgLz4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLW5vbmUt
bW92ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vREhU
TUwvZHJhZy1hbmQtZHJvcC1ub25lLW1vdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vREhUTUwvZHJhZy1hbmQtZHJvcC1ub25lLW1vdmUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK0RSQUcgTUUgT05UTyBUSEUgRFJP
UCBUQVJHRVQhCisKK0RST1AgVEFSR0VULgorCitldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVj
dCBpbiBkcmFnRW50ZXJlZDogbW92ZQorCitldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBp
biBkcmFnRW5kOiBtb3ZlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFu
ZC1kcm9wLW5vbmUtbW92ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RIVE1ML2RyYWctYW5kLWRyb3Atbm9uZS1tb3ZlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9ESFRNTC9kcmFnLWFuZC1kcm9wLW5vbmUtbW92ZS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRp
dGxlPjwvdGl0bGU+CisgICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgICAg
ICBkaXYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOyBib3JkZXI6IDFweCBzb2xpZCAjMzMzOyB3
aWR0aDogMjAwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOiAxMHB4OyB9CisgICAgICAg
ICAgICAjZHJhZ01lIHsgLXdlYmtpdC11c2VyLWRyYWc6IGVsZW1lbnQ7IC13ZWJraXQtdXNlci1z
ZWxlY3Q6IG5vbmU7IH0KKyAgICAgICAgICAgICNkcm9wVGFyZ2V0IHsgYmFja2dyb3VuZC1jb2xv
cjogIzljZWFkZTsgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5k
ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICB2YXIgZHJvZ1NvdXJjZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnTWUiKTsK
KyAgICAgICAgICAgIHZhciBkcm9wVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRy
b3BUYXJnZXQiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFggPSBkcm9nU291cmNlLm9mZnNldExl
ZnQgKyAxMDsKKyAgICAgICAgICAgIHZhciBzdGFydFkgPSBkcm9nU291cmNlLm9mZnNldFRvcCAr
IGRyb2dTb3VyY2Uub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBlbmRYID0gZHJv
cFRhcmdldC5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgICAgICB2YXIgZW5kWSA9IGRyb3BUYXJn
ZXQub2Zmc2V0VG9wICsgZHJvcFRhcmdldC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAg
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmxlYXBGb3J3YXJkKDUwMCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhlbmRYLCBlbmRZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAgICAg
IDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRHJvcEVmZmVjdChldmVudCwgbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnZXZl
bnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaW4gJyArIG5hbWUgKyAnOiAnICsgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgKyAnXG4nKSk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChyZXN1bHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBzdGFydERyYWcoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gIm5vbmUiOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAibW92
ZSI7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0VudGVyZWQn
KTsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkcmFnT3ZlcigpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAi
bW92ZSI7CisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZHJhZ0VuZCgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZmZWN0KGV2ZW50LCAnZHJhZ0Vu
ZCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBy
ZWNlaXZlRHJvcCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2hlY2tEcm9wRWZm
ZWN0KGV2ZW50LCAncmVjZWl2ZURyb3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYg
aWQ9ImRyYWdNZSIgb25kcmFnc3RhcnQ9InN0YXJ0RHJhZygpIiBvbmRyYWdlbmQ9ImRyYWdFbmQo
KSI+CisgICAgICAgICAgICBEUkFHIE1FIE9OVE8gVEhFIERST1AgVEFSR0VUIQorICAgICAgICA8
L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgICAgIDxkaXYgaWQ9ImRyb3BUYXJnZXQiIG9uZHJh
Z2VudGVyPSJkcmFnRW50ZXJlZCgpIiBvbmRyYWdvdmVyPSJkcmFnT3ZlcigpIj4KKyAgICAgICAg
ICAgIERST1AgVEFSR0VULgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJyIC8+CisgICAgPC9i
b2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="19894"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>39479</attachid>
            <date>2009-09-11 15:21:20 -0700</date>
            <delta_ts>2009-09-14 18:11:04 -0700</delta_ts>
            <desc>General test case</desc>
            <filename>dragDrop.html</filename>
            <type>text/html</type>
            <size>5388</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c3R5bGU+CiNkcm9wVGFyZ2V0LCAjZHJhZ01lIHsgdGV4dC1hbGlnbjog
Y2VudGVyOyBkaXNwbGF5OiB0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlIH0KI2Ry
b3BUYXJnZXQge3dpZHRoOiAyNTZweDsgaGVpZ2h0OiAyNTZweDsgYm9yZGVyOiAxcHggZGFzaGVk
fQojZHJhZ01lIHstd2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVj
dDogbm9uZTsgYmFja2dyb3VuZDogI2ZmMDAwMDsgd2lkdGg6IDY0cHg7IGhlaWdodDogNjRweDsg
Y29sb3I6IHdoaXRlfQojY29uc29sZSB7aGVpZ2h0OiAyMDBweDsgb3ZlcmZsb3c6IGF1dG99Cjwv
c3R5bGU+CjxzY3JpcHQ+CiAgICB2YXIgZHJhZ01lOwogICAgdmFyIGRyb3BUYXJnZXQ7CiAgICB2
YXIgZWZmZWN0QWxsb3dlZEVsZW07CiAgICB2YXIgZHJvcEVmZmVjdEVsZW07CiAgICB2YXIgY29u
c29sZUVsbTsKICAgIAogICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKICAgIHsKICAgICAg
ICBkcmFnTWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7CiAgICAgICAgZHJv
cFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wVGFyZ2V0Iik7CiAgICAgICAg
ZWZmZWN0QWxsb3dlZEVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWZmZWN0QWxsb3dl
ZCIpOwogICAgICAgIGRyb3BFZmZlY3RFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRy
b3BFZmZlY3QiKTsKICAgICAgICBjb25zb2xlRWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKTsKICAgICAgICAKICAgICAgICBpZiAoIWRyYWdNZSB8fCAhZHJvcFRhcmdldCB8
fCAhZWZmZWN0QWxsb3dlZEVsZW0gfHwgIWRyb3BFZmZlY3RFbGVtIHx8ICFjb25zb2xlRWxtKQog
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgCiAgICAgICAgZHJhZ01lLm9uZHJhZ3N0YXJ0ID0g
ZHJhZ1N0YXJ0OwogICAgICAgIGRyYWdNZS5vbmRyYWdlbmQgPSBkcmFnRW5kOwogICAgICAgIAog
ICAgICAgIGRyb3BUYXJnZXQub25kcmFnZW50ZXIgPSBkcmFnRW50ZXJlZDsKICAgICAgICBkcm9w
VGFyZ2V0Lm9uZHJhZ292ZXIgPSBkcmFnT3ZlcjsKICAgICAgICAKICAgICAgICBydW5UZXN0KCk7
CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGRyYWdTdGFydCgpCiAgICB7CiAgICAgICAgZXZlbnQu
ZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBlZmZlY3RBbGxvd2VkRWxlbS5vcHRpb25zW2Vm
ZmVjdEFsbG93ZWRFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlOwogICAgfQogICAgCiAgICBmdW5j
dGlvbiBkcmFnRW5kKCkKICAgIHsKICAgICAgICBjaGVja0RyYWdTdGF0ZSgpOwogICAgICAgIHJl
dHVybjsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gZHJhZ0VudGVyZWQoKQogICAgewogICAgICAg
IGRyYWdFbnRlcmVkQW5kVXBkYXRlZCgpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBkcmFnT3Zl
cigpCiAgICB7CiAgICAgICAgZHJhZ0VudGVyZWRBbmRVcGRhdGVkKCk7CiAgICB9CiAgICAKICAg
IGZ1bmN0aW9uIGRyYWdFbnRlcmVkQW5kVXBkYXRlZCgpCiAgICB7CiAgICAgICAgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RF
bGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlOwogICAgICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVs
dCkKICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgLy8gQXNzdW1lIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyB3aXRoaW4gSW50ZXJu
ZXQgRXhwbG9yZXIKICAgICAgICAgICAgZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTsKICAgICAg
ICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGNoZWNrRHJhZ1N0YXRlKCkKICAgIHsKICAgICAg
ICB2YXIgcmVzdWx0OwogICAgICAgIHZhciB0ZXN0TmFtZSA9ICIoZWZmZWN0QWxsb3dlZDogIiAr
IGVmZmVjdEFsbG93ZWRFbGVtLm9wdGlvbnNbZWZmZWN0QWxsb3dlZEVsZW0uc2VsZWN0ZWRJbmRl
eF0udmFsdWUgKwogICAgICAgICAgICAgICAgICAgICAgICAiLCBkcm9wRWZmZWN0OiAiICsgZHJv
cEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZSAr
ICIpID0+ICI7CiAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID09IGRy
b3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUp
IHsKICAgICAgICAgICAgcmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGVzdE5hbWUg
KyAiTWF0Y2hlZCBkcm9wRWZmZWN0Iik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVz
dWx0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGVzdE5hbWUgKyAiTWlzbWF0Y2hlZCBkcm9w
RWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogIiArIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJv
cEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUgKyAKICAgICAgICAgICAgICAgICIsIGFj
dHVhbCBlZmZlY3Qgd2FzOiAiICsgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgKyAiKSIp
OwogICAgICAgIH0KICAgICAgICB2YXIgcEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAi
KTsKICAgICAgICBwRWxtLmFwcGVuZENoaWxkKHJlc3VsdCk7CiAgICAgICAgY29uc29sZUVsbS5h
cHBlbmRDaGlsZChwRWxtKTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICB7
CiAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgCiAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAKICAg
ICAgICB2YXIgc3RhcnRYID0gZHJhZ01lLm9mZnNldExlZnQgKyAxMDsKICAgICAgICB2YXIgc3Rh
cnRZID0gZHJhZ01lLm9mZnNldFRvcCArIGRyYWdNZS5vZmZzZXRIZWlnaHQgLyAyOwogICAgICAg
IHZhciBlbmRYID0gZHJvcFRhcmdldC5vZmZzZXRMZWZ0ICsgMTA7CiAgICAgICAgdmFyIGVuZFkg
PSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKICAg
ICAgICAKICAgICAgICB2YXIgbnVtRWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWRFbGVtLm9w
dGlvbnMubGVuZ3RoOwogICAgICAgIHZhciBudW1FZmZlY3RzID0gZHJvcEVmZmVjdEVsZW0ub3B0
aW9ucy5sZW5ndGg7CiAgICAgICAgCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1FZmZl
Y3RBbGxvd2VkOyArK2kpIHsKICAgICAgICAgICAgZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tp
XS5zZWxlY3RlZCA9IHRydWU7CiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbnVtRWZm
ZWN0czsgKytqKSB7CiAgICAgICAgICAgICAgICBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2pdLnNl
bGVjdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0WCwgc3RhcnRZKTsKICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwog
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwKTsKICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFgsIGVuZFkpOwogICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQo8L3Nj
cmlwdD4KPC9oZWFkPgo8Ym9keT4KICAgIDxoMz5SZW1hcmtzOjwvaDM+CiAgICA8cD5UaGlzIHRl
c3QganVzdCByZXBvcnRzIHdoZXRoZXIgdGhlIGNob3NlbiBkcm9wRWZmZWN0IG1hdGNoZWQvbWlz
bWF0Y2hlZCB3aGF0IHRoZSBicm93c2VyIGNob3NlIGFzIHRoZSBkcm9wIGVmZmVjdCB3aXRoIHJl
c3BlY3QgdG8gdGhlIGNob3NlbiBlZmZlY3RBbGxvd2VkLjwvcD4KICAgIDxwPllvdSBuZWVkIHRv
IGNvbXBhcmUgdGhlc2UgcmVzdWx0cyB0byB0aGUgSFRNTCA1IHNwZWMgdG8gdmVyaWZ5IHdoZXRo
ZXIgYSBtYXRjaC9taXN0bWF0Y2ggaXMgY29ycmVjdCBmb3IgdGhlIGNob3NlbiBkcm9wRWZmZWN0
IGFuZCBlZmZlY3RBbGxvd2VkLjwvcD4KICAgIDxoci8+CiAgICA8bGFiZWwgZm9yPSJlZmZlY3RB
bGxvd2VkIj5lZmZlY3RBbGxvd2VkPC9sYWJlbD4gPHNlbGVjdCBpZD0iZWZmZWN0QWxsb3dlZCI+
CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0idW5pbml0aWFsaXplZCI+VW5pbml0aWFsaXplZDwvb3B0
aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9Im5vbmUiPk5vbmU8L29wdGlvbj4KICAgICAgICA8
b3B0aW9uIHZhbHVlPSJhbGwiPkFsbDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImNv
cHkiPkNvcHk8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJtb3ZlIj5Nb3ZlPC9vcHRp
b24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGluayI+TGluazwvb3B0aW9uPgogICAgICAgIDxv
cHRpb24gdmFsdWU9ImNvcHlNb3ZlIj5Db3B5TW92ZTwvb3B0aW9uPgogICAgICAgIDxvcHRpb24g
dmFsdWU9ImNvcHlMaW5rIj5Db3B5TGluazwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9
ImxpbmtNb3ZlIj5MaW5rTW92ZTwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImR1bW15
Ij5Ob25leGlzdGVudCAoRHVtbXkpIEVmZmVjdDwvb3B0aW9uPgogICAgPC9zZWxlY3Q+CiAgICA8
YnIvPjxici8+CiAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0Ij5Ecm9wIHRoZSByZWQgc3F1YXJlIG9u
dG8gbWUuPGJyLz48YnIvPgogICAgICAgIDxsYWJlbCBmb3I9ImRyb3BFZmZlY3QiPkV4cGVjdHMg
ZHJvcEVmZmVjdDwvbGFiZWw+IDxzZWxlY3QgaWQ9ImRyb3BFZmZlY3QiPgogICAgICAgICAgICA8
b3B0aW9uIHZhbHVlPSJub25lIj5Ob25lPC9vcHRpb24+CiAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9ImNvcHkiPkNvcHk8L29wdGlvbj4KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW92ZSI+
TW92ZTwvb3B0aW9uPgogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJsaW5rIj5MaW5rPC9vcHRp
b24+CiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImR1bW15Ij5Ob25leGlzdGVudCAoRHVtbXkp
IEVmZmVjdDwvb3B0aW9uPgogICAgICAgIDwvc2VsZWN0PgogICAgPC9kaXY+CiAgICA8aHIvPgog
ICAgPHA+SXRlbXMgdGhhdCBjYW4gYmUgZHJhZ2dlZCB0byB0aGUgZHJvcCB0YXJnZXQ6PC9wPgog
ICAgPGRpdiBpZD0iZHJhZ01lIj5TcXVhcmU8L2Rpdj4KICAgIDxoci8+CiAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39483</attachid>
            <date>2009-09-11 15:38:33 -0700</date>
            <delta_ts>2009-09-14 12:03:24 -0700</delta_ts>
            <desc>Path with test cases</desc>
            <filename>Bug24731.patch</filename>
            <type>text/plain</type>
            <size>21226</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA0ODMxOSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDktMTEgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAg
ICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAg
ICAgSW1wbGVtZW50cyBzdXBwb3J0IGZvciBESFRNTCBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMg
KGkuZS4gb25kcmFnc3RhcnQsIG9uZHJhZ2VuZCkKKyAgICAgICAgaW4gdGhlIFdpbmRvd3MgYnVp
bGQgc28gdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgTWFjIE9TIFggYnVpbGQuIEhlbmNlLCBkcm9w
RWZmZWN0IGlzCisgICAgICAgIGNvcnJlY3RseSBzZXQuCisgICAgICAgIAorICAgICAgICBUaGUg
V2ViVmlldyBhbmQgV2ViRHJvcFNvdXJjZSBkcmFnLWFuZC1kcm9wIGZ1bmN0aW9ucywgYXMgY2Fs
bGVkIGJ5IGZ1bmN0aW9uCisgICAgICAgIERvRHJhZ0Ryb3AgaW4gaXRzIGV2ZW50IGxvb3AsIG5l
aXRoZXIgdXNlZCB0aGUgZHJvcCBlZmZlY3QgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IG5vciByZXNwZWN0ZWQgZXZlbnQuZGF0YVRyYW5zZmVy
LmVmZmVjdHNBbGxvd2VkLgorICAgICAgICBJbnN0ZWFkLCB0aGVzZSBmdW5jdGlvbnMgZGVmYXVs
dGVkIHRvIHNvbWUgaGFyZGNvZGVkIGRyb3AgZWZmZWN0IGFuZCBzZXQgb2YKKyAgICAgICAgYWxs
b3dlZCBkcm9wIGVmZmVjdHMsIHJlc3BlY3RpdmVseS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFn
KToKKyAgICAgICAgKiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRyb3BTb3VyY2U6
OlF1ZXJ5Q29udGludWVEcmFnKTogTW92ZWQgY2FsbCB0byBFdmVudEhhbmRsZXI6OmRyYWdTb3Vy
Y2VFbmRlZEF0CisgICAgICAgIGludG8gbWV0aG9kIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZy4K
KyAgICAgICAgKiBXZWJEcm9wU291cmNlLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbik6IERldGVybWluZXMgYXBwcm9w
cmlhdGUgZHJvcCBlZmZlY3QgZnJvbSBzdGF0ZQorICAgICAgICBvZiBrZXlib2FyZCBhbmQgYWxs
b3dlZCBlZmZlY3RzIHxvcGVyYXRpb258LgorICAgICAgICAoV2ViVmlldzo6RHJhZ0VudGVyKToK
KyAgICAgICAgKFdlYlZpZXc6OkRyYWdPdmVyKToKKyAgICAgICAgKFdlYlZpZXc6OkRyb3ApOgor
ICAgICAgICAqIFdlYlZpZXcuaDogQWRkZWQgZmllbGQgbV9sYXN0RHJvcEVmZmVjdC4gRXhwb3Nl
ZCBtZXRob2QgV2ViVmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24uCisKIDIwMDktMDktMTEg
IFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAkocmV2aXNpb24gNDgzMTEp
CisrKyBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
IAogI2luY2x1ZGUgPFdpbmRvd3MuaD4KQEAgLTEwNiwxMCArMTA1LDYgQEAgU1RETUVUSE9ESU1Q
IFdlYkRyb3BTb3VyY2U6OlF1ZXJ5Q29udGludQogewogICAgIGlmIChmRXNjYXBlUHJlc3NlZCB8
fCAhKGdyZktleVN0YXRlICYgKE1LX0xCVVRUT058TUtfUkJVVFRPTikpKSB7CiAgICAgICAgIG1f
ZHJvcHBlZCA9ICFmRXNjYXBlUHJlc3NlZDsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3dl
YlZpZXctPnBhZ2UoKSkKLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWlu
RnJhbWUoKSkgCi0gICAgICAgICAgICAgICAgLy9GSVhNRTogV2UgbmVlZCB0byBmaWd1cmUgb3V0
IGhvdyB0byBmaW5kIG91dCB3aGF0IGFjdHVhbGx5IGhhcHBlbmVkIGluIHRoZSBkcmFnIDxyZGFy
Oi8vcHJvYmxlbS81MDE1OTYxPgotICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1fd2ViVmlldy5nZXQoKSwg
ZmFsc2UpLCBmRXNjYXBlUHJlc3NlZCA/IERyYWdPcGVyYXRpb25Ob25lIDogRHJhZ09wZXJhdGlv
bkNvcHkpOwogICAgICAgICByZXR1cm4gZkVzY2FwZVByZXNzZWQ/IERSQUdEUk9QX1NfQ0FOQ0VM
IDogRFJBR0RST1BfU19EUk9QOwogICAgIH0gZWxzZSBpZiAoUGFnZSogcGFnZSA9IG1fd2ViVmll
dy0+cGFnZSgpKQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCkp
IApJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9XZWJEcm9wU291cmNlLmgJKHJldmlzaW9uIDQ4MzExKQorKysgV2ViS2l0L3dpbi9XZWJE
cm9wU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDEyIEBACiAjaW5jbHVkZSAi
Q09NUHRyLmgiCiAjaW5jbHVkZSA8b2JqaWRsLmg+CiAKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtTW91c2VFdmVudC5oPgorCiBjbGFzcyBXZWJWaWV3OwogCitXZWJDb3JlOjpQbGF0Zm9ybU1v
dXNlRXZlbnQgZ2VuZXJhdGVNb3VzZUV2ZW50KFdlYlZpZXcqIHdlYlZpZXcsIGJvb2wgaXNEcmFn
KTsKKwogY2xhc3MgV2ViRHJvcFNvdXJjZSA6IHB1YmxpYyBJRHJvcFNvdXJjZQogewogcHVibGlj
OgpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCShyZXZpc2lvbiA0ODMxMSkKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1NTcsMTEgKzQ1NTcsMzAgQEAgc3RhdGljIERXT1JEIGRyYWdP
cGVyYXRpb25Ub0RyYWdDdXJzb3IoRAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBEcmFn
T3BlcmF0aW9uIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEKSB7Ci0gICAgLy9GSVhNRTog
VGhpcyBpcyBjdXJyZW50bHkgdmVyeSBzaW1wbGUsIGl0IG1heSBuZWVkIHRvIGFjdHVhbGx5Ci0g
ICAgLy93b3JrIG91dCBhbiBhcHByb3ByaWF0ZSBEcmFnT3BlcmF0aW9uIGluIGZ1dHVyZSAtLSBo
b3dldmVyIHRoaXMKLSAgICAvL2JlaGF2aW91ciBhcHBlYXJzIHRvIG1hdGNoIEZpcmVGb3gKLSAg
ICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlv
bkxpbmspOworRHJhZ09wZXJhdGlvbiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihE
V09SRCBncmZLZXlTdGF0ZSkgeworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gRHJh
Z09wZXJhdGlvbk5vbmU7CisKKyAgICAvLyBDb25mb3JtcyB0byBNaWNyb3NvZnQncyBrZXkgY29t
YmluYXRpb25zIGFzIGRvY3VtZW50ZWQgZm9yIAorICAgIC8vIElEcm9wVGFyZ2V0OjpEcmFnT3Zl
ci4gU2VlOgorICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9t
czY4MDEyOShWUy44NSkuYXNweAorICAgIC8vCisgICAgLy8gQnkgZGVmYXVsdCwgd2UgcmV0dXJu
IHRoZSBzb3VyY2UgZHJhZyBvcGVyYXRpb24gdG8gY29uZm9ybSB3aXRoIHRoZSBNYWMgT1MgWCBi
dWlsZC4KKyAgICAKKyAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS0+c291cmNlRHJhZ09wZXJhdGlvbigpOworICAgIGlmIChvcGVyYXRpb24gPT0g
RHJhZ09wZXJhdGlvbk5vbmUpCisgICAgICAgIG9wZXJhdGlvbiA9IChEcmFnT3BlcmF0aW9uKShE
cmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Db3B5KTsKKworICAgIGlmICgoZ3Jm
S2V5U3RhdGUgJiAoTUtfQ09OVFJPTCB8IE1LX1NISUZUKSkgPT0gKE1LX0NPTlRST0wgfCBNS19T
SElGVCkpCisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAgIGlmICgo
Z3JmS2V5U3RhdGUgJiBNS19DT05UUk9MKSA9PSBNS19DT05UUk9MKQorICAgICAgICBvcGVyYXRp
b24gPSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBpZiAoKGdyZktleVN0YXRlICYgTUtfU0hJRlQp
ID09IE1LX1NISUZUKQorICAgICAgICBvcGVyYXRpb24gPSAoRHJhZ09wZXJhdGlvbikoRHJhZ09w
ZXJhdGlvbk1vdmUgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisKKyAgICBpZiAoKG9wZXJhdGlv
biAmIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+c291cmNlRHJhZ09wZXJhdGlvbigpKSAhPSBv
cGVyYXRpb24pCisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIHJl
dHVybiBvcGVyYXRpb247CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
RHJhZ0VudGVyKApAQCAtNDU3OCw2ICs0NTk3LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjpEcmFnRQogICAgICAgICBJbnRQb2ludChwdC54LCBwdC55KSwga2V5U3RhdGVU
b0RyYWdPcGVyYXRpb24oZ3JmS2V5U3RhdGUpKTsKICAgICAqcGR3RWZmZWN0ID0gZHJhZ09wZXJh
dGlvblRvRHJhZ0N1cnNvcihtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRyYWdFbnRlcmVkKCZk
YXRhKSk7CiAKKyAgICBtX2xhc3REcm9wRWZmZWN0ID0gKnBkd0VmZmVjdDsKICAgICBtX2RyYWdE
YXRhID0gcERhdGFPYmplY3Q7CiAKICAgICByZXR1cm4gU19PSzsKQEAgLTQ1OTgsNiArNDYxOCw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJhZ08KICAgICB9IGVsc2UK
ICAgICAgICAgKnBkd0VmZmVjdCA9IERST1BFRkZFQ1RfTk9ORTsKIAorICAgIG1fbGFzdERyb3BF
ZmZlY3QgPSAqcGR3RWZmZWN0OwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NjIyLDcgKzQ2
NDMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OkRyb3AoCiAgICAgICAg
IG1fZHJvcFRhcmdldEhlbHBlci0+RHJvcChwRGF0YU9iamVjdCwgKFBPSU5UKikmcHQsICpwZHdF
ZmZlY3QpOwogCiAgICAgbV9kcmFnRGF0YSA9IDA7Ci0gICAgKnBkd0VmZmVjdCA9IERST1BFRkZF
Q1RfTk9ORTsKKyAgICAqcGR3RWZmZWN0ID0gbV9sYXN0RHJvcEVmZmVjdDsKICAgICBQT0lOVEwg
bG9jYWxwdCA9IHB0OwogICAgIDo6U2NyZWVuVG9DbGllbnQobV92aWV3V2luZG93LCAoTFBQT0lO
VCkmbG9jYWxwdCk7CiAgICAgRHJhZ0RhdGEgZGF0YShwRGF0YU9iamVjdCwgSW50UG9pbnQobG9j
YWxwdC54LCBsb2NhbHB0LnkpLCAKSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5oCShyZXZpc2lvbiA0ODMxMSkKKysrIFdlYktpdC93
aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
V2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogCisjaW5jbHVkZSA8V2Vi
Q29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VMaXN0
ZW5lci5oPgpAQCAtNjYsNiArNjcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgfldlYlZpZXcoKTsKIAog
cHVibGljOgorICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRp
b24oRFdPUkQgZ3JmS2V5U3RhdGUpOworICAgIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2
b2lkKiogcHB2T2JqZWN0KTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFk
ZFJlZih2b2lkKTsKQEAgLTg0OCw2ICs4NTEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50
SW50b0JhY2tpbmdTdG9yZShXZWJDb3JlOjpGcmFtZVZpZXcqLCBIREMgYml0bWFwREMsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCwgV2luZG93c1RvUGFpbnQpOwogICAgIHZvaWQg
dXBkYXRlQmFja2luZ1N0b3JlKFdlYkNvcmU6OkZyYW1lVmlldyosIEhEQyA9IDAsIGJvb2wgYmFj
a2luZ1N0b3JlQ29tcGxldGVseURpcnR5ID0gZmFsc2UsIFdpbmRvd3NUb1BhaW50ID0gUGFpbnRX
ZWJWaWV3T25seSk7CiAKKyAgICAvLyBGSVhNRTogVGhpcyB2YXJpYWJsZSBpcyBwYXJ0IG9mIGEg
d29ya2Fyb3VuZC4gVGhlIGRyb3AgZWZmZWN0IChwZHdFZmZlY3QpIHBhc3NlZCB0byBEcm9wIGlz
IGluY29ycmVjdC4gCisgICAgLy8gV2Ugc2V0IHRoaXMgdmFyaWFibGUgaW4gRHJhZ0VudGVyIGFu
ZCBEcmFnT3ZlciBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIERyb3AgdG8gc2V0IHRoZSBjb3Jy
ZWN0IGRyb3AgZWZmZWN0LiAKKyAgICAvLyBUaHVzLCBvbiByZXR1cm4gZnJvbSBEb0RyYWdEcm9w
IHdlIGhhdmUgdGhlIGNvcnJlY3QgcGR3RWZmZWN0IGZvciB0aGUgZHJhZy1hbmQtZHJvcCBvcGVy
YXRpb24uCisgICAgRFdPUkQgbV9sYXN0RHJvcEVmZmVjdDsKKwogcHJvdGVjdGVkOgogICAgIEhJ
TUMgZ2V0SU1NQ29udGV4dCgpOwogICAgIHZvaWQgcmVsZWFzZUlNTUNvbnRleHQoSElNQyk7Cklu
ZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHJldmlz
aW9uIDQ4MzExKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDE2ICsxNTYsMjYgQEAgdm9pZCBXZWJEcmFnQ2xpZW50
OjpzdGFydERyYWcoRHJhZ0ltYWdlUgogCiAgICAgICAgIC8vRklYTUU6IEVuc3VyZSBjb3JyZWN0
IGRyYWcgb3BzIGFyZSBhdmFpbGFibGUgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NTc+CiAgICAgICAg
IERXT1JEIG9rRWZmZWN0ID0gRFJPUEVGRkVDVF9DT1BZIHwgRFJPUEVGRkVDVF9MSU5LIHwgRFJP
UEVGRkVDVF9NT1ZFOwotICAgICAgICBEV09SRCBlZmZlY3Q7CisgICAgICAgIERXT1JEIGVmZmVj
dCA9IERST1BFRkZFQ1RfTk9ORTsKICAgICAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aTsK
KyAgICAgICAgYm9vbCBpc1VJRGVsZWdhdGUgPSBmYWxzZTsKICAgICAgICAgaWYgKFNVQ0NFRURF
RChtX3dlYlZpZXctPnVpRGVsZWdhdGUoJnVpKSkpIHsKICAgICAgICAgICAgIENPTVB0cjxJV2Vi
VUlEZWxlZ2F0ZVByaXZhdGU+IHVpUHJpdmF0ZTsKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQo
dWktPlF1ZXJ5SW50ZXJmYWNlKElJRF9JV2ViVUlEZWxlZ2F0ZVByaXZhdGUsICh2b2lkKiopJnVp
UHJpdmF0ZSkpKQogICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQodWlQcml2YXRlLT5kb0Ry
YWdEcm9wKG1fd2ViVmlldywgZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVj
dCwgJmVmZmVjdCkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgICAgIGlzVUlEZWxlZ2F0ZSA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBEb0RyYWdE
cm9wKGRhdGFPYmplY3QuZ2V0KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOwor
ICAgICAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAg
ICAgICBpZiAoaXNVSURlbGVnYXRlIHx8IERvRHJhZ0Ryb3AoZGF0YU9iamVjdC5nZXQoKSwgc291
cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCkgPT0gRFJBR0RST1BfU19EUk9QKSB7CisgICAg
ICAgICAgICBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9DT1BZKQorICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0
ICYgRFJPUEVGRkVDVF9MSU5LKQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVy
YXRpb25MaW5rOworICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9NT1ZF
KQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAg
ICB9CisgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZ2Vu
ZXJhdGVNb3VzZUV2ZW50KG1fd2ViVmlldywgZmFsc2UpLCBvcGVyYXRpb24pOwogICAgIH0KIH0K
IApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNDgzMTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wOS0xMSAgRGFuaWVsIEJhdGVzICA8
ZGJhdGVzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NzMx
CisgICAgICAgIEFuZAorICAgICAgICByZGFyOi8vcHJvYmxlbS81MDE1OTYxCisgICAgICAgIAor
ICAgICAgICBUZXN0cyB0aGF0IERIVE1MIGRyYWctYW5kLWRyb3Agd29ya3MgdW5kZXIgV2luZG93
cy4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2RyYWdEcm9wLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvZHJhZ0Ryb3AuaHRtbDogQWRkZWQuCisKIDIwMDktMDkt
MTEgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9kcmFnRHJvcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZHJhZ0Ryb3AtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvZHJhZ0Ryb3AtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDExMyBAQAorUmVtYXJrczoKKworVGhpcyB0ZXN0IGp1c3QgcmVwb3J0cyB3aGV0aGVyIHRo
ZSBjaG9zZW4gZHJvcEVmZmVjdCBtYXRjaGVkL21pc21hdGNoZWQgd2hhdCB0aGUgYnJvd3NlciBj
aG9zZSBhcyB0aGUgZHJvcCBlZmZlY3Qgd2l0aCByZXNwZWN0IHRvIHRoZSBjaG9zZW4gZWZmZWN0
QWxsb3dlZC4KKworWW91IG5lZWQgdG8gY29tcGFyZSB0aGVzZSByZXN1bHRzIHRvIHRoZSBIVE1M
IDUgc3BlYyB0byB2ZXJpZnkgd2hldGhlciBhIG1hdGNoL21pc3RtYXRjaCBpcyBjb3JyZWN0IGZv
ciB0aGUgY2hvc2VuIGRyb3BFZmZlY3QgYW5kIGVmZmVjdEFsbG93ZWQuCisKK2VmZmVjdEFsbG93
ZWQgIAorCitEcm9wIHRoZSByZWQgc3F1YXJlIG9udG8gbWUuCisKK0V4cGVjdHMgZHJvcEVmZmVj
dCAKK0l0ZW1zIHRoYXQgY2FuIGJlIGRyYWdnZWQgdG8gdGhlIGRyb3AgdGFyZ2V0OgorCitTcXVh
cmUKKyhlZmZlY3RBbGxvd2VkOiB1bmluaXRpYWxpemVkLCBkcm9wRWZmZWN0OiBub25lKSA9PiBN
YXRjaGVkIGRyb3BFZmZlY3QKKworKGVmZmVjdEFsbG93ZWQ6IHVuaW5pdGlhbGl6ZWQsIGRyb3BF
ZmZlY3Q6IGNvcHkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6
IGNvcHksIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dlZDogdW5pbml0
aWFsaXplZCwgZHJvcEVmZmVjdDogbW92ZSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2Vy
IGNob3NlIGVmZmVjdDogbW92ZSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCisKKyhlZmZlY3RB
bGxvd2VkOiB1bmluaXRpYWxpemVkLCBkcm9wRWZmZWN0OiBsaW5rKSA9PiBNaXNtYXRjaGVkIGRy
b3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBsaW5rLCBhY3R1YWwgZWZmZWN0IHdhczogbm9u
ZSkKKworKGVmZmVjdEFsbG93ZWQ6IHVuaW5pdGlhbGl6ZWQsIGRyb3BFZmZlY3Q6IGR1bW15KSA9
PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBkdW1teSwgYWN0dWFs
IGVmZmVjdCB3YXM6IG5vbmUpCisKKyhlZmZlY3RBbGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBu
b25lKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKKworKGVmZmVjdEFsbG93ZWQ6IG5vbmUsIGRyb3BF
ZmZlY3Q6IGNvcHkpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCisoZWZmZWN0QWxsb3dlZDogbm9u
ZSwgZHJvcEVmZmVjdDogbW92ZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RBbGxv
d2VkOiBub25lLCBkcm9wRWZmZWN0OiBsaW5rKSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVz
ZXIgY2hvc2UgZWZmZWN0OiBsaW5rLCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKKworKGVmZmVj
dEFsbG93ZWQ6IG5vbmUsIGRyb3BFZmZlY3Q6IGR1bW15KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZl
Y3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBkdW1teSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCisK
KyhlZmZlY3RBbGxvd2VkOiBhbGwsIGRyb3BFZmZlY3Q6IG5vbmUpID0+IE1hdGNoZWQgZHJvcEVm
ZmVjdAorCisoZWZmZWN0QWxsb3dlZDogYWxsLCBkcm9wRWZmZWN0OiBjb3B5KSA9PiBNYXRjaGVk
IGRyb3BFZmZlY3QKKworKGVmZmVjdEFsbG93ZWQ6IGFsbCwgZHJvcEVmZmVjdDogbW92ZSkgPT4g
TWF0Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RBbGxvd2VkOiBhbGwsIGRyb3BFZmZlY3Q6IGxp
bmspID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCisoZWZmZWN0QWxsb3dlZDogYWxsLCBkcm9wRWZm
ZWN0OiBkdW1teSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDog
ZHVtbXksIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dlZDogY29weSwg
ZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RBbGxvd2Vk
OiBjb3B5LCBkcm9wRWZmZWN0OiBjb3B5KSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKKworKGVmZmVj
dEFsbG93ZWQ6IGNvcHksIGRyb3BFZmZlY3Q6IG1vdmUpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVj
dCAodXNlciBjaG9zZSBlZmZlY3Q6IG1vdmUsIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQorCiso
ZWZmZWN0QWxsb3dlZDogY29weSwgZHJvcEVmZmVjdDogbGluaykgPT4gTWlzbWF0Y2hlZCBkcm9w
RWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogbGluaywgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUp
CisKKyhlZmZlY3RBbGxvd2VkOiBjb3B5LCBkcm9wRWZmZWN0OiBkdW1teSkgPT4gTWlzbWF0Y2hl
ZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogZHVtbXksIGFjdHVhbCBlZmZlY3Qgd2Fz
OiBub25lKQorCisoZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0
Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RBbGxvd2VkOiBtb3ZlLCBkcm9wRWZmZWN0OiBjb3B5
KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBjb3B5LCBhY3R1
YWwgZWZmZWN0IHdhczogbm9uZSkKKworKGVmZmVjdEFsbG93ZWQ6IG1vdmUsIGRyb3BFZmZlY3Q6
IG1vdmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCisoZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJv
cEVmZmVjdDogbGluaykgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVj
dDogbGluaywgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCisKKyhlZmZlY3RBbGxvd2VkOiBtb3Zl
LCBkcm9wRWZmZWN0OiBkdW1teSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3Nl
IGVmZmVjdDogZHVtbXksIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dl
ZDogbGluaywgZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZl
Y3RBbGxvd2VkOiBsaW5rLCBkcm9wRWZmZWN0OiBjb3B5KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZl
Y3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBjb3B5LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKKwor
KGVmZmVjdEFsbG93ZWQ6IGxpbmssIGRyb3BFZmZlY3Q6IG1vdmUpID0+IE1pc21hdGNoZWQgZHJv
cEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IG1vdmUsIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25l
KQorCisoZWZmZWN0QWxsb3dlZDogbGluaywgZHJvcEVmZmVjdDogbGluaykgPT4gTWF0Y2hlZCBk
cm9wRWZmZWN0CisKKyhlZmZlY3RBbGxvd2VkOiBsaW5rLCBkcm9wRWZmZWN0OiBkdW1teSkgPT4g
TWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogZHVtbXksIGFjdHVhbCBl
ZmZlY3Qgd2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dlZDogY29weU1vdmUsIGRyb3BFZmZlY3Q6
IG5vbmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCisoZWZmZWN0QWxsb3dlZDogY29weU1vdmUs
IGRyb3BFZmZlY3Q6IGNvcHkpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCisoZWZmZWN0QWxsb3dl
ZDogY29weU1vdmUsIGRyb3BFZmZlY3Q6IG1vdmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCiso
ZWZmZWN0QWxsb3dlZDogY29weU1vdmUsIGRyb3BFZmZlY3Q6IGxpbmspID0+IE1pc21hdGNoZWQg
ZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IGxpbmssIGFjdHVhbCBlZmZlY3Qgd2FzOiBu
b25lKQorCisoZWZmZWN0QWxsb3dlZDogY29weU1vdmUsIGRyb3BFZmZlY3Q6IGR1bW15KSA9PiBN
aXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBkdW1teSwgYWN0dWFsIGVm
ZmVjdCB3YXM6IG5vbmUpCisKKyhlZmZlY3RBbGxvd2VkOiBjb3B5TGluaywgZHJvcEVmZmVjdDog
bm9uZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RBbGxvd2VkOiBjb3B5TGluaywg
ZHJvcEVmZmVjdDogY29weSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RBbGxvd2Vk
OiBjb3B5TGluaywgZHJvcEVmZmVjdDogbW92ZSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1
c2VyIGNob3NlIGVmZmVjdDogbW92ZSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCisKKyhlZmZl
Y3RBbGxvd2VkOiBjb3B5TGluaywgZHJvcEVmZmVjdDogbGluaykgPT4gTWF0Y2hlZCBkcm9wRWZm
ZWN0CisKKyhlZmZlY3RBbGxvd2VkOiBjb3B5TGluaywgZHJvcEVmZmVjdDogZHVtbXkpID0+IE1p
c21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IGR1bW15LCBhY3R1YWwgZWZm
ZWN0IHdhczogbm9uZSkKKworKGVmZmVjdEFsbG93ZWQ6IGxpbmtNb3ZlLCBkcm9wRWZmZWN0OiBu
b25lKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKKworKGVmZmVjdEFsbG93ZWQ6IGxpbmtNb3ZlLCBk
cm9wRWZmZWN0OiBjb3B5KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZm
ZWN0OiBjb3B5LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKKworKGVmZmVjdEFsbG93ZWQ6IGxp
bmtNb3ZlLCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKKworKGVmZmVj
dEFsbG93ZWQ6IGxpbmtNb3ZlLCBkcm9wRWZmZWN0OiBsaW5rKSA9PiBNYXRjaGVkIGRyb3BFZmZl
Y3QKKworKGVmZmVjdEFsbG93ZWQ6IGxpbmtNb3ZlLCBkcm9wRWZmZWN0OiBkdW1teSkgPT4gTWlz
bWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogZHVtbXksIGFjdHVhbCBlZmZl
Y3Qgd2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dlZDogZHVtbXksIGRyb3BFZmZlY3Q6IG5vbmUp
ID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCisoZWZmZWN0QWxsb3dlZDogZHVtbXksIGRyb3BFZmZl
Y3Q6IGNvcHkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IGNv
cHksIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dlZDogZHVtbXksIGRy
b3BFZmZlY3Q6IG1vdmUpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZl
Y3Q6IG1vdmUsIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dlZDogZHVt
bXksIGRyb3BFZmZlY3Q6IGxpbmspID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9z
ZSBlZmZlY3Q6IGxpbmssIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dl
ZDogZHVtbXksIGRyb3BFZmZlY3Q6IGR1bW15KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVz
ZXIgY2hvc2UgZWZmZWN0OiBkdW1teSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnRHJvcC1leHBlY3RlZC50
eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvZHJhZ0Ryb3AuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9kcmFnRHJvcC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvZHJhZ0Ryb3AuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDcgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisjZHJvcFRhcmdldCwgI2RyYWdNZSB7IHRleHQtYWxp
Z246IGNlbnRlcjsgZGlzcGxheTogdGFibGUtY2VsbDsgdmVydGljYWwtYWxpZ246IG1pZGRsZSB9
CisjZHJvcFRhcmdldCB7d2lkdGg6IDI1NnB4OyBoZWlnaHQ6IDI1NnB4OyBib3JkZXI6IDFweCBk
YXNoZWR9CisjZHJhZ01lIHstd2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2Vy
LXNlbGVjdDogbm9uZTsgYmFja2dyb3VuZDogI2ZmMDAwMDsgd2lkdGg6IDY0cHg7IGhlaWdodDog
NjRweDsgY29sb3I6IHdoaXRlfQorI2NvbnNvbGUge2hlaWdodDogMjAwcHg7IG92ZXJmbG93OiBh
dXRvfQorPC9zdHlsZT4KKzxzY3JpcHQ+CisgICAgdmFyIGRyYWdNZTsKKyAgICB2YXIgZHJvcFRh
cmdldDsKKyAgICB2YXIgZWZmZWN0QWxsb3dlZEVsZW07CisgICAgdmFyIGRyb3BFZmZlY3RFbGVt
OworICAgIHZhciBjb25zb2xlRWxtOworICAgIAorICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBkcmFnTWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJh
Z01lIik7CisgICAgICAgIGRyb3BUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJv
cFRhcmdldCIpOworICAgICAgICBlZmZlY3RBbGxvd2VkRWxlbSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJlZmZlY3RBbGxvd2VkIik7CisgICAgICAgIGRyb3BFZmZlY3RFbGVtID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImRyb3BFZmZlY3QiKTsKKyAgICAgICAgY29uc29sZUVsbSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIAorICAgICAgICBpZiAo
IWRyYWdNZSB8fCAhZHJvcFRhcmdldCB8fCAhZWZmZWN0QWxsb3dlZEVsZW0gfHwgIWRyb3BFZmZl
Y3RFbGVtIHx8ICFjb25zb2xlRWxtKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAg
ICAgICAgZHJhZ01lLm9uZHJhZ3N0YXJ0ID0gZHJhZ1N0YXJ0OworICAgICAgICBkcmFnTWUub25k
cmFnZW5kID0gZHJhZ0VuZDsKKyAgICAgICAgCisgICAgICAgIGRyb3BUYXJnZXQub25kcmFnZW50
ZXIgPSBkcmFnRW50ZXJlZDsKKyAgICAgICAgZHJvcFRhcmdldC5vbmRyYWdvdmVyID0gZHJhZ092
ZXI7CisgICAgICAgIAorICAgICAgICBydW5UZXN0KCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0
aW9uIGRyYWdTdGFydCgpCisgICAgeworICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0
QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWRFbGVtLm9wdGlvbnNbZWZmZWN0QWxsb3dlZEVsZW0uc2Vs
ZWN0ZWRJbmRleF0udmFsdWU7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbmQoKQor
ICAgIHsKKyAgICAgICAgY2hlY2tEcmFnU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBmdW5jdGlvbiBkcmFnRW50ZXJlZCgpCisgICAgeworICAgICAgICBkcmFnRW50
ZXJlZEFuZFVwZGF0ZWQoKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQor
ICAgIHsKKyAgICAgICAgZHJhZ0VudGVyZWRBbmRVcGRhdGVkKCk7CisgICAgfQorICAgIAorICAg
IGZ1bmN0aW9uIGRyYWdFbnRlcmVkQW5kVXBkYXRlZCgpCisgICAgeworICAgICAgICBldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVj
dEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWU7CisgICAgICAgIGlmIChldmVudC5wcmV2ZW50RGVm
YXVsdCkKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgLy8gQXNzdW1lIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyB3aXRoaW4g
SW50ZXJuZXQgRXhwbG9yZXIKKyAgICAgICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gY2hlY2tEcmFnU3RhdGUoKQor
ICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdDsKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gIihlZmZl
Y3RBbGxvd2VkOiAiICsgZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tlZmZlY3RBbGxvd2VkRWxl
bS5zZWxlY3RlZEluZGV4XS52YWx1ZSArCisgICAgICAgICAgICAgICAgICAgICAgICAiLCBkcm9w
RWZmZWN0OiAiICsgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3Rl
ZEluZGV4XS52YWx1ZSArICIpID0+ICI7CisgICAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCA9PSBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVj
dGVkSW5kZXhdLnZhbHVlKSB7CisgICAgICAgICAgICByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSh0ZXN0TmFtZSArICJNYXRjaGVkIGRyb3BFZmZlY3QiKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRlc3ROYW1l
ICsgIk1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6ICIgKyBkcm9wRWZm
ZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlICsgCisg
ICAgICAgICAgICAgICAgIiwgYWN0dWFsIGVmZmVjdCB3YXM6ICIgKyBldmVudC5kYXRhVHJhbnNm
ZXIuZHJvcEVmZmVjdCArICIpIik7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHBFbG0gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgIHBFbG0uYXBwZW5kQ2hpbGQocmVzdWx0
KTsKKyAgICAgICAgY29uc29sZUVsbS5hcHBlbmRDaGlsZChwRWxtKTsKKyAgICB9CisgICAgCisg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNl
bmRlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgCisgICAgICAgIHZhciBzdGFydFggPSBkcmFn
TWUub2Zmc2V0TGVmdCArIDEwOworICAgICAgICB2YXIgc3RhcnRZID0gZHJhZ01lLm9mZnNldFRv
cCArIGRyYWdNZS5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJn
ZXQub2Zmc2V0TGVmdCArIDEwOworICAgICAgICB2YXIgZW5kWSA9IGRyb3BUYXJnZXQub2Zmc2V0
VG9wICsgZHJvcFRhcmdldC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAKKyAgICAgICAgdmFy
IG51bUVmZmVjdEFsbG93ZWQgPSBlZmZlY3RBbGxvd2VkRWxlbS5vcHRpb25zLmxlbmd0aDsKKyAg
ICAgICAgdmFyIG51bUVmZmVjdHMgPSBkcm9wRWZmZWN0RWxlbS5vcHRpb25zLmxlbmd0aDsKKyAg
ICAgICAgCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRWZmZWN0QWxsb3dlZDsgKytp
KSB7CisgICAgICAgICAgICBlZmZlY3RBbGxvd2VkRWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbnVtRWZmZWN0czsgKytqKSB7
CisgICAgICAgICAgICAgICAgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tqXS5zZWxlY3RlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFy
dFkpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMCk7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kWCwgZW5kWSk7CisgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aDM+UmVtYXJrczo8L2gzPgorICAgIDxwPlRoaXMg
dGVzdCBqdXN0IHJlcG9ydHMgd2hldGhlciB0aGUgY2hvc2VuIGRyb3BFZmZlY3QgbWF0Y2hlZC9t
aXNtYXRjaGVkIHdoYXQgdGhlIGJyb3dzZXIgY2hvc2UgYXMgdGhlIGRyb3AgZWZmZWN0IHdpdGgg
cmVzcGVjdCB0byB0aGUgY2hvc2VuIGVmZmVjdEFsbG93ZWQuPC9wPgorICAgIDxwPllvdSBuZWVk
IHRvIGNvbXBhcmUgdGhlc2UgcmVzdWx0cyB0byB0aGUgSFRNTCA1IHNwZWMgdG8gdmVyaWZ5IHdo
ZXRoZXIgYSBtYXRjaC9taXN0bWF0Y2ggaXMgY29ycmVjdCBmb3IgdGhlIGNob3NlbiBkcm9wRWZm
ZWN0IGFuZCBlZmZlY3RBbGxvd2VkLjwvcD4KKyAgICA8aHIvPgorICAgIDxsYWJlbCBmb3I9ImVm
ZmVjdEFsbG93ZWQiPmVmZmVjdEFsbG93ZWQ8L2xhYmVsPiA8c2VsZWN0IGlkPSJlZmZlY3RBbGxv
d2VkIj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0idW5pbml0aWFsaXplZCI+VW5pbml0aWFsaXpl
ZDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSJub25lIj5Ob25lPC9vcHRpb24+Cisg
ICAgICAgIDxvcHRpb24gdmFsdWU9ImFsbCI+QWxsPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24g
dmFsdWU9ImNvcHkiPkNvcHk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW92ZSI+
TW92ZTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSJsaW5rIj5MaW5rPC9vcHRpb24+
CisgICAgICAgIDxvcHRpb24gdmFsdWU9ImNvcHlNb3ZlIj5Db3B5TW92ZTwvb3B0aW9uPgorICAg
ICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5TGluayI+Q29weUxpbms8L29wdGlvbj4KKyAgICAgICAg
PG9wdGlvbiB2YWx1ZT0ibGlua01vdmUiPkxpbmtNb3ZlPC9vcHRpb24+CisgICAgICAgIDxvcHRp
b24gdmFsdWU9ImR1bW15Ij5Ob25leGlzdGVudCAoRHVtbXkpIEVmZmVjdDwvb3B0aW9uPgorICAg
IDwvc2VsZWN0PgorICAgIDxici8+PGJyLz4KKyAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0Ij5Ecm9w
IHRoZSByZWQgc3F1YXJlIG9udG8gbWUuPGJyLz48YnIvPgorICAgICAgICA8bGFiZWwgZm9yPSJk
cm9wRWZmZWN0Ij5FeHBlY3RzIGRyb3BFZmZlY3Q8L2xhYmVsPiA8c2VsZWN0IGlkPSJkcm9wRWZm
ZWN0Ij4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im5vbmUiPk5vbmU8L29wdGlvbj4KKyAg
ICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImNvcHkiPkNvcHk8L29wdGlvbj4KKyAgICAgICAgICAg
IDxvcHRpb24gdmFsdWU9Im1vdmUiPk1vdmU8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24g
dmFsdWU9ImxpbmsiPkxpbms8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImR1
bW15Ij5Ob25leGlzdGVudCAoRHVtbXkpIEVmZmVjdDwvb3B0aW9uPgorICAgICAgICA8L3NlbGVj
dD4KKyAgICA8L2Rpdj4KKyAgICA8aHIvPgorICAgIDxwPkl0ZW1zIHRoYXQgY2FuIGJlIGRyYWdn
ZWQgdG8gdGhlIGRyb3AgdGFyZ2V0OjwvcD4KKyAgICA8ZGl2IGlkPSJkcmFnTWUiPlNxdWFyZTwv
ZGl2PgorICAgIDxoci8+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZ0Ryb3AuaHRtbApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZXhlY3V0YWJsZQogICArICoKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>39501</attachid>
            <date>2009-09-11 18:50:49 -0700</date>
            <delta_ts>2009-09-14 18:11:22 -0700</delta_ts>
            <desc>Ouput from running general test on Mac</desc>
            <filename>r48325_Mac_dragDrop-expected.txt</filename>
            <type>text/plain</type>
            <size>5112</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">UmVtYXJrczoKClRoaXMgdGVzdCBqdXN0IHJlcG9ydHMgd2hldGhlciB0aGUgY2hvc2VuIGRyb3BF
ZmZlY3QgbWF0Y2hlZC9taXNtYXRjaGVkIHdoYXQgdGhlIGJyb3dzZXIgY2hvc2UgYXMgdGhlIGRy
b3AgZWZmZWN0IHdpdGggcmVzcGVjdCB0byB0aGUgY2hvc2VuIGVmZmVjdEFsbG93ZWQuCgpZb3Ug
bmVlZCB0byBjb21wYXJlIHRoZXNlIHJlc3VsdHMgdG8gdGhlIEhUTUwgNSBzcGVjIHRvIHZlcmlm
eSB3aGV0aGVyIGEgbWF0Y2gvbWlzdG1hdGNoIGlzIGNvcnJlY3QgZm9yIHRoZSBjaG9zZW4gZHJv
cEVmZmVjdCBhbmQgZWZmZWN0QWxsb3dlZC4KCmVmZmVjdEFsbG93ZWQgIAoKRHJvcCB0aGUgcmVk
IHNxdWFyZSBvbnRvIG1lLgoKRXhwZWN0cyBkcm9wRWZmZWN0IApJdGVtcyB0aGF0IGNhbiBiZSBk
cmFnZ2VkIHRvIHRoZSBkcm9wIHRhcmdldDoKClNxdWFyZQooZWZmZWN0QWxsb3dlZDogdW5pbml0
aWFsaXplZCwgZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0
QWxsb3dlZDogdW5pbml0aWFsaXplZCwgZHJvcEVmZmVjdDogY29weSkgPT4gTWlzbWF0Y2hlZCBk
cm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogY29weSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5v
bmUpCgooZWZmZWN0QWxsb3dlZDogdW5pbml0aWFsaXplZCwgZHJvcEVmZmVjdDogbW92ZSkgPT4g
TWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogbW92ZSwgYWN0dWFsIGVm
ZmVjdCB3YXM6IG5vbmUpCgooZWZmZWN0QWxsb3dlZDogdW5pbml0aWFsaXplZCwgZHJvcEVmZmVj
dDogbGluaykgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogbGlu
aywgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCgooZWZmZWN0QWxsb3dlZDogdW5pbml0aWFsaXpl
ZCwgZHJvcEVmZmVjdDogZHVtbXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9z
ZSBlZmZlY3Q6IGR1bW15LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2Vk
OiBub25lLCBkcm9wRWZmZWN0OiBub25lKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKCihlZmZlY3RB
bGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBjb3B5KSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKCihl
ZmZlY3RBbGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBNYXRjaGVkIGRyb3BFZmZl
Y3QKCihlZmZlY3RBbGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBsaW5rKSA9PiBNaXNtYXRjaGVk
IGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBsaW5rLCBhY3R1YWwgZWZmZWN0IHdhczog
bm9uZSkKCihlZmZlY3RBbGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBkdW1teSkgPT4gTWlzbWF0
Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogZHVtbXksIGFjdHVhbCBlZmZlY3Qg
d2FzOiBub25lKQoKKGVmZmVjdEFsbG93ZWQ6IGFsbCwgZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0
Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogYWxsLCBkcm9wRWZmZWN0OiBjb3B5KSA9
PiBNYXRjaGVkIGRyb3BFZmZlY3QKCihlZmZlY3RBbGxvd2VkOiBhbGwsIGRyb3BFZmZlY3Q6IG1v
dmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAoKKGVmZmVjdEFsbG93ZWQ6IGFsbCwgZHJvcEVmZmVj
dDogbGluaykgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogYWxsLCBkcm9w
RWZmZWN0OiBkdW1teSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVj
dDogZHVtbXksIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQoKKGVmZmVjdEFsbG93ZWQ6IGNvcHks
IGRyb3BFZmZlY3Q6IG5vbmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAoKKGVmZmVjdEFsbG93ZWQ6
IGNvcHksIGRyb3BFZmZlY3Q6IGNvcHkpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAoKKGVmZmVjdEFs
bG93ZWQ6IGNvcHksIGRyb3BFZmZlY3Q6IG1vdmUpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAo
dXNlciBjaG9zZSBlZmZlY3Q6IG1vdmUsIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQoKKGVmZmVj
dEFsbG93ZWQ6IGNvcHksIGRyb3BFZmZlY3Q6IGxpbmspID0+IE1pc21hdGNoZWQgZHJvcEVmZmVj
dCAodXNlciBjaG9zZSBlZmZlY3Q6IGxpbmssIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQoKKGVm
ZmVjdEFsbG93ZWQ6IGNvcHksIGRyb3BFZmZlY3Q6IGR1bW15KSA9PiBNaXNtYXRjaGVkIGRyb3BF
ZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBkdW1teSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUp
CgooZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0Y2hlZCBkcm9w
RWZmZWN0CgooZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDogY29weSkgPT4gTWlzbWF0
Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogY29weSwgYWN0dWFsIGVmZmVjdCB3
YXM6IG5vbmUpCgooZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDogbW92ZSkgPT4gTWF0
Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDogbGluaykg
PT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogbGluaywgYWN0dWFs
IGVmZmVjdCB3YXM6IG5vbmUpCgooZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDogZHVt
bXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IGR1bW15LCBh
Y3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBsaW5rLCBkcm9wRWZmZWN0
OiBub25lKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKCihlZmZlY3RBbGxvd2VkOiBsaW5rLCBkcm9w
RWZmZWN0OiBjb3B5KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0
OiBjb3B5LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBsaW5rLCBk
cm9wRWZmZWN0OiBtb3ZlKSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZm
ZWN0OiBtb3ZlLCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBsaW5r
LCBkcm9wRWZmZWN0OiBsaW5rKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKCihlZmZlY3RBbGxvd2Vk
OiBsaW5rLCBkcm9wRWZmZWN0OiBkdW1teSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2Vy
IGNob3NlIGVmZmVjdDogZHVtbXksIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQoKKGVmZmVjdEFs
bG93ZWQ6IGNvcHlNb3ZlLCBkcm9wRWZmZWN0OiBub25lKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QK
CihlZmZlY3RBbGxvd2VkOiBjb3B5TW92ZSwgZHJvcEVmZmVjdDogY29weSkgPT4gTWF0Y2hlZCBk
cm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogY29weU1vdmUsIGRyb3BFZmZlY3Q6IG1vdmUpID0+
IE1hdGNoZWQgZHJvcEVmZmVjdAoKKGVmZmVjdEFsbG93ZWQ6IGNvcHlNb3ZlLCBkcm9wRWZmZWN0
OiBsaW5rKSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBsaW5r
LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBjb3B5TW92ZSwgZHJv
cEVmZmVjdDogZHVtbXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZl
Y3Q6IGR1bW15LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBjb3B5
TGluaywgZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxs
b3dlZDogY29weUxpbmssIGRyb3BFZmZlY3Q6IGNvcHkpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAoK
KGVmZmVjdEFsbG93ZWQ6IGNvcHlMaW5rLCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBNaXNtYXRjaGVk
IGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBtb3ZlLCBhY3R1YWwgZWZmZWN0IHdhczog
bm9uZSkKCihlZmZlY3RBbGxvd2VkOiBjb3B5TGluaywgZHJvcEVmZmVjdDogbGluaykgPT4gTWF0
Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogY29weUxpbmssIGRyb3BFZmZlY3Q6IGR1
bW15KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBkdW1teSwg
YWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCgooZWZmZWN0QWxsb3dlZDogbGlua01vdmUsIGRyb3BF
ZmZlY3Q6IG5vbmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAoKKGVmZmVjdEFsbG93ZWQ6IGxpbmtN
b3ZlLCBkcm9wRWZmZWN0OiBjb3B5KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hv
c2UgZWZmZWN0OiBjb3B5LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2Vk
OiBsaW5rTW92ZSwgZHJvcEVmZmVjdDogbW92ZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZm
ZWN0QWxsb3dlZDogbGlua01vdmUsIGRyb3BFZmZlY3Q6IGxpbmspID0+IE1hdGNoZWQgZHJvcEVm
ZmVjdAoKKGVmZmVjdEFsbG93ZWQ6IGxpbmtNb3ZlLCBkcm9wRWZmZWN0OiBkdW1teSkgPT4gTWlz
bWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogZHVtbXksIGFjdHVhbCBlZmZl
Y3Qgd2FzOiBub25lKQoKKGVmZmVjdEFsbG93ZWQ6IGR1bW15LCBkcm9wRWZmZWN0OiBub25lKSA9
PiBNYXRjaGVkIGRyb3BFZmZlY3QKCihlZmZlY3RBbGxvd2VkOiBkdW1teSwgZHJvcEVmZmVjdDog
Y29weSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogY29weSwg
YWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCgooZWZmZWN0QWxsb3dlZDogZHVtbXksIGRyb3BFZmZl
Y3Q6IG1vdmUpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IG1v
dmUsIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQoKKGVmZmVjdEFsbG93ZWQ6IGR1bW15LCBkcm9w
RWZmZWN0OiBsaW5rKSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0
OiBsaW5rLCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBkdW1teSwg
ZHJvcEVmZmVjdDogZHVtbXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBl
ZmZlY3Q6IGR1bW15LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>39502</attachid>
            <date>2009-09-11 18:53:07 -0700</date>
            <delta_ts>2009-09-14 18:11:45 -0700</delta_ts>
            <desc>Output of general test on Windows</desc>
            <filename>r48325_Win_dragDrop-expected.txt</filename>
            <type>text/plain</type>
            <size>5058</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">UmVtYXJrczoKClRoaXMgdGVzdCBqdXN0IHJlcG9ydHMgd2hldGhlciB0aGUgY2hvc2VuIGRyb3BF
ZmZlY3QgbWF0Y2hlZC9taXNtYXRjaGVkIHdoYXQgdGhlIGJyb3dzZXIgY2hvc2UgYXMgdGhlIGRy
b3AgZWZmZWN0IHdpdGggcmVzcGVjdCB0byB0aGUgY2hvc2VuIGVmZmVjdEFsbG93ZWQuCgpZb3Ug
bmVlZCB0byBjb21wYXJlIHRoZXNlIHJlc3VsdHMgdG8gdGhlIEhUTUwgNSBzcGVjIHRvIHZlcmlm
eSB3aGV0aGVyIGEgbWF0Y2gvbWlzdG1hdGNoIGlzIGNvcnJlY3QgZm9yIHRoZSBjaG9zZW4gZHJv
cEVmZmVjdCBhbmQgZWZmZWN0QWxsb3dlZC4KCmVmZmVjdEFsbG93ZWQgIAoKRHJvcCB0aGUgcmVk
IHNxdWFyZSBvbnRvIG1lLgoKRXhwZWN0cyBkcm9wRWZmZWN0IApJdGVtcyB0aGF0IGNhbiBiZSBk
cmFnZ2VkIHRvIHRoZSBkcm9wIHRhcmdldDoKClNxdWFyZQooZWZmZWN0QWxsb3dlZDogdW5pbml0
aWFsaXplZCwgZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0
QWxsb3dlZDogdW5pbml0aWFsaXplZCwgZHJvcEVmZmVjdDogY29weSkgPT4gTWF0Y2hlZCBkcm9w
RWZmZWN0CgooZWZmZWN0QWxsb3dlZDogdW5pbml0aWFsaXplZCwgZHJvcEVmZmVjdDogbW92ZSkg
PT4gTWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogdW5pbml0aWFsaXplZCwgZHJv
cEVmZmVjdDogbGluaykgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogdW5p
bml0aWFsaXplZCwgZHJvcEVmZmVjdDogZHVtbXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAo
dXNlciBjaG9zZSBlZmZlY3Q6IGR1bW15LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZl
Y3RBbGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBub25lKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QK
CihlZmZlY3RBbGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBjb3B5KSA9PiBNaXNtYXRjaGVkIGRy
b3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBjb3B5LCBhY3R1YWwgZWZmZWN0IHdhczogbm9u
ZSkKCihlZmZlY3RBbGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBNaXNtYXRjaGVk
IGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBtb3ZlLCBhY3R1YWwgZWZmZWN0IHdhczog
bm9uZSkKCihlZmZlY3RBbGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBsaW5rKSA9PiBNaXNtYXRj
aGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBsaW5rLCBhY3R1YWwgZWZmZWN0IHdh
czogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBkdW1teSkgPT4gTWlz
bWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogZHVtbXksIGFjdHVhbCBlZmZl
Y3Qgd2FzOiBub25lKQoKKGVmZmVjdEFsbG93ZWQ6IGFsbCwgZHJvcEVmZmVjdDogbm9uZSkgPT4g
TWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogYWxsLCBkcm9wRWZmZWN0OiBjb3B5
KSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKCihlZmZlY3RBbGxvd2VkOiBhbGwsIGRyb3BFZmZlY3Q6
IG1vdmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAoKKGVmZmVjdEFsbG93ZWQ6IGFsbCwgZHJvcEVm
ZmVjdDogbGluaykgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogYWxsLCBk
cm9wRWZmZWN0OiBkdW1teSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVm
ZmVjdDogZHVtbXksIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQoKKGVmZmVjdEFsbG93ZWQ6IGNv
cHksIGRyb3BFZmZlY3Q6IG5vbmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAoKKGVmZmVjdEFsbG93
ZWQ6IGNvcHksIGRyb3BFZmZlY3Q6IGNvcHkpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAoKKGVmZmVj
dEFsbG93ZWQ6IGNvcHksIGRyb3BFZmZlY3Q6IG1vdmUpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVj
dCAodXNlciBjaG9zZSBlZmZlY3Q6IG1vdmUsIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQoKKGVm
ZmVjdEFsbG93ZWQ6IGNvcHksIGRyb3BFZmZlY3Q6IGxpbmspID0+IE1pc21hdGNoZWQgZHJvcEVm
ZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IGxpbmssIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQoK
KGVmZmVjdEFsbG93ZWQ6IGNvcHksIGRyb3BFZmZlY3Q6IGR1bW15KSA9PiBNaXNtYXRjaGVkIGRy
b3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBkdW1teSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5v
bmUpCgooZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0Y2hlZCBk
cm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDogY29weSkgPT4gTWlz
bWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogY29weSwgYWN0dWFsIGVmZmVj
dCB3YXM6IG5vbmUpCgooZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDogbW92ZSkgPT4g
TWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDogbGlu
aykgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogbGluaywgYWN0
dWFsIGVmZmVjdCB3YXM6IG5vbmUpCgooZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDog
ZHVtbXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IGR1bW15
LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBsaW5rLCBkcm9wRWZm
ZWN0OiBub25lKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKCihlZmZlY3RBbGxvd2VkOiBsaW5rLCBk
cm9wRWZmZWN0OiBjb3B5KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZm
ZWN0OiBjb3B5LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBsaW5r
LCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2Ug
ZWZmZWN0OiBtb3ZlLCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBs
aW5rLCBkcm9wRWZmZWN0OiBsaW5rKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKCihlZmZlY3RBbGxv
d2VkOiBsaW5rLCBkcm9wRWZmZWN0OiBkdW1teSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1
c2VyIGNob3NlIGVmZmVjdDogZHVtbXksIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQoKKGVmZmVj
dEFsbG93ZWQ6IGNvcHlNb3ZlLCBkcm9wRWZmZWN0OiBub25lKSA9PiBNYXRjaGVkIGRyb3BFZmZl
Y3QKCihlZmZlY3RBbGxvd2VkOiBjb3B5TW92ZSwgZHJvcEVmZmVjdDogY29weSkgPT4gTWF0Y2hl
ZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogY29weU1vdmUsIGRyb3BFZmZlY3Q6IG1vdmUp
ID0+IE1hdGNoZWQgZHJvcEVmZmVjdAoKKGVmZmVjdEFsbG93ZWQ6IGNvcHlNb3ZlLCBkcm9wRWZm
ZWN0OiBsaW5rKSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBs
aW5rLCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBjb3B5TW92ZSwg
ZHJvcEVmZmVjdDogZHVtbXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBl
ZmZlY3Q6IGR1bW15LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBj
b3B5TGluaywgZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0
QWxsb3dlZDogY29weUxpbmssIGRyb3BFZmZlY3Q6IGNvcHkpID0+IE1hdGNoZWQgZHJvcEVmZmVj
dAoKKGVmZmVjdEFsbG93ZWQ6IGNvcHlMaW5rLCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBNaXNtYXRj
aGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBtb3ZlLCBhY3R1YWwgZWZmZWN0IHdh
czogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBjb3B5TGluaywgZHJvcEVmZmVjdDogbGluaykgPT4g
TWF0Y2hlZCBkcm9wRWZmZWN0CgooZWZmZWN0QWxsb3dlZDogY29weUxpbmssIGRyb3BFZmZlY3Q6
IGR1bW15KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBkdW1t
eSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCgooZWZmZWN0QWxsb3dlZDogbGlua01vdmUsIGRy
b3BFZmZlY3Q6IG5vbmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAoKKGVmZmVjdEFsbG93ZWQ6IGxp
bmtNb3ZlLCBkcm9wRWZmZWN0OiBjb3B5KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIg
Y2hvc2UgZWZmZWN0OiBjb3B5LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxv
d2VkOiBsaW5rTW92ZSwgZHJvcEVmZmVjdDogbW92ZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0Cgoo
ZWZmZWN0QWxsb3dlZDogbGlua01vdmUsIGRyb3BFZmZlY3Q6IGxpbmspID0+IE1hdGNoZWQgZHJv
cEVmZmVjdAoKKGVmZmVjdEFsbG93ZWQ6IGxpbmtNb3ZlLCBkcm9wRWZmZWN0OiBkdW1teSkgPT4g
TWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogZHVtbXksIGFjdHVhbCBl
ZmZlY3Qgd2FzOiBub25lKQoKKGVmZmVjdEFsbG93ZWQ6IGR1bW15LCBkcm9wRWZmZWN0OiBub25l
KSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKCihlZmZlY3RBbGxvd2VkOiBkdW1teSwgZHJvcEVmZmVj
dDogY29weSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogY29w
eSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCgooZWZmZWN0QWxsb3dlZDogZHVtbXksIGRyb3BF
ZmZlY3Q6IG1vdmUpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6
IG1vdmUsIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQoKKGVmZmVjdEFsbG93ZWQ6IGR1bW15LCBk
cm9wRWZmZWN0OiBsaW5rKSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZm
ZWN0OiBsaW5rLCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKCihlZmZlY3RBbGxvd2VkOiBkdW1t
eSwgZHJvcEVmZmVjdDogZHVtbXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9z
ZSBlZmZlY3Q6IGR1bW15LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>39503</attachid>
            <date>2009-09-11 19:01:41 -0700</date>
            <delta_ts>2009-09-14 18:11:59 -0700</delta_ts>
            <desc>Diff of Mac general test output to Win general test output</desc>
            <filename>r48325_dragDrop-expected.diff</filename>
            <type>application/octet-stream</type>
            <size>1014</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">MTdjMTcKPCAoZWZmZWN0QWxsb3dlZDogdW5pbml0aWFsaXplZCwgZHJvcEVmZmVjdDogY29weSkg
PT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogY29weSwgYWN0dWFs
IGVmZmVjdCB3YXM6IG5vbmUpCi0tLQo+IChlZmZlY3RBbGxvd2VkOiB1bmluaXRpYWxpemVkLCBk
cm9wRWZmZWN0OiBjb3B5KSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKMTljMTkKPCAoZWZmZWN0QWxs
b3dlZDogdW5pbml0aWFsaXplZCwgZHJvcEVmZmVjdDogbW92ZSkgPT4gTWlzbWF0Y2hlZCBkcm9w
RWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogbW92ZSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUp
Ci0tLQo+IChlZmZlY3RBbGxvd2VkOiB1bmluaXRpYWxpemVkLCBkcm9wRWZmZWN0OiBtb3ZlKSA9
PiBNYXRjaGVkIGRyb3BFZmZlY3QKMjFjMjEKPCAoZWZmZWN0QWxsb3dlZDogdW5pbml0aWFsaXpl
ZCwgZHJvcEVmZmVjdDogbGluaykgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3Nl
IGVmZmVjdDogbGluaywgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCi0tLQo+IChlZmZlY3RBbGxv
d2VkOiB1bmluaXRpYWxpemVkLCBkcm9wRWZmZWN0OiBsaW5rKSA9PiBNYXRjaGVkIGRyb3BFZmZl
Y3QKMjdjMjcKPCAoZWZmZWN0QWxsb3dlZDogbm9uZSwgZHJvcEVmZmVjdDogY29weSkgPT4gTWF0
Y2hlZCBkcm9wRWZmZWN0Ci0tLQo+IChlZmZlY3RBbGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBj
b3B5KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBjb3B5LCBh
Y3R1YWwgZWZmZWN0IHdhczogbm9uZSkKMjljMjkKPCAoZWZmZWN0QWxsb3dlZDogbm9uZSwgZHJv
cEVmZmVjdDogbW92ZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0Ci0tLQo+IChlZmZlY3RBbGxvd2Vk
OiBub25lLCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIg
Y2hvc2UgZWZmZWN0OiBtb3ZlLCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39563</attachid>
            <date>2009-09-14 12:03:24 -0700</date>
            <delta_ts>2009-09-14 13:15:42 -0700</delta_ts>
            <desc>Patch with manual test case</desc>
            <filename>091409.patch</filename>
            <type>text/plain</type>
            <size>15115</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODM1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDktMTQgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAgICAgICBBbmQK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAgICAgQWRkZWQg
YSBtYW51YWwgdGVzdCB0byBjaGVjayBESFRNTCBkcmFnLWFuZC1kcm9wIHN1cHBvcnQuCisKKyAg
ICAgICAgKiBtYW51YWwtdGVzdHMvZHJhZy1hbmQtZHJvcC5odG1sOiBBZGRlZC4KKwogMjAwOS0w
OS0xNCAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxjYW1AbWNjLmlkLmF1PgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9tYW51YWwtdGVzdHMvZHJhZy1hbmQt
ZHJvcC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWFudWFsLXRlc3RzL2RyYWctYW5kLWRy
b3AuaHRtbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWFudWFsLXRlc3RzL2RyYWctYW5kLWRy
b3AuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c3R5bGU+CisjZHJvcFRhcmdldCwgI2RyYWdNZSB7IHRleHQtYWxpZ246IGNlbnRlcjsgZGlzcGxh
eTogdGFibGUtY2VsbDsgdmVydGljYWwtYWxpZ246IG1pZGRsZSB9CisjZHJvcFRhcmdldCB7d2lk
dGg6IDI1NnB4OyBoZWlnaHQ6IDI1NnB4OyBib3JkZXI6IDFweCBkYXNoZWR9CisjZHJhZ01lIHst
d2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgYmFj
a2dyb3VuZDogI2ZmMDAwMDsgd2lkdGg6IDY0cHg7IGhlaWdodDogNjRweDsgY29sb3I6IHdoaXRl
fQorI2NvbnNvbGUge2hlaWdodDogMjAwcHg7IG92ZXJmbG93OiBhdXRvfQorPC9zdHlsZT4KKzxz
Y3JpcHQ+CisgICAgdmFyIGRyYWdNZTsKKyAgICB2YXIgZHJvcFRhcmdldDsKKyAgICB2YXIgZWZm
ZWN0QWxsb3dlZEVsZW07CisgICAgdmFyIGRyb3BFZmZlY3RFbGVtOworICAgIHZhciBjb25zb2xl
RWxtOworICAgIAorICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICBkcmFnTWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgIGRy
b3BUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcFRhcmdldCIpOworICAgICAg
ICBlZmZlY3RBbGxvd2VkRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZmZlY3RBbGxv
d2VkIik7CisgICAgICAgIGRyb3BFZmZlY3RFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImRyb3BFZmZlY3QiKTsKKyAgICAgICAgY29uc29sZUVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIik7CisgICAgICAgIAorICAgICAgICBpZiAoIWRyYWdNZSB8fCAhZHJvcFRh
cmdldCB8fCAhZWZmZWN0QWxsb3dlZEVsZW0gfHwgIWRyb3BFZmZlY3RFbGVtIHx8ICFjb25zb2xl
RWxtKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgZHJhZ01lLm9uZHJh
Z3N0YXJ0ID0gZHJhZ1N0YXJ0OworICAgICAgICBkcmFnTWUub25kcmFnZW5kID0gZHJhZ0VuZDsK
KyAgICAgICAgCisgICAgICAgIGRyb3BUYXJnZXQub25kcmFnZW50ZXIgPSBkcmFnRW50ZXJlZDsK
KyAgICAgICAgZHJvcFRhcmdldC5vbmRyYWdvdmVyID0gZHJhZ092ZXI7CisgICAgICAgIAorICAg
ICAgICBydW5UZXN0KCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdTdGFydCgpCisg
ICAgeworICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFs
bG93ZWRFbGVtLm9wdGlvbnNbZWZmZWN0QWxsb3dlZEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWU7
CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbmQoKQorICAgIHsKKyAgICAgICAgY2hl
Y2tEcmFnU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlv
biBkcmFnRW50ZXJlZCgpCisgICAgeworICAgICAgICBkcmFnRW50ZXJlZEFuZFVwZGF0ZWQoKTsK
KyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQorICAgIHsKKyAgICAgICAgZHJh
Z0VudGVyZWRBbmRVcGRhdGVkKCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbnRl
cmVkQW5kVXBkYXRlZCgpCisgICAgeworICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCA9IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRl
eF0udmFsdWU7CisgICAgICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkKKyAgICAgICAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8g
QXNzdW1lIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyB3aXRoaW4gSW50ZXJuZXQgRXhwbG9yZXIK
KyAgICAgICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgZnVuY3Rpb24gY2hlY2tEcmFnU3RhdGUoKQorICAgIHsKKyAgICAgICAgdmFy
IHJlc3VsdDsKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gIihlZmZlY3RBbGxvd2VkOiAiICsgZWZm
ZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tlZmZlY3RBbGxvd2VkRWxlbS5zZWxlY3RlZEluZGV4XS52
YWx1ZSArCisgICAgICAgICAgICAgICAgICAgICAgICAiLCBkcm9wRWZmZWN0OiAiICsgZHJvcEVm
ZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZSArICIp
ID0+ICI7CisgICAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9PSBkcm9w
RWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlKSB7
CisgICAgICAgICAgICByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXN0TmFtZSAr
ICJNYXRjaGVkIGRyb3BFZmZlY3QiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJl
c3VsdCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRlc3ROYW1lICsgIk1pc21hdGNoZWQgZHJv
cEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6ICIgKyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ry
b3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlICsgCisgICAgICAgICAgICAgICAgIiwg
YWN0dWFsIGVmZmVjdCB3YXM6ICIgKyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCArICIp
Iik7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHBFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJwIik7CisgICAgICAgIHBFbG0uYXBwZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAgY29uc29s
ZUVsbS5hcHBlbmRDaGlsZChwRWxtKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gcnVuVGVz
dCgpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICAgCisgICAgICAgIHZhciBzdGFydFggPSBkcmFnTWUub2Zmc2V0TGVmdCArIDEw
OworICAgICAgICB2YXIgc3RhcnRZID0gZHJhZ01lLm9mZnNldFRvcCArIGRyYWdNZS5vZmZzZXRI
ZWlnaHQgLyAyOworICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zmc2V0TGVmdCArIDEw
OworICAgICAgICB2YXIgZW5kWSA9IGRyb3BUYXJnZXQub2Zmc2V0VG9wICsgZHJvcFRhcmdldC5v
ZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAKKyAgICAgICAgdmFyIG51bUVmZmVjdEFsbG93ZWQg
PSBlZmZlY3RBbGxvd2VkRWxlbS5vcHRpb25zLmxlbmd0aDsKKyAgICAgICAgdmFyIG51bUVmZmVj
dHMgPSBkcm9wRWZmZWN0RWxlbS5vcHRpb25zLmxlbmd0aDsKKyAgICAgICAgCisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbnVtRWZmZWN0QWxsb3dlZDsgKytpKSB7CisgICAgICAgICAgICBl
ZmZlY3RBbGxvd2VkRWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IGZvciAodmFyIGogPSAwOyBqIDwgbnVtRWZmZWN0czsgKytqKSB7CisgICAgICAgICAgICAgICAg
ZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tqXS5zZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmxlYXBGb3J3YXJkKDEwMCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oZW5kWCwgZW5kWSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgICA8aDM+UmVtYXJrczo8L2gzPgorICAgIDxwPlRoaXMgdGVzdCBqdXN0IHJlcG9ydHMg
d2hldGhlciB0aGUgY2hvc2VuIGRyb3BFZmZlY3QgbWF0Y2hlZC9taXNtYXRjaGVkIHdoYXQgdGhl
IGJyb3dzZXIgY2hvc2UgYXMgdGhlIGRyb3AgZWZmZWN0IHdpdGggcmVzcGVjdCB0byB0aGUgY2hv
c2VuIGVmZmVjdEFsbG93ZWQuPC9wPgorICAgIDxwPllvdSBuZWVkIHRvIGNvbXBhcmUgdGhlc2Ug
cmVzdWx0cyB0byB0aGUgSFRNTCA1IHNwZWMgdG8gdmVyaWZ5IHdoZXRoZXIgYSBtYXRjaC9taXN0
bWF0Y2ggaXMgY29ycmVjdCBmb3IgdGhlIGNob3NlbiBkcm9wRWZmZWN0IGFuZCBlZmZlY3RBbGxv
d2VkLjwvcD4KKyAgICA8aHIvPgorICAgIDxsYWJlbCBmb3I9ImVmZmVjdEFsbG93ZWQiPmVmZmVj
dEFsbG93ZWQ8L2xhYmVsPiA8c2VsZWN0IGlkPSJlZmZlY3RBbGxvd2VkIj4KKyAgICAgICAgPG9w
dGlvbiB2YWx1ZT0idW5pbml0aWFsaXplZCI+VW5pbml0aWFsaXplZDwvb3B0aW9uPgorICAgICAg
ICA8b3B0aW9uIHZhbHVlPSJub25lIj5Ob25lPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFs
dWU9ImFsbCI+QWxsPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9ImNvcHkiPkNvcHk8
L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW92ZSI+TW92ZTwvb3B0aW9uPgorICAg
ICAgICA8b3B0aW9uIHZhbHVlPSJsaW5rIj5MaW5rPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24g
dmFsdWU9ImNvcHlNb3ZlIj5Db3B5TW92ZTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVl
PSJjb3B5TGluayI+Q29weUxpbms8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGlu
a01vdmUiPkxpbmtNb3ZlPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9ImR1bW15Ij5O
b25leGlzdGVudCAoRHVtbXkpIEVmZmVjdDwvb3B0aW9uPgorICAgIDwvc2VsZWN0PgorICAgIDxi
ci8+PGJyLz4KKyAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0Ij5Ecm9wIHRoZSByZWQgc3F1YXJlIG9u
dG8gbWUuPGJyLz48YnIvPgorICAgICAgICA8bGFiZWwgZm9yPSJkcm9wRWZmZWN0Ij5FeHBlY3Rz
IGRyb3BFZmZlY3Q8L2xhYmVsPiA8c2VsZWN0IGlkPSJkcm9wRWZmZWN0Ij4KKyAgICAgICAgICAg
IDxvcHRpb24gdmFsdWU9Im5vbmUiPk5vbmU8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24g
dmFsdWU9ImNvcHkiPkNvcHk8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im1v
dmUiPk1vdmU8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImxpbmsiPkxpbms8
L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImR1bW15Ij5Ob25leGlzdGVudCAo
RHVtbXkpIEVmZmVjdDwvb3B0aW9uPgorICAgICAgICA8L3NlbGVjdD4KKyAgICA8L2Rpdj4KKyAg
ICA8aHIvPgorICAgIDxwPkl0ZW1zIHRoYXQgY2FuIGJlIGRyYWdnZWQgdG8gdGhlIGRyb3AgdGFy
Z2V0OjwvcD4KKyAgICA8ZGl2IGlkPSJkcmFnTWUiPlNxdWFyZTwvZGl2PgorICAgIDxoci8+Cisg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBXZWJL
aXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2
aXNpb24gNDgzNTcpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDM1IEBACisyMDA5LTA5LTE0ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ3MzEKKyAgICAgICAgQW5kCisg
ICAgICAgIHJkYXI6Ly9wcm9ibGVtLzUwMTU5NjEKKyAgICAgICAgCisgICAgICAgIEltcGxlbWVu
dHMgc3VwcG9ydCBmb3IgREhUTUwgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb25zIChpLmUuIG9uZHJh
Z3N0YXJ0LCBvbmRyYWdlbmQpCisgICAgICAgIGluIHRoZSBXaW5kb3dzIGJ1aWxkIHNvIHRoYXQg
aXQgY29uZm9ybXMgdG8gdGhlIE1hYyBPUyBYIGJ1aWxkLiBIZW5jZSwgZHJvcEVmZmVjdCBpcwor
ICAgICAgICBjb3JyZWN0bHkgc2V0LgorICAgICAgICAKKyAgICAgICAgVGhlIFdlYlZpZXcgYW5k
IFdlYkRyb3BTb3VyY2UgZHJhZy1hbmQtZHJvcCBmdW5jdGlvbnMsIGFzIGNhbGxlZCBieSBmdW5j
dGlvbgorICAgICAgICBEb0RyYWdEcm9wIGluIGl0cyBldmVudCBsb29wLCBuZWl0aGVyIHVzZWQg
dGhlIGRyb3AgZWZmZWN0IGFzIHNwZWNpZmllZCBieQorICAgICAgICBldmVudC5kYXRhVHJhbnNm
ZXIuZHJvcEVmZmVjdCBub3IgcmVzcGVjdGVkIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RzQWxs
b3dlZC4KKyAgICAgICAgSW5zdGVhZCwgdGhlc2UgZnVuY3Rpb25zIGRlZmF1bHRlZCB0byBzb21l
IGhhcmRjb2RlZCBkcm9wIGVmZmVjdCBhbmQgc2V0IG9mCisgICAgICAgIGFsbG93ZWQgZHJvcCBl
ZmZlY3RzLCByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAg
ICogV2ViRHJvcFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEcm9wU291cmNlOjpRdWVyeUNvbnRp
bnVlRHJhZyk6IE1vdmVkIGNhbGwgdG8gRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdAor
ICAgICAgICBpbnRvIG1ldGhvZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcuCisgICAgICAgICog
V2ViRHJvcFNvdXJjZS5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
dzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24pOiBEZXRlcm1pbmVzIGFwcHJvcHJpYXRlIGRyb3Ag
ZWZmZWN0IGZyb20gc3RhdGUKKyAgICAgICAgb2Yga2V5Ym9hcmQgYW5kIGFsbG93ZWQgZWZmZWN0
cyB8b3BlcmF0aW9ufC4KKyAgICAgICAgKFdlYlZpZXc6OkRyYWdFbnRlcik6CisgICAgICAgIChX
ZWJWaWV3OjpEcmFnT3Zlcik6CisgICAgICAgIChXZWJWaWV3OjpEcm9wKToKKyAgICAgICAgKiBX
ZWJWaWV3Lmg6IEFkZGVkIGZpZWxkIG1fbGFzdERyb3BFZmZlY3QuIEV4cG9zZWQgbWV0aG9kIFdl
YlZpZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0aW9uLgorCiAyMDA5LTA5LTExICBTdGV2ZSBGYWxr
ZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJl
cm5zdGVpbi4KSW5kZXg6IFdlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAkocmV2aXNpb24gNDgzMjUpCisrKyBXZWJL
aXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybU1vdXNlRXZlbnQuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogI2luY2x1
ZGUgPFdpbmRvd3MuaD4KQEAgLTEwNiwxMCArMTA1LDYgQEAgU1RETUVUSE9ESU1QIFdlYkRyb3BT
b3VyY2U6OlF1ZXJ5Q29udGludQogewogICAgIGlmIChmRXNjYXBlUHJlc3NlZCB8fCAhKGdyZktl
eVN0YXRlICYgKE1LX0xCVVRUT058TUtfUkJVVFRPTikpKSB7CiAgICAgICAgIG1fZHJvcHBlZCA9
ICFmRXNjYXBlUHJlc3NlZDsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXctPnBh
Z2UoKSkKLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKSkg
Ci0gICAgICAgICAgICAgICAgLy9GSVhNRTogV2UgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBm
aW5kIG91dCB3aGF0IGFjdHVhbGx5IGhhcHBlbmVkIGluIHRoZSBkcmFnIDxyZGFyOi8vcHJvYmxl
bS81MDE1OTYxPgotICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1Nv
dXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1fd2ViVmlldy5nZXQoKSwgZmFsc2UpLCBm
RXNjYXBlUHJlc3NlZCA/IERyYWdPcGVyYXRpb25Ob25lIDogRHJhZ09wZXJhdGlvbkNvcHkpOwog
ICAgICAgICByZXR1cm4gZkVzY2FwZVByZXNzZWQ/IERSQUdEUk9QX1NfQ0FOQ0VMIDogRFJBR0RS
T1BfU19EUk9QOwogICAgIH0gZWxzZSBpZiAoUGFnZSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgp
KQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCkpIApJbmRleDog
V2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJE
cm9wU291cmNlLmgJKHJldmlzaW9uIDQ4MzI1KQorKysgV2ViS2l0L3dpbi9XZWJEcm9wU291cmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDEyIEBACiAjaW5jbHVkZSAiQ09NUHRyLmgi
CiAjaW5jbHVkZSA8b2JqaWRsLmg+CiAKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTW91c2VF
dmVudC5oPgorCiBjbGFzcyBXZWJWaWV3OwogCitXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQg
Z2VuZXJhdGVNb3VzZUV2ZW50KFdlYlZpZXcqIHdlYlZpZXcsIGJvb2wgaXNEcmFnKTsKKwogY2xh
c3MgV2ViRHJvcFNvdXJjZSA6IHB1YmxpYyBJRHJvcFNvdXJjZQogewogcHVibGljOgpJbmRleDog
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCShyZXZpc2lvbiA0ODMyNSkKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1NjYsMTEgKzQ1NjYsMzAgQEAgc3RhdGljIERXT1JEIGRyYWdPcGVyYXRpb25U
b0RyYWdDdXJzb3IoRAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9u
IGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEKSB7Ci0gICAgLy9GSVhNRTogVGhpcyBpcyBj
dXJyZW50bHkgdmVyeSBzaW1wbGUsIGl0IG1heSBuZWVkIHRvIGFjdHVhbGx5Ci0gICAgLy93b3Jr
IG91dCBhbiBhcHByb3ByaWF0ZSBEcmFnT3BlcmF0aW9uIGluIGZ1dHVyZSAtLSBob3dldmVyIHRo
aXMKLSAgICAvL2JlaGF2aW91ciBhcHBlYXJzIHRvIG1hdGNoIEZpcmVGb3gKLSAgICByZXR1cm4g
KERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxpbmspOwor
RHJhZ09wZXJhdGlvbiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZL
ZXlTdGF0ZSkgeworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlv
bk5vbmU7CisKKyAgICAvLyBDb25mb3JtcyB0byBNaWNyb3NvZnQncyBrZXkgY29tYmluYXRpb25z
IGFzIGRvY3VtZW50ZWQgZm9yIAorICAgIC8vIElEcm9wVGFyZ2V0OjpEcmFnT3Zlci4gU2VlOgor
ICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczY4MDEyOShW
Uy44NSkuYXNweAorICAgIC8vCisgICAgLy8gQnkgZGVmYXVsdCwgd2UgcmV0dXJuIHRoZSBzb3Vy
Y2UgZHJhZyBvcGVyYXRpb24gdG8gY29uZm9ybSB3aXRoIHRoZSBNYWMgT1MgWCBidWlsZC4KKyAg
ICAKKyAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS0+c291cmNlRHJhZ09wZXJhdGlvbigpOworICAgIGlmIChvcGVyYXRpb24gPT0gRHJhZ09wZXJh
dGlvbk5vbmUpCisgICAgICAgIG9wZXJhdGlvbiA9IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0
aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Db3B5KTsKKworICAgIGlmICgoZ3JmS2V5U3RhdGUg
JiAoTUtfQ09OVFJPTCB8IE1LX1NISUZUKSkgPT0gKE1LX0NPTlRST0wgfCBNS19TSElGVCkpCisg
ICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAgIGlmICgoZ3JmS2V5U3Rh
dGUgJiBNS19DT05UUk9MKSA9PSBNS19DT05UUk9MKQorICAgICAgICBvcGVyYXRpb24gPSBEcmFn
T3BlcmF0aW9uQ29weTsKKyAgICBpZiAoKGdyZktleVN0YXRlICYgTUtfU0hJRlQpID09IE1LX1NI
SUZUKQorICAgICAgICBvcGVyYXRpb24gPSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbk1v
dmUgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisKKyAgICBpZiAoKG9wZXJhdGlvbiAmIG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+c291cmNlRHJhZ09wZXJhdGlvbigpKSAhPSBvcGVyYXRpb24p
CisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVybiBvcGVy
YXRpb247CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJhZ0VudGVy
KApAQCAtNDU4Nyw2ICs0NjA2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpEcmFnRQogICAgICAgICBJbnRQb2ludChwdC54LCBwdC55KSwga2V5U3RhdGVUb0RyYWdPcGVy
YXRpb24oZ3JmS2V5U3RhdGUpKTsKICAgICAqcGR3RWZmZWN0ID0gZHJhZ09wZXJhdGlvblRvRHJh
Z0N1cnNvcihtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRyYWdFbnRlcmVkKCZkYXRhKSk7CiAK
KyAgICBtX2xhc3REcm9wRWZmZWN0ID0gKnBkd0VmZmVjdDsKICAgICBtX2RyYWdEYXRhID0gcERh
dGFPYmplY3Q7CiAKICAgICByZXR1cm4gU19PSzsKQEAgLTQ2MDcsNiArNDYyNyw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJhZ08KICAgICB9IGVsc2UKICAgICAgICAg
KnBkd0VmZmVjdCA9IERST1BFRkZFQ1RfTk9ORTsKIAorICAgIG1fbGFzdERyb3BFZmZlY3QgPSAq
cGR3RWZmZWN0OwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NjMxLDcgKzQ2NTIsNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OkRyb3AoCiAgICAgICAgIG1fZHJvcFRh
cmdldEhlbHBlci0+RHJvcChwRGF0YU9iamVjdCwgKFBPSU5UKikmcHQsICpwZHdFZmZlY3QpOwog
CiAgICAgbV9kcmFnRGF0YSA9IDA7Ci0gICAgKnBkd0VmZmVjdCA9IERST1BFRkZFQ1RfTk9ORTsK
KyAgICAqcGR3RWZmZWN0ID0gbV9sYXN0RHJvcEVmZmVjdDsKICAgICBQT0lOVEwgbG9jYWxwdCA9
IHB0OwogICAgIDo6U2NyZWVuVG9DbGllbnQobV92aWV3V2luZG93LCAoTFBQT0lOVCkmbG9jYWxw
dCk7CiAgICAgRHJhZ0RhdGEgZGF0YShwRGF0YU9iamVjdCwgSW50UG9pbnQobG9jYWxwdC54LCBs
b2NhbHB0LnkpLCAKSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViVmlldy5oCShyZXZpc2lvbiA0ODMyNSkKKysrIFdlYktpdC93aW4vV2ViVmll
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUu
aCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9EcmFn
QWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVGltZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VMaXN0ZW5lci5oPgpA
QCAtODQ4LDYgKzg0OSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRJbnRvQmFja2luZ1N0
b3JlKFdlYkNvcmU6OkZyYW1lVmlldyosIEhEQyBiaXRtYXBEQywgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZGlydHlSZWN0LCBXaW5kb3dzVG9QYWludCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5n
U3RvcmUoV2ViQ29yZTo6RnJhbWVWaWV3KiwgSERDID0gMCwgYm9vbCBiYWNraW5nU3RvcmVDb21w
bGV0ZWx5RGlydHkgPSBmYWxzZSwgV2luZG93c1RvUGFpbnQgPSBQYWludFdlYlZpZXdPbmx5KTsK
IAorICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdP
UkQgZ3JmS2V5U3RhdGUpOworICAgIAorICAgIC8vIEZJWE1FOiBUaGlzIHZhcmlhYmxlIGlzIHBh
cnQgb2YgYSB3b3JrYXJvdW5kLiBUaGUgZHJvcCBlZmZlY3QgKHBkd0VmZmVjdCkgcGFzc2VkIHRv
IERyb3AgaXMgaW5jb3JyZWN0LiAKKyAgICAvLyBXZSBzZXQgdGhpcyB2YXJpYWJsZSBpbiBEcmFn
RW50ZXIgYW5kIERyYWdPdmVyIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gRHJvcCB0byBzZXQg
dGhlIGNvcnJlY3QgZHJvcCBlZmZlY3QuIAorICAgIC8vIFRodXMsIG9uIHJldHVybiBmcm9tIERv
RHJhZ0Ryb3Agd2UgaGF2ZSB0aGUgY29ycmVjdCBwZHdFZmZlY3QgZm9yIHRoZSBkcmFnLWFuZC1k
cm9wIG9wZXJhdGlvbi4KKyAgICBEV09SRCBtX2xhc3REcm9wRWZmZWN0OworCiBwcm90ZWN0ZWQ6
CiAgICAgSElNQyBnZXRJTU1Db250ZXh0KCk7CiAgICAgdm9pZCByZWxlYXNlSU1NQ29udGV4dChI
SU1DKTsKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cAkocmV2aXNpb24gNDgzMjUpCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTYgKzE1NiwyNiBAQCB2b2lkIFdlYkRy
YWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSCiAKICAgICAgICAgLy9GSVhNRTogRW5zdXJl
IGNvcnJlY3QgZHJhZyBvcHMgYXJlIGF2YWlsYWJsZSA8cmRhcjovL3Byb2JsZW0vNTAxNTk1Nz4K
ICAgICAgICAgRFdPUkQgb2tFZmZlY3QgPSBEUk9QRUZGRUNUX0NPUFkgfCBEUk9QRUZGRUNUX0xJ
TksgfCBEUk9QRUZGRUNUX01PVkU7Ci0gICAgICAgIERXT1JEIGVmZmVjdDsKKyAgICAgICAgRFdP
UkQgZWZmZWN0ID0gRFJPUEVGRkVDVF9OT05FOwogICAgICAgICBDT01QdHI8SVdlYlVJRGVsZWdh
dGU+IHVpOworICAgICAgICBib29sIGlzVUlEZWxlZ2F0ZSA9IGZhbHNlOwogICAgICAgICBpZiAo
U1VDQ0VFREVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgmdWkpKSkgewogICAgICAgICAgICAgQ09N
UHRyPElXZWJVSURlbGVnYXRlUHJpdmF0ZT4gdWlQcml2YXRlOwogICAgICAgICAgICAgaWYgKFNV
Q0NFRURFRCh1aS0+UXVlcnlJbnRlcmZhY2UoSUlEX0lXZWJVSURlbGVnYXRlUHJpdmF0ZSwgKHZv
aWQqKikmdWlQcml2YXRlKSkpCiAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRCh1aVByaXZh
dGUtPmRvRHJhZ0Ryb3AobV93ZWJWaWV3LCBkYXRhT2JqZWN0LmdldCgpLCBzb3VyY2UuZ2V0KCks
IG9rRWZmZWN0LCAmZWZmZWN0KSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAgICAgaXNVSURlbGVnYXRlID0gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAg
IERvRHJhZ0Ryb3AoZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVjdCwgJmVm
ZmVjdCk7CisgICAgICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5v
bmU7CisgICAgICAgIGlmIChpc1VJRGVsZWdhdGUgfHwgRG9EcmFnRHJvcChkYXRhT2JqZWN0Lmdl
dCgpLCBzb3VyY2UuZ2V0KCksIG9rRWZmZWN0LCAmZWZmZWN0KSA9PSBEUkFHRFJPUF9TX0RST1Ap
IHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QgJiBEUk9QRUZGRUNUX0NPUFkpCisgICAgICAgICAg
ICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgICAgICBlbHNlIGlm
IChlZmZlY3QgJiBEUk9QRUZGRUNUX0xJTkspCisgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0g
RHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgICAgICBlbHNlIGlmIChlZmZlY3QgJiBEUk9QRUZG
RUNUX01PVkUpCisgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk1vdmU7
CisgICAgICAgIH0KKyAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5k
ZWRBdChnZW5lcmF0ZU1vdXNlRXZlbnQobV93ZWJWaWV3LCBmYWxzZSksIG9wZXJhdGlvbik7CiAg
ICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39570</attachid>
            <date>2009-09-14 13:15:42 -0700</date>
            <delta_ts>2009-09-14 17:50:33 -0700</delta_ts>
            <desc>Patch with test case</desc>
            <filename>091409_1.patch</filename>
            <type>text/plain</type>
            <size>21302</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA0ODM2MikKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDktMTQgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAg
ICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAg
ICAgSW1wbGVtZW50cyBzdXBwb3J0IGZvciBESFRNTCBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMg
KGkuZS4gb25kcmFnc3RhcnQsIG9uZHJhZ2VuZCkKKyAgICAgICAgaW4gdGhlIFdpbmRvd3MgYnVp
bGQgc28gdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgTWFjIE9TIFggYnVpbGQuIEhlbmNlLCBkcm9w
RWZmZWN0IGlzCisgICAgICAgIGNvcnJlY3RseSBzZXQuCisgICAgICAgIAorICAgICAgICBUaGUg
V2ViVmlldyBhbmQgV2ViRHJvcFNvdXJjZSBkcmFnLWFuZC1kcm9wIGZ1bmN0aW9ucywgYXMgY2Fs
bGVkIGJ5IGZ1bmN0aW9uCisgICAgICAgIERvRHJhZ0Ryb3AgaW4gaXRzIGV2ZW50IGxvb3AsIG5l
aXRoZXIgdXNlZCB0aGUgZHJvcCBlZmZlY3QgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IG5vciByZXNwZWN0ZWQgZXZlbnQuZGF0YVRyYW5zZmVy
LmVmZmVjdHNBbGxvd2VkLgorICAgICAgICBJbnN0ZWFkLCB0aGVzZSBmdW5jdGlvbnMgZGVmYXVs
dGVkIHRvIHNvbWUgaGFyZGNvZGVkIGRyb3AgZWZmZWN0IGFuZCBzZXQgb2YKKyAgICAgICAgYWxs
b3dlZCBkcm9wIGVmZmVjdHMsIHJlc3BlY3RpdmVseS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFn
KToKKyAgICAgICAgKiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRyb3BTb3VyY2U6
OlF1ZXJ5Q29udGludWVEcmFnKTogTW92ZWQgY2FsbCB0byBFdmVudEhhbmRsZXI6OmRyYWdTb3Vy
Y2VFbmRlZEF0CisgICAgICAgIGludG8gbWV0aG9kIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZy4K
KyAgICAgICAgKiBXZWJEcm9wU291cmNlLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbik6IERldGVybWluZXMgYXBwcm9w
cmlhdGUgZHJvcCBlZmZlY3QgZnJvbSBzdGF0ZQorICAgICAgICBvZiBrZXlib2FyZCBhbmQgYWxs
b3dlZCBlZmZlY3RzIHxvcGVyYXRpb258LgorICAgICAgICAoV2ViVmlldzo6RHJhZ0VudGVyKToK
KyAgICAgICAgKFdlYlZpZXc6OkRyYWdPdmVyKToKKyAgICAgICAgKFdlYlZpZXc6OkRyb3ApOgor
ICAgICAgICAqIFdlYlZpZXcuaDogQWRkZWQgZmllbGQgbV9sYXN0RHJvcEVmZmVjdC4gRXhwb3Nl
ZCBtZXRob2QgV2ViVmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24uCisKIDIwMDktMDktMTEg
IFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCShyZXZpc2lvbiA0ODMy
NSkKKysrIFdlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCiAjaW5jbHVkZSA8V2luZG93cy5oPgpAQCAtMTA2LDEwICsxMDUsNiBAQCBTVERNRVRIT0RJ
TVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlDb250aW51CiB7CiAgICAgaWYgKGZFc2NhcGVQcmVzc2Vk
IHx8ICEoZ3JmS2V5U3RhdGUgJiAoTUtfTEJVVFRPTnxNS19SQlVUVE9OKSkpIHsKICAgICAgICAg
bV9kcm9wcGVkID0gIWZFc2NhcGVQcmVzc2VkOwotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1f
d2ViVmlldy0+cGFnZSgpKQotICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1h
aW5GcmFtZSgpKSAKLSAgICAgICAgICAgICAgICAvL0ZJWE1FOiBXZSBuZWVkIHRvIGZpZ3VyZSBv
dXQgaG93IHRvIGZpbmQgb3V0IHdoYXQgYWN0dWFsbHkgaGFwcGVuZWQgaW4gdGhlIGRyYWcgPHJk
YXI6Ly9wcm9ibGVtLzUwMTU5NjE+Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5kcmFnU291cmNlRW5kZWRBdChnZW5lcmF0ZU1vdXNlRXZlbnQobV93ZWJWaWV3LmdldCgp
LCBmYWxzZSksIGZFc2NhcGVQcmVzc2VkID8gRHJhZ09wZXJhdGlvbk5vbmUgOiBEcmFnT3BlcmF0
aW9uQ29weSk7CiAgICAgICAgIHJldHVybiBmRXNjYXBlUHJlc3NlZD8gRFJBR0RST1BfU19DQU5D
RUwgOiBEUkFHRFJPUF9TX0RST1A7CiAgICAgfSBlbHNlIGlmIChQYWdlKiBwYWdlID0gbV93ZWJW
aWV3LT5wYWdlKCkpCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUo
KSkgCkluZGV4OiBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkRyb3BTb3VyY2UuaAkocmV2aXNpb24gNDgzMjUpCisrKyBXZWJLaXQvd2luL1dl
YkRyb3BTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsMTIgQEAKICNpbmNsdWRl
ICJDT01QdHIuaCIKICNpbmNsdWRlIDxvYmppZGwuaD4KIAorI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1Nb3VzZUV2ZW50Lmg+CisKIGNsYXNzIFdlYlZpZXc7CiAKK1dlYkNvcmU6OlBsYXRmb3Jt
TW91c2VFdmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2ViVmlldyogd2ViVmlldywgYm9vbCBpc0Ry
YWcpOworCiBjbGFzcyBXZWJEcm9wU291cmNlIDogcHVibGljIElEcm9wU291cmNlCiB7CiBwdWJs
aWM6CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDQ4MzI1KQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDU2NiwxMSArNDU2NiwzMCBAQCBzdGF0aWMgRFdPUkQgZHJh
Z09wZXJhdGlvblRvRHJhZ0N1cnNvcihECiAgICAgcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIERy
YWdPcGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQpIHsKLSAgICAvL0ZJWE1F
OiBUaGlzIGlzIGN1cnJlbnRseSB2ZXJ5IHNpbXBsZSwgaXQgbWF5IG5lZWQgdG8gYWN0dWFsbHkK
LSAgICAvL3dvcmsgb3V0IGFuIGFwcHJvcHJpYXRlIERyYWdPcGVyYXRpb24gaW4gZnV0dXJlIC0t
IGhvd2V2ZXIgdGhpcwotICAgIC8vYmVoYXZpb3VyIGFwcGVhcnMgdG8gbWF0Y2ggRmlyZUZveAot
ICAgIHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0
aW9uTGluayk7CitEcmFnT3BlcmF0aW9uIFdlYlZpZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0aW9u
KERXT1JEIGdyZktleVN0YXRlKSB7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uTm9uZTsKKworICAgIC8vIENvbmZvcm1zIHRvIE1pY3Jvc29mdCdzIGtleSBj
b21iaW5hdGlvbnMgYXMgZG9jdW1lbnRlZCBmb3IgCisgICAgLy8gSURyb3BUYXJnZXQ6OkRyYWdP
dmVyLiBTZWU6CisgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5
L21zNjgwMTI5KFZTLjg1KS5hc3B4CisgICAgLy8KKyAgICAvLyBCeSBkZWZhdWx0LCB3ZSByZXR1
cm4gdGhlIHNvdXJjZSBkcmFnIG9wZXJhdGlvbiB0byBjb25mb3JtIHdpdGggdGhlIE1hYyBPUyBY
IGJ1aWxkLgorICAgIAorICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gbV9wYWdlLT5kcmFn
Q29udHJvbGxlcigpLT5zb3VyY2VEcmFnT3BlcmF0aW9uKCk7CisgICAgaWYgKG9wZXJhdGlvbiA9
PSBEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICAgICAgb3BlcmF0aW9uID0gKERyYWdPcGVyYXRpb24p
KERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbkNvcHkpOworCisgICAgaWYgKChn
cmZLZXlTdGF0ZSAmIChNS19DT05UUk9MIHwgTUtfU0hJRlQpKSA9PSAoTUtfQ09OVFJPTCB8IE1L
X1NISUZUKSkKKyAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgaWYg
KChncmZLZXlTdGF0ZSAmIE1LX0NPTlRST0wpID09IE1LX0NPTlRST0wpCisgICAgICAgIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgIGlmICgoZ3JmS2V5U3RhdGUgJiBNS19TSElG
VCkgPT0gTUtfU0hJRlQpCisgICAgICAgIG9wZXJhdGlvbiA9IChEcmFnT3BlcmF0aW9uKShEcmFn
T3BlcmF0aW9uTW92ZSB8IERyYWdPcGVyYXRpb25HZW5lcmljKTsKKworICAgIGlmICgob3BlcmF0
aW9uICYgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLT5zb3VyY2VEcmFnT3BlcmF0aW9uKCkpICE9
IG9wZXJhdGlvbikKKyAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAg
cmV0dXJuIG9wZXJhdGlvbjsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpEcmFnRW50ZXIoCkBAIC00NTg3LDYgKzQ2MDYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OkRyYWdFCiAgICAgICAgIEludFBvaW50KHB0LngsIHB0LnkpLCBrZXlTdGF0
ZVRvRHJhZ09wZXJhdGlvbihncmZLZXlTdGF0ZSkpOwogICAgICpwZHdFZmZlY3QgPSBkcmFnT3Bl
cmF0aW9uVG9EcmFnQ3Vyc29yKG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ0VudGVyZWQo
JmRhdGEpKTsKIAorICAgIG1fbGFzdERyb3BFZmZlY3QgPSAqcGR3RWZmZWN0OwogICAgIG1fZHJh
Z0RhdGEgPSBwRGF0YU9iamVjdDsKIAogICAgIHJldHVybiBTX09LOwpAQCAtNDYwNyw2ICs0NjI3
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpEcmFnTwogICAgIH0gZWxz
ZQogICAgICAgICAqcGR3RWZmZWN0ID0gRFJPUEVGRkVDVF9OT05FOwogCisgICAgbV9sYXN0RHJv
cEVmZmVjdCA9ICpwZHdFZmZlY3Q7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ2MzEsNyAr
NDY1Miw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJvcCgKICAgICAg
ICAgbV9kcm9wVGFyZ2V0SGVscGVyLT5Ecm9wKHBEYXRhT2JqZWN0LCAoUE9JTlQqKSZwdCwgKnBk
d0VmZmVjdCk7CiAKICAgICBtX2RyYWdEYXRhID0gMDsKLSAgICAqcGR3RWZmZWN0ID0gRFJPUEVG
RkVDVF9OT05FOworICAgICpwZHdFZmZlY3QgPSBtX2xhc3REcm9wRWZmZWN0OwogICAgIFBPSU5U
TCBsb2NhbHB0ID0gcHQ7CiAgICAgOjpTY3JlZW5Ub0NsaWVudChtX3ZpZXdXaW5kb3csIChMUFBP
SU5UKSZsb2NhbHB0KTsKICAgICBEcmFnRGF0YSBkYXRhKHBEYXRhT2JqZWN0LCBJbnRQb2ludChs
b2NhbHB0LngsIGxvY2FscHQueSksIApJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDQ4MzI1KQorKysgV2ViS2l0
L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAKKyNpbmNsdWRlIDxX
ZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVzc2FnZUxp
c3RlbmVyLmg+CkBAIC04NDgsNiArODQ5LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludElu
dG9CYWNraW5nU3RvcmUoV2ViQ29yZTo6RnJhbWVWaWV3KiwgSERDIGJpdG1hcERDLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QsIFdpbmRvd3NUb1BhaW50KTsKICAgICB2b2lkIHVw
ZGF0ZUJhY2tpbmdTdG9yZShXZWJDb3JlOjpGcmFtZVZpZXcqLCBIREMgPSAwLCBib29sIGJhY2tp
bmdTdG9yZUNvbXBsZXRlbHlEaXJ0eSA9IGZhbHNlLCBXaW5kb3dzVG9QYWludCA9IFBhaW50V2Vi
Vmlld09ubHkpOwogCisgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBrZXlTdGF0ZVRvRHJhZ09w
ZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSk7CisgICAgCisgICAgLy8gRklYTUU6IFRoaXMgdmFy
aWFibGUgaXMgcGFydCBvZiBhIHdvcmthcm91bmQuIFRoZSBkcm9wIGVmZmVjdCAocGR3RWZmZWN0
KSBwYXNzZWQgdG8gRHJvcCBpcyBpbmNvcnJlY3QuIAorICAgIC8vIFdlIHNldCB0aGlzIHZhcmlh
YmxlIGluIERyYWdFbnRlciBhbmQgRHJhZ092ZXIgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBE
cm9wIHRvIHNldCB0aGUgY29ycmVjdCBkcm9wIGVmZmVjdC4gCisgICAgLy8gVGh1cywgb24gcmV0
dXJuIGZyb20gRG9EcmFnRHJvcCB3ZSBoYXZlIHRoZSBjb3JyZWN0IHBkd0VmZmVjdCBmb3IgdGhl
IGRyYWctYW5kLWRyb3Agb3BlcmF0aW9uLgorICAgIERXT1JEIG1fbGFzdERyb3BFZmZlY3Q7CisK
IHByb3RlY3RlZDoKICAgICBISU1DIGdldElNTUNvbnRleHQoKTsKICAgICB2b2lkIHJlbGVhc2VJ
TU1Db250ZXh0KEhJTUMpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuY3BwCShyZXZpc2lvbiA0ODMyNSkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NiwxNiArMTU2LDI2IEBA
IHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFnZVIKIAogICAgICAgICAvL0ZJ
WE1FOiBFbnN1cmUgY29ycmVjdCBkcmFnIG9wcyBhcmUgYXZhaWxhYmxlIDxyZGFyOi8vcHJvYmxl
bS81MDE1OTU3PgogICAgICAgICBEV09SRCBva0VmZmVjdCA9IERST1BFRkZFQ1RfQ09QWSB8IERS
T1BFRkZFQ1RfTElOSyB8IERST1BFRkZFQ1RfTU9WRTsKLSAgICAgICAgRFdPUkQgZWZmZWN0Owor
ICAgICAgICBEV09SRCBlZmZlY3QgPSBEUk9QRUZGRUNUX05PTkU7CiAgICAgICAgIENPTVB0cjxJ
V2ViVUlEZWxlZ2F0ZT4gdWk7CisgICAgICAgIGJvb2wgaXNVSURlbGVnYXRlID0gZmFsc2U7CiAg
ICAgICAgIGlmIChTVUNDRUVERUQobV93ZWJWaWV3LT51aURlbGVnYXRlKCZ1aSkpKSB7CiAgICAg
ICAgICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGVQcml2YXRlPiB1aVByaXZhdGU7CiAgICAgICAg
ICAgICBpZiAoU1VDQ0VFREVEKHVpLT5RdWVyeUludGVyZmFjZShJSURfSVdlYlVJRGVsZWdhdGVQ
cml2YXRlLCAodm9pZCoqKSZ1aVByaXZhdGUpKSkKICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VF
REVEKHVpUHJpdmF0ZS0+ZG9EcmFnRHJvcChtX3dlYlZpZXcsIGRhdGFPYmplY3QuZ2V0KCksIHNv
dXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICBpc1VJRGVsZWdhdGUgPSB0cnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgRG9EcmFnRHJvcChkYXRhT2JqZWN0LmdldCgpLCBzb3VyY2UuZ2V0KCksIG9r
RWZmZWN0LCAmZWZmZWN0KTsKKyAgICAgICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBEcmFn
T3BlcmF0aW9uTm9uZTsKKyAgICAgICAgaWYgKGlzVUlEZWxlZ2F0ZSB8fCBEb0RyYWdEcm9wKGRh
dGFPYmplY3QuZ2V0KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpID09IERSQUdE
Uk9QX1NfRFJPUCkgeworICAgICAgICAgICAgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfQ09QWSkK
KyAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfTElOSykKKyAgICAgICAgICAgICAgICBv
cGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVmZmVj
dCAmIERST1BFRkZFQ1RfTU9WRSkKKyAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3Bl
cmF0aW9uTW92ZTsKKyAgICAgICAgfQorICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmRy
YWdTb3VyY2VFbmRlZEF0KGdlbmVyYXRlTW91c2VFdmVudChtX3dlYlZpZXcsIGZhbHNlKSwgb3Bl
cmF0aW9uKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ4MzYyKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDkt
MTQgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNDczMQorICAgICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0v
NTAxNTk2MQorICAgICAgICAKKyAgICAgICAgVGVzdHMgdGhhdCBESFRNTCBkcmFnLWFuZC1kcm9w
IHdvcmtzIGNvcnJlY3RseS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3At
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9w
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDA5LTA5
LTE0ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
ZHJhZy1hbmQtZHJvcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZHJhZy1hbmQtZHJvcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMTMgQEAKK1JlbWFya3M6CisKK1RoaXMgdGVzdCBqdXN0IHJlcG9ydHMg
d2hldGhlciB0aGUgY2hvc2VuIGRyb3BFZmZlY3QgbWF0Y2hlZC9taXNtYXRjaGVkIHdoYXQgdGhl
IGJyb3dzZXIgY2hvc2UgYXMgdGhlIGRyb3AgZWZmZWN0IHdpdGggcmVzcGVjdCB0byB0aGUgY2hv
c2VuIGVmZmVjdEFsbG93ZWQuCisKK1lvdSBuZWVkIHRvIGNvbXBhcmUgdGhlc2UgcmVzdWx0cyB0
byB0aGUgSFRNTCA1IHNwZWMgdG8gdmVyaWZ5IHdoZXRoZXIgYSBtYXRjaC9taXN0bWF0Y2ggaXMg
Y29ycmVjdCBmb3IgdGhlIGNob3NlbiBkcm9wRWZmZWN0IGFuZCBlZmZlY3RBbGxvd2VkLgorCitl
ZmZlY3RBbGxvd2VkICAKKworRHJvcCB0aGUgcmVkIHNxdWFyZSBvbnRvIG1lLgorCitFeHBlY3Rz
IGRyb3BFZmZlY3QgCitJdGVtcyB0aGF0IGNhbiBiZSBkcmFnZ2VkIHRvIHRoZSBkcm9wIHRhcmdl
dDoKKworU3F1YXJlCisoZWZmZWN0QWxsb3dlZDogdW5pbml0aWFsaXplZCwgZHJvcEVmZmVjdDog
bm9uZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RBbGxvd2VkOiB1bmluaXRpYWxp
emVkLCBkcm9wRWZmZWN0OiBjb3B5KSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKKworKGVmZmVjdEFs
bG93ZWQ6IHVuaW5pdGlhbGl6ZWQsIGRyb3BFZmZlY3Q6IG1vdmUpID0+IE1hdGNoZWQgZHJvcEVm
ZmVjdAorCisoZWZmZWN0QWxsb3dlZDogdW5pbml0aWFsaXplZCwgZHJvcEVmZmVjdDogbGluaykg
PT4gTWF0Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RBbGxvd2VkOiB1bmluaXRpYWxpemVkLCBk
cm9wRWZmZWN0OiBkdW1teSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVm
ZmVjdDogZHVtbXksIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dlZDog
bm9uZSwgZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RB
bGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBjb3B5KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3Qg
KHVzZXIgY2hvc2UgZWZmZWN0OiBjb3B5LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKKworKGVm
ZmVjdEFsbG93ZWQ6IG5vbmUsIGRyb3BFZmZlY3Q6IG1vdmUpID0+IE1pc21hdGNoZWQgZHJvcEVm
ZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IG1vdmUsIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQor
CisoZWZmZWN0QWxsb3dlZDogbm9uZSwgZHJvcEVmZmVjdDogbGluaykgPT4gTWlzbWF0Y2hlZCBk
cm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogbGluaywgYWN0dWFsIGVmZmVjdCB3YXM6IG5v
bmUpCisKKyhlZmZlY3RBbGxvd2VkOiBub25lLCBkcm9wRWZmZWN0OiBkdW1teSkgPT4gTWlzbWF0
Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogZHVtbXksIGFjdHVhbCBlZmZlY3Qg
d2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dlZDogYWxsLCBkcm9wRWZmZWN0OiBub25lKSA9PiBN
YXRjaGVkIGRyb3BFZmZlY3QKKworKGVmZmVjdEFsbG93ZWQ6IGFsbCwgZHJvcEVmZmVjdDogY29w
eSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RBbGxvd2VkOiBhbGwsIGRyb3BFZmZl
Y3Q6IG1vdmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCisoZWZmZWN0QWxsb3dlZDogYWxsLCBk
cm9wRWZmZWN0OiBsaW5rKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKKworKGVmZmVjdEFsbG93ZWQ6
IGFsbCwgZHJvcEVmZmVjdDogZHVtbXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBj
aG9zZSBlZmZlY3Q6IGR1bW15LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKKworKGVmZmVjdEFs
bG93ZWQ6IGNvcHksIGRyb3BFZmZlY3Q6IG5vbmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCiso
ZWZmZWN0QWxsb3dlZDogY29weSwgZHJvcEVmZmVjdDogY29weSkgPT4gTWF0Y2hlZCBkcm9wRWZm
ZWN0CisKKyhlZmZlY3RBbGxvd2VkOiBjb3B5LCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBNaXNtYXRj
aGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBtb3ZlLCBhY3R1YWwgZWZmZWN0IHdh
czogbm9uZSkKKworKGVmZmVjdEFsbG93ZWQ6IGNvcHksIGRyb3BFZmZlY3Q6IGxpbmspID0+IE1p
c21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IGxpbmssIGFjdHVhbCBlZmZl
Y3Qgd2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dlZDogY29weSwgZHJvcEVmZmVjdDogZHVtbXkp
ID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IGR1bW15LCBhY3R1
YWwgZWZmZWN0IHdhczogbm9uZSkKKworKGVmZmVjdEFsbG93ZWQ6IG1vdmUsIGRyb3BFZmZlY3Q6
IG5vbmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCisoZWZmZWN0QWxsb3dlZDogbW92ZSwgZHJv
cEVmZmVjdDogY29weSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVj
dDogY29weSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCisKKyhlZmZlY3RBbGxvd2VkOiBtb3Zl
LCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKKworKGVmZmVjdEFsbG93
ZWQ6IG1vdmUsIGRyb3BFZmZlY3Q6IGxpbmspID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNl
ciBjaG9zZSBlZmZlY3Q6IGxpbmssIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQorCisoZWZmZWN0
QWxsb3dlZDogbW92ZSwgZHJvcEVmZmVjdDogZHVtbXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVj
dCAodXNlciBjaG9zZSBlZmZlY3Q6IGR1bW15LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKKwor
KGVmZmVjdEFsbG93ZWQ6IGxpbmssIGRyb3BFZmZlY3Q6IG5vbmUpID0+IE1hdGNoZWQgZHJvcEVm
ZmVjdAorCisoZWZmZWN0QWxsb3dlZDogbGluaywgZHJvcEVmZmVjdDogY29weSkgPT4gTWlzbWF0
Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogY29weSwgYWN0dWFsIGVmZmVjdCB3
YXM6IG5vbmUpCisKKyhlZmZlY3RBbGxvd2VkOiBsaW5rLCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBN
aXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBtb3ZlLCBhY3R1YWwgZWZm
ZWN0IHdhczogbm9uZSkKKworKGVmZmVjdEFsbG93ZWQ6IGxpbmssIGRyb3BFZmZlY3Q6IGxpbmsp
ID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCisoZWZmZWN0QWxsb3dlZDogbGluaywgZHJvcEVmZmVj
dDogZHVtbXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IGR1
bW15LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKKworKGVmZmVjdEFsbG93ZWQ6IGNvcHlNb3Zl
LCBkcm9wRWZmZWN0OiBub25lKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKKworKGVmZmVjdEFsbG93
ZWQ6IGNvcHlNb3ZlLCBkcm9wRWZmZWN0OiBjb3B5KSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKKwor
KGVmZmVjdEFsbG93ZWQ6IGNvcHlNb3ZlLCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBNYXRjaGVkIGRy
b3BFZmZlY3QKKworKGVmZmVjdEFsbG93ZWQ6IGNvcHlNb3ZlLCBkcm9wRWZmZWN0OiBsaW5rKSA9
PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBsaW5rLCBhY3R1YWwg
ZWZmZWN0IHdhczogbm9uZSkKKworKGVmZmVjdEFsbG93ZWQ6IGNvcHlNb3ZlLCBkcm9wRWZmZWN0
OiBkdW1teSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogZHVt
bXksIGFjdHVhbCBlZmZlY3Qgd2FzOiBub25lKQorCisoZWZmZWN0QWxsb3dlZDogY29weUxpbmss
IGRyb3BFZmZlY3Q6IG5vbmUpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCisoZWZmZWN0QWxsb3dl
ZDogY29weUxpbmssIGRyb3BFZmZlY3Q6IGNvcHkpID0+IE1hdGNoZWQgZHJvcEVmZmVjdAorCiso
ZWZmZWN0QWxsb3dlZDogY29weUxpbmssIGRyb3BFZmZlY3Q6IG1vdmUpID0+IE1pc21hdGNoZWQg
ZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IG1vdmUsIGFjdHVhbCBlZmZlY3Qgd2FzOiBu
b25lKQorCisoZWZmZWN0QWxsb3dlZDogY29weUxpbmssIGRyb3BFZmZlY3Q6IGxpbmspID0+IE1h
dGNoZWQgZHJvcEVmZmVjdAorCisoZWZmZWN0QWxsb3dlZDogY29weUxpbmssIGRyb3BFZmZlY3Q6
IGR1bW15KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBkdW1t
eSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCisKKyhlZmZlY3RBbGxvd2VkOiBsaW5rTW92ZSwg
ZHJvcEVmZmVjdDogbm9uZSkgPT4gTWF0Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RBbGxvd2Vk
OiBsaW5rTW92ZSwgZHJvcEVmZmVjdDogY29weSkgPT4gTWlzbWF0Y2hlZCBkcm9wRWZmZWN0ICh1
c2VyIGNob3NlIGVmZmVjdDogY29weSwgYWN0dWFsIGVmZmVjdCB3YXM6IG5vbmUpCisKKyhlZmZl
Y3RBbGxvd2VkOiBsaW5rTW92ZSwgZHJvcEVmZmVjdDogbW92ZSkgPT4gTWF0Y2hlZCBkcm9wRWZm
ZWN0CisKKyhlZmZlY3RBbGxvd2VkOiBsaW5rTW92ZSwgZHJvcEVmZmVjdDogbGluaykgPT4gTWF0
Y2hlZCBkcm9wRWZmZWN0CisKKyhlZmZlY3RBbGxvd2VkOiBsaW5rTW92ZSwgZHJvcEVmZmVjdDog
ZHVtbXkpID0+IE1pc21hdGNoZWQgZHJvcEVmZmVjdCAodXNlciBjaG9zZSBlZmZlY3Q6IGR1bW15
LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKKworKGVmZmVjdEFsbG93ZWQ6IGR1bW15LCBkcm9w
RWZmZWN0OiBub25lKSA9PiBNYXRjaGVkIGRyb3BFZmZlY3QKKworKGVmZmVjdEFsbG93ZWQ6IGR1
bW15LCBkcm9wRWZmZWN0OiBjb3B5KSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVzZXIgY2hv
c2UgZWZmZWN0OiBjb3B5LCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKKworKGVmZmVjdEFsbG93
ZWQ6IGR1bW15LCBkcm9wRWZmZWN0OiBtb3ZlKSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZlY3QgKHVz
ZXIgY2hvc2UgZWZmZWN0OiBtb3ZlLCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKKworKGVmZmVj
dEFsbG93ZWQ6IGR1bW15LCBkcm9wRWZmZWN0OiBsaW5rKSA9PiBNaXNtYXRjaGVkIGRyb3BFZmZl
Y3QgKHVzZXIgY2hvc2UgZWZmZWN0OiBsaW5rLCBhY3R1YWwgZWZmZWN0IHdhczogbm9uZSkKKwor
KGVmZmVjdEFsbG93ZWQ6IGR1bW15LCBkcm9wRWZmZWN0OiBkdW1teSkgPT4gTWlzbWF0Y2hlZCBk
cm9wRWZmZWN0ICh1c2VyIGNob3NlIGVmZmVjdDogZHVtbXksIGFjdHVhbCBlZmZlY3Qgd2FzOiBu
b25lKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+
CisjZHJvcFRhcmdldCwgI2RyYWdNZSB7IHRleHQtYWxpZ246IGNlbnRlcjsgZGlzcGxheTogdGFi
bGUtY2VsbDsgdmVydGljYWwtYWxpZ246IG1pZGRsZSB9CisjZHJvcFRhcmdldCB7d2lkdGg6IDI1
NnB4OyBoZWlnaHQ6IDI1NnB4OyBib3JkZXI6IDFweCBkYXNoZWR9CisjZHJhZ01lIHstd2Via2l0
LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgYmFja2dyb3Vu
ZDogI2ZmMDAwMDsgd2lkdGg6IDY0cHg7IGhlaWdodDogNjRweDsgY29sb3I6IHdoaXRlfQorI2Nv
bnNvbGUge2hlaWdodDogMjAwcHg7IG92ZXJmbG93OiBhdXRvfQorPC9zdHlsZT4KKzxzY3JpcHQ+
CisgICAgdmFyIGRyYWdNZTsKKyAgICB2YXIgZHJvcFRhcmdldDsKKyAgICB2YXIgZWZmZWN0QWxs
b3dlZEVsZW07CisgICAgdmFyIGRyb3BFZmZlY3RFbGVtOworICAgIHZhciBjb25zb2xlRWxtOwor
ICAgIAorICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICBkcmFn
TWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgIGRyb3BUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcFRhcmdldCIpOworICAgICAgICBlZmZl
Y3RBbGxvd2VkRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZmZlY3RBbGxvd2VkIik7
CisgICAgICAgIGRyb3BFZmZlY3RFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyb3BF
ZmZlY3QiKTsKKyAgICAgICAgY29uc29sZUVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIik7CisgICAgICAgIAorICAgICAgICBpZiAoIWRyYWdNZSB8fCAhZHJvcFRhcmdldCB8
fCAhZWZmZWN0QWxsb3dlZEVsZW0gfHwgIWRyb3BFZmZlY3RFbGVtIHx8ICFjb25zb2xlRWxtKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgZHJhZ01lLm9uZHJhZ3N0YXJ0
ID0gZHJhZ1N0YXJ0OworICAgICAgICBkcmFnTWUub25kcmFnZW5kID0gZHJhZ0VuZDsKKyAgICAg
ICAgCisgICAgICAgIGRyb3BUYXJnZXQub25kcmFnZW50ZXIgPSBkcmFnRW50ZXJlZDsKKyAgICAg
ICAgZHJvcFRhcmdldC5vbmRyYWdvdmVyID0gZHJhZ092ZXI7CisgICAgICAgIAorICAgICAgICBy
dW5UZXN0KCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdTdGFydCgpCisgICAgewor
ICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWRF
bGVtLm9wdGlvbnNbZWZmZWN0QWxsb3dlZEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWU7CisgICAg
fQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbmQoKQorICAgIHsKKyAgICAgICAgY2hlY2tEcmFn
U3RhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBkcmFn
RW50ZXJlZCgpCisgICAgeworICAgICAgICBkcmFnRW50ZXJlZEFuZFVwZGF0ZWQoKTsKKyAgICB9
CisgICAgCisgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQorICAgIHsKKyAgICAgICAgZHJhZ0VudGVy
ZWRBbmRVcGRhdGVkKCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbnRlcmVkQW5k
VXBkYXRlZCgpCisgICAgeworICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9
IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFs
dWU7CisgICAgICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkKKyAgICAgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQXNzdW1l
IHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyB3aXRoaW4gSW50ZXJuZXQgRXhwbG9yZXIKKyAgICAg
ICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgZnVuY3Rpb24gY2hlY2tEcmFnU3RhdGUoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dDsKKyAgICAgICAgdmFyIHRlc3ROYW1lID0gIihlZmZlY3RBbGxvd2VkOiAiICsgZWZmZWN0QWxs
b3dlZEVsZW0ub3B0aW9uc1tlZmZlY3RBbGxvd2VkRWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZSAr
CisgICAgICAgICAgICAgICAgICAgICAgICAiLCBkcm9wRWZmZWN0OiAiICsgZHJvcEVmZmVjdEVs
ZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZSArICIpID0+ICI7
CisgICAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9PSBkcm9wRWZmZWN0
RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlKSB7CisgICAg
ICAgICAgICByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXN0TmFtZSArICJNYXRj
aGVkIGRyb3BFZmZlY3QiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRlc3ROYW1lICsgIk1pc21hdGNoZWQgZHJvcEVmZmVj
dCAodXNlciBjaG9zZSBlZmZlY3Q6ICIgKyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZl
Y3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlICsgCisgICAgICAgICAgICAgICAgIiwgYWN0dWFs
IGVmZmVjdCB3YXM6ICIgKyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCArICIpIik7Cisg
ICAgICAgIH0KKyAgICAgICAgdmFyIHBFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7
CisgICAgICAgIHBFbG0uYXBwZW5kQ2hpbGQocmVzdWx0KTsKKyAgICAgICAgY29uc29sZUVsbS5h
cHBlbmRDaGlsZChwRWxtKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisg
ICAgeworICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgCisgICAgICAgIHZhciBzdGFydFggPSBkcmFnTWUub2Zmc2V0TGVmdCArIDEwOworICAg
ICAgICB2YXIgc3RhcnRZID0gZHJhZ01lLm9mZnNldFRvcCArIGRyYWdNZS5vZmZzZXRIZWlnaHQg
LyAyOworICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zmc2V0TGVmdCArIDEwOworICAg
ICAgICB2YXIgZW5kWSA9IGRyb3BUYXJnZXQub2Zmc2V0VG9wICsgZHJvcFRhcmdldC5vZmZzZXRI
ZWlnaHQgLyAyOworICAgICAgICAKKyAgICAgICAgdmFyIG51bUVmZmVjdEFsbG93ZWQgPSBlZmZl
Y3RBbGxvd2VkRWxlbS5vcHRpb25zLmxlbmd0aDsKKyAgICAgICAgdmFyIG51bUVmZmVjdHMgPSBk
cm9wRWZmZWN0RWxlbS5vcHRpb25zLmxlbmd0aDsKKyAgICAgICAgCisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbnVtRWZmZWN0QWxsb3dlZDsgKytpKSB7CisgICAgICAgICAgICBlZmZlY3RB
bGxvd2VkRWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgbnVtRWZmZWN0czsgKytqKSB7CisgICAgICAgICAgICAgICAgZHJvcEVm
ZmVjdEVsZW0ub3B0aW9uc1tqXS5zZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBG
b3J3YXJkKDEwMCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5k
WCwgZW5kWSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8aDM+UmVtYXJrczo8L2gzPgorICAgIDxwPlRoaXMgdGVzdCBqdXN0IHJlcG9ydHMgd2hldGhl
ciB0aGUgY2hvc2VuIGRyb3BFZmZlY3QgbWF0Y2hlZC9taXNtYXRjaGVkIHdoYXQgdGhlIGJyb3dz
ZXIgY2hvc2UgYXMgdGhlIGRyb3AgZWZmZWN0IHdpdGggcmVzcGVjdCB0byB0aGUgY2hvc2VuIGVm
ZmVjdEFsbG93ZWQuPC9wPgorICAgIDxwPllvdSBuZWVkIHRvIGNvbXBhcmUgdGhlc2UgcmVzdWx0
cyB0byB0aGUgSFRNTCA1IHNwZWMgdG8gdmVyaWZ5IHdoZXRoZXIgYSBtYXRjaC9taXN0bWF0Y2gg
aXMgY29ycmVjdCBmb3IgdGhlIGNob3NlbiBkcm9wRWZmZWN0IGFuZCBlZmZlY3RBbGxvd2VkLjwv
cD4KKyAgICA8aHIvPgorICAgIDxsYWJlbCBmb3I9ImVmZmVjdEFsbG93ZWQiPmVmZmVjdEFsbG93
ZWQ8L2xhYmVsPiA8c2VsZWN0IGlkPSJlZmZlY3RBbGxvd2VkIj4KKyAgICAgICAgPG9wdGlvbiB2
YWx1ZT0idW5pbml0aWFsaXplZCI+VW5pbml0aWFsaXplZDwvb3B0aW9uPgorICAgICAgICA8b3B0
aW9uIHZhbHVlPSJub25lIj5Ob25lPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9ImFs
bCI+QWxsPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9ImNvcHkiPkNvcHk8L29wdGlv
bj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW92ZSI+TW92ZTwvb3B0aW9uPgorICAgICAgICA8
b3B0aW9uIHZhbHVlPSJsaW5rIj5MaW5rPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9
ImNvcHlNb3ZlIj5Db3B5TW92ZTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5
TGluayI+Q29weUxpbms8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGlua01vdmUi
PkxpbmtNb3ZlPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9ImR1bW15Ij5Ob25leGlz
dGVudCAoRHVtbXkpIEVmZmVjdDwvb3B0aW9uPgorICAgIDwvc2VsZWN0PgorICAgIDxici8+PGJy
Lz4KKyAgICA8ZGl2IGlkPSJkcm9wVGFyZ2V0Ij5Ecm9wIHRoZSByZWQgc3F1YXJlIG9udG8gbWUu
PGJyLz48YnIvPgorICAgICAgICA8bGFiZWwgZm9yPSJkcm9wRWZmZWN0Ij5FeHBlY3RzIGRyb3BF
ZmZlY3Q8L2xhYmVsPiA8c2VsZWN0IGlkPSJkcm9wRWZmZWN0Ij4KKyAgICAgICAgICAgIDxvcHRp
b24gdmFsdWU9Im5vbmUiPk5vbmU8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9
ImNvcHkiPkNvcHk8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im1vdmUiPk1v
dmU8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImxpbmsiPkxpbms8L29wdGlv
bj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImR1bW15Ij5Ob25leGlzdGVudCAoRHVtbXkp
IEVmZmVjdDwvb3B0aW9uPgorICAgICAgICA8L3NlbGVjdD4KKyAgICA8L2Rpdj4KKyAgICA8aHIv
PgorICAgIDxwPkl0ZW1zIHRoYXQgY2FuIGJlIGRyYWdnZWQgdG8gdGhlIGRyb3AgdGFyZ2V0Ojwv
cD4KKyAgICA8ZGl2IGlkPSJkcmFnTWUiPlNxdWFyZTwvZGl2PgorICAgIDxoci8+CisgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vU2tpcHBlZAkocmV2aXNpb24gNDgzMjUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw5IEBAIGVkaXRpbmcvc2Vs
ZWN0aW9uL2RyYWctaW4taWZyYW1lLmh0bWwKIGZhc3QvZXZlbnRzL2RyYWctaW4tZnJhbWVzLmh0
bWwKIGZhc3QvZXZlbnRzL3N0YW5kYWxvbmUtaW1hZ2UtZHJhZy10by1lZGl0YWJsZS5odG1sCiAK
KyMgV2luZG93cyBEUlQgZHJhZy1hbmQtZHJvcCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSAoaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTAyKQorZmFzdC9ldmVudHMv
ZHJhZy1hbmQtZHJvcC5odG1sCisKICMgPHJkYXI6Ly9wcm9ibGVtLzU2NDM2NzU+IHdpbmRvdy5z
Y3JvbGxUbyBzY3JvbGxzIGEgd2luZG93IHdpdGggbm8gc2Nyb2xsYmFycwogZmFzdC9ldmVudHMv
YXR0ZW1wdC1zY3JvbGwtd2l0aC1uby1zY3JvbGxiYXJzLmh0bWwKIAo=
</data>
<flag name="review"
          id="20673"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39581</attachid>
            <date>2009-09-14 17:50:33 -0700</date>
            <delta_ts>2009-09-14 17:54:54 -0700</delta_ts>
            <desc>Patch with test case</desc>
            <filename>091409_2.patch</filename>
            <type>text/plain</type>
            <size>21443</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA0ODM2MikKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDktMTQgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAg
ICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAg
ICAgSW1wbGVtZW50cyBzdXBwb3J0IGZvciBESFRNTCBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMg
KGkuZS4gb25kcmFnc3RhcnQsIG9uZHJhZ2VuZCkKKyAgICAgICAgaW4gdGhlIFdpbmRvd3MgYnVp
bGQgc28gdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgTWFjIE9TIFggYnVpbGQuIEhlbmNlLCBkcm9w
RWZmZWN0IGlzCisgICAgICAgIGNvcnJlY3RseSBzZXQuCisgICAgICAgIAorICAgICAgICBUaGUg
V2ViVmlldyBhbmQgV2ViRHJvcFNvdXJjZSBkcmFnLWFuZC1kcm9wIGZ1bmN0aW9ucywgYXMgY2Fs
bGVkIGJ5IGZ1bmN0aW9uCisgICAgICAgIERvRHJhZ0Ryb3AgaW4gaXRzIGV2ZW50IGxvb3AsIG5l
aXRoZXIgdXNlZCB0aGUgZHJvcCBlZmZlY3QgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IG5vciByZXNwZWN0ZWQgZXZlbnQuZGF0YVRyYW5zZmVy
LmVmZmVjdHNBbGxvd2VkLgorICAgICAgICBJbnN0ZWFkLCB0aGVzZSBmdW5jdGlvbnMgZGVmYXVs
dGVkIHRvIHNvbWUgaGFyZGNvZGVkIGRyb3AgZWZmZWN0IGFuZCBzZXQgb2YKKyAgICAgICAgYWxs
b3dlZCBkcm9wIGVmZmVjdHMsIHJlc3BlY3RpdmVseS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFn
KToKKyAgICAgICAgKiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRyb3BTb3VyY2U6
OlF1ZXJ5Q29udGludWVEcmFnKTogTW92ZWQgY2FsbCB0byBFdmVudEhhbmRsZXI6OmRyYWdTb3Vy
Y2VFbmRlZEF0CisgICAgICAgIGludG8gbWV0aG9kIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZy4K
KyAgICAgICAgKiBXZWJEcm9wU291cmNlLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbik6IERldGVybWluZXMgYXBwcm9w
cmlhdGUgZHJvcCBlZmZlY3QgZnJvbSBzdGF0ZQorICAgICAgICBvZiBrZXlib2FyZCBhbmQgYWxs
b3dlZCBlZmZlY3RzIHxvcGVyYXRpb258LgorICAgICAgICAoV2ViVmlldzo6RHJhZ0VudGVyKToK
KyAgICAgICAgKFdlYlZpZXc6OkRyYWdPdmVyKToKKyAgICAgICAgKFdlYlZpZXc6OkRyb3ApOgor
ICAgICAgICAqIFdlYlZpZXcuaDogQWRkZWQgZmllbGQgbV9sYXN0RHJvcEVmZmVjdC4gRXhwb3Nl
ZCBtZXRob2QgV2ViVmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24uCisKIDIwMDktMDktMTEg
IFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCShyZXZpc2lvbiA0ODMy
NSkKKysrIFdlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCiAjaW5jbHVkZSA8V2luZG93cy5oPgpAQCAtMTA2LDEwICsxMDUsNiBAQCBTVERNRVRIT0RJ
TVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlDb250aW51CiB7CiAgICAgaWYgKGZFc2NhcGVQcmVzc2Vk
IHx8ICEoZ3JmS2V5U3RhdGUgJiAoTUtfTEJVVFRPTnxNS19SQlVUVE9OKSkpIHsKICAgICAgICAg
bV9kcm9wcGVkID0gIWZFc2NhcGVQcmVzc2VkOwotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1f
d2ViVmlldy0+cGFnZSgpKQotICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1h
aW5GcmFtZSgpKSAKLSAgICAgICAgICAgICAgICAvL0ZJWE1FOiBXZSBuZWVkIHRvIGZpZ3VyZSBv
dXQgaG93IHRvIGZpbmQgb3V0IHdoYXQgYWN0dWFsbHkgaGFwcGVuZWQgaW4gdGhlIGRyYWcgPHJk
YXI6Ly9wcm9ibGVtLzUwMTU5NjE+Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5kcmFnU291cmNlRW5kZWRBdChnZW5lcmF0ZU1vdXNlRXZlbnQobV93ZWJWaWV3LmdldCgp
LCBmYWxzZSksIGZFc2NhcGVQcmVzc2VkID8gRHJhZ09wZXJhdGlvbk5vbmUgOiBEcmFnT3BlcmF0
aW9uQ29weSk7CiAgICAgICAgIHJldHVybiBmRXNjYXBlUHJlc3NlZD8gRFJBR0RST1BfU19DQU5D
RUwgOiBEUkFHRFJPUF9TX0RST1A7CiAgICAgfSBlbHNlIGlmIChQYWdlKiBwYWdlID0gbV93ZWJW
aWV3LT5wYWdlKCkpCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUo
KSkgCkluZGV4OiBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkRyb3BTb3VyY2UuaAkocmV2aXNpb24gNDgzMjUpCisrKyBXZWJLaXQvd2luL1dl
YkRyb3BTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsMTIgQEAKICNpbmNsdWRl
ICJDT01QdHIuaCIKICNpbmNsdWRlIDxvYmppZGwuaD4KIAorI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1Nb3VzZUV2ZW50Lmg+CisKIGNsYXNzIFdlYlZpZXc7CiAKK1dlYkNvcmU6OlBsYXRmb3Jt
TW91c2VFdmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2ViVmlldyogd2ViVmlldywgYm9vbCBpc0Ry
YWcpOworCiBjbGFzcyBXZWJEcm9wU291cmNlIDogcHVibGljIElEcm9wU291cmNlCiB7CiBwdWJs
aWM6CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDQ4MzI1KQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDU2NiwxMSArNDU2NiwzMSBAQCBzdGF0aWMgRFdPUkQgZHJh
Z09wZXJhdGlvblRvRHJhZ0N1cnNvcihECiAgICAgcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIERy
YWdPcGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQpIHsKLSAgICAvL0ZJWE1F
OiBUaGlzIGlzIGN1cnJlbnRseSB2ZXJ5IHNpbXBsZSwgaXQgbWF5IG5lZWQgdG8gYWN0dWFsbHkK
LSAgICAvL3dvcmsgb3V0IGFuIGFwcHJvcHJpYXRlIERyYWdPcGVyYXRpb24gaW4gZnV0dXJlIC0t
IGhvd2V2ZXIgdGhpcwotICAgIC8vYmVoYXZpb3VyIGFwcGVhcnMgdG8gbWF0Y2ggRmlyZUZveAot
ICAgIHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0
aW9uTGluayk7CitEcmFnT3BlcmF0aW9uIFdlYlZpZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0aW9u
KERXT1JEIGdyZktleVN0YXRlKSB7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uTm9uZTsKKworICAgIC8vIENvbmZvcm1zIHRvIE1pY3Jvc29mdCdzIGtleSBj
b21iaW5hdGlvbnMgYXMgZG9jdW1lbnRlZCBmb3IgCisgICAgLy8gSURyb3BUYXJnZXQ6OkRyYWdP
dmVyLiBOb3RlLCB8Z3JmS2V5U3RhdGV8IGlzIHRoZSBjdXJyZW50IAorICAgIC8vIHN0YXRlIG9m
IHRoZSBrZXlib2FyZCBtb2RpZmllciBrZXlzIG9uIHRoZSBrZXlib2FyZC4gU2VlOgorICAgIC8v
IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczY4MDEyOShWUy44NSku
YXNweAorICAgIC8vCisgICAgLy8gQnkgZGVmYXVsdCwgd2UgcmV0dXJuIHRoZSBzb3VyY2UgZHJh
ZyBvcGVyYXRpb24gdG8gY29uZm9ybSB3aXRoIHRoZSBNYWMgT1MgWCBidWlsZC4KKyAgICAKKyAg
ICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+c291
cmNlRHJhZ09wZXJhdGlvbigpOworICAgIGlmIChvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5v
bmUpCisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworCisgICAgaWYgKChn
cmZLZXlTdGF0ZSAmIChNS19DT05UUk9MIHwgTUtfU0hJRlQpKSA9PSAoTUtfQ09OVFJPTCB8IE1L
X1NISUZUKSkKKyAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgaWYg
KChncmZLZXlTdGF0ZSAmIE1LX0NPTlRST0wpID09IE1LX0NPTlRST0wpCisgICAgICAgIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgIGlmICgoZ3JmS2V5U3RhdGUgJiBNS19TSElG
VCkgPT0gTUtfU0hJRlQpCisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Nb3ZlOwor
CisgICAgaWYgKChvcGVyYXRpb24gJiBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCktPnNvdXJjZURy
YWdPcGVyYXRpb24oKSkgIT0gb3BlcmF0aW9uKQorICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3Bl
cmF0aW9uTm9uZTsKKyAgICByZXR1cm4gb3BlcmF0aW9uOwogfQogCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OkRyYWdFbnRlcigKQEAgLTQ1ODcsNiArNDYwNyw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJhZ0UKICAgICAgICAgSW50UG9pbnQocHQu
eCwgcHQueSksIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKGdyZktleVN0YXRlKSk7CiAgICAgKnBk
d0VmZmVjdCA9IGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IobV9wYWdlLT5kcmFnQ29udHJvbGxl
cigpLT5kcmFnRW50ZXJlZCgmZGF0YSkpOwogCisgICAgbV9sYXN0RHJvcEVmZmVjdCA9ICpwZHdF
ZmZlY3Q7CiAgICAgbV9kcmFnRGF0YSA9IHBEYXRhT2JqZWN0OwogCiAgICAgcmV0dXJuIFNfT0s7
CkBAIC00NjA3LDYgKzQ2MjgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OkRyYWdPCiAgICAgfSBlbHNlCiAgICAgICAgICpwZHdFZmZlY3QgPSBEUk9QRUZGRUNUX05PTkU7
CiAKKyAgICBtX2xhc3REcm9wRWZmZWN0ID0gKnBkd0VmZmVjdDsKICAgICByZXR1cm4gU19PSzsK
IH0KIApAQCAtNDYzMSw3ICs0NjUzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpEcm9wKAogICAgICAgICBtX2Ryb3BUYXJnZXRIZWxwZXItPkRyb3AocERhdGFPYmplY3Qs
IChQT0lOVCopJnB0LCAqcGR3RWZmZWN0KTsKIAogICAgIG1fZHJhZ0RhdGEgPSAwOwotICAgICpw
ZHdFZmZlY3QgPSBEUk9QRUZGRUNUX05PTkU7CisgICAgKnBkd0VmZmVjdCA9IG1fbGFzdERyb3BF
ZmZlY3Q7CiAgICAgUE9JTlRMIGxvY2FscHQgPSBwdDsKICAgICA6OlNjcmVlblRvQ2xpZW50KG1f
dmlld1dpbmRvdywgKExQUE9JTlQpJmxvY2FscHQpOwogICAgIERyYWdEYXRhIGRhdGEocERhdGFP
YmplY3QsIEludFBvaW50KGxvY2FscHQueCwgbG9jYWxwdC55KSwgCkluZGV4OiBXZWJLaXQvd2lu
L1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24g
NDgzMjUpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMu
aCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XaW5kb3dNZXNzYWdlTGlzdGVuZXIuaD4KQEAgLTg0OCw2ICs4NDksMTQgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHBhaW50SW50b0JhY2tpbmdTdG9yZShXZWJDb3JlOjpGcmFtZVZpZXcqLCBIREMg
Yml0bWFwREMsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCwgV2luZG93c1RvUGFp
bnQpOwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKFdlYkNvcmU6OkZyYW1lVmlldyosIEhE
QyA9IDAsIGJvb2wgYmFja2luZ1N0b3JlQ29tcGxldGVseURpcnR5ID0gZmFsc2UsIFdpbmRvd3NU
b1BhaW50ID0gUGFpbnRXZWJWaWV3T25seSk7CiAKKyAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
IGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKTsKKyAgICAKKyAgICAv
LyBGSVhNRTogVGhpcyB2YXJpYWJsZSBpcyBwYXJ0IG9mIGEgd29ya2Fyb3VuZC4gVGhlIGRyb3Ag
ZWZmZWN0IChwZHdFZmZlY3QpIHBhc3NlZCB0byBEcm9wIGlzIGluY29ycmVjdC4gCisgICAgLy8g
V2Ugc2V0IHRoaXMgdmFyaWFibGUgaW4gRHJhZ0VudGVyIGFuZCBEcmFnT3ZlciBzbyB0aGF0IGl0
IGNhbiBiZSB1c2VkIGluIERyb3AgdG8gc2V0IHRoZSBjb3JyZWN0IGRyb3AgZWZmZWN0LiAKKyAg
ICAvLyBUaHVzLCBvbiByZXR1cm4gZnJvbSBEb0RyYWdEcm9wIHdlIGhhdmUgdGhlIGNvcnJlY3Qg
cGR3RWZmZWN0IGZvciB0aGUgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb24uCisgICAgLy8gKHNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkyNjQpCisgICAgRFdPUkQg
bV9sYXN0RHJvcEVmZmVjdDsKKwogcHJvdGVjdGVkOgogICAgIEhJTUMgZ2V0SU1NQ29udGV4dCgp
OwogICAgIHZvaWQgcmVsZWFzZUlNTUNvbnRleHQoSElNQyk7CkluZGV4OiBXZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHJldmlzaW9uIDQ4MzI1KQorKysgV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU2LDE2ICsxNTYsMjYgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0lt
YWdlUgogCiAgICAgICAgIC8vRklYTUU6IEVuc3VyZSBjb3JyZWN0IGRyYWcgb3BzIGFyZSBhdmFp
bGFibGUgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NTc+CiAgICAgICAgIERXT1JEIG9rRWZmZWN0ID0g
RFJPUEVGRkVDVF9DT1BZIHwgRFJPUEVGRkVDVF9MSU5LIHwgRFJPUEVGRkVDVF9NT1ZFOwotICAg
ICAgICBEV09SRCBlZmZlY3Q7CisgICAgICAgIERXT1JEIGVmZmVjdCA9IERST1BFRkZFQ1RfTk9O
RTsKICAgICAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aTsKKyAgICAgICAgYm9vbCBpc1VJ
RGVsZWdhdGUgPSBmYWxzZTsKICAgICAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVs
ZWdhdGUoJnVpKSkpIHsKICAgICAgICAgICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZVByaXZhdGU+
IHVpUHJpdmF0ZTsKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQodWktPlF1ZXJ5SW50ZXJmYWNl
KElJRF9JV2ViVUlEZWxlZ2F0ZVByaXZhdGUsICh2b2lkKiopJnVpUHJpdmF0ZSkpKQogICAgICAg
ICAgICAgICAgIGlmIChTVUNDRUVERUQodWlQcml2YXRlLT5kb0RyYWdEcm9wKG1fd2ViVmlldywg
ZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCkpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIGlzVUlEZWxlZ2F0
ZSA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBEb0RyYWdEcm9wKGRhdGFPYmplY3QuZ2V0
KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOworICAgICAgICBEcmFnT3BlcmF0
aW9uIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICBpZiAoaXNVSURlbGVn
YXRlIHx8IERvRHJhZ0Ryb3AoZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVj
dCwgJmVmZmVjdCkgPT0gRFJBR0RST1BfU19EUk9QKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0
ICYgRFJPUEVGRkVDVF9DT1BZKQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVy
YXRpb25Db3B5OworICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9MSU5L
KQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAgICAg
ICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9NT1ZFKQorICAgICAgICAgICAgICAg
IG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICB9CisgICAgICAgIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1f
d2ViVmlldywgZmFsc2UpLCBvcGVyYXRpb24pOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNDgzNjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNyBAQAorMjAwOS0wOS0xNCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NzMxCisgICAgICAgIEFuZAorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81MDE1OTYxCisgICAgICAgIAorICAgICAgICBUZXN0cyB0aGF0
IERIVE1MIGRyYWctYW5kLWRyb3Agd29ya3MgY29ycmVjdGx5LgorCisgICAgICAgICogZmFzdC9l
dmVudHMvZHJhZy1hbmQtZHJvcC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2lu
L1NraXBwZWQ6CisKIDIwMDktMDktMTQgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWls
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk3IEBACitUaGlzIHRlc3QgY2hlY2tz
IHRoYXQgZHJhZy1hbmQtZHJvcCBzdXBwb3J0IHdvcmtzIGFuZCBjb25mb3JtcyB0byB0aGUgSFRN
TCA1IHNwZWNpZmljYXRpb24uCitGb3IgZWFjaCBlZmZlY3RBbGxvd2VkLCBpdGVyYXRlcyB0aHJv
dWdoIHRoZSBwb3NzaWJsZSBkcm9wRWZmZWN0czogbm9uZSwgY29weSwgbW92ZSwgbGluaywgZHVt
bXkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitlZmZlY3RBbGxvd2VkICAKKwor
RHJvcCB0aGUgcmVkIHNxdWFyZSBvbnRvIG1lLgorCitFeHBlY3RzIGRyb3BFZmZlY3QgCitJdGVt
cyB0aGF0IGNhbiBiZSBkcmFnZ2VkIHRvIHRoZSBkcm9wIHRhcmdldDoKKworU3F1YXJlCisKK1do
ZW4gZWZmZWN0QWxsb3dlZCA9PSAidW5pbml0aWFsaXplZCIKKworUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVt
LnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0u
dmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVs
ZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVu
dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BF
ZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5k
cm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQgPT0gIm5vbmUiCisKK1BB
U1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9u
c1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJu
b25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hl
biBlZmZlY3RBbGxvd2VkID09ICJhbGwiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZElu
ZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZm
ZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNb
ZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5z
ZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBp
cyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJjb3B5IgorCitQQVNTIGV2ZW50LmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVj
dEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZElu
ZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIK
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQg
PT0gIm1vdmUiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVm
ZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0
RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5v
bmUiCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAibGluayIKKworUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVt
LnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIK
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0
aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJj
b3B5TW92ZSIKKworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZm
ZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNb
ZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5z
ZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBp
cyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCisK
K1doZW4gZWZmZWN0QWxsb3dlZCA9PSAiY29weUxpbmsiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5z
ZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBp
cyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZh
bHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBl
dmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ry
b3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQgPT0gImxpbmtNb3Zl
IgorCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVt
Lm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2Vs
ZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMg
ZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1
ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hlbiBl
ZmZlY3RBbGxvd2VkID09ICJkdW1teSIKKworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5k
ZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgor
UEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0IGlzICJub25lIgorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTY4IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjZHJvcFRhcmdl
dCwgI2RyYWdNZSB7IHRleHQtYWxpZ246IGNlbnRlcjsgZGlzcGxheTogdGFibGUtY2VsbDsgdmVy
dGljYWwtYWxpZ246IG1pZGRsZSB9CisjZHJvcFRhcmdldCB7d2lkdGg6IDI1NnB4OyBoZWlnaHQ6
IDI1NnB4OyBib3JkZXI6IDFweCBkYXNoZWR9CisjZHJhZ01lIHstd2Via2l0LXVzZXItZHJhZzog
ZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgYmFja2dyb3VuZDogI2ZmMDAwMDsg
d2lkdGg6IDY0cHg7IGhlaWdodDogNjRweDsgY29sb3I6IHdoaXRlfQorPC9zdHlsZT4KKzxzY3Jp
cHQ+CisgICAgdmFyIGRyYWdNZTsKKyAgICB2YXIgZHJvcFRhcmdldDsKKyAgICB2YXIgZWZmZWN0
QWxsb3dlZEVsZW07CisgICAgdmFyIGRyb3BFZmZlY3RFbGVtOworICAgIHZhciBjb25zb2xlRWxt
OworICAgIAorICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICBk
cmFnTWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgIGRyb3BU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcFRhcmdldCIpOworICAgICAgICBl
ZmZlY3RBbGxvd2VkRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZmZlY3RBbGxvd2Vk
Iik7CisgICAgICAgIGRyb3BFZmZlY3RFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRy
b3BFZmZlY3QiKTsKKyAgICAgICAgY29uc29sZUVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIik7CisgICAgICAgIAorICAgICAgICBpZiAoIWRyYWdNZSB8fCAhZHJvcFRhcmdl
dCB8fCAhZWZmZWN0QWxsb3dlZEVsZW0gfHwgIWRyb3BFZmZlY3RFbGVtIHx8ICFjb25zb2xlRWxt
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgZHJhZ01lLm9uZHJhZ3N0
YXJ0ID0gZHJhZ1N0YXJ0OworICAgICAgICBkcmFnTWUub25kcmFnZW5kID0gZHJhZ0VuZDsKKyAg
ICAgICAgCisgICAgICAgIGRyb3BUYXJnZXQub25kcmFnZW50ZXIgPSBkcmFnRW50ZXJlZDsKKyAg
ICAgICAgZHJvcFRhcmdldC5vbmRyYWdvdmVyID0gZHJhZ092ZXI7CisgICAgICAgIAorICAgICAg
ICBydW5UZXN0KCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdTdGFydCgpCisgICAg
eworICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93
ZWRFbGVtLm9wdGlvbnNbZWZmZWN0QWxsb3dlZEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWU7Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbmQoKQorICAgIHsKKyAgICAgICAgY2hlY2tE
cmFnU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBk
cmFnRW50ZXJlZCgpCisgICAgeworICAgICAgICBkcmFnRW50ZXJlZEFuZFVwZGF0ZWQoKTsKKyAg
ICB9CisgICAgCisgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQorICAgIHsKKyAgICAgICAgZHJhZ0Vu
dGVyZWRBbmRVcGRhdGVkKCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbnRlcmVk
QW5kVXBkYXRlZCgpCisgICAgeworICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVj
dCA9IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0u
dmFsdWU7CisgICAgICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkKKyAgICAgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQXNz
dW1lIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyB3aXRoaW4gSW50ZXJuZXQgRXhwbG9yZXIKKyAg
ICAgICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgZnVuY3Rpb24gY2hlY2tEcmFnU3RhdGUoKQorICAgIHsKKwkJdmFyIGNob3NlbkRy
b3BFZmZlY3QgPSBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVk
SW5kZXhdLnZhbHVlOworCQl2YXIgY2hvc2VuRWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWRF
bGVtLm9wdGlvbnNbZWZmZWN0QWxsb3dlZEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWU7CisJCXZh
ciBhY3R1YWxEcm9wRWZmZWN0ID0gZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q7CisJCQor
CQlpZiAoaXNEcm9wRWZmZWN0QWxsb3dlZChjaG9zZW5Ecm9wRWZmZWN0LCBjaG9zZW5FZmZlY3RB
bGxvd2VkKSkKKwkJCXNob3VsZEV2YWx1YXRlVG8oJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZm
ZWN0JywgJ2Ryb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRl
eF0udmFsdWUnKTsKKwkJZWxzZQorCQkJc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCcsICdub25lJyk7CisJCQkKKyAgICB9CisgICAgCisJZnVuY3Rp
b24gaXNEcm9wRWZmZWN0QWxsb3dlZChjaG9zZW5Ecm9wRWZmZWN0LCBhbGxvd2VkRHJvcEVmZmVj
dCkgeworCQkvLyBFeHRyYWN0ZWQgZnJvbSB0aGUgSFRNTCA1IGRyYWctYW5kLWRyb3Agc2VjdGlv
biwgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RuZAorCQlpZiAo
Y2hvc2VuRHJvcEVmZmVjdCA9PSAibm9uZSIpCisJCQlyZXR1cm4gdHJ1ZTsKKwkJaWYgKGNob3Nl
bkRyb3BFZmZlY3QgPT0gImNvcHkiICYmIChhbGxvd2VkRHJvcEVmZmVjdCA9PSAiY29weSIgfHwg
YWxsb3dlZERyb3BFZmZlY3QgPT0gImNvcHlMaW5rIiAKKwkJCQkJCQkJCQkJfHwgYWxsb3dlZERy
b3BFZmZlY3QgPT0gImNvcHlNb3ZlIiB8fCBhbGxvd2VkRHJvcEVmZmVjdCA9PSAidW5pbml0aWFs
aXplZCIKKwkJCQkJCQkJCQkJfHwgYWxsb3dlZERyb3BFZmZlY3QgPT0gImFsbCIpKQorCQkJcmV0
dXJuIHRydWU7CisJCWlmIChjaG9zZW5Ecm9wRWZmZWN0ID09ICJtb3ZlIiAmJiAoYWxsb3dlZERy
b3BFZmZlY3QgPT0gIm1vdmUiIHx8IGFsbG93ZWREcm9wRWZmZWN0ID09ICJjb3B5TW92ZSIgCisJ
CQkJCQkJCQkJCXx8IGFsbG93ZWREcm9wRWZmZWN0ID09ICJsaW5rTW92ZSIgfHwgYWxsb3dlZERy
b3BFZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiCisJCQkJCQkJCQkJCXx8IGFsbG93ZWREcm9wRWZm
ZWN0ID09ICJhbGwiKSkKKwkJCXJldHVybiB0cnVlOworCQlpZiAoY2hvc2VuRHJvcEVmZmVjdCA9
PSAibGluayIgJiYgKGFsbG93ZWREcm9wRWZmZWN0ID09ICJsaW5rIiB8fCBhbGxvd2VkRHJvcEVm
ZmVjdCA9PSAiY29weUxpbmsiIAorCQkJCQkJCQkJCQl8fCBhbGxvd2VkRHJvcEVmZmVjdCA9PSAi
bGlua01vdmUiIHx8IGFsbG93ZWREcm9wRWZmZWN0ID09ICJ1bmluaXRpYWxpemVkIgorCQkJCQkJ
CQkJCQl8fCBhbGxvd2VkRHJvcEVmZmVjdCA9PSAiYWxsIikpCisJCQlyZXR1cm4gdHJ1ZTsKKwkJ
cmV0dXJuIGZhbHNlOworCX0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAg
ICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIAorICAg
ICAgICB2YXIgc3RhcnRYID0gZHJhZ01lLm9mZnNldExlZnQgKyAxMDsKKyAgICAgICAgdmFyIHN0
YXJ0WSA9IGRyYWdNZS5vZmZzZXRUb3AgKyBkcmFnTWUub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAg
ICAgdmFyIGVuZFggPSBkcm9wVGFyZ2V0Lm9mZnNldExlZnQgKyAxMDsKKyAgICAgICAgdmFyIGVu
ZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsK
KyAgICAgICAgCisgICAgICAgIHZhciBudW1FZmZlY3RBbGxvd2VkID0gZWZmZWN0QWxsb3dlZEVs
ZW0ub3B0aW9ucy5sZW5ndGg7CisgICAgICAgIHZhciBudW1FZmZlY3RzID0gZHJvcEVmZmVjdEVs
ZW0ub3B0aW9ucy5sZW5ndGg7CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG51bUVmZmVjdEFsbG93ZWQ7ICsraSkgeworICAgICAgICAgICAgZWZmZWN0QWxsb3dlZEVsZW0u
b3B0aW9uc1tpXS5zZWxlY3RlZCA9IHRydWU7CisJCQlkZWJ1ZygnPGJyIC8+V2hlbiBlZmZlY3RB
bGxvd2VkID09ICInICsgZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tpXS52YWx1ZSArICciPGJy
IC8+Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bUVmZmVjdHM7ICsraikg
eworICAgICAgICAgICAgICAgIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbal0uc2VsZWN0ZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3Rh
cnRZKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDApOworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFgsIGVuZFkpOworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCQlkZWJ1ZygnPGJy
IC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwk8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICA8
bGFiZWwgZm9yPSJlZmZlY3RBbGxvd2VkIj5lZmZlY3RBbGxvd2VkPC9sYWJlbD4gPHNlbGVjdCBp
ZD0iZWZmZWN0QWxsb3dlZCI+CisgICAgICAgIDxvcHRpb24gdmFsdWU9InVuaW5pdGlhbGl6ZWQi
PlVuaW5pdGlhbGl6ZWQ8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibm9uZSI+Tm9u
ZTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSJhbGwiPkFsbDwvb3B0aW9uPgorICAg
ICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5Ij5Db3B5PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24g
dmFsdWU9Im1vdmUiPk1vdmU8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGluayI+
TGluazwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5TW92ZSI+Q29weU1vdmU8
L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iY29weUxpbmsiPkNvcHlMaW5rPC9vcHRp
b24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9ImxpbmtNb3ZlIj5MaW5rTW92ZTwvb3B0aW9uPgor
ICAgICAgICA8b3B0aW9uIHZhbHVlPSJkdW1teSI+Tm9uZXhpc3RlbnQgKER1bW15KSBFZmZlY3Q8
L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKyAgICA8YnIvPjxici8+CisgICAgPGRpdiBpZD0iZHJv
cFRhcmdldCI+RHJvcCB0aGUgcmVkIHNxdWFyZSBvbnRvIG1lLjxici8+PGJyLz4KKyAgICAgICAg
PGxhYmVsIGZvcj0iZHJvcEVmZmVjdCI+RXhwZWN0cyBkcm9wRWZmZWN0PC9sYWJlbD4gPHNlbGVj
dCBpZD0iZHJvcEVmZmVjdCI+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJub25lIj5Ob25l
PC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5Ij5Db3B5PC9vcHRpb24+
CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJtb3ZlIj5Nb3ZlPC9vcHRpb24+CisgICAgICAg
ICAgICA8b3B0aW9uIHZhbHVlPSJsaW5rIj5MaW5rPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0
aW9uIHZhbHVlPSJkdW1teSI+Tm9uZXhpc3RlbnQgKER1bW15KSBFZmZlY3Q8L29wdGlvbj4KKyAg
ICAgICAgPC9zZWxlY3Q+CisgICAgPC9kaXY+CisgICAgPGhyLz4KKyAgICA8cD5JdGVtcyB0aGF0
IGNhbiBiZSBkcmFnZ2VkIHRvIHRoZSBkcm9wIHRhcmdldDo8L3A+CisgICAgPGRpdiBpZD0iZHJh
Z01lIj5TcXVhcmU8L2Rpdj4KKwk8aHIvPgorCTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCTxz
Y3JpcHQ+CisJCWRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoYXQgZHJhZy1hbmQtZHJv
cCBzdXBwb3J0IHdvcmtzIGFuZCBjb25mb3JtcyB0byB0aGUgSFRNTCA1IHNwZWNpZmljYXRpb24u
PGJyLz4iICsKKwkJCQkJIkZvciBlYWNoIGVmZmVjdEFsbG93ZWQsIGl0ZXJhdGVzIHRocm91Z2gg
dGhlIHBvc3NpYmxlIGRyb3BFZmZlY3RzOiBub25lLCBjb3B5LCBtb3ZlLCBsaW5rLCBkdW1teS4i
KTsKKwkJdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisJPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24gNDgzMjUp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDYgKzEwNSw5IEBAIGVkaXRpbmcvc2VsZWN0aW9uL2RyYWctaW4taWZyYW1lLmh0bWwKIGZh
c3QvZXZlbnRzL2RyYWctaW4tZnJhbWVzLmh0bWwKIGZhc3QvZXZlbnRzL3N0YW5kYWxvbmUtaW1h
Z2UtZHJhZy10by1lZGl0YWJsZS5odG1sCiAKKyMgV2luZG93cyBEUlQgZHJhZy1hbmQtZHJvcCBk
b2VzIG5vdCB3b3JrIGNvcnJlY3RseSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI4OTAyKQorZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCisKICMgPHJkYXI6
Ly9wcm9ibGVtLzU2NDM2NzU+IHdpbmRvdy5zY3JvbGxUbyBzY3JvbGxzIGEgd2luZG93IHdpdGgg
bm8gc2Nyb2xsYmFycwogZmFzdC9ldmVudHMvYXR0ZW1wdC1zY3JvbGwtd2l0aC1uby1zY3JvbGxi
YXJzLmh0bWwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39582</attachid>
            <date>2009-09-14 17:54:54 -0700</date>
            <delta_ts>2009-09-26 19:22:43 -0700</delta_ts>
            <desc>Patch with test case</desc>
            <filename>091409_3.patch</filename>
            <type>text/plain</type>
            <size>21839</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA0ODM2MikKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDktMTQgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAg
ICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAg
ICAgSW1wbGVtZW50cyBzdXBwb3J0IGZvciBESFRNTCBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMg
KGkuZS4gb25kcmFnc3RhcnQsIG9uZHJhZ2VuZCkKKyAgICAgICAgaW4gdGhlIFdpbmRvd3MgYnVp
bGQgc28gdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgTWFjIE9TIFggYnVpbGQuIEhlbmNlLCBkcm9w
RWZmZWN0IGlzCisgICAgICAgIGNvcnJlY3RseSBzZXQuCisgICAgICAgIAorICAgICAgICBUaGUg
V2ViVmlldyBhbmQgV2ViRHJvcFNvdXJjZSBkcmFnLWFuZC1kcm9wIGZ1bmN0aW9ucywgYXMgY2Fs
bGVkIGJ5IGZ1bmN0aW9uCisgICAgICAgIERvRHJhZ0Ryb3AgaW4gaXRzIGV2ZW50IGxvb3AsIG5l
aXRoZXIgdXNlZCB0aGUgZHJvcCBlZmZlY3QgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IG5vciByZXNwZWN0ZWQgZXZlbnQuZGF0YVRyYW5zZmVy
LmVmZmVjdHNBbGxvd2VkLgorICAgICAgICBJbnN0ZWFkLCB0aGVzZSBmdW5jdGlvbnMgZGVmYXVs
dGVkIHRvIHNvbWUgaGFyZGNvZGVkIGRyb3AgZWZmZWN0IGFuZCBzZXQgb2YKKyAgICAgICAgYWxs
b3dlZCBkcm9wIGVmZmVjdHMsIHJlc3BlY3RpdmVseS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFn
KToKKyAgICAgICAgKiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRyb3BTb3VyY2U6
OlF1ZXJ5Q29udGludWVEcmFnKTogTW92ZWQgY2FsbCB0byBFdmVudEhhbmRsZXI6OmRyYWdTb3Vy
Y2VFbmRlZEF0CisgICAgICAgIGludG8gbWV0aG9kIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZy4K
KyAgICAgICAgKiBXZWJEcm9wU291cmNlLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbik6IERldGVybWluZXMgYXBwcm9w
cmlhdGUgZHJvcCBlZmZlY3QgZnJvbSBzdGF0ZQorICAgICAgICBvZiBrZXlib2FyZCBhbmQgYWxs
b3dlZCBlZmZlY3RzIHxvcGVyYXRpb258LgorICAgICAgICAoV2ViVmlldzo6RHJhZ0VudGVyKToK
KyAgICAgICAgKFdlYlZpZXc6OkRyYWdPdmVyKToKKyAgICAgICAgKFdlYlZpZXc6OkRyb3ApOgor
ICAgICAgICAqIFdlYlZpZXcuaDogQWRkZWQgZmllbGQgbV9sYXN0RHJvcEVmZmVjdC4gRXhwb3Nl
ZCBtZXRob2QgV2ViVmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24uCisKIDIwMDktMDktMTEg
IFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCShyZXZpc2lvbiA0ODMy
NSkKKysrIFdlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCiAjaW5jbHVkZSA8V2luZG93cy5oPgpAQCAtMTA2LDEwICsxMDUsNiBAQCBTVERNRVRIT0RJ
TVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlDb250aW51CiB7CiAgICAgaWYgKGZFc2NhcGVQcmVzc2Vk
IHx8ICEoZ3JmS2V5U3RhdGUgJiAoTUtfTEJVVFRPTnxNS19SQlVUVE9OKSkpIHsKICAgICAgICAg
bV9kcm9wcGVkID0gIWZFc2NhcGVQcmVzc2VkOwotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1f
d2ViVmlldy0+cGFnZSgpKQotICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1h
aW5GcmFtZSgpKSAKLSAgICAgICAgICAgICAgICAvL0ZJWE1FOiBXZSBuZWVkIHRvIGZpZ3VyZSBv
dXQgaG93IHRvIGZpbmQgb3V0IHdoYXQgYWN0dWFsbHkgaGFwcGVuZWQgaW4gdGhlIGRyYWcgPHJk
YXI6Ly9wcm9ibGVtLzUwMTU5NjE+Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5kcmFnU291cmNlRW5kZWRBdChnZW5lcmF0ZU1vdXNlRXZlbnQobV93ZWJWaWV3LmdldCgp
LCBmYWxzZSksIGZFc2NhcGVQcmVzc2VkID8gRHJhZ09wZXJhdGlvbk5vbmUgOiBEcmFnT3BlcmF0
aW9uQ29weSk7CiAgICAgICAgIHJldHVybiBmRXNjYXBlUHJlc3NlZD8gRFJBR0RST1BfU19DQU5D
RUwgOiBEUkFHRFJPUF9TX0RST1A7CiAgICAgfSBlbHNlIGlmIChQYWdlKiBwYWdlID0gbV93ZWJW
aWV3LT5wYWdlKCkpCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUo
KSkgCkluZGV4OiBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkRyb3BTb3VyY2UuaAkocmV2aXNpb24gNDgzMjUpCisrKyBXZWJLaXQvd2luL1dl
YkRyb3BTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsMTIgQEAKICNpbmNsdWRl
ICJDT01QdHIuaCIKICNpbmNsdWRlIDxvYmppZGwuaD4KIAorI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1Nb3VzZUV2ZW50Lmg+CisKIGNsYXNzIFdlYlZpZXc7CiAKK1dlYkNvcmU6OlBsYXRmb3Jt
TW91c2VFdmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2ViVmlldyogd2ViVmlldywgYm9vbCBpc0Ry
YWcpOworCiBjbGFzcyBXZWJEcm9wU291cmNlIDogcHVibGljIElEcm9wU291cmNlCiB7CiBwdWJs
aWM6CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDQ4MzI1KQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDU2NiwxMSArNDU2NiwzMSBAQCBzdGF0aWMgRFdPUkQgZHJh
Z09wZXJhdGlvblRvRHJhZ0N1cnNvcihECiAgICAgcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIERy
YWdPcGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQpIHsKLSAgICAvL0ZJWE1F
OiBUaGlzIGlzIGN1cnJlbnRseSB2ZXJ5IHNpbXBsZSwgaXQgbWF5IG5lZWQgdG8gYWN0dWFsbHkK
LSAgICAvL3dvcmsgb3V0IGFuIGFwcHJvcHJpYXRlIERyYWdPcGVyYXRpb24gaW4gZnV0dXJlIC0t
IGhvd2V2ZXIgdGhpcwotICAgIC8vYmVoYXZpb3VyIGFwcGVhcnMgdG8gbWF0Y2ggRmlyZUZveAot
ICAgIHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0
aW9uTGluayk7CitEcmFnT3BlcmF0aW9uIFdlYlZpZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0aW9u
KERXT1JEIGdyZktleVN0YXRlKSB7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uTm9uZTsKKworICAgIC8vIENvbmZvcm1zIHRvIE1pY3Jvc29mdCdzIGtleSBj
b21iaW5hdGlvbnMgYXMgZG9jdW1lbnRlZCBmb3IgCisgICAgLy8gSURyb3BUYXJnZXQ6OkRyYWdP
dmVyLiBOb3RlLCB8Z3JmS2V5U3RhdGV8IGlzIHRoZSBjdXJyZW50IAorICAgIC8vIHN0YXRlIG9m
IHRoZSBrZXlib2FyZCBtb2RpZmllciBrZXlzIG9uIHRoZSBrZXlib2FyZC4gU2VlOgorICAgIC8v
IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczY4MDEyOShWUy44NSku
YXNweAorICAgIC8vCisgICAgLy8gQnkgZGVmYXVsdCwgd2UgcmV0dXJuIHRoZSBzb3VyY2UgZHJh
ZyBvcGVyYXRpb24gdG8gY29uZm9ybSB3aXRoIHRoZSBNYWMgT1MgWCBidWlsZC4KKyAgICAKKyAg
ICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+c291
cmNlRHJhZ09wZXJhdGlvbigpOworICAgIGlmIChvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5v
bmUpCisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworCisgICAgaWYgKChn
cmZLZXlTdGF0ZSAmIChNS19DT05UUk9MIHwgTUtfU0hJRlQpKSA9PSAoTUtfQ09OVFJPTCB8IE1L
X1NISUZUKSkKKyAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgaWYg
KChncmZLZXlTdGF0ZSAmIE1LX0NPTlRST0wpID09IE1LX0NPTlRST0wpCisgICAgICAgIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgIGlmICgoZ3JmS2V5U3RhdGUgJiBNS19TSElG
VCkgPT0gTUtfU0hJRlQpCisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Nb3ZlOwor
CisgICAgaWYgKChvcGVyYXRpb24gJiBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCktPnNvdXJjZURy
YWdPcGVyYXRpb24oKSkgIT0gb3BlcmF0aW9uKQorICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3Bl
cmF0aW9uTm9uZTsKKyAgICByZXR1cm4gb3BlcmF0aW9uOwogfQogCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OkRyYWdFbnRlcigKQEAgLTQ1ODcsNiArNDYwNyw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJhZ0UKICAgICAgICAgSW50UG9pbnQocHQu
eCwgcHQueSksIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKGdyZktleVN0YXRlKSk7CiAgICAgKnBk
d0VmZmVjdCA9IGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IobV9wYWdlLT5kcmFnQ29udHJvbGxl
cigpLT5kcmFnRW50ZXJlZCgmZGF0YSkpOwogCisgICAgbV9sYXN0RHJvcEVmZmVjdCA9ICpwZHdF
ZmZlY3Q7CiAgICAgbV9kcmFnRGF0YSA9IHBEYXRhT2JqZWN0OwogCiAgICAgcmV0dXJuIFNfT0s7
CkBAIC00NjA3LDYgKzQ2MjgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OkRyYWdPCiAgICAgfSBlbHNlCiAgICAgICAgICpwZHdFZmZlY3QgPSBEUk9QRUZGRUNUX05PTkU7
CiAKKyAgICBtX2xhc3REcm9wRWZmZWN0ID0gKnBkd0VmZmVjdDsKICAgICByZXR1cm4gU19PSzsK
IH0KIApAQCAtNDYzMSw3ICs0NjUzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpEcm9wKAogICAgICAgICBtX2Ryb3BUYXJnZXRIZWxwZXItPkRyb3AocERhdGFPYmplY3Qs
IChQT0lOVCopJnB0LCAqcGR3RWZmZWN0KTsKIAogICAgIG1fZHJhZ0RhdGEgPSAwOwotICAgICpw
ZHdFZmZlY3QgPSBEUk9QRUZGRUNUX05PTkU7CisgICAgKnBkd0VmZmVjdCA9IG1fbGFzdERyb3BF
ZmZlY3Q7CiAgICAgUE9JTlRMIGxvY2FscHQgPSBwdDsKICAgICA6OlNjcmVlblRvQ2xpZW50KG1f
dmlld1dpbmRvdywgKExQUE9JTlQpJmxvY2FscHQpOwogICAgIERyYWdEYXRhIGRhdGEocERhdGFP
YmplY3QsIEludFBvaW50KGxvY2FscHQueCwgbG9jYWxwdC55KSwgCkluZGV4OiBXZWJLaXQvd2lu
L1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24g
NDgzMjUpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMu
aCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XaW5kb3dNZXNzYWdlTGlzdGVuZXIuaD4KQEAgLTg0OCw2ICs4NDksMTQgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHBhaW50SW50b0JhY2tpbmdTdG9yZShXZWJDb3JlOjpGcmFtZVZpZXcqLCBIREMg
Yml0bWFwREMsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCwgV2luZG93c1RvUGFp
bnQpOwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKFdlYkNvcmU6OkZyYW1lVmlldyosIEhE
QyA9IDAsIGJvb2wgYmFja2luZ1N0b3JlQ29tcGxldGVseURpcnR5ID0gZmFsc2UsIFdpbmRvd3NU
b1BhaW50ID0gUGFpbnRXZWJWaWV3T25seSk7CiAKKyAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
IGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKTsKKyAgICAKKyAgICAv
LyBGSVhNRTogVGhpcyB2YXJpYWJsZSBpcyBwYXJ0IG9mIGEgd29ya2Fyb3VuZC4gVGhlIGRyb3Ag
ZWZmZWN0IChwZHdFZmZlY3QpIHBhc3NlZCB0byBEcm9wIGlzIGluY29ycmVjdC4gCisgICAgLy8g
V2Ugc2V0IHRoaXMgdmFyaWFibGUgaW4gRHJhZ0VudGVyIGFuZCBEcmFnT3ZlciBzbyB0aGF0IGl0
IGNhbiBiZSB1c2VkIGluIERyb3AgdG8gc2V0IHRoZSBjb3JyZWN0IGRyb3AgZWZmZWN0LiAKKyAg
ICAvLyBUaHVzLCBvbiByZXR1cm4gZnJvbSBEb0RyYWdEcm9wIHdlIGhhdmUgdGhlIGNvcnJlY3Qg
cGR3RWZmZWN0IGZvciB0aGUgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb24uCisgICAgLy8gKHNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkyNjQpCisgICAgRFdPUkQg
bV9sYXN0RHJvcEVmZmVjdDsKKwogcHJvdGVjdGVkOgogICAgIEhJTUMgZ2V0SU1NQ29udGV4dCgp
OwogICAgIHZvaWQgcmVsZWFzZUlNTUNvbnRleHQoSElNQyk7CkluZGV4OiBXZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHJldmlzaW9uIDQ4MzI1KQorKysgV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU2LDE2ICsxNTYsMjYgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0lt
YWdlUgogCiAgICAgICAgIC8vRklYTUU6IEVuc3VyZSBjb3JyZWN0IGRyYWcgb3BzIGFyZSBhdmFp
bGFibGUgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NTc+CiAgICAgICAgIERXT1JEIG9rRWZmZWN0ID0g
RFJPUEVGRkVDVF9DT1BZIHwgRFJPUEVGRkVDVF9MSU5LIHwgRFJPUEVGRkVDVF9NT1ZFOwotICAg
ICAgICBEV09SRCBlZmZlY3Q7CisgICAgICAgIERXT1JEIGVmZmVjdCA9IERST1BFRkZFQ1RfTk9O
RTsKICAgICAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aTsKKyAgICAgICAgYm9vbCBpc1VJ
RGVsZWdhdGUgPSBmYWxzZTsKICAgICAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVs
ZWdhdGUoJnVpKSkpIHsKICAgICAgICAgICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZVByaXZhdGU+
IHVpUHJpdmF0ZTsKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQodWktPlF1ZXJ5SW50ZXJmYWNl
KElJRF9JV2ViVUlEZWxlZ2F0ZVByaXZhdGUsICh2b2lkKiopJnVpUHJpdmF0ZSkpKQogICAgICAg
ICAgICAgICAgIGlmIChTVUNDRUVERUQodWlQcml2YXRlLT5kb0RyYWdEcm9wKG1fd2ViVmlldywg
ZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCkpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIGlzVUlEZWxlZ2F0
ZSA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBEb0RyYWdEcm9wKGRhdGFPYmplY3QuZ2V0
KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOworICAgICAgICBEcmFnT3BlcmF0
aW9uIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICBpZiAoaXNVSURlbGVn
YXRlIHx8IERvRHJhZ0Ryb3AoZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVj
dCwgJmVmZmVjdCkgPT0gRFJBR0RST1BfU19EUk9QKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0
ICYgRFJPUEVGRkVDVF9DT1BZKQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVy
YXRpb25Db3B5OworICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9MSU5L
KQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAgICAg
ICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9NT1ZFKQorICAgICAgICAgICAgICAg
IG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICB9CisgICAgICAgIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1f
d2ViVmlldywgZmFsc2UpLCBvcGVyYXRpb24pOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNDgzNjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNyBAQAorMjAwOS0wOS0xNCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NzMxCisgICAgICAgIEFuZAorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81MDE1OTYxCisgICAgICAgIAorICAgICAgICBUZXN0cyB0aGF0
IERIVE1MIGRyYWctYW5kLWRyb3Agd29ya3MgY29ycmVjdGx5LgorCisgICAgICAgICogZmFzdC9l
dmVudHMvZHJhZy1hbmQtZHJvcC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2lu
L1NraXBwZWQ6CisKIDIwMDktMDktMTQgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWls
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk3IEBACitUaGlzIHRlc3QgY2hlY2tz
IHRoYXQgZHJhZy1hbmQtZHJvcCBzdXBwb3J0IHdvcmtzIGFuZCBjb25mb3JtcyB0byB0aGUgSFRN
TCA1IHNwZWNpZmljYXRpb24uCitGb3IgZWFjaCBlZmZlY3RBbGxvd2VkLCBpdGVyYXRlcyB0aHJv
dWdoIHRoZSBwb3NzaWJsZSBkcm9wRWZmZWN0czogbm9uZSwgY29weSwgbW92ZSwgbGluaywgZHVt
bXkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitlZmZlY3RBbGxvd2VkICAKKwor
RHJvcCB0aGUgcmVkIHNxdWFyZSBvbnRvIG1lLgorCitFeHBlY3RzIGRyb3BFZmZlY3QgCitJdGVt
cyB0aGF0IGNhbiBiZSBkcmFnZ2VkIHRvIHRoZSBkcm9wIHRhcmdldDoKKworU3F1YXJlCisKK1do
ZW4gZWZmZWN0QWxsb3dlZCA9PSAidW5pbml0aWFsaXplZCIKKworUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVt
LnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0u
dmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVs
ZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVu
dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BF
ZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5k
cm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQgPT0gIm5vbmUiCisKK1BB
U1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9u
c1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJu
b25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hl
biBlZmZlY3RBbGxvd2VkID09ICJhbGwiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZElu
ZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZm
ZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNb
ZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5z
ZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBp
cyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJjb3B5IgorCitQQVNTIGV2ZW50LmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVj
dEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZElu
ZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIK
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQg
PT0gIm1vdmUiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVm
ZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0
RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5v
bmUiCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAibGluayIKKworUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVt
LnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIK
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0
aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJj
b3B5TW92ZSIKKworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZm
ZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNb
ZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5z
ZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBp
cyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCisK
K1doZW4gZWZmZWN0QWxsb3dlZCA9PSAiY29weUxpbmsiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5z
ZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBp
cyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZh
bHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBl
dmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ry
b3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQgPT0gImxpbmtNb3Zl
IgorCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVt
Lm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2Vs
ZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMg
ZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1
ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hlbiBl
ZmZlY3RBbGxvd2VkID09ICJkdW1teSIKKworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5k
ZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgor
UEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0IGlzICJub25lIgorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTY4IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjZHJvcFRhcmdl
dCwgI2RyYWdNZSB7IHRleHQtYWxpZ246IGNlbnRlcjsgZGlzcGxheTogdGFibGUtY2VsbDsgdmVy
dGljYWwtYWxpZ246IG1pZGRsZSB9CisjZHJvcFRhcmdldCB7d2lkdGg6IDI1NnB4OyBoZWlnaHQ6
IDI1NnB4OyBib3JkZXI6IDFweCBkYXNoZWR9CisjZHJhZ01lIHstd2Via2l0LXVzZXItZHJhZzog
ZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgYmFja2dyb3VuZDogI2ZmMDAwMDsg
d2lkdGg6IDY0cHg7IGhlaWdodDogNjRweDsgY29sb3I6IHdoaXRlfQorPC9zdHlsZT4KKzxzY3Jp
cHQ+CisgICAgdmFyIGRyYWdNZTsKKyAgICB2YXIgZHJvcFRhcmdldDsKKyAgICB2YXIgZWZmZWN0
QWxsb3dlZEVsZW07CisgICAgdmFyIGRyb3BFZmZlY3RFbGVtOworICAgIHZhciBjb25zb2xlRWxt
OworICAgIAorICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICBk
cmFnTWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgIGRyb3BU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcFRhcmdldCIpOworICAgICAgICBl
ZmZlY3RBbGxvd2VkRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZmZlY3RBbGxvd2Vk
Iik7CisgICAgICAgIGRyb3BFZmZlY3RFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRy
b3BFZmZlY3QiKTsKKyAgICAgICAgY29uc29sZUVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIik7CisgICAgICAgIAorICAgICAgICBpZiAoIWRyYWdNZSB8fCAhZHJvcFRhcmdl
dCB8fCAhZWZmZWN0QWxsb3dlZEVsZW0gfHwgIWRyb3BFZmZlY3RFbGVtIHx8ICFjb25zb2xlRWxt
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgZHJhZ01lLm9uZHJhZ3N0
YXJ0ID0gZHJhZ1N0YXJ0OworICAgICAgICBkcmFnTWUub25kcmFnZW5kID0gZHJhZ0VuZDsKKyAg
ICAgICAgCisgICAgICAgIGRyb3BUYXJnZXQub25kcmFnZW50ZXIgPSBkcmFnRW50ZXJlZDsKKyAg
ICAgICAgZHJvcFRhcmdldC5vbmRyYWdvdmVyID0gZHJhZ092ZXI7CisgICAgICAgIAorICAgICAg
ICBydW5UZXN0KCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdTdGFydCgpCisgICAg
eworICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93
ZWRFbGVtLm9wdGlvbnNbZWZmZWN0QWxsb3dlZEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWU7Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbmQoKQorICAgIHsKKyAgICAgICAgY2hlY2tE
cmFnU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBk
cmFnRW50ZXJlZCgpCisgICAgeworICAgICAgICBkcmFnRW50ZXJlZEFuZFVwZGF0ZWQoKTsKKyAg
ICB9CisgICAgCisgICAgZnVuY3Rpb24gZHJhZ092ZXIoKQorICAgIHsKKyAgICAgICAgZHJhZ0Vu
dGVyZWRBbmRVcGRhdGVkKCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbnRlcmVk
QW5kVXBkYXRlZCgpCisgICAgeworICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVj
dCA9IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0u
dmFsdWU7CisgICAgICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkKKyAgICAgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQXNz
dW1lIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyB3aXRoaW4gSW50ZXJuZXQgRXhwbG9yZXIKKyAg
ICAgICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgZnVuY3Rpb24gY2hlY2tEcmFnU3RhdGUoKQorICAgIHsKKyAgICAgICAgdmFyIGNo
b3NlbkRyb3BFZmZlY3QgPSBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNl
bGVjdGVkSW5kZXhdLnZhbHVlOworICAgICAgICB2YXIgY2hvc2VuRWZmZWN0QWxsb3dlZCA9IGVm
ZmVjdEFsbG93ZWRFbGVtLm9wdGlvbnNbZWZmZWN0QWxsb3dlZEVsZW0uc2VsZWN0ZWRJbmRleF0u
dmFsdWU7CisgICAgICAgIHZhciBhY3R1YWxEcm9wRWZmZWN0ID0gZXZlbnQuZGF0YVRyYW5zZmVy
LmRyb3BFZmZlY3Q7CisgICAgICAgIAorICAgICAgICBpZiAoaXNEcm9wRWZmZWN0QWxsb3dlZChj
aG9zZW5Ecm9wRWZmZWN0LCBjaG9zZW5FZmZlY3RBbGxvd2VkKSkKKyAgICAgICAgICAgIHNob3Vs
ZEV2YWx1YXRlVG8oJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0JywgJ2Ryb3BFZmZlY3RF
bGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUnKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCcsICdub25lJyk7CisgICAgICAgICAgICAKKyAgICB9CisgICAgCisg
ICAgZnVuY3Rpb24gaXNEcm9wRWZmZWN0QWxsb3dlZChjaG9zZW5Ecm9wRWZmZWN0LCBhbGxvd2Vk
RHJvcEVmZmVjdCkgeworICAgICAgICAvLyBFeHRyYWN0ZWQgZnJvbSB0aGUgSFRNTCA1IGRyYWct
YW5kLWRyb3Agc2VjdGlvbiwgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5o
dG1sI2RuZAorICAgICAgICBpZiAoY2hvc2VuRHJvcEVmZmVjdCA9PSAibm9uZSIpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGNob3NlbkRyb3BFZmZlY3QgPT0gImNvcHki
ICYmIChhbGxvd2VkRHJvcEVmZmVjdCA9PSAiY29weSIgfHwgYWxsb3dlZERyb3BFZmZlY3QgPT0g
ImNvcHlMaW5rIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fHwgYWxsb3dlZERyb3BFZmZlY3QgPT0gImNvcHlNb3ZlIiB8fCBhbGxvd2VkRHJvcEVmZmVjdCA9
PSAidW5pbml0aWFsaXplZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfHwgYWxsb3dlZERyb3BFZmZlY3QgPT0gImFsbCIpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGlmIChjaG9zZW5Ecm9wRWZmZWN0ID09ICJtb3ZlIiAmJiAoYWxsb3dl
ZERyb3BFZmZlY3QgPT0gIm1vdmUiIHx8IGFsbG93ZWREcm9wRWZmZWN0ID09ICJjb3B5TW92ZSIg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGFsbG93ZWRE
cm9wRWZmZWN0ID09ICJsaW5rTW92ZSIgfHwgYWxsb3dlZERyb3BFZmZlY3QgPT0gInVuaW5pdGlh
bGl6ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGFs
bG93ZWREcm9wRWZmZWN0ID09ICJhbGwiKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBpZiAoY2hvc2VuRHJvcEVmZmVjdCA9PSAibGluayIgJiYgKGFsbG93ZWREcm9wRWZmZWN0
ID09ICJsaW5rIiB8fCBhbGxvd2VkRHJvcEVmZmVjdCA9PSAiY29weUxpbmsiIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBhbGxvd2VkRHJvcEVmZmVjdCA9
PSAibGlua01vdmUiIHx8IGFsbG93ZWREcm9wRWZmZWN0ID09ICJ1bmluaXRpYWxpemVkIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBhbGxvd2VkRHJvcEVm
ZmVjdCA9PSAiYWxsIikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgICAg
aWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIAorICAgICAg
ICB2YXIgc3RhcnRYID0gZHJhZ01lLm9mZnNldExlZnQgKyAxMDsKKyAgICAgICAgdmFyIHN0YXJ0
WSA9IGRyYWdNZS5vZmZzZXRUb3AgKyBkcmFnTWUub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAg
dmFyIGVuZFggPSBkcm9wVGFyZ2V0Lm9mZnNldExlZnQgKyAxMDsKKyAgICAgICAgdmFyIGVuZFkg
PSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAg
ICAgICAgCisgICAgICAgIHZhciBudW1FZmZlY3RBbGxvd2VkID0gZWZmZWN0QWxsb3dlZEVsZW0u
b3B0aW9ucy5sZW5ndGg7CisgICAgICAgIHZhciBudW1FZmZlY3RzID0gZHJvcEVmZmVjdEVsZW0u
b3B0aW9ucy5sZW5ndGg7CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51
bUVmZmVjdEFsbG93ZWQ7ICsraSkgeworICAgICAgICAgICAgZWZmZWN0QWxsb3dlZEVsZW0ub3B0
aW9uc1tpXS5zZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICBkZWJ1ZygnPGJyIC8+V2hlbiBl
ZmZlY3RBbGxvd2VkID09ICInICsgZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tpXS52YWx1ZSAr
ICciPGJyIC8+Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bUVmZmVjdHM7
ICsraikgeworICAgICAgICAgICAgICAgIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbal0uc2VsZWN0
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
WCwgc3RhcnRZKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDApOworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFgsIGVuZFkpOworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKyAgICA8bGFiZWwgZm9yPSJlZmZlY3RBbGxvd2VkIj5lZmZlY3RBbGxvd2VkPC9s
YWJlbD4gPHNlbGVjdCBpZD0iZWZmZWN0QWxsb3dlZCI+CisgICAgICAgIDxvcHRpb24gdmFsdWU9
InVuaW5pdGlhbGl6ZWQiPlVuaW5pdGlhbGl6ZWQ8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2
YWx1ZT0ibm9uZSI+Tm9uZTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSJhbGwiPkFs
bDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5Ij5Db3B5PC9vcHRpb24+Cisg
ICAgICAgIDxvcHRpb24gdmFsdWU9Im1vdmUiPk1vdmU8L29wdGlvbj4KKyAgICAgICAgPG9wdGlv
biB2YWx1ZT0ibGluayI+TGluazwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5
TW92ZSI+Q29weU1vdmU8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iY29weUxpbmsi
PkNvcHlMaW5rPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9ImxpbmtNb3ZlIj5MaW5r
TW92ZTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSJkdW1teSI+Tm9uZXhpc3RlbnQg
KER1bW15KSBFZmZlY3Q8L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKyAgICA8YnIvPjxici8+Cisg
ICAgPGRpdiBpZD0iZHJvcFRhcmdldCI+RHJvcCB0aGUgcmVkIHNxdWFyZSBvbnRvIG1lLjxici8+
PGJyLz4KKyAgICAgICAgPGxhYmVsIGZvcj0iZHJvcEVmZmVjdCI+RXhwZWN0cyBkcm9wRWZmZWN0
PC9sYWJlbD4gPHNlbGVjdCBpZD0iZHJvcEVmZmVjdCI+CisgICAgICAgICAgICA8b3B0aW9uIHZh
bHVlPSJub25lIj5Ob25lPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5
Ij5Db3B5PC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJtb3ZlIj5Nb3ZlPC9v
cHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJsaW5rIj5MaW5rPC9vcHRpb24+Cisg
ICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJkdW1teSI+Tm9uZXhpc3RlbnQgKER1bW15KSBFZmZl
Y3Q8L29wdGlvbj4KKyAgICAgICAgPC9zZWxlY3Q+CisgICAgPC9kaXY+CisgICAgPGhyLz4KKyAg
ICA8cD5JdGVtcyB0aGF0IGNhbiBiZSBkcmFnZ2VkIHRvIHRoZSBkcm9wIHRhcmdldDo8L3A+Cisg
ICAgPGRpdiBpZD0iZHJhZ01lIj5TcXVhcmU8L2Rpdj4KKyAgICA8aHIvPgorICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgY2hlY2tzIHRoYXQgZHJhZy1hbmQtZHJvcCBzdXBwb3J0IHdvcmtzIGFuZCBjb25mb3Jt
cyB0byB0aGUgSFRNTCA1IHNwZWNpZmljYXRpb24uPGJyLz4iICsKKyAgICAgICAgICAgICAgICAg
ICAgIkZvciBlYWNoIGVmZmVjdEFsbG93ZWQsIGl0ZXJhdGVzIHRocm91Z2ggdGhlIHBvc3NpYmxl
IGRyb3BFZmZlY3RzOiBub25lLCBjb3B5LCBtb3ZlLCBsaW5rLCBkdW1teS4iKTsKKyAgICAgICAg
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24gNDgzMjUpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTA1
LDYgKzEwNSw5IEBAIGVkaXRpbmcvc2VsZWN0aW9uL2RyYWctaW4taWZyYW1lLmh0bWwKIGZhc3Qv
ZXZlbnRzL2RyYWctaW4tZnJhbWVzLmh0bWwKIGZhc3QvZXZlbnRzL3N0YW5kYWxvbmUtaW1hZ2Ut
ZHJhZy10by1lZGl0YWJsZS5odG1sCiAKKyMgV2luZG93cyBEUlQgZHJhZy1hbmQtZHJvcCBkb2Vz
IG5vdCB3b3JrIGNvcnJlY3RseSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI4OTAyKQorZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCisKICMgPHJkYXI6Ly9w
cm9ibGVtLzU2NDM2NzU+IHdpbmRvdy5zY3JvbGxUbyBzY3JvbGxzIGEgd2luZG93IHdpdGggbm8g
c2Nyb2xsYmFycwogZmFzdC9ldmVudHMvYXR0ZW1wdC1zY3JvbGwtd2l0aC1uby1zY3JvbGxiYXJz
Lmh0bWwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>40185</attachid>
            <date>2009-09-26 16:37:58 -0700</date>
            <delta_ts>2009-09-26 19:22:43 -0700</delta_ts>
            <desc>Updated test case</desc>
            <filename>drag-and-drop.html</filename>
            <type>text/html</type>
            <size>6907</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+CjxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0Pgo8c3R5bGU+CiNkcm9wVGFyZ2V0LCAjZHJhZ01lIHsgdGV4dC1h
bGlnbjogY2VudGVyOyBkaXNwbGF5OiB0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxl
IH0KI2Ryb3BUYXJnZXQge3dpZHRoOiAyNTZweDsgaGVpZ2h0OiAyNTZweDsgYm9yZGVyOiAxcHgg
ZGFzaGVkfQojZHJhZ01lIHstd2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2Vy
LXNlbGVjdDogbm9uZTsgYmFja2dyb3VuZDogI2ZmMDAwMDsgd2lkdGg6IDY0cHg7IGhlaWdodDog
NjRweDsgY29sb3I6IHdoaXRlfQo8L3N0eWxlPgo8c2NyaXB0PgogICAgdmFyIGRyYWdNZTsKICAg
IHZhciBkcm9wVGFyZ2V0OwogICAgdmFyIGVmZmVjdEFsbG93ZWRFbGVtOwogICAgdmFyIGRyb3BF
ZmZlY3RFbGVtOwogICAgdmFyIGNvbnNvbGVFbG07CiAgICB2YXIgZXZlbnQ7CiAgICAKICAgIHdp
bmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgZHJhZ01lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRyYWdNZSIpOwogICAgICAgIGRyb3BUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZHJvcFRhcmdldCIpOwogICAgICAgIGVmZmVjdEFsbG93ZWRFbGVtID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVmZmVjdEFsbG93ZWQiKTsKICAgICAgICBkcm9wRWZm
ZWN0RWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wRWZmZWN0Iik7CiAgICAgICAg
Y29uc29sZUVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CiAgICAgICAg
CiAgICAgICAgaWYgKCFkcmFnTWUgfHwgIWRyb3BUYXJnZXQgfHwgIWVmZmVjdEFsbG93ZWRFbGVt
IHx8ICFkcm9wRWZmZWN0RWxlbSB8fCAhY29uc29sZUVsbSkKICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgIAogICAgICAgIGRyYWdNZS5vbmRyYWdzdGFydCA9IGRyYWdTdGFydDsKICAgICAgICBk
cmFnTWUub25kcmFnZW5kID0gZHJhZ0VuZDsKICAgICAgICAKICAgICAgICBkcm9wVGFyZ2V0Lm9u
ZHJhZ2VudGVyID0gZHJhZ0VudGVyZWQ7CiAgICAgICAgZHJvcFRhcmdldC5vbmRyYWdvdmVyID0g
ZHJhZ092ZXI7CiAgICAgICAgZHJvcFRhcmdldC5vbmRyb3AgPSBkcm9wOwogICAgICAgIAogICAg
ICAgIHJ1blRlc3QoKTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gZHJhZ1N0YXJ0KGUpCiAgICB7
CiAgICAgICAgZXZlbnQgPSBlOwogICAgICAgIGUuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQg
PSBlZmZlY3RBbGxvd2VkRWxlbS5vcHRpb25zW2VmZmVjdEFsbG93ZWRFbGVtLnNlbGVjdGVkSW5k
ZXhdLnZhbHVlOwogICAgICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEoJ1RleHQnLCBlLnRhcmdl
dC50ZXh0Q29udGVudCk7CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGRyYWdFbmQoZSkKICAgIHsK
ICAgICAgICBjaGVja0RyYWdTdGF0ZShlKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICAKICAg
IGZ1bmN0aW9uIGRyYWdFbnRlcmVkKGUpCiAgICB7CiAgICAgICAgZHJhZ0VudGVyZWRBbmRVcGRh
dGVkKGUpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBkcmFnT3ZlcihlKQogICAgewogICAgICAg
IGRyYWdFbnRlcmVkQW5kVXBkYXRlZChlKTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gZHJhZ0Vu
dGVyZWRBbmRVcGRhdGVkKGUpCiAgICB7CiAgICAgICAgZXZlbnQgPSBlOwogICAgICAgIGUuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RF
bGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlOwogICAgICAgIGNhbmNlbERyYWcoZSk7CiAgICB9CiAg
ICAKICAgIGZ1bmN0aW9uIGRyb3AoZSkKICAgIHsKICAgICAgICBjYW5jZWxEcmFnKGUpOwogICAg
fQogICAgCiAgICBmdW5jdGlvbiBjYW5jZWxEcmFnKGUpCiAgICB7CiAgICAgICAgaWYgKGUucHJl
dmVudERlZmF1bHQpCiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgLy8gQXNzdW1lIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyB3aXRoaW4g
SW50ZXJuZXQgRXhwbG9yZXIKICAgICAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOwogICAg
ICAgIH0KICAgIH0KICAgIAogICAgZnVuY3Rpb24gY2hlY2tEcmFnU3RhdGUoZSkKICAgIHsKICAg
ICAgICBldmVudCA9IGU7CiAgICAgICAgdmFyIGNob3NlbkRyb3BFZmZlY3QgPSBkcm9wRWZmZWN0
RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlOwogICAgICAg
IHZhciBjaG9zZW5FZmZlY3RBbGxvd2VkID0gZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tlZmZl
Y3RBbGxvd2VkRWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZTsKICAgICAgICB2YXIgYWN0dWFsRHJv
cEVmZmVjdCA9IGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q7CiAgICAgICAgCiAgICAgICAgaWYg
KGlzRHJvcEVmZmVjdEFsbG93ZWQoY2hvc2VuRHJvcEVmZmVjdCwgY2hvc2VuRWZmZWN0QWxsb3dl
ZCkpCiAgICAgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0JywgJ2Ryb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJ
bmRleF0udmFsdWUnKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QnLCAnbm9uZScpOwogICAgICAgICAg
ICAKICAgIH0KICAgIAogICAgZnVuY3Rpb24gaXNEcm9wRWZmZWN0QWxsb3dlZChjaG9zZW5Ecm9w
RWZmZWN0LCBhbGxvd2VkRHJvcEVmZmVjdCkgewogICAgICAgIC8vIEV4dHJhY3RlZCBmcm9tIHRo
ZSBIVE1MIDUgZHJhZy1hbmQtZHJvcCBzZWN0aW9uLCBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9z
cGVjL092ZXJ2aWV3Lmh0bWwjZG5kCiAgICAgICAgaWYgKGNob3NlbkRyb3BFZmZlY3QgPT0gIm5v
bmUiKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICBpZiAoY2hvc2VuRHJvcEVmZmVj
dCA9PSAiY29weSIgJiYgKGFsbG93ZWREcm9wRWZmZWN0ID09ICJjb3B5IiB8fCBhbGxvd2VkRHJv
cEVmZmVjdCA9PSAiY29weUxpbmsiIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IGFsbG93ZWREcm9wRWZmZWN0ID09ICJjb3B5TW92ZSIgfHwgYWxsb3dlZERy
b3BFZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfHwgYWxsb3dlZERyb3BFZmZlY3QgPT0gImFsbCIpKQogICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICBpZiAoY2hvc2VuRHJvcEVmZmVjdCA9PSAibW92ZSIgJiYg
KGFsbG93ZWREcm9wRWZmZWN0ID09ICJtb3ZlIiB8fCBhbGxvd2VkRHJvcEVmZmVjdCA9PSAiY29w
eU1vdmUiIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGFs
bG93ZWREcm9wRWZmZWN0ID09ICJsaW5rTW92ZSIgfHwgYWxsb3dlZERyb3BFZmZlY3QgPT0gInVu
aW5pdGlhbGl6ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fHwgYWxsb3dlZERyb3BFZmZlY3QgPT0gImFsbCIpKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICBpZiAoY2hvc2VuRHJvcEVmZmVjdCA9PSAibGluayIgJiYgKGFsbG93ZWREcm9wRWZm
ZWN0ID09ICJsaW5rIiB8fCBhbGxvd2VkRHJvcEVmZmVjdCA9PSAiY29weUxpbmsiIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGFsbG93ZWREcm9wRWZmZWN0
ID09ICJsaW5rTW92ZSIgfHwgYWxsb3dlZERyb3BFZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYWxsb3dlZERyb3BF
ZmZlY3QgPT0gImFsbCIpKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICB9CgogICAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICB7CiAgICAgICAgaWYgKCF3
aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgCiAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAKICAgICAgICB2YXIgc3RhcnRY
ID0gZHJhZ01lLm9mZnNldExlZnQgKyAxMDsKICAgICAgICB2YXIgc3RhcnRZID0gZHJhZ01lLm9m
ZnNldFRvcCArIGRyYWdNZS5vZmZzZXRIZWlnaHQgLyAyOwogICAgICAgIHZhciBlbmRYID0gZHJv
cFRhcmdldC5vZmZzZXRMZWZ0ICsgMTA7CiAgICAgICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9m
ZnNldFRvcCArIGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKICAgICAgICAKICAgICAgICB2
YXIgbnVtRWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWRFbGVtLm9wdGlvbnMubGVuZ3RoOwog
ICAgICAgIHZhciBudW1FZmZlY3RzID0gZHJvcEVmZmVjdEVsZW0ub3B0aW9ucy5sZW5ndGg7CiAg
ICAgICAgCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1FZmZlY3RBbGxvd2VkOyArK2kp
IHsKICAgICAgICAgICAgZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tpXS5zZWxlY3RlZCA9IHRy
dWU7CiAgICAgICAgICAgIGRlYnVnKCc8YnIgLz5XaGVuIGVmZmVjdEFsbG93ZWQgPT0gIicgKyBl
ZmZlY3RBbGxvd2VkRWxlbS5vcHRpb25zW2ldLnZhbHVlICsgJyI8YnIgLz4nKTsKICAgICAgICAg
ICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1FZmZlY3RzOyArK2opIHsKICAgICAgICAgICAgICAg
IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbal0uc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOwogICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CiAgICAgICAgICAgICAgICBldmVudFNlbmRlci5s
ZWFwRm9yd2FyZCgxMDApOwogICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
ZW5kWCwgZW5kWSk7CiAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNz
Ij5URVNUIENPTVBMRVRFPC9zcGFuPicpOwogICAgfQo8L3NjcmlwdD4KPC9oZWFkPgo8Ym9keT4K
ICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogICAgPGxhYmVsIGZvcj0iZWZmZWN0QWxsb3dl
ZCI+ZWZmZWN0QWxsb3dlZDwvbGFiZWw+IDxzZWxlY3QgaWQ9ImVmZmVjdEFsbG93ZWQiPgogICAg
ICAgIDxvcHRpb24gdmFsdWU9InVuaW5pdGlhbGl6ZWQiPlVuaW5pdGlhbGl6ZWQ8L29wdGlvbj4K
ICAgICAgICA8b3B0aW9uIHZhbHVlPSJub25lIj5Ob25lPC9vcHRpb24+CiAgICAgICAgPG9wdGlv
biB2YWx1ZT0iYWxsIj5BbGw8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5Ij5D
b3B5PC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW92ZSI+TW92ZTwvb3B0aW9uPgog
ICAgICAgIDxvcHRpb24gdmFsdWU9ImxpbmsiPkxpbms8L29wdGlvbj4KICAgICAgICA8b3B0aW9u
IHZhbHVlPSJjb3B5TW92ZSI+Q29weU1vdmU8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVl
PSJjb3B5TGluayI+Q29weUxpbms8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJsaW5r
TW92ZSI+TGlua01vdmU8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJkdW1teSI+Tm9u
ZXhpc3RlbnQgKER1bW15KSBFZmZlY3Q8L29wdGlvbj4KICAgIDwvc2VsZWN0PgogICAgPGJyLz48
YnIvPgogICAgPGRpdiBpZD0iZHJvcFRhcmdldCI+RHJvcCB0aGUgcmVkIHNxdWFyZSBvbnRvIG1l
Ljxici8+PGJyLz4KICAgICAgICA8bGFiZWwgZm9yPSJkcm9wRWZmZWN0Ij5FeHBlY3RzIGRyb3BF
ZmZlY3Q8L2xhYmVsPiA8c2VsZWN0IGlkPSJkcm9wRWZmZWN0Ij4KICAgICAgICAgICAgPG9wdGlv
biB2YWx1ZT0ibm9uZSI+Tm9uZTwvb3B0aW9uPgogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJj
b3B5Ij5Db3B5PC9vcHRpb24+CiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im1vdmUiPk1vdmU8
L29wdGlvbj4KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGluayI+TGluazwvb3B0aW9uPgog
ICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJkdW1teSI+Tm9uZXhpc3RlbnQgKER1bW15KSBFZmZl
Y3Q8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgIDwvZGl2PgogICAgPGhyLz4KICAgIDxw
Pkl0ZW1zIHRoYXQgY2FuIGJlIGRyYWdnZWQgdG8gdGhlIGRyb3AgdGFyZ2V0OjwvcD4KICAgIDxk
aXYgaWQ9ImRyYWdNZSIgZHJhZ2dhYmxlPSJ0cnVlIj5TcXVhcmU8L2Rpdj4KICAgIDxoci8+CiAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KICAgIDxzY3JpcHQ+CiAgICAgICAgZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCBjaGVja3MgdGhhdCBkcmFnLWFuZC1kcm9wIHN1cHBvcnQgd29ya3MgYW5k
IGNvbmZvcm1zIHRvIHRoZSBIVE1MIDUgc3BlY2lmaWNhdGlvbi48YnIvPiIgKwogICAgICAgICAg
ICAgICAgICAgICJGb3IgZWFjaCBlZmZlY3RBbGxvd2VkLCBpdGVyYXRlcyB0aHJvdWdoIHRoZSBw
b3NzaWJsZSBkcm9wRWZmZWN0czogbm9uZSwgY29weSwgbW92ZSwgbGluaywgZHVtbXkuIik7CiAg
ICAgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiAgICA8L3NjcmlwdD4KPC9ib2R5
Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40187</attachid>
            <date>2009-09-26 19:22:43 -0700</date>
            <delta_ts>2009-09-30 14:34:32 -0700</delta_ts>
            <desc>Patch with test case</desc>
            <filename>Bug24731_updatedtest.patch</filename>
            <type>text/plain</type>
            <size>22225</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA0ODc5MikKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDktMjYgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAg
ICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAg
ICAgSW1wbGVtZW50cyBzdXBwb3J0IGZvciBESFRNTCBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMg
KGkuZS4gb25kcmFnc3RhcnQsIG9uZHJhZ2VuZCkKKyAgICAgICAgaW4gdGhlIFdpbmRvd3MgYnVp
bGQgc28gdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgTWFjIE9TIFggYnVpbGQuIEhlbmNlLCBkcm9w
RWZmZWN0IGlzCisgICAgICAgIGNvcnJlY3RseSBzZXQuCisgICAgICAgIAorICAgICAgICBUaGUg
V2ViVmlldyBhbmQgV2ViRHJvcFNvdXJjZSBkcmFnLWFuZC1kcm9wIGZ1bmN0aW9ucywgYXMgY2Fs
bGVkIGJ5IGZ1bmN0aW9uCisgICAgICAgIERvRHJhZ0Ryb3AgaW4gaXRzIGV2ZW50IGxvb3AsIG5l
aXRoZXIgdXNlZCB0aGUgZHJvcCBlZmZlY3QgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IG5vciByZXNwZWN0ZWQgZXZlbnQuZGF0YVRyYW5zZmVy
LmVmZmVjdHNBbGxvd2VkLgorICAgICAgICBJbnN0ZWFkLCB0aGVzZSBmdW5jdGlvbnMgZGVmYXVs
dGVkIHRvIHNvbWUgaGFyZGNvZGVkIGRyb3AgZWZmZWN0IGFuZCBzZXQgb2YKKyAgICAgICAgYWxs
b3dlZCBkcm9wIGVmZmVjdHMsIHJlc3BlY3RpdmVseS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFn
KToKKyAgICAgICAgKiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRyb3BTb3VyY2U6
OlF1ZXJ5Q29udGludWVEcmFnKTogTW92ZWQgY2FsbCB0byBFdmVudEhhbmRsZXI6OmRyYWdTb3Vy
Y2VFbmRlZEF0CisgICAgICAgIGludG8gbWV0aG9kIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZy4K
KyAgICAgICAgKiBXZWJEcm9wU291cmNlLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbik6IERldGVybWluZXMgYXBwcm9w
cmlhdGUgZHJvcCBlZmZlY3QgZnJvbSBzdGF0ZQorICAgICAgICBvZiBrZXlib2FyZCBhbmQgYWxs
b3dlZCBlZmZlY3RzIHxvcGVyYXRpb258LgorICAgICAgICAoV2ViVmlldzo6RHJhZ0VudGVyKToK
KyAgICAgICAgKFdlYlZpZXc6OkRyYWdPdmVyKToKKyAgICAgICAgKFdlYlZpZXc6OkRyb3ApOgor
ICAgICAgICAqIFdlYlZpZXcuaDogQWRkZWQgZmllbGQgbV9sYXN0RHJvcEVmZmVjdC4gRXhwb3Nl
ZCBtZXRob2QgV2ViVmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24uCisKIDIwMDktMDktMjUg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0
ZXZlIEZhbGtlbmJ1cmcuCkluZGV4OiBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAJKHJldmlzaW9uIDQ4NzkyKQor
KysgV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAK
ICNpbmNsdWRlIDxXaW5kb3dzLmg+CkBAIC0xMDYsMTAgKzEwNSw2IEBAIFNURE1FVEhPRElNUCBX
ZWJEcm9wU291cmNlOjpRdWVyeUNvbnRpbnUKIHsKICAgICBpZiAoZkVzY2FwZVByZXNzZWQgfHwg
IShncmZLZXlTdGF0ZSAmIChNS19MQlVUVE9OfE1LX1JCVVRUT04pKSkgewogICAgICAgICBtX2Ry
b3BwZWQgPSAhZkVzY2FwZVByZXNzZWQ7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV93ZWJW
aWV3LT5wYWdlKCkpCi0gICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZy
YW1lKCkpIAotICAgICAgICAgICAgICAgIC8vRklYTUU6IFdlIG5lZWQgdG8gZmlndXJlIG91dCBo
b3cgdG8gZmluZCBvdXQgd2hhdCBhY3R1YWxseSBoYXBwZW5lZCBpbiB0aGUgZHJhZyA8cmRhcjov
L3Byb2JsZW0vNTAxNTk2MT4KLSAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PmRyYWdTb3VyY2VFbmRlZEF0KGdlbmVyYXRlTW91c2VFdmVudChtX3dlYlZpZXcuZ2V0KCksIGZh
bHNlKSwgZkVzY2FwZVByZXNzZWQgPyBEcmFnT3BlcmF0aW9uTm9uZSA6IERyYWdPcGVyYXRpb25D
b3B5KTsKICAgICAgICAgcmV0dXJuIGZFc2NhcGVQcmVzc2VkPyBEUkFHRFJPUF9TX0NBTkNFTCA6
IERSQUdEUk9QX1NfRFJPUDsKICAgICB9IGVsc2UgaWYgKFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXct
PnBhZ2UoKSkKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpKSAK
SW5kZXg6IFdlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViRHJvcFNvdXJjZS5oCShyZXZpc2lvbiA0ODc5MikKKysrIFdlYktpdC93aW4vV2ViRHJv
cFNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMiBAQAogI2luY2x1ZGUgIkNP
TVB0ci5oIgogI2luY2x1ZGUgPG9iamlkbC5oPgogCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bU1vdXNlRXZlbnQuaD4KKwogY2xhc3MgV2ViVmlldzsKIAorV2ViQ29yZTo6UGxhdGZvcm1Nb3Vz
ZUV2ZW50IGdlbmVyYXRlTW91c2VFdmVudChXZWJWaWV3KiB3ZWJWaWV3LCBib29sIGlzRHJhZyk7
CisKIGNsYXNzIFdlYkRyb3BTb3VyY2UgOiBwdWJsaWMgSURyb3BTb3VyY2UKIHsKIHB1YmxpYzoK
SW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAkocmV2aXNpb24gNDg3OTIpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NjE1LDExICs0NjE1LDMxIEBAIHN0YXRpYyBEV09SRCBkcmFnT3Bl
cmF0aW9uVG9EcmFnQ3Vyc29yKEQKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgRHJhZ09w
ZXJhdGlvbiBrZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCkgewotICAgIC8vRklYTUU6IFRo
aXMgaXMgY3VycmVudGx5IHZlcnkgc2ltcGxlLCBpdCBtYXkgbmVlZCB0byBhY3R1YWxseQotICAg
IC8vd29yayBvdXQgYW4gYXBwcm9wcmlhdGUgRHJhZ09wZXJhdGlvbiBpbiBmdXR1cmUgLS0gaG93
ZXZlciB0aGlzCi0gICAgLy9iZWhhdmlvdXIgYXBwZWFycyB0byBtYXRjaCBGaXJlRm94Ci0gICAg
cmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uQ29weSB8IERyYWdPcGVyYXRpb25M
aW5rKTsKK0RyYWdPcGVyYXRpb24gV2ViVmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdP
UkQgZ3JmS2V5U3RhdGUpIHsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIERyYWdP
cGVyYXRpb25Ob25lOworCisgICAgLy8gQ29uZm9ybXMgdG8gTWljcm9zb2Z0J3Mga2V5IGNvbWJp
bmF0aW9ucyBhcyBkb2N1bWVudGVkIGZvciAKKyAgICAvLyBJRHJvcFRhcmdldDo6RHJhZ092ZXIu
IE5vdGUsIHxncmZLZXlTdGF0ZXwgaXMgdGhlIGN1cnJlbnQgCisgICAgLy8gc3RhdGUgb2YgdGhl
IGtleWJvYXJkIG1vZGlmaWVyIGtleXMgb24gdGhlIGtleWJvYXJkLiBTZWU6CisgICAgLy8gaHR0
cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjgwMTI5KFZTLjg1KS5hc3B4
CisgICAgLy8KKyAgICAvLyBCeSBkZWZhdWx0LCB3ZSByZXR1cm4gdGhlIHNvdXJjZSBkcmFnIG9w
ZXJhdGlvbiB0byBjb25mb3JtIHdpdGggdGhlIE1hYyBPUyBYIGJ1aWxkLgorICAgIAorICAgIERy
YWdPcGVyYXRpb24gb3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLT5zb3VyY2VE
cmFnT3BlcmF0aW9uKCk7CisgICAgaWYgKG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSkK
KyAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkNvcHk7CisKKyAgICBpZiAoKGdyZktl
eVN0YXRlICYgKE1LX0NPTlRST0wgfCBNS19TSElGVCkpID09IChNS19DT05UUk9MIHwgTUtfU0hJ
RlQpKQorICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTGluazsKKyAgICBpZiAoKGdy
ZktleVN0YXRlICYgTUtfQ09OVFJPTCkgPT0gTUtfQ09OVFJPTCkKKyAgICAgICAgb3BlcmF0aW9u
ID0gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgaWYgKChncmZLZXlTdGF0ZSAmIE1LX1NISUZUKSA9
PSBNS19TSElGVCkKKyAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk1vdmU7CisKKyAg
ICBpZiAoKG9wZXJhdGlvbiAmIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+c291cmNlRHJhZ09w
ZXJhdGlvbigpKSAhPSBvcGVyYXRpb24pCisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRp
b25Ob25lOworICAgIHJldHVybiBvcGVyYXRpb247CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6RHJhZ0VudGVyKApAQCAtNDYzNiw2ICs0NjU2LDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpEcmFnRQogICAgICAgICBJbnRQb2ludChwdC54LCBw
dC55KSwga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oZ3JmS2V5U3RhdGUpKTsKICAgICAqcGR3RWZm
ZWN0ID0gZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcihtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkt
PmRyYWdFbnRlcmVkKCZkYXRhKSk7CiAKKyAgICBtX2xhc3REcm9wRWZmZWN0ID0gKnBkd0VmZmVj
dDsKICAgICBtX2RyYWdEYXRhID0gcERhdGFPYmplY3Q7CiAKICAgICByZXR1cm4gU19PSzsKQEAg
LTQ2NTYsNiArNDY3Nyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJh
Z08KICAgICB9IGVsc2UKICAgICAgICAgKnBkd0VmZmVjdCA9IERST1BFRkZFQ1RfTk9ORTsKIAor
ICAgIG1fbGFzdERyb3BFZmZlY3QgPSAqcGR3RWZmZWN0OwogICAgIHJldHVybiBTX09LOwogfQog
CkBAIC00NjgwLDcgKzQ3MDIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OkRyb3AoCiAgICAgICAgIG1fZHJvcFRhcmdldEhlbHBlci0+RHJvcChwRGF0YU9iamVjdCwgKFBP
SU5UKikmcHQsICpwZHdFZmZlY3QpOwogCiAgICAgbV9kcmFnRGF0YSA9IDA7Ci0gICAgKnBkd0Vm
ZmVjdCA9IERST1BFRkZFQ1RfTk9ORTsKKyAgICAqcGR3RWZmZWN0ID0gbV9sYXN0RHJvcEVmZmVj
dDsKICAgICBQT0lOVEwgbG9jYWxwdCA9IHB0OwogICAgIDo6U2NyZWVuVG9DbGllbnQobV92aWV3
V2luZG93LCAoTFBQT0lOVCkmbG9jYWxwdCk7CiAgICAgRHJhZ0RhdGEgZGF0YShwRGF0YU9iamVj
dCwgSW50UG9pbnQobG9jYWxwdC54LCBsb2NhbHB0LnkpLCAKSW5kZXg6IFdlYktpdC93aW4vV2Vi
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5oCShyZXZpc2lvbiA0ODc5
MikKKysrIFdlYktpdC93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgog
CisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50
UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dp
bmRvd01lc3NhZ2VMaXN0ZW5lci5oPgpAQCAtODU2LDYgKzg1NywxNCBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGFpbnRJbnRvQmFja2luZ1N0b3JlKFdlYkNvcmU6OkZyYW1lVmlldyosIEhEQyBiaXRt
YXBEQywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0LCBXaW5kb3dzVG9QYWludCk7
CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoV2ViQ29yZTo6RnJhbWVWaWV3KiwgSERDID0g
MCwgYm9vbCBiYWNraW5nU3RvcmVDb21wbGV0ZWx5RGlydHkgPSBmYWxzZSwgV2luZG93c1RvUGFp
bnQgPSBQYWludFdlYlZpZXdPbmx5KTsKIAorICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24ga2V5
U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpOworICAgIAorICAgIC8vIEZJ
WE1FOiBUaGlzIHZhcmlhYmxlIGlzIHBhcnQgb2YgYSB3b3JrYXJvdW5kLiBUaGUgZHJvcCBlZmZl
Y3QgKHBkd0VmZmVjdCkgcGFzc2VkIHRvIERyb3AgaXMgaW5jb3JyZWN0LiAKKyAgICAvLyBXZSBz
ZXQgdGhpcyB2YXJpYWJsZSBpbiBEcmFnRW50ZXIgYW5kIERyYWdPdmVyIHNvIHRoYXQgaXQgY2Fu
IGJlIHVzZWQgaW4gRHJvcCB0byBzZXQgdGhlIGNvcnJlY3QgZHJvcCBlZmZlY3QuIAorICAgIC8v
IFRodXMsIG9uIHJldHVybiBmcm9tIERvRHJhZ0Ryb3Agd2UgaGF2ZSB0aGUgY29ycmVjdCBwZHdF
ZmZlY3QgZm9yIHRoZSBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbi4KKyAgICAvLyAoc2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTI2NCkKKyAgICBEV09SRCBtX2xh
c3REcm9wRWZmZWN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSElNQyBnZXRJTU1Db250ZXh0KCk7CiAg
ICAgdm9pZCByZWxlYXNlSU1NQ29udGV4dChISU1DKTsKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkocmV2aXNpb24gNDg3OTIpCisrKyBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTYsMTYgKzE1NiwyNiBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VS
CiAKICAgICAgICAgLy9GSVhNRTogRW5zdXJlIGNvcnJlY3QgZHJhZyBvcHMgYXJlIGF2YWlsYWJs
ZSA8cmRhcjovL3Byb2JsZW0vNTAxNTk1Nz4KICAgICAgICAgRFdPUkQgb2tFZmZlY3QgPSBEUk9Q
RUZGRUNUX0NPUFkgfCBEUk9QRUZGRUNUX0xJTksgfCBEUk9QRUZGRUNUX01PVkU7Ci0gICAgICAg
IERXT1JEIGVmZmVjdDsKKyAgICAgICAgRFdPUkQgZWZmZWN0ID0gRFJPUEVGRkVDVF9OT05FOwog
ICAgICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+IHVpOworICAgICAgICBib29sIGlzVUlEZWxl
Z2F0ZSA9IGZhbHNlOwogICAgICAgICBpZiAoU1VDQ0VFREVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0
ZSgmdWkpKSkgewogICAgICAgICAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlUHJpdmF0ZT4gdWlQ
cml2YXRlOwogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRCh1aS0+UXVlcnlJbnRlcmZhY2UoSUlE
X0lXZWJVSURlbGVnYXRlUHJpdmF0ZSwgKHZvaWQqKikmdWlQcml2YXRlKSkpCiAgICAgICAgICAg
ICAgICAgaWYgKFNVQ0NFRURFRCh1aVByaXZhdGUtPmRvRHJhZ0Ryb3AobV93ZWJWaWV3LCBkYXRh
T2JqZWN0LmdldCgpLCBzb3VyY2UuZ2V0KCksIG9rRWZmZWN0LCAmZWZmZWN0KSkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgaXNVSURlbGVnYXRlID0g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIERvRHJhZ0Ryb3AoZGF0YU9iamVjdC5nZXQoKSwg
c291cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCk7CisgICAgICAgIERyYWdPcGVyYXRpb24g
b3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIGlmIChpc1VJRGVsZWdhdGUg
fHwgRG9EcmFnRHJvcChkYXRhT2JqZWN0LmdldCgpLCBzb3VyY2UuZ2V0KCksIG9rRWZmZWN0LCAm
ZWZmZWN0KSA9PSBEUkFHRFJPUF9TX0RST1ApIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QgJiBE
Uk9QRUZGRUNUX0NPUFkpCisgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlv
bkNvcHk7CisgICAgICAgICAgICBlbHNlIGlmIChlZmZlY3QgJiBEUk9QRUZGRUNUX0xJTkspCisg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgICAg
ICBlbHNlIGlmIChlZmZlY3QgJiBEUk9QRUZGRUNUX01PVkUpCisgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uID0gRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgICAgIH0KKyAgICAgICAgZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRBdChnZW5lcmF0ZU1vdXNlRXZlbnQobV93ZWJW
aWV3LCBmYWxzZSksIG9wZXJhdGlvbik7CiAgICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0
ODc5MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE4IEBACisyMDA5LTA5LTI2ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ3MzEKKyAgICAgICAgQW5kCisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzUwMTU5NjEKKyAgICAgICAgCisgICAgICAgIFRlc3RzIHRoYXQgREhU
TUwgZHJhZy1hbmQtZHJvcCB3b3JrcyBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50
cy9kcmFnLWFuZC1kcm9wLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvZHJhZy1hbmQtZHJvcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tp
cHBlZDogVGhpcyB0ZXN0IGRvZXMgbm90IHdvcmsgdW5kZXIgIAorICAgICAgICBXaW5kb3dzIERS
VC4gV2UgbmVlZCB0aGUgZml4IGZvciBidWcgIzI4OTAyLgorCiAyMDA5LTA5LTI1ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9w
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Ry
YWctYW5kLWRyb3AtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk3IEBACitU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgZHJhZy1hbmQtZHJvcCBzdXBwb3J0IHdvcmtzIGFuZCBjb25m
b3JtcyB0byB0aGUgSFRNTCA1IHNwZWNpZmljYXRpb24uCitGb3IgZWFjaCBlZmZlY3RBbGxvd2Vk
LCBpdGVyYXRlcyB0aHJvdWdoIHRoZSBwb3NzaWJsZSBkcm9wRWZmZWN0czogbm9uZSwgY29weSwg
bW92ZSwgbGluaywgZHVtbXkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitlZmZl
Y3RBbGxvd2VkICAKKworRHJvcCB0aGUgcmVkIHNxdWFyZSBvbnRvIG1lLgorCitFeHBlY3RzIGRy
b3BFZmZlY3QgCitJdGVtcyB0aGF0IGNhbiBiZSBkcmFnZ2VkIHRvIHRoZSBkcm9wIHRhcmdldDoK
KworU3F1YXJlCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAidW5pbml0aWFsaXplZCIKKworUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25z
W2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0u
c2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
aXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52
YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxl
bS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQg
PT0gIm5vbmUiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVm
ZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5k
cm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBp
cyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJhbGwiCisKK1BBU1MgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0
RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5k
ZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZl
Y3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1Mg
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tk
cm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNm
ZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJjb3B5Igor
CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9w
dGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0
RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5v
bmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVu
IGVmZmVjdEFsbG93ZWQgPT0gIm1vdmUiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZElu
ZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIK
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0
aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRy
b3BFZmZlY3QgaXMgIm5vbmUiCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAibGluayIKKworUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25z
W2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJv
cEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQor
UEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZl
Y3RBbGxvd2VkID09ICJjb3B5TW92ZSIKKworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5k
ZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZl
Y3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1Mg
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tk
cm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNm
ZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZl
Y3QgaXMgIm5vbmUiCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAiY29weUxpbmsiCisKK1BBU1Mg
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tk
cm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNm
ZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNl
bGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlz
ICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0
RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2
ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93
ZWQgPT0gImxpbmtNb3ZlIgorCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlz
IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFs
dWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2
ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJv
cEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVy
LmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxl
Y3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAi
bm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJkdW1teSIKKworUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RF
bGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZm
ZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9u
ZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2
ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTg0IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5
bGU+CisjZHJvcFRhcmdldCwgI2RyYWdNZSB7IHRleHQtYWxpZ246IGNlbnRlcjsgZGlzcGxheTog
dGFibGUtY2VsbDsgdmVydGljYWwtYWxpZ246IG1pZGRsZSB9CisjZHJvcFRhcmdldCB7d2lkdGg6
IDI1NnB4OyBoZWlnaHQ6IDI1NnB4OyBib3JkZXI6IDFweCBkYXNoZWR9CisjZHJhZ01lIHstd2Vi
a2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgYmFja2dy
b3VuZDogI2ZmMDAwMDsgd2lkdGg6IDY0cHg7IGhlaWdodDogNjRweDsgY29sb3I6IHdoaXRlfQor
PC9zdHlsZT4KKzxzY3JpcHQ+CisgICAgdmFyIGRyYWdNZTsKKyAgICB2YXIgZHJvcFRhcmdldDsK
KyAgICB2YXIgZWZmZWN0QWxsb3dlZEVsZW07CisgICAgdmFyIGRyb3BFZmZlY3RFbGVtOworICAg
IHZhciBjb25zb2xlRWxtOworICAgIHZhciBldmVudDsKKyAgICAKKyAgICB3aW5kb3cub25sb2Fk
ID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZHJhZ01lID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImRyYWdNZSIpOworICAgICAgICBkcm9wVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImRyb3BUYXJnZXQiKTsKKyAgICAgICAgZWZmZWN0QWxsb3dlZEVsZW0gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZWZmZWN0QWxsb3dlZCIpOworICAgICAgICBkcm9wRWZmZWN0RWxl
bSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wRWZmZWN0Iik7CisgICAgICAgIGNvbnNv
bGVFbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAKKyAg
ICAgICAgaWYgKCFkcmFnTWUgfHwgIWRyb3BUYXJnZXQgfHwgIWVmZmVjdEFsbG93ZWRFbGVtIHx8
ICFkcm9wRWZmZWN0RWxlbSB8fCAhY29uc29sZUVsbSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgCisgICAgICAgIGRyYWdNZS5vbmRyYWdzdGFydCA9IGRyYWdTdGFydDsKKyAgICAgICAg
ZHJhZ01lLm9uZHJhZ2VuZCA9IGRyYWdFbmQ7CisgICAgICAgIAorICAgICAgICBkcm9wVGFyZ2V0
Lm9uZHJhZ2VudGVyID0gZHJhZ0VudGVyZWQ7CisgICAgICAgIGRyb3BUYXJnZXQub25kcmFnb3Zl
ciA9IGRyYWdPdmVyOworICAgICAgICBkcm9wVGFyZ2V0Lm9uZHJvcCA9IGRyb3A7CisgICAgICAg
IAorICAgICAgICBydW5UZXN0KCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdTdGFy
dChlKQorICAgIHsKKyAgICAgICAgZXZlbnQgPSBlOworICAgICAgICBlLmRhdGFUcmFuc2Zlci5l
ZmZlY3RBbGxvd2VkID0gZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tlZmZlY3RBbGxvd2VkRWxl
bS5zZWxlY3RlZEluZGV4XS52YWx1ZTsKKyAgICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0RGF0YSgn
VGV4dCcsIGUudGFyZ2V0LnRleHRDb250ZW50KTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24g
ZHJhZ0VuZChlKQorICAgIHsKKyAgICAgICAgY2hlY2tEcmFnU3RhdGUoZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZHJhZ0VudGVyZWQoZSkKKyAgICB7Cisg
ICAgICAgIGRyYWdFbnRlcmVkQW5kVXBkYXRlZChlKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rp
b24gZHJhZ092ZXIoZSkKKyAgICB7CisgICAgICAgIGRyYWdFbnRlcmVkQW5kVXBkYXRlZChlKTsK
KyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZHJhZ0VudGVyZWRBbmRVcGRhdGVkKGUpCisgICAg
eworICAgICAgICBldmVudCA9IGU7CisgICAgICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
PSBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZh
bHVlOworICAgICAgICBjYW5jZWxEcmFnKGUpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBk
cm9wKGUpCisgICAgeworICAgICAgICBjYW5jZWxEcmFnKGUpOworICAgIH0KKyAgICAKKyAgICBm
dW5jdGlvbiBjYW5jZWxEcmFnKGUpCisgICAgeworICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVs
dCkKKyAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAvLyBBc3N1bWUgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIHdpdGhpbiBJbnRlcm5l
dCBFeHBsb3JlcgorICAgICAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGNoZWNrRHJhZ1N0YXRlKGUpCisgICAgeworICAg
ICAgICBldmVudCA9IGU7CisgICAgICAgIHZhciBjaG9zZW5Ecm9wRWZmZWN0ID0gZHJvcEVmZmVj
dEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZTsKKyAgICAg
ICAgdmFyIGNob3NlbkVmZmVjdEFsbG93ZWQgPSBlZmZlY3RBbGxvd2VkRWxlbS5vcHRpb25zW2Vm
ZmVjdEFsbG93ZWRFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlOworICAgICAgICB2YXIgYWN0dWFs
RHJvcEVmZmVjdCA9IGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q7CisgICAgICAgIAorICAgICAg
ICBpZiAoaXNEcm9wRWZmZWN0QWxsb3dlZChjaG9zZW5Ecm9wRWZmZWN0LCBjaG9zZW5FZmZlY3RB
bGxvd2VkKSkKKyAgICAgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2V2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0JywgJ2Ryb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2Vs
ZWN0ZWRJbmRleF0udmFsdWUnKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCcsICdub25lJyk7Cisg
ICAgICAgICAgICAKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gaXNEcm9wRWZmZWN0QWxsb3dl
ZChjaG9zZW5Ecm9wRWZmZWN0LCBhbGxvd2VkRHJvcEVmZmVjdCkgeworICAgICAgICAvLyBFeHRy
YWN0ZWQgZnJvbSB0aGUgSFRNTCA1IGRyYWctYW5kLWRyb3Agc2VjdGlvbiwgaHR0cDovL2Rldi53
My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RuZAorICAgICAgICBpZiAoY2hvc2VuRHJv
cEVmZmVjdCA9PSAibm9uZSIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYg
KGNob3NlbkRyb3BFZmZlY3QgPT0gImNvcHkiICYmIChhbGxvd2VkRHJvcEVmZmVjdCA9PSAiY29w
eSIgfHwgYWxsb3dlZERyb3BFZmZlY3QgPT0gImNvcHlMaW5rIiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYWxsb3dlZERyb3BFZmZlY3QgPT0gImNvcHlN
b3ZlIiB8fCBhbGxvd2VkRHJvcEVmZmVjdCA9PSAidW5pbml0aWFsaXplZCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYWxsb3dlZERyb3BFZmZlY3QgPT0g
ImFsbCIpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChjaG9zZW5Ecm9w
RWZmZWN0ID09ICJtb3ZlIiAmJiAoYWxsb3dlZERyb3BFZmZlY3QgPT0gIm1vdmUiIHx8IGFsbG93
ZWREcm9wRWZmZWN0ID09ICJjb3B5TW92ZSIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IGFsbG93ZWREcm9wRWZmZWN0ID09ICJsaW5rTW92ZSIgfHwgYWxs
b3dlZERyb3BFZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHx8IGFsbG93ZWREcm9wRWZmZWN0ID09ICJhbGwiKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoY2hvc2VuRHJvcEVmZmVjdCA9PSAi
bGluayIgJiYgKGFsbG93ZWREcm9wRWZmZWN0ID09ICJsaW5rIiB8fCBhbGxvd2VkRHJvcEVmZmVj
dCA9PSAiY29weUxpbmsiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8fCBhbGxvd2VkRHJvcEVmZmVjdCA9PSAibGlua01vdmUiIHx8IGFsbG93ZWREcm9wRWZm
ZWN0ID09ICJ1bmluaXRpYWxpemVkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8fCBhbGxvd2VkRHJvcEVmZmVjdCA9PSAiYWxsIikpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgIAorICAgICAgICB2YXIgc3RhcnRYID0gZHJhZ01lLm9mZnNldExl
ZnQgKyAxMDsKKyAgICAgICAgdmFyIHN0YXJ0WSA9IGRyYWdNZS5vZmZzZXRUb3AgKyBkcmFnTWUu
b2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgdmFyIGVuZFggPSBkcm9wVGFyZ2V0Lm9mZnNldExl
ZnQgKyAxMDsKKyAgICAgICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRyb3BU
YXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgCisgICAgICAgIHZhciBudW1FZmZlY3RB
bGxvd2VkID0gZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9ucy5sZW5ndGg7CisgICAgICAgIHZhciBu
dW1FZmZlY3RzID0gZHJvcEVmZmVjdEVsZW0ub3B0aW9ucy5sZW5ndGg7CisgICAgICAgIAorICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUVmZmVjdEFsbG93ZWQ7ICsraSkgeworICAgICAg
ICAgICAgZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tpXS5zZWxlY3RlZCA9IHRydWU7CisgICAg
ICAgICAgICBkZWJ1ZygnPGJyIC8+V2hlbiBlZmZlY3RBbGxvd2VkID09ICInICsgZWZmZWN0QWxs
b3dlZEVsZW0ub3B0aW9uc1tpXS52YWx1ZSArICciPGJyIC8+Jyk7CisgICAgICAgICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IG51bUVmZmVjdHM7ICsraikgeworICAgICAgICAgICAgICAgIGRyb3BF
ZmZlY3RFbGVtLm9wdGlvbnNbal0uc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5sZWFw
Rm9yd2FyZCgxMDApOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVu
ZFgsIGVuZFkpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBh
c3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICA8bGFiZWwgZm9yPSJlZmZl
Y3RBbGxvd2VkIj5lZmZlY3RBbGxvd2VkPC9sYWJlbD4gPHNlbGVjdCBpZD0iZWZmZWN0QWxsb3dl
ZCI+CisgICAgICAgIDxvcHRpb24gdmFsdWU9InVuaW5pdGlhbGl6ZWQiPlVuaW5pdGlhbGl6ZWQ8
L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibm9uZSI+Tm9uZTwvb3B0aW9uPgorICAg
ICAgICA8b3B0aW9uIHZhbHVlPSJhbGwiPkFsbDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZh
bHVlPSJjb3B5Ij5Db3B5PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9Im1vdmUiPk1v
dmU8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGluayI+TGluazwvb3B0aW9uPgor
ICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5TW92ZSI+Q29weU1vdmU8L29wdGlvbj4KKyAgICAg
ICAgPG9wdGlvbiB2YWx1ZT0iY29weUxpbmsiPkNvcHlMaW5rPC9vcHRpb24+CisgICAgICAgIDxv
cHRpb24gdmFsdWU9ImxpbmtNb3ZlIj5MaW5rTW92ZTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9u
IHZhbHVlPSJkdW1teSI+Tm9uZXhpc3RlbnQgKER1bW15KSBFZmZlY3Q8L29wdGlvbj4KKyAgICA8
L3NlbGVjdD4KKyAgICA8YnIvPjxici8+CisgICAgPGRpdiBpZD0iZHJvcFRhcmdldCI+RHJvcCB0
aGUgcmVkIHNxdWFyZSBvbnRvIG1lLjxici8+PGJyLz4KKyAgICAgICAgPGxhYmVsIGZvcj0iZHJv
cEVmZmVjdCI+RXhwZWN0cyBkcm9wRWZmZWN0PC9sYWJlbD4gPHNlbGVjdCBpZD0iZHJvcEVmZmVj
dCI+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJub25lIj5Ob25lPC9vcHRpb24+CisgICAg
ICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5Ij5Db3B5PC9vcHRpb24+CisgICAgICAgICAgICA8
b3B0aW9uIHZhbHVlPSJtb3ZlIj5Nb3ZlPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZh
bHVlPSJsaW5rIj5MaW5rPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJkdW1t
eSI+Tm9uZXhpc3RlbnQgKER1bW15KSBFZmZlY3Q8L29wdGlvbj4KKyAgICAgICAgPC9zZWxlY3Q+
CisgICAgPC9kaXY+CisgICAgPGhyLz4KKyAgICA8cD5JdGVtcyB0aGF0IGNhbiBiZSBkcmFnZ2Vk
IHRvIHRoZSBkcm9wIHRhcmdldDo8L3A+CisgICAgPGRpdiBpZD0iZHJhZ01lIiBkcmFnZ2FibGU9
InRydWUiPlNxdWFyZTwvZGl2PgorICAgIDxoci8+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3Mg
dGhhdCBkcmFnLWFuZC1kcm9wIHN1cHBvcnQgd29ya3MgYW5kIGNvbmZvcm1zIHRvIHRoZSBIVE1M
IDUgc3BlY2lmaWNhdGlvbi48YnIvPiIgKworICAgICAgICAgICAgICAgICAgICAiRm9yIGVhY2gg
ZWZmZWN0QWxsb3dlZCwgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgcG9zc2libGUgZHJvcEVmZmVjdHM6
IG5vbmUsIGNvcHksIG1vdmUsIGxpbmssIGR1bW15LiIpOworICAgICAgICB2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA0ODc5MikKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDkgQEAg
ZWRpdGluZy9zZWxlY3Rpb24vZHJhZy1pbi1pZnJhbWUuaHRtbAogZmFzdC9ldmVudHMvZHJhZy1p
bi1mcmFtZXMuaHRtbAogZmFzdC9ldmVudHMvc3RhbmRhbG9uZS1pbWFnZS1kcmFnLXRvLWVkaXRh
YmxlLmh0bWwKIAorIyBXaW5kb3dzIERSVCBkcmFnLWFuZC1kcm9wIGRvZXMgbm90IHdvcmsgY29y
cmVjdGx5IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg5MDIpCitm
YXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwKKwogIyA8cmRhcjovL3Byb2JsZW0vNTY0MzY3
NT4gd2luZG93LnNjcm9sbFRvIHNjcm9sbHMgYSB3aW5kb3cgd2l0aCBubyBzY3JvbGxiYXJzCiBm
YXN0L2V2ZW50cy9hdHRlbXB0LXNjcm9sbC13aXRoLW5vLXNjcm9sbGJhcnMuaHRtbAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40400</attachid>
            <date>2009-09-30 14:34:32 -0700</date>
            <delta_ts>2009-10-11 18:23:45 -0700</delta_ts>
            <desc>Patch with test case</desc>
            <filename>Bug24731_093009_1.patch</filename>
            <type>text/plain</type>
            <size>21216</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA0ODk0NCkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMDktMDktMzAgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAg
ICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAg
ICAgSW1wbGVtZW50cyBzdXBwb3J0IGZvciBESFRNTCBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMg
KGkuZS4gb25kcmFnc3RhcnQsIG9uZHJhZ2VuZCkKKyAgICAgICAgaW4gdGhlIFdpbmRvd3MgYnVp
bGQgc28gdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgTWFjIE9TIFggYnVpbGQuIEhlbmNlLCBkcm9w
RWZmZWN0IGlzCisgICAgICAgIGNvcnJlY3RseSBzZXQuCisgICAgICAgIAorICAgICAgICBUaGUg
V2ViVmlldyBhbmQgV2ViRHJvcFNvdXJjZSBkcmFnLWFuZC1kcm9wIGZ1bmN0aW9ucywgYXMgY2Fs
bGVkIGJ5IGZ1bmN0aW9uCisgICAgICAgIERvRHJhZ0Ryb3AgaW4gaXRzIGV2ZW50IGxvb3AsIG5l
aXRoZXIgdXNlZCB0aGUgZHJvcCBlZmZlY3QgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IG5vciByZXNwZWN0ZWQgZXZlbnQuZGF0YVRyYW5zZmVy
LmVmZmVjdHNBbGxvd2VkLgorICAgICAgICBJbnN0ZWFkLCB0aGVzZSBmdW5jdGlvbnMgZGVmYXVs
dGVkIHRvIHNvbWUgaGFyZGNvZGVkIGRyb3AgZWZmZWN0IGFuZCBzZXQgb2YKKyAgICAgICAgYWxs
b3dlZCBkcm9wIGVmZmVjdHMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgCisgICAgICAgIFRlc3Rz
OiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFn
KToKKyAgICAgICAgKiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRyb3BTb3VyY2U6
OlF1ZXJ5Q29udGludWVEcmFnKTogTW92ZWQgY2FsbCB0byBFdmVudEhhbmRsZXI6OmRyYWdTb3Vy
Y2VFbmRlZEF0CisgICAgICAgIGludG8gbWV0aG9kIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZy4K
KyAgICAgICAgKiBXZWJEcm9wU291cmNlLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbik6IERldGVybWluZXMgYXBwcm9w
cmlhdGUgZHJvcCBlZmZlY3QgZnJvbSBzdGF0ZQorICAgICAgICBvZiBrZXlib2FyZCBhbmQgYWxs
b3dlZCBlZmZlY3RzIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+c291cmNlRHJhZ09wZXJhdGlv
bigpLgorICAgICAgICAoV2ViVmlldzo6RHJhZ0VudGVyKToKKyAgICAgICAgKFdlYlZpZXc6OkRy
YWdPdmVyKToKKyAgICAgICAgKFdlYlZpZXc6OkRyb3ApOgorICAgICAgICAqIFdlYlZpZXcuaDog
QWRkZWQgZmllbGQgbV9sYXN0RHJvcEVmZmVjdC4gRXhwb3NlZCBtZXRob2QgV2ViVmlldzo6a2V5
U3RhdGVUb0RyYWdPcGVyYXRpb24uCisKIDIwMDktMDktMzAgIERhdmUgSHlhdHQgIDxoeWF0dEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFdlYktp
dC93aW4vV2ViRHJvcFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEcm9w
U291cmNlLmNwcAkocmV2aXNpb24gNDg5NDQpCisrKyBXZWJLaXQvd2luL1dlYkRyb3BTb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9F
dmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogI2luY2x1ZGUgPFdpbmRvd3MuaD4KQEAgLTEw
NiwxMCArMTA1LDYgQEAgU1RETUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6OlF1ZXJ5Q29udGludQog
ewogICAgIGlmIChmRXNjYXBlUHJlc3NlZCB8fCAhKGdyZktleVN0YXRlICYgKE1LX0xCVVRUT058
TUtfUkJVVFRPTikpKSB7CiAgICAgICAgIG1fZHJvcHBlZCA9ICFmRXNjYXBlUHJlc3NlZDsKLSAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXctPnBhZ2UoKSkKLSAgICAgICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKSkgCi0gICAgICAgICAgICAgICAgLy9G
SVhNRTogV2UgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBmaW5kIG91dCB3aGF0IGFjdHVhbGx5
IGhhcHBlbmVkIGluIHRoZSBkcmFnIDxyZGFyOi8vcHJvYmxlbS81MDE1OTYxPgotICAgICAgICAg
ICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVN
b3VzZUV2ZW50KG1fd2ViVmlldy5nZXQoKSwgZmFsc2UpLCBmRXNjYXBlUHJlc3NlZCA/IERyYWdP
cGVyYXRpb25Ob25lIDogRHJhZ09wZXJhdGlvbkNvcHkpOwogICAgICAgICByZXR1cm4gZkVzY2Fw
ZVByZXNzZWQ/IERSQUdEUk9QX1NfQ0FOQ0VMIDogRFJBR0RST1BfU19EUk9QOwogICAgIH0gZWxz
ZSBpZiAoUGFnZSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgpKQogICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCkpIApJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgJKHJldmlzaW9u
IDQ4OTQ0KQorKysgV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDggKzMwLDEyIEBACiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjaW5jbHVkZSA8b2JqaWRsLmg+
CiAKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgorCiBjbGFzcyBXZWJW
aWV3OwogCitXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZ2VuZXJhdGVNb3VzZUV2ZW50KFdl
YlZpZXcqLCBib29sIGlzRHJhZyk7CisKIGNsYXNzIFdlYkRyb3BTb3VyY2UgOiBwdWJsaWMgSURy
b3BTb3VyY2UKIHsKIHB1YmxpYzoKSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNDg5NDQpCisrKyBXZWJL
aXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjI0LDExICs0NjI0LDMyIEBA
IHN0YXRpYyBEV09SRCBkcmFnT3BlcmF0aW9uVG9EcmFnQ3Vyc29yKEQKICAgICByZXR1cm4gcmVz
OwogfQogCi1zdGF0aWMgRHJhZ09wZXJhdGlvbiBrZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09S
RCkgewotICAgIC8vRklYTUU6IFRoaXMgaXMgY3VycmVudGx5IHZlcnkgc2ltcGxlLCBpdCBtYXkg
bmVlZCB0byBhY3R1YWxseQotICAgIC8vd29yayBvdXQgYW4gYXBwcm9wcmlhdGUgRHJhZ09wZXJh
dGlvbiBpbiBmdXR1cmUgLS0gaG93ZXZlciB0aGlzCi0gICAgLy9iZWhhdmlvdXIgYXBwZWFycyB0
byBtYXRjaCBGaXJlRm94Ci0gICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9u
Q29weSB8IERyYWdPcGVyYXRpb25MaW5rKTsKK0RyYWdPcGVyYXRpb24gV2ViVmlldzo6a2V5U3Rh
dGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpCit7CisgICAgaWYgKCFtX3BhZ2Up
CisgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKworICAgIC8vIENvbmZvcm1zIHRv
IE1pY3Jvc29mdCdzIGtleSBjb21iaW5hdGlvbnMgYXMgZG9jdW1lbnRlZCBmb3IgCisgICAgLy8g
SURyb3BUYXJnZXQ6OkRyYWdPdmVyLiBOb3RlLCB8Z3JmS2V5U3RhdGV8IGlzIHRoZSBjdXJyZW50
IAorICAgIC8vIHN0YXRlIG9mIHRoZSBrZXlib2FyZCBtb2RpZmllciBrZXlzIG9uIHRoZSBrZXli
b2FyZC4gU2VlOgorICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFy
eS9tczY4MDEyOShWUy44NSkuYXNweAorICAgIC8vCisgICAgLy8gQnkgZGVmYXVsdCwgd2UgcmV0
dXJuIHRoZSBzb3VyY2UgZHJhZyBvcGVyYXRpb24gdG8gY29uZm9ybSB3aXRoIHRoZSBNYWMgT1Mg
WCBidWlsZC4KKyAgICAKKyAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS0+c291cmNlRHJhZ09wZXJhdGlvbigpOworICAgIGlmIChvcGVyYXRpb24g
PT0gRHJhZ09wZXJhdGlvbk5vbmUpCisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25D
b3B5OworCisgICAgaWYgKChncmZLZXlTdGF0ZSAmIChNS19DT05UUk9MIHwgTUtfU0hJRlQpKSA9
PSAoTUtfQ09OVFJPTCB8IE1LX1NISUZUKSkKKyAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJh
dGlvbkxpbms7CisgICAgaWYgKChncmZLZXlTdGF0ZSAmIE1LX0NPTlRST0wpID09IE1LX0NPTlRS
T0wpCisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgIGlmICgoZ3Jm
S2V5U3RhdGUgJiBNS19TSElGVCkgPT0gTUtfU0hJRlQpCisgICAgICAgIG9wZXJhdGlvbiA9IERy
YWdPcGVyYXRpb25Nb3ZlOworCisgICAgaWYgKChvcGVyYXRpb24gJiBtX3BhZ2UtPmRyYWdDb250
cm9sbGVyKCktPnNvdXJjZURyYWdPcGVyYXRpb24oKSkgIT0gb3BlcmF0aW9uKQorICAgICAgICBv
cGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gb3BlcmF0aW9uOwogfQog
CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OkRyYWdFbnRlcigKQEAgLTQ2NDUs
NiArNDY2Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJhZ0UKICAg
ICAgICAgSW50UG9pbnQocHQueCwgcHQueSksIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKGdyZktl
eVN0YXRlKSk7CiAgICAgKnBkd0VmZmVjdCA9IGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IobV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnRW50ZXJlZCgmZGF0YSkpOwogCisgICAgbV9sYXN0
RHJvcEVmZmVjdCA9ICpwZHdFZmZlY3Q7CiAgICAgbV9kcmFnRGF0YSA9IHBEYXRhT2JqZWN0Owog
CiAgICAgcmV0dXJuIFNfT0s7CkBAIC00NjY1LDYgKzQ2ODcsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OkRyYWdPCiAgICAgfSBlbHNlCiAgICAgICAgICpwZHdFZmZlY3Qg
PSBEUk9QRUZGRUNUX05PTkU7CiAKKyAgICBtX2xhc3REcm9wRWZmZWN0ID0gKnBkd0VmZmVjdDsK
ICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDY4OSw3ICs0NzEyLDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpEcm9wKAogICAgICAgICBtX2Ryb3BUYXJnZXRIZWxwZXIt
PkRyb3AocERhdGFPYmplY3QsIChQT0lOVCopJnB0LCAqcGR3RWZmZWN0KTsKIAogICAgIG1fZHJh
Z0RhdGEgPSAwOwotICAgICpwZHdFZmZlY3QgPSBEUk9QRUZGRUNUX05PTkU7CisgICAgKnBkd0Vm
ZmVjdCA9IG1fbGFzdERyb3BFZmZlY3Q7CiAgICAgUE9JTlRMIGxvY2FscHQgPSBwdDsKICAgICA6
OlNjcmVlblRvQ2xpZW50KG1fdmlld1dpbmRvdywgKExQUE9JTlQpJmxvY2FscHQpOwogICAgIERy
YWdEYXRhIGRhdGEocERhdGFPYmplY3QsIEludFBvaW50KGxvY2FscHQueCwgbG9jYWxwdC55KSwg
CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YlZpZXcuaAkocmV2aXNpb24gNDg5NDQpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlTGlzdGVuZXIuaD4KQEAgLTg1Nyw2ICs4
NTgsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50SW50b0JhY2tpbmdTdG9yZShXZWJDb3Jl
OjpGcmFtZVZpZXcqLCBIREMgYml0bWFwREMsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5
UmVjdCwgV2luZG93c1RvUGFpbnQpOwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKFdlYkNv
cmU6OkZyYW1lVmlldyosIEhEQyA9IDAsIGJvb2wgYmFja2luZ1N0b3JlQ29tcGxldGVseURpcnR5
ID0gZmFsc2UsIFdpbmRvd3NUb1BhaW50ID0gUGFpbnRXZWJWaWV3T25seSk7CiAKKyAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0
YXRlKTsKKyAgICAKKyAgICAvLyBGSVhNRTogVGhpcyB2YXJpYWJsZSBpcyBwYXJ0IG9mIGEgd29y
a2Fyb3VuZC4gVGhlIGRyb3AgZWZmZWN0IChwZHdFZmZlY3QpIHBhc3NlZCB0byBEcm9wIGlzIGlu
Y29ycmVjdC4gCisgICAgLy8gV2Ugc2V0IHRoaXMgdmFyaWFibGUgaW4gRHJhZ0VudGVyIGFuZCBE
cmFnT3ZlciBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIERyb3AgdG8gc2V0IHRoZSBjb3JyZWN0
IGRyb3AgZWZmZWN0LiAKKyAgICAvLyBUaHVzLCBvbiByZXR1cm4gZnJvbSBEb0RyYWdEcm9wIHdl
IGhhdmUgdGhlIGNvcnJlY3QgcGR3RWZmZWN0IGZvciB0aGUgZHJhZy1hbmQtZHJvcCBvcGVyYXRp
b24uCisgICAgLy8gKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjkyNjQpCisgICAgRFdPUkQgbV9sYXN0RHJvcEVmZmVjdDsKKwogcHJvdGVjdGVkOgogICAgIEhJ
TUMgZ2V0SU1NQ29udGV4dCgpOwogICAgIHZvaWQgcmVsZWFzZUlNTUNvbnRleHQoSElNQyk7Cklu
ZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHJldmlz
aW9uIDQ4OTQ0KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDE2ICsxNTYsMjYgQEAgdm9pZCBXZWJEcmFnQ2xpZW50
OjpzdGFydERyYWcoRHJhZ0ltYWdlUgogCiAgICAgICAgIC8vRklYTUU6IEVuc3VyZSBjb3JyZWN0
IGRyYWcgb3BzIGFyZSBhdmFpbGFibGUgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NTc+CiAgICAgICAg
IERXT1JEIG9rRWZmZWN0ID0gRFJPUEVGRkVDVF9DT1BZIHwgRFJPUEVGRkVDVF9MSU5LIHwgRFJP
UEVGRkVDVF9NT1ZFOwotICAgICAgICBEV09SRCBlZmZlY3Q7CisgICAgICAgIERXT1JEIGVmZmVj
dCA9IERST1BFRkZFQ1RfTk9ORTsKICAgICAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aTsK
KyAgICAgICAgYm9vbCBpc1VJRGVsZWdhdGUgPSBmYWxzZTsKICAgICAgICAgaWYgKFNVQ0NFRURF
RChtX3dlYlZpZXctPnVpRGVsZWdhdGUoJnVpKSkpIHsKICAgICAgICAgICAgIENPTVB0cjxJV2Vi
VUlEZWxlZ2F0ZVByaXZhdGU+IHVpUHJpdmF0ZTsKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQo
dWktPlF1ZXJ5SW50ZXJmYWNlKElJRF9JV2ViVUlEZWxlZ2F0ZVByaXZhdGUsICh2b2lkKiopJnVp
UHJpdmF0ZSkpKQogICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQodWlQcml2YXRlLT5kb0Ry
YWdEcm9wKG1fd2ViVmlldywgZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVj
dCwgJmVmZmVjdCkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgICAgIGlzVUlEZWxlZ2F0ZSA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBEb0RyYWdE
cm9wKGRhdGFPYmplY3QuZ2V0KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOwor
ICAgICAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAg
ICAgICBpZiAoaXNVSURlbGVnYXRlIHx8IERvRHJhZ0Ryb3AoZGF0YU9iamVjdC5nZXQoKSwgc291
cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCkgPT0gRFJBR0RST1BfU19EUk9QKSB7CisgICAg
ICAgICAgICBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9DT1BZKQorICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0
ICYgRFJPUEVGRkVDVF9MSU5LKQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVy
YXRpb25MaW5rOworICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9NT1ZF
KQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAg
ICB9CisgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZ2Vu
ZXJhdGVNb3VzZUV2ZW50KG1fd2ViVmlldywgZmFsc2UpLCBvcGVyYXRpb24pOwogICAgIH0KIH0K
IApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNDg5NDQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wOS0zMCAgRGFuaWVsIEJhdGVzICA8
ZGJhdGVzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NzMx
CisgICAgICAgIEFuZAorICAgICAgICByZGFyOi8vcHJvYmxlbS81MDE1OTYxCisgICAgICAgIAor
ICAgICAgICBUZXN0cyB0aGF0IERIVE1MIGRyYWctYW5kLWRyb3Agd29ya3MgY29ycmVjdGx5Lgor
CisgICAgICAgICogZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbDogQWRkZWQuCisKIDIw
MDktMDktMzAgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1h
bmQtZHJvcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvZHJhZy1hbmQtZHJvcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4OSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGRyYWctYW5kLWRyb3Agc3VwcG9y
dCB3b3JrcyBhbmQgY29uZm9ybXMgdG8gdGhlIEhUTUwgNSBzcGVjaWZpY2F0aW9uLgorRm9yIGVh
Y2ggZWZmZWN0QWxsb3dlZCwgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgcG9zc2libGUgZHJvcEVmZmVj
dHM6IG5vbmUsIGNvcHksIG1vdmUsIGxpbmssIGR1bW15LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworCitXaGVuIGVmZmVjdEFsbG93ZWQgPT0gInVuaW5pdGlhbGl6ZWQiCisKK1BB
U1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9u
c1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVt
LnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0u
dmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVs
ZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVu
dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2Vk
ID09ICJub25lIgorCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BF
ZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BB
U1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
aXMgIm5vbmUiCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAiYWxsIgorCitQQVNTIGV2ZW50LmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVj
dEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZElu
ZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZm
ZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNb
ZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAiY29weSIK
KworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5v
cHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVj
dEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJu
b25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hl
biBlZmZlY3RBbGxvd2VkID09ICJtb3ZlIgorCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJ
bmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUi
CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9w
dGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5k
cm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQgPT0gImxpbmsiCisKK1BB
U1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9u
c1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRy
b3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUK
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCisKK1doZW4gZWZm
ZWN0QWxsb3dlZCA9PSAiY29weU1vdmUiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZElu
ZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZm
ZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNb
ZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZm
ZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQgPT0gImNvcHlMaW5rIgorCitQQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNb
ZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5z
ZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBp
cyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVj
dEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBl
dmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxv
d2VkID09ICJsaW5rTW92ZSIKKworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBp
cyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZh
bHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBl
dmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ry
b3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2Vs
ZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMg
Im5vbmUiCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAiZHVtbXkiCisKK1BBU1MgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0
RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5v
bmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBl
dmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0
eWxlPgorI2Ryb3BUYXJnZXQsICNkcmFnTWUgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IGRpc3BsYXk6
IHRhYmxlLWNlbGw7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgfQorI2Ryb3BUYXJnZXQge3dpZHRo
OiAyNTZweDsgaGVpZ2h0OiAyNTZweDsgYm9yZGVyOiAxcHggZGFzaGVkfQorI2RyYWdNZSB7LXdl
YmtpdC11c2VyLWRyYWc6IGVsZW1lbnQ7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IGJhY2tn
cm91bmQ6ICNmZjAwMDA7IHdpZHRoOiA2NHB4OyBoZWlnaHQ6IDY0cHg7IGNvbG9yOiB3aGl0ZX0K
Kzwvc3R5bGU+Cis8c2NyaXB0PgorICAgIHZhciBkcmFnTWU7CisgICAgdmFyIGRyb3BUYXJnZXQ7
CisgICAgdmFyIGVmZmVjdEFsbG93ZWRFbGVtOworICAgIHZhciBkcm9wRWZmZWN0RWxlbTsKKyAg
ICB2YXIgY29uc29sZUVsbTsKKyAgICB2YXIgZXZlbnQ7CisgICAgCisgICAgd2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRyYWdNZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkcmFnTWUiKTsKKyAgICAgICAgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkcm9wVGFyZ2V0Iik7CisgICAgICAgIGVmZmVjdEFsbG93ZWRFbGVtID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImVmZmVjdEFsbG93ZWQiKTsKKyAgICAgICAgZHJvcEVmZmVjdEVs
ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJvcEVmZmVjdCIpOworICAgICAgICBjb25z
b2xlRWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICghZHJhZ01lIHx8ICFkcm9wVGFyZ2V0IHx8ICFlZmZlY3RBbGxvd2VkRWxlbSB8
fCAhZHJvcEVmZmVjdEVsZW0gfHwgIWNvbnNvbGVFbG0pCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgICAgICBkcmFnTWUub25kcmFnc3RhcnQgPSBkcmFnU3RhcnQ7CisgICAgICAg
IGRyYWdNZS5vbmRyYWdlbmQgPSBkcmFnRW5kOworICAgICAgICAKKyAgICAgICAgZHJvcFRhcmdl
dC5vbmRyYWdlbnRlciA9IGRyYWdFbnRlcmVkOworICAgICAgICBkcm9wVGFyZ2V0Lm9uZHJhZ292
ZXIgPSBkcmFnT3ZlcjsKKyAgICAgICAgZHJvcFRhcmdldC5vbmRyb3AgPSBkcm9wOworICAgICAg
ICAKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBkcmFnU3Rh
cnQoZSkKKyAgICB7CisgICAgICAgIGV2ZW50ID0gZTsKKyAgICAgICAgZS5kYXRhVHJhbnNmZXIu
ZWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWRFbGVtLm9wdGlvbnNbZWZmZWN0QWxsb3dlZEVs
ZW0uc2VsZWN0ZWRJbmRleF0udmFsdWU7CisgICAgICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEo
J1RleHQnLCBlLnRhcmdldC50ZXh0Q29udGVudCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9u
IGRyYWdFbmQoZSkKKyAgICB7CisgICAgICAgIGNoZWNrRHJhZ1N0YXRlKGUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbnRlcmVkKGUpCisgICAgewor
ICAgICAgICBkcmFnRW50ZXJlZEFuZFVwZGF0ZWQoZSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0
aW9uIGRyYWdPdmVyKGUpCisgICAgeworICAgICAgICBkcmFnRW50ZXJlZEFuZFVwZGF0ZWQoZSk7
CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbnRlcmVkQW5kVXBkYXRlZChlKQorICAg
IHsKKyAgICAgICAgZXZlbnQgPSBlOworICAgICAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
ID0gZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52
YWx1ZTsKKyAgICAgICAgY2FuY2VsRHJhZyhlKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24g
ZHJvcChlKQorICAgIHsKKyAgICAgICAgY2FuY2VsRHJhZyhlKTsKKyAgICB9CisgICAgCisgICAg
ZnVuY3Rpb24gY2FuY2VsRHJhZyhlKQorICAgIHsKKyAgICAgICAgaWYgKGUucHJldmVudERlZmF1
bHQpCisgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgLy8gQXNzdW1lIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyB3aXRoaW4gSW50ZXJu
ZXQgRXhwbG9yZXIKKyAgICAgICAgICAgIGUucmV0dXJuVmFsdWUgPSBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBjaGVja0RyYWdTdGF0ZShlKQorICAgIHsKKyAg
ICAgICAgZXZlbnQgPSBlOworICAgICAgICB2YXIgY2hvc2VuRHJvcEVmZmVjdCA9IGRyb3BFZmZl
Y3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWU7CisgICAg
ICAgIHZhciBjaG9zZW5FZmZlY3RBbGxvd2VkID0gZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tl
ZmZlY3RBbGxvd2VkRWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZTsKKyAgICAgICAgdmFyIGFjdHVh
bERyb3BFZmZlY3QgPSBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0OworICAgICAgICAKKyAgICAg
ICAgaWYgKGlzRHJvcEVmZmVjdEFsbG93ZWQoY2hvc2VuRHJvcEVmZmVjdCwgY2hvc2VuRWZmZWN0
QWxsb3dlZCkpCisgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdldmVudC5kYXRhVHJhbnNm
ZXIuZHJvcEVmZmVjdCcsICdkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNl
bGVjdGVkSW5kZXhdLnZhbHVlJyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QnLCAnbm9uZScpOwor
ICAgICAgICAgICAgCisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGlzRHJvcEVmZmVjdEFsbG93
ZWQoY2hvc2VuRHJvcEVmZmVjdCwgYWxsb3dlZERyb3BFZmZlY3QpIHsKKyAgICAgICAgLy8gRXh0
cmFjdGVkIGZyb20gdGhlIEhUTUwgNSBkcmFnLWFuZC1kcm9wIHNlY3Rpb24sIGh0dHA6Ly9kZXYu
dzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCNkbmQKKyAgICAgICAgaWYgKGNob3NlbkRy
b3BFZmZlY3QgPT0gIm5vbmUiKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlm
IChjaG9zZW5Ecm9wRWZmZWN0ID09ICJjb3B5IiAmJiBbImNvcHkiLCAiY29weUxpbmsiLCAiY29w
eU1vdmUiLCAidW5pbml0aWFsaXplZCIsICJhbGwiXS5pbmRleE9mKGFsbG93ZWREcm9wRWZmZWN0
KSAhPSAtMSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoY2hvc2VuRHJv
cEVmZmVjdCA9PSAibW92ZSIgJiYgWyJtb3ZlIiwgImNvcHlNb3ZlIiwgImxpbmtNb3ZlIiwgInVu
aW5pdGlhbGl6ZWQiLCAiYWxsIl0uaW5kZXhPZihhbGxvd2VkRHJvcEVmZmVjdCkgIT0gLTEpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGNob3NlbkRyb3BFZmZlY3QgPT0g
ImxpbmsiICYmIFsibGluayIsICJjb3B5TGluayIsICJsaW5rTW92ZSIsICJ1bmluaXRpYWxpemVk
IiwgImFsbCJdLmluZGV4T2YoYWxsb3dlZERyb3BFZmZlY3QpICE9IC0xKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBydW5UZXN0KCkKKyAgICB7CisgICAgICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgdmFyIHN0YXJ0WCA9IGRyYWdNZS5vZmZzZXRM
ZWZ0ICsgMTA7CisgICAgICAgIHZhciBzdGFydFkgPSBkcmFnTWUub2Zmc2V0VG9wICsgZHJhZ01l
Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgIHZhciBlbmRYID0gZHJvcFRhcmdldC5vZmZzZXRM
ZWZ0ICsgMTA7CisgICAgICAgIHZhciBlbmRZID0gZHJvcFRhcmdldC5vZmZzZXRUb3AgKyBkcm9w
VGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgIAorICAgICAgICB2YXIgbnVtRWZmZWN0
QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWRFbGVtLm9wdGlvbnMubGVuZ3RoOworICAgICAgICB2YXIg
bnVtRWZmZWN0cyA9IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnMubGVuZ3RoOworICAgICAgICAKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1FZmZlY3RBbGxvd2VkOyArK2kpIHsKKyAgICAg
ICAgICAgIGVmZmVjdEFsbG93ZWRFbGVtLm9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlOworICAg
ICAgICAgICAgZGVidWcoJzxiciAvPldoZW4gZWZmZWN0QWxsb3dlZCA9PSAiJyArIGVmZmVjdEFs
bG93ZWRFbGVtLm9wdGlvbnNbaV0udmFsdWUgKyAnIjxiciAvPicpOworICAgICAgICAgICAgZm9y
ICh2YXIgaiA9IDA7IGogPCBudW1FZmZlY3RzOyArK2opIHsKKyAgICAgICAgICAgICAgICBkcm9w
RWZmZWN0RWxlbS5vcHRpb25zW2pdLnNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubGVh
cEZvcndhcmQoMTAwKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhl
bmRYLCBlbmRZKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdmFyIHRlc3RDb250YWluZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdC1jb250YWluZXIiKTsKKyAgICAgICAgaWYgKHRlc3RDb250
YWluZXIpCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWlu
ZXIpOworICAgICAgICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExF
VEU8L3NwYW4+Jyk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICA8ZGl2IGlkPSJ0ZXN0LWNvbnRhaW5lciI+CisgICAg
ICAgIDxsYWJlbCBmb3I9ImVmZmVjdEFsbG93ZWQiPmVmZmVjdEFsbG93ZWQ8L2xhYmVsPiA8c2Vs
ZWN0IGlkPSJlZmZlY3RBbGxvd2VkIj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InVuaW5p
dGlhbGl6ZWQiPlVuaW5pdGlhbGl6ZWQ8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9Im5vbmUiPk5vbmU8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImFsbCI+
QWxsPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5Ij5Db3B5PC9vcHRp
b24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJtb3ZlIj5Nb3ZlPC9vcHRpb24+CisgICAg
ICAgICAgICA8b3B0aW9uIHZhbHVlPSJsaW5rIj5MaW5rPC9vcHRpb24+CisgICAgICAgICAgICA8
b3B0aW9uIHZhbHVlPSJjb3B5TW92ZSI+Q29weU1vdmU8L29wdGlvbj4KKyAgICAgICAgICAgIDxv
cHRpb24gdmFsdWU9ImNvcHlMaW5rIj5Db3B5TGluazwvb3B0aW9uPgorICAgICAgICAgICAgPG9w
dGlvbiB2YWx1ZT0ibGlua01vdmUiPkxpbmtNb3ZlPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0
aW9uIHZhbHVlPSJkdW1teSI+Tm9uZXhpc3RlbnQgKER1bW15KSBFZmZlY3Q8L29wdGlvbj4KKyAg
ICAgICAgPC9zZWxlY3Q+CisgICAgICAgIDxici8+PGJyLz4KKyAgICAgICAgPGRpdiBpZD0iZHJv
cFRhcmdldCI+RHJvcCB0aGUgcmVkIHNxdWFyZSBvbnRvIG1lLjxici8+PGJyLz4KKyAgICAgICAg
ICAgIDxsYWJlbCBmb3I9ImRyb3BFZmZlY3QiPkV4cGVjdHMgZHJvcEVmZmVjdDwvbGFiZWw+IDxz
ZWxlY3QgaWQ9ImRyb3BFZmZlY3QiPgorICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im5v
bmUiPk5vbmU8L29wdGlvbj4KKyAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5Ij5D
b3B5PC9vcHRpb24+CisgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW92ZSI+TW92ZTwv
b3B0aW9uPgorICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImxpbmsiPkxpbms8L29wdGlv
bj4KKyAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJkdW1teSI+Tm9uZXhpc3RlbnQgKER1
bW15KSBFZmZlY3Q8L29wdGlvbj4KKyAgICAgICAgICAgIDwvc2VsZWN0PgorICAgICAgICA8L2Rp
dj4KKyAgICAgICAgPGhyLz4KKyAgICAgICAgPHA+SXRlbXMgdGhhdCBjYW4gYmUgZHJhZ2dlZCB0
byB0aGUgZHJvcCB0YXJnZXQ6PC9wPgorICAgICAgICA8ZGl2IGlkPSJkcmFnTWUiIGRyYWdnYWJs
ZT0idHJ1ZSI+U3F1YXJlPC9kaXY+CisgICAgICAgIDxoci8+CisgICAgPC9kaXY+CisgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCBjaGVja3MgdGhhdCBkcmFnLWFuZC1kcm9wIHN1cHBvcnQgd29ya3MgYW5kIGNv
bmZvcm1zIHRvIHRoZSBIVE1MIDUgc3BlY2lmaWNhdGlvbi48YnIvPiIgKworICAgICAgICAgICAg
ICAgICAgICAiRm9yIGVhY2ggZWZmZWN0QWxsb3dlZCwgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgcG9z
c2libGUgZHJvcEVmZmVjdHM6IG5vbmUsIGNvcHksIG1vdmUsIGxpbmssIGR1bW15LiIpOworICAg
ICAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41010</attachid>
            <date>2009-10-11 18:23:45 -0700</date>
            <delta_ts>2009-10-12 14:09:42 -0700</delta_ts>
            <desc>Patch with test cases</desc>
            <filename>Bug24731_101109_1.patch</filename>
            <type>text/plain</type>
            <size>20906</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA0OTQyOSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMDktMTAtMTEgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAg
ICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAg
ICAgSW1wbGVtZW50cyBzdXBwb3J0IGZvciBESFRNTCBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMg
KGkuZS4gb25kcmFnc3RhcnQsIG9uZHJhZ2VuZCkKKyAgICAgICAgaW4gdGhlIFdpbmRvd3MgYnVp
bGQgc28gdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgTWFjIE9TIFggYnVpbGQuIEhlbmNlLCBkcm9w
RWZmZWN0IGlzCisgICAgICAgIGNvcnJlY3RseSBzZXQuCisgICAgICAgIAorICAgICAgICBUaGUg
V2ViVmlldyBhbmQgV2ViRHJvcFNvdXJjZSBkcmFnLWFuZC1kcm9wIGZ1bmN0aW9ucywgYXMgY2Fs
bGVkIGJ5IGZ1bmN0aW9uCisgICAgICAgIERvRHJhZ0Ryb3AgaW4gaXRzIGV2ZW50IGxvb3AsIG5l
aXRoZXIgdXNlZCB0aGUgZHJvcCBlZmZlY3QgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IG5vciByZXNwZWN0ZWQgZXZlbnQuZGF0YVRyYW5zZmVy
LmVmZmVjdHNBbGxvd2VkLgorICAgICAgICBJbnN0ZWFkLCB0aGVzZSBmdW5jdGlvbnMgZGVmYXVs
dGVkIHRvIHNvbWUgaGFyZGNvZGVkIGRyb3AgZWZmZWN0IGFuZCBzZXQgb2YKKyAgICAgICAgYWxs
b3dlZCBkcm9wIGVmZmVjdHMsIHJlc3BlY3RpdmVseS4KKworICAgICAgICBUZXN0czogZmFzdC9l
dmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAg
ICAgICogV2ViRHJvcFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEcm9wU291cmNlOjpRdWVyeUNv
bnRpbnVlRHJhZyk6IE1vdmVkIGNhbGwgdG8gRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRB
dAorICAgICAgICBpbnRvIG1ldGhvZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcuCisgICAgICAg
ICogV2ViRHJvcFNvdXJjZS5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
Vmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24pOiBGaXhlcyA8cmRhcjovL3Byb2JsZW0vNTAx
NTk2MT4uIERldGVybWluZXMKKyAgICAgICAgYXBwcm9wcmlhdGUgZHJvcCBlZmZlY3QgZnJvbSBz
dGF0ZSBvZiBrZXlib2FyZCBhbmQgYWxsb3dlZCBlZmZlY3RzCisgICAgICAgIG1fcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS0+c291cmNlRHJhZ09wZXJhdGlvbigpLgorICAgICAgICAoV2ViVmlldzo6
RHJhZ0VudGVyKToKKyAgICAgICAgKFdlYlZpZXc6OkRyYWdPdmVyKToKKyAgICAgICAgKFdlYlZp
ZXc6OkRyb3ApOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAwOS0xMC0wOSAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCShyZXZpc2lvbiA0OTI5MSkKKysrIFdlYktpdC93aW4v
V2ViRHJvcFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwxMCArMTA2LDYgQEAgU1RE
TUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6OlF1ZXJ5Q29udGludQogewogICAgIGlmIChmRXNjYXBl
UHJlc3NlZCB8fCAhKGdyZktleVN0YXRlICYgKE1LX0xCVVRUT058TUtfUkJVVFRPTikpKSB7CiAg
ICAgICAgIG1fZHJvcHBlZCA9ICFmRXNjYXBlUHJlc3NlZDsKLSAgICAgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBtX3dlYlZpZXctPnBhZ2UoKSkKLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBw
YWdlLT5tYWluRnJhbWUoKSkgCi0gICAgICAgICAgICAgICAgLy9GSVhNRTogV2UgbmVlZCB0byBm
aWd1cmUgb3V0IGhvdyB0byBmaW5kIG91dCB3aGF0IGFjdHVhbGx5IGhhcHBlbmVkIGluIHRoZSBk
cmFnIDxyZGFyOi8vcHJvYmxlbS81MDE1OTYxPgotICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1fd2ViVmll
dy5nZXQoKSwgZmFsc2UpLCBmRXNjYXBlUHJlc3NlZCA/IERyYWdPcGVyYXRpb25Ob25lIDogRHJh
Z09wZXJhdGlvbkNvcHkpOwogICAgICAgICByZXR1cm4gZkVzY2FwZVByZXNzZWQ/IERSQUdEUk9Q
X1NfQ0FOQ0VMIDogRFJBR0RST1BfU19EUk9QOwogICAgIH0gZWxzZSBpZiAoUGFnZSogcGFnZSA9
IG1fd2ViVmlldy0+cGFnZSgpKQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFp
bkZyYW1lKCkpIApJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgJKHJldmlzaW9uIDQ5MjkxKQorKysgV2ViS2l0
L3dpbi9XZWJEcm9wU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDEyIEBACiAK
IGNsYXNzIFdlYlZpZXc7CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBQbGF0Zm9y
bU1vdXNlRXZlbnQ7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1dlYkNvcmU6OlBsYXRmb3Jt
TW91c2VFdmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2ViVmlldyosIGJvb2wgaXNEcmFnKTsKKwog
Y2xhc3MgV2ViRHJvcFNvdXJjZSA6IHB1YmxpYyBJRHJvcFNvdXJjZQogewogcHVibGljOgpJbmRl
eDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiA0OTI5MSkKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2MjQsMTEgKzQ2MjQsMjUgQEAgc3RhdGljIERXT1JEIGRyYWdPcGVyYXRp
b25Ub0RyYWdDdXJzb3IoRAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0
aW9uIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEKSB7Ci0gICAgLy9GSVhNRTogVGhpcyBp
cyBjdXJyZW50bHkgdmVyeSBzaW1wbGUsIGl0IG1heSBuZWVkIHRvIGFjdHVhbGx5Ci0gICAgLy93
b3JrIG91dCBhbiBhcHByb3ByaWF0ZSBEcmFnT3BlcmF0aW9uIGluIGZ1dHVyZSAtLSBob3dldmVy
IHRoaXMKLSAgICAvL2JlaGF2aW91ciBhcHBlYXJzIHRvIG1hdGNoIEZpcmVGb3gKLSAgICByZXR1
cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxpbmsp
OworRHJhZ09wZXJhdGlvbiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBn
cmZLZXlTdGF0ZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIERy
YWdPcGVyYXRpb25Ob25lOworCisgICAgLy8gQ29uZm9ybXMgdG8gTWljcm9zb2Z0J3Mga2V5IGNv
bWJpbmF0aW9ucyBhcyBkb2N1bWVudGVkIGZvciAKKyAgICAvLyBJRHJvcFRhcmdldDo6RHJhZ092
ZXIuIE5vdGUsIGdyZktleVN0YXRlIGlzIHRoZSBjdXJyZW50IAorICAgIC8vIHN0YXRlIG9mIHRo
ZSBrZXlib2FyZCBtb2RpZmllciBrZXlzIG9uIHRoZSBrZXlib2FyZC4gU2VlOgorICAgIC8vIDxo
dHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2ODAxMjkoVlMuODUpLmFz
cHg+LgorICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxl
cigpLT5zb3VyY2VEcmFnT3BlcmF0aW9uKCk7CisKKyAgICBpZiAoKGdyZktleVN0YXRlICYgKE1L
X0NPTlRST0wgfCBNS19TSElGVCkpID09IChNS19DT05UUk9MIHwgTUtfU0hJRlQpKQorICAgICAg
ICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTGluazsKKyAgICBlbHNlIGlmICgoZ3JmS2V5U3Rh
dGUgJiBNS19DT05UUk9MKSA9PSBNS19DT05UUk9MKQorICAgICAgICBvcGVyYXRpb24gPSBEcmFn
T3BlcmF0aW9uQ29weTsKKyAgICBlbHNlIGlmICgoZ3JmS2V5U3RhdGUgJiBNS19TSElGVCkgPT0g
TUtfU0hJRlQpCisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25HZW5lcmljOworCisg
ICAgcmV0dXJuIG9wZXJhdGlvbjsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpEcmFnRW50ZXIoCkBAIC00NjQ1LDYgKzQ2NTksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OkRyYWdFCiAgICAgICAgIEludFBvaW50KHB0LngsIHB0LnkpLCBrZXlT
dGF0ZVRvRHJhZ09wZXJhdGlvbihncmZLZXlTdGF0ZSkpOwogICAgICpwZHdFZmZlY3QgPSBkcmFn
T3BlcmF0aW9uVG9EcmFnQ3Vyc29yKG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ0VudGVy
ZWQoJmRhdGEpKTsKIAorICAgIG1fbGFzdERyb3BFZmZlY3QgPSAqcGR3RWZmZWN0OwogICAgIG1f
ZHJhZ0RhdGEgPSBwRGF0YU9iamVjdDsKIAogICAgIHJldHVybiBTX09LOwpAQCAtNDY2NSw2ICs0
NjgwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpEcmFnTwogICAgIH0g
ZWxzZQogICAgICAgICAqcGR3RWZmZWN0ID0gRFJPUEVGRkVDVF9OT05FOwogCisgICAgbV9sYXN0
RHJvcEVmZmVjdCA9ICpwZHdFZmZlY3Q7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ2ODks
NyArNDcwNSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJvcCgKICAg
ICAgICAgbV9kcm9wVGFyZ2V0SGVscGVyLT5Ecm9wKHBEYXRhT2JqZWN0LCAoUE9JTlQqKSZwdCwg
KnBkd0VmZmVjdCk7CiAKICAgICBtX2RyYWdEYXRhID0gMDsKLSAgICAqcGR3RWZmZWN0ID0gRFJP
UEVGRkVDVF9OT05FOworICAgICpwZHdFZmZlY3QgPSBtX2xhc3REcm9wRWZmZWN0OwogICAgIFBP
SU5UTCBsb2NhbHB0ID0gcHQ7CiAgICAgOjpTY3JlZW5Ub0NsaWVudChtX3ZpZXdXaW5kb3csIChM
UFBPSU5UKSZsb2NhbHB0KTsKICAgICBEcmFnRGF0YSBkYXRhKHBEYXRhT2JqZWN0LCBJbnRQb2lu
dChsb2NhbHB0LngsIGxvY2FscHQueSksIApJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDQ5MjkxKQorKysgV2Vi
S2l0L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2NSw2ICs4NjUsMTQgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHBhaW50SW50b0JhY2tpbmdTdG9yZShXZWJDb3JlOjpGcmFtZVZpZXcq
LCBIREMgYml0bWFwREMsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCwgV2luZG93
c1RvUGFpbnQpOwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKFdlYkNvcmU6OkZyYW1lVmll
dyosIEhEQyA9IDAsIGJvb2wgYmFja2luZ1N0b3JlQ29tcGxldGVseURpcnR5ID0gZmFsc2UsIFdp
bmRvd3NUb1BhaW50ID0gUGFpbnRXZWJWaWV3T25seSk7CiAKKyAgICBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKSBjb25zdDsK
KworICAgIC8vIEZJWE1FOiBUaGlzIHZhcmlhYmxlIGlzIHBhcnQgb2YgYSB3b3JrYXJvdW5kLiBU
aGUgZHJvcCBlZmZlY3QgKHBkd0VmZmVjdCkgcGFzc2VkIHRvIERyb3AgaXMgaW5jb3JyZWN0LiAK
KyAgICAvLyBXZSBzZXQgdGhpcyB2YXJpYWJsZSBpbiBEcmFnRW50ZXIgYW5kIERyYWdPdmVyIHNv
IHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gRHJvcCB0byBzZXQgdGhlIGNvcnJlY3QgZHJvcCBlZmZl
Y3QuIAorICAgIC8vIFRodXMsIG9uIHJldHVybiBmcm9tIERvRHJhZ0Ryb3Agd2UgaGF2ZSB0aGUg
Y29ycmVjdCBwZHdFZmZlY3QgZm9yIHRoZSBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbi4KKyAgICAv
LyAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTI2NCkKKyAg
ICBEV09SRCBtX2xhc3REcm9wRWZmZWN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSElNQyBnZXRJTU1D
b250ZXh0KCk7CiAgICAgdm9pZCByZWxlYXNlSU1NQ29udGV4dChISU1DKTsKSW5kZXg6IFdlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkocmV2aXNpb24gNDkyOTEp
CisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzIsMTYgKzE3MiwyNiBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJh
ZyhEcmFnSW1hZ2VSCiAgICAgICAgIH0KIAogICAgICAgICBEV09SRCBva0VmZmVjdCA9IGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMobV93ZWJWaWV3LT5wYWdlKCktPmRy
YWdDb250cm9sbGVyKCktPnNvdXJjZURyYWdPcGVyYXRpb24oKSk7Ci0gICAgICAgIERXT1JEIGVm
ZmVjdDsKKyAgICAgICAgRFdPUkQgZWZmZWN0ID0gRFJPUEVGRkVDVF9OT05FOwogICAgICAgICBD
T01QdHI8SVdlYlVJRGVsZWdhdGU+IHVpOworICAgICAgICBIUkVTVUxUIGhyID0gRFJBR0RST1Bf
U19DQU5DRUw7CiAgICAgICAgIGlmIChTVUNDRUVERUQobV93ZWJWaWV3LT51aURlbGVnYXRlKCZ1
aSkpKSB7CiAgICAgICAgICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGVQcml2YXRlPiB1aVByaXZh
dGU7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHVpLT5RdWVyeUludGVyZmFjZShJSURfSVdl
YlVJRGVsZWdhdGVQcml2YXRlLCAodm9pZCoqKSZ1aVByaXZhdGUpKSkKLSAgICAgICAgICAgICAg
ICBpZiAoU1VDQ0VFREVEKHVpUHJpdmF0ZS0+ZG9EcmFnRHJvcChtX3dlYlZpZXcsIGRhdGFPYmpl
Y3QuZ2V0KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpKSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGhyID0gdWlQcml2YXRlLT5kb0RyYWdE
cm9wKG1fd2ViVmlldywgZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVjdCwg
JmVmZmVjdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaHIgPSBEb0RyYWdEcm9wKGRh
dGFPYmplY3QuZ2V0KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOworCisgICAg
ICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAg
IGlmIChociA9PSBEUkFHRFJPUF9TX0RST1ApIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QgJiBE
Uk9QRUZGRUNUX0NPUFkpCisgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlv
bkNvcHk7CisgICAgICAgICAgICBlbHNlIGlmIChlZmZlY3QgJiBEUk9QRUZGRUNUX0xJTkspCisg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgICAg
ICBlbHNlIGlmIChlZmZlY3QgJiBEUk9QRUZGRUNUX01PVkUpCisgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uID0gRHJhZ09wZXJhdGlvbk1vdmU7CiAgICAgICAgIH0KLQotICAgICAgICBEb0RyYWdE
cm9wKGRhdGFPYmplY3QuZ2V0KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOwor
ICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0KGdlbmVyYXRl
TW91c2VFdmVudChtX3dlYlZpZXcsIGZhbHNlKSwgb3BlcmF0aW9uKTsKICAgICB9CiB9CiAKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDQ5NDI5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTAtMTEgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAg
ICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAg
ICAgVGVzdHMgdGhhdCBESFRNTCBkcmFnLWFuZC1kcm9wIHdvcmtzIGNvcnJlY3RseS4KKyAgICAg
ICAgCisgICAgICAgIE5vdGUsIHRoaXMgdGVzdCBmYWlscyB3aGVuIGVmZmVjdEFsbG93ZWQgPT0g
InVuaW5pdGlhbGl6ZWQiIGJlY2F1c2UgCisgICAgICAgIHRoaXMgZWZmZWN0IGhhcyBub3QgYmVl
biBpbXBsZW1lbnRlZCB5ZXQgKHNlZSBidWcgIzMwMjkxKS4KKworICAgICAgICAqIGZhc3QvZXZl
bnRzL2RyYWctYW5kLWRyb3AtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2
ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWw6IEFkZGVkLgorCiAyMDA5LTEwLTEwICBDYW1lcm9uIE1j
Q29ybWFjayAgPGNhbUBtY2MuaWQuYXU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3At
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJh
Zy1hbmQtZHJvcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTEgQEAKK1Ro
aXMgdGVzdCBjaGVja3MgdGhhdCBkcmFnLWFuZC1kcm9wIHN1cHBvcnQgd29ya3MgYW5kIGNvbmZv
cm1zIHRvIHRoZSBIVE1MIDUgc3BlY2lmaWNhdGlvbi4KK0ZvciBlYWNoIGVmZmVjdEFsbG93ZWQs
IGl0ZXJhdGVzIHRocm91Z2ggdGhlIHBvc3NpYmxlIGRyb3BFZmZlY3RzOiBub25lLCBjb3B5LCBt
b3ZlLCBsaW5rLCBkdW1teS4KKworTm90ZSwgdGhpcyB0ZXN0IGZhaWxzIHdoZW4gZWZmZWN0QWxs
b3dlZCA9PSAidW5pbml0aWFsaXplZCIgYmVjYXVzZSB0aGlzIGVmZmVjdCBoYXMgbm90IGJlZW4g
aW1wbGVtZW50ZWQgeWV0IChzZWUgYnVnICMzMDI5MSkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAidW5pbml0aWFsaXplZCIKKworUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25z
W2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitGQUlMIGV2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0IHNob3VsZCBiZSBjb3B5LiBXYXMgbm9uZS4KK0ZBSUwgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3Qgc2hvdWxkIGJlIG1vdmUuIFdhcyBub25lLgorRkFJTCBldmVu
dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBzaG91bGQgYmUgbGluay4gV2FzIG5vbmUuCitQQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFs
bG93ZWQgPT0gIm5vbmUiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMg
ZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1
ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZl
bnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJhbGwiCisKK1BBU1MgZXZl
bnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9w
RWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVj
dGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRy
b3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUK
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0
aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJj
b3B5IgorCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RF
bGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZl
bnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9w
RWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
aXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgor
CitXaGVuIGVmZmVjdEFsbG93ZWQgPT0gIm1vdmUiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVy
LmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxl
Y3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAi
bm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVs
ZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVu
dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAibGluayIK
KworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5v
cHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
aXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52
YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hl
biBlZmZlY3RBbGxvd2VkID09ICJjb3B5TW92ZSIKKworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVj
dGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRy
b3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUK
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0
aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRy
b3BFZmZlY3QgaXMgIm5vbmUiCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAiY29weUxpbmsiCisK
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0
aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RF
bGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZm
ZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9w
RWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQ
QVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVj
dEFsbG93ZWQgPT0gImxpbmtNb3ZlIgorCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZm
ZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRl
eF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQ
QVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlv
bnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRy
YW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxl
bS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVj
dCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJkdW1teSIKKworUEFTUyBldmVu
dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BF
ZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5k
cm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBp
cyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQ
QVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTg1IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c3R5bGU+CisjZHJvcFRhcmdldCwgI2RyYWdNZSB7IHRleHQtYWxpZ246IGNlbnRlcjsgZGlz
cGxheTogdGFibGUtY2VsbDsgdmVydGljYWwtYWxpZ246IG1pZGRsZSB9CisjZHJvcFRhcmdldCB7
d2lkdGg6IDI1NnB4OyBoZWlnaHQ6IDI1NnB4OyBib3JkZXI6IDFweCBkYXNoZWR9CisjZHJhZ01l
IHstd2Via2l0LXVzZXItZHJhZzogZWxlbWVudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsg
YmFja2dyb3VuZDogI2ZmMDAwMDsgd2lkdGg6IDY0cHg7IGhlaWdodDogNjRweDsgY29sb3I6IHdo
aXRlfQorPC9zdHlsZT4KKzxzY3JpcHQ+CisgICAgdmFyIGRyYWdNZTsKKyAgICB2YXIgZHJvcFRh
cmdldDsKKyAgICB2YXIgZWZmZWN0QWxsb3dlZEVsZW07CisgICAgdmFyIGRyb3BFZmZlY3RFbGVt
OworICAgIHZhciBjb25zb2xlRWxtOworICAgIHZhciBldmVudDsKKyAgICAKKyAgICB3aW5kb3cu
b25sb2FkID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZHJhZ01lID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImRyYWdNZSIpOworICAgICAgICBkcm9wVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImRyb3BUYXJnZXQiKTsKKyAgICAgICAgZWZmZWN0QWxsb3dlZEVsZW0gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWZmZWN0QWxsb3dlZCIpOworICAgICAgICBkcm9wRWZm
ZWN0RWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wRWZmZWN0Iik7CisgICAgICAg
IGNvbnNvbGVFbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAg
ICAKKyAgICAgICAgaWYgKCFkcmFnTWUgfHwgIWRyb3BUYXJnZXQgfHwgIWVmZmVjdEFsbG93ZWRF
bGVtIHx8ICFkcm9wRWZmZWN0RWxlbSB8fCAhY29uc29sZUVsbSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgCisgICAgICAgIGRyYWdNZS5vbmRyYWdzdGFydCA9IGRyYWdTdGFydDsKKyAg
ICAgICAgZHJhZ01lLm9uZHJhZ2VuZCA9IGRyYWdFbmQ7CisgICAgICAgIAorICAgICAgICBkcm9w
VGFyZ2V0Lm9uZHJhZ2VudGVyID0gZHJhZ0VudGVyZWQ7CisgICAgICAgIGRyb3BUYXJnZXQub25k
cmFnb3ZlciA9IGRyYWdPdmVyOworICAgICAgICBkcm9wVGFyZ2V0Lm9uZHJvcCA9IGRyb3A7Cisg
ICAgICAgIAorICAgICAgICBydW5UZXN0KCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRy
YWdTdGFydChlKQorICAgIHsKKyAgICAgICAgZXZlbnQgPSBlOworICAgICAgICBlLmRhdGFUcmFu
c2Zlci5lZmZlY3RBbGxvd2VkID0gZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tlZmZlY3RBbGxv
d2VkRWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZTsKKyAgICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0
RGF0YSgnVGV4dCcsIGUudGFyZ2V0LnRleHRDb250ZW50KTsKKyAgICB9CisgICAgCisgICAgZnVu
Y3Rpb24gZHJhZ0VuZChlKQorICAgIHsKKyAgICAgICAgY2hlY2tEcmFnU3RhdGUoZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZHJhZ0VudGVyZWQoZSkKKyAg
ICB7CisgICAgICAgIGRyYWdFbnRlcmVkQW5kVXBkYXRlZChlKTsKKyAgICB9CisgICAgCisgICAg
ZnVuY3Rpb24gZHJhZ092ZXIoZSkKKyAgICB7CisgICAgICAgIGRyYWdFbnRlcmVkQW5kVXBkYXRl
ZChlKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZHJhZ0VudGVyZWRBbmRVcGRhdGVkKGUp
CisgICAgeworICAgICAgICBldmVudCA9IGU7CisgICAgICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgPSBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5k
ZXhdLnZhbHVlOworICAgICAgICBjYW5jZWxEcmFnKGUpOworICAgIH0KKyAgICAKKyAgICBmdW5j
dGlvbiBkcm9wKGUpCisgICAgeworICAgICAgICBjYW5jZWxEcmFnKGUpOworICAgIH0KKyAgICAK
KyAgICBmdW5jdGlvbiBjYW5jZWxEcmFnKGUpCisgICAgeworICAgICAgICBpZiAoZS5wcmV2ZW50
RGVmYXVsdCkKKyAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAvLyBBc3N1bWUgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIHdpdGhpbiBJ
bnRlcm5ldCBFeHBsb3JlcgorICAgICAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGNoZWNrRHJhZ1N0YXRlKGUpCisgICAg
eworICAgICAgICBldmVudCA9IGU7CisgICAgICAgIHZhciBjaG9zZW5Ecm9wRWZmZWN0ID0gZHJv
cEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZTsK
KyAgICAgICAgdmFyIGNob3NlbkVmZmVjdEFsbG93ZWQgPSBlZmZlY3RBbGxvd2VkRWxlbS5vcHRp
b25zW2VmZmVjdEFsbG93ZWRFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlOworICAgICAgICB2YXIg
YWN0dWFsRHJvcEVmZmVjdCA9IGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q7CisgICAgICAgIAor
ICAgICAgICBpZiAoaXNEcm9wRWZmZWN0QWxsb3dlZChjaG9zZW5Ecm9wRWZmZWN0LCBjaG9zZW5F
ZmZlY3RBbGxvd2VkKSkKKyAgICAgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2V2ZW50LmRhdGFU
cmFuc2Zlci5kcm9wRWZmZWN0JywgJ2Ryb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVs
ZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUnKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCcsICdub25l
Jyk7CisgICAgICAgICAgICAKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gaXNEcm9wRWZmZWN0
QWxsb3dlZChjaG9zZW5Ecm9wRWZmZWN0LCBhbGxvd2VkRHJvcEVmZmVjdCkgeworICAgICAgICAv
LyBFeHRyYWN0ZWQgZnJvbSB0aGUgSFRNTCA1IGRyYWctYW5kLWRyb3Agc2VjdGlvbiwgaHR0cDov
L2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RuZAorICAgICAgICBpZiAoY2hv
c2VuRHJvcEVmZmVjdCA9PSAibm9uZSIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgaWYgKGNob3NlbkRyb3BFZmZlY3QgPT0gImNvcHkiICYmIFsiY29weSIsICJjb3B5TGluayIs
ICJjb3B5TW92ZSIsICJ1bmluaXRpYWxpemVkIiwgImFsbCJdLmluZGV4T2YoYWxsb3dlZERyb3BF
ZmZlY3QpICE9IC0xKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChjaG9z
ZW5Ecm9wRWZmZWN0ID09ICJtb3ZlIiAmJiBbIm1vdmUiLCAiY29weU1vdmUiLCAibGlua01vdmUi
LCAidW5pbml0aWFsaXplZCIsICJhbGwiXS5pbmRleE9mKGFsbG93ZWREcm9wRWZmZWN0KSAhPSAt
MSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoY2hvc2VuRHJvcEVmZmVj
dCA9PSAibGluayIgJiYgWyJsaW5rIiwgImNvcHlMaW5rIiwgImxpbmtNb3ZlIiwgInVuaW5pdGlh
bGl6ZWQiLCAiYWxsIl0uaW5kZXhPZihhbGxvd2VkRHJvcEVmZmVjdCkgIT0gLTEpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIAorICAgICAgICB2YXIgc3RhcnRYID0gZHJhZ01lLm9m
ZnNldExlZnQgKyAxMDsKKyAgICAgICAgdmFyIHN0YXJ0WSA9IGRyYWdNZS5vZmZzZXRUb3AgKyBk
cmFnTWUub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgdmFyIGVuZFggPSBkcm9wVGFyZ2V0Lm9m
ZnNldExlZnQgKyAxMDsKKyAgICAgICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCAr
IGRyb3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgCisgICAgICAgIHZhciBudW1F
ZmZlY3RBbGxvd2VkID0gZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9ucy5sZW5ndGg7CisgICAgICAg
IHZhciBudW1FZmZlY3RzID0gZHJvcEVmZmVjdEVsZW0ub3B0aW9ucy5sZW5ndGg7CisgICAgICAg
IAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUVmZmVjdEFsbG93ZWQ7ICsraSkgewor
ICAgICAgICAgICAgZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tpXS5zZWxlY3RlZCA9IHRydWU7
CisgICAgICAgICAgICBkZWJ1ZygnPGJyIC8+V2hlbiBlZmZlY3RBbGxvd2VkID09ICInICsgZWZm
ZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tpXS52YWx1ZSArICciPGJyIC8+Jyk7CisgICAgICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IG51bUVmZmVjdHM7ICsraikgeworICAgICAgICAgICAgICAg
IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbal0uc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5sZWFwRm9yd2FyZCgxMDApOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKGVuZFgsIGVuZFkpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB2YXIgdGVzdENvbnRhaW5lciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIpOworICAgICAgICBpZiAodGVz
dENvbnRhaW5lcikKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENv
bnRhaW5lcik7CisgICAgICAgIGRlYnVnKCc8YnIgLz48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBD
T01QTEVURTwvc3Bhbj4nKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAg
IDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgIDxkaXYgaWQ9InRlc3QtY29udGFpbmVyIj4K
KyAgICAgICAgPGxhYmVsIGZvcj0iZWZmZWN0QWxsb3dlZCI+ZWZmZWN0QWxsb3dlZDwvbGFiZWw+
IDxzZWxlY3QgaWQ9ImVmZmVjdEFsbG93ZWQiPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0i
dW5pbml0aWFsaXplZCI+VW5pbml0aWFsaXplZDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlv
biB2YWx1ZT0ibm9uZSI+Tm9uZTwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0i
YWxsIj5BbGw8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImNvcHkiPkNvcHk8
L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im1vdmUiPk1vdmU8L29wdGlvbj4K
KyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImxpbmsiPkxpbms8L29wdGlvbj4KKyAgICAgICAg
ICAgIDxvcHRpb24gdmFsdWU9ImNvcHlNb3ZlIj5Db3B5TW92ZTwvb3B0aW9uPgorICAgICAgICAg
ICAgPG9wdGlvbiB2YWx1ZT0iY29weUxpbmsiPkNvcHlMaW5rPC9vcHRpb24+CisgICAgICAgICAg
ICA8b3B0aW9uIHZhbHVlPSJsaW5rTW92ZSI+TGlua01vdmU8L29wdGlvbj4KKyAgICAgICAgICAg
IDxvcHRpb24gdmFsdWU9ImR1bW15Ij5Ob25leGlzdGVudCAoRHVtbXkpIEVmZmVjdDwvb3B0aW9u
PgorICAgICAgICA8L3NlbGVjdD4KKyAgICAgICAgPGJyLz48YnIvPgorICAgICAgICA8ZGl2IGlk
PSJkcm9wVGFyZ2V0Ij5Ecm9wIHRoZSByZWQgc3F1YXJlIG9udG8gbWUuPGJyLz48YnIvPgorICAg
ICAgICAgICAgPGxhYmVsIGZvcj0iZHJvcEVmZmVjdCI+RXhwZWN0cyBkcm9wRWZmZWN0PC9sYWJl
bD4gPHNlbGVjdCBpZD0iZHJvcEVmZmVjdCI+CisgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1
ZT0ibm9uZSI+Tm9uZTwvb3B0aW9uPgorICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImNv
cHkiPkNvcHk8L29wdGlvbj4KKyAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJtb3ZlIj5N
b3ZlPC9vcHRpb24+CisgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGluayI+TGluazwv
b3B0aW9uPgorICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImR1bW15Ij5Ob25leGlzdGVu
dCAoRHVtbXkpIEVmZmVjdDwvb3B0aW9uPgorICAgICAgICAgICAgPC9zZWxlY3Q+CisgICAgICAg
IDwvZGl2PgorICAgICAgICA8aHIvPgorICAgICAgICA8cD5JdGVtcyB0aGF0IGNhbiBiZSBkcmFn
Z2VkIHRvIHRoZSBkcm9wIHRhcmdldDo8L3A+CisgICAgICAgIDxkaXYgaWQ9ImRyYWdNZSIgZHJh
Z2dhYmxlPSJ0cnVlIj5TcXVhcmU8L2Rpdj4KKyAgICAgICAgPGhyLz4KKyAgICA8L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGRyYWctYW5kLWRyb3Agc3VwcG9ydCB3b3JrcyBh
bmQgY29uZm9ybXMgdG8gdGhlIEhUTUwgNSBzcGVjaWZpY2F0aW9uLjxici8+IiArCisgICAgICAg
ICAgICAgICAgICAgICJGb3IgZWFjaCBlZmZlY3RBbGxvd2VkLCBpdGVyYXRlcyB0aHJvdWdoIHRo
ZSBwb3NzaWJsZSBkcm9wRWZmZWN0czogbm9uZSwgY29weSwgbW92ZSwgbGluaywgZHVtbXkuPGJy
Lz48YnIvPiIgKworICAgICAgICAgICAgICAgICAgICAiTm90ZSwgdGhpcyB0ZXN0IGZhaWxzIHdo
ZW4gZWZmZWN0QWxsb3dlZCA9PSAmcXVvdDt1bmluaXRpYWxpemVkJnF1b3Q7IGJlY2F1c2UgdGhp
cyBlZmZlY3QgaGFzIG5vdCBiZWVuICIgKworICAgICAgICAgICAgICAgICAgICAiaW1wbGVtZW50
ZWQgeWV0IChzZWUgYnVnICMzMDI5MSkuIik7CisgICAgICAgIHZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41057</attachid>
            <date>2009-10-12 14:09:42 -0700</date>
            <delta_ts>2009-10-12 21:44:31 -0700</delta_ts>
            <desc>Patch with test case</desc>
            <filename>Bug24731_101109_2</filename>
            <type>text/plain</type>
            <size>20902</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA0OTQyOSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMDktMTAtMTEgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAg
ICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAg
ICAgSW1wbGVtZW50cyBzdXBwb3J0IGZvciBESFRNTCBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMg
KGkuZS4gb25kcmFnc3RhcnQsIG9uZHJhZ2VuZCkKKyAgICAgICAgaW4gdGhlIFdpbmRvd3MgYnVp
bGQgc28gdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgTWFjIE9TIFggYnVpbGQuIEhlbmNlLCBkcm9w
RWZmZWN0IGlzCisgICAgICAgIGNvcnJlY3RseSBzZXQuCisgICAgICAgIAorICAgICAgICBUaGUg
V2ViVmlldyBhbmQgV2ViRHJvcFNvdXJjZSBkcmFnLWFuZC1kcm9wIGZ1bmN0aW9ucywgYXMgY2Fs
bGVkIGJ5IGZ1bmN0aW9uCisgICAgICAgIERvRHJhZ0Ryb3AgaW4gaXRzIGV2ZW50IGxvb3AsIG5l
aXRoZXIgdXNlZCB0aGUgZHJvcCBlZmZlY3QgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IG5vciByZXNwZWN0ZWQgZXZlbnQuZGF0YVRyYW5zZmVy
LmVmZmVjdHNBbGxvd2VkLgorICAgICAgICBJbnN0ZWFkLCB0aGVzZSBmdW5jdGlvbnMgZGVmYXVs
dGVkIHRvIHNvbWUgaGFyZGNvZGVkIGRyb3AgZWZmZWN0IGFuZCBzZXQgb2YKKyAgICAgICAgYWxs
b3dlZCBkcm9wIGVmZmVjdHMsIHJlc3BlY3RpdmVseS4KKworICAgICAgICBUZXN0czogZmFzdC9l
dmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAg
ICAgICogV2ViRHJvcFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEcm9wU291cmNlOjpRdWVyeUNv
bnRpbnVlRHJhZyk6IE1vdmVkIGNhbGwgdG8gRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRB
dAorICAgICAgICBpbnRvIG1ldGhvZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcuCisgICAgICAg
ICogV2ViRHJvcFNvdXJjZS5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
Vmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24pOiBGaXhlcyA8cmRhcjovL3Byb2JsZW0vNTAx
NTk2MT4uIERldGVybWluZXMKKyAgICAgICAgYXBwcm9wcmlhdGUgZHJvcCBlZmZlY3QgZnJvbSBz
dGF0ZSBvZiBrZXlib2FyZCBhbmQgYWxsb3dlZCBlZmZlY3RzCisgICAgICAgIG1fcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS0+c291cmNlRHJhZ09wZXJhdGlvbigpLgorICAgICAgICAoV2ViVmlldzo6
RHJhZ0VudGVyKToKKyAgICAgICAgKFdlYlZpZXc6OkRyYWdPdmVyKToKKyAgICAgICAgKFdlYlZp
ZXc6OkRyb3ApOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAwOS0xMC0wOSAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCShyZXZpc2lvbiA0OTI5MSkKKysrIFdlYktpdC93aW4v
V2ViRHJvcFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwxMCArMTA2LDYgQEAgU1RE
TUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6OlF1ZXJ5Q29udGludQogewogICAgIGlmIChmRXNjYXBl
UHJlc3NlZCB8fCAhKGdyZktleVN0YXRlICYgKE1LX0xCVVRUT058TUtfUkJVVFRPTikpKSB7CiAg
ICAgICAgIG1fZHJvcHBlZCA9ICFmRXNjYXBlUHJlc3NlZDsKLSAgICAgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBtX3dlYlZpZXctPnBhZ2UoKSkKLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBw
YWdlLT5tYWluRnJhbWUoKSkgCi0gICAgICAgICAgICAgICAgLy9GSVhNRTogV2UgbmVlZCB0byBm
aWd1cmUgb3V0IGhvdyB0byBmaW5kIG91dCB3aGF0IGFjdHVhbGx5IGhhcHBlbmVkIGluIHRoZSBk
cmFnIDxyZGFyOi8vcHJvYmxlbS81MDE1OTYxPgotICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1fd2ViVmll
dy5nZXQoKSwgZmFsc2UpLCBmRXNjYXBlUHJlc3NlZCA/IERyYWdPcGVyYXRpb25Ob25lIDogRHJh
Z09wZXJhdGlvbkNvcHkpOwogICAgICAgICByZXR1cm4gZkVzY2FwZVByZXNzZWQ/IERSQUdEUk9Q
X1NfQ0FOQ0VMIDogRFJBR0RST1BfU19EUk9QOwogICAgIH0gZWxzZSBpZiAoUGFnZSogcGFnZSA9
IG1fd2ViVmlldy0+cGFnZSgpKQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFp
bkZyYW1lKCkpIApJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgJKHJldmlzaW9uIDQ5MjkxKQorKysgV2ViS2l0
L3dpbi9XZWJEcm9wU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDEyIEBACiAK
IGNsYXNzIFdlYlZpZXc7CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBsYXRmb3JtTW91
c2VFdmVudDsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworV2ViQ29yZTo6UGxhdGZvcm1Nb3Vz
ZUV2ZW50IGdlbmVyYXRlTW91c2VFdmVudChXZWJWaWV3KiwgYm9vbCBpc0RyYWcpOworCiBjbGFz
cyBXZWJEcm9wU291cmNlIDogcHVibGljIElEcm9wU291cmNlCiB7CiBwdWJsaWM6CkluZGV4OiBX
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5j
cHAJKHJldmlzaW9uIDQ5MjkxKQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDYyNCwxMSArNDYyNCwyNSBAQCBzdGF0aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRv
RHJhZ0N1cnNvcihECiAgICAgcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIERyYWdPcGVyYXRpb24g
a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQpIHsKLSAgICAvL0ZJWE1FOiBUaGlzIGlzIGN1
cnJlbnRseSB2ZXJ5IHNpbXBsZSwgaXQgbWF5IG5lZWQgdG8gYWN0dWFsbHkKLSAgICAvL3dvcmsg
b3V0IGFuIGFwcHJvcHJpYXRlIERyYWdPcGVyYXRpb24gaW4gZnV0dXJlIC0tIGhvd2V2ZXIgdGhp
cwotICAgIC8vYmVoYXZpb3VyIGFwcGVhcnMgdG8gbWF0Y2ggRmlyZUZveAotICAgIHJldHVybiAo
RHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uTGluayk7CitE
cmFnT3BlcmF0aW9uIFdlYlZpZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktl
eVN0YXRlKSBjb25zdAoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbk5vbmU7CisKKyAgICAvLyBDb25mb3JtcyB0byBNaWNyb3NvZnQncyBrZXkgY29tYmlu
YXRpb25zIGFzIGRvY3VtZW50ZWQgZm9yIAorICAgIC8vIElEcm9wVGFyZ2V0OjpEcmFnT3Zlci4g
Tm90ZSwgZ3JmS2V5U3RhdGUgaXMgdGhlIGN1cnJlbnQgCisgICAgLy8gc3RhdGUgb2YgdGhlIGtl
eWJvYXJkIG1vZGlmaWVyIGtleXMgb24gdGhlIGtleWJvYXJkLiBTZWU6CisgICAgLy8gPGh0dHA6
Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczY4MDEyOShWUy44NSkuYXNweD4u
CisgICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkt
PnNvdXJjZURyYWdPcGVyYXRpb24oKTsKKworICAgIGlmICgoZ3JmS2V5U3RhdGUgJiAoTUtfQ09O
VFJPTCB8IE1LX1NISUZUKSkgPT0gKE1LX0NPTlRST0wgfCBNS19TSElGVCkpCisgICAgICAgIG9w
ZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAgIGVsc2UgaWYgKChncmZLZXlTdGF0ZSAm
IE1LX0NPTlRST0wpID09IE1LX0NPTlRST0wpCisgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVy
YXRpb25Db3B5OworICAgIGVsc2UgaWYgKChncmZLZXlTdGF0ZSAmIE1LX1NISUZUKSA9PSBNS19T
SElGVCkKKyAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisKKyAgICBy
ZXR1cm4gb3BlcmF0aW9uOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OkRyYWdFbnRlcigKQEAgLTQ2NDUsNiArNDY1OSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6RHJhZ0UKICAgICAgICAgSW50UG9pbnQocHQueCwgcHQueSksIGtleVN0YXRl
VG9EcmFnT3BlcmF0aW9uKGdyZktleVN0YXRlKSk7CiAgICAgKnBkd0VmZmVjdCA9IGRyYWdPcGVy
YXRpb25Ub0RyYWdDdXJzb3IobV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnRW50ZXJlZCgm
ZGF0YSkpOwogCisgICAgbV9sYXN0RHJvcEVmZmVjdCA9ICpwZHdFZmZlY3Q7CiAgICAgbV9kcmFn
RGF0YSA9IHBEYXRhT2JqZWN0OwogCiAgICAgcmV0dXJuIFNfT0s7CkBAIC00NjY1LDYgKzQ2ODAs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OkRyYWdPCiAgICAgfSBlbHNl
CiAgICAgICAgICpwZHdFZmZlY3QgPSBEUk9QRUZGRUNUX05PTkU7CiAKKyAgICBtX2xhc3REcm9w
RWZmZWN0ID0gKnBkd0VmZmVjdDsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDY4OSw3ICs0
NzA1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpEcm9wKAogICAgICAg
ICBtX2Ryb3BUYXJnZXRIZWxwZXItPkRyb3AocERhdGFPYmplY3QsIChQT0lOVCopJnB0LCAqcGR3
RWZmZWN0KTsKIAogICAgIG1fZHJhZ0RhdGEgPSAwOwotICAgICpwZHdFZmZlY3QgPSBEUk9QRUZG
RUNUX05PTkU7CisgICAgKnBkd0VmZmVjdCA9IG1fbGFzdERyb3BFZmZlY3Q7CiAgICAgUE9JTlRM
IGxvY2FscHQgPSBwdDsKICAgICA6OlNjcmVlblRvQ2xpZW50KG1fdmlld1dpbmRvdywgKExQUE9J
TlQpJmxvY2FscHQpOwogICAgIERyYWdEYXRhIGRhdGEocERhdGFPYmplY3QsIEludFBvaW50KGxv
Y2FscHQueCwgbG9jYWxwdC55KSwgCkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gNDkyOTEpCisrKyBXZWJLaXQv
d2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtODY1LDYgKzg2NSwxNCBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGFpbnRJbnRvQmFja2luZ1N0b3JlKFdlYkNvcmU6OkZyYW1lVmlldyosIEhE
QyBiaXRtYXBEQywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0LCBXaW5kb3dzVG9Q
YWludCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoV2ViQ29yZTo6RnJhbWVWaWV3Kiwg
SERDID0gMCwgYm9vbCBiYWNraW5nU3RvcmVDb21wbGV0ZWx5RGlydHkgPSBmYWxzZSwgV2luZG93
c1RvUGFpbnQgPSBQYWludFdlYlZpZXdPbmx5KTsKIAorICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpIGNvbnN0OworCisg
ICAgLy8gRklYTUU6IFRoaXMgdmFyaWFibGUgaXMgcGFydCBvZiBhIHdvcmthcm91bmQuIFRoZSBk
cm9wIGVmZmVjdCAocGR3RWZmZWN0KSBwYXNzZWQgdG8gRHJvcCBpcyBpbmNvcnJlY3QuIAorICAg
IC8vIFdlIHNldCB0aGlzIHZhcmlhYmxlIGluIERyYWdFbnRlciBhbmQgRHJhZ092ZXIgc28gdGhh
dCBpdCBjYW4gYmUgdXNlZCBpbiBEcm9wIHRvIHNldCB0aGUgY29ycmVjdCBkcm9wIGVmZmVjdC4g
CisgICAgLy8gVGh1cywgb24gcmV0dXJuIGZyb20gRG9EcmFnRHJvcCB3ZSBoYXZlIHRoZSBjb3Jy
ZWN0IHBkd0VmZmVjdCBmb3IgdGhlIGRyYWctYW5kLWRyb3Agb3BlcmF0aW9uLgorICAgIC8vIChz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MjY0KQorICAgIERX
T1JEIG1fbGFzdERyb3BFZmZlY3Q7CisKIHByb3RlY3RlZDoKICAgICBISU1DIGdldElNTUNvbnRl
eHQoKTsKICAgICB2b2lkIHJlbGVhc2VJTU1Db250ZXh0KEhJTUMpOwpJbmRleDogV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCShyZXZpc2lvbiA0OTI5MSkKKysr
IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MiwxNiArMTcyLDI2IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERy
YWdJbWFnZVIKICAgICAgICAgfQogCiAgICAgICAgIERXT1JEIG9rRWZmZWN0ID0gZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhtX3dlYlZpZXctPnBhZ2UoKS0+ZHJhZ0Nv
bnRyb2xsZXIoKS0+c291cmNlRHJhZ09wZXJhdGlvbigpKTsKLSAgICAgICAgRFdPUkQgZWZmZWN0
OworICAgICAgICBEV09SRCBlZmZlY3QgPSBEUk9QRUZGRUNUX05PTkU7CiAgICAgICAgIENPTVB0
cjxJV2ViVUlEZWxlZ2F0ZT4gdWk7CisgICAgICAgIEhSRVNVTFQgaHIgPSBEUkFHRFJPUF9TX0NB
TkNFTDsKICAgICAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVsZWdhdGUoJnVpKSkp
IHsKICAgICAgICAgICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZVByaXZhdGU+IHVpUHJpdmF0ZTsK
ICAgICAgICAgICAgIGlmIChTVUNDRUVERUQodWktPlF1ZXJ5SW50ZXJmYWNlKElJRF9JV2ViVUlE
ZWxlZ2F0ZVByaXZhdGUsICh2b2lkKiopJnVpUHJpdmF0ZSkpKQotICAgICAgICAgICAgICAgIGlm
IChTVUNDRUVERUQodWlQcml2YXRlLT5kb0RyYWdEcm9wKG1fd2ViVmlldywgZGF0YU9iamVjdC5n
ZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCkpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgaHIgPSB1aVByaXZhdGUtPmRvRHJhZ0Ryb3Ao
bV93ZWJWaWV3LCBkYXRhT2JqZWN0LmdldCgpLCBzb3VyY2UuZ2V0KCksIG9rRWZmZWN0LCAmZWZm
ZWN0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBociA9IERvRHJhZ0Ryb3AoZGF0YU9i
amVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCk7CisKKyAgICAgICAg
RHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgaWYg
KGhyID09IERSQUdEUk9QX1NfRFJPUCkgeworICAgICAgICAgICAgaWYgKGVmZmVjdCAmIERST1BF
RkZFQ1RfQ09QWSkKKyAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uQ29w
eTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfTElOSykKKyAgICAg
ICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfTU9WRSkKKyAgICAgICAgICAgICAgICBvcGVyYXRp
b24gPSBEcmFnT3BlcmF0aW9uTW92ZTsKICAgICAgICAgfQotCi0gICAgICAgIERvRHJhZ0Ryb3Ao
ZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCk7CisgICAg
ICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3Vz
ZUV2ZW50KG1fd2ViVmlldywgZmFsc2UpLCBvcGVyYXRpb24pOwogICAgIH0KIH0KIApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNDk0MjkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0xMC0xMSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NzMxCisgICAgICAg
IEFuZAorICAgICAgICByZGFyOi8vcHJvYmxlbS81MDE1OTYxCisgICAgICAgIAorICAgICAgICBU
ZXN0cyB0aGF0IERIVE1MIGRyYWctYW5kLWRyb3Agd29ya3MgY29ycmVjdGx5LgorICAgICAgICAK
KyAgICAgICAgTm90ZSwgdGhpcyB0ZXN0IGZhaWxzIHdoZW4gZWZmZWN0QWxsb3dlZCA9PSAidW5p
bml0aWFsaXplZCIgYmVjYXVzZSAKKyAgICAgICAgdGhpcyBlZmZlY3QgaGFzIG5vdCBiZWVuIGlt
cGxlbWVudGVkIHlldCAoc2VlIGJ1ZyAjMzAyOTEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMv
ZHJhZy1hbmQtZHJvcC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRz
L2RyYWctYW5kLWRyb3AuaHRtbDogQWRkZWQuCisKIDIwMDktMTAtMTAgIENhbWVyb24gTWNDb3Jt
YWNrICA8Y2FtQG1jYy5pZC5hdT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFu
ZC1kcm9wLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MSBAQAorVGhpcyB0
ZXN0IGNoZWNrcyB0aGF0IGRyYWctYW5kLWRyb3Agc3VwcG9ydCB3b3JrcyBhbmQgY29uZm9ybXMg
dG8gdGhlIEhUTUwgNSBzcGVjaWZpY2F0aW9uLgorRm9yIGVhY2ggZWZmZWN0QWxsb3dlZCwgaXRl
cmF0ZXMgdGhyb3VnaCB0aGUgcG9zc2libGUgZHJvcEVmZmVjdHM6IG5vbmUsIGNvcHksIG1vdmUs
IGxpbmssIGR1bW15LgorCitOb3RlLCB0aGlzIHRlc3QgZmFpbHMgd2hlbiBlZmZlY3RBbGxvd2Vk
ID09ICJ1bmluaXRpYWxpemVkIiBiZWNhdXNlIHRoaXMgZWZmZWN0IGhhcyBub3QgYmVlbiBpbXBs
ZW1lbnRlZCB5ZXQgKHNlZSBidWcgIzMwMjkxKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJ1bmluaXRpYWxpemVkIgorCitQQVNTIGV2
ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJv
cEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK0ZBSUwgZXZlbnQuZGF0YVRyYW5zZmVy
LmRyb3BFZmZlY3Qgc2hvdWxkIGJlIGNvcHkuIFdhcyBub25lLgorRkFJTCBldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCBzaG91bGQgYmUgbW92ZS4gV2FzIG5vbmUuCitGQUlMIGV2ZW50LmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0IHNob3VsZCBiZSBsaW5rLiBXYXMgbm9uZS4KK1BBU1MgZXZl
bnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCisKK1doZW4gZWZmZWN0QWxsb3dl
ZCA9PSAibm9uZSIKKworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9w
RWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQ
QVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVy
LmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQgPT0gImFsbCIKKworUEFTUyBldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZl
Y3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJ
bmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVm
ZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25z
W2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQgPT0gImNvcHki
CisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0u
b3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZl
Y3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAi
bm9uZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCisKK1do
ZW4gZWZmZWN0QWxsb3dlZCA9PSAibW92ZSIKKworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJv
cEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVk
SW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25l
IgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5v
cHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJsaW5rIgorCitQ
QVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlv
bnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRy
YW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBk
cm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVl
CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVm
ZmVjdEFsbG93ZWQgPT0gImNvcHlNb3ZlIgorCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJ
bmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVm
ZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25z
W2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJjb3B5TGluayIKKworUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25z
W2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0u
c2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
aXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZl
Y3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1Mg
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCisKK1doZW4gZWZmZWN0QWxs
b3dlZCA9PSAibGlua01vdmUiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qg
aXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52
YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1Mg
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tk
cm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNm
ZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNl
bGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlz
ICJub25lIgorCitXaGVuIGVmZmVjdEFsbG93ZWQgPT0gImR1bW15IgorCitQQVNTIGV2ZW50LmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVj
dEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJu
b25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1Mg
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODUgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
dHlsZT4KKyNkcm9wVGFyZ2V0LCAjZHJhZ01lIHsgdGV4dC1hbGlnbjogY2VudGVyOyBkaXNwbGF5
OiB0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlIH0KKyNkcm9wVGFyZ2V0IHt3aWR0
aDogMjU2cHg7IGhlaWdodDogMjU2cHg7IGJvcmRlcjogMXB4IGRhc2hlZH0KKyNkcmFnTWUgey13
ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50OyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyBiYWNr
Z3JvdW5kOiAjZmYwMDAwOyB3aWR0aDogNjRweDsgaGVpZ2h0OiA2NHB4OyBjb2xvcjogd2hpdGV9
Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgICB2YXIgZHJhZ01lOworICAgIHZhciBkcm9wVGFyZ2V0
OworICAgIHZhciBlZmZlY3RBbGxvd2VkRWxlbTsKKyAgICB2YXIgZHJvcEVmZmVjdEVsZW07Cisg
ICAgdmFyIGNvbnNvbGVFbG07CisgICAgdmFyIGV2ZW50OworICAgIAorICAgIHdpbmRvdy5vbmxv
YWQgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICBkcmFnTWUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZHJhZ01lIik7CisgICAgICAgIGRyb3BUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZHJvcFRhcmdldCIpOworICAgICAgICBlZmZlY3RBbGxvd2VkRWxlbSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJlZmZlY3RBbGxvd2VkIik7CisgICAgICAgIGRyb3BFZmZlY3RF
bGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyb3BFZmZlY3QiKTsKKyAgICAgICAgY29u
c29sZUVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIAor
ICAgICAgICBpZiAoIWRyYWdNZSB8fCAhZHJvcFRhcmdldCB8fCAhZWZmZWN0QWxsb3dlZEVsZW0g
fHwgIWRyb3BFZmZlY3RFbGVtIHx8ICFjb25zb2xlRWxtKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICAgICAgZHJhZ01lLm9uZHJhZ3N0YXJ0ID0gZHJhZ1N0YXJ0OworICAgICAg
ICBkcmFnTWUub25kcmFnZW5kID0gZHJhZ0VuZDsKKyAgICAgICAgCisgICAgICAgIGRyb3BUYXJn
ZXQub25kcmFnZW50ZXIgPSBkcmFnRW50ZXJlZDsKKyAgICAgICAgZHJvcFRhcmdldC5vbmRyYWdv
dmVyID0gZHJhZ092ZXI7CisgICAgICAgIGRyb3BUYXJnZXQub25kcm9wID0gZHJvcDsKKyAgICAg
ICAgCisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZHJhZ1N0
YXJ0KGUpCisgICAgeworICAgICAgICBldmVudCA9IGU7CisgICAgICAgIGUuZGF0YVRyYW5zZmVy
LmVmZmVjdEFsbG93ZWQgPSBlZmZlY3RBbGxvd2VkRWxlbS5vcHRpb25zW2VmZmVjdEFsbG93ZWRF
bGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlOworICAgICAgICBlLmRhdGFUcmFuc2Zlci5zZXREYXRh
KCdUZXh0JywgZS50YXJnZXQudGV4dENvbnRlbnQpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlv
biBkcmFnRW5kKGUpCisgICAgeworICAgICAgICBjaGVja0RyYWdTdGF0ZShlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBkcmFnRW50ZXJlZChlKQorICAgIHsK
KyAgICAgICAgZHJhZ0VudGVyZWRBbmRVcGRhdGVkKGUpOworICAgIH0KKyAgICAKKyAgICBmdW5j
dGlvbiBkcmFnT3ZlcihlKQorICAgIHsKKyAgICAgICAgZHJhZ0VudGVyZWRBbmRVcGRhdGVkKGUp
OworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBkcmFnRW50ZXJlZEFuZFVwZGF0ZWQoZSkKKyAg
ICB7CisgICAgICAgIGV2ZW50ID0gZTsKKyAgICAgICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVj
dCA9IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0u
dmFsdWU7CisgICAgICAgIGNhbmNlbERyYWcoZSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9u
IGRyb3AoZSkKKyAgICB7CisgICAgICAgIGNhbmNlbERyYWcoZSk7CisgICAgfQorICAgIAorICAg
IGZ1bmN0aW9uIGNhbmNlbERyYWcoZSkKKyAgICB7CisgICAgICAgIGlmIChlLnByZXZlbnREZWZh
dWx0KQorICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIEFzc3VtZSB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgd2l0aGluIEludGVy
bmV0IEV4cGxvcmVyCisgICAgICAgICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gY2hlY2tEcmFnU3RhdGUoZSkKKyAgICB7Cisg
ICAgICAgIGV2ZW50ID0gZTsKKyAgICAgICAgdmFyIGNob3NlbkRyb3BFZmZlY3QgPSBkcm9wRWZm
ZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlOworICAg
ICAgICB2YXIgY2hvc2VuRWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWRFbGVtLm9wdGlvbnNb
ZWZmZWN0QWxsb3dlZEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWU7CisgICAgICAgIHZhciBhY3R1
YWxEcm9wRWZmZWN0ID0gZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdDsKKyAgICAgICAgCisgICAg
ICAgIGlmIChpc0Ryb3BFZmZlY3RBbGxvd2VkKGNob3NlbkRyb3BFZmZlY3QsIGNob3NlbkVmZmVj
dEFsbG93ZWQpKQorICAgICAgICAgICAgc2hvdWxkRXZhbHVhdGVUbygnZXZlbnQuZGF0YVRyYW5z
ZmVyLmRyb3BFZmZlY3QnLCAnZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5z
ZWxlY3RlZEluZGV4XS52YWx1ZScpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0JywgJ25vbmUnKTsK
KyAgICAgICAgICAgIAorICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBpc0Ryb3BFZmZlY3RBbGxv
d2VkKGNob3NlbkRyb3BFZmZlY3QsIGFsbG93ZWREcm9wRWZmZWN0KSB7CisgICAgICAgIC8vIEV4
dHJhY3RlZCBmcm9tIHRoZSBIVE1MIDUgZHJhZy1hbmQtZHJvcCBzZWN0aW9uLCBodHRwOi8vZGV2
LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3Lmh0bWwjZG5kCisgICAgICAgIGlmIChjaG9zZW5E
cm9wRWZmZWN0ID09ICJub25lIikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBp
ZiAoY2hvc2VuRHJvcEVmZmVjdCA9PSAiY29weSIgJiYgWyJjb3B5IiwgImNvcHlMaW5rIiwgImNv
cHlNb3ZlIiwgInVuaW5pdGlhbGl6ZWQiLCAiYWxsIl0uaW5kZXhPZihhbGxvd2VkRHJvcEVmZmVj
dCkgIT0gLTEpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGNob3NlbkRy
b3BFZmZlY3QgPT0gIm1vdmUiICYmIFsibW92ZSIsICJjb3B5TW92ZSIsICJsaW5rTW92ZSIsICJ1
bmluaXRpYWxpemVkIiwgImFsbCJdLmluZGV4T2YoYWxsb3dlZERyb3BFZmZlY3QpICE9IC0xKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChjaG9zZW5Ecm9wRWZmZWN0ID09
ICJsaW5rIiAmJiBbImxpbmsiLCAiY29weUxpbmsiLCAibGlua01vdmUiLCAidW5pbml0aWFsaXpl
ZCIsICJhbGwiXS5pbmRleE9mKGFsbG93ZWREcm9wRWZmZWN0KSAhPSAtMSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZnVuY3Rp
b24gcnVuVGVzdCgpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICAgICAgCisgICAgICAgIHZhciBzdGFydFggPSBkcmFnTWUub2Zmc2V0
TGVmdCArIDEwOworICAgICAgICB2YXIgc3RhcnRZID0gZHJhZ01lLm9mZnNldFRvcCArIGRyYWdN
ZS5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICB2YXIgZW5kWCA9IGRyb3BUYXJnZXQub2Zmc2V0
TGVmdCArIDEwOworICAgICAgICB2YXIgZW5kWSA9IGRyb3BUYXJnZXQub2Zmc2V0VG9wICsgZHJv
cFRhcmdldC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAKKyAgICAgICAgdmFyIG51bUVmZmVj
dEFsbG93ZWQgPSBlZmZlY3RBbGxvd2VkRWxlbS5vcHRpb25zLmxlbmd0aDsKKyAgICAgICAgdmFy
IG51bUVmZmVjdHMgPSBkcm9wRWZmZWN0RWxlbS5vcHRpb25zLmxlbmd0aDsKKyAgICAgICAgCisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRWZmZWN0QWxsb3dlZDsgKytpKSB7CisgICAg
ICAgICAgICBlZmZlY3RBbGxvd2VkRWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGRlYnVnKCc8YnIgLz5XaGVuIGVmZmVjdEFsbG93ZWQgPT0gIicgKyBlZmZlY3RB
bGxvd2VkRWxlbS5vcHRpb25zW2ldLnZhbHVlICsgJyI8YnIgLz4nKTsKKyAgICAgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgbnVtRWZmZWN0czsgKytqKSB7CisgICAgICAgICAgICAgICAgZHJv
cEVmZmVjdEVsZW0ub3B0aW9uc1tqXS5zZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmxl
YXBGb3J3YXJkKDEwMCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
ZW5kWCwgZW5kWSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHZhciB0ZXN0Q29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtY29udGFpbmVyIik7CisgICAgICAgIGlmICh0ZXN0Q29u
dGFpbmVyKQorICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXN0Q29udGFp
bmVyKTsKKyAgICAgICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBM
RVRFPC9zcGFuPicpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgICAgPGRpdiBpZD0idGVzdC1jb250YWluZXIiPgorICAg
ICAgICA8bGFiZWwgZm9yPSJlZmZlY3RBbGxvd2VkIj5lZmZlY3RBbGxvd2VkPC9sYWJlbD4gPHNl
bGVjdCBpZD0iZWZmZWN0QWxsb3dlZCI+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ1bmlu
aXRpYWxpemVkIj5VbmluaXRpYWxpemVkPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZh
bHVlPSJub25lIj5Ob25lPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJhbGwi
PkFsbDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iY29weSI+Q29weTwvb3B0
aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW92ZSI+TW92ZTwvb3B0aW9uPgorICAg
ICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGluayI+TGluazwvb3B0aW9uPgorICAgICAgICAgICAg
PG9wdGlvbiB2YWx1ZT0iY29weU1vdmUiPkNvcHlNb3ZlPC9vcHRpb24+CisgICAgICAgICAgICA8
b3B0aW9uIHZhbHVlPSJjb3B5TGluayI+Q29weUxpbms8L29wdGlvbj4KKyAgICAgICAgICAgIDxv
cHRpb24gdmFsdWU9ImxpbmtNb3ZlIj5MaW5rTW92ZTwvb3B0aW9uPgorICAgICAgICAgICAgPG9w
dGlvbiB2YWx1ZT0iZHVtbXkiPk5vbmV4aXN0ZW50IChEdW1teSkgRWZmZWN0PC9vcHRpb24+Cisg
ICAgICAgIDwvc2VsZWN0PgorICAgICAgICA8YnIvPjxici8+CisgICAgICAgIDxkaXYgaWQ9ImRy
b3BUYXJnZXQiPkRyb3AgdGhlIHJlZCBzcXVhcmUgb250byBtZS48YnIvPjxici8+CisgICAgICAg
ICAgICA8bGFiZWwgZm9yPSJkcm9wRWZmZWN0Ij5FeHBlY3RzIGRyb3BFZmZlY3Q8L2xhYmVsPiA8
c2VsZWN0IGlkPSJkcm9wRWZmZWN0Ij4KKyAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJu
b25lIj5Ob25lPC9vcHRpb24+CisgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iY29weSI+
Q29weTwvb3B0aW9uPgorICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im1vdmUiPk1vdmU8
L29wdGlvbj4KKyAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJsaW5rIj5MaW5rPC9vcHRp
b24+CisgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZHVtbXkiPk5vbmV4aXN0ZW50IChE
dW1teSkgRWZmZWN0PC9vcHRpb24+CisgICAgICAgICAgICA8L3NlbGVjdD4KKyAgICAgICAgPC9k
aXY+CisgICAgICAgIDxoci8+CisgICAgICAgIDxwPkl0ZW1zIHRoYXQgY2FuIGJlIGRyYWdnZWQg
dG8gdGhlIGRyb3AgdGFyZ2V0OjwvcD4KKyAgICAgICAgPGRpdiBpZD0iZHJhZ01lIiBkcmFnZ2Fi
bGU9InRydWUiPlNxdWFyZTwvZGl2PgorICAgICAgICA8aHIvPgorICAgIDwvZGl2PgorICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9u
KCJUaGlzIHRlc3QgY2hlY2tzIHRoYXQgZHJhZy1hbmQtZHJvcCBzdXBwb3J0IHdvcmtzIGFuZCBj
b25mb3JtcyB0byB0aGUgSFRNTCA1IHNwZWNpZmljYXRpb24uPGJyLz4iICsKKyAgICAgICAgICAg
ICAgICAgICAgIkZvciBlYWNoIGVmZmVjdEFsbG93ZWQsIGl0ZXJhdGVzIHRocm91Z2ggdGhlIHBv
c3NpYmxlIGRyb3BFZmZlY3RzOiBub25lLCBjb3B5LCBtb3ZlLCBsaW5rLCBkdW1teS48YnIvPjxi
ci8+IiArCisgICAgICAgICAgICAgICAgICAgICJOb3RlLCB0aGlzIHRlc3QgZmFpbHMgd2hlbiBl
ZmZlY3RBbGxvd2VkID09ICZxdW90O3VuaW5pdGlhbGl6ZWQmcXVvdDsgYmVjYXVzZSB0aGlzIGVm
ZmVjdCBoYXMgbm90IGJlZW4gIiArCisgICAgICAgICAgICAgICAgICAgICJpbXBsZW1lbnRlZCB5
ZXQgKHNlZSBidWcgIzMwMjkxKS4iKTsKKyAgICAgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="22373"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41082</attachid>
            <date>2009-10-12 21:44:31 -0700</date>
            <delta_ts>2009-10-15 13:40:08 -0700</delta_ts>
            <desc>Patch with test cases</desc>
            <filename>Bug24731_101209.patch</filename>
            <type>text/plain</type>
            <size>20934</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA0OTQ4OSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMDktMTAtMTIgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAg
ICAgICBBbmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAg
ICAgSW1wbGVtZW50cyBzdXBwb3J0IGZvciBESFRNTCBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMg
KGkuZS4gb25kcmFnc3RhcnQsIG9uZHJhZ2VuZCkKKyAgICAgICAgaW4gdGhlIFdpbmRvd3MgYnVp
bGQgc28gdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgTWFjIE9TIFggYnVpbGQuIEhlbmNlLCBkcm9w
RWZmZWN0IGlzCisgICAgICAgIGNvcnJlY3RseSBzZXQuCisgICAgICAgIAorICAgICAgICBUaGUg
V2ViVmlldyBhbmQgV2ViRHJvcFNvdXJjZSBkcmFnLWFuZC1kcm9wIGZ1bmN0aW9ucywgYXMgY2Fs
bGVkIGJ5IGZ1bmN0aW9uCisgICAgICAgIERvRHJhZ0Ryb3AgaW4gaXRzIGV2ZW50IGxvb3AsIG5l
aXRoZXIgdXNlZCB0aGUgZHJvcCBlZmZlY3QgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IG5vciByZXNwZWN0ZWQgZXZlbnQuZGF0YVRyYW5zZmVy
LmVmZmVjdHNBbGxvd2VkLgorICAgICAgICBJbnN0ZWFkLCB0aGVzZSBmdW5jdGlvbnMgZGVmYXVs
dGVkIHRvIHNvbWUgaGFyZGNvZGVkIGRyb3AgZWZmZWN0IGFuZCBzZXQgb2YKKyAgICAgICAgYWxs
b3dlZCBkcm9wIGVmZmVjdHMsIHJlc3BlY3RpdmVseS4KKworICAgICAgICBUZXN0czogZmFzdC9l
dmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAg
ICAgICogV2ViRHJvcFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEcm9wU291cmNlOjpRdWVyeUNv
bnRpbnVlRHJhZyk6IE1vdmVkIGNhbGwgdG8gRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRB
dAorICAgICAgICBpbnRvIG1ldGhvZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcuCisgICAgICAg
ICogV2ViRHJvcFNvdXJjZS5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
Vmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24pOiBGaXhlcyA8cmRhcjovL3Byb2JsZW0vNTAx
NTk2MT4uIERldGVybWluZXMKKyAgICAgICAgYXBwcm9wcmlhdGUgZHJvcCBlZmZlY3QgZnJvbSBz
dGF0ZSBvZiBrZXlib2FyZCBhbmQgYWxsb3dlZCBlZmZlY3RzCisgICAgICAgIG1fcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS0+c291cmNlRHJhZ09wZXJhdGlvbigpLgorICAgICAgICAoV2ViVmlldzo6
RHJhZ0VudGVyKToKKyAgICAgICAgKFdlYlZpZXc6OkRyYWdPdmVyKToKKyAgICAgICAgKFdlYlZp
ZXc6OkRyb3ApOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAwOS0xMC0wOSAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCShyZXZpc2lvbiA0OTQ4OSkKKysrIFdlYktpdC93aW4v
V2ViRHJvcFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwxMCArMTA2LDYgQEAgU1RE
TUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6OlF1ZXJ5Q29udGludQogewogICAgIGlmIChmRXNjYXBl
UHJlc3NlZCB8fCAhKGdyZktleVN0YXRlICYgKE1LX0xCVVRUT058TUtfUkJVVFRPTikpKSB7CiAg
ICAgICAgIG1fZHJvcHBlZCA9ICFmRXNjYXBlUHJlc3NlZDsKLSAgICAgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBtX3dlYlZpZXctPnBhZ2UoKSkKLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBw
YWdlLT5tYWluRnJhbWUoKSkgCi0gICAgICAgICAgICAgICAgLy9GSVhNRTogV2UgbmVlZCB0byBm
aWd1cmUgb3V0IGhvdyB0byBmaW5kIG91dCB3aGF0IGFjdHVhbGx5IGhhcHBlbmVkIGluIHRoZSBk
cmFnIDxyZGFyOi8vcHJvYmxlbS81MDE1OTYxPgotICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1fd2ViVmll
dy5nZXQoKSwgZmFsc2UpLCBmRXNjYXBlUHJlc3NlZCA/IERyYWdPcGVyYXRpb25Ob25lIDogRHJh
Z09wZXJhdGlvbkNvcHkpOwogICAgICAgICByZXR1cm4gZkVzY2FwZVByZXNzZWQ/IERSQUdEUk9Q
X1NfQ0FOQ0VMIDogRFJBR0RST1BfU19EUk9QOwogICAgIH0gZWxzZSBpZiAoUGFnZSogcGFnZSA9
IG1fd2ViVmlldy0+cGFnZSgpKQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFp
bkZyYW1lKCkpIApJbmRleDogV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmgJKHJldmlzaW9uIDQ5NDg5KQorKysgV2ViS2l0
L3dpbi9XZWJEcm9wU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDEyIEBACiAK
IGNsYXNzIFdlYlZpZXc7CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBQbGF0Zm9y
bU1vdXNlRXZlbnQ7Cit9CisKK1dlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBnZW5lcmF0ZU1v
dXNlRXZlbnQoV2ViVmlldyosIGJvb2wgaXNEcmFnKTsKKwogY2xhc3MgV2ViRHJvcFNvdXJjZSA6
IHB1YmxpYyBJRHJvcFNvdXJjZQogewogcHVibGljOgpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA0OTQ4
OSkKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2MTksMTEg
KzQ2MTksMjUgQEAgc3RhdGljIERXT1JEIGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IoRAogICAg
IHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGtleVN0YXRlVG9EcmFnT3Bl
cmF0aW9uKERXT1JEKSB7Ci0gICAgLy9GSVhNRTogVGhpcyBpcyBjdXJyZW50bHkgdmVyeSBzaW1w
bGUsIGl0IG1heSBuZWVkIHRvIGFjdHVhbGx5Ci0gICAgLy93b3JrIG91dCBhbiBhcHByb3ByaWF0
ZSBEcmFnT3BlcmF0aW9uIGluIGZ1dHVyZSAtLSBob3dldmVyIHRoaXMKLSAgICAvL2JlaGF2aW91
ciBhcHBlYXJzIHRvIG1hdGNoIEZpcmVGb3gKLSAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERy
YWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxpbmspOworRHJhZ09wZXJhdGlvbiBXZWJW
aWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3QKK3sK
KyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworCisg
ICAgLy8gQ29uZm9ybXMgdG8gTWljcm9zb2Z0J3Mga2V5IGNvbWJpbmF0aW9ucyBhcyBkb2N1bWVu
dGVkIGZvciAKKyAgICAvLyBJRHJvcFRhcmdldDo6RHJhZ092ZXIuIE5vdGUsIGdyZktleVN0YXRl
IGlzIHRoZSBjdXJyZW50IAorICAgIC8vIHN0YXRlIG9mIHRoZSBrZXlib2FyZCBtb2RpZmllciBr
ZXlzIG9uIHRoZSBrZXlib2FyZC4gU2VlOgorICAgIC8vIDxodHRwOi8vbXNkbi5taWNyb3NvZnQu
Y29tL2VuLXVzL2xpYnJhcnkvbXM2ODAxMjkoVlMuODUpLmFzcHg+LgorICAgIERyYWdPcGVyYXRp
b24gb3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLT5zb3VyY2VEcmFnT3BlcmF0
aW9uKCk7CisKKyAgICBpZiAoKGdyZktleVN0YXRlICYgKE1LX0NPTlRST0wgfCBNS19TSElGVCkp
ID09IChNS19DT05UUk9MIHwgTUtfU0hJRlQpKQorICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3Bl
cmF0aW9uTGluazsKKyAgICBlbHNlIGlmICgoZ3JmS2V5U3RhdGUgJiBNS19DT05UUk9MKSA9PSBN
S19DT05UUk9MKQorICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBl
bHNlIGlmICgoZ3JmS2V5U3RhdGUgJiBNS19TSElGVCkgPT0gTUtfU0hJRlQpCisgICAgICAgIG9w
ZXJhdGlvbiA9IERyYWdPcGVyYXRpb25HZW5lcmljOworCisgICAgcmV0dXJuIG9wZXJhdGlvbjsK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpEcmFnRW50ZXIoCkBAIC00
NjQwLDYgKzQ2NTQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OkRyYWdF
CiAgICAgICAgIEludFBvaW50KHB0LngsIHB0LnkpLCBrZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihn
cmZLZXlTdGF0ZSkpOwogICAgICpwZHdFZmZlY3QgPSBkcmFnT3BlcmF0aW9uVG9EcmFnQ3Vyc29y
KG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ0VudGVyZWQoJmRhdGEpKTsKIAorICAgIG1f
bGFzdERyb3BFZmZlY3QgPSAqcGR3RWZmZWN0OwogICAgIG1fZHJhZ0RhdGEgPSBwRGF0YU9iamVj
dDsKIAogICAgIHJldHVybiBTX09LOwpAQCAtNDY2MCw2ICs0Njc1LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpEcmFnTwogICAgIH0gZWxzZQogICAgICAgICAqcGR3RWZm
ZWN0ID0gRFJPUEVGRkVDVF9OT05FOwogCisgICAgbV9sYXN0RHJvcEVmZmVjdCA9ICpwZHdFZmZl
Y3Q7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ2ODQsNyArNDcwMCw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6RHJvcCgKICAgICAgICAgbV9kcm9wVGFyZ2V0SGVs
cGVyLT5Ecm9wKHBEYXRhT2JqZWN0LCAoUE9JTlQqKSZwdCwgKnBkd0VmZmVjdCk7CiAKICAgICBt
X2RyYWdEYXRhID0gMDsKLSAgICAqcGR3RWZmZWN0ID0gRFJPUEVGRkVDVF9OT05FOworICAgICpw
ZHdFZmZlY3QgPSBtX2xhc3REcm9wRWZmZWN0OwogICAgIFBPSU5UTCBsb2NhbHB0ID0gcHQ7CiAg
ICAgOjpTY3JlZW5Ub0NsaWVudChtX3ZpZXdXaW5kb3csIChMUFBPSU5UKSZsb2NhbHB0KTsKICAg
ICBEcmFnRGF0YSBkYXRhKHBEYXRhT2JqZWN0LCBJbnRQb2ludChsb2NhbHB0LngsIGxvY2FscHQu
eSksIApJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9XZWJWaWV3LmgJKHJldmlzaW9uIDQ5NDg5KQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTg2NSw2ICs4NjUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50
SW50b0JhY2tpbmdTdG9yZShXZWJDb3JlOjpGcmFtZVZpZXcqLCBIREMgYml0bWFwREMsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCwgV2luZG93c1RvUGFpbnQpOwogICAgIHZvaWQg
dXBkYXRlQmFja2luZ1N0b3JlKFdlYkNvcmU6OkZyYW1lVmlldyosIEhEQyA9IDAsIGJvb2wgYmFj
a2luZ1N0b3JlQ29tcGxldGVseURpcnR5ID0gZmFsc2UsIFdpbmRvd3NUb1BhaW50ID0gUGFpbnRX
ZWJWaWV3T25seSk7CiAKKyAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGtleVN0YXRlVG9EcmFn
T3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKSBjb25zdDsKKworICAgIC8vIEZJWE1FOiBUaGlz
IHZhcmlhYmxlIGlzIHBhcnQgb2YgYSB3b3JrYXJvdW5kLiBUaGUgZHJvcCBlZmZlY3QgKHBkd0Vm
ZmVjdCkgcGFzc2VkIHRvIERyb3AgaXMgaW5jb3JyZWN0LiAKKyAgICAvLyBXZSBzZXQgdGhpcyB2
YXJpYWJsZSBpbiBEcmFnRW50ZXIgYW5kIERyYWdPdmVyIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQg
aW4gRHJvcCB0byBzZXQgdGhlIGNvcnJlY3QgZHJvcCBlZmZlY3QuIAorICAgIC8vIFRodXMsIG9u
IHJldHVybiBmcm9tIERvRHJhZ0Ryb3Agd2UgaGF2ZSB0aGUgY29ycmVjdCBwZHdFZmZlY3QgZm9y
IHRoZSBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbi4KKyAgICAvLyAoc2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTI2NCkKKyAgICBEV09SRCBtX2xhc3REcm9wRWZm
ZWN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSElNQyBnZXRJTU1Db250ZXh0KCk7CiAgICAgdm9pZCBy
ZWxlYXNlSU1NQ29udGV4dChISU1DKTsKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmNwcAkocmV2aXNpb24gNDk0ODkpCisrKyBXZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsMTYgKzE3
MiwyNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSCiAgICAgICAg
IH0KIAogICAgICAgICBEV09SRCBva0VmZmVjdCA9IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
a1RvRHJhZ0N1cnNvcnMobV93ZWJWaWV3LT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCktPnNvdXJj
ZURyYWdPcGVyYXRpb24oKSk7Ci0gICAgICAgIERXT1JEIGVmZmVjdDsKKyAgICAgICAgRFdPUkQg
ZWZmZWN0ID0gRFJPUEVGRkVDVF9OT05FOwogICAgICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+
IHVpOworICAgICAgICBIUkVTVUxUIGhyID0gRV9OT1RJTVBMOwogICAgICAgICBpZiAoU1VDQ0VF
REVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgmdWkpKSkgewogICAgICAgICAgICAgQ09NUHRyPElX
ZWJVSURlbGVnYXRlUHJpdmF0ZT4gdWlQcml2YXRlOwogICAgICAgICAgICAgaWYgKFNVQ0NFRURF
RCh1aS0+UXVlcnlJbnRlcmZhY2UoSUlEX0lXZWJVSURlbGVnYXRlUHJpdmF0ZSwgKHZvaWQqKikm
dWlQcml2YXRlKSkpCi0gICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRCh1aVByaXZhdGUtPmRv
RHJhZ0Ryb3AobV93ZWJWaWV3LCBkYXRhT2JqZWN0LmdldCgpLCBzb3VyY2UuZ2V0KCksIG9rRWZm
ZWN0LCAmZWZmZWN0KSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICBociA9IHVpUHJpdmF0ZS0+ZG9EcmFnRHJvcChtX3dlYlZpZXcsIGRhdGFPYmplY3QuZ2V0
KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOwogICAgICAgICB9CisgICAgICAg
IGlmIChociA9PSBFX05PVElNUEwpCisgICAgICAgICAgICBociA9IERvRHJhZ0Ryb3AoZGF0YU9i
amVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCk7CiAKLSAgICAgICAg
RG9EcmFnRHJvcChkYXRhT2JqZWN0LmdldCgpLCBzb3VyY2UuZ2V0KCksIG9rRWZmZWN0LCAmZWZm
ZWN0KTsKKyAgICAgICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICAgICAgaWYgKGhyID09IERSQUdEUk9QX1NfRFJPUCkgeworICAgICAgICAgICAgaWYg
KGVmZmVjdCAmIERST1BFRkZFQ1RfQ09QWSkKKyAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBE
cmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVmZmVjdCAmIERST1BFRkZF
Q1RfTElOSykKKyAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTGluazsK
KyAgICAgICAgICAgIGVsc2UgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfTU9WRSkKKyAgICAgICAg
ICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICAgICAgfQorICAgICAg
ICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0KGdlbmVyYXRlTW91c2VF
dmVudChtX3dlYlZpZXcsIGZhbHNlKSwgb3BlcmF0aW9uKTsKICAgICB9CiB9CiAKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDQ5NDg5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTAtMTIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDczMQorICAgICAgICBB
bmQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTAxNTk2MQorICAgICAgICAKKyAgICAgICAgVGVz
dHMgdGhhdCBESFRNTCBkcmFnLWFuZC1kcm9wIHdvcmtzIGNvcnJlY3RseS4KKyAgICAgICAgCisg
ICAgICAgIE5vdGUsIHRoaXMgdGVzdCBmYWlscyB3aGVuIGVmZmVjdEFsbG93ZWQgPT0gInVuaW5p
dGlhbGl6ZWQiIGJlY2F1c2UgCisgICAgICAgIHRoaXMgZWZmZWN0IGhhcyBub3QgYmVlbiBpbXBs
ZW1lbnRlZCB5ZXQgKHNlZSBidWcgIzMwMjkxKS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2Ry
YWctYW5kLWRyb3AtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9k
cmFnLWFuZC1kcm9wLmh0bWw6IEFkZGVkLgorCiAyMDA5LTEwLTEyICBGdW1pdG9zaGkgVWthaSAg
PHVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBGaXggNCBsYXlvdXQg
dGVzdCBmYWlsdXJlcyBieSB3ZWJraXQgcjQ5NDg4CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9kcmFnLWFuZC1kcm9wLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDkxIEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgZHJhZy1hbmQt
ZHJvcCBzdXBwb3J0IHdvcmtzIGFuZCBjb25mb3JtcyB0byB0aGUgSFRNTCA1IHNwZWNpZmljYXRp
b24uCitGb3IgZWFjaCBlZmZlY3RBbGxvd2VkLCBpdGVyYXRlcyB0aHJvdWdoIHRoZSBwb3NzaWJs
ZSBkcm9wRWZmZWN0czogbm9uZSwgY29weSwgbW92ZSwgbGluaywgZHVtbXkuCisKK05vdGUsIHRo
aXMgdGVzdCBmYWlscyB3aGVuIGVmZmVjdEFsbG93ZWQgPT0gInVuaW5pdGlhbGl6ZWQiIGJlY2F1
c2UgdGhpcyBlZmZlY3QgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIHlldCAoc2VlIGJ1ZyAjMzAy
OTEpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitXaGVuIGVmZmVjdEFsbG93
ZWQgPT0gInVuaW5pdGlhbGl6ZWQiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZl
Y3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4
XS52YWx1ZQorRkFJTCBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBzaG91bGQgYmUgY29w
eS4gV2FzIG5vbmUuCitGQUlMIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IHNob3VsZCBi
ZSBtb3ZlLiBXYXMgbm9uZS4KK0ZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Qgc2hv
dWxkIGJlIGxpbmsuIFdhcyBub25lLgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVj
dCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJub25lIgorCitQQVNTIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVm
ZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRy
b3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlz
ICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BB
U1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCisKK1doZW4gZWZmZWN0
QWxsb3dlZCA9PSAiYWxsIgorCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlz
IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFs
dWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0u
b3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZl
Y3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJ
bmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUi
CisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAiY29weSIKKworUEFTUyBldmVudC5kYXRhVHJhbnNm
ZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNl
bGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlz
IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFs
dWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2
ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJtb3Zl
IgorCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVt
Lm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2Vs
ZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMg
Im5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitX
aGVuIGVmZmVjdEFsbG93ZWQgPT0gImxpbmsiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRy
b3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3Rl
ZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9u
ZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2
ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJv
cEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVy
LmRyb3BFZmZlY3QgaXMgIm5vbmUiCisKK1doZW4gZWZmZWN0QWxsb3dlZCA9PSAiY29weU1vdmUi
CisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0u
b3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZl
Y3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJ
bmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUi
CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorCitXaGVuIGVm
ZmVjdEFsbG93ZWQgPT0gImNvcHlMaW5rIgorCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0IGlzIGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJ
bmRleF0udmFsdWUKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVm
ZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0
RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyAibm9uZSIKKworV2hlbiBlZmZlY3RBbGxvd2VkID09ICJsaW5rTW92ZSIKKworUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25z
W2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5k
ZXhdLnZhbHVlCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IGlzIGRyb3BFZmZl
Y3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVjdEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWUKK1BBU1Mg
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCisKK1doZW4gZWZmZWN0QWxs
b3dlZCA9PSAiZHVtbXkiCisKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMg
ZHJvcEVmZmVjdEVsZW0ub3B0aW9uc1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1
ZQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyAibm9uZSIKK1BBU1MgZXZl
bnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgIm5vbmUiCitQQVNTIGV2ZW50LmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0IGlzICJub25lIgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCBpcyAibm9uZSIKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4
NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorI2Ryb3BUYXJnZXQsICNkcmFn
TWUgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IGRpc3BsYXk6IHRhYmxlLWNlbGw7IHZlcnRpY2FsLWFs
aWduOiBtaWRkbGUgfQorI2Ryb3BUYXJnZXQge3dpZHRoOiAyNTZweDsgaGVpZ2h0OiAyNTZweDsg
Ym9yZGVyOiAxcHggZGFzaGVkfQorI2RyYWdNZSB7LXdlYmtpdC11c2VyLWRyYWc6IGVsZW1lbnQ7
IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IGJhY2tncm91bmQ6ICNmZjAwMDA7IHdpZHRoOiA2
NHB4OyBoZWlnaHQ6IDY0cHg7IGNvbG9yOiB3aGl0ZX0KKzwvc3R5bGU+Cis8c2NyaXB0PgorICAg
IHZhciBkcmFnTWU7CisgICAgdmFyIGRyb3BUYXJnZXQ7CisgICAgdmFyIGVmZmVjdEFsbG93ZWRF
bGVtOworICAgIHZhciBkcm9wRWZmZWN0RWxlbTsKKyAgICB2YXIgY29uc29sZUVsbTsKKyAgICB2
YXIgZXZlbnQ7CisgICAgCisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGRyYWdNZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnTWUiKTsKKyAgICAg
ICAgZHJvcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcm9wVGFyZ2V0Iik7Cisg
ICAgICAgIGVmZmVjdEFsbG93ZWRFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVmZmVj
dEFsbG93ZWQiKTsKKyAgICAgICAgZHJvcEVmZmVjdEVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZHJvcEVmZmVjdCIpOworICAgICAgICBjb25zb2xlRWxtID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgCisgICAgICAgIGlmICghZHJhZ01lIHx8ICFk
cm9wVGFyZ2V0IHx8ICFlZmZlY3RBbGxvd2VkRWxlbSB8fCAhZHJvcEVmZmVjdEVsZW0gfHwgIWNv
bnNvbGVFbG0pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBkcmFnTWUu
b25kcmFnc3RhcnQgPSBkcmFnU3RhcnQ7CisgICAgICAgIGRyYWdNZS5vbmRyYWdlbmQgPSBkcmFn
RW5kOworICAgICAgICAKKyAgICAgICAgZHJvcFRhcmdldC5vbmRyYWdlbnRlciA9IGRyYWdFbnRl
cmVkOworICAgICAgICBkcm9wVGFyZ2V0Lm9uZHJhZ292ZXIgPSBkcmFnT3ZlcjsKKyAgICAgICAg
ZHJvcFRhcmdldC5vbmRyb3AgPSBkcm9wOworICAgICAgICAKKyAgICAgICAgcnVuVGVzdCgpOwor
ICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBkcmFnU3RhcnQoZSkKKyAgICB7CisgICAgICAgIGV2
ZW50ID0gZTsKKyAgICAgICAgZS5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFs
bG93ZWRFbGVtLm9wdGlvbnNbZWZmZWN0QWxsb3dlZEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWU7
CisgICAgICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEoJ1RleHQnLCBlLnRhcmdldC50ZXh0Q29u
dGVudCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdFbmQoZSkKKyAgICB7CisgICAg
ICAgIGNoZWNrRHJhZ1N0YXRlKGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGZ1bmN0aW9uIGRyYWdFbnRlcmVkKGUpCisgICAgeworICAgICAgICBkcmFnRW50ZXJlZEFuZFVw
ZGF0ZWQoZSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRyYWdPdmVyKGUpCisgICAgewor
ICAgICAgICBkcmFnRW50ZXJlZEFuZFVwZGF0ZWQoZSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0
aW9uIGRyYWdFbnRlcmVkQW5kVXBkYXRlZChlKQorICAgIHsKKyAgICAgICAgZXZlbnQgPSBlOwor
ICAgICAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gZHJvcEVmZmVjdEVsZW0ub3B0aW9u
c1tkcm9wRWZmZWN0RWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZTsKKyAgICAgICAgY2FuY2VsRHJh
ZyhlKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZHJvcChlKQorICAgIHsKKyAgICAgICAg
Y2FuY2VsRHJhZyhlKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gY2FuY2VsRHJhZyhlKQor
ICAgIHsKKyAgICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpCisgICAgICAgICAgICBlLnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQXNzdW1lIHRoaXMg
c2NyaXB0IGlzIGV4ZWN1dGluZyB3aXRoaW4gSW50ZXJuZXQgRXhwbG9yZXIKKyAgICAgICAgICAg
IGUucmV0dXJuVmFsdWUgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmdW5j
dGlvbiBjaGVja0RyYWdTdGF0ZShlKQorICAgIHsKKyAgICAgICAgZXZlbnQgPSBlOworICAgICAg
ICB2YXIgY2hvc2VuRHJvcEVmZmVjdCA9IGRyb3BFZmZlY3RFbGVtLm9wdGlvbnNbZHJvcEVmZmVj
dEVsZW0uc2VsZWN0ZWRJbmRleF0udmFsdWU7CisgICAgICAgIHZhciBjaG9zZW5FZmZlY3RBbGxv
d2VkID0gZWZmZWN0QWxsb3dlZEVsZW0ub3B0aW9uc1tlZmZlY3RBbGxvd2VkRWxlbS5zZWxlY3Rl
ZEluZGV4XS52YWx1ZTsKKyAgICAgICAgdmFyIGFjdHVhbERyb3BFZmZlY3QgPSBlLmRhdGFUcmFu
c2Zlci5kcm9wRWZmZWN0OworICAgICAgICAKKyAgICAgICAgaWYgKGlzRHJvcEVmZmVjdEFsbG93
ZWQoY2hvc2VuRHJvcEVmZmVjdCwgY2hvc2VuRWZmZWN0QWxsb3dlZCkpCisgICAgICAgICAgICBz
aG91bGRFdmFsdWF0ZVRvKCdldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCcsICdkcm9wRWZm
ZWN0RWxlbS5vcHRpb25zW2Ryb3BFZmZlY3RFbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlJyk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QnLCAnbm9uZScpOworICAgICAgICAgICAgCisgICAgfQorICAg
IAorICAgIGZ1bmN0aW9uIGlzRHJvcEVmZmVjdEFsbG93ZWQoY2hvc2VuRHJvcEVmZmVjdCwgYWxs
b3dlZERyb3BFZmZlY3QpIHsKKyAgICAgICAgLy8gRXh0cmFjdGVkIGZyb20gdGhlIEhUTUwgNSBk
cmFnLWFuZC1kcm9wIHNlY3Rpb24sIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZp
ZXcuaHRtbCNkbmQKKyAgICAgICAgaWYgKGNob3NlbkRyb3BFZmZlY3QgPT0gIm5vbmUiKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChjaG9zZW5Ecm9wRWZmZWN0ID09ICJj
b3B5IiAmJiBbImNvcHkiLCAiY29weUxpbmsiLCAiY29weU1vdmUiLCAidW5pbml0aWFsaXplZCIs
ICJhbGwiXS5pbmRleE9mKGFsbG93ZWREcm9wRWZmZWN0KSAhPSAtMSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBpZiAoY2hvc2VuRHJvcEVmZmVjdCA9PSAibW92ZSIgJiYgWyJt
b3ZlIiwgImNvcHlNb3ZlIiwgImxpbmtNb3ZlIiwgInVuaW5pdGlhbGl6ZWQiLCAiYWxsIl0uaW5k
ZXhPZihhbGxvd2VkRHJvcEVmZmVjdCkgIT0gLTEpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgaWYgKGNob3NlbkRyb3BFZmZlY3QgPT0gImxpbmsiICYmIFsibGluayIsICJjb3B5
TGluayIsICJsaW5rTW92ZSIsICJ1bmluaXRpYWxpemVkIiwgImFsbCJdLmluZGV4T2YoYWxsb3dl
ZERyb3BFZmZlY3QpICE9IC0xKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAg
ICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAKKyAg
ICAgICAgdmFyIHN0YXJ0WCA9IGRyYWdNZS5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgIHZhciBz
dGFydFkgPSBkcmFnTWUub2Zmc2V0VG9wICsgZHJhZ01lLm9mZnNldEhlaWdodCAvIDI7CisgICAg
ICAgIHZhciBlbmRYID0gZHJvcFRhcmdldC5vZmZzZXRMZWZ0ICsgMTA7CisgICAgICAgIHZhciBl
bmRZID0gZHJvcFRhcmdldC5vZmZzZXRUb3AgKyBkcm9wVGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7
CisgICAgICAgIAorICAgICAgICB2YXIgbnVtRWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWRF
bGVtLm9wdGlvbnMubGVuZ3RoOworICAgICAgICB2YXIgbnVtRWZmZWN0cyA9IGRyb3BFZmZlY3RF
bGVtLm9wdGlvbnMubGVuZ3RoOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBudW1FZmZlY3RBbGxvd2VkOyArK2kpIHsKKyAgICAgICAgICAgIGVmZmVjdEFsbG93ZWRFbGVt
Lm9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgZGVidWcoJzxiciAvPldo
ZW4gZWZmZWN0QWxsb3dlZCA9PSAiJyArIGVmZmVjdEFsbG93ZWRFbGVtLm9wdGlvbnNbaV0udmFs
dWUgKyAnIjxiciAvPicpOworICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1FZmZl
Y3RzOyArK2opIHsKKyAgICAgICAgICAgICAgICBkcm9wRWZmZWN0RWxlbS5vcHRpb25zW2pdLnNl
bGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFgsIHN0YXJ0WSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwKTsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbmRYLCBlbmRZKTsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgdmFyIHRlc3RDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC1j
b250YWluZXIiKTsKKyAgICAgICAgaWYgKHRlc3RDb250YWluZXIpCisgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWluZXIpOworICAgICAgICBkZWJ1ZygnPGJy
IC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAg
ICA8ZGl2IGlkPSJ0ZXN0LWNvbnRhaW5lciI+CisgICAgICAgIDxsYWJlbCBmb3I9ImVmZmVjdEFs
bG93ZWQiPmVmZmVjdEFsbG93ZWQ8L2xhYmVsPiA8c2VsZWN0IGlkPSJlZmZlY3RBbGxvd2VkIj4K
KyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InVuaW5pdGlhbGl6ZWQiPlVuaW5pdGlhbGl6ZWQ8
L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im5vbmUiPk5vbmU8L29wdGlvbj4K
KyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImFsbCI+QWxsPC9vcHRpb24+CisgICAgICAgICAg
ICA8b3B0aW9uIHZhbHVlPSJjb3B5Ij5Db3B5PC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9u
IHZhbHVlPSJtb3ZlIj5Nb3ZlPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJs
aW5rIj5MaW5rPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5TW92ZSI+
Q29weU1vdmU8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImNvcHlMaW5rIj5D
b3B5TGluazwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGlua01vdmUiPkxp
bmtNb3ZlPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJkdW1teSI+Tm9uZXhp
c3RlbnQgKER1bW15KSBFZmZlY3Q8L29wdGlvbj4KKyAgICAgICAgPC9zZWxlY3Q+CisgICAgICAg
IDxici8+PGJyLz4KKyAgICAgICAgPGRpdiBpZD0iZHJvcFRhcmdldCI+RHJvcCB0aGUgcmVkIHNx
dWFyZSBvbnRvIG1lLjxici8+PGJyLz4KKyAgICAgICAgICAgIDxsYWJlbCBmb3I9ImRyb3BFZmZl
Y3QiPkV4cGVjdHMgZHJvcEVmZmVjdDwvbGFiZWw+IDxzZWxlY3QgaWQ9ImRyb3BFZmZlY3QiPgor
ICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im5vbmUiPk5vbmU8L29wdGlvbj4KKyAgICAg
ICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb3B5Ij5Db3B5PC9vcHRpb24+CisgICAgICAgICAg
ICAgICAgPG9wdGlvbiB2YWx1ZT0ibW92ZSI+TW92ZTwvb3B0aW9uPgorICAgICAgICAgICAgICAg
IDxvcHRpb24gdmFsdWU9ImxpbmsiPkxpbms8L29wdGlvbj4KKyAgICAgICAgICAgICAgICA8b3B0
aW9uIHZhbHVlPSJkdW1teSI+Tm9uZXhpc3RlbnQgKER1bW15KSBFZmZlY3Q8L29wdGlvbj4KKyAg
ICAgICAgICAgIDwvc2VsZWN0PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGhyLz4KKyAgICAg
ICAgPHA+SXRlbXMgdGhhdCBjYW4gYmUgZHJhZ2dlZCB0byB0aGUgZHJvcCB0YXJnZXQ6PC9wPgor
ICAgICAgICA8ZGl2IGlkPSJkcmFnTWUiIGRyYWdnYWJsZT0idHJ1ZSI+U3F1YXJlPC9kaXY+Cisg
ICAgICAgIDxoci8+CisgICAgPC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhhdCBk
cmFnLWFuZC1kcm9wIHN1cHBvcnQgd29ya3MgYW5kIGNvbmZvcm1zIHRvIHRoZSBIVE1MIDUgc3Bl
Y2lmaWNhdGlvbi48YnIvPiIgKworICAgICAgICAgICAgICAgICAgICAiRm9yIGVhY2ggZWZmZWN0
QWxsb3dlZCwgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgcG9zc2libGUgZHJvcEVmZmVjdHM6IG5vbmUs
IGNvcHksIG1vdmUsIGxpbmssIGR1bW15Ljxici8+PGJyLz4iICsKKyAgICAgICAgICAgICAgICAg
ICAgIk5vdGUsIHRoaXMgdGVzdCBmYWlscyB3aGVuIGVmZmVjdEFsbG93ZWQgPT0gJnF1b3Q7dW5p
bml0aWFsaXplZCZxdW90OyBiZWNhdXNlIHRoaXMgZWZmZWN0IGhhcyBub3QgYmVlbiAiICsKKyAg
ICAgICAgICAgICAgICAgICAgImltcGxlbWVudGVkIHlldCAoc2VlIGJ1ZyAjMzAyOTEpLiIpOwor
ICAgICAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>