<?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>191781</bug_id>
          
          <creation_ts>2018-11-16 15:20:26 -0800</creation_ts>
          <short_desc>[PSON] ASSERTION FAILED: m_uncommittedState.state == State::Committed</short_desc>
          <delta_ts>2019-01-24 13:46:27 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</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=193740</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>
          <dependson>191795</dependson>
    
    <dependson>191797</dependson>
          <blocked>191761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1479675</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-16 15:20:26 -0800</bug_when>
    <thetext>Some ProcessSwap API tests are crashing in debug since enabling process prewiring by default in r238294:
Crashed

    TestWebKitAPI.ProcessSwap.PageShowHide
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        Received data during response processing, queuing it.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        Received data during response processing, queuing it.
        ASSERTION FAILED: m_uncommittedState.state == State::Committed
        /Volumes/Data/slave/mojave-debug/build/Source/WebKit/UIProcess/PageLoadState.cpp(298) : void WebKit::PageLoadState::didFinishLoad(const Transaction::Token &amp;)
        1   0x10ab2cb59 WTFCrash
        2   0x10f96095b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x11002d4dd WebKit::PageLoadState::didFinishLoad(WebKit::PageLoadState::Transaction::Token const&amp;)
        4   0x11020a1bf WebKit::WebPageProxy::didFinishLoadForFrame(unsigned long long, unsigned long long, WebKit::UserData const&amp;)
        5   0x110b2efee void IPC::callMemberFunctionImpl&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;), std::__1::tuple&lt;unsigned long long, unsigned long long, WebKit::UserData&gt;, 0ul, 1ul, 2ul&gt;(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;), std::__1::tuple&lt;unsigned long long, unsigned long long, WebKit::UserData&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul&gt;)
        6   0x110b2ed10 void IPC::callMemberFunction&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;), std::__1::tuple&lt;unsigned long long, unsigned long long, WebKit::UserData&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul&gt; &gt;(std::__1::tuple&lt;unsigned long long, unsigned long long, WebKit::UserData&gt;&amp;&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;))
        7   0x110b0b9ab void IPC::handleMessage&lt;Messages::WebPageProxy::DidFinishLoadForFrame, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WebKit::UserData const&amp;))
        8   0x110b00f18 WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
        9   0x10fa0fdca IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
        10  0x10ffecb84 WebKit::ChildProcessProxy::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
        11  0x1102e1e3a WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
        12  0x10f9a7e5c IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
        13  0x10f99a241 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
        14  0x10f9a52b1 IPC::Connection::dispatchIncomingMessages()
        15  0x10f9c9ee6 IPC::Connection::MessagesThrottler::scheduleMessagesDispatch()::$_15::operator()()
        16  0x10f9c9dd9 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;IPC::Connection::MessagesThrottler::scheduleMessagesDispatch()::$_15&gt;::call()
        17  0x10ab5445d WTF::Function&lt;void ()&gt;::operator()() const
        18  0x10abad1d3 WTF::RunLoop::performWork()
        19  0x10abadb64 WTF::RunLoop::performWork(void*)
        20  0x7fff32342f09 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
        21  0x7fff32342eaf __CFRunLoopDoSource0
        22  0x7fff32326d5c __CFRunLoopDoSources0
        23  0x7fff32326303 __CFRunLoopRun
        24  0x7fff32325be6 CFRunLoopRunSpecific
        25  0x7fff346aa3ba -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
        26  0x109d5ebc6 TestWebKitAPI::Util::run(bool*)
        27  0x109bca7ed ProcessSwap_PageShowHide_Test::TestBody()
        28  0x109f2234e void testing::internal::HandleSehExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
        29  0x109ec9d5b void testing::internal::HandleExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
        30  0x109ec9c86 testing::Test::Run()
        31  0x109ecb922 testing::TestInfo::Run()
        2018-11-16 14:18:27.331 com.apple.WebKit.WebContent.Development[94550:12325391] Application does not have the &apos;com.apple.security.network.client&apos; entitlement.

    TestWebKitAPI.WKWebViewMacEditingTests.DoNotCrashWhenInterpretingKeyEventWhileDeallocatingView
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        ASSERTION FAILED: sendRightCount &gt;= 1
        /Volumes/Data/slave/mojave-debug/build/Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm(251) : void WebKit::ProcessLauncher::launchProcess()_block_invoke
        1   0x10762fb59 WTFCrash
        2   0x10c7ee95b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x10d003875 invocation function for block in WebKit::ProcessLauncher::launchProcess()
        4   0x7fff5f7d69b1 _xpc_connection_reply_callout
        5   0x7fff5f7d6938 _xpc_connection_call_reply_async
        6   0x7fff5f552e39 _dispatch_client_callout3
        7   0x7fff5f5693b0 _dispatch_mach_msg_async_reply_invoke
        8   0x7fff5f55de25 _dispatch_main_queue_callback_4CF
        9   0x7fff32327051 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
        10  0x7fff32326763 __CFRunLoopRun
        11  0x7fff32325be6 CFRunLoopRunSpecific
        12  0x7fff346aa3ba -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
        13  0x106863bc6 TestWebKitAPI::Util::run(bool*)
        14  0x106979f55 WKWebViewMacEditingTests_DoNotCrashWhenInterpretingKeyEventWhileDeallocatingView_Test::TestBody()
        15  0x106a2734e void testing::internal::HandleSehExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
        16  0x1069ced5b void testing::internal::HandleExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
        17  0x1069cec86 testing::Test::Run()
        18  0x1069d0922 testing::TestInfo::Run()
        19  0x1069d1fac testing::TestCase::Run()
        20  0x1069eb315 testing::internal::UnitTestImpl::RunAllTests()
        21  0x106a2b54e bool testing::internal::HandleSehExceptionsInMethodIfSupported&lt;testing::internal::UnitTestImpl, bool&gt;(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*)
        22  0x1069ead3b bool testing::internal::HandleExceptionsInMethodIfSupported&lt;testing::internal::UnitTestImpl, bool&gt;(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*)
        23  0x1069eabfc testing::UnitTest::Run()
        24  0x1067b2251 RUN_ALL_TESTS()
        25  0x1067b21e4 TestWebKitAPI::TestsController::run(int, char**)
        26  0x10698927e main
        27  0x7fff5f5a108d start
        28  0x2

    TestWebKitAPI.ProcessSwap.NavigationWithLockedHistoryWithoutPSON
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        Received data during response processing, queuing it.
        Received data during response processing, queuing it.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        ASSERTION FAILED: process-&gt;hasOneRef()
        /Volumes/Data/slave/mojave-debug/build/Source/WebKit/UIProcess/WebProcessPool.cpp(344) : virtual WebKit::WebProcessPool::~WebProcessPool()
        1   0x10cff1b59 WTFCrash
        2   0x11305395b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x1139b0441 WebKit::WebProcessPool::~WebProcessPool()
        4   0x1139b1d35 WebKit::WebProcessPool::~WebProcessPool()
        5   0x113647b8e -[WKProcessPool dealloc]
        6   0x113686cc6 WTF::RetainPtr&lt;WKProcessPool&gt;::~RetainPtr()
        7   0x113686c55 WTF::RetainPtr&lt;WKProcessPool&gt;::~RetainPtr()
        8   0x113686c39 LazyInitialized&lt;WTF::RetainPtr&lt;WKProcessPool&gt; &gt;::~LazyInitialized()
        9   0x11367bfd5 LazyInitialized&lt;WTF::RetainPtr&lt;WKProcessPool&gt; &gt;::~LazyInitialized()
        10  0x11367bebf -[WKWebViewConfiguration .cxx_destruct]
        11  0x7fff5e4d51f5 object_cxxDestructFromClass(objc_object*, objc_class*)
        12  0x7fff5e4cd9f0 objc_destructInstance
        13  0x7fff5e4cd992 object_dispose
        14  0x1136933f6 WTF::RetainPtr&lt;WKWebViewConfiguration&gt;::~RetainPtr()
        15  0x11366fdb5 WTF::RetainPtr&lt;WKWebViewConfiguration&gt;::~RetainPtr()
        16  0x11366fd48 -[WKWebView .cxx_destruct]
        17  0x7fff5e4d51f5 object_cxxDestructFromClass(objc_object*, objc_class*)
        18  0x7fff5e4cd9f0 objc_destructInstance
        19  0x7fff5e4cd992 object_dispose
        20  0x7fff2f970849 -[NSResponder dealloc]
        21  0x7fff2f96ebb4 -[NSView dealloc]
        22  0x113663e6e -[WKWebView dealloc]
        23  0x7fff5e4ce7c2 (anonymous namespace)::AutoreleasePoolPage::pop(void*)
        24  0x7fff322f8d42 _CFAutoreleasePoolPop
        25  0x7fff346c396e -[NSAutoreleasePool drain]
        26  0x10c34b297 main
        27  0x7fff5f5a108d start
        28  0x2

Testing completed, Exit status: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479835</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-16 20:27:14 -0800</bug_when>
    <thetext>I managed to make the assertion a bit more likely to reproduce like so:
diff --git a/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm b/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
index ff3fd087426..7f741e2b199 100644
--- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
+++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
@@ -1969,6 +1969,10 @@ window.addEventListener(&apos;load&apos;, function(event) {
 
 TEST(ProcessSwap, LoadUnload)
 {
+    for (int i=0; i &lt; 30; ++i) {
+    @autoreleasepool {
+    receivedMessages = adoptNS([@[] mutableCopy]);
+
     auto processPoolConfiguration = adoptNS([[_WKProcessPoolConfiguration alloc] init]);
     [processPoolConfiguration setProcessSwapsOnNavigation:YES];
     auto processPool = adoptNS([[WKProcessPool alloc] _initWithConfiguration:processPoolConfiguration.get()]);
@@ -2024,6 +2028,8 @@ TEST(ProcessSwap, LoadUnload)
     EXPECT_WK_STREQ(@&quot;pson://www.webkit.org/main.html - load&quot;, receivedMessages.get()[4]);
     EXPECT_WK_STREQ(@&quot;pson://www.webkit.org/main.html - unload&quot;, receivedMessages.get()[5]);
     EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html - load&quot;, receivedMessages.get()[6]);
+    }
+    }
 }

When it asserts the state is Finished instead of Committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479837</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-16 20:29:17 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #1)
&gt; I managed to make the assertion a bit more likely to reproduce like so:
&gt; diff --git
&gt; a/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
&gt; b/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
&gt; index ff3fd087426..7f741e2b199 100644
&gt; --- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
&gt; +++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
&gt; @@ -1969,6 +1969,10 @@ window.addEventListener(&apos;load&apos;, function(event) {
&gt;  
&gt;  TEST(ProcessSwap, LoadUnload)
&gt;  {
&gt; +    for (int i=0; i &lt; 30; ++i) {
&gt; +    @autoreleasepool {
&gt; +    receivedMessages = adoptNS([@[] mutableCopy]);
&gt; +
&gt;      auto processPoolConfiguration = adoptNS([[_WKProcessPoolConfiguration
&gt; alloc] init]);
&gt;      [processPoolConfiguration setProcessSwapsOnNavigation:YES];
&gt;      auto processPool = adoptNS([[WKProcessPool alloc]
&gt; _initWithConfiguration:processPoolConfiguration.get()]);
&gt; @@ -2024,6 +2028,8 @@ TEST(ProcessSwap, LoadUnload)
&gt;      EXPECT_WK_STREQ(@&quot;pson://www.webkit.org/main.html - load&quot;,
&gt; receivedMessages.get()[4]);
&gt;      EXPECT_WK_STREQ(@&quot;pson://www.webkit.org/main.html - unload&quot;,
&gt; receivedMessages.get()[5]);
&gt;      EXPECT_WK_STREQ(@&quot;pson://www.apple.com/main.html - load&quot;,
&gt; receivedMessages.get()[6]);
&gt; +    }
&gt; +    }
&gt;  }
&gt; 
&gt; When it asserts the state is Finished instead of Committed.

So it means that when didFinishLoad() is called, one of the following has already been called:
- didFinishLoad()
- reset()
- didFailProvisionalLoad()
- didFailLoad()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479843</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-16 20:47:41 -0800</bug_when>
    <thetext>I have also seen this variant:
ASSERTION FAILED: m_uncommittedState.state == State::Provisional
        /Volumes/Data/WebKit/OpenSource/Source/WebKit/UIProcess/PageLoadState.cpp(285) : void WebKit::PageLoadState::didCommitLoad(const Transaction::Token &amp;, WebKit::WebCertificateInfo &amp;, bool)
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        1   0x107fa80d9 WTFCrash
        2   0x10cddf2fb WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x10d4abcc8 WebKit::PageLoadState::didCommitLoad(WebKit::PageLoadState::Transaction::Token const&amp;, WebKit::WebCertificateInfo&amp;, bool)
        4   0x10d68a7b6 WebKit::WebPageProxy::didCommitLoadForFrame(unsigned long long, unsigned long long, WTF::String const&amp;, bool, unsigned int, WebCore::CertificateInfo const&amp;, bool, std::optional&lt;WebCore::HasInsecureContent&gt;, WebKit::UserData const&amp;)
        5   0x10dfad143 void IPC::callMemberFunctionImpl&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&amp;, bool, unsigned int, WebCore::CertificateInfo const&amp;, bool, std::optional&lt;WebCore::HasInsecureContent&gt;, WebKit::UserData const&amp;), std::__1::tuple&lt;unsigned long long, unsigned long long, WTF::String, bool, unsigned int, WebCore::CertificateInfo, bool, std::optional&lt;WebCore::HasInsecureContent&gt;, WebKit::UserData&gt;, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul&gt;(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&amp;, bool, unsigned int, WebCore::CertificateInfo const&amp;, bool, std::optional&lt;WebCore::HasInsecureContent&gt;, WebKit::UserData const&amp;), std::__1::tuple&lt;unsigned long long, unsigned long long, WTF::String, bool, unsigned int, WebCore::CertificateInfo, bool, std::optional&lt;WebCore::HasInsecureContent&gt;, WebKit::UserData&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul&gt;)
        6   0x10dfabc60 void IPC::callMemberFunction&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&amp;, bool, unsigned int, WebCore::CertificateInfo const&amp;, bool, std::optional&lt;WebCore::HasInsecureContent&gt;, WebKit::UserData const&amp;), std::__1::tuple&lt;unsigned long long, unsigned long long, WTF::String, bool, unsigned int, WebCore::CertificateInfo, bool, std::optional&lt;WebCore::HasInsecureContent&gt;, WebKit::UserData&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul&gt; &gt;(std::__1::tuple&lt;unsigned long long, unsigned long long, WTF::String, bool, unsigned int, WebCore::CertificateInfo, bool, std::optional&lt;WebCore::HasInsecureContent&gt;, WebKit::UserData&gt;&amp;&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&amp;, bool, unsigned int, WebCore::CertificateInfo const&amp;, bool, std::optional&lt;WebCore::HasInsecureContent&gt;, WebKit::UserData const&amp;))
        7   0x10df8a3e5 void IPC::handleMessage&lt;Messages::WebPageProxy::DidCommitLoadForFrame, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&amp;, bool, unsigned int, WebCore::CertificateInfo const&amp;, bool, std::optional&lt;WebCore::HasInsecureContent&gt;, WebKit::UserData const&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&amp;, bool, unsigned int, WebCore::CertificateInfo const&amp;, bool, std::optional&lt;WebCore::HasInsecureContent&gt;, WebKit::UserData const&amp;))
        8   0x10df7fd16 WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
        9   0x10ce8ec0a IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
        10  0x10d46b2e4 WebKit::ChildProcessProxy::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
        11  0x10d76341a WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
        12  0x10ce267cc IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
        13  0x10ce18bb1 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
        14  0x10ce23c21 IPC::Connection::dispatchIncomingMessages()
        15  0x10ce480b2 IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14::operator()()
        16  0x10ce47fd9 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14&gt;::call()
        17  0x107fcf87d WTF::Function&lt;void ()&gt;::operator()() const
        18  0x108028413 WTF::RunLoop::performWork()
        19  0x108028da4 WTF::RunLoop::performWork(void*)
        20  0x7fff4ed19195 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
        21  0x7fff4ed1913b __CFRunLoopDoSource0
        22  0x7fff4ecfcbd5 __CFRunLoopDoSources0
        23  0x7fff4ecfc17e __CFRunLoopRun
        24  0x7fff4ecfba68 CFRunLoopRunSpecific
        25  0x7fff511246ba -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
        26  0x1071d8736 TestWebKitAPI::Util::run(bool*)
        27  0x107045ab7 ProcessSwap_LoadUnload_Test::TestBody()
        28  0x10739fcfe void testing::internal::HandleSehExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
        29  0x1073477eb void testing::internal::HandleExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
        30  0x107347716 testing::Test::Run()
        31  0x1073493b2 testing::TestInfo::Run()
        LEAK: 1 WebPage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479847</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-11-16 20:52:37 -0800</bug_when>
    <thetext>I wonder if we&apos;re trying to load a new page while we&apos;re still pre-warming a process? e.g. right after we&apos;ve committed a page load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479855</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-16 21:27:55 -0800</bug_when>
    <thetext>In happens in tests that use back/forward navigations, I suspect this is caused by:
1. Load origin A in P1
2. Load origin B in P2 (Process Swap)
-&gt; Causes P1 to get navigated to about:blank for suspension
3. Navigate back before P1 has finished navigating to about:blank.

P1 tells the WebPageProxy didFinishLoad or didCommitLoad for &apos;about:blank&apos;, which it does not expect since it did not request that load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479869</commentid>
    <comment_count>6</comment_count>
      <attachid>355183</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-16 22:44:42 -0800</bug_when>
    <thetext>Created attachment 355183
WIP Patch

Proof of concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479933</commentid>
    <comment_count>7</comment_count>
      <attachid>355197</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-17 11:55:13 -0800</bug_when>
    <thetext>Created attachment 355197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479960</commentid>
    <comment_count>8</comment_count>
      <attachid>355197</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-17 14:07:03 -0800</bug_when>
    <thetext>Comment on attachment 355197
Patch

Clearing flags on attachment: 355197

Committed r238353: &lt;https://trac.webkit.org/changeset/238353&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479961</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-17 14:07:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479964</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-17 14:08:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/46151872&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480005</commentid>
    <comment_count>11</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-11-17 17:14:35 -0800</bug_when>
    <thetext>WinCairo (the bots for which all suddenly disconnected this morning and haven&apos;t come back online 😰) has a broken build with the following error:

&gt; FAILED: Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/unified-sources/UnifiedSource25.cpp.obj
&gt; ...
&gt; C:\GitHub\neko\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/Ref.h(60): error C2039: &apos;deref&apos;: is not a member of &apos;WebKit::WebPageProxy::continueNavigationInNewProcess::&lt;lambda_a497dfd3aa776334b389d665d3f26b45&gt;&apos;
&gt; C:\GitHub\neko\Source\WebKit\UIProcess/WebPageProxy.cpp(2723): note: see declaration of &apos;WebKit::WebPageProxy::continueNavigationInNewProcess::&lt;lambda_a497dfd3aa776334b389d665d3f26b45&gt;&apos;
&gt; C:\GitHub\neko\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/Ref.h(54): note: while compiling class template member function &apos;WTF::Ref&lt;WebKit::WebPageProxy::continueNavigationInNewProcess::&lt;lambda_a497dfd3aa776334b389d665d3f26b45&gt;,WTF::DumbPtrTraits&lt;T&gt;&gt;::~Ref(void)&apos;
&gt;         with
&gt;         [
&gt;             T=WebKit::WebPageProxy::continueNavigationInNewProcess::&lt;lambda_a497dfd3aa776334b389d665d3f26b45&gt;
&gt;         ]
&gt; C:\GitHub\neko\Source\WebKit\UIProcess/WebPageProxy.cpp(2712): note: see reference to function template instantiation &apos;WTF::Ref&lt;WebKit::WebPageProxy::continueNavigationInNewProcess::&lt;lambda_a497dfd3aa776334b389d665d3f26b45&gt;,WTF::DumbPtrTraits&lt;T&gt;&gt;::~Ref(void)&apos; being compiled
&gt;         with
&gt;         [
&gt;             T=WebKit::WebPageProxy::continueNavigationInNewProcess::&lt;lambda_a497dfd3aa776334b389d665d3f26b45&gt;
&gt;         ]
&gt; C:\GitHub\neko\Source\WebKit\UIProcess/WebPageProxy.cpp(2700): note: see reference to class template instantiation &apos;WTF::Ref&lt;WebKit::WebPageProxy::continueNavigationInNewProcess::&lt;lambda_a497dfd3aa776334b389d665d3f26b45&gt;,WTF::DumbPtrTraits&lt;T&gt;&gt;&apos; being compiled
&gt;         with
&gt;         [
&gt;             T=WebKit::WebPageProxy::continueNavigationInNewProcess::&lt;lambda_a497dfd3aa776334b389d665d3f26b45&gt;
&gt;         ]
&gt; c:\github\neko\webkitbuild\release\derivedsources\forwardingheaders\javascriptcore\CodeBlock.h(950): note: see reference to class template instantiation &apos;WTF::Poisoned&lt;JSC::CodeBlockPoison,JSC::VM *,void&gt;&apos; being compiled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480010</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-11-17 17:33:20 -0800</bug_when>
    <thetext>That looks like some kind of a compiler bug... I guess someone who has access to VS.net has to debug that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480013</commentid>
    <comment_count>13</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-11-17 17:55:08 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #12)
&gt; That looks like some kind of a compiler bug... I guess someone who has
&gt; access to VS.net has to debug that.

Thankfully, it looks like this issue has precedent.
https://trac.webkit.org/changeset/233195
https://trac.webkit.org/changeset/230162

Committed r238358: &lt;https://trac.webkit.org/changeset/238358&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355183</attachid>
            <date>2018-11-16 22:44:42 -0800</date>
            <delta_ts>2018-11-17 11:55:11 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>191781_wip.patch</filename>
            <type>text/plain</type>
            <size>16930</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4
IGRkZjBlMTUyOTRhLi5lOTE0NDY3N2MwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0xMDMsMjQgKzEwMywzNiBAQCBTdXNwZW5kZWRQ
YWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQogICAgIH0pOwogfQogCi12b2lkIFN1c3Bl
bmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKCkKK3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp1bnN1
c3BlbmQoV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKG1faXNTdXNwZW5kZWQpOwogCi0gICAgbV9pc1N1c3BlbmRlZCA9IGZh
bHNlOwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKGZhbHNlKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBhdXRvIHVuc3VzcGVuZCA9IFt0aGlzXSB7CisgICAgICAg
IG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3BhZ2UucGFnZUlEKCkpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldElzU3VzcGVuZGVkKGZhbHNlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICB9OworICAg
IGlmIChtX2ZpbmlzaGVkU3VzcGVuZGluZykgeworICAgICAgICB1bnN1c3BlbmQoKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2ZpbmlzaGVk
U3VzcGVuZGluZ0hhbmRsZXIgPSBbdW5zdXNwZW5kID0gV1RGTW92ZSh1bnN1c3BlbmQpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgdW5zdXNwZW5kKCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgICAgICB9OworICAgIH0KIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZEZp
bmlzaExvYWQoKQogewogICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJv
eHkgJXMgZnJvbSBwcm9jZXNzICVpIGZpbmlzaGVkIHRyYW5zaXRpb24gdG8gc3VzcGVuZGVkIiwg
bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0jaWYg
IUxPR19ESVNBQkxFRAogICAgIG1fZmluaXNoZWRTdXNwZW5kaW5nID0gdHJ1ZTsKLSNlbmRpZgog
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpVcGRhdGVBY3RpdmVQ
YWdlcygpLCAwKTsKKworICAgIGlmIChhdXRvIGZpbmlzaGVkU3VzcGVuZGluZ0hhbmRsZXIgPSBX
VEZNb3ZlKG1fZmluaXNoZWRTdXNwZW5kaW5nSGFuZGxlcikpCisgICAgICAgIGZpbmlzaGVkU3Vz
cGVuZGluZ0hhbmRsZXIoKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYgZGVjb2RlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggYzQ1NTFlMmE5
NDcuLjlhNTFmNDM0MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgbWFpbkZy
YW1lSUQoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZUlEOyB9CiAgICAgY29uc3QgU3RyaW5n
JiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47
IH0KIAotICAgIHZvaWQgdW5zdXNwZW5kKCk7CisgICAgdm9pZCB1bnN1c3BlbmQoV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGNvbnN0
IGNoYXIqIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKQEAgLTY2LDkgKzY2LDggQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IHRydWUgfTsKIAotI2lmICFMT0dfRElTQUJMRUQK
ICAgICBib29sIG1fZmluaXNoZWRTdXNwZW5kaW5nIHsgZmFsc2UgfTsKLSNlbmRpZgorICAgIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBtX2ZpbmlzaGVkU3VzcGVuZGluZ0hhbmRsZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDllNTZjNzVmZDA0Li5kYTMwYjBiZDBjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03NTAsNyArNzUwLDcgQEAgYm9vbCBX
ZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBzdGQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFt
ZUlESW5QcmV2aW91c1Byb2Nlc3MpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2Vz
cyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2Vz
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
LCAiJXAgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzXG4iLCB0aGlzKTsKQEAgLTc2MCwy
OSArNzYwLDQyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywgQVBJOjpOYXZpZ2F0CiAgICAgICAgIGlmIChiYWNrRm9y
d2FyZExpc3RJdGVtLT5zdXNwZW5kZWRQYWdlKCkgJiYgJmJhY2tGb3J3YXJkTGlzdEl0ZW0tPnN1
c3BlbmRlZFBhZ2UoKS0+cHJvY2VzcygpID09IHByb2Nlc3MucHRyKCkpIHsKICAgICAgICAgICAg
IGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSA9IHRoaXMtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LnRha2VTdXNwZW5kZWRQYWdlKCpiYWNrRm9yd2FyZExpc3RJdGVtLT5zdXNwZW5kZWRQYWdlKCkp
OwogICAgICAgICAgICAgQVNTRVJUKGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSk7Ci0gICAgICAg
ICAgICBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UtPnVuc3VzcGVuZCgpOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7Ci0gICAgYm9vbCBk
aWRTdXNwZW5kUHJldmlvdXNQYWdlID0gc3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShuYXZp
Z2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzKTsKLSAgICBtX3Byb2Nlc3MtPnJl
bW92ZVdlYlBhZ2UoKnRoaXMsIG1fcGFnZUlEKTsKKyAgICBhdXRvIHJlYXR0YWNoID0gW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2Vz
cyksIG5hdmlnYXRpb24gPSBtYWtlUmVmKG5hdmlnYXRpb24pLCBtYWluRnJhbWVJREluUHJldmlv
dXNQcm9jZXNzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBkZXN0aW5hdGlvblN1c3BlbmRl
ZFBhZ2UpIG11dGFibGUgeworICAgICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlE
KTsKKyAgICAgICAgYm9vbCBkaWRTdXNwZW5kUHJldmlvdXNQYWdlID0gc3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZShuYXZpZ2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzKTsK
KyAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3BhZ2VJRCk7CiAKLSAg
ICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwotICAgIG1faXNWYWxpZCA9IHRydWU7Cisg
ICAgICAgIG1fcHJvY2VzcyA9IFdURk1vdmUocHJvY2Vzcyk7CisgICAgICAgIG1faXNWYWxpZCA9
IHRydWU7CiAKLSAgICAvLyBJZiB3ZSBhcmUgcmVhdHRhY2hpbmcgdG8gYSBTdXNwZW5kZWRQYWdl
LCB0aGVuIHRoZSBXZWJQcm9jZXNzJyBXZWJQYWdlIGFscmVhZHkgZXhpc3RzIGFuZAotICAgIC8v
IFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKCkgd2lsbCBub3QgYmUgY2FsbGVkIHRv
IGluaXRpYWxpemUgbV9tYWluRnJhbWUuIEluIHN1Y2gKLSAgICAvLyBjYXNlLCB3ZSBuZWVkIHRv
IGluaXRpYWxpemUgbV9tYWluRnJhbWUgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGUgdGhlIFdlYlBy
b2Nlc3MnIFdlYlBhZ2UKLSAgICAvLyBhbHJlYWR5IGV4aXN0cyBhbmQgYWxyZWFkeSBoYXMgYSBt
YWluIGZyYW1lLgotICAgIGlmIChkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UpIHsKLSAgICAgICAg
QVNTRVJUKCFtX21haW5GcmFtZSk7Ci0gICAgICAgIEFTU0VSVCgmZGVzdGluYXRpb25TdXNwZW5k
ZWRQYWdlLT5wcm9jZXNzKCkgPT0gbV9wcm9jZXNzLnB0cigpKTsKLSAgICAgICAgbV9tYWluRnJh
bWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUoKnRoaXMsIGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFn
ZS0+bWFpbkZyYW1lSUQoKSk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGRlc3Rp
bmF0aW9uU3VzcGVuZGVkUGFnZS0+bWFpbkZyYW1lSUQoKSwgKm1fbWFpbkZyYW1lKTsKKyAgICAg
ICAgLy8gSWYgd2UgYXJlIHJlYXR0YWNoaW5nIHRvIGEgU3VzcGVuZGVkUGFnZSwgdGhlbiB0aGUg
V2ViUHJvY2VzcycgV2ViUGFnZSBhbHJlYWR5IGV4aXN0cyBhbmQKKyAgICAgICAgLy8gV2ViUGFn
ZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUoKSB3aWxsIG5vdCBiZSBjYWxsZWQgdG8gaW5pdGlh
bGl6ZSBtX21haW5GcmFtZS4gSW4gc3VjaAorICAgICAgICAvLyBjYXNlLCB3ZSBuZWVkIHRvIGlu
aXRpYWxpemUgbV9tYWluRnJhbWUgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGUgdGhlIFdlYlByb2Nl
c3MnIFdlYlBhZ2UKKyAgICAgICAgLy8gYWxyZWFkeSBleGlzdHMgYW5kIGFscmVhZHkgaGFzIGEg
bWFpbiBmcmFtZS4KKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSkgeworICAg
ICAgICAgICAgQVNTRVJUKCFtX21haW5GcmFtZSk7CisgICAgICAgICAgICBBU1NFUlQoJmRlc3Rp
bmF0aW9uU3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpID09IG1fcHJvY2Vzcy5wdHIoKSk7CisgICAg
ICAgICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSgqdGhpcywgZGVzdGlu
YXRpb25TdXNwZW5kZWRQYWdlLT5tYWluRnJhbWVJRCgpKTsKKyAgICAgICAgICAgIG1fcHJvY2Vz
cy0+ZnJhbWVDcmVhdGVkKGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZS0+bWFpbkZyYW1lSUQoKSwg
Km1fbWFpbkZyYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmlzaEF0dGFjaGluZ1RvV2Vi
UHJvY2VzcyhkaWRTdXNwZW5kUHJldmlvdXNQYWdlID8gU2hvdWxkRGVsYXlBdHRhY2hpbmdEcmF3
aW5nQXJlYTo6WWVzIDogU2hvdWxkRGVsYXlBdHRhY2hpbmdEcmF3aW5nQXJlYTo6Tm8pOworCisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfTsKKworICAgIGlmICghZGVzdGluYXRp
b25TdXNwZW5kZWRQYWdlKQorICAgICAgICByZWF0dGFjaChudWxscHRyKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgYXV0byogZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlUHRyID0gZGVzdGluYXRpb25T
dXNwZW5kZWRQYWdlLmdldCgpOworICAgICAgICBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2VQdHIt
PnVuc3VzcGVuZChbcmVhdHRhY2ggPSBXVEZNb3ZlKHJlYXR0YWNoKSwgZGVzdGluYXRpb25TdXNw
ZW5kZWRQYWdlID0gV1RGTW92ZShkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgcmVhdHRhY2goV1RGTW92ZShkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2Up
KTsKKyAgICAgICAgfSk7CiAgICAgfQogCi0gICAgZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNz
KGRpZFN1c3BlbmRQcmV2aW91c1BhZ2UgPyBTaG91bGREZWxheUF0dGFjaGluZ0RyYXdpbmdBcmVh
OjpZZXMgOiBTaG91bGREZWxheUF0dGFjaGluZ0RyYXdpbmdBcmVhOjpObyk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoU2hvdWxkRGVsYXlBdHRh
Y2hpbmdEcmF3aW5nQXJlYSBzaG91bGREZWxheUF0dGFjaGluZ0RyYXdpbmdBcmVhKQpAQCAtMjY1
MCw2OSArMjY2Myw2OSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUgogCiAgICAgcHJvY2Vzc0Rp
ZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKTsKIAot
ICAgIHN3YXBUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSwgbmF2aWdhdGlvbiwgbWFpbkZy
YW1lSURJblByZXZpb3VzUHJvY2Vzcyk7CisgICAgc3dhcFRvV2ViUHJvY2VzcyhXVEZNb3ZlKHBy
b2Nlc3MpLCBuYXZpZ2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZp
Z2F0aW9uKSwgbWFpbkZyYW1lVVJMLCBwcmV2aW91c1Byb2Nlc3MgPSBXVEZNb3ZlKHByZXZpb3Vz
UHJvY2VzcyksIG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3NdKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKSB7CisgICAgICAg
ICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5k
YXRhKCkpOwogCi0gICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLnRhcmdldEl0ZW0oKSkg
ewotICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRp
b25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRT
dGF0ZS50cmFuc2FjdGlvbigpOworICAgICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRp
bmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBpdGVtLT51cmwoKSk7CiAKLSAgICAgICAgYXV0
byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotICAgICAgICBt
X3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sIGl0ZW0t
PnVybCgpKTsKKyAgICAgICAgICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fYmFja0ZvcndhcmRMaXN0
LT5maWx0ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSBpdGVtXShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJiBpdGVtKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBp
dGVtLnN1c3BlbmRlZFBhZ2UoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoJnBhZ2UtPnBy
b2Nlc3MoKSA9PSBtX3Byb2Nlc3MucHRyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiAmaXRl
bSAhPSB0YXJnZXRJdGVtOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNo
KFdURk1vdmUoaXRlbVN0YXRlcykpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCksIGl0ZW0tPml0ZW1JRCgpLCAqbmF2aWdhdGlvbi0+YmFja0ZvcndhcmRG
cmFtZUxvYWRUeXBlKCksIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzKSwgbV9wYWdl
SUQpOworICAgICAgICAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQo
KTsKIAotICAgICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX2JhY2tGb3J3YXJkTGlzdC0+ZmlsdGVy
ZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJnZXRJdGVtID0gaXRlbV0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYgaXRlbSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBpdGVtLnN1c3BlbmRl
ZFBhZ2UoKSkgewotICAgICAgICAgICAgICAgIGlmICgmcGFnZS0+cHJvY2VzcygpID09IG1fcHJv
Y2Vzcy5wdHIoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuICZpdGVtICE9IHRhcmdldEl0ZW07Ci0gICAgICAgIH0p
OwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJhY2tG
b3J3YXJkTGlzdEZvclJlYXR0YWNoKFdURk1vdmUoaXRlbVN0YXRlcykpLCBtX3BhZ2VJRCk7Ci0g
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJk
SXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVtLT5pdGVtSUQoKSwgKm5hdmlnYXRp
b24uYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCksIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZDo6WWVzKSwgbV9wYWdlSUQpOwotICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGlt
ZXIoKS5zdGFydCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICAgICAgaWYgKG5hdmlnYXRpb24tPmxvY2tCYWNrRm9yd2FyZExp
c3QoKSA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMgfHwgbmF2aWdhdGlvbi0+bG9ja0hpc3Rv
cnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSB7CisgICAgICAgICAgICAvLyBJZiBXZWJDb3JlIGlz
IHN1cHBvc2VkIHRvIGxvY2sgdGhlIGhpc3RvcnkgZm9yIHRoaXMgbG9hZCwgdGhlbiB0aGUgbmV3
IHByb2Nlc3MgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCBoaXN0b3J5IGl0ZW0gc28g
aXQgY2FuIHVwZGF0ZQorICAgICAgICAgICAgLy8gaXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5l
dyBvbmUuCisgICAgICAgICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX2JhY2tGb3J3YXJkTGlzdC0+
ZmlsdGVyZWRJdGVtU3RhdGVzKFtjdXJyZW50SXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJy
ZW50SXRlbSgpXShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuICZpdGVtID09IGN1cnJlbnRJdGVtOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpdGVtU3RhdGVzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VycmVudEhpc3RvcnlJdGVt
Rm9yUmVhdHRhY2goaXRlbVN0YXRlc1swXSksIG1fcGFnZUlEKTsKKyAgICAgICAgfQogCi0gICAg
aWYgKG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09IExvY2tCYWNrRm9yd2FyZExp
c3Q6OlllcyB8fCBuYXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCkgPT0gTG9ja0hpc3Rvcnk6Olllcykg
ewotICAgICAgICAvLyBJZiBXZWJDb3JlIGlzIHN1cHBvc2VkIHRvIGxvY2sgdGhlIGhpc3Rvcnkg
Zm9yIHRoaXMgbG9hZCwgdGhlbiB0aGUgbmV3IHByb2Nlc3MgbmVlZHMgdG8ga25vdyBhYm91dCB0
aGUgY3VycmVudCBoaXN0b3J5IGl0ZW0gc28gaXQgY2FuIHVwZGF0ZQotICAgICAgICAvLyBpdCBp
bnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS4KLSAgICAgICAgYXV0byBpdGVtU3RhdGVzID0g
bV9iYWNrRm9yd2FyZExpc3QtPmZpbHRlcmVkSXRlbVN0YXRlcyhbY3VycmVudEl0ZW0gPSBtX2Jh
Y2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKV0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRl
bSkgewotICAgICAgICAgICAgcmV0dXJuICZpdGVtID09IGN1cnJlbnRJdGVtOwotICAgICAgICB9
KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlbVN0YXRlcy5zaXplKCkgPT0gMSk7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VycmVudEhpc3RvcnlJ
dGVtRm9yUmVhdHRhY2goaXRlbVN0YXRlc1swXSksIG1fcGFnZUlEKTsKLSAgICB9CisgICAgICAg
IC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBv
bGljeSBkZWxlZ2F0ZSwgZXRjCisgICAgICAgIEFTU0VSVCghbmF2aWdhdGlvbi0+Y3VycmVudFJl
cXVlc3QoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAoYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBu
YXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQorICAgICAgICAgICAgbG9hZERhdGFXaXRoTmF2
aWdhdGlvbihuYXZpZ2F0aW9uLCB7IHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LmRhdGEoKSwgc3Vi
c3RpdHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgpIH0sIHN1YnN0aXR1dGVEYXRhLT5NSU1FVHlwZSwg
c3Vic3RpdHV0ZURhdGEtPmVuY29kaW5nLCBzdWJzdGl0dXRlRGF0YS0+YmFzZVVSTCwgc3Vic3Rp
dHV0ZURhdGEtPnVzZXJEYXRhLmdldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9h
ZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZp
Z2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzLCBudWxscHRyLCBTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQ6Olllcyk7CiAKLSAgICAvLyBGSVhNRTogV29yayBvdXQgdGltaW5n
IG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YwotICAgIEFT
U0VSVCghbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLmlzRW1wdHkoKSk7Ci0gICAgaWYgKGF1
dG8mIHN1YnN0aXR1dGVEYXRhID0gbmF2aWdhdGlvbi5zdWJzdGl0dXRlRGF0YSgpKQotICAgICAg
ICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNv
bnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0
ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRh
LT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCkpOwotICAgIGVsc2UKLSAg
ICAgICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVl
c3QgeyBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkgfSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIG51bGxwdHIsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzKTsKLQotICAgIEFTU0VSVCghbV9tYWluRnJh
bWUpOwotICAgIG1fbWFpbkZyYW1lQ3JlYXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdhdGlvbiksIHJl
cXVlc3QgPSAgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBtYWluRnJhbWVVUkwsIGlzU2Vy
dmVyUmVkaXJlY3QgPSBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpXSgpIG11
dGFibGUgewotICAgICAgICBBU1NFUlQobV9tYWluRnJhbWUpOwotICAgICAgICAvLyBSZXN0b3Jl
IHRoZSBtYWluIGZyYW1lJ3MgY29tbWl0dGVkIFVSTCBhcyBzb21lIGNsaWVudHMgbWF5IHJlbHkg
b24gaXQgdW50aWwgdGhlIG5leHQgbG9hZCBpcyBjb21taXR0ZWQuCi0gICAgICAgIG1fbWFpbkZy
YW1lLT5mcmFtZUxvYWRTdGF0ZSgpLnNldFVSTChtYWluRnJhbWVVUkwpOwotCi0gICAgICAgIC8v
IE5vcm1hbGx5LCBub3RpZmljYXRpb24gb2YgYSBzZXJ2ZXIgcmVkaXJlY3QgY29tZXMgZnJvbSB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLgotICAgICAgICAvLyBJZiB3ZSBhcmUgcHJvY2VzcyBzd2Fw
cGluZyBpbiByZXNwb25zZSB0byBhIHNlcnZlciByZWRpcmVjdCB0aGVuIHRoYXQgbm90aWZpY2F0
aW9uIHdpbGwgbm90IGNvbWUgZnJvbSB0aGUgbmV3IFdlYkNvbnRlbnQgcHJvY2Vzcy4KLSAgICAg
ICAgLy8gSW4gdGhpcyBjYXNlIHdlIGhhdmUgdGhlIFVJUHJvY2VzcyBzeW50aGVzaXplIHRoZSBy
ZWRpcmVjdCBub3RpZmljYXRpb24gYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuCi0gICAgICAgIGlm
IChpc1NlcnZlclJlZGlyZWN0KSB7Ci0gICAgICAgICAgICBtX21haW5GcmFtZS0+ZnJhbWVMb2Fk
U3RhdGUoKS5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZChyZXF1ZXN0LnVybCgpKTsKLSAgICAgICAg
ICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1f
bWFpbkZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBXVEZNb3Zl
KHJlcXVlc3QpLCB7IH0pOwotICAgICAgICB9Ci0gICAgfTsKKyAgICAgICAgQVNTRVJUKCFtX21h
aW5GcmFtZSk7CisgICAgICAgIG1fbWFpbkZyYW1lQ3JlYXRpb25IYW5kbGVyID0gW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG5hdmlnYXRpb24uY29w
eVJlZigpLCByZXF1ZXN0ID0gIG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCksIG1haW5GcmFt
ZVVSTCwgaXNTZXJ2ZXJSZWRpcmVjdCA9IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0SXNSZWRp
cmVjdCgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgQVNTRVJUKG1fbWFpbkZyYW1lKTsKKyAg
ICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG1haW4gZnJhbWUncyBjb21taXR0ZWQgVVJMIGFzIHNv
bWUgY2xpZW50cyBtYXkgcmVseSBvbiBpdCB1bnRpbCB0aGUgbmV4dCBsb2FkIGlzIGNvbW1pdHRl
ZC4KKyAgICAgICAgICAgIG1fbWFpbkZyYW1lLT5mcmFtZUxvYWRTdGF0ZSgpLnNldFVSTChtYWlu
RnJhbWVVUkwpOworCisgICAgICAgICAgICAvLyBOb3JtYWxseSwgbm90aWZpY2F0aW9uIG9mIGEg
c2VydmVyIHJlZGlyZWN0IGNvbWVzIGZyb20gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAg
ICAgICAgIC8vIElmIHdlIGFyZSBwcm9jZXNzIHN3YXBwaW5nIGluIHJlc3BvbnNlIHRvIGEgc2Vy
dmVyIHJlZGlyZWN0IHRoZW4gdGhhdCBub3RpZmljYXRpb24gd2lsbCBub3QgY29tZSBmcm9tIHRo
ZSBuZXcgV2ViQ29udGVudCBwcm9jZXNzLgorICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdl
IGhhdmUgdGhlIFVJUHJvY2VzcyBzeW50aGVzaXplIHRoZSByZWRpcmVjdCBub3RpZmljYXRpb24g
YXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuCisgICAgICAgICAgICBpZiAoaXNTZXJ2ZXJSZWRpcmVj
dCkgeworICAgICAgICAgICAgICAgIG1fbWFpbkZyYW1lLT5mcmFtZUxvYWRTdGF0ZSgpLmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKHJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fbWFpbkZyYW1l
LT5mcmFtZUlEKCksIG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBXVEZNb3ZlKHJlcXVlc3Qp
LCB7IH0pOworICAgICAgICAgICAgfQorICAgICAgICB9OwogCi0gICAgYm9vbCBpc0luaXRpYWxO
YXZpZ2F0aW9uSW5OZXdXaW5kb3cgPSBvcGVuZWRCeURPTSgpICYmICFoYXNDb21taXR0ZWRBbnlQ
cm92aXNpb25hbExvYWRzKCk7Ci0gICAgaWYgKCFpc0luaXRpYWxOYXZpZ2F0aW9uSW5OZXdXaW5k
b3cgfHwgIW1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgYm9vbCBpc0luaXRpYWxOYXZpZ2F0aW9uSW5OZXdXaW5kb3cgPSBvcGVuZWRCeURPTSgp
ICYmICFoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCk7CisgICAgICAgIGlmICghaXNJ
bml0aWFsTmF2aWdhdGlvbkluTmV3V2luZG93IHx8ICFtYWluRnJhbWVJREluUHJldmlvdXNQcm9j
ZXNzKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9tYWluRnJhbWVXaW5kb3dDcmVhdGlv
bkhhbmRsZXIgPSBbdGhpcywgcHJldmlvdXNQcm9jZXNzID0gV1RGTW92ZShwcmV2aW91c1Byb2Nl
c3MpLCBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gKm1haW5GcmFtZUlESW5QcmV2aW91
c1Byb2Nlc3NdKGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImIHdpbmRvd0lkZW50aWZpZXIp
IHsKLSAgICAgICAgQVNTRVJUKG1fbWFpbkZyYW1lKTsKLSAgICAgICAgR2xvYmFsRnJhbWVJZGVu
dGlmaWVyIG5hdmlnYXRlZEZyYW1lSWRlbnRpZmllckluTmV3UHJvY2VzcyB7IHBhZ2VJRCgpLCBt
X21haW5GcmFtZS0+ZnJhbWVJRCgpIH07Ci0gICAgICAgIHByZXZpb3VzUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RnJhbWVCZWNhbWVSZW1vdGUobWFpbkZyYW1lSURJblByZXZpb3Vz
UHJvY2VzcywgbmF2aWdhdGVkRnJhbWVJZGVudGlmaWVySW5OZXdQcm9jZXNzLCB3aW5kb3dJZGVu
dGlmaWVyKSwgcGFnZUlEKCkpOwotICAgIH07CisgICAgICAgIG1fbWFpbkZyYW1lV2luZG93Q3Jl
YXRpb25IYW5kbGVyID0gW3RoaXMsIHByZXZpb3VzUHJvY2VzcyA9IFdURk1vdmUocHJldmlvdXNQ
cm9jZXNzKSwgbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcyA9ICptYWluRnJhbWVJREluUHJl
dmlvdXNQcm9jZXNzXShjb25zdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiB3aW5kb3dJZGVudGlm
aWVyKSB7CisgICAgICAgICAgICBBU1NFUlQobV9tYWluRnJhbWUpOworICAgICAgICAgICAgR2xv
YmFsRnJhbWVJZGVudGlmaWVyIG5hdmlnYXRlZEZyYW1lSWRlbnRpZmllckluTmV3UHJvY2VzcyB7
IHBhZ2VJRCgpLCBtX21haW5GcmFtZS0+ZnJhbWVJRCgpIH07CisgICAgICAgICAgICBwcmV2aW91
c1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZyYW1lQmVjYW1lUmVtb3RlKG1haW5G
cmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIG5hdmlnYXRlZEZyYW1lSWRlbnRpZmllckluTmV3UHJv
Y2Vzcywgd2luZG93SWRlbnRpZmllciksIHBhZ2VJRCgpKTsKKyAgICAgICAgfTsKKyAgICB9KTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDlmNzQ1OWIyNDA1Li4w
MzMwMWFiMDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1
NDMsNyArMTU0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDYW5TaG9ydENpcmN1aXRIb3Jp
em9udGFsV2hlZWxFdmVudHMoYm9vbCBjYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVu
dHMpIHsgbV9jYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMgPSBjYW5TaG9ydENp
cmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHM7IH0KIAogICAgIHZvaWQgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MoKTsKLSAgICB2b2lkIHN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgQVBJOjpOYXZpZ2F0aW9uJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbWFpbkZyYW1lSURJ
blByZXZpb3VzUHJvY2Vzcyk7CisgICAgdm9pZCBzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlvbiYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1h
aW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAKICAgICB2b2lkIGZpbmlzaEF0dGFjaGluZ1RvV2ViUHJvY2VzcyhTaG91bGREZWxheUF0dGFj
aGluZ0RyYXdpbmdBcmVhID0gU2hvdWxkRGVsYXlBdHRhY2hpbmdEcmF3aW5nQXJlYTo6Tm8pOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355197</attachid>
            <date>2018-11-17 11:55:13 -0800</date>
            <delta_ts>2018-11-17 14:07:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191781-20181117115512.patch</filename>
            <type>text/plain</type>
            <size>18841</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJhMGZiNzExMTFjODMzMTQ2
OGRjZTFiOWQxNzQ0MTI4YWE5MDliNTMuLmQzMTA5N2FlZWJiOThjZmI0OTdhMGNjYjhlZDQ1YTNm
MDM4Yzg4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTgtMTEtMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbUFNPTl0gQVNTRVJUSU9OIEZBSUxF
RDogbV91bmNvbW1pdHRlZFN0YXRlLnN0YXRlID09IFN0YXRlOjpDb21taXR0ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTc4MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjcmFzaCB3YXMgaGFw
cGVuaW5nIHdoZW4gc3dpdGNoaW5nIHRvIGEgc3VzcGVuZGVkIHBhZ2UgdGhhdCBpcyBub3QgeWV0
IGRvbmUKKyAgICAgICAgc3VzcGVuZGluZyAoZS5nLiBpbiBjYXNlIG9mIHZlcnkgZmFzdCBiYWNr
L2ZvcndhcmQgbmF2aWdhdGlvbikuIFRoZSBXZWJQYWdlUHJveHkKKyAgICAgICAgd291bGQgcmVh
dHRhY2ggdG8gdGhlIHN1c3BlbmRlZCBwcm9jZXNzIGFuZCBnZXQgbG9hZCBub3RpZmljYXRpb25z
IHRoYXQgaXQgZGlkCisgICAgICAgIG5vdCBleHBlY3Qgc2luY2UgaXQgZGlkIG5vdCBzY2hlZHVs
ZSBhbnkgbG9hZCB5ZXQuIFRob3NlIG5vdGlmaWNhdGlvbnMgYXJlIGZvcgorICAgICAgICB0aGUg
YWJvdXQ6YmxhbmsgbG9hZCB3ZSBkbyBmb3IgcGFnZSBzdXNwZW5zaW9uLgorCisgICAgICAgIFRv
IGFkZHJlc3MgdGhlIGlzc3VlLCBtYWtlIHN3YXBUb1dlYlByb2Nlc3MoKSBhc3luY2hyb25vdXMg
YW5kIHRha2UgYSBjb21wbGV0aW9uCisgICAgICAgIGhhbmRsZXIuIFdoZW4gd2UgdHJ5IHRvIHVu
c3VzcGVuZCBhIFN1c3BlbmRlZFBhZ2VQcm94eSwgd2UgZmlyc3QgbWFrZSBzdXJlIGl0CisgICAg
ICAgIGlzIGFjdHVhbGx5IGRvbmUgc3VzcGVuZGluZy4gSWYgaXQgaXMgbm90IGRvbmUgc3VzcGVu
ZGluZywgd2Ugd2FpdCB1bnRpbCBpdCBpcworICAgICAgICBiZWZvcmUgdGVsbGluZyBpbiB0byB1
bnN1c3BlbmQgYW5kIHByb2NlZWRpbmcgd2l0aCB0aGUgbmV3IGxvYWQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3VzcGVu
ZGVkUGFnZVByb3h5Ojp1bnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdl
UHJveHk6OmRpZEZpbmlzaExvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKwogMjAxOC0xMS0xNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24oUHJvY2Vzc1ByZXdhcm1p
bmcpIEFzc2VydGlvbiBoaXQgaW4gTmV0d29ya1Byb2Nlc3NQcm94eSBkZXN0cnVjdG9yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCBkZGYw
ZTE1Mjk0YWE3NjFmYzRhMWRhN2MwNmZlZjRhYzRmYTg5YjM4Li5lYmFkZTg4ZWExYjUyZTYzZWRl
NGU3Njg1Y2EwOGZmMjgzNDlmNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTEwMywyNCArMTAzLDM0IEBAIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSgpCiAgICAgfSk7CiB9CiAKLXZvaWQgU3VzcGVuZGVk
UGFnZVByb3h5Ojp1bnN1c3BlbmQoKQordm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OnVuc3VzcGVu
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKG1faXNTdXNwZW5kZWQpOwogCi0gICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOwotICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKGZhbHNlKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBhdXRvIGRvVW5zdXNwZW5kID0gW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIG1faXNT
dXNwZW5kZWQgPSBmYWxzZTsKKyAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uu
cGFnZUlEKCkpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dElzU3VzcGVuZGVkKGZhbHNlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKKyAgICB9OworCisgICAgaWYgKCFtX2ZpbmlzaGVkU3VzcGVuZGluZykgewor
ICAgICAgICBBU1NFUlQoIW1fZmluaXNoZWRTdXNwZW5kaW5nSGFuZGxlcik7CisgICAgICAgIG1f
ZmluaXNoZWRTdXNwZW5kaW5nSGFuZGxlciA9IFdURk1vdmUoZG9VbnN1c3BlbmQpOworICAgIH0g
ZWxzZQorICAgICAgICBkb1Vuc3VzcGVuZCgpOwogfQogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94
eTo6ZGlkRmluaXNoTG9hZCgpCiB7CiAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlN1c3BlbmRl
ZFBhZ2VQcm94eSAlcyBmcm9tIHByb2Nlc3MgJWkgZmluaXNoZWQgdHJhbnNpdGlvbiB0byBzdXNw
ZW5kZWQiLCBsb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7
CiAKLSNpZiAhTE9HX0RJU0FCTEVECiAgICAgbV9maW5pc2hlZFN1c3BlbmRpbmcgPSB0cnVlOwot
I2VuZGlmCiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlVwZGF0
ZUFjdGl2ZVBhZ2VzKCksIDApOworCisgICAgaWYgKGF1dG8gZmluaXNoZWRTdXNwZW5kaW5nSGFu
ZGxlciA9IFdURk1vdmUobV9maW5pc2hlZFN1c3BlbmRpbmdIYW5kbGVyKSkKKyAgICAgICAgZmlu
aXNoZWRTdXNwZW5kaW5nSGFuZGxlcigpOwogfQogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCBj
NDU1MWUyYTk0N2NmZTk1MzM4YWM0ZWY4OGM1Y2M2NGFjYmEyMjg3Li4xZmRlZWNlMmMzNWY1OGQy
ZDZhOTMxYmJlODhmMTc4ZTRkYjMzZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0
X3QgbWFpbkZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZUlEOyB9CiAgICAgY29u
c3QgU3RyaW5nJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFi
bGVEb21haW47IH0KIAotICAgIHZvaWQgdW5zdXNwZW5kKCk7CisgICAgdm9pZCB1bnN1c3BlbmQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBj
b25zdCBjaGFyKiBsb2dnaW5nU3RyaW5nKCkgY29uc3Q7CkBAIC02Niw5ICs2Niw4IEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1faXNTdXNwZW5kZWQgeyB0cnVlIH07CiAKLSNpZiAhTE9HX0RJU0FC
TEVECiAgICAgYm9vbCBtX2ZpbmlzaGVkU3VzcGVuZGluZyB7IGZhbHNlIH07Ci0jZW5kaWYKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IG1fZmluaXNoZWRTdXNwZW5kaW5nSGFuZGxlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggOWU1NmM3NWZkMDRmYzJiOTQxNWM1MzkxOTA3YWNlYzZjNjc3YTEy
YS4uOWY4NDRjNTY2NGVmZmExNDk3ZjZiOGM1NjgzZmEyZTUyYWE3NWE4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03NTAsNyArNzUwLDcgQEAgYm9vbCBX
ZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBzdGQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFt
ZUlESW5QcmV2aW91c1Byb2Nlc3MpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2Vz
cyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2Vz
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
LCAiJXAgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzXG4iLCB0aGlzKTsKQEAgLTc2MCwy
OSArNzYwLDM5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywgQVBJOjpOYXZpZ2F0CiAgICAgICAgIGlmIChiYWNrRm9y
d2FyZExpc3RJdGVtLT5zdXNwZW5kZWRQYWdlKCkgJiYgJmJhY2tGb3J3YXJkTGlzdEl0ZW0tPnN1
c3BlbmRlZFBhZ2UoKS0+cHJvY2VzcygpID09IHByb2Nlc3MucHRyKCkpIHsKICAgICAgICAgICAg
IGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSA9IHRoaXMtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LnRha2VTdXNwZW5kZWRQYWdlKCpiYWNrRm9yd2FyZExpc3RJdGVtLT5zdXNwZW5kZWRQYWdlKCkp
OwogICAgICAgICAgICAgQVNTRVJUKGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSk7Ci0gICAgICAg
ICAgICBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UtPnVuc3VzcGVuZCgpOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7Ci0gICAgYm9vbCBk
aWRTdXNwZW5kUHJldmlvdXNQYWdlID0gc3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShuYXZp
Z2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzKTsKLSAgICBtX3Byb2Nlc3MtPnJl
bW92ZVdlYlBhZ2UoKnRoaXMsIG1fcGFnZUlEKTsKKyAgICBhdXRvKiBkZXN0aW5hdGlvblN1c3Bl
bmRlZFBhZ2VQdHIgPSBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UuZ2V0KCk7CisgICAgYXV0byBk
b1N3YXAgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9u
ID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2VzcyksIG1haW5G
cmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSA9IFdURk1v
dmUoZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvY2Vzc0RpZFRlcm1p
bmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKTsKIAotICAgIG1f
cHJvY2VzcyA9IFdURk1vdmUocHJvY2Vzcyk7Ci0gICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICAg
ICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisgICAgICAgIGJvb2wgZGlkU3Vz
cGVuZFByZXZpb3VzUGFnZSA9IHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUobmF2aWdhdGlv
biwgbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2Vzcyk7CisgICAgICAgIG1fcHJvY2Vzcy0+cmVt
b3ZlV2ViUGFnZSgqdGhpcywgbV9wYWdlSUQpOwogCi0gICAgLy8gSWYgd2UgYXJlIHJlYXR0YWNo
aW5nIHRvIGEgU3VzcGVuZGVkUGFnZSwgdGhlbiB0aGUgV2ViUHJvY2VzcycgV2ViUGFnZSBhbHJl
YWR5IGV4aXN0cyBhbmQKLSAgICAvLyBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSgp
IHdpbGwgbm90IGJlIGNhbGxlZCB0byBpbml0aWFsaXplIG1fbWFpbkZyYW1lLiBJbiBzdWNoCi0g
ICAgLy8gY2FzZSwgd2UgbmVlZCB0byBpbml0aWFsaXplIG1fbWFpbkZyYW1lIHRvIHJlZmxlY3Qg
dGhlIGZhY3QgdGhlIHRoZSBXZWJQcm9jZXNzJyBXZWJQYWdlCi0gICAgLy8gYWxyZWFkeSBleGlz
dHMgYW5kIGFscmVhZHkgaGFzIGEgbWFpbiBmcmFtZS4KLSAgICBpZiAoZGVzdGluYXRpb25TdXNw
ZW5kZWRQYWdlKSB7Ci0gICAgICAgIEFTU0VSVCghbV9tYWluRnJhbWUpOwotICAgICAgICBBU1NF
UlQoJmRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpID09IG1fcHJvY2Vzcy5wdHIo
KSk7Ci0gICAgICAgIG1fbWFpbkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKCp0aGlzLCBk
ZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UtPm1haW5GcmFtZUlEKCkpOwotICAgICAgICBtX3Byb2Nl
c3MtPmZyYW1lQ3JlYXRlZChkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UtPm1haW5GcmFtZUlEKCks
ICptX21haW5GcmFtZSk7Ci0gICAgfQorICAgICAgICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nl
c3MpOworICAgICAgICBtX2lzVmFsaWQgPSB0cnVlOworCisgICAgICAgIC8vIElmIHdlIGFyZSBy
ZWF0dGFjaGluZyB0byBhIFN1c3BlbmRlZFBhZ2UsIHRoZW4gdGhlIFdlYlByb2Nlc3MnIFdlYlBh
Z2UgYWxyZWFkeSBleGlzdHMgYW5kCisgICAgICAgIC8vIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRl
TWFpbkZyYW1lKCkgd2lsbCBub3QgYmUgY2FsbGVkIHRvIGluaXRpYWxpemUgbV9tYWluRnJhbWUu
IEluIHN1Y2gKKyAgICAgICAgLy8gY2FzZSwgd2UgbmVlZCB0byBpbml0aWFsaXplIG1fbWFpbkZy
YW1lIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhlIHRoZSBXZWJQcm9jZXNzJyBXZWJQYWdlCisgICAg
ICAgIC8vIGFscmVhZHkgZXhpc3RzIGFuZCBhbHJlYWR5IGhhcyBhIG1haW4gZnJhbWUuCisgICAg
ICAgIGlmIChkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UpIHsKKyAgICAgICAgICAgIEFTU0VSVCgh
bV9tYWluRnJhbWUpOworICAgICAgICAgICAgQVNTRVJUKCZkZXN0aW5hdGlvblN1c3BlbmRlZFBh
Z2UtPnByb2Nlc3MoKSA9PSBtX3Byb2Nlc3MucHRyKCkpOworICAgICAgICAgICAgbV9tYWluRnJh
bWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUoKnRoaXMsIGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFn
ZS0+bWFpbkZyYW1lSUQoKSk7CisgICAgICAgICAgICBtX3Byb2Nlc3MtPmZyYW1lQ3JlYXRlZChk
ZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UtPm1haW5GcmFtZUlEKCksICptX21haW5GcmFtZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoZGlkU3VzcGVu
ZFByZXZpb3VzUGFnZSA/IFNob3VsZERlbGF5QXR0YWNoaW5nRHJhd2luZ0FyZWE6OlllcyA6IFNo
b3VsZERlbGF5QXR0YWNoaW5nRHJhd2luZ0FyZWE6Ok5vKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICB9OwogCi0gICAgZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKGRpZFN1
c3BlbmRQcmV2aW91c1BhZ2UgPyBTaG91bGREZWxheUF0dGFjaGluZ0RyYXdpbmdBcmVhOjpZZXMg
OiBTaG91bGREZWxheUF0dGFjaGluZ0RyYXdpbmdBcmVhOjpObyk7CisgICAgaWYgKGRlc3RpbmF0
aW9uU3VzcGVuZGVkUGFnZVB0cikKKyAgICAgICAgZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlUHRy
LT51bnN1c3BlbmQoV1RGTW92ZShkb1N3YXApKTsKKyAgICBlbHNlCisgICAgICAgIGRvU3dhcCgp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKFNo
b3VsZERlbGF5QXR0YWNoaW5nRHJhd2luZ0FyZWEgc2hvdWxkRGVsYXlBdHRhY2hpbmdEcmF3aW5n
QXJlYSkKQEAgLTI2NDgsNzEgKzI2NTgsNjkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVl
TmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFIKIAog
ICAgIEFTU0VSVChtX3Byb2Nlc3MucHRyKCkgIT0gcHJvY2Vzcy5wdHIoKSk7CiAKLSAgICBwcm9j
ZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXAp
OwotCi0gICAgc3dhcFRvV2ViUHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3MpLCBuYXZpZ2F0aW9uLCBt
YWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzKTsKKyAgICBzd2FwVG9XZWJQcm9jZXNzKFdURk1v
dmUocHJvY2VzcyksIG5hdmlnYXRpb24sIG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVm
KG5hdmlnYXRpb24pLCBwcmV2aW91c1Byb2Nlc3MgPSBXVEZNb3ZlKHByZXZpb3VzUHJvY2Vzcyks
IG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIG1haW5GcmFtZVVSTCA9IFdURk1vdmUobWFp
bkZyYW1lVVJMKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0
aW9uLT50YXJnZXRJdGVtKCkpIHsKKyAgICAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVBy
b3h5ICVwIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVz
IiwgdGhpcywgaXRlbS0+dXJsKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBpZiAoYXV0byogaXRl
bSA9IG5hdmlnYXRpb24udGFyZ2V0SXRlbSgpKSB7Ci0gICAgICAgIExPRyhMb2FkaW5nLCAiV2Vi
UGFnZVByb3h5ICVwIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0g
VVJMICVzIiwgdGhpcywgaXRlbS0+dXJsKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBh
dXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CisgICAgICAg
ICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24s
IGl0ZW0tPnVybCgpKTsKIAotICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0
YXRlLnRyYW5zYWN0aW9uKCk7Ci0gICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJ
UmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgaXRlbS0+dXJsKCkpOworICAgICAgICAgICAgYXV0byBp
dGVtU3RhdGVzID0gbV9iYWNrRm9yd2FyZExpc3QtPmZpbHRlcmVkSXRlbVN0YXRlcyhbdGhpcywg
dGFyZ2V0SXRlbSA9IGl0ZW1dKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICgmcGFnZS0+cHJvY2VzcygpID09IG1fcHJvY2Vzcy5wdHIoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuICZpdGVtICE9IHRhcmdldEl0ZW07CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBk
YXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goV1RGTW92ZShpdGVtU3RhdGVzKSksIG1fcGFn
ZUlEKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29U
b0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS0+aXRlbUlE
KCksICpuYXZpZ2F0aW9uLT5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpZZXMpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBtX3Byb2Nlc3Mt
PnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCi0gICAgICAgIGF1dG8gaXRlbVN0YXRl
cyA9IG1fYmFja0ZvcndhcmRMaXN0LT5maWx0ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0
ZW0gPSBpdGVtXShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCZwYWdlLT5wcm9jZXNzKCkgPT0gbV9wcm9jZXNzLnB0cigpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gJml0
ZW0gIT0gdGFyZ2V0SXRlbTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goV1RGTW92
ZShpdGVtU3RhdGVzKSksIG1fcGFnZUlEKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24ubmF2aWdhdGlvbklE
KCksIGl0ZW0tPml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUo
KSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMpLCBtX3BhZ2VJRCk7Ci0gICAgICAg
IG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICBpZiAo
bmF2aWdhdGlvbi0+bG9ja0JhY2tGb3J3YXJkTGlzdCgpID09IExvY2tCYWNrRm9yd2FyZExpc3Q6
OlllcyB8fCBuYXZpZ2F0aW9uLT5sb2NrSGlzdG9yeSgpID09IExvY2tIaXN0b3J5OjpZZXMpIHsK
KyAgICAgICAgICAgIC8vIElmIFdlYkNvcmUgaXMgc3VwcG9zZWQgdG8gbG9jayB0aGUgaGlzdG9y
eSBmb3IgdGhpcyBsb2FkLCB0aGVuIHRoZSBuZXcgcHJvY2VzcyBuZWVkcyB0byBrbm93IGFib3V0
IHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbSBzbyBpdCBjYW4gdXBkYXRlCisgICAgICAgICAgICAv
LyBpdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS4KKyAgICAgICAgICAgIGF1dG8gaXRl
bVN0YXRlcyA9IG1fYmFja0ZvcndhcmRMaXN0LT5maWx0ZXJlZEl0ZW1TdGF0ZXMoW2N1cnJlbnRJ
dGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCldKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mIGl0ZW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJml0ZW0gPT0gY3VycmVudEl0
ZW07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0ZW1TdGF0
ZXMuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaChpdGVtU3RhdGVzWzBdKSwg
bV9wYWdlSUQpOworICAgICAgICB9CiAKLSAgICBpZiAobmF2aWdhdGlvbi5sb2NrQmFja0Zvcndh
cmRMaXN0KCkgPT0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIHx8IG5hdmlnYXRpb24ubG9ja0hp
c3RvcnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSB7Ci0gICAgICAgIC8vIElmIFdlYkNvcmUgaXMg
c3VwcG9zZWQgdG8gbG9jayB0aGUgaGlzdG9yeSBmb3IgdGhpcyBsb2FkLCB0aGVuIHRoZSBuZXcg
cHJvY2VzcyBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbSBzbyBp
dCBjYW4gdXBkYXRlCi0gICAgICAgIC8vIGl0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25l
LgotICAgICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX2JhY2tGb3J3YXJkTGlzdC0+ZmlsdGVyZWRJ
dGVtU3RhdGVzKFtjdXJyZW50SXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgp
XShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKSB7Ci0gICAgICAgICAgICByZXR1cm4gJml0
ZW0gPT0gY3VycmVudEl0ZW07Ci0gICAgICAgIH0pOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChp
dGVtU3RhdGVzLnNpemUoKSA9PSAxKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaChpdGVtU3RhdGVzWzBd
KSwgbV9wYWdlSUQpOwotICAgIH0KKyAgICAgICAgLy8gRklYTUU6IFdvcmsgb3V0IHRpbWluZyBv
ZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBldGMKKyAgICAgICAg
QVNTRVJUKCFuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLmlzRW1wdHkoKSk7CisgICAgICAg
IGlmIChhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IG5hdmlnYXRpb24tPnN1YnN0aXR1dGVEYXRhKCkp
CisgICAgICAgICAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uKG5hdmlnYXRpb24sIHsgc3Vic3Rp
dHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkg
fSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1
YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKG5hdmln
YXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgfSwg
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5h
bFNjaGVtZXMsIG51bGxwdHIsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzKTsKIAot
ICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0
IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCi0gICAgQVNTRVJUKCFuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1
ZXN0KCkuaXNFbXB0eSgpKTsKLSAgICBpZiAoYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0
aW9uLnN1YnN0aXR1dGVEYXRhKCkpCi0gICAgICAgIGxvYWREYXRhV2l0aE5hdmlnYXRpb24obmF2
aWdhdGlvbiwgeyBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0aXR1dGVEYXRh
LT5jb250ZW50LnNpemUoKSB9LCBzdWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1YnN0aXR1dGVE
YXRhLT5lbmNvZGluZywgc3Vic3RpdHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1dGVEYXRhLT51
c2VyRGF0YS5nZXQoKSk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uKG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24uY3VycmVudFJlcXVl
c3QoKSB9LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxv
d0V4dGVybmFsU2NoZW1lcywgbnVsbHB0ciwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZ
ZXMpOwotCi0gICAgQVNTRVJUKCFtX21haW5GcmFtZSk7Ci0gICAgbV9tYWluRnJhbWVDcmVhdGlv
bkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0
aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgcmVxdWVzdCA9ICBuYXZpZ2F0aW9uLmN1cnJlbnRS
ZXF1ZXN0KCksIG1haW5GcmFtZVVSTCwgaXNTZXJ2ZXJSZWRpcmVjdCA9IG5hdmlnYXRpb24uY3Vy
cmVudFJlcXVlc3RJc1JlZGlyZWN0KCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChtX21h
aW5GcmFtZSk7Ci0gICAgICAgIC8vIFJlc3RvcmUgdGhlIG1haW4gZnJhbWUncyBjb21taXR0ZWQg
VVJMIGFzIHNvbWUgY2xpZW50cyBtYXkgcmVseSBvbiBpdCB1bnRpbCB0aGUgbmV4dCBsb2FkIGlz
IGNvbW1pdHRlZC4KLSAgICAgICAgbV9tYWluRnJhbWUtPmZyYW1lTG9hZFN0YXRlKCkuc2V0VVJM
KG1haW5GcmFtZVVSTCk7Ci0KLSAgICAgICAgLy8gTm9ybWFsbHksIG5vdGlmaWNhdGlvbiBvZiBh
IHNlcnZlciByZWRpcmVjdCBjb21lcyBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCi0gICAg
ICAgIC8vIElmIHdlIGFyZSBwcm9jZXNzIHN3YXBwaW5nIGluIHJlc3BvbnNlIHRvIGEgc2VydmVy
IHJlZGlyZWN0IHRoZW4gdGhhdCBub3RpZmljYXRpb24gd2lsbCBub3QgY29tZSBmcm9tIHRoZSBu
ZXcgV2ViQ29udGVudCBwcm9jZXNzLgotICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgaGF2ZSB0
aGUgVUlQcm9jZXNzIHN5bnRoZXNpemUgdGhlIHJlZGlyZWN0IG5vdGlmaWNhdGlvbiBhdCB0aGUg
YXBwcm9wcmlhdGUgdGltZS4KLSAgICAgICAgaWYgKGlzU2VydmVyUmVkaXJlY3QpIHsKLSAgICAg
ICAgICAgIG1fbWFpbkZyYW1lLT5mcmFtZUxvYWRTdGF0ZSgpLmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKHJlcXVlc3QudXJsKCkpOwotICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9tYWluRnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCksIFdURk1vdmUocmVxdWVzdCksIHsgfSk7Ci0gICAgICAgIH0K
LSAgICB9OworICAgICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsKKyAgICAgICAgbV9tYWluRnJh
bWVDcmVhdGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvbi5jb3B5UmVmKCksIHJlcXVlc3QgPSAgbmF2aWdhdGlv
bi0+Y3VycmVudFJlcXVlc3QoKSwgbWFpbkZyYW1lVVJMLCBpc1NlcnZlclJlZGlyZWN0ID0gbmF2
aWdhdGlvbi0+Y3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBBU1NFUlQobV9tYWluRnJhbWUpOworICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUgbWFp
biBmcmFtZSdzIGNvbW1pdHRlZCBVUkwgYXMgc29tZSBjbGllbnRzIG1heSByZWx5IG9uIGl0IHVu
dGlsIHRoZSBuZXh0IGxvYWQgaXMgY29tbWl0dGVkLgorICAgICAgICAgICAgbV9tYWluRnJhbWUt
PmZyYW1lTG9hZFN0YXRlKCkuc2V0VVJMKG1haW5GcmFtZVVSTCk7CisKKyAgICAgICAgICAgIC8v
IE5vcm1hbGx5LCBub3RpZmljYXRpb24gb2YgYSBzZXJ2ZXIgcmVkaXJlY3QgY29tZXMgZnJvbSB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLgorICAgICAgICAgICAgLy8gSWYgd2UgYXJlIHByb2Nlc3Mg
c3dhcHBpbmcgaW4gcmVzcG9uc2UgdG8gYSBzZXJ2ZXIgcmVkaXJlY3QgdGhlbiB0aGF0IG5vdGlm
aWNhdGlvbiB3aWxsIG5vdCBjb21lIGZyb20gdGhlIG5ldyBXZWJDb250ZW50IHByb2Nlc3MuCisg
ICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgaGF2ZSB0aGUgVUlQcm9jZXNzIHN5bnRoZXNp
emUgdGhlIHJlZGlyZWN0IG5vdGlmaWNhdGlvbiBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4KKyAg
ICAgICAgICAgIGlmIChpc1NlcnZlclJlZGlyZWN0KSB7CisgICAgICAgICAgICAgICAgbV9tYWlu
RnJhbWUtPmZyYW1lTG9hZFN0YXRlKCkuZGlkU3RhcnRQcm92aXNpb25hbExvYWQocmVxdWVzdC51
cmwoKSk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUobV9tYWluRnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbi0+bmF2
aWdhdGlvbklEKCksIFdURk1vdmUocmVxdWVzdCksIHsgfSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH07CiAKLSAgICBib29sIGlzSW5pdGlhbE5hdmlnYXRpb25Jbk5ld1dpbmRvdyA9IG9wZW5l
ZEJ5RE9NKCkgJiYgIWhhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMoKTsKLSAgICBpZiAo
IWlzSW5pdGlhbE5hdmlnYXRpb25Jbk5ld1dpbmRvdyB8fCAhbWFpbkZyYW1lSURJblByZXZpb3Vz
UHJvY2VzcykKLSAgICAgICAgcmV0dXJuOworICAgICAgICBib29sIGlzSW5pdGlhbE5hdmlnYXRp
b25Jbk5ld1dpbmRvdyA9IG9wZW5lZEJ5RE9NKCkgJiYgIWhhc0NvbW1pdHRlZEFueVByb3Zpc2lv
bmFsTG9hZHMoKTsKKyAgICAgICAgaWYgKCFpc0luaXRpYWxOYXZpZ2F0aW9uSW5OZXdXaW5kb3cg
fHwgIW1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MpCisgICAgICAgICAgICByZXR1cm47CiAK
LSAgICBtX21haW5GcmFtZVdpbmRvd0NyZWF0aW9uSGFuZGxlciA9IFt0aGlzLCBwcmV2aW91c1By
b2Nlc3MgPSBXVEZNb3ZlKHByZXZpb3VzUHJvY2VzcyksIG1haW5GcmFtZUlESW5QcmV2aW91c1By
b2Nlc3MgPSAqbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2Vzc10oY29uc3QgR2xvYmFsV2luZG93
SWRlbnRpZmllciYgd2luZG93SWRlbnRpZmllcikgewotICAgICAgICBBU1NFUlQobV9tYWluRnJh
bWUpOwotICAgICAgICBHbG9iYWxGcmFtZUlkZW50aWZpZXIgbmF2aWdhdGVkRnJhbWVJZGVudGlm
aWVySW5OZXdQcm9jZXNzIHsgcGFnZUlEKCksIG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkgfTsKLSAg
ICAgICAgcHJldmlvdXNQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGcmFtZUJlY2Ft
ZVJlbW90ZShtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzLCBuYXZpZ2F0ZWRGcmFtZUlkZW50
aWZpZXJJbk5ld1Byb2Nlc3MsIHdpbmRvd0lkZW50aWZpZXIpLCBwYWdlSUQoKSk7Ci0gICAgfTsK
KyAgICAgICAgbV9tYWluRnJhbWVXaW5kb3dDcmVhdGlvbkhhbmRsZXIgPSBbdGhpcywgcHJldmlv
dXNQcm9jZXNzID0gV1RGTW92ZShwcmV2aW91c1Byb2Nlc3MpLCBtYWluRnJhbWVJREluUHJldmlv
dXNQcm9jZXNzID0gKm1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3NdKGNvbnN0IEdsb2JhbFdp
bmRvd0lkZW50aWZpZXImIHdpbmRvd0lkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIEFTU0VSVCht
X21haW5GcmFtZSk7CisgICAgICAgICAgICBHbG9iYWxGcmFtZUlkZW50aWZpZXIgbmF2aWdhdGVk
RnJhbWVJZGVudGlmaWVySW5OZXdQcm9jZXNzIHsgcGFnZUlEKCksIG1fbWFpbkZyYW1lLT5mcmFt
ZUlEKCkgfTsKKyAgICAgICAgICAgIHByZXZpb3VzUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RnJhbWVCZWNhbWVSZW1vdGUobWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcywgbmF2
aWdhdGVkRnJhbWVJZGVudGlmaWVySW5OZXdQcm9jZXNzLCB3aW5kb3dJZGVudGlmaWVyKSwgcGFn
ZUlEKCkpOworICAgICAgICB9OworICAgIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggOWY3NDU5YjI0MDU2MDEwMDQwODI1ZDkzZDU3NGUxNzEzYTRjNTZhYy4u
MDMzMDFhYjA3ZDFkODA5NTFhNDcyNDAzYTdlYzA5M2YyYjFhYzVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NDMsNyArMTU0Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRDYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMoYm9vbCBjYW5T
aG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMpIHsgbV9jYW5TaG9ydENpcmN1aXRIb3Jp
em9udGFsV2hlZWxFdmVudHMgPSBjYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHM7
IH0KIAogICAgIHZvaWQgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKLSAgICB2b2lkIHN3YXBUb1dl
YlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0aW9uJiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2Vzcyk7CisgICAgdm9p
ZCBzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlv
biYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3Ms
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGZpbmlzaEF0dGFjaGlu
Z1RvV2ViUHJvY2VzcyhTaG91bGREZWxheUF0dGFjaGluZ0RyYXdpbmdBcmVhID0gU2hvdWxkRGVs
YXlBdHRhY2hpbmdEcmF3aW5nQXJlYTo6Tm8pOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>