<?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>154984</bug_id>
          
          <creation_ts>2016-03-03 15:26:02 -0800</creation_ts>
          <short_desc>Use NetworkSession for pings when using NetworkSession</short_desc>
          <delta_ts>2016-03-05 18:48:42 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mkwst</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1170336</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-03 15:26:02 -0800</bug_when>
    <thetext>Use NetworkSession for pings when using NetworkSession</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170338</commentid>
    <comment_count>1</comment_count>
      <attachid>272779</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-03 15:28:38 -0800</bug_when>
    <thetext>Created attachment 272779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170357</commentid>
    <comment_count>2</comment_count>
      <attachid>272786</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-03 15:58:17 -0800</bug_when>
    <thetext>Created attachment 272786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170512</commentid>
    <comment_count>3</comment_count>
      <attachid>272786</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-03 21:23:29 -0800</bug_when>
    <thetext>Comment on attachment 272786
Patch

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

&gt; Source/WebKit2/NetworkProcess/PingLoad.h:71
&gt; +    virtual void willPerformHTTPRedirection(const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, RedirectCompletionHandler completionHandler)
&gt; +    {
&gt; +        completionHandler({ });
&gt; +        delete this;
&gt; +    }
&gt; +    virtual void didReceiveChallenge(const WebCore::AuthenticationChallenge&amp;, ChallengeCompletionHandler completionHandler)
&gt; +    {
&gt; +        completionHandler(AuthenticationChallengeDisposition::Cancel, { });
&gt; +        delete this;
&gt; +    }
&gt; +    virtual void didReceiveResponseNetworkSession(const WebCore::ResourceResponse&amp;, ResponseCompletionHandler completionHandler)
&gt; +    {
&gt; +        completionHandler(WebCore::PolicyAction::PolicyIgnore);
&gt; +        delete this;
&gt; +    }
&gt; +    virtual void didReceiveData(RefPtr&lt;WebCore::SharedBuffer&gt;&amp;&amp;) { ASSERT_NOT_REACHED(); }
&gt; +    virtual void didCompleteWithError(const WebCore::ResourceError&amp;) { delete this; }
&gt; +    virtual void didBecomeDownload() { ASSERT_NOT_REACHED(); }
&gt; +    virtual void didSendData(uint64_t totalBytesSent, uint64_t totalBytesExpectedToSend) { ASSERT_NOT_REACHED(); }
&gt; +    virtual void wasBlocked() { delete this; }
&gt; +    virtual void cannotShowURL() { delete this; }

These should all be marked override, and not virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170524</commentid>
    <comment_count>4</comment_count>
      <attachid>272833</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-03 22:01:23 -0800</bug_when>
    <thetext>Created attachment 272833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170532</commentid>
    <comment_count>5</comment_count>
      <attachid>272833</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-03 22:47:09 -0800</bug_when>
    <thetext>Comment on attachment 272833
Patch

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

&gt; Source/WebKit2/NetworkProcess/PingLoad.h:69
&gt; +    void didSendData(uint64_t totalBytesSent, uint64_t totalBytesExpectedToSend) override { ASSERT_NOT_REACHED(); }

This assertion was being hit in many tests.  Will commit without it if reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170912</commentid>
    <comment_count>6</comment_count>
      <attachid>272833</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-03-04 09:56:54 -0800</bug_when>
    <thetext>Comment on attachment 272833
Patch

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

&gt; Source/WebKit2/ChangeLog:3
&gt; +        Use NetworkSession for pings when using NetworkSession

The title could be reformulated with just one &apos;NetworkSession&apos;

&gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:145
&gt;      RefPtr&lt;NetworkingContext&gt; context = RemoteNetworkingContext::create(loadParameters.sessionID, loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect);
&gt;  
&gt; +#if USE(NETWORK_SESSION)
&gt; +    // PingLoad manages its own lifetime, deleting itself when its purpose has been fulfilled.
&gt; +    new PingLoad(loadParameters);
&gt; +#else
&gt;      // PingHandle manages its own lifetime, deleting itself when its purpose has been fulfilled.
&gt;      new PingHandle(context.get(), loadParameters.request, loadParameters.allowStoredCredentials == AllowStoredCredentials, PingHandle::UsesAsyncCallbacks::Yes);
&gt; +#endif

RemoteNetworkingContext doesn&apos;t seems to be used in USE(NETWORK_SESSION) path. It should be moved inside the #else branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170919</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-04 10:01:59 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/197568</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171351</commentid>
    <comment_count>8</comment_count>
      <attachid>272833</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-05 18:48:42 -0800</bug_when>
    <thetext>Comment on attachment 272833
Patch

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

&gt; Source/WebKit2/NetworkProcess/PingLoad.h:34
&gt; +class PingLoad : public NetworkDataTaskClient {

Should mark the class final. Also, I think that it could be private inheritance rather than public.

&gt; Source/WebKit2/NetworkProcess/PingLoad.h:36
&gt; +    PingLoad(const NetworkResourceLoadParameters&amp; parameters)

Typically we’d want to mark this explicit.

Also, in a class that deletes itself like this, I think it’s better to only expose a static member function to trigger this load and not return the pointer. That way the caller doesn’t have to write what looks like incorrect code.

&gt; Source/WebKit2/NetworkProcess/PingLoad.h:37
&gt; +        : m_timeoutTimer(*this, &amp;PingLoad::timeoutTimerFired)

I new code, a bit more elegant to write this with a lambda:

    : m_timeoutTimer(*this, [this]() {
        delete this;
    })

&gt; Source/WebKit2/NetworkProcess/PingLoad.h:43
&gt; +        if (auto* networkSession = SessionTracker::networkSession(parameters.sessionID)) {
&gt; +            m_task = NetworkDataTask::create(*networkSession, *this, parameters.request, parameters.allowStoredCredentials, parameters.contentSniffingPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect);
&gt; +            m_task-&gt;resume();
&gt; +        } else
&gt; +            ASSERT_NOT_REACHED();

The if does us no good. If you really want an assertion then I’d just write:

    auto* networkSession = SessionTracker::networkSession(parameters.sessionID);
    ASSERT(networkSession);
    ...

But I’d suggest not bothering with the assertion.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272779</attachid>
            <date>2016-03-03 15:28:38 -0800</date>
            <delta_ts>2016-03-03 15:58:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154984-20160303152824.patch</filename>
            <type>text/plain</type>
            <size>10799</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzUxOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE2LTAzLTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIE5ldHdv
cmtTZXNzaW9uIGZvciBwaW5ncyB3aGVuIHVzaW5nIE5ldHdvcmtTZXNzaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ5ODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwg
d2Ugd2VyZSB1c2luZyBOU1VSTENvbm5lY3Rpb24gZm9yIHBpbmdzIHdoZW4gdGhlIHJlc3Qgb2Yg
dGhlIGxvYWRpbmcgd2FzIGJlaW5nIAorICAgICAgICBkb25lIHdpdGggTlNVUkxTZXNzaW9uLiAg
VG8gZml4IHRoaXMsIEkgaW1wbGVtZW50ZWQgUGluZ0xvYWQsIHdoaWNoIGlzIHRoZSBOZXR3b3Jr
U2Vzc2lvbiBlcXVpdmFsZW50CisgICAgICAgIG9mIFBpbmdIYW5kbGUuCisKKyAgICAgICAgVGhp
cyBmaXhlcyBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQt
c3RhdHVzLWNvZGUtemVyby13aGVuLXVzaW5nLWh0dHBzLmh0bWwKKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvYWRQaW5nKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlm
aWVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OlBpbmdMb2FkKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xv
YWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xv
YWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9h
ZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkQ29tcGxl
dGVXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkQmVjb21lRG93bmxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkU2VuZERhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQaW5nTG9hZDo6d2FzQmxvY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2Fk
OjpjYW5ub3RTaG93VVJMKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OnRpbWVvdXRUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6On5QaW5nTG9hZCk6CisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTAzLTAzICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9wdCBDRk5ldHdvcmsgc3Rv
cmFnZSBwYXJ0aXRpb25pbmcgU1BJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CShyZXZpc2lvbiAxOTc0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxv
YWRlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRlICJSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMTMyLDggKzEzMywxMyBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2FkCiB7CiAgICAgUmVmUHRyPE5ldHdvcmtp
bmdDb250ZXh0PiBjb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShsb2Fk
UGFyYW1ldGVycy5zZXNzaW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QpOwogCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICAv
LyBQaW5nTG9hZCBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVu
IGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KKyAgICBuZXcgUGluZ0xvYWQobG9hZFBh
cmFtZXRlcnMpOworI2Vsc2UKICAgICAvLyBQaW5nSGFuZGxlIG1hbmFnZXMgaXRzIG93biBsaWZl
dGltZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4gaXRzIHB1cnBvc2UgaGFzIGJlZW4gZnVsZmlsbGVk
LgogICAgIG5ldyBQaW5nSGFuZGxlKGNvbnRleHQuZ2V0KCksIGxvYWRQYXJhbWV0ZXJzLnJlcXVl
c3QsIGxvYWRQYXJhbWV0ZXJzLmFsbG93U3RvcmVkQ3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRD
cmVkZW50aWFscywgUGluZ0hhbmRsZTo6VXNlc0FzeW5jQ2FsbGJhY2tzOjpZZXMpOworI2VuZGlm
CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVu
dGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGluZ0xvYWRfaAorI2RlZmluZSBQaW5nTG9h
ZF9oCisKKyNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJh
Y2tlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGluZ0xvYWQgOiBwdWJsaWMg
TmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBQaW5nTG9hZChjb25zdCBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICAgICAgOiBtX3RpbWVv
dXRUaW1lcigqdGhpcywgJlBpbmdMb2FkOjp0aW1lb3V0VGltZXJGaXJlZCkKKyAgICB7CisgICAg
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vz
c2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCkpIHsKKyAgICAgICAgICAgIG1fdGFzayA9IE5ldHdv
cmtEYXRhVGFzazo6Y3JlYXRlKCpuZXR3b3JrU2Vzc2lvbiwgKnRoaXMsIHBhcmFtZXRlcnMucmVx
dWVzdCwgcGFyYW1ldGVycy5hbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBwYXJhbWV0ZXJzLmNvbnRl
bnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0KTsKKyAgICAgICAgICAgIG1fdGFzay0+cmVzdW1lKCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgLy8gSWYg
dGhlIHNlcnZlciBuZXZlciByZXNwb25kcywgdGhpcyBvYmplY3Qgd2lsbCBoYW5nIGFyb3VuZCBm
b3JldmVyLgorICAgICAgICAvLyBTZXQgYSB2ZXJ5IGdlbmVyb3VzIHRpbWVvdXQsIGp1c3QgaW4g
Y2FzZS4KKyAgICAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KDYwMDAwKTsKKyAgICB9
CisgICAgCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIGRlbGV0
ZSB0aGlzOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsLCB7IH0pOworICAg
ICAgICBkZWxldGUgdGhpczsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZU5ldHdvcmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmUpOwor
ICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpIHsgZGVsZXRlIHRoaXM7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
QmVjb21lRG93bmxvYWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1NlbmQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgd2FzQmxvY2tlZCgpIHsgZGVsZXRlIHRoaXM7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
bm90U2hvd1VSTCgpIHsgZGVsZXRlIHRoaXM7IH0KKyAgICB2b2lkIHRpbWVvdXRUaW1lckZpcmVk
KCkgeyBkZWxldGUgdGhpczsgfQorICAgIAorICAgIHZpcnR1YWwgflBpbmdMb2FkKCkKKyAgICB7
CisgICAgICAgIGlmIChtX3Rhc2spCisgICAgICAgICAgICBtX3Rhc2stPmNhbmNlbCgpOworICAg
IH0KKyAgICAKKyAgICBSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7CisgICAgV2ViQ29y
ZTo6VGltZXIgbV90aW1lb3V0VGltZXI7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTk3NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI0LDYgKzEwMjQsNyBAQAogCQk1Qzg1Qzc4ODFD
M0YyM0NFMDA2MUE0RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDODVDNzg2MUMzRjIzQzUwMDYxQTRGQSAvKiBQ
ZW5kaW5nRG93bmxvYWQuY3BwICovOyB9OwogCQk1Q0JDOUI4RDFDNjUyNzlDMDBBOEZEQ0YgLyog
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0gKi87IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRDRiAvKiBOZXR3b3JrRGF0
YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
QkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLzsgfTsKKwkJNUNF
ODVCMjAxQzg4RTY0QjAwNzBCRkNFIC8qIFBpbmdMb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0UgLyogUGlu
Z0xvYWQuaCAqLzsgfTsKIAkJNjUwMUJEMUExMkYxMjQzNDAwRTlGMjQ4IC8qIFdLQnVuZGxlSW5z
cGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1Qjg2RjE3MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5jcHAgKi87IH07
CiAJCTY1OUM1NTFFMTMwMDA2NDEwMDI1QzBDMiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU0NkE4MjkxMzAwMDE2NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxlUGFnZVJlc291
cmNlTG9hZENsaWVudC5jcHAgKi87IH07CiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3REQ4QSAvKiBX
S0J1bmRsZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMwMjAs
NiArMzAyMSw3IEBACiAJCTVDODVDNzg2MUMzRjIzQzUwMDYxQTRGQSAvKiBQZW5kaW5nRG93bmxv
YWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGVuZGluZ0Rvd25s
b2FkLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZE
Q0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IE5ldHdvcmtEYXRhVGFzay5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5QjhCMUM2NTI1NzMwMEE4RkRD
RiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IE5ldHdvcmtEYXRhVGFza0NvY29hLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDRTg1QjFGMUM4OEU2NDMwMDcwQkZDRSAvKiBQaW5nTG9hZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBQaW5nTG9hZC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ0NDJBNTUxNkQ1ODU2
NzAwQUMzMzMxIC8qIFBsdWdpblNlcnZpY2UuZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54bWw7IHBhdGggPSBQbHVnaW5T
ZXJ2aWNlLmVudGl0bGVtZW50czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURBRDcz
RjExMTZGRjkwQzAwRUU1Mzk2IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjU0NkE4MjkxMzAwMDE2NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxlUGFn
ZVJlc291cmNlTG9hZENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTE4NCw2ICs1MTg2LDcgQEAKIAkJNTEwQ0M3REExNjEzOEUw
MTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0UgLyogUGluZ0xvYWQu
aCAqLywKIAkJCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmgg
Ki8sCiAJCQkJNUMxNDI2RjIxQzIzRjgyRDAwRDQxMTgzIC8qIEN1c3RvbVByb3RvY29scyAqLywK
IAkJCQk1QzE0MjZGMTFDMjNGODE3MDBENDExODMgLyogRG93bmxvYWRzICovLApAQCAtNzEyMiw2
ICs3MTI1LDcgQEAKIAkJCQkyREVBQzVDRjFBQzM2OEJCMDBBMTk1RDggLyogX1dLRmluZE9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFN0E5NDRBMUJCRDk3QzMwMDk0NTU0NyAvKiBfV0tG
b2N1c2VkRWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFMEI4QTdBMUJDNTlBNTkw
MDQ0QjMyRCAvKiBfV0tGb3JtRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDRTg1QjIw
MUM4OEU2NEIwMDcwQkZDRSAvKiBQaW5nTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdBNjRF
NTcxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3M0QxMjIzMThBNDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzczRDEyMjcxOEE0NzNGNjAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxl
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272786</attachid>
            <date>2016-03-03 15:58:17 -0800</date>
            <delta_ts>2016-03-03 22:01:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154984-20160303155802.patch</filename>
            <type>text/plain</type>
            <size>10716</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzUxOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE2LTAzLTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIE5ldHdv
cmtTZXNzaW9uIGZvciBwaW5ncyB3aGVuIHVzaW5nIE5ldHdvcmtTZXNzaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ5ODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwg
d2Ugd2VyZSB1c2luZyBOU1VSTENvbm5lY3Rpb24gZm9yIHBpbmdzIHdoZW4gdGhlIHJlc3Qgb2Yg
dGhlIGxvYWRpbmcgd2FzIGJlaW5nIAorICAgICAgICBkb25lIHdpdGggTlNVUkxTZXNzaW9uLiAg
VG8gZml4IHRoaXMsIEkgaW1wbGVtZW50ZWQgUGluZ0xvYWQsIHdoaWNoIGlzIHRoZSBOZXR3b3Jr
U2Vzc2lvbiBlcXVpdmFsZW50CisgICAgICAgIG9mIFBpbmdIYW5kbGUuCisKKyAgICAgICAgVGhp
cyBmaXhlcyBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQt
c3RhdHVzLWNvZGUtemVyby13aGVuLXVzaW5nLWh0dHBzLmh0bWwKKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvYWRQaW5nKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlm
aWVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OlBpbmdMb2FkKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xv
YWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xv
YWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9h
ZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkQ29tcGxl
dGVXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkQmVjb21lRG93bmxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkU2VuZERhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQaW5nTG9hZDo6d2FzQmxvY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2Fk
OjpjYW5ub3RTaG93VVJMKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OnRpbWVvdXRUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6On5QaW5nTG9hZCk6CisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTAzLTAzICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9wdCBDRk5ldHdvcmsgc3Rv
cmFnZSBwYXJ0aXRpb25pbmcgU1BJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CShyZXZpc2lvbiAxOTc1MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyNpbmNsdWRlICJQaW5nTG9hZC5o
IgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTEzMiw4ICsxMzYsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6bG9hZAogewogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gY29udGV4dCA9IFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUobG9hZFBhcmFtZXRlcnMuc2Vzc2lvbklELCBsb2Fk
UGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsKIAor
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgLy8gUGluZ0xvYWQgbWFuYWdlcyBpdHMgb3du
IGxpZmV0aW1lLCBkZWxldGluZyBpdHNlbGYgd2hlbiBpdHMgcHVycG9zZSBoYXMgYmVlbiBmdWxm
aWxsZWQuCisgICAgbmV3IFBpbmdMb2FkKGxvYWRQYXJhbWV0ZXJzKTsKKyNlbHNlCiAgICAgLy8g
UGluZ0hhbmRsZSBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVu
IGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KICAgICBuZXcgUGluZ0hhbmRsZShjb250
ZXh0LmdldCgpLCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBsb2FkUGFyYW1ldGVycy5hbGxvd1N0
b3JlZENyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIFBpbmdIYW5kbGU6OlVz
ZXNBc3luY0NhbGxiYWNrczo6WWVzKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIGlkZW50aWZpZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFBpbmdMb2FkX2gKKyNkZWZpbmUgUGluZ0xvYWRfaAorCisjaW5jbHVkZSAiTmV0d29ya0Rh
dGFUYXNrLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFBpbmdMb2FkIDogcHVibGljIE5ldHdvcmtEYXRhVGFza0NsaWVudCB7Citw
dWJsaWM6CisgICAgUGluZ0xvYWQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCisgICAgICAgIDogbV90aW1lb3V0VGltZXIoKnRoaXMsICZQaW5nTG9hZDo6
dGltZW91dFRpbWVyRmlyZWQpCisgICAgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQp
KSB7CisgICAgICAgICAgICBtX3Rhc2sgPSBOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZSgqbmV0d29y
a1Nlc3Npb24sICp0aGlzLCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMuYWxsb3dTdG9y
ZWRDcmVkZW50aWFscywgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRl
cnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CisgICAgICAgICAg
ICBtX3Rhc2stPnJlc3VtZSgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworCisgICAgICAgIC8vIElmIHRoZSBzZXJ2ZXIgbmV2ZXIgcmVzcG9uZHMs
IHRoaXMgb2JqZWN0IHdpbGwgaGFuZyBhcm91bmQgZm9yZXZlci4KKyAgICAgICAgLy8gU2V0IGEg
dmVyeSBnZW5lcm91cyB0aW1lb3V0LCBqdXN0IGluIGNhc2UuCisgICAgICAgIG1fdGltZW91dFRp
bWVyLnN0YXJ0T25lU2hvdCg2MDAwMCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb246OkNhbmNlbCwgeyB9KTsKKyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OlBvbGljeUFjdGlvbjo6UG9saWN5SWdub3JlKTsKKyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IGRlbGV0
ZSB0aGlzOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEJlY29tZURvd25sb2FkKCkgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0
b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoKSB7IGRlbGV0
ZSB0aGlzOyB9CisgICAgdmlydHVhbCB2b2lkIGNhbm5vdFNob3dVUkwoKSB7IGRlbGV0ZSB0aGlz
OyB9CisgICAgdm9pZCB0aW1lb3V0VGltZXJGaXJlZCgpIHsgZGVsZXRlIHRoaXM7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIH5QaW5nTG9hZCgpCisgICAgeworICAgICAgICBpZiAobV90YXNrKQorICAg
ICAgICAgICAgbV90YXNrLT5jYW5jZWwoKTsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPE5ldHdv
cmtEYXRhVGFzaz4gbV90YXNrOworICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOwor
fTsKKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NzUxOSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTAyNCw2ICsxMDI0LDcgQEAKIAkJNUM4NUM3ODgxQzNGMjNDRTAwNjFBNEZBIC8qIFBlbmRpbmdE
b3dubG9hZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Qzg1Qzc4NjFDM0YyM0M1MDA2MUE0RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCAqLzsgfTsK
IAkJNUNCQzlCOEQxQzY1Mjc5QzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzlCOEIxQzY1
MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tICovOyB9OwogCQk1Q0JDOUI4
RTFDNjUyQ0EwMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyog
TmV0d29ya0RhdGFUYXNrLmggKi87IH07CisJCTVDRTg1QjIwMUM4OEU2NEIwMDcwQkZDRSAvKiBQ
aW5nTG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNFODVCMUYxQzg4RTY0MzAwNzBCRkNFIC8qIFBpbmdMb2FkLmggKi87IH07CiAJCTY1MDFCRDFB
MTJGMTI0MzQwMEU5RjI0OCAvKiBXS0J1bmRsZUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4NkYxNzEyRjExRDdCMDBCN0REOEEg
LyogV0tCdW5kbGVJbnNwZWN0b3IuY3BwICovOyB9OwogCQk2NTlDNTUxRTEzMDAwNjQxMDAyNUMw
QzIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDZBODI5MTMwMDAxNjQwMDBD
RUIxQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwICovOyB9Owog
CQk2NUI4NkYxRTEyRjExREUzMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qjg2RjE4MTJGMTFEN0Iw
MEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMDIwLDYgKzMwMjEsNyBAQAogCQk1Qzg1Qzc4NjFD
M0YyM0M1MDA2MUE0RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFBlbmRpbmdEb3dubG9hZC5jcHA7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUNCQzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrRGF0YVRhc2suaDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBOZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0U4NUIxRjFDODhFNjQzMDA3
MEJGQ0UgLyogUGluZ0xvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGlu
Z0xvYWQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVENDQyQTU1MTZENTg1NjcwMEFDMzMzMSAvKiBQbHVnaW5TZXJ2aWNl
LmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueG1sOyBwYXRoID0gUGx1Z2luU2VydmljZS5lbnRpdGxlbWVudHM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQUQ3M0YxMTE2RkY5MEMwMEVFNTM5NiAvKiBCYXNl
VGFyZ2V0LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2VUYXJn
ZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NDZBODI5MTMwMDAx
NjQwMDBDRUIxQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlUmVz
b3VyY2VMb2FkQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxODQs
NiArNTE4Niw3IEBACiAJCTUxMENDN0RBMTYxMzhFMDEwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vz
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNFODVC
MUYxQzg4RTY0MzAwNzBCRkNFIC8qIFBpbmdMb2FkLmggKi8sCiAJCQkJNUNCQzlCODkxQzY1MjRB
NTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovLAogCQkJCTVDMTQyNkYyMUMyM0Y4MkQw
MEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbHMgKi8sCiAJCQkJNUMxNDI2RjExQzIzRjgxNzAwRDQx
MTgzIC8qIERvd25sb2FkcyAqLywKQEAgLTcxMjIsNiArNzEyNSw3IEBACiAJCQkJMkRFQUM1Q0Yx
QUMzNjhCQjAwQTE5NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RTdBOTQ0QTFCQkQ5N0MzMDA5NDU1NDcgLyogX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRTBCOEE3QTFCQzU5QTU5MDA0NEIzMkQgLyogX1dLRm9ybURlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0U4NUIyMDFDODhFNjRCMDA3MEJGQ0UgLyogUGluZ0xv
YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QTY0RTU3MThGMzhGNDYwMEVCMzBGMSAvKiBfV0tG
b3JtSW5wdXRTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzNEMTIyMzE4QTQ3MzAxMDA2
NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3M0QxMjI3MThB
NDczRjYwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272833</attachid>
            <date>2016-03-03 22:01:23 -0800</date>
            <delta_ts>2016-03-04 09:56:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154984-20160303220108.patch</filename>
            <type>text/plain</type>
            <size>10751</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzUzOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE2LTAzLTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIE5ldHdv
cmtTZXNzaW9uIGZvciBwaW5ncyB3aGVuIHVzaW5nIE5ldHdvcmtTZXNzaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ5ODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwg
d2Ugd2VyZSB1c2luZyBOU1VSTENvbm5lY3Rpb24gZm9yIHBpbmdzIHdoZW4gdGhlIHJlc3Qgb2Yg
dGhlIGxvYWRpbmcgd2FzIGJlaW5nIAorICAgICAgICBkb25lIHdpdGggTlNVUkxTZXNzaW9uLiAg
VG8gZml4IHRoaXMsIEkgaW1wbGVtZW50ZWQgUGluZ0xvYWQsIHdoaWNoIGlzIHRoZSBOZXR3b3Jr
U2Vzc2lvbiBlcXVpdmFsZW50CisgICAgICAgIG9mIFBpbmdIYW5kbGUuCisKKyAgICAgICAgVGhp
cyBmaXhlcyBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQt
c3RhdHVzLWNvZGUtemVyby13aGVuLXVzaW5nLWh0dHBzLmh0bWwKKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvYWRQaW5nKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlm
aWVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OlBpbmdMb2FkKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xv
YWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xv
YWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9h
ZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkQ29tcGxl
dGVXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkQmVjb21lRG93bmxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkU2VuZERhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQaW5nTG9hZDo6d2FzQmxvY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2Fk
OjpjYW5ub3RTaG93VVJMKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OnRpbWVvdXRUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6On5QaW5nTG9hZCk6CisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTAzLTAzICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ugc3RkOjpt
YWtlX3VuaXF1ZTw+IHdoZW4gY3JlYXRpbmcgc3RkOjp1bmlxdWVfcHRyPD4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5NzUzOCkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25J
RC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9O
KQorI2luY2x1ZGUgIlBpbmdMb2FkLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTMyLDggKzEzNiwxMyBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2FkCiB7CiAgICAgUmVmUHRyPE5ldHdvcmtpbmdD
b250ZXh0PiBjb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShsb2FkUGFy
YW1ldGVycy5zZXNzaW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QpOwogCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICAvLyBQ
aW5nTG9hZCBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0
cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KKyAgICBuZXcgUGluZ0xvYWQobG9hZFBhcmFt
ZXRlcnMpOworI2Vsc2UKICAgICAvLyBQaW5nSGFuZGxlIG1hbmFnZXMgaXRzIG93biBsaWZldGlt
ZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4gaXRzIHB1cnBvc2UgaGFzIGJlZW4gZnVsZmlsbGVkLgog
ICAgIG5ldyBQaW5nSGFuZGxlKGNvbnRleHQuZ2V0KCksIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3Qs
IGxvYWRQYXJhbWV0ZXJzLmFsbG93U3RvcmVkQ3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVk
ZW50aWFscywgUGluZ0hhbmRsZTo6VXNlc0FzeW5jQ2FsbGJhY2tzOjpZZXMpOworI2VuZGlmCiB9
CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlm
aWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGluZ0xvYWRfaAorI2RlZmluZSBQaW5nTG9hZF9o
CisKKyNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tl
ci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGluZ0xvYWQgOiBwdWJsaWMgTmV0
d29ya0RhdGFUYXNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBQaW5nTG9hZChjb25zdCBOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICAgICAgOiBtX3RpbWVvdXRU
aW1lcigqdGhpcywgJlBpbmdMb2FkOjp0aW1lb3V0VGltZXJGaXJlZCkKKyAgICB7CisgICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lv
bihwYXJhbWV0ZXJzLnNlc3Npb25JRCkpIHsKKyAgICAgICAgICAgIG1fdGFzayA9IE5ldHdvcmtE
YXRhVGFzazo6Y3JlYXRlKCpuZXR3b3JrU2Vzc2lvbiwgKnRoaXMsIHBhcmFtZXRlcnMucmVxdWVz
dCwgcGFyYW1ldGVycy5hbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBwYXJhbWV0ZXJzLmNvbnRlbnRT
bmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0KTsKKyAgICAgICAgICAgIG1fdGFzay0+cmVzdW1lKCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgLy8gSWYgdGhl
IHNlcnZlciBuZXZlciByZXNwb25kcywgdGhpcyBvYmplY3Qgd2lsbCBoYW5nIGFyb3VuZCBmb3Jl
dmVyLgorICAgICAgICAvLyBTZXQgYSB2ZXJ5IGdlbmVyb3VzIHRpbWVvdXQsIGp1c3QgaW4gY2Fz
ZS4KKyAgICAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KDYwMDAwKTsKKyAgICB9Cisg
ICAgCitwcml2YXRlOgorICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICBkZWxldGUg
dGhpczsKKyAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwsIHsgfSk7CisgICAg
ICAgIGRlbGV0ZSB0aGlzOworICAgIH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdv
cmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmUpOwor
ICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSAgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlIHsgZGVsZXRlIHRoaXM7IH0KKyAgICB2b2lkIGRpZEJlY29t
ZURvd25sb2FkKCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQg
ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNF
eHBlY3RlZFRvU2VuZCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZv
aWQgd2FzQmxvY2tlZCgpIG92ZXJyaWRlIHsgZGVsZXRlIHRoaXM7IH0KKyAgICB2b2lkIGNhbm5v
dFNob3dVUkwoKSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9CisKKyAgICB2b2lkIHRpbWVvdXRU
aW1lckZpcmVkKCkgeyBkZWxldGUgdGhpczsgfQorICAgIAorICAgIHZpcnR1YWwgflBpbmdMb2Fk
KCkKKyAgICB7CisgICAgICAgIGlmIChtX3Rhc2spCisgICAgICAgICAgICBtX3Rhc2stPmNhbmNl
bCgpOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7Cisg
ICAgV2ViQ29yZTo6VGltZXIgbV90aW1lb3V0VGltZXI7Cit9OworCit9CisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTk3NTM4KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI0LDYgKzEwMjQsNyBAQAogCQk1
Qzg1Qzc4ODFDM0YyM0NFMDA2MUE0RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDODVDNzg2MUMzRjIzQzUwMDYx
QTRGQSAvKiBQZW5kaW5nRG93bmxvYWQuY3BwICovOyB9OwogCQk1Q0JDOUI4RDFDNjUyNzlDMDBB
OEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyogTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0gKi87IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRDRiAvKiBO
ZXR3b3JrRGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLzsg
fTsKKwkJNUNFODVCMjAxQzg4RTY0QjAwNzBCRkNFIC8qIFBpbmdMb2FkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U4NUIxRjFDODhFNjQzMDA3MEJG
Q0UgLyogUGluZ0xvYWQuaCAqLzsgfTsKIAkJNjUwMUJEMUExMkYxMjQzNDAwRTlGMjQ4IC8qIFdL
QnVuZGxlSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1Qjg2RjE3MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5j
cHAgKi87IH07CiAJCTY1OUM1NTFFMTMwMDA2NDEwMDI1QzBDMiAvKiBJbmplY3RlZEJ1bmRsZVBh
Z2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU0NkE4MjkxMzAwMDE2NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxl
UGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgKi87IH07CiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3
REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5z
cGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTMwMjAsNiArMzAyMSw3IEBACiAJCTVDODVDNzg2MUMzRjIzQzUwMDYxQTRGQSAvKiBQZW5k
aW5nRG93bmxvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGVu
ZGluZ0Rvd25sb2FkLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4OTFDNjUy
NEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE5ldHdvcmtEYXRhVGFzay5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5QjhCMUM2NTI1
NzMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5ldHdvcmtEYXRhVGFza0NvY29hLm1tOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDRTg1QjFGMUM4OEU2NDMwMDcwQkZDRSAvKiBQaW5nTG9hZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQaW5nTG9hZC5oOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ0NDJB
NTUxNkQ1ODU2NzAwQUMzMzMxIC8qIFBsdWdpblNlcnZpY2UuZW50aXRsZW1lbnRzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54bWw7IHBhdGgg
PSBQbHVnaW5TZXJ2aWNlLmVudGl0bGVtZW50czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNURBRDczRjExMTZGRjkwQzAwRUU1Mzk2IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0NkE4MjkxMzAwMDE2NDAwMENFQjFDIC8qIEluamVjdGVk
QnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE4NCw2ICs1MTg2LDcgQEAKIAkJNTEwQ0M3
REExNjEzOEUwMTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0UgLyog
UGluZ0xvYWQuaCAqLywKIAkJCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0Rh
dGFUYXNrLmggKi8sCiAJCQkJNUMxNDI2RjIxQzIzRjgyRDAwRDQxMTgzIC8qIEN1c3RvbVByb3Rv
Y29scyAqLywKIAkJCQk1QzE0MjZGMTFDMjNGODE3MDBENDExODMgLyogRG93bmxvYWRzICovLApA
QCAtNzEyMiw2ICs3MTI1LDcgQEAKIAkJCQkyREVBQzVDRjFBQzM2OEJCMDBBMTk1RDggLyogX1dL
RmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFN0E5NDRBMUJCRDk3QzMwMDk0NTU0
NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFMEI4QTdB
MUJDNTlBNTkwMDQ0QjMyRCAvKiBfV0tGb3JtRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTVDRTg1QjIwMUM4OEU2NEIwMDcwQkZDRSAvKiBQaW5nTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzdBNjRFNTcxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTM3M0QxMjIzMThBNDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzczRDEyMjcxOEE0NzNGNjAwNjZEOUNDIC8qIF9XS0Zy
YW1lSGFuZGxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAo=
</data>
<flag name="review"
          id="297601"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>