<?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>142513</bug_id>
          
          <creation_ts>2015-03-09 16:18:04 -0700</creation_ts>
          <short_desc>8-bit version of weakCompareAndSwap() can cause an infinite loop</short_desc>
          <delta_ts>2015-11-18 10:00:39 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>141290</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kevleyski</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1075799</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 16:18:04 -0700</bug_when>
    <thetext>Presently, Bitmap::concurrentTestAndSet() uses the 8-bit version of weakCompareAndSwap() (which compares and swaps an uint8_t value).  Bitmap::concurrentTestAndSet() has a loop that checks if a bit in the byte of interest has been set.  If not, it will call the 8-bit CAS function to set the bit.

Under the covers, the 8-bit CAS function actually works with a 32-bit CAS.  The 8-bit CAS will first fetch the 32-bit value in memory that contains the 8-bit value, and check if it contains the expected byte.  If the value in memory doesn&apos;t have the expected byte, it will return early to its caller.  The expectation is that the caller will reload the byte from memory and call the 8-bit CAS again.

Unfortunately, this code path that returns early does not have a compiler fence.  Without that compiler fence, the C++ compiler can optimize away the reloading of the expected byte value, leaving it unchanged.  As a result, we&apos;ll have a infinite loop here that checks a value that will never change, and the loop will not terminate until the value changes.

The fix is to eliminate the early return check in the 8-bit CAS, and have it always call down to the 32-bit CAS.  The 32-bit CAS has a compiler fence which will prevent this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075800</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 16:19:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/20028910&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075829</commentid>
    <comment_count>2</comment_count>
      <attachid>248298</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 17:36:41 -0700</bug_when>
    <thetext>Created attachment 248298
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075836</commentid>
    <comment_count>3</comment_count>
      <attachid>248298</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 17:51:33 -0700</bug_when>
    <thetext>Comment on attachment 248298
the patch.

Need to add test file to other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075838</commentid>
    <comment_count>4</comment_count>
      <attachid>248303</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 17:59:28 -0700</bug_when>
    <thetext>Created attachment 248303
take 2: with fixes for windows project.  Make doesn&apos;t seem to build testapi.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075842</commentid>
    <comment_count>5</comment_count>
      <attachid>248303</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-09 18:20:46 -0700</bug_when>
    <thetext>Comment on attachment 248303
take 2: with fixes for windows project.  Make doesn&apos;t seem to build testapi.

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

&gt; Source/WTF/wtf/Atomics.h:335
&gt; +    struct CompositeValue {
&gt; +    public:
&gt; +        CompositeValue(volatile unsigned* baseWordAddr, uint8_t replacementByte, uintptr_t replacementIndex)
&gt; +        {
&gt; +            u.word = *baseWordAddr;
&gt; +            u.bytes[replacementIndex] = replacementByte;
&gt; +        }
&gt; +
&gt; +        unsigned word() { return u.word; }
&gt; +
&gt; +    private:
&gt; +        union {
&gt; +            unsigned word;
&gt; +            uint8_t bytes[sizeof(unsigned)];
&gt; +        } u;
&gt; +    };
&gt; +    
&gt; +    CompositeValue oldAlignedValue(alignedLocation, expected, locationOffset);
&gt; +    CompositeValue newAlignedValue(alignedLocation, newValue, locationOffset);

This is wrong.  You load from *alignedLocation twice: once t get the side-bytes of the old value and once to get the side-bytes of the new value.  This has a race.  If the bytes other than the ones you are CASing inside the aligned word change between the two loads, you could cause badness.

I suggest not using the CompositeValue helper.  Instead, all that this needs is a compiler fence before the load of the oldAlignedValue in the original code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075843</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-09 18:23:27 -0700</bug_when>
    <thetext>We&apos;re missing the path to &quot;config.h&quot; on the Windows project settings for testapi. I&apos;ll land a fix for that independent of this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075852</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-09 18:49:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 248303 [details]
&gt; take 2: with fixes for windows project.  Make doesn&apos;t seem to build testapi.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=248303&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/Atomics.h:335
&gt; &gt; +    struct CompositeValue {
&gt; &gt; +    public:
&gt; &gt; +        CompositeValue(volatile unsigned* baseWordAddr, uint8_t replacementByte, uintptr_t replacementIndex)
&gt; &gt; +        {
&gt; &gt; +            u.word = *baseWordAddr;
&gt; &gt; +            u.bytes[replacementIndex] = replacementByte;
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        unsigned word() { return u.word; }
&gt; &gt; +
&gt; &gt; +    private:
&gt; &gt; +        union {
&gt; &gt; +            unsigned word;
&gt; &gt; +            uint8_t bytes[sizeof(unsigned)];
&gt; &gt; +        } u;
&gt; &gt; +    };
&gt; &gt; +    
&gt; &gt; +    CompositeValue oldAlignedValue(alignedLocation, expected, locationOffset);
&gt; &gt; +    CompositeValue newAlignedValue(alignedLocation, newValue, locationOffset);
&gt; 
&gt; This is wrong.  You load from *alignedLocation twice: once t get the
&gt; side-bytes of the old value and once to get the side-bytes of the new value.
&gt; This has a race.  If the bytes other than the ones you are CASing inside the
&gt; aligned word change between the two loads, you could cause badness.
&gt; 
&gt; I suggest not using the CompositeValue helper.  Instead, all that this needs
&gt; is a compiler fence before the load of the oldAlignedValue in the original
&gt; code.

Here&apos;s the race that breaks your code:

char buf[4];

// initial state
buf[0] = 0;
buf[1] = 0;
buf[2] = 0;
buf[3] = 0;

Thread #1 takes the following steps:
T1: 1) CAS(&amp;buf[0], 0, 1);

Thread #2 takes the following steps:
T2: 1) buf[1] = 1;
T2: 2) buf[1] = 0;

We would expect the following to be valid outcomes of executing this program, regardless of the three possible interleavings.  Here, &quot;T1.1-&gt;T2.1&quot; implies a particular sequencing of executions, so in particular it means that &quot;T1 executes step 1 (i.e. the CAS) and then T2 executes step 1 (i.e. buf[1] = 1)&quot;.

T1.1-&gt;T2.1-&gt;T2.2: buf == {1, 0, 0, 0}
T2.1-&gt;T1.1-&gt;t2.2: buf == {1, 0, 0, 0}
T2.1-&gt;T2.2-&gt;T1.1: buf == {1, 0, 0, 0}

In particular there is no valid outcome with buf[1] != 0.

But if the 1-byte CAS does what you do, then it actually has two loads and a CAS.  The first load influences what we compare and the second load influences what we set the word to.  Let&apos;s say that the CAS is decomposed into three steps:

a) load the whole word, put in the expected byte
b) load the whole word, put in the newValue byte
c) do the word CAS

This means that we will have the following evil interleaving:

T1.1.a-&gt;T2.1-&gt;T2.2-&gt;T1.1.b-&gt;T1.1.c

After T1.1.a executes, the expected value word will be {0, 0, 0, 0}. After T2.1, buf[1] == 1, but then T2.2 runs and then we have buf[1] == 0 again. Now T1.1.b runs and sets the new value word to {1, 1, 0, 0}. Then T1.1.c runs, and we CAS with expected = {0, 0, 0, 0} and newValue = {1, 1, 0, 0}.  So the result is {1, 1, 0, 0,} which is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075853</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-09 18:59:52 -0700</bug_when>
    <thetext>I believe the composite value thing doesn&apos;t produce a net benefit. I think it makes it easier to make the sort of mistake that you made. CAS implementations should be as straight-line and free of abstractions as possible because we want to be able to see, by glancing at the code, how many loads there are. I believe that a correct implementation must only involve one load. The abstraction via CompositeLoad means that the code appears to have one load but you only realize that it executes twice by thinking about it a bit more carefully.

There are two possible changes that make the current trunk code correct:

1) Put a compiler fence before and after the whole 8-byte CAS function - that is, the early return would instead become a control flow diamond and the whole 8-byte CAS function would look something like this:

compilerFence();
... address math
oldAlignedValue = *load;
if (u.bytes[thingy] == stuff)
    result = false;
else {
    ...
    result = CAS(...);
}
compilerFence();
return result;

The reason for both compiler fences is to prevent code motion into or out of the CAS implementation. The top compiler fence prevents hoisting the load. The bottom compiler fence prevents hoisting a store into the fast-exit path.

This doesn&apos;t prevent any optimizations other than those that would be invalid.

2) Use an unconditional CAS like your change does, but without CompositeValue. You could just construct oldValue and newValue by storing a byte into the union and then loading the word out. This kind of very C-like simple implementation is trivial to verify by visual inspection. The upside is that it&apos;s easier to reason about why it&apos;s right. But there is a downside: the splicing of the old value, which trunk does not do, is probably just as expensive as that byte check. And if the check would fail (early return) in trunk, this new modified code would have to execute a full CAS. Also, I suspect that we still would need a compiler fence at the top to prevent removing the load. I worry that a clever compiler could CSE the load with an earlier load, and that could cause some subtle issues.

I don&apos;t really care much if we use (1) or (2). But the CompositeValue abstraction feels dangerous to me - the less abstraction this code has, the more obvious it will be what the interleavings could be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075854</commentid>
    <comment_count>9</comment_count>
      <attachid>248307</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 19:09:44 -0700</bug_when>
    <thetext>Created attachment 248307
take 3: splice the expectedValue and newValue using the same oldValue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075855</commentid>
    <comment_count>10</comment_count>
      <attachid>248308</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 19:11:43 -0700</bug_when>
    <thetext>Created attachment 248308
take 4: fixed missing volatile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075856</commentid>
    <comment_count>11</comment_count>
      <attachid>248308</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 19:12:52 -0700</bug_when>
    <thetext>Comment on attachment 248308
take 4: fixed missing volatile

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

&gt; Source/WTF/wtf/Atomics.h:-316
&gt; -    // Make sure that this load is always issued and never optimized away.

I should probably restore this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075857</commentid>
    <comment_count>12</comment_count>
      <attachid>248308</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-09 19:12:55 -0700</bug_when>
    <thetext>Comment on attachment 248308
take 4: fixed missing volatile

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

&gt; Source/WTF/wtf/Atomics.h:-316
&gt; -    // Make sure that this load is always issued and never optimized away.

Why remove this comment?  I think it&apos;s useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075862</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 19:21:18 -0700</bug_when>
    <thetext>Thanks for the review.  The comment has been restored.

Landed in r181305: &lt;http://trac.webkit.org/r181305&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075877</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-09 20:13:16 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Thanks for the review.  The comment has been restored.
&gt; 
&gt; Landed in r181305: &lt;http://trac.webkit.org/r181305&gt;.

This patch broke Windows builds:

  CompareAndSwapTest.cpp
..\..\API\tests\CompareAndSwapTest.cpp(95): error C3861: &apos;pthread_exit&apos;: identifier not found [C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.vcxproj]
..\..\API\tests\CompareAndSwapTest.cpp(102): error C2065: &apos;pthread_t&apos; : undeclared identifier [C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.vcxproj]
..\..\API\tests\CompareAndSwapTest.cpp(102): error C2146: syntax error : missing &apos;;&apos; before identifier &apos;threadIDs&apos; [C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.vcxproj]
..\..\API\tests\CompareAndSwapTest.cpp(102): error C2065: &apos;threadIDs&apos; : undeclared identifier [C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.vcxproj]
..\..\API\tests\CompareAndSwapTest.cpp(110): error C2065: &apos;threadIDs&apos; : undeclared identifier [C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.vcxproj]
..\..\API\tests\CompareAndSwapTest.cpp(110): error C3861: &apos;pthread_create&apos;: identifier not found [C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.vcxproj]
..\..\API\tests\CompareAndSwapTest.cpp(115): error C2065: &apos;threadIDs&apos; : undeclared identifier [C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.vcxproj]
..\..\API\tests\CompareAndSwapTest.cpp(115): error C3861: &apos;pthread_join&apos;: identifier not found [C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075878</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 20:22:39 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; Thanks for the review.  The comment has been restored.
&gt; &gt; 
&gt; &gt; Landed in r181305: &lt;http://trac.webkit.org/r181305&gt;.
&gt; 
&gt; This patch broke Windows builds:
&gt; 
&gt;   CompareAndSwapTest.cpp
&gt; ..\..\API\tests\CompareAndSwapTest.cpp(95): error C3861: &apos;pthread_exit&apos;:
&gt; identifier not found
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.
&gt; vcxproj]
&gt; ..\..\API\tests\CompareAndSwapTest.cpp(102): error C2065: &apos;pthread_t&apos; :
&gt; undeclared identifier
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.
&gt; vcxproj]
&gt; ..\..\API\tests\CompareAndSwapTest.cpp(102): error C2146: syntax error :
&gt; missing &apos;;&apos; before identifier &apos;threadIDs&apos;
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.
&gt; vcxproj]
&gt; ..\..\API\tests\CompareAndSwapTest.cpp(102): error C2065: &apos;threadIDs&apos; :
&gt; undeclared identifier
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.
&gt; vcxproj]
&gt; ..\..\API\tests\CompareAndSwapTest.cpp(110): error C2065: &apos;threadIDs&apos; :
&gt; undeclared identifier
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.
&gt; vcxproj]
&gt; ..\..\API\tests\CompareAndSwapTest.cpp(110): error C3861: &apos;pthread_create&apos;:
&gt; identifier not found
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.
&gt; vcxproj]
&gt; ..\..\API\tests\CompareAndSwapTest.cpp(115): error C2065: &apos;threadIDs&apos; :
&gt; undeclared identifier
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.
&gt; vcxproj]
&gt; ..\..\API\tests\CompareAndSwapTest.cpp(115): error C3861: &apos;pthread_join&apos;:
&gt; identifier not found
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.
&gt; vcxproj]

Yeah, Brent just told me this on the way out.  I’m working on a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075882</commentid>
    <comment_count>16</comment_count>
      <attachid>248314</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 21:05:09 -0700</bug_when>
    <thetext>Created attachment 248314
follow up: Windows doesn&apos;t like pthreads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075887</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 21:23:11 -0700</bug_when>
    <thetext>Windows fix landed in r181308: &lt;http://trac.webkit.org/r181308&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075888</commentid>
    <comment_count>18</comment_count>
      <attachid>248316</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 21:37:39 -0700</bug_when>
    <thetext>Created attachment 248316
Speculative fix for Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075889</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 21:43:03 -0700</bug_when>
    <thetext>The EWS bots are not cooperating.  I went ahead and landed the speculative Windows fix in r181309: &lt;http://trac.webkit.org/r181309&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075898</commentid>
    <comment_count>20</comment_count>
      <attachid>248318</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 23:40:04 -0700</bug_when>
    <thetext>Created attachment 248318
Build fix for Windows.  This time, I&apos;ve tested this on a local Windows box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075911</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-09 23:57:48 -0700</bug_when>
    <thetext>Final build fix for Windows landed in r181315: &lt;http://trac.webkit.org/r181315&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075917</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-10 01:04:19 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Windows fix landed in r181308: &lt;http://trac.webkit.org/r181308&gt;.

It broke the JSC API tests on the Apple bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075918</commentid>
    <comment_count>23</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-10 01:06:25 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #17)
&gt; &gt; Windows fix landed in r181308: &lt;http://trac.webkit.org/r181308&gt;.
&gt; 
&gt; It broke the JSC API tests on the Apple bots.

Which ones?  Can you provide a link please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075919</commentid>
    <comment_count>24</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-10 01:07:07 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; Windows fix landed in r181308: &lt;http://trac.webkit.org/r181308&gt;.
&gt; &gt; 
&gt; &gt; It broke the JSC API tests on the Apple bots.
&gt; 
&gt; Which ones?  Can you provide a link please?

All Apple Mac bots on build.webkit.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075923</commentid>
    <comment_count>25</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-10 01:48:53 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; All Apple Mac bots on build.webkit.org

I wasn’t seeing this on the dashboard except for the Mavericks debug bots.  Anyway, it’s a trivial test only fix.  

Landed in r181319: &lt;http://trac.webkit.org/r181319&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075942</commentid>
    <comment_count>26</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-10 04:09:11 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; All Apple Mac bots on build.webkit.org
&gt; 
&gt; I wasn’t seeing this on the dashboard except for the Mavericks debug bots. 
&gt; Anyway, it’s a trivial test only fix.  
Ah, because the JSC test coverage is poor on the dashboard:
- CLOOP and 32 bit bots aren&apos;t included
- Yosemite WK1 and WK2 bots don&apos;t run JSC tests
  and the dedicated JSC tester bot isn&apos;t on dashboard
- Only the Mavericks WK1 bots can be found on it

&gt; Landed in r181319: &lt;http://trac.webkit.org/r181319&gt;.
Thanks for the quick fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142853</commentid>
    <comment_count>27</comment_count>
    <who name="Kevin Staunton-Lambert">kevleyski</who>
    <bug_when>2015-11-18 10:00:39 -0800</bug_when>
    <thetext>Thanks also</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248298</attachid>
            <date>2015-03-09 17:36:41 -0700</date>
            <delta_ts>2015-03-09 17:59:28 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-142513.patch</filename>
            <type>text/plain</type>
            <size>13355</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMjk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDE1LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICA4
LWJpdCB2ZXJzaW9uIG9mIHdlYWtDb21wYXJlQW5kU3dhcCgpIGNhbiBjYXVzZSBhbiBpbmZpbml0
ZSBsb29wLgorICAgICAgICBodHRwczovL3dlYmtpdC5vcmcvYi8xNDI1MTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQg
ZXhlcmNpc2VzIHRoZSA4LWJpdCBDQVMgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLiAgVGhlIHRocmVh
ZHMKKyAgICAgICAgd2lsbCBjb250ZW5kIHRvIHNldCBiaXRzIGluIGEgbGFyZ2UgYXJyYXkgb2Yg
Ynl0ZXMgdXNpbmcgdGhlIENBUyBmdW5jdGlvbi4KKworICAgICAgICAqIEFQSS90ZXN0cy9Db21w
YXJlQW5kU3dhcFRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEJpdG1hcDo6Qml0bWFwKToKKyAg
ICAgICAgKEJpdG1hcDo6bnVtQml0cyk6CisgICAgICAgIChCaXRtYXA6OmNsZWFyQWxsKToKKyAg
ICAgICAgKEJpdG1hcDo6Y29uY3VycmVudFRlc3RBbmRTZXQpOgorICAgICAgICAoc2V0Qml0VGhy
ZWFkRnVuYyk6CisgICAgICAgICh0ZXN0Q29tcGFyZUFuZFN3YXApOgorICAgICAgICAqIEFQSS90
ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAzLTA5ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBTdGFsZSBlbnRyaWVzIGluIFdlYWtHQ01h
cHMgYXJlIGtlZXBpbmcgdG9ucyBvZiBXZWFrQmxvY2tzIGFsaXZlIHVubmVjZXNzYXJpbHkuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Db21wYXJl
QW5kU3dhcFRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlIDx0aHJlYWQ+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KKworLy8g
UmVncmVzc2lvbiB0ZXN0IGZvciB3ZWJraXQub3JnL2IvMTQyNTEzCitleHRlcm4gIkMiIHZvaWQg
dGVzdENvbXBhcmVBbmRTd2FwKCk7CisKK2NsYXNzIEJpdG1hcCB7CitwdWJsaWM6CisgICAgQml0
bWFwKCkgeyBjbGVhckFsbCgpOyB9CisKKyAgICBpbmxpbmUgdm9pZCBjbGVhckFsbCgpOworICAg
IGlubGluZSBib29sIGNvbmN1cnJlbnRUZXN0QW5kU2V0KHNpemVfdCBuKTsKKyAgICBpbmxpbmUg
c2l6ZV90IG51bUJpdHMoKSBjb25zdCB7IHJldHVybiB3b3JkcyAqIHdvcmRTaXplOyB9CisKK3By
aXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBTaXplID0gNDA5NioxMDsKKworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCB3b3JkU2l6ZSA9IHNpemVvZih1aW50OF90KSAqIDg7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHdvcmRzID0gKFNpemUgKyB3b3JkU2l6ZSAtIDEpIC8gd29y
ZFNpemU7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgb25lID0gMTsKKworICAgIHVpbnQ4X3Qg
Yml0c1t3b3Jkc107Cit9OworCitpbmxpbmUgdm9pZCBCaXRtYXA6OmNsZWFyQWxsKCkKK3sKKyAg
ICBtZW1zZXQoJmJpdHMsIDAsIHNpemVvZihiaXRzKSk7Cit9CisKK2lubGluZSBib29sIEJpdG1h
cDo6Y29uY3VycmVudFRlc3RBbmRTZXQoc2l6ZV90IG4pCit7CisgICAgdWludDhfdCBtYXNrID0g
b25lIDw8IChuICUgd29yZFNpemUpOworICAgIHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsK
KyAgICB1aW50OF90KiB3b3JkUHRyID0gJmJpdHNbaW5kZXhdOworICAgIHVpbnQ4X3Qgb2xkVmFs
dWU7CisgICAgZG8geworICAgICAgICBvbGRWYWx1ZSA9ICp3b3JkUHRyOworICAgICAgICBpZiAo
b2xkVmFsdWUgJiBtYXNrKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSB3aGlsZSAo
IVdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKHdvcmRQdHIsIG9sZFZhbHVlLCBvbGRWYWx1ZSB8IG1h
c2spKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0cnVjdCBEYXRhIHsKKyAgICBCaXRtYXAq
IGJpdG1hcDsKKyAgICBpbnQgaWQ7CisgICAgaW50IG51bVRocmVhZHM7Cit9OworCitzdGF0aWMg
dm9pZCogc2V0Qml0VGhyZWFkRnVuYyh2b2lkKiBwKQoreworICAgIERhdGEqIGRhdGEgPSByZWlu
dGVycHJldF9jYXN0PERhdGEqPihwKTsKKyAgICBCaXRtYXAqIGJpdG1hcCA9IGRhdGEtPmJpdG1h
cDsKKyAgICBzaXplX3QgbnVtQml0cyA9IGJpdG1hcC0+bnVtQml0cygpOworCisgICAgLy8gVGhl
IGNvbXB1dGVkIHN0YXJ0IGluZGV4IGhlcmUgaXMgaGV1cmlzdGljIHRoYXQgc2VlbXMgdG8gbWF4
aW1pemUgKGFuZWNkb3RhbGx5KQorICAgIC8vIHRoZSBjaGFuY2UgZm9yIHRoZSBDQVMgaXNzdWUg
dG8gbWFuaWZlc3QuCisgICAgc2l6ZV90IHN0YXJ0ID0gKG51bUJpdHMgKiAoZGF0YS0+bnVtVGhy
ZWFkcyAtIGRhdGEtPmlkKSkgLyBkYXRhLT5udW1UaHJlYWRzOworCisgICAgcHJpbnRmKCIgICBz
dGFydGVkIFRocmVhZCAlZFxuIiwgZGF0YS0+aWQpOworICAgIGZvciAoc2l6ZV90IGkgPSBzdGFy
dDsgaSA8IG51bUJpdHM7IGkrKykKKyAgICAgICAgd2hpbGUgKCFiaXRtYXAtPmNvbmN1cnJlbnRU
ZXN0QW5kU2V0KGkpKSB7IH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXJ0OyBpKysp
CisgICAgICAgIHdoaWxlICghYml0bWFwLT5jb25jdXJyZW50VGVzdEFuZFNldChpKSkgeyB9CisK
KyAgICBwcmludGYoIiAgIGZpbmlzaGVkIFRocmVhZCAlZFxuIiwgZGF0YS0+aWQpOworICAgIHB0
aHJlYWRfZXhpdChudWxscHRyKTsKK30KKwordm9pZCB0ZXN0Q29tcGFyZUFuZFN3YXAoKQorewor
ICAgIEJpdG1hcCBiaXRtYXA7CisgICAgY29uc3QgaW50IG51bVRocmVhZHMgPSA1OworICAgIHB0
aHJlYWRfdCB0aHJlYWRJRHNbbnVtVGhyZWFkc107CisgICAgRGF0YSBkYXRhW251bVRocmVhZHNd
OworICAgIAorICAgIHByaW50ZigiU3RhcnRpbmcgJWQgdGhyZWFkcyBmb3IgQ29tcGFyZUFuZFN3
YXAgdGVzdC4gIFRlc3Qgc2hvdWxkIGNvbXBsZXRlIHdpdGhvdXQgaGFuZ2luZy5cbiIsIG51bVRo
cmVhZHMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGhyZWFkczsgaSsrKSB7CisgICAg
ICAgIGRhdGFbaV0uYml0bWFwID0gJmJpdG1hcDsKKyAgICAgICAgZGF0YVtpXS5pZCA9IGk7Cisg
ICAgICAgIGRhdGFbaV0ubnVtVGhyZWFkcyA9IG51bVRocmVhZHM7CisgICAgICAgIHB0aHJlYWRf
Y3JlYXRlKCZ0aHJlYWRJRHNbaV0sIDAsICZzZXRCaXRUaHJlYWRGdW5jLCAmZGF0YVtpXSk7Cisg
ICAgfQorCisgICAgcHJpbnRmKCJXYWl0aW5nIGZvciAlZCB0aHJlYWRzIHRvIGpvaW5cbiIsIG51
bVRocmVhZHMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGhyZWFkczsgaSsrKQorICAg
ICAgICBwdGhyZWFkX2pvaW4odGhyZWFkSURzW2ldLCBudWxscHRyKTsKKworICAgIHByaW50Zigi
UEFTUzogQ29tcGFyZUFuZFN3YXAgdGVzdCBjb21wbGV0ZWQgd2l0aG91dCBhIGhhbmdcbiIpOwor
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJKHJldmlz
aW9uIDE4MTI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5j
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAjaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkodm9pZCk7CiAjZW5kaWYKK3ZvaWQgdGVzdENvbXBh
cmVBbmRTd2FwKCk7CiAKIGJvb2wgYXNzZXJ0VHJ1ZShib29sIHZhbHVlLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKTsKIGV4dGVybiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVn
Z2luZyhKU0NvbnRleHRSZWYpOwpAQCAtMTE5Miw2ICsxMTkzLDggQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkKICAgICA6OlNldEVycm9yTW9kZSgwKTsKICNlbmRpZgogCisgICAg
dGVzdENvbXBhcmVBbmRTd2FwKCk7CisKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIHRl
c3RPYmplY3RpdmVDQVBJKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxODEyODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTYyOCw2
ICsxNjI4LDcgQEAKIAkJRkVEOTRGMkUxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJCMTcx
RTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi87IH07CiAJCUZFRDk0RjJGMTcxRTNFMjMw
MEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVEOTRGMzAxNzFF
M0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJEMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRv
Z01hYy5jcHAgKi87IH07CisJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5k
U3dhcFRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVGMDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87
IH07CiAJCUZFRjY4MzVFMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGNjgzNUExNzQzNDNDQzAw
QTMyRTI1IC8qIEpJVFN0dWJzQVJNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkVGNjgzNUYxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzQVJN
djcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjY4
MzVCMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVGNjgzNjAxNzQzNDNDQzAwQTMyRTI1
IC8qIEpJVFN0dWJzWDg2XzY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUY2ODM1QzE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNYODZfNjQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzM3Myw2
ICszMzc0LDcgQEAKIAkJRkVEOTRGMkIxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhdGNoZG9nLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEOTRGMkMxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNo
ZG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhdGNoZG9nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRDk0RjJEMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRj
aGRvZ01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXRjaGRv
Z01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRjA0MDUwMUFBRTY2MkQw
MEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9D
b21wYXJlQW5kU3dhcFRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUY2
ODM1QTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSklUU3R1YnNBUk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVGNjgzNUIxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzQVJNdjcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUU3R1YnNBUk12Ny5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRUY2ODM1QzE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNYODZfNjQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUU3R1YnNYODZfNjQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MjksNiArMzczMSw3IEBACiAJCTE0MTIxMTAw
MEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJRkVGMDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRT
d2FwVGVzdC5jcHAgKi8sCiAJCQkJQzIwMzI4MUUxOTgxOTc5RDAwODhCNDk5IC8qIEN1c3RvbUds
b2JhbE9iamVjdENsYXNzVGVzdC5jICovLAogCQkJCUMyMDMyODFGMTk4MTk3OUQwMDg4QjQ5OSAv
KiBDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuaCAqLywKIAkJCQlDMjlFQ0IwMjE4MDREMEVE
MDBEMkNCQjQgLyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaCAqLywKQEAgLTY3
NzgsNiArNjc4MSw3IEBACiAJCQkJQzIwMzI4MjAxOTgxOTc5RDAwODhCNDk5IC8qIEN1c3RvbUds
b2JhbE9iamVjdENsYXNzVGVzdC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI4OEIyREUxOEE1NEQz
RTAwN0JFNDBCIC8qIERhdGVUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMyMTgxRkMyMThB
OTQ4RkIwMDI1QTIzNSAvKiBKU0V4cG9ydFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRkVG
MDQwNTExQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYwNjEgLyogdGVzdGFwaS5jIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZEMjIyMUExNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gaW4gU291
cmNlcyAqLywKIAkJCSk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMjk3KQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAxNS0wMy0wOSAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgOC1iaXQgdmVyc2lvbiBvZiB3
ZWFrQ29tcGFyZUFuZFN3YXAoKSBjYW4gY2F1c2UgYW4gaW5maW5pdGUgbG9vcC4KKyAgICAgICAg
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQyNTEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFByZXNlbnRseSwgQml0bWFwOjpjb25jdXJyZW50VGVzdEFu
ZFNldCgpIHVzZXMgdGhlIDgtYml0IHZlcnNpb24gb2YKKyAgICAgICAgd2Vha0NvbXBhcmVBbmRT
d2FwKCkgKHdoaWNoIGNvbXBhcmVzIGFuZCBzd2FwcyBhbiB1aW50OF90IHZhbHVlKS4KKyAgICAg
ICAgQml0bWFwOjpjb25jdXJyZW50VGVzdEFuZFNldCgpIGhhcyBhIGxvb3AgdGhhdCBjaGVja3Mg
aWYgYSBiaXQgaW4gdGhlCisgICAgICAgIGJ5dGUgb2YgaW50ZXJlc3QgaGFzIGJlZW4gc2V0LiAg
SWYgbm90LCBpdCB3aWxsIGNhbGwgdGhlIDgtYml0IENBUworICAgICAgICBmdW5jdGlvbiB0byBz
ZXQgdGhlIGJpdC4KKworICAgICAgICBVbmRlciB0aGUgY292ZXJzLCBmb3IgQVJNLCB0aGUgOC1i
aXQgQ0FTIGZ1bmN0aW9uIGFjdHVhbGx5IHdvcmtzIHdpdGggYQorICAgICAgICAzMi1iaXQgQ0FT
LiAgVGhlIDgtYml0IENBUyB3aWxsIGZpcnN0IGZldGNoIHRoZSAzMi1iaXQgdmFsdWUgaW4gbWVt
b3J5CisgICAgICAgIHRoYXQgc2hvdWxkIGNvbnRhaW4gdGhlIDgtYml0IHZhbHVlLCBhbmQgY2hl
Y2sgaWYgaXQgY29udGFpbnMgdGhlCisgICAgICAgIGV4cGVjdGVkIGJ5dGUuICBJZiB0aGUgdmFs
dWUgaW4gbWVtb3J5IGRvZXNuJ3QgaGF2ZSB0aGUgZXhwZWN0ZWQgYnl0ZSwKKyAgICAgICAgaXQg
d2lsbCByZXR1cm4gZWFybHkgdG8gaXRzIGNhbGxlci4gIFRoZSBleHBlY3RhdGlvbiBpcyB0aGF0
IHRoZSBjYWxsZXIKKyAgICAgICAgd2lsbCByZWxvYWQgdGhlIGJ5dGUgZnJvbSBtZW1vcnkgYW5k
IGNhbGwgdGhlIDgtYml0IENBUyBhZ2Fpbi4KKworICAgICAgICBVbmZvcnR1bmF0ZWx5LCB0aGlz
IGNvZGUgcGF0aCB0aGF0IHJldHVybnMgZWFybHkgZG9lcyBub3QgaGF2ZSBhCisgICAgICAgIGNv
bXBpbGVyIGZlbmNlLiAgV2l0aG91dCBhIGNvbXBpbGVyIGZlbmNlLCB0aGUgQysrIGNvbXBpbGVy
IGNhbgorICAgICAgICBvcHRpbWl6ZSBhd2F5IHRoZSByZWxvYWRpbmcgb2YgdGhlIGV4cGVjdGVk
IGJ5dGUgdmFsdWUsIGxlYXZpbmcgaXQKKyAgICAgICAgdW5jaGFuZ2VkLiAgQXMgYSByZXN1bHQs
IHdlJ2xsIGhhdmUgYSBpbmZpbml0ZSBsb29wIGhlcmUgdGhhdCBjaGVja3MgYQorICAgICAgICB2
YWx1ZSB0aGF0IHdpbGwgbmV2ZXIgY2hhbmdlLCBhbmQgdGhlIGxvb3Agd2lsbCBub3QgdGVybWlu
YXRlIHVudGlsIHRoZQorICAgICAgICB2YWx1ZSBjaGFuZ2VzLgorCisgICAgICAgIFRoZSBmaXgg
aXMgdG8gZWxpbWluYXRlIHRoZSBlYXJseSByZXR1cm4gY2hlY2sgaW4gdGhlIDgtYml0IENBUywg
YW5kCisgICAgICAgIGhhdmUgaXQgYWx3YXlzIGNhbGwgZG93biB0byB0aGUgMzItYml0IENBUy4g
IFRoZSAzMi1iaXQgQ0FTIGhhcyBhCisgICAgICAgIGNvbXBpbGVyIGZlbmNlIHdoaWNoIHdpbGwg
cHJldmVudCB0aGlzIGlzc3VlLgorCisgICAgICAgICogd3RmL0F0b21pY3MuaDoKKyAgICAgICAg
KFdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKToKKwogMjAxNS0wMy0wOSAgTWFydGluIFJvYmluc29u
ICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VGTF0gTW92ZSBEaXNwYXRjaFF1
ZXVlIHRvIFdURgpJbmRleDogU291cmNlL1dURi93dGYvQXRvbWljcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAkocmV2aXNpb24gMTgxMjg5KQorKysgU291cmNlL1dU
Ri93dGYvQXRvbWljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsMTggKzMxMywyNyBAQCBpbmxp
bmUgYm9vbCB3ZWFrQ29tcGFyZUFuZFN3YXAodWludDhfdCogCiAgICAgdWludHB0cl90IGxvY2F0
aW9uT2Zmc2V0ID0gbG9jYXRpb25WYWx1ZSAtIGFsaWduZWRMb2NhdGlvblZhbHVlOwogICAgIEFT
U0VSVChsb2NhdGlvbk9mZnNldCA8IHNpemVvZih1bnNpZ25lZCkpOwogICAgIHVuc2lnbmVkKiBh
bGlnbmVkTG9jYXRpb24gPSBiaXR3aXNlX2Nhc3Q8dW5zaWduZWQqPihhbGlnbmVkTG9jYXRpb25W
YWx1ZSk7Ci0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhpcyBsb2FkIGlzIGFsd2F5cyBpc3N1ZWQg
YW5kIG5ldmVyIG9wdGltaXplZCBhd2F5LgotICAgIHVuc2lnbmVkIG9sZEFsaWduZWRWYWx1ZSA9
ICpjb25zdF9jYXN0PHZvbGF0aWxlIHVuc2lnbmVkKj4oYWxpZ25lZExvY2F0aW9uKTsKLSAgICB1
bmlvbiB7Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZXNbc2l6ZW9mKHVuc2lnbmVkKV07Ci0gICAgICAg
IHVuc2lnbmVkIHdvcmQ7Ci0gICAgfSB1OwotICAgIHUud29yZCA9IG9sZEFsaWduZWRWYWx1ZTsK
LSAgICBpZiAodS5ieXRlc1tsb2NhdGlvbk9mZnNldF0gIT0gZXhwZWN0ZWQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB1LmJ5dGVzW2xvY2F0aW9uT2Zmc2V0XSA9IG5ld1ZhbHVlOwotICAg
IHVuc2lnbmVkIG5ld0FsaWduZWRWYWx1ZSA9IHUud29yZDsKLSAgICByZXR1cm4gd2Vha0NvbXBh
cmVBbmRTd2FwKGFsaWduZWRMb2NhdGlvbiwgb2xkQWxpZ25lZFZhbHVlLCBuZXdBbGlnbmVkVmFs
dWUpOworCisgICAgc3RydWN0IENvbXBvc2l0ZVZhbHVlIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IENvbXBvc2l0ZVZhbHVlKHZvbGF0aWxlIHVuc2lnbmVkKiBiYXNlV29yZEFkZHIsIHVpbnQ4X3Qg
cmVwbGFjZW1lbnRCeXRlLCB1aW50cHRyX3QgcmVwbGFjZW1lbnRJbmRleCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdS53b3JkID0gKmJhc2VXb3JkQWRkcjsKKyAgICAgICAgICAgIHUuYnl0ZXNb
cmVwbGFjZW1lbnRJbmRleF0gPSByZXBsYWNlbWVudEJ5dGU7CisgICAgICAgIH0KKworICAgICAg
ICB1bnNpZ25lZCB3b3JkKCkgeyByZXR1cm4gdS53b3JkOyB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICB1bmlvbiB7CisgICAgICAgICAgICB1bnNpZ25lZCB3b3JkOworICAgICAgICAgICAgdWlu
dDhfdCBieXRlc1tzaXplb2YodW5zaWduZWQpXTsKKyAgICAgICAgfSB1OworICAgIH07CisgICAg
CisgICAgQ29tcG9zaXRlVmFsdWUgb2xkQWxpZ25lZFZhbHVlKGFsaWduZWRMb2NhdGlvbiwgZXhw
ZWN0ZWQsIGxvY2F0aW9uT2Zmc2V0KTsKKyAgICBDb21wb3NpdGVWYWx1ZSBuZXdBbGlnbmVkVmFs
dWUoYWxpZ25lZExvY2F0aW9uLCBuZXdWYWx1ZSwgbG9jYXRpb25PZmZzZXQpOworICAgIHJldHVy
biB3ZWFrQ29tcGFyZUFuZFN3YXAoYWxpZ25lZExvY2F0aW9uLCBvbGRBbGlnbmVkVmFsdWUud29y
ZCgpLCBuZXdBbGlnbmVkVmFsdWUud29yZCgpKTsKICNlbmRpZgogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOwo=
</data>
<flag name="review"
          id="273198"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248303</attachid>
            <date>2015-03-09 17:59:28 -0700</date>
            <delta_ts>2015-03-09 19:09:44 -0700</delta_ts>
            <desc>take 2: with fixes for windows project.  Make doesn&apos;t seem to build testapi.</desc>
            <filename>bug-142513.patch</filename>
            <type>text/plain</type>
            <size>14823</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMjk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE1LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICA4
LWJpdCB2ZXJzaW9uIG9mIHdlYWtDb21wYXJlQW5kU3dhcCgpIGNhbiBjYXVzZSBhbiBpbmZpbml0
ZSBsb29wLgorICAgICAgICBodHRwczovL3dlYmtpdC5vcmcvYi8xNDI1MTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQg
ZXhlcmNpc2VzIHRoZSA4LWJpdCBDQVMgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLiAgVGhlIHRocmVh
ZHMKKyAgICAgICAgd2lsbCBjb250ZW5kIHRvIHNldCBiaXRzIGluIGEgbGFyZ2UgYXJyYXkgb2Yg
Ynl0ZXMgdXNpbmcgdGhlIENBUyBmdW5jdGlvbi4KKworICAgICAgICAqIEFQSS90ZXN0cy9Db21w
YXJlQW5kU3dhcFRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEJpdG1hcDo6Qml0bWFwKToKKyAg
ICAgICAgKEJpdG1hcDo6bnVtQml0cyk6CisgICAgICAgIChCaXRtYXA6OmNsZWFyQWxsKToKKyAg
ICAgICAgKEJpdG1hcDo6Y29uY3VycmVudFRlc3RBbmRTZXQpOgorICAgICAgICAoc2V0Qml0VGhy
ZWFkRnVuYyk6CisgICAgICAgICh0ZXN0Q29tcGFyZUFuZFN3YXApOgorICAgICAgICAqIEFQSS90
ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovdGVzdGFwaS90ZXN0YXBpLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAzLTA5ICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBTdGFsZSBlbnRyaWVz
IGluIFdlYWtHQ01hcHMgYXJlIGtlZXBpbmcgdG9ucyBvZiBXZWFrQmxvY2tzIGFsaXZlIHVubmVj
ZXNzYXJpbHkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0NvbXBhcmVB
bmRTd2FwVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx0aHJlYWQ+CisjaW5jbHVkZSA8d3RmL0F0b21p
Y3MuaD4KKworLy8gUmVncmVzc2lvbiB0ZXN0IGZvciB3ZWJraXQub3JnL2IvMTQyNTEzCitleHRl
cm4gIkMiIHZvaWQgdGVzdENvbXBhcmVBbmRTd2FwKCk7CisKK2NsYXNzIEJpdG1hcCB7CitwdWJs
aWM6CisgICAgQml0bWFwKCkgeyBjbGVhckFsbCgpOyB9CisKKyAgICBpbmxpbmUgdm9pZCBjbGVh
ckFsbCgpOworICAgIGlubGluZSBib29sIGNvbmN1cnJlbnRUZXN0QW5kU2V0KHNpemVfdCBuKTsK
KyAgICBpbmxpbmUgc2l6ZV90IG51bUJpdHMoKSBjb25zdCB7IHJldHVybiB3b3JkcyAqIHdvcmRT
aXplOyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBTaXplID0gNDA5Niox
MDsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB3b3JkU2l6ZSA9IHNpemVvZih1aW50OF90
KSAqIDg7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdvcmRzID0gKFNpemUgKyB3b3JkU2l6
ZSAtIDEpIC8gd29yZFNpemU7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgb25lID0gMTsKKwor
ICAgIHVpbnQ4X3QgYml0c1t3b3Jkc107Cit9OworCitpbmxpbmUgdm9pZCBCaXRtYXA6OmNsZWFy
QWxsKCkKK3sKKyAgICBtZW1zZXQoJmJpdHMsIDAsIHNpemVvZihiaXRzKSk7Cit9CisKK2lubGlu
ZSBib29sIEJpdG1hcDo6Y29uY3VycmVudFRlc3RBbmRTZXQoc2l6ZV90IG4pCit7CisgICAgdWlu
dDhfdCBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOworICAgIHNpemVfdCBpbmRleCA9IG4g
LyB3b3JkU2l6ZTsKKyAgICB1aW50OF90KiB3b3JkUHRyID0gJmJpdHNbaW5kZXhdOworICAgIHVp
bnQ4X3Qgb2xkVmFsdWU7CisgICAgZG8geworICAgICAgICBvbGRWYWx1ZSA9ICp3b3JkUHRyOwor
ICAgICAgICBpZiAob2xkVmFsdWUgJiBtYXNrKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfSB3aGlsZSAoIVdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKHdvcmRQdHIsIG9sZFZhbHVlLCBv
bGRWYWx1ZSB8IG1hc2spKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0cnVjdCBEYXRhIHsK
KyAgICBCaXRtYXAqIGJpdG1hcDsKKyAgICBpbnQgaWQ7CisgICAgaW50IG51bVRocmVhZHM7Cit9
OworCitzdGF0aWMgdm9pZCogc2V0Qml0VGhyZWFkRnVuYyh2b2lkKiBwKQoreworICAgIERhdGEq
IGRhdGEgPSByZWludGVycHJldF9jYXN0PERhdGEqPihwKTsKKyAgICBCaXRtYXAqIGJpdG1hcCA9
IGRhdGEtPmJpdG1hcDsKKyAgICBzaXplX3QgbnVtQml0cyA9IGJpdG1hcC0+bnVtQml0cygpOwor
CisgICAgLy8gVGhlIGNvbXB1dGVkIHN0YXJ0IGluZGV4IGhlcmUgaXMgaGV1cmlzdGljIHRoYXQg
c2VlbXMgdG8gbWF4aW1pemUgKGFuZWNkb3RhbGx5KQorICAgIC8vIHRoZSBjaGFuY2UgZm9yIHRo
ZSBDQVMgaXNzdWUgdG8gbWFuaWZlc3QuCisgICAgc2l6ZV90IHN0YXJ0ID0gKG51bUJpdHMgKiAo
ZGF0YS0+bnVtVGhyZWFkcyAtIGRhdGEtPmlkKSkgLyBkYXRhLT5udW1UaHJlYWRzOworCisgICAg
cHJpbnRmKCIgICBzdGFydGVkIFRocmVhZCAlZFxuIiwgZGF0YS0+aWQpOworICAgIGZvciAoc2l6
ZV90IGkgPSBzdGFydDsgaSA8IG51bUJpdHM7IGkrKykKKyAgICAgICAgd2hpbGUgKCFiaXRtYXAt
PmNvbmN1cnJlbnRUZXN0QW5kU2V0KGkpKSB7IH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0YXJ0OyBpKyspCisgICAgICAgIHdoaWxlICghYml0bWFwLT5jb25jdXJyZW50VGVzdEFuZFNl
dChpKSkgeyB9CisKKyAgICBwcmludGYoIiAgIGZpbmlzaGVkIFRocmVhZCAlZFxuIiwgZGF0YS0+
aWQpOworICAgIHB0aHJlYWRfZXhpdChudWxscHRyKTsKK30KKwordm9pZCB0ZXN0Q29tcGFyZUFu
ZFN3YXAoKQoreworICAgIEJpdG1hcCBiaXRtYXA7CisgICAgY29uc3QgaW50IG51bVRocmVhZHMg
PSA1OworICAgIHB0aHJlYWRfdCB0aHJlYWRJRHNbbnVtVGhyZWFkc107CisgICAgRGF0YSBkYXRh
W251bVRocmVhZHNdOworICAgIAorICAgIHByaW50ZigiU3RhcnRpbmcgJWQgdGhyZWFkcyBmb3Ig
Q29tcGFyZUFuZFN3YXAgdGVzdC4gIFRlc3Qgc2hvdWxkIGNvbXBsZXRlIHdpdGhvdXQgaGFuZ2lu
Zy5cbiIsIG51bVRocmVhZHMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGhyZWFkczsg
aSsrKSB7CisgICAgICAgIGRhdGFbaV0uYml0bWFwID0gJmJpdG1hcDsKKyAgICAgICAgZGF0YVtp
XS5pZCA9IGk7CisgICAgICAgIGRhdGFbaV0ubnVtVGhyZWFkcyA9IG51bVRocmVhZHM7CisgICAg
ICAgIHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRJRHNbaV0sIDAsICZzZXRCaXRUaHJlYWRGdW5jLCAm
ZGF0YVtpXSk7CisgICAgfQorCisgICAgcHJpbnRmKCJXYWl0aW5nIGZvciAlZCB0aHJlYWRzIHRv
IGpvaW5cbiIsIG51bVRocmVhZHMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGhyZWFk
czsgaSsrKQorICAgICAgICBwdGhyZWFkX2pvaW4odGhyZWFkSURzW2ldLCBudWxscHRyKTsKKwor
ICAgIHByaW50ZigiUEFTUzogQ29tcGFyZUFuZFN3YXAgdGVzdCBjb21wbGV0ZWQgd2l0aG91dCBh
IGhhbmdcbiIpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMJKHJldmlzaW9uIDE4MTI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5jCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkodm9pZCk7CiAjZW5kaWYKK3Zv
aWQgdGVzdENvbXBhcmVBbmRTd2FwKCk7CiAKIGJvb2wgYXNzZXJ0VHJ1ZShib29sIHZhbHVlLCBj
b25zdCBjaGFyKiBtZXNzYWdlKTsKIGV4dGVybiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29s
bGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwpAQCAtMTE5Miw2ICsxMTkzLDggQEAgaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICA6OlNldEVycm9yTW9kZSgwKTsKICNl
bmRpZgogCisgICAgdGVzdENvbXBhcmVBbmRTd2FwKCk7CisKICNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAogICAgIHRlc3RPYmplY3RpdmVDQVBJKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9qCShyZXZpc2lvbiAxODEyODkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai90ZXN0YXBpL3Rlc3RhcGkudmN4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjkyLDYgKzI5Miw3IEBACiAgIDwvSXRlbUdyb3VwPgog
ICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXHRl
c3RhcGkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXEFQSVx0ZXN0c1xDb21w
YXJlQW5kU3dhcFRlc3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cQVBJ
XHRlc3RzXEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5jIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5oIiAv
PgogICA8L0l0ZW1Hcm91cD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovdGVzdGFwaS90
ZXN0YXBpLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTgxMjg5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovdGVzdGFwaS90ZXN0YXBpLnZjeHByb2ou
ZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDcgQEAKICAgPC9JdGVtR3JvdXA+CiAg
IDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxBUElcdGVzdHNcdGVz
dGFwaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXENvbXBh
cmVBbmRTd2FwLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXEFQSVx0ZXN0
c1xDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYyIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXC4uXEFQSVx0ZXN0c1xDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuaCIgLz4KICAg
PC9JdGVtR3JvdXA+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTgxMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2MjgsNiArMTYyOCw3IEBACiAJ
CUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQg
LyogV2F0Y2hkb2cuY3BwICovOyB9OwogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0
Y2hkb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRDk0RjMwMTcxRTNFMjMwMEJFNzdBNCAv
KiBXYXRjaGRvZ01hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICovOyB9
OworCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjA0MDUwMUFB
RTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9OwogCQlGRUY2ODM1
RTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjY4MzVBMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRT
dHVic0FSTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFRjY4MzVGMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUY2ODM1QjE3NDM0M0NDMDBB
MzJFMjUgLyogSklUU3R1YnNBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUZFRjY4MzYwMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic1g4
Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVG
NjgzNUMxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzWDg2XzY0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzNzMsNiArMzM3NCw3IEBACiAJ
CUZFRDk0RjJCMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXRjaGRvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFRDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXRjaGRvZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2F0Y2hkb2dNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29t
cGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGNjgzNUExNzQzNDNDQzAw
QTMyRTI1IC8qIEpJVFN0dWJzQVJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpJVFN0dWJzQVJNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRjY4MzVCMTc0
MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpJVFN0dWJzQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkVGNjgzNUMxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzWDg2XzY0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJzWDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zNzI5LDYgKzM3MzEsNyBAQAogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAy
NTUgLyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCUZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICov
LAogCQkJCUMyMDMyODFFMTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmplY3RDbGFz
c1Rlc3QuYyAqLywKIAkJCQlDMjAzMjgxRjE5ODE5NzlEMDA4OEI0OTkgLyogQ3VzdG9tR2xvYmFs
T2JqZWN0Q2xhc3NUZXN0LmggKi8sCiAJCQkJQzI5RUNCMDIxODA0RDBFRDAwRDJDQkI0IC8qIEN1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmggKi8sCkBAIC02Nzc4LDYgKzY3ODEsNyBA
QAogCQkJCUMyMDMyODIwMTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmplY3RDbGFz
c1Rlc3QuYyBpbiBTb3VyY2VzICovLAogCQkJCUMyODhCMkRFMThBNTREM0UwMDdCRTQwQiAvKiBE
YXRlVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMjE4MUZDMjE4QTk0OEZCMDAyNUEyMzUg
LyogSlNFeHBvcnRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUZFRjA0MDUxMUFBRTY2MkQw
MEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0
MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICovLAogCQkJCTg2
RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MTI5NykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTUtMDMtMDkgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgorCisgICAgICAgIDgtYml0IHZlcnNpb24gb2Ygd2Vha0NvbXBhcmVBbmRT
d2FwKCkgY2FuIGNhdXNlIGFuIGluZmluaXRlIGxvb3AuCisgICAgICAgIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0MjUxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcmVzZW50bHksIEJpdG1hcDo6Y29uY3VycmVudFRlc3RBbmRTZXQoKSB1c2VzIHRo
ZSA4LWJpdCB2ZXJzaW9uIG9mCisgICAgICAgIHdlYWtDb21wYXJlQW5kU3dhcCgpICh3aGljaCBj
b21wYXJlcyBhbmQgc3dhcHMgYW4gdWludDhfdCB2YWx1ZSkuCisgICAgICAgIEJpdG1hcDo6Y29u
Y3VycmVudFRlc3RBbmRTZXQoKSBoYXMgYSBsb29wIHRoYXQgY2hlY2tzIGlmIGEgYml0IGluIHRo
ZQorICAgICAgICBieXRlIG9mIGludGVyZXN0IGhhcyBiZWVuIHNldC4gIElmIG5vdCwgaXQgd2ls
bCBjYWxsIHRoZSA4LWJpdCBDQVMKKyAgICAgICAgZnVuY3Rpb24gdG8gc2V0IHRoZSBiaXQuCisK
KyAgICAgICAgVW5kZXIgdGhlIGNvdmVycywgZm9yIEFSTSwgdGhlIDgtYml0IENBUyBmdW5jdGlv
biBhY3R1YWxseSB3b3JrcyB3aXRoIGEKKyAgICAgICAgMzItYml0IENBUy4gIFRoZSA4LWJpdCBD
QVMgd2lsbCBmaXJzdCBmZXRjaCB0aGUgMzItYml0IHZhbHVlIGluIG1lbW9yeQorICAgICAgICB0
aGF0IHNob3VsZCBjb250YWluIHRoZSA4LWJpdCB2YWx1ZSwgYW5kIGNoZWNrIGlmIGl0IGNvbnRh
aW5zIHRoZQorICAgICAgICBleHBlY3RlZCBieXRlLiAgSWYgdGhlIHZhbHVlIGluIG1lbW9yeSBk
b2Vzbid0IGhhdmUgdGhlIGV4cGVjdGVkIGJ5dGUsCisgICAgICAgIGl0IHdpbGwgcmV0dXJuIGVh
cmx5IHRvIGl0cyBjYWxsZXIuICBUaGUgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGUgY2FsbGVyCisg
ICAgICAgIHdpbGwgcmVsb2FkIHRoZSBieXRlIGZyb20gbWVtb3J5IGFuZCBjYWxsIHRoZSA4LWJp
dCBDQVMgYWdhaW4uCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSwgdGhpcyBjb2RlIHBhdGggdGhh
dCByZXR1cm5zIGVhcmx5IGRvZXMgbm90IGhhdmUgYQorICAgICAgICBjb21waWxlciBmZW5jZS4g
IFdpdGhvdXQgYSBjb21waWxlciBmZW5jZSwgdGhlIEMrKyBjb21waWxlciBjYW4KKyAgICAgICAg
b3B0aW1pemUgYXdheSB0aGUgcmVsb2FkaW5nIG9mIHRoZSBleHBlY3RlZCBieXRlIHZhbHVlLCBs
ZWF2aW5nIGl0CisgICAgICAgIHVuY2hhbmdlZC4gIEFzIGEgcmVzdWx0LCB3ZSdsbCBoYXZlIGEg
aW5maW5pdGUgbG9vcCBoZXJlIHRoYXQgY2hlY2tzIGEKKyAgICAgICAgdmFsdWUgdGhhdCB3aWxs
IG5ldmVyIGNoYW5nZSwgYW5kIHRoZSBsb29wIHdpbGwgbm90IHRlcm1pbmF0ZSB1bnRpbCB0aGUK
KyAgICAgICAgdmFsdWUgY2hhbmdlcy4KKworICAgICAgICBUaGUgZml4IGlzIHRvIGVsaW1pbmF0
ZSB0aGUgZWFybHkgcmV0dXJuIGNoZWNrIGluIHRoZSA4LWJpdCBDQVMsIGFuZAorICAgICAgICBo
YXZlIGl0IGFsd2F5cyBjYWxsIGRvd24gdG8gdGhlIDMyLWJpdCBDQVMuICBUaGUgMzItYml0IENB
UyBoYXMgYQorICAgICAgICBjb21waWxlciBmZW5jZSB3aGljaCB3aWxsIHByZXZlbnQgdGhpcyBp
c3N1ZS4KKworICAgICAgICAqIHd0Zi9BdG9taWNzLmg6CisgICAgICAgIChXVEY6OndlYWtDb21w
YXJlQW5kU3dhcCk6CisKIDIwMTUtMDMtMDkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtFRkxdIE1vdmUgRGlzcGF0Y2hRdWV1ZSB0byBXVEYKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9BdG9taWNzLmgJKHJldmlzaW9uIDE4MTI4OSkKKysrIFNvdXJjZS9XVEYvd3RmL0F0b21pY3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEzLDE4ICszMTMsMjcgQEAgaW5saW5lIGJvb2wgd2Vha0Nv
bXBhcmVBbmRTd2FwKHVpbnQ4X3QqIAogICAgIHVpbnRwdHJfdCBsb2NhdGlvbk9mZnNldCA9IGxv
Y2F0aW9uVmFsdWUgLSBhbGlnbmVkTG9jYXRpb25WYWx1ZTsKICAgICBBU1NFUlQobG9jYXRpb25P
ZmZzZXQgPCBzaXplb2YodW5zaWduZWQpKTsKICAgICB1bnNpZ25lZCogYWxpZ25lZExvY2F0aW9u
ID0gYml0d2lzZV9jYXN0PHVuc2lnbmVkKj4oYWxpZ25lZExvY2F0aW9uVmFsdWUpOwotICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoaXMgbG9hZCBpcyBhbHdheXMgaXNzdWVkIGFuZCBuZXZlciBvcHRp
bWl6ZWQgYXdheS4KLSAgICB1bnNpZ25lZCBvbGRBbGlnbmVkVmFsdWUgPSAqY29uc3RfY2FzdDx2
b2xhdGlsZSB1bnNpZ25lZCo+KGFsaWduZWRMb2NhdGlvbik7Ci0gICAgdW5pb24gewotICAgICAg
ICB1aW50OF90IGJ5dGVzW3NpemVvZih1bnNpZ25lZCldOwotICAgICAgICB1bnNpZ25lZCB3b3Jk
OwotICAgIH0gdTsKLSAgICB1LndvcmQgPSBvbGRBbGlnbmVkVmFsdWU7Ci0gICAgaWYgKHUuYnl0
ZXNbbG9jYXRpb25PZmZzZXRdICE9IGV4cGVjdGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgdS5ieXRlc1tsb2NhdGlvbk9mZnNldF0gPSBuZXdWYWx1ZTsKLSAgICB1bnNpZ25lZCBuZXdB
bGlnbmVkVmFsdWUgPSB1LndvcmQ7Ci0gICAgcmV0dXJuIHdlYWtDb21wYXJlQW5kU3dhcChhbGln
bmVkTG9jYXRpb24sIG9sZEFsaWduZWRWYWx1ZSwgbmV3QWxpZ25lZFZhbHVlKTsKKworICAgIHN0
cnVjdCBDb21wb3NpdGVWYWx1ZSB7CisgICAgcHVibGljOgorICAgICAgICBDb21wb3NpdGVWYWx1
ZSh2b2xhdGlsZSB1bnNpZ25lZCogYmFzZVdvcmRBZGRyLCB1aW50OF90IHJlcGxhY2VtZW50Qnl0
ZSwgdWludHB0cl90IHJlcGxhY2VtZW50SW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUu
d29yZCA9ICpiYXNlV29yZEFkZHI7CisgICAgICAgICAgICB1LmJ5dGVzW3JlcGxhY2VtZW50SW5k
ZXhdID0gcmVwbGFjZW1lbnRCeXRlOworICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgd29y
ZCgpIHsgcmV0dXJuIHUud29yZDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5pb24gewor
ICAgICAgICAgICAgdW5zaWduZWQgd29yZDsKKyAgICAgICAgICAgIHVpbnQ4X3QgYnl0ZXNbc2l6
ZW9mKHVuc2lnbmVkKV07CisgICAgICAgIH0gdTsKKyAgICB9OworICAgIAorICAgIENvbXBvc2l0
ZVZhbHVlIG9sZEFsaWduZWRWYWx1ZShhbGlnbmVkTG9jYXRpb24sIGV4cGVjdGVkLCBsb2NhdGlv
bk9mZnNldCk7CisgICAgQ29tcG9zaXRlVmFsdWUgbmV3QWxpZ25lZFZhbHVlKGFsaWduZWRMb2Nh
dGlvbiwgbmV3VmFsdWUsIGxvY2F0aW9uT2Zmc2V0KTsKKyAgICByZXR1cm4gd2Vha0NvbXBhcmVB
bmRTd2FwKGFsaWduZWRMb2NhdGlvbiwgb2xkQWxpZ25lZFZhbHVlLndvcmQoKSwgbmV3QWxpZ25l
ZFZhbHVlLndvcmQoKSk7CiAjZW5kaWYKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsK
</data>
<flag name="review"
          id="273201"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="273202"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248307</attachid>
            <date>2015-03-09 19:09:44 -0700</date>
            <delta_ts>2015-03-09 19:11:43 -0700</delta_ts>
            <desc>take 3: splice the expectedValue and newValue using the same oldValue</desc>
            <filename>bug-142513.patch</filename>
            <type>text/plain</type>
            <size>14817</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMjk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE1LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICA4
LWJpdCB2ZXJzaW9uIG9mIHdlYWtDb21wYXJlQW5kU3dhcCgpIGNhbiBjYXVzZSBhbiBpbmZpbml0
ZSBsb29wLgorICAgICAgICBodHRwczovL3dlYmtpdC5vcmcvYi8xNDI1MTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQg
ZXhlcmNpc2VzIHRoZSA4LWJpdCBDQVMgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLiAgVGhlIHRocmVh
ZHMKKyAgICAgICAgd2lsbCBjb250ZW5kIHRvIHNldCBiaXRzIGluIGEgbGFyZ2UgYXJyYXkgb2Yg
Ynl0ZXMgdXNpbmcgdGhlIENBUyBmdW5jdGlvbi4KKworICAgICAgICAqIEFQSS90ZXN0cy9Db21w
YXJlQW5kU3dhcFRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEJpdG1hcDo6Qml0bWFwKToKKyAg
ICAgICAgKEJpdG1hcDo6bnVtQml0cyk6CisgICAgICAgIChCaXRtYXA6OmNsZWFyQWxsKToKKyAg
ICAgICAgKEJpdG1hcDo6Y29uY3VycmVudFRlc3RBbmRTZXQpOgorICAgICAgICAoc2V0Qml0VGhy
ZWFkRnVuYyk6CisgICAgICAgICh0ZXN0Q29tcGFyZUFuZFN3YXApOgorICAgICAgICAqIEFQSS90
ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovdGVzdGFwaS90ZXN0YXBpLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAzLTA5ICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBTdGFsZSBlbnRyaWVz
IGluIFdlYWtHQ01hcHMgYXJlIGtlZXBpbmcgdG9ucyBvZiBXZWFrQmxvY2tzIGFsaXZlIHVubmVj
ZXNzYXJpbHkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0NvbXBhcmVB
bmRTd2FwVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx0aHJlYWQ+CisjaW5jbHVkZSA8d3RmL0F0b21p
Y3MuaD4KKworLy8gUmVncmVzc2lvbiB0ZXN0IGZvciB3ZWJraXQub3JnL2IvMTQyNTEzCitleHRl
cm4gIkMiIHZvaWQgdGVzdENvbXBhcmVBbmRTd2FwKCk7CisKK2NsYXNzIEJpdG1hcCB7CitwdWJs
aWM6CisgICAgQml0bWFwKCkgeyBjbGVhckFsbCgpOyB9CisKKyAgICBpbmxpbmUgdm9pZCBjbGVh
ckFsbCgpOworICAgIGlubGluZSBib29sIGNvbmN1cnJlbnRUZXN0QW5kU2V0KHNpemVfdCBuKTsK
KyAgICBpbmxpbmUgc2l6ZV90IG51bUJpdHMoKSBjb25zdCB7IHJldHVybiB3b3JkcyAqIHdvcmRT
aXplOyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBTaXplID0gNDA5Niox
MDsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB3b3JkU2l6ZSA9IHNpemVvZih1aW50OF90
KSAqIDg7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdvcmRzID0gKFNpemUgKyB3b3JkU2l6
ZSAtIDEpIC8gd29yZFNpemU7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgb25lID0gMTsKKwor
ICAgIHVpbnQ4X3QgYml0c1t3b3Jkc107Cit9OworCitpbmxpbmUgdm9pZCBCaXRtYXA6OmNsZWFy
QWxsKCkKK3sKKyAgICBtZW1zZXQoJmJpdHMsIDAsIHNpemVvZihiaXRzKSk7Cit9CisKK2lubGlu
ZSBib29sIEJpdG1hcDo6Y29uY3VycmVudFRlc3RBbmRTZXQoc2l6ZV90IG4pCit7CisgICAgdWlu
dDhfdCBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOworICAgIHNpemVfdCBpbmRleCA9IG4g
LyB3b3JkU2l6ZTsKKyAgICB1aW50OF90KiB3b3JkUHRyID0gJmJpdHNbaW5kZXhdOworICAgIHVp
bnQ4X3Qgb2xkVmFsdWU7CisgICAgZG8geworICAgICAgICBvbGRWYWx1ZSA9ICp3b3JkUHRyOwor
ICAgICAgICBpZiAob2xkVmFsdWUgJiBtYXNrKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfSB3aGlsZSAoIVdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKHdvcmRQdHIsIG9sZFZhbHVlLCBv
bGRWYWx1ZSB8IG1hc2spKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0cnVjdCBEYXRhIHsK
KyAgICBCaXRtYXAqIGJpdG1hcDsKKyAgICBpbnQgaWQ7CisgICAgaW50IG51bVRocmVhZHM7Cit9
OworCitzdGF0aWMgdm9pZCogc2V0Qml0VGhyZWFkRnVuYyh2b2lkKiBwKQoreworICAgIERhdGEq
IGRhdGEgPSByZWludGVycHJldF9jYXN0PERhdGEqPihwKTsKKyAgICBCaXRtYXAqIGJpdG1hcCA9
IGRhdGEtPmJpdG1hcDsKKyAgICBzaXplX3QgbnVtQml0cyA9IGJpdG1hcC0+bnVtQml0cygpOwor
CisgICAgLy8gVGhlIGNvbXB1dGVkIHN0YXJ0IGluZGV4IGhlcmUgaXMgaGV1cmlzdGljIHRoYXQg
c2VlbXMgdG8gbWF4aW1pemUgKGFuZWNkb3RhbGx5KQorICAgIC8vIHRoZSBjaGFuY2UgZm9yIHRo
ZSBDQVMgaXNzdWUgdG8gbWFuaWZlc3QuCisgICAgc2l6ZV90IHN0YXJ0ID0gKG51bUJpdHMgKiAo
ZGF0YS0+bnVtVGhyZWFkcyAtIGRhdGEtPmlkKSkgLyBkYXRhLT5udW1UaHJlYWRzOworCisgICAg
cHJpbnRmKCIgICBzdGFydGVkIFRocmVhZCAlZFxuIiwgZGF0YS0+aWQpOworICAgIGZvciAoc2l6
ZV90IGkgPSBzdGFydDsgaSA8IG51bUJpdHM7IGkrKykKKyAgICAgICAgd2hpbGUgKCFiaXRtYXAt
PmNvbmN1cnJlbnRUZXN0QW5kU2V0KGkpKSB7IH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0YXJ0OyBpKyspCisgICAgICAgIHdoaWxlICghYml0bWFwLT5jb25jdXJyZW50VGVzdEFuZFNl
dChpKSkgeyB9CisKKyAgICBwcmludGYoIiAgIGZpbmlzaGVkIFRocmVhZCAlZFxuIiwgZGF0YS0+
aWQpOworICAgIHB0aHJlYWRfZXhpdChudWxscHRyKTsKK30KKwordm9pZCB0ZXN0Q29tcGFyZUFu
ZFN3YXAoKQoreworICAgIEJpdG1hcCBiaXRtYXA7CisgICAgY29uc3QgaW50IG51bVRocmVhZHMg
PSA1OworICAgIHB0aHJlYWRfdCB0aHJlYWRJRHNbbnVtVGhyZWFkc107CisgICAgRGF0YSBkYXRh
W251bVRocmVhZHNdOworICAgIAorICAgIHByaW50ZigiU3RhcnRpbmcgJWQgdGhyZWFkcyBmb3Ig
Q29tcGFyZUFuZFN3YXAgdGVzdC4gIFRlc3Qgc2hvdWxkIGNvbXBsZXRlIHdpdGhvdXQgaGFuZ2lu
Zy5cbiIsIG51bVRocmVhZHMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGhyZWFkczsg
aSsrKSB7CisgICAgICAgIGRhdGFbaV0uYml0bWFwID0gJmJpdG1hcDsKKyAgICAgICAgZGF0YVtp
XS5pZCA9IGk7CisgICAgICAgIGRhdGFbaV0ubnVtVGhyZWFkcyA9IG51bVRocmVhZHM7CisgICAg
ICAgIHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRJRHNbaV0sIDAsICZzZXRCaXRUaHJlYWRGdW5jLCAm
ZGF0YVtpXSk7CisgICAgfQorCisgICAgcHJpbnRmKCJXYWl0aW5nIGZvciAlZCB0aHJlYWRzIHRv
IGpvaW5cbiIsIG51bVRocmVhZHMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGhyZWFk
czsgaSsrKQorICAgICAgICBwdGhyZWFkX2pvaW4odGhyZWFkSURzW2ldLCBudWxscHRyKTsKKwor
ICAgIHByaW50ZigiUEFTUzogQ29tcGFyZUFuZFN3YXAgdGVzdCBjb21wbGV0ZWQgd2l0aG91dCBh
IGhhbmdcbiIpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMJKHJldmlzaW9uIDE4MTI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5jCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkodm9pZCk7CiAjZW5kaWYKK3Zv
aWQgdGVzdENvbXBhcmVBbmRTd2FwKCk7CiAKIGJvb2wgYXNzZXJ0VHJ1ZShib29sIHZhbHVlLCBj
b25zdCBjaGFyKiBtZXNzYWdlKTsKIGV4dGVybiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29s
bGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwpAQCAtMTE5Miw2ICsxMTkzLDggQEAgaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICA6OlNldEVycm9yTW9kZSgwKTsKICNl
bmRpZgogCisgICAgdGVzdENvbXBhcmVBbmRTd2FwKCk7CisKICNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAogICAgIHRlc3RPYmplY3RpdmVDQVBJKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9qCShyZXZpc2lvbiAxODEyODkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai90ZXN0YXBpL3Rlc3RhcGkudmN4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjkyLDYgKzI5Miw3IEBACiAgIDwvSXRlbUdyb3VwPgog
ICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXHRl
c3RhcGkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXEFQSVx0ZXN0c1xDb21w
YXJlQW5kU3dhcFRlc3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cQVBJ
XHRlc3RzXEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5jIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5oIiAv
PgogICA8L0l0ZW1Hcm91cD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovdGVzdGFwaS90
ZXN0YXBpLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTgxMjg5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovdGVzdGFwaS90ZXN0YXBpLnZjeHByb2ou
ZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDcgQEAKICAgPC9JdGVtR3JvdXA+CiAg
IDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxBUElcdGVzdHNcdGVz
dGFwaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXENvbXBh
cmVBbmRTd2FwLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXEFQSVx0ZXN0
c1xDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYyIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXC4uXEFQSVx0ZXN0c1xDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuaCIgLz4KICAg
PC9JdGVtR3JvdXA+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTgxMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2MjgsNiArMTYyOCw3IEBACiAJ
CUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQg
LyogV2F0Y2hkb2cuY3BwICovOyB9OwogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0
Y2hkb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRDk0RjMwMTcxRTNFMjMwMEJFNzdBNCAv
KiBXYXRjaGRvZ01hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICovOyB9
OworCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjA0MDUwMUFB
RTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9OwogCQlGRUY2ODM1
RTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjY4MzVBMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRT
dHVic0FSTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFRjY4MzVGMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUY2ODM1QjE3NDM0M0NDMDBB
MzJFMjUgLyogSklUU3R1YnNBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUZFRjY4MzYwMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic1g4
Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVG
NjgzNUMxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzWDg2XzY0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzNzMsNiArMzM3NCw3IEBACiAJ
CUZFRDk0RjJCMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXRjaGRvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFRDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXRjaGRvZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2F0Y2hkb2dNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29t
cGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGNjgzNUExNzQzNDNDQzAw
QTMyRTI1IC8qIEpJVFN0dWJzQVJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpJVFN0dWJzQVJNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRjY4MzVCMTc0
MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpJVFN0dWJzQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkVGNjgzNUMxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzWDg2XzY0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJzWDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zNzI5LDYgKzM3MzEsNyBAQAogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAy
NTUgLyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCUZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICov
LAogCQkJCUMyMDMyODFFMTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmplY3RDbGFz
c1Rlc3QuYyAqLywKIAkJCQlDMjAzMjgxRjE5ODE5NzlEMDA4OEI0OTkgLyogQ3VzdG9tR2xvYmFs
T2JqZWN0Q2xhc3NUZXN0LmggKi8sCiAJCQkJQzI5RUNCMDIxODA0RDBFRDAwRDJDQkI0IC8qIEN1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmggKi8sCkBAIC02Nzc4LDYgKzY3ODEsNyBA
QAogCQkJCUMyMDMyODIwMTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmplY3RDbGFz
c1Rlc3QuYyBpbiBTb3VyY2VzICovLAogCQkJCUMyODhCMkRFMThBNTREM0UwMDdCRTQwQiAvKiBE
YXRlVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMjE4MUZDMjE4QTk0OEZCMDAyNUEyMzUg
LyogSlNFeHBvcnRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUZFRjA0MDUxMUFBRTY2MkQw
MEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0
MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICovLAogCQkJCTg2
RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MTI5NykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTUtMDMtMDkgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgorCisgICAgICAgIDgtYml0IHZlcnNpb24gb2Ygd2Vha0NvbXBhcmVBbmRT
d2FwKCkgY2FuIGNhdXNlIGFuIGluZmluaXRlIGxvb3AuCisgICAgICAgIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0MjUxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcmVzZW50bHksIEJpdG1hcDo6Y29uY3VycmVudFRlc3RBbmRTZXQoKSB1c2VzIHRo
ZSA4LWJpdCB2ZXJzaW9uIG9mCisgICAgICAgIHdlYWtDb21wYXJlQW5kU3dhcCgpICh3aGljaCBj
b21wYXJlcyBhbmQgc3dhcHMgYW4gdWludDhfdCB2YWx1ZSkuCisgICAgICAgIEJpdG1hcDo6Y29u
Y3VycmVudFRlc3RBbmRTZXQoKSBoYXMgYSBsb29wIHRoYXQgY2hlY2tzIGlmIGEgYml0IGluIHRo
ZQorICAgICAgICBieXRlIG9mIGludGVyZXN0IGhhcyBiZWVuIHNldC4gIElmIG5vdCwgaXQgd2ls
bCBjYWxsIHRoZSA4LWJpdCBDQVMKKyAgICAgICAgZnVuY3Rpb24gdG8gc2V0IHRoZSBiaXQuCisK
KyAgICAgICAgVW5kZXIgdGhlIGNvdmVycywgZm9yIEFSTSwgdGhlIDgtYml0IENBUyBmdW5jdGlv
biBhY3R1YWxseSB3b3JrcyB3aXRoIGEKKyAgICAgICAgMzItYml0IENBUy4gIFRoZSA4LWJpdCBD
QVMgd2lsbCBmaXJzdCBmZXRjaCB0aGUgMzItYml0IHZhbHVlIGluIG1lbW9yeQorICAgICAgICB0
aGF0IHNob3VsZCBjb250YWluIHRoZSA4LWJpdCB2YWx1ZSwgYW5kIGNoZWNrIGlmIGl0IGNvbnRh
aW5zIHRoZQorICAgICAgICBleHBlY3RlZCBieXRlLiAgSWYgdGhlIHZhbHVlIGluIG1lbW9yeSBk
b2Vzbid0IGhhdmUgdGhlIGV4cGVjdGVkIGJ5dGUsCisgICAgICAgIGl0IHdpbGwgcmV0dXJuIGVh
cmx5IHRvIGl0cyBjYWxsZXIuICBUaGUgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGUgY2FsbGVyCisg
ICAgICAgIHdpbGwgcmVsb2FkIHRoZSBieXRlIGZyb20gbWVtb3J5IGFuZCBjYWxsIHRoZSA4LWJp
dCBDQVMgYWdhaW4uCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSwgdGhpcyBjb2RlIHBhdGggdGhh
dCByZXR1cm5zIGVhcmx5IGRvZXMgbm90IGhhdmUgYQorICAgICAgICBjb21waWxlciBmZW5jZS4g
IFdpdGhvdXQgYSBjb21waWxlciBmZW5jZSwgdGhlIEMrKyBjb21waWxlciBjYW4KKyAgICAgICAg
b3B0aW1pemUgYXdheSB0aGUgcmVsb2FkaW5nIG9mIHRoZSBleHBlY3RlZCBieXRlIHZhbHVlLCBs
ZWF2aW5nIGl0CisgICAgICAgIHVuY2hhbmdlZC4gIEFzIGEgcmVzdWx0LCB3ZSdsbCBoYXZlIGEg
aW5maW5pdGUgbG9vcCBoZXJlIHRoYXQgY2hlY2tzIGEKKyAgICAgICAgdmFsdWUgdGhhdCB3aWxs
IG5ldmVyIGNoYW5nZSwgYW5kIHRoZSBsb29wIHdpbGwgbm90IHRlcm1pbmF0ZSB1bnRpbCB0aGUK
KyAgICAgICAgdmFsdWUgY2hhbmdlcy4KKworICAgICAgICBUaGUgZml4IGlzIHRvIGVsaW1pbmF0
ZSB0aGUgZWFybHkgcmV0dXJuIGNoZWNrIGluIHRoZSA4LWJpdCBDQVMsIGFuZAorICAgICAgICBo
YXZlIGl0IGFsd2F5cyBjYWxsIGRvd24gdG8gdGhlIDMyLWJpdCBDQVMuICBUaGUgMzItYml0IENB
UyBoYXMgYQorICAgICAgICBjb21waWxlciBmZW5jZSB3aGljaCB3aWxsIHByZXZlbnQgdGhpcyBp
c3N1ZS4KKworICAgICAgICAqIHd0Zi9BdG9taWNzLmg6CisgICAgICAgIChXVEY6OndlYWtDb21w
YXJlQW5kU3dhcCk6CisKIDIwMTUtMDMtMDkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtFRkxdIE1vdmUgRGlzcGF0Y2hRdWV1ZSB0byBXVEYKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9BdG9taWNzLmgJKHJldmlzaW9uIDE4MTI4OSkKKysrIFNvdXJjZS9XVEYvd3RmL0F0b21pY3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEzLDE4ICszMTMsMjYgQEAgaW5saW5lIGJvb2wgd2Vha0Nv
bXBhcmVBbmRTd2FwKHVpbnQ4X3QqIAogICAgIHVpbnRwdHJfdCBsb2NhdGlvbk9mZnNldCA9IGxv
Y2F0aW9uVmFsdWUgLSBhbGlnbmVkTG9jYXRpb25WYWx1ZTsKICAgICBBU1NFUlQobG9jYXRpb25P
ZmZzZXQgPCBzaXplb2YodW5zaWduZWQpKTsKICAgICB1bnNpZ25lZCogYWxpZ25lZExvY2F0aW9u
ID0gYml0d2lzZV9jYXN0PHVuc2lnbmVkKj4oYWxpZ25lZExvY2F0aW9uVmFsdWUpOwotICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoaXMgbG9hZCBpcyBhbHdheXMgaXNzdWVkIGFuZCBuZXZlciBvcHRp
bWl6ZWQgYXdheS4KLSAgICB1bnNpZ25lZCBvbGRBbGlnbmVkVmFsdWUgPSAqY29uc3RfY2FzdDx2
b2xhdGlsZSB1bnNpZ25lZCo+KGFsaWduZWRMb2NhdGlvbik7Ci0gICAgdW5pb24gewotICAgICAg
ICB1aW50OF90IGJ5dGVzW3NpemVvZih1bnNpZ25lZCldOwotICAgICAgICB1bnNpZ25lZCB3b3Jk
OwotICAgIH0gdTsKLSAgICB1LndvcmQgPSBvbGRBbGlnbmVkVmFsdWU7Ci0gICAgaWYgKHUuYnl0
ZXNbbG9jYXRpb25PZmZzZXRdICE9IGV4cGVjdGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgdS5ieXRlc1tsb2NhdGlvbk9mZnNldF0gPSBuZXdWYWx1ZTsKLSAgICB1bnNpZ25lZCBuZXdB
bGlnbmVkVmFsdWUgPSB1LndvcmQ7Ci0gICAgcmV0dXJuIHdlYWtDb21wYXJlQW5kU3dhcChhbGln
bmVkTG9jYXRpb24sIG9sZEFsaWduZWRWYWx1ZSwgbmV3QWxpZ25lZFZhbHVlKTsKKyAgICB1bnNp
Z25lZCBvbGRBbGlnbmVkVmFsdWUgPSAqYWxpZ25lZExvY2F0aW9uOworCisgICAgc3RydWN0IFNw
bGljZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIHNwbGljZSh1bnNp
Z25lZCB2YWx1ZSwgdWludDhfdCBieXRlLCB1aW50cHRyX3QgYnl0ZUluZGV4KQorICAgICAgICB7
CisgICAgICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgd29yZDsKKyAg
ICAgICAgICAgICAgICB1aW50OF90IGJ5dGVzW3NpemVvZih1bnNpZ25lZCldOworICAgICAgICAg
ICAgfSB1OworICAgICAgICAgICAgdS53b3JkID0gdmFsdWU7CisgICAgICAgICAgICB1LmJ5dGVz
W2J5dGVJbmRleF0gPSBieXRlOworICAgICAgICAgICAgcmV0dXJuIHUud29yZDsKKyAgICAgICAg
fQorICAgIH07CisgICAgCisgICAgdW5zaWduZWQgZXhwZWN0ZWRBbGlnbmVkVmFsdWUgPSBTcGxp
Y2VyOjpzcGxpY2Uob2xkQWxpZ25lZFZhbHVlLCBleHBlY3RlZCwgbG9jYXRpb25PZmZzZXQpOwor
ICAgIHVuc2lnbmVkIG5ld0FsaWduZWRWYWx1ZSA9IFNwbGljZXI6OnNwbGljZShvbGRBbGlnbmVk
VmFsdWUsIG5ld1ZhbHVlLCBsb2NhdGlvbk9mZnNldCk7CisKKyAgICByZXR1cm4gd2Vha0NvbXBh
cmVBbmRTd2FwKGFsaWduZWRMb2NhdGlvbiwgZXhwZWN0ZWRBbGlnbmVkVmFsdWUsIG5ld0FsaWdu
ZWRWYWx1ZSk7CiAjZW5kaWYKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248308</attachid>
            <date>2015-03-09 19:11:43 -0700</date>
            <delta_ts>2015-03-09 19:12:55 -0700</delta_ts>
            <desc>take 4: fixed missing volatile</desc>
            <filename>bug-142513.patch</filename>
            <type>text/plain</type>
            <size>14754</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMjk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE1LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICA4
LWJpdCB2ZXJzaW9uIG9mIHdlYWtDb21wYXJlQW5kU3dhcCgpIGNhbiBjYXVzZSBhbiBpbmZpbml0
ZSBsb29wLgorICAgICAgICBodHRwczovL3dlYmtpdC5vcmcvYi8xNDI1MTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQg
ZXhlcmNpc2VzIHRoZSA4LWJpdCBDQVMgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLiAgVGhlIHRocmVh
ZHMKKyAgICAgICAgd2lsbCBjb250ZW5kIHRvIHNldCBiaXRzIGluIGEgbGFyZ2UgYXJyYXkgb2Yg
Ynl0ZXMgdXNpbmcgdGhlIENBUyBmdW5jdGlvbi4KKworICAgICAgICAqIEFQSS90ZXN0cy9Db21w
YXJlQW5kU3dhcFRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEJpdG1hcDo6Qml0bWFwKToKKyAg
ICAgICAgKEJpdG1hcDo6bnVtQml0cyk6CisgICAgICAgIChCaXRtYXA6OmNsZWFyQWxsKToKKyAg
ICAgICAgKEJpdG1hcDo6Y29uY3VycmVudFRlc3RBbmRTZXQpOgorICAgICAgICAoc2V0Qml0VGhy
ZWFkRnVuYyk6CisgICAgICAgICh0ZXN0Q29tcGFyZUFuZFN3YXApOgorICAgICAgICAqIEFQSS90
ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovdGVzdGFwaS90ZXN0YXBpLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAzLTA5ICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBTdGFsZSBlbnRyaWVz
IGluIFdlYWtHQ01hcHMgYXJlIGtlZXBpbmcgdG9ucyBvZiBXZWFrQmxvY2tzIGFsaXZlIHVubmVj
ZXNzYXJpbHkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0NvbXBhcmVB
bmRTd2FwVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx0aHJlYWQ+CisjaW5jbHVkZSA8d3RmL0F0b21p
Y3MuaD4KKworLy8gUmVncmVzc2lvbiB0ZXN0IGZvciB3ZWJraXQub3JnL2IvMTQyNTEzCitleHRl
cm4gIkMiIHZvaWQgdGVzdENvbXBhcmVBbmRTd2FwKCk7CisKK2NsYXNzIEJpdG1hcCB7CitwdWJs
aWM6CisgICAgQml0bWFwKCkgeyBjbGVhckFsbCgpOyB9CisKKyAgICBpbmxpbmUgdm9pZCBjbGVh
ckFsbCgpOworICAgIGlubGluZSBib29sIGNvbmN1cnJlbnRUZXN0QW5kU2V0KHNpemVfdCBuKTsK
KyAgICBpbmxpbmUgc2l6ZV90IG51bUJpdHMoKSBjb25zdCB7IHJldHVybiB3b3JkcyAqIHdvcmRT
aXplOyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBTaXplID0gNDA5Niox
MDsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB3b3JkU2l6ZSA9IHNpemVvZih1aW50OF90
KSAqIDg7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdvcmRzID0gKFNpemUgKyB3b3JkU2l6
ZSAtIDEpIC8gd29yZFNpemU7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgb25lID0gMTsKKwor
ICAgIHVpbnQ4X3QgYml0c1t3b3Jkc107Cit9OworCitpbmxpbmUgdm9pZCBCaXRtYXA6OmNsZWFy
QWxsKCkKK3sKKyAgICBtZW1zZXQoJmJpdHMsIDAsIHNpemVvZihiaXRzKSk7Cit9CisKK2lubGlu
ZSBib29sIEJpdG1hcDo6Y29uY3VycmVudFRlc3RBbmRTZXQoc2l6ZV90IG4pCit7CisgICAgdWlu
dDhfdCBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOworICAgIHNpemVfdCBpbmRleCA9IG4g
LyB3b3JkU2l6ZTsKKyAgICB1aW50OF90KiB3b3JkUHRyID0gJmJpdHNbaW5kZXhdOworICAgIHVp
bnQ4X3Qgb2xkVmFsdWU7CisgICAgZG8geworICAgICAgICBvbGRWYWx1ZSA9ICp3b3JkUHRyOwor
ICAgICAgICBpZiAob2xkVmFsdWUgJiBtYXNrKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfSB3aGlsZSAoIVdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKHdvcmRQdHIsIG9sZFZhbHVlLCBv
bGRWYWx1ZSB8IG1hc2spKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0cnVjdCBEYXRhIHsK
KyAgICBCaXRtYXAqIGJpdG1hcDsKKyAgICBpbnQgaWQ7CisgICAgaW50IG51bVRocmVhZHM7Cit9
OworCitzdGF0aWMgdm9pZCogc2V0Qml0VGhyZWFkRnVuYyh2b2lkKiBwKQoreworICAgIERhdGEq
IGRhdGEgPSByZWludGVycHJldF9jYXN0PERhdGEqPihwKTsKKyAgICBCaXRtYXAqIGJpdG1hcCA9
IGRhdGEtPmJpdG1hcDsKKyAgICBzaXplX3QgbnVtQml0cyA9IGJpdG1hcC0+bnVtQml0cygpOwor
CisgICAgLy8gVGhlIGNvbXB1dGVkIHN0YXJ0IGluZGV4IGhlcmUgaXMgaGV1cmlzdGljIHRoYXQg
c2VlbXMgdG8gbWF4aW1pemUgKGFuZWNkb3RhbGx5KQorICAgIC8vIHRoZSBjaGFuY2UgZm9yIHRo
ZSBDQVMgaXNzdWUgdG8gbWFuaWZlc3QuCisgICAgc2l6ZV90IHN0YXJ0ID0gKG51bUJpdHMgKiAo
ZGF0YS0+bnVtVGhyZWFkcyAtIGRhdGEtPmlkKSkgLyBkYXRhLT5udW1UaHJlYWRzOworCisgICAg
cHJpbnRmKCIgICBzdGFydGVkIFRocmVhZCAlZFxuIiwgZGF0YS0+aWQpOworICAgIGZvciAoc2l6
ZV90IGkgPSBzdGFydDsgaSA8IG51bUJpdHM7IGkrKykKKyAgICAgICAgd2hpbGUgKCFiaXRtYXAt
PmNvbmN1cnJlbnRUZXN0QW5kU2V0KGkpKSB7IH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0YXJ0OyBpKyspCisgICAgICAgIHdoaWxlICghYml0bWFwLT5jb25jdXJyZW50VGVzdEFuZFNl
dChpKSkgeyB9CisKKyAgICBwcmludGYoIiAgIGZpbmlzaGVkIFRocmVhZCAlZFxuIiwgZGF0YS0+
aWQpOworICAgIHB0aHJlYWRfZXhpdChudWxscHRyKTsKK30KKwordm9pZCB0ZXN0Q29tcGFyZUFu
ZFN3YXAoKQoreworICAgIEJpdG1hcCBiaXRtYXA7CisgICAgY29uc3QgaW50IG51bVRocmVhZHMg
PSA1OworICAgIHB0aHJlYWRfdCB0aHJlYWRJRHNbbnVtVGhyZWFkc107CisgICAgRGF0YSBkYXRh
W251bVRocmVhZHNdOworICAgIAorICAgIHByaW50ZigiU3RhcnRpbmcgJWQgdGhyZWFkcyBmb3Ig
Q29tcGFyZUFuZFN3YXAgdGVzdC4gIFRlc3Qgc2hvdWxkIGNvbXBsZXRlIHdpdGhvdXQgaGFuZ2lu
Zy5cbiIsIG51bVRocmVhZHMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGhyZWFkczsg
aSsrKSB7CisgICAgICAgIGRhdGFbaV0uYml0bWFwID0gJmJpdG1hcDsKKyAgICAgICAgZGF0YVtp
XS5pZCA9IGk7CisgICAgICAgIGRhdGFbaV0ubnVtVGhyZWFkcyA9IG51bVRocmVhZHM7CisgICAg
ICAgIHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRJRHNbaV0sIDAsICZzZXRCaXRUaHJlYWRGdW5jLCAm
ZGF0YVtpXSk7CisgICAgfQorCisgICAgcHJpbnRmKCJXYWl0aW5nIGZvciAlZCB0aHJlYWRzIHRv
IGpvaW5cbiIsIG51bVRocmVhZHMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGhyZWFk
czsgaSsrKQorICAgICAgICBwdGhyZWFkX2pvaW4odGhyZWFkSURzW2ldLCBudWxscHRyKTsKKwor
ICAgIHByaW50ZigiUEFTUzogQ29tcGFyZUFuZFN3YXAgdGVzdCBjb21wbGV0ZWQgd2l0aG91dCBh
IGhhbmdcbiIpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMJKHJldmlzaW9uIDE4MTI4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5jCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkodm9pZCk7CiAjZW5kaWYKK3Zv
aWQgdGVzdENvbXBhcmVBbmRTd2FwKCk7CiAKIGJvb2wgYXNzZXJ0VHJ1ZShib29sIHZhbHVlLCBj
b25zdCBjaGFyKiBtZXNzYWdlKTsKIGV4dGVybiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29s
bGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwpAQCAtMTE5Miw2ICsxMTkzLDggQEAgaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICA6OlNldEVycm9yTW9kZSgwKTsKICNl
bmRpZgogCisgICAgdGVzdENvbXBhcmVBbmRTd2FwKCk7CisKICNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAogICAgIHRlc3RPYmplY3RpdmVDQVBJKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9qCShyZXZpc2lvbiAxODEyODkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai90ZXN0YXBpL3Rlc3RhcGkudmN4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjkyLDYgKzI5Miw3IEBACiAgIDwvSXRlbUdyb3VwPgog
ICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXHRl
c3RhcGkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXEFQSVx0ZXN0c1xDb21w
YXJlQW5kU3dhcFRlc3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cQVBJ
XHRlc3RzXEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5jIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5oIiAv
PgogICA8L0l0ZW1Hcm91cD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovdGVzdGFwaS90
ZXN0YXBpLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTgxMjg5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovdGVzdGFwaS90ZXN0YXBpLnZjeHByb2ou
ZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDcgQEAKICAgPC9JdGVtR3JvdXA+CiAg
IDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxBUElcdGVzdHNcdGVz
dGFwaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXENvbXBh
cmVBbmRTd2FwLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXEFQSVx0ZXN0
c1xDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYyIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXC4uXEFQSVx0ZXN0c1xDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuaCIgLz4KICAg
PC9JdGVtR3JvdXA+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTgxMjg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2MjgsNiArMTYyOCw3IEBACiAJ
CUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQg
LyogV2F0Y2hkb2cuY3BwICovOyB9OwogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0
Y2hkb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRDk0RjMwMTcxRTNFMjMwMEJFNzdBNCAv
KiBXYXRjaGRvZ01hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICovOyB9
OworCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjA0MDUwMUFB
RTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9OwogCQlGRUY2ODM1
RTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjY4MzVBMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRT
dHVic0FSTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFRjY4MzVGMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUY2ODM1QjE3NDM0M0NDMDBB
MzJFMjUgLyogSklUU3R1YnNBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUZFRjY4MzYwMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic1g4
Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVG
NjgzNUMxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzWDg2XzY0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzNzMsNiArMzM3NCw3IEBACiAJ
CUZFRDk0RjJCMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXRjaGRvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFRDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXRjaGRvZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2F0Y2hkb2dNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29t
cGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGNjgzNUExNzQzNDNDQzAw
QTMyRTI1IC8qIEpJVFN0dWJzQVJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpJVFN0dWJzQVJNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRjY4MzVCMTc0
MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpJVFN0dWJzQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkVGNjgzNUMxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzWDg2XzY0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJzWDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zNzI5LDYgKzM3MzEsNyBAQAogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAy
NTUgLyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCUZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICov
LAogCQkJCUMyMDMyODFFMTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmplY3RDbGFz
c1Rlc3QuYyAqLywKIAkJCQlDMjAzMjgxRjE5ODE5NzlEMDA4OEI0OTkgLyogQ3VzdG9tR2xvYmFs
T2JqZWN0Q2xhc3NUZXN0LmggKi8sCiAJCQkJQzI5RUNCMDIxODA0RDBFRDAwRDJDQkI0IC8qIEN1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmggKi8sCkBAIC02Nzc4LDYgKzY3ODEsNyBA
QAogCQkJCUMyMDMyODIwMTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmplY3RDbGFz
c1Rlc3QuYyBpbiBTb3VyY2VzICovLAogCQkJCUMyODhCMkRFMThBNTREM0UwMDdCRTQwQiAvKiBE
YXRlVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMjE4MUZDMjE4QTk0OEZCMDAyNUEyMzUg
LyogSlNFeHBvcnRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUZFRjA0MDUxMUFBRTY2MkQw
MEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0
MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICovLAogCQkJCTg2
RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MTI5NykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTUtMDMtMDkgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgorCisgICAgICAgIDgtYml0IHZlcnNpb24gb2Ygd2Vha0NvbXBhcmVBbmRT
d2FwKCkgY2FuIGNhdXNlIGFuIGluZmluaXRlIGxvb3AuCisgICAgICAgIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0MjUxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcmVzZW50bHksIEJpdG1hcDo6Y29uY3VycmVudFRlc3RBbmRTZXQoKSB1c2VzIHRo
ZSA4LWJpdCB2ZXJzaW9uIG9mCisgICAgICAgIHdlYWtDb21wYXJlQW5kU3dhcCgpICh3aGljaCBj
b21wYXJlcyBhbmQgc3dhcHMgYW4gdWludDhfdCB2YWx1ZSkuCisgICAgICAgIEJpdG1hcDo6Y29u
Y3VycmVudFRlc3RBbmRTZXQoKSBoYXMgYSBsb29wIHRoYXQgY2hlY2tzIGlmIGEgYml0IGluIHRo
ZQorICAgICAgICBieXRlIG9mIGludGVyZXN0IGhhcyBiZWVuIHNldC4gIElmIG5vdCwgaXQgd2ls
bCBjYWxsIHRoZSA4LWJpdCBDQVMKKyAgICAgICAgZnVuY3Rpb24gdG8gc2V0IHRoZSBiaXQuCisK
KyAgICAgICAgVW5kZXIgdGhlIGNvdmVycywgZm9yIEFSTSwgdGhlIDgtYml0IENBUyBmdW5jdGlv
biBhY3R1YWxseSB3b3JrcyB3aXRoIGEKKyAgICAgICAgMzItYml0IENBUy4gIFRoZSA4LWJpdCBD
QVMgd2lsbCBmaXJzdCBmZXRjaCB0aGUgMzItYml0IHZhbHVlIGluIG1lbW9yeQorICAgICAgICB0
aGF0IHNob3VsZCBjb250YWluIHRoZSA4LWJpdCB2YWx1ZSwgYW5kIGNoZWNrIGlmIGl0IGNvbnRh
aW5zIHRoZQorICAgICAgICBleHBlY3RlZCBieXRlLiAgSWYgdGhlIHZhbHVlIGluIG1lbW9yeSBk
b2Vzbid0IGhhdmUgdGhlIGV4cGVjdGVkIGJ5dGUsCisgICAgICAgIGl0IHdpbGwgcmV0dXJuIGVh
cmx5IHRvIGl0cyBjYWxsZXIuICBUaGUgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGUgY2FsbGVyCisg
ICAgICAgIHdpbGwgcmVsb2FkIHRoZSBieXRlIGZyb20gbWVtb3J5IGFuZCBjYWxsIHRoZSA4LWJp
dCBDQVMgYWdhaW4uCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSwgdGhpcyBjb2RlIHBhdGggdGhh
dCByZXR1cm5zIGVhcmx5IGRvZXMgbm90IGhhdmUgYQorICAgICAgICBjb21waWxlciBmZW5jZS4g
IFdpdGhvdXQgYSBjb21waWxlciBmZW5jZSwgdGhlIEMrKyBjb21waWxlciBjYW4KKyAgICAgICAg
b3B0aW1pemUgYXdheSB0aGUgcmVsb2FkaW5nIG9mIHRoZSBleHBlY3RlZCBieXRlIHZhbHVlLCBs
ZWF2aW5nIGl0CisgICAgICAgIHVuY2hhbmdlZC4gIEFzIGEgcmVzdWx0LCB3ZSdsbCBoYXZlIGEg
aW5maW5pdGUgbG9vcCBoZXJlIHRoYXQgY2hlY2tzIGEKKyAgICAgICAgdmFsdWUgdGhhdCB3aWxs
IG5ldmVyIGNoYW5nZSwgYW5kIHRoZSBsb29wIHdpbGwgbm90IHRlcm1pbmF0ZSB1bnRpbCB0aGUK
KyAgICAgICAgdmFsdWUgY2hhbmdlcy4KKworICAgICAgICBUaGUgZml4IGlzIHRvIGVsaW1pbmF0
ZSB0aGUgZWFybHkgcmV0dXJuIGNoZWNrIGluIHRoZSA4LWJpdCBDQVMsIGFuZAorICAgICAgICBo
YXZlIGl0IGFsd2F5cyBjYWxsIGRvd24gdG8gdGhlIDMyLWJpdCBDQVMuICBUaGUgMzItYml0IENB
UyBoYXMgYQorICAgICAgICBjb21waWxlciBmZW5jZSB3aGljaCB3aWxsIHByZXZlbnQgdGhpcyBp
c3N1ZS4KKworICAgICAgICAqIHd0Zi9BdG9taWNzLmg6CisgICAgICAgIChXVEY6OndlYWtDb21w
YXJlQW5kU3dhcCk6CisKIDIwMTUtMDMtMDkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtFRkxdIE1vdmUgRGlzcGF0Y2hRdWV1ZSB0byBXVEYKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9BdG9taWNzLmgJKHJldmlzaW9uIDE4MTI4OSkKKysrIFNvdXJjZS9XVEYvd3RmL0F0b21pY3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEzLDE4ICszMTMsMjUgQEAgaW5saW5lIGJvb2wgd2Vha0Nv
bXBhcmVBbmRTd2FwKHVpbnQ4X3QqIAogICAgIHVpbnRwdHJfdCBsb2NhdGlvbk9mZnNldCA9IGxv
Y2F0aW9uVmFsdWUgLSBhbGlnbmVkTG9jYXRpb25WYWx1ZTsKICAgICBBU1NFUlQobG9jYXRpb25P
ZmZzZXQgPCBzaXplb2YodW5zaWduZWQpKTsKICAgICB1bnNpZ25lZCogYWxpZ25lZExvY2F0aW9u
ID0gYml0d2lzZV9jYXN0PHVuc2lnbmVkKj4oYWxpZ25lZExvY2F0aW9uVmFsdWUpOwotICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoaXMgbG9hZCBpcyBhbHdheXMgaXNzdWVkIGFuZCBuZXZlciBvcHRp
bWl6ZWQgYXdheS4KICAgICB1bnNpZ25lZCBvbGRBbGlnbmVkVmFsdWUgPSAqY29uc3RfY2FzdDx2
b2xhdGlsZSB1bnNpZ25lZCo+KGFsaWduZWRMb2NhdGlvbik7Ci0gICAgdW5pb24gewotICAgICAg
ICB1aW50OF90IGJ5dGVzW3NpemVvZih1bnNpZ25lZCldOwotICAgICAgICB1bnNpZ25lZCB3b3Jk
OwotICAgIH0gdTsKLSAgICB1LndvcmQgPSBvbGRBbGlnbmVkVmFsdWU7Ci0gICAgaWYgKHUuYnl0
ZXNbbG9jYXRpb25PZmZzZXRdICE9IGV4cGVjdGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgdS5ieXRlc1tsb2NhdGlvbk9mZnNldF0gPSBuZXdWYWx1ZTsKLSAgICB1bnNpZ25lZCBuZXdB
bGlnbmVkVmFsdWUgPSB1LndvcmQ7Ci0gICAgcmV0dXJuIHdlYWtDb21wYXJlQW5kU3dhcChhbGln
bmVkTG9jYXRpb24sIG9sZEFsaWduZWRWYWx1ZSwgbmV3QWxpZ25lZFZhbHVlKTsKKworICAgIHN0
cnVjdCBTcGxpY2VyIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIHNwbGljZSh1bnNpZ25lZCB2
YWx1ZSwgdWludDhfdCBieXRlLCB1aW50cHRyX3QgYnl0ZUluZGV4KQorICAgICAgICB7CisgICAg
ICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgd29yZDsKKyAgICAgICAg
ICAgICAgICB1aW50OF90IGJ5dGVzW3NpemVvZih1bnNpZ25lZCldOworICAgICAgICAgICAgfSB1
OworICAgICAgICAgICAgdS53b3JkID0gdmFsdWU7CisgICAgICAgICAgICB1LmJ5dGVzW2J5dGVJ
bmRleF0gPSBieXRlOworICAgICAgICAgICAgcmV0dXJuIHUud29yZDsKKyAgICAgICAgfQorICAg
IH07CisgICAgCisgICAgdW5zaWduZWQgZXhwZWN0ZWRBbGlnbmVkVmFsdWUgPSBTcGxpY2VyOjpz
cGxpY2Uob2xkQWxpZ25lZFZhbHVlLCBleHBlY3RlZCwgbG9jYXRpb25PZmZzZXQpOworICAgIHVu
c2lnbmVkIG5ld0FsaWduZWRWYWx1ZSA9IFNwbGljZXI6OnNwbGljZShvbGRBbGlnbmVkVmFsdWUs
IG5ld1ZhbHVlLCBsb2NhdGlvbk9mZnNldCk7CisKKyAgICByZXR1cm4gd2Vha0NvbXBhcmVBbmRT
d2FwKGFsaWduZWRMb2NhdGlvbiwgZXhwZWN0ZWRBbGlnbmVkVmFsdWUsIG5ld0FsaWduZWRWYWx1
ZSk7CiAjZW5kaWYKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsK
</data>
<flag name="review"
          id="273206"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248314</attachid>
            <date>2015-03-09 21:05:09 -0700</date>
            <delta_ts>2015-03-09 21:16:01 -0700</delta_ts>
            <desc>follow up: Windows doesn&apos;t like pthreads</desc>
            <filename>bug-142513b.patch</filename>
            <type>text/plain</type>
            <size>2602</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMzA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDE1LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBC
dWlsZCBmaXggZm9yIFdpbmRvd3MgYWZ0ZXIgcjE4MTMwNS4KKyAgICAgICAgaHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTQyNTEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdpbmRvd3MgZG9lc24ndCBsaWtlIHB0aHJlYWRzIGFueW1vcmUuICBDaGFuZ2Vk
IHRlc3QgdG8gdXNlIFdURiB0aHJlYWRpbmcuCisKKyAgICAgICAgKiBBUEkvdGVzdHMvQ29tcGFy
ZUFuZFN3YXBUZXN0LmNwcDoKKyAgICAgICAgKHNldEJpdFRocmVhZEZ1bmMpOgorICAgICAgICAo
dGVzdENvbXBhcmVBbmRTd2FwKToKKwogMjAxNS0wMy0wOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgOC1iaXQgdmVyc2lvbiBvZiB3ZWFrQ29tcGFyZUFuZFN3YXAo
KSBjYW4gY2F1c2UgYW4gaW5maW5pdGUgbG9vcC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5jcHAJKHJldmlzaW9u
IDE4MTMwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ29tcGFyZUFuZFN3
YXBUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx0aHJlYWQ+CiAjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIC8vIFJlZ3Jl
c3Npb24gdGVzdCBmb3Igd2Via2l0Lm9yZy9iLzE0MjUxMwogZXh0ZXJuICJDIiB2b2lkIHRlc3RD
b21wYXJlQW5kU3dhcCgpOwpAQCAtNzUsNyArNzUsNyBAQCBzdHJ1Y3QgRGF0YSB7CiAgICAgaW50
IG51bVRocmVhZHM7CiB9OwogCi1zdGF0aWMgdm9pZCogc2V0Qml0VGhyZWFkRnVuYyh2b2lkKiBw
KQorc3RhdGljIHZvaWQgc2V0Qml0VGhyZWFkRnVuYyh2b2lkKiBwKQogewogICAgIERhdGEqIGRh
dGEgPSByZWludGVycHJldF9jYXN0PERhdGEqPihwKTsKICAgICBCaXRtYXAqIGJpdG1hcCA9IGRh
dGEtPmJpdG1hcDsKQEAgLTkyLDE0ICs5MiwxMyBAQCBzdGF0aWMgdm9pZCogc2V0Qml0VGhyZWFk
RnVuYyh2b2lkKiBwKQogICAgICAgICB3aGlsZSAoIWJpdG1hcC0+Y29uY3VycmVudFRlc3RBbmRT
ZXQoaSkpIHsgfQogCiAgICAgcHJpbnRmKCIgICBmaW5pc2hlZCBUaHJlYWQgJWRcbiIsIGRhdGEt
PmlkKTsKLSAgICBwdGhyZWFkX2V4aXQobnVsbHB0cik7CiB9CiAKIHZvaWQgdGVzdENvbXBhcmVB
bmRTd2FwKCkKIHsKICAgICBCaXRtYXAgYml0bWFwOwogICAgIGNvbnN0IGludCBudW1UaHJlYWRz
ID0gNTsKLSAgICBwdGhyZWFkX3QgdGhyZWFkSURzW251bVRocmVhZHNdOworICAgIFRocmVhZElk
ZW50aWZpZXIgdGhyZWFkSURzW251bVRocmVhZHNdOwogICAgIERhdGEgZGF0YVtudW1UaHJlYWRz
XTsKICAgICAKICAgICBwcmludGYoIlN0YXJ0aW5nICVkIHRocmVhZHMgZm9yIENvbXBhcmVBbmRT
d2FwIHRlc3QuICBUZXN0IHNob3VsZCBjb21wbGV0ZSB3aXRob3V0IGhhbmdpbmcuXG4iLCBudW1U
aHJlYWRzKTsKQEAgLTEwNywxMiArMTA2LDEzIEBAIHZvaWQgdGVzdENvbXBhcmVBbmRTd2FwKCkK
ICAgICAgICAgZGF0YVtpXS5iaXRtYXAgPSAmYml0bWFwOwogICAgICAgICBkYXRhW2ldLmlkID0g
aTsKICAgICAgICAgZGF0YVtpXS5udW1UaHJlYWRzID0gbnVtVGhyZWFkczsKLSAgICAgICAgcHRo
cmVhZF9jcmVhdGUoJnRocmVhZElEc1tpXSwgMCwgJnNldEJpdFRocmVhZEZ1bmMsICZkYXRhW2ld
KTsKKyAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHRocmVhZEZ1bmMgPSBzdGQ6OmJpbmQo
c2V0Qml0VGhyZWFkRnVuYywgJmRhdGFbaV0pOworICAgICAgICB0aHJlYWRJRHNbaV0gPSBjcmVh
dGVUaHJlYWQoInNldEJpdFRocmVhZEZ1bmMiLCB0aHJlYWRGdW5jKTsKICAgICB9CiAKICAgICBw
cmludGYoIldhaXRpbmcgZm9yICVkIHRocmVhZHMgdG8gam9pblxuIiwgbnVtVGhyZWFkcyk7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaHJlYWRzOyBpKyspCi0gICAgICAgIHB0aHJlYWRf
am9pbih0aHJlYWRJRHNbaV0sIG51bGxwdHIpOworICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxl
dGlvbih0aHJlYWRJRHNbaV0pOwogCiAgICAgcHJpbnRmKCJQQVNTOiBDb21wYXJlQW5kU3dhcCB0
ZXN0IGNvbXBsZXRlZCB3aXRob3V0IGEgaGFuZ1xuIik7CiB9Cg==
</data>
<flag name="review"
          id="273211"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248316</attachid>
            <date>2015-03-09 21:37:39 -0700</date>
            <delta_ts>2015-03-09 23:40:04 -0700</delta_ts>
            <desc>Speculative fix for Windows build.</desc>
            <filename>bug-142513c.patch</filename>
            <type>text/plain</type>
            <size>1061</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMzA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE1LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
bm90aGVyIGJ1aWxkIGZpeCBmb3IgV2luZG93cy4KKyAgICAgICAgaHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTQyNTEzPgorCisgICAgICAgIE5vdCByZXZpZXdlZC4KKworICAgICAgICAqIEFQSS90ZXN0
cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwOgorICAgICAgICAtIEFkZGVkIEpTX0VYUE9SVF9QUklW
QVRFIGF0dHJpYnV0ZS4KKwogMjAxNS0wMy0wOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgQnVpbGQgZml4IGZvciBXaW5kb3dzIGFmdGVyIHIxODEzMDUuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Db21wYXJlQW5k
U3dhcFRlc3QuY3BwCShyZXZpc2lvbiAxODEzMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIC8vIFJlZ3Jlc3Npb24gdGVz
dCBmb3Igd2Via2l0Lm9yZy9iLzE0MjUxMwotZXh0ZXJuICJDIiB2b2lkIHRlc3RDb21wYXJlQW5k
U3dhcCgpOworZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRlc3RDb21wYXJlQW5k
U3dhcCgpOwogCiBjbGFzcyBCaXRtYXAgewogcHVibGljOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248318</attachid>
            <date>2015-03-09 23:40:04 -0700</date>
            <delta_ts>2015-03-09 23:43:25 -0700</delta_ts>
            <desc>Build fix for Windows.  This time, I&apos;ve tested this on a local Windows box.</desc>
            <filename>bug-142513d.patch</filename>
            <type>text/plain</type>
            <size>7838</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxMzEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE1LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBZ
ZXQgYW5vdGhlciBidWlsZCBmaXggZm9yIFdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0MjUxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBMb29rcyBsaWtlIE1TVkMgcmVxdWlyZXMgdGhlIGZ1bmN0aW9uIGJlIGV4cGxpY2l0
bHkgZGVjbGFyZWQgaW4gYSBoZWFkZXIgZmlsZQorICAgICAgICBpbiBvcmRlciBmb3IgaXQgdG8g
YmUgbGlua2FibGUgZnJvbSBhbm90aGVyIGZpbGUgaW4gdGhlIHNhbWUgcHJvamVjdC4gIFRoaXMg
aXMKKyAgICAgICAgc3RyYW5nZSwgYnV0IGl0IHNlZW1zIHRvIG1ha2UgTVNWQyBoYXBweS4KKwor
ICAgICAgICBBbHNvIGZpeGVkIGEgdHlwbyBpbiB0ZXN0YXBpLnZjeHByb2ouZmlsdGVycy4KKwor
ICAgICAgICAqIEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwOgorICAgICAgICAqIEFQ
SS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3Rz
L3Rlc3RhcGkuYzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL3Rlc3RhcGkvdGVz
dGFwaS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovdGVzdGFwaS90
ZXN0YXBpLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAzLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU3dlZXAgYWxsIGNvbGxlY3RlZCBvYmplY3RzIG9u
IGNyaXRpY2FsIG1lbW9yeSBwcmVzc3VyZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcAkocmV2aXNpb24gMTgx
MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNCArMjQsMTIgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29tcGFyZUFuZFN3YXBUZXN0LmgiCiAKICNpbmNsdWRl
IDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCi0vLyBSZWdyZXNzaW9uIHRlc3QgZm9yIHdlYmtpdC5vcmcvYi8xNDI1MTMKLWV4
dGVybiAiQyIgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0ZXN0Q29tcGFyZUFuZFN3YXAoKTsKLQog
Y2xhc3MgQml0bWFwIHsKIHB1YmxpYzoKICAgICBCaXRtYXAoKSB7IGNsZWFyQWxsKCk7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Db21wYXJlQW5k
U3dhcFRlc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvQ29tcGFyZUFuZFN3YXBUZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQ29tcGFyZUFuZFN3YXBUZXN0X2gKKyNkZWZpbmUgQ29tcGFy
ZUFuZFN3YXBUZXN0X2gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCisvKiBSZWdyZXNzaW9uIHRlc3QgZm9yIHdlYmtpdC5vcmcvYi8xNDI1MTMgKi8KK3ZvaWQg
dGVzdENvbXBhcmVBbmRTd2FwKCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfSAvKiBleHRlcm4g
IkMiICovCisjZW5kaWYKKworI2VuZGlmIC8qIENvbXBhcmVBbmRTd2FwVGVzdF9oICovCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2aXNpb24gMTgx
MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDEyICs0NSwxMiBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRp
ZgogCisjaW5jbHVkZSAiQ29tcGFyZUFuZFN3YXBUZXN0LmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2xv
YmFsT2JqZWN0Q2xhc3NUZXN0LmgiCiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogdm9pZCB0
ZXN0T2JqZWN0aXZlQ0FQSSh2b2lkKTsKICNlbmRpZgotdm9pZCB0ZXN0Q29tcGFyZUFuZFN3YXAo
KTsKIAogYm9vbCBhc3NlcnRUcnVlKGJvb2wgdmFsdWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwog
ZXh0ZXJuIHZvaWQgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29u
dGV4dFJlZik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai90ZXN0YXBpL3Rlc3RhcGkudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai90ZXN0YXBpL3Rlc3RhcGkudmN4cHJvagko
cmV2aXNpb24gMTgxMzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovdGVzdGFwaS90ZXN0YXBpLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5Myw2
ICsyOTMsNyBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5c
QVBJXHRlc3RzXHRlc3RhcGkuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXEFQ
SVx0ZXN0c1xDb21wYXJlQW5kU3dhcFRlc3QuY3BwIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cLi5cQVBJXHRlc3RzXENvbXBhcmVBbmRTd2FwVGVzdC5oIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5j
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXEN1c3RvbUdsb2Jh
bE9iamVjdENsYXNzVGVzdC5oIiAvPgogICA8L0l0ZW1Hcm91cD4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL3Rlc3RhcGkvdGVzdGFwaS52Y3hwcm9q
LmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovdGVzdGFwaS90ZXN0YXBpLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTgx
MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovdGVz
dGFwaS90ZXN0YXBpLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDgg
QEAKICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlxBUElcdGVzdHNcdGVzdGFwaS5jIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cLi5cQVBJXHRlc3RzXENvbXBhcmVBbmRTd2FwLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXC4uXEFQSVx0ZXN0c1xDb21wYXJlQW5kU3dhcFRlc3QuY3BwIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXENvbXBhcmVBbmRTd2FwVGVzdC5oIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cQVBJXHRlc3RzXEN1c3RvbUdsb2JhbE9i
amVjdENsYXNzVGVzdC5jIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cQVBJXHRl
c3RzXEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5oIiAvPgogICA8L0l0ZW1Hcm91cD4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODEzMDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzM3Nyw2ICszMzc3LDcgQEAKIAkJRkVEOTRGMkMxNzFFM0Uy
MzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdhdGNoZG9nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRDk0RjJEMTcxRTNF
MjMwMEJFNzdBNCAvKiBXYXRjaGRvZ01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXYXRjaGRvZ01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsg
cGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRUYwNDA1MjFBQUVDNEVEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBU
ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVz
dC5oOyBwYXRoID0gQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRUY2ODM1QTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUU3R1YnNBUk0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGNjgzNUIxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0
dWJzQVJNdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUU3R1YnNBUk12
Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUY2ODM1QzE3NDM0M0NDMDBBMzJF
MjUgLyogSklUU3R1YnNYODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SklUU3R1YnNYODZfNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MzQsNiAr
MzczNSw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUZFRjA0
MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovLAorCQkJCUZF
RjA0MDUyMUFBRUM0RUQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuaCAqLywKIAkJCQlD
MjAzMjgxRTE5ODE5NzlEMDA4OEI0OTkgLyogQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMg
Ki8sCiAJCQkJQzIwMzI4MUYxOTgxOTc5RDAwODhCNDk5IC8qIEN1c3RvbUdsb2JhbE9iamVjdENs
YXNzVGVzdC5oICovLAogCQkJCUMyOUVDQjAyMTgwNEQwRUQwMEQyQ0JCNCAvKiBDdXJyZW50VGhp
c0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oICovLAo=
</data>
<flag name="review"
          id="273216"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>