<?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>154863</bug_id>
          
          <creation_ts>2016-03-01 10:41:33 -0800</creation_ts>
          <short_desc>WebKitTestRunner and DumpRenderTree do not handle dangling surrogate characters</short_desc>
          <delta_ts>2017-04-11 01:17:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit 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>154842</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ap</cc>
    
    <cc>joepeck</cc>
    
    <cc>lforschler</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1169488</commentid>
    <comment_count>0</comment_count>
      <attachid>272574</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-01 10:41:33 -0800</bug_when>
    <thetext>Created attachment 272574
Crashing test

If your run the attached test with DumpRenderTree it doesn’t provide any test output:
Content-Type: text/plain
DumpMalloc: 53440512
ERROR: nil result from [documentElement innerText]#EOF
#EOF

If you run WebKitTestRunner with the test, it crashes:
1   0x106169ad0 WTFCrash
2   0x1061dfdcf WTF::String::fromUTF8(unsigned char const*, unsigned long)
3   0x1061e010f WTF::String::fromUTF8WithLatin1Fallback(unsigned char const*, unsigned long)
4   0x11729c394 WTF::String::fromUTF8WithLatin1Fallback(char const*, unsigned long)
5   0x11729c158 WTR::toWTFString(OpaqueWKString const*)
6   0x117298b5f WTR::toWTFString(WebKit::WKRetainPtr&lt;OpaqueWKString const*&gt; const&amp;)
7   0x1172c6102 WTR::dumpFrameText(OpaqueWKBundleFrame const*, WTF::StringBuilder&amp;)
8   0x1172c6625 WTR::InjectedBundlePage::dump()
9   0x1172c5da2 WTR::InjectedBundlePage::frameDidChangeLocation(OpaqueWKBundleFrame const*, bool)
10  0x1172c4607 WTR::InjectedBundlePage::didFinishLoadForFrame(OpaqueWKBundleFrame const*)
11  0x1172c32e8 WTR::InjectedBundlePage::didFinishLoadForFrame(OpaqueWKBundlePage const*, OpaqueWKBundleFrame const*, void const**, void const*)
12  0x1020c0906 WebKit::InjectedBundlePageLoaderClient::didFinishLoadForFrame(WebKit::WebPage*, WebKit::WebFrame*, WTF::RefPtr&lt;API::Object&gt;&amp;)
13  0x10252e89d WebKit::WebFrameLoaderClient::dispatchDidFinishLoad()
14  0x108c84c2a WebCore::FrameLoader::checkLoadCompleteForThisFrame()
15  0x108c7c6be WebCore::FrameLoader::checkLoadComplete()
16  0x108c7c1cc WebCore::FrameLoader::checkCompleted()
17  0x108c7c1f5 WebCore::FrameLoader::loadDone()
18  0x10849a609 WebCore::CachedResourceLoader::loadDone(WebCore::CachedResource*, bool)
19  0x10a418935 WebCore::SubresourceLoader::notifyDone()
20  0x10a41855a WebCore::SubresourceLoader::didFinishLoading(double)
21  0x10280f827 WebKit::WebResourceLoader::didFinishResourceLoad(double)
22  0x102814d93 void IPC::callMemberFunctionImpl&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(double), std::__1::tuple&lt;double&gt;, 0ul&gt;(WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(double), std::__1::tuple&lt;double&gt;&amp;&amp;, std::index_sequence&lt;0ul&gt;)
23  0x102814ce8 void IPC::callMemberFunction&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(double), std::__1::tuple&lt;double&gt;, std::make_index_sequence&lt;1ul&gt; &gt;(std::__1::tuple&lt;double&gt;&amp;&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(double))
24  0x102813e02 void IPC::handleMessage&lt;Messages::WebResourceLoader::DidFinishResourceLoad, WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(double)&gt;(IPC::MessageDecoder&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(double))
25  0x10281357c WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::Connection&amp;, IPC::MessageDecoder&amp;)
26  0x10222b990 WebKit::NetworkProcessConnection::didReceiveMessage(IPC::Connection&amp;, IPC::MessageDecoder&amp;)
27  0x101fca993 IPC::Connection::dispatchMessage(IPC::MessageDecoder&amp;)
28  0x101fc1811 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;)
29  0x101fcaf8f IPC::Connection::dispatchOneMessage()
30  0x101fdc2fd IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;)::$_10::operator()() const
31  0x101fdc2cd void std::__1::__invoke_void_return_wrapper&lt;void&gt;::__call&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;)::$_10&amp;&gt;(IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;)::$_10&amp;&amp;&amp;)
#CRASHED - com.apple.WebKit.WebContent.Development (pid 89331)
LEAK: 1 WebProcessPool
LEAK: 1 WebPageProxy

For WebKitTestRunner, we set “strict” to true when calling convertUTF16ToUTF8(), via the call to WKStringGetUTF8CString(), which will return 0.  We pass that stringLength - 1 which underflows to uint64_max to String::fromUTF8WithLatin1Fallback().

Here is the code:

inline WTF::String toWTFString(WKStringRef string)
{
    size_t bufferSize = WKStringGetMaximumUTF8CStringSize(string);
    auto buffer = std::make_unique&lt;char[]&gt;(bufferSize);
    size_t stringLength = WKStringGetUTF8CString(string, buffer.get(), bufferSize);
    return WTF::String::fromUTF8WithLatin1Fallback(buffer.get(), stringLength - 1);
}
￼</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169489</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-01 10:41:58 -0800</bug_when>
    <thetext>&lt;rdar://problem/24910745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200611</commentid>
    <comment_count>2</comment_count>
      <attachid>280844</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-08 14:53:33 -0700</bug_when>
    <thetext>Created attachment 280844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200639</commentid>
    <comment_count>3</comment_count>
      <attachid>280844</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-08 15:44:56 -0700</bug_when>
    <thetext>Comment on attachment 280844
Patch

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

&gt; Tools/ChangeLog:12
&gt; +        The code added in DumpRenderTree matches what was changed in WebKitTestRunner.

I think that this needs more of an explanation, I couldn&apos;t understand the DumpRenderTree change.

We already start with an NSString returned by [documentElement innerText], why is this round-trip needed? Is it even actually needed? It looks very suspicious.

&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1528
&gt; +    NSString* innerText = [documentElement innerText];

Style: misplaced star, should be &quot;NSString *innerText&quot;

&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1533
&gt; +    WTF::String string = WTF::String::fromUTF8WithLatin1Fallback(buffer.get(), stringLength - 1);

I don&apos;t think that WTF:: prefix is ever needed for String, please remove it (twice in this line).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200642</commentid>
    <comment_count>4</comment_count>
      <attachid>280844</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-08 15:47:07 -0700</bug_when>
    <thetext>Comment on attachment 280844
Patch

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

&gt; LayoutTests/ChangeLog:11
&gt; +        * js/dangling-surrogates.html: Added.

Oh, and I think that this is a wrong place for this test - LayoutTests/js is for tests that are also run by run-webkit-tests, and this one is not like that.

&gt; LayoutTests/js/dangling-surrogates.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

Please use HTML5 doctype (&lt;!DOCTYPE html&gt;).

&gt; LayoutTests/js/dangling-surrogates.html:19
&gt; +&lt;script src=&quot;../resources/js-test-post.js&quot;&gt;&lt;/script&gt;

A more modern way to write script tests is to use &quot;js-test.js&quot;, then you don&apos;t need js-test-post.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200680</commentid>
    <comment_count>5</comment_count>
      <attachid>280844</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-08 17:33:16 -0700</bug_when>
    <thetext>Comment on attachment 280844
Patch

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

&gt;&gt; Tools/ChangeLog:12
&gt;&gt; +        The code added in DumpRenderTree matches what was changed in WebKitTestRunner.
&gt; 
&gt; I think that this needs more of an explanation, I couldn&apos;t understand the DumpRenderTree change.
&gt; 
&gt; We already start with an NSString returned by [documentElement innerText], why is this round-trip needed? Is it even actually needed? It looks very suspicious.

Changed the last line of the ChangeLog entry to:
                                                                                                                After converting
        to a character buffer via WKStringGetUTF8CStringNonStrict(), we convert back
        to a UTF8 string.  The NSString appendFormat handles the resulting UTF8 string
        without any issue.
        This added conversion code matches how similar code in WebKitTestRunner was changed.

I added the following comment in DumpRenderTree::dumpFramesAsText:

    // We use WKStringGetUTF8CStringNonStrict() to convert innerText to a WK String since
    // WKStringGetUTF8CStringNonStrict() can handle dangling surrogates and the NSString
    // conversion methods cannot. After the conversion to a buffer, we turn that buffer into
    // a CFString via fromUTF8WithLatin1Fallback().createCFString() which can be appended to
    // the result without any conversion.

&gt;&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1528
&gt;&gt; +    NSString* innerText = [documentElement innerText];
&gt; 
&gt; Style: misplaced star, should be &quot;NSString *innerText&quot;

Done.

&gt;&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1533
&gt;&gt; +    WTF::String string = WTF::String::fromUTF8WithLatin1Fallback(buffer.get(), stringLength - 1);
&gt; 
&gt; I don&apos;t think that WTF:: prefix is ever needed for String, please remove it (twice in this line).

Removed.

&gt;&gt; LayoutTests/ChangeLog:11
&gt;&gt; +        * js/dangling-surrogates.html: Added.
&gt; 
&gt; Oh, and I think that this is a wrong place for this test - LayoutTests/js is for tests that are also run by run-webkit-tests, and this one is not like that.

I moved the test to fast/text.

&gt;&gt; LayoutTests/js/dangling-surrogates.html:1
&gt;&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
&gt; 
&gt; Please use HTML5 doctype (&lt;!DOCTYPE html&gt;).

Done.

&gt;&gt; LayoutTests/js/dangling-surrogates.html:19
&gt;&gt; +&lt;script src=&quot;../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; A more modern way to write script tests is to use &quot;js-test.js&quot;, then you don&apos;t need js-test-post.js.

Changed to use js-test.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200684</commentid>
    <comment_count>6</comment_count>
      <attachid>280861</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-08 17:51:44 -0700</bug_when>
    <thetext>Created attachment 280861
Patch for Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200831</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-09 07:53:19 -0700</bug_when>
    <thetext>Committed r201863: &lt;http://trac.webkit.org/changeset/201863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200876</commentid>
    <comment_count>8</comment_count>
      <attachid>280844</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-09 10:18:09 -0700</bug_when>
    <thetext>Comment on attachment 280844
Patch

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

&gt; Tools/ChangeLog:3
&gt; +        WebKitTestRunner and DumpRenderTree do not handle dangling surrogate characters

What do we mean when we say we want to &quot;handle&quot; dangling surrogates? Do we simply mean that we want to leave them alone?

I think the real problem here is that we should leave strings in UTF-16. I don’t think we should convert them to and from UTF-8. If we leave them as UTF-16, then our code should just leave surrogates alone.

&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1535
&gt; +    [result appendFormat:@&quot;%@\n&quot;, string.createCFString().get()];

It seems really strange to add WKStringGetUTF8CStringNonStrict to WebKit2 SPI just so we can use it on one NSString to make another NSString. It’s really peculiar to involve all these various WebKit classes when we are starting with one NSString and trying to create a second NSString.

&gt; Tools/WebKitTestRunner/StringFunctions.h:91
&gt;      size_t bufferSize = WKStringGetMaximumUTF8CStringSize(string);
&gt;      auto buffer = std::make_unique&lt;char[]&gt;(bufferSize);
&gt; -    size_t stringLength = WKStringGetUTF8CString(string, buffer.get(), bufferSize);
&gt; +    size_t stringLength = WKStringGetUTF8CStringNonStrict(string, buffer.get(), bufferSize);
&gt;      return WTF::String::fromUTF8WithLatin1Fallback(buffer.get(), stringLength - 1);

Why are we converting a WKString, which is either Latin-1 or UTF-16 internally, first to UTF-8 and then back to UTF-16? We should come up with a code path that doesn’t involve conversion back and forth to/from UTF-8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200896</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-09 11:06:37 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 280844 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280844&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:3
&gt; &gt; +        WebKitTestRunner and DumpRenderTree do not handle dangling surrogate characters
&gt; 
&gt; What do we mean when we say we want to &quot;handle&quot; dangling surrogates? Do we
&gt; simply mean that we want to leave them alone?

I believe that both DumpRenderTree and WebKitTestRunner dump their frame text output as UFT-8.  Therefore &quot;handling&quot; dangling surrogates means that we get a consistent transformation.  A non-strict UTF-16 to UTF-8 conversion will convert dangling surrogates to a 3 character UTF-8 sequence.
 
&gt; I think the real problem here is that we should leave strings in UTF-16. I
&gt; don’t think we should convert them to and from UTF-8. If we leave them as
&gt; UTF-16, then our code should just leave surrogates alone.

If we leave them as UTF-16 we lose the whole string.  This happens because NSString always converts using some format when asked to return some string.  

&gt; &gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1535
&gt; &gt; +    [result appendFormat:@&quot;%@\n&quot;, string.createCFString().get()];
&gt; 
&gt; It seems really strange to add WKStringGetUTF8CStringNonStrict to WebKit2
&gt; SPI just so we can use it on one NSString to make another NSString. It’s
&gt; really peculiar to involve all these various WebKit classes when we are
&gt; starting with one NSString and trying to create a second NSString.

I wondered about this myself so I discussed it with Anders before starting and he supported creating the SPI.  I needed this non-strict SPI to do the conversion without losing strings that contain dangling surrogates.

&gt; &gt; Tools/WebKitTestRunner/StringFunctions.h:91
&gt; &gt;      size_t bufferSize = WKStringGetMaximumUTF8CStringSize(string);
&gt; &gt;      auto buffer = std::make_unique&lt;char[]&gt;(bufferSize);
&gt; &gt; -    size_t stringLength = WKStringGetUTF8CString(string, buffer.get(), bufferSize);
&gt; &gt; +    size_t stringLength = WKStringGetUTF8CStringNonStrict(string, buffer.get(), bufferSize);
&gt; &gt;      return WTF::String::fromUTF8WithLatin1Fallback(buffer.get(), stringLength - 1);
&gt; 
&gt; Why are we converting a WKString, which is either Latin-1 or UTF-16
&gt; internally, first to UTF-8 and then back to UTF-16? We should come up with a
&gt; code path that doesn’t involve conversion back and forth to/from UTF-8.

This round about process is used so that we end up with an NSString that can be converted to a UTF-8 when we finally output it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201621</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-11 13:12:42 -0700</bug_when>
    <thetext>This made all result strings leak:

... dumpFramesAsText(WebFrame*) DumpRenderTree.mm:1534 | WKStringCreateWithCFString WKStringCF.mm:57 | API::String::create(WTF::String const&amp;) APIString.h:51 | API::String::create(WTF::String&amp;&amp;) APIString.h:46 | API::Object::newObject(unsigned long, API::Object::Type) APIObject.mm:275 | NSAllocateObject | class_createInstance | calloc | malloc_zone_calloc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201625</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-11 13:18:52 -0700</bug_when>
    <thetext>Re-opening to attach a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201626</commentid>
    <comment_count>12</comment_count>
      <attachid>281110</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-11 13:19:10 -0700</bug_when>
    <thetext>Created attachment 281110
follow-up fix for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201654</commentid>
    <comment_count>13</comment_count>
      <attachid>281113</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-11 16:07:29 -0700</bug_when>
    <thetext>Created attachment 281113
Follow-up fix for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201663</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-11 16:43:26 -0700</bug_when>
    <thetext>Landed the follow-up in r201981.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275578</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-02-10 15:37:09 -0800</bug_when>
    <thetext>This causes us to call into WebKit2 from DumpRenderTree on the WebThread on iOS, which is bad: https://bugs.webkit.org/show_bug.cgi?id=168149</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296309</commentid>
    <comment_count>16</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-04-11 01:17:22 -0700</bug_when>
    <thetext>There are a bunch of commented out tests that point to this bug:
LayoutTests/js/script-tests/regexp-unicode.js

    // Make sure we properly handle dangling surrogates and combined surrogates
    // FIXME: These tests are disabled until https://bugs.webkit.org/show_bug.cgi?id=154863 is fixed
    ...

Since this bug is resolved, can those tests be enabled?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>272574</attachid>
            <date>2016-03-01 10:41:33 -0800</date>
            <delta_ts>2016-06-08 14:53:33 -0700</delta_ts>
            <desc>Crashing test</desc>
            <filename>dangling-surrogates.html</filename>
            <type>text/html</type>
            <size>547</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgo8aHRtbD4KPGhl
YWQ+CjxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgo8
L2hlYWQ+Cjxib2R5Pgo8c3BhbiBpZD0ic3BhbiI+CjxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgo8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KPHNjcmlwdD4KICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHZlcmlmaWVzIHRoYXQgdGhlIHRlc3QgdG9vbHMgY2FuIGhhbmRsZSBhIGRhbmdsaW5nIHN1
cnJvZ2F0ZSBjaGFyYWN0ZXIiKTsKCiAgICB2YXIgZGFuZ2xpbmdGaXJzdCA9ICJcdUQ4MDMiOwog
ICAgdmFyIGRhbmdsaW5nU2Vjb25kID0gIlx1REMwMSI7CiAgICAKICAgIHNob3VsZEJlKCdkYW5n
bGluZ0ZpcnN0JywgJyJcdUQ4MDMiJyk7CiAgICBzaG91bGRCZSgnZGFuZ2xpbmdTZWNvbmQnLCAn
Ilx1REMwMSInKTsKPC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280844</attachid>
            <date>2016-06-08 14:53:33 -0700</date>
            <delta_ts>2016-06-08 15:44:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>154863.patch</filename>
            <type>text/plain</type>
            <size>8825</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTYxOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA2LTA4ICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIg
YW5kIER1bXBSZW5kZXJUcmVlIGRvIG5vdCBoYW5kbGUgZGFuZ2xpbmcgc3Vycm9nYXRlIGNoYXJh
Y3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDg2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgbm9uLXN0cmljdCB2ZXJpb25zIG9mIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoKSB0aGF0
IHdpbGwgaGFuZGxlIGRhbmdsaW5nCisgICAgICAgIHN1cnJvZ2F0ZXMgY2FsbGVkIFdLU3RyaW5n
R2V0VVRGOENTdHJpbmdOb25TdHJpY3QoKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1N0
cmluZy5jcHA6CisgICAgICAgIChXS1N0cmluZ0dldFVURjhDU3RyaW5nSW1wbCk6CisgICAgICAg
IChXS1N0cmluZ0dldFVURjhDU3RyaW5nKToKKyAgICAgICAgKFdLU3RyaW5nR2V0VVRGOENTdHJp
bmdOb25TdHJpY3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1N0cmluZy5oOgorCiAyMDE2
LTA2LTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2gg
dW5kZXIgV2ViUHJvY2Vzczo6cmVnaXN0ZXJXaXRoU3RhdGVEdW1wZXIoKQpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCShyZXZpc2lvbiAyMDE2MTkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw3ICs3MCwxMCBAQCBzaXplX3QgV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXpl
CiAgICAgcmV0dXJuIHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkubGVuZ3RoKCkgKiAz
ICsgMTsKIH0KIAotc2l6ZV90IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoV0tTdHJpbmdSZWYgc3Ry
aW5nUmVmLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQorZW51bSBTdHJpY3RUeXBl
IHsgTm9uU3RyaWN0ID0gZmFsc2UsIFN0cmljdCA9IHRydWUgfTsKKwordGVtcGxhdGUgPHR5cGVk
ZWYgU3RyaWN0VHlwZSBzdHJpY3Q+CitzaXplX3QgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ0ltcGwo
V0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQog
ewogICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04NSw3ICs4OCw3
IEBAIHNpemVfdCBXS1N0cmluZ0dldFVURjhDU3RyaW5nKFdLU3RyaW5nUmUKICAgICAgICAgcmVz
dWx0ID0gV1RGOjpVbmljb2RlOjpjb252ZXJ0TGF0aW4xVG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFy
YWN0ZXJzICsgc3RyaW5nVmlldy5sZW5ndGgoKSwgJnAsIHAgKyBidWZmZXJTaXplIC0gMSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBzdHJpbmdWaWV3
LmNoYXJhY3RlcnMxNigpOwotICAgICAgICByZXN1bHQgPSBXVEY6OlVuaWNvZGU6OmNvbnZlcnRV
VEYxNlRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIHN0cmluZ1ZpZXcubGVuZ3RoKCks
ICZwLCBwICsgYnVmZmVyU2l6ZSAtIDEsIC8qIHN0cmljdCAqLyB0cnVlKTsKKyAgICAgICAgcmVz
dWx0ID0gV1RGOjpVbmljb2RlOjpjb252ZXJ0VVRGMTZUb1VURjgoJmNoYXJhY3RlcnMsIGNoYXJh
Y3RlcnMgKyBzdHJpbmdWaWV3Lmxlbmd0aCgpLCAmcCwgcCArIGJ1ZmZlclNpemUgLSAxLCBzdHJp
Y3QpOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQgIT0gV1RGOjpVbmljb2RlOjpjb252ZXJzaW9u
T0sgJiYgcmVzdWx0ICE9IFdURjo6VW5pY29kZTo6dGFyZ2V0RXhoYXVzdGVkKQpAQCAtOTUsNiAr
OTgsMTYgQEAgc2l6ZV90IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoV0tTdHJpbmdSZQogICAgIHJl
dHVybiBwIC0gYnVmZmVyOwogfQogCitzaXplX3QgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhXS1N0
cmluZ1JlZiBzdHJpbmdSZWYsIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCit7Cisg
ICAgcmV0dXJuIFdLU3RyaW5nR2V0VVRGOENTdHJpbmdJbXBsPFN0cmljdFR5cGU6OlN0cmljdD4o
c3RyaW5nUmVmLCBidWZmZXIsIGJ1ZmZlclNpemUpOworfQorCitzaXplX3QgV0tTdHJpbmdHZXRV
VEY4Q1N0cmluZ05vblN0cmljdChXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIGNoYXIqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUpCit7CisgICAgcmV0dXJuIFdLU3RyaW5nR2V0VVRGOENTdHJpbmdJ
bXBsPFN0cmljdFR5cGU6Ok5vblN0cmljdD4oc3RyaW5nUmVmLCBidWZmZXIsIGJ1ZmZlclNpemUp
OworfQorCiBib29sIFdLU3RyaW5nSXNFcXVhbChXS1N0cmluZ1JlZiBhUmVmLCBXS1N0cmluZ1Jl
ZiBiUmVmKQogewogICAgIHJldHVybiB0b0ltcGwoYVJlZiktPnN0cmluZ1ZpZXcoKSA9PSB0b0lt
cGwoYlJlZiktPnN0cmluZ1ZpZXcoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S1N0cmluZy5oCShyZXZpc2lvbiAyMDE2MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBXS19FWFBPUlQg
c2l6ZV90IFdLU3RyaW5nR2V0Q2hhcmFjdGVycyhXCiAKIFdLX0VYUE9SVCBzaXplX3QgV0tTdHJp
bmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKFdLU3RyaW5nUmVmIHN0cmluZyk7CiBXS19FWFBP
UlQgc2l6ZV90IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoV0tTdHJpbmdSZWYgc3RyaW5nLCBjaGFy
KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKTsKK1dLX0VYUE9SVCBzaXplX3QgV0tTdHJpbmdH
ZXRVVEY4Q1N0cmluZ05vblN0cmljdChXS1N0cmluZ1JlZiBzdHJpbmcsIGNoYXIqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUpOwogCiBXS19FWFBPUlQgYm9vbCBXS1N0cmluZ0lzRXF1YWwoV0tT
dHJpbmdSZWYgYSwgV0tTdHJpbmdSZWYgYik7CiBXS19FWFBPUlQgYm9vbCBXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKFdLU3RyaW5nUmVmIGEsIGNvbnN0IGNoYXIqIGIpOwpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAx
ODMzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTYtMDYtMDggIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2ViS2l0VGVzdFJ1bm5lciBhbmQgRHVtcFJlbmRlclRyZWUgZG8gbm90IGhhbmRsZSBkYW5n
bGluZyBzdXJyb2dhdGUgY2hhcmFjdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBub24tc3RyaWN0IHZlcmlvbnMgb2YgV0tTdHJpbmdH
ZXRVVEY4Q1N0cmluZygpIHRoYXQgd2lsbCBoYW5kbGUgZGFuZ2xpbmcKKyAgICAgICAgc3Vycm9n
YXRlcy4gIENoYW5nZWQgdGhlIGV4dHJhY3Rpb24gb2YgaW5uZXIgdGV4dCBmcm9tIGZyYW1lcyBp
biBEdW1wUmVuZGVyVHJlZQorICAgICAgICB0byB1c2UgdGhlIG5ldyBXS1N0cmluZ0dldFVURjhD
U3RyaW5nTm9uU3RyaWN0KCkgZnVuY3Rpb24gaW5zdGVhZCBvZiBOU1N0cmluZworICAgICAgICBj
b252ZXJzaW9uIHNpbmNlIE5TU3RyaW5nIGRvZXNuJ3QgaGF2ZSBhIHdheSB0byBoYW5kbGUgZGFu
Z2xpbmcgc3Vycm9nYXRlcy4KKyAgICAgICAgVGhlIGNvZGUgYWRkZWQgaW4gRHVtcFJlbmRlclRy
ZWUgbWF0Y2hlcyB3aGF0IHdhcyBjaGFuZ2VkIGluIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChkdW1w
RnJhbWVzQXNUZXh0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9u
cy5oOgorICAgICAgICAoV1RSOjp0b1dURlN0cmluZyk6CisKIDIwMTYtMDYtMDggIEFha2FzaCBK
YWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIHRlc3RzIGZhaWwgaWYgZGlz
cGxheSBzbGVlcHMgd2hpbGUgcnVuLXdlYmtpdC10ZXN0cyBpcyBydW5uaW5nCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiAyMDE2MTkp
CisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDYgKzYyLDggQEAKICNpbXBvcnQgPFdlYktpdC9ET01FbGVtZW50Lmg+CiAj
aW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTVJhbmdl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tTdHJpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1N0cmlu
Z0NGLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQXJjaGl2ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YkJhY2tGb3J3YXJkTGlzdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkNhY2hlLmg+CkBAIC0xNTIz
LDcgKzE1MjUsMTQgQEAgc3RhdGljIE5TU3RyaW5nICpkdW1wRnJhbWVzQXNUZXh0KFdlYkZyYQog
ICAgIGlmIChbZnJhbWUgcGFyZW50RnJhbWVdKQogICAgICAgICByZXN1bHQgPSBbTlNNdXRhYmxl
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJcbi0tLS0tLS0tXG5GcmFtZTogJyVAJ1xuLS0tLS0t
LS1cbiIsIFtmcmFtZSBuYW1lXV07CiAKLSAgICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpAIiVAXG4i
LCBbZG9jdW1lbnRFbGVtZW50IGlubmVyVGV4dF1dOworICAgIE5TU3RyaW5nKiBpbm5lclRleHQg
PSBbZG9jdW1lbnRFbGVtZW50IGlubmVyVGV4dF07CisgICAgV0tTdHJpbmdSZWYgc3RyaW5nUmVm
ID0gV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKWlubmVyVGV4dCk7Cisg
ICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUo
c3RyaW5nUmVmKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihi
dWZmZXJTaXplKTsKKyAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0
cmluZ05vblN0cmljdChzdHJpbmdSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CisgICAg
V1RGOjpTdHJpbmcgc3RyaW5nID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CisKKyAgICBbcmVzdWx0IGFwcGVu
ZEZvcm1hdDpAIiVAXG4iLCBzdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV07CiAKICAgICBp
ZiAoZ1Rlc3RSdW5uZXItPmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpKSB7CiAgICAgICAgIE5TQXJy
YXkgKmtpZHMgPSBbZnJhbWUgY2hpbGRGcmFtZXNdOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9TdHJpbmdGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1N0cmluZ0Z1bmN0aW9ucy5oCShyZXZpc2lvbiAyMDE2MTkpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3
IEBAIGlubGluZSBXVEY6OlN0cmluZyB0b1dURlN0cmluZyhXS1N0cmluZ1IKIHsKICAgICBzaXpl
X3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcp
OwogICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUp
OwotICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmlu
ZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKKyAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0g
V0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVm
ZmVyU2l6ZSk7CiAgICAgcmV0dXJuIFdURjo6U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxs
YmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpOwogfQogICAgIApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjAxNjE5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDYtMDggIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBhbmQgRHVtcFJlbmRlclRyZWUg
ZG8gbm90IGhhbmRsZSBkYW5nbGluZyBzdXJyb2dhdGUgY2hhcmFjdGVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0ODYzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3RzLgorCisgICAgICAg
ICoganMvZGFuZ2xpbmctc3Vycm9nYXRlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGpzL2RhbmdsaW5nLXN1cnJvZ2F0ZXMuaHRtbDogQWRkZWQuCisKIDIwMTYtMDYtMDIgIE1pY2hh
ZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjAw
Njk0KTogJVRocm93VHlwZUVycm9yJSBpcyBub3QgdW5pcXVlCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9kYW5nbGluZy1zdXJyb2dhdGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9kYW5nbGluZy1zdXJyb2dhdGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL2RhbmdsaW5nLXN1cnJvZ2F0ZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdmVyaWZpZXMgdGhhdCB0aGUgdGVz
dCB0b29scyBjYW4gaGFuZGxlIGEgZGFuZ2xpbmcgc3Vycm9nYXRlIGNoYXJhY3RlcgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkYW5nbGluZ0ZpcnN0IGlzICLDrcKgwoMi
CitQQVNTIGRhbmdsaW5nU2Vjb25kIGlzICLDrcKwwoEiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvZGFuZ2xp
bmctc3Vycm9nYXRlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2RhbmdsaW5n
LXN1cnJvZ2F0ZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL2RhbmdsaW5n
LXN1cnJvZ2F0ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzcGFuIGlkPSJzcGFuIj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHZlcmlmaWVzIHRoYXQgdGhlIHRlc3QgdG9vbHMgY2FuIGhhbmRsZSBhIGRhbmdsaW5n
IHN1cnJvZ2F0ZSBjaGFyYWN0ZXIiKTsKKworICAgIHZhciBkYW5nbGluZ0ZpcnN0ID0gIlx1RDgw
MyI7CisgICAgdmFyIGRhbmdsaW5nU2Vjb25kID0gIlx1REMwMSI7CisgICAgCisgICAgc2hvdWxk
QmUoJ2RhbmdsaW5nRmlyc3QnLCAnIlx1RDgwMyInKTsKKyAgICBzaG91bGRCZSgnZGFuZ2xpbmdT
ZWNvbmQnLCAnIlx1REMwMSInKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="304729"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280861</attachid>
            <date>2016-06-08 17:51:44 -0700</date>
            <delta_ts>2016-06-08 17:51:44 -0700</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>154863-2.patch</filename>
            <type>text/plain</type>
            <size>9158</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTYxOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA2LTA4ICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIg
YW5kIER1bXBSZW5kZXJUcmVlIGRvIG5vdCBoYW5kbGUgZGFuZ2xpbmcgc3Vycm9nYXRlIGNoYXJh
Y3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDg2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgbm9uLXN0cmljdCB2ZXJpb25zIG9mIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoKSB0aGF0
IHdpbGwgaGFuZGxlIGRhbmdsaW5nCisgICAgICAgIHN1cnJvZ2F0ZXMgY2FsbGVkIFdLU3RyaW5n
R2V0VVRGOENTdHJpbmdOb25TdHJpY3QoKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1N0
cmluZy5jcHA6CisgICAgICAgIChXS1N0cmluZ0dldFVURjhDU3RyaW5nSW1wbCk6CisgICAgICAg
IChXS1N0cmluZ0dldFVURjhDU3RyaW5nKToKKyAgICAgICAgKFdLU3RyaW5nR2V0VVRGOENTdHJp
bmdOb25TdHJpY3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1N0cmluZy5oOgorCiAyMDE2
LTA2LTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2gg
dW5kZXIgV2ViUHJvY2Vzczo6cmVnaXN0ZXJXaXRoU3RhdGVEdW1wZXIoKQpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCShyZXZpc2lvbiAyMDE2MTkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw3ICs3MCwxMCBAQCBzaXplX3QgV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXpl
CiAgICAgcmV0dXJuIHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkubGVuZ3RoKCkgKiAz
ICsgMTsKIH0KIAotc2l6ZV90IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoV0tTdHJpbmdSZWYgc3Ry
aW5nUmVmLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQorZW51bSBTdHJpY3RUeXBl
IHsgTm9uU3RyaWN0ID0gZmFsc2UsIFN0cmljdCA9IHRydWUgfTsKKwordGVtcGxhdGUgPFN0cmlj
dFR5cGUgc3RyaWN0Pgorc2l6ZV90IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdJbXBsKFdLU3RyaW5n
UmVmIHN0cmluZ1JlZiwgY2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKIHsKICAgICBp
ZiAoIWJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODUsNyArODgsNyBAQCBzaXpl
X3QgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhXS1N0cmluZ1JlCiAgICAgICAgIHJlc3VsdCA9IFdU
Rjo6VW5pY29kZTo6Y29udmVydExhdGluMVRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyAr
IHN0cmluZ1ZpZXcubGVuZ3RoKCksICZwLCBwICsgYnVmZmVyU2l6ZSAtIDEpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nVmlldy5jaGFyYWN0
ZXJzMTYoKTsKLSAgICAgICAgcmVzdWx0ID0gV1RGOjpVbmljb2RlOjpjb252ZXJ0VVRGMTZUb1VU
RjgoJmNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBzdHJpbmdWaWV3Lmxlbmd0aCgpLCAmcCwgcCAr
IGJ1ZmZlclNpemUgLSAxLCAvKiBzdHJpY3QgKi8gdHJ1ZSk7CisgICAgICAgIHJlc3VsdCA9IFdU
Rjo6VW5pY29kZTo6Y29udmVydFVURjE2VG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzICsg
c3RyaW5nVmlldy5sZW5ndGgoKSwgJnAsIHAgKyBidWZmZXJTaXplIC0gMSwgc3RyaWN0KTsKICAg
ICB9CiAKICAgICBpZiAocmVzdWx0ICE9IFdURjo6VW5pY29kZTo6Y29udmVyc2lvbk9LICYmIHJl
c3VsdCAhPSBXVEY6OlVuaWNvZGU6OnRhcmdldEV4aGF1c3RlZCkKQEAgLTk1LDYgKzk4LDE2IEBA
IHNpemVfdCBXS1N0cmluZ0dldFVURjhDU3RyaW5nKFdLU3RyaW5nUmUKICAgICByZXR1cm4gcCAt
IGJ1ZmZlcjsKIH0KIAorc2l6ZV90IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoV0tTdHJpbmdSZWYg
c3RyaW5nUmVmLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQoreworICAgIHJldHVy
biBXS1N0cmluZ0dldFVURjhDU3RyaW5nSW1wbDxTdHJpY3RUeXBlOjpTdHJpY3Q+KHN0cmluZ1Jl
ZiwgYnVmZmVyLCBidWZmZXJTaXplKTsKK30KKworc2l6ZV90IFdLU3RyaW5nR2V0VVRGOENTdHJp
bmdOb25TdHJpY3QoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBjaGFyKiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplKQoreworICAgIHJldHVybiBXS1N0cmluZ0dldFVURjhDU3RyaW5nSW1wbDxTdHJp
Y3RUeXBlOjpOb25TdHJpY3Q+KHN0cmluZ1JlZiwgYnVmZmVyLCBidWZmZXJTaXplKTsKK30KKwog
Ym9vbCBXS1N0cmluZ0lzRXF1YWwoV0tTdHJpbmdSZWYgYVJlZiwgV0tTdHJpbmdSZWYgYlJlZikK
IHsKICAgICByZXR1cm4gdG9JbXBsKGFSZWYpLT5zdHJpbmdWaWV3KCkgPT0gdG9JbXBsKGJSZWYp
LT5zdHJpbmdWaWV3KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTdHJpbmcu
aAkocmV2aXNpb24gMjAxNjE5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAgV0tfRVhQT1JUIHNpemVfdCBX
S1N0cmluZ0dldENoYXJhY3RlcnMoVwogCiBXS19FWFBPUlQgc2l6ZV90IFdLU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZShXS1N0cmluZ1JlZiBzdHJpbmcpOwogV0tfRVhQT1JUIHNpemVf
dCBXS1N0cmluZ0dldFVURjhDU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZywgY2hhciogYnVmZmVy
LCBzaXplX3QgYnVmZmVyU2l6ZSk7CitXS19FWFBPUlQgc2l6ZV90IFdLU3RyaW5nR2V0VVRGOENT
dHJpbmdOb25TdHJpY3QoV0tTdHJpbmdSZWYgc3RyaW5nLCBjaGFyKiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplKTsKIAogV0tfRVhQT1JUIGJvb2wgV0tTdHJpbmdJc0VxdWFsKFdLU3RyaW5nUmVm
IGEsIFdLU3RyaW5nUmVmIGIpOwogV0tfRVhQT1JUIGJvb2wgV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhXS1N0cmluZ1JlZiBhLCBjb25zdCBjaGFyKiBiKTsKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTgzMykKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA2
LTA4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktp
dFRlc3RSdW5uZXIgYW5kIER1bXBSZW5kZXJUcmVlIGRvIG5vdCBoYW5kbGUgZGFuZ2xpbmcgc3Vy
cm9nYXRlIGNoYXJhY3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NDg2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGVkIGEgbm9uLXN0cmljdCB2ZXJpb25zIG9mIFdLU3RyaW5nR2V0VVRGOENT
dHJpbmcoKSB0aGF0IHdpbGwgaGFuZGxlIGRhbmdsaW5nCisgICAgICAgIHN1cnJvZ2F0ZXMuICBD
aGFuZ2VkIHRoZSBleHRyYWN0aW9uIG9mIGlubmVyIHRleHQgZnJvbSBmcmFtZXMgaW4gRHVtcFJl
bmRlclRyZWUKKyAgICAgICAgdG8gdXNlIHRoZSBuZXcgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05v
blN0cmljdCgpIGZ1bmN0aW9uIGluc3RlYWQgb2YgTlNTdHJpbmcKKyAgICAgICAgY29udmVyc2lv
biBzaW5jZSBOU1N0cmluZyBkb2Vzbid0IGhhdmUgYSB3YXkgdG8gaGFuZGxlIGRhbmdsaW5nIHN1
cnJvZ2F0ZXMuCisgICAgICAgIFRoZSBjb2RlIGFkZGVkIGluIER1bXBSZW5kZXJUcmVlIG1hdGNo
ZXMgd2hhdCB3YXMgY2hhbmdlZCBpbiBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0Fz
VGV4dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaDoKKyAg
ICAgICAgKFdUUjo6dG9XVEZTdHJpbmcpOgorCiAyMDE2LTA2LTA4ICBBYWthc2ggSmFpbiAgPGFh
a2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0cyBmYWlsIGlmIGRpc3BsYXkgc2xl
ZXBzIHdoaWxlIHJ1bi13ZWJraXQtdGVzdHMgaXMgcnVubmluZwpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gMjAxNjE5KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw2ICs2Miw4IEBACiAjaW1wb3J0IDxXZWJLaXQvRE9NRWxlbWVudC5oPgogI2ltcG9ydCA8
V2ViS2l0L0RPTUV4dGVuc2lvbnMuaD4KICNpbXBvcnQgPFdlYktpdC9ET01SYW5nZS5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tTdHJpbmdDRi5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJCYWNrRm9y
d2FyZExpc3QuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJDYWNoZS5oPgpAQCAtMTUyMyw3ICsxNTI1
LDE3IEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJGcmEKICAgICBpZiAo
W2ZyYW1lIHBhcmVudEZyYW1lXSkKICAgICAgICAgcmVzdWx0ID0gW05TTXV0YWJsZVN0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiXG4tLS0tLS0tLVxuRnJhbWU6ICclQCdcbi0tLS0tLS0tXG4iLCBb
ZnJhbWUgbmFtZV1dOwogCi0gICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCIlQFxuIiwgW2RvY3Vt
ZW50RWxlbWVudCBpbm5lclRleHRdXTsKKyAgICBOU1N0cmluZyAqaW5uZXJUZXh0ID0gW2RvY3Vt
ZW50RWxlbWVudCBpbm5lclRleHRdOworICAgIC8vIFdlIHVzZSBXS1N0cmluZ0dldFVURjhDU3Ry
aW5nTm9uU3RyaWN0KCkgdG8gY29udmVydCBpbm5lclRleHQgdG8gYSBXSyBTdHJpbmcgc2luY2UK
KyAgICAvLyBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KCkgY2FuIGhhbmRsZSBkYW5n
bGluZyBzdXJyb2dhdGVzIGFuZCB0aGUgTlNTdHJpbmcKKyAgICAvLyBjb252ZXJzaW9uIG1ldGhv
ZHMgY2Fubm90LiBBZnRlciB0aGUgY29udmVyc2lvbiB0byBhIGJ1ZmZlciwgd2UgdHVybiB0aGF0
IGJ1ZmZlciBpbnRvCisgICAgLy8gYSBDRlN0cmluZyB2aWEgZnJvbVVURjhXaXRoTGF0aW4xRmFs
bGJhY2soKS5jcmVhdGVDRlN0cmluZygpIHdoaWNoIGNhbiBiZSBhcHBlbmRlZCB0bworICAgIC8v
IHRoZSByZXN1bHQgd2l0aG91dCBhbnkgY29udmVyc2lvbi4KKyAgICBXS1N0cmluZ1JlZiBzdHJp
bmdSZWYgPSBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpaW5uZXJUZXh0
KTsKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5n
U2l6ZShzdHJpbmdSZWYpOworICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFy
W10+KGJ1ZmZlclNpemUpOworICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVU
RjhDU3RyaW5nTm9uU3RyaWN0KHN0cmluZ1JlZiwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsK
KyAgICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpAIiVAXG4iLCBTdHJpbmc6OmZyb21VVEY4V2l0aExh
dGluMUZhbGxiYWNrKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSkuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKV07CiAKICAgICBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpKSB7CiAgICAgICAgIE5TQXJyYXkgKmtpZHMgPSBbZnJhbWUgY2hpbGRGcmFtZXNdOwpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCShyZXZpc2lvbiAyMDE2
MTkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIGlubGluZSBXVEY6OlN0cmluZyB0b1dURlN0cmluZyhX
S1N0cmluZ1IKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVU
RjhDU3RyaW5nU2l6ZShzdHJpbmcpOwogICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxjaGFyW10+KGJ1ZmZlclNpemUpOwotICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmlu
Z0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKKyAgICBz
aXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJp
bmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIFdURjo6U3RyaW5nOjpm
cm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEp
OwogfQogICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNjE5KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDYtMDggIE1pY2hh
ZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5l
ciBhbmQgRHVtcFJlbmRlclRyZWUgZG8gbm90IGhhbmRsZSBkYW5nbGluZyBzdXJyb2dhdGUgY2hh
cmFjdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU0ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TmV3IHRlc3RzLgorCisgICAgICAgICogZmFzdC90ZXh0L2RhbmdsaW5nLXN1cnJvZ2F0ZXMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvZGFuZ2xpbmctc3Vycm9nYXRl
cy5odG1sOiBBZGRlZC4KKwogMjAxNi0wNi0wMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMDA2OTQpOiAlVGhyb3dUeXBlRXJyb3Il
IGlzIG5vdCB1bmlxdWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9kYW5nbGluZy1zdXJy
b2dhdGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQv
ZGFuZ2xpbmctc3Vycm9nYXRlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3RleHQvZGFuZ2xpbmctc3Vycm9nYXRlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0cyB2ZXJpZmllcyB0aGF0IHRoZSB0ZXN0
IHRvb2xzIGNhbiBoYW5kbGUgYSBkYW5nbGluZyBzdXJyb2dhdGUgY2hhcmFjdGVyCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRhbmdsaW5nRmlyc3QgaXMgIsOtwqDCgyIK
K1BBU1MgZGFuZ2xpbmdTZWNvbmQgaXMgIsOtwrDCgSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQv
ZGFuZ2xpbmctc3Vycm9nYXRlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
dGV4dC9kYW5nbGluZy1zdXJyb2dhdGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3RleHQvZGFuZ2xpbmctc3Vycm9nYXRlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzcGFuIGlkPSJzcGFuIj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHZlcmlm
aWVzIHRoYXQgdGhlIHRlc3QgdG9vbHMgY2FuIGhhbmRsZSBhIGRhbmdsaW5nIHN1cnJvZ2F0ZSBj
aGFyYWN0ZXIiKTsKKworICAgIHZhciBkYW5nbGluZ0ZpcnN0ID0gIlx1RDgwMyI7CisgICAgdmFy
IGRhbmdsaW5nU2Vjb25kID0gIlx1REMwMSI7CisgICAgCisgICAgc2hvdWxkQmUoJ2RhbmdsaW5n
Rmlyc3QnLCAnIlx1RDgwMyInKTsKKyAgICBzaG91bGRCZSgnZGFuZ2xpbmdTZWNvbmQnLCAnIlx1
REMwMSInKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281110</attachid>
            <date>2016-06-11 13:19:10 -0700</date>
            <delta_ts>2016-06-11 16:07:29 -0700</delta_ts>
            <desc>follow-up fix for EWS</desc>
            <filename>LeakFix.txt</filename>
            <type>text/plain</type>
            <size>1750</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwMTk3NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEwIEBACisyMDE2LTA2LTExICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIFVucmV2aWV3ZWQgbGVhayBmaXggYWZ0ZXIgcjIwMTg2My4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGR1bXBG
cmFtZXNBc1RleHQpOgorCiAyMDE2LTA2LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IENNYWtlIGJ1aWxkLgpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gMjAxOTc3KQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMxLDEwICsxNTMxLDEwIEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0Fz
VGV4dChXZWJGcmEKICAgICAvLyBjb252ZXJzaW9uIG1ldGhvZHMgY2Fubm90LiBBZnRlciB0aGUg
Y29udmVyc2lvbiB0byBhIGJ1ZmZlciwgd2UgdHVybiB0aGF0IGJ1ZmZlciBpbnRvCiAgICAgLy8g
YSBDRlN0cmluZyB2aWEgZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soKS5jcmVhdGVDRlN0cmlu
ZygpIHdoaWNoIGNhbiBiZSBhcHBlbmRlZCB0bwogICAgIC8vIHRoZSByZXN1bHQgd2l0aG91dCBh
bnkgY29udmVyc2lvbi4KLSAgICBXS1N0cmluZ1JlZiBzdHJpbmdSZWYgPSBXS1N0cmluZ0NyZWF0
ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpaW5uZXJUZXh0KTsKLSAgICBzaXplX3QgYnVmZmVy
U2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmdSZWYpOworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKWlubmVyVGV4dCkpOworICAgIHNpemVfdCBidWZm
ZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZ1JlZi5nZXQo
KSk7CiAgICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6
ZSk7Ci0gICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdOb25T
dHJpY3Qoc3RyaW5nUmVmLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOworICAgIHNpemVfdCBz
dHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KHN0cmluZ1JlZi5n
ZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBbcmVzdWx0IGFwcGVuZEZvcm1h
dDpAIiVAXG4iLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGJ1ZmZlci5nZXQo
KSwgc3RyaW5nTGVuZ3RoIC0gMSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV07CiAKICAgICBpZiAo
Z1Rlc3RSdW5uZXItPmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281113</attachid>
            <date>2016-06-11 16:07:29 -0700</date>
            <delta_ts>2016-06-11 16:07:29 -0700</delta_ts>
            <desc>Follow-up fix for EWS</desc>
            <filename>LeakFix.txt</filename>
            <type>text/plain</type>
            <size>1985</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwMTk3NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEwIEBACisyMDE2LTA2LTExICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIFVucmV2aWV3ZWQgbGVhayBmaXggYWZ0ZXIgcjIwMTg2My4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGR1bXBG
cmFtZXNBc1RleHQpOgorCiAyMDE2LTA2LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IENNYWtlIGJ1aWxkLgpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gMjAxOTc3KQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW1wb3J0IDxXZWJLaXQvRE9NRWxlbWVudC5oPgogI2lt
cG9ydCA8V2ViS2l0L0RPTUV4dGVuc2lvbnMuaD4KICNpbXBvcnQgPFdlYktpdC9ET01SYW5nZS5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tTdHJp
bmcuaD4KICNpbXBvcnQgPFdlYktpdC9XS1N0cmluZ0NGLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
QXJjaGl2ZS5oPgpAQCAtMTUzMSwxMCArMTUzMiwxMCBAQCBzdGF0aWMgTlNTdHJpbmcgKmR1bXBG
cmFtZXNBc1RleHQoV2ViRnJhCiAgICAgLy8gY29udmVyc2lvbiBtZXRob2RzIGNhbm5vdC4gQWZ0
ZXIgdGhlIGNvbnZlcnNpb24gdG8gYSBidWZmZXIsIHdlIHR1cm4gdGhhdCBidWZmZXIgaW50bwog
ICAgIC8vIGEgQ0ZTdHJpbmcgdmlhIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKCkuY3JlYXRl
Q0ZTdHJpbmcoKSB3aGljaCBjYW4gYmUgYXBwZW5kZWQgdG8KICAgICAvLyB0aGUgcmVzdWx0IHdp
dGhvdXQgYW55IGNvbnZlcnNpb24uCi0gICAgV0tTdHJpbmdSZWYgc3RyaW5nUmVmID0gV0tTdHJp
bmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKWlubmVyVGV4dCk7Ci0gICAgc2l6ZV90
IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nUmVm
KTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3RyaW5nUmVmKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilpbm5lclRleHQpKTsKKyAgICBzaXpl
X3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmdS
ZWYuZ2V0KCkpOwogICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1
ZmZlclNpemUpOwotICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3Ry
aW5nTm9uU3RyaWN0KHN0cmluZ1JlZiwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKKyAgICBz
aXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJp
bmdSZWYuZ2V0KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgW3Jlc3VsdCBhcHBl
bmRGb3JtYXQ6QCIlQFxuIiwgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZm
ZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldOwogCiAg
ICAgaWYgKGdUZXN0UnVubmVyLT5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>