<?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>15643</bug_id>
          
          <creation_ts>2007-10-23 14:34:16 -0700</creation_ts>
          <short_desc>Double-clicking word should select whitespace after the word</short_desc>
          <delta_ts>2008-12-04 11:11:33 -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>HTML Editing</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>20655</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yu-Hong Wang">limepi</reporter>
          <assigned_to name="Glenn Wilson">gwilson</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>gwilson</cc>
    
    <cc>mitz</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>59270</commentid>
    <comment_count>0</comment_count>
    <who name="Yu-Hong Wang">limepi</who>
    <bug_when>2007-10-23 14:34:16 -0700</bug_when>
    <thetext>Double-clicking a word should select the whitespace that comes after the word. This is the default text selection behavior on Windows. WebKit&apos;s current behavior is that of the Mac OS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59300</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-23 20:40:42 -0700</bug_when>
    <thetext>Confirmed with WordPad and the Safari 310A24 seed on Windows XP Pro SP2.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89954</commentid>
    <comment_count>2</comment_count>
      <attachid>23130</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-09-02 16:55:11 -0700</bug_when>
    <thetext>Created attachment 23130
Possible fix to issue 15643

Attached is a possible fix, with a platform-specific layout test.
*Credit should go to Yu-Hong Wang, who developed this fix.*

This fix changes double-clicking selection to include trailing spaces after the selected word.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89956</commentid>
    <comment_count>3</comment_count>
      <attachid>23130</attachid>
    <who name="">mitz</who>
    <bug_when>2008-09-02 17:02:01 -0700</bug_when>
    <thetext>Comment on attachment 23130
Possible fix to issue 15643

+#include &lt;unicode/ubrk.h&gt;

ICU is not available on all platforms, and should not be used directly like  that. You can use a TextBreakIterator.

+#if PLATFORM(WIN_OS)
I do not think this is the appropriate test, as the new behavior is not necessarily desirable for Safari on windows.

Finally, I don&apos;t see how this change is specific to selections created with double-click. It seems like it would affect any other selection. Selection::validate() is not the right place to introduce this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89957</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-09-02 17:19:18 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; +#if PLATFORM(WIN_OS)
&gt; I do not think this is the appropriate test, as the new behavior is not
&gt; necessarily desirable for Safari on windows.

I&apos;d argue that the new behavior is not desirable for any version of WebKit that uses smart copy/smart delete/smart replace (as represented by EditorClient::smartInsertDeleteEnabled).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89960</commentid>
    <comment_count>5</comment_count>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-09-02 17:40:19 -0700</bug_when>
    <thetext>Is the best scenario to check for is the case when the platform is Windows and smart editing is enabled?  I&apos;d assume that we probably don&apos;t want this behavior on non-windows platforms, regardless of if smart editing is enabled or not.  It also seems like this check would go into EventHandler rather than Selection.

Also, it looks like a more appropriate method might be to check that &quot;result.event()-&gt;clickCount() == 2&quot; (or maybe modulus 2 == 0?) in EventHandler::selectClosestWordFromMouseEvent. And if so, call a new method inside Selection that uses TextBreakIterator to include trailing whitespace.  Does this seem like the right approach?

(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; +#if PLATFORM(WIN_OS)
&gt; &gt; I do not think this is the appropriate test, as the new behavior is not
&gt; &gt; necessarily desirable for Safari on windows.
&gt; 
&gt; I&apos;d argue that the new behavior is not desirable for any version of WebKit that
&gt; uses smart copy/smart delete/smart replace (as represented by
&gt; EditorClient::smartInsertDeleteEnabled).
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90187</commentid>
    <comment_count>6</comment_count>
      <attachid>23176</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-09-04 13:39:39 -0700</bug_when>
    <thetext>Created attachment 23176
Improved possible fix to bug 15643

Ok, here is an improved possible fix.

First, I added a method in Selection that will add trailing whitespace.  I wanted to keep things simple with a while loop, rather than use a TextBreakIterator.

This method will only be called by EventHandler::selectClosestWordFromMouseEvent  if on a Windows system, and the event was a mouse double-click.

I wasn&apos;t exactly sure how to check for smart editing, but it would be easy to add it to EventHandler&apos;s checks if necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90189</commentid>
    <comment_count>7</comment_count>
      <attachid>23177</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-09-04 13:43:43 -0700</bug_when>
    <thetext>Created attachment 23177
Improved possible fix for bug 15643

Oops -- had some tab leftovers in there.  Fixed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90214</commentid>
    <comment_count>8</comment_count>
      <attachid>23177</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-04 17:10:51 -0700</bug_when>
    <thetext>Comment on attachment 23177
Improved possible fix for bug 15643

I think this *does* need to check for smart editing.  I also think the test should use the eventSender.leapForward method instead of the setTimeout and should dumpAsText.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90225</commentid>
    <comment_count>9</comment_count>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-09-04 18:40:09 -0700</bug_when>
    <thetext>So good news and bad news:
Good news: I have a new fix that checks the frame&apos;s editor for smartCopyOrDelete before it selects extra whitespace.  Also, I modified the test to use eventSender.leapForwards instead of setTimeouts (using dumpAsText too).  Yay!

Bad news: There&apos;s no way to have the test pass because, as far as I can tell, smart editing is always enabled by default (in Windows, too): last line of WebView::initWithFrame.  So it&apos;s always initialized as true, and is never reset anywhere else.

I&apos;m not familiar with what smart Insert &amp; Delete are supposed to do, at all.  Is there some way for the user to turn it off?  If it&apos;s always set to true, what&apos;s the use case for it to be false?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90356</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-09-06 01:14:17 -0700</bug_when>
    <thetext>Some documentation on smart copy/insert: &lt;http://developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGUserInput/chapter_12_section_5.html&gt;, &lt;http://developer.apple.com/documentation/Cocoa/Conceptual/TextEditing/Tasks/Subclassing.html&gt;.

One use case for having it disabled is editing non-natural text - e.g., Visual Studio and Xcode do not employ any such tricks with selections. I don&apos;t know which Mac WebKit clients use this, if any.

To me, it looks like selecting the trailing space is an alternative (and more limiting) UI for this same feature. I agree that it&apos;s far from a given that we would want it in Safari on Windows.

+#if PLATFORM(WIN)
I think that WIN is even worse here than WIN_OS, because it really means &quot;Apple Windows port&quot;, and shouldn&apos;t be enabled for Chrome. But anyway, I think that this should be controlled via a separate client call, similarly to how smart delete and insert itself is controlled.

&gt; Bad news: There&apos;s no way to have the test pass because, as far as I can tell,
&gt; smart editing is always enabled by default (in Windows, too): last line of

Yes, DumpRenderTree should be extended to provide scriptable control over this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90551</commentid>
    <comment_count>11</comment_count>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-09-08 10:02:42 -0700</bug_when>
    <thetext>Ah, I see what you&apos;re saying now. Selection of whitespace after a word is nothing more than a workaround for intelligent insert and delete, which is already handled behind the scenes in WebKit anyway.

I guess there are three possible states of the world here: 
1.  Smart editing is enabled: functions as it does now.
2.  Smart editing is disabled, select-whitespace-after-word is enabled: trailing whitespace is selected as a work-around for intelligent editing
3.  Smart editing is disabled, select-whitespace-after-word is disabled: the client expressly desires both to be disabled for non-natural language editing

The fourth state, having both enabled, doesn&apos;t make sense: smart editing should trump the whitespace workaround, since they&apos;re both meant to solve the same problem.  This infers two boolean values, the whitespace workaround as a second configuration value to smartInsertDeleteEnabled.

To this end, I&apos;d like to propose another EditorClient state variable and accompanying getter/setters: selectTrailingWhitespaceEnabled (bool). 
* Like smartInsertDeleteEnabled, it would live in Editor 
* When it is true and smartInsertDeleteEnabled is false, double-clicking a word will also select trailing whitespace
* It would be false by default, and the client would have to explicitly set it to true
* Setting it to true would have the side effect of setting smartInsertDelete to false
* This selection behavior would be platform independent

Does this make sense?  </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90560</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-09-08 10:50:53 -0700</bug_when>
    <thetext>Yes, sounds good to me.

I think that this is unlikely to be exposed as a WebKit API on Mac OS X, but having the code in WebCore (and testing in DumpRenderTree!) will do more good than harm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97136</commentid>
    <comment_count>13</comment_count>
      <attachid>24774</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-10-30 10:52:59 -0700</bug_when>
    <thetext>Created attachment 24774
In-progress patch to bug 15643

In-progress patch.  Still some cleanup and feedback needed on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97178</commentid>
    <comment_count>14</comment_count>
      <attachid>24782</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-10-30 14:54:59 -0700</bug_when>
    <thetext>Created attachment 24782
Improved possible patch to issue 15643

Ok, here&apos;s a revised patch that implements what we talked about earlier in this issue.  Not sure if this is 100% right, so feedback is greatly appreciated!

This patch adds one more state variable to control when the client wants to use trailing whitespace selection instead of smart insert &amp; delete.  This patch also adds APIs to the testing infrastructure to allow tests to manually turn this functionality on and off (to be able to test it.)

Not sure if this is totally right, but I tried to follow the smartInsertDelete API format as much as possible.  What should be improved here?

Thanks!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97227</commentid>
    <comment_count>15</comment_count>
      <attachid>24782</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-10-31 02:30:54 -0700</bug_when>
    <thetext>Comment on attachment 24782
Improved possible patch to issue 15643

+        Added support for clients that wish to disable smart insert/delete
+        and enable the &quot;trailing whitespace selection&quot; work-around.

I&apos;m not sure why you call this a work-around, it sounds like a normal feature to me.

It may make sense to add comments somewhere in code explaining the relationship between the two. Currently, one needs to go all the way to WebView to find out that the features are mutually exclusive, and that&apos;s a long way.

We normally explain individual changes (per-file or per-function) in ChangeLogs, but maybe this patch is obvious enough that there is no need to. 

+        * ChangeLog:

This line shouldn&apos;t be present in ChangeLogs.

+bool Editor::selectTrailingWhitespaceEnabled()

This starts with a verb, but doesn&apos;t select anything. I suggest naming this isSelectTrailingWhitespaceEnabled().

+void Selection::includeTrailingWhitespace()

Maybe appendTrailingWhitespace would be slightly more clear?

+        * WebView/WebView.h:

WebView.h is an Mac OS X API header, and I&apos;m pretty sure that we don&apos;t want to expose this as API. Please modify WebViewPrivate.h instead. 

It is somewhat less of an issue on Windows, as we don&apos;t have a supported API there, so I&apos;m not sure whether I should insist on doing the same on Windows. However, I believe that adding methods to the middle of IDL will break nightly builds.

r- for WebView.h, and for breaking nightly builds. Looks good otherwise!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97334</commentid>
    <comment_count>16</comment_count>
      <attachid>24822</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-10-31 16:19:35 -0700</bug_when>
    <thetext>Created attachment 24822
Possible patch to issue 15643

Here&apos;s a revised patch for this issue.

&gt;I&apos;m not sure why you call this a work-around, it sounds like a normal feature
&gt;to me.

That&apos;s fair.  I was thinking of it in terms of a work-around for smart insert/delete, but it really is a feature.  I&apos;ve changed the ChangeLog text to reflect this.

&gt;It may make sense to add comments somewhere in code explaining the relationship
&gt;between the two. Currently, one needs to go all the way to WebView to find out
&gt;that the features are mutually exclusive, and that&apos;s a long way.

Yes, agreed.  I put a comment in Editor.h, which I thought was high enough in the stack to be accessible but low enough to be generally applicable to what the underlying API is doing.  Let me know if this comment should say more or less, or if there&apos;s a better place than Editor.h.  (Editor.cpp?)

&gt; This line shouldn&apos;t be present in ChangeLogs.

Yep...gone.

&gt; This starts with a verb, but doesn&apos;t select anything. I suggest naming this
&gt; isSelectTrailingWhitespaceEnabled().

Agreed...this was kind of confusing.  I&apos;ve changed this to say &quot;isSelectTrailing...&quot; everywhere.

&gt; Maybe appendTrailingWhitespace would be slightly more clear?

I wanted to make this consistent with the other methods added here, so I changed this to &quot;selectTrailingWhitespace&quot;.  I thought that this has a chance to be confusing, as it infers that it is selecting *just* the trailing whitespace.  I also considered &quot;includeTrailingWhitespace&quot;...let me know if you&apos;d like to see a different name here.

&gt; WebView.h is an Mac OS X API header, and I&apos;m pretty sure that we don&apos;t want to
&gt; expose this as API. Please modify WebViewPrivate.h instead. 

Ok, I moved this into what I thought was the right interface in WebViewPrivate.  I&apos;m not sure if the interface is right (WebPendingPublic).  Should this be in the WebPrivate interface?

&gt; However, I believe that adding methods to the middle of IDL will break nightly
&gt; builds.

I wasn&apos;t sure what you meant here, so I moved the methods to the very end of their interface in the IDL.   Did you mean that these have to be added to something other than the IDL, or changing IDLs dooms the nightlies to fail for a while?

Thanks again for the review!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97359</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-10-31 23:29:23 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Yes, agreed.  I put a comment in Editor.h, which I thought was high enough in
&gt; the stack to be accessible but low enough to be generally applicable to what
&gt; the underlying API is doing.  Let me know if this comment should say more or
&gt; less, or if there&apos;s a better place than Editor.h.  (Editor.cpp?)

Placing it to Editor.h seems good to me. I think that just the first two lines of the comment may be enough, but you may try asking someone who doesn&apos;t have the knowledge about smart select in cache memory :)

If you decide to go with the longer comment (which is fine with me), I&apos;d suggest putting it in Editor.cpp.

&gt; &gt; Maybe appendTrailingWhitespace would be slightly more clear?
&gt; 
&gt; I wanted to make this consistent with the other methods added here, so I
&gt; changed this to &quot;selectTrailingWhitespace&quot;.  I thought that this has a chance
&gt; to be confusing

Yes, I think that this new name is confusing, either the original &quot;include&quot; or &quot;append&quot; would be better.

&gt;  I&apos;m not sure if the interface is right (WebPendingPublic).  Should this be in
&gt; the WebPrivate interface?

Yes, this should be private, as no one expressed the desire to make it a public Mac OS X API eventually.

&gt; I wasn&apos;t sure what you meant here, so I moved the methods to the very end of
&gt; their interface in the IDL.   Did you mean that these have to be added to
&gt; something other than the IDL, or changing IDLs dooms the nightlies to fail for
&gt; a while?

I&apos;m not sure what the rules are. I&apos;d try asking Adam Roben to advise on both Windows questions - whether it&apos;s OK to add this to WebView.h, and how to correctly modify the IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97431</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-11-02 12:52:07 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; I wasn&apos;t sure what you meant here, so I moved the methods to the very end of
&gt; &gt; their interface in the IDL.   Did you mean that these have to be added to
&gt; &gt; something other than the IDL, or changing IDLs dooms the nightlies to fail for
&gt; &gt; a while?
&gt; 
&gt; I&apos;m not sure what the rules are. I&apos;d try asking Adam Roben to advise on both
&gt; Windows questions - whether it&apos;s OK to add this to WebView.h, and how to
&gt; correctly modify the IDL.

Moving the new declarations to the end of the interface definition in the IDL file is the correct thing to do. This will ensure that the vtable that Safari expects this interface to have is unchanged (there will just be more information after what Safari considers to be the &quot;end&quot; of the vtable, which is harmless).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97531</commentid>
    <comment_count>19</comment_count>
      <attachid>24878</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-11-03 18:39:56 -0800</bug_when>
    <thetext>Created attachment 24878
Possible fix for issue 15643

&gt;Placing it to Editor.h seems good to me. I think that just the first two lines
&gt;of the comment may be enough, but you may try asking someone who doesn&apos;t have
&gt;the knowledge about smart select in cache memory :)

I took out all but the first two lines.  The bug number is in the changelogs, so I guess anyone really curious about the logic can check here :)

&gt;Yes, I think that this new name is confusing, either the original &quot;include&quot; or
&gt;&quot;append&quot; would be better.

I agree...changed to &quot;appendTrailingWhitespace&quot;, which makes it very clear what the method is doing.

&gt;Yes, this should be private, as no one expressed the desire to make it a public
&gt;Mac OS X API eventually.

Ok, moved this out of WebPendingPublic to WebPrivate.

Since Adam mentioned that moving the new method signatures to the end of the interface in the IDL is the right approach, the IDL change shouldn&apos;t break the nightly builds.

Thanks for all of the great feedback!  Let me know if I missed anything...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97554</commentid>
    <comment_count>20</comment_count>
      <attachid>24878</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-04 03:30:25 -0800</bug_when>
    <thetext>Comment on attachment 24878
Possible fix for issue 15643

+        * ChangeLog:

Please remove this line from ChangeLogs (in fact, prepare-ChangeLog has been recently fixed to automatically omit it).

+    } else
+        document.write(&quot;PASS&quot;);

Why does this test say PASS if it didn&apos;t run at all? It should say that it can only run in automated mode.

r=me, but please fix the above issues when committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97575</commentid>
    <comment_count>21</comment_count>
      <attachid>24887</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-11-04 10:05:38 -0800</bug_when>
    <thetext>Created attachment 24887
Possible patch for issue 15643

Ok, I went through and removed all the &quot;Changelog:&quot; lines in the patch.  Let me know if I missed any.

Also, I changed the layout test to explicitly say that the test must be run in automated mode, with access to LayoutTestController.  

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100042</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-24 13:33:23 -0800</bug_when>
    <thetext>Glenn, please post an updated patch.  This one no longer applies cleanly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100045</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-24 13:39:29 -0800</bug_when>
    <thetext>Actually, the patch only conflicted on ChangeLog files.  I can resolve those myeslf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100098</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-24 16:19:03 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/38735</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100116</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-24 17:45:48 -0800</bug_when>
    <thetext>Fixed gtk, qt, wx bustage:
http://trac.webkit.org/changeset/38738
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100120</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-24 17:53:48 -0800</bug_when>
    <thetext>Fixed gtk DumpRenderTree link error:
http://trac.webkit.org/changeset/38739</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101353</commentid>
    <comment_count>27</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2008-12-04 11:11:22 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I&apos;d argue that the new behavior is not desirable for any version of WebKit that
&gt; uses smart copy/smart delete/smart replace (as represented by
&gt; EditorClient::smartInsertDeleteEnabled).

As a contrary data point, smart insert/delete and select trailing whitespace are enabled on MS Word for Windows.  For that reason, we have both enabled in Chromium on Windows.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23130</attachid>
            <date>2008-09-02 16:55:11 -0700</date>
            <delta_ts>2008-09-04 13:39:39 -0700</delta_ts>
            <desc>Possible fix to issue 15643</desc>
            <filename>patch15643.txt</filename>
            <type>text/plain</type>
            <size>5212</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDM2MDI5KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE2IEBADQorMjAwOC0wOS0wMiAgR2xlbm4gV2lsc29uICA8Z3dpbHNvbkBn
b29nbGUuY29tPg0KKw0KKyAgICAgICAgRml4IGZvciBidWcgMTU2NDMuICBPbiB0aGUgd2luZG93
cyBwbGF0Zm9ybSwgYSBkb3VibGUtY2xpY2sgb24gYSB3b3JkIHNob3VsZCBzZWxlY3QgdGhlIHdv
cmQNCisgICAgICAgIGFuZCB0aGUgc3BhY2UgYWZ0ZXIgaXQuDQorICAgICAgICBUaGFua3MgdG8g
WXUtaG9uZyBXYW5nIGZvciB0aGlzIGZpeC4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLg0KKw0KKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNs
aWNrLXdoaXRlc3BhY2UuaHRtbA0KKw0KKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbi5jcHA6
DQorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uOjp2YWxpZGF0ZSk6IGFsc28gc2VsZWN0cyB3
aGl0ZXNwYWNlIG9uIGEgZG91YmxlLWNsaWNrIG9uIFdpbmRvd3MNCisNCiAyMDA4LTA5LTAyICBU
aW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4NCiANCiAgICAgICAgIE1ha2UgY29u
c29sZSBmdW5jdGlvbnMgbG9nIHRoZSBjb3JyZWN0IHJlc291cmNlIFVSTCBhbmQNCkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZWRp
dGluZy9TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAzNTkxNykNCisrKyBXZWJDb3JlL2VkaXRpbmcv
U2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTMzLDYgKzMzLDcgQEANCiAjaW5jbHVk
ZSAiVmlzaWJsZVBvc2l0aW9uLmgiDQogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCINCiAjaW5j
bHVkZSAiUmFuZ2UuaCINCisjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+DQogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+DQogI2luY2x1ZGUgPHN0ZGlvLmg+DQogDQpAQCAtMjY4LDcgKzI2OSwx
NCBAQCB2b2lkIFNlbGVjdGlvbjo6dmFsaWRhdGUoKQ0KICAgICAgICAgICAgICAgICAgICAgZW5k
ID0gd29yZEVuZDsNCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgIH0NCi0gICAg
ICAgICAgICAgICAgDQorI2lmIFBMQVRGT1JNKFdJTl9PUykNCisgICAgICAgICAgICAvLyBXaW5k
b3dzIHBsYXRmb3JtIHJlcXVpcmVzIHVzIHRvIHNlbGVjdCB0cmFpbGluZyB3aGl0ZXNwYWNlIGFm
dGVyIHNlbGVjdGluZyB3b3Jkcy4NCisgICAgICAgICAgICB3aGlsZSAodV9pc2JsYW5rKCBlbmQu
Y2hhcmFjdGVyQWZ0ZXIoKSkpIHsNCisgICAgICAgICAgICAgICAgZW5kID0gZW5kLm5leHQoKTsN
CisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGVuZC5pc051bGwoKSkNCisgICAgICAg
ICAgICAgICAgZW5kID0gd29yZEVuZDsNCisjZW5kaWYgICAgICAgICAgICAgICAgDQogICAgICAg
ICAgICAgbV9lbmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsNCiAgICAgICAgICAgICBicmVhazsN
CiAgICAgICAgIH0NCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2MDI5KQ0KKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEsMyArMSwxMyBAQA0KKzIwMDgtMDktMDIg
IEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AZ29vZ2xlLmNvbT4NCisNCisgICAgICAgIEFkZGVkIGxh
eW91dCB0ZXN0IHRvIHZlcmlmeSB0aGF0IGRvdWJsZS1jbGlja2luZyBhIHdvcmQgb24gd2luZG93
cyBhbHNvIHNlbGVjdHMNCisgICAgICAgIGEgdHJhaWxpbmcgc3BhY2UuDQorDQorICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rp
b24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sOiBBZGRlZC4NCisgICAgICAgICogcGxhdGZv
cm0vd2luL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4NCisNCiAyMDA4LTA4LTI5ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4NCiANCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuDQpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVz
cGFjZS5odG1sCShyZXZpc2lvbiAwKQ0KKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsNTEg
QEANCis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0Pg0KK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpDQorICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNr
cygpOw0KKzwvc2NyaXB0Pg0KKw0KKzxzdHlsZT4NCitib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5n
OiAwIH0NCis8L3N0eWxlPg0KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCitmdW5j
dGlvbiBzdGVwNCgpDQorew0KKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7DQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsNCit9DQorDQorZnVuY3Rpb24gc3RlcDMoKQ0K
K3sNCisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7DQorICAgIHdpbmRvdy5zZXRUaW1lb3V0
KHN0ZXA0LCAxKTsNCit9DQorDQorZnVuY3Rpb24gc3RlcDIoKQ0KK3sNCisgICAgZXZlbnRTZW5k
ZXIubW91c2VVcCgpOw0KKyAgICB3aW5kb3cuc2V0VGltZW91dChzdGVwMywgMTAwKTsNCit9DQor
DQorZnVuY3Rpb24gc3RlcDEoKQ0KK3sNCisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7DQor
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KHN0ZXAyLCAxKTsNCit9DQorDQorZnVuY3Rpb24gc3RlcDAo
KQ0KK3sNCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjAsIDEwKTsNCisgICAgd2luZG93
LnNldFRpbWVvdXQoc3RlcDEsIDEpOw0KK30NCisNCitzdGVwMCgpOw0KK2xheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCis8L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHk+DQor
PHByZT4NCitUaGlzIHRlc3RzIHRoYXQgZG91YmxlLWNsaWNraW5nIGEgd29yZCBvbiB0aGUgV2lu
ZG93cyBwbGF0Zm9ybSBzZWxlY3RzIHRoZSB3aGl0ZXNwYWNlIGFmdGVyIHRoZSB3b3JkLg0KKzxz
cGFuPg0KKzwvYm9keT4NCis8L2h0bWw+DQoNClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbA0KX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXw0KQWRkZWQ6IHN2bjpleGVjdXRhYmxlDQogICArICoNCg0KSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWV4
cGVjdGVkLnR4dA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9lZGl0
aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkNCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZWRpdGluZy9zZWxlY3Rpb24vZG91
YmxlY2xpY2std2hpdGVzcGFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApDQpAQCAtMCwwICsx
LDE4IEBADQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwDQorICBSZW5kZXJWaWV3IGF0ICgw
LDApIHNpemUgODAweDYwMA0KK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMA0KKyAgUmVuZGVy
QmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMA0KKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoMCwwKSBzaXplIDgwMHg1ODcNCisgICAgICBSZW5kZXJCbG9jayB7UFJFfSBhdCAoMCww
KSBzaXplIDgwMHg2MA0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
NTg3eDE1DQorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDU4NzogIlRoaXMgdGVz
dHMgdGhhdCBkb3VibGUtY2xpY2tpbmcgYSB3b3JkIG9uIHRoZSBXaW5kb3dzIHBsYXRmb3JtIHNl
bGVjdHMgdGhlIHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIHdvcmQuIg0KKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoNTg3LDApIHdpZHRoIDA6ICIgIg0KKyAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBh
dCAoMCwwKSBzaXplIDB4NDUNCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDE1
KSBzaXplIDB4MTUNCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNSkgd2lkdGggMDogIiAi
DQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwzMCkgc2l6ZSAweDE1DQorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzApIHdpZHRoIDA6ICIgIg0KKyAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsNDUpIHNpemUgMHgxNQ0KKyAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDQ1KSB3aWR0aCAwOiAiICINCitzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDAgb2Yg
Y2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge1BSRX0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hp
bGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQNCitzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDUgb2Yg
Y2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge1BSRX0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hp
bGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQNCg==
</data>
<flag name="review"
          id="10292"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23176</attachid>
            <date>2008-09-04 13:39:39 -0700</date>
            <delta_ts>2008-09-04 13:43:43 -0700</delta_ts>
            <desc>Improved possible fix to bug 15643</desc>
            <filename>patch15643-2.txt</filename>
            <type>text/plain</type>
            <size>6840</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDM2MDk2KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE5IEBADQorMjAwOC0wOS0wNCAgR2xlbm4gV2lsc29uICA8d2lsc29uZ0Bn
bWFpbC5jb20+DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisg
ICAgICAgIEZpeCBmb3IgYnVnIDE1NjQzLiAgT24gdGhlIHdpbmRvd3MgcGxhdGZvcm0sIGEgZG91
YmxlLWNsaWNrIG9uIGEgd29yZCBzaG91bGQgc2VsZWN0IHRoZSB3b3JkDQorICAgICAgICBhbmQg
dGhlIHNwYWNlIGFmdGVyIGl0Lg0KKw0KKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbA0KKyAgICAgICAgICAgICAgIA0KKyAgICAgICAg
KiBDaGFuZ2VMb2c6DQorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uLmNwcDoNCisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb246OmluY2x1ZGVUcmFpbGluZ1doaXRlc3BhY2UpOiBOZXcgbWV0
aG9kIGZvciBleHBhbmRpbmcgYSBzZWxlY3Rpb24gdG8gaW5jbHVkZSB0cmFpbGluZyB3aGl0ZXNw
YWNlDQorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uLmg6IEFkZGVkIHNpZ25hdHVyZSBmb3Ig
aW5jbHVkZVRyYWlsaW5nV2hpdGVzcGFjZQ0KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6DQorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZEZy
b21Nb3VzZUV2ZW50KTogYWRkZWQgV2luZG93cy1vbmx5IHJlZmVyZW5jZSB0byBpbmNsdWRlVHJh
aWxpbmdXaGl0ZXNwYWNlDQorDQogMjAwOC0wOS0wNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPg0KIA0KICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGF2ZSBIeWF0dC4NCkluZGV4
OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAzNTkxNykNCisrKyBXZWJDb3JlL2VkaXRp
bmcvU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTE5Myw2ICsxOTMsMTQgQEAgYm9v
bCBTZWxlY3Rpb246OmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVA0KICAgICByZXR1cm4gdHJ1ZTsN
CiB9DQogDQordm9pZCBTZWxlY3Rpb246OmluY2x1ZGVUcmFpbGluZ1doaXRlc3BhY2UoKQ0KK3sN
CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9IFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZp
bml0eSk7DQorICAgIHdoaWxlIChlbmQuaXNOb3ROdWxsKCkgJiYgaXNTcGFjZU9yTmV3bGluZShl
bmQuY2hhcmFjdGVyQWZ0ZXIoKSkpDQorICAgICAgICBlbmQgPSBlbmQubmV4dCgpOw0KKyAgICBt
X2VuZCA9IGVuZC5kZWVwRXF1aXZhbGVudCgpOw0KK30NCisNCiB2b2lkIFNlbGVjdGlvbjo6dmFs
aWRhdGUoKQ0KIHsNCiAgICAgLy8gTW92ZSB0aGUgc2VsZWN0aW9uIHRvIHJlbmRlcmVkIHBvc2l0
aW9ucywgaWYgcG9zc2libGUuDQpAQCAtMjY4LDcgKzI3Niw2IEBAIHZvaWQgU2VsZWN0aW9uOjp2
YWxpZGF0ZSgpDQogICAgICAgICAgICAgICAgICAgICBlbmQgPSB3b3JkRW5kOw0KICAgICAgICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICANCiAgICAgICAg
ICAgICBtX2VuZCA9IGVuZC5kZWVwRXF1aXZhbGVudCgpOw0KICAgICAgICAgICAgIGJyZWFrOw0K
ICAgICAgICAgfQ0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb24uaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb24uaAkocmV2aXNpb24gMzU5MTcpDQorKysg
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNzcsNiArNzcs
OCBAQCBwdWJsaWM6DQogDQogICAgIGJvb2wgaXNCYXNlRmlyc3QoKSBjb25zdCB7IHJldHVybiBt
X2Jhc2VJc0ZpcnN0OyB9DQogDQorICAgIHZvaWQgaW5jbHVkZVRyYWlsaW5nV2hpdGVzcGFjZSgp
Ow0KKw0KICAgICBib29sIGV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5KTsNCiAgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9ncmFudWxhcml0eTsgfQ0KIA0KSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJl
dmlzaW9uIDM1OTE3KQ0KKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9z
ZXN0V29yZEZyb20NCiB7DQogICAgIE5vZGUqIGlubmVyTm9kZSA9IHJlc3VsdC50YXJnZXROb2Rl
KCk7DQogICAgIFNlbGVjdGlvbiBuZXdTZWxlY3Rpb247DQotDQorCQ0KICAgICBpZiAoaW5uZXJO
b2RlICYmIGlubmVyTm9kZS0+cmVuZGVyZXIoKSAmJiBtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0
KSB7DQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+
cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgpKSk7DQogICAgICAgICBpZiAocG9z
LmlzTm90TnVsbCgpKSB7DQpAQCAtMTg1LDYgKzE4NSwxMCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
c2VsZWN0Q2xvc2VzdFdvcmRGcm9tDQogICAgICAgICBpZiAobmV3U2VsZWN0aW9uLmlzUmFuZ2Uo
KSkgew0KICAgICAgICAgICAgIG1fZnJhbWUtPnNldFNlbGVjdGlvbkdyYW51bGFyaXR5KFdvcmRH
cmFudWxhcml0eSk7DQogICAgICAgICAgICAgbV9iZWdhblNlbGVjdGluZ1RleHQgPSB0cnVlOw0K
KyNpZiBQTEFURk9STShXSU4pDQorCQkJaWYgKHJlc3VsdC5ldmVudCgpLmNsaWNrQ291bnQoKSA9
PSAyKSANCisJCQkJbmV3U2VsZWN0aW9uLmluY2x1ZGVUcmFpbGluZ1doaXRlc3BhY2UoKTsgICAg
ICAgICAgICANCisjZW5kaWYNCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgaWYgKG1f
ZnJhbWUtPnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQ0KSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMzYwOTYpDQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDEzIEBADQorMjAwOC0wOS0wMiAgR2xlbm4gV2lsc29uICA8d2lsc29uZ0Bn
bWFpbC5jb20+DQorDQorICAgICAgICBBZGRlZCBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhhdCBk
b3VibGUtY2xpY2tpbmcgYSB3b3JkIG9uIHdpbmRvd3MgYWxzbyBzZWxlY3RzDQorICAgICAgICBh
IHRyYWlsaW5nIHNwYWNlLg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
DQorDQorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2Uu
aHRtbDogQWRkZWQuDQorICAgICAgICAqIHBsYXRmb3JtL3dpbi9lZGl0aW5nL3NlbGVjdGlvbi9k
b3VibGVjbGljay13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuDQorDQogMjAwOC0wOS0w
NCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPg0KIA0KICAgICAgICAgUmV2aWV3ZWQg
YnkgRGF2ZSBIeWF0dC4NCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3Vi
bGVjbGljay13aGl0ZXNwYWNlLmh0bWwNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLmh0bWwJKHJldmlzaW9uIDApDQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5o
dG1sCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw1MSBAQA0KKzxodG1sPg0KKzxoZWFkPg0KKzxz
Y3JpcHQ+DQoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCisgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7DQorPC9zY3JpcHQ+DQorDQorPHN0
eWxlPg0KK2JvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgfQ0KKzwvc3R5bGU+DQorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KK2Z1bmN0aW9uIHN0ZXA0KCkNCit7DQorICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsNCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOw0KK30NCisNCitmdW5jdGlvbiBzdGVwMygpDQorew0KKyAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsNCisgICAgd2luZG93LnNldFRpbWVvdXQoc3RlcDQsIDEpOw0KK30NCisNCitmdW5j
dGlvbiBzdGVwMigpDQorew0KKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7DQorICAgIHdpbmRv
dy5zZXRUaW1lb3V0KHN0ZXAzLCAxMDApOw0KK30NCisNCitmdW5jdGlvbiBzdGVwMSgpDQorew0K
KyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsNCisgICAgd2luZG93LnNldFRpbWVvdXQoc3Rl
cDIsIDEpOw0KK30NCisNCitmdW5jdGlvbiBzdGVwMCgpDQorew0KKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbygyMCwgMTApOw0KKyAgICB3aW5kb3cuc2V0VGltZW91dChzdGVwMSwgMSk7DQor
fQ0KKw0KK3N0ZXAwKCk7DQorbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0K
Kzwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keT4NCis8cHJlPg0KK1RoaXMgdGVzdHMgdGhhdCBk
b3VibGUtY2xpY2tpbmcgYSB3b3JkIG9uIHRoZSBXaW5kb3dzIHBsYXRmb3JtIHNlbGVjdHMgdGhl
IHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIHdvcmQuDQorPHNwYW4+DQorPC9ib2R5Pg0KKzwvaHRtbD4N
Cg0KUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91
YmxlY2xpY2std2hpdGVzcGFjZS5odG1sDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQpBZGRlZDogc3ZuOmV4ZWN1dGFi
bGUNCiAgICsgKg0KDQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2VkaXRpbmcvc2Vs
ZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0DQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNr
LXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQ0KKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsMTggQEANCitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDANCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwDQorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwDQorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwDQorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICgwLDApIHNpemUgODAweDU4Nw0K
KyAgICAgIFJlbmRlckJsb2NrIHtQUkV9IGF0ICgwLDApIHNpemUgODAweDYwDQorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1ODd4MTUNCisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNTg3OiAiVGhpcyB0ZXN0cyB0aGF0IGRvdWJsZS1jbGlja2luZyBh
IHdvcmQgb24gdGhlIFdpbmRvd3MgcGxhdGZvcm0gc2VsZWN0cyB0aGUgd2hpdGVzcGFjZSBhZnRl
ciB0aGUgd29yZC4iDQorICAgICAgICAgIHRleHQgcnVuIGF0ICg1ODcsMCkgd2lkdGggMDogIiAi
DQorICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHg0NQ0KKyAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMTUpIHNpemUgMHgxNQ0KKyAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDE1KSB3aWR0aCAwOiAiICINCisgICAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDMwKSBzaXplIDB4MTUNCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwz
MCkgd2lkdGggMDogIiAiDQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCw0NSkg
c2l6ZSAweDE1DQorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNDUpIHdpZHRoIDA6ICIgIg0K
K3NlbGVjdGlvbiBzdGFydDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQg
MSB7UFJFfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudA0K
K3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gNSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQg
MSB7UFJFfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudA0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23177</attachid>
            <date>2008-09-04 13:43:43 -0700</date>
            <delta_ts>2008-10-30 10:52:59 -0700</delta_ts>
            <desc>Improved possible fix for bug 15643</desc>
            <filename>patch15643-2.txt</filename>
            <type>text/plain</type>
            <size>6290</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDM2MDk2KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE5IEBADQorMjAwOC0wOS0wNCAgR2xlbm4gV2lsc29uICA8d2lsc29uZ0Bn
bWFpbC5jb20+DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisg
ICAgICAgIEZpeCBmb3IgYnVnIDE1NjQzLiAgT24gdGhlIHdpbmRvd3MgcGxhdGZvcm0sIGEgZG91
YmxlLWNsaWNrIG9uIGEgd29yZCBzaG91bGQgc2VsZWN0IHRoZSB3b3JkDQorICAgICAgICBhbmQg
dGhlIHNwYWNlIGFmdGVyIGl0Lg0KKw0KKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbA0KKyAgICAgICAgICAgICAgIA0KKyAgICAgICAg
KiBDaGFuZ2VMb2c6DQorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uLmNwcDoNCisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb246OmluY2x1ZGVUcmFpbGluZ1doaXRlc3BhY2UpOiBOZXcgbWV0
aG9kIGZvciBleHBhbmRpbmcgYSBzZWxlY3Rpb24gdG8gaW5jbHVkZSB0cmFpbGluZyB3aGl0ZXNw
YWNlDQorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uLmg6IEFkZGVkIHNpZ25hdHVyZSBmb3Ig
aW5jbHVkZVRyYWlsaW5nV2hpdGVzcGFjZQ0KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6DQorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZEZy
b21Nb3VzZUV2ZW50KTogYWRkZWQgV2luZG93cy1vbmx5IHJlZmVyZW5jZSB0byBpbmNsdWRlVHJh
aWxpbmdXaGl0ZXNwYWNlDQorDQogMjAwOC0wOS0wNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPg0KIA0KICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGF2ZSBIeWF0dC4NCkluZGV4
OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAzNTkxNykNCisrKyBXZWJDb3JlL2VkaXRp
bmcvU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTE5Myw2ICsxOTMsMTQgQEAgYm9v
bCBTZWxlY3Rpb246OmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVA0KICAgICByZXR1cm4gdHJ1ZTsN
CiB9DQogDQordm9pZCBTZWxlY3Rpb246OmluY2x1ZGVUcmFpbGluZ1doaXRlc3BhY2UoKQ0KK3sN
CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9IFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZp
bml0eSk7DQorICAgIHdoaWxlIChlbmQuaXNOb3ROdWxsKCkgJiYgaXNTcGFjZU9yTmV3bGluZShl
bmQuY2hhcmFjdGVyQWZ0ZXIoKSkpDQorICAgICAgICBlbmQgPSBlbmQubmV4dCgpOw0KKyAgICBt
X2VuZCA9IGVuZC5kZWVwRXF1aXZhbGVudCgpOw0KK30NCisNCiB2b2lkIFNlbGVjdGlvbjo6dmFs
aWRhdGUoKQ0KIHsNCiAgICAgLy8gTW92ZSB0aGUgc2VsZWN0aW9uIHRvIHJlbmRlcmVkIHBvc2l0
aW9ucywgaWYgcG9zc2libGUuDQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbi5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbi5oCShyZXZpc2lvbiAzNTkx
NykNCisrKyBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkNCkBAIC03
Nyw2ICs3Nyw4IEBAIHB1YmxpYzoNCiANCiAgICAgYm9vbCBpc0Jhc2VGaXJzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFzZUlzRmlyc3Q7IH0NCiANCisgICAgdm9pZCBpbmNsdWRlVHJhaWxpbmdXaGl0
ZXNwYWNlKCk7DQorDQogICAgIGJvb2wgZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkpOw0KICAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkoKSBj
b25zdCB7IHJldHVybiBtX2dyYW51bGFyaXR5OyB9DQogDQpJbmRleDogV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAkocmV2aXNpb24gMzU5MTcpDQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJ
KHdvcmtpbmcgY29weSkNCkBAIC0xODUsNiArMTg1LDEwIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpz
ZWxlY3RDbG9zZXN0V29yZEZyb20NCiAgICAgICAgIGlmIChuZXdTZWxlY3Rpb24uaXNSYW5nZSgp
KSB7DQogICAgICAgICAgICAgbV9mcmFtZS0+c2V0U2VsZWN0aW9uR3JhbnVsYXJpdHkoV29yZEdy
YW51bGFyaXR5KTsNCiAgICAgICAgICAgICBtX2JlZ2FuU2VsZWN0aW5nVGV4dCA9IHRydWU7DQor
I2lmIFBMQVRGT1JNKFdJTikNCisgICAgICAgICAgICBpZiAocmVzdWx0LmV2ZW50KCkuY2xpY2tD
b3VudCgpID09IDIpIA0KKyAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uaW5jbHVkZVRyYWls
aW5nV2hpdGVzcGFjZSgpOyAgICAgICAgICAgIA0KKyNlbmRpZg0KICAgICAgICAgfQ0KICAgICAg
ICAgDQogICAgICAgICBpZiAobV9mcmFtZS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVj
dGlvbikpDQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNjA5NikNCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkNCkBAIC0xLDMgKzEsMTMgQEANCisyMDA4LTA5LTAyICBHbGVu
biBXaWxzb24gIDx3aWxzb25nQGdtYWlsLmNvbT4NCisNCisgICAgICAgIEFkZGVkIGxheW91dCB0
ZXN0IHRvIHZlcmlmeSB0aGF0IGRvdWJsZS1jbGlja2luZyBhIHdvcmQgb24gd2luZG93cyBhbHNv
IHNlbGVjdHMNCisgICAgICAgIGEgdHJhaWxpbmcgc3BhY2UuDQorDQorICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZG91
YmxlY2xpY2std2hpdGVzcGFjZS5odG1sOiBBZGRlZC4NCisgICAgICAgICogcGxhdGZvcm0vd2lu
L2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4NCisNCiAyMDA4LTA5LTA0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+DQog
DQogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0Lg0KSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2Uu
aHRtbAkocmV2aXNpb24gMCkNCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3Vi
bGVjbGljay13aGl0ZXNwYWNlLmh0bWwJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDUxIEBADQor
PGh0bWw+DQorPGhlYWQ+DQorPHNjcmlwdD4NCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQ0KKyAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsN
Cis8L3NjcmlwdD4NCisNCis8c3R5bGU+DQorYm9keSB7IG1hcmdpbjogMDsgcGFkZGluZzogMCB9
DQorPC9zdHlsZT4NCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQorZnVuY3Rpb24g
c3RlcDQoKQ0KK3sNCisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOw0KKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7DQorfQ0KKw0KK2Z1bmN0aW9uIHN0ZXAzKCkNCit7DQor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOw0KKyAgICB3aW5kb3cuc2V0VGltZW91dChzdGVw
NCwgMSk7DQorfQ0KKw0KK2Z1bmN0aW9uIHN0ZXAyKCkNCit7DQorICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsNCisgICAgd2luZG93LnNldFRpbWVvdXQoc3RlcDMsIDEwMCk7DQorfQ0KKw0KK2Z1
bmN0aW9uIHN0ZXAxKCkNCit7DQorICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOw0KKyAgICB3
aW5kb3cuc2V0VGltZW91dChzdGVwMiwgMSk7DQorfQ0KKw0KK2Z1bmN0aW9uIHN0ZXAwKCkNCit7
DQorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDIwLCAxMCk7DQorICAgIHdpbmRvdy5zZXRU
aW1lb3V0KHN0ZXAxLCAxKTsNCit9DQorDQorc3RlcDAoKTsNCitsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7DQorPC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5Pg0KKzxwcmU+
DQorVGhpcyB0ZXN0cyB0aGF0IGRvdWJsZS1jbGlja2luZyBhIHdvcmQgb24gdGhlIFdpbmRvd3Mg
cGxhdGZvcm0gc2VsZWN0cyB0aGUgd2hpdGVzcGFjZSBhZnRlciB0aGUgd29yZC4NCis8c3Bhbj4N
Cis8L2JvZHk+DQorPC9odG1sPg0KDQpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLmh0bWwNCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18N
CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQ0KICAgKyAqDQoNCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1leHBlY3Rl
ZC50eHQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZWRpdGluZy9z
ZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
DQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNs
aWNrLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxOCBA
QA0KK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMA0KKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBz
aXplIDgwMHg2MDANCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDANCisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDANCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDAsMCkgc2l6ZSA4MDB4NTg3DQorICAgICAgUmVuZGVyQmxvY2sge1BSRX0gYXQgKDAsMCkgc2l6
ZSA4MDB4NjANCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDU4N3gx
NQ0KKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1ODc6ICJUaGlzIHRlc3RzIHRo
YXQgZG91YmxlLWNsaWNraW5nIGEgd29yZCBvbiB0aGUgV2luZG93cyBwbGF0Zm9ybSBzZWxlY3Rz
IHRoZSB3aGl0ZXNwYWNlIGFmdGVyIHRoZSB3b3JkLiINCisgICAgICAgICAgdGV4dCBydW4gYXQg
KDU4NywwKSB3aWR0aCAwOiAiICINCisgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAs
MCkgc2l6ZSAweDQ1DQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxNSkgc2l6
ZSAweDE1DQorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTUpIHdpZHRoIDA6ICIgIg0KKyAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMzApIHNpemUgMHgxNQ0KKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDMwKSB3aWR0aCAwOiAiICINCisgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDQ1KSBzaXplIDB4MTUNCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCw0NSkgd2lkdGggMDogIiAiDQorc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxk
IDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtQUkV9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAg
e0hUTUx9IG9mIGRvY3VtZW50DQorc2VsZWN0aW9uIGVuZDogICBwb3NpdGlvbiA1IG9mIGNoaWxk
IDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtQUkV9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAg
e0hUTUx9IG9mIGRvY3VtZW50DQo=
</data>
<flag name="review"
          id="10316"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24774</attachid>
            <date>2008-10-30 10:52:59 -0700</date>
            <delta_ts>2008-10-30 14:54:59 -0700</delta_ts>
            <desc>In-progress patch to bug 15643</desc>
            <filename>patch20655-11.txt</filename>
            <type>text/plain</type>
            <size>18052</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAzNzk4NikKKysrIFdlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDExIEBAIGJvb2wgRWRpdG9y
OjpjYW5TbWFydENvcHlPckRlbGV0ZSgpCiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgp
LT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSAmJiBtX2ZyYW1lLT5zZWxlY3Rpb25HcmFudWxh
cml0eSgpID09IFdvcmRHcmFudWxhcml0eTsKIH0KIAorYm9vbCBFZGl0b3I6OnNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQoKQoreworICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQo
KS0+c2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOworfQorCiBib29sIEVkaXRvcjo6
ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uIGRpcmVj
dGlvbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nLCBib29sIGlz
VHlwaW5nQWN0aW9uKQogewogICAgIC8vIERlbGV0ZSB0aGUgc2VsZWN0aW9uLCBpZiB0aGVyZSBp
cyBvbmUuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiAzNzk4NikKKysrIFdlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDYgKzIxOSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24pOwogCiAgICAg
Ym9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKKyAgICBib29sIHNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQoKTsKICAgICAKICAgICAvLyBpbnRlcm5hdGlvbmFsIHRleHQgaW5w
dXQgY29tcG9zaXRpb24KICAgICBib29sIGhhc0NvbXBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9jb21wb3NpdGlvbk5vZGU7IH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAz
Nzk4NikKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTMsNiArMTkzLDE0IEBAIGJvb2wgU2VsZWN0aW9uOjpleHBhbmRVc2luZ0dyYW51bGFyaXR5
KFQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBTZWxlY3Rpb246OmluY2x1ZGVUcmFpbGlu
Z1doaXRlc3BhY2UoKQoreworICAgIFZpc2libGVQb3NpdGlvbiBlbmQgPSBWaXNpYmxlUG9zaXRp
b24obV9lbmQsIG1fYWZmaW5pdHkpOworICAgIHdoaWxlIChlbmQuaXNOb3ROdWxsKCkgJiYgaXNT
cGFjZU9yTmV3bGluZShlbmQuY2hhcmFjdGVyQWZ0ZXIoKSkpCisgICAgICAgIGVuZCA9IGVuZC5u
ZXh0KCk7CisgICAgbV9lbmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKK30KKwogdm9pZCBTZWxl
Y3Rpb246OnZhbGlkYXRlKCkKIHsKICAgICAvLyBNb3ZlIHRoZSBzZWxlY3Rpb24gdG8gcmVuZGVy
ZWQgcG9zaXRpb25zLCBpZiBwb3NzaWJsZS4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uLmgJKHJldmlzaW9u
IDM3OTg2KQorKysgV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNCYXNlRmlyc3QoKSBjb25zdCB7
IHJldHVybiBtX2Jhc2VJc0ZpcnN0OyB9CiAKKyAgICB2b2lkIGluY2x1ZGVUcmFpbGluZ1doaXRl
c3BhY2UoKTsKKwogICAgIGJvb2wgZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHkpOwogICAgIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fZ3JhbnVsYXJpdHk7IH0KIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJl
dmlzaW9uIDM3OTg2KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4MSw2ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZERlbGV0ZVJhbmdlKFJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZShIVE1MRWxlbWVudCopIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIHNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQo
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHRvZ2ds
ZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkgeyB9CiAgICAgdmlydHVhbCBib29sIGlzR3JhbW1h
ckNoZWNraW5nRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CShyZXZpc2lvbiAzNzk4NikKKysrIFdlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZERlbGV0ZVJhbmdlKFJhbmdlKikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93RGVs
ZXRlSW50ZXJmYWNlKEhUTUxFbGVtZW50KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzbWFydElu
c2VydERlbGV0ZUVuYWJsZWQoKSA9IDA7IAorICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmcoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpID0gMDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAzNzk4
NikKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTIsNiArMTkyLDggQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbQog
ICAgICAgICBpZiAobmV3U2VsZWN0aW9uLmlzUmFuZ2UoKSkgewogICAgICAgICAgICAgbV9mcmFt
ZS0+c2V0U2VsZWN0aW9uR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgICAg
IG1fYmVnYW5TZWxlY3RpbmdUZXh0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuZXZl
bnQoKS5jbGlja0NvdW50KCkgPT0gMiAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCgpKSAKKyAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uaW5j
bHVkZVRyYWlsaW5nV2hpdGVzcGFjZSgpOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBpZiAobV9mcmFtZS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlv
bikpCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJ
KHJldmlzaW9uIDM3OTcyKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBz
bWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqKTsgICAg
CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQko
cmV2aXNpb24gMzc5NzIpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIyLDYgKzIyMiwxMSBAQCBib29sIFdlYkVkaXRv
ckNsaWVudDo6c21hcnRJbnNlcnREZWxldGVFCiAgICAgcmV0dXJuIFttX3dlYlZpZXcgc21hcnRJ
bnNlcnREZWxldGVFbmFibGVkXTsKIH0KIAorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3IHNlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWRdOworfQorCiBib29sIFdlYkVkaXRvckNsaWVudDo6
c2hvdWxkQXBwbHlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgUmFuZ2UqIHJhbmdl
KQogewogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3
ZWJWaWV3Om1fd2ViVmlldwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5oCShyZXZpc2lvbiAzNzk3MikK
KysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwOSw2
ICs3MDksOCBAQCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBXZWJWaWV3RGlkQ2hhbmdlCiAtIChE
T01DU1NTdHlsZURlY2xhcmF0aW9uICopdHlwaW5nU3R5bGU7CiAtICh2b2lkKXNldFNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZDooQk9PTClmbGFnOwogLSAoQk9PTClzbWFydEluc2VydERlbGV0ZUVu
YWJsZWQ7CistICh2b2lkKXNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ6KEJPT0wp
ZmxhZzsKKy0gKEJPT0wpc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsKIC0gKHZvaWQp
c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOihCT09MKWZsYWc7CiAtIChCT09MKWlz
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOwogLSAoV2ViTlNJbnRlZ2VyKXNwZWxsQ2hl
Y2tlckRvY3VtZW50VGFnOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDM3OTcy
KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3
NSw2ICszNzUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciB3ZWJWaWV3SXNPcGVuW10gPSAiQXQgCiAg
ICAgTlNJbnRlZ2VyIHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnOwogCiAgICAgQk9PTCBzbWFydElu
c2VydERlbGV0ZUVuYWJsZWQ7CisgICAgQk9PTCBzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkOwogICAgICAgICAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgQk9PTCBk
YXNoYm9hcmRCZWhhdmlvckFsd2F5c1NlbmRNb3VzZUV2ZW50c1RvQWxsV2luZG93czsKQEAgLTQw
MTAsNiArNDAxMSw4IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm8K
IC0gKHZvaWQpc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOihCT09MKWZsYWcKIHsKICAgICBf
cHJpdmF0ZS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gZmxhZzsKKyAgICBpZiAoZmxhZykK
KyAgICAgICAgW3NlbGYgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDpmYWxzZV07
CiB9CiAKIC0gKEJPT0wpc21hcnRJbnNlcnREZWxldGVFbmFibGVkCkBAIC00MDE3LDYgKzQwMjAs
MTggQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0ZybwogICAgIHJldHVy
biBfcHJpdmF0ZS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkOwogfQogCistICh2b2lkKXNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIF9wcml2YXRl
LT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZmxhZzsKKyAgICBpZiAoZmxhZykK
KyAgICAgICAgW3NlbGYgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOmZhbHNlXTsKK30KKwor
LSAoQk9PTClzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkCit7CisgICAgcmV0dXJuIF9w
cml2YXRlLT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOworfQorCiAtICh2b2lkKXNl
dENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgaWYgKGNv
bnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCAhPSBmbGFnKSB7CkluZGV4OiBXZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlz
aW9uIDM3OTcyKQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjg0LDYgKzI4NCw3IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogLCBtX3RvcExldmVsUGFyZW50KDAp
CiAsIG1fZGVsZXRlQmFja2luZ1N0b3JlVGltZXJBY3RpdmUoZmFsc2UpCiAsIG1fdHJhbnNwYXJl
bnQoZmFsc2UpCissIG1fc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSkKIHsK
ICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKIApAQCAtMzQ4NSw2ICszNDg2LDggQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRTbQogICAgICAgICAvKiBbaW5d
ICovIEJPT0wgZmxhZykKIHsKICAgICBtX3NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9ICEhZmxh
ZzsKKyAgICBpZiAobV9zbWFydEluc2VydERlbGV0ZUVuYWJsZWQpCisgICAgICAgIHNldFNlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOwogICAgIHJldHVybiBTX09LOwogfQog
ICAgIApAQCAtMzQ5NCw3ICszNDk3LDIzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6c21hcnQKICAgICAqZW5hYmxlZCA9IG1fc21hcnRJbnNlcnREZWxldGVFbmFibGVkID8g
VFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwogfQorIAorSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCAKKyAg
ICAgICAgLyogW2luXSAqLyBCT09MIGZsYWcpCit7CisgICAgbV9zZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkID0gISFmbGFnOworICAgIGlmIChtX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFj
ZUVuYWJsZWQpCisgICAgICAgIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChmYWxzZSk7Cisg
ICAgcmV0dXJuIFNfT0s7Cit9CiAgICAgCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZp
ZXc6OnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoIAorICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCit7CisgICAgKmVuYWJsZWQgPSBtX3NlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQgPyBUUlVFIDogRkFMU0U7CisgICAgcmV0dXJuIFNfT0s7Cit9
CisKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0Q29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCAKICAgICAgICAgLyogW2luXSAqLyBCT09MIGZsYWcpCiB7CkluZGV4
OiBXZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcu
aAkocmV2aXNpb24gMzc5NzIpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzkwLDcgKzM5MCwxMyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCggCiAgICAgICAgIC8q
IFtpbl0gKi8gQk9PTCAqZW5hYmxlZCk7CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCggCisgICAgICAgIC8q
IFtpbl0gKi8gQk9PTCBmbGFnKTsKICAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCggCisgICAgICAgIC8qIFtp
bl0gKi8gQk9PTCAqZW5hYmxlZCk7CisKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCAKICAgICAgICAgLyogW2lu
XSAqLyBCT09MIGZsYWcpOwogICAgIApAQCAtODU2LDYgKzg2Miw3IEBAIHByb3RlY3RlZDoKICAg
ICB1bnNpZ25lZCBtX3BhaW50Q291bnQ7CiAgICAgYm9vbCBtX2hhc1NwZWxsQ2hlY2tlckRvY3Vt
ZW50VGFnOwogICAgIGJvb2wgbV9zbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CisgICAgYm9vbCBt
X3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7CiAgICAgYm9vbCBtX2RpZENsb3NlOwog
ICAgIGJvb2wgbV9oYXNDdXN0b21Ecm9wVGFyZ2V0OwogICAgIHVuc2lnbmVkIG1faW5JTUVDb21w
b3NpdGlvbjsKSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlldy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3LmlkbAkocmV2aXNpb24gMzc5
NzIpCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXcuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC05NDEsNiArOTQxLDE2IEBAIGludGVyZmFjZSBJV2ViVmlld0VkaXRpbmcgOiBJVW5rbm93
bgogICAgIEhSRVNVTFQgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9P
TCogZW5hYmxlZCk7CiAKICAgICAvKgorICAgICAgICAtICh2b2lkKXNldFNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQ6KEJPT0wpZmxhZzsKKyAgICAqLworICAgIEhSRVNVTFQgc2V0U2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChbaW5dIEJPT0wgZmxhZyk7CisKKyAgICAvKgor
ICAgICAgICAtIChCT09MKXNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7CisgICAgKi8K
KyAgICBIUkVTVUxUIHNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoW291dCwgcmV0dmFs
XSBCT09MKiBlbmFibGVkKTsKKworICAgIC8qCiAgICAgICAgIC0gKHZvaWQpc2V0Q29udGludW91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkOihCT09MKWZsYWc7CiAgICAgKi8KICAgICBIUkVTVUxUIHNl
dENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChbaW5dIEJPT0wgZmxhZyk7CkluZGV4OiBX
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lv
biAzNzk3MikKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDYgKzI5NSwxMyBAQCBib29sIFdlYkVkaXRvckNsaWVu
dDo6c21hcnRJbnNlcnREZWxldGVFCiAgICAgcmV0dXJuICEhZW5hYmxlZDsKIH0KIAorYm9vbCBX
ZWJFZGl0b3JDbGllbnQ6OnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodm9pZCkKK3sK
KyAgICBCT09MIGVuYWJsZWQgPSBGQUxTRTsKKyAgICBtX3dlYlZpZXctPnNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQoJmVuYWJsZWQpOworICAgIHJldHVybiAhIWVuYWJsZWQ7Cit9CisK
IGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNvcmU6
OlJhbmdlKiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFQWZmaW5pdHksIGJvb2wpCiB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMzc5NzIpCisrKyBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb24o
V2ViTm90aWZpY2F0aW9uKik7CiAKICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgp
OworICAgIGJvb2wgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwogCiAgICAgdm9p
ZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+
KTsKICAgICB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpF
ZGl0Q29tbWFuZD4pOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMzgwMDEpCisrKyBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYzNiw2ICs2MzYsMTYgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0U21hcnRJbnNlcnREZWxl
dGVFbgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3Rh
dGljIEpTVmFsdWVSZWYgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZENhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8
IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAg
IExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxMYXlv
dXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAg
Y29udHJvbGxlci0+c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChKU1ZhbHVlVG9C
b29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0U3RvcFByb3Zpc2lv
bmFsRnJhbWVMb2Fkc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8TGF5
b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAt
NzYwLDYgKzc3MCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoK
ICAgICAgICAgeyAic2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCIsIHNldFByaXZhdGVCcm93c2lu
Z0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQb3B1cEJsb2NraW5nRW5h
YmxlZCIsIHNldFBvcHVwQmxvY2tpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkIiwgc2V0U21hcnRJbnNlcnREZWxldGVFbmFi
bGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCIsIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxvYWRzIiwgc2V0U3Rv
cFByb3Zpc2lvbmFsRnJhbWVMb2Fkc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFRh
YktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyIsIHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50
c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFVzZURhc2hib2FyZENvbXBhdGliaWxp
dHlNb2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCShyZXZpc2lvbiAzODAwMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBmbGFnKTsKICAg
ICB2b2lkIHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhib29sIGN5Y2xlcyk7CiAgICAg
dm9pZCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBmbGFnKTsKKyAgICB2b2lkIHNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNl
dEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgcHJvZmlsaW5nRW5hYmxlZCk7CiAgICAg
dm9pZCBzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZShib29sIGZsYWcpOwogICAgIHZv
aWQgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZyk7CkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCShyZXZpc2lvbiAzODAwMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYxLDYgKzI2
MSwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0CiAgICAgW1tb
bWFpbkZyYW1lIHdlYlZpZXddIGluc3BlY3Rvcl0gc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJs
ZWQ6cHJvZmlsaW5nRW5hYmxlZF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBmbGFnKQoreworICAgIFtbbWFp
bkZyYW1lIHdlYlZpZXddIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ6ZmxhZ107
Cit9CisKIHN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCB3YWl0VG9EdW1wV2F0Y2hkb2dJbnRl
cnZhbCA9IDEwLjA7CiAKIHN0YXRpYyB2b2lkIHdhaXRVbnRpbERvbmVXYXRjaGRvZ0ZpcmVkKENG
UnVuTG9vcFRpbWVyUmVmIHRpbWVyLCB2b2lkKiBpbmZvKQpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwCShyZXZpc2lvbiAzODAwMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Nyw2ICs1NDcs
MTkgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdAogICAgIGluc3Bl
Y3Rvci0+c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoZmxhZyk7CiB9CiAKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9v
bCBmbGFnKQoreworICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVE
KGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsKKworCUNPTVB0cjxJ
V2ViVmlld0VkaXRpbmc+IHZpZXdFZGl0aW5nOworICAgIGlmIChGQUlMRUQod2ViVmlldy0+UXVl
cnlJbnRlcmZhY2UoJnZpZXdFZGl0aW5nKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHZpZXdF
ZGl0aW5nLT5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZsYWcgPyBUUlVFIDog
RkFMU0UpOworfQorCiBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgd2FpdFRvRHVtcFdhdGNo
ZG9nSW50ZXJ2YWwgPSAxMC4wOwogCiBzdGF0aWMgdm9pZCB3YWl0VW50aWxEb25lV2F0Y2hkb2dG
aXJlZChDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgdm9pZCogaW5mbykNCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4
dA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNs
aWNrLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0ICAgKHJldmlzaW9uIDApDQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1leHBlY3RlZC50eHQg
ICAocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsNyBAQA0KK1RoaXMgdGVzdHMgdGhhdCBkb3VibGUt
Y2xpY2tpbmcgYSB3b3JkIG9uIHRoZSBXaW5kb3dzIHBsYXRmb3JtIHNlbGVjdHMgdGhlIHdoaXRl
c3BhY2UgYWZ0ZXIgdGhlIHdvcmQuICBZb3Ugc2hvdWxkIHNlZSB0aGUgd29yZCAiUEFTUyIgYmVs
b3cuDQorDQorUEFTUw0KKw0KKw0KKw0KKw0KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbCAgIChy
ZXZpc2lvbiAwKQ0KKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNr
LXdoaXRlc3BhY2UuaHRtbCAgIChyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwzNSBAQA0KKzxodG1s
Pg0KKzxoZWFkPg0KKzxzY3JpcHQ+DQoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikN
CisgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCis8L3NjcmlwdD4NCis8
c3R5bGU+DQorYm9keSB7IG1hcmdpbjogMDsgcGFkZGluZzogMCB9DQorPC9zdHlsZT4NCis8L2hl
YWQ+DQorPGJvZHk+DQorPHByZT4NCitUaGlzIHRlc3RzIHRoYXQgZG91YmxlLWNsaWNraW5nIGEg
d29yZCBvbiB0aGUgV2luZG93cyBwbGF0Zm9ybSBzZWxlY3RzIHRoZSB3aGl0ZXNwYWNlIGFmdGVy
IHRoZSB3b3JkLiAgWW91IHNob3VsZCBzZWUgdGhlIHdvcmQgIlBBU1MiIGJlbG93Lg0KKzxwPg0K
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgew0KKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjAsIDEw
KTsNCisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOw0KKyAgICAgICAgZXZlbnRTZW5k
ZXIubGVhcEZvcndhcmQoMSk7DQorICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7DQorICAg
ICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDApOw0KKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7DQorICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxKTsNCisgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsNCisgICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCk7DQorICAgICAgICB2YXIgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTsNCisg
ICAgICAgIGlmIChyYW5nZS50b1N0cmluZygpICE9ICJUaGlzICIpDQorICAgICAgICAgICAgZG9j
dW1lbnQud3JpdGUoIkZBSUwiKTsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICBkb2N1bWVu
dC53cml0ZSgiUEFTUyIpOw0KKyAgICB9IGVsc2UNCisgICAgICAgIGRvY3VtZW50LndyaXRlKCJQ
QVNTIik7DQorPC9zY3JpcHQ+DQorPC9ib2R5Pg0KKzwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24782</attachid>
            <date>2008-10-30 14:54:59 -0700</date>
            <delta_ts>2008-10-31 16:19:35 -0700</delta_ts>
            <desc>Improved possible patch to issue 15643</desc>
            <filename>patch20655-11.txt</filename>
            <type>text/plain</type>
            <size>23011</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODAwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMDgtMTAtMzAgIEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NjQzCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgY2xpZW50cyB0aGF0IHdpc2ggdG8g
ZGlzYWJsZSBzbWFydCBpbnNlcnQvZGVsZXRlCisgICAgICAgIGFuZCBlbmFibGUgdGhlICJ0cmFp
bGluZyB3aGl0ZXNwYWNlIHNlbGVjdGlvbiIgd29yay1hcm91bmQuCisJCisgICAgICAgIFRlc3Rz
OiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLmh0bWwKKworICAgICAg
ICAqIENoYW5nZUxvZzoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uOjppbmNsdWRlVHJhaWxpbmdXaGl0ZXNwYWNlKToK
KyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbi5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpzZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudCk6CisKIDIwMDgtMTAtMzAg
IERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbHAg
VG9rZXIuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMzc5ODYpCisrKyBXZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIxNiwxMSBAQCBib29s
IEVkaXRvcjo6Y2FuU21hcnRDb3B5T3JEZWxldGUoKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBj
bGllbnQoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgbV9mcmFtZS0+c2VsZWN0aW9u
R3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJpdHk7CiB9CiAKK2Jvb2wgRWRpdG9yOjpzZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gY2xpZW50KCkgJiYg
Y2xpZW50KCktPnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKK30KKwogYm9vbCBF
ZGl0b3I6OmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlv
biBkaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZywg
Ym9vbCBpc1R5cGluZ0FjdGlvbikKIHsKICAgICAvLyBEZWxldGUgdGhlIHNlbGVjdGlvbiwgaWYg
dGhlcmUgaXMgb25lLgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkocmV2aXNpb24gMzc5ODYpCisrKyBXZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw2ICsyMTksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uKTsK
IAogICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CisgICAgYm9vbCBzZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CiAgICAgCiAgICAgLy8gaW50ZXJuYXRpb25hbCB0
ZXh0IGlucHV0IGNvbXBvc2l0aW9uCiAgICAgYm9vbCBoYXNDb21wb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fY29tcG9zaXRpb25Ob2RlOyB9CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uLmNwcAkocmV2
aXNpb24gMzc5ODYpCisrKyBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTkzLDYgKzE5MywxNCBAQCBib29sIFNlbGVjdGlvbjo6ZXhwYW5kVXNpbmdHcmFu
dWxhcml0eShUCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgU2VsZWN0aW9uOjppbmNsdWRl
VHJhaWxpbmdXaGl0ZXNwYWNlKCkKK3sKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kID0gVmlzaWJs
ZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KTsKKyAgICB3aGlsZSAoZW5kLmlzTm90TnVsbCgp
ICYmIGlzU3BhY2VPck5ld2xpbmUoZW5kLmNoYXJhY3RlckFmdGVyKCkpKQorICAgICAgICBlbmQg
PSBlbmQubmV4dCgpOworICAgIG1fZW5kID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7Cit9CisKIHZv
aWQgU2VsZWN0aW9uOjp2YWxpZGF0ZSgpCiB7CiAgICAgLy8gTW92ZSB0aGUgc2VsZWN0aW9uIHRv
IHJlbmRlcmVkIHBvc2l0aW9ucywgaWYgcG9zc2libGUuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
U2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbi5oCShy
ZXZpc2lvbiAzNzk4NikKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQmFzZUZpcnN0KCkg
Y29uc3QgeyByZXR1cm4gbV9iYXNlSXNGaXJzdDsgfQogCisgICAgdm9pZCBpbmNsdWRlVHJhaWxp
bmdXaGl0ZXNwYWNlKCk7CisKICAgICBib29sIGV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5KTsKICAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHko
KSBjb25zdCB7IHJldHVybiBtX2dyYW51bGFyaXR5OyB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCShyZXZpc2lvbiAzNzk4NikKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yODEsNiArMjgxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIHNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoSFRNTEVsZW1lbnQqKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaAkocmV2aXNpb24gMzc5ODYpCisrKyBXZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
U2hvd0RlbGV0ZUludGVyZmFjZShIVE1MRWxlbWVudCopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgPSAwOyAKKyAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRvZ2ds
ZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1t
YXJDaGVja2luZ0VuYWJsZWQoKSA9IDA7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNp
b24gMzc5ODYpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTkyLDYgKzE5Miw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29y
ZEZyb20KICAgICAgICAgaWYgKG5ld1NlbGVjdGlvbi5pc1JhbmdlKCkpIHsKICAgICAgICAgICAg
IG1fZnJhbWUtPnNldFNlbGVjdGlvbkdyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7CiAgICAg
ICAgICAgICBtX2JlZ2FuU2VsZWN0aW5nVGV4dCA9IHRydWU7CisgICAgICAgICAgICBpZiAocmVz
dWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSkgCisgICAgICAgICAgICAgICAgbmV3U2VsZWN0
aW9uLmluY2x1ZGVUcmFpbGluZ1doaXRlc3BhY2UoKTsgICAgICAgICAgICAKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgaWYgKG1fZnJhbWUtPnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdT
ZWxlY3Rpb24pKQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MDAxKQorKysgV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAwOC0xMC0zMCAgR2xlbm4gV2ls
c29uICA8Z3dpbHNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDMKKworICAgICAgICBBZGRlZCBBUEkgc3VwcG9ydCBm
b3IgdGhlICJ0cmFpbGluZyB3aGl0ZXNwYWNlIiB3b3JrLWFyb3VuZC4gIFRoaXMgaW5jbHVkZXMg
YW4gQVBJcworICAgICAgICB0byBnZXQgYW5kIHNldCB0aGUgc3RhdGUgb2YgdGhpcyBjb25maWd1
cmF0aW9uIHZhcmlhYmxlLgorCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6c2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHNldFNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRTZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWRdKToKKwogMjAwOC0xMC0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4
OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDM3OTcyKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQg
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqKTsgICAgCkluZGV4OiBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkocmV2aXNpb24g
Mzc5NzIpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjIyLDYgKzIyMiwxMSBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6
c21hcnRJbnNlcnREZWxldGVFCiAgICAgcmV0dXJuIFttX3dlYlZpZXcgc21hcnRJbnNlcnREZWxl
dGVFbmFibGVkXTsKIH0KIAorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQoKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3IHNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWRdOworfQorCiBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBw
bHlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgUmFuZ2UqIHJhbmdlKQogewogICAg
IHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1f
d2ViVmlldwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5oCShyZXZpc2lvbiAzNzk3MikKKysrIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwOSw2ICs3MDksOCBA
QCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBXZWJWaWV3RGlkQ2hhbmdlCiAtIChET01DU1NTdHls
ZURlY2xhcmF0aW9uICopdHlwaW5nU3R5bGU7CiAtICh2b2lkKXNldFNtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZDooQk9PTClmbGFnOwogLSAoQk9PTClzbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7Cist
ICh2b2lkKXNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ6KEJPT0wpZmxhZzsKKy0g
KEJPT0wpc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsKIC0gKHZvaWQpc2V0Q29udGlu
dW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOihCT09MKWZsYWc7CiAtIChCT09MKWlzQ29udGludW91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkOwogLSAoV2ViTlNJbnRlZ2VyKXNwZWxsQ2hlY2tlckRvY3Vt
ZW50VGFnOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDM3OTcyKQorKysgV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3NSw2ICszNzUs
NyBAQCBzdGF0aWMgY29uc3QgY2hhciB3ZWJWaWV3SXNPcGVuW10gPSAiQXQgCiAgICAgTlNJbnRl
Z2VyIHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnOwogCiAgICAgQk9PTCBzbWFydEluc2VydERlbGV0
ZUVuYWJsZWQ7CisgICAgQk9PTCBzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOwogICAg
ICAgICAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgQk9PTCBkYXNoYm9hcmRC
ZWhhdmlvckFsd2F5c1NlbmRNb3VzZUV2ZW50c1RvQWxsV2luZG93czsKQEAgLTQwMTAsNiArNDAx
MSw4IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm8KIC0gKHZvaWQp
c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOihCT09MKWZsYWcKIHsKICAgICBfcHJpdmF0ZS0+
c21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gZmxhZzsKKyAgICBpZiAoZmxhZykKKyAgICAgICAg
W3NlbGYgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDpmYWxzZV07CiB9CiAKIC0g
KEJPT0wpc21hcnRJbnNlcnREZWxldGVFbmFibGVkCkBAIC00MDE3LDYgKzQwMjAsMTggQEAgc3Rh
dGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0ZybwogICAgIHJldHVybiBfcHJpdmF0
ZS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkOwogfQogCistICh2b2lkKXNldFNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIF9wcml2YXRlLT5zZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZmxhZzsKKyAgICBpZiAoZmxhZykKKyAgICAgICAg
W3NlbGYgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOmZhbHNlXTsKK30KKworLSAoQk9PTClz
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkCit7CisgICAgcmV0dXJuIF9wcml2YXRlLT5z
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOworfQorCiAtICh2b2lkKXNldENvbnRpbnVv
dXNTcGVsbENoZWNraW5nRW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgaWYgKGNvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCAhPSBmbGFnKSB7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMzgwMDEpCisr
KyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisy
MDA4LTEwLTMwICBHbGVubiBXaWxzb24gIDxnd2lsc29uQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0MworCisgICAgICAg
IEFkZGVkIEFQSSBzdXBwb3J0IGZvciB0aGUgInRyYWlsaW5nIHdoaXRlc3BhY2UiIHdvcmstYXJv
dW5kLiAgVGhpcyBpbmNsdWRlcyBhbiBBUElzCisgICAgICAgIHRvIGdldCBhbmQgc2V0IHRoZSBz
dGF0ZSBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuCisKKyAgICAgICAgKiBDaGFuZ2VM
b2c6CisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViVmlldy5pZGw6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
c2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChX
ZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXc6OnNldFNlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCk6CisgICAgICAgICogV2ViVmlldy5oOgorCiAyMDA4LTEwLTI5ICBTdGV2ZSBG
YWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYzMjY1NjM+IENyYXNoIG9uIGxhdW5jaApJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAzNzk3MikKKysr
IFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw2ICsyODQsNyBA
QCBXZWJWaWV3OjpXZWJWaWV3KCkKICwgbV90b3BMZXZlbFBhcmVudCgwKQogLCBtX2RlbGV0ZUJh
Y2tpbmdTdG9yZVRpbWVyQWN0aXZlKGZhbHNlKQogLCBtX3RyYW5zcGFyZW50KGZhbHNlKQorLCBt
X3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpCiB7CiAgICAgSlNDOjppbml0
aWFsaXplVGhyZWFkaW5nKCk7CiAKQEAgLTM0ODUsNiArMzQ4Niw4IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0U20KICAgICAgICAgLyogW2luXSAqLyBCT09MIGZsYWcp
CiB7CiAgICAgbV9zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSAhIWZsYWc7CisgICAgaWYgKG1f
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKQorICAgICAgICBzZXRTZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkKGZhbHNlKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKQEAgLTM0OTQs
NyArMzQ5NywyMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNtYXJ0CiAg
ICAgKmVuYWJsZWQgPSBtX3NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA/IFRSVUUgOiBGQUxTRTsK
ICAgICByZXR1cm4gU19PSzsKIH0KKyAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCggCisgICAgICAgIC8qIFtpbl0g
Ki8gQk9PTCBmbGFnKQoreworICAgIG1fc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9
ICEhZmxhZzsKKyAgICBpZiAobV9zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKQorICAg
ICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoZmFsc2UpOworICAgIHJldHVybiBTX09L
OworfQogICAgIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
KiBlbmFibGVkKQoreworICAgICplbmFibGVkID0gbV9zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkID8gVFJVRSA6IEZBTFNFOworICAgIHJldHVybiBTX09LOworfQorCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCggCiAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBmbGFnKQogewpJbmRleDogV2ViS2l0L3dpbi9X
ZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDM3
OTcyKQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5MCw3ICsz
OTAsMTMgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoIAogICAgICAgICAvKiBbaW5dICovIEJPT0wg
KmVuYWJsZWQpOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoIAorICAgICAgICAvKiBbaW5dICovIEJPT0wg
ZmxhZyk7CiAgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoIAorICAgICAgICAvKiBbaW5dICovIEJPT0wgKmVu
YWJsZWQpOworCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENvbnRp
bnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCggCiAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBmbGFn
KTsKICAgICAKQEAgLTg1Niw2ICs4NjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV9w
YWludENvdW50OwogICAgIGJvb2wgbV9oYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKICAgICBi
b29sIG1fc21hcnRJbnNlcnREZWxldGVFbmFibGVkOworICAgIGJvb2wgbV9zZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkOwogICAgIGJvb2wgbV9kaWRDbG9zZTsKICAgICBib29sIG1faGFz
Q3VzdG9tRHJvcFRhcmdldDsKICAgICB1bnNpZ25lZCBtX2luSU1FQ29tcG9zaXRpb247CkluZGV4
OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXcuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC93aW4vSW50ZXJmYWNlcy9JV2ViVmlldy5pZGwJKHJldmlzaW9uIDM3OTcyKQorKysgV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3LmlkbAkod29ya2luZyBjb3B5KQpAQCAtOTQxLDYgKzk0
MSwxNiBAQCBpbnRlcmZhY2UgSVdlYlZpZXdFZGl0aW5nIDogSVVua25vd24KICAgICBIUkVTVUxU
IHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChbb3V0LCByZXR2YWxdIEJPT0wqIGVuYWJsZWQpOwog
CiAgICAgLyoKKyAgICAgICAgLSAodm9pZClzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkOihCT09MKWZsYWc7CisgICAgKi8KKyAgICBIUkVTVUxUIHNldFNlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQoW2luXSBCT09MIGZsYWcpOworCisgICAgLyoKKyAgICAgICAgLSAoQk9P
TClzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOworICAgICovCisgICAgSFJFU1VMVCBz
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCogZW5hYmxl
ZCk7CisKKyAgICAvKgogICAgICAgICAtICh2b2lkKXNldENvbnRpbnVvdXNTcGVsbENoZWNraW5n
RW5hYmxlZDooQk9PTClmbGFnOwogICAgICovCiAgICAgSFJFU1VMVCBzZXRDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoW2luXSBCT09MIGZsYWcpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gMzc5NzIpCisrKyBX
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5NSw2ICsyOTUsMTMgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNtYXJ0SW5zZXJ0
RGVsZXRlRQogICAgIHJldHVybiAhIWVuYWJsZWQ7CiB9CiAKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50
OjpzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKHZvaWQpCit7CisgICAgQk9PTCBlbmFi
bGVkID0gRkFMU0U7CisgICAgbV93ZWJWaWV3LT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKCZlbmFibGVkKTsKKyAgICByZXR1cm4gISFlbmFibGVkOworfQorCiBib29sIFdlYkVkaXRv
ckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpSYW5nZSosIFdlYkNv
cmU6OlJhbmdlKiwgV2ViQ29yZTo6RUFmZmluaXR5LCBib29sKQogeyBub3RJbXBsZW1lbnRlZCgp
OyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDM3OTcyKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uKFdlYk5vdGlmaWNhdGlv
biopOwogCiAgICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKKyAgICBib29sIHNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJDb21t
YW5kRm9yVW5kbyhQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7CiAgICAgdm9pZCBy
ZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsK
SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDM4MDAxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDgtMTAtMzAgIEdsZW5uIFdpbHNvbiAgPGd3
aWxzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NjQzCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgY2hhbmdpbmcg
dGhlICJ0cmFpbGluZyB3aGl0ZXNwYWNlIiB3b3JrLWFyb3VuZAorICAgICAgICBpbiBMYXlvdXRU
ZXN0Q29udHJvbGxlciAoc28gbGF5b3V0IHRlc3RzIGNhbiB2ZXJpZnkgdGhpcyBmdW5jdGlvbmFs
aXR5KQorCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3Rh
dGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQpOgorCiAyMDA4LTEwLTI4ICBBbHAgVG9r
ZXIgIDxhbHBAbnVhbnRpLmNvbT4KIAogICAgICAgICBGaXggR1RLIERSVCBmb2xsb3dpbmcgYnVp
bGQgYnJlYWthZ2UgaW4gcjM3OTI4LgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMzgwMDEpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYzNiw2ICs2MzYsMTYgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0U21hcnRJ
bnNlcnREZWxldGVFbgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRf
Y2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7CisgICAgY29udHJvbGxlci0+c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChK
U1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOworICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0U3Rv
cFByb3Zpc2lvbmFsRnJhbWVMb2Fkc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVj
dCkpOwpAQCAtNzYwLDYgKzc3MCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250
cm9sbGVyOjoKICAgICAgICAgeyAic2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCIsIHNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQb3B1cEJs
b2NraW5nRW5hYmxlZCIsIHNldFBvcHVwQmxvY2tpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkIiwgc2V0U21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0U2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCIsIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxvYWRz
Iiwgc2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2Fkc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyIsIHNldFRhYktleUN5Y2xlc1Rocm91
Z2hFbGVtZW50c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFVzZURhc2hib2FyZENv
bXBhdGliaWxpdHlNb2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAzODAwMSkKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYg
KzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBm
bGFnKTsKICAgICB2b2lkIHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhib29sIGN5Y2xl
cyk7CiAgICAgdm9pZCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBmbGFnKTsKKyAg
ICB2b2lkIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBmbGFnKTsKICAg
ICB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgcHJvZmlsaW5nRW5hYmxl
ZCk7CiAgICAgdm9pZCBzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZShib29sIGZsYWcp
OwogICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZyk7CkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiAzODAwMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYxLDYgKzI2MSwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0
CiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIGluc3BlY3Rvcl0gc2V0SmF2YVNjcmlwdFByb2Zp
bGluZ0VuYWJsZWQ6cHJvZmlsaW5nRW5hYmxlZF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBmbGFnKQorewor
ICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQ6ZmxhZ107Cit9CisKIHN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCB3YWl0VG9EdW1wV2F0
Y2hkb2dJbnRlcnZhbCA9IDEwLjA7CiAKIHN0YXRpYyB2b2lkIHdhaXRVbnRpbERvbmVXYXRjaGRv
Z0ZpcmVkKENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyLCB2b2lkKiBpbmZvKQpJbmRleDogV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwCShyZXZpc2lvbiAzODAwMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
Nyw2ICs1NDcsMTkgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdAog
ICAgIGluc3BlY3Rvci0+c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoZmxhZyk7CiB9CiAK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQoYm9vbCBmbGFnKQoreworICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAgICBp
ZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsKKwor
CUNPTVB0cjxJV2ViVmlld0VkaXRpbmc+IHZpZXdFZGl0aW5nOworICAgIGlmIChGQUlMRUQod2Vi
Vmlldy0+UXVlcnlJbnRlcmZhY2UoJnZpZXdFZGl0aW5nKSkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHZpZXdFZGl0aW5nLT5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZsYWcg
PyBUUlVFIDogRkFMU0UpOworfQorCiBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgd2FpdFRv
RHVtcFdhdGNoZG9nSW50ZXJ2YWwgPSAxMC4wOwogCiBzdGF0aWMgdm9pZCB3YWl0VW50aWxEb25l
V2F0Y2hkb2dGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgdm9pZCogaW5mbykNCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAzODAwMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA4LTEwLTMwICBHbGVubiBXaWxzb24gIDxnd2lsc29u
QGNocm9taXVtLm9yZz4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTY0MworCisgICAgICAgIE5ldyB0ZXN0IGFkZGVkIHRvIHZlcmlmeSB0aGF0IExh
eW91dFRlc3RDb250cm9sbGVyIGFuZCBvdGhlciBjbGllbnRzCisgICAgICAgIGNhbiBkaXNhYmxl
IHNtYXJ0IGluc2VydC9kZWxldGUgYW5kIGVuYWJsZSBzZWxlY3Rpb24gb2YgdHJhaWxpbmcgd2hp
dGVzcGFjZQorICAgICAgICBhcyBhIHdvcmthcm91bmQgZm9yIHNtYXJ0IGluc2VydC9kZWxldGUu
CisKKyAgICAgICAgKiBDaGFuZ2VMb2c6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZG91
YmxlY2xpY2std2hpdGVzcGFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbDogQWRkZWQuCisKIDIwMDgt
MTAtMjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLg0KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0DQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1leHBl
Y3RlZC50eHQgICAocmV2aXNpb24gMCkNCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dCAgIChyZXZpc2lvbiAwKQ0KQEAg
LTAsMCArMSw2IEBADQorVGhpcyB0ZXN0cyB0aGF0IGRvdWJsZS1jbGlja2luZyBhIHdvcmQgb24g
dGhlIFdpbmRvd3MgcGxhdGZvcm0gc2VsZWN0cyB0aGUgd2hpdGVzcGFjZSBhZnRlciB0aGUgd29y
ZC4gIFlvdSBzaG91bGQgc2VlIHRoZSB3b3JkICJQQVNTIiBiZWxvdy4NCisNCitQQVNTDQorDQor
DQorDQpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hp
dGVzcGFjZS5odG1sDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sICAgKHJldmlzaW9uIDApDQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sICAgKHJl
dmlzaW9uIDApDQpAQCAtMCwwICsxLDM4IEBADQorPGh0bWw+DQorPGhlYWQ+DQorPHNjcmlwdD4N
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKGZhbHNlKTsKKyAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCh0cnVlKTsKK30NCis8L3NjcmlwdD4NCis8
c3R5bGU+DQorYm9keSB7IG1hcmdpbjogMDsgcGFkZGluZzogMCB9DQorPC9zdHlsZT4NCis8L2hl
YWQ+DQorPGJvZHk+DQorPHByZT4NCitUaGlzIHRlc3RzIHRoYXQgZG91YmxlLWNsaWNraW5nIGEg
d29yZCBvbiB0aGUgV2luZG93cyBwbGF0Zm9ybSBzZWxlY3RzIHRoZSB3aGl0ZXNwYWNlIGFmdGVy
IHRoZSB3b3JkLiAgWW91IHNob3VsZCBzZWUgdGhlIHdvcmQgIlBBU1MiIGJlbG93Lg0KKzxwPg0K
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgew0KKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjAsIDEw
KTsNCisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOw0KKyAgICAgICAgZXZlbnRTZW5k
ZXIubGVhcEZvcndhcmQoMSk7DQorICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7DQorICAg
ICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDApOw0KKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7DQorICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxKTsNCisgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsNCisgICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCk7DQorICAgICAgICB2YXIgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTsNCisg
ICAgICAgIGlmIChyYW5nZS50b1N0cmluZygpICE9ICJUaGlzICIpDQorICAgICAgICAgICAgZG9j
dW1lbnQud3JpdGUoIkZBSUwiKTsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICBkb2N1bWVu
dC53cml0ZSgiUEFTUyIpOw0KKyAgICB9IGVsc2UNCisgICAgICAgIGRvY3VtZW50LndyaXRlKCJQ
QVNTIik7DQorPC9zY3JpcHQ+DQorPC9ib2R5Pg0KKzwvaHRtbD4NCg==
</data>
<flag name="review"
          id="11342"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24822</attachid>
            <date>2008-10-31 16:19:35 -0700</date>
            <delta_ts>2008-11-03 18:39:56 -0800</delta_ts>
            <desc>Possible patch to issue 15643</desc>
            <filename>patch20655-12.txt</filename>
            <type>text/plain</type>
            <size>23230</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODAwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDgtMTAtMzAgIEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NjQzCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgY2xpZW50cyB0aGF0IHdpc2ggdG8g
ZGlzYWJsZSBzbWFydCBpbnNlcnQvZGVsZXRlCisgICAgICAgIGFuZCBlbmFibGUgdGhlICJzZWxl
Y3QgdHJhaWxpbmcgd2hpdGVzcGFjZSIgZmVhdHVyZS4KKwkKKyAgICAgICAgVGVzdHM6IGVkaXRp
bmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAorCisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAg
ICAqIGVkaXRpbmcvU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbjo6
aW5jbHVkZVRyYWlsaW5nV2hpdGVzcGFjZSk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb24u
aDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUVkaXRvckNsaWVudDo6c2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAg
ICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJv
bU1vdXNlRXZlbnQpOgorCiAyMDA4LTEwLTMwICBEaXJrIFNjaHVsemUgIDx2YnM4NUBnbXguZGU+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxwIFRva2VyLgpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJl
dmlzaW9uIDM3OTg2KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNiw2ICsyMTYsMTEgQEAgYm9vbCBFZGl0b3I6OmNhblNtYXJ0Q29weU9yRGVsZXRl
KCkKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPnNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZCgpICYmIG1fZnJhbWUtPnNlbGVjdGlvbkdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFy
aXR5OwogfQogCitib29sIEVkaXRvcjo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
KCkKK3sKKyAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzU2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCgpOworfQorCiBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlv
bihTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nLCBib29sIGlzVHlwaW5nQWN0aW9uKQogewog
ICAgIC8vIERlbGV0ZSB0aGUgc2VsZWN0aW9uLCBpZiB0aGVyZSBpcyBvbmUuCkluZGV4OiBXZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCShyZXZpc2lvbiAzNzk4NikKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0b2dnbGVVbmRl
cmxpbmUoKTsKICAgICB2b2lkIHNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rp
b24pOwogCisgICAgLy8gc21hcnRJbnNlcnREZWxldGVFbmFibGVkIGFuZCBzZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkIGFyZSAKKyAgICAvLyBtdXR1YWxseSBleGNsdXNpdmUsIG1lYW5p
bmcgdGhhdCBlbmFibGluZyBvbmUgd2lsbCBkaXNhYmxlIHRoZSBvdGhlci4KKyAgICAvLyBUb2dl
dGhlciwgdGhleSByZXByZXNlbnQgdGhyZWUgcG9zc2libGUgc3RhdGVzIG9mIGVkaXRpbmc6Cisg
ICAgLy8gMS4gIElmIHNtYXJ0SW5zZXJ0RGVsZXRlIGlzIGVuYWJsZWQsIHRoZW4gZWRpdGluZyBi
ZWhhdmVzIG5vcm1hbGx5IHdpdGgKKyAgICAvLyAgICAgc21hcnQgaW5zZXJ0IGFuZCBkZWxldGUu
CisgICAgLy8gMi4gIElmIHNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZSBpcyBlbmFibGVkLCB0aGVu
IHNtYXJ0IGluc2VydCBhbmQgZGVsZXRlCisgICAgLy8gICAgIGlzIGRpc2FibGVkLCBhbmQgZG91
YmxlLWNsaWNraW5nIGEgd29yZCB3aWxsIHNlbGVjdCB0aGUgd2hpdGVzcGFjZSAKKyAgICAvLyAg
ICAgYWZ0ZXIgdGhlIHdvcmQuCisgICAgLy8gMy4gIElmIGJvdGggYXJlIGRpc2FibGVkLCBlZGl0
aW5nIHdpbGwgaGF2ZSBuZWl0aGVyIHNtYXJ0IGluc2VydC9kZWxldGUgCisgICAgLy8gICAgIG5v
ciB0cmFpbGluZyB3aGl0ZXNwYWNlIHNlbGVjdGlvbiAobm9uLW5hdHVyYWwgbGFuZ3VhZ2UgZWRp
dGluZy4pCiAgICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKKyAgICBib29sIGlz
U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwogICAgIAogICAgIC8vIGludGVybmF0
aW9uYWwgdGV4dCBpbnB1dCBjb21wb3NpdGlvbgogICAgIGJvb2wgaGFzQ29tcG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW9uTm9kZTsgfQpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L1NlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbi5j
cHAJKHJldmlzaW9uIDM3OTg2KQorKysgV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Myw2ICsxOTMsMTQgQEAgYm9vbCBTZWxlY3Rpb246OmV4cGFuZFVz
aW5nR3JhbnVsYXJpdHkoVAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFNlbGVjdGlvbjo6
c2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlKCkKK3sKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kID0g
VmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KTsKKyAgICB3aGlsZSAoZW5kLmlzTm90
TnVsbCgpICYmIGlzU3BhY2VPck5ld2xpbmUoZW5kLmNoYXJhY3RlckFmdGVyKCkpKQorICAgICAg
ICBlbmQgPSBlbmQubmV4dCgpOworICAgIG1fZW5kID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7Cit9
CisKIHZvaWQgU2VsZWN0aW9uOjp2YWxpZGF0ZSgpCiB7CiAgICAgLy8gTW92ZSB0aGUgc2VsZWN0
aW9uIHRvIHJlbmRlcmVkIHBvc2l0aW9ucywgaWYgcG9zc2libGUuCkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
bi5oCShyZXZpc2lvbiAzNzk4NikKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQmFzZUZp
cnN0KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlSXNGaXJzdDsgfQogCisgICAgdm9pZCBzZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2UoKTsKKwogICAgIGJvb2wgZXhwYW5kVXNpbmdHcmFudWxhcml0eShU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpOwogICAgIFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbnVsYXJpdHk7IH0KIApJbmRleDogV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgJKHJldmlzaW9uIDM3OTg2KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw2ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZShIVE1MRWxlbWVudCopIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6
IFdlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDM3OTg2KQorKysgV2ViQ29yZS9wYWdlL0VkaXRvckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IHNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoSFRNTEVsZW1lbnQqKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpID0gMDsgCisgICAgdmlydHVhbCBib29s
IGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSA9IDA7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAkocmV2aXNpb24gMzc5ODYpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTkyLDYgKzE5Miw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RD
bG9zZXN0V29yZEZyb20KICAgICAgICAgaWYgKG5ld1NlbGVjdGlvbi5pc1JhbmdlKCkpIHsKICAg
ICAgICAgICAgIG1fZnJhbWUtPnNldFNlbGVjdGlvbkdyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0
eSk7CiAgICAgICAgICAgICBtX2JlZ2FuU2VsZWN0aW5nVGV4dCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAocmVzdWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFtZS0+ZWRpdG9y
KCktPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpKSAKKyAgICAgICAgICAgICAg
ICBuZXdTZWxlY3Rpb24uc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlKCk7ICAgICAgICAgICAgCiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX2ZyYW1lLT5zaG91bGRDaGFuZ2VTZWxl
Y3Rpb24obmV3U2VsZWN0aW9uKSkKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzODAwMSkKKysrIFdlYktpdC9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDgtMTAtMzAg
IEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQzCisKKyAgICAgICAgQWRkZWQgQVBJ
IHN1cHBvcnQgZm9yIHRoZSAic2VsZWN0IHRyYWlsaW5nIHdoaXRlc3BhY2UiIGZlYXR1cmUuCisg
ICAgICAgIFRoaXMgaW5jbHVkZXMgYW4gQVBJcyB0byBnZXQgYW5kIHNldCB0aGUgc3RhdGUgb2Yg
dGhpcyBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHNldFNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZF0pOgorCiAyMDA4LTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5k
ZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNp
b24gMzc5NzIpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGlu
dCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOwogCiAgICAgdmlydHVhbCBib29sIHNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZCgpOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwogCiAgICAg
dmlydHVhbCBib29sIHNob3VsZERlbGV0ZVJhbmdlKFdlYkNvcmU6OlJhbmdlKik7ICAgIApJbmRl
eDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlz
aW9uIDM3OTcyKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTIyMiw2ICsyMjIsMTEgQEAgYm9vbCBXZWJFZGl0b3JDbGll
bnQ6OnNtYXJ0SW5zZXJ0RGVsZXRlRQogICAgIHJldHVybiBbbV93ZWJWaWV3IHNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZF07CiB9CiAKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1NlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQoKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3IGlzU2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZF07Cit9CisKIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojpz
aG91bGRBcHBseVN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBSYW5nZSogcmFuZ2Up
CiB7CiAgICAgcmV0dXJuIFtbbV93ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdl
YlZpZXc6bV93ZWJWaWV3CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMzc5NzIp
CisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzc1
LDYgKzM3NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHdlYlZpZXdJc09wZW5bXSA9ICJBdCAKICAg
ICBOU0ludGVnZXIgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CiAKICAgICBCT09MIHNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZDsKKyAgICBCT09MIHNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQ7CiAgICAgICAgIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBCT09MIGRh
c2hib2FyZEJlaGF2aW9yQWx3YXlzU2VuZE1vdXNlRXZlbnRzVG9BbGxXaW5kb3dzOwpAQCAtMzc2
OSw2ICszNzcwLDE4IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm8K
ICAgICByZXR1cm4gW3NlbGYgX3Jlc2V0Wm9vbTpzZW5kZXIgaXNUZXh0T25seTpOT107CiB9CiAK
Ky0gKHZvaWQpc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDooQk9PTClmbGFnCit7
CisgICAgX3ByaXZhdGUtPnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgPSBmbGFnOwor
ICAgIGlmIChmbGFnKQorICAgICAgICBbc2VsZiBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ6
ZmFsc2VdOworfQorCistIChCT09MKWlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZAor
eworICAgIHJldHVybiBfcHJpdmF0ZS0+c2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsK
K30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1ByaW50aW5nUHJp
dmF0ZSkKQEAgLTQwMTAsNiArNDAyMyw4IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9y
KiBhZURlc2NGcm8KIC0gKHZvaWQpc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOihCT09MKWZs
YWcKIHsKICAgICBfcHJpdmF0ZS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gZmxhZzsKKyAg
ICBpZiAoZmxhZykKKyAgICAgICAgW3NlbGYgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZDpmYWxzZV07CiB9CiAKIC0gKEJPT0wpc21hcnRJbnNlcnREZWxldGVFbmFibGVkCkluZGV4
OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMzc5NzIpCisrKyBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYg
KzE3NywxMCBAQCB0eXBlZGVmIGVudW0gewogLSAoQk9PTCljYW5SZXNldFBhZ2Vab29tOwogLSAo
SUJBY3Rpb24pcmVzZXRQYWdlWm9vbTooaWQpc2VuZGVyOwogCistICh2b2lkKXNldFNlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ6KEJPT0wpZmxhZzsKKy0gKEJPT0wpaXNTZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkOworCisKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3IChX
ZWJQcml2YXRlKQpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MDAxKQorKysgV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAwOC0xMC0zMCAgR2xlbm4gV2ls
c29uICA8Z3dpbHNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDMKKworICAgICAgICBBZGRlZCBBUEkgc3VwcG9ydCBm
b3IgdGhlICJzZWxlY3QgdHJhaWxpbmcgd2hpdGVzcGFjZSIgZmVhdHVyZS4KKyAgICAgICAgVGhp
cyBpbmNsdWRlcyBhbiBBUElzIHRvIGdldCBhbmQgc2V0IHRoZSBzdGF0ZSBvZiB0aGlzIGNvbmZp
Z3VyYXRpb24gdmFyaWFibGUuCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJWaWV3LmlkbDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OldlYlZpZXcpOgorICAgICAgICAoV2ViVmlldzo6c2V0
U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgIChXZWJWaWV3OjpzZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIw
MDgtMTAtMjkgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjMyNjU2Mz4gQ3Jhc2ggb24gbGF1bmNoCkluZGV4OiBXZWJLaXQv
d2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJl
dmlzaW9uIDM3OTcyKQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjg0LDYgKzI4NCw3IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogLCBtX3RvcExldmVsUGFyZW50
KDApCiAsIG1fZGVsZXRlQmFja2luZ1N0b3JlVGltZXJBY3RpdmUoZmFsc2UpCiAsIG1fdHJhbnNw
YXJlbnQoZmFsc2UpCissIG1fc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSkK
IHsKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKIApAQCAtMzQ4NSw2ICszNDg2LDgg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRTbQogICAgICAgICAvKiBb
aW5dICovIEJPT0wgZmxhZykKIHsKICAgICBtX3NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9ICEh
ZmxhZzsKKyAgICBpZiAobV9zbWFydEluc2VydERlbGV0ZUVuYWJsZWQpCisgICAgICAgIHNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOwogICAgIHJldHVybiBTX09LOwog
fQogICAgIApAQCAtMzQ5NCw3ICszNDk3LDIzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6c21hcnQKICAgICAqZW5hYmxlZCA9IG1fc21hcnRJbnNlcnREZWxldGVFbmFibGVk
ID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwogfQorIAorSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCAK
KyAgICAgICAgLyogW2luXSAqLyBCT09MIGZsYWcpCit7CisgICAgbV9zZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkID0gISFmbGFnOworICAgIGlmIChtX3NlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQpCisgICAgICAgIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChmYWxzZSk7
CisgICAgcmV0dXJuIFNfT0s7Cit9CiAgICAgCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCggCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKK3sKKyAgICAqZW5hYmxlZCA9IG1fc2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA/IFRSVUUgOiBGQUxTRTsKKyAgICByZXR1cm4gU19P
SzsKK30KKwogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoIAogICAgICAgICAvKiBbaW5dICovIEJPT0wgZmxhZykKIHsK
SW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2Vi
Vmlldy5oCShyZXZpc2lvbiAzNzk3MikKKysrIFdlYktpdC93aW4vV2ViVmlldy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTAsNyArMzkwLDEzIEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCAKICAgICAg
ICAgLyogW2luXSAqLyBCT09MICplbmFibGVkKTsKKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCAKKyAgICAg
ICAgLyogW2luXSAqLyBCT09MIGZsYWcpOwogICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoIAorICAgICAg
ICAvKiBbaW5dICovIEJPT0wgKmVuYWJsZWQpOworCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCggCiAgICAgICAg
IC8qIFtpbl0gKi8gQk9PTCBmbGFnKTsKICAgICAKQEAgLTg1Niw2ICs4NjIsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdW5zaWduZWQgbV9wYWludENvdW50OwogICAgIGJvb2wgbV9oYXNTcGVsbENoZWNr
ZXJEb2N1bWVudFRhZzsKICAgICBib29sIG1fc21hcnRJbnNlcnREZWxldGVFbmFibGVkOworICAg
IGJvb2wgbV9zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOwogICAgIGJvb2wgbV9kaWRD
bG9zZTsKICAgICBib29sIG1faGFzQ3VzdG9tRHJvcFRhcmdldDsKICAgICB1bnNpZ25lZCBtX2lu
SU1FQ29tcG9zaXRpb247CkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXcuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlldy5pZGwJKHJldmlz
aW9uIDM3OTcyKQorKysgV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAxNCw2ICsxMDE0LDE2IEBAIGludGVyZmFjZSBJV2ViVmlld0VkaXRpbmcg
OiBJVW5rbm93bgogICAgICAgICAtICh2b2lkKXNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQ6KEJP
T0wpZmxhZwogICAgICovCiAgICAgSFJFU1VMVCBzZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKEJP
T0wgZW5hYmxlZCk7CisKKyAgICAvKgorICAgICAgICAtICh2b2lkKXNldFNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQ6KEJPT0wpZmxhZzsKKyAgICAqLworICAgIEhSRVNVTFQgc2V0U2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChbaW5dIEJPT0wgZmxhZyk7CisKKyAgICAvKgor
ICAgICAgICAtIChCT09MKXNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7CisgICAgKi8K
KyAgICBIUkVTVUxUIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChbb3V0LCByZXR2
YWxdIEJPT0wqIGVuYWJsZWQpOwogfQogCiAvKgpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gMzgwMDEpCisrKyBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5NSw2ICsyOTUsMTMgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNtYXJ0SW5zZXJ0RGVsZXRl
RQogICAgIHJldHVybiAhIWVuYWJsZWQ7CiB9CiAKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1Nl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodm9pZCkKK3sKKyAgICBCT09MIGVuYWJsZWQg
PSBGQUxTRTsKKyAgICBtX3dlYlZpZXctPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCgmZW5hYmxlZCk7CisgICAgcmV0dXJuICEhZW5hYmxlZDsKK30KKwogYm9vbCBXZWJFZGl0b3JD
bGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3Jl
OjpSYW5nZSosIFdlYkNvcmU6OkVBZmZpbml0eSwgYm9vbCkKIHsgbm90SW1wbGVtZW50ZWQoKTsg
cmV0dXJuIHRydWU7IH0KIApJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCShyZXZpc2lvbiAzNzk3MikKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbihXZWJOb3RpZmljYXRpb24q
KTsKIAogICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CisgICAgYm9vbCBpc1Nl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJDb21t
YW5kRm9yVW5kbyhQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7CiAgICAgdm9pZCBy
ZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsK
SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDM4MDAxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDgtMTAtMzAgIEdsZW5uIFdpbHNvbiAgPGd3
aWxzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NjQzCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdG9nZ2xpbmcg
dGhlICJzZWxlY3QgdHJhaWxpbmcgd2hpdGVzcGFjZSIgZmVhdHVyZQorICAgICAgICBpbiBMYXlv
dXRUZXN0Q29udHJvbGxlciAoc28gbGF5b3V0IHRlc3RzIGNhbiB2ZXJpZnkgdGhpcyBmdW5jdGlv
bmFsaXR5KQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZENhbGxiYWNr
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZCk6CisKIDIwMDgtMTAtMjggIEFscCBUb2tlciAgPGFscEBudWFudGkuY29t
PgogCiAgICAgICAgIEZpeCBHVEsgRFJUIGZvbGxvd2luZyBidWlsZCBicmVha2FnZSBpbiByMzc5
MjguCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAzODAwMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM2LDYg
KzYzNiwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTbWFydEluc2VydERlbGV0ZUVuCiAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1
ZVJlZiBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVz
dENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PExheW91dFRlc3RDb250
cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVy
LT5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKEpTVmFsdWVUb0Jvb2xlYW4oY29u
dGV4dCwgYXJndW1lbnRzWzBdKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxv
YWRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRl
c3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxMYXlvdXRUZXN0Q29u
dHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC03NjAsNiArNzcw
LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7
ICJzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkIiwgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFBvcHVwQmxvY2tpbmdFbmFibGVkIiwgc2V0
UG9wdXBCbG9ja2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQiLCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWRDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
Iiwgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHMiLCBzZXRTdG9wUHJvdmlzaW9u
YWxGcmFtZUxvYWRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0VGFiS2V5Q3ljbGVz
VGhyb3VnaEVsZW1lbnRzIiwgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAic2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUiLCBz
ZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDM4MDAxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0
VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGJvb2wgY3ljbGVzKTsKICAgICB2b2lkIHNldFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sIGZsYWcpOworICAgIHZvaWQgc2V0U2VsZWN0VHJh
aWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0SmF2YVNjcmlw
dFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBwcm9maWxpbmdFbmFibGVkKTsKICAgICB2b2lkIHNldFVz
ZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRVc2Vy
U3R5bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFnKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJl
dmlzaW9uIDM4MDAxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYxLDExIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHQKICAgICBbW1ttYWluRnJhbWUg
d2ViVmlld10gaW5zcGVjdG9yXSBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZDpwcm9maWxp
bmdFbmFibGVkXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VsZWN0VHJh
aWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChib29sIGZsYWcpCit7CisgICAgW1ttYWluRnJhbWUgd2Vi
Vmlld10gc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDpmbGFnXTsKK30KKwogc3Rh
dGljIGNvbnN0IENGVGltZUludGVydmFsIHdhaXRUb0R1bXBXYXRjaGRvZ0ludGVydmFsID0gMTAu
MDsKIAogc3RhdGljIHZvaWQgd2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQoQ0ZSdW5Mb29wVGlt
ZXJSZWYgdGltZXIsIHZvaWQqIGluZm8pCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlz
aW9uIDM4MDAxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ3LDYgKzU0NywxOSBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0CiAgICAgaW5zcGVjdG9yLT5zZXRK
YXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChmbGFnKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChib29sIGZsYWcpCit7
CisgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoZnJhbWUtPndl
YlZpZXcoJndlYlZpZXcpKSkKKyAgICAgICAgcmV0dXJuOworCisJQ09NUHRyPElXZWJWaWV3RWRp
dGluZz4gdmlld0VkaXRpbmc7CisgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5RdWVyeUludGVyZmFj
ZSgmdmlld0VkaXRpbmcpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdmlld0VkaXRpbmctPnNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmxhZyA/IFRSVUUgOiBGQUxTRSk7Cit9
CisKIHN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCB3YWl0VG9EdW1wV2F0Y2hkb2dJbnRlcnZh
bCA9IDEwLjA7CiAKIHN0YXRpYyB2b2lkIHdhaXRVbnRpbERvbmVXYXRjaGRvZ0ZpcmVkKENGUnVu
TG9vcFRpbWVyUmVmIHRpbWVyLCB2b2lkKiBpbmZvKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzgwMDEp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBA
QAorMjAwOC0xMC0zMCAgR2xlbm4gV2lsc29uICA8Z3dpbHNvbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDMKKworICAg
ICAgICBOZXcgdGVzdCBhZGRlZCB0byB2ZXJpZnkgdGhhdCBMYXlvdXRUZXN0Q29udHJvbGxlciBh
bmQgb3RoZXIgY2xpZW50cworICAgICAgICBjYW4gZGlzYWJsZSBzbWFydCBpbnNlcnQvZGVsZXRl
IGFuZCB0b2dnbGUgc2VsZWN0aW9uIG9mIHRyYWlsaW5nIHdoaXRlc3BhY2UKKyAgICAgICAgYXMg
YW4gYWx0ZXJuYXRpdmUuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGlj
ay13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxl
Y3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sOiBBZGRlZC4KKwogMjAwOC0xMC0yOSAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3Vi
bGVjbGljay13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNr
LXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK1Ro
aXMgdGVzdHMgdGhhdCBkb3VibGUtY2xpY2tpbmcgYSB3b3JkIG9uIHRoZSBXaW5kb3dzIHBsYXRm
b3JtIHNlbGVjdHMgdGhlIHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIHdvcmQuICBZb3Ugc2hvdWxkIHNl
ZSB0aGUgd29yZCAiUEFTUyIgYmVsb3cuCisKK1BBU1MKKworCisKSW5kZXg6IExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNl
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3Vi
bGVjbGljay13aGl0ZXNwYWNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChmYWxzZSk7CisgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodHJ1
ZSk7Cit9Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAg
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHByZT4KK1RoaXMgdGVzdHMgdGhhdCBkb3Vi
bGUtY2xpY2tpbmcgYSB3b3JkIG9uIHRoZSBXaW5kb3dzIHBsYXRmb3JtIHNlbGVjdHMgdGhlIHdo
aXRlc3BhY2UgYWZ0ZXIgdGhlIHdvcmQuICBZb3Ugc2hvdWxkIHNlZSB0aGUgd29yZCAiUEFTUyIg
YmVsb3cuCis8cD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKDIwLCAxMCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICBl
dmVudFNlbmRlci5sZWFwRm9yd2FyZCgxKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDApOworICAgICAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMSk7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgdmFyIHNlbCA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgdmFyIHJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCk7Cisg
ICAgICAgIGlmIChyYW5nZS50b1N0cmluZygpICE9ICJUaGlzICIpCisgICAgICAgICAgICBkb2N1
bWVudC53cml0ZSgiRkFJTCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudC53
cml0ZSgiUEFTUyIpOworICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC53cml0ZSgiUEFTUyIp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24878</attachid>
            <date>2008-11-03 18:39:56 -0800</date>
            <delta_ts>2008-11-04 10:05:38 -0800</delta_ts>
            <desc>Possible fix for issue 15643</desc>
            <filename>patch20655-13.txt</filename>
            <type>text/plain</type>
            <size>23058</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODA0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMDgtMTAtMzAgIEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NjQzCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgY2xpZW50cyB0aGF0IHdpc2ggdG8g
ZGlzYWJsZSBzbWFydCBpbnNlcnQvZGVsZXRlCisgICAgICAgIGFuZCBlbmFibGUgdGhlICJ0cmFp
bGluZyB3aGl0ZXNwYWNlIHNlbGVjdGlvbiIgd29yay1hcm91bmQuCisJCisgICAgICAgIFRlc3Rz
OiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLmh0bWwKKworICAgICAg
ICAqIENoYW5nZUxvZzoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uOjppbmNsdWRlVHJhaWxpbmdXaGl0ZXNwYWNlKToK
KyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbi5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpzZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudCk6CisKIDIwMDgtMTAtMzEg
IFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtYW51
YWwgdGVzdHMgdGhhdCBjaGVjayBicmVha3BvaW50cyBvbiBhIGJsb2NrbGVzcyBib2R5IG9mICJm
b3IiIGxvb3BzLgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDM3OTg2KQorKysgV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw2ICsyMTYsMTEgQEAg
Ym9vbCBFZGl0b3I6OmNhblNtYXJ0Q29weU9yRGVsZXRlKCkKICAgICByZXR1cm4gY2xpZW50KCkg
JiYgY2xpZW50KCktPnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpICYmIG1fZnJhbWUtPnNlbGVj
dGlvbkdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5OwogfQogCitib29sIEVkaXRvcjo6
aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gY2xpZW50
KCkgJiYgY2xpZW50KCktPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOworfQor
CiBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpF
RGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtp
bGxSaW5nLCBib29sIGlzVHlwaW5nQWN0aW9uKQogewogICAgIC8vIERlbGV0ZSB0aGUgc2VsZWN0
aW9uLCBpZiB0aGVyZSBpcyBvbmUuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiAzNzk4NikKKysr
IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0b2dnbGVVbmRlcmxpbmUoKTsKICAgICB2b2lkIHNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24pOwogCisgICAgLy8gc21hcnRJbnNl
cnREZWxldGVFbmFibGVkIGFuZCBzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkIGFyZSAK
KyAgICAvLyBtdXR1YWxseSBleGNsdXNpdmUsIG1lYW5pbmcgdGhhdCBlbmFibGluZyBvbmUgd2ls
bCBkaXNhYmxlIHRoZSBvdGhlci4KICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgp
OworICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CiAgICAgCiAg
ICAgLy8gaW50ZXJuYXRpb25hbCB0ZXh0IGlucHV0IGNvbXBvc2l0aW9uCiAgICAgYm9vbCBoYXND
b21wb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpb25Ob2RlOyB9CkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRp
bmcvU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMzc5ODYpCisrKyBXZWJDb3JlL2VkaXRpbmcvU2Vs
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDYgKzE5MywxNCBAQCBib29sIFNlbGVj
dGlvbjo6ZXhwYW5kVXNpbmdHcmFudWxhcml0eShUCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3Zv
aWQgU2VsZWN0aW9uOjphcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UoKQoreworICAgIFZpc2libGVQ
b3NpdGlvbiBlbmQgPSBWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpOworICAgIHdo
aWxlIChlbmQuaXNOb3ROdWxsKCkgJiYgaXNTcGFjZU9yTmV3bGluZShlbmQuY2hhcmFjdGVyQWZ0
ZXIoKSkpCisgICAgICAgIGVuZCA9IGVuZC5uZXh0KCk7CisgICAgbV9lbmQgPSBlbmQuZGVlcEVx
dWl2YWxlbnQoKTsKK30KKwogdm9pZCBTZWxlY3Rpb246OnZhbGlkYXRlKCkKIHsKICAgICAvLyBN
b3ZlIHRoZSBzZWxlY3Rpb24gdG8gcmVuZGVyZWQgcG9zaXRpb25zLCBpZiBwb3NzaWJsZS4KSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Vk
aXRpbmcvU2VsZWN0aW9uLmgJKHJldmlzaW9uIDM3OTg2KQorKysgV2ViQ29yZS9lZGl0aW5nL1Nl
bGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNCYXNlRmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VJc0ZpcnN0OyB9CiAKKyAg
ICB2b2lkIGFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSgpOworCiAgICAgYm9vbCBleHBhbmRVc2lu
Z0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSk7CiAgICAgVGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5KCkgY29uc3QgeyByZXR1cm4gbV9ncmFudWxhcml0eTsgfQogCklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMzc5ODYpCisrKyBXZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKEhUTUxF
bGVtZW50KikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSB7IHJldHVybiBm
YWxzZTsgfQpJbmRleDogV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMzc5ODYpCisrKyBXZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZShIVE1MRWxlbWVudCopID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgPSAwOyAKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpID0gMDsKSW5kZXg6IFdl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAzNzk4NikKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDggQEAgdm9pZCBFdmVudEhh
bmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbQogICAgICAgICBpZiAobmV3U2VsZWN0aW9uLmlz
UmFuZ2UoKSkgewogICAgICAgICAgICAgbV9mcmFtZS0+c2V0U2VsZWN0aW9uR3JhbnVsYXJpdHko
V29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgICAgIG1fYmVnYW5TZWxlY3RpbmdUZXh0ID0gdHJ1
ZTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuZXZlbnQoKS5jbGlja0NvdW50KCkgPT0gMiAmJiBt
X2ZyYW1lLT5lZGl0b3IoKS0+aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpIAor
ICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5hcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UoKTsg
ICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1fZnJhbWUtPnNo
b3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQpJbmRleDogV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MDQ0
KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAwOC0xMC0zMCAgR2xlbm4gV2lsc29uICA8Z3dpbHNvbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDMKKworICAg
ICAgICBBZGRlZCBBUEkgc3VwcG9ydCBmb3IgdGhlICJ0cmFpbGluZyB3aGl0ZXNwYWNlIiB3b3Jr
LWFyb3VuZC4gIFRoaXMgaW5jbHVkZXMgYW4gQVBJcworICAgICAgICB0byBnZXQgYW5kIHNldCB0
aGUgc3RhdGUgb2YgdGhpcyBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlZpZXcgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDpdKToK
KyAgICAgICAgKC1bV2ViVmlldyBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWRdKToK
KyAgICAgICAgKC1bV2ViVmlldyBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDA4LTEwLTMxICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
cgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShy
ZXZpc2lvbiAzNzk3MikKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc21h
cnRJbnNlcnREZWxldGVFbmFibGVkKCk7CisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqKTsgICAg
CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQko
cmV2aXNpb24gMzc5NzIpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIyLDYgKzIyMiwxMSBAQCBib29sIFdlYkVkaXRv
ckNsaWVudDo6c21hcnRJbnNlcnREZWxldGVFCiAgICAgcmV0dXJuIFttX3dlYlZpZXcgc21hcnRJ
bnNlcnREZWxldGVFbmFibGVkXTsKIH0KIAorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIFttX3dlYlZpZXcgaXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkXTsKK30KKwogYm9vbCBXZWJFZGl0b3JDbGll
bnQ6OnNob3VsZEFwcGx5U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIFJhbmdlKiBy
YW5nZSkKIHsKICAgICByZXR1cm4gW1ttX3dlYlZpZXcgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRl
cl0gd2ViVmlldzptX3dlYlZpZXcKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAz
Nzk3MikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNzUsNiArMzc1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgd2ViVmlld0lzT3BlbltdID0gIkF0
IAogICAgIE5TSW50ZWdlciBzcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKIAogICAgIEJPT0wgc21h
cnRJbnNlcnREZWxldGVFbmFibGVkOworICAgIEJPT0wgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZDsKICAgICAgICAgCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIEJP
T0wgZGFzaGJvYXJkQmVoYXZpb3JBbHdheXNTZW5kTW91c2VFdmVudHNUb0FsbFdpbmRvd3M7CkBA
IC0xOTk5LDYgKzIwMDAsMTggQEAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNh
Y2hlKgogICAgIF9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS0+dHJlZSgpLT5jbGVhck5hbWUo
KTsKIH0KIAorLSAodm9pZClzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOihCT09M
KWZsYWcKK3sKKyAgICBfcHJpdmF0ZS0+c2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9
IGZsYWc7CisgICAgaWYgKGZsYWcpCisgICAgICAgIFtzZWxmIHNldFNtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZDpmYWxzZV07Cit9CisKKy0gKEJPT0wpaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkCit7CisgICAgcmV0dXJuIF9wcml2YXRlLT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBfV2ViU2FmZUZvcndhcmRlcgpA
QCAtNDAxMCw2ICs0MDIzLDggQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVz
Y0ZybwogLSAodm9pZClzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ6KEJPT0wpZmxhZwogewog
ICAgIF9wcml2YXRlLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSBmbGFnOworICAgIGlmIChm
bGFnKQorICAgICAgICBbc2VsZiBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOmZh
bHNlXTsKIH0KIAogLSAoQk9PTClzbWFydEluc2VydERlbGV0ZUVuYWJsZWQKSW5kZXg6IFdlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAzNzk3MikKKysrIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsNiArMzkxLDkg
QEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtIChpZClfaW5pdFdpdGhGcmFt
ZTooTlNSZWN0KWYgZnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5T
U3RyaW5nICopZ3JvdXBOYW1lIHVzZXNEb2N1bWVudFZpZXdzOihCT09MKXVzZXNEb2N1bWVudFZp
ZXdzOwogLSAoQk9PTClfdXNlc0RvY3VtZW50Vmlld3M7CiAKKy0gKHZvaWQpc2V0U2VsZWN0VHJh
aWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDooQk9PTClmbGFnOworLSAoQk9PTClpc1NlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQ7CisKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJW
aWV3UHJpbnRpbmdQcml2YXRlKQpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MDQ0KQorKysgV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAwOC0xMC0zMCAg
R2xlbm4gV2lsc29uICA8Z3dpbHNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDMKKworICAgICAgICBBZGRlZCBBUEkg
c3VwcG9ydCBmb3IgdGhlICJ0cmFpbGluZyB3aGl0ZXNwYWNlIiB3b3JrLWFyb3VuZC4gIFRoaXMg
aW5jbHVkZXMgYW4gQVBJcworICAgICAgICB0byBnZXQgYW5kIHNldCB0aGUgc3RhdGUgb2YgdGhp
cyBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgorCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAg
ICAqIEludGVyZmFjZXMvSVdlYlZpZXcuaWRsOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6V2Vi
Vmlldyk6CisgICAgICAgIChXZWJWaWV3OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKToKKyAgICAgICAgKFdlYlZpZXc6OnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQp
OgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAwOC0xMC0zMSAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgLSB0cnkgdG8gZml4IGJ1aWxkCkluZGV4OiBXZWJLaXQv
d2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJl
dmlzaW9uIDM3OTcyKQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjg0LDYgKzI4NCw3IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogLCBtX3RvcExldmVsUGFyZW50
KDApCiAsIG1fZGVsZXRlQmFja2luZ1N0b3JlVGltZXJBY3RpdmUoZmFsc2UpCiAsIG1fdHJhbnNw
YXJlbnQoZmFsc2UpCissIG1fc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSkK
IHsKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKIApAQCAtMzQ4NSw2ICszNDg2LDgg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRTbQogICAgICAgICAvKiBb
aW5dICovIEJPT0wgZmxhZykKIHsKICAgICBtX3NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9ICEh
ZmxhZzsKKyAgICBpZiAobV9zbWFydEluc2VydERlbGV0ZUVuYWJsZWQpCisgICAgICAgIHNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOwogICAgIHJldHVybiBTX09LOwog
fQogICAgIApAQCAtMzQ5NCw3ICszNDk3LDIzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6c21hcnQKICAgICAqZW5hYmxlZCA9IG1fc21hcnRJbnNlcnREZWxldGVFbmFibGVk
ID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwogfQorIAorSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCAK
KyAgICAgICAgLyogW2luXSAqLyBCT09MIGZsYWcpCit7CisgICAgbV9zZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkID0gISFmbGFnOworICAgIGlmIChtX3NlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQpCisgICAgICAgIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChmYWxzZSk7
CisgICAgcmV0dXJuIFNfT0s7Cit9CiAgICAgCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCggCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKK3sKKyAgICAqZW5hYmxlZCA9IG1fc2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA/IFRSVUUgOiBGQUxTRTsKKyAgICByZXR1cm4gU19P
SzsKK30KKwogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoIAogICAgICAgICAvKiBbaW5dICovIEJPT0wgZmxhZykKIHsK
SW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2Vi
Vmlldy5oCShyZXZpc2lvbiAzNzk3MikKKysrIFdlYktpdC93aW4vV2ViVmlldy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTAsNyArMzkwLDEzIEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCAKICAgICAg
ICAgLyogW2luXSAqLyBCT09MICplbmFibGVkKTsKKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCAKKyAgICAg
ICAgLyogW2luXSAqLyBCT09MIGZsYWcpOwogICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoIAorICAgICAg
ICAvKiBbaW5dICovIEJPT0wgKmVuYWJsZWQpOworCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCggCiAgICAgICAg
IC8qIFtpbl0gKi8gQk9PTCBmbGFnKTsKICAgICAKQEAgLTg1Niw2ICs4NjIsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdW5zaWduZWQgbV9wYWludENvdW50OwogICAgIGJvb2wgbV9oYXNTcGVsbENoZWNr
ZXJEb2N1bWVudFRhZzsKICAgICBib29sIG1fc21hcnRJbnNlcnREZWxldGVFbmFibGVkOworICAg
IGJvb2wgbV9zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOwogICAgIGJvb2wgbV9kaWRD
bG9zZTsKICAgICBib29sIG1faGFzQ3VzdG9tRHJvcFRhcmdldDsKICAgICB1bnNpZ25lZCBtX2lu
SU1FQ29tcG9zaXRpb247CkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXcuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlldy5pZGwJKHJldmlz
aW9uIDM3OTcyKQorKysgV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAxNCw2ICsxMDE0LDE2IEBAIGludGVyZmFjZSBJV2ViVmlld0VkaXRpbmcg
OiBJVW5rbm93bgogICAgICAgICAtICh2b2lkKXNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQ6KEJP
T0wpZmxhZwogICAgICovCiAgICAgSFJFU1VMVCBzZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKEJP
T0wgZW5hYmxlZCk7CisKKyAgICAvKgorICAgICAgICAtICh2b2lkKXNldFNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQ6KEJPT0wpZmxhZzsKKyAgICAqLworICAgIEhSRVNVTFQgc2V0U2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChbaW5dIEJPT0wgZmxhZyk7CisKKyAgICAvKgor
ICAgICAgICAtIChCT09MKXNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7CisgICAgKi8K
KyAgICBIUkVTVUxUIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChbb3V0LCByZXR2
YWxdIEJPT0wqIGVuYWJsZWQpOwogfQogCiAvKgpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gMzgwMDEpCisrKyBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5NSw2ICsyOTUsMTMgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNtYXJ0SW5zZXJ0RGVsZXRl
RQogICAgIHJldHVybiAhIWVuYWJsZWQ7CiB9CiAKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1Nl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodm9pZCkKK3sKKyAgICBCT09MIGVuYWJsZWQg
PSBGQUxTRTsKKyAgICBtX3dlYlZpZXctPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCgmZW5hYmxlZCk7CisgICAgcmV0dXJuICEhZW5hYmxlZDsKK30KKwogYm9vbCBXZWJFZGl0b3JD
bGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3Jl
OjpSYW5nZSosIFdlYkNvcmU6OkVBZmZpbml0eSwgYm9vbCkKIHsgbm90SW1wbGVtZW50ZWQoKTsg
cmV0dXJuIHRydWU7IH0KIApJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCShyZXZpc2lvbiAzNzk3MikKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbihXZWJOb3RpZmljYXRpb24q
KTsKIAogICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CisgICAgYm9vbCBpc1Nl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJDb21t
YW5kRm9yVW5kbyhQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7CiAgICAgdm9pZCBy
ZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsK
SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDM4MDQ0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDgtMTAtMzAgIEdsZW5uIFdpbHNvbiAgPGd3
aWxzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NjQzCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgY2hhbmdpbmcg
dGhlICJ0cmFpbGluZyB3aGl0ZXNwYWNlIiB3b3JrLWFyb3VuZAorICAgICAgICBpbiBMYXlvdXRU
ZXN0Q29udHJvbGxlciAoc28gbGF5b3V0IHRlc3RzIGNhbiB2ZXJpZnkgdGhpcyBmdW5jdGlvbmFs
aXR5KQorCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3Rh
dGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQpOgorCiAyMDA4LTEwLTMxICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQnVnIDIxOTk3OiBwcmVwYXJl
LUNoYW5nZUxvZyBzaG91bGQgZmlsdGVyIG91dCBDaGFuZ2VMb2cgZmlsZXMKSW5kZXg6IFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDM4MDAxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzYsNiArNjM2LDE2IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW4KICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFNlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldFNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNb
MF0pKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0
YXRpYyBKU1ZhbHVlUmVmIHNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHNDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTc2MCw2ICs3NzAsNyBAQCBKU1N0YXRpY0Z1
bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgInNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQiLCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQiLCBzZXRQb3B1cEJsb2NraW5nRW5h
YmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZCIsIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAg
ICAgIHsgInNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQiLCBzZXRTZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U3Rv
cFByb3Zpc2lvbmFsRnJhbWVMb2FkcyIsIHNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHNDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMi
LCBzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSIsIHNldFVzZURhc2hib2FyZENv
bXBhdGliaWxpdHlNb2RlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMzgwMDEp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBvcHVw
QmxvY2tpbmdFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRUYWJLZXlDeWNsZXNUaHJv
dWdoRWxlbWVudHMoYm9vbCBjeWNsZXMpOwogICAgIHZvaWQgc2V0U21hcnRJbnNlcnREZWxldGVF
bmFibGVkKGJvb2wgZmxhZyk7CisgICAgdm9pZCBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxl
ZChib29sIHByb2ZpbGluZ0VuYWJsZWQpOwogICAgIHZvaWQgc2V0VXNlRGFzaGJvYXJkQ29tcGF0
aWJpbGl0eU1vZGUoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxl
ZChib29sIGZsYWcpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMzgwMDEpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0SmF2YVNjcmlwdAogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0
b3JdIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkOnByb2ZpbGluZ0VuYWJsZWRdOwogfQog
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRTZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOmZsYWddOworfQorCiBzdGF0aWMgY29uc3QgQ0ZUaW1l
SW50ZXJ2YWwgd2FpdFRvRHVtcFdhdGNoZG9nSW50ZXJ2YWwgPSAxMC4wOwogCiBzdGF0aWMgdm9p
ZCB3YWl0VW50aWxEb25lV2F0Y2hkb2dGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgdm9p
ZCogaW5mbykKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gMzgwMDEpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NDcsNiArNTQ3LDE5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEphdmFTY3JpcHQKICAgICBpbnNwZWN0b3ItPnNldEphdmFTY3JpcHRQcm9maWxp
bmdFbmFibGVkKGZsYWcpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBDT01QdHI8SVdl
YlZpZXc+IHdlYlZpZXc7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykp
KQorICAgICAgICByZXR1cm47CisKKwlDT01QdHI8SVdlYlZpZXdFZGl0aW5nPiB2aWV3RWRpdGlu
ZzsKKyAgICBpZiAoRkFJTEVEKHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ2aWV3RWRpdGluZykp
KQorICAgICAgICByZXR1cm47CisKKyAgICB2aWV3RWRpdGluZy0+c2V0U2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZChmbGFnID8gVFJVRSA6IEZBTFNFKTsKK30KKwogc3RhdGljIGNvbnN0
IENGVGltZUludGVydmFsIHdhaXRUb0R1bXBXYXRjaGRvZ0ludGVydmFsID0gMTAuMDsKIAogc3Rh
dGljIHZvaWQgd2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYgdGlt
ZXIsIHZvaWQqIGluZm8pCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzODA0NCkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA4LTEwLTMwICBH
bGVubiBXaWxzb24gIDxnd2lsc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0MworCisgICAgICAgIE5ldyB0ZXN0IGFk
ZGVkIHRvIHZlcmlmeSB0aGF0IExheW91dFRlc3RDb250cm9sbGVyIGFuZCBvdGhlciBjbGllbnRz
CisgICAgICAgIGNhbiBkaXNhYmxlIHNtYXJ0IGluc2VydC9kZWxldGUgYW5kIGVuYWJsZSBzZWxl
Y3Rpb24gb2YgdHJhaWxpbmcgd2hpdGVzcGFjZQorICAgICAgICBhcyBhIHdvcmthcm91bmQgZm9y
IHNtYXJ0IGluc2VydC9kZWxldGUuCisKKyAgICAgICAgKiBDaGFuZ2VMb2c6CisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2Uu
aHRtbDogQWRkZWQuCisKIDIwMDgtMTAtMzAgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2FyY2lh
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRlZCBhbm90aGVyIGxheW91dCB0ZXN0IGZvciBwcmV2
aW91cyBjaGVjay1pbi4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2st
d2hpdGVzcGFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhp
cyB0ZXN0cyB0aGF0IGRvdWJsZS1jbGlja2luZyBhIHdvcmQgb24gdGhlIFdpbmRvd3MgcGxhdGZv
cm0gc2VsZWN0cyB0aGUgd2hpdGVzcGFjZSBhZnRlciB0aGUgd29yZC4gIFlvdSBzaG91bGQgc2Vl
IHRoZSB3b3JkICJQQVNTIiBiZWxvdy4KKworUEFTUworCisKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2Uu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGZhbHNlKTsKKyAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCh0cnVl
KTsKK30KKzwvc2NyaXB0PgorPHN0eWxlPgorYm9keSB7IG1hcmdpbjogMDsgcGFkZGluZzogMCB9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cHJlPgorVGhpcyB0ZXN0cyB0aGF0IGRvdWJs
ZS1jbGlja2luZyBhIHdvcmQgb24gdGhlIFdpbmRvd3MgcGxhdGZvcm0gc2VsZWN0cyB0aGUgd2hp
dGVzcGFjZSBhZnRlciB0aGUgd29yZC4gIFlvdSBzaG91bGQgc2VlIHRoZSB3b3JkICJQQVNTIiBi
ZWxvdy4KKzxwPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oMjAsIDEwKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgIGV2
ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMCk7CisgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxKTsKKyAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICB2YXIgc2VsID0gd2luZG93Lmdl
dFNlbGVjdGlvbigpOworICAgICAgICB2YXIgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTsKKyAg
ICAgICAgaWYgKHJhbmdlLnRvU3RyaW5nKCkgIT0gIlRoaXMgIikKKyAgICAgICAgICAgIGRvY3Vt
ZW50LndyaXRlKCJGQUlMIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50Lndy
aXRlKCJQQVNTIik7CisgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50LndyaXRlKCJQQVNTIik7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="11401"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24887</attachid>
            <date>2008-11-04 10:05:38 -0800</date>
            <delta_ts>2008-11-04 10:48:19 -0800</delta_ts>
            <desc>Possible patch for issue 15643</desc>
            <filename>patch20655-13.txt</filename>
            <type>text/plain</type>
            <size>23065</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODA0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDgtMTAtMzAgIEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NjQzCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgY2xpZW50cyB0aGF0IHdpc2ggdG8g
ZGlzYWJsZSBzbWFydCBpbnNlcnQvZGVsZXRlCisgICAgICAgIGFuZCBlbmFibGUgdGhlICJ0cmFp
bGluZyB3aGl0ZXNwYWNlIHNlbGVjdGlvbiIgd29yay1hcm91bmQuCisJCisgICAgICAgIFRlc3Rz
OiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLmh0bWwKKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoK
KyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3Rpb246OmluY2x1ZGVUcmFpbGluZ1doaXRlc3BhY2UpOgorICAgICAgICAqIGVkaXRpbmcvU2Vs
ZWN0aW9uLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlFZGl0b3JDbGllbnQ6OnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQp
OgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0
V29yZEZyb21Nb3VzZUV2ZW50KToKKwogMjAwOC0xMC0zMSAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1hbnVhbCB0ZXN0cyB0aGF0IGNoZWNrIGJy
ZWFrcG9pbnRzIG9uIGEgYmxvY2tsZXNzIGJvZHkgb2YgImZvciIgbG9vcHMuCkluZGV4OiBXZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAkocmV2aXNpb24gMzc5ODYpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIxNiwxMSBAQCBib29sIEVkaXRvcjo6Y2FuU21hcnRD
b3B5T3JEZWxldGUoKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+c21hcnRJbnNl
cnREZWxldGVFbmFibGVkKCkgJiYgbV9mcmFtZS0+c2VsZWN0aW9uR3JhbnVsYXJpdHkoKSA9PSBX
b3JkR3JhbnVsYXJpdHk7CiB9CiAKK2Jvb2wgRWRpdG9yOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQoKQoreworICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNTZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7Cit9CisKIGJvb2wgRWRpdG9yOjpkZWxldGVX
aXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb24gZGlyZWN0aW9uLCBU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcsIGJvb2wgaXNUeXBpbmdB
Y3Rpb24pCiB7CiAgICAgLy8gRGVsZXRlIHRoZSBzZWxlY3Rpb24sIGlmIHRoZXJlIGlzIG9uZS4K
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDM3OTg2KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNyArMjE4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IHRvZ2dsZVVuZGVybGluZSgpOwogICAgIHZvaWQgc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3Jp
dGluZ0RpcmVjdGlvbik7CiAKKyAgICAvLyBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQgYW5kIHNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgYXJlIAorICAgIC8vIG11dHVhbGx5IGV4Y2x1
c2l2ZSwgbWVhbmluZyB0aGF0IGVuYWJsaW5nIG9uZSB3aWxsIGRpc2FibGUgdGhlIG90aGVyLgog
ICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CisgICAgYm9vbCBpc1NlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKICAgICAKICAgICAvLyBpbnRlcm5hdGlvbmFsIHRl
eHQgaW5wdXQgY29tcG9zaXRpb24KICAgICBib29sIGhhc0NvbXBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb21wb3NpdGlvbk5vZGU7IH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb24uY3BwCShyZXZp
c2lvbiAzNzk4NikKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTMsNiArMTkzLDE0IEBAIGJvb2wgU2VsZWN0aW9uOjpleHBhbmRVc2luZ0dyYW51
bGFyaXR5KFQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBTZWxlY3Rpb246OmFwcGVuZFRy
YWlsaW5nV2hpdGVzcGFjZSgpCit7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9IFZpc2libGVQ
b3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSk7CisgICAgd2hpbGUgKGVuZC5pc05vdE51bGwoKSAm
JiBpc1NwYWNlT3JOZXdsaW5lKGVuZC5jaGFyYWN0ZXJBZnRlcigpKSkKKyAgICAgICAgZW5kID0g
ZW5kLm5leHQoKTsKKyAgICBtX2VuZCA9IGVuZC5kZWVwRXF1aXZhbGVudCgpOworfQorCiB2b2lk
IFNlbGVjdGlvbjo6dmFsaWRhdGUoKQogewogICAgIC8vIE1vdmUgdGhlIHNlbGVjdGlvbiB0byBy
ZW5kZXJlZCBwb3NpdGlvbnMsIGlmIHBvc3NpYmxlLgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1Nl
bGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb24uaAkocmV2
aXNpb24gMzc5ODYpCisrKyBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Jhc2VGaXJzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFzZUlzRmlyc3Q7IH0KIAorICAgIHZvaWQgYXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlKCk7CisKICAgICBib29sIGV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5KTsKICAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkoKSBj
b25zdCB7IHJldHVybiBtX2dyYW51bGFyaXR5OyB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CShyZXZpc2lvbiAzNzk4NikKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODEsNiArMjgxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREZWxldGVSYW5nZShSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoSFRNTEVsZW1lbnQqKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkgeyB9CiAgICAgdmlydHVhbCBib29sIGlz
R3JhbW1hckNoZWNraW5nRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0VkaXRvckNs
aWVudC5oCShyZXZpc2lvbiAzNzk4NikKKysrIFdlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRT
aG93RGVsZXRlSW50ZXJmYWNlKEhUTUxFbGVtZW50KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
bWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSA9IDA7IAorICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQ29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0b2dn
bGVDb250aW51b3VzU3BlbGxDaGVja2luZygpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkKCkgPSAwOwpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlz
aW9uIDM3OTg2KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5Miw2ICsxOTIsOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdv
cmRGcm9tCiAgICAgICAgIGlmIChuZXdTZWxlY3Rpb24uaXNSYW5nZSgpKSB7CiAgICAgICAgICAg
ICBtX2ZyYW1lLT5zZXRTZWxlY3Rpb25HcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOwogICAg
ICAgICAgICAgbV9iZWdhblNlbGVjdGluZ1RleHQgPSB0cnVlOworICAgICAgICAgICAgaWYgKHJl
c3VsdC5ldmVudCgpLmNsaWNrQ291bnQoKSA9PSAyICYmIG1fZnJhbWUtPmVkaXRvcigpLT5pc1Nl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSkgCisgICAgICAgICAgICAgICAgbmV3U2Vs
ZWN0aW9uLmFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSgpOyAgICAgICAgICAgIAogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAobV9mcmFtZS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5l
d1NlbGVjdGlvbikpCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMzgwNDQpCisrKyBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA4LTEwLTMwICBHbGVubiBX
aWxzb24gIDxnd2lsc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0MworCisgICAgICAgIEFkZGVkIEFQSSBzdXBwb3J0
IGZvciB0aGUgInRyYWlsaW5nIHdoaXRlc3BhY2UiIHdvcmstYXJvdW5kLiAgVGhpcyBpbmNsdWRl
cyBhbiBBUElzCisgICAgICAgIHRvIGdldCBhbmQgc2V0IHRoZSBzdGF0ZSBvZiB0aGlzIGNvbmZp
Z3VyYXRpb24gdmFyaWFibGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06Cisg
ICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQp
OgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGlz
U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IHNl
dFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQ
cml2YXRlLmg6CisKIDIwMDgtMTAtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyCkluZGV4OiBXZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDM3OTcyKQorKysgV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9j
dW1lbnRUYWcoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQo
KTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7
CiAgICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGREZWxldGVSYW5nZShXZWJDb3JlOjpSYW5nZSopOyAgICAKSW5kZXg6IFdlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAzNzk3MikKKysrIFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjIsNiArMjIyLDExIEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzbWFydEluc2VydERl
bGV0ZUUKICAgICByZXR1cm4gW21fd2ViVmlldyBzbWFydEluc2VydERlbGV0ZUVuYWJsZWRdOwog
fQogCitib29sIFdlYkVkaXRvckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKCkKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFj
ZUVuYWJsZWRdOworfQorCiBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShD
U1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgUmFuZ2UqIHJhbmdlKQogewogICAgIHJldHVybiBb
W21fd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldwpJ
bmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDM3OTcyKQorKysgV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3NSw2ICszNzUsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciB3ZWJWaWV3SXNPcGVuW10gPSAiQXQgCiAgICAgTlNJbnRlZ2VyIHNwZWxs
Q2hlY2tlckRvY3VtZW50VGFnOwogCiAgICAgQk9PTCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7
CisgICAgQk9PTCBzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOwogICAgICAgICAKICNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgQk9PTCBkYXNoYm9hcmRCZWhhdmlvckFs
d2F5c1NlbmRNb3VzZUV2ZW50c1RvQWxsV2luZG93czsKQEAgLTE5OTksNiArMjAwMCwxOCBAQCBX
ZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqCiAgICAgX3ByaXZhdGUtPnBh
Z2UtPm1haW5GcmFtZSgpLT50cmVlKCktPmNsZWFyTmFtZSgpOwogfQogCistICh2b2lkKXNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIF9wcml2YXRl
LT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZmxhZzsKKyAgICBpZiAoZmxhZykK
KyAgICAgICAgW3NlbGYgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOmZhbHNlXTsKK30KKwor
LSAoQk9PTClpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQKK3sKKyAgICByZXR1cm4g
X3ByaXZhdGUtPnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7Cit9CisKIEBlbmQKIAog
QGltcGxlbWVudGF0aW9uIF9XZWJTYWZlRm9yd2FyZGVyCkBAIC00MDEwLDYgKzQwMjMsOCBAQCBz
dGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvCiAtICh2b2lkKXNldFNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgX3ByaXZhdGUtPnNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZCA9IGZsYWc7CisgICAgaWYgKGZsYWcpCisgICAgICAgIFtzZWxmIHNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ6ZmFsc2VdOwogfQogCiAtIChCT09MKXNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQ
cml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRl
LmgJKHJldmlzaW9uIDM3OTcyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5MSw2ICszOTEsOSBAQCBDb3VsZCBiZSB3b3J0aCBhZGRp
bmcgdG8gdGhlIEFQSS4KIC0gKGlkKV9pbml0V2l0aEZyYW1lOihOU1JlY3QpZiBmcmFtZU5hbWU6
KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdHJpbmcgKilncm91cE5hbWUgdXNl
c0RvY3VtZW50Vmlld3M6KEJPT0wpdXNlc0RvY3VtZW50Vmlld3M7CiAtIChCT09MKV91c2VzRG9j
dW1lbnRWaWV3czsKIAorLSAodm9pZClzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
OihCT09MKWZsYWc7CistIChCT09MKWlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsK
KwogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdQcmludGluZ1ByaXZhdGUpCklu
ZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gMzgwNDQpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDA4LTEwLTMwICBHbGVubiBXaWxzb24gIDxnd2lsc29u
QGNocm9taXVtLm9yZz4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTY0MworCisgICAgICAgIEFkZGVkIEFQSSBzdXBwb3J0IGZvciB0aGUgInRyYWls
aW5nIHdoaXRlc3BhY2UiIHdvcmstYXJvdW5kLiAgVGhpcyBpbmNsdWRlcyBhbiBBUElzCisgICAg
ICAgIHRvIGdldCBhbmQgc2V0IHRoZSBzdGF0ZSBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gdmFyaWFi
bGUuCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJWaWV3LmlkbDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50
OjpzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYlZpZXc6OldlYlZpZXcpOgorICAgICAgICAoV2ViVmlldzo6c2V0U2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgIChXZWJWaWV3OjpzZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMDgtMTAtMzEgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIC0gdHJ5IHRvIGZpeCBidWlsZApJ
bmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YlZpZXcuY3BwCShyZXZpc2lvbiAzNzk3MikKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4NCw2ICsyODQsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKICwgbV90
b3BMZXZlbFBhcmVudCgwKQogLCBtX2RlbGV0ZUJhY2tpbmdTdG9yZVRpbWVyQWN0aXZlKGZhbHNl
KQogLCBtX3RyYW5zcGFyZW50KGZhbHNlKQorLCBtX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQoZmFsc2UpCiB7CiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKQEAgLTM0
ODUsNiArMzQ4Niw4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0U20K
ICAgICAgICAgLyogW2luXSAqLyBCT09MIGZsYWcpCiB7CiAgICAgbV9zbWFydEluc2VydERlbGV0
ZUVuYWJsZWQgPSAhIWZsYWc7CisgICAgaWYgKG1fc21hcnRJbnNlcnREZWxldGVFbmFibGVkKQor
ICAgICAgICBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNlKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KICAgICAKQEAgLTM0OTQsNyArMzQ5NywyMyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OnNtYXJ0CiAgICAgKmVuYWJsZWQgPSBtX3NtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZCA/IFRSVUUgOiBGQUxTRTsKICAgICByZXR1cm4gU19PSzsKIH0KKyAKK0hS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCggCisgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBmbGFnKQoreworICAgIG1fc2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9ICEhZmxhZzsKKyAgICBpZiAobV9zZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKQorICAgICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoZmFsc2UpOworICAgIHJldHVybiBTX09LOworfQogICAgIAorSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3Ojppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoIAor
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCit7CisgICAgKmVuYWJs
ZWQgPSBtX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgPyBUUlVFIDogRkFMU0U7Cisg
ICAgcmV0dXJuIFNfT0s7Cit9CisKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCAKICAgICAgICAgLyogW2luXSAqLyBC
T09MIGZsYWcpCiB7CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gMzc5NzIpCisrKyBXZWJLaXQvd2luL1dlYlZp
ZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzkwLDcgKzM5MCwxMyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZCggCiAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCAqZW5hYmxlZCk7CisKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCggCisgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBmbGFnKTsKICAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKCAKKyAgICAgICAgLyogW2luXSAqLyBCT09MICplbmFibGVkKTsKKwogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoIAogICAgICAgICAvKiBbaW5dICovIEJPT0wgZmxhZyk7CiAgICAgCkBAIC04NTYsNiArODYy
LDcgQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIG1fcGFpbnRDb3VudDsKICAgICBib29sIG1f
aGFzU3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CiAgICAgYm9vbCBtX3NtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZDsKKyAgICBib29sIG1fc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsKICAg
ICBib29sIG1fZGlkQ2xvc2U7CiAgICAgYm9vbCBtX2hhc0N1c3RvbURyb3BUYXJnZXQ7CiAgICAg
dW5zaWduZWQgbV9pbklNRUNvbXBvc2l0aW9uOwpJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJWaWV3LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZp
ZXcuaWRsCShyZXZpc2lvbiAzNzk3MikKKysrIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmll
dy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwMTQsNiArMTAxNCwxNiBAQCBpbnRlcmZhY2UgSVdl
YlZpZXdFZGl0aW5nIDogSVVua25vd24KICAgICAgICAgLSAodm9pZClzZXRHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkOihCT09MKWZsYWcKICAgICAqLwogICAgIEhSRVNVTFQgc2V0R3JhbW1hckNoZWNr
aW5nRW5hYmxlZChCT09MIGVuYWJsZWQpOworCisgICAgLyoKKyAgICAgICAgLSAodm9pZClzZXRT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOihCT09MKWZsYWc7CisgICAgKi8KKyAgICBI
UkVTVUxUIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoW2luXSBCT09MIGZsYWcp
OworCisgICAgLyoKKyAgICAgICAgLSAoQk9PTClzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkOworICAgICovCisgICAgSFJFU1VMVCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQoW291dCwgcmV0dmFsXSBCT09MKiBlbmFibGVkKTsKIH0KIAogLyoKSW5kZXg6IFdlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDM4MDAx
KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDEzIEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzbWFy
dEluc2VydERlbGV0ZUUKICAgICByZXR1cm4gISFlbmFibGVkOwogfQogCitib29sIFdlYkVkaXRv
ckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKHZvaWQpCit7CisgICAg
Qk9PTCBlbmFibGVkID0gRkFMU0U7CisgICAgbV93ZWJWaWV3LT5pc1NlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQoJmVuYWJsZWQpOworICAgIHJldHVybiAhIWVuYWJsZWQ7Cit9CisKIGJv
b2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNvcmU6OlJh
bmdlKiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFQWZmaW5pdHksIGJvb2wpCiB7IG5vdElt
cGxlbWVudGVkKCk7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMzc5NzIpCisrKyBXZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2
ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb24oV2Vi
Tm90aWZpY2F0aW9uKik7CiAKICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwor
ICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CiAKICAgICB2b2lk
IHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4p
OwogICAgIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFdlYkNvcmU6OkVk
aXRDb21tYW5kPik7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzODA0NCkKKysrIFdlYktpdFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA4LTEwLTMwICBHbGVu
biBXaWxzb24gIDxnd2lsc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0MworCisgICAgICAgIEFkZGVkIHN1cHBvcnQg
Zm9yIGNoYW5naW5nIHRoZSAidHJhaWxpbmcgd2hpdGVzcGFjZSIgd29yay1hcm91bmQKKyAgICAg
ICAgaW4gTGF5b3V0VGVzdENvbnRyb2xsZXIgKHNvIGxheW91dCB0ZXN0cyBjYW4gdmVyaWZ5IHRo
aXMgZnVuY3Rpb25hbGl0eSkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rp
b25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQpOgorCiAyMDA4LTEwLTMxICBEYXZpZCBLaWx6ZXIgIDxk
ZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQnVnIDIxOTk3OiBwcmVwYXJlLUNoYW5nZUxv
ZyBzaG91bGQgZmlsdGVyIG91dCBDaGFuZ2VMb2cgZmlsZXMKSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDM4MDAxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzYsNiArNjM2LDE2IEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW4KICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFNlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7Cisg
ICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1Zh
bHVlUmVmIHNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHNDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSByZWludGVycHJldF9jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2
YXRlKHRoaXNPYmplY3QpKTsKQEAgLTc2MCw2ICs3NzAsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgInNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQiLCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQiLCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCIsIHNl
dFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQiLCBzZXRTZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U3RvcFByb3Zpc2lv
bmFsRnJhbWVMb2FkcyIsIHNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHNDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMiLCBzZXRUYWJL
ZXlDeWNsZXNUaHJvdWdoRWxlbWVudHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRV
c2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSIsIHNldFVzZURhc2hib2FyZENvbXBhdGliaWxp
dHlNb2RlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMzgwMDEpCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBvcHVwQmxvY2tpbmdF
bmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVu
dHMoYm9vbCBjeWNsZXMpOwogICAgIHZvaWQgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJv
b2wgZmxhZyk7CisgICAgdm9pZCBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGJv
b2wgZmxhZyk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIHBy
b2ZpbGluZ0VuYWJsZWQpOwogICAgIHZvaWQgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1v
ZGUoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29sIGZs
YWcpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMzgwMDEpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2MSw2ICsyNjEsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0SmF2YVNjcmlwdAogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0b3JdIHNldEph
dmFTY3JpcHRQcm9maWxpbmdFbmFibGVkOnByb2ZpbGluZ0VuYWJsZWRdOwogfQogCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGJv
b2wgZmxhZykKK3sKKyAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRTZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkOmZsYWddOworfQorCiBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwg
d2FpdFRvRHVtcFdhdGNoZG9nSW50ZXJ2YWwgPSAxMC4wOwogCiBzdGF0aWMgdm9pZCB3YWl0VW50
aWxEb25lV2F0Y2hkb2dGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgdm9pZCogaW5mbykK
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gMzgwMDEpCisrKyBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NDcsNiArNTQ3LDE5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEphdmFTY3JpcHQKICAgICBpbnNwZWN0b3ItPnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVk
KGZsYWcpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBDT01QdHI8SVdlYlZpZXc+IHdl
YlZpZXc7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQorICAgICAg
ICByZXR1cm47CisKKwlDT01QdHI8SVdlYlZpZXdFZGl0aW5nPiB2aWV3RWRpdGluZzsKKyAgICBp
ZiAoRkFJTEVEKHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ2aWV3RWRpdGluZykpKQorICAgICAg
ICByZXR1cm47CisKKyAgICB2aWV3RWRpdGluZy0+c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZChmbGFnID8gVFJVRSA6IEZBTFNFKTsKK30KKwogc3RhdGljIGNvbnN0IENGVGltZUlu
dGVydmFsIHdhaXRUb0R1bXBXYXRjaGRvZ0ludGVydmFsID0gMTAuMDsKIAogc3RhdGljIHZvaWQg
d2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQq
IGluZm8pCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzODA0NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA4LTEwLTMwICBHbGVubiBXaWxz
b24gIDxnd2lsc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0MworCisgICAgICAgIE5ldyB0ZXN0IGFkZGVkIHRvIHZl
cmlmeSB0aGF0IExheW91dFRlc3RDb250cm9sbGVyIGFuZCBvdGhlciBjbGllbnRzCisgICAgICAg
IGNhbiBkaXNhYmxlIHNtYXJ0IGluc2VydC9kZWxldGUgYW5kIGVuYWJsZSBzZWxlY3Rpb24gb2Yg
dHJhaWxpbmcgd2hpdGVzcGFjZQorICAgICAgICBhcyBhIHdvcmthcm91bmQgZm9yIHNtYXJ0IGlu
c2VydC9kZWxldGUuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13
aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rp
b24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sOiBBZGRlZC4KKwogMjAwOC0xMC0zMCAgSnVz
dGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGVkIGFu
b3RoZXIgbGF5b3V0IHRlc3QgZm9yIHByZXZpb3VzIGNoZWNrLWluLgpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2st
d2hpdGVzcGFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3RzIHRoYXQgZG91YmxlLWNsaWNraW5nIGEg
d29yZCBvbiB0aGUgV2luZG93cyBwbGF0Zm9ybSBzZWxlY3RzIHRoZSB3aGl0ZXNwYWNlIGFmdGVy
IHRoZSB3b3JkLiAgWW91IHNob3VsZCBzZWUgdGhlIHdvcmQgIlBBU1MiIGJlbG93LgorCitQQVNT
CisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13
aGl0ZXNwYWNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQoZmFsc2UpOworICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5
IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
cmU+CitUaGlzIHRlc3RzIHRoYXQgZG91YmxlLWNsaWNraW5nIGEgd29yZCBvbiB0aGUgV2luZG93
cyBwbGF0Zm9ybSBzZWxlY3RzIHRoZSB3aGl0ZXNwYWNlIGFmdGVyIHRoZSB3b3JkLiAgWW91IHNo
b3VsZCBzZWUgdGhlIHdvcmQgIlBBU1MiIGJlbG93LgorPHA+Cis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyMCwgMTApOworICAgICAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMSk7CisgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndh
cmQoMTAwKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgIGV2ZW50
U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cisg
ICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIHZhciByYW5n
ZSA9IHNlbC5nZXRSYW5nZUF0KDApOworICAgICAgICBpZiAocmFuZ2UudG9TdHJpbmcoKSAhPSAi
VGhpcyAiKQorICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIkZBSUwiKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIlBBU1MiKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgZG9jdW1lbnQud3JpdGUoIlRoaXMgdGVzdCBpcyBvbmx5IGV4cGVjdGVkIHRvIHBhc3Mgd2hl
biBydW4gaW4gYXV0b21hdGVkIG1vZGUsIHdpdGggYWNjZXNzIHRvIExheW91dFRlc3RDb250cm9s
bGVyLiIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="11408"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>