<?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>229769</bug_id>
          
          <creation_ts>2021-09-01 14:12:27 -0700</creation_ts>
          <short_desc>[ BigSur arm64 Debug EWS ] ASSERTION FAILED: m_uncommittedState.state == State::Provisional</short_desc>
          <delta_ts>2021-09-03 12:02:12 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac (Apple Silicon)</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229880</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>ayumi_kojima</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1789476</commentid>
    <comment_count>0</comment_count>
    <who name="">ayumi_kojima</who>
    <bug_when>2021-09-01 14:12:27 -0700</bug_when>
    <thetext>imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-submit-children.html 

Is a flaky crash on macOS-AppleSilicon-Big-Sur-Debug-WK2-Tests-EWS.

It appears that it has crashed one time in the open source directory: https://results.webkit.org/?suite=layout-tests&amp;test=imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-submit-children.html

On EWS, it started being flaky at https://ews-build.webkit.org/#/builders/60/builds/11011

ASSERTION FAILED: m_uncommittedState.state == State::Provisional
/Volumes/Data/worker/macOS-AppleSilicon-Big-Sur-Debug-Build-EWS/build/Source/WebKit/UIProcess/PageLoadState.cpp(325) : void WebKit::PageLoadState::didCommitLoad(const Transaction::Token &amp;, WebKit::WebCertificateInfo &amp;, bool, bool)
1   0x100b2ebec WTFCrash
2   0x109750f88 std::__1::optional&lt;JSC::JSValue&gt;::optional&lt;JSC::JSValue, 0&gt;(JSC::JSValue&amp;&amp;)
3   0x10abf9324 WebKit::PageLoadState::didCommitLoad(WebKit::PageLoadState::Transaction::Token const&amp;, WebKit::WebCertificateInfo&amp;, bool, bool)
4   0x10ad5eefc WebKit::WebPageProxy::didCommitLoadForFrame(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, unsigned long long, WTF::String const&amp;, bool, WebCore::FrameLoadType, WebCore::CertificateInfo const&amp;, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData const&amp;)
5   0x10ad5e5a0 WebKit::WebPageProxy::commitProvisionalPage(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, unsigned long long, WTF::String const&amp;, bool, WebCore::FrameLoadType, WebCore::CertificateInfo const&amp;, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData const&amp;)
6   0x10ac00a18 WebKit::ProvisionalPageProxy::didCommitLoadForFrame(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, unsigned long long, WTF::String const&amp;, bool, WebCore::FrameLoadType, WebCore::CertificateInfo const&amp;, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData const&amp;)
7   0x10ac60c4c void IPC::callMemberFunctionImpl&lt;WebKit::ProvisionalPageProxy, void (WebKit::ProvisionalPageProxy::*)(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, unsigned long long, WTF::String const&amp;, bool, WebCore::FrameLoadType, WebCore::CertificateInfo const&amp;, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData const&amp;), std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData, WebCore::ResourceRequest, unsigned long long, WTF::String, bool, WebCore::FrameLoadType, WebCore::CertificateInfo, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData&gt;, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul, 9ul, 10ul, 11ul, 12ul&gt;(WebKit::ProvisionalPageProxy*, void (WebKit::ProvisionalPageProxy::*)(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, unsigned long long, WTF::String const&amp;, bool, WebCore::FrameLoadType, WebCore::CertificateInfo const&amp;, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData const&amp;), std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData, WebCore::ResourceRequest, unsigned long long, WTF::String, bool, WebCore::FrameLoadType, WebCore::CertificateInfo, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul, 9ul, 10ul, 11ul, 12ul&gt;)
8   0x10ac5303c void IPC::callMemberFunction&lt;WebKit::ProvisionalPageProxy, void (WebKit::ProvisionalPageProxy::*)(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, unsigned long long, WTF::String const&amp;, bool, WebCore::FrameLoadType, WebCore::CertificateInfo const&amp;, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData const&amp;), std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData, WebCore::ResourceRequest, unsigned long long, WTF::String, bool, WebCore::FrameLoadType, WebCore::CertificateInfo, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul, 9ul, 10ul, 11ul, 12ul&gt; &gt;(std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData, WebCore::ResourceRequest, unsigned long long, WTF::String, bool, WebCore::FrameLoadType, WebCore::CertificateInfo, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData&gt;&amp;&amp;, WebKit::ProvisionalPageProxy*, void (WebKit::ProvisionalPageProxy::*)(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, unsigned long long, WTF::String const&amp;, bool, WebCore::FrameLoadType, WebCore::CertificateInfo const&amp;, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData const&amp;))
9   0x10ac02e40 void IPC::handleMessage&lt;Messages::WebPageProxy::DidCommitLoadForFrame, WebKit::ProvisionalPageProxy, void (WebKit::ProvisionalPageProxy::*)(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, unsigned long long, WTF::String const&amp;, bool, WebCore::FrameLoadType, WebCore::CertificateInfo const&amp;, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData const&amp;)&gt;(IPC::Decoder&amp;, WebKit::ProvisionalPageProxy*, void (WebKit::ProvisionalPageProxy::*)(WTF::ObjectIdentifier&lt;WebCore::FrameIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, unsigned long long, WTF::String const&amp;, bool, WebCore::FrameLoadType, WebCore::CertificateInfo const&amp;, bool, bool, std::__1::optional&lt;WebCore::HasInsecureContent&gt;, WebCore::MouseEventPolicy, WebKit::UserData const&amp;))
10  0x10ac021e4 WebKit::ProvisionalPageProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
11  0x109adfeac IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
12  0x10ab9dc8c WebKit::AuxiliaryProcessProxy::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
13  0x10ae94a3c WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
14  0x109587ff8 IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
15  0x109588740 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
16  0x109586d40 IPC::Connection::dispatchIncomingMessages()
17  0x1095ab52c IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_12::operator()()
18  0x1095ab434 WTF::Detail::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_12, void&gt;::call()
19  0x100b58894 WTF::Function&lt;void ()&gt;::operator()() const
20  0x100bdf91c WTF::RunLoop::performWork()
21  0x100be46e8 WTF::RunLoop::performWork(void*)
22  0x18c0caad4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
23  0x18c0caa20 __CFRunLoopDoSource0
24  0x18c0ca70c __CFRunLoopDoSources0
25  0x18c0c9094 __CFRunLoopRun
26  0x18c0c85e8 CFRunLoopRunSpecific
27  0x18ce71688 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
28  0x1004674ac WTR::TestController::platformRunUntil(bool&amp;, WTF::Seconds)
29  0x10041da68 WTR::TestController::runUntil(bool&amp;, WTF::Seconds)
30  0x10049336c WTR::TestInvocation::invoke()
31  0x100425008 WTR::TestController::runTest(char const*)
LEAK: 2 WebFrame
LEAK: 8 RenderObject
LEAK: 1 Page
LEAK: 2 Frame
LEAK: 4 CachedResource
LEAK: 26 WebCoreNode
LEAK: 1 WebPage
LEAK: 2 WebFrame
LEAK: 8 RenderObject
LEAK: 1 Page
LEAK: 2 Frame
LEAK: 4 CachedResource
LEAK: 26 WebCoreNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789477</commentid>
    <comment_count>1</comment_count>
    <who name="">ayumi_kojima</who>
    <bug_when>2021-09-01 14:20:42 -0700</bug_when>
    <thetext>First crash in the open source directory is at r281832</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789480</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-01 14:21:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/82645706&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789482</commentid>
    <comment_count>3</comment_count>
    <who name="">ayumi_kojima</who>
    <bug_when>2021-09-01 14:25:35 -0700</bug_when>
    <thetext>Marked test expectations: https://trac.webkit.org/changeset/281876/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789510</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-01 15:43:47 -0700</bug_when>
    <thetext>Doesn&apos;t seem to reproduce easily for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789517</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-01 16:11:06 -0700</bug_when>
    <thetext>I really wish I was able to reproduce this. Based on the crash trace, we can tell the UIProcess is crashing when committing the load in the new process, after a process-swap. It is impossible to tell if the process-swap was due to PSON or COOP but since this is a recent regression, COOP may be more likely.

The reason we hit the assertion is that the WebPageProxy doesn&apos;t think a provisional load is going on when the load gets committed. This could be because:
1. The UIProcess did not receive the DidStartProvisionalLoad IPC before the DidCommitLoad IPC
2. The UIProcess got a DidFailProvisionalLoad IPC before the DidCommitLoad IPC
3. PageLoadState::reset() was called between the DidStartProvisionalLoad IPC and the DidCommitLoad IPC

The expected behavior when doing a COOP process-swap is:
1. Process A sends a DidStartProvisionalLoad IPC to the UIProcess
2. Process A send DecidePolicyForResponse IPC to the UIProcess and we decide to process-swap due to COOP header
3. The UIProcess responds with PolicyAction::Ignore for the DecidePolicyForResponse IPC to Process A. This causes process A to send back a DidFailProvisionalLoad IPC but it gets ignored in WebPageProxy::didFailProvisionalLoadForFrame() (early return).
4. The UIProcess launches a new Process B and creates a ProvisionalPageProxy and starts the load in this new process / page.
5. Process B doesn&apos;t send a DidStartProvisionalLoad IPC to the UIProcess because we have a check in WebPageLoadClient::didStartProvisionalLoadForFrame() and we are continuing a load after the response policy.
6. Process B sends a DidCommitLoad IPC to the UIProcess.

At step 6, the UIProcess should be in provisional load state since it got a DidStartProvisionalLoad from process A and nothing should have changed the state in between. This works in general and we have API tests covering this. However, something seems to go wrong in the layout tests in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789521</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-01 16:24:34 -0700</bug_when>
    <thetext>The check to discard the DidFailProvisionalLoad IPC from the previous process after a swap looks like so:
```
void WebPageProxy::didFailProvisionalLoadForFrame(FrameIdentifier frameID, FrameInfoData&amp;&amp; frameInfo, WebCore::ResourceRequest&amp;&amp; request, uint64_t navigationID, const String&amp; provisionalURL, const ResourceError&amp; error, WillContinueLoading willContinueLoading, const UserData&amp; userData)
{
    if (m_provisionalPage &amp;&amp; m_provisionalPage-&gt;navigationID() == navigationID) {
        // The load did not fail, it is merely happening in a new provisional process.
        return;
    }
```

It is a bit fragile. I worry, process A could be sending us a didFailProvisionalLoadForFrame with a navigationID that is 0 or not the navigationID of the provisional frame for some reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789548</commentid>
    <comment_count>7</comment_count>
      <attachid>437090</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-01 17:20:21 -0700</bug_when>
    <thetext>Created attachment 437090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789919</commentid>
    <comment_count>8</comment_count>
      <attachid>437090</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-02 15:08:22 -0700</bug_when>
    <thetext>Comment on attachment 437090
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4788
&gt; +    if (m_provisionalPage &amp;&amp; frame-&gt;isMainFrame()) {
&gt;          // The load did not fail, it is merely happening in a new provisional process.

Can a provisional navigation fail in the new process before m_provisionalPage is cleared?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789922</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-02 15:11:33 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #8)
&gt; Comment on attachment 437090 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=437090&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4788
&gt; &gt; +    if (m_provisionalPage &amp;&amp; frame-&gt;isMainFrame()) {
&gt; &gt;          // The load did not fail, it is merely happening in a new provisional process.
&gt; 
&gt; Can a provisional navigation fail in the new process before
&gt; m_provisionalPage is cleared?

A few things:
1. didFailProvisionalLoadForFrame() only gets called due to IPC from the currently committed process. It is didFailProvisionalLoadForFrameShared() that may get called due to IPC from either the committed or the provisional process.
2. didFailProvisionalLoadForFrameShared() has logic to clear m_provisionalPage if the provisional load fails in the provisional process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789958</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-02 16:13:29 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 437090 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789962</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-02 16:21:34 -0700</bug_when>
    <thetext>Committed r281964 (241271@main): &lt;https://commits.webkit.org/241271@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790270</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-03 12:02:12 -0700</bug_when>
    <thetext>*** Bug 229880 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437090</attachid>
            <date>2021-09-01 17:20:21 -0700</date>
            <delta_ts>2021-09-02 16:13:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229769-20210901172020.patch</filename>
            <type>text/plain</type>
            <size>12626</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmNTNiN2NmNTJmMTk2YTQ2
MTMxMWZmNzc3MzFjZDExODczOWYwN2UuLjU1OTg2MGI0YmUyYzRlODkzZGJlODAyMTM2YmIxMWNm
NDllODk0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDktMDEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbIEJpZ1N1ciBhcm02NCBEZWJ1ZyBF
V1MgXSBBU1NFUlRJT04gRkFJTEVEOiBtX3VuY29tbWl0dGVkU3RhdGUuc3RhdGUgPT0gU3RhdGU6
OlByb3Zpc2lvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjk3NjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyNjQ1NzA2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgYW0gdW5hYmxlIHRvIHJl
cHJvZHVjZSB0aGUgY3Jhc2ggYnV0IHdlIGtub3cgdGhhdCB3ZSdyZSBjcmFzaGluZyB3aGVuIGNv
bW1pdHRpbmcgdGhlIGxvYWQKKyAgICAgICAgYWZ0ZXIgYSBwcm9jZXNzLXN3YXAsIGJlY2F1c2Ug
dGhlIFdlYlBhZ2VQcm94eSBkb2Vzbid0IGtub3cgdGhhdCBhIHByb3Zpc2lvbmFsIGxvYWQgaXMg
Z29pbmcKKyAgICAgICAgb24uIE9uZSBwb3NzaWJsZSBleHBsYW5hdGlvbiBmb3IgdGhpcywgYW5k
IHRoZSBtb3N0IGxpa2VseSBvbmUgaXMgdGhhdCB0aGUgV2ViUGFnZVByb3h5IGdvdAorICAgICAg
ICBhIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSBJUEMgZnJvbSB0aGUgY3VycmVudCBw
cm9jZXNzIHdoaWxlIHRoZSBwcm92aXNpb25hbCBsb2FkIGlzCisgICAgICAgIHByb2NlZWRpbmcg
aW4gdGhlIG5ldyBwcm92aXNpb25hbCBwcm9jZXNzLiBXZSBoYWQgbG9naWMgaW4gV2ViUGFnZVBy
b3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKQorICAgICAgICB0byB0cnkgYW5k
IGRpc2NhcmQgc3VjaCBJUEMgYnV0IHRoZSBjaGVjayB3YXMgcmVseWluZyBvbiB0aGUgbmF2aWdh
dGlvbklEIGFuZCB3YXMgdGhlcmVmb3JlCisgICAgICAgIGZyYWdpbGUuIEkgdXBkYXRlZCB0aGUg
Y2hlY2sgaW4gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCkgdG8gaWdub3JlIGFsbAor
ICAgICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgSVBDcyBmb3IgdGhlIG1haW4g
ZnJhbWUgZnJvbSB0aGUgY3VycmVudCBwcm9jZXNzIHdoZW4gdGhlcmUKKyAgICAgICAgaXMgYSBQ
cm92aXNpb25hbFBhZ2VQcm94eSwgd2l0aG91dCByZWx5aW5nIG9uIHRoZSBuYXZpZ2F0aW9uSUQu
IFRoaXMgc2hvdWxkIGJlIG1vcmUgcm9idXN0CisgICAgICAgIGFuZCB3aWxsIGhvcGVmdWxseSBm
aXggdGhpcyBmbGFreSBjcmFzaC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVuc2tpcHBlZCBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisKIDIwMjEtMDktMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2ViUlRDXSBMZWFrIG9yIG92ZXItcmVsZWFzZSBvZiBDRlBpeGVsQnVmZmVy
UmVmIHJldHVybmVkIGZyb20gd2VicnRjOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5k
ZXggM2RiYWJiMWM3MTNhYjk4MjYxMGFhY2I4Njg3NzE0MTU3N2VmOGM3ZC4uMmExZWVhZjEwNDY2
ZWNiOWM2N2FjYzgwYWIxMGZjNDJhMmI3NzQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMjg4LDcgKzI4OCwxMCBAQCB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSQogICAgIGlmIChhdXRvKiBwYWdlTWFpbkZyYW1lID0gbV9wYWdl
Lm1haW5GcmFtZSgpKQogICAgICAgICBwYWdlTWFpbkZyYW1lLT5kaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKCk7CiAKLSAgICBtX3BhZ2UuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92
ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250
aW51ZUxvYWRpbmcsIHVzZXJEYXRhKTsgLy8gTWF5IGRlbGV0ZSB8dGhpc3wuCisgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOworICAgIE1FU1NB
R0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CisKKyAgICBtX3BhZ2UuZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92
ZShmcmFtZUluZm8pLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFs
VVJMLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOyAvLyBNYXkgZGVsZXRl
IHx0aGlzfC4KIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZv
ckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIFdl
YkNvcmU6OkZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5
IG1vdXNlRXZlbnRQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGMzM2NmZTQ0ZDYxMjI4ZDgwNGU0MzI1
MjU5ZWUxMzVjMmQ3OTc5MzcuLjJmZTkzYTU5MTU2ZThiMGU2OTg3YzA4ODU1ZDNkMGFkMzI5Yzgw
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDc4MSwz
NyArNDc4MSwzNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxG
b3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVS
TCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENv
bnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGlmIChtX3By
b3Zpc2lvbmFsUGFnZSAmJiBtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCkgPT0gbmF2
aWdhdGlvbklEKSB7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZy
YW1lKGZyYW1lSUQpOworICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CisKKyAg
ICBpZiAobV9wcm92aXNpb25hbFBhZ2UgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAg
ICAgLy8gVGhlIGxvYWQgZGlkIG5vdCBmYWlsLCBpdCBpcyBtZXJlbHkgaGFwcGVuaW5nIGluIGEg
bmV3IHByb3Zpc2lvbmFsIHByb2Nlc3MuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwg
ZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9u
SUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEp
OworICAgIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29w
eVJlZigpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2
aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVz
ZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
cHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVM
b2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVM
b2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIo
TG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdlYiBwcm9jZXNzIHBpZCAlaSBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlzaW9uYWxVUkwgJXMiLCBtX2lk
ZW50aWZpZXIudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlz
aW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7Ci0gICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VS
Uk9SKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIg
UFJJdTY0ICIsIGRvbWFpbj0lcywgY29kZT0lZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJyb3Iu
ZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCAiLCBkb21haW49JXMsIGNvZGU9JWQiLCBmcmFtZS5m
cmFtZUlEKCkudG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3Iu
ZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNs
aWVudCgpKTsKIAotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vzcy0+d2ViRnJhbWUo
ZnJhbWVJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhwcm9jZXNzLCBmcmFtZSk7Ci0KICAgICBpZiAo
bV9jb250cm9sbGVkQnlBdXRvbWF0aW9uKSB7CiAgICAgICAgIGlmIChhdXRvKiBhdXRvbWF0aW9u
U2Vzc2lvbiA9IHByb2Nlc3MtPnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKLSAg
ICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT5uYXZpZ2F0aW9uT2NjdXJyZWRGb3JGcmFtZSgq
ZnJhbWUpOworICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPm5hdmlnYXRpb25PY2N1cnJl
ZEZvckZyYW1lKGZyYW1lKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1lc3Nh
Z2UgY2hlY2sgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3Vy
cmVudGx5IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgYmFjay9mb3J3YXJk
IGNhY2hlLgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb247Ci0gICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKKyAgICBpZiAoZnJhbWUuaXNN
YWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5hdmlnYXRpb24gPSBuYXZpZ2F0
aW9uU3RhdGUoKS50YWtlTmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCiAgICAgYXV0byB0cmFu
c2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCi0gICAgaWYgKGZyYW1l
LT5pc01haW5GcmFtZSgpKSB7CisgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAg
ICAgcmVwb3J0UGFnZUxvYWRSZXN1bHQoZXJyb3IpOwogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUu
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCh0cmFuc2FjdGlvbik7CiAgICAgICAgIHBhZ2VDbGllbnQo
KS5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKCk7CkBAIC00ODE5LDcgKzQ4MTks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcAogICAgICAgICAgICAgbmF2aWdhdGlvbi0+c2V0
Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KG51bGxwdHIpOwogICAgIH0KIAotICAgIGZyYW1lLT5k
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKCk7CisgICAgZnJhbWUuZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZCgpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKIApAQCAtNDgyNyw3
ICs0ODI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHAKICAgICBtX2ZhaWxpbmdQcm92aXNp
b25hbExvYWRVUkwgPSBwcm92aXNpb25hbFVSTDsKIAogICAgIGlmIChtX2xvYWRlckNsaWVudCkK
LSAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JG
b3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAg
ICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZy
YW1lKCp0aGlzLCBmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIHByb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICBlbHNl
IHsKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uV2l0aEVycm9yKCp0aGlzLCBGcmFtZUluZm9EYXRhIHsgZnJhbWVJbmZvIH0sIG5hdmlnYXRp
b24uZ2V0KCksIGVycm9yLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJE
YXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBlcnJvciwgV1RGTW92ZShmcmFtZUluZm8pKTsKQEAgLTQ4MzYsNyArNDgzNiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwCiAgICAgbV9mYWlsaW5nUHJvdmlzaW9uYWxMb2FkVVJMID0geyB9
OwogCiAgICAgLy8gSWYgdGhlIHByb3Zpc2lvbmFsIHBhZ2UncyBsb2FkIGZhaWxzIHRoZW4gd2Ug
ZGVzdHJveSB0aGUgcHJvdmlzaW9uYWwgcGFnZS4KLSAgICBpZiAobV9wcm92aXNpb25hbFBhZ2Ug
JiYgbV9wcm92aXNpb25hbFBhZ2UtPm1haW5GcmFtZSgpID09IGZyYW1lICYmIHdpbGxDb250aW51
ZUxvYWRpbmcgPT0gV2lsbENvbnRpbnVlTG9hZGluZzo6Tm8pCisgICAgaWYgKG1fcHJvdmlzaW9u
YWxQYWdlICYmIG1fcHJvdmlzaW9uYWxQYWdlLT5tYWluRnJhbWUoKSA9PSAmZnJhbWUgJiYgd2ls
bENvbnRpbnVlTG9hZGluZyA9PSBXaWxsQ29udGludWVMb2FkaW5nOjpObykKICAgICAgICAgbV9w
cm92aXNpb25hbFBhZ2UgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGUyYjlkMWI2M2FkYTI2MmUwNWRkMTdkMjk1MzQ5MmFhYzk5N2E3ZjMu
LjRhYmRhYzRiOGJiMWFjOTU4MmUxOGZhZjM4MTMxNTk4YmJhNmM2ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNzM2LDcgKzE3MzYsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBMb2dpYyBzaGFyZWQgYmV0d2VlbiB0aGUgV2ViUGFnZVByb3h5IGFuZCB0aGUgUHJv
dmlzaW9uYWxQYWdlUHJveHkuCiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRh
Jik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRh
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZv
aWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9u
YWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGlu
dWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlk
UGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3Ry
aW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVu
dFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZkODg4OTIzOTVkMzVjZDExYWE1ZDA4NGJhZjQ4
ZDZhOTI4NjI4MGQuLjQzNGRkODU5ODNlOTc4ZTI3YzA1YjllYWVmNjc4OTdkNjE4Yzg1Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wOS0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFsgQmlnU3VyIGFybTY0IERlYnVnIEVXUyBdIEFTU0VSVElPTiBG
QUlMRUQ6IG1fdW5jb21taXR0ZWRTdGF0ZS5zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTc2OQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODI2NDU3MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVW5za2lwIHRlc3QgdGhhdCBzaG91bGQgbm8gbG9uZ2Vy
IGJlIGZsYWtpbHkgY3Jhc2hpbmcgaW4gZGVidWcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDktMDEgIEF5dW1pIEtvamltYSAgPGF5dW1p
X2tvamltYUBhcHBsZS5jb20+CiAKICAgICAgICAgWyBCaWdTdXIgYXJtNjQgRGVidWcgRVdTIF0g
QVNTRVJUSU9OIEZBSUxFRDogbV91bmNvbW1pdHRlZFN0YXRlLnN0YXRlID09IFN0YXRlOjpQcm92
aXNpb25hbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBkZjE0MDdjZjY4OGNiYmEzNzMzNjE3MDNlMjQ2MDAxNzczYTUyMTZhLi44OGE4OWZl
MmY4MGZiMWQ1Yjc4MTc2ZWRhZTc4NmY1YTBmN2I3MmZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC03NzgsOCArNzc4LDYgQEAgd2Via2l0
Lm9yZy9iLzE2ODA2NSBpbnNwZWN0b3IvdW5pdC10ZXN0cy9oZWFwLXNuYXBzaG90Lmh0bWwgWyBQ
YXNzIEZhaWx1cmUgVGltZW8KIAogd2Via2l0Lm9yZy9iLzE2ODIzNSBbIERlYnVnIF0gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy90ZXh0LWxldmVsLXNlbWFu
dGljcy90aGUtYS1lbGVtZW50L2EtZG93bmxvYWQtY2xpY2suaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiAKLXdlYmtpdC5vcmcvYi8yMjk3NjkgWyBCaWdTdXIgYXJtNjQgRGVidWcgXSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1idXR0b24tZWxl
bWVudC9idXR0b24tc3VibWl0LWNoaWxkcmVuLmh0bWwgWyBQYXNzIENyYXNoIF0KLQogd2Via2l0
Lm9yZy9iLzE2ODA4NSB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9sYXRjaGVkLXRvLWRlbGV0ZWQt
bm9kZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyBTa2lwcGVkIGJlY2F1c2UgTWFjIGRvZXNu
J3QgaGF2ZSBhIGtleSB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUKQEAgLTE2NDksNCArMTY0Nyw0
IEBAIHdlYmtpdC5vcmcvYi8yMjk3MzYgZmFzdC9oaWRwaS9pbWFnZS1zcmNzZXQtc3ZnLWNhbnZh
cy0yeC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIyOTc2NCBhbmltYXRp
b25zL2JhY2tncm91bmQtcG9zaXRpb24uaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAK
LXdlYmtpdC5vcmcvYi8yMjgyMDkgZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25p
dGlvbi1hZnRlci1ndW0uaHRtbCBbIFNsb3cgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
K3dlYmtpdC5vcmcvYi8yMjgyMDkgZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25p
dGlvbi1hZnRlci1ndW0uaHRtbCBbIFNsb3cgXQo=
</data>
<flag name="review"
          id="460239"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="460326"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>