<?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>37008</bug_id>
          
          <creation_ts>2010-04-01 21:52:55 -0700</creation_ts>
          <short_desc>ScriptController::processingUserGestureEvent returns true for simulated clicks</short_desc>
          <delta_ts>2010-07-23 22:10:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>37046</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>inferno</cc>
    
    <cc>infernosec</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>scarybeasts</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>207652</commentid>
    <comment_count>0</comment_count>
      <attachid>52373</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-01 21:52:55 -0700</bug_when>
    <thetext>Created attachment 52373
test case

FrameLoader::isProcessingUserGesture is used by the various parts of WebCore to prevent scripts from doing things without input from a user, for example open a pop-up window.  This function calls ScriptController::processingUserGestureEvent which only considers the type of the current event, not whether or not it was actually generated by a user gesture.  It is possible to programatically call click() on an HTML button element to open a popup window without an underlying user gesture, as generated by the attached test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207654</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-01 21:53:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/7783498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207720</commentid>
    <comment_count>2</comment_count>
      <attachid>52385</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-01 23:42:52 -0700</bug_when>
    <thetext>Created attachment 52385
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207732</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-04-01 23:57:36 -0700</bug_when>
    <thetext>Attachment 52385 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/1624189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207736</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-02 00:04:33 -0700</bug_when>
    <thetext>Attachment 52385 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1609178</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207743</commentid>
    <comment_count>5</comment_count>
      <attachid>52388</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-02 00:11:42 -0700</bug_when>
    <thetext>Created attachment 52388
patch (v2)

Forgot to add UserGestureState.{h, cpp} to all build systems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207754</commentid>
    <comment_count>6</comment_count>
      <attachid>52388</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-02 00:17:33 -0700</bug_when>
    <thetext>Comment on attachment 52388
patch (v2)

WTFNonHeapAllocatable seems like a totally separate patch for a totally separate bug.  I think this would be much easier to review if you split them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207859</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-02 08:20:53 -0700</bug_when>
    <thetext>Wasn&apos;t this supposed to be fixed in bug 21501 AKA &lt;rdar://problem/4599085&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207862</commentid>
    <comment_count>8</comment_count>
      <attachid>52388</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 08:31:21 -0700</bug_when>
    <thetext>Comment on attachment 52388
patch (v2)

This is great.  I&apos;ve wanted to do this for a while but hadn&apos;t gotten around to it.

Some nits:

+ createdByDOM

I think you can remove this concept now.

+ NonHeapAllocatable.h

You&apos;ve add this header to the xcodeproj but not to the other build systems.  Please add it to all the build systems (except the &quot;pro&quot;, which doesn&apos;t include headers).

As for whether this is fixed, we have more popup blocker bypasses that this either will fix or give us the tools to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207864</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 08:33:31 -0700</bug_when>
    <thetext>Those with Chromium security bug access can see an example here: http://code.google.com/p/chromium/issues/detail?id=34414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207886</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-04-02 09:40:06 -0700</bug_when>
    <thetext> 25         * dom/UserGestureState.cpp: Added.  This class follows the RAAI pattern
 26         to manage a global flag indicating that a user gesture is being
 27         processed.
Don&apos;t you mean &quot;follows the RAII pattern&quot; (Resource Acquisition Is Initialization)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207907</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-04-02 10:12:40 -0700</bug_when>
    <thetext>+namespace WTFNonHeapAllocatable {

You should include the same comment that Noncopyable has to explain why it gets its own namespace.

+class NonHeapAllocatable {

What a mouthful! :)

I guess I don&apos;t have a better idea, though :(.

+        void* operator new(size_t)
+        {
+            ASSERT_NOT_REACHED();
+            return reinterpret_cast&lt;void*&gt;(0xbadbeef);
+        }
+
+        void* operator new[](size_t)
+        {
+            ASSERT_NOT_REACHED();
+            return reinterpret_cast&lt;void*&gt;(0xbadbeef);
+        }

It&apos;s better just to declare these functions, without defining them. That way, if you somehow tricked a compiler into issuing a call to them, linking would still fail. Also, it&apos;s more concise.

You might as well throw in the delete operators for good measure.

 bool Event::fromUserGesture()
 {
-    if (createdByDOM())
+    if (!UserGestureState::isProcessingUserGesture())

This will work, but it leaves the code in a bit of a confusing state. 

A good future cleanup would be for UserGestureState to keep a HashCountedSet of frames that are processing user gestures. Then, instead of asking an event whether it thought it was a user gesture, you could ask UserGestureState whether a given frame was processing a user gesture. That would eliminate the need for things like currentEvent, too.

+        static inline bool isProcessingUserGesture() { return processingUserGesture; }

It&apos;s unfortunate when one thing has two names. Here, the accessor name gets the word &quot;is,&quot; but the variable name doesn&apos;t -- I assume to avoid name conflict. One of the nice benefits of prefixing variable names is that it solves such conflicts. I would recommend renaming processingUserGesture to s_ isProcessingUserGesture.

+    UserGestureState gestureIndicator;

This is another case of one thing having two names. (Is it a &quot;user gesture&quot; or a &quot;gesture?&quot; Is it a &quot;state&quot; or an &quot;indicator?&quot;)

I&apos;d recommend picking one name and using it everywhere. I like &quot;user gesture indicator&quot; or &quot;user gesture record&quot; best, since it&apos;s more specific about both the gesture and the state. (Technically, &quot;state&quot; could be anything, including &quot;nothing&apos;s happening.&quot; So creating an empty &quot;state&quot; doesn&apos;t say as much.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207943</commentid>
    <comment_count>12</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-02 11:02:56 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt;  25         * dom/UserGestureState.cpp: Added.  This class follows the RAAI
&gt; pattern
&gt;  26         to manage a global flag indicating that a user gesture is being
&gt;  27         processed.
&gt; Don&apos;t you mean &quot;follows the RAII pattern&quot; (Resource Acquisition Is
&gt; Initialization)?

Right you are (I always forget that it is &quot;is&quot; not &quot;as&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208082</commentid>
    <comment_count>13</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-02 14:58:02 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 52388 [details])
&gt; WTFNonHeapAllocatable seems like a totally separate patch for a totally
&gt; separate bug.  I think this would be much easier to review if you split them.

Good point, Eric.  See https://bugs.webkit.org/show_bug.cgi?id=37046.  Once that patch lands, I&apos;ll re-post a patch to this bug that addresses Adam&apos;s and Geoff&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208088</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 15:12:19 -0700</bug_when>
    <thetext>Not to nit-pick, but it would be awesome to re-spin this as a generic RAII boolean class via templates.  The user gesture could then be a typedefed instantiation of the template.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208125</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-04-02 16:09:40 -0700</bug_when>
    <thetext>&gt; Not to nit-pick, but it would be awesome to re-spin this as a generic RAII
&gt; boolean class via templates.  The user gesture could then be a typedefed
&gt; instantiation of the template.  :)

Urgh. You could do that. But what&apos;s the benefit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208128</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 16:12:20 -0700</bug_when>
    <thetext>&gt; Urgh. You could do that. But what&apos;s the benefit?

The benefit is that we can write the next RAII boolean in one line of code instead of 78.  The point is mostly that UserGestureState.* has nothing to do with user gestures and can profitably be abstracted into WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208137</commentid>
    <comment_count>17</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-04-02 16:27:54 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Urgh. You could do that. But what&apos;s the benefit?
&gt; 
&gt; The benefit is that we can write the next RAII boolean in one line of code
&gt; instead of 78.  The point is mostly that UserGestureState.* has nothing to do
&gt; with user gestures and can profitably be abstracted into WTF.

Sounds like a reasonable idea, but I think the extra abstraction can be separate from the bugfix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208198</commentid>
    <comment_count>18</comment_count>
      <attachid>52474</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-02 19:54:38 -0700</bug_when>
    <thetext>Created attachment 52474
patch (v3)

Based on discussions with Maciej, I decided that since some common heap allocation scenarios could not be prevented using NonHeapAllocatable, it wasn&apos;t worth indicating and giving a false sense of security.  This patch removes NonHeapAllocatable and also addresses other comments from Adam and Geoff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208201</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-02 20:20:18 -0700</bug_when>
    <thetext>Attachment 52474 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1568187</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208204</commentid>
    <comment_count>20</comment_count>
      <attachid>52474</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 20:43:49 -0700</bug_when>
    <thetext>Comment on attachment 52474
patch (v3)

+ namespace WebCore {

We usually have a blank line under the namespace declaration.

+ static inline bool processingUserGesture() { return s_processingUserGesture; }

No need to declare inline here.

+ #include &lt;new&gt;

Why do we need this here?

Also, please fix the Chromium build failure.  If you were a committer, I would r+ your patch and ask you to fix these things on landing, but as a non-committer, I&apos;m going to ask you to upload a new patch so we can land it using the bot.

Thanks for the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208238</commentid>
    <comment_count>21</comment_count>
      <attachid>52484</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-02 23:21:39 -0700</bug_when>
    <thetext>Created attachment 52484
patch (v4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208239</commentid>
    <comment_count>22</comment_count>
      <attachid>52484</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 23:26:57 -0700</bug_when>
    <thetext>Comment on attachment 52484
patch (v4)

+    public:

^^^ shouldn&apos;t be indented.

+} // namespace WebCore

^^^ blank line before this line.

r=me

I&apos;m happy to land this for you (with these style changes) if you&apos;re tired of re-spinning the patch.  I&apos;m leaving the r? for a bit so that all the EWS bots run on your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208241</commentid>
    <comment_count>23</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-02 23:35:26 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 52484 [details])
&gt; +    public:
&gt; 
&gt; ^^^ shouldn&apos;t be indented.
&gt; 
&gt; +} // namespace WebCore
&gt; 
&gt; ^^^ blank line before this line.
&gt; 
&gt; r=me
&gt; 
&gt; I&apos;m happy to land this for you (with these style changes) if you&apos;re tired of
&gt; re-spinning the patch.  I&apos;m leaving the r? for a bit so that all the EWS bots
&gt; run on your patch.

Sorry about the style bugs :(  If all the EWS bots go green, feel free to land the patch.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208242</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 23:43:40 -0700</bug_when>
    <thetext>&gt; Sorry about the style bugs :(

No problem.  It&apos;s too bad the style bot can&apos;t catch more of these automatically.

&gt; If all the EWS bots go green, feel free to land
&gt; the patch.  Thanks!

Looks like we&apos;re good to go.  I&apos;ll land this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208243</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-03 00:06:17 -0700</bug_when>
    <thetext>Committed r57045: &lt;http://trac.webkit.org/changeset/57045&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208372</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-04 13:13:23 -0700</bug_when>
    <thetext>Looks like this turn a Gtk bot red:
http://build.webkit.org/results/GTK%20Linux%2064-bit%20Release/r57045%20(1733)/fast/events/popup-allowed-from-gesture-initiated-event-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208532</commentid>
    <comment_count>27</comment_count>
    <who name="Inferno">infernosec</who>
    <bug_when>2010-04-05 10:15:50 -0700</bug_when>
    <thetext>*** Bug 34541 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208568</commentid>
    <comment_count>28</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2010-04-05 10:55:19 -0700</bug_when>
    <thetext>The patch does not look to fix the popup blocker bypass here - http://www.securethoughts.com/security/popupbypass/popup.html. any idea why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208574</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 10:59:37 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; The patch does not look to fix the popup blocker bypass here -
&gt; http://www.securethoughts.com/security/popupbypass/popup.html. any idea why.

There are lots of popup blocker bypasses.  This patch adds a tool we can use to fix them.  You&apos;ll probably have to debug the issue.  I bet we&apos;re missing a processingUserGesture check somewhere in this code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208727</commentid>
    <comment_count>30</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-04-05 15:10:31 -0700</bug_when>
    <thetext>I&apos;m just fixing a Chromium-specific bug whereby block preferences don&apos;t necessarily get considered properly. I&apos;ll retest all the window.open() bypasses once I have this change and my change together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208936</commentid>
    <comment_count>31</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-06 00:36:15 -0700</bug_when>
    <thetext>UserGestureIndicator.cpp has non-ASCII characters, quotations around &quot;AS IS&quot;.
They cause a build error on Japanese Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209126</commentid>
    <comment_count>32</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-06 11:03:53 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Looks like this turn a Gtk bot red:
&gt; http://build.webkit.org/results/GTK%20Linux%2064-bit%20Release/r57045%20(1733)/fast/events/popup-allowed-from-gesture-initiated-event-pretty-diff.html

Looks like this was fixed in http://trac.webkit.org/changeset/57052.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209127</commentid>
    <comment_count>33</comment_count>
      <attachid>52652</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-06 11:05:19 -0700</bug_when>
    <thetext>Created attachment 52652
Updated license headers

Updated the license headers in UserGestureIndicator.{h, cpp} to remove non-ASCII characers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209128</commentid>
    <comment_count>34</comment_count>
      <attachid>52652</attachid>
    <who name="">mitz</who>
    <bug_when>2010-04-06 11:11:40 -0700</bug_when>
    <thetext>Comment on attachment 52652
Updated license headers

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209130</commentid>
    <comment_count>35</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-04-06 11:18:31 -0700</bug_when>
    <thetext>Committed attachment 52652 as r57159.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255656</commentid>
    <comment_count>36</comment_count>
      <attachid>52652</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-07-23 22:10:59 -0700</bug_when>
    <thetext>Comment on attachment 52652
Updated license headers

Clearing commit-queue flag to get this out of the commit-queue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>52373</attachid>
            <date>2010-04-01 21:52:55 -0700</date>
            <delta_ts>2010-04-01 21:52:55 -0700</delta_ts>
            <desc>test case</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>631</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">PGh0bWw+DQogICAgPGhlYWQ+DQogICAgICAgIDx0aXRsZT5TaW11bGF0ZWQgQ2xpY2sgRXZlbnQ8
L3RpdGxlPg0KICAgICAgICA8c2NyaXB0Pg0KICAgICAgICAgICAgZnVuY3Rpb24gbG9hZCgpIA0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBsb2FkID0gd2luZG93Lm9wZW4oJ2h0
dHA6Ly93d3cuYXBwbGUuY29tJywnJywnc2Nyb2xsYmFycz1ubyxtZW51YmFyPW5vLGhlaWdodD02
MDAsd2lkdGg9ODAwLHJlc2l6YWJsZT15ZXMsdG9vbGJhcj1ubyxsb2NhdGlvbj1ubyxzdGF0dXM9
bm8nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgPC9zY3JpcHQ+DQogICAgPC9oZWFkPg0KDQog
ICAgPGJvZHk+DQogICAgICANCiAgICA8ZGl2IGlkPSJjb250cm9scyI+DQogICAgICAgIE9wZW4g
bmV3IHdpbmRvdzoNCiAgICAgICAgPGRpdj4NCiAgICAgICAgICAgIDxidXR0b24gaWQ9ImNsaWNr
ZXIiIG9uY2xpY2s9ImxvYWQoKSI+Tm93PC9idXR0b24+DQogICAgICAgIDwvZGl2Pg0KICAgIDwv
ZGl2Pg0KDQogICAgPHNjcmlwdD4NCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Ns
aWNrZXInKS5jbGljaygpOw0KICAgIDwvc2NyaXB0Pg0KICAgIA0KICAgIDwvYm9keT4NCjwvaHRt
bD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52385</attachid>
            <date>2010-04-01 23:42:52 -0700</date>
            <delta_ts>2010-04-02 00:11:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>37008.patch</filename>
            <type>text/plain</type>
            <size>25955</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2OTczKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDQtMDEgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENsYXNzZXMgdGhhdCB3aXNoIHRvIHByb2hpYml0IGNsaWVudHMgZnJv
bSBhbGxvY2F0aW5nIHRoZW0gb24gdGhlIGhlYXAKKyAgICAgICAgY2FuIGV4dGVuZCBOb25IZWFw
QWxsb2NhdGFibGUsIHdoaWNoIHdpbGwgbWFrZSBvcGVyYXRvciBuZXcgYW5kIG9wZXJhdG9yCisg
ICAgICAgIG5ld1tdIHByaXZhdGUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM3MDA4CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9Ob25IZWFwQWxsb2NhdGFibGUuaDog
QWRkZWQuCisgICAgICAgIChXVEZOb25IZWFwQWxsb2NhdGFibGU6Ok5vbkhlYXBBbGxvY2F0YWJs
ZTo6b3BlcmF0b3IgbmV3KToKKyAgICAgICAgKFdURk5vbkhlYXBBbGxvY2F0YWJsZTo6Tm9uSGVh
cEFsbG9jYXRhYmxlOjpvcGVyYXRvciBuZXdbXSk6CisKIDIwMTAtMDQtMDEgIEtpbnVrbyBZYXN1
ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERtaXRyeSBU
aXRvdi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNTY5NzIpCisrKyBKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzEsNiArMTcxLDcgQEAKIAkJMThCQUI1NTQxMERBRTA2NjAwMEQ5NDVCIC8qIFRo
cmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE4QkFCNTI4MTBEQURGQ0QwMDBEOTQ1QiAvKiBUaHJlYWRJZGVu
dGlmaWVyRGF0YVB0aHJlYWRzLmggKi87IH07CiAJCTFDNjE1MTZDMEVCQUM3QTAwMDMxMzc2RiAv
KiBQcm9maWxlclNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDNjE1MTZBMEVCQUM3QTAwMDMxMzc2RiAvKiBQcm9maWxlclNlcnZlci5tbSAq
Lzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLWZuby1zdHJpY3QtYWxpYXNpbmciOyB9
OyB9OwogCQkxQzYxNTE2RDBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjE1MTZCMEVCQUM3
QTAwMDMxMzc2RiAvKiBQcm9maWxlclNlcnZlci5oICovOyB9OworCQkyNTk2QjYxRTExNjU2OTAx
MDA3OTgxM0YgLyogTm9uSGVhcEFsbG9jYXRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNUQ1NUI1QTExNjU2MTFEMDA5NUVBMTQgLyogTm9uSGVh
cEFsbG9jYXRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQz
MTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDEzNTlDRjYwRkREODlD
QjAwMjA2MTgwIC8qIERhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMzU5Q0Y0MEZERDg5Q0IwMDIwNjE4MCAvKiBEYXRlTWF0aC5jcHAg
Ki87IH07CiAJCTQxMzU5Q0Y3MEZERDg5Q0IwMDIwNjE4MCAvKiBEYXRlTWF0aC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzNTlDRjUwRkREODlDQjAw
MjA2MTgwIC8qIERhdGVNYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTY0OCw2ICs2NDksNyBAQAogCQkxQzkwNTE0NTBCQTlFOEE3MDA4MUU5
RDAgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNl
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FBOEI0QTBEMzJDMzlB
MDA0MUJDRkYgLyogSmF2YVNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKYXZhU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUE4QjRCMEQz
MkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Q29yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyNUQ1NUI1QTExNjU2MTFEMDA5NUVBMTQgLyogTm9uSGVhcEFsbG9jYXRhYmxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbkhlYXBBbGxvY2F0YWJsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1OUNGNDBGREQ4OUNCMDAyMDYxODAgLyogRGF0ZU1h
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZU1hdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1OUNGNTBGREQ4OUNCMDAyMDYxODAg
LyogRGF0ZU1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZU1hdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQwQjdBRUQwRkFGN0ZDQjAwNzMzMjNF
IC8qIE93blB0ckNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPd25Q
dHJDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzEsNiArMTMzMyw3
IEBACiAJCQkJNURCRDE4QUYwQzU0MDFBNzAwQzE1RUFFIC8qIE1hbGxvY1pvbmVTdXBwb3J0Lmgg
Ki8sCiAJCQkJQkNGNjU1M0IwQTIwNDhERTAwMzhBMTk0IC8qIE1hdGhFeHRyYXMuaCAqLywKIAkJ
CQlFMUVFNzk4QjBENkNBNTNEMDBGRUEzQkEgLyogTWVzc2FnZVF1ZXVlLmggKi8sCisJCQkJMjVE
NTVCNUExMTY1NjExRDAwOTVFQTE0IC8qIE5vbkhlYXBBbGxvY2F0YWJsZS5oICovLAogCQkJCTkz
MDNGNTY5MDk5MTE5MDAwMEFENzFCOCAvKiBOb25jb3B5YWJsZS5oICovLAogCQkJCUMwQTI3MjNG
MEU1MDlGMUUwMEU5NkUxNSAvKiBOb3RGb3VuZC5oICovLAogCQkJCTkzMDNGNUE0MDk5MTFBNTgw
MEFENzFCOCAvKiBPd25BcnJheVB0ci5oICovLApAQCAtMTkxMyw2ICsxOTE2LDcgQEAKIAkJCQlB
NzZFRTY1OTBGQUU1OUQ1MDAzRjA2OUEgLyogTmF0aXZlRnVuY3Rpb25XcmFwcGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3RUZGMDA2NDBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOb2Rlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMjU5NkI2MUUxMTY1NjkwMTAwNzk4MTNGIC8qIE5vbkhlYXBBbGxvY2F0
YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDAwRTE2RjVDRDAwQjM0NDYwIC8qIE5v
bmNvcHlhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEEyNzI2MzBFNTBBMDYzMDBFOTZFMTUg
LyogTm90Rm91bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQxMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS93dGYvTm9uSGVhcEFsbG9jYXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL05vbkhlYXBBbGxvY2F0YWJsZS5oCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENv
cmUvd3RmL05vbkhlYXBBbGxvY2F0YWJsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2lmbmRlZiBOb25IZWFwQWxsb2NhdGFibGVfaAorI2RlZmluZSBOb25IZWFwQWxs
b2NhdGFibGVfaAorCituYW1lc3BhY2UgV1RGTm9uSGVhcEFsbG9jYXRhYmxlIHsKKworY2xhc3Mg
Tm9uSGVhcEFsbG9jYXRhYmxlIHsKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigweGJhZGJlZWYp
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90KQorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigweGJhZGJlZWYpOworICAgICAgICB9Cit9Owor
fSAvLyBuYW1lc3BhY2UgV1RGTm9uSGVhcEFsbG9jYXRhYmxlCisKK3VzaW5nIFdURk5vbkhlYXBB
bGxvY2F0YWJsZTo6Tm9uSGVhcEFsbG9jYXRhYmxlOworCisjZW5kaWYgLy8gTm9uSGVhcEFsbG9j
YXRhYmxlX2gKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1Njk3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTAtMDQtMDEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBwcmV2aW91cyBtZWNoYW5pc20gZm9yIHRlc3Rpbmcgd2hldGhlciBhbiBldmVudCBp
cyBkdWUgdG8gYSB1c2VyCisgICAgICAgIGdlc3R1cmUgb25seSBjaGVja2VkIHRoZSBldmVudCB0
eXBlLCBub3QgdGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQuICBUaGlzIAorICAgICAgICBhbGxvd2Vk
IHNjcmlwdHMgdG8gZGVmZWF0IHBvcHVwIGJsb2NraW5nIGJ5IHByb2dyYW1hdGljYWxseSBlbWl0
dGluZworICAgICAgICBjZXJ0YWluIHR5cGVzIG9mIGV2ZW50cy4KKworICAgICAgICBDaGFuZ2Ug
dGhlIHVzZXIgZ2VzdHVyZSBkZXRlY3Rpb24gdG8gY2hlY2sgZm9yIGEgZmxhZyB0aGF0IGlzIG9u
bHkgc2V0CisgICAgICAgIHdoZW4gdGhlIGV2ZW50IGluIHF1ZXN0aW9uIHdhcyBnZW5lcmF0ZWQg
dGhyb3VnaCB0aGUgcGxhdGZvcm0gYW5kIG5vdAorICAgICAgICB0aHJvdWdoIHRoZSBET00uCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDA4CisK
KyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL3BvcHVwLWFsbG93ZWQtZnJvbS1nZXN0dXJlLWlu
aXRpYXRlZC1ldmVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9wb3B1cC1ibG9j
a2VkLWZyb20tZmFrZS1idXR0b24tY2xpY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtZm9jdXMuaHRtbAorCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL05vbkhlYXBBbGxvY2F0YWJsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0V2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Ojpmcm9tVXNlckdlc3R1cmUpOiBDaGVjayB0aGUg
c3RhdGUgb2YKKyAgICAgICAgVXNlckdlc3R1cmVTdGF0ZTo6aXNQcm9jZXNzaW5nVXNlckdlc3R1
cmUoKS4KKyAgICAgICAgKiBkb20vVXNlckdlc3R1cmVTdGF0ZS5jcHA6IEFkZGVkLiAgVGhpcyBj
bGFzcyBmb2xsb3dzIHRoZSBSQUFJIHBhdHRlcm4KKyAgICAgICAgdG8gbWFuYWdlIGEgZ2xvYmFs
IGZsYWcgaW5kaWNhdGluZyB0aGF0IGEgdXNlciBnZXN0dXJlIGlzIGJlaW5nCisgICAgICAgIHBy
b2Nlc3NlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJHZXN0dXJlU3RhdGU6OlVzZXJHZXN0dXJl
U3RhdGUpOiBTYXZlIHRoZSBwcmV2aW91cyB2YWx1ZQorICAgICAgICBvZiBwcm9jZXNzaW5nVXNl
ckdlc3R1cmUgYmVmb3JlIHNldHRpbmcgdG8gdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJH
ZXN0dXJlU3RhdGU6On5Vc2VyR2VzdHVyZVN0YXRlKTogUmVzdG9yZQorICAgICAgICBwcm9jZXNz
aW5nVXNlckdlc3R1cmUgdG8gaXRzIHByZXZpb3VzIHZhbHVlLgorICAgICAgICAqIGRvbS9Vc2Vy
R2VzdHVyZVN0YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVTdGF0
ZTo6aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpOiBSZXR1cm4gdGhlIHN0YXRlCisgICAgICAgIG9m
IHRoZSBnbG9iYWwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlIGZsYWcuCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZVByZXNzRXZlbnQpOiBJbnN0YW50aWF0ZSBhCisgICAgICAgIFVzZXJHZXN0dXJlU3RhdGUg
b2JqZWN0IG9uIHRoZSBzdGFjayB0byBpbmRpY2F0ZSBhIHVzZXIgZ2VzdHVyZSBpcyBiZWluZwor
ICAgICAgICBwcm9jZXNzZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRs
ZU1vdXNlRG91YmxlQ2xpY2tFdmVudCk6IFNhbWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogU2FtZS4KKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KTogU2FtZS4KKwogMjAxMC0wNC0wMSAgTHVpeiBBZ29z
dGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL05vbkhlYXBBbGxvY2F0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL05vbkhlYXBBbGxvY2F0YWJsZS5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTm9uSGVhcEFsbG9jYXRhYmxlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9Ob25IZWFwQWxsb2Nh
dGFibGVfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9Ob25IZWFwQWxsb2NhdGFibGVfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL05vbkhlYXBBbGxvY2F0YWJsZS5oPgorI2VuZGlmCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNTY5NjYp
CisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNTU5LDYgKzU1OSw4IEBACiAJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBT
Y3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNEY1NEVBQzEw
MUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRGNTRFQUExMDFGRTkxNDAwMEFFNzQx
IC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCAqLzsgfTsKIAkJMjRGNTRFQUQxMDFGRTkxNDAw
MEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNEY1NEVBQjEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGlj
YXRpb25DYWNoZUhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9Owor
CQkyNUQ1NTlFNzExNjQ2QTdCMDA5NUVBMTQgLyogVXNlckdlc3R1cmVTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjVENTU5RTYxMTY0NkE3QjAw
OTVFQTE0IC8qIFVzZXJHZXN0dXJlU3RhdGUuaCAqLzsgfTsKKwkJMjVENTU5RkExMTY0NkM2MjAw
OTVFQTE0IC8qIFVzZXJHZXN0dXJlU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjVENTU5RjkxMTY0NkM2MjAwOTVFQTE0IC8qIFVzZXJHZXN0
dXJlU3RhdGUuY3BwICovOyB9OwogCQkyOUE4MTIyNjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyOUE4MTIwODBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAgKi87IH07CiAJCTI5QTgxMjI3MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nl
c3NpYmlsaXR5VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjlBODEyMDkwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5j
cHAgKi87IH07CiAJCTI5QTgxMjI4MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjlBODEyMEEwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi87
IH07CkBAIC01OTQ5LDYgKzU5NTEsOCBAQAogCQkyMjhDMjg0NDEwRDgyNTAwMDA5RDBEMEUgLyog
U2NyaXB0V3JhcHBhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dFdyYXBwYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNEY1NEVBQTEwMUZF
OTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyNEY1NEVBQjEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRp
b25DYWNoZUhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGljYXRp
b25DYWNoZUhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjVENTU5RTYxMTY0
NkE3QjAwOTVFQTE0IC8qIFVzZXJHZXN0dXJlU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVXNlckdlc3R1cmVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyNUQ1NTlGOTExNjQ2QzYyMDA5NUVBMTQgLyogVXNlckdlc3R1cmVTdGF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyR2VzdHVyZVN0YXRlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlBODEyMDgwRkJCOUMxRDAwNTEwMjkzIC8q
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5QTgxMjA5MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5
VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJp
bGl0eVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlBODEyMEEwRkJC
OUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyMTMsNiArMTYyMTcsOCBAQAogCQkJCTE0MUI5NEVF
MDlFQzQyNUEwMDBFOTQxMyAvKiBVSUV2ZW50LmlkbCAqLywKIAkJCQk5MzM1NEEzQjBCMjRGOEM5
MDAzRjZERUEgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAgKi8sCiAJCQkJODUwMzFCMzkwQTQ0
RUZDNzAwRjk5MkUwIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuaCAqLywKKwkJCQkyNUQ1NTlGOTEx
NjQ2QzYyMDA5NUVBMTQgLyogVXNlckdlc3R1cmVTdGF0ZS5jcHAgKi8sCisJCQkJMjVENTU5RTYx
MTY0NkE3QjAwOTVFQTE0IC8qIFVzZXJHZXN0dXJlU3RhdGUuaCAqLywKIAkJCQkzMUMwRkYxQjBF
NENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwICovLAogCQkJCTMxQzBG
RjFDMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5oICovLAogCQkJCTMx
QzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5pZGwgKi8sCkBA
IC0xODc2Nyw2ICsxODc3Myw3IEBACiAJCQkJRTQ3NzhCODAxMTVBNTgxQTAwQjVEMzcyIC8qIEpT
Q3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTFCRjAwMTE1RkY2RkIwMDZGNTJD
QSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5OUE1MTUx
MTVGQjMzMDAwRjU2NkUzIC8qIFJlbmRlclNWR1Jlc291cmNlTWFya2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkyNUQ1NTlFNzExNjQ2QTdCMDA5NUVBMTQgLyogVXNlckdlc3R1cmVTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkUzQkJGMDgxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwpAQCAtMjA5ODEsNiArMjA5ODgsNyBAQAogCQkJCTYyQ0QzMjU5MTE1N0U1N0MwMDYzQjBB
NyAvKiBDdXN0b21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDc3OEI3RjExNUE1ODFB
MDBCNUQzNzIgLyogSlNDdXN0b21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDk5QTUx
NDExNUZCMzMwMDBGNTY2RTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMjVENTU5RkExMTY0NkM2MjAwOTVFQTE0IC8qIFVzZXJHZXN0dXJlU3RhdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzQkJGMDcxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiA1Njk3MikKKysrIFdlYkNvcmUvZG9tL0V2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkV2ZW50
LmgiCiAKICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZVN0
YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTIwMyw3ICsyMDQsNyBAQCBib29sIEV2ZW50Ojppc1RvdWNoRXZlbnQoKSBjb25zdAog
CiBib29sIEV2ZW50Ojpmcm9tVXNlckdlc3R1cmUoKQogewotICAgIGlmIChjcmVhdGVkQnlET00o
KSkKKyAgICBpZiAoIVVzZXJHZXN0dXJlU3RhdGU6OmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSA9
IHRoaXMtPnR5cGUoKTsKSW5kZXg6IFdlYkNvcmUvZG9tL1VzZXJHZXN0dXJlU3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1VzZXJHZXN0dXJlU3RhdGUuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9kb20vVXNlckdlc3R1cmVTdGF0ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVT
dGF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgVXNlckdlc3R1cmVTdGF0ZTo6
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlID0gZmFsc2U7CisgICAgCitVc2VyR2VzdHVyZVN0YXRlOjpV
c2VyR2VzdHVyZVN0YXRlKCkKKyAgICA6IG1fcHJldmlvdXNWYWx1ZShwcm9jZXNzaW5nVXNlckdl
c3R1cmUpCit7CisgICAgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlID0gdHJ1ZTsKK30KKyAgICAKK1Vz
ZXJHZXN0dXJlU3RhdGU6On5Vc2VyR2VzdHVyZVN0YXRlKCkKK3sKKyAgICBwcm9jZXNzaW5nVXNl
ckdlc3R1cmUgPSBtX3ByZXZpb3VzVmFsdWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvZG9tL1VzZXJHZXN0dXJlU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9Vc2VyR2VzdHVyZVN0YXRlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9V
c2VyR2VzdHVyZVN0YXRlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVm
IFVzZXJHZXN0dXJlU3RhdGVfaAorI2RlZmluZSBVc2VyR2VzdHVyZVN0YXRlX2gKKworI2luY2x1
ZGUgPHd0Zi9Ob25IZWFwQWxsb2NhdGFibGUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVXNlckdlc3R1cmVTdGF0ZSA6IHB1Ymxp
YyBOb25jb3B5YWJsZSwgcHVibGljIE5vbkhlYXBBbGxvY2F0YWJsZSB7CisgICAgcHVibGljOgor
ICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSB7IHJl
dHVybiBwcm9jZXNzaW5nVXNlckdlc3R1cmU7IH0KKyAgICAgICAgCisgICAgICAgIFVzZXJHZXN0
dXJlU3RhdGUoKTsKKyAgICAgICAgdmlydHVhbCB+VXNlckdlc3R1cmVTdGF0ZSgpOworICAgICAg
ICAKKyAgICBwcml2YXRlOgorICAgICAgICBzdGF0aWMgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1
cmU7CisgICAgICAgIGJvb2wgbV9wcmV2aW91c1ZhbHVlOworfTsgICAgCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVc2VyR2VzdHVyZVN0YXRlX2gKSW5kZXg6IFdlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCShyZXZpc2lvbiA1Njk3MikKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiU2VsZWN0aW9u
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50
LmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVTdGF0ZS5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQu
aCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIiAvLyBmb3IgY29tcGFyZVBvc2l0aW9ucygpCiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0xMTY1LDYgKzExNjYsOCBAQCBzdGF0aWMg
SW50UG9pbnQgZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvCiBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkK
IHsKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS0+dmlldygpKTsKKyAg
ICAKKyAgICBVc2VyR2VzdHVyZVN0YXRlIGdlc3R1cmVJbmRpY2F0b3I7CiAKICAgICBjYW5jZWxG
YWtlTW91c2VNb3ZlRXZlbnQoKTsKICAgICBtX21vdXNlUHJlc3NlZCA9IHRydWU7CkBAIC0xMjk0
LDYgKzEyOTcsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3VibGVDbGlja0V2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKIHsKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90
ZWN0b3IobV9mcmFtZS0+dmlldygpKTsKKyAgICAKKyAgICBVc2VyR2VzdHVyZVN0YXRlIGdlc3R1
cmVJbmRpY2F0b3I7CiAKICAgICAvLyBXZSBnZXQgdGhpcyBpbnN0ZWFkIG9mIGEgc2Vjb25kIG1v
dXNlLXVwIAogICAgIG1fbW91c2VQcmVzc2VkID0gZmFsc2U7CkBAIC0xNDYxLDYgKzE0NjYsOCBA
QCB2b2lkIEV2ZW50SGFuZGxlcjo6aW52YWxpZGF0ZUNsaWNrKCkKIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNl
RXZlbnQpCiB7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUtPnZpZXco
KSk7CisgICAgCisgICAgVXNlckdlc3R1cmVTdGF0ZSBnZXN0dXJlSW5kaWNhdG9yOwogCiAjaWYg
RU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAgaWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkgPT0gTWlk
ZGxlQnV0dG9uKQpAQCAtMjEyMCw2ICsyMTI3LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2
ZW50KGNvbnN0IFBsYXRmbwogICAgIFJlZlB0cjxOb2RlPiBub2RlID0gZXZlbnRUYXJnZXROb2Rl
Rm9yRG9jdW1lbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgVXNlckdlc3R1cmVTdGF0ZSBnZXN0dXJlSW5kaWNh
dG9yOwogCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKICAgICAg
ICAgdmlldy0+cmVzZXREZWZlcnJlZFJlcGFpbnREZWxheSgpOwpAQCAtMjY4Nyw2ICsyNjk2LDgg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29ucwogCiAgICAgY29uc3Qg
VmVjdG9yPFBsYXRmb3JtVG91Y2hQb2ludD4mIHBvaW50cyA9IGV2ZW50LnRvdWNoUG9pbnRzKCk7
CiAgICAgQXRvbWljU3RyaW5nKiBldmVudE5hbWUgPSAwOworICAgIAorICAgIFVzZXJHZXN0dXJl
U3RhdGUgZ2VzdHVyZUluZGljYXRvcjsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
b2ludHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBw
b2ludCA9IHBvaW50c1tpXTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2OTczKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMDEg
IEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzcwMDguCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wb3B1cC1h
bGxvd2VkLWZyb20tZ2VzdHVyZS1pbml0aWF0ZWQtZXZlbnQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtYnV0dG9uLWNsaWNrLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWZv
Y3VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9wdXAtYmxv
Y2tlZC1mcm9tLWZha2UtZXZlbnQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3BvcHVwLWJsb2NrZWQtZnJvbS13aW5kb3ctb3Blbi5odG1sOgorCiAyMDEwLTA0LTAxICBEaXJr
IFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xh
cyBaaW1tZXJtYW5uLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYWxsb3dl
ZC1mcm9tLWdlc3R1cmUtaW5pdGlhdGVkLWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYWxsb3dlZC1mcm9tLWdlc3R1cmUtaW5pdGlhdGVkLWV2
ZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1h
bGxvd2VkLWZyb20tZ2VzdHVyZS1pbml0aWF0ZWQtZXZlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NyBAQAorPGh0bWw+IAorICAgIDxoZWFkPgorICAgICAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMSIg
b25jbGljaz0iYnV0dG9uMSgpIj5DbGljayBIZXJlPC9idXR0b24+CisgICAgICAgIDxidXR0b24g
aWQ9ImJ1dHRvbjIiIG9uY2xpY2s9ImJ1dHRvbjIoKSI+Q2xpY2sgSGVyZSBUb288L2J1dHRvbj4K
KyAgICAgICAgPGJ1dHRvbiBpZD0idGVzdCIgb25jbGljaz0icG9wdXAoKSIgc3R5bGU9ImRpc3Bs
YXk6bm9uZSI+PC9idXR0b24+CisgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8c2NyaXB0PiAKKyAgICAgICAgICAgIHZhciB3aW47CisgICAgICAgICAgICBmdW5jdGlv
biBwb3B1cCgpIHsKKyAgICAgICAgICAgICAgICB3aW4gPSB3aW5kb3cub3BlbigiYWJvdXQ6Ymxh
bmsiLCAiYmxhbmsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoIndpbiIpOwor
ICAgICAgICAgICAgfQorIAorICAgICAgICAgICAgZnVuY3Rpb24gYnV0dG9uMSgpIHsKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmNsaWNrKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGJ1dHRvbjIoKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGNsaWNrRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMi
KTsKKyAgICAgICAgICAgICAgICBjbGlja0V2ZW50LmluaXRNb3VzZUV2ZW50KCJjbGljayIsIHRy
dWUsIHRydWUsIHdpbmRvdywgMCwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIDAsIG51bGwpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0IikuZGlzcGF0Y2hFdmVudChjbGlja0V2ZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0
cnVlKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwLCAxMCk7CisgICAgICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKDEwMCwgMTApOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+IAorICAgIDwvYm9k
eT4gCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2Vk
LWZyb20tZmFrZS1idXR0b24tY2xpY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1idXR0b24tY2xpY2suaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1m
YWtlLWJ1dHRvbi1jbGljay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8aHRt
bD4gCisgICAgPGhlYWQ+CisgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5PgorICAgICAgICA8YnV0dG9uIGlkPSJ0ZXN0IiBvbmNsaWNrPSJwb3B1cCgpIiBzdHls
ZT0iZGlzcGxheTpub25lIj48L2J1dHRvbj4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDxzY3JpcHQ+IAorICAgICAgICAgICAgdmFyIHdpbjsKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHBvcHVwKCkgeworICAgICAgICAgICAgICAgIHdpbiA9IHdpbmRvdy5vcGVuKCJh
Ym91dDpibGFuayIsICJibGFuayIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlVW5kZWZpbmVk
KCJ3aW4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5P
cGVuV2luZG93cygpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENs
b3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKKyAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuY2xpY2soKTsKKworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIDwvc2NyaXB0PiAK
KyAgICA8L2JvZHk+IAorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9w
dXAtYmxvY2tlZC1mcm9tLWZha2UtZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1mb2N1cy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2Ut
Zm9jdXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAg
ICAgICA8dGV4dGFyZWEgaWQ9InRlc3QiIHdpZHRoPSIxMDAiIG9uZm9jdXM9InBvcHVwKCkiIG9u
Ymx1cj0icG9wdXAoKSI+PC90ZXh0YXJlYT4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciB3aW47CisgICAgICAgICAg
ICBmdW5jdGlvbiBwb3B1cCgpIHsKKyAgICAgICAgICAgICAgICB3aW4gPSB3aW5kb3cub3Blbigi
YWJvdXQ6YmxhbmsiLCAiYmxhbmsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVVuZGVmaW5l
ZCgid2luIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2Fu
T3BlbldpbmRvd3MoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRD
bG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmZvY3VzKCk7CisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmJsdXIoKTsKKworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWV2ZW50Lmh0
bWwJKHJldmlzaW9uIDU2OTcyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3B1cC1ibG9ja2VkLWZyb20tZmFrZS1ldmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDYg
KzQsNyBAQAogPHNjcmlwdD4gCiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOwogfQogCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3BvcHVwLWJsb2NrZWQtZnJvbS13aW5kb3ctb3Bl
bi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9w
dXAtYmxvY2tlZC1mcm9tLXdpbmRvdy1vcGVuLmh0bWwJKHJldmlzaW9uIDU2OTcyKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3B1cC1ibG9ja2VkLWZyb20td2luZG93LW9w
ZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKIDxzY3JpcHQ+IAogaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygp
OwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5D
b21wbGV0ZSh0cnVlKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52388</attachid>
            <date>2010-04-02 00:11:42 -0700</date>
            <delta_ts>2010-04-02 19:54:38 -0700</delta_ts>
            <desc>patch (v2)</desc>
            <filename>37008.patch</filename>
            <type>text/plain</type>
            <size>28613</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2OTczKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDQtMDEgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENsYXNzZXMgdGhhdCB3aXNoIHRvIHByb2hpYml0IGNsaWVudHMgZnJv
bSBhbGxvY2F0aW5nIHRoZW0gb24gdGhlIGhlYXAKKyAgICAgICAgY2FuIGV4dGVuZCBOb25IZWFw
QWxsb2NhdGFibGUsIHdoaWNoIHdpbGwgbWFrZSBvcGVyYXRvciBuZXcgYW5kIG9wZXJhdG9yCisg
ICAgICAgIG5ld1tdIHByaXZhdGUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM3MDA4CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9Ob25IZWFwQWxsb2NhdGFibGUuaDog
QWRkZWQuCisgICAgICAgIChXVEZOb25IZWFwQWxsb2NhdGFibGU6Ok5vbkhlYXBBbGxvY2F0YWJs
ZTo6b3BlcmF0b3IgbmV3KToKKyAgICAgICAgKFdURk5vbkhlYXBBbGxvY2F0YWJsZTo6Tm9uSGVh
cEFsbG9jYXRhYmxlOjpvcGVyYXRvciBuZXdbXSk6CisKIDIwMTAtMDQtMDEgIEtpbnVrbyBZYXN1
ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERtaXRyeSBU
aXRvdi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNTY5NzIpCisrKyBKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzEsNiArMTcxLDcgQEAKIAkJMThCQUI1NTQxMERBRTA2NjAwMEQ5NDVCIC8qIFRo
cmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE4QkFCNTI4MTBEQURGQ0QwMDBEOTQ1QiAvKiBUaHJlYWRJZGVu
dGlmaWVyRGF0YVB0aHJlYWRzLmggKi87IH07CiAJCTFDNjE1MTZDMEVCQUM3QTAwMDMxMzc2RiAv
KiBQcm9maWxlclNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDNjE1MTZBMEVCQUM3QTAwMDMxMzc2RiAvKiBQcm9maWxlclNlcnZlci5tbSAq
Lzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLWZuby1zdHJpY3QtYWxpYXNpbmciOyB9
OyB9OwogCQkxQzYxNTE2RDBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjE1MTZCMEVCQUM3
QTAwMDMxMzc2RiAvKiBQcm9maWxlclNlcnZlci5oICovOyB9OworCQkyNTk2QjYxRTExNjU2OTAx
MDA3OTgxM0YgLyogTm9uSGVhcEFsbG9jYXRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNUQ1NUI1QTExNjU2MTFEMDA5NUVBMTQgLyogTm9uSGVh
cEFsbG9jYXRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQz
MTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDEzNTlDRjYwRkREODlD
QjAwMjA2MTgwIC8qIERhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMzU5Q0Y0MEZERDg5Q0IwMDIwNjE4MCAvKiBEYXRlTWF0aC5jcHAg
Ki87IH07CiAJCTQxMzU5Q0Y3MEZERDg5Q0IwMDIwNjE4MCAvKiBEYXRlTWF0aC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzNTlDRjUwRkREODlDQjAw
MjA2MTgwIC8qIERhdGVNYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTY0OCw2ICs2NDksNyBAQAogCQkxQzkwNTE0NTBCQTlFOEE3MDA4MUU5
RDAgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNl
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FBOEI0QTBEMzJDMzlB
MDA0MUJDRkYgLyogSmF2YVNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKYXZhU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUE4QjRCMEQz
MkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Q29yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyNUQ1NUI1QTExNjU2MTFEMDA5NUVBMTQgLyogTm9uSGVhcEFsbG9jYXRhYmxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbkhlYXBBbGxvY2F0YWJsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1OUNGNDBGREQ4OUNCMDAyMDYxODAgLyogRGF0ZU1h
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZU1hdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1OUNGNTBGREQ4OUNCMDAyMDYxODAg
LyogRGF0ZU1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZU1hdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQwQjdBRUQwRkFGN0ZDQjAwNzMzMjNF
IC8qIE93blB0ckNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPd25Q
dHJDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzEsNiArMTMzMyw3
IEBACiAJCQkJNURCRDE4QUYwQzU0MDFBNzAwQzE1RUFFIC8qIE1hbGxvY1pvbmVTdXBwb3J0Lmgg
Ki8sCiAJCQkJQkNGNjU1M0IwQTIwNDhERTAwMzhBMTk0IC8qIE1hdGhFeHRyYXMuaCAqLywKIAkJ
CQlFMUVFNzk4QjBENkNBNTNEMDBGRUEzQkEgLyogTWVzc2FnZVF1ZXVlLmggKi8sCisJCQkJMjVE
NTVCNUExMTY1NjExRDAwOTVFQTE0IC8qIE5vbkhlYXBBbGxvY2F0YWJsZS5oICovLAogCQkJCTkz
MDNGNTY5MDk5MTE5MDAwMEFENzFCOCAvKiBOb25jb3B5YWJsZS5oICovLAogCQkJCUMwQTI3MjNG
MEU1MDlGMUUwMEU5NkUxNSAvKiBOb3RGb3VuZC5oICovLAogCQkJCTkzMDNGNUE0MDk5MTFBNTgw
MEFENzFCOCAvKiBPd25BcnJheVB0ci5oICovLApAQCAtMTkxMyw2ICsxOTE2LDcgQEAKIAkJCQlB
NzZFRTY1OTBGQUU1OUQ1MDAzRjA2OUEgLyogTmF0aXZlRnVuY3Rpb25XcmFwcGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3RUZGMDA2NDBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOb2Rlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMjU5NkI2MUUxMTY1NjkwMTAwNzk4MTNGIC8qIE5vbkhlYXBBbGxvY2F0
YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDAwRTE2RjVDRDAwQjM0NDYwIC8qIE5v
bmNvcHlhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEEyNzI2MzBFNTBBMDYzMDBFOTZFMTUg
LyogTm90Rm91bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQxMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS93dGYvTm9uSGVhcEFsbG9jYXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL05vbkhlYXBBbGxvY2F0YWJsZS5oCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENv
cmUvd3RmL05vbkhlYXBBbGxvY2F0YWJsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2lmbmRlZiBOb25IZWFwQWxsb2NhdGFibGVfaAorI2RlZmluZSBOb25IZWFwQWxs
b2NhdGFibGVfaAorCituYW1lc3BhY2UgV1RGTm9uSGVhcEFsbG9jYXRhYmxlIHsKKworY2xhc3Mg
Tm9uSGVhcEFsbG9jYXRhYmxlIHsKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigweGJhZGJlZWYp
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90KQorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigweGJhZGJlZWYpOworICAgICAgICB9Cit9Owor
fSAvLyBuYW1lc3BhY2UgV1RGTm9uSGVhcEFsbG9jYXRhYmxlCisKK3VzaW5nIFdURk5vbkhlYXBB
bGxvY2F0YWJsZTo6Tm9uSGVhcEFsbG9jYXRhYmxlOworCisjZW5kaWYgLy8gTm9uSGVhcEFsbG9j
YXRhYmxlX2gKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1Njk3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTAtMDQtMDEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBwcmV2aW91cyBtZWNoYW5pc20gZm9yIHRlc3Rpbmcgd2hldGhlciBhbiBldmVudCBp
cyBkdWUgdG8gYSB1c2VyCisgICAgICAgIGdlc3R1cmUgb25seSBjaGVja2VkIHRoZSBldmVudCB0
eXBlLCBub3QgdGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQuICBUaGlzIAorICAgICAgICBhbGxvd2Vk
IHNjcmlwdHMgdG8gZGVmZWF0IHBvcHVwIGJsb2NraW5nIGJ5IHByb2dyYW1hdGljYWxseSBlbWl0
dGluZworICAgICAgICBjZXJ0YWluIHR5cGVzIG9mIGV2ZW50cy4KKworICAgICAgICBDaGFuZ2Ug
dGhlIHVzZXIgZ2VzdHVyZSBkZXRlY3Rpb24gdG8gY2hlY2sgZm9yIGEgZmxhZyB0aGF0IGlzIG9u
bHkgc2V0CisgICAgICAgIHdoZW4gdGhlIGV2ZW50IGluIHF1ZXN0aW9uIHdhcyBnZW5lcmF0ZWQg
dGhyb3VnaCB0aGUgcGxhdGZvcm0gYW5kIG5vdAorICAgICAgICB0aHJvdWdoIHRoZSBET00uCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDA4CisK
KyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL3BvcHVwLWFsbG93ZWQtZnJvbS1nZXN0dXJlLWlu
aXRpYXRlZC1ldmVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9wb3B1cC1ibG9j
a2VkLWZyb20tZmFrZS1idXR0b24tY2xpY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtZm9jdXMuaHRtbAorCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL05vbkhlYXBBbGxvY2F0YWJsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0V2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Ojpmcm9tVXNlckdlc3R1cmUpOiBDaGVjayB0aGUg
c3RhdGUgb2YKKyAgICAgICAgVXNlckdlc3R1cmVTdGF0ZTo6aXNQcm9jZXNzaW5nVXNlckdlc3R1
cmUoKS4KKyAgICAgICAgKiBkb20vVXNlckdlc3R1cmVTdGF0ZS5jcHA6IEFkZGVkLiAgVGhpcyBj
bGFzcyBmb2xsb3dzIHRoZSBSQUFJIHBhdHRlcm4KKyAgICAgICAgdG8gbWFuYWdlIGEgZ2xvYmFs
IGZsYWcgaW5kaWNhdGluZyB0aGF0IGEgdXNlciBnZXN0dXJlIGlzIGJlaW5nCisgICAgICAgIHBy
b2Nlc3NlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJHZXN0dXJlU3RhdGU6OlVzZXJHZXN0dXJl
U3RhdGUpOiBTYXZlIHRoZSBwcmV2aW91cyB2YWx1ZQorICAgICAgICBvZiBwcm9jZXNzaW5nVXNl
ckdlc3R1cmUgYmVmb3JlIHNldHRpbmcgdG8gdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJH
ZXN0dXJlU3RhdGU6On5Vc2VyR2VzdHVyZVN0YXRlKTogUmVzdG9yZQorICAgICAgICBwcm9jZXNz
aW5nVXNlckdlc3R1cmUgdG8gaXRzIHByZXZpb3VzIHZhbHVlLgorICAgICAgICAqIGRvbS9Vc2Vy
R2VzdHVyZVN0YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVTdGF0
ZTo6aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpOiBSZXR1cm4gdGhlIHN0YXRlCisgICAgICAgIG9m
IHRoZSBnbG9iYWwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlIGZsYWcuCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZVByZXNzRXZlbnQpOiBJbnN0YW50aWF0ZSBhCisgICAgICAgIFVzZXJHZXN0dXJlU3RhdGUg
b2JqZWN0IG9uIHRoZSBzdGFjayB0byBpbmRpY2F0ZSBhIHVzZXIgZ2VzdHVyZSBpcyBiZWluZwor
ICAgICAgICBwcm9jZXNzZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRs
ZU1vdXNlRG91YmxlQ2xpY2tFdmVudCk6IFNhbWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogU2FtZS4KKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KTogU2FtZS4KKwogMjAxMC0wNC0wMSAgTHVpeiBBZ29z
dGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5tawo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDU2OTcyKQorKysgV2Vi
Q29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiArMTczLDcgQEAgTE9DQUxf
U1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9tL1RyZWVXYWxrZXIuY3BwIFwK
IAlkb20vVUlFdmVudC5jcHAgXAogCWRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcCBcCisJZG9t
L1VzZXJHZXN0dXJlU3RhdGUuY3BwIFwKIAlkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIFwK
IAlkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBcCiAJZG9tL1doZWVsRXZlbnQuY3BwIFwK
SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb24gNTY5NzIpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC04NjYsNiArODY2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL2RvbS9VSUV2ZW50LmggXAogCVdlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUu
Y3BwIFwKIAlXZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggXAorCVdlYkNvcmUvZG9t
L1VzZXJHZXN0dXJlU3RhdGUuY3BwIFwKKwlXZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZVN0YXRlLmgg
XAogCVdlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBcCiAJV2ViQ29yZS9kb20v
V2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBcCiAJV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2
ZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTY5NzIpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtMTIyNCw2ICsxMjI0LDggQEAKICAgICAgICAgICAgICdkb20v
VUlFdmVudC5oJywKICAgICAgICAgICAgICdkb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAnLAog
ICAgICAgICAgICAgJ2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgnLAorICAgICAgICAgICAgJ2Rv
bS9Vc2VyR2VzdHVyZVN0YXRlLmNwcCcsCisgICAgICAgICAgICAnZG9tL1VzZXJHZXN0dXJlU3Rh
dGUuaCcsCiAgICAgICAgICAgICAnZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9X
ZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNTY5NzIpCisrKyBXZWJD
b3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC01MzgsNiArNTM4LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgZG9tL1RyZWVXYWxrZXIuY3BwIFwKICAgICBkb20vVUlFdmVudC5jcHAgXAog
ICAgIGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcCBcCisgICAgZG9tL1VzZXJHZXN0dXJlU3Rh
dGUuY3BwIFwKICAgICBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIFwKICAgICBkb20vV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBcCiAgICAgZG9tL1doZWVsRXZlbnQuY3BwIFwKQEAgLTEy
NTAsNiArMTI1MSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9UcmVlV2Fsa2VyLmggXAogICAg
IGRvbS9VSUV2ZW50LmggXAogICAgIGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggXAorICAgIGRv
bS9Vc2VyR2VzdHVyZVN0YXRlLmggXAogICAgIGRvbS9XZWJLaXRBbmltYXRpb25FdmVudC5oIFwK
ICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggXAogICAgIGRvbS9XaGVlbEV2ZW50Lmgg
XApJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTm9uSGVhcEFsbG9jYXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTm9uSGVhcEFs
bG9jYXRhYmxlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9Ob25IZWFwQWxsb2NhdGFibGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisjaWZu
ZGVmIFdlYkNvcmVfRldEX05vbkhlYXBBbGxvY2F0YWJsZV9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X05vbkhlYXBBbGxvY2F0YWJsZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTm9uSGVhcEFs
bG9jYXRhYmxlLmg+CisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkocmV2aXNpb24gNTY5NzIpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQ4MSw2ICsyOTQ4MSwxNCBAQAogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cVXNlckdlc3R1
cmVTdGF0ZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxkb21cVXNlckdlc3R1cmVTdGF0ZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFdlYktpdEFuaW1hdGlvbkV2ZW50
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNTY5NjYpCisrKyBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTU5LDYgKzU1OSw4
IEBACiAJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1
MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNEY1NEVBQzEwMUZFOTE0MDAwQUU3NDEgLyogQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjRGNTRFQUExMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcCAqLzsgfTsKIAkJMjRGNTRFQUQxMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNEY1NEVBQjEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQkyNUQ1NTlFNzExNjQ2QTdCMDA5
NUVBMTQgLyogVXNlckdlc3R1cmVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjVENTU5RTYxMTY0NkE3QjAwOTVFQTE0IC8qIFVzZXJHZXN0dXJl
U3RhdGUuaCAqLzsgfTsKKwkJMjVENTU5RkExMTY0NkM2MjAwOTVFQTE0IC8qIFVzZXJHZXN0dXJl
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjVENTU5RjkxMTY0NkM2MjAwOTVFQTE0IC8qIFVzZXJHZXN0dXJlU3RhdGUuY3BwICovOyB9Owog
CQkyOUE4MTIyNjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTIw
ODBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgKi87IH07
CiAJCTI5QTgxMjI3MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBODEyMDkwRkJC
OUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5jcHAgKi87IH07CiAJCTI5QTgxMjI4
MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBODEyMEEwRkJCOUMxRDAwNTEw
MjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi87IH07CkBAIC01OTQ5LDYgKzU5NTEs
OCBAQAogCQkyMjhDMjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFdyYXBwYWJsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyNEY1NEVBQTEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
NEY1NEVBQjEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGljYXRpb25DYWNoZUhvc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjVENTU5RTYxMTY0NkE3QjAwOTVFQTE0IC8qIFVzZXJH
ZXN0dXJlU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckdlc3R1
cmVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNUQ1NTlGOTExNjQ2QzYy
MDA5NUVBMTQgLyogVXNlckdlc3R1cmVTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVc2VyR2VzdHVyZVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjlBODEyMDgwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5QTgx
MjA5MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlBODEyMEEwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vz
c2liaWxpdHlBUklBR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTYyMTMsNiArMTYyMTcsOCBAQAogCQkJCTE0MUI5NEVFMDlFQzQyNUEwMDBFOTQxMyAvKiBV
SUV2ZW50LmlkbCAqLywKIAkJCQk5MzM1NEEzQjBCMjRGOEM5MDAzRjZERUEgLyogVUlFdmVudFdp
dGhLZXlTdGF0ZS5jcHAgKi8sCiAJCQkJODUwMzFCMzkwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZl
bnRXaXRoS2V5U3RhdGUuaCAqLywKKwkJCQkyNUQ1NTlGOTExNjQ2QzYyMDA5NUVBMTQgLyogVXNl
ckdlc3R1cmVTdGF0ZS5jcHAgKi8sCisJCQkJMjVENTU5RTYxMTY0NkE3QjAwOTVFQTE0IC8qIFVz
ZXJHZXN0dXJlU3RhdGUuaCAqLywKIAkJCQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2Vi
S2l0QW5pbWF0aW9uRXZlbnQuY3BwICovLAogCQkJCTMxQzBGRjFDMEU0Q0VCNkUwMDdENkZFNSAv
KiBXZWJLaXRBbmltYXRpb25FdmVudC5oICovLAogCQkJCTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZF
NSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5pZGwgKi8sCkBAIC0xODc2Nyw2ICsxODc3Myw3IEBA
CiAJCQkJRTQ3NzhCODAxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxRTFCRjAwMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRD
b2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5OUE1MTUxMTVGQjMzMDAwRjU2NkUzIC8qIFJl
bmRlclNWR1Jlc291cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyNUQ1NTlFNzExNjQ2
QTdCMDA5NUVBMTQgLyogVXNlckdlc3R1cmVTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUz
QkJGMDgxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMjA5ODEsNiArMjA5
ODgsNyBAQAogCQkJCTYyQ0QzMjU5MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFNDc3OEI3RjExNUE1ODFBMDBCNUQzNzIgLyogSlNDdXN0b21F
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDk5QTUxNDExNUZCMzMwMDBGNTY2RTMgLyog
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjVENTU5RkEx
MTY0NkM2MjAwOTVFQTE0IC8qIFVzZXJHZXN0dXJlU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkUzQkJGMDcxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBX
ZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuY3Bw
CShyZXZpc2lvbiA1Njk3MikKKysrIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAKICNpbmNsdWRlICJBdG9t
aWNTdHJpbmcuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZVN0YXRlLmgiCiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIwMyw3ICsyMDQsNyBA
QCBib29sIEV2ZW50Ojppc1RvdWNoRXZlbnQoKSBjb25zdAogCiBib29sIEV2ZW50Ojpmcm9tVXNl
ckdlc3R1cmUoKQogewotICAgIGlmIChjcmVhdGVkQnlET00oKSkKKyAgICBpZiAoIVVzZXJHZXN0
dXJlU3RhdGU6OmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSA9IHRoaXMtPnR5cGUoKTsKSW5kZXg6
IFdlYkNvcmUvZG9tL1VzZXJHZXN0dXJlU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL1VzZXJHZXN0dXJlU3RhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vVXNl
ckdlc3R1cmVTdGF0ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVTdGF0ZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2Jvb2wgVXNlckdlc3R1cmVTdGF0ZTo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJl
ID0gZmFsc2U7CisgICAgCitVc2VyR2VzdHVyZVN0YXRlOjpVc2VyR2VzdHVyZVN0YXRlKCkKKyAg
ICA6IG1fcHJldmlvdXNWYWx1ZShwcm9jZXNzaW5nVXNlckdlc3R1cmUpCit7CisgICAgcHJvY2Vz
c2luZ1VzZXJHZXN0dXJlID0gdHJ1ZTsKK30KKyAgICAKK1VzZXJHZXN0dXJlU3RhdGU6On5Vc2Vy
R2VzdHVyZVN0YXRlKCkKK3sKKyAgICBwcm9jZXNzaW5nVXNlckdlc3R1cmUgPSBtX3ByZXZpb3Vz
VmFsdWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL1Vz
ZXJHZXN0dXJlU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZVN0
YXRlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZVN0YXRlLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFVzZXJHZXN0dXJlU3RhdGVfaAor
I2RlZmluZSBVc2VyR2VzdHVyZVN0YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9Ob25IZWFwQWxsb2Nh
dGFibGUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgVXNlckdlc3R1cmVTdGF0ZSA6IHB1YmxpYyBOb25jb3B5YWJsZSwgcHVibGlj
IE5vbkhlYXBBbGxvY2F0YWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgaW5saW5l
IGJvb2wgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSB7IHJldHVybiBwcm9jZXNzaW5nVXNlckdl
c3R1cmU7IH0KKyAgICAgICAgCisgICAgICAgIFVzZXJHZXN0dXJlU3RhdGUoKTsKKyAgICAgICAg
dmlydHVhbCB+VXNlckdlc3R1cmVTdGF0ZSgpOworICAgICAgICAKKyAgICBwcml2YXRlOgorICAg
ICAgICBzdGF0aWMgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmU7CisgICAgICAgIGJvb2wgbV9w
cmV2aW91c1ZhbHVlOworfTsgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBVc2VyR2VzdHVyZVN0YXRlX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiA1
Njk3MikKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCisjaW5jbHVkZSAiVXNlckdl
c3R1cmVTdGF0ZS5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJodG1sZWRp
dGluZy5oIiAvLyBmb3IgY29tcGFyZVBvc2l0aW9ucygpCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CkBAIC0xMTY1LDYgKzExNjYsOCBAQCBzdGF0aWMgSW50UG9pbnQgZG9jdW1lbnRQb2lu
dEZvcldpbmRvd1BvCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKIHsKICAgICBSZWZQdHI8RnJhbWVW
aWV3PiBwcm90ZWN0b3IobV9mcmFtZS0+dmlldygpKTsKKyAgICAKKyAgICBVc2VyR2VzdHVyZVN0
YXRlIGdlc3R1cmVJbmRpY2F0b3I7CiAKICAgICBjYW5jZWxGYWtlTW91c2VNb3ZlRXZlbnQoKTsK
ICAgICBtX21vdXNlUHJlc3NlZCA9IHRydWU7CkBAIC0xMjk0LDYgKzEyOTcsOCBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VEb3VibGVDbGlja0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VF
dmVudCkKIHsKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS0+dmlldygp
KTsKKyAgICAKKyAgICBVc2VyR2VzdHVyZVN0YXRlIGdlc3R1cmVJbmRpY2F0b3I7CiAKICAgICAv
LyBXZSBnZXQgdGhpcyBpbnN0ZWFkIG9mIGEgc2Vjb25kIG1vdXNlLXVwIAogICAgIG1fbW91c2VQ
cmVzc2VkID0gZmFsc2U7CkBAIC0xNDYxLDYgKzE0NjYsOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
aW52YWxpZGF0ZUNsaWNrKCkKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VF
dmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiB7CiAgICAgUmVmUHRy
PEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUtPnZpZXcoKSk7CisgICAgCisgICAgVXNlckdl
c3R1cmVTdGF0ZSBnZXN0dXJlSW5kaWNhdG9yOwogCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcp
CiAgICAgaWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKQpAQCAtMjEyMCw2
ICsyMTI3LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwogICAg
IFJlZlB0cjxOb2RlPiBub2RlID0gZXZlbnRUYXJnZXROb2RlRm9yRG9jdW1lbnQobV9mcmFtZS0+
ZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgVXNlckdlc3R1cmVTdGF0ZSBnZXN0dXJlSW5kaWNhdG9yOwogCiAgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgdmlldy0+cmVzZXREZWZlcnJl
ZFJlcGFpbnREZWxheSgpOwpAQCAtMjY4Nyw2ICsyNjk2LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZVRvdWNoRXZlbnQoY29ucwogCiAgICAgY29uc3QgVmVjdG9yPFBsYXRmb3JtVG91Y2hQ
b2ludD4mIHBvaW50cyA9IGV2ZW50LnRvdWNoUG9pbnRzKCk7CiAgICAgQXRvbWljU3RyaW5nKiBl
dmVudE5hbWUgPSAwOworICAgIAorICAgIFVzZXJHZXN0dXJlU3RhdGUgZ2VzdHVyZUluZGljYXRv
cjsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwb2ludHMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwb2ludCA9IHBvaW50c1tpXTsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU2OTczKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMDEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3RzIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzcw
MDguCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wb3B1cC1hbGxvd2VkLWZyb20tZ2VzdHVyZS1p
bml0aWF0ZWQtZXZlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcG9wdXAt
YmxvY2tlZC1mcm9tLWZha2UtYnV0dG9uLWNsaWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWZvY3VzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtZXZlbnQu
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3BvcHVwLWJsb2NrZWQtZnJvbS13
aW5kb3ctb3Blbi5odG1sOgorCiAyMDEwLTA0LTAxICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYWxsb3dlZC1mcm9tLWdlc3R1cmUtaW5pdGlh
dGVkLWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9w
dXAtYWxsb3dlZC1mcm9tLWdlc3R1cmUtaW5pdGlhdGVkLWV2ZW50Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1hbGxvd2VkLWZyb20tZ2VzdHVyZS1p
bml0aWF0ZWQtZXZlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+
IAorICAgIDxoZWFkPgorICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keT4KKyAgICAgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMSIgb25jbGljaz0iYnV0dG9uMSgpIj5D
bGljayBIZXJlPC9idXR0b24+CisgICAgICAgIDxidXR0b24gaWQ9ImJ1dHRvbjIiIG9uY2xpY2s9
ImJ1dHRvbjIoKSI+Q2xpY2sgSGVyZSBUb288L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0i
dGVzdCIgb25jbGljaz0icG9wdXAoKSIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9idXR0b24+Cisg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8c2NyaXB0PiAKKyAgICAg
ICAgICAgIHZhciB3aW47CisgICAgICAgICAgICBmdW5jdGlvbiBwb3B1cCgpIHsKKyAgICAgICAg
ICAgICAgICB3aW4gPSB3aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiLCAiYmxhbmsiKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoIndpbiIpOworICAgICAgICAgICAgfQorIAorICAg
ICAgICAgICAgZnVuY3Rpb24gYnV0dG9uMSgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpLmNsaWNrKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGJ1dHRvbjIoKSB7CisgICAgICAgICAgICAgICAgdmFyIGNsaWNrRXZlbnQg
PSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTsKKyAgICAgICAgICAgICAgICBj
bGlja0V2ZW50LmluaXRNb3VzZUV2ZW50KCJjbGljayIsIHRydWUsIHRydWUsIHdpbmRvdywgMCwg
MCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpOworICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuZGlzcGF0Y2hFdmVudChj
bGlja0V2ZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRD
YW5PcGVuV2luZG93cygpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKKyAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKDEwLCAxMCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwMCwgMTApOwor
ICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+IAorICAgIDwvYm9keT4gCis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1idXR0b24tY2xp
Y2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9j
a2VkLWZyb20tZmFrZS1idXR0b24tY2xpY2suaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWJ1dHRvbi1jbGljay5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8aHRtbD4gCisgICAgPGhlYWQ+CisgICAg
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8YnV0
dG9uIGlkPSJ0ZXN0IiBvbmNsaWNrPSJwb3B1cCgpIiBzdHlsZT0iZGlzcGxheTpub25lIj48L2J1
dHRvbj4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+
IAorICAgICAgICAgICAgdmFyIHdpbjsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBvcHVwKCkgewor
ICAgICAgICAgICAgICAgIHdpbiA9IHdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIsICJibGFuayIp
OworICAgICAgICAgICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCJ3aW4iKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1do
ZW5Db21wbGV0ZSh0cnVlKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0IikuY2xpY2soKTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIDwvc2NyaXB0PiAKKyAgICA8L2JvZHk+IAorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2Ut
Zm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1i
bG9ja2VkLWZyb20tZmFrZS1mb2N1cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtZm9jdXMuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzMSBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8dGV4dGFyZWEgaWQ9InRl
c3QiIHdpZHRoPSIxMDAiIG9uZm9jdXM9InBvcHVwKCkiIG9uYmx1cj0icG9wdXAoKSI+PC90ZXh0
YXJlYT4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKyAgICAgICAgPHNjcmlw
dD4KKyAgICAgICAgICAgIHZhciB3aW47CisgICAgICAgICAgICBmdW5jdGlvbiBwb3B1cCgpIHsK
KyAgICAgICAgICAgICAgICB3aW4gPSB3aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiLCAiYmxhbmsi
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVVuZGVmaW5lZCgid2luIik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NX
aGVuQ29tcGxldGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpLmZvY3VzKCk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdCIpLmJsdXIoKTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9wdXAtYmxvY2tlZC1mcm9tLWZh
a2UtZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWV2ZW50Lmh0bWwJKHJldmlzaW9uIDU2OTcyKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3B1cC1ibG9ja2VkLWZyb20tZmFr
ZS1ldmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogPHNjcmlwdD4gCiBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5k
b3dzKCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dz
V2hlbkNvbXBsZXRlKHRydWUpOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3BvcHVwLWJsb2NrZWQtZnJvbS13aW5kb3ctb3Blbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9wdXAtYmxvY2tlZC1mcm9tLXdpbmRv
dy1vcGVuLmh0bWwJKHJldmlzaW9uIDU2OTcyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3B1cC1ibG9ja2VkLWZyb20td2luZG93LW9wZW4uaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMyw2ICszLDcgQEAKIDxzY3JpcHQ+IAogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwogICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKIH0KIAo=
</data>
<flag name="review"
          id="35857"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52474</attachid>
            <date>2010-04-02 19:54:38 -0700</date>
            <delta_ts>2010-04-02 23:21:39 -0700</delta_ts>
            <desc>patch (v3)</desc>
            <filename>37008.patch</filename>
            <type>text/plain</type>
            <size>25737</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzAzOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTMgQEAKKzIwMTAtMDQtMDIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBw
cmV2aW91cyBtZWNoYW5pc20gZm9yIHRlc3Rpbmcgd2hldGhlciBhbiBldmVudCBpcyBkdWUgdG8g
YSB1c2VyCisgICAgICAgIGdlc3R1cmUgb25seSBjaGVja2VkIHRoZSBldmVudCB0eXBlLCBub3Qg
dGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQuICBUaGlzCisgICAgICAgIGFsbG93ZWQgc2NyaXB0cyB0
byBkZWZlYXQgcG9wdXAgYmxvY2tpbmcgYnkgcHJvZ3JhbWF0aWNhbGx5IGVtaXR0aW5nCisgICAg
ICAgIGNlcnRhaW4gdHlwZXMgb2YgZXZlbnRzLgorCisgICAgICAgIENoYW5nZSB0aGUgdXNlciBn
ZXN0dXJlIGRldGVjdGlvbiB0byBjaGVjayBmb3IgYSBmbGFnIHRoYXQgaXMgb25seSBzZXQKKyAg
ICAgICAgd2hlbiB0aGUgZXZlbnQgaW4gcXVlc3Rpb24gd2FzIGdlbmVyYXRlZCB0aHJvdWdoIHRo
ZSBwbGF0Zm9ybSBhbmQgbm90CisgICAgICAgIHRocm91Z2ggdGhlIERPTS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcwMDgKKworICAgICAgICBU
ZXN0czogZmFzdC9ldmVudHMvcG9wdXAtYWxsb3dlZC1mcm9tLWdlc3R1cmUtaW5pdGlhdGVkLWV2
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1m
YWtlLWJ1dHRvbi1jbGljay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9wb3B1cC1i
bG9ja2VkLWZyb20tZmFrZS1mb2N1cy5odG1sCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOiBBZGQg
VXNlckdlc3R1cmVJbmRpY2F0b3Iue2NwcCwgaH0uCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
IFNhbWUuCisgICAgICAgICogV2ViQ29yZS5neXBpOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUu
cHJvOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBTYW1l
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogU2FtZS4KKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNy
ZWF0ZUV2ZW50KTogUmVtb3ZlIGNhbGwgdG8KKyAgICAgICAgRXZlbnQ6OnNldENyZWF0ZWRCeURP
TSgpLgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6
RXZlbnQpOiBSZW1vdmUgaW5pdGlhbGl6ZXJzIGZvciBtX2NyZWF0ZWRCeURPTS4KKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50Ojpmcm9tVXNlckdlc3R1cmUpOiBDaGVjayB0aGUgdmFsdWUgb2YKKyAg
ICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpLgorICAg
ICAgICAqIGRvbS9FdmVudC5oOiBSZW1vdmUgbV9jcmVhdGVkQnlET00uCisgICAgICAgICogZG9t
L1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2Vy
R2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0b3IpOiBTYXZlIHRoZSBwcmV2aW91
cworICAgICAgICB2YWx1ZSBvZiBzX3Byb2Nlc3NpbmdVc2VyR2VzdHVyZSBiZWZvcmUgc2V0dGlu
ZyBpdCB0byB0cnVlLgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3I6On5V
c2VyR2VzdHVyZUluZGljYXRvcik6IFJlc3RvcmUKKyAgICAgICAgc19wcm9jZXNzaW5nVXNlckdl
c3R1cmUgdG8gaXRzIHByZXZpb3VzIHZhbHVlLgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUlu
ZGljYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9y
Ojpwcm9jZXNzaW5nVXNlckdlc3R1cmUpOiBSZXR1cm4gdGhlIHZhbHVlCisgICAgICAgIG9mIHNf
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KTog
SW5zdGFudGlhdGUgYQorICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBvYmplY3Qgb24gdGhl
IHN0YWNrIHRvIGluZGljYXRlIGEgdXNlciBnZXN0dXJlIGlzCisgICAgICAgIGJlaW5nIHByb2Nl
c3NlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3VibGVD
bGlja0V2ZW50KTogU2FtZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VSZWxlYXNlRXZlbnQpOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjprZXlFdmVudCk6IFNhbWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRs
ZVRvdWNoRXZlbnQpOiBTYW1lLgorCiAyMDEwLTA0LTAyICBOYXlhbiBLdW1hciBLICA8bmF5YW5r
a0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBX
ZWJDb3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9BbmRyb2lkLm1rCShyZXZp
c2lvbiA1NzAyNCkKKysrIFdlYkNvcmUvQW5kcm9pZC5tawkod29ya2luZyBjb3B5KQpAQCAtMTcz
LDYgKzE3Myw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWRv
bS9UcmVlV2Fsa2VyLmNwcCBcCiAJZG9tL1VJRXZlbnQuY3BwIFwKIAlkb20vVUlFdmVudFdpdGhL
ZXlTdGF0ZS5jcHAgXAorCWRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAgXAogCWRvbS9XZWJL
aXRBbmltYXRpb25FdmVudC5jcHAgXAogCWRvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIFwK
IAlkb20vV2hlZWxFdmVudC5jcHAgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA1NzAyNCkKKysrIFdl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTg2Niw2ICs4NjYsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL1VJRXZlbnQuaCBcCiAJV2ViQ29yZS9k
b20vVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAgXAogCVdlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5
U3RhdGUuaCBcCisJV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwIFwKKwlXZWJD
b3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oIFwKIAlXZWJDb3JlL2RvbS9XZWJLaXRBbmlt
YXRpb25FdmVudC5jcHAgXAogCVdlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmggXAog
CVdlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgXApJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDU3MDI0KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEyMjAs
NiArMTIyMCw4IEBACiAgICAgICAgICAgICAnZG9tL1VJRXZlbnQuaCcsCiAgICAgICAgICAgICAn
ZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwJywKICAgICAgICAgICAgICdkb20vVUlFdmVudFdp
dGhLZXlTdGF0ZS5oJywKKyAgICAgICAgICAgICdkb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3Bw
JywKKyAgICAgICAgICAgICdkb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaCcsCiAgICAgICAgICAg
ICAnZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1dlYktp
dEFuaW1hdGlvbkV2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZl
bnQuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNTcwMjQpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3
b3JraW5nIGNvcHkpCkBAIC01MzgsNiArNTM4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL1Ry
ZWVXYWxrZXIuY3BwIFwKICAgICBkb20vVUlFdmVudC5jcHAgXAogICAgIGRvbS9VSUV2ZW50V2l0
aEtleVN0YXRlLmNwcCBcCisgICAgZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcCBcCiAgICAg
ZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBcCiAgICAgZG9tL1dlYktpdFRyYW5zaXRpb25F
dmVudC5jcHAgXAogICAgIGRvbS9XaGVlbEV2ZW50LmNwcCBcCkBAIC0xMjUwLDYgKzEyNTEsNyBA
QCBIRUFERVJTICs9IFwKICAgICBkb20vVHJlZVdhbGtlci5oIFwKICAgICBkb20vVUlFdmVudC5o
IFwKICAgICBkb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oIFwKKyAgICBkb20vVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCBcCiAgICAgZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmggXAogICAgIGRvbS9X
ZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBcCiAgICAgZG9tL1doZWVsRXZlbnQuaCBcCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDU3MDI0KQorKysgV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjk0
ODUsNiArMjk0ODUsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cZG9tXFVzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxVc2VyR2VzdHVy
ZUluZGljYXRvci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCINCiAJCQkJPg0KIAkJCTwv
RmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNTcwMjQpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTU5LDYgKzU1OSw4IEBACiAJCTIyOEMyODQ1MTBEODI1
MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRX
cmFwcGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkyNEY1NEVBQzEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRGNTRFQUEx
MDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCAqLzsgfTsKIAkJMjRG
NTRFQUQxMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNEY1NEVBQjEwMUZFOTE0MDAw
QUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9ICgpOyB9OyB9OworCQkyNTQyRjREQTExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1cmVJ
bmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjU0MkY0RDgxMTY2QzI1QTAwRTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcCAq
LzsgfTsKKwkJMjU0MkY0REIxMTY2QzI1QTAwRTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNTQyRjRE
OTExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1cmVJbmRpY2F0b3IuaCAqLzsgfTsKIAkJMjlB
ODEyMjYwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBODEyMDgwRkJC
OUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovOyB9OwogCQky
OUE4MTIyNzBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QTgxMjA5MEZCQjlDMUQw
MDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGUuY3BwICovOyB9OwogCQkyOUE4MTIyODBGQkI5
QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QTgxMjBBMEZCQjlDMUQwMDUxMDI5MyAv
KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICovOyB9OwpAQCAtNTk1Miw2ICs1OTU0LDggQEAK
IAkJMjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRXcmFwcGFibGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMjRGNTRFQUExMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjRGNTRF
QUIxMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTI1NDJGNEQ4MTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVy
ZUluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2Vy
R2VzdHVyZUluZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI1NDJG
NEQ5MTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyR2VzdHVyZUluZGljYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyOUE4MTIwODBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjlBODEyMDkwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUE4MTIwQTBGQkI5QzFEMDA1MTAy
OTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjIyMiw2ICsxNjIyNiw4IEBACiAJCQkJMTQxQjk0RUUwOUVDNDI1QTAw
MEU5NDEzIC8qIFVJRXZlbnQuaWRsICovLAogCQkJCTkzMzU0QTNCMEIyNEY4QzkwMDNGNkRFQSAv
KiBVSUV2ZW50V2l0aEtleVN0YXRlLmNwcCAqLywKIAkJCQk4NTAzMUIzOTBBNDRFRkM3MDBGOTky
RTAgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5oICovLAorCQkJCTI1NDJGNEQ4MTE2NkMyNUEwMEU4
OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRvci5jcHAgKi8sCisJCQkJMjU0MkY0RDkxMTY2QzI1
QTAwRTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNhdG9yLmggKi8sCiAJCQkJMzFDMEZGMUIwRTRD
RUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYx
QzBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMw
RkYxRDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsICovLApAQCAt
MTg3NzksNiArMTg3ODUsNyBAQAogCQkJCTJFM0JCRjA4MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlE
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTUyNTM1MzExNjQxQjM0MDBDQUJGMDAgLyogRmlsZVRo
cmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdDMDc4NTAxMTY1RDVCRTAwM0EzMkVGIC8qIFN1
ZmZpeFRyZWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTI1NDJGNERCMTE2NkMyNUEwMEU4OUE4NiAv
KiBVc2VyR2VzdHVyZUluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDk5NCw2ICsyMTAw
MSw3IEBACiAJCQkJODQ5OUE1MTQxMTVGQjMzMDAwRjU2NkUzIC8qIFJlbmRlclNWR1Jlc291cmNl
TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFM0JCRjA3MTE2MkRBMTEwMEI5NDA5QSAv
KiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5NTI1MzUyMTE2NDFCMzQwMENBQkYwMCAv
KiBGaWxlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI1NDJGNERBMTE2NkMyNUEwMEU4
OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDU3MDI0KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDYxLDEwICszMDYxLDkgQEAgUGFzc1JlZlB0cjxFdmVudD4gRG9jdW1l
bnQ6OmNyZWF0ZUV2ZW50KAogICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiVG91Y2hFdmVudCIp
CiAgICAgICAgIGV2ZW50ID0gVG91Y2hFdmVudDo6Y3JlYXRlKCk7CiAjZW5kaWYKLSAgICBpZiAo
ZXZlbnQpIHsKLSAgICAgICAgZXZlbnQtPnNldENyZWF0ZWRCeURPTSh0cnVlKTsKKyAgICBpZiAo
ZXZlbnQpCiAgICAgICAgIHJldHVybiBldmVudC5yZWxlYXNlKCk7Ci0gICAgfQorCiAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFdlYkNvcmUvZG9t
L0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHJldmlzaW9u
IDU3MDI0KQorKysgV2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2
ICsyNCw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKIAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5o
IgorI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDcgKzM3LDYgQEAgRXZlbnQ6
OkV2ZW50KCkKICAgICAsIG1fZGVmYXVsdFByZXZlbnRlZChmYWxzZSkKICAgICAsIG1fZGVmYXVs
dEhhbmRsZWQoZmFsc2UpCiAgICAgLCBtX2NhbmNlbEJ1YmJsZShmYWxzZSkKLSAgICAsIG1fY3Jl
YXRlZEJ5RE9NKGZhbHNlKQogICAgICwgbV9ldmVudFBoYXNlKDApCiAgICAgLCBtX2N1cnJlbnRU
YXJnZXQoMCkKICAgICAsIG1fY3JlYXRlVGltZShzdGF0aWNfY2FzdDxET01UaW1lU3RhbXA+KGN1
cnJlbnRUaW1lKCkgKiAxMDAwLjApKQpAQCAtNTIsNyArNTIsNiBAQCBFdmVudDo6RXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5CiAgICAgLCBtX2RlZmF1bHRQcmV2ZW50ZWQoZmFsc2Up
CiAgICAgLCBtX2RlZmF1bHRIYW5kbGVkKGZhbHNlKQogICAgICwgbV9jYW5jZWxCdWJibGUoZmFs
c2UpCi0gICAgLCBtX2NyZWF0ZWRCeURPTShmYWxzZSkKICAgICAsIG1fZXZlbnRQaGFzZSgwKQog
ICAgICwgbV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBtX2NyZWF0ZVRpbWUoc3RhdGljX2Nhc3Q8
RE9NVGltZVN0YW1wPihjdXJyZW50VGltZSgpICogMTAwMC4wKSkKQEAgLTIwMyw3ICsyMDIsNyBA
QCBib29sIEV2ZW50Ojppc1RvdWNoRXZlbnQoKSBjb25zdAogCiBib29sIEV2ZW50Ojpmcm9tVXNl
ckdlc3R1cmUoKQogewotICAgIGlmIChjcmVhdGVkQnlET00oKSkKKyAgICBpZiAoIVVzZXJHZXN0
dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlID0gdGhpcy0+dHlwZSgpOwpJbmRl
eDogV2ViQ29yZS9kb20vRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5o
CShyZXZpc2lvbiA1NzAyNCkKKysrIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1OCw5ICsxNTgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVh
bCBDbGlwYm9hcmQqIGNsaXBib2FyZCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgICAgICBi
b29sIGNyZWF0ZWRCeURPTSgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZEJ5RE9NOyB9Ci0gICAg
ICAgIHZvaWQgc2V0Q3JlYXRlZEJ5RE9NKGJvb2wgY3JlYXRlZEJ5RE9NKSB7IG1fY3JlYXRlZEJ5
RE9NID0gY3JlYXRlZEJ5RE9NOyB9Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV2ZW50KCk7
CiAgICAgICAgIEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSk7CkBAIC0xNzksOSArMTc2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIG1fZGVmYXVsdEhhbmRsZWQ7CiAgICAgICAgIGJvb2wgbV9jYW5jZWxC
dWJibGU7CiAKLSAgICAgICAgLy8gV2hldGhlciB0aGlzIGV2ZW50IHdhcyBjcmVhdGVkIGJ5IGRv
Y3VtZW50LmNyZWF0ZUV2ZW50KCkuCi0gICAgICAgIGJvb2wgbV9jcmVhdGVkQnlET007Ci0KICAg
ICAgICAgdW5zaWduZWQgc2hvcnQgbV9ldmVudFBoYXNlOwogICAgICAgICBFdmVudFRhcmdldCog
bV9jdXJyZW50VGFyZ2V0OwogICAgICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0OwpJ
bmRleDogV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAg
ICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg4oCcQVMgSVPigJ0gQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQor
ICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJV
c2VyR2VzdHVyZUluZGljYXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgVXNl
ckdlc3R1cmVJbmRpY2F0b3I6OnNfcHJvY2Vzc2luZ1VzZXJHZXN0dXJlID0gZmFsc2U7CisKK1Vz
ZXJHZXN0dXJlSW5kaWNhdG9yOjpVc2VyR2VzdHVyZUluZGljYXRvcigpCisgICAgOiBtX3ByZXZp
b3VzVmFsdWUoc19wcm9jZXNzaW5nVXNlckdlc3R1cmUpCit7CisgICAgc19wcm9jZXNzaW5nVXNl
ckdlc3R1cmUgPSB0cnVlOworfQorCitVc2VyR2VzdHVyZUluZGljYXRvcjo6flVzZXJHZXN0dXJl
SW5kaWNhdG9yKCkKK3sKKyAgICBzX3Byb2Nlc3NpbmdVc2VyR2VzdHVyZSA9IG1fcHJldmlvdXNW
YWx1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Vc2VyR2VzdHVy
ZUluZGljYXRvci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMg4oCcQVMgSVPigJ0gQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVXNlckdlc3R1cmVJbmRpY2F0b3JfaAorI2RlZmluZSBVc2VyR2VzdHVyZUluZGljYXRv
cl9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgVXNlckdlc3R1cmVJbmRpY2F0b3IgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIGlubGluZSBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpIHsgcmV0dXJuIHNfcHJvY2Vzc2luZ1VzZXJHZXN0dXJlOyB9CisgICAgICAgIAorICAgICAg
ICBVc2VyR2VzdHVyZUluZGljYXRvcigpOworICAgICAgICB+VXNlckdlc3R1cmVJbmRpY2F0b3Io
KTsKKyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgc3RhdGljIGJvb2wgc19wcm9jZXNz
aW5nVXNlckdlc3R1cmU7CisgICAgICAgIGJvb2wgbV9wcmV2aW91c1ZhbHVlOworfTsgICAgCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVc2VyR2VzdHVyZUluZGljYXRvcl9o
CkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gNTcwMjQpCisrKyBXZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQAogI2lu
Y2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlRleHRFdmVudC5oIgorI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAj
aW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiIC8vIGZvciBj
b21wYXJlUG9zaXRpb25zKCkKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTgzLDYg
Kzg0LDggQEAKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgPG5l
dz4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpA
QCAtMTE2NSw3ICsxMTY4LDkgQEAgc3RhdGljIEludFBvaW50IGRvY3VtZW50UG9pbnRGb3JXaW5k
b3dQbwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiB7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJv
dGVjdG9yKG1fZnJhbWUtPnZpZXcoKSk7Ci0KKyAgICAKKyAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yOworICAgIAogICAgIGNhbmNlbEZha2VNb3VzZU1vdmVFdmVudCgp
OwogICAgIG1fbW91c2VQcmVzc2VkID0gdHJ1ZTsKICAgICBtX2NhcHR1cmVzRHJhZ2dpbmcgPSB0
cnVlOwpAQCAtMTI5NCw2ICsxMjk5LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
UHJlc3NFdmVudAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiB7CiAgICAgUmVmUHRyPEZy
YW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUtPnZpZXcoKSk7CisgICAgCisgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcjsKIAogICAgIC8vIFdlIGdldCB0aGlzIGluc3Rl
YWQgb2YgYSBzZWNvbmQgbW91c2UtdXAgCiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKQEAg
LTE0NjEsNiArMTQ2OCw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjppbnZhbGlkYXRlQ2xpY2soKQog
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgbW91c2VFdmVudCkKIHsKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0
b3IobV9mcmFtZS0+dmlldygpKTsKKyAgICAKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0
dXJlSW5kaWNhdG9yOwogCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAgaWYgKG1vdXNl
RXZlbnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKQpAQCAtMjEyMCw2ICsyMTI5LDggQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwogICAgIFJlZlB0cjxOb2RlPiBu
b2RlID0gZXZlbnRUYXJnZXROb2RlRm9yRG9jdW1lbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAg
ICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcjsKIAogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcg
PSBtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgIHZpZXctPnJlc2V0RGVmZXJyZWRSZXBhaW50RGVs
YXkoKTsKQEAgLTI2ODcsNiArMjY5OCw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3Vj
aEV2ZW50KGNvbnMKIAogICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybVRvdWNoUG9pbnQ+JiBwb2lu
dHMgPSBldmVudC50b3VjaFBvaW50cygpOwogICAgIEF0b21pY1N0cmluZyogZXZlbnROYW1lID0g
MDsKKyAgICAKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yOwogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBvaW50cy5zaXplKCk7ICsraSkgewogICAgICAg
ICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50ID0gcG9pbnRzW2ldOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNTcwMzkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0wMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dHMgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzAwOC4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3BvcHVwLWFsbG93ZWQtZnJvbS1nZXN0dXJlLWluaXRpYXRl
ZC1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3BvcHVw
LWFsbG93ZWQtZnJvbS1nZXN0dXJlLWluaXRpYXRlZC1ldmVudC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1idXR0b24tY2xpY2stZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZy
b20tZmFrZS1idXR0b24tY2xpY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
cG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtZm9jdXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1mb2N1cy5odG1sOiBBZGRl
ZC4KKwogMjAxMC0wNC0wMiAgQW5kcmV3IFNjaGVya3VzICA8c2NoZXJrdXNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbiBhbmQgRXJpYyBTZWlkZWwuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1hbGxvd2VkLWZyb20tZ2VzdHVyZS1p
bml0aWF0ZWQtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3BvcHVwLWFsbG93ZWQtZnJvbS1nZXN0dXJlLWluaXRpYXRlZC1ldmVudC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1h
bGxvd2VkLWZyb20tZ2VzdHVyZS1pbml0aWF0ZWQtZXZlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQgQEAKK0NsaWNrIEhlcmUgIENsaWNrIEhlcmUgVG9vCitQQVNTIHdp
biBpcyBub24tbnVsbC4KK1BBU1Mgd2luIGlzIG5vbi1udWxsLgorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9wb3B1cC1hbGxvd2VkLWZyb20tZ2VzdHVyZS1pbml0aWF0ZWQtZXZlbnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1hbGxvd2Vk
LWZyb20tZ2VzdHVyZS1pbml0aWF0ZWQtZXZlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWFsbG93ZWQtZnJvbS1nZXN0dXJlLWluaXRpYXRlZC1l
dmVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACis8aHRtbD4gCisgICAgPGhl
YWQ+CisgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAg
ICAgICA8YnV0dG9uIGlkPSJidXR0b24xIiBvbmNsaWNrPSJidXR0b24xKCkiPkNsaWNrIEhlcmU8
L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMiIgb25jbGljaz0iYnV0dG9uMigp
Ij5DbGljayBIZXJlIFRvbzwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIGlkPSJ0ZXN0IiBvbmNs
aWNrPSJwb3B1cCgpIiBzdHlsZT0iZGlzcGxheTpub25lIj48L2J1dHRvbj4KKyAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+IAorICAgICAgICAgICAgdmFy
IHdpbjsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBvcHVwKCkgeworICAgICAgICAgICAgICAgIHdp
biA9IHdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIsICJibGFuayIpOworICAgICAgICAgICAgICAg
IHNob3VsZEJlTm9uTnVsbCgid2luIik7CisgICAgICAgICAgICB9CisgCisgICAgICAgICAgICBm
dW5jdGlvbiBidXR0b24xKCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0IikuY2xpY2soKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gYnV0dG9uMigpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2xpY2tFdmVudCA9IGRvY3VtZW50
LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpOworICAgICAgICAgICAgICAgIGNsaWNrRXZlbnQu
aW5pdE1vdXNlRXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAwLCAwLCAwLCAwLCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7CisgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKS5kaXNwYXRjaEV2ZW50KGNsaWNrRXZlbnQp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5k
b3dzKCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2xvc2VSZW1h
aW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOworICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMTAsIDEwKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAwLCAxMCk7CisgICAgICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4gCisgICAgPC9ib2R5PiAKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWJ1dHRvbi1jbGljay1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tl
ZC1mcm9tLWZha2UtYnV0dG9uLWNsaWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWJ1dHRvbi1jbGlj
ay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorRkFJTCB3aW4gc2hv
dWxkIGJlIHVuZGVmaW5lZC4gV2FzIFtvYmplY3QgRE9NV2luZG93XQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1idXR0b24tY2xpY2suaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZy
b20tZmFrZS1idXR0b24tY2xpY2suaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWJ1dHRvbi1jbGljay5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8aHRtbD4gCisgICAgPGhlYWQ+CisgICAgICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8YnV0dG9uIGlk
PSJ0ZXN0IiBvbmNsaWNrPSJwb3B1cCgpIiBzdHlsZT0iZGlzcGxheTpub25lIj48L2J1dHRvbj4K
KyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+IAorICAg
ICAgICAgICAgdmFyIHdpbjsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBvcHVwKCkgeworICAgICAg
ICAgICAgICAgIHdpbiA9IHdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIsICJibGFuayIpOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCJ3aW4iKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21w
bGV0ZSh0cnVlKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0IikuY2xpY2soKTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIDwvc2NyaXB0PiAKKyAgICA8L2JvZHk+IAorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtZm9jdXMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVw
LWJsb2NrZWQtZnJvbS1mYWtlLWZvY3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWZvY3VzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisKK0ZBSUwgd2luIHNob3VsZCBi
ZSB1bmRlZmluZWQuIFdhcyBbb2JqZWN0IERPTVdpbmRvd10KK0ZBSUwgd2luIHNob3VsZCBiZSB1
bmRlZmluZWQuIFdhcyBbb2JqZWN0IERPTVdpbmRvd10KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtZm9jdXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1mb2N1cy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tl
ZC1mcm9tLWZha2UtZm9jdXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5PgorICAgICAgICA8dGV4dGFyZWEgaWQ9InRlc3QiIHdpZHRoPSIxMDAiIG9uZm9jdXM9
InBvcHVwKCkiIG9uYmx1cj0icG9wdXAoKSI+PC90ZXh0YXJlYT4KKyAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciB3aW47
CisgICAgICAgICAgICBmdW5jdGlvbiBwb3B1cCgpIHsKKyAgICAgICAgICAgICAgICB3aW4gPSB3
aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiLCAiYmxhbmsiKTsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZVVuZGVmaW5lZCgid2luIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmZv
Y3VzKCk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmJsdXIo
KTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="35974"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="35975"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52484</attachid>
            <date>2010-04-02 23:21:39 -0700</date>
            <delta_ts>2010-04-02 23:44:00 -0700</delta_ts>
            <desc>patch (v4)</desc>
            <filename>37008.patch</filename>
            <type>text/plain</type>
            <size>26709</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzA0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMTAtMDQtMDIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBw
cmV2aW91cyBtZWNoYW5pc20gZm9yIHRlc3Rpbmcgd2hldGhlciBhbiBldmVudCB3YXMgZHVlIHRv
IGEgdXNlcgorICAgICAgICBnZXN0dXJlIG9ubHkgY2hlY2tlZCB0aGUgZXZlbnQgdHlwZSwgbm90
IHRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50LiAgVGhpcworICAgICAgICBhbGxvd2VkIHNjcmlwdHMg
dG8gZGVmZWF0IHBvcHVwIGJsb2NraW5nIGJ5IHByb2dyYW1hdGljYWxseSBlbWl0dGluZworICAg
ICAgICBjZXJ0YWluIHR5cGVzIG9mIGV2ZW50cy4KKworICAgICAgICBDaGFuZ2UgdGhlIHVzZXIg
Z2VzdHVyZSBkZXRlY3Rpb24gdG8gY2hlY2sgZm9yIGEgZmxhZyB0aGF0IGlzIG9ubHkgc2V0Cisg
ICAgICAgIHdoZW4gdGhlIGV2ZW50IGluIHF1ZXN0aW9uIHdhcyBnZW5lcmF0ZWQgdGhyb3VnaCB0
aGUgcGxhdGZvcm0gYW5kIG5vdAorICAgICAgICB0aHJvdWdoIHRoZSBET00uCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDA4CisKKyAgICAgICAg
VGVzdHM6IGZhc3QvZXZlbnRzL3BvcHVwLWFsbG93ZWQtZnJvbS1nZXN0dXJlLWluaXRpYXRlZC1l
dmVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20t
ZmFrZS1idXR0b24tY2xpY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvcG9wdXAt
YmxvY2tlZC1mcm9tLWZha2UtZm9jdXMuaHRtbAorCisgICAgICAgICogQW5kcm9pZC5tazogQWRk
IFVzZXJHZXN0dXJlSW5kaWNhdG9yLntjcHAsIGh9LgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogU2FtZS4KKyAgICAgICAgKiBXZWJDb3Jl
LnBybzogU2FtZS4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogU2Ft
ZS4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFNhbWUuCisg
ICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUpOiBDaGVjayB0aGUg
dmFsdWUgb2YKKyAgICAgICAgVXNlckdlc3VyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKCkuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpjcmVhdGVFdmVudCk6IFJlbW92ZSBjYWxsIHRvCisgICAgICAgIEV2ZW50OjpzZXRD
cmVhdGVkQnlET00oKS4KKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnQ6OkV2ZW50KTogUmVtb3ZlIGluaXRpYWxpemVycyBmb3IgbV9jcmVhdGVkQnlET00u
CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6ZnJvbVVzZXJHZXN0dXJlKTogQ2hlY2sgdGhlIHZh
bHVlIG9mCisgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1
cmUoKS4KKyAgICAgICAgKiBkb20vRXZlbnQuaDogUmVtb3ZlIG1fY3JlYXRlZEJ5RE9NLgorICAg
ICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9yKTogU2F2ZSB0
aGUgcHJldmlvdXMKKyAgICAgICAgdmFsdWUgb2Ygc19wcm9jZXNzaW5nVXNlckdlc3R1cmUgYmVm
b3JlIHNldHRpbmcgaXQgdG8gdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5k
aWNhdG9yOjp+VXNlckdlc3R1cmVJbmRpY2F0b3IpOiBSZXN0b3JlCisgICAgICAgIHNfcHJvY2Vz
c2luZ1VzZXJHZXN0dXJlIHRvIGl0cyBwcmV2aW91cyB2YWx1ZS4KKyAgICAgICAgKiBkb20vVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVy
ZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTogUmV0dXJuIHRoZSB2YWx1ZQorICAg
ICAgICBvZiBzX3Byb2Nlc3NpbmdVc2VyR2VzdHVyZS4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFu
ZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJl
c3NFdmVudCk6IEluc3RhbnRpYXRlIGEKKyAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3Igb2Jq
ZWN0IG9uIHRoZSBzdGFjayB0byBpbmRpY2F0ZSBhIHVzZXIgZ2VzdHVyZSBpcworICAgICAgICBi
ZWluZyBwcm9jZXNzZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1v
dXNlRG91YmxlQ2xpY2tFdmVudCk6IFNhbWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogU2FtZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6a2V5RXZlbnQpOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVUb3VjaEV2ZW50KTogU2FtZS4KKwogMjAxMC0wNC0wMiAgSnVzdGluIFNjaHVo
ICA8anNjaHVoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJv
c2t1cnlha292LgpJbmRleDogV2ViQ29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQW5kcm9pZC5tawkocmV2aXNpb24gNTcwMjQpCisrKyBXZWJDb3JlL0FuZHJvaWQubWsJKHdv
cmtpbmcgY29weSkKQEAgLTE3Myw2ICsxNzMsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NB
TF9TUkNfRklMRVMpIFwKIAlkb20vVHJlZVdhbGtlci5jcHAgXAogCWRvbS9VSUV2ZW50LmNwcCBc
CiAJZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwIFwKKwlkb20vVXNlckdlc3R1cmVJbmRpY2F0
b3IuY3BwIFwKIAlkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIFwKIAlkb20vV2ViS2l0VHJh
bnNpdGlvbkV2ZW50LmNwcCBcCiAJZG9tL1doZWVsRXZlbnQuY3BwIFwKSW5kZXg6IFdlYkNvcmUv
R05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2
aXNpb24gNTcwMjQpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBA
IC04NjYsNiArODY2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9VSUV2
ZW50LmggXAogCVdlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwIFwKIAlXZWJDb3Jl
L2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggXAorCVdlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5k
aWNhdG9yLmNwcCBcCisJV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaCBcCiAJV2Vi
Q29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIFwKIAlXZWJDb3JlL2RvbS9XZWJLaXRB
bmltYXRpb25FdmVudC5oIFwKIAlXZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3Bw
IFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5neXBpCShyZXZpc2lvbiA1NzAyNCkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjIwLDYgKzEyMjAsOCBAQAogICAgICAgICAgICAgJ2RvbS9VSUV2ZW50
LmgnLAogICAgICAgICAgICAgJ2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcCcsCiAgICAgICAg
ICAgICAnZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaCcsCisgICAgICAgICAgICAnZG9tL1VzZXJH
ZXN0dXJlSW5kaWNhdG9yLmNwcCcsCisgICAgICAgICAgICAnZG9tL1VzZXJHZXN0dXJlSW5kaWNh
dG9yLmgnLAogICAgICAgICAgICAgJ2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAnLAogICAg
ICAgICAgICAgJ2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5oJywKICAgICAgICAgICAgICdkb20v
V2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDU3MDI0KQorKysgV2Vi
Q29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtNTM4LDYgKzUzOCw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIGRvbS9UcmVlV2Fsa2VyLmNwcCBcCiAgICAgZG9tL1VJRXZlbnQuY3BwIFwK
ICAgICBkb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAgXAorICAgIGRvbS9Vc2VyR2VzdHVyZUlu
ZGljYXRvci5jcHAgXAogICAgIGRvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAgXAogICAgIGRv
bS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIFwKICAgICBkb20vV2hlZWxFdmVudC5jcHAgXApA
QCAtMTI1MCw2ICsxMjUxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL1RyZWVXYWxrZXIuaCBc
CiAgICAgZG9tL1VJRXZlbnQuaCBcCiAgICAgZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaCBcCisg
ICAgZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmggXAogICAgIGRvbS9XZWJLaXRBbmltYXRpb25F
dmVudC5oIFwKICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggXAogICAgIGRvbS9XaGVl
bEV2ZW50LmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiA1NzAyNCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTI5NDg1LDYgKzI5NDg1LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4N
CiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxVc2VyR2VzdHVyZUluZGljYXRv
ci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxkb21cVXNlckdlc3R1cmVJbmRpY2F0b3IuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxXZWJLaXRBbmltYXRpb25FdmVudC5j
cHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU3MDI0KQorKysgV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1OSw2ICs1NTksOCBA
QAogCQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjhDMjg0NDEwRDgyNTAw
MDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjRGNTRFQUMxMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI0RjU0RUFBMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAgKi87IH07CiAJCTI0RjU0RUFEMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjRGNTRFQUIxMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJMjU0MkY0REExMTY2QzI1QTAwRTg5
QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI1NDJGNEQ4MTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2Vz
dHVyZUluZGljYXRvci5jcHAgKi87IH07CisJCTI1NDJGNERCMTE2NkMyNUEwMEU4OUE4NiAvKiBV
c2VyR2VzdHVyZUluZGljYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjU0MkY0RDkxMTY2QzI1QTAwRTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNh
dG9yLmggKi87IH07CiAJCTI5QTgxMjI2MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI5QTgxMjA4MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcCAqLzsgfTsKIAkJMjlBODEyMjcwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxp
dHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyOUE4MTIwOTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCAqLzsg
fTsKIAkJMjlBODEyMjgwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTIw
QTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCAqLzsgfTsKQEAg
LTU5NTIsNiArNTk1NCw4IEBACiAJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRX
cmFwcGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0V3JhcHBh
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI0RjU0RUFBMTAxRkU5MTQwMDBB
RTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI0RjU0RUFCMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hl
SG9zdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsaWNhdGlvbkNhY2hl
SG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNTQyRjREODExNjZDMjVBMDBF
ODlBODYgLyogVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyNTQyRjREOTExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlBODEyMDgwRkJCOUMxRDAw
NTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5QTgxMjA5MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nl
c3NpYmlsaXR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWNjZXNzaWJpbGl0eVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlB
ODEyMEEwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyMjIsNiArMTYyMjYsOCBAQAogCQkJ
CTE0MUI5NEVFMDlFQzQyNUEwMDBFOTQxMyAvKiBVSUV2ZW50LmlkbCAqLywKIAkJCQk5MzM1NEEz
QjBCMjRGOEM5MDAzRjZERUEgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAgKi8sCiAJCQkJODUw
MzFCMzkwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuaCAqLywKKwkJCQky
NTQyRjREODExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwICovLAor
CQkJCTI1NDJGNEQ5MTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRvci5oICov
LAogCQkJCTMxQzBGRjFCMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5j
cHAgKi8sCiAJCQkJMzFDMEZGMUMwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2
ZW50LmggKi8sCiAJCQkJMzFDMEZGMUQwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlv
bkV2ZW50LmlkbCAqLywKQEAgLTE4Nzc5LDYgKzE4Nzg1LDcgQEAKIAkJCQkyRTNCQkYwODExNjJE
QTExMDBCOTQwOUEgLyogVVVJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODk1MjUzNTMxMTY0MUIz
NDAwQ0FCRjAwIC8qIEZpbGVUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QzA3ODUwMTE2
NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhUcmVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyNTQyRjRE
QjExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1cmVJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMjA5OTQsNiArMjEwMDEsNyBAQAogCQkJCTg0OTlBNTE0MTE1RkIzMzAwMEY1NjZFMyAv
KiBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTNCQkYw
NzExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4OTUyNTM1
MjExNjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
NTQyRjREQTExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDU3MDI0KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIk5QVjhPYmpl
Y3QuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cu
aCIKQEAgLTE3Niw3ICsxNzcsNyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdV
c2VyR2VzCiAgICAgLy8gQmFzZWQgb24gY29kZSBmcm9tIGtqc19iaW5kaW5ncy5jcHAuCiAgICAg
Ly8gTm90ZTogVGhpcyBpcyBtb3JlIGxpYmVyYWwgdGhhbiBGaXJlZm94J3MgaW1wbGVtZW50YXRp
b24uCiAgICAgaWYgKGV2ZW50KSB7Ci0gICAgICAgIGlmIChldmVudC0+Y3JlYXRlZEJ5RE9NKCkp
CisgICAgICAgIGlmICghVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSA9IGV2ZW50LT50eXBlKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NzAy
NCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA2MSwx
MCArMzA2MSw5IEBAIFBhc3NSZWZQdHI8RXZlbnQ+IERvY3VtZW50OjpjcmVhdGVFdmVudCgKICAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gIlRvdWNoRXZlbnQiKQogICAgICAgICBldmVudCA9IFRv
dWNoRXZlbnQ6OmNyZWF0ZSgpOwogI2VuZGlmCi0gICAgaWYgKGV2ZW50KSB7Ci0gICAgICAgIGV2
ZW50LT5zZXRDcmVhdGVkQnlET00odHJ1ZSk7CisgICAgaWYgKGV2ZW50KQogICAgICAgICByZXR1
cm4gZXZlbnQucmVsZWFzZSgpOwotICAgIH0KKwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
CiAgICAgcmV0dXJuIDA7CiB9CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiA1NzAyNCkKKysrIFdlYkNvcmUv
ZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg
IkV2ZW50LmgiCiAKICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJVc2VyR2Vz
dHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNiw3ICszNyw2IEBAIEV2ZW50OjpFdmVudCgpCiAgICAgLCBtX2Rl
ZmF1bHRQcmV2ZW50ZWQoZmFsc2UpCiAgICAgLCBtX2RlZmF1bHRIYW5kbGVkKGZhbHNlKQogICAg
ICwgbV9jYW5jZWxCdWJibGUoZmFsc2UpCi0gICAgLCBtX2NyZWF0ZWRCeURPTShmYWxzZSkKICAg
ICAsIG1fZXZlbnRQaGFzZSgwKQogICAgICwgbV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBtX2Ny
ZWF0ZVRpbWUoc3RhdGljX2Nhc3Q8RE9NVGltZVN0YW1wPihjdXJyZW50VGltZSgpICogMTAwMC4w
KSkKQEAgLTUyLDcgKzUyLDYgQEAgRXZlbnQ6OkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeQogICAgICwgbV9kZWZhdWx0UHJldmVudGVkKGZhbHNlKQogICAgICwgbV9kZWZhdWx0SGFu
ZGxlZChmYWxzZSkKICAgICAsIG1fY2FuY2VsQnViYmxlKGZhbHNlKQotICAgICwgbV9jcmVhdGVk
QnlET00oZmFsc2UpCiAgICAgLCBtX2V2ZW50UGhhc2UoMCkKICAgICAsIG1fY3VycmVudFRhcmdl
dCgwKQogICAgICwgbV9jcmVhdGVUaW1lKHN0YXRpY19jYXN0PERPTVRpbWVTdGFtcD4oY3VycmVu
dFRpbWUoKSAqIDEwMDAuMCkpCkBAIC0yMDMsNyArMjAyLDcgQEAgYm9vbCBFdmVudDo6aXNUb3Vj
aEV2ZW50KCkgY29uc3QKIAogYm9vbCBFdmVudDo6ZnJvbVVzZXJHZXN0dXJlKCkKIHsKLSAgICBp
ZiAoY3JlYXRlZEJ5RE9NKCkpCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSA9IHRoaXMtPnR5cGUoKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuaAkocmV2aXNpb24gNTcwMjQpCisr
KyBXZWJDb3JlL2RvbS9FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsOSArMTU4LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgQ2xpcGJvYXJkKiBjbGlwYm9h
cmQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKLSAgICAgICAgYm9vbCBjcmVhdGVkQnlET00oKSBj
b25zdCB7IHJldHVybiBtX2NyZWF0ZWRCeURPTTsgfQotICAgICAgICB2b2lkIHNldENyZWF0ZWRC
eURPTShib29sIGNyZWF0ZWRCeURPTSkgeyBtX2NyZWF0ZWRCeURPTSA9IGNyZWF0ZWRCeURPTTsg
fQotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBFdmVudCgpOwogICAgICAgICBFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUpOwpA
QCAtMTc5LDkgKzE3Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2Rl
ZmF1bHRIYW5kbGVkOwogICAgICAgICBib29sIG1fY2FuY2VsQnViYmxlOwogCi0gICAgICAgIC8v
IFdoZXRoZXIgdGhpcyBldmVudCB3YXMgY3JlYXRlZCBieSBkb2N1bWVudC5jcmVhdGVFdmVudCgp
LgotICAgICAgICBib29sIG1fY3JlYXRlZEJ5RE9NOwotCiAgICAgICAgIHVuc2lnbmVkIHNob3J0
IG1fZXZlbnRQaGFzZTsKICAgICAgICAgRXZlbnRUYXJnZXQqIG1fY3VycmVudFRhcmdldDsKICAg
ICAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBtX3RhcmdldDsKSW5kZXg6IFdlYkNvcmUvZG9tL1Vz
ZXJHZXN0dXJlSW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Vc2VyR2Vz
dHVyZUluZGljYXRvci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9Vc2VyR2VzdHVy
ZUluZGljYXRvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwK
KyAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgor
ICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIOKAnEFTIElT4oCdIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3Iu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpz
X3Byb2Nlc3NpbmdVc2VyR2VzdHVyZSA9IGZhbHNlOworCitVc2VyR2VzdHVyZUluZGljYXRvcjo6
VXNlckdlc3R1cmVJbmRpY2F0b3IoKQorICAgIDogbV9wcmV2aW91c1ZhbHVlKHNfcHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKQoreworICAgIHNfcHJvY2Vzc2luZ1VzZXJHZXN0dXJlID0gdHJ1ZTsKK30K
KworVXNlckdlc3R1cmVJbmRpY2F0b3I6On5Vc2VyR2VzdHVyZUluZGljYXRvcigpCit7CisgICAg
c19wcm9jZXNzaW5nVXNlckdlc3R1cmUgPSBtX3ByZXZpb3VzVmFsdWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIOKAnEFTIElT4oCd
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJHZXN0dXJlSW5k
aWNhdG9yX2gKKyNkZWZpbmUgVXNlckdlc3R1cmVJbmRpY2F0b3JfaAorCisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVXNlckdlc3R1
cmVJbmRpY2F0b3IgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAg
c3RhdGljIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgeyByZXR1cm4gc19wcm9jZXNzaW5n
VXNlckdlc3R1cmU7IH0KKyAgICAgICAgCisgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yKCk7
CisgICAgICAgIH5Vc2VyR2VzdHVyZUluZGljYXRvcigpOworICAgICAgICAKKyAgICBwcml2YXRl
OgorICAgICAgICBzdGF0aWMgYm9vbCBzX3Byb2Nlc3NpbmdVc2VyR2VzdHVyZTsKKyAgICAgICAg
Ym9vbCBtX3ByZXZpb3VzVmFsdWU7Cit9OyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFVzZXJHZXN0dXJlSW5kaWNhdG9yX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CShyZXZpc2lvbiA1NzAyNCkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCisjaW5j
bHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAj
aW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIgLy8gZm9yIGNvbXBhcmVQb3NpdGlvbnMoKQogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTE2NSw3ICsxMTY2LDkgQEAgc3RhdGljIEludFBv
aW50IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQbwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1v
dXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiB7CiAg
ICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUtPnZpZXcoKSk7Ci0KKyAgICAK
KyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yOworICAgIAogICAgIGNh
bmNlbEZha2VNb3VzZU1vdmVFdmVudCgpOwogICAgIG1fbW91c2VQcmVzc2VkID0gdHJ1ZTsKICAg
ICBtX2NhcHR1cmVzRHJhZ2dpbmcgPSB0cnVlOwpAQCAtMTI5NCw2ICsxMjk3LDggQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNl
RXZlbnQpCiB7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUtPnZpZXco
KSk7CisgICAgCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcjsKIAog
ICAgIC8vIFdlIGdldCB0aGlzIGluc3RlYWQgb2YgYSBzZWNvbmQgbW91c2UtdXAgCiAgICAgbV9t
b3VzZVByZXNzZWQgPSBmYWxzZTsKQEAgLTE0NjEsNiArMTQ2Niw4IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjppbnZhbGlkYXRlQ2xpY2soKQogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKIHsKICAgICBS
ZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS0+dmlldygpKTsKKyAgICAKKyAgICBV
c2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yOwogCiAjaWYgRU5BQkxFKFBBTl9T
Q1JPTExJTkcpCiAgICAgaWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKQpA
QCAtMjEyMCw2ICsyMTI3LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBs
YXRmbwogICAgIFJlZlB0cjxOb2RlPiBub2RlID0gZXZlbnRUYXJnZXROb2RlRm9yRG9jdW1lbnQo
bV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcjsKIAog
ICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgIHZpZXct
PnJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKQEAgLTI2ODcsNiArMjY5Niw4IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnMKIAogICAgIGNvbnN0IFZlY3RvcjxQ
bGF0Zm9ybVRvdWNoUG9pbnQ+JiBwb2ludHMgPSBldmVudC50b3VjaFBvaW50cygpOwogICAgIEF0
b21pY1N0cmluZyogZXZlbnROYW1lID0gMDsKKyAgICAKKyAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBvaW50
cy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50
ID0gcG9pbnRzW2ldOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTcwNDIpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0wMiAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNzAwOC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3BvcHVwLWFsbG93
ZWQtZnJvbS1nZXN0dXJlLWluaXRpYXRlZC1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL3BvcHVwLWFsbG93ZWQtZnJvbS1nZXN0dXJlLWluaXRpYXRlZC1l
dmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZy
b20tZmFrZS1idXR0b24tY2xpY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1idXR0b24tY2xpY2suaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtZm9jdXMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZy
b20tZmFrZS1mb2N1cy5odG1sOiBBZGRlZC4KKwogMjAxMC0wNC0wMiAgRGFyaW4gRmlzaGVyICA8
ZGFyaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1hbGxvd2VkLWZyb20tZ2VzdHVyZS1p
bml0aWF0ZWQtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3BvcHVwLWFsbG93ZWQtZnJvbS1nZXN0dXJlLWluaXRpYXRlZC1ldmVudC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1h
bGxvd2VkLWZyb20tZ2VzdHVyZS1pbml0aWF0ZWQtZXZlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQgQEAKK0NsaWNrIEhlcmUgIENsaWNrIEhlcmUgVG9vCitQQVNTIHdp
biBpcyBub24tbnVsbC4KK1BBU1Mgd2luIGlzIG5vbi1udWxsLgorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9wb3B1cC1hbGxvd2VkLWZyb20tZ2VzdHVyZS1pbml0aWF0ZWQtZXZlbnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1hbGxvd2Vk
LWZyb20tZ2VzdHVyZS1pbml0aWF0ZWQtZXZlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWFsbG93ZWQtZnJvbS1nZXN0dXJlLWluaXRpYXRlZC1l
dmVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACis8aHRtbD4gCisgICAgPGhl
YWQ+CisgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAg
ICAgICA8YnV0dG9uIGlkPSJidXR0b24xIiBvbmNsaWNrPSJidXR0b24xKCkiPkNsaWNrIEhlcmU8
L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMiIgb25jbGljaz0iYnV0dG9uMigp
Ij5DbGljayBIZXJlIFRvbzwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIGlkPSJ0ZXN0IiBvbmNs
aWNrPSJwb3B1cCgpIiBzdHlsZT0iZGlzcGxheTpub25lIj48L2J1dHRvbj4KKyAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+IAorICAgICAgICAgICAgdmFy
IHdpbjsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBvcHVwKCkgeworICAgICAgICAgICAgICAgIHdp
biA9IHdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIsICJibGFuayIpOworICAgICAgICAgICAgICAg
IHNob3VsZEJlTm9uTnVsbCgid2luIik7CisgICAgICAgICAgICB9CisgCisgICAgICAgICAgICBm
dW5jdGlvbiBidXR0b24xKCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0IikuY2xpY2soKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gYnV0dG9uMigpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2xpY2tFdmVudCA9IGRvY3VtZW50
LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpOworICAgICAgICAgICAgICAgIGNsaWNrRXZlbnQu
aW5pdE1vdXNlRXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAwLCAwLCAwLCAwLCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7CisgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKS5kaXNwYXRjaEV2ZW50KGNsaWNrRXZlbnQp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5k
b3dzKCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9j
a2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOworICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oMTAsIDEwKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAo
KTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAwLCAxMCk7
CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4gCisgICAgPC9ib2R5PiAKKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWJ1dHRvbi1j
bGljay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
cG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtYnV0dG9uLWNsaWNrLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtl
LWJ1dHRvbi1jbGljay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAor
UEFTUyB3aW4gaXMgdW5kZWZpbmVkLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9w
b3B1cC1ibG9ja2VkLWZyb20tZmFrZS1idXR0b24tY2xpY2suaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1idXR0b24tY2xp
Y2suaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJs
b2NrZWQtZnJvbS1mYWtlLWJ1dHRvbi1jbGljay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMwIEBACis8aHRtbD4gCisgICAgPGhlYWQ+CisgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8YnV0dG9uIGlkPSJ0ZXN0IiBvbmNsaWNrPSJw
b3B1cCgpIiBzdHlsZT0iZGlzcGxheTpub25lIj48L2J1dHRvbj4KKyAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+IAorICAgICAgICAgICAgdmFyIHdpbjsK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHBvcHVwKCkgeworICAgICAgICAgICAgICAgIHdpbiA9IHdp
bmRvdy5vcGVuKCJhYm91dDpibGFuayIsICJibGFuayIpOworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlVW5kZWZpbmVkKCJ3aW4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0
cnVlKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0IikuY2xpY2soKTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgIDwvc2NyaXB0PiAKKyAgICA8L2JvZHk+IAorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtZm9jdXMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2Nr
ZWQtZnJvbS1mYWtlLWZvY3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWZvY3VzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisKK1BBU1Mgd2luIGlzIHVuZGVmaW5lZC4K
K1BBU1Mgd2luIGlzIHVuZGVmaW5lZC4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
cG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1mb2N1cy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZh
a2UtZm9jdXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5Pgor
ICAgICAgICA8dGV4dGFyZWEgaWQ9InRlc3QiIHdpZHRoPSIxMDAiIG9uZm9jdXM9InBvcHVwKCki
IG9uYmx1cj0icG9wdXAoKSI+PC90ZXh0YXJlYT4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciB3aW47CisgICAgICAg
ICAgICBmdW5jdGlvbiBwb3B1cCgpIHsKKyAgICAgICAgICAgICAgICB3aW4gPSB3aW5kb3cub3Bl
bigiYWJvdXQ6YmxhbmsiLCAiYmxhbmsiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVVuZGVm
aW5lZCgid2luIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIp
LmZvY3VzKCk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmJs
dXIoKTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="35981"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="35982"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52652</attachid>
            <date>2010-04-06 11:05:19 -0700</date>
            <delta_ts>2010-07-23 22:10:59 -0700</delta_ts>
            <desc>Updated license headers</desc>
            <filename>license-header.patch</filename>
            <type>text/plain</type>
            <size>6495</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzE1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBub24tQVNDSUkgY2hhcmFjdGVycyBmcm9tIGxpY2Vuc2UgaGVhZGVycyB0byBmaXggYnVpbGQg
ZXJyb3JzIG9uCisgICAgICAgIEphcGFuZXNlIFdpbmRvd3MuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDA4CisKKyAgICAgICAgKiBkb20vVXNl
ckdlc3R1cmVJbmRpY2F0b3IuY3BwOgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5oOgorCiAyMDEwLTA0LTA2ICBBbmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL2Rv
bS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVXNl
ckdlc3R1cmVJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiA1NzE1NykKKysrIFdlYkNvcmUvZG9tL1Vz
ZXJHZXN0dXJlSW5kaWNhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNiArMSwyNiBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwK
LSAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICAgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgot
ICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIOKAnEFTIElT4oCdIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
Ci0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCkluZGV4OiBXZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgJKHJldmlz
aW9uIDU3MTU3KQorKysgV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyNiArMSwyNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgogICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
LAotICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgotICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIOKAnEFTIElT4oCdIEFO
RAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUKLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIFVzZXJHZXN0dXJlSW5kaWNhdG9yX2gK
</data>
<flag name="review"
          id="36183"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>