<?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>197426</bug_id>
          
          <creation_ts>2019-04-30 12:08:55 -0700</creation_ts>
          <short_desc>Regression(PSON) URL scheme handlers can no longer respond asynchronously</short_desc>
          <delta_ts>2019-04-30 19:45:18 -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>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>
          
          
          <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 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>sroberts</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1531619</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-30 12:08:55 -0700</bug_when>
    <thetext>URL scheme handlers can no longer respond asynchronously or the task will be stopped before it gets a chance to finish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531620</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-30 12:09:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/50256169&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531629</commentid>
    <comment_count>2</comment_count>
      <attachid>368587</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-30 12:27:02 -0700</bug_when>
    <thetext>Created attachment 368587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531701</commentid>
    <comment_count>3</comment_count>
      <attachid>368587</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-30 14:11:13 -0700</bug_when>
    <thetext>Comment on attachment 368587
Patch

Clearing flags on attachment: 368587

Committed r244802: &lt;https://trac.webkit.org/changeset/244802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531702</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-30 14:11:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531759</commentid>
    <comment_count>5</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-04-30 16:35:32 -0700</bug_when>
    <thetext>After changes in https://trac.webkit.org/changeset/244802

The following API test is crashing on Debug builds

TestWebKitAPI.URLSchemeHandler.Leaks2

ASSERTION FAILED: result.isNewEntry
        /Volumes/Data/slave/highsierra-debug/build/Source/WebKit/UIProcess/WebURLSchemeHandler.cpp(54) : void WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy &amp;, WebKit::WebProcessProxy &amp;, uint64_t, WebCore::ResourceRequest &amp;&amp;, WebKit::SyncLoadCompletionHandler &amp;&amp;)
        1   0x1034bede9 WTFCrash
        2   0x10899289b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x10957645a WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy&amp;, WebKit::WebProcessProxy&amp;, unsigned long long, WebCore::ResourceRequest&amp;&amp;, WTF::CompletionHandler&lt;void (WebCore::ResourceResponse const&amp;, WebCore::ResourceError const&amp;, IPC::DataReference const&amp;)&gt;&amp;&amp;)
        4   0x1094a84a6 WebKit::WebPageProxy::startURLSchemeTaskShared(WTF::Ref&lt;WebKit::WebProcessProxy, WTF::DumbPtrTraits&lt;WebKit::WebProcessProxy&gt; &gt;&amp;&amp;, WebKit::URLSchemeTaskParameters&amp;&amp;)
        5   0x1094a8252 WebKit::WebPageProxy::startURLSchemeTask(WebKit::URLSchemeTaskParameters&amp;&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531763</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-30 16:37:56 -0700</bug_when>
    <thetext>(In reply to Shawn Roberts from comment #5)
&gt; After changes in https://trac.webkit.org/changeset/244802
&gt; 
&gt; The following API test is crashing on Debug builds
&gt; 
&gt; TestWebKitAPI.URLSchemeHandler.Leaks2
&gt; 
&gt; ASSERTION FAILED: result.isNewEntry
&gt;        
&gt; /Volumes/Data/slave/highsierra-debug/build/Source/WebKit/UIProcess/
&gt; WebURLSchemeHandler.cpp(54) : void
&gt; WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy &amp;,
&gt; WebKit::WebProcessProxy &amp;, uint64_t, WebCore::ResourceRequest &amp;&amp;,
&gt; WebKit::SyncLoadCompletionHandler &amp;&amp;)
&gt;         1   0x1034bede9 WTFCrash
&gt;         2   0x10899289b WTFCrashWithInfo(int, char const*, char const*, int)
&gt;         3   0x10957645a
&gt; WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy&amp;,
&gt; WebKit::WebProcessProxy&amp;, unsigned long long, WebCore::ResourceRequest&amp;&amp;,
&gt; WTF::CompletionHandler&lt;void (WebCore::ResourceResponse const&amp;,
&gt; WebCore::ResourceError const&amp;, IPC::DataReference const&amp;)&gt;&amp;&amp;)
&gt;         4   0x1094a84a6
&gt; WebKit::WebPageProxy::startURLSchemeTaskShared(WTF::Ref&lt;WebKit::
&gt; WebProcessProxy, WTF::DumbPtrTraits&lt;WebKit::WebProcessProxy&gt; &gt;&amp;&amp;,
&gt; WebKit::URLSchemeTaskParameters&amp;&amp;)
&gt;         5   0x1094a8252
&gt; WebKit::WebPageProxy::startURLSchemeTask(WebKit::URLSchemeTaskParameters&amp;&amp;)

Looking now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531769</commentid>
    <comment_count>7</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-04-30 16:42:27 -0700</bug_when>
    <thetext>https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK1%20%28Tests%29/builds/8940/steps/run-api-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531770</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-30 16:42:31 -0700</bug_when>
    <thetext>    ASSERTION FAILED: result.isNewEntry
    /Volumes/Data/slave/highsierra-debug/build/Source/WebKit/UIProcess/WebURLSchemeHandler.cpp(54) : void WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy &amp;, WebKit::WebProcessProxy &amp;, uint64_t, WebCore::ResourceRequest &amp;&amp;, WebKit::SyncLoadCompletionHandler &amp;&amp;)
    1   0x1034bede9 WTFCrash
    2   0x10899289b WTFCrashWithInfo(int, char const*, char const*, int)
    3   0x10957645a WebKit::WebURLSchemeHandler::startTask(WebKit::WebPageProxy&amp;, WebKit::WebProcessProxy&amp;, unsigned long long, WebCore::ResourceRequest&amp;&amp;, WTF::CompletionHandler&lt;void (WebCore::ResourceResponse const&amp;, WebCore::ResourceError const&amp;, IPC::DataReference const&amp;)&gt;&amp;&amp;)
    4   0x1094a84a6 WebKit::WebPageProxy::startURLSchemeTaskShared(WTF::Ref&lt;WebKit::WebProcessProxy, WTF::DumbPtrTraits&lt;WebKit::WebProcessProxy&gt; &gt;&amp;&amp;, WebKit::URLSchemeTaskParameters&amp;&amp;)
    5   0x1094a8252 WebKit::WebPageProxy::startURLSchemeTask(WebKit::URLSchemeTaskParameters&amp;&amp;)
    6   0x109f7d0aa void IPC::callMemberFunctionImpl&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&amp;&amp;), std::__1::tuple&lt;WebKit::URLSchemeTaskParameters&gt;, 0ul&gt;(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&amp;&amp;), std::__1::tuple&lt;WebKit::URLSchemeTaskParameters&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul&gt;)
    7   0x109f7d000 void IPC::callMemberFunction&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&amp;&amp;), std::__1::tuple&lt;WebKit::URLSchemeTaskParameters&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul&gt; &gt;(std::__1::tuple&lt;WebKit::URLSchemeTaskParameters&gt;&amp;&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&amp;&amp;))
    8   0x109ee9ebe void IPC::handleMessage&lt;Messages::WebPageProxy::StartURLSchemeTask, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&amp;&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WebKit::URLSchemeTaskParameters&amp;&amp;))
    9   0x109eda7ba WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
    10  0x108a69aca IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
    11  0x109241954 WebKit::AuxiliaryProcessProxy::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
    12  0x10956c0da WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
    13  0x1089f277c IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
    14  0x1089e48a1 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
    15  0x1089efbd1 IPC::Connection::dispatchIncomingMessages()
    16  0x108a146a2 IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14::operator()()
    17  0x108a145c9 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()
    18  0x1034e95cd WTF::Function&lt;void ()&gt;::operator()() const
    19  0x10354bdb3 WTF::RunLoop::performWork()
    20  0x10354c744 WTF::RunLoop::performWork(void*)
    21  0x7fff514c7011 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
    22  0x7fff5157e8ec __CFRunLoopDoSource0
    23  0x7fff514a9fc0 __CFRunLoopDoSources0
    24  0x7fff514a943d __CFRunLoopRun
    25  0x7fff514a8c97 CFRunLoopRunSpecific
    26  0x7fff535c0e76 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
    27  0x102333b62 TestWebKitAPI::Util::spinRunLoop(unsigned long long)
    28  0x10243adfa runUntilTasksInFlight(unsigned long)
    29  0x10243b39c URLSchemeHandler_Leaks2_Test::TestBody()
    30  0x1025158be void testing::internal::HandleSehExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
    31  0x1024bc7eb void testing::internal::HandleExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
TestWebKitAPI.URLSchemeHandler.Leaks2 Crashed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531775</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-30 16:50:43 -0700</bug_when>
    <thetext>Reopening due to API test failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531780</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-30 16:56:16 -0700</bug_when>
    <thetext>Reverted r244802 for reason:

Caused an API test failure

Committed r244812: &lt;https://trac.webkit.org/changeset/244812&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531838</commentid>
    <comment_count>11</comment_count>
      <attachid>368646</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-30 19:04:40 -0700</bug_when>
    <thetext>Created attachment 368646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531842</commentid>
    <comment_count>12</comment_count>
      <attachid>368646</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-30 19:45:16 -0700</bug_when>
    <thetext>Comment on attachment 368646
Patch

Clearing flags on attachment: 368646

Committed r244819: &lt;https://trac.webkit.org/changeset/244819&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531843</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-30 19:45:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368587</attachid>
            <date>2019-04-30 12:27:02 -0700</date>
            <delta_ts>2019-04-30 19:04:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197426-20190430122702.patch</filename>
            <type>text/plain</type>
            <size>13531</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0Nzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA4NjZiZmU2YTdmYTk1YWFl
OTcwZDEwNjRhYmI0MThmMTE1YTM1ZjIuLjk5ODM0ZTc0ZGEzNmFmYzJlMzExNDA5NjE0MDU1Y2Rj
OTEwZWYzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTktMDQtMzAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKFBTT04pIFVSTCBz
Y2hlbWUgaGFuZGxlcnMgY2FuIG5vIGxvbmdlciByZXNwb25kIGFzeW5jaHJvbm91c2x5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc0MjYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzUwMjU2MTY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpc3N1ZSB3YXMgdGhhdCB3aGVuIGNvbW1pdHRpbmcg
dGhlIHByb3Zpc2lvbmFsIHByb2Nlc3MsIHdlIHdvdWxkIGNhbGwgV2ViUGFnZVByb3h5Ojpwcm9j
ZXNzRGlkVGVybWluYXRlKCkKKyAgICAgICAgd2hpY2ggd291bGQgY2FsbCBXZWJQYWdlUHJveHk6
OnN0b3BBbGxVUkxTY2hlbWVUYXNrcygpLiBUaGlzIHdvdWxkIHRlcm1pbmF0ZSBhbGwgVVJMIHNj
aGVtZSB0YXNrcyBhc3NvY2lhdGVkCisgICAgICAgIHdpdGggdGhlIHBhZ2UsIGluY2x1ZGluZyB0
aGUgb25lIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlzaXNpb25hbCBwYWdlIC8gcHJvY2Vzcy4K
KworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgcGFzcyBtX3Byb2Nlc3MgdG8gc3RvcEFs
bFVSTFNjaGVtZVRhc2tzKCkgaW4gcHJvY2Vzc0RpZFRlcm1pbmF0ZSgpIGFuZCBvbmx5IHN0b3Ag
dGhlCisgICAgICAgIHRhc2tzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbV9wcm9jZXNzICh3aGljaCBp
cyB0aGUgcHJvY2VzcyB3ZSdyZSBhYm91dCB0byBzd2FwIGF3YXkgZnJvbSkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzdG9wQWxsVVJMU2NoZW1lVGFza3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OnByb2Nlc3NGb3JUYXNrSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BBbGxUYXNrc0Zv
clBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMU2NoZW1lVGFzazo6cHJvY2VzcyBjb25zdCk6CisKIDIwMTktMDQtMzAgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEb3VibGUtdGFwcGluZyBhIHBv
c3QgdG8gbGlrZSBkb2Vzbid0IHdvcmsgb24gSW5zdGFncmFtLmNvbSAobmVlZHMgJ2RibGNsaWNr
JyBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDNk
MmM5ZTE3MDc4MjRmMDU4Zjg3M2Q3YTkxYTQzNTI5ZGFkZTc4NDYuLjllMzU0OGMzZGQ5MmE4OWFh
YzBmNTE1ZWNiMTg0YmM5ZTEzNjY5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtNjc0MCw3ICs2NzQwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nl
c3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKICAgICAgICAg
ICAgIGF1dG9tYXRpb25TZXNzaW9uLT50ZXJtaW5hdGUoKTsKICAgICB9CiAKLSAgICBzdG9wQWxs
VVJMU2NoZW1lVGFza3MoKTsKKyAgICBzdG9wQWxsVVJMU2NoZW1lVGFza3MobV9wcm9jZXNzLnB0
cigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb3Zpc2lvbmFsUHJvY2Vzc0RpZFRlcm1p
bmF0ZSgpCkBAIC02ODAwLDE0ICs2ODAwLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFJl
Y2VudENyYXNoQ291bnQoKQogICAgIG1fcmVjZW50Q3Jhc2hDb3VudCA9IDA7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpzdG9wQWxsVVJMU2NoZW1lVGFza3MoKQordm9pZCBXZWJQYWdlUHJveHk6
OnN0b3BBbGxVUkxTY2hlbWVUYXNrcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiB7CiAgICAg
SGFzaFNldDxXZWJVUkxTY2hlbWVIYW5kbGVyKj4gaGFuZGxlcnM7CiAgICAgZm9yIChhdXRvJiBo
YW5kbGVyIDogbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lLnZhbHVlcygpKQogICAgICAgICBo
YW5kbGVycy5hZGQoaGFuZGxlci5wdHIoKSk7CiAKICAgICBmb3IgKGF1dG8qIGhhbmRsZXIgOiBo
YW5kbGVycykKLSAgICAgICAgaGFuZGxlci0+c3RvcEFsbFRhc2tzRm9yUGFnZSgqdGhpcyk7Cisg
ICAgICAgIGhhbmRsZXItPnN0b3BBbGxUYXNrc0ZvclBhZ2UoKnRoaXMsIHByb2Nlc3MpOwogfQog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggOTE2MTFlZWQ1MjUzMjc1NTdhMjMzNjQ2NTE3NDk5NmVmODcyMDgxMS4uMzc2
NThkOGMwNzA3ZTJhMzRjZmRlZGYwNTA4OGY0MzIwYzlhOTY1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwMDEsNyArMjAwMSw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHZpZXdJc0JlY29taW5nVmlzaWJsZSgpOwogCi0gICAgdm9pZCBzdG9wQWxsVVJMU2No
ZW1lVGFza3MoKTsKKyAgICB2b2lkIHN0b3BBbGxVUkxTY2hlbWVUYXNrcyhXZWJQcm9jZXNzUHJv
eHkqID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGNsZWFySW5zcGVjdG9yVGFyZ2V0cygpOwogICAg
IHZvaWQgY3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAppbmRleCA1YmE3ZmNlZjhlNDM4YmQyZDc3YmYy
ZWU3NTk3ZmMxYjlhMTg3NTFhLi5lMzU1MzE5ZWE0YzRlZTY1MWM2YmVkZjdjODZmYmRkMjFmMjlk
YzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVy
LmNwcApAQCAtNjAsMTcgKzYwLDMxIEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6c3RhcnRU
YXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAgICAgcGxh
dGZvcm1TdGFydFRhc2socGFnZSwgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKLXZvaWQg
V2ViVVJMU2NoZW1lSGFuZGxlcjo6c3RvcEFsbFRhc2tzRm9yUGFnZShXZWJQYWdlUHJveHkmIHBh
Z2UpCitXZWJQcm9jZXNzUHJveHkqIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnByb2Nlc3NGb3JUYXNr
SWRlbnRpZmllcih1aW50NjRfdCB0YXNrSWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV90YXNrcy5maW5kKHRhc2tJZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3Ig
PT0gbV90YXNrcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGl0
ZXJhdG9yLT52YWx1ZS0+cHJvY2VzcygpOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6
OnN0b3BBbGxUYXNrc0ZvclBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVy
LmZpbmQocGFnZS5wYWdlSUQoKSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fdGFza3NCeVBhZ2VJ
ZGVudGlmaWVyLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiB0YXNrc0J5UGFn
ZSA9IGl0ZXJhdG9yLT52YWx1ZTsKLSAgICB3aGlsZSAoIXRhc2tzQnlQYWdlLmlzRW1wdHkoKSkK
LSAgICAgICAgc3RvcFRhc2socGFnZSwgKnRhc2tzQnlQYWdlLmJlZ2luKCkpOworICAgIFZlY3Rv
cjx1aW50NjRfdD4gdGFza0lkZW50aWZpZXJzVG9TdG9wOworICAgIHRhc2tJZGVudGlmaWVyc1Rv
U3RvcC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRhc2tzQnlQYWdlLnNpemUoKSk7CisgICAgZm9y
IChhdXRvIHRhc2tJZGVudGlmaWVyIDogdGFza3NCeVBhZ2UpIHsKKyAgICAgICAgaWYgKCFwcm9j
ZXNzIHx8IHByb2Nlc3NGb3JUYXNrSWRlbnRpZmllcih0YXNrSWRlbnRpZmllcikgPT0gcHJvY2Vz
cykKKyAgICAgICAgICAgIHRhc2tJZGVudGlmaWVyc1RvU3RvcC51bmNoZWNrZWRBcHBlbmQodGFz
a0lkZW50aWZpZXIpOworICAgIH0KKworICAgIGZvciAoYXV0byYgdGFza0lkZW50aWZpZXIgOiB0
YXNrSWRlbnRpZmllcnNUb1N0b3ApCisgICAgICAgIHN0b3BUYXNrKHBhZ2UsIHRhc2tJZGVudGlm
aWVyKTsKIAotICAgIEFTU0VSVChtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5maW5kKHBhZ2UucGFn
ZUlEKCkpID09IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgpKTsKIH0KIAogdm9pZCBXZWJV
UkxTY2hlbWVIYW5kbGVyOjpzdG9wVGFzayhXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHRh
c2tJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFu
ZGxlci5oCmluZGV4IGFjODEyZjI1YzE2ZTE5OTdjOWUzNDJkODhiNWYyNmI4YjlhNWZkNTQuLjg5
OTc2YzYxZjgzZDUyYjgxZjJjNDQwN2MyYzViYmQ3M2JmMmFlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzdGFydFRhc2soV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5
JiwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBT
eW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgc3RvcFRhc2soV2ViUGFnZVBy
b3h5JiwgdWludDY0X3QgdGFza0lkZW50aWZpZXIpOwotICAgIHZvaWQgc3RvcEFsbFRhc2tzRm9y
UGFnZShXZWJQYWdlUHJveHkmKTsKKyAgICB2b2lkIHN0b3BBbGxUYXNrc0ZvclBhZ2UoV2ViUGFn
ZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5Kik7CiAgICAgdm9pZCB0YXNrQ29tcGxldGVkKFdlYlVS
TFNjaGVtZVRhc2smKTsKIAogcHJvdGVjdGVkOgpAQCAtNjcsNiArNjcsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVRhc2tDb21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYp
ID0gMDsKIAogICAgIHZvaWQgcmVtb3ZlVGFza0Zyb21QYWdlTWFwKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgdGFza0lEKTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JUYXNrSWRl
bnRpZmllcih1aW50NjRfdCkgY29uc3Q7CiAKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBkNDhhNDA4
ZTQ5MDI0MjY4NTBiMTU2ODhkMzY2MmI3MmM4Njc5ZGFkLi5iODcyMDczYmQyNzgxZmYwOWI5YmYy
NTMzMTYyYzA1YWE2OWMwM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICB1aW50NjRfdCBwYWdl
SUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CisgICAgV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzLmdldCgpOyB9CiAKICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBt
X3JlcXVlc3Q7IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDUwZmExMDc1M2M4MDBlM2QxNmQ5Zjk4N2E3MDAwMDc2MjRlNTU2ZDAuLjE2ZDFk
YzI2MmExYTQ0NTM0NjZkNTQ5MmNkYjU2ZTkyMzIzMThkODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOS0wNC0z
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24o
UFNPTikgVVJMIHNjaGVtZSBoYW5kbGVycyBjYW4gbm8gbG9uZ2VyIHJlc3BvbmQgYXN5bmNocm9u
b3VzbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NzQyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTAyNTYxNjk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9u
TmF2aWdhdGlvbi5tbToKKyAgICAgICAgKC1bUFNPTlNjaGVtZSBzZXRTaG91bGRSZXNwb25kQXN5
bmNocm9ub3VzbHk6XSk6CisgICAgICAgICgtW1BTT05TY2hlbWUgd2ViVmlldzpzdGFydFVSTFNj
aGVtZVRhc2s6XSk6CisgICAgICAgICgtW1BTT05TY2hlbWUgd2ViVmlldzpzdG9wVVJMU2NoZW1l
VGFzazpdKToKKwogMjAxOS0wNC0zMCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW2V3cy1idWlsZF0gRW5hYmxlIHdlYmtpdHB5IHF1ZXVlIG9uIG5ldyBF
V1MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGE0NzZmZGIwZmU3NDkwZWNh
ZmMzZGJhYTliMTY2ZTBmNTY4M2I0NjUuLmE1OTljMjgzMjE1NGQyYWJkZmQ4YmEzMDA2YWEzMGI2
MTdiNTYxNmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtNDgsNiArNDgs
NyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0
IDxXZWJLaXQvX1dLV2Vic2l0ZVBvbGljaWVzLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4K
ICNpbXBvcnQgPHd0Zi9EZXF1ZS5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQg
PHd0Zi9IYXNoU2V0Lmg+CkBAIC0yMzgsNiArMjM5LDggQEAgQGludGVyZmFjZSBQU09OU2NoZW1l
IDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4gewogICAgIGNvbnN0IGNoYXIqIF9ieXRl
czsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBfcmVkaXJlY3RzOwogICAgIEhhc2hNYXA8
U3RyaW5nLCBSZXRhaW5QdHI8TlNEYXRhPj4gX2RhdGFNYXBwaW5nczsKKyAgICBIYXNoU2V0PGlk
IDxXS1VSTFNjaGVtZVRhc2s+PiBfcnVubmluZ1Rhc2tzOworICAgIGJvb2wgX3Nob3VsZFJlc3Bv
bmRBc3luY2hyb25vdXNseTsKIH0KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEJ5dGVzOihjb25z
dCBjaGFyKilieXRlczsKIC0gKHZvaWQpYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOihOU1N0cmlu
ZyAqKXNvdXJjZVVSTFN0cmluZyB0b1VSTFN0cmluZzooTlNTdHJpbmcgKilkZXN0aW5hdGlvblVS
TFN0cmluZzsKQEAgLTI2Myw4ICsyNjYsMjkgQEAgLSAodm9pZClhZGRNYXBwaW5nRnJvbVVSTFN0
cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmcgdG9EYXRhOihjb25zdCBjaGFyKilkYXRhCiAgICAg
X2RhdGFNYXBwaW5ncy5zZXQodXJsU3RyaW5nLCBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6
KHZvaWQqKWRhdGEgbGVuZ3RoOnN0cmxlbihkYXRhKSBmcmVlV2hlbkRvbmU6Tk9dKTsKIH0KIAor
LSAodm9pZClzZXRTaG91bGRSZXNwb25kQXN5bmNocm9ub3VzbHk6KEJPT0wpdmFsdWUKK3sKKyAg
ICBfc2hvdWxkUmVzcG9uZEFzeW5jaHJvbm91c2x5ID0gdmFsdWU7Cit9CisKIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNj
aGVtZVRhc2s+KXRhc2sKIHsKKyAgICBpZiAoWyhpZDxXS1VSTFNjaGVtZVRhc2tQcml2YXRlPil0
YXNrIF9yZXF1ZXN0T25seUlmQ2FjaGVkXSkgeworICAgICAgICBbdGFzayBkaWRGYWlsV2l0aEVy
cm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAIlRlc3RXZWJLaXRBUEkiIGNvZGU6MSB1c2Vy
SW5mbzpuaWxdXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9ydW5uaW5nVGFza3Mu
YWRkKHRhc2spOworCisgICAgYXV0byBkb0FzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkgPSBbc2Vs
Ziwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgdGFzayA9IHJldGFpblB0cih0YXNrKV0o
RnVuY3Rpb248dm9pZChpZCA8V0tVUkxTY2hlbWVUYXNrPik+JiYgZiwgZG91YmxlIGRlbGF5KSB7
CisgICAgICAgIGlmICghX3Nob3VsZFJlc3BvbmRBc3luY2hyb25vdXNseSkKKyAgICAgICAgICAg
IHJldHVybiBmKHRhc2suZ2V0KCkpOworICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90
aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWxheSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbc2VsZiwgc3Ryb25nU2VsZiwgdGFzaywgZiA9
IFdURk1vdmUoZildIHsKKyAgICAgICAgICAgIGlmIChfcnVubmluZ1Rhc2tzLmNvbnRhaW5zKHRh
c2suZ2V0KCkpKQorICAgICAgICAgICAgICAgIGYodGFzay5nZXQoKSk7CisgICAgICAgIH0pLmdl
dCgpKTsKKyAgICB9OworCiAgICAgTlNVUkwgKmZpbmFsVVJMID0gdGFzay5yZXF1ZXN0LlVSTDsK
ICAgICBhdXRvIHRhcmdldCA9IF9yZWRpcmVjdHMuZ2V0KHRhc2sucmVxdWVzdC5VUkwuYWJzb2x1
dGVTdHJpbmcpOwogICAgIGlmICghdGFyZ2V0LmlzRW1wdHkoKSkgewpAQCAtMjc2LDI3ICszMDAs
MzAgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1l
VGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGEKICAgICAgICAgWyhpZDxXS1VSTFNjaGVtZVRh
c2tQcml2YXRlPil0YXNrIF9kaWRQZXJmb3JtUmVkaXJlY3Rpb246cmVkaXJlY3RSZXNwb25zZS5n
ZXQoKSBuZXdSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwogICAgIH0KIAotICAgIGlmIChbKGlkPFdL
VVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgX3JlcXVlc3RPbmx5SWZDYWNoZWRdKSB7Ci0gICAg
ICAgIFt0YXNrIGRpZEZhaWxXaXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiVGVz
dFdlYktpdEFQSSIgY29kZToxIHVzZXJJbmZvOm5pbF1dOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05T
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOmZpbmFsVVJMIE1JTUVUeXBlOkAidGV4dC9o
dG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwotICAg
IFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisgICAgZG9Bc3luY2hy
b25vdXNseUlmTmVjZXNzYXJ5KFtmaW5hbFVSTCA9IHJldGFpblB0cihmaW5hbFVSTCldKGlkIDxX
S1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+
IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOmZp
bmFsVVJMLmdldCgpIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6
MSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6cmVzcG9uc2UuZ2V0KCldOworICAgIH0sIDAuMSk7CiAKLSAgICBpZiAoYXV0byBkYXRhID0g
X2RhdGFNYXBwaW5ncy5nZXQoW2ZpbmFsVVJMIGFic29sdXRlU3RyaW5nXSkpCi0gICAgICAgIFt0
YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOwotICAgIGVsc2UgaWYgKF9ieXRlcykgewot
ICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCeXRlc05vQ29weToodm9pZCAqKV9ieXRlcyBsZW5ndGg6c3RybGVuKF9ieXRlcykg
ZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0
KCldOwotICAgIH0gZWxzZQotICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbQCJIZWxsbyIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICBkb0FzeW5jaHJv
bm91c2x5SWZOZWNlc3NhcnkoW3NlbGYsIGZpbmFsVVJMID0gcmV0YWluUHRyKGZpbmFsVVJMKV0o
aWQgPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgICAgICBpZiAoYXV0byBkYXRhID0gX2Rh
dGFNYXBwaW5ncy5nZXQoW2ZpbmFsVVJMIGFic29sdXRlU3RyaW5nXSkpCisgICAgICAgICAgICBb
dGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhLmdldCgpXTsKKyAgICAgICAgZWxzZSBpZiAoX2J5dGVz
KSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhID0gYWRvcHROUyhbW05TRGF0
YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCAqKV9ieXRlcyBsZW5ndGg6c3RybGVu
KF9ieXRlcykgZnJlZVdoZW5Eb25lOk5PXSk7CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZl
RGF0YTpkYXRhLmdldCgpXTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlRGF0YTpbQCJIZWxsbyIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddXTsKKyAgICB9LCAwLjIpOwogCi0gICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICBkb0FzeW5j
aHJvbm91c2x5SWZOZWNlc3NhcnkoW3NlbGZdKGlkIDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsK
KyAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICAgICAgX3J1bm5pbmdUYXNrcy5yZW1vdmUo
dGFzayk7CisgICAgfSwgMC4zKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCiB7Cisg
ICAgX3J1bm5pbmdUYXNrcy5yZW1vdmUodGFzayk7CiB9CiAKIEBlbmQKQEAgLTQ3MSw3ICs0OTgs
OCBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpCiAgICAgcmV0dXJuIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjsKIH0KIAotVEVTVChQcm9jZXNzU3dhcCwgQmFzaWMpCitlbnVtIGNsYXNzIFNjaGVtZUhh
bmRsZXJTaG91bGRCZUFzeW5jIHsgTm8sIFllcyB9Oworc3RhdGljIHZvaWQgcnVuQmFzaWNUZXN0
KFNjaGVtZUhhbmRsZXJTaG91bGRCZUFzeW5jIHNjaGVtZUhhbmRsZXJTaG91bGRCZUFzeW5jKQog
ewogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKQEAgLTQ3OSw2ICs1MDcsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBCYXNpYykK
ICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJv
Y2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOwogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMo
W1tQU09OU2NoZW1lIGFsbG9jXSBpbml0XSk7CisgICAgW2hhbmRsZXIgc2V0U2hvdWxkUmVzcG9u
ZEFzeW5jaHJvbm91c2x5OihzY2hlbWVIYW5kbGVyU2hvdWxkQmVBc3luYyA9PSBTY2hlbWVIYW5k
bGVyU2hvdWxkQmVBc3luYzo6WWVzKV07CiAgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVS
TFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJQU09OIl07CiAKICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKQEAgLTUxNiw2ICs1NDUsMTYgQEAgVEVTVChQcm9jZXNzU3dhcCwgQmFz
aWMpCiAgICAgRVhQRUNUX0VRKG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMsIDMpOwogfQogCitU
RVNUKFByb2Nlc3NTd2FwLCBCYXNpYykKK3sKKyAgICBydW5CYXNpY1Rlc3QoU2NoZW1lSGFuZGxl
clNob3VsZEJlQXN5bmM6Ok5vKTsKK30KKworVEVTVChQcm9jZXNzU3dhcCwgQmFzaWNXaXRoQXN5
bmNTY2hlbWVIYW5kbGVyKQoreworICAgIHJ1bkJhc2ljVGVzdChTY2hlbWVIYW5kbGVyU2hvdWxk
QmVBc3luYzo6WWVzKTsKK30KKwogVEVTVChQcm9jZXNzU3dhcCwgTG9hZEFmdGVyUG9saWN5RGVj
aXNpb24pCiB7CiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368646</attachid>
            <date>2019-04-30 19:04:40 -0700</date>
            <delta_ts>2019-04-30 19:45:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197426-20190430190438.patch</filename>
            <type>text/plain</type>
            <size>13967</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0ODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhOTUxMzlkZWEyNzYwYzdk
NDU2NzZmZGZhZGM2ZGE0YmI4MmU5M2UuLmEwYWFjNzNmMmU2NjY3MzkyYzI5MmQxNTZkYzRlMjRl
Y2IyZmM3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTktMDQtMzAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKFBTT04pIFVSTCBz
Y2hlbWUgaGFuZGxlcnMgY2FuIG5vIGxvbmdlciByZXNwb25kIGFzeW5jaHJvbm91c2x5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc0MjYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzUwMjU2MTY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5
IEVpZHNvbi4KKworICAgICAgICBUaGUgaXNzdWUgd2FzIHRoYXQgd2hlbiBjb21taXR0aW5nIHRo
ZSBwcm92aXNpb25hbCBwcm9jZXNzLCB3ZSB3b3VsZCBjYWxsIFdlYlBhZ2VQcm94eTo6cHJvY2Vz
c0RpZFRlcm1pbmF0ZSgpCisgICAgICAgIHdoaWNoIHdvdWxkIGNhbGwgV2ViUGFnZVByb3h5Ojpz
dG9wQWxsVVJMU2NoZW1lVGFza3MoKS4gVGhpcyB3b3VsZCB0ZXJtaW5hdGUgYWxsIFVSTCBzY2hl
bWUgdGFza3MgYXNzb2NpYXRlZAorICAgICAgICB3aXRoIHRoZSBwYWdlLCBpbmNsdWRpbmcgdGhl
IG9uZSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3Zpc2lzaW9uYWwgcGFnZSAvIHByb2Nlc3MuCisK
KyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNzdWUsIHBhc3MgbV9wcm9jZXNzIHRvIHN0b3BBbGxV
UkxTY2hlbWVUYXNrcygpIGluIHByb2Nlc3NEaWRUZXJtaW5hdGUoKSBhbmQgb25seSBzdG9wIHRo
ZQorICAgICAgICB0YXNrcyBhc3NvY2lhdGVkIHdpdGggdGhlIG1fcHJvY2VzcyAod2hpY2ggaXMg
dGhlIHByb2Nlc3Mgd2UncmUgYWJvdXQgdG8gc3dhcCBhd2F5IGZyb20pLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c3RvcEFsbFVSTFNjaGVtZVRhc2tzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjpwcm9jZXNzRm9yVGFza0lkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdG9wQWxsVGFza3NGb3JQ
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZVRhc2s6OnByb2Nlc3MgY29uc3QpOgorCiAyMDE5LTA0LTMwICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0
NDgwMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDMyM2Ri
MjhkNmU5YmExMzQ0NDRlOGEwMmM3MDQ2YmYwNWFlNjY0MzguLjUzMjQwNTFiMTA0MGU1NDNiNmU2
ZGE2MmMzOGRkOWVhNzM5N2I3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtNjcyNSw2ICs2NzI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NE
aWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKICAgICBQYWdlTG9h
ZFN0YXRlOjpUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2Fj
dGlvbigpOwogCiAgICAgcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChyZWFzb24pOworICAg
IHN0b3BBbGxVUkxTY2hlbWVUYXNrcyhtX3Byb2Nlc3MucHRyKCkpOwogCiAgICAgLy8gRm9yIGJy
aW5ndXAgb2YgcHJvY2VzcyBzd2FwcGluZywgTmF2aWdhdGlvblN3YXAgdGVybWluYXRpb24gd2ls
bCBub3QgZ28gb3V0IHRvIGNsaWVudHMuCiAgICAgLy8gSWYgaXQgZG9lcyAqZHVyaW5nKiBwcm9j
ZXNzIHN3YXBwaW5nLCBhbmQgdGhlIGNsaWVudCB0cmlnZ2VycyBhIHJlbG9hZCwgdGhhdCBjYXVz
ZXMgYml6YXJyZSBXZWJLaXQgcmUtZW50cnkuCkBAIC02NzQwLDggKzY3NDEsNiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb24g
cmVhc29uKQogICAgICAgICBpZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24gPSBwcm9jZXNzKCku
cHJvY2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQogICAgICAgICAgICAgYXV0b21hdGlv
blNlc3Npb24tPnRlcm1pbmF0ZSgpOwogICAgIH0KLQotICAgIHN0b3BBbGxVUkxTY2hlbWVUYXNr
cygpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvdmlzaW9uYWxQcm9jZXNzRGlkVGVybWlu
YXRlKCkKQEAgLTY4MDEsMTQgKzY4MDAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0UmVj
ZW50Q3Jhc2hDb3VudCgpCiAgICAgbV9yZWNlbnRDcmFzaENvdW50ID0gMDsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnN0b3BBbGxVUkxTY2hlbWVUYXNrcygpCit2b2lkIFdlYlBhZ2VQcm94eTo6
c3RvcEFsbFVSTFNjaGVtZVRhc2tzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIHsKICAgICBI
YXNoU2V0PFdlYlVSTFNjaGVtZUhhbmRsZXIqPiBoYW5kbGVyczsKICAgICBmb3IgKGF1dG8mIGhh
bmRsZXIgOiBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hlbWUudmFsdWVzKCkpCiAgICAgICAgIGhh
bmRsZXJzLmFkZChoYW5kbGVyLnB0cigpKTsKIAogICAgIGZvciAoYXV0byogaGFuZGxlciA6IGhh
bmRsZXJzKQotICAgICAgICBoYW5kbGVyLT5zdG9wQWxsVGFza3NGb3JQYWdlKCp0aGlzKTsKKyAg
ICAgICAgaGFuZGxlci0+c3RvcEFsbFRhc2tzRm9yUGFnZSgqdGhpcywgcHJvY2Vzcyk7CiB9CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCA5MTYxMWVlZDUyNTMyNzU1N2EyMzM2NDY1MTc0OTk2ZWY4NzIwODExLi4zNzY1
OGQ4YzA3MDdlMmEzNGNmZGVkZjA1MDg4ZjQzMjBjOWE5NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjAwMSw3ICsyMDAxLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgdmlld0lzQmVjb21pbmdWaXNpYmxlKCk7CiAKLSAgICB2b2lkIHN0b3BBbGxVUkxTY2hl
bWVUYXNrcygpOworICAgIHZvaWQgc3RvcEFsbFVSTFNjaGVtZVRhc2tzKFdlYlByb2Nlc3NQcm94
eSogPSBudWxscHRyKTsKIAogICAgIHZvaWQgY2xlYXJJbnNwZWN0b3JUYXJnZXRzKCk7CiAgICAg
dm9pZCBjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4IDViYTdmY2VmOGU0MzhiZDJkNzdiZjJl
ZTc1OTdmYzFiOWExODc1MWEuLmUzNTUzMTllYTRjNGVlNjUxYzZiZWRmN2M4NmZiZGQyMWYyOWRj
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIu
Y3BwCkBAIC02MCwxNyArNjAsMzEgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRh
c2soV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKICAgICBwbGF0
Zm9ybVN0YXJ0VGFzayhwYWdlLCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIAotdm9pZCBX
ZWJVUkxTY2hlbWVIYW5kbGVyOjpzdG9wQWxsVGFza3NGb3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFn
ZSkKK1dlYlByb2Nlc3NQcm94eSogV2ViVVJMU2NoZW1lSGFuZGxlcjo6cHJvY2Vzc0ZvclRhc2tJ
ZGVudGlmaWVyKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyKSBjb25zdAoreworICAgIGF1dG8gaXRl
cmF0b3IgPSBtX3Rhc2tzLmZpbmQodGFza0lkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9
PSBtX3Rhc2tzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gaXRl
cmF0b3ItPnZhbHVlLT5wcm9jZXNzKCk7Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6
c3RvcEFsbFRhc2tzRm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlByb2Nlc3NQcm94eSog
cHJvY2VzcykKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIu
ZmluZChwYWdlLnBhZ2VJRCgpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV90YXNrc0J5UGFnZUlk
ZW50aWZpZXIuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHRhc2tzQnlQYWdl
ID0gaXRlcmF0b3ItPnZhbHVlOwotICAgIHdoaWxlICghdGFza3NCeVBhZ2UuaXNFbXB0eSgpKQot
ICAgICAgICBzdG9wVGFzayhwYWdlLCAqdGFza3NCeVBhZ2UuYmVnaW4oKSk7CisgICAgVmVjdG9y
PHVpbnQ2NF90PiB0YXNrSWRlbnRpZmllcnNUb1N0b3A7CisgICAgdGFza0lkZW50aWZpZXJzVG9T
dG9wLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodGFza3NCeVBhZ2Uuc2l6ZSgpKTsKKyAgICBmb3Ig
KGF1dG8gdGFza0lkZW50aWZpZXIgOiB0YXNrc0J5UGFnZSkgeworICAgICAgICBpZiAoIXByb2Nl
c3MgfHwgcHJvY2Vzc0ZvclRhc2tJZGVudGlmaWVyKHRhc2tJZGVudGlmaWVyKSA9PSBwcm9jZXNz
KQorICAgICAgICAgICAgdGFza0lkZW50aWZpZXJzVG9TdG9wLnVuY2hlY2tlZEFwcGVuZCh0YXNr
SWRlbnRpZmllcik7CisgICAgfQorCisgICAgZm9yIChhdXRvJiB0YXNrSWRlbnRpZmllciA6IHRh
c2tJZGVudGlmaWVyc1RvU3RvcCkKKyAgICAgICAgc3RvcFRhc2socGFnZSwgdGFza0lkZW50aWZp
ZXIpOwogCi0gICAgQVNTRVJUKG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZS5wYWdl
SUQoKSkgPT0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZW5kKCkpOwogfQogCiB2b2lkIFdlYlVS
TFNjaGVtZUhhbmRsZXI6OnN0b3BUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgdWludDY0X3QgdGFz
a0lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5k
bGVyLmgKaW5kZXggYWM4MTJmMjVjMTZlMTk5N2M5ZTM0MmQ4OGI1ZjI2YjhiOWE1ZmQ1NC4uODk5
NzZjNjFmODNkNTJiODFmMmM0NDA3YzJjNWJiZDczYmYyYWU0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkm
LCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5
bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBzdG9wVGFzayhXZWJQYWdlUHJv
eHkmLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcik7Ci0gICAgdm9pZCBzdG9wQWxsVGFza3NGb3JQ
YWdlKFdlYlBhZ2VQcm94eSYpOworICAgIHZvaWQgc3RvcEFsbFRhc2tzRm9yUGFnZShXZWJQYWdl
UHJveHkmLCBXZWJQcm9jZXNzUHJveHkqKTsKICAgICB2b2lkIHRhc2tDb21wbGV0ZWQoV2ViVVJM
U2NoZW1lVGFzayYpOwogCiBwcm90ZWN0ZWQ6CkBAIC02Nyw2ICs2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtVGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJikg
PSAwOwogCiAgICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCB0YXNrSUQpOworICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0ZvclRhc2tJZGVu
dGlmaWVyKHVpbnQ2NF90KSBjb25zdDsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGQ0OGE0MDhl
NDkwMjQyNjg1MGIxNTY4OGQzNjYyYjcyYzg2NzlkYWQuLmI4NzIwNzNiZDI3ODFmZjA5YjliZjI1
MzMxNjJjMDVhYTY5YzAzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIHVpbnQ2NF90IHBhZ2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KKyAgICBXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KIAogICAgIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWVzdDsgfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYjMwMDNkMDI4NWE2MGM1YTY3MTAxZTcxOWMzOThhM2Q0ZDZmNzQ2Yy4uZDA2OGQ3
ZDk1MzZmYjIxNDBmZWIxN2RiOGM4OTQxZDJlYWE0Zjk4MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA0LTMw
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVncmVzc2lvbihQ
U09OKSBVUkwgc2NoZW1lIGhhbmRsZXJzIGNhbiBubyBsb25nZXIgcmVzcG9uZCBhc3luY2hyb25v
dXNseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3
NDI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MDI1NjE2OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbToKKyAgICAgICAgKC1bUFNPTlNjaGVtZSBzZXRTaG91bGRSZXNwb25kQXN5bmNo
cm9ub3VzbHk6XSk6CisgICAgICAgICgtW1BTT05TY2hlbWUgd2ViVmlldzpzdGFydFVSTFNjaGVt
ZVRhc2s6XSk6CisgICAgICAgICgtW1BTT05TY2hlbWUgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFz
azpdKToKKwogMjAxOS0wNC0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDQ4MDIuCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9u
TmF2aWdhdGlvbi5tbQppbmRleCA3ZjVkZGVhNWFiY2E0Nzc3NjNkMjc3OTQ4ZmQxZTJjNzc3NmQw
NmE2Li40MzZhYzUyNWJjNWI2MzQ2YjJiYjAxNzJmMDRkNTI5OGNkOWJmMDEzIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgPFdlYktp
dC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVQ
b2xpY2llcy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUu
aD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgpAQCAt
MjM4LDYgKzIzOSw4IEBAIEBpbnRlcmZhY2UgUFNPTlNjaGVtZSA6IE5TT2JqZWN0IDxXS1VSTFNj
aGVtZUhhbmRsZXI+IHsKICAgICBjb25zdCBjaGFyKiBfYnl0ZXM7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gX3JlZGlyZWN0czsKICAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPE5T
RGF0YT4+IF9kYXRhTWFwcGluZ3M7CisgICAgSGFzaFNldDxpZCA8V0tVUkxTY2hlbWVUYXNrPj4g
X3J1bm5pbmdUYXNrczsKKyAgICBib29sIF9zaG91bGRSZXNwb25kQXN5bmNocm9ub3VzbHk7CiB9
CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhCeXRlczooY29uc3QgY2hhciopYnl0ZXM7CiAtICh2
b2lkKWFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKilzb3VyY2VVUkxTdHJpbmcg
dG9VUkxTdHJpbmc6KE5TU3RyaW5nICopZGVzdGluYXRpb25VUkxTdHJpbmc7CkBAIC0yNjMsOCAr
MjY2LDI5IEBAIC0gKHZvaWQpYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6KE5TU3RyaW5nICopdXJs
U3RyaW5nIHRvRGF0YTooY29uc3QgY2hhciopZGF0YQogICAgIF9kYXRhTWFwcGluZ3Muc2V0KHVy
bFN0cmluZywgW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpz
dHJsZW4oZGF0YSkgZnJlZVdoZW5Eb25lOk5PXSk7CiB9CiAKKy0gKHZvaWQpc2V0U2hvdWxkUmVz
cG9uZEFzeW5jaHJvbm91c2x5OihCT09MKXZhbHVlCit7CisgICAgX3Nob3VsZFJlc3BvbmRBc3lu
Y2hyb25vdXNseSA9IHZhbHVlOworfQorCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCiB7Cisg
ICAgaWYgKFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfcmVxdWVzdE9ubHlJZkNh
Y2hlZF0pIHsKKyAgICAgICAgW3Rhc2sgZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldp
dGhEb21haW46QCJUZXN0V2ViS2l0QVBJIiBjb2RlOjEgdXNlckluZm86bmlsXV07CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBfcnVubmluZ1Rhc2tzLmFkZCh0YXNrKTsKKworICAgIGF1
dG8gZG9Bc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5ID0gW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRh
aW5QdHIoc2VsZiksIHRhc2sgPSByZXRhaW5QdHIodGFzayldKEZ1bmN0aW9uPHZvaWQoaWQgPFdL
VVJMU2NoZW1lVGFzaz4pPiYmIGYsIGRvdWJsZSBkZWxheSkgeworICAgICAgICBpZiAoIV9zaG91
bGRSZXNwb25kQXN5bmNocm9ub3VzbHkpCisgICAgICAgICAgICByZXR1cm4gZih0YXNrLmdldCgp
KTsKKyAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05P
VywgZGVsYXkgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtl
QmxvY2tQdHIoW3NlbGYsIHN0cm9uZ1NlbGYsIHRhc2ssIGYgPSBXVEZNb3ZlKGYpXSB7CisgICAg
ICAgICAgICBpZiAoX3J1bm5pbmdUYXNrcy5jb250YWlucyh0YXNrLmdldCgpKSkKKyAgICAgICAg
ICAgICAgICBmKHRhc2suZ2V0KCkpOworICAgICAgICB9KS5nZXQoKSk7CisgICAgfTsKKwogICAg
IE5TVVJMICpmaW5hbFVSTCA9IHRhc2sucmVxdWVzdC5VUkw7CiAgICAgYXV0byB0YXJnZXQgPSBf
cmVkaXJlY3RzLmdldCh0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKICAgICBpZiAo
IXRhcmdldC5pc0VtcHR5KCkpIHsKQEAgLTI3NiwyNyArMzAwLDMwIEBAIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVt
ZVRhc2s+KXRhCiAgICAgICAgIFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlk
UGVyZm9ybVJlZGlyZWN0aW9uOnJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpyZXF1
ZXN0LmdldCgpXTsKICAgICB9CiAKLSAgICBpZiAoWyhpZDxXS1VSTFNjaGVtZVRhc2tQcml2YXRl
Pil0YXNrIF9yZXF1ZXN0T25seUlmQ2FjaGVkXSkgewotICAgICAgICBbdGFzayBkaWRGYWlsV2l0
aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAIlRlc3RXZWJLaXRBUEkiIGNvZGU6MSB1
c2VySW5mbzpuaWxdXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJldGFpblB0cjxO
U1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDpmaW5hbFVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOjEgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKLSAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6cmVzcG9uc2UuZ2V0KCldOworICAgIGRvQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShb
ZmluYWxVUkwgPSByZXRhaW5QdHIoZmluYWxVUkwpXShpZCA8V0tVUkxTY2hlbWVUYXNrPiB0YXNr
KSB7CisgICAgICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMo
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpmaW5hbFVSTC5nZXQoKSBNSU1FVHlw
ZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjEgdGV4dEVuY29kaW5nTmFtZTpu
aWxdKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsK
KyAgICB9LCAwLjEpOwogCi0gICAgaWYgKGF1dG8gZGF0YSA9IF9kYXRhTWFwcGluZ3MuZ2V0KFtm
aW5hbFVSTCBhYnNvbHV0ZVN0cmluZ10pKQotICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpk
YXRhLmdldCgpXTsKLSAgICBlbHNlIGlmIChfYnl0ZXMpIHsKLSAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6
KHZvaWQgKilfYnl0ZXMgbGVuZ3RoOnN0cmxlbihfYnl0ZXMpIGZyZWVXaGVuRG9uZTpOT10pOwot
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhLmdldCgpXTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W0AiSGVsbG8iIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgZG9Bc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KFtz
ZWxmLCBmaW5hbFVSTCA9IHJldGFpblB0cihmaW5hbFVSTCldKGlkIDxXS1VSTFNjaGVtZVRhc2s+
IHRhc2spIHsKKyAgICAgICAgaWYgKGF1dG8gZGF0YSA9IF9kYXRhTWFwcGluZ3MuZ2V0KFtmaW5h
bFVSTCBhYnNvbHV0ZVN0cmluZ10pKQorICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6
ZGF0YS5nZXQoKV07CisgICAgICAgIGVsc2UgaWYgKF9ieXRlcykgeworICAgICAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0
ZXNOb0NvcHk6KHZvaWQgKilfYnl0ZXMgbGVuZ3RoOnN0cmxlbihfYnl0ZXMpIGZyZWVXaGVuRG9u
ZTpOT10pOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YS5nZXQoKV07Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W0AiSGVsbG8i
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgfSwgMC4yKTsK
IAotICAgIFt0YXNrIGRpZEZpbmlzaF07CisgICAgZG9Bc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5
KFtzZWxmXShpZCA8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIFt0YXNrIGRpZEZp
bmlzaF07CisgICAgICAgIF9ydW5uaW5nVGFza3MucmVtb3ZlKHRhc2spOworICAgIH0sIDAuMyk7
CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVVJMU2NoZW1l
VGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzawogeworICAgIF9ydW5uaW5nVGFza3MucmVt
b3ZlKHRhc2spOwogfQogCiBAZW5kCkBAIC00NzEsNyArNDk4LDggQEAgc3RhdGljIFJldGFpblB0
cjxfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKQogICAgIHJldHVybiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CiB9CiAKLVRFU1QoUHJv
Y2Vzc1N3YXAsIEJhc2ljKQorZW51bSBjbGFzcyBTY2hlbWVIYW5kbGVyU2hvdWxkQmVBc3luYyB7
IE5vLCBZZXMgfTsKK3N0YXRpYyB2b2lkIHJ1bkJhc2ljVGVzdChTY2hlbWVIYW5kbGVyU2hvdWxk
QmVBc3luYyBzY2hlbWVIYW5kbGVyU2hvdWxkQmVBc3luYykKIHsKICAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBh
dXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC00Nzks
NiArNTA3LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQmFzaWMpCiAgICAgYXV0byB3ZWJWaWV3Q29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CiAgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29s
LmdldCgpXTsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10g
aW5pdF0pOworICAgIFtoYW5kbGVyIHNldFNob3VsZFJlc3BvbmRBc3luY2hyb25vdXNseTooc2No
ZW1lSGFuZGxlclNob3VsZEJlQXN5bmMgPT0gU2NoZW1lSGFuZGxlclNob3VsZEJlQXN5bmM6Olll
cyldOwogICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRs
ZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUFNPTiJdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC01
MTYsNiArNTQ1LDE2IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIEJhc2ljKQogICAgIEVYUEVDVF9FUShu
dW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzLCAzKTsKIH0KIAorVEVTVChQcm9jZXNzU3dhcCwgQmFz
aWMpCit7CisgICAgcnVuQmFzaWNUZXN0KFNjaGVtZUhhbmRsZXJTaG91bGRCZUFzeW5jOjpObyk7
Cit9CisKK1RFU1QoUHJvY2Vzc1N3YXAsIEJhc2ljV2l0aEFzeW5jU2NoZW1lSGFuZGxlcikKK3sK
KyAgICBydW5CYXNpY1Rlc3QoU2NoZW1lSGFuZGxlclNob3VsZEJlQXN5bmM6Olllcyk7Cit9CisK
IFRFU1QoUHJvY2Vzc1N3YXAsIExvYWRBZnRlclBvbGljeURlY2lzaW9uKQogewogICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>