<?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>41348</bug_id>
          
          <creation_ts>2010-06-29 06:32:46 -0700</creation_ts>
          <short_desc>Remove global variables from XSLTProcessorLibxslt.cpp</short_desc>
          <delta_ts>2011-02-28 02:14:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>XML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>41955</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Wictor">andreas.wictor</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>martin</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>244256</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-06-29 06:32:46 -0700</bug_when>
    <thetext>You can remove global variables from XSLTProcessorLibxslt.cpp by using the _private field that exists on most libxml structs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244265</commentid>
    <comment_count>1</comment_count>
      <attachid>60018</attachid>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-06-29 06:53:26 -0700</bug_when>
    <thetext>Created attachment 60018
Remove global variables by using the _private field that exists on most libxml structs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244345</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-29 10:05:34 -0700</bug_when>
    <thetext>+        XSLStyleSheet* xslStyleSheet = (XSLStyleSheet*)style-&gt;doc-&gt;_private;

We use C++ style casts (such as static_cast), not C style ones. Some existing code in this file is wrong in this respect.

Does this change the mode of failure when another code in the same process uses libxslt? This can&apos;t be made to work as long as we have to use xsltSetLoaderFunc(), but can this make situation worse? I&apos; worried that casting _private member set by other code may cause crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244776</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-06-30 08:13:35 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Does this change the mode of failure when another code in the same process uses libxslt? This can&apos;t be made to work as long as we have to use xsltSetLoaderFunc(), but can this make situation worse? 

I assumed that no other code in the same process would use libxslt, is this assumption wrong? Perhaps plugins could be a problem? 

&gt; I&apos; worried that casting _private member set by other code may cause crashes.

Right now no other WebKit code is using the _private field on libxml documents and libxslt transformation contexts. But yes you have to be extra careful with _private fields.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244797</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-30 08:58:21 -0700</bug_when>
    <thetext>Any application that links to WebKit can use libxml2 and libxslt on its own. That&apos;s of course already a problematic situation, and it doesn&apos;t seem to be possible to fully resolve this problem without moving WebKit into a different process, significantly modifying libxml2, or switching to another XML library.

I was thinking about keeping a HashSet of XSLTProcessors, so that we could check if _private is one of ours, and bail out quickly if it isn&apos;t. Other code&apos;s usage of libxslt may fail, but at least we won&apos;t crash right away. Logging an error would be helpful, probably even in release builds (but then we shouldn&apos;t complain to console more than once).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245302</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-07-01 06:14:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I was thinking about keeping a HashSet of XSLTProcessors, so that we could check if _private is one of ours, and bail out quickly if it isn&apos;t. Other code&apos;s usage of libxslt may fail, but at least we won&apos;t crash right away.

Sounds like a good idea. We also need a HashSet of XSLStyleSheets.

&gt; Logging an error would be helpful, probably even in release builds (but then we shouldn&apos;t complain to console more than once).

How do I find a console object to log messages to, when I can&apos;t get a reliable XSLTProcessor object? The existing code in docLoaderFunc starts from globalProcessor when it finds a console.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245356</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-01 08:24:54 -0700</bug_when>
    <thetext>Release mode logging can be done via fprintf to stderr (I&apos;m not sure if we have other examples of this already). Authors of embedding applications may not ever look at Web Inspector console.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245895</commentid>
    <comment_count>7</comment_count>
      <attachid>60362</attachid>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-07-02 06:19:32 -0700</bug_when>
    <thetext>Created attachment 60362
New proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245949</commentid>
    <comment_count>8</comment_count>
      <attachid>60362</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-02 10:17:41 -0700</bug_when>
    <thetext>Comment on attachment 60362
New proposed patch

+static HashSet&lt;XSLTProcessor*&gt; globalXSLTProcessors;
+static HashSet&lt;XSLStyleSheet*&gt; globalXSLStyleSheets;

I don&apos;t think this will even build on Mac - there is a step in build script that verifies that there are no global destructors. Our usual pattern is to have a static function with a DEFINE_STATIC_GLOBAL macro inside.

+        xsltTransformContextPtr context = reinterpret_cast&lt;xsltTransformContextPtr&gt;(ctxt);
+        XSLTProcessor* processor = reinterpret_cast&lt;XSLTProcessor*&gt;(context-&gt;_private);

Didn&apos;t static_cast work?

+                fprintf(stderr, &quot;Expected a registred XSLTProcessor pointer in the libxslt &quot;
+                        &quot;_private field but found something else: %p\n&quot;, context-&gt;_private);

This is not a message that can help the author of an application using WebKit much. We need to give them pointers they can use to work around the problem.

Something like &quot;WebKit XSLT document loader was called with unknown transformation context.&quot; might be more helpful.

Looking at just this code, it seems that it can be simplified a little by storing transformation contexts instead of processors/stylesheets. But it&apos;s difficult to get to the context from where _private is set. Maybe it can be structured differently, although I don&apos;t have a concrete solution.

+    Node* m_sourceNode;

Ideally, this would have a comment explaining why this can&apos;t become a dangling pointer.

r- because of HashSet destructor issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247085</commentid>
    <comment_count>9</comment_count>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-07-06 08:24:59 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Looking at just this code, it seems that it can be simplified a little by storing transformation contexts instead of processors/stylesheets. But it&apos;s difficult to get to the context from where _private is set. Maybe it can be structured differently, although I don&apos;t have a concrete solution.

You can store transformation contexts instead of processors, but I don&apos;t think it can be done for stylesheets. All import callbaks as already been fired before you get a chance to store a pointer to the libxslt stylesheet. So I think it&apos;s better to be concistent and use the same aproach for both cases.

I will soon supply a new patch and will be available to respond to feedback until friday, european time. After that will I be away for a month.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247086</commentid>
    <comment_count>10</comment_count>
      <attachid>60634</attachid>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-07-06 08:26:06 -0700</bug_when>
    <thetext>Created attachment 60634
New proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247106</commentid>
    <comment_count>11</comment_count>
      <attachid>60634</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-06 09:49:54 -0700</bug_when>
    <thetext>Comment on attachment 60634
New proposed patch

&gt; +    // m_sourceNode is set (and reset) in the transformToString function
&gt; +    // so that the libxslt loader callback can access the source node
&gt; +    // of the transformation
&gt; +    Node* m_sourceNode;

This seems too wordy (of course m_sourceNode is the source node), and doesn&apos;t directly explain why this needn&apos;t be a RefPtr. I suggest something like &quot;Source node is only non-null in transformToString(), so this cannot become a dangling pointer&quot;.

&gt; +    // Save a pointer to the stylesheet so that we can access it from the libxslt loader callback

Comments are full sentences, and should end with a period.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247110</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-06 10:05:31 -0700</bug_when>
    <thetext>Tweaked the comments, and landed in &lt;http://trac.webkit.org/changeset/62559&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247125</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-06 10:34:59 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/62559 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247132</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-06 10:56:17 -0700</bug_when>
    <thetext>Rolled out in r62566, as this causes crashes.

Two problems: 
- _private isn&apos;t set on some code paths
- HashSet::contains() fails badly when key is empty or deleted value - since _private can be anything for non-WebKit loads, we should special case those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247134</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-06 11:00:25 -0700</bug_when>
    <thetext>There’s a misspelling in the patch, by the way: registred.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247565</commentid>
    <comment_count>16</comment_count>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-07-07 08:22:18 -0700</bug_when>
    <thetext>It seems that there is a bug in the run-webkit-tests script. When I run the script under Ubuntu it only runs 19 of 36 xsl test cases. One of the test cases it skips is xslt-import-depth.xml that crashed with the last patch.

I have fixed the bug that caused the crash and borrowed a MacBook to test the patch on. It should pass all 36 tests now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247566</commentid>
    <comment_count>17</comment_count>
      <attachid>60735</attachid>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-07-07 08:25:12 -0700</bug_when>
    <thetext>Created attachment 60735
New proposed patch

Fixed the bug that caused the crash in the last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247663</commentid>
    <comment_count>18</comment_count>
      <attachid>60735</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-07 11:53:07 -0700</bug_when>
    <thetext>Comment on attachment 60735
New proposed patch

+        if (!processor || !registeredXSLTProcessors().contains(processor)) {

I think that we also need to check for deleted value (-1). I&apos;m not quite sure if I&apos;m right about that.

It would also be better to take these magic values from HashTraits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248109</commentid>
    <comment_count>19</comment_count>
      <attachid>60857</attachid>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-07-08 02:45:14 -0700</bug_when>
    <thetext>Created attachment 60857
New proposed patch

Added check for deleted values</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248295</commentid>
    <comment_count>20</comment_count>
      <attachid>60857</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-08 10:06:59 -0700</bug_when>
    <thetext>Comment on attachment 60857
New proposed patch

r=me

&gt; When I run the script under Ubuntu it only runs 19 of 36 xsl test cases.

This sounds horrible. Do you know what the reason for this is? Could you please file a bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248909</commentid>
    <comment_count>21</comment_count>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-07-09 04:15:20 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 60857 [details])
&gt; r=me
&gt; 
&gt; &gt; When I run the script under Ubuntu it only runs 19 of 36 xsl test cases.
&gt; 
&gt; This sounds horrible. Do you know what the reason for this is? Could you please file a bug?

I did not realize they are skipped on purpose. The reason acording to the comments in LayoutTests/platform/gtk/Skipped, is partly becuase there is some problem with the version of libxml2 that is used by the debug bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248914</commentid>
    <comment_count>22</comment_count>
      <attachid>60857</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-09 04:33:27 -0700</bug_when>
    <thetext>Comment on attachment 60857
New proposed patch

Clearing flags on attachment: 60857

Committed r62937: &lt;http://trac.webkit.org/changeset/62937&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248915</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-09 04:33:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248943</commentid>
    <comment_count>24</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-09 05:44:59 -0700</bug_when>
    <thetext>Had to rollout the patch, crashed multiple bots. See bug 41955. Hits an assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248944</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-09 05:52:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/62937 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249018</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-09 08:09:03 -0700</bug_when>
    <thetext>I guess it’s OK to make this change. But note that because we can’t unconditionally use _private this just replaces one set of global variables with another. This does make things a little more elegant, but the code still will only work on a single thread and is probably a bit slower with the hash table lookups. For my perspective, what are some of the concrete benefits of the change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249039</commentid>
    <comment_count>27</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-09 09:17:27 -0700</bug_when>
    <thetext>The motivation for this change is preparing to fix xsl:import and document(), making sync and async loading work at the same time, see bug 10313 comment 59.

Thinking about it again, I&apos;m not sure if I follow the logic. Maybe there was no problem, to begin with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249094</commentid>
    <comment_count>28</comment_count>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-07-09 10:29:16 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Had to rollout the patch, crashed multiple bots. See bug 41955. Hits an assertion.

The assertion that failed was added to check that the _private field is properly initialized. I see now that in the case of embedded stylesheets (e.g. xslt-relative-path.xml), libxslt can replace our properly initialized document with a copy. This copy created by libxslt does not have the _private field set. I hope there is a workaround for this, but unfortunately I will be away for a month so I can&apos;t look into it right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253469</commentid>
    <comment_count>29</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-19 16:51:32 -0700</bug_when>
    <thetext>+                fprintf(stderr, &quot;WebKit XSLT document loader was called with unknown transformation context.&quot;);

The logging shouldn&apos;t be performed if private browsing is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266045</commentid>
    <comment_count>30</comment_count>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-08-18 05:02:34 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; +                fprintf(stderr, &quot;WebKit XSLT document loader was called with unknown transformation context.&quot;);
&gt; 
&gt; The logging shouldn&apos;t be performed if private browsing is enabled.

As I understand it you need a Settings object to determine if private browsing is enabled. I can&apos;t see how it&apos;s possible to get access to a Settings object from the libxslt document loader callback. Especially since the error message is printed because it can&apos;t get hold of a XSLTProcessor or XSLStyleSheet object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274585</commentid>
    <comment_count>31</comment_count>
      <attachid>66634</attachid>
    <who name="Andreas Wictor">andreas.wictor</who>
    <bug_when>2010-09-06 06:23:05 -0700</bug_when>
    <thetext>Created attachment 66634
New proposed patch

New proposed patch that fixes the problem with embedded stylesheets in the last patch. The error logging referred to in comment 29 is left unchanged because I could not find a way to determine if private browsing is enabled from the libxslt document loader callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325940</commentid>
    <comment_count>32</comment_count>
      <attachid>66634</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 00:27:27 -0800</bug_when>
    <thetext>Comment on attachment 66634
New proposed patch

I&apos;m marking this patch R- for now.  The patch has been up for review for a while and there&apos;s some question as to what problem this patch is solving.  If someone else would like to review this patch, please don&apos;t let this review stand in your way.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60018</attachid>
            <date>2010-06-29 06:53:26 -0700</date>
            <delta_ts>2010-07-02 06:19:32 -0700</delta_ts>
            <desc>Remove global variables by using the _private field that exists on most libxml structs.</desc>
            <filename>bug41348_0629.patch</filename>
            <type>text/plain</type>
            <size>7601</size>
            <attacher name="Andreas Wictor">andreas.wictor</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjAzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDYtMjkgIEFuZHJlYXMgV2ljdG9yICA8YW5kcmVhcy53aWN0
b3JAeGNlcmlvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBYU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
MzQ4CisKKyAgICAgICAgUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZXMgYnkgdXNpbmcgdGhlIF9wcml2
YXRlIGZpZWxkIHRoYXQgZXhpc3RzIG9uIG1vc3QgbGlieG1sIHN0cnVjdHMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyBjb3ZlcnMgdGhpcy4KKworICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yLmg6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpzb3Vy
Y2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OlhTTFRQcm9jZXNzb3Ip
OgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OnhzbHRTdHlsZXNoZWV0UG9p
bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub1N0cmlu
Zyk6CisKIDIwMTAtMDYtMjggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFdlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmgJ
KHJldmlzaW9uIDYyMDM0KQorKysgV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NywxNiArNjcsMTggQEAgcHVibGljOgogICAgIAogICAgIC8vIE9ubHkgZm9y
IGxpYlhTTFQgY2FsbGJhY2tzCiAgICAgWFNMU3R5bGVTaGVldCogeHNsU3R5bGVzaGVldCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3R5bGVzaGVldC5nZXQoKTsgfQorICAgIE5vZGUqIHNvdXJjZU5vZGUo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZU5vZGU7IH0KICNlbmRpZgogCiAgICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBQYXJhbWV0ZXJNYXA7CiAKIHByaXZhdGU6Ci0gICAgWFNM
VFByb2Nlc3NvcigpIHsgfQorICAgIFhTTFRQcm9jZXNzb3IoKSA6IG1fc291cmNlTm9kZSgwKSB7
IH0KIAogICAgIFJlZlB0cjxYU0xTdHlsZVNoZWV0PiBtX3N0eWxlc2hlZXQ7CiAgICAgUmVmUHRy
PE5vZGU+IG1fc3R5bGVzaGVldFJvb3ROb2RlOwogICAgIFBhcmFtZXRlck1hcCBtX3BhcmFtZXRl
cnM7CisgICAgTm9kZSogbV9zb3VyY2VOb2RlOwogfTsKIAogfQpJbmRleDogV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcAkocmV2aXNpb24gNjIwMzQpCisrKyBXZWJDb3JlL3htbC9YU0xU
UHJvY2Vzc29yTGlieHNsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDIxICs5NCwyMCBAQCB2
b2lkIFhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jKHZvaWQqCiAgICAgY29uc29sZS0+YWRk
TWVzc2FnZShYTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgbGV2ZWwsIGVycm9yLT5t
ZXNzYWdlLCBlcnJvci0+bGluZSwgZXJyb3ItPmZpbGUpOwogfQogCi0vLyBGSVhNRTogVGhlcmUg
c2VlbXMgdG8gYmUgbm8gd2F5IHRvIGNvbnRyb2wgdGhlIGN0eHQgcG9pbnRlciBmb3IgbG9hZGlu
ZyBoZXJlLCB0aHVzIHdlIGhhdmUgZ2xvYmFscy4KLXN0YXRpYyBYU0xUUHJvY2Vzc29yKiBnbG9i
YWxQcm9jZXNzb3IgPSAwOwotc3RhdGljIERvY0xvYWRlciogZ2xvYmFsRG9jTG9hZGVyID0gMDsK
IHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxEaWN0UHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkKiBjdHh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeHNsdExvYWRUeXBlIHR5cGUpCiB7Ci0gICAgaWYgKCFnbG9iYWxQcm9jZXNzb3Ip
Ci0gICAgICAgIHJldHVybiAwOwotCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBYU0xU
X0xPQURfRE9DVU1FTlQ6IHsKICAgICAgICAgeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIgY29udGV4
dCA9ICh4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciljdHh0OworICAgICAgICBYU0xUUHJvY2Vzc29y
KiBwcm9jZXNzb3IgPSAoWFNMVFByb2Nlc3NvciopY29udGV4dC0+X3ByaXZhdGU7CisKKyAgICAg
ICAgUmVmUHRyPERvY3VtZW50PiBvd25lckRvY3VtZW50ID0gcHJvY2Vzc29yLT5zb3VyY2VOb2Rl
KCktPmRvY3VtZW50KCk7CisgICAgICAgIERvY0xvYWRlciogZG9jTG9hZGVyID0gb3duZXJEb2N1
bWVudC0+ZG9jTG9hZGVyKCk7CisKICAgICAgICAgeG1sQ2hhciogYmFzZSA9IHhtbE5vZGVHZXRC
YXNlKGNvbnRleHQtPmRvY3VtZW50LT5kb2MsIGNvbnRleHQtPm5vZGUpOwogICAgICAgICBLVVJM
IHVybChLVVJMKFBhcnNlZFVSTFN0cmluZywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
YmFzZSkpLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih1cmkpKTsKICAgICAgICAgeG1s
RnJlZShiYXNlKTsKQEAgLTExNywxOCArMTE2LDE4IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9h
ZGVyRnVuYyhjb25zdCB4bWwKIAogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKIAotICAgICAg
ICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsRG9jTG9hZGVyLT5mcmFtZSgpICYmIGdsb2Jh
bERvY0xvYWRlci0+ZG9jKCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKTsKKyAg
ICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGRvY0xvYWRlci0+ZnJhbWUoKSAmJiBkb2NMb2Fk
ZXItPmRvYygpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlm
IChyZXF1ZXN0QWxsb3dlZCkgewotICAgICAgICAgICAgZ2xvYmFsRG9jTG9hZGVyLT5mcmFtZSgp
LT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh1cmwsIEFsbG93U3RvcmVkQ3Jl
ZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7Ci0gICAgICAgICAgICByZXF1ZXN0QWxs
b3dlZCA9IGdsb2JhbERvY0xvYWRlci0+ZG9jKCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVl
c3QocmVzcG9uc2UudXJsKCkpOworICAgICAgICAgICAgZG9jTG9hZGVyLT5mcmFtZSgpLT5sb2Fk
ZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh1cmwsIEFsbG93U3RvcmVkQ3JlZGVudGlh
bHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAgICAgICAgICByZXF1ZXN0QWxsb3dlZCA9
IGRvY0xvYWRlci0+ZG9jKCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVzcG9uc2Uu
dXJsKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICghcmVxdWVzdEFsbG93ZWQpIHsKICAgICAg
ICAgICAgIGRhdGEuY2xlYXIoKTsKLSAgICAgICAgICAgIGdsb2JhbERvY0xvYWRlci0+cHJpbnRB
Y2Nlc3NEZW5pZWRNZXNzYWdlKHVybCk7CisgICAgICAgICAgICBkb2NMb2FkZXItPnByaW50QWNj
ZXNzRGVuaWVkTWVzc2FnZSh1cmwpOwogICAgICAgICB9CiAKICAgICAgICAgQ29uc29sZSogY29u
c29sZSA9IDA7Ci0gICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBnbG9iYWxQcm9jZXNzb3ItPnhz
bFN0eWxlc2hlZXQoKS0+b3duZXJEb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gcHJvY2Vzc29yLT54c2xTdHlsZXNoZWV0KCktPm93bmVyRG9jdW1lbnQoKS0+
ZnJhbWUoKSkKICAgICAgICAgICAgIGNvbnNvbGUgPSBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNv
bGUoKTsKICAgICAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVuYyhjb25zb2xlLCBYU0xUUHJv
Y2Vzc29yOjpwYXJzZUVycm9yRnVuYyk7CiAgICAgICAgIHhtbFNldEdlbmVyaWNFcnJvckZ1bmMo
Y29uc29sZSwgWFNMVFByb2Nlc3Nvcjo6Z2VuZXJpY0Vycm9yRnVuYyk7CkBAIC0xNDIsOCArMTQx
LDExIEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWwKIAogICAgICAg
ICByZXR1cm4gZG9jOwogICAgIH0KLSAgICBjYXNlIFhTTFRfTE9BRF9TVFlMRVNIRUVUOgotICAg
ICAgICByZXR1cm4gZ2xvYmFsUHJvY2Vzc29yLT54c2xTdHlsZXNoZWV0KCktPmxvY2F0ZVN0eWxl
c2hlZXRTdWJSZXNvdXJjZSgoKHhzbHRTdHlsZXNoZWV0UHRyKWN0eHQpLT5kb2MsIHVyaSk7Cisg
ICAgY2FzZSBYU0xUX0xPQURfU1RZTEVTSEVFVDogeworICAgICAgICB4c2x0U3R5bGVzaGVldFB0
ciBzdHlsZSA9ICh4c2x0U3R5bGVzaGVldFB0ciljdHh0OworICAgICAgICBYU0xTdHlsZVNoZWV0
KiB4c2xTdHlsZVNoZWV0ID0gKFhTTFN0eWxlU2hlZXQqKXN0eWxlLT5kb2MtPl9wcml2YXRlOwor
ICAgICAgICByZXR1cm4geHNsU3R5bGVTaGVldC0+bG9jYXRlU3R5bGVzaGVldFN1YlJlc291cmNl
KHN0eWxlLT5kb2MsIHVyaSk7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTE1MSwxMyArMTUzLDYgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5j
KGNvbnN0IHhtbAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0WFNM
VExvYWRDYWxsQmFjayh4c2x0RG9jTG9hZGVyRnVuYyBmdW5jLCBYU0xUUHJvY2Vzc29yKiBwcm9j
ZXNzb3IsIERvY0xvYWRlciogbG9hZGVyKQotewotICAgIHhzbHRTZXRMb2FkZXJGdW5jKGZ1bmMp
OwotICAgIGdsb2JhbFByb2Nlc3NvciA9IHByb2Nlc3NvcjsKLSAgICBnbG9iYWxEb2NMb2FkZXIg
PSBsb2FkZXI7Ci19Ci0KIHN0YXRpYyBpbnQgd3JpdGVUb1ZlY3Rvcih2b2lkKiBjb250ZXh0LCBj
b25zdCBjaGFyKiBidWZmZXIsIGludCBsZW4pCiB7CiAgICAgVmVjdG9yPFVDaGFyPiYgcmVzdWx0
T3V0cHV0ID0gKnN0YXRpY19jYXN0PFZlY3RvcjxVQ2hhcj4qPihjb250ZXh0KTsKQEAgLTIzMCw5
ICsyMjUsMTcgQEAgc3RhdGljIHhzbHRTdHlsZXNoZWV0UHRyIHhzbHRTdHlsZXNoZWV0UAogICAg
ICAgICBjYWNoZWRTdHlsZXNoZWV0LT5wYXJzZVN0cmluZyhjcmVhdGVNYXJrdXAoc3R5bGVzaGVl
dFJvb3ROb2RlKSk7CiAgICAgfQogCi0gICAgaWYgKCFjYWNoZWRTdHlsZXNoZWV0IHx8ICFjYWNo
ZWRTdHlsZXNoZWV0LT5kb2N1bWVudCgpKQorICAgIGlmICghY2FjaGVkU3R5bGVzaGVldCkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICB4bWxEb2NQdHIgeHNsRG9jdW1lbnQgPSBjYWNoZWRTdHls
ZXNoZWV0LT5kb2N1bWVudCgpOworICAgIGlmICgheHNsRG9jdW1lbnQpCiAgICAgICAgIHJldHVy
biAwOwogCisgICAgLy8gU2F2ZSBhIHBvaW50ZXIgdG8gdGhlIHN0eWxlc2hlZXQgc28gdGhhdCB3
ZSBjYW4gYWNjZXNzIGl0IGZyb20gdGhlIGxpYnhzbHQgbG9hZGVyIGNhbGxiYWNrCisgICAgQVNT
RVJUKCF4c2xEb2N1bWVudC0+X3ByaXZhdGUpOworICAgIHhzbERvY3VtZW50LT5fcHJpdmF0ZSA9
IGNhY2hlZFN0eWxlc2hlZXQuZ2V0KCk7CisKICAgICByZXR1cm4gY2FjaGVkU3R5bGVzaGVldC0+
Y29tcGlsZVN0eWxlU2hlZXQoKTsKIH0KIApAQCAtMjczLDEyICsyNzYsMTAgQEAgc3RhdGljIGlu
bGluZSBTdHJpbmcgcmVzdWx0TUlNRVR5cGUoeG1sRAogCiBib29sIFhTTFRQcm9jZXNzb3I6OnRy
YW5zZm9ybVRvU3RyaW5nKE5vZGUqIHNvdXJjZU5vZGUsIFN0cmluZyYgbWltZVR5cGUsIFN0cmlu
ZyYgcmVzdWx0U3RyaW5nLCBTdHJpbmcmIHJlc3VsdEVuY29kaW5nKQogewotICAgIFJlZlB0cjxE
b2N1bWVudD4gb3duZXJEb2N1bWVudCA9IHNvdXJjZU5vZGUtPmRvY3VtZW50KCk7Ci0KLSAgICBz
ZXRYU0xUTG9hZENhbGxCYWNrKGRvY0xvYWRlckZ1bmMsIHRoaXMsIG93bmVyRG9jdW1lbnQtPmRv
Y0xvYWRlcigpKTsKKyAgICB4c2x0U2V0TG9hZGVyRnVuYyhkb2NMb2FkZXJGdW5jKTsKICAgICB4
c2x0U3R5bGVzaGVldFB0ciBzaGVldCA9IHhzbHRTdHlsZXNoZWV0UG9pbnRlcihtX3N0eWxlc2hl
ZXQsIG1fc3R5bGVzaGVldFJvb3ROb2RlLmdldCgpKTsKICAgICBpZiAoIXNoZWV0KSB7Ci0gICAg
ICAgIHNldFhTTFRMb2FkQ2FsbEJhY2soMCwgMCwgMCk7CisgICAgICAgIHhzbHRTZXRMb2FkZXJG
dW5jKDApOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIG1fc3R5bGVzaGVldC0+
Y2xlYXJEb2N1bWVudHMoKTsKQEAgLTI5Nyw2ICsyOTgsMTEgQEAgYm9vbCBYU0xUUHJvY2Vzc29y
Ojp0cmFuc2Zvcm1Ub1N0cmluZyhObwogICAgICAgICB4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciB0
cmFuc2Zvcm1Db250ZXh0ID0geHNsdE5ld1RyYW5zZm9ybUNvbnRleHQoc2hlZXQsIHNvdXJjZURv
Yyk7CiAgICAgICAgIHJlZ2lzdGVyWFNMVEV4dGVuc2lvbnModHJhbnNmb3JtQ29udGV4dCk7CiAK
KyAgICAgICAgLy8gU2F2ZSBhIHBvaW50ZXIgdG8gdGhpcyBYU0xUUHJvY2Vzc29yIHNvIHRoYXQg
d2UgY2FuIGFjY2VzcyBpdCBmcm9tIHRoZSBsaWJ4c2x0IGxvYWRlciBjYWxsYmFjaworICAgICAg
ICBBU1NFUlQoIXRyYW5zZm9ybUNvbnRleHQtPl9wcml2YXRlKTsKKyAgICAgICAgdHJhbnNmb3Jt
Q29udGV4dC0+X3ByaXZhdGUgPSB0aGlzOworICAgICAgICBtX3NvdXJjZU5vZGUgPSBzb3VyY2VO
b2RlOworCiAgICAgICAgIC8vIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjA3Nz46IFhTTFQgcHJvY2Vzc29yIDx4c2w6c29ydD4gYWxnb3JpdGhtIG9ubHkgY29tcGFy
ZXMgYnkgY29kZSBwb2ludAogICAgICAgICB4c2x0U2V0Q3R4dFNvcnRGdW5jKHRyYW5zZm9ybUNv
bnRleHQsIHhzbHRVbmljb2RlU29ydEZ1bmN0aW9uKTsKIApAQCAtMzIzLDkgKzMyOSwxMCBAQCBi
b29sIFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvU3RyaW5nKE5vCiAgICAgfQogCiAgICAgc2hl
ZXQtPm1ldGhvZCA9IG9yaWdNZXRob2Q7Ci0gICAgc2V0WFNMVExvYWRDYWxsQmFjaygwLCAwLCAw
KTsKKyAgICB4c2x0U2V0TG9hZGVyRnVuYygwKTsKICAgICB4c2x0RnJlZVN0eWxlc2hlZXQoc2hl
ZXQpOwogICAgIG1fc3R5bGVzaGVldCA9IDA7CisgICAgbV9zb3VyY2VOb2RlID0gMDsKIAogICAg
IHJldHVybiBzdWNjZXNzOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60362</attachid>
            <date>2010-07-02 06:19:32 -0700</date>
            <delta_ts>2010-07-06 08:26:06 -0700</delta_ts>
            <desc>New proposed patch</desc>
            <filename>bug41348_0702.patch</filename>
            <type>text/plain</type>
            <size>9699</size>
            <attacher name="Andreas Wictor">andreas.wictor</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjAzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDctMDIgIEFuZHJlYXMgV2ljdG9yICA8YW5kcmVhcy53aWN0
b3JAeGNlcmlvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBYU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
MzQ4CisKKyAgICAgICAgUmVtb3ZlIHRoZSBnbG9iYWxQcm9jZXNzb3IgYW5kIGdsb2JhbERvY0xv
YWRlciBnbG9iYWwgdmFyaWFibGVzCisgICAgICAgIGJ5IHVzaW5nIHRoZSBfcHJpdmF0ZSBmaWVs
ZCB0aGF0IGV4aXN0cyBvbiBtb3N0IGxpYnhtbCBzdHJ1Y3RzLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgZXhpc3RpbmcgdGVzdHMgY292ZXJzIHRoaXMuCisKKyAgICAgICAgKiB4bWwvWFNMVFBy
b2Nlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6c291cmNlTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpYU0xUUHJvY2Vzc29yKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjp4c2x0U3R5bGVzaGVldFBvaW50ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmcpOgorCiAy
MDEwLTA2LTI4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBXZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5oCShyZXZpc2lv
biA2MjAzNCkKKysrIFdlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNjcsMTYgKzY3LDE4IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBPbmx5IGZvciBsaWJYU0xU
IGNhbGxiYWNrcwogICAgIFhTTFN0eWxlU2hlZXQqIHhzbFN0eWxlc2hlZXQoKSBjb25zdCB7IHJl
dHVybiBtX3N0eWxlc2hlZXQuZ2V0KCk7IH0KKyAgICBOb2RlKiBzb3VyY2VOb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VOb2RlOyB9CiAjZW5kaWYKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gUGFyYW1ldGVyTWFwOwogCiBwcml2YXRlOgotICAgIFhTTFRQcm9jZXNz
b3IoKSB7IH0KKyAgICBYU0xUUHJvY2Vzc29yKCkgOiBtX3NvdXJjZU5vZGUoMCkgeyB9CiAKICAg
ICBSZWZQdHI8WFNMU3R5bGVTaGVldD4gbV9zdHlsZXNoZWV0OwogICAgIFJlZlB0cjxOb2RlPiBt
X3N0eWxlc2hlZXRSb290Tm9kZTsKICAgICBQYXJhbWV0ZXJNYXAgbV9wYXJhbWV0ZXJzOworICAg
IE5vZGUqIG1fc291cmNlTm9kZTsKIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAJKHJldmlzaW9uIDYyMDM0KQorKysgV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8
bGlieHNsdC92YXJpYWJsZXMuaD4KICNpbmNsdWRlIDxsaWJ4c2x0L3hzbHR1dGlscy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC05
NCwyMSArOTUsMzIgQEAgdm9pZCBYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9yRnVuYyh2b2lkKgog
ICAgIGNvbnNvbGUtPmFkZE1lc3NhZ2UoWE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IGxldmVsLCBlcnJvci0+bWVzc2FnZSwgZXJyb3ItPmxpbmUsIGVycm9yLT5maWxlKTsKIH0KIAot
Ly8gRklYTUU6IFRoZXJlIHNlZW1zIHRvIGJlIG5vIHdheSB0byBjb250cm9sIHRoZSBjdHh0IHBv
aW50ZXIgZm9yIGxvYWRpbmcgaGVyZSwgdGh1cyB3ZSBoYXZlIGdsb2JhbHMuCi1zdGF0aWMgWFNM
VFByb2Nlc3NvciogZ2xvYmFsUHJvY2Vzc29yID0gMDsKLXN0YXRpYyBEb2NMb2FkZXIqIGdsb2Jh
bERvY0xvYWRlciA9IDA7CitzdGF0aWMgSGFzaFNldDxYU0xUUHJvY2Vzc29yKj4gZ2xvYmFsWFNM
VFByb2Nlc3NvcnM7CitzdGF0aWMgSGFzaFNldDxYU0xTdHlsZVNoZWV0Kj4gZ2xvYmFsWFNMU3R5
bGVTaGVldHM7CisKIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFy
KiB1cmksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxEaWN0UHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wdGlvbnMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBjdHh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeHNsdExvYWRUeXBlIHR5cGUpCiB7Ci0gICAgaWYgKCFnbG9i
YWxQcm9jZXNzb3IpCi0gICAgICAgIHJldHVybiAwOwotCiAgICAgc3dpdGNoICh0eXBlKSB7CiAg
ICAgY2FzZSBYU0xUX0xPQURfRE9DVU1FTlQ6IHsKLSAgICAgICAgeHNsdFRyYW5zZm9ybUNvbnRl
eHRQdHIgY29udGV4dCA9ICh4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciljdHh0OworICAgICAgICB4
c2x0VHJhbnNmb3JtQ29udGV4dFB0ciBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDx4c2x0VHJh
bnNmb3JtQ29udGV4dFB0cj4oY3R4dCk7CisgICAgICAgIFhTTFRQcm9jZXNzb3IqIHByb2Nlc3Nv
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8WFNMVFByb2Nlc3Nvcio+KGNvbnRleHQtPl9wcml2YXRlKTsK
KyAgICAgICAgaWYgKCFnbG9iYWxYU0xUUHJvY2Vzc29ycy5jb250YWlucyhwcm9jZXNzb3IpKSB7
CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcnJvck1lc3NhZ2VQcmludGVkID0gZmFsc2U7Cisg
ICAgICAgICAgICBpZiAoIWVycm9yTWVzc2FnZVByaW50ZWQpIHsKKyAgICAgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIkV4cGVjdGVkIGEgcmVnaXN0cmVkIFhTTFRQcm9jZXNzb3IgcG9pbnRl
ciBpbiB0aGUgbGlieHNsdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiX3ByaXZhdGUgZmll
bGQgYnV0IGZvdW5kIHNvbWV0aGluZyBlbHNlOiAlcFxuIiwgY29udGV4dC0+X3ByaXZhdGUpOwor
ICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZVByaW50ZWQgPSB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8RG9j
dW1lbnQ+IG93bmVyRG9jdW1lbnQgPSBwcm9jZXNzb3ItPnNvdXJjZU5vZGUoKS0+ZG9jdW1lbnQo
KTsKKyAgICAgICAgRG9jTG9hZGVyKiBkb2NMb2FkZXIgPSBvd25lckRvY3VtZW50LT5kb2NMb2Fk
ZXIoKTsKKwogICAgICAgICB4bWxDaGFyKiBiYXNlID0geG1sTm9kZUdldEJhc2UoY29udGV4dC0+
ZG9jdW1lbnQtPmRvYywgY29udGV4dC0+bm9kZSk7CiAgICAgICAgIEtVUkwgdXJsKEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihiYXNlKSksIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVyaSkpOwogICAgICAgICB4bWxGcmVlKGJhc2UpOwpA
QCAtMTE3LDE4ICsxMjksMTggQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0
IHhtbAogCiAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOwogCi0gICAgICAgIGJvb2wgcmVxdWVz
dEFsbG93ZWQgPSBnbG9iYWxEb2NMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsRG9jTG9hZGVyLT5k
b2MoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpOworICAgICAgICBib29sIHJl
cXVlc3RBbGxvd2VkID0gZG9jTG9hZGVyLT5mcmFtZSgpICYmIGRvY0xvYWRlci0+ZG9jKCktPnNl
Y3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxv
d2VkKSB7Ci0gICAgICAgICAgICBnbG9iYWxEb2NMb2FkZXItPmZyYW1lKCktPmxvYWRlcigpLT5s
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHVybCwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKTsKLSAgICAgICAgICAgIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFs
RG9jTG9hZGVyLT5kb2MoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXNwb25zZS51
cmwoKSk7CisgICAgICAgICAgICBkb2NMb2FkZXItPmZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KHVybCwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgZXJyb3IsIHJl
c3BvbnNlLCBkYXRhKTsKKyAgICAgICAgICAgIHJlcXVlc3RBbGxvd2VkID0gZG9jTG9hZGVyLT5k
b2MoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXNwb25zZS51cmwoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKCFyZXF1ZXN0QWxsb3dlZCkgewogICAgICAgICAgICAgZGF0YS5j
bGVhcigpOwotICAgICAgICAgICAgZ2xvYmFsRG9jTG9hZGVyLT5wcmludEFjY2Vzc0RlbmllZE1l
c3NhZ2UodXJsKTsKKyAgICAgICAgICAgIGRvY0xvYWRlci0+cHJpbnRBY2Nlc3NEZW5pZWRNZXNz
YWdlKHVybCk7CiAgICAgICAgIH0KIAogICAgICAgICBDb25zb2xlKiBjb25zb2xlID0gMDsKLSAg
ICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGdsb2JhbFByb2Nlc3Nvci0+eHNsU3R5bGVzaGVldCgp
LT5vd25lckRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBw
cm9jZXNzb3ItPnhzbFN0eWxlc2hlZXQoKS0+b3duZXJEb2N1bWVudCgpLT5mcmFtZSgpKQogICAg
ICAgICAgICAgY29uc29sZSA9IGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpOwogICAgICAg
ICB4bWxTZXRTdHJ1Y3R1cmVkRXJyb3JGdW5jKGNvbnNvbGUsIFhTTFRQcm9jZXNzb3I6OnBhcnNl
RXJyb3JGdW5jKTsKICAgICAgICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYyhjb25zb2xlLCBYU0xU
UHJvY2Vzc29yOjpnZW5lcmljRXJyb3JGdW5jKTsKQEAgLTE0Miw4ICsxNTQsMjEgQEAgc3RhdGlj
IHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbAogCiAgICAgICAgIHJldHVybiBkb2M7
CiAgICAgfQotICAgIGNhc2UgWFNMVF9MT0FEX1NUWUxFU0hFRVQ6Ci0gICAgICAgIHJldHVybiBn
bG9iYWxQcm9jZXNzb3ItPnhzbFN0eWxlc2hlZXQoKS0+bG9jYXRlU3R5bGVzaGVldFN1YlJlc291
cmNlKCgoeHNsdFN0eWxlc2hlZXRQdHIpY3R4dCktPmRvYywgdXJpKTsKKyAgICBjYXNlIFhTTFRf
TE9BRF9TVFlMRVNIRUVUOiB7CisgICAgICAgIHhzbHRTdHlsZXNoZWV0UHRyIHN0eWxlID0gcmVp
bnRlcnByZXRfY2FzdDx4c2x0U3R5bGVzaGVldFB0cj4oY3R4dCk7CisgICAgICAgIFhTTFN0eWxl
U2hlZXQqIHhzbFN0eWxlU2hlZXQgPSByZWludGVycHJldF9jYXN0PFhTTFN0eWxlU2hlZXQqPihz
dHlsZS0+ZG9jLT5fcHJpdmF0ZSk7CisgICAgICAgIGlmICghZ2xvYmFsWFNMU3R5bGVTaGVldHMu
Y29udGFpbnMoeHNsU3R5bGVTaGVldCkpIHsKKyAgICAgICAgICAgIHN0YXRpYyBib29sIGVycm9y
TWVzc2FnZVByaW50ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZXJyb3JNZXNzYWdlUHJp
bnRlZCkgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXhwZWN0ZWQgYSByZWdp
c3RyZWQgWFNMU3R5bGVTaGVldCBwb2ludGVyIGluIHRoZSBsaWJ4bWwgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIl9wcml2YXRlIGZpZWxkIGJ1dCBmb3VuZCBzb21ldGhpbmcgZWxzZTogJXBc
biIsIHN0eWxlLT5kb2MtPl9wcml2YXRlKTsKKyAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VQ
cmludGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHhzbFN0eWxlU2hlZXQtPmxvY2F0ZVN0eWxlc2hlZXRT
dWJSZXNvdXJjZShzdHlsZS0+ZG9jLCB1cmkpOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0xNTEsMTMgKzE3Niw2IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9j
TG9hZGVyRnVuYyhjb25zdCB4bWwKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSB2
b2lkIHNldFhTTFRMb2FkQ2FsbEJhY2soeHNsdERvY0xvYWRlckZ1bmMgZnVuYywgWFNMVFByb2Nl
c3NvciogcHJvY2Vzc29yLCBEb2NMb2FkZXIqIGxvYWRlcikKLXsKLSAgICB4c2x0U2V0TG9hZGVy
RnVuYyhmdW5jKTsKLSAgICBnbG9iYWxQcm9jZXNzb3IgPSBwcm9jZXNzb3I7Ci0gICAgZ2xvYmFs
RG9jTG9hZGVyID0gbG9hZGVyOwotfQotCiBzdGF0aWMgaW50IHdyaXRlVG9WZWN0b3Iodm9pZCog
Y29udGV4dCwgY29uc3QgY2hhciogYnVmZmVyLCBpbnQgbGVuKQogewogICAgIFZlY3RvcjxVQ2hh
cj4mIHJlc3VsdE91dHB1dCA9ICpzdGF0aWNfY2FzdDxWZWN0b3I8VUNoYXI+Kj4oY29udGV4dCk7
CkBAIC0yMzAsMTAgKzI0OCwyMiBAQCBzdGF0aWMgeHNsdFN0eWxlc2hlZXRQdHIgeHNsdFN0eWxl
c2hlZXRQCiAgICAgICAgIGNhY2hlZFN0eWxlc2hlZXQtPnBhcnNlU3RyaW5nKGNyZWF0ZU1hcmt1
cChzdHlsZXNoZWV0Um9vdE5vZGUpKTsKICAgICB9CiAKLSAgICBpZiAoIWNhY2hlZFN0eWxlc2hl
ZXQgfHwgIWNhY2hlZFN0eWxlc2hlZXQtPmRvY3VtZW50KCkpCisgICAgaWYgKCFjYWNoZWRTdHls
ZXNoZWV0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHhtbERvY1B0ciB4c2xEb2N1bWVudCA9
IGNhY2hlZFN0eWxlc2hlZXQtPmRvY3VtZW50KCk7CisgICAgaWYgKCF4c2xEb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gY2FjaGVkU3R5bGVzaGVldC0+Y29tcGlsZVN0
eWxlU2hlZXQoKTsKKyAgICAvLyBTYXZlIGEgcG9pbnRlciB0byB0aGUgc3R5bGVzaGVldCBzbyB0
aGF0IHdlIGNhbiBhY2Nlc3MgaXQgZnJvbSB0aGUgbGlieHNsdCBsb2FkZXIgY2FsbGJhY2sKKyAg
ICB2b2lkKiBvbGQgPSB4c2xEb2N1bWVudC0+X3ByaXZhdGU7CisgICAgeHNsRG9jdW1lbnQtPl9w
cml2YXRlID0gY2FjaGVkU3R5bGVzaGVldC5nZXQoKTsKKyAgICBnbG9iYWxYU0xTdHlsZVNoZWV0
cy5hZGQoY2FjaGVkU3R5bGVzaGVldC5nZXQoKSk7CisKKyAgICB4c2x0U3R5bGVzaGVldFB0ciBy
ZXN1bHQgPSBjYWNoZWRTdHlsZXNoZWV0LT5jb21waWxlU3R5bGVTaGVldCgpOworICAgIGdsb2Jh
bFhTTFN0eWxlU2hlZXRzLnJlbW92ZShjYWNoZWRTdHlsZXNoZWV0LmdldCgpKTsKKyAgICB4c2xE
b2N1bWVudC0+X3ByaXZhdGUgPSBvbGQ7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGlj
IGlubGluZSB4bWxEb2NQdHIgeG1sRG9jUHRyRnJvbU5vZGUoTm9kZSogc291cmNlTm9kZSwgYm9v
bCYgc2hvdWxkRGVsZXRlKQpAQCAtMjczLDEyICszMDMsMTAgQEAgc3RhdGljIGlubGluZSBTdHJp
bmcgcmVzdWx0TUlNRVR5cGUoeG1sRAogCiBib29sIFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRv
U3RyaW5nKE5vZGUqIHNvdXJjZU5vZGUsIFN0cmluZyYgbWltZVR5cGUsIFN0cmluZyYgcmVzdWx0
U3RyaW5nLCBTdHJpbmcmIHJlc3VsdEVuY29kaW5nKQogewotICAgIFJlZlB0cjxEb2N1bWVudD4g
b3duZXJEb2N1bWVudCA9IHNvdXJjZU5vZGUtPmRvY3VtZW50KCk7Ci0KLSAgICBzZXRYU0xUTG9h
ZENhbGxCYWNrKGRvY0xvYWRlckZ1bmMsIHRoaXMsIG93bmVyRG9jdW1lbnQtPmRvY0xvYWRlcigp
KTsKKyAgICB4c2x0U2V0TG9hZGVyRnVuYyhkb2NMb2FkZXJGdW5jKTsKICAgICB4c2x0U3R5bGVz
aGVldFB0ciBzaGVldCA9IHhzbHRTdHlsZXNoZWV0UG9pbnRlcihtX3N0eWxlc2hlZXQsIG1fc3R5
bGVzaGVldFJvb3ROb2RlLmdldCgpKTsKICAgICBpZiAoIXNoZWV0KSB7Ci0gICAgICAgIHNldFhT
TFRMb2FkQ2FsbEJhY2soMCwgMCwgMCk7CisgICAgICAgIHhzbHRTZXRMb2FkZXJGdW5jKDApOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIG1fc3R5bGVzaGVldC0+Y2xlYXJEb2N1
bWVudHMoKTsKQEAgLTI5Nyw2ICszMjUsMTIgQEAgYm9vbCBYU0xUUHJvY2Vzc29yOjp0cmFuc2Zv
cm1Ub1N0cmluZyhObwogICAgICAgICB4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciB0cmFuc2Zvcm1D
b250ZXh0ID0geHNsdE5ld1RyYW5zZm9ybUNvbnRleHQoc2hlZXQsIHNvdXJjZURvYyk7CiAgICAg
ICAgIHJlZ2lzdGVyWFNMVEV4dGVuc2lvbnModHJhbnNmb3JtQ29udGV4dCk7CiAKKyAgICAgICAg
Ly8gU2F2ZSBhIHBvaW50ZXIgdG8gdGhpcyBYU0xUUHJvY2Vzc29yIHNvIHRoYXQgd2UgY2FuIGFj
Y2VzcyBpdCBmcm9tIHRoZSBsaWJ4c2x0IGxvYWRlciBjYWxsYmFjaworICAgICAgICBBU1NFUlQo
IXRyYW5zZm9ybUNvbnRleHQtPl9wcml2YXRlKTsKKyAgICAgICAgdHJhbnNmb3JtQ29udGV4dC0+
X3ByaXZhdGUgPSB0aGlzOworICAgICAgICBnbG9iYWxYU0xUUHJvY2Vzc29ycy5hZGQodGhpcyk7
CisgICAgICAgIG1fc291cmNlTm9kZSA9IHNvdXJjZU5vZGU7CisKICAgICAgICAgLy8gPGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc3PjogWFNMVCBwcm9jZXNzb3Ig
PHhzbDpzb3J0PiBhbGdvcml0aG0gb25seSBjb21wYXJlcyBieSBjb2RlIHBvaW50CiAgICAgICAg
IHhzbHRTZXRDdHh0U29ydEZ1bmModHJhbnNmb3JtQ29udGV4dCwgeHNsdFVuaWNvZGVTb3J0RnVu
Y3Rpb24pOwogCkBAIC0zMDksNiArMzQzLDcgQEAgYm9vbCBYU0xUUHJvY2Vzc29yOjp0cmFuc2Zv
cm1Ub1N0cmluZyhObwogICAgICAgICB4c2x0UXVvdGVVc2VyUGFyYW1zKHRyYW5zZm9ybUNvbnRl
eHQsIHBhcmFtcyk7CiAgICAgICAgIHhtbERvY1B0ciByZXN1bHREb2MgPSB4c2x0QXBwbHlTdHls
ZXNoZWV0VXNlcihzaGVldCwgc291cmNlRG9jLCAwLCAwLCAwLCB0cmFuc2Zvcm1Db250ZXh0KTsK
IAorICAgICAgICBnbG9iYWxYU0xUUHJvY2Vzc29ycy5yZW1vdmUodGhpcyk7CiAgICAgICAgIHhz
bHRGcmVlVHJhbnNmb3JtQ29udGV4dCh0cmFuc2Zvcm1Db250ZXh0KTsKICAgICAgICAgZnJlZVhz
bHRQYXJhbUFycmF5KHBhcmFtcyk7CiAKQEAgLTMyMyw5ICszNTgsMTAgQEAgYm9vbCBYU0xUUHJv
Y2Vzc29yOjp0cmFuc2Zvcm1Ub1N0cmluZyhObwogICAgIH0KIAogICAgIHNoZWV0LT5tZXRob2Qg
PSBvcmlnTWV0aG9kOwotICAgIHNldFhTTFRMb2FkQ2FsbEJhY2soMCwgMCwgMCk7CisgICAgeHNs
dFNldExvYWRlckZ1bmMoMCk7CiAgICAgeHNsdEZyZWVTdHlsZXNoZWV0KHNoZWV0KTsKICAgICBt
X3N0eWxlc2hlZXQgPSAwOworICAgIG1fc291cmNlTm9kZSA9IDA7CiAKICAgICByZXR1cm4gc3Vj
Y2VzczsKIH0K
</data>
<flag name="review"
          id="47812"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60634</attachid>
            <date>2010-07-06 08:26:06 -0700</date>
            <delta_ts>2010-07-07 08:25:12 -0700</delta_ts>
            <desc>New proposed patch</desc>
            <filename>bug41348_0706.patch</filename>
            <type>text/plain</type>
            <size>10046</size>
            <attacher name="Andreas Wictor">andreas.wictor</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjAzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDctMDYgIEFuZHJlYXMgV2ljdG9yICA8YW5kcmVhcy53aWN0
b3JAeGNlcmlvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBYU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
MzQ4CisKKyAgICAgICAgUmVtb3ZlIHRoZSBnbG9iYWxQcm9jZXNzb3IgYW5kIGdsb2JhbERvY0xv
YWRlciBnbG9iYWwgdmFyaWFibGVzCisgICAgICAgIGJ5IHVzaW5nIHRoZSBfcHJpdmF0ZSBmaWVs
ZCB0aGF0IGV4aXN0cyBvbiBtb3N0IGxpYnhtbCBzdHJ1Y3RzLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgZXhpc3RpbmcgdGVzdHMgY292ZXJzIHRoaXMuCisKKyAgICAgICAgKiB4bWwvWFNMVFBy
b2Nlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6c291cmNlTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpYU0xUUHJvY2Vzc29yKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVn
aXN0cmVkWFNMVFByb2Nlc3NvcnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0cmVkWFNMU3R5
bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgIChX
ZWJDb3JlOjp4c2x0U3R5bGVzaGVldFBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFBy
b2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmcpOgorCiAyMDEwLTA2LTI4ICBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9w
ZXouCkluZGV4OiBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5oCShyZXZpc2lvbiA2MjAzNCkKKysrIFdlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTYgKzY3LDIyIEBAIHB1Ymxp
YzoKICAgICAKICAgICAvLyBPbmx5IGZvciBsaWJYU0xUIGNhbGxiYWNrcwogICAgIFhTTFN0eWxl
U2hlZXQqIHhzbFN0eWxlc2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlc2hlZXQuZ2V0KCk7
IH0KKyAgICBOb2RlKiBzb3VyY2VOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VOb2RlOyB9
CiAjZW5kaWYKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gUGFyYW1ldGVy
TWFwOwogCiBwcml2YXRlOgotICAgIFhTTFRQcm9jZXNzb3IoKSB7IH0KKyAgICBYU0xUUHJvY2Vz
c29yKCkgOiBtX3NvdXJjZU5vZGUoMCkgeyB9CiAKICAgICBSZWZQdHI8WFNMU3R5bGVTaGVldD4g
bV9zdHlsZXNoZWV0OwogICAgIFJlZlB0cjxOb2RlPiBtX3N0eWxlc2hlZXRSb290Tm9kZTsKICAg
ICBQYXJhbWV0ZXJNYXAgbV9wYXJhbWV0ZXJzOworCisgICAgLy8gbV9zb3VyY2VOb2RlIGlzIHNl
dCAoYW5kIHJlc2V0KSBpbiB0aGUgdHJhbnNmb3JtVG9TdHJpbmcgZnVuY3Rpb24KKyAgICAvLyBz
byB0aGF0IHRoZSBsaWJ4c2x0IGxvYWRlciBjYWxsYmFjayBjYW4gYWNjZXNzIHRoZSBzb3VyY2Ug
bm9kZQorICAgIC8vIG9mIHRoZSB0cmFuc2Zvcm1hdGlvbgorICAgIE5vZGUqIG1fc291cmNlTm9k
ZTsKIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAJKHJldmlz
aW9uIDYyMDM0KQorKysgV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8bGlieHNsdC92YXJpYWJsZXMu
aD4KICNpbmNsdWRlIDxsaWJ4c2x0L3hzbHR1dGlscy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC05NCwyMSArOTUsNDAgQEAgdm9p
ZCBYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9yRnVuYyh2b2lkKgogICAgIGNvbnNvbGUtPmFkZE1l
c3NhZ2UoWE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIGxldmVsLCBlcnJvci0+bWVz
c2FnZSwgZXJyb3ItPmxpbmUsIGVycm9yLT5maWxlKTsKIH0KIAotLy8gRklYTUU6IFRoZXJlIHNl
ZW1zIHRvIGJlIG5vIHdheSB0byBjb250cm9sIHRoZSBjdHh0IHBvaW50ZXIgZm9yIGxvYWRpbmcg
aGVyZSwgdGh1cyB3ZSBoYXZlIGdsb2JhbHMuCi1zdGF0aWMgWFNMVFByb2Nlc3NvciogZ2xvYmFs
UHJvY2Vzc29yID0gMDsKLXN0YXRpYyBEb2NMb2FkZXIqIGdsb2JhbERvY0xvYWRlciA9IDA7Citz
dGF0aWMgSGFzaFNldDxYU0xUUHJvY2Vzc29yKj4mIHJlZ2lzdHJlZFhTTFRQcm9jZXNzb3JzKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8WFNMVFByb2Nlc3Nvcio+LCB4c2x0
UHJvY2Vzc29ycywgKCkpOworICAgIHJldHVybiB4c2x0UHJvY2Vzc29yczsKK30KKworc3RhdGlj
IEhhc2hTZXQ8WFNMU3R5bGVTaGVldCo+JiByZWdpc3RyZWRYU0xTdHlsZVNoZWV0cygpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFhTTFN0eWxlU2hlZXQqPiwgeHNsU3R5bGVT
aGVldHMsICgpKTsKKyAgICByZXR1cm4geHNsU3R5bGVTaGVldHM7Cit9CisKIHN0YXRpYyB4bWxE
b2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4bWxEaWN0UHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkKiBjdHh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNs
dExvYWRUeXBlIHR5cGUpCiB7Ci0gICAgaWYgKCFnbG9iYWxQcm9jZXNzb3IpCi0gICAgICAgIHJl
dHVybiAwOwotCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBYU0xUX0xPQURfRE9DVU1F
TlQ6IHsKLSAgICAgICAgeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIgY29udGV4dCA9ICh4c2x0VHJh
bnNmb3JtQ29udGV4dFB0ciljdHh0OworICAgICAgICB4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciBj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8eHNsdFRyYW5zZm9ybUNvbnRleHRQdHI+KGN0eHQpOworICAg
ICAgICBYU0xUUHJvY2Vzc29yKiBwcm9jZXNzb3IgPSBzdGF0aWNfY2FzdDxYU0xUUHJvY2Vzc29y
Kj4oY29udGV4dC0+X3ByaXZhdGUpOworICAgICAgICBpZiAoIXJlZ2lzdHJlZFhTTFRQcm9jZXNz
b3JzKCkuY29udGFpbnMocHJvY2Vzc29yKSkgeworICAgICAgICAgICAgc3RhdGljIGJvb2wgZXJy
b3JNZXNzYWdlUHJpbnRlZCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2VQ
cmludGVkKSB7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJXZWJLaXQgWFNMVCBk
b2N1bWVudCBsb2FkZXIgd2FzIGNhbGxlZCB3aXRoIHVua25vd24gdHJhbnNmb3JtYXRpb24gY29u
dGV4dC4iKTsKKyAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VQcmludGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAg
UmVmUHRyPERvY3VtZW50PiBvd25lckRvY3VtZW50ID0gcHJvY2Vzc29yLT5zb3VyY2VOb2RlKCkt
PmRvY3VtZW50KCk7CisgICAgICAgIERvY0xvYWRlciogZG9jTG9hZGVyID0gb3duZXJEb2N1bWVu
dC0+ZG9jTG9hZGVyKCk7CisKICAgICAgICAgeG1sQ2hhciogYmFzZSA9IHhtbE5vZGVHZXRCYXNl
KGNvbnRleHQtPmRvY3VtZW50LT5kb2MsIGNvbnRleHQtPm5vZGUpOwogICAgICAgICBLVVJMIHVy
bChLVVJMKFBhcnNlZFVSTFN0cmluZywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYmFz
ZSkpLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih1cmkpKTsKICAgICAgICAgeG1sRnJl
ZShiYXNlKTsKQEAgLTExNywxOCArMTM3LDE4IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVy
RnVuYyhjb25zdCB4bWwKIAogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKIAotICAgICAgICBi
b29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsRG9jTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbERv
Y0xvYWRlci0+ZG9jKCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKTsKKyAgICAg
ICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGRvY0xvYWRlci0+ZnJhbWUoKSAmJiBkb2NMb2FkZXIt
PmRvYygpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChy
ZXF1ZXN0QWxsb3dlZCkgewotICAgICAgICAgICAgZ2xvYmFsRG9jTG9hZGVyLT5mcmFtZSgpLT5s
b2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh1cmwsIEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7Ci0gICAgICAgICAgICByZXF1ZXN0QWxsb3dl
ZCA9IGdsb2JhbERvY0xvYWRlci0+ZG9jKCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3Qo
cmVzcG9uc2UudXJsKCkpOworICAgICAgICAgICAgZG9jTG9hZGVyLT5mcmFtZSgpLT5sb2FkZXIo
KS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh1cmwsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMs
IGVycm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAgICAgICAgICByZXF1ZXN0QWxsb3dlZCA9IGRv
Y0xvYWRlci0+ZG9jKCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVzcG9uc2UudXJs
KCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICghcmVxdWVzdEFsbG93ZWQpIHsKICAgICAgICAg
ICAgIGRhdGEuY2xlYXIoKTsKLSAgICAgICAgICAgIGdsb2JhbERvY0xvYWRlci0+cHJpbnRBY2Nl
c3NEZW5pZWRNZXNzYWdlKHVybCk7CisgICAgICAgICAgICBkb2NMb2FkZXItPnByaW50QWNjZXNz
RGVuaWVkTWVzc2FnZSh1cmwpOwogICAgICAgICB9CiAKICAgICAgICAgQ29uc29sZSogY29uc29s
ZSA9IDA7Ci0gICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBnbG9iYWxQcm9jZXNzb3ItPnhzbFN0
eWxlc2hlZXQoKS0+b3duZXJEb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gcHJvY2Vzc29yLT54c2xTdHlsZXNoZWV0KCktPm93bmVyRG9jdW1lbnQoKS0+ZnJh
bWUoKSkKICAgICAgICAgICAgIGNvbnNvbGUgPSBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUo
KTsKICAgICAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVuYyhjb25zb2xlLCBYU0xUUHJvY2Vz
c29yOjpwYXJzZUVycm9yRnVuYyk7CiAgICAgICAgIHhtbFNldEdlbmVyaWNFcnJvckZ1bmMoY29u
c29sZSwgWFNMVFByb2Nlc3Nvcjo6Z2VuZXJpY0Vycm9yRnVuYyk7CkBAIC0xNDIsOCArMTYyLDIw
IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWwKIAogICAgICAgICBy
ZXR1cm4gZG9jOwogICAgIH0KLSAgICBjYXNlIFhTTFRfTE9BRF9TVFlMRVNIRUVUOgotICAgICAg
ICByZXR1cm4gZ2xvYmFsUHJvY2Vzc29yLT54c2xTdHlsZXNoZWV0KCktPmxvY2F0ZVN0eWxlc2hl
ZXRTdWJSZXNvdXJjZSgoKHhzbHRTdHlsZXNoZWV0UHRyKWN0eHQpLT5kb2MsIHVyaSk7CisgICAg
Y2FzZSBYU0xUX0xPQURfU1RZTEVTSEVFVDogeworICAgICAgICB4c2x0U3R5bGVzaGVldFB0ciBz
dHlsZSA9IHN0YXRpY19jYXN0PHhzbHRTdHlsZXNoZWV0UHRyPihjdHh0KTsKKyAgICAgICAgWFNM
U3R5bGVTaGVldCogeHNsU3R5bGVTaGVldCA9IHN0YXRpY19jYXN0PFhTTFN0eWxlU2hlZXQqPihz
dHlsZS0+ZG9jLT5fcHJpdmF0ZSk7CisgICAgICAgIGlmICghcmVnaXN0cmVkWFNMU3R5bGVTaGVl
dHMoKS5jb250YWlucyh4c2xTdHlsZVNoZWV0KSkgeworICAgICAgICAgICAgc3RhdGljIGJvb2wg
ZXJyb3JNZXNzYWdlUHJpbnRlZCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKCFlcnJvck1lc3Nh
Z2VQcmludGVkKSB7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJXZWJLaXQgWFNM
VCBkb2N1bWVudCBsb2FkZXIgd2FzIGNhbGxlZCB3aXRoIHVua25vd24gdHJhbnNmb3JtYXRpb24g
Y29udGV4dC4iKTsKKyAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VQcmludGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIHhzbFN0eWxlU2hlZXQtPmxvY2F0ZVN0eWxlc2hlZXRTdWJSZXNvdXJjZShzdHls
ZS0+ZG9jLCB1cmkpOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9
CkBAIC0xNTEsMTMgKzE4Myw2IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25z
dCB4bWwKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldFhTTFRMb2Fk
Q2FsbEJhY2soeHNsdERvY0xvYWRlckZ1bmMgZnVuYywgWFNMVFByb2Nlc3NvciogcHJvY2Vzc29y
LCBEb2NMb2FkZXIqIGxvYWRlcikKLXsKLSAgICB4c2x0U2V0TG9hZGVyRnVuYyhmdW5jKTsKLSAg
ICBnbG9iYWxQcm9jZXNzb3IgPSBwcm9jZXNzb3I7Ci0gICAgZ2xvYmFsRG9jTG9hZGVyID0gbG9h
ZGVyOwotfQotCiBzdGF0aWMgaW50IHdyaXRlVG9WZWN0b3Iodm9pZCogY29udGV4dCwgY29uc3Qg
Y2hhciogYnVmZmVyLCBpbnQgbGVuKQogewogICAgIFZlY3RvcjxVQ2hhcj4mIHJlc3VsdE91dHB1
dCA9ICpzdGF0aWNfY2FzdDxWZWN0b3I8VUNoYXI+Kj4oY29udGV4dCk7CkBAIC0yMzAsMTAgKzI1
NSwyMiBAQCBzdGF0aWMgeHNsdFN0eWxlc2hlZXRQdHIgeHNsdFN0eWxlc2hlZXRQCiAgICAgICAg
IGNhY2hlZFN0eWxlc2hlZXQtPnBhcnNlU3RyaW5nKGNyZWF0ZU1hcmt1cChzdHlsZXNoZWV0Um9v
dE5vZGUpKTsKICAgICB9CiAKLSAgICBpZiAoIWNhY2hlZFN0eWxlc2hlZXQgfHwgIWNhY2hlZFN0
eWxlc2hlZXQtPmRvY3VtZW50KCkpCisgICAgaWYgKCFjYWNoZWRTdHlsZXNoZWV0KQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIHJldHVybiBjYWNoZWRTdHlsZXNoZWV0LT5jb21waWxlU3R5bGVT
aGVldCgpOworICAgIHhtbERvY1B0ciB4c2xEb2N1bWVudCA9IGNhY2hlZFN0eWxlc2hlZXQtPmRv
Y3VtZW50KCk7CisgICAgaWYgKCF4c2xEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICAvLyBTYXZlIGEgcG9pbnRlciB0byB0aGUgc3R5bGVzaGVldCBzbyB0aGF0IHdlIGNhbiBhY2Nl
c3MgaXQgZnJvbSB0aGUgbGlieHNsdCBsb2FkZXIgY2FsbGJhY2sKKyAgICB2b2lkKiBvbGQgPSB4
c2xEb2N1bWVudC0+X3ByaXZhdGU7CisgICAgeHNsRG9jdW1lbnQtPl9wcml2YXRlID0gY2FjaGVk
U3R5bGVzaGVldC5nZXQoKTsKKyAgICByZWdpc3RyZWRYU0xTdHlsZVNoZWV0cygpLmFkZChjYWNo
ZWRTdHlsZXNoZWV0LmdldCgpKTsKKworICAgIHhzbHRTdHlsZXNoZWV0UHRyIHJlc3VsdCA9IGNh
Y2hlZFN0eWxlc2hlZXQtPmNvbXBpbGVTdHlsZVNoZWV0KCk7CisgICAgcmVnaXN0cmVkWFNMU3R5
bGVTaGVldHMoKS5yZW1vdmUoY2FjaGVkU3R5bGVzaGVldC5nZXQoKSk7CisgICAgeHNsRG9jdW1l
bnQtPl9wcml2YXRlID0gb2xkOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgeG1sRG9jUHRyIHhtbERvY1B0ckZyb21Ob2RlKE5vZGUqIHNvdXJjZU5vZGUsIGJvb2wmIHNo
b3VsZERlbGV0ZSkKQEAgLTI3MywxMiArMzEwLDEwIEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHJl
c3VsdE1JTUVUeXBlKHhtbEQKIAogYm9vbCBYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub1N0cmlu
ZyhOb2RlKiBzb3VyY2VOb2RlLCBTdHJpbmcmIG1pbWVUeXBlLCBTdHJpbmcmIHJlc3VsdFN0cmlu
ZywgU3RyaW5nJiByZXN1bHRFbmNvZGluZykKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IG93bmVy
RG9jdW1lbnQgPSBzb3VyY2VOb2RlLT5kb2N1bWVudCgpOwotCi0gICAgc2V0WFNMVExvYWRDYWxs
QmFjayhkb2NMb2FkZXJGdW5jLCB0aGlzLCBvd25lckRvY3VtZW50LT5kb2NMb2FkZXIoKSk7Cisg
ICAgeHNsdFNldExvYWRlckZ1bmMoZG9jTG9hZGVyRnVuYyk7CiAgICAgeHNsdFN0eWxlc2hlZXRQ
dHIgc2hlZXQgPSB4c2x0U3R5bGVzaGVldFBvaW50ZXIobV9zdHlsZXNoZWV0LCBtX3N0eWxlc2hl
ZXRSb290Tm9kZS5nZXQoKSk7CiAgICAgaWYgKCFzaGVldCkgewotICAgICAgICBzZXRYU0xUTG9h
ZENhbGxCYWNrKDAsIDAsIDApOworICAgICAgICB4c2x0U2V0TG9hZGVyRnVuYygwKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBtX3N0eWxlc2hlZXQtPmNsZWFyRG9jdW1lbnRz
KCk7CkBAIC0yOTcsNiArMzMyLDEyIEBAIGJvb2wgWFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9T
dHJpbmcoTm8KICAgICAgICAgeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIgdHJhbnNmb3JtQ29udGV4
dCA9IHhzbHROZXdUcmFuc2Zvcm1Db250ZXh0KHNoZWV0LCBzb3VyY2VEb2MpOwogICAgICAgICBy
ZWdpc3RlclhTTFRFeHRlbnNpb25zKHRyYW5zZm9ybUNvbnRleHQpOwogCisgICAgICAgIC8vIFNh
dmUgYSBwb2ludGVyIHRvIHRoaXMgWFNMVFByb2Nlc3NvciBzbyB0aGF0IHdlIGNhbiBhY2Nlc3Mg
aXQgZnJvbSB0aGUgbGlieHNsdCBsb2FkZXIgY2FsbGJhY2sKKyAgICAgICAgQVNTRVJUKCF0cmFu
c2Zvcm1Db250ZXh0LT5fcHJpdmF0ZSk7CisgICAgICAgIHRyYW5zZm9ybUNvbnRleHQtPl9wcml2
YXRlID0gdGhpczsKKyAgICAgICAgcmVnaXN0cmVkWFNMVFByb2Nlc3NvcnMoKS5hZGQodGhpcyk7
CisgICAgICAgIG1fc291cmNlTm9kZSA9IHNvdXJjZU5vZGU7CisKICAgICAgICAgLy8gPGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc3PjogWFNMVCBwcm9jZXNzb3Ig
PHhzbDpzb3J0PiBhbGdvcml0aG0gb25seSBjb21wYXJlcyBieSBjb2RlIHBvaW50CiAgICAgICAg
IHhzbHRTZXRDdHh0U29ydEZ1bmModHJhbnNmb3JtQ29udGV4dCwgeHNsdFVuaWNvZGVTb3J0RnVu
Y3Rpb24pOwogCkBAIC0zMDksNiArMzUwLDcgQEAgYm9vbCBYU0xUUHJvY2Vzc29yOjp0cmFuc2Zv
cm1Ub1N0cmluZyhObwogICAgICAgICB4c2x0UXVvdGVVc2VyUGFyYW1zKHRyYW5zZm9ybUNvbnRl
eHQsIHBhcmFtcyk7CiAgICAgICAgIHhtbERvY1B0ciByZXN1bHREb2MgPSB4c2x0QXBwbHlTdHls
ZXNoZWV0VXNlcihzaGVldCwgc291cmNlRG9jLCAwLCAwLCAwLCB0cmFuc2Zvcm1Db250ZXh0KTsK
IAorICAgICAgICByZWdpc3RyZWRYU0xUUHJvY2Vzc29ycygpLnJlbW92ZSh0aGlzKTsKICAgICAg
ICAgeHNsdEZyZWVUcmFuc2Zvcm1Db250ZXh0KHRyYW5zZm9ybUNvbnRleHQpOwogICAgICAgICBm
cmVlWHNsdFBhcmFtQXJyYXkocGFyYW1zKTsKIApAQCAtMzIzLDkgKzM2NSwxMCBAQCBib29sIFhT
TFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvU3RyaW5nKE5vCiAgICAgfQogCiAgICAgc2hlZXQtPm1l
dGhvZCA9IG9yaWdNZXRob2Q7Ci0gICAgc2V0WFNMVExvYWRDYWxsQmFjaygwLCAwLCAwKTsKKyAg
ICB4c2x0U2V0TG9hZGVyRnVuYygwKTsKICAgICB4c2x0RnJlZVN0eWxlc2hlZXQoc2hlZXQpOwog
ICAgIG1fc3R5bGVzaGVldCA9IDA7CisgICAgbV9zb3VyY2VOb2RlID0gMDsKIAogICAgIHJldHVy
biBzdWNjZXNzOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60735</attachid>
            <date>2010-07-07 08:25:12 -0700</date>
            <delta_ts>2010-07-08 02:45:14 -0700</delta_ts>
            <desc>New proposed patch</desc>
            <filename>bug41348_0707.patch</filename>
            <type>text/plain</type>
            <size>11032</size>
            <attacher name="Andreas Wictor">andreas.wictor</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjYwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDctMDcgIEFuZHJlYXMgV2ljdG9yICA8YW5kcmVhcy53aWN0
b3JAeGNlcmlvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBYU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
MzQ4CisKKyAgICAgICAgUmVtb3ZlIHRoZSBnbG9iYWxQcm9jZXNzb3IgYW5kIGdsb2JhbERvY0xv
YWRlciBnbG9iYWwgdmFyaWFibGVzCisgICAgICAgIGJ5IHVzaW5nIHRoZSBfcHJpdmF0ZSBmaWVs
ZCB0aGF0IGV4aXN0cyBvbiBtb3N0IGxpYnhtbCBzdHJ1Y3RzLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgZXhpc3RpbmcgdGVzdHMgY292ZXJzIHRoaXMuCisKKyAgICAgICAgKiB4bWwvWFNMVFBy
b2Nlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6c291cmNlTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpYU0xUUHJvY2Vzc29yKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVn
aXN0ZXJlZFhTTFRQcm9jZXNzb3JzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyZWRYU0xT
dHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OmNsZWFyU2F2ZWRTdHlsZVNoZWV0UG9pbnRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6eHNsdFN0eWxlc2hlZXRQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNz
b3I6OnRyYW5zZm9ybVRvU3RyaW5nKToKKwogMjAxMC0wNy0wNiAgR3VzdGF2byBOb3JvbmhhIFNp
bHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBVbnJldmll
d2VkLgpJbmRleDogV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuaAkocmV2aXNpb24gNjI2MDYpCisrKyBXZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDE2ICs2NywxOSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgLy8gT25seSBmb3IgbGliWFNMVCBjYWxsYmFja3MKICAgICBYU0xTdHls
ZVNoZWV0KiB4c2xTdHlsZXNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZXNoZWV0LmdldCgp
OyB9CisgICAgTm9kZSogc291cmNlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlTm9kZTsg
fQogI2VuZGlmCiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhcmFtZXRl
ck1hcDsKIAogcHJpdmF0ZToKLSAgICBYU0xUUHJvY2Vzc29yKCkgeyB9CisgICAgWFNMVFByb2Nl
c3NvcigpIDogbV9zb3VyY2VOb2RlKDApIHsgfQogCiAgICAgUmVmUHRyPFhTTFN0eWxlU2hlZXQ+
IG1fc3R5bGVzaGVldDsKICAgICBSZWZQdHI8Tm9kZT4gbV9zdHlsZXNoZWV0Um9vdE5vZGU7CiAg
ICAgUGFyYW1ldGVyTWFwIG1fcGFyYW1ldGVyczsKKworICAgIE5vZGUqIG1fc291cmNlTm9kZTsg
Ly8gU291cmNlIG5vZGUgaXMgb25seSBub24tbnVsbCBpbiB0cmFuc2Zvcm1Ub1N0cmluZygpLCBz
byB0aGlzIGNhbm5vdCBiZWNvbWUgYSBkYW5nbGluZyBwb2ludGVyLgogfTsKIAogfQpJbmRleDog
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAkocmV2aXNpb24gNjI2MDYpCisrKyBXZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDcgQEAKICNpbmNsdWRlIDxsaWJ4c2x0L3ZhcmlhYmxlcy5oPgogI2luY2x1ZGUgPGxpYnhz
bHQveHNsdHV0aWxzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKQEAgLTk0LDIxICs5NSw0MCBAQCB2b2lkIFhTTFRQcm9jZXNzb3I6OnBh
cnNlRXJyb3JGdW5jKHZvaWQqCiAgICAgY29uc29sZS0+YWRkTWVzc2FnZShYTUxNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgbGV2ZWwsIGVycm9yLT5tZXNzYWdlLCBlcnJvci0+bGluZSwg
ZXJyb3ItPmZpbGUpOwogfQogCi0vLyBGSVhNRTogVGhlcmUgc2VlbXMgdG8gYmUgbm8gd2F5IHRv
IGNvbnRyb2wgdGhlIGN0eHQgcG9pbnRlciBmb3IgbG9hZGluZyBoZXJlLCB0aHVzIHdlIGhhdmUg
Z2xvYmFscy4KLXN0YXRpYyBYU0xUUHJvY2Vzc29yKiBnbG9iYWxQcm9jZXNzb3IgPSAwOwotc3Rh
dGljIERvY0xvYWRlciogZ2xvYmFsRG9jTG9hZGVyID0gMDsKK3N0YXRpYyBIYXNoU2V0PFhTTFRQ
cm9jZXNzb3IqPiYgcmVnaXN0ZXJlZFhTTFRQcm9jZXNzb3JzKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEhhc2hTZXQ8WFNMVFByb2Nlc3Nvcio+LCB4c2x0UHJvY2Vzc29ycywgKCkpOwor
ICAgIHJldHVybiB4c2x0UHJvY2Vzc29yczsKK30KKworc3RhdGljIEhhc2hTZXQ8WFNMU3R5bGVT
aGVldCo+JiByZWdpc3RlcmVkWFNMU3R5bGVTaGVldHMoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoSGFzaFNldDxYU0xTdHlsZVNoZWV0Kj4sIHhzbFN0eWxlU2hlZXRzLCAoKSk7CisgICAg
cmV0dXJuIHhzbFN0eWxlU2hlZXRzOworfQorCiBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1
bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeG1sRGljdFB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBv
cHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogY3R4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzbHRMb2FkVHlwZSB0eXBlKQog
ewotICAgIGlmICghZ2xvYmFsUHJvY2Vzc29yKQotICAgICAgICByZXR1cm4gMDsKLQogICAgIHN3
aXRjaCAodHlwZSkgewogICAgIGNhc2UgWFNMVF9MT0FEX0RPQ1VNRU5UOiB7Ci0gICAgICAgIHhz
bHRUcmFuc2Zvcm1Db250ZXh0UHRyIGNvbnRleHQgPSAoeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIp
Y3R4dDsKKyAgICAgICAgeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIgY29udGV4dCA9IHN0YXRpY19j
YXN0PHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyPihjdHh0KTsKKyAgICAgICAgWFNMVFByb2Nlc3Nv
ciogcHJvY2Vzc29yID0gc3RhdGljX2Nhc3Q8WFNMVFByb2Nlc3Nvcio+KGNvbnRleHQtPl9wcml2
YXRlKTsKKyAgICAgICAgaWYgKCFwcm9jZXNzb3IgfHwgIXJlZ2lzdGVyZWRYU0xUUHJvY2Vzc29y
cygpLmNvbnRhaW5zKHByb2Nlc3NvcikpIHsKKyAgICAgICAgICAgIHN0YXRpYyBib29sIGVycm9y
TWVzc2FnZVByaW50ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZXJyb3JNZXNzYWdlUHJp
bnRlZCkgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV2ViS2l0IFhTTFQgZG9j
dW1lbnQgbG9hZGVyIHdhcyBjYWxsZWQgd2l0aCB1bmtub3duIHRyYW5zZm9ybWF0aW9uIGNvbnRl
eHQuIik7CisgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlUHJpbnRlZCA9IHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIFJl
ZlB0cjxEb2N1bWVudD4gb3duZXJEb2N1bWVudCA9IHByb2Nlc3Nvci0+c291cmNlTm9kZSgpLT5k
b2N1bWVudCgpOworICAgICAgICBEb2NMb2FkZXIqIGRvY0xvYWRlciA9IG93bmVyRG9jdW1lbnQt
PmRvY0xvYWRlcigpOworCiAgICAgICAgIHhtbENoYXIqIGJhc2UgPSB4bWxOb2RlR2V0QmFzZShj
b250ZXh0LT5kb2N1bWVudC0+ZG9jLCBjb250ZXh0LT5ub2RlKTsKICAgICAgICAgS1VSTCB1cmwo
S1VSTChQYXJzZWRVUkxTdHJpbmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJhc2Up
KSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJpKSk7CiAgICAgICAgIHhtbEZyZWUo
YmFzZSk7CkBAIC0xMTcsMTggKzEzNywxOCBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1
bmMoY29uc3QgeG1sCiAKICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7CiAKLSAgICAgICAgYm9v
bCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbERvY0xvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxEb2NM
b2FkZXItPmRvYygpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCk7CisgICAgICAg
IGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBkb2NMb2FkZXItPmZyYW1lKCkgJiYgZG9jTG9hZGVyLT5k
b2MoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVx
dWVzdEFsbG93ZWQpIHsKLSAgICAgICAgICAgIGdsb2JhbERvY0xvYWRlci0+ZnJhbWUoKS0+bG9h
ZGVyKCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkodXJsLCBBbGxvd1N0b3JlZENyZWRlbnRp
YWxzLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwotICAgICAgICAgICAgcmVxdWVzdEFsbG93ZWQg
PSBnbG9iYWxEb2NMb2FkZXItPmRvYygpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJl
c3BvbnNlLnVybCgpKTsKKyAgICAgICAgICAgIGRvY0xvYWRlci0+ZnJhbWUoKS0+bG9hZGVyKCkt
PmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkodXJsLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBl
cnJvciwgcmVzcG9uc2UsIGRhdGEpOworICAgICAgICAgICAgcmVxdWVzdEFsbG93ZWQgPSBkb2NM
b2FkZXItPmRvYygpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlc3BvbnNlLnVybCgp
KTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXJlcXVlc3RBbGxvd2VkKSB7CiAgICAgICAgICAg
ICBkYXRhLmNsZWFyKCk7Ci0gICAgICAgICAgICBnbG9iYWxEb2NMb2FkZXItPnByaW50QWNjZXNz
RGVuaWVkTWVzc2FnZSh1cmwpOworICAgICAgICAgICAgZG9jTG9hZGVyLT5wcmludEFjY2Vzc0Rl
bmllZE1lc3NhZ2UodXJsKTsKICAgICAgICAgfQogCiAgICAgICAgIENvbnNvbGUqIGNvbnNvbGUg
PSAwOwotICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZ2xvYmFsUHJvY2Vzc29yLT54c2xTdHls
ZXNoZWV0KCktPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IHByb2Nlc3Nvci0+eHNsU3R5bGVzaGVldCgpLT5vd25lckRvY3VtZW50KCktPmZyYW1l
KCkpCiAgICAgICAgICAgICBjb25zb2xlID0gZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCk7
CiAgICAgICAgIHhtbFNldFN0cnVjdHVyZWRFcnJvckZ1bmMoY29uc29sZSwgWFNMVFByb2Nlc3Nv
cjo6cGFyc2VFcnJvckZ1bmMpOwogICAgICAgICB4bWxTZXRHZW5lcmljRXJyb3JGdW5jKGNvbnNv
bGUsIFhTTFRQcm9jZXNzb3I6OmdlbmVyaWNFcnJvckZ1bmMpOwpAQCAtMTQyLDggKzE2MiwyOCBA
QCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sCiAKICAgICAgICAgcmV0
dXJuIGRvYzsKICAgICB9Ci0gICAgY2FzZSBYU0xUX0xPQURfU1RZTEVTSEVFVDoKLSAgICAgICAg
cmV0dXJuIGdsb2JhbFByb2Nlc3Nvci0+eHNsU3R5bGVzaGVldCgpLT5sb2NhdGVTdHlsZXNoZWV0
U3ViUmVzb3VyY2UoKCh4c2x0U3R5bGVzaGVldFB0ciljdHh0KS0+ZG9jLCB1cmkpOworICAgIGNh
c2UgWFNMVF9MT0FEX1NUWUxFU0hFRVQ6IHsKKyAgICAgICAgeHNsdFN0eWxlc2hlZXRQdHIgc3R5
bGUgPSBzdGF0aWNfY2FzdDx4c2x0U3R5bGVzaGVldFB0cj4oY3R4dCk7CisgICAgICAgIFhTTFN0
eWxlU2hlZXQqIHhzbFN0eWxlU2hlZXQgPSBzdGF0aWNfY2FzdDxYU0xTdHlsZVNoZWV0Kj4oc3R5
bGUtPmRvYy0+X3ByaXZhdGUpOworICAgICAgICBpZiAoIXhzbFN0eWxlU2hlZXQgfHwgIXJlZ2lz
dGVyZWRYU0xTdHlsZVNoZWV0cygpLmNvbnRhaW5zKHhzbFN0eWxlU2hlZXQpKSB7CisgICAgICAg
ICAgICBzdGF0aWMgYm9vbCBlcnJvck1lc3NhZ2VQcmludGVkID0gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoIWVycm9yTWVzc2FnZVByaW50ZWQpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIldlYktpdCBYU0xUIGRvY3VtZW50IGxvYWRlciB3YXMgY2FsbGVkIHdpdGggdW5rbm93
biB0cmFuc2Zvcm1hdGlvbiBjb250ZXh0LiIpOworICAgICAgICAgICAgICAgIGVycm9yTWVzc2Fn
ZVByaW50ZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIH0KKworICAgICAgICB4bWxEb2NQdHIgcmVzdWx0ID0geHNsU3R5bGVTaGVldC0+bG9j
YXRlU3R5bGVzaGVldFN1YlJlc291cmNlKHN0eWxlLT5kb2MsIHVyaSk7CisgICAgICAgIGlmICgh
cmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gU2F2ZSBhIHBvaW50
ZXIgdG8gdGhlIHJvb3Qgc3R5bGVzaGVldCBzbyB0aGF0IHdlIGNhbiBhY2Nlc3MgaXQgYWdhaW4g
ZnJvbQorICAgICAgICAvLyB0aGlzIGNhbGxiYWNrIGZ1bmN0aW9uIGlmIHRoaXMgeHNsIGRvY3Vt
ZW50IGltcG9ydHMgYW5vdGhlciB4c2wgZG9jdW1lbnQuCisgICAgICAgIEFTU0VSVCghcmVzdWx0
LT5fcHJpdmF0ZSk7CisgICAgICAgIHJlc3VsdC0+X3ByaXZhdGUgPSB4c2xTdHlsZVNoZWV0Owor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0xNTEsMTMgKzE5MSw2IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVy
RnVuYyhjb25zdCB4bWwKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNl
dFhTTFRMb2FkQ2FsbEJhY2soeHNsdERvY0xvYWRlckZ1bmMgZnVuYywgWFNMVFByb2Nlc3Nvciog
cHJvY2Vzc29yLCBEb2NMb2FkZXIqIGxvYWRlcikKLXsKLSAgICB4c2x0U2V0TG9hZGVyRnVuYyhm
dW5jKTsKLSAgICBnbG9iYWxQcm9jZXNzb3IgPSBwcm9jZXNzb3I7Ci0gICAgZ2xvYmFsRG9jTG9h
ZGVyID0gbG9hZGVyOwotfQotCiBzdGF0aWMgaW50IHdyaXRlVG9WZWN0b3Iodm9pZCogY29udGV4
dCwgY29uc3QgY2hhciogYnVmZmVyLCBpbnQgbGVuKQogewogICAgIFZlY3RvcjxVQ2hhcj4mIHJl
c3VsdE91dHB1dCA9ICpzdGF0aWNfY2FzdDxWZWN0b3I8VUNoYXI+Kj4oY29udGV4dCk7CkBAIC0y
MjEsNiArMjU0LDE4IEBAIHN0YXRpYyB2b2lkIGZyZWVYc2x0UGFyYW1BcnJheShjb25zdCBjaGEK
ICAgICBmYXN0RnJlZShwYXJhbXMpOwogfQogCitzdGF0aWMgdm9pZCBjbGVhclNhdmVkU3R5bGVT
aGVldFBvaW50ZXJzKHhzbHRTdHlsZXNoZWV0UHRyIHN0eWxlKQoreworICAgIGlmICghc3R5bGUg
fHwgIXN0eWxlLT5kb2MpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChzdHlsZS0+ZG9j
LT5fcHJpdmF0ZSk7CisgICAgc3R5bGUtPmRvYy0+X3ByaXZhdGUgPSAwOworCisgICAgZm9yICh4
c2x0U3R5bGVzaGVldFB0ciBpbXBvcnQgPSBzdHlsZS0+aW1wb3J0czsgaW1wb3J0OyBpbXBvcnQg
PSBpbXBvcnQtPm5leHQpCisgICAgICAgIGNsZWFyU2F2ZWRTdHlsZVNoZWV0UG9pbnRlcnMoaW1w
b3J0KTsKK30KKwogc3RhdGljIHhzbHRTdHlsZXNoZWV0UHRyIHhzbHRTdHlsZXNoZWV0UG9pbnRl
cihSZWZQdHI8WFNMU3R5bGVTaGVldD4mIGNhY2hlZFN0eWxlc2hlZXQsIE5vZGUqIHN0eWxlc2hl
ZXRSb290Tm9kZSkKIHsKICAgICBpZiAoIWNhY2hlZFN0eWxlc2hlZXQgJiYgc3R5bGVzaGVldFJv
b3ROb2RlKSB7CkBAIC0yMzAsMTAgKzI3NSwyMyBAQCBzdGF0aWMgeHNsdFN0eWxlc2hlZXRQdHIg
eHNsdFN0eWxlc2hlZXRQCiAgICAgICAgIGNhY2hlZFN0eWxlc2hlZXQtPnBhcnNlU3RyaW5nKGNy
ZWF0ZU1hcmt1cChzdHlsZXNoZWV0Um9vdE5vZGUpKTsKICAgICB9CiAKLSAgICBpZiAoIWNhY2hl
ZFN0eWxlc2hlZXQgfHwgIWNhY2hlZFN0eWxlc2hlZXQtPmRvY3VtZW50KCkpCisgICAgaWYgKCFj
YWNoZWRTdHlsZXNoZWV0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHhtbERvY1B0ciB4c2xE
b2N1bWVudCA9IGNhY2hlZFN0eWxlc2hlZXQtPmRvY3VtZW50KCk7CisgICAgaWYgKCF4c2xEb2N1
bWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gY2FjaGVkU3R5bGVzaGVldC0+
Y29tcGlsZVN0eWxlU2hlZXQoKTsKKyAgICAvLyBTYXZlIGEgcG9pbnRlciB0byB0aGUgc3R5bGVz
aGVldCBzbyB0aGF0IHdlIGNhbiBhY2Nlc3MgaXQgZnJvbSB0aGUgbGlieHNsdCBsb2FkZXIgY2Fs
bGJhY2suCisgICAgdm9pZCogb2xkID0geHNsRG9jdW1lbnQtPl9wcml2YXRlOworICAgIHhzbERv
Y3VtZW50LT5fcHJpdmF0ZSA9IGNhY2hlZFN0eWxlc2hlZXQuZ2V0KCk7CisgICAgcmVnaXN0ZXJl
ZFhTTFN0eWxlU2hlZXRzKCkuYWRkKGNhY2hlZFN0eWxlc2hlZXQuZ2V0KCkpOworCisgICAgeHNs
dFN0eWxlc2hlZXRQdHIgcmVzdWx0ID0gY2FjaGVkU3R5bGVzaGVldC0+Y29tcGlsZVN0eWxlU2hl
ZXQoKTsKKyAgICByZWdpc3RlcmVkWFNMU3R5bGVTaGVldHMoKS5yZW1vdmUoY2FjaGVkU3R5bGVz
aGVldC5nZXQoKSk7CisgICAgY2xlYXJTYXZlZFN0eWxlU2hlZXRQb2ludGVycyhyZXN1bHQpOwor
ICAgIHhzbERvY3VtZW50LT5fcHJpdmF0ZSA9IG9sZDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQog
CiBzdGF0aWMgaW5saW5lIHhtbERvY1B0ciB4bWxEb2NQdHJGcm9tTm9kZShOb2RlKiBzb3VyY2VO
b2RlLCBib29sJiBzaG91bGREZWxldGUpCkBAIC0yNzMsMTIgKzMzMSwxMCBAQCBzdGF0aWMgaW5s
aW5lIFN0cmluZyByZXN1bHRNSU1FVHlwZSh4bWxECiAKIGJvb2wgWFNMVFByb2Nlc3Nvcjo6dHJh
bnNmb3JtVG9TdHJpbmcoTm9kZSogc291cmNlTm9kZSwgU3RyaW5nJiBtaW1lVHlwZSwgU3RyaW5n
JiByZXN1bHRTdHJpbmcsIFN0cmluZyYgcmVzdWx0RW5jb2RpbmcpCiB7Ci0gICAgUmVmUHRyPERv
Y3VtZW50PiBvd25lckRvY3VtZW50ID0gc291cmNlTm9kZS0+ZG9jdW1lbnQoKTsKLQotICAgIHNl
dFhTTFRMb2FkQ2FsbEJhY2soZG9jTG9hZGVyRnVuYywgdGhpcywgb3duZXJEb2N1bWVudC0+ZG9j
TG9hZGVyKCkpOworICAgIHhzbHRTZXRMb2FkZXJGdW5jKGRvY0xvYWRlckZ1bmMpOwogICAgIHhz
bHRTdHlsZXNoZWV0UHRyIHNoZWV0ID0geHNsdFN0eWxlc2hlZXRQb2ludGVyKG1fc3R5bGVzaGVl
dCwgbV9zdHlsZXNoZWV0Um9vdE5vZGUuZ2V0KCkpOwogICAgIGlmICghc2hlZXQpIHsKLSAgICAg
ICAgc2V0WFNMVExvYWRDYWxsQmFjaygwLCAwLCAwKTsKKyAgICAgICAgeHNsdFNldExvYWRlckZ1
bmMoMCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgbV9zdHlsZXNoZWV0LT5j
bGVhckRvY3VtZW50cygpOwpAQCAtMjk3LDYgKzM1MywxMiBAQCBib29sIFhTTFRQcm9jZXNzb3I6
OnRyYW5zZm9ybVRvU3RyaW5nKE5vCiAgICAgICAgIHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyIHRy
YW5zZm9ybUNvbnRleHQgPSB4c2x0TmV3VHJhbnNmb3JtQ29udGV4dChzaGVldCwgc291cmNlRG9j
KTsKICAgICAgICAgcmVnaXN0ZXJYU0xURXh0ZW5zaW9ucyh0cmFuc2Zvcm1Db250ZXh0KTsKIAor
ICAgICAgICAvLyBTYXZlIGEgcG9pbnRlciB0byB0aGlzIFhTTFRQcm9jZXNzb3Igc28gdGhhdCB3
ZSBjYW4gYWNjZXNzIGl0IGZyb20gdGhlIGxpYnhzbHQgbG9hZGVyIGNhbGxiYWNrLgorICAgICAg
ICBBU1NFUlQoIXRyYW5zZm9ybUNvbnRleHQtPl9wcml2YXRlKTsKKyAgICAgICAgdHJhbnNmb3Jt
Q29udGV4dC0+X3ByaXZhdGUgPSB0aGlzOworICAgICAgICByZWdpc3RlcmVkWFNMVFByb2Nlc3Nv
cnMoKS5hZGQodGhpcyk7CisgICAgICAgIG1fc291cmNlTm9kZSA9IHNvdXJjZU5vZGU7CisKICAg
ICAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc3Pjog
WFNMVCBwcm9jZXNzb3IgPHhzbDpzb3J0PiBhbGdvcml0aG0gb25seSBjb21wYXJlcyBieSBjb2Rl
IHBvaW50LgogICAgICAgICB4c2x0U2V0Q3R4dFNvcnRGdW5jKHRyYW5zZm9ybUNvbnRleHQsIHhz
bHRVbmljb2RlU29ydEZ1bmN0aW9uKTsKIApAQCAtMzA5LDYgKzM3MSw3IEBAIGJvb2wgWFNMVFBy
b2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmcoTm8KICAgICAgICAgeHNsdFF1b3RlVXNlclBhcmFt
cyh0cmFuc2Zvcm1Db250ZXh0LCBwYXJhbXMpOwogICAgICAgICB4bWxEb2NQdHIgcmVzdWx0RG9j
ID0geHNsdEFwcGx5U3R5bGVzaGVldFVzZXIoc2hlZXQsIHNvdXJjZURvYywgMCwgMCwgMCwgdHJh
bnNmb3JtQ29udGV4dCk7CiAKKyAgICAgICAgcmVnaXN0ZXJlZFhTTFRQcm9jZXNzb3JzKCkucmVt
b3ZlKHRoaXMpOwogICAgICAgICB4c2x0RnJlZVRyYW5zZm9ybUNvbnRleHQodHJhbnNmb3JtQ29u
dGV4dCk7CiAgICAgICAgIGZyZWVYc2x0UGFyYW1BcnJheShwYXJhbXMpOwogCkBAIC0zMjMsOSAr
Mzg2LDEwIEBAIGJvb2wgWFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmcoTm8KICAgICB9
CiAKICAgICBzaGVldC0+bWV0aG9kID0gb3JpZ01ldGhvZDsKLSAgICBzZXRYU0xUTG9hZENhbGxC
YWNrKDAsIDAsIDApOworICAgIHhzbHRTZXRMb2FkZXJGdW5jKDApOwogICAgIHhzbHRGcmVlU3R5
bGVzaGVldChzaGVldCk7CiAgICAgbV9zdHlsZXNoZWV0ID0gMDsKKyAgICBtX3NvdXJjZU5vZGUg
PSAwOwogCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60857</attachid>
            <date>2010-07-08 02:45:14 -0700</date>
            <delta_ts>2010-09-06 06:23:05 -0700</delta_ts>
            <desc>New proposed patch</desc>
            <filename>bug41348_0708.patch</filename>
            <type>text/plain</type>
            <size>11176</size>
            <attacher name="Andreas Wictor">andreas.wictor</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjYwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDctMDcgIEFuZHJlYXMgV2ljdG9yICA8YW5kcmVhcy53aWN0
b3JAeGNlcmlvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBYU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
MzQ4CisKKyAgICAgICAgUmVtb3ZlIHRoZSBnbG9iYWxQcm9jZXNzb3IgYW5kIGdsb2JhbERvY0xv
YWRlciBnbG9iYWwgdmFyaWFibGVzCisgICAgICAgIGJ5IHVzaW5nIHRoZSBfcHJpdmF0ZSBmaWVs
ZCB0aGF0IGV4aXN0cyBvbiBtb3N0IGxpYnhtbCBzdHJ1Y3RzLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgZXhpc3RpbmcgdGVzdHMgY292ZXJzIHRoaXMuCisKKyAgICAgICAgKiB4bWwvWFNMVFBy
b2Nlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6c291cmNlTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpYU0xUUHJvY2Vzc29yKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVn
aXN0ZXJlZFhTTFRQcm9jZXNzb3JzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyZWRYU0xT
dHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OmNsZWFyU2F2ZWRTdHlsZVNoZWV0UG9pbnRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6eHNsdFN0eWxlc2hlZXRQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNz
b3I6OnRyYW5zZm9ybVRvU3RyaW5nKToKKwogMjAxMC0wNy0wNiAgR3VzdGF2byBOb3JvbmhhIFNp
bHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBVbnJldmll
d2VkLgpJbmRleDogV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuaAkocmV2aXNpb24gNjI2MDYpCisrKyBXZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDE2ICs2NywxOSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgLy8gT25seSBmb3IgbGliWFNMVCBjYWxsYmFja3MKICAgICBYU0xTdHls
ZVNoZWV0KiB4c2xTdHlsZXNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZXNoZWV0LmdldCgp
OyB9CisgICAgTm9kZSogc291cmNlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlTm9kZTsg
fQogI2VuZGlmCiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhcmFtZXRl
ck1hcDsKIAogcHJpdmF0ZToKLSAgICBYU0xUUHJvY2Vzc29yKCkgeyB9CisgICAgWFNMVFByb2Nl
c3NvcigpIDogbV9zb3VyY2VOb2RlKDApIHsgfQogCiAgICAgUmVmUHRyPFhTTFN0eWxlU2hlZXQ+
IG1fc3R5bGVzaGVldDsKICAgICBSZWZQdHI8Tm9kZT4gbV9zdHlsZXNoZWV0Um9vdE5vZGU7CiAg
ICAgUGFyYW1ldGVyTWFwIG1fcGFyYW1ldGVyczsKKworICAgIE5vZGUqIG1fc291cmNlTm9kZTsg
Ly8gU291cmNlIG5vZGUgaXMgb25seSBub24tbnVsbCBpbiB0cmFuc2Zvcm1Ub1N0cmluZygpLCBz
byB0aGlzIGNhbm5vdCBiZWNvbWUgYSBkYW5nbGluZyBwb2ludGVyLgogfTsKIAogfQpJbmRleDog
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAkocmV2aXNpb24gNjI2MDYpCisrKyBXZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDcgQEAKICNpbmNsdWRlIDxsaWJ4c2x0L3ZhcmlhYmxlcy5oPgogI2luY2x1ZGUgPGxpYnhz
bHQveHNsdHV0aWxzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKQEAgLTk0LDIxICs5NSw0MSBAQCB2b2lkIFhTTFRQcm9jZXNzb3I6OnBh
cnNlRXJyb3JGdW5jKHZvaWQqCiAgICAgY29uc29sZS0+YWRkTWVzc2FnZShYTUxNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgbGV2ZWwsIGVycm9yLT5tZXNzYWdlLCBlcnJvci0+bGluZSwg
ZXJyb3ItPmZpbGUpOwogfQogCi0vLyBGSVhNRTogVGhlcmUgc2VlbXMgdG8gYmUgbm8gd2F5IHRv
IGNvbnRyb2wgdGhlIGN0eHQgcG9pbnRlciBmb3IgbG9hZGluZyBoZXJlLCB0aHVzIHdlIGhhdmUg
Z2xvYmFscy4KLXN0YXRpYyBYU0xUUHJvY2Vzc29yKiBnbG9iYWxQcm9jZXNzb3IgPSAwOwotc3Rh
dGljIERvY0xvYWRlciogZ2xvYmFsRG9jTG9hZGVyID0gMDsKK3N0YXRpYyBIYXNoU2V0PFhTTFRQ
cm9jZXNzb3IqPiYgcmVnaXN0ZXJlZFhTTFRQcm9jZXNzb3JzKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEhhc2hTZXQ8WFNMVFByb2Nlc3Nvcio+LCB4c2x0UHJvY2Vzc29ycywgKCkpOwor
ICAgIHJldHVybiB4c2x0UHJvY2Vzc29yczsKK30KKworc3RhdGljIEhhc2hTZXQ8WFNMU3R5bGVT
aGVldCo+JiByZWdpc3RlcmVkWFNMU3R5bGVTaGVldHMoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoSGFzaFNldDxYU0xTdHlsZVNoZWV0Kj4sIHhzbFN0eWxlU2hlZXRzLCAoKSk7CisgICAg
cmV0dXJuIHhzbFN0eWxlU2hlZXRzOworfQorCiBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1
bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeG1sRGljdFB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBv
cHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogY3R4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzbHRMb2FkVHlwZSB0eXBlKQog
ewotICAgIGlmICghZ2xvYmFsUHJvY2Vzc29yKQotICAgICAgICByZXR1cm4gMDsKLQogICAgIHN3
aXRjaCAodHlwZSkgewogICAgIGNhc2UgWFNMVF9MT0FEX0RPQ1VNRU5UOiB7Ci0gICAgICAgIHhz
bHRUcmFuc2Zvcm1Db250ZXh0UHRyIGNvbnRleHQgPSAoeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIp
Y3R4dDsKKyAgICAgICAgeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIgY29udGV4dCA9IHN0YXRpY19j
YXN0PHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyPihjdHh0KTsKKyAgICAgICAgWFNMVFByb2Nlc3Nv
ciogcHJvY2Vzc29yID0gc3RhdGljX2Nhc3Q8WFNMVFByb2Nlc3Nvcio+KGNvbnRleHQtPl9wcml2
YXRlKTsKKyAgICAgICAgaWYgKCFwcm9jZXNzb3IgfHwgSGFzaFRyYWl0czxYU0xUUHJvY2Vzc29y
Kj46OmlzRGVsZXRlZFZhbHVlKHByb2Nlc3NvcikKKyAgICAgICAgICAgIHx8ICFyZWdpc3RlcmVk
WFNMVFByb2Nlc3NvcnMoKS5jb250YWlucyhwcm9jZXNzb3IpKSB7CisgICAgICAgICAgICBzdGF0
aWMgYm9vbCBlcnJvck1lc3NhZ2VQcmludGVkID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWVy
cm9yTWVzc2FnZVByaW50ZWQpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldl
YktpdCBYU0xUIGRvY3VtZW50IGxvYWRlciB3YXMgY2FsbGVkIHdpdGggdW5rbm93biB0cmFuc2Zv
cm1hdGlvbiBjb250ZXh0LiIpOworICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZVByaW50ZWQg
PSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0K
KworICAgICAgICBSZWZQdHI8RG9jdW1lbnQ+IG93bmVyRG9jdW1lbnQgPSBwcm9jZXNzb3ItPnNv
dXJjZU5vZGUoKS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgRG9jTG9hZGVyKiBkb2NMb2FkZXIgPSBv
d25lckRvY3VtZW50LT5kb2NMb2FkZXIoKTsKKwogICAgICAgICB4bWxDaGFyKiBiYXNlID0geG1s
Tm9kZUdldEJhc2UoY29udGV4dC0+ZG9jdW1lbnQtPmRvYywgY29udGV4dC0+bm9kZSk7CiAgICAg
ICAgIEtVUkwgdXJsKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihiYXNlKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVyaSkpOwogICAg
ICAgICB4bWxGcmVlKGJhc2UpOwpAQCAtMTE3LDE4ICsxMzgsMTggQEAgc3RhdGljIHhtbERvY1B0
ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbAogCiAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOwog
Ci0gICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxEb2NMb2FkZXItPmZyYW1lKCkg
JiYgZ2xvYmFsRG9jTG9hZGVyLT5kb2MoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1
cmwpOworICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZG9jTG9hZGVyLT5mcmFtZSgpICYm
IGRvY0xvYWRlci0+ZG9jKCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKTsKICAg
ICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7Ci0gICAgICAgICAgICBnbG9iYWxEb2NMb2FkZXIt
PmZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHVybCwgQWxsb3dT
dG9yZWRDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKLSAgICAgICAgICAgIHJl
cXVlc3RBbGxvd2VkID0gZ2xvYmFsRG9jTG9hZGVyLT5kb2MoKS0+c2VjdXJpdHlPcmlnaW4oKS0+
Y2FuUmVxdWVzdChyZXNwb25zZS51cmwoKSk7CisgICAgICAgICAgICBkb2NMb2FkZXItPmZyYW1l
KCktPmxvYWRlcigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHVybCwgQWxsb3dTdG9yZWRD
cmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKKyAgICAgICAgICAgIHJlcXVlc3RB
bGxvd2VkID0gZG9jTG9hZGVyLT5kb2MoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChy
ZXNwb25zZS51cmwoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFyZXF1ZXN0QWxsb3dlZCkg
ewogICAgICAgICAgICAgZGF0YS5jbGVhcigpOwotICAgICAgICAgICAgZ2xvYmFsRG9jTG9hZGVy
LT5wcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UodXJsKTsKKyAgICAgICAgICAgIGRvY0xvYWRlci0+
cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKHVybCk7CiAgICAgICAgIH0KIAogICAgICAgICBDb25z
b2xlKiBjb25zb2xlID0gMDsKLSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGdsb2JhbFByb2Nl
c3Nvci0+eHNsU3R5bGVzaGVldCgpLT5vd25lckRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBwcm9jZXNzb3ItPnhzbFN0eWxlc2hlZXQoKS0+b3duZXJEb2N1
bWVudCgpLT5mcmFtZSgpKQogICAgICAgICAgICAgY29uc29sZSA9IGZyYW1lLT5kb21XaW5kb3co
KS0+Y29uc29sZSgpOwogICAgICAgICB4bWxTZXRTdHJ1Y3R1cmVkRXJyb3JGdW5jKGNvbnNvbGUs
IFhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jKTsKICAgICAgICAgeG1sU2V0R2VuZXJpY0Vy
cm9yRnVuYyhjb25zb2xlLCBYU0xUUHJvY2Vzc29yOjpnZW5lcmljRXJyb3JGdW5jKTsKQEAgLTE0
Miw4ICsxNjMsMjkgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbAog
CiAgICAgICAgIHJldHVybiBkb2M7CiAgICAgfQotICAgIGNhc2UgWFNMVF9MT0FEX1NUWUxFU0hF
RVQ6Ci0gICAgICAgIHJldHVybiBnbG9iYWxQcm9jZXNzb3ItPnhzbFN0eWxlc2hlZXQoKS0+bG9j
YXRlU3R5bGVzaGVldFN1YlJlc291cmNlKCgoeHNsdFN0eWxlc2hlZXRQdHIpY3R4dCktPmRvYywg
dXJpKTsKKyAgICBjYXNlIFhTTFRfTE9BRF9TVFlMRVNIRUVUOiB7CisgICAgICAgIHhzbHRTdHls
ZXNoZWV0UHRyIHN0eWxlID0gc3RhdGljX2Nhc3Q8eHNsdFN0eWxlc2hlZXRQdHI+KGN0eHQpOwor
ICAgICAgICBYU0xTdHlsZVNoZWV0KiB4c2xTdHlsZVNoZWV0ID0gc3RhdGljX2Nhc3Q8WFNMU3R5
bGVTaGVldCo+KHN0eWxlLT5kb2MtPl9wcml2YXRlKTsKKyAgICAgICAgaWYgKCF4c2xTdHlsZVNo
ZWV0IHx8IEhhc2hUcmFpdHM8WFNMU3R5bGVTaGVldCo+Ojppc0RlbGV0ZWRWYWx1ZSh4c2xTdHls
ZVNoZWV0KQorICAgICAgICAgICAgfHwgIXJlZ2lzdGVyZWRYU0xTdHlsZVNoZWV0cygpLmNvbnRh
aW5zKHhzbFN0eWxlU2hlZXQpKSB7CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcnJvck1lc3Nh
Z2VQcmludGVkID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWVycm9yTWVzc2FnZVByaW50ZWQp
IHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldlYktpdCBYU0xUIGRvY3VtZW50
IGxvYWRlciB3YXMgY2FsbGVkIHdpdGggdW5rbm93biB0cmFuc2Zvcm1hdGlvbiBjb250ZXh0LiIp
OworICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZVByaW50ZWQgPSB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICB4bWxEb2NQ
dHIgcmVzdWx0ID0geHNsU3R5bGVTaGVldC0+bG9jYXRlU3R5bGVzaGVldFN1YlJlc291cmNlKHN0
eWxlLT5kb2MsIHVyaSk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJu
IDA7CisKKyAgICAgICAgLy8gU2F2ZSBhIHBvaW50ZXIgdG8gdGhlIHJvb3Qgc3R5bGVzaGVldCBz
byB0aGF0IHdlIGNhbiBhY2Nlc3MgaXQgYWdhaW4gZnJvbQorICAgICAgICAvLyB0aGlzIGNhbGxi
YWNrIGZ1bmN0aW9uIGlmIHRoaXMgeHNsIGRvY3VtZW50IGltcG9ydHMgYW5vdGhlciB4c2wgZG9j
dW1lbnQuCisgICAgICAgIEFTU0VSVCghcmVzdWx0LT5fcHJpdmF0ZSk7CisgICAgICAgIHJlc3Vs
dC0+X3ByaXZhdGUgPSB4c2xTdHlsZVNoZWV0OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNTEsMTMgKzE5Myw2
IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWwKICAgICByZXR1cm4g
MDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldFhTTFRMb2FkQ2FsbEJhY2soeHNsdERvY0xv
YWRlckZ1bmMgZnVuYywgWFNMVFByb2Nlc3NvciogcHJvY2Vzc29yLCBEb2NMb2FkZXIqIGxvYWRl
cikKLXsKLSAgICB4c2x0U2V0TG9hZGVyRnVuYyhmdW5jKTsKLSAgICBnbG9iYWxQcm9jZXNzb3Ig
PSBwcm9jZXNzb3I7Ci0gICAgZ2xvYmFsRG9jTG9hZGVyID0gbG9hZGVyOwotfQotCiBzdGF0aWMg
aW50IHdyaXRlVG9WZWN0b3Iodm9pZCogY29udGV4dCwgY29uc3QgY2hhciogYnVmZmVyLCBpbnQg
bGVuKQogewogICAgIFZlY3RvcjxVQ2hhcj4mIHJlc3VsdE91dHB1dCA9ICpzdGF0aWNfY2FzdDxW
ZWN0b3I8VUNoYXI+Kj4oY29udGV4dCk7CkBAIC0yMjEsNiArMjU2LDE4IEBAIHN0YXRpYyB2b2lk
IGZyZWVYc2x0UGFyYW1BcnJheShjb25zdCBjaGEKICAgICBmYXN0RnJlZShwYXJhbXMpOwogfQog
CitzdGF0aWMgdm9pZCBjbGVhclNhdmVkU3R5bGVTaGVldFBvaW50ZXJzKHhzbHRTdHlsZXNoZWV0
UHRyIHN0eWxlKQoreworICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5kb2MpCisgICAgICAgIHJl
dHVybjsKKworICAgIEFTU0VSVChzdHlsZS0+ZG9jLT5fcHJpdmF0ZSk7CisgICAgc3R5bGUtPmRv
Yy0+X3ByaXZhdGUgPSAwOworCisgICAgZm9yICh4c2x0U3R5bGVzaGVldFB0ciBpbXBvcnQgPSBz
dHlsZS0+aW1wb3J0czsgaW1wb3J0OyBpbXBvcnQgPSBpbXBvcnQtPm5leHQpCisgICAgICAgIGNs
ZWFyU2F2ZWRTdHlsZVNoZWV0UG9pbnRlcnMoaW1wb3J0KTsKK30KKwogc3RhdGljIHhzbHRTdHls
ZXNoZWV0UHRyIHhzbHRTdHlsZXNoZWV0UG9pbnRlcihSZWZQdHI8WFNMU3R5bGVTaGVldD4mIGNh
Y2hlZFN0eWxlc2hlZXQsIE5vZGUqIHN0eWxlc2hlZXRSb290Tm9kZSkKIHsKICAgICBpZiAoIWNh
Y2hlZFN0eWxlc2hlZXQgJiYgc3R5bGVzaGVldFJvb3ROb2RlKSB7CkBAIC0yMzAsMTAgKzI3Nywy
MyBAQCBzdGF0aWMgeHNsdFN0eWxlc2hlZXRQdHIgeHNsdFN0eWxlc2hlZXRQCiAgICAgICAgIGNh
Y2hlZFN0eWxlc2hlZXQtPnBhcnNlU3RyaW5nKGNyZWF0ZU1hcmt1cChzdHlsZXNoZWV0Um9vdE5v
ZGUpKTsKICAgICB9CiAKLSAgICBpZiAoIWNhY2hlZFN0eWxlc2hlZXQgfHwgIWNhY2hlZFN0eWxl
c2hlZXQtPmRvY3VtZW50KCkpCisgICAgaWYgKCFjYWNoZWRTdHlsZXNoZWV0KQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIHhtbERvY1B0ciB4c2xEb2N1bWVudCA9IGNhY2hlZFN0eWxlc2hlZXQt
PmRvY3VtZW50KCk7CisgICAgaWYgKCF4c2xEb2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICByZXR1cm4gY2FjaGVkU3R5bGVzaGVldC0+Y29tcGlsZVN0eWxlU2hlZXQoKTsKKyAgICAv
LyBTYXZlIGEgcG9pbnRlciB0byB0aGUgc3R5bGVzaGVldCBzbyB0aGF0IHdlIGNhbiBhY2Nlc3Mg
aXQgZnJvbSB0aGUgbGlieHNsdCBsb2FkZXIgY2FsbGJhY2suCisgICAgdm9pZCogb2xkID0geHNs
RG9jdW1lbnQtPl9wcml2YXRlOworICAgIHhzbERvY3VtZW50LT5fcHJpdmF0ZSA9IGNhY2hlZFN0
eWxlc2hlZXQuZ2V0KCk7CisgICAgcmVnaXN0ZXJlZFhTTFN0eWxlU2hlZXRzKCkuYWRkKGNhY2hl
ZFN0eWxlc2hlZXQuZ2V0KCkpOworCisgICAgeHNsdFN0eWxlc2hlZXRQdHIgcmVzdWx0ID0gY2Fj
aGVkU3R5bGVzaGVldC0+Y29tcGlsZVN0eWxlU2hlZXQoKTsKKyAgICByZWdpc3RlcmVkWFNMU3R5
bGVTaGVldHMoKS5yZW1vdmUoY2FjaGVkU3R5bGVzaGVldC5nZXQoKSk7CisgICAgY2xlYXJTYXZl
ZFN0eWxlU2hlZXRQb2ludGVycyhyZXN1bHQpOworICAgIHhzbERvY3VtZW50LT5fcHJpdmF0ZSA9
IG9sZDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgaW5saW5lIHhtbERvY1B0ciB4
bWxEb2NQdHJGcm9tTm9kZShOb2RlKiBzb3VyY2VOb2RlLCBib29sJiBzaG91bGREZWxldGUpCkBA
IC0yNzMsMTIgKzMzMywxMCBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyByZXN1bHRNSU1FVHlwZSh4
bWxECiAKIGJvb2wgWFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmcoTm9kZSogc291cmNl
Tm9kZSwgU3RyaW5nJiBtaW1lVHlwZSwgU3RyaW5nJiByZXN1bHRTdHJpbmcsIFN0cmluZyYgcmVz
dWx0RW5jb2RpbmcpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBvd25lckRvY3VtZW50ID0gc291
cmNlTm9kZS0+ZG9jdW1lbnQoKTsKLQotICAgIHNldFhTTFRMb2FkQ2FsbEJhY2soZG9jTG9hZGVy
RnVuYywgdGhpcywgb3duZXJEb2N1bWVudC0+ZG9jTG9hZGVyKCkpOworICAgIHhzbHRTZXRMb2Fk
ZXJGdW5jKGRvY0xvYWRlckZ1bmMpOwogICAgIHhzbHRTdHlsZXNoZWV0UHRyIHNoZWV0ID0geHNs
dFN0eWxlc2hlZXRQb2ludGVyKG1fc3R5bGVzaGVldCwgbV9zdHlsZXNoZWV0Um9vdE5vZGUuZ2V0
KCkpOwogICAgIGlmICghc2hlZXQpIHsKLSAgICAgICAgc2V0WFNMVExvYWRDYWxsQmFjaygwLCAw
LCAwKTsKKyAgICAgICAgeHNsdFNldExvYWRlckZ1bmMoMCk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgbV9zdHlsZXNoZWV0LT5jbGVhckRvY3VtZW50cygpOwpAQCAtMjk3LDYg
KzM1NSwxMiBAQCBib29sIFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvU3RyaW5nKE5vCiAgICAg
ICAgIHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyIHRyYW5zZm9ybUNvbnRleHQgPSB4c2x0TmV3VHJh
bnNmb3JtQ29udGV4dChzaGVldCwgc291cmNlRG9jKTsKICAgICAgICAgcmVnaXN0ZXJYU0xURXh0
ZW5zaW9ucyh0cmFuc2Zvcm1Db250ZXh0KTsKIAorICAgICAgICAvLyBTYXZlIGEgcG9pbnRlciB0
byB0aGlzIFhTTFRQcm9jZXNzb3Igc28gdGhhdCB3ZSBjYW4gYWNjZXNzIGl0IGZyb20gdGhlIGxp
YnhzbHQgbG9hZGVyIGNhbGxiYWNrLgorICAgICAgICBBU1NFUlQoIXRyYW5zZm9ybUNvbnRleHQt
Pl9wcml2YXRlKTsKKyAgICAgICAgdHJhbnNmb3JtQ29udGV4dC0+X3ByaXZhdGUgPSB0aGlzOwor
ICAgICAgICByZWdpc3RlcmVkWFNMVFByb2Nlc3NvcnMoKS5hZGQodGhpcyk7CisgICAgICAgIG1f
c291cmNlTm9kZSA9IHNvdXJjZU5vZGU7CisKICAgICAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc3PjogWFNMVCBwcm9jZXNzb3IgPHhzbDpzb3J0PiBh
bGdvcml0aG0gb25seSBjb21wYXJlcyBieSBjb2RlIHBvaW50LgogICAgICAgICB4c2x0U2V0Q3R4
dFNvcnRGdW5jKHRyYW5zZm9ybUNvbnRleHQsIHhzbHRVbmljb2RlU29ydEZ1bmN0aW9uKTsKIApA
QCAtMzA5LDYgKzM3Myw3IEBAIGJvb2wgWFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmco
Tm8KICAgICAgICAgeHNsdFF1b3RlVXNlclBhcmFtcyh0cmFuc2Zvcm1Db250ZXh0LCBwYXJhbXMp
OwogICAgICAgICB4bWxEb2NQdHIgcmVzdWx0RG9jID0geHNsdEFwcGx5U3R5bGVzaGVldFVzZXIo
c2hlZXQsIHNvdXJjZURvYywgMCwgMCwgMCwgdHJhbnNmb3JtQ29udGV4dCk7CiAKKyAgICAgICAg
cmVnaXN0ZXJlZFhTTFRQcm9jZXNzb3JzKCkucmVtb3ZlKHRoaXMpOwogICAgICAgICB4c2x0RnJl
ZVRyYW5zZm9ybUNvbnRleHQodHJhbnNmb3JtQ29udGV4dCk7CiAgICAgICAgIGZyZWVYc2x0UGFy
YW1BcnJheShwYXJhbXMpOwogCkBAIC0zMjMsOSArMzg4LDEwIEBAIGJvb2wgWFNMVFByb2Nlc3Nv
cjo6dHJhbnNmb3JtVG9TdHJpbmcoTm8KICAgICB9CiAKICAgICBzaGVldC0+bWV0aG9kID0gb3Jp
Z01ldGhvZDsKLSAgICBzZXRYU0xUTG9hZENhbGxCYWNrKDAsIDAsIDApOworICAgIHhzbHRTZXRM
b2FkZXJGdW5jKDApOwogICAgIHhzbHRGcmVlU3R5bGVzaGVldChzaGVldCk7CiAgICAgbV9zdHls
ZXNoZWV0ID0gMDsKKyAgICBtX3NvdXJjZU5vZGUgPSAwOwogCiAgICAgcmV0dXJuIHN1Y2Nlc3M7
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66634</attachid>
            <date>2010-09-06 06:23:05 -0700</date>
            <delta_ts>2010-12-23 00:27:27 -0800</delta_ts>
            <desc>New proposed patch</desc>
            <filename>bug41348_0906.patch</filename>
            <type>text/plain</type>
            <size>13421</size>
            <attacher name="Andreas Wictor">andreas.wictor</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjcyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDktMDYgIEFuZHJlYXMgV2ljdG9yICA8YW5kcmVhcy53aWN0
b3JAeGNlcmlvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBYU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
MzQ4CisKKyAgICAgICAgUmVtb3ZlIHRoZSBnbG9iYWxQcm9jZXNzb3IgYW5kIGdsb2JhbERvY0xv
YWRlciBnbG9iYWwgdmFyaWFibGVzCisgICAgICAgIGJ5IHVzaW5nIHRoZSBfcHJpdmF0ZSBmaWVs
ZCB0aGF0IGV4aXN0cyBvbiBtb3N0IGxpYnhtbCBzdHJ1Y3RzLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgZXhpc3RpbmcgdGVzdHMgY292ZXJzIHRoaXMuCisKKyAgICAgICAgKiB4bWwvWFNMU3R5
bGVTaGVldExpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6Y29t
cGlsZVN0eWxlU2hlZXQpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmg6CisgICAgICAg
IChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpzb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlhTTFRQcm9jZXNzb3I6OlhTTFRQcm9jZXNzb3IpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlcmVkWFNMVFByb2Nlc3Nv
cnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJlZFhTTFN0eWxlU2hlZXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJTYXZl
ZFN0eWxlU2hlZXRQb2ludGVycyk6CisgICAgICAgIChXZWJDb3JlOjp4c2x0U3R5bGVzaGVldFBv
aW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJp
bmcpOgorCiAyMDEwLTA5LTAzICBCaGFyYXRod2FhaiBTcmluaXZhc2FuICA8YmhhcmF0aHdhYWou
c0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAkocmV2aXNpb24gNjY3MjQpCisrKyBXZWJDb3Jl
L3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw4ICsy
NDMsNDMgQEAgdm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldChjb25zdAogeHNsdFN0
eWxlc2hlZXRQdHIgWFNMU3R5bGVTaGVldDo6Y29tcGlsZVN0eWxlU2hlZXQoKQogewogICAgIC8v
IEZJWE1FOiBIb29rIHVwIGVycm9yIHJlcG9ydGluZyBmb3IgdGhlIHN0eWxlc2hlZXQgY29tcGls
YXRpb24gcHJvY2Vzcy4KLSAgICBpZiAobV9lbWJlZGRlZCkKLSAgICAgICAgcmV0dXJuIHhzbHRM
b2FkU3R5bGVzaGVldFBJKGRvY3VtZW50KCkpOworICAgIGlmIChtX2VtYmVkZGVkKSB7CisgICAg
ICAgIC8vIFdlIGNhbid0IHVzZSB4c2x0TG9hZFN0eWxlc2hlZXRQSSBoZXJlIGJlY2F1c2Ugd2Ug
dXNlIF9wcml2YXRlIHdoaWNoIHhzbHRMb2FkU3R5bGVzaGVldFBJIGRvZXMgbm90IHByZXNlcnZl
LgorCisgICAgICAgIHhtbERvY1B0ciBkb2MgPSBkb2N1bWVudCgpOworCisgICAgICAgIC8vIFdl
IGhhdmUgdG8gbG9jYXRlIChieSBJRCkgdGhlIGFwcHJvcHJpYXRlIGVtYmVkZGVkIHN0eWxlc2hl
ZXQgZWxlbWVudC4KKyAgICAgICAgeG1sQXR0clB0ciBpZE5vZGUgPSB4bWxHZXRJRChkb2MsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgeG1sQ2hhcio+KGZpbmFsVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSkpOworICAgICAgICBpZiAoIWlkTm9kZSkKKyAgICAgICAgICAgIHJldHVybiAwOwor
CisgICAgICAgIHhtbE5vZGVQdHIgc3VidHJlZSA9IGlkTm9kZS0+cGFyZW50OworICAgICAgICB4
bWxEb2NQdHIgbmV3U3R5bGVzaGVldERvYyA9IHhtbE5ld0RvYygwKTsKKyAgICAgICAgaWYgKCFu
ZXdTdHlsZXNoZWV0RG9jKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gU2hh
cmUgZGljdGlvbmFyeSB3aXRoIG9yaWdpbmFsIGRvY3VtZW50LgorICAgICAgICBuZXdTdHlsZXNo
ZWV0RG9jLT5kaWN0ID0gZG9jLT5kaWN0OworICAgICAgICB4bWxEaWN0UmVmZXJlbmNlKGRvYy0+
ZGljdCk7CisKKyAgICAgICAgeG1sTm9kZVB0ciBuZXd0cmVlID0geG1sRG9jQ29weU5vZGUoc3Vi
dHJlZSwgbmV3U3R5bGVzaGVldERvYywgMSk7CisgICAgICAgIG5ld1N0eWxlc2hlZXREb2MtPlVS
TCA9IHhtbE5vZGVHZXRCYXNlKGRvYywgc3VidHJlZS0+cGFyZW50KTsKKyAgICAgICAgbmV3U3R5
bGVzaGVldERvYy0+X3ByaXZhdGUgPSBkb2MtPl9wcml2YXRlOworCisgICAgICAgIC8vIEFkZCBh
bGwgbmFtZXNwYWNlcyBpbiBzY29wZSBvZiBlbWJlZGRlZCBzdHlsZXNoZWV0IHRvCisgICAgICAg
IC8vIHJvb3QgZWxlbWVudCBvZiBuZXdseSBjcmVhdGVkIHN0eWxlc2hlZXQgZG9jdW1lbnQuCisg
ICAgICAgIHdoaWxlICgoc3VidHJlZSA9IHN1YnRyZWUtPnBhcmVudCkgIT0gcmVpbnRlcnByZXRf
Y2FzdDx4bWxOb2RlUHRyPihkb2MpKSB7CisgICAgICAgICAgICBmb3IgKHhtbE5zUHRyIG5zID0g
c3VidHJlZS0+bnM7IG5zOyBucyA9IG5zLT5uZXh0KQorICAgICAgICAgICAgICAgIHhtbE5ld05z
KG5ld3RyZWUsICBucy0+aHJlZiwgbnMtPnByZWZpeCk7CisgICAgICAgIH0KKworICAgICAgICB4
bWxBZGRDaGlsZChyZWludGVycHJldF9jYXN0PHhtbE5vZGVQdHI+KG5ld1N0eWxlc2hlZXREb2Mp
LCBuZXd0cmVlKTsKKyAgICAgICAgeHNsdFN0eWxlc2hlZXRQdHIgcmVzdWx0ID0geHNsdFBhcnNl
U3R5bGVzaGVldERvYyhuZXdTdHlsZXNoZWV0RG9jKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgICAgICB4bWxGcmVlRG9jKG5ld1N0eWxlc2hlZXREb2MpOworCisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQogCiAgICAgLy8geHNsdFBhcnNlU3R5bGVzaGVldERvYyBtYWtlcyB0
aGUgZG9jdW1lbnQgcGFydCBvZiB0aGUgc3R5bGVzaGVldAogICAgIC8vIHNvIHdlIGhhdmUgdG8g
cmVsZWFzZSBvdXIgcG9pbnRlciB0byBpdC4KSW5kZXg6IFdlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmgJKHJldmlzaW9u
IDY2NzI0KQorKysgV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NywxNiArNjcsMTkgQEAgcHVibGljOgogICAgIAogICAgIC8vIE9ubHkgZm9yIGxpYlhTTFQg
Y2FsbGJhY2tzCiAgICAgWFNMU3R5bGVTaGVldCogeHNsU3R5bGVzaGVldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVzaGVldC5nZXQoKTsgfQorICAgIE5vZGUqIHNvdXJjZU5vZGUoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZU5vZGU7IH0KICNlbmRpZgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiBQYXJhbWV0ZXJNYXA7CiAKIHByaXZhdGU6Ci0gICAgWFNMVFByb2Nlc3Nv
cigpIHsgfQorICAgIFhTTFRQcm9jZXNzb3IoKSA6IG1fc291cmNlTm9kZSgwKSB7IH0KIAogICAg
IFJlZlB0cjxYU0xTdHlsZVNoZWV0PiBtX3N0eWxlc2hlZXQ7CiAgICAgUmVmUHRyPE5vZGU+IG1f
c3R5bGVzaGVldFJvb3ROb2RlOwogICAgIFBhcmFtZXRlck1hcCBtX3BhcmFtZXRlcnM7CisKKyAg
ICBOb2RlKiBtX3NvdXJjZU5vZGU7IC8vIFNvdXJjZSBub2RlIGlzIG9ubHkgbm9uLW51bGwgaW4g
dHJhbnNmb3JtVG9TdHJpbmcoKSwgc28gdGhpcyBjYW5ub3QgYmVjb21lIGEgZGFuZ2xpbmcgcG9p
bnRlci4KIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAJKHJl
dmlzaW9uIDY2NzI0KQorKysgV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8bGlieHNsdC92YXJpYWJs
ZXMuaD4KICNpbmNsdWRlIDxsaWJ4c2x0L3hzbHR1dGlscy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC05NCwyMSArOTUsNDEgQEAg
dm9pZCBYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9yRnVuYyh2b2lkKgogICAgIGNvbnNvbGUtPmFk
ZE1lc3NhZ2UoWE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIGxldmVsLCBlcnJvci0+
bWVzc2FnZSwgZXJyb3ItPmxpbmUsIGVycm9yLT5maWxlKTsKIH0KIAotLy8gRklYTUU6IFRoZXJl
IHNlZW1zIHRvIGJlIG5vIHdheSB0byBjb250cm9sIHRoZSBjdHh0IHBvaW50ZXIgZm9yIGxvYWRp
bmcgaGVyZSwgdGh1cyB3ZSBoYXZlIGdsb2JhbHMuCi1zdGF0aWMgWFNMVFByb2Nlc3NvciogZ2xv
YmFsUHJvY2Vzc29yID0gMDsKLXN0YXRpYyBEb2NMb2FkZXIqIGdsb2JhbERvY0xvYWRlciA9IDA7
CitzdGF0aWMgSGFzaFNldDxYU0xUUHJvY2Vzc29yKj4mIHJlZ2lzdGVyZWRYU0xUUHJvY2Vzc29y
cygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFhTTFRQcm9jZXNzb3IqPiwg
eHNsdFByb2Nlc3NvcnMsICgpKTsKKyAgICByZXR1cm4geHNsdFByb2Nlc3NvcnM7Cit9CisKK3N0
YXRpYyBIYXNoU2V0PFhTTFN0eWxlU2hlZXQqPiYgcmVnaXN0ZXJlZFhTTFN0eWxlU2hlZXRzKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8WFNMU3R5bGVTaGVldCo+LCB4c2xT
dHlsZVNoZWV0cywgKCkpOworICAgIHJldHVybiB4c2xTdHlsZVNoZWV0czsKK30KKwogc3RhdGlj
IHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHhtbERpY3RQdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQqIGN0eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4c2x0TG9hZFR5cGUgdHlwZSkKIHsKLSAgICBpZiAoIWdsb2JhbFByb2Nlc3NvcikKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFhTTFRfTE9BRF9E
T0NVTUVOVDogewotICAgICAgICB4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciBjb250ZXh0ID0gKHhz
bHRUcmFuc2Zvcm1Db250ZXh0UHRyKWN0eHQ7CisgICAgICAgIHhzbHRUcmFuc2Zvcm1Db250ZXh0
UHRyIGNvbnRleHQgPSBzdGF0aWNfY2FzdDx4c2x0VHJhbnNmb3JtQ29udGV4dFB0cj4oY3R4dCk7
CisgICAgICAgIFhTTFRQcm9jZXNzb3IqIHByb2Nlc3NvciA9IHN0YXRpY19jYXN0PFhTTFRQcm9j
ZXNzb3IqPihjb250ZXh0LT5fcHJpdmF0ZSk7CisgICAgICAgIGlmICghcHJvY2Vzc29yIHx8IEhh
c2hUcmFpdHM8WFNMVFByb2Nlc3Nvcio+Ojppc0RlbGV0ZWRWYWx1ZShwcm9jZXNzb3IpCisgICAg
ICAgICAgICB8fCAhcmVnaXN0ZXJlZFhTTFRQcm9jZXNzb3JzKCkuY29udGFpbnMocHJvY2Vzc29y
KSkgeworICAgICAgICAgICAgc3RhdGljIGJvb2wgZXJyb3JNZXNzYWdlUHJpbnRlZCA9IGZhbHNl
OworICAgICAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2VQcmludGVkKSB7CisgICAgICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJXZWJLaXQgWFNMVCBkb2N1bWVudCBsb2FkZXIgd2FzIGNhbGxl
ZCB3aXRoIHVua25vd24gdHJhbnNmb3JtYXRpb24gY29udGV4dC4iKTsKKyAgICAgICAgICAgICAg
ICBlcnJvck1lc3NhZ2VQcmludGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPERvY3VtZW50PiBvd25lckRv
Y3VtZW50ID0gcHJvY2Vzc29yLT5zb3VyY2VOb2RlKCktPmRvY3VtZW50KCk7CisgICAgICAgIERv
Y0xvYWRlciogZG9jTG9hZGVyID0gb3duZXJEb2N1bWVudC0+ZG9jTG9hZGVyKCk7CisKICAgICAg
ICAgeG1sQ2hhciogYmFzZSA9IHhtbE5vZGVHZXRCYXNlKGNvbnRleHQtPmRvY3VtZW50LT5kb2Ms
IGNvbnRleHQtPm5vZGUpOwogICAgICAgICBLVVJMIHVybChLVVJMKFBhcnNlZFVSTFN0cmluZywg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYmFzZSkpLCByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPih1cmkpKTsKICAgICAgICAgeG1sRnJlZShiYXNlKTsKQEAgLTExNywxOCArMTM4
LDE4IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWwKIAogICAgICAg
ICBWZWN0b3I8Y2hhcj4gZGF0YTsKIAotICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xv
YmFsRG9jTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbERvY0xvYWRlci0+ZG9jKCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKTsKKyAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9
IGRvY0xvYWRlci0+ZnJhbWUoKSAmJiBkb2NMb2FkZXItPmRvYygpLT5zZWN1cml0eU9yaWdpbigp
LT5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewotICAgICAg
ICAgICAgZ2xvYmFsRG9jTG9hZGVyLT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSh1cmwsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwg
ZGF0YSk7Ci0gICAgICAgICAgICByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbERvY0xvYWRlci0+ZG9j
KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVzcG9uc2UudXJsKCkpOworICAgICAg
ICAgICAgZG9jTG9hZGVyLT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25v
dXNseSh1cmwsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7
CisgICAgICAgICAgICByZXF1ZXN0QWxsb3dlZCA9IGRvY0xvYWRlci0+ZG9jKCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhblJlcXVlc3QocmVzcG9uc2UudXJsKCkpOwogICAgICAgICB9CiAgICAgICAg
IGlmICghcmVxdWVzdEFsbG93ZWQpIHsKICAgICAgICAgICAgIGRhdGEuY2xlYXIoKTsKLSAgICAg
ICAgICAgIGdsb2JhbERvY0xvYWRlci0+cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKHVybCk7Cisg
ICAgICAgICAgICBkb2NMb2FkZXItPnByaW50QWNjZXNzRGVuaWVkTWVzc2FnZSh1cmwpOwogICAg
ICAgICB9CiAKICAgICAgICAgQ29uc29sZSogY29uc29sZSA9IDA7Ci0gICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBnbG9iYWxQcm9jZXNzb3ItPnhzbFN0eWxlc2hlZXQoKS0+b3duZXJEb2N1bWVu
dCgpLT5mcmFtZSgpKQorICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcHJvY2Vzc29yLT54c2xT
dHlsZXNoZWV0KCktPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAgICAgIGNvbnNv
bGUgPSBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKTsKICAgICAgICAgeG1sU2V0U3RydWN0
dXJlZEVycm9yRnVuYyhjb25zb2xlLCBYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9yRnVuYyk7CiAg
ICAgICAgIHhtbFNldEdlbmVyaWNFcnJvckZ1bmMoY29uc29sZSwgWFNMVFByb2Nlc3Nvcjo6Z2Vu
ZXJpY0Vycm9yRnVuYyk7CkBAIC0xNDIsOCArMTYzLDI5IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9j
TG9hZGVyRnVuYyhjb25zdCB4bWwKIAogICAgICAgICByZXR1cm4gZG9jOwogICAgIH0KLSAgICBj
YXNlIFhTTFRfTE9BRF9TVFlMRVNIRUVUOgotICAgICAgICByZXR1cm4gZ2xvYmFsUHJvY2Vzc29y
LT54c2xTdHlsZXNoZWV0KCktPmxvY2F0ZVN0eWxlc2hlZXRTdWJSZXNvdXJjZSgoKHhzbHRTdHls
ZXNoZWV0UHRyKWN0eHQpLT5kb2MsIHVyaSk7CisgICAgY2FzZSBYU0xUX0xPQURfU1RZTEVTSEVF
VDogeworICAgICAgICB4c2x0U3R5bGVzaGVldFB0ciBzdHlsZSA9IHN0YXRpY19jYXN0PHhzbHRT
dHlsZXNoZWV0UHRyPihjdHh0KTsKKyAgICAgICAgWFNMU3R5bGVTaGVldCogeHNsU3R5bGVTaGVl
dCA9IHN0YXRpY19jYXN0PFhTTFN0eWxlU2hlZXQqPihzdHlsZS0+ZG9jLT5fcHJpdmF0ZSk7Cisg
ICAgICAgIGlmICgheHNsU3R5bGVTaGVldCB8fCBIYXNoVHJhaXRzPFhTTFN0eWxlU2hlZXQqPjo6
aXNEZWxldGVkVmFsdWUoeHNsU3R5bGVTaGVldCkKKyAgICAgICAgICAgIHx8ICFyZWdpc3RlcmVk
WFNMU3R5bGVTaGVldHMoKS5jb250YWlucyh4c2xTdHlsZVNoZWV0KSkgeworICAgICAgICAgICAg
c3RhdGljIGJvb2wgZXJyb3JNZXNzYWdlUHJpbnRlZCA9IGZhbHNlOworICAgICAgICAgICAgaWYg
KCFlcnJvck1lc3NhZ2VQcmludGVkKSB7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJXZWJLaXQgWFNMVCBkb2N1bWVudCBsb2FkZXIgd2FzIGNhbGxlZCB3aXRoIHVua25vd24gdHJh
bnNmb3JtYXRpb24gY29udGV4dC4iKTsKKyAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VQcmlu
dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICB9CisKKyAgICAgICAgeG1sRG9jUHRyIHJlc3VsdCA9IHhzbFN0eWxlU2hlZXQtPmxvY2F0ZVN0
eWxlc2hlZXRTdWJSZXNvdXJjZShzdHlsZS0+ZG9jLCB1cmkpOworICAgICAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIC8vIFNhdmUgYSBwb2ludGVyIHRv
IHRoZSByb290IHN0eWxlc2hlZXQgc28gdGhhdCB3ZSBjYW4gYWNjZXNzIGl0IGFnYWluIGZyb20K
KyAgICAgICAgLy8gdGhpcyBjYWxsYmFjayBmdW5jdGlvbiBpZiB0aGlzIHhzbCBkb2N1bWVudCBp
bXBvcnRzIGFub3RoZXIgeHNsIGRvY3VtZW50LgorICAgICAgICBBU1NFUlQoIXJlc3VsdC0+X3By
aXZhdGUpOworICAgICAgICByZXN1bHQtPl9wcml2YXRlID0geHNsU3R5bGVTaGVldDsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMTUxLDEzICsxOTMsNiBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMo
Y29uc3QgeG1sCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRYU0xU
TG9hZENhbGxCYWNrKHhzbHREb2NMb2FkZXJGdW5jIGZ1bmMsIFhTTFRQcm9jZXNzb3IqIHByb2Nl
c3NvciwgRG9jTG9hZGVyKiBsb2FkZXIpCi17Ci0gICAgeHNsdFNldExvYWRlckZ1bmMoZnVuYyk7
Ci0gICAgZ2xvYmFsUHJvY2Vzc29yID0gcHJvY2Vzc29yOwotICAgIGdsb2JhbERvY0xvYWRlciA9
IGxvYWRlcjsKLX0KLQogc3RhdGljIGludCB3cml0ZVRvVmVjdG9yKHZvaWQqIGNvbnRleHQsIGNv
bnN0IGNoYXIqIGJ1ZmZlciwgaW50IGxlbikKIHsKICAgICBWZWN0b3I8VUNoYXI+JiByZXN1bHRP
dXRwdXQgPSAqc3RhdGljX2Nhc3Q8VmVjdG9yPFVDaGFyPio+KGNvbnRleHQpOwpAQCAtMjIxLDYg
KzI1NiwxOCBAQCBzdGF0aWMgdm9pZCBmcmVlWHNsdFBhcmFtQXJyYXkoY29uc3QgY2hhCiAgICAg
ZmFzdEZyZWUocGFyYW1zKTsKIH0KIAorc3RhdGljIHZvaWQgY2xlYXJTYXZlZFN0eWxlU2hlZXRQ
b2ludGVycyh4c2x0U3R5bGVzaGVldFB0ciBzdHlsZSkKK3sKKyAgICBpZiAoIXN0eWxlIHx8ICFz
dHlsZS0+ZG9jKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoc3R5bGUtPmRvYy0+X3By
aXZhdGUpOworICAgIHN0eWxlLT5kb2MtPl9wcml2YXRlID0gMDsKKworICAgIGZvciAoeHNsdFN0
eWxlc2hlZXRQdHIgaW1wb3J0ID0gc3R5bGUtPmltcG9ydHM7IGltcG9ydDsgaW1wb3J0ID0gaW1w
b3J0LT5uZXh0KQorICAgICAgICBjbGVhclNhdmVkU3R5bGVTaGVldFBvaW50ZXJzKGltcG9ydCk7
Cit9CisKIHN0YXRpYyB4c2x0U3R5bGVzaGVldFB0ciB4c2x0U3R5bGVzaGVldFBvaW50ZXIoUmVm
UHRyPFhTTFN0eWxlU2hlZXQ+JiBjYWNoZWRTdHlsZXNoZWV0LCBOb2RlKiBzdHlsZXNoZWV0Um9v
dE5vZGUpCiB7CiAgICAgaWYgKCFjYWNoZWRTdHlsZXNoZWV0ICYmIHN0eWxlc2hlZXRSb290Tm9k
ZSkgewpAQCAtMjMwLDEwICsyNzcsMjMgQEAgc3RhdGljIHhzbHRTdHlsZXNoZWV0UHRyIHhzbHRT
dHlsZXNoZWV0UAogICAgICAgICBjYWNoZWRTdHlsZXNoZWV0LT5wYXJzZVN0cmluZyhjcmVhdGVN
YXJrdXAoc3R5bGVzaGVldFJvb3ROb2RlKSk7CiAgICAgfQogCi0gICAgaWYgKCFjYWNoZWRTdHls
ZXNoZWV0IHx8ICFjYWNoZWRTdHlsZXNoZWV0LT5kb2N1bWVudCgpKQorICAgIGlmICghY2FjaGVk
U3R5bGVzaGVldCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB4bWxEb2NQdHIgeHNsRG9jdW1l
bnQgPSBjYWNoZWRTdHlsZXNoZWV0LT5kb2N1bWVudCgpOworICAgIGlmICgheHNsRG9jdW1lbnQp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGNhY2hlZFN0eWxlc2hlZXQtPmNvbXBp
bGVTdHlsZVNoZWV0KCk7CisgICAgLy8gU2F2ZSBhIHBvaW50ZXIgdG8gdGhlIHN0eWxlc2hlZXQg
c28gdGhhdCB3ZSBjYW4gYWNjZXNzIGl0IGZyb20gdGhlIGxpYnhzbHQgbG9hZGVyIGNhbGxiYWNr
LgorICAgIHZvaWQqIG9sZCA9IHhzbERvY3VtZW50LT5fcHJpdmF0ZTsKKyAgICB4c2xEb2N1bWVu
dC0+X3ByaXZhdGUgPSBjYWNoZWRTdHlsZXNoZWV0LmdldCgpOworICAgIHJlZ2lzdGVyZWRYU0xT
dHlsZVNoZWV0cygpLmFkZChjYWNoZWRTdHlsZXNoZWV0LmdldCgpKTsKKworICAgIHhzbHRTdHls
ZXNoZWV0UHRyIHJlc3VsdCA9IGNhY2hlZFN0eWxlc2hlZXQtPmNvbXBpbGVTdHlsZVNoZWV0KCk7
CisgICAgcmVnaXN0ZXJlZFhTTFN0eWxlU2hlZXRzKCkucmVtb3ZlKGNhY2hlZFN0eWxlc2hlZXQu
Z2V0KCkpOworICAgIGNsZWFyU2F2ZWRTdHlsZVNoZWV0UG9pbnRlcnMocmVzdWx0KTsKKyAgICB4
c2xEb2N1bWVudC0+X3ByaXZhdGUgPSBvbGQ7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3Rh
dGljIGlubGluZSB4bWxEb2NQdHIgeG1sRG9jUHRyRnJvbU5vZGUoTm9kZSogc291cmNlTm9kZSwg
Ym9vbCYgc2hvdWxkRGVsZXRlKQpAQCAtMjczLDEyICszMzMsMTAgQEAgc3RhdGljIGlubGluZSBT
dHJpbmcgcmVzdWx0TUlNRVR5cGUoeG1sRAogCiBib29sIFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9y
bVRvU3RyaW5nKE5vZGUqIHNvdXJjZU5vZGUsIFN0cmluZyYgbWltZVR5cGUsIFN0cmluZyYgcmVz
dWx0U3RyaW5nLCBTdHJpbmcmIHJlc3VsdEVuY29kaW5nKQogewotICAgIFJlZlB0cjxEb2N1bWVu
dD4gb3duZXJEb2N1bWVudCA9IHNvdXJjZU5vZGUtPmRvY3VtZW50KCk7Ci0KLSAgICBzZXRYU0xU
TG9hZENhbGxCYWNrKGRvY0xvYWRlckZ1bmMsIHRoaXMsIG93bmVyRG9jdW1lbnQtPmRvY0xvYWRl
cigpKTsKKyAgICB4c2x0U2V0TG9hZGVyRnVuYyhkb2NMb2FkZXJGdW5jKTsKICAgICB4c2x0U3R5
bGVzaGVldFB0ciBzaGVldCA9IHhzbHRTdHlsZXNoZWV0UG9pbnRlcihtX3N0eWxlc2hlZXQsIG1f
c3R5bGVzaGVldFJvb3ROb2RlLmdldCgpKTsKICAgICBpZiAoIXNoZWV0KSB7Ci0gICAgICAgIHNl
dFhTTFRMb2FkQ2FsbEJhY2soMCwgMCwgMCk7CisgICAgICAgIHhzbHRTZXRMb2FkZXJGdW5jKDAp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIG1fc3R5bGVzaGVldC0+Y2xlYXJE
b2N1bWVudHMoKTsKQEAgLTI5Nyw2ICszNTUsMTIgQEAgYm9vbCBYU0xUUHJvY2Vzc29yOjp0cmFu
c2Zvcm1Ub1N0cmluZyhObwogICAgICAgICB4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciB0cmFuc2Zv
cm1Db250ZXh0ID0geHNsdE5ld1RyYW5zZm9ybUNvbnRleHQoc2hlZXQsIHNvdXJjZURvYyk7CiAg
ICAgICAgIHJlZ2lzdGVyWFNMVEV4dGVuc2lvbnModHJhbnNmb3JtQ29udGV4dCk7CiAKKyAgICAg
ICAgLy8gU2F2ZSBhIHBvaW50ZXIgdG8gdGhpcyBYU0xUUHJvY2Vzc29yIHNvIHRoYXQgd2UgY2Fu
IGFjY2VzcyBpdCBmcm9tIHRoZSBsaWJ4c2x0IGxvYWRlciBjYWxsYmFjay4KKyAgICAgICAgQVNT
RVJUKCF0cmFuc2Zvcm1Db250ZXh0LT5fcHJpdmF0ZSk7CisgICAgICAgIHRyYW5zZm9ybUNvbnRl
eHQtPl9wcml2YXRlID0gdGhpczsKKyAgICAgICAgcmVnaXN0ZXJlZFhTTFRQcm9jZXNzb3JzKCku
YWRkKHRoaXMpOworICAgICAgICBtX3NvdXJjZU5vZGUgPSBzb3VyY2VOb2RlOworCiAgICAgICAg
IC8vIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3Nz46IFhTTFQg
cHJvY2Vzc29yIDx4c2w6c29ydD4gYWxnb3JpdGhtIG9ubHkgY29tcGFyZXMgYnkgY29kZSBwb2lu
dC4KICAgICAgICAgeHNsdFNldEN0eHRTb3J0RnVuYyh0cmFuc2Zvcm1Db250ZXh0LCB4c2x0VW5p
Y29kZVNvcnRGdW5jdGlvbik7CiAKQEAgLTMwOSw2ICszNzMsNyBAQCBib29sIFhTTFRQcm9jZXNz
b3I6OnRyYW5zZm9ybVRvU3RyaW5nKE5vCiAgICAgICAgIHhzbHRRdW90ZVVzZXJQYXJhbXModHJh
bnNmb3JtQ29udGV4dCwgcGFyYW1zKTsKICAgICAgICAgeG1sRG9jUHRyIHJlc3VsdERvYyA9IHhz
bHRBcHBseVN0eWxlc2hlZXRVc2VyKHNoZWV0LCBzb3VyY2VEb2MsIDAsIDAsIDAsIHRyYW5zZm9y
bUNvbnRleHQpOwogCisgICAgICAgIHJlZ2lzdGVyZWRYU0xUUHJvY2Vzc29ycygpLnJlbW92ZSh0
aGlzKTsKICAgICAgICAgeHNsdEZyZWVUcmFuc2Zvcm1Db250ZXh0KHRyYW5zZm9ybUNvbnRleHQp
OwogICAgICAgICBmcmVlWHNsdFBhcmFtQXJyYXkocGFyYW1zKTsKIApAQCAtMzIzLDkgKzM4OCwx
MCBAQCBib29sIFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvU3RyaW5nKE5vCiAgICAgfQogCiAg
ICAgc2hlZXQtPm1ldGhvZCA9IG9yaWdNZXRob2Q7Ci0gICAgc2V0WFNMVExvYWRDYWxsQmFjaygw
LCAwLCAwKTsKKyAgICB4c2x0U2V0TG9hZGVyRnVuYygwKTsKICAgICB4c2x0RnJlZVN0eWxlc2hl
ZXQoc2hlZXQpOwogICAgIG1fc3R5bGVzaGVldCA9IDA7CisgICAgbV9zb3VyY2VOb2RlID0gMDsK
IAogICAgIHJldHVybiBzdWNjZXNzOwogfQo=
</data>
<flag name="review"
          id="55696"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>