<?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>190060</bug_id>
          
          <creation_ts>2018-09-27 15:46:32 -0700</creation_ts>
          <short_desc>[iOS][WK1] ASSERTION FAILED: m_creationThread.ptr() == &amp;Thread::current() in ServiceWorkerContainer::~ServiceWorkerContainer()</short_desc>
          <delta_ts>2019-04-29 16:53:21 -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>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 12</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=183682</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=196692</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1464200</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-09-27 15:46:32 -0700</bug_when>
    <thetext>Seen in the iPad Simulator running iOS 12 with a debug build WebKit at r236471. I was using an internal app that had a UIWebView and was about to enter a new URL when the app crashed in the WebThread due the assert m_creationThread.ptr() == &amp;Thread::current() failing in ServiceWorkerContainer::~ServiceWorkerContainer():

WebThread (9)#0 0x000000010af33dd0 in ::WTFCrash() at /Volumes/.../OpenSource/Source/WTF/wtf/Assertions.cpp:255
#1  0x000000010f0b4adb in WTFCrashWithInfo(int, char const*, char const*, int) at /.../WebKitBuild/Debug-iphonesimulator/usr/local/include/wtf/Assertions.h:551
#2  0x00000001128aefef in WebCore::ServiceWorkerContainer::~ServiceWorkerContainer() at /Volumes/.../OpenSource/Source/WebCore/workers/service/ServiceWorkerContainer.cpp:70
#3  0x00000001128af1d5 in WebCore::ServiceWorkerContainer::~ServiceWorkerContainer() at /Volumes/.../OpenSource/Source/WebCore/workers/service/ServiceWorkerContainer.cpp:68
#4  0x00000001128af239 in WebCore::ServiceWorkerContainer::~ServiceWorkerContainer() at /Volumes/.../OpenSource/Source/WebCore/workers/service/ServiceWorkerContainer.cpp:68
#5  0x0000000111a390bf in std::__1::default_delete&lt;WebCore::ServiceWorkerContainer&gt;::operator()(WebCore::ServiceWorkerContainer*) const [inlined] at /Volumes/Xcode/Xcode.app/Contents/Developer/Toolchains/iOS12.0.xctoolchain/usr/include/c++/v1/memory:2285
#6  0x0000000111a390a0 in std::__1::unique_ptr&lt;WebCore::ServiceWorkerContainer, std::__1::default_delete&lt;WebCore::ServiceWorkerContainer&gt; &gt;::reset(WebCore::ServiceWorkerContainer*) [inlined] at /Volumes/Xcode/Xcode.app/Contents/Developer/Toolchains/iOS12.0.xctoolchain/usr/include/c++/v1/memory:2598
#7  0x0000000111a39053 in std::__1::unique_ptr&lt;WebCore::ServiceWorkerContainer, std::__1::default_delete&lt;WebCore::ServiceWorkerContainer&gt; &gt;::~unique_ptr() [inlined] at /Volumes/Xcode/Xcode.app/Contents/Developer/Toolchains/iOS12.0.xctoolchain/usr/include/c++/v1/memory:2552
#8  0x0000000111a39053 in std::__1::unique_ptr&lt;WebCore::ServiceWorkerContainer, std::__1::default_delete&lt;WebCore::ServiceWorkerContainer&gt; &gt;::~unique_ptr() [inlined] at /Volumes/Xcode/Xcode.app/Contents/Developer/Toolchains/iOS12.0.xctoolchain/usr/include/c++/v1/memory:2552
#9  0x0000000111a39053 in WTF::UniqueRef&lt;WebCore::ServiceWorkerContainer&gt;::~UniqueRef() at /.../WebKitBuild/Debug-iphonesimulator/usr/local/include/wtf/UniqueRef.h:42
#10 0x0000000111a34525 in WTF::UniqueRef&lt;WebCore::ServiceWorkerContainer&gt;::~UniqueRef() at /.../WebKitBuild/Debug-iphonesimulator/usr/local/include/wtf/UniqueRef.h:42
#11 0x0000000111a33511 in WebCore::NavigatorBase::~NavigatorBase() at /Volumes/.../OpenSource/Source/WebCore/page/NavigatorBase.cpp:88
#12 0x0000000111a33458 in WebCore::Navigator::~Navigator() at /Volumes/.../OpenSource/Source/WebCore/page/Navigator.cpp:58
#13 0x0000000111a33545 in WebCore::Navigator::~Navigator() at /Volumes/.../OpenSource/Source/WebCore/page/Navigator.cpp:58
#14 0x0000000111a33589 in WebCore::Navigator::~Navigator() at /Volumes/.../OpenSource/Source/WebCore/page/Navigator.cpp:58
#15 0x000000010fe1049f in WTF::RefCounted&lt;WebCore::NavigatorBase&gt;::deref() const at /.../WebKitBuild/Debug-iphonesimulator/usr/local/include/wtf/RefCounted.h:145
#16 0x000000010fe10423 in WTF::Ref&lt;WebCore::Navigator, WTF::DumbPtrTraits&lt;WebCore::Navigator&gt; &gt;::~Ref() at /.../WebKitBuild/Debug-iphonesimulator/usr/local/include/wtf/Ref.h:61
#17 0x000000010fe103e5 in WTF::Ref&lt;WebCore::Navigator, WTF::DumbPtrTraits&lt;WebCore::Navigator&gt; &gt;::~Ref() at /.../WebKitBuild/Debug-iphonesimulator/usr/local/include/wtf/Ref.h:55
#18 0x000000010fe103c9 in WebCore::JSDOMWrapper&lt;WebCore::Navigator&gt;::~JSDOMWrapper() at /Volumes/.../OpenSource/Source/WebCore/bindings/js/JSDOMWrapper.h:72
#19 0x000000010fe103a5 in WebCore::JSNavigator::~JSNavigator() at /.../WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/JSNavigator.h:29
#20 0x000000010fe0b395 in WebCore::JSNavigator::~JSNavigator() at /.../WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/JSNavigator.h:29
#21 0x000000010fe0a89d in WebCore::JSNavigator::destroy(JSC::JSCell*) at /.../WebKitBuild/Debug-iphonesimulator/DerivedSources/WebCore/JSNavigator.cpp:379
#22 0x000000010bee558a in JSC::JSDestructibleObjectDestroyFunc::operator()(JSC::VM&amp;, JSC::JSCell*) const at /Volumes/.../OpenSource/Source/JavaScriptCore/runtime/JSDestructibleObjectHeapCellType.cpp:37
#23 0x000000010bf204a5 in void JSC::MarkedBlock::Handle::specializedSweep&lt;false, (JSC::MarkedBlock::Handle::EmptyMode)0, (JSC::MarkedBlock::Handle::SweepMode)0, (JSC::MarkedBlock::Handle::SweepDestructionMode)0, (JSC::MarkedBlock::Handle::ScribbleMode)0, (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0, (JSC::MarkedBlock::Handle::MarksMode)0, JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*, JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode, JSC::MarkedBlock::Handle::SweepDestructionMode, JSC::MarkedBlock::Handle::ScribbleMode, JSC::MarkedBlock::Handle::NewlyAllocatedMode, JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc const&amp;)::&apos;lambda&apos;(void*)::operator()(void*) const at /Volumes/.../OpenSource/Source/JavaScriptCore/heap/MarkedBlockInlines.h:260
#24 0x000000010bf20514 in void JSC::MarkedBlock::Handle::specializedSweep&lt;false, (JSC::MarkedBlock::Handle::EmptyMode)0, (JSC::MarkedBlock::Handle::SweepMode)0, (JSC::MarkedBlock::Handle::SweepDestructionMode)0, (JSC::MarkedBlock::Handle::ScribbleMode)0, (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0, (JSC::MarkedBlock::Handle::MarksMode)0, JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*, JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode, JSC::MarkedBlock::Handle::SweepDestructionMode, JSC::MarkedBlock::Handle::ScribbleMode, JSC::MarkedBlock::Handle::NewlyAllocatedMode, JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc const&amp;)::&apos;lambda&apos;(unsigned long)::operator()(unsigned long) const at /Volumes/.../OpenSource/Source/JavaScriptCore/heap/MarkedBlockInlines.h:319
#25 0x000000010bf1b02a in void JSC::MarkedBlock::Handle::specializedSweep&lt;false, (JSC::MarkedBlock::Handle::EmptyMode)0, (JSC::MarkedBlock::Handle::SweepMode)0, (JSC::MarkedBlock::Handle::SweepDestructionMode)0, (JSC::MarkedBlock::Handle::ScribbleMode)0, (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0, (JSC::MarkedBlock::Handle::MarksMode)0, JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*, JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode, JSC::MarkedBlock::Handle::SweepDestructionMode, JSC::MarkedBlock::Handle::ScribbleMode, JSC::MarkedBlock::Handle::NewlyAllocatedMode, JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc const&amp;) at /Volumes/.../OpenSource/Source/JavaScriptCore/heap/MarkedBlockInlines.h:341
#26 0x000000010bee5520 in void JSC::MarkedBlock::Handle::finishSweepKnowingHeapCellType&lt;JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*, JSC::JSDestructibleObjectDestroyFunc const&amp;) at /Volumes/.../OpenSource/Source/JavaScriptCore/heap/MarkedBlockInlines.h:439
#27 0x000000010bee53e8 in JSC::JSDestructibleObjectHeapCellType::finishSweep(JSC::MarkedBlock::Handle&amp;, JSC::FreeList*) at /Volumes/.../OpenSource/Source/JavaScriptCore/runtime/JSDestructibleObjectHeapCellType.cpp:52
#28 0x000000010ba55656 in JSC::Subspace::finishSweep(JSC::MarkedBlock::Handle&amp;, JSC::FreeList*) at /Volumes/.../OpenSource/Source/JavaScriptCore/heap/Subspace.cpp:65
#29 0x000000010ba38aab in JSC::MarkedBlock::Handle::sweep(JSC::FreeList*) at /Volumes/.../OpenSource/Source/JavaScriptCore/heap/MarkedBlock.cpp:432
#30 0x000000010ba0b4b8 in JSC::IncrementalSweeper::sweepNextBlock(JSC::VM&amp;) at /Volumes/.../OpenSource/Source/JavaScriptCore/heap/IncrementalSweeper.cpp:89
#31 0x000000010ba0b36a in JSC::IncrementalSweeper::doSweep(JSC::VM&amp;, WTF::MonotonicTime) at /Volumes/.../OpenSource/Source/JavaScriptCore/heap/IncrementalSweeper.cpp:59
#32 0x000000010ba0b32c in JSC::IncrementalSweeper::doWork(JSC::VM&amp;) at /Volumes/.../OpenSource/Source/JavaScriptCore/heap/IncrementalSweeper.cpp:54
#33 0x000000010bf7c621 in JSC::JSRunLoopTimer::timerDidFire() at /Volumes/.../OpenSource/Source/JavaScriptCore/runtime/JSRunLoopTimer.cpp:307
#34 0x000000010bf7bb47 in JSC::JSRunLoopTimer::Manager::timerDidFire() at /Volumes/.../OpenSource/Source/JavaScriptCore/runtime/JSRunLoopTimer.cpp:160
#35 0x000000010bf7b5ec in JSC::JSRunLoopTimer::Manager::timerDidFireCallback(__CFRunLoopTimer*, void*) at /Volumes/.../OpenSource/Source/JavaScriptCore/runtime/JSRunLoopTimer.cpp:61
#36 0x00000001064ad344 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ()
#37 0x00000001064acf42 in __CFRunLoopDoTimer ()
#38 0x00000001064ac7aa in __CFRunLoopDoTimers ()
#39 0x00000001064a6e2c in __CFRunLoopRun ()
#40 0x00000001064a6221 in CFRunLoopRunSpecific ()
#41 0x000000010fa2b98a in RunWebThread(void*) at /Volumes/.../OpenSource/Source/WebCore/platform/ios/wak/WebCoreThread.mm:612
#42 0x000000011e9ad33d in _pthread_body ()
#43 0x000000011e9b02a7 in _pthread_start ()
#44 0x000000011e9ac425 in thread_start ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464210</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-27 16:32:48 -0700</bug_when>
    <thetext>The assert probably just needs to be updated to take into account main thread/web thread handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464211</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-27 16:37:04 -0700</bug_when>
    <thetext>This is WK1, it should not have service workers enabled so we should not be constructing a ServiceWorkerContainer at all I believe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464214</commentid>
    <comment_count>3</comment_count>
      <attachid>351020</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-27 16:57:15 -0700</bug_when>
    <thetext>Created attachment 351020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464248</commentid>
    <comment_count>4</comment_count>
      <attachid>351020</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-27 18:18:06 -0700</bug_when>
    <thetext>Comment on attachment 351020
Patch

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

&gt; Source/WebCore/page/NavigatorBase.cpp:155
&gt; +    return m_serviceWorkerContainer.get();

I am not sure this is worth the effort.
If we go with it, I would keep returning a ServiceWorkerContainer&amp;.
We could assert RuntimeEnabledFeatures::sharedFeatures().serviceWorkerEnabled() and create m_serviceWorkerContainer in this method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464397</commentid>
    <comment_count>5</comment_count>
      <attachid>351020</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-28 09:03:33 -0700</bug_when>
    <thetext>Comment on attachment 351020
Patch

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

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:34
&gt; +    visitor.addOpaqueRoot(wrapped().serviceWorker());

Note that we currently do not need a RuntimeEnabledCheck here...

&gt; Source/WebCore/bindings/js/JSWorkerNavigatorCustom.cpp:34
&gt; +    visitor.addOpaqueRoot(wrapped().serviceWorker());

... or here.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:569
&gt; +    return navigator ? navigator-&gt;serviceWorker() : nullptr;

or here.

&gt;&gt; Source/WebCore/page/NavigatorBase.cpp:155
&gt;&gt; +    return m_serviceWorkerContainer.get();
&gt; 
&gt; I am not sure this is worth the effort.
&gt; If we go with it, I would keep returning a ServiceWorkerContainer&amp;.
&gt; We could assert RuntimeEnabledFeatures::sharedFeatures().serviceWorkerEnabled() and create m_serviceWorkerContainer in this method.

If we keep returning a ServiceWorkerContainer&amp; here then we&apos;d have to check RuntimeEnabledFeatures::sharedFeatures().serviceWorkerEnabled() at call sites (e.g. in GC visitors).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464400</commentid>
    <comment_count>6</comment_count>
      <attachid>351020</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-28 09:10:10 -0700</bug_when>
    <thetext>Comment on attachment 351020
Patch

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

&gt;&gt;&gt; Source/WebCore/page/NavigatorBase.cpp:155
&gt;&gt;&gt; +    return m_serviceWorkerContainer.get();
&gt;&gt; 
&gt;&gt; I am not sure this is worth the effort.
&gt;&gt; If we go with it, I would keep returning a ServiceWorkerContainer&amp;.
&gt;&gt; We could assert RuntimeEnabledFeatures::sharedFeatures().serviceWorkerEnabled() and create m_serviceWorkerContainer in this method.
&gt; 
&gt; If we keep returning a ServiceWorkerContainer&amp; here then we&apos;d have to check RuntimeEnabledFeatures::sharedFeatures().serviceWorkerEnabled() at call sites (e.g. in GC visitors).

Also, if we initialized m_serviceWorkerContainer in this method, then we&apos;d need an extra member to store the navigator&apos;s scriptExecutionContext since the ServiceWorkerContainer constructor requires it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464501</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-28 14:27:21 -0700</bug_when>
    <thetext>&gt; If we keep returning a ServiceWorkerContainer&amp; here then we&apos;d have to check
&gt; RuntimeEnabledFeatures::sharedFeatures().serviceWorkerEnabled() at call
&gt; sites (e.g. in GC visitors).

Maybe a &quot;ServiceWorkerContainer* serviceWorkerContainerIfAny()&quot; would do the trick for these?

As of the ScriptExecutionContext, can it be passed to the may-create getter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464509</commentid>
    <comment_count>8</comment_count>
      <attachid>351020</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-28 14:31:08 -0700</bug_when>
    <thetext>Comment on attachment 351020
Patch

I do not really understand the problem. Returning a raw pointer adds basically no complexity at call sites, as you can see in my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491939</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-04 15:40:03 -0800</bug_when>
    <thetext>&lt;rdar://problem/47038721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525070</commentid>
    <comment_count>10</comment_count>
      <attachid>366902</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-04-06 21:47:31 -0700</bug_when>
    <thetext>Created attachment 366902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525188</commentid>
    <comment_count>11</comment_count>
      <attachid>366937</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-04-08 08:45:43 -0700</bug_when>
    <thetext>Created attachment 366937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525212</commentid>
    <comment_count>12</comment_count>
      <attachid>366942</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-04-08 09:43:36 -0700</bug_when>
    <thetext>Created attachment 366942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525316</commentid>
    <comment_count>13</comment_count>
      <attachid>366942</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-08 13:14:59 -0700</bug_when>
    <thetext>Comment on attachment 366942
Patch

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

&gt; Source/WTF/wtf/ThreadObserver.h:33
&gt; +class ThreadObserver {

The name is very generic considering what it does. I am also not convinced we need a new class just for this? I am even more confused this is used as a data member and not a base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525739</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-04-09 13:13:18 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; Comment on attachment 366942 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=366942&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/ThreadObserver.h:33
&gt; &gt; +class ThreadObserver {
&gt; 
&gt; The name is very generic considering what it does. I am also not convinced
&gt; we need a new class just for this? I am even more confused this is used as a
&gt; data member and not a base class.

I thought of ThreadChecker initially and can change to that.

This can be used as a base class although I do not see how much it improves things there.

As of its use, we could try to use something like that for all our WKWebView delegates taking completion handler.
We could check that they are called and destroyed on the thread they are created on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525744</commentid>
    <comment_count>15</comment_count>
      <attachid>366942</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-09 13:24:17 -0700</bug_when>
    <thetext>Comment on attachment 366942
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/ThreadObserver.h:33
&gt;&gt;&gt; +class ThreadObserver {
&gt;&gt; 
&gt;&gt; The name is very generic considering what it does. I am also not convinced we need a new class just for this? I am even more confused this is used as a data member and not a base class.
&gt; 
&gt; I thought of ThreadChecker initially and can change to that.
&gt; 
&gt; This can be used as a base class although I do not see how much it improves things there.
&gt; 
&gt; As of its use, we could try to use something like that for all our WKWebView delegates taking completion handler.
&gt; We could check that they are called and destroyed on the thread they are created on.

This class does not check anything though. All it does is remember the creation thread. You could have &quot;checked&quot; in a destructor that the object gets destroyed on the creation thread but you did not.

Also note that ServiceWorkerContainer is already an ActiveDOMObject and that ActiveDOMObject already saves m_creationThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525747</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-09 13:28:29 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #14)
&gt; (In reply to Chris Dumez from comment #13)
&gt; &gt; Comment on attachment 366942 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=366942&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/ThreadObserver.h:33
&gt; &gt; &gt; +class ThreadObserver {
&gt; &gt; 
&gt; &gt; The name is very generic considering what it does. I am also not convinced
&gt; &gt; we need a new class just for this? I am even more confused this is used as a
&gt; &gt; data member and not a base class.
&gt; 
&gt; I thought of ThreadChecker initially and can change to that.

&gt; This can be used as a base class although I do not see how much it improves
&gt; things there.

It would improve things before:
1. You would not need a data member in the subclass
2. You could just call isCreationThread() instead of m_dataMember.isCreationThread()
3. You could add a destructor to ThreadObserver (or whatever it should be named) to make sure it gets destroyed on the creation thread, so that subclasses do not have to.

In any case, my preference would be to not add a class in WTF for this at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531375</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-04-29 16:53:21 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; (In reply to youenn fablet from comment #14)
&gt; &gt; (In reply to Chris Dumez from comment #13)
&gt; &gt; &gt; Comment on attachment 366942 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=366942&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WTF/wtf/ThreadObserver.h:33
&gt; &gt; &gt; &gt; +class ThreadObserver {
&gt; &gt; &gt; 
&gt; &gt; &gt; The name is very generic considering what it does. I am also not convinced
&gt; &gt; &gt; we need a new class just for this? I am even more confused this is used as a
&gt; &gt; &gt; data member and not a base class.
&gt; &gt; 
&gt; &gt; I thought of ThreadChecker initially and can change to that.
&gt; 
&gt; &gt; This can be used as a base class although I do not see how much it improves
&gt; &gt; things there.
&gt; 
&gt; It would improve things before:
&gt; 1. You would not need a data member in the subclass

A data member in the subclass is not needed in either cases.
Availability to subclass in both cases can be public, private or protected.

&gt; 3. You could add a destructor to ThreadObserver (or whatever it should be
&gt; named) to make sure it gets destroyed on the creation thread, so that
&gt; subclasses do not have to.

Sure, I had this in mind, for instance to issues we faced with callback destructors.
I do not see how it makes a difference regarding the subclass or data member issue though.

&gt; In any case, my preference would be to not add a class in WTF for this at
&gt; all.

I do not feel strongly about this class.
When looking at the code before and after the patch, it seems cleaner after without all these #ifdef NDEBUG.
If we start doing more of these checks in the future, it seems like a nice addition to me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351020</attachid>
            <date>2018-09-27 16:57:15 -0700</date>
            <delta_ts>2019-04-06 21:47:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190060-20180927165714.patch</filename>
            <type>text/plain</type>
            <size>7279</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThkMWYyY2FkMzBjOTM2
M2JkNDlmNzYwMzhkZTNmMGY0NjZlY2Q2Yi4uYzc1NTA1OGRjNDUyYzI1ZDg4OTlmOThlNmZkMGQ0
MjZlYmQwZjE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA5LTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU11bV0sxXSBBU1NFUlRJ
T04gRkFJTEVEOiBtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSBp
biBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp+U2VydmljZVdvcmtlckNvbnRhaW5lcigpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAwNjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBjb25zdHJ1
Y3RpbmcgdW5uZWNlc3NhcnkgU2VydmljZVdvcmtlckNvbnRhaW5lciBvYmplY3RzIHdoZW4gU2Vy
dmljZSBXb3JrZXJzIGFyZSBkaXNhYmxlZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2
aWdhdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdhdG9yOjp2aXNpdEFk
ZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJOYXZpZ2F0
b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJOYXZpZ2F0b3I6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXJ2aWNl
V29ya2VyQ29udGFpbmVyKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmFzZTo6TmF2aWdhdG9yQmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL05h
dmlnYXRvckJhc2UuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKToKKwogMjAxOC0wOS0yNyAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHdhdGNoT1MgYnVpbGQg
Zml4OyBGaXggZGVjbGFyYXRpb24gZm9yIHBvcnRzIHdoaWNoIFVTRShFTkNSWVBURURfTUVESUEp
IGJ1dCBkb24ndApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZp
Z2F0b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JD
dXN0b20uY3BwCmluZGV4IDIxNjk5MDA0YWE3NTFlZGJiNDZmMTkwZDU3ZjQzMDhjMDQwODdmZGEu
LjJiOWY4OGQ0MzZkNzNlMDE5Yjc1YTQ1ZDQ5OTMzODNmNTcyOGJmYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBKU05hdmlnYXRvcjo6dmlzaXRBZGRpdGlv
bmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZ3cmFwcGVkKCkuc2Vydmlj
ZVdvcmtlcigpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qod3JhcHBlZCgpLnNlcnZpY2VX
b3JrZXIoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJOYXZpZ2F0b3JDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJOYXZpZ2F0b3JDdXN0
b20uY3BwCmluZGV4IDBhMTM2M2MyMTVhNjQxNDE4MDIzMzI3MmIwYmZmMDVmZDBjMGY2YTUuLjgz
ZDFhNWNlZDA0NDJiMDg2YTZiNTNkOWUzMDQzNTY3ODlkNzVhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyTmF2aWdhdG9yQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBKU1dvcmtlck5hdmlnYXRv
cjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZ3
cmFwcGVkKCkuc2VydmljZVdvcmtlcigpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qod3Jh
cHBlZCgpLnNlcnZpY2VXb3JrZXIoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9y
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCmluZGV4IGRiZTg5OGYxMTgyNTJmM2IyM2FjNzIwZGI3NDNjNzVjZjRmYmJmZjUuLjAzOWU2
MTFlNWEyZWM3NWJiYzNhOGUzOTIyM2I5MTNkNjRjMWUwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTU2Niw3ICs1NjYsNyBAQCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKCkKICAgICB9IGVsc2UKICAgICAgICAgbmF2aWdhdG9yID0gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5vcHRpb25hbE5hdmlnYXRvcigpOwogCi0gICAgcmV0dXJu
IG5hdmlnYXRvciA/ICZuYXZpZ2F0b3ItPnNlcnZpY2VXb3JrZXIoKSA6IG51bGxwdHI7CisgICAg
cmV0dXJuIG5hdmlnYXRvciA/IG5hdmlnYXRvci0+c2VydmljZVdvcmtlcigpIDogbnVsbHB0cjsK
IH0KIAogYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnN0IERvY3Vt
ZW50T3JXb3JrZXJJZGVudGlmaWVyJiBjb250ZXh0SWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yQmFzZS5jcHAKaW5kZXggNDBlMmViZDNkYWYxYTkzNjhiZTgwMzRjMjVkN2UzY2JhMzFj
NjBmYS4uODMxYTg5ZWIzZWU2ZGMyMTZjOTRhZjNmYTYxOTYyOTc1ZTcxMmUyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yQmFzZS5oIgogCisjaW5jbHVkZSAiUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIK
ICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KQEAgLTc3LDcgKzc4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBOYXZpZ2F0b3JCYXNlOjpOYXZpZ2F0b3JCYXNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIDogbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyKG1ha2VVbmlxdWVSZWY8U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcj4oY29udGV4dCwgKnRoaXMpKQorICAgIDogbV9zZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2Vydmlj
ZVdvcmtlckVuYWJsZWQoKSA/IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckNvbnRhaW5l
cj4oY29udGV4dCwgKnRoaXMpIDogbnVsbHB0cikKICNlbmRpZgogewogI2lmICFFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCkBAIC0xNDksMTYgKzE1MCwxOCBAQCBWZWN0b3I8U3RyaW5nPiBOYXZpZ2F0
b3JCYXNlOjpsYW5ndWFnZXMoKQogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotU2Vy
dmljZVdvcmtlckNvbnRhaW5lciYgTmF2aWdhdG9yQmFzZTo6c2VydmljZVdvcmtlcigpCitTZXJ2
aWNlV29ya2VyQ29udGFpbmVyKiBOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKCkKIHsKLSAg
ICByZXR1cm4gbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyOworICAgIHJldHVybiBtX3NlcnZpY2VX
b3JrZXJDb250YWluZXIuZ2V0KCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFNlcnZpY2VXb3JrZXJDb250
YWluZXImPiBOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpCiB7CisgICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckNvbnRhaW5lcik7CisK
ICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpICYmIGRvd25jYXN0PERvY3VtZW50Pihjb250
ZXh0KS5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IsICJTZXJ2aWNlIFdvcmtlciBpcyBkaXNhYmxlZCBiZWNhdXNlIHRo
ZSBjb250ZXh0IGlzIHNhbmRib3hlZCBhbmQgbGFja3MgdGhlICdhbGxvdy1zYW1lLW9yaWdpbicg
ZmxhZyIgfTsKLSAgICByZXR1cm4gbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyLmdldCgpOworICAg
IHJldHVybiAqbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3JCYXNlLmgKaW5kZXggNzAxNWMzODU3YTVmMmI5Y2RjZTU3OWEwNjM1OWUy
ZWRmOTA1MjdmZS4uYjExMzViNTZjZjc5ODAwNjRkYWNmNmVhYTFmOGY3MTY0ZGU4ZmY4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmgKQEAgLTYxLDExICs2MSwxMSBAQCBwcm90ZWN0
ZWQ6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBwdWJsaWM6Ci0gICAgU2VydmljZVdv
cmtlckNvbnRhaW5lciYgc2VydmljZVdvcmtlcigpOworICAgIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXIqIHNlcnZpY2VXb3JrZXIoKTsKICAgICBFeGNlcHRpb25PcjxTZXJ2aWNlV29ya2VyQ29udGFp
bmVyJj4gc2VydmljZVdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKIHByaXZhdGU6
Ci0gICAgVW5pcXVlUmVmPFNlcnZpY2VXb3JrZXJDb250YWluZXI+IG1fc2VydmljZVdvcmtlckNv
bnRhaW5lcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckNvbnRhaW5lcj4gbV9z
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CmluZGV4IGZlNDI5YWJiOTJlNDFmZjRlYzI1MzMwMWJmNWY0YmQzNGFjODRiYjQuLjkwYmUzODE3
ZTg1OTBiZDE3Mjk0ODdhNWM5ODlmZjY4OGU0ZmYwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CkBAIC00OCw3ICs0OCw3IEBAIFJlZjxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKGNvbnN0IFNlcnZpY2VXb3JrCiBTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShjb25zdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYg
b3JpZ2luLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBib29sIGlzT25saW5lLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQsIGJvb2wgc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2VjdXJpdHlPcmlnaW4+
JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIElEQkNsaWVudDo6SURCQ29u
bmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92
aWRlciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogV29ya2VyR2xvYmFsU2NvcGUo
dXJsLCBXVEZNb3ZlKG9yaWdpbiksIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHRo
cmVhZCwgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3Zl
KHRvcE9yaWdpbiksIHRpbWVPcmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIs
IHNlc3Npb25JRCkKICAgICAsIG1fY29udGV4dERhdGEoY3Jvc3NUaHJlYWRDb3B5KGRhdGEpKQot
ICAgICwgbV9yZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVh
dGUoKnRoaXMsIG5hdmlnYXRvcigpLnNlcnZpY2VXb3JrZXIoKSwgV1RGTW92ZShtX2NvbnRleHRE
YXRhLnJlZ2lzdHJhdGlvbikpKQorICAgICwgbV9yZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnRoaXMsICpuYXZpZ2F0b3IoKS5zZXJ2aWNlV29ya2Vy
KCksIFdURk1vdmUobV9jb250ZXh0RGF0YS5yZWdpc3RyYXRpb24pKSkKICAgICAsIG1fY2xpZW50
cyhTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCkpCiB7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366902</attachid>
            <date>2019-04-06 21:47:31 -0700</date>
            <delta_ts>2019-04-06 22:34:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190060-20190406214730.patch</filename>
            <type>text/plain</type>
            <size>15253</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRkN2YyZDI1MDg4MTk0
MTdmMmFmMDcyYmM4ODA3OGIzOTI4YTY2ZC4uYTVmODY0YjE2MWVjMmVlYTQ4ZmFlOGZlYTZkYjYw
MmUwNmU4MDc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTA0LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtXSzFdIEFTU0VS
VElPTiBGQUlMRUQ6IG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
IGluIFNlcnZpY2VXb3JrZXJDb250YWluZXI6On5TZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDA2MAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDcwMzg3MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEgU2VydmljZVdvcmtlckNvbnRhaW5lciBv
biBkZW1hbmQgd2hlbiBnZXR0aW5nIGl0IGZyb20gTmF2aWdhdG9yLgorICAgICAgICBBZGQgYSBn
ZXR0ZXIgdGhhdCByZXRyaWV2ZXMgdGhlIGNvbnRhaW5lciBpZiBjcmVhdGVkIGFuZCBudWxsIG90
aGVyd2lzZS4KKyAgICAgICAgTWlub3IgcmVmYWN0b3Jpbmcgc2luY2UgdGhlIGNvbnRleHQgaXMg
bm8gbG9uZ2VyIG5lZWRlZCB0byBjcmVhdGUgYSBOYXZpZ2F0b3IuCisgICAgICAgIE5vIGNoYW5n
ZSBvZiBiZWhhdmlvci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdhdG9yOjp2aXNpdEFkZGl0aW9uYWxDaGls
ZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJOYXZpZ2F0b3JDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJOYXZpZ2F0b3I6OnZpc2l0QWRkaXRpb25hbENo
aWxkcmVuKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXJ2aWNlV29ya2VyQ29udGFp
bmVyKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3c6Om5hdmlnYXRvcik6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpOYXZpZ2F0b3IpOgorICAgICAgICAqIHBhZ2UvTmF2
aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdmlnYXRvckJhc2U6OnNlcnZpY2VXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TmF2aWdhdG9yQmFzZTo6c2VydmljZVdvcmtlcklmQW55KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvckJhc2U6Ok5hdmlnYXRvckJhc2UpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvTmF2
aWdhdG9yQmFzZS5oOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGw6
CisgICAgICAgICogcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTmF2aWdhdG9yOjpXb3JrZXJOYXZpZ2F0b3IpOgorICAgICAgICAqIHBhZ2UvV29ya2Vy
TmF2aWdhdG9yLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6bmF2aWdhdG9yKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUpOgorCiAyMDE5LTA0LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgSURCLXNwZWNpZmljIHF1b3RhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKaW5kZXggMjE2OTkwMDRhYTc1
MWVkYmI0NmYxOTBkNTdmNDMwOGMwNDA4N2ZkYS4uNjMyMTMzMjJlNWQ3Y2VlNzdkMWMyMTY3ZTg5
NDFiYzI0OTI4MTYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
YXZpZ2F0b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2
aWdhdG9yQ3VzdG9tLmNwcApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIEpTTmF2aWdhdG9yOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2aXNpdG9yLmFk
ZE9wYXF1ZVJvb3QoJndyYXBwZWQoKS5zZXJ2aWNlV29ya2VyKCkpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdCh3cmFwcGVkKCkuc2VydmljZVdvcmtlcklmQW55KCkpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0odmlzaXRvcik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyTmF2aWdhdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyTmF2aWdhdG9yQ3VzdG9tLmNwcAppbmRleCAwYTEzNjNjMjE1
YTY0MTQxODAyMzMyNzJiMGJmZjA1ZmQwYzBmNmE1Li5kMmJjYjM5MDFjMzJjNTJmYmI0MmI5NGZk
ZDg1ZDAxZjQ3MGI0ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJOYXZpZ2F0b3JDdXN0b20uY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHZvaWQgSlNXb3JrZXJOYXZpZ2F0b3I6OnZpc2l0QWRkaXRpb25hbENoaWxk
cmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCgmd3JhcHBlZCgpLnNlcnZpY2VXb3JrZXIo
KSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHdyYXBwZWQoKS5zZXJ2aWNlV29ya2VySWZB
bnkoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGQ3ZmYzZTc4
YmQ3MmNiZWRlNTg4NGVkZTA5ZjQ0OWY5YTAzYmIyNjEuLmZlMzE5MDIwZjY4ODUzZGE4Y2MyY2E4
ODVkMTIyMjc1YzBhYzU2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKQEAgLTYwNCw3ICs2MDQsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
KiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKICAgICB9
IGVsc2UKICAgICAgICAgbmF2aWdhdG9yID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0
aGlzKS5vcHRpb25hbE5hdmlnYXRvcigpOwogCi0gICAgcmV0dXJuIG5hdmlnYXRvciA/ICZuYXZp
Z2F0b3ItPnNlcnZpY2VXb3JrZXIoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG5hdmlnYXRvciA/
ICZuYXZpZ2F0b3ItPnNlcnZpY2VXb3JrZXIoKnRoaXMpIDogbnVsbHB0cjsKIH0KIAogYm9vbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnN0IERvY3VtZW50T3JXb3JrZXJJ
ZGVudGlmaWVyJiBjb250ZXh0SWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IDQwNDAyMDZiM2U4YjlhZTdmZTcwM2Y2NTI2NDdjZDljMWU4ODcxMWMuLmQyMmYyNjQ4MGYwMTlj
ZjIyZjhjYzI4MTQxNjg5ZjgyMjU4NGUwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTcwOSw3ICs3MDksNyBAQCBET01BcHBsaWNhdGlvbkNhY2hlJiBET01XaW5kb3c6OmFwcGxp
Y2F0aW9uQ2FjaGUoKQogTmF2aWdhdG9yJiBET01XaW5kb3c6Om5hdmlnYXRvcigpCiB7CiAgICAg
aWYgKCFtX25hdmlnYXRvcikKLSAgICAgICAgbV9uYXZpZ2F0b3IgPSBOYXZpZ2F0b3I6OmNyZWF0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzKTsKKyAgICAgICAgbV9uYXZpZ2F0b3Ig
PSBOYXZpZ2F0b3I6OmNyZWF0ZSgqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fbmF2aWdhdG9yOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IGYzZDAxZDYwOGYzNDg5YjM4YTI1OThi
ZTUyYzY0NDFkNTIwNWM1OTYuLjdmNzZkNzZiYjE0NjM5ZDA4YmE5MGJkOGZlMzZjYzQ2NTljYTY1
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAgLTQ4LDkgKzQ4LDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1OYXZpZ2F0b3I6Ok5hdmlnYXRvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBET01XaW5kb3cmIHdpbmRvdykKLSAgICA6IE5hdmlnYXRvckJhc2Uo
Y29udGV4dCkKLSAgICAsIERPTVdpbmRvd1Byb3BlcnR5KCZ3aW5kb3cpCitOYXZpZ2F0b3I6Ok5h
dmlnYXRvcihET01XaW5kb3cmIHdpbmRvdykKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZ3aW5k
b3cpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IDJhNDJhMTk5ZjllOTk1YWZm
NDQ5ZTQwMjM2MjIxYjJiMDc1NTI3MWEuLjU3YjNjMDc0YWMxNDYwZWQyMWNhMzM1OWY1ZTUxMTU2
NzBjM2U3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFz
cyBET01QbHVnaW5BcnJheTsKIAogY2xhc3MgTmF2aWdhdG9yIGZpbmFsIDogcHVibGljIE5hdmln
YXRvckJhc2UsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0
eSwgcHVibGljIFN1cHBsZW1lbnRhYmxlPE5hdmlnYXRvcj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8TmF2aWdhdG9yPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
RE9NV2luZG93JiB3aW5kb3cpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF2aWdhdG9yKGNvbnRl
eHQsIHdpbmRvdykpOyB9CisgICAgc3RhdGljIFJlZjxOYXZpZ2F0b3I+IGNyZWF0ZShET01XaW5k
b3cmIHdpbmRvdykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXZpZ2F0b3Iod2luZG93KSk7IH0K
ICAgICB2aXJ0dWFsIH5OYXZpZ2F0b3IoKTsKIAogICAgIFN0cmluZyBhcHBWZXJzaW9uKCkgY29u
c3Q7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFN0b3JhZ2VVcGRhdGVz
KCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTmF2aWdhdG9yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBET01XaW5kb3cmKTsKKyAgICBleHBsaWNpdCBOYXZpZ2F0b3IoRE9NV2luZG93Jik7
CiAKICAgICBtdXRhYmxlIFJlZlB0cjxET01QbHVnaW5BcnJheT4gbV9wbHVnaW5zOwogICAgIG11
dGFibGUgUmVmUHRyPERPTU1pbWVUeXBlQXJyYXk+IG1fbWltZVR5cGVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yQmFzZS5jcHAKaW5kZXggZGE4Nzk0ZGI0ZjYyZTY1Y2E5M2M3MzcwNGY1ZTQx
MTVlMmZjN2ZlMC4uMzUzOTRkMGRiNmZlNjI5MWM2OTBkNjE1MWRkOWZlMjNhMjk1ODA4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCkBAIC03NiwxNSArNzYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5hdmlnYXRvckJhc2U6Ok5hdmlnYXRvckJhc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgOiBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIobWFrZVVuaXF1ZVJlZjxTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyPihjb250ZXh0LCAqdGhpcykpCi0jZW5kaWYKLXsKLSNpZiAhRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSNlbmRpZgotfQorTmF2aWdh
dG9yQmFzZTo6TmF2aWdhdG9yQmFzZSgpID0gZGVmYXVsdDsKIAogTmF2aWdhdG9yQmFzZTo6fk5h
dmlnYXRvckJhc2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTE1MSwxNiArMTQzLDIzIEBAIFZlY3RvcjxT
dHJpbmc+IE5hdmlnYXRvckJhc2U6Omxhbmd1YWdlcygpCiB9CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi1TZXJ2aWNlV29ya2VyQ29udGFpbmVyJiBOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNl
V29ya2VyKCkKK1NlcnZpY2VXb3JrZXJDb250YWluZXImIE5hdmlnYXRvckJhc2U6OnNlcnZpY2VX
b3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOworICAgIGlmICghbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVy
KQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNl
cnZpY2VXb3JrZXJDb250YWluZXI+KGNvbnRleHQsICp0aGlzKTsKKyAgICByZXR1cm4gKm1fc2Vy
dmljZVdvcmtlckNvbnRhaW5lcjsKIH0KIAotRXhjZXB0aW9uT3I8U2VydmljZVdvcmtlckNvbnRh
aW5lciY+IE5hdmlnYXRvckJhc2U6OnNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkKK1NlcnZpY2VXb3JrZXJDb250YWluZXIqIE5hdmlnYXRvckJhc2U6OnNlcnZp
Y2VXb3JrZXJJZkFueSgpCit7CisgICAgcmV0dXJuIG1fc2VydmljZVdvcmtlckNvbnRhaW5lci5n
ZXQoKTsKK30KKworRXhjZXB0aW9uT3I8U2VydmljZVdvcmtlckNvbnRhaW5lciY+IE5hdmlnYXRv
ckJhc2U6OnNlcnZpY2VXb3JrZXJGb3JCaW5kaW5ncyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KQogewogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkgJiYgZG93bmNhc3Q8RG9j
dW1lbnQ+KGNvbnRleHQpLmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlNlcnZpY2UgV29ya2VyIGlzIGRpc2FibGVk
IGJlY2F1c2UgdGhlIGNvbnRleHQgaXMgc2FuZGJveGVkIGFuZCBsYWNrcyB0aGUgJ2FsbG93LXNh
bWUtb3JpZ2luJyBmbGFnIiB9OwotICAgIHJldHVybiBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIu
Z2V0KCk7CisgICAgcmV0dXJuIHNlcnZpY2VXb3JrZXIoY29udGV4dCk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuaAppbmRleCA1YWY1ODgxODdiNjQwN2E4YWRjMWQ0
NDgwMjMyNjhhMDA0YTdhNDRjLi43MjQ1MTUzNzA1MjM0N2M5YzBkMGI5YjdhZGMzNWY1M2I1YzM3
ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuaApAQCAtNTcsMTUgKzU3LDE2IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzKCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICBleHBsaWNpdCBOYXZpZ2F0b3JCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKyAgICBOYXZpZ2F0b3JCYXNlKCk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBw
dWJsaWM6Ci0gICAgU2VydmljZVdvcmtlckNvbnRhaW5lciYgc2VydmljZVdvcmtlcigpOwotICAg
IEV4Y2VwdGlvbk9yPFNlcnZpY2VXb3JrZXJDb250YWluZXImPiBzZXJ2aWNlV29ya2VyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBTZXJ2aWNlV29ya2VyQ29udGFpbmVyJiBzZXJ2aWNl
V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyKiBzZXJ2aWNlV29ya2VySWZBbnkoKTsKKyAgICBFeGNlcHRpb25PcjxTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyJj4gc2VydmljZVdvcmtlckZvckJpbmRpbmdzKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKTsKIAogcHJpdmF0ZToKLSAgICBVbmlxdWVSZWY8U2VydmljZVdvcmtlckNvbnRhaW5lcj4g
bV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29y
a2VyQ29udGFpbmVyPiBtX3NlcnZpY2VXb3JrZXJDb250YWluZXI7CiAjZW5kaWYKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsCmluZGV4IGY3
NDBhMTE3MDJjODE2ZDJlZGIyNzhjMTJhOGJkOWMwMTUxOTdmMDkuLjJmZDk3NmJkNTY0M2Y5ZjA0
YmU4MDZiOTA3MjMxNDY2ZDllYjNiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3JTZXJ2aWNlV29ya2VyLmlkbApAQCAtMjgsNSArMjgsNSBAQAogICAgIENvbmRpdGlvbmFs
PVNFUlZJQ0VfV09SS0VSLAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9U2VydmljZVdvcmtlcgogXSBp
bnRlcmZhY2UgTmF2aWdhdG9yU2VydmljZVdvcmtlciB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uLCBTZWN1cmVDb250ZXh0LCBDb250ZXh0
SGFzU2VydmljZVdvcmtlclNjaGVtZSwgU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNl
cnZpY2VXb3JrZXJDb250YWluZXIgc2VydmljZVdvcmtlcjsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50ZWRBcz1zZXJ2aWNlV29ya2VyRm9yQmluZGluZ3Ms
IE1heVRocm93RXhjZXB0aW9uLCBTZWN1cmVDb250ZXh0LCBDb250ZXh0SGFzU2VydmljZVdvcmtl
clNjaGVtZSwgU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNlcnZpY2VXb3JrZXJDb250
YWluZXIgc2VydmljZVdvcmtlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1dvcmtlck5hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRv
ci5jcHAKaW5kZXggNTVkZTAwNGIwMDA0NGRkM2RhZDM0NTI3NzM0ODBjZjhhZTFhZTQ1Ny4uOGQw
N2Q4MzlhNWVhYTYzOTAwMzVhY2ZkMGFiYWNhYzk5ZTU4Yzc0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV29ya2VyTmF2aWdhdG9yLmNwcApAQCAtMjksOSArMjksOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVdvcmtlck5hdmlnYXRvcjo6V29ya2VyTmF2aWdhdG9yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5l
KQotICAgIDogTmF2aWdhdG9yQmFzZSgmY29udGV4dCkKLSAgICAsIG1fdXNlckFnZW50KHVzZXJB
Z2VudCkKK1dvcmtlck5hdmlnYXRvcjo6V29ya2VyTmF2aWdhdG9yKGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBib29sIGlzT25saW5lKQorICAgIDogbV91c2VyQWdlbnQodXNlckFnZW50KQogICAg
ICwgbV9pc09ubGluZShpc09ubGluZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvV29ya2VyTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmln
YXRvci5oCmluZGV4IDQ1ZWNmNjZjN2QyMGM4MmJkNTJjZjU1ZDFmYjk0YThjMzJiNGI0NTAuLjhh
MGI4YTQ4OGM2ZjE4ZGRkNmI1MzA5NDM4Njg2YmE4N2JmMzEzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Xb3JrZXJOYXZpZ2F0b3IuaApAQCAtMzMsMTQgKzMzLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgV29ya2VyTmF2aWdhdG9yIGZpbmFsIDogcHVibGljIE5hdmlnYXRvckJhc2Us
IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxXb3JrZXJOYXZpZ2F0b3I+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdvcmtlck5hdmlnYXRvcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFdvcmtlck5hdmlnYXRvcihjb250ZXh0LCB1c2VyQWdlbnQsIGlzT25s
aW5lKSk7IH0KKyAgICBzdGF0aWMgUmVmPFdvcmtlck5hdmlnYXRvcj4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdv
cmtlck5hdmlnYXRvcih1c2VyQWdlbnQsIGlzT25saW5lKSk7IH0KIAogICAgIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIHNldElzT25saW5lKGJvb2wgaXNPbmxpbmUpIHsgbV9pc09ubGluZSA9IGlz
T25saW5lOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV29ya2VyTmF2aWdhdG9yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBib29sIGlzT25saW5lKTsKKyAgICBX
b3JrZXJOYXZpZ2F0b3IoY29uc3QgU3RyaW5nJiwgYm9vbCBpc09ubGluZSk7CiAKICAgICBTdHJp
bmcgbV91c2VyQWdlbnQ7CiAgICAgYm9vbCBtX2lzT25saW5lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA4MGRmMjNmODdiZmQzMjg4NThkODFl
MTFhZWZmZTdjZTExM2Q5YTc2Li44M2MwNmI2MThjNzQyZjZhNzQ1NTE5ZjhhOGI5NDU0NjkwNDMz
OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApA
QCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmNsb3NlKCkKIFdvcmtl
ck5hdmlnYXRvciYgV29ya2VyR2xvYmFsU2NvcGU6Om5hdmlnYXRvcigpCiB7CiAgICAgaWYgKCFt
X25hdmlnYXRvcikKLSAgICAgICAgbV9uYXZpZ2F0b3IgPSBXb3JrZXJOYXZpZ2F0b3I6OmNyZWF0
ZSgqdGhpcywgbV91c2VyQWdlbnQsIG1faXNPbmxpbmUpOworICAgICAgICBtX25hdmlnYXRvciA9
IFdvcmtlck5hdmlnYXRvcjo6Y3JlYXRlKG1fdXNlckFnZW50LCBtX2lzT25saW5lKTsKICAgICBy
ZXR1cm4gKm1fbmF2aWdhdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggZTg2NmZiMmI3
MjVlNmIxMTkzNTgzZjZhZjg3ZTllNzk5NWRmYTUwNy4uMjRlOWRjMTIxZWU3MzVjOGUzN2M3MDkx
NTI1ODMyNzEyYzdiMWYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtNTcsOCArNTcsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJDb250YWluZXI6OlNlcnZpY2VX
b3JrZXJDb250YWluZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTmF2aWdhdG9y
QmFzZSYgbmF2aWdhdG9yKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCitTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIE5hdmlnYXRvckJhc2UmIG5hdmlnYXRvcikKKyAgICA6IEFjdGl2ZURP
TU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fbmF2aWdhdG9yKG5hdmlnYXRvcikKIHsKICAgICBz
dXNwZW5kSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDlmNGNlOWI0NjUzNDAyNDA2Zjdh
MWVjZDA3OGY1ZWVjNjk1ODA1ZTYuLmQ5YjlkZGViYzY4NzE1NTI3ZjQxY2UzOTE0M2YzY2YzYjYz
MGY5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1
YmxpYyBBYwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNlcnZpY2VXb3JrZXJDb250YWluZXIp
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5hdmlnYXRvckJhc2UmKTsKKyAg
ICBTZXJ2aWNlV29ya2VyQ29udGFpbmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBOYXZpZ2F0
b3JCYXNlJik7CiAgICAgflNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKIAogICAgIFNlcnZpY2VX
b3JrZXIqIGNvbnRyb2xsZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggODhh
ZDdmZjc4NmIyYTQzODE2NjA4ZTk4ODBjZjk3Nzc1ZDM5ZDZlYy4uMmM0NGVjYjE1MjBjZjBmZDU4
NTZkMGI0NWYwZTAwOTQ4NGMzZDFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTQ4LDcg
KzQ4LDcgQEAgUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpjcmVhdGUoY29uc3QgU2VydmljZVdvcmsKIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNP
bmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgYm9vbCBzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmln
aW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBXb3JrZXJHbG9iYWxTY29wZSh1cmwsIFdURk1v
dmUob3JpZ2luKSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgdGhyZWFkLCBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2lu
KSwgdGltZU9yaWdpbiwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgc2Vzc2lvbklE
KQogICAgICwgbV9jb250ZXh0RGF0YShjcm9zc1RocmVhZENvcHkoZGF0YSkpCi0gICAgLCBtX3Jl
Z2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgqdGhpcywg
bmF2aWdhdG9yKCkuc2VydmljZVdvcmtlcigpLCBXVEZNb3ZlKG1fY29udGV4dERhdGEucmVnaXN0
cmF0aW9uKSkpCisgICAgLCBtX3JlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
OjpnZXRPckNyZWF0ZSgqdGhpcywgbmF2aWdhdG9yKCkuc2VydmljZVdvcmtlcigqdGhpcyksIFdU
Rk1vdmUobV9jb250ZXh0RGF0YS5yZWdpc3RyYXRpb24pKSkKICAgICAsIG1fY2xpZW50cyhTZXJ2
aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCkpCiB7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366937</attachid>
            <date>2019-04-08 08:45:43 -0700</date>
            <delta_ts>2019-04-08 09:43:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190060-20190408084542.patch</filename>
            <type>text/plain</type>
            <size>21326</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcxYTg2OTI2YWYzZWI4ZDJkNWM2NzQ1
Mzg3ZTMxNTE3NmQ3Nzk4M2MuLjBmMGYwYWI5YmY5NDNkNjk5MGU2Mjk5Mzg2MDUzYjMzOWVjMmU1
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMDQtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMV0gQVNTRVJUSU9OIEZBSUxFRDogbV9j
cmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgaW4gU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6flNlcnZpY2VXb3JrZXJDb250YWluZXIoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDYwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NzAzODcyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIZWxwZXIgcm91dGluZSB0byBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHRocmVh
ZCBpcyB0aGUgb25lIHVzZWQgYXQgY3JlYXRpb24gdGltZS4KKyAgICAgICAgU3BlY2lhbCBjYXNl
IG1haW4gdGhyZWFkIGNoZWNraW5nIGJ5IHVzaW5nIGlzTWFpblRocmVhZCgpIHdoZW4gbmVlZGVk
LgorCisgICAgICAgICogd3RmL1RocmVhZE9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAoV1RG
OjpUaHJlYWRPYnNlcnZlcjo6VGhyZWFkT2JzZXJ2ZXIpOgorICAgICAgICAoV1RGOjpUaHJlYWRP
YnNlcnZlcjo6aXNDcmVhdGlvblRocmVhZCBjb25zdCk6CisKIDIwMTktMDQtMDMgIERvbiBPbG1z
dGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdW1dURl0gTWly
cm9yIFhDb2RlIGhlYWRlciBkaXJlY3RvcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1Zjg2NGIxNjFlYzJl
ZWE0OGZhZThmZWE2ZGI2MDJlMDZlODA3NGYuLmQ3NTU1NTliZTdhMWE5MDY3MWQyZTQzNTRhZjMz
NzcxM2NkNDY0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxOS0wNC0wOCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU11bV0sxXSBBU1NF
UlRJT04gRkFJTEVEOiBtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSBpbiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp+U2VydmljZVdvcmtlckNvbnRhaW5lcigpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAwNjAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MDM4NzIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgdXNlIG9mIFRocmVhZE9ic2VydmVyIHRvIGNo
ZWNrIGZvciB0aHJlYWQuCisgICAgICAgIE5vIEpTIG9ic2VydmFibGUgY2hhbmdlIG9mIGJlaGF2
aW9yLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6flNlcnZpY2VX
b3JrZXJDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5l
cjo6Y29udHJvbGxlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpkaWRGaW5pc2hHZXRSZWdpc3RyYXRpb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRpZEZpbmlzaEdldFJlZ2lzdHJhdGlvbnNSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxl
ZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5l
cjo6c2NoZWR1bGVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRo
VW5yZWdpc3RyYXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRhaW5lcjo6c3RhcnRTY3JpcHRGZXRjaEZvckpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkZXN0cm95Sm9iKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdp
c3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2No
ZWR1bGVUYXNrVG9GaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNvbnRleHRJZGVudGlmaWVyKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2I6On5TZXJ2aWNlV29ya2VySm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2I6OmZhaWxlZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisKIDIwMTkt
MDQtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
W1dLMV0gQVNTRVJUSU9OIEZBSUxFRDogbV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkgaW4gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6flNlcnZpY2VXb3JrZXJDb250
YWluZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMw
ZDk1MWFiODljMmVjZTAyZjE3Mzg0OWY1MTkyYjJjMDc1NGEyYi4uNWM0NmM0MzAwZGE1YjE3Mjc1
M2Q3MmE5NDg2MmY1MjE5YjkxMjVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zMzcsNiArMzM3LDcgQEAKIAkJMzgyMDI5RTI0NkM4NEIwMDk5RkQ2NzY0
IC8qIEFTQ0lJTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBU0NJ
SUxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzkxQkQ2QkE0RDE2NEZE
Mjk0RjlBOTNEIC8qIFN0ZE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dGRNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRkU4RjUxRjhEMkVBQjAw
RjZEN0Q3IC8qIENhbGxiYWNrQWdncmVnYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWxsYmFja0FnZ3JlZ2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDFCNUUxNDYyMjU5QkIyRjAwODJEMTY2IC8qIFRocmVhZE9ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQzMEI0Nzg3MUFBQUFDMUEwMDEyMjNEQSAvKiBTdHJpbmdDb21tb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQ29tbW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MjdDNUE5MjFGNkQ2QzMwMEE2MTJBNCAvKiBBU0NJ
SUNUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFTQ0lJQ1R5
cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJBOUVBQjFGNENENjFFMDA5
QTJCQkMgLyogQ29tcGxldGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tcGxldGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTExNTQsNiArMTE1NSw3IEBACiAJCQkJNTU5N0Y4MkMxRDk0Qjk5NzAwNjZCQzIxIC8qIFN5bmNo
cm9uaXplZEZpeGVkUXVldWUuaCAqLywKIAkJCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyog
U3lzdGVtRnJlZS5oICovLAogCQkJCTBGQjMxN0MzMUM0ODgwMDEwMDdFMzk1QSAvKiBTeXN0ZW1U
cmFjaW5nLmggKi8sCisJCQkJNDFCNUUxNDYyMjU5QkIyRjAwODJEMTY2IC8qIFRocmVhZE9ic2Vy
dmVyLmggKi8sCiAJCQkJRTMxMUZCMTUxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmNw
cCAqLywKIAkJCQlFMzExRkIxNjFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuaCAqLywK
IAkJCQlBOEE0NzMzMjE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkaW5nLmNwcCAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE9ic2VydmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0MzU3ZTYwMmE0MmE1MDMwNTY4YzFiYjkzOGNl
NWNmYzkxYmIyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRPYnNl
cnZlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVGhyZWFkT2JzZXJ2ZXIgeworcHVibGljOgorICAgIFRo
cmVhZE9ic2VydmVyKCkKKyAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBpZiAoIWlzTWFp
blRocmVhZCgpKQorICAgICAgICAgICAgbV9jcmVhdGlvblRocmVhZCA9ICZUaHJlYWQ6OmN1cnJl
bnQoKTsKKyNlbmRpZgorICAgIH0KKworICAgIGJvb2wgaXNDcmVhdGlvblRocmVhZCgpIGNvbnN0
CisgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgcmV0dXJuIG1fY3JlYXRpb25UaHJlYWQg
PyBtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSA6IGlzTWFpblRo
cmVhZCgpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICB9CisKK3By
aXZhdGU6CisjaWZuZGVmIE5ERUJVRworICAgIFJlZlB0cjxUaHJlYWQ+IG1fY3JlYXRpb25UaHJl
YWQ7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlRocmVh
ZE9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDI0ZTlkYzEyMWVlNzM1YzhlMzdjNzA5
MTUyNTgzMjcxMmM3YjFmMWIuLmVkZTA0OWZkNzA1MWM5OWIzYTIxYjcwN2Y1OTljNGQ0YjJmODlm
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTY2LDkgKzY2LDcgQEAgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6U2VydmljZVdvcmtlckNvbnRhaW5lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LAogCiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp+U2VydmljZVdvcmtlckNvbnRhaW5l
cigpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0jZW5kaWYKKyAgICBBU1NFUlQobV90aHJlYWRPYnNl
cnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnJlZkV2ZW50VGFyZ2V0KCkKQEAgLTIzMyw5ICsyMzEsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25z
dCBVUkwmCiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2Ioc3RkOjp1
bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2I+JiYgam9iKQogewotI2lmbmRlZiBOREVCVUcKLSAg
ICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwot
I2VuZGlmCisgICAgQVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIuaXNDcmVhdGlvblRocmVhZCgpKTsK
IAogICAgIEFTU0VSVChtX3N3Q29ubmVjdGlvbik7CiAgICAgQVNTRVJUKCFpc1N0b3BwZWQoKSk7
CkBAIC0yODYsOSArMjgyLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdp
c3RyYXRpb24oY29uc3QgU3RyaW5nJiBjbGllbnRVUkwsIFJlZjxEZWZlcnIKIAogdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpkaWRGaW5pc2hHZXRSZWdpc3RyYXRpb25SZXF1ZXN0KHVpbnQ2
NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGE+JiYgcmVzdWx0KQogewotI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9j
cmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotI2VuZGlmCisgICAg
QVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIuaXNDcmVhdGlvblRocmVhZCgpKTsKIAogICAgIGF1dG8g
cGVuZGluZ1Byb21pc2UgPSBtX3BlbmRpbmdQcm9taXNlcy50YWtlKHBlbmRpbmdQcm9taXNlSWRl
bnRpZmllcik7CiAgICAgaWYgKCFwZW5kaW5nUHJvbWlzZSkKQEAgLTM1NSw5ICszNDksNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRpZEZp
bmlzaEdldFJlZ2lzdHJhdGlvbnNSZXF1ZXN0KHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRp
ZmllciwgVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmIHJlZ2lzdHJhdGlv
bkRhdGFzKQogewotI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5w
dHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotI2VuZGlmCisgICAgQVNTRVJUKG1fdGhyZWFk
T2JzZXJ2ZXIuaXNDcmVhdGlvblRocmVhZCgpKTsKIAogICAgIGF1dG8gcGVuZGluZ1Byb21pc2Ug
PSBtX3BlbmRpbmdQcm9taXNlcy50YWtlKHBlbmRpbmdQcm9taXNlSWRlbnRpZmllcik7CiAgICAg
aWYgKCFwZW5kaW5nUHJvbWlzZSkKQEAgLTM4MSwxMCArMzczLDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpzdGFydE1lc3NhZ2VzKCkKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3Qg
RXhjZXB0aW9uJiBleGNlcHRpb24pCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2Ny
ZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0jZW5kaWYKLQorICAg
IEFTU0VSVChtX3RocmVhZE9ic2VydmVyLmlzQ3JlYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShqb2IuaGFzUHJvbWlzZSgpIHx8IGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2
aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlLCAiT25seSBzb2Z0IHVwZGF0ZXMgaGF2ZSBubyBwcm9t
aXNlIik7CiAKICAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9i
XSB7CkBAIC00MDYsOSArMzk1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JG
YWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKIAogdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0jaWZu
ZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7Ci0jZW5kaWYKKyAgICBBU1NFUlQobV90aHJlYWRPYnNlcnZlci5pc0NyZWF0
aW9uVGhyZWFkKCkpOwogCiAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0
aW9ucy5nZXQoaWRlbnRpZmllcikpCiAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVUYXNr
VG9GaXJlVXBkYXRlRm91bmRFdmVudCgpOwpAQCAtNDE2LDkgKzQwMyw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2
aWNlV29ya2VyUmVnCiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRX
aXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEmJiBkYXRhLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90aWZ5
V2hlblJlc29sdmVkKQogewotI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRo
cmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotI2VuZGlmCisgICAgQVNTRVJUKG1f
dGhyZWFkT2JzZXJ2ZXIuaXNDcmVhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGpvYi5oYXNQcm9taXNlKCkgfHwgam9iLmRhdGEoKS50eXBlID09IFNlcnZpY2VXb3JrZXJK
b2JUeXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBoYXZlIG5vIHByb21pc2UiKTsKIAog
ICAgIGlmIChqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVy
KQpAQCAtNDc3LDEwICs0NjIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Om5vdGlm
eVJlZ2lzdHJhdGlvbklzU2V0dGxlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0
KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKIHsKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKLSNlbmRpZgotCisgICAgQVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIuaXND
cmVhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQoam9iLmhhc1Byb21pc2UoKSk7CiAKICAgICBh
dXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7CkBAIC01MDIsMTAg
KzQ4NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5y
ZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvCiAKIHZvaWQgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6c3RhcnRTY3JpcHRGZXRjaEZvckpvYihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIEZl
dGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIEFT
U0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0jZW5k
aWYKLQorICAgIEFTU0VSVChtX3RocmVhZE9ic2VydmVyLmlzQ3JlYXRpb25UaHJlYWQoKSk7CiAg
ICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0U2NyaXB0RmV0Y2hGb3JK
b2I6IFN0YXJ0aW5nIHNjcmlwdCBmZXRjaCBmb3Igam9iICUiIFBSSXU2NCwgam9iLmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CkBAIC01MjEsMTAgKzUwMCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6c3RhcnRTY3JpcHRGZXRjaEZvckpvYihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIEZldGNoCiAK
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNl
cnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyUG9saWN5KQogewotI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotI2VuZGlmCi0K
KyAgICBBU1NFUlQobV90aHJlYWRPYnNlcnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogICAgIENP
TlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQ6
IFN1Y2Nlc3NmdWx5IGZpbmlzaGVkIGZldGNoaW5nIHNjcmlwdCBmb3Igam9iICUiIFBSSXU2NCwg
am9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nv
bm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9iRGF0YUlkZW50aWZpZXIgPSBqb2IuZGF0YSgp
LmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uS2V5ID0gam9iLmRhdGEoKS5yZWdpc3RyYXRpb25L
ZXkoKS5pc29sYXRlZENvcHkoKSwgc2NyaXB0ID0gc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBjb250
ZW50U2VjdXJpdHlQb2xpY3kgPSBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCks
IHJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCldIHsKQEAgLTUz
NCw5ICs1MTAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9h
ZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbgogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9i
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogewot
I2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwotI2VuZGlmCisgICAgQVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIuaXND
cmVhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5oYXNQcm9taXNl
KCkgfHwgam9iLmRhdGEoKS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJP
bmx5IHNvZnQgdXBkYXRlcyBoYXZlIG5vIHByb21pc2UiKTsKIAogICAgIENPTlRBSU5FUl9SRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQ6IEZhaWxl
ZCB0byBmZXRjaCBzY3JpcHQgZm9yIGpvYiAlIiBQUkl1NjQgIiwgZXJyb3I6ICVzIiwgam9iLmlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0Zjgo
KS5kYXRhKCkpOwpAQCAtNTU3LDEwICs1MzEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6Om5vdGlmeUZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgYwog
CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRlc3Ryb3lKb2IoU2VydmljZVdvcmtlckpv
YiYgam9iKQogewotI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5w
dHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotI2VuZGlmCi0KKyAgICBBU1NFUlQobV90aHJl
YWRPYnNlcnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2pvYk1hcC5jb250
YWlucyhqb2IuaWRlbnRpZmllcigpKSk7CiAgICAgbV9qb2JNYXAucmVtb3ZlKGpvYi5pZGVudGlm
aWVyKCkpOwogfQpAQCAtNTk2LDI5ICs1NjcsMjEgQEAgU1dDbGllbnRDb25uZWN0aW9uJiBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjplbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uJiByZWdpc3RyYXRpb24pCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2Ny
ZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0jZW5kaWYKLQorICAg
IEFTU0VSVChtX3RocmVhZE9ic2VydmVyLmlzQ3JlYXRpb25UaHJlYWQoKSk7CiAgICAgZW5zdXJl
U1dDbGllbnRDb25uZWN0aW9uKCkuYWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVy
KHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgIG1fcmVnaXN0cmF0aW9ucy5hZGQocmVn
aXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgJnJlZ2lzdHJhdGlvbik7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3Jl
YXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSNlbmRpZgotCisgICAg
QVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIuaXNDcmVhdGlvblRocmVhZCgpKTsKICAgICBtX3N3Q29u
bmVjdGlvbi0+cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKHJlZ2lzdHJh
dGlvbi5pZGVudGlmaWVyKCkpOwogICAgIG1fcmVnaXN0cmF0aW9ucy5yZW1vdmUocmVnaXN0cmF0
aW9uLmlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2No
ZWR1bGVUYXNrVG9GaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KCkKIHsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKLSNlbmRpZgorICAgIEFTU0VSVChtX3RocmVhZE9ic2VydmVyLmlzQ3JlYXRpb25UaHJlYWQo
KSk7CiAKICAgICBpZiAobV9pc1N0b3BwZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTY1MCwxMCAr
NjEzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKCkKIAogRG9jdW1lbnRP
cldvcmtlcklkZW50aWZpZXIgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Y29udGV4dElkZW50aWZp
ZXIoKQogewotI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotI2VuZGlmCi0KKyAgICBBU1NFUlQobV90aHJlYWRP
YnNlcnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS50aHJlYWQoKS5pZGVudGlm
aWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaAppbmRleCBkOWI5ZGRlYmM2ODcxNTUyN2Y0MWNlMzkxNDNmM2Nm
M2I2MzBmOTQ4Li4yOTVmMmRhMDlkOGRjNDllZTQ4YzY5ZmE0NjRiMjIyMTFmNmJiZGQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uT3B0aW9ucy5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRPYnNlcnZlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMSwxMCAr
MTMxLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICBI
YXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uKj4gbV9yZWdpc3RyYXRpb25zOwogCi0jaWZuZGVmIE5ERUJVRwotICAgIFJl
ZjxUaHJlYWQ+IG1fY3JlYXRpb25UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwotI2VuZGlm
Ci0KICAgICBzdHJ1Y3QgUGVuZGluZ1Byb21pc2UgewogICAgICAgICBQZW5kaW5nUHJvbWlzZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFJlZjxQZW5kaW5nQWN0aXZpdHk8U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcj4+JiYgcGVuZGluZ0FjdGl2aXR5KQogICAgICAgICAgICAgOiBwcm9t
aXNlKFdURk1vdmUocHJvbWlzZSkpCkBAIC0xNTEsNiArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICB1
aW50NjRfdCBtX2xhc3RPbmdvaW5nU2V0dGxlZFJlZ2lzdHJhdGlvbklkZW50aWZpZXIgeyAwIH07
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gbV9v
bmdvaW5nU2V0dGxlZFJlZ2lzdHJhdGlvbnM7CiAKKyAgICBUaHJlYWRPYnNlcnZlciBtX3RocmVh
ZE9ic2VydmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IGYwYjE0
NmE1MjYyN2EwODc5ZWZmNGU5ZGVmMDA0ZDg0ZWVmMDk0MzUuLjQ1MTVkNjNiZDZkODkwMmM0Mjcw
ZmM5MDlhYjJlYjJhMDY0YjQ1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBTZXJ2aWNl
V29ya2VySm9iOjpTZXJ2aWNlV29ya2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmIGNsaWVu
dCwgUmVmUHRyPERlZmVycgogCiBTZXJ2aWNlV29ya2VySm9iOjp+U2VydmljZVdvcmtlckpvYigp
CiB7Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKKyAgICBBU1NFUlQobV90aHJlYWRPYnNlcnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZhaWxlZFdpdGhFeGNlcHRpb24oY29uc3QgRXhj
ZXB0aW9uJiBleGNlcHRpb24pCiB7Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICBBU1NFUlQobV90aHJlYWRPYnNlcnZlci5pc0Ny
ZWF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9jb21w
bGV0ZWQgPSB0cnVlOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZh
aWxlZFdpdGhFeGNlcHRpb24oY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCiAKIHZvaWQgU2Vy
dmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhJiYgZGF0YSwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkIHNob3VsZE5vdGlm
eVdoZW5SZXNvbHZlZCkKIHsKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOworICAgIEFTU0VSVChtX3RocmVhZE9ic2VydmVyLmlzQ3JlYXRp
b25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKICAgICBtX2NvbXBsZXRl
ZCA9IHRydWU7CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2
ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYKIAogdm9p
ZCBTZXJ2aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChib29s
IHVucmVnaXN0cmF0aW9uUmVzdWx0KQogewotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0
cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgQVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIu
aXNDcmVhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKIAogICAgIG1f
Y29tcGxldGVkID0gdHJ1ZTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9i
OjpyZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChib29sIHVucmVnaXN0cmF0aW9uUmVz
dWwKIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpzdGFydFNjcmlwdEZldGNoKEZldGNoT3B0aW9u
czo6Q2FjaGUgY2FjaGVQb2xpY3kpCiB7Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRy
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICBBU1NFUlQobV90aHJlYWRPYnNlcnZlci5p
c0NyZWF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9j
bGllbnQuc3RhcnRTY3JpcHRGZXRjaEZvckpvYigqdGhpcywgY2FjaGVQb2xpY3kpOwpAQCAtODgs
NyArODgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2goRmV0Y2hP
cHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmZXRj
aFNjcmlwdFdpdGhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNo
T3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCiB7Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJl
YWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICBBU1NFUlQobV90aHJlYWRPYnNl
cnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAg
ICAgLy8gRklYTUU6IFdvcmtlclNjcmlwdExvYWRlciBpcyB0aGUgd3JvbmcgbG9hZGVyIGNsYXNz
IHRvIHVzZSBoZXJlLCBidXQgdGhlcmUncyBub3RoaW5nIGVsc2UgYmV0dGVyIHJpZ2h0IG5vdy4K
QEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0
aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRgogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJKb2I6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5w
dHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworICAgIEFTU0VSVChtX3RocmVhZE9ic2VydmVy
LmlzQ3JlYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAgICAgQVNT
RVJUKG1fc2NyaXB0TG9hZGVyKTsKIApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgU2VydmljZVdv
cmtlckpvYjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmCiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQoKQogewot
ICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CisgICAgQVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIuaXNDcmVhdGlvblRocmVhZCgpKTsKICAgICBB
U1NFUlQobV9zY3JpcHRMb2FkZXIpOwogICAgIAogICAgIGF1dG8gc2NyaXB0TG9hZGVyID0gV1RG
TW92ZShtX3NjcmlwdExvYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAppbmRleCBiNTVhYjk1OGU4OWRhNjQ2OGNjZGE4MDkxYjg3
OTRmYWY4MWI2OTFkLi41NTE5OWVlMTUyMTZkY2QyNGE1ZmZhZTAyOWE1ZTYzMzM1NGM0YWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpv
Yi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
LmgKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQu
aCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtODUsOSArODUsNyBAQCBwcml2YXRlOgogICAgIERvY3VtZW50T3JXb3JrZXJJ
ZGVudGlmaWVyIG1fY29udGV4dElkZW50aWZpZXI7CiAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExv
YWRlcj4gbV9zY3JpcHRMb2FkZXI7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgUmVmPFRo
cmVhZD4gbV9jcmVhdGlvblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07Ci0jZW5kaWYKKyAg
ICBUaHJlYWRPYnNlcnZlciBtX3RocmVhZE9ic2VydmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366942</attachid>
            <date>2019-04-08 09:43:36 -0700</date>
            <delta_ts>2019-04-08 09:49:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190060-20190408094335.patch</filename>
            <type>text/plain</type>
            <size>21676</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcxYTg2OTI2YWYzZWI4ZDJkNWM2NzQ1
Mzg3ZTMxNTE3NmQ3Nzk4M2MuLjBmMGYwYWI5YmY5NDNkNjk5MGU2Mjk5Mzg2MDUzYjMzOWVjMmU1
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMDQtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMV0gQVNTRVJUSU9OIEZBSUxFRDogbV9j
cmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgaW4gU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6flNlcnZpY2VXb3JrZXJDb250YWluZXIoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDYwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NzAzODcyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIZWxwZXIgcm91dGluZSB0byBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHRocmVh
ZCBpcyB0aGUgb25lIHVzZWQgYXQgY3JlYXRpb24gdGltZS4KKyAgICAgICAgU3BlY2lhbCBjYXNl
IG1haW4gdGhyZWFkIGNoZWNraW5nIGJ5IHVzaW5nIGlzTWFpblRocmVhZCgpIHdoZW4gbmVlZGVk
LgorCisgICAgICAgICogd3RmL1RocmVhZE9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAoV1RG
OjpUaHJlYWRPYnNlcnZlcjo6VGhyZWFkT2JzZXJ2ZXIpOgorICAgICAgICAoV1RGOjpUaHJlYWRP
YnNlcnZlcjo6aXNDcmVhdGlvblRocmVhZCBjb25zdCk6CisKIDIwMTktMDQtMDMgIERvbiBPbG1z
dGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdW1dURl0gTWly
cm9yIFhDb2RlIGhlYWRlciBkaXJlY3RvcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDljY2ZkNTlhYTY0YmY4
ZTk1MWIxMTA1OWJlZDA0OTllNjRhY2RiMzcuLjY1MTIyZWViZWU2ZTg4MDFmMzk5NmU0ODRlZjlk
OWU5OTkzNThmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxOS0wNC0wOCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU11bV0sxXSBBU1NF
UlRJT04gRkFJTEVEOiBtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSBpbiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp+U2VydmljZVdvcmtlckNvbnRhaW5lcigpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAwNjAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MDM4NzIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgdXNlIG9mIFRocmVhZE9ic2VydmVyIHRvIGNo
ZWNrIGZvciB0aHJlYWQuCisgICAgICAgIE5vIEpTIG9ic2VydmFibGUgY2hhbmdlIG9mIGJlaGF2
aW9yLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6flNlcnZpY2VX
b3JrZXJDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5l
cjo6Y29udHJvbGxlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpkaWRGaW5pc2hHZXRSZWdpc3RyYXRpb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRpZEZpbmlzaEdldFJlZ2lzdHJhdGlvbnNSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxl
ZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5l
cjo6c2NoZWR1bGVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRo
VW5yZWdpc3RyYXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRhaW5lcjo6c3RhcnRTY3JpcHRGZXRjaEZvckpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkZXN0cm95Sm9iKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdp
c3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2No
ZWR1bGVUYXNrVG9GaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNvbnRleHRJZGVudGlmaWVyKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2I6On5TZXJ2aWNlV29ya2VySm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2I6OmZhaWxlZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisKIDIwMTkt
MDQtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIExhemls
eSBjb25zdHJ1Y3QgTmF2aWdhdG9yIHNlcnZpY2VXb3JrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjMGQ5NTFhYjg5YzJlY2UwMmYxNzM4NDlmNTE5MmIy
YzA3NTRhMmIuLjVjNDZjNDMwMGRhNWIxNzI3NTNkNzJhOTQ4NjJmNTIxOWI5MTI1YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzM3LDYgKzMzNyw3IEBA
CiAJCTM4MjAyOUUyNDZDODRCMDA5OUZENjc2NCAvKiBBU0NJSUxpdGVyYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVNDSUlMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTM5MUJENkJBNEQxNjRGRDI5NEY5QTkzRCAvKiBTdGRNYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RkTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxM0ZFOEY1MUY4RDJFQUIwMEY2RDdENyAvKiBDYWxsYmFja0FnZ3JlZ2F0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tBZ2dyZWdhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQjVFMTQ2MjI1OUJCMkYwMDgyRDE2NiAv
KiBUaHJlYWRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJl
YWRPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzBCNDc4NzFBQUFB
QzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmluZ0NvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDI3
QzVBOTIxRjZENkMzMDBBNjEyQTQgLyogQVNDSUlDVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBU0NJSUNUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJDIC8qIENvbXBsZXRpb25IYW5kbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXRpb25IYW5kbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTU0LDYgKzExNTUsNyBAQAogCQkJCTU1OTdG
ODJDMUQ5NEI5OTcwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmggKi8sCiAJCQkJ
RTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZyZWUuaCAqLywKIAkJCQkwRkIzMTdD
MzFDNDg4MDAxMDA3RTM5NUEgLyogU3lzdGVtVHJhY2luZy5oICovLAorCQkJCTQxQjVFMTQ2MjI1
OUJCMkYwMDgyRDE2NiAvKiBUaHJlYWRPYnNlcnZlci5oICovLAogCQkJCUUzMTFGQjE1MUYwQTU2
OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5jcHAgKi8sCiAJCQkJRTMxMUZCMTYxRjBBNTY4QjAw
M0MwOERFIC8qIFRocmVhZEdyb3VwLmggKi8sCiAJCQkJQThBNDczMzIxNTFBODI1QjAwNDEyM0ZG
IC8qIFRocmVhZGluZy5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDAzOTEwOThlNTZi
MTUyYzY5NWYxOWY1ZmY5MTNkZjY4ZmM3NTc4NWEuLmQwOWNhYmU0YjllYjZjMDg3YThiZGU4N2Rk
MjljNmU4ZGJiMDY2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yMzEsNiArMjMxLDcgQEAg
c2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFN5c3RlbVRyYWNpbmcuaAogICAgIFRocmVhZEdy
b3VwLmgKICAgICBUaHJlYWRNZXNzYWdlLmgKKyAgICBUaHJlYWRPYnNlcnZlci5oCiAgICAgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaAogICAgIFRocmVhZFNwZWNpZmljLmgKICAgICBUaHJlYWRpbmcu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZE9ic2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQzNTdlNjAyYTQyYTUwMzA1Njhj
MWJiOTM4Y2U1Y2ZjOTFiYjIyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZE9ic2VydmVyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBUaHJlYWRPYnNlcnZlciB7CitwdWJsaWM6
CisgICAgVGhyZWFkT2JzZXJ2ZXIoKQorICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGlm
ICghaXNNYWluVGhyZWFkKCkpCisgICAgICAgICAgICBtX2NyZWF0aW9uVGhyZWFkID0gJlRocmVh
ZDo6Y3VycmVudCgpOworI2VuZGlmCisgICAgfQorCisgICAgYm9vbCBpc0NyZWF0aW9uVGhyZWFk
KCkgY29uc3QKKyAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICByZXR1cm4gbV9jcmVhdGlv
blRocmVhZCA/IG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpIDog
aXNNYWluVGhyZWFkKCk7CisjZWxzZQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAg
IH0KKworcHJpdmF0ZToKKyNpZm5kZWYgTkRFQlVHCisgICAgUmVmUHRyPFRocmVhZD4gbV9jcmVh
dGlvblRocmVhZDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdU
Rjo6VGhyZWFkT2JzZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggZTg2NmZiMmI3MjVlNmIx
MTkzNTgzZjZhZjg3ZTllNzk5NWRmYTUwNy4uYmMwMWJlODAyMjUyMjNlZGI2Njg5ZGIxZmQ2MGVi
NTg3ZjljZjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtNjYsOSArNjYsNyBAQCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsCiAKIFNlcnZpY2VXb3JrZXJDb250YWluZXI6On5TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKCkKIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJl
YWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSNlbmRpZgorICAgIEFTU0VSVChtX3Ro
cmVhZE9ic2VydmVyLmlzQ3JlYXRpb25UaHJlYWQoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6cmVmRXZlbnRUYXJnZXQoKQpAQCAtMjMzLDkgKzIzMSw3IEBAIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVV
UkwsIGNvbnN0IFVSTCYKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpv
YihzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpvYj4mJiBqb2IpCiB7Ci0jaWZuZGVmIE5E
RUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7Ci0jZW5kaWYKKyAgICBBU1NFUlQobV90aHJlYWRPYnNlcnZlci5pc0NyZWF0aW9uVGhy
ZWFkKCkpOwogCiAgICAgQVNTRVJUKG1fc3dDb25uZWN0aW9uKTsKICAgICBBU1NFUlQoIWlzU3Rv
cHBlZCgpKTsKQEAgLTI4Niw5ICsyODIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVycgogCiB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRpZEZpbmlzaEdldFJlZ2lzdHJhdGlvblJlcXVl
c3QodWludDY0X3QgcGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YT4mJiByZXN1bHQpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIEFT
U0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0jZW5k
aWYKKyAgICBBU1NFUlQobV90aHJlYWRPYnNlcnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogCiAg
ICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1fcGVuZGluZ1Byb21pc2VzLnRha2UocGVuZGluZ1By
b21pc2VJZGVudGlmaWVyKTsKICAgICBpZiAoIXBlbmRpbmdQcm9taXNlKQpAQCAtMzU1LDkgKzM0
OSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyhSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6ZGlkRmluaXNoR2V0UmVnaXN0cmF0aW9uc1JlcXVlc3QodWludDY0X3QgcGVuZGluZ1Byb21p
c2VJZGVudGlmaWVyLCBWZWN0b3I8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYgcmVn
aXN0cmF0aW9uRGF0YXMpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9u
VGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0jZW5kaWYKKyAgICBBU1NFUlQo
bV90aHJlYWRPYnNlcnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogCiAgICAgYXV0byBwZW5kaW5n
UHJvbWlzZSA9IG1fcGVuZGluZ1Byb21pc2VzLnRha2UocGVuZGluZ1Byb21pc2VJZGVudGlmaWVy
KTsKICAgICBpZiAoIXBlbmRpbmdQcm9taXNlKQpAQCAtMzgxLDEwICszNzMsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0TWVzc2FnZXMoKQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmpvYkZhaWxlZFdpdGhFeGNlcHRpb24oU2VydmljZVdvcmtlckpvYiYgam9i
LCBjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgQVNT
RVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSNlbmRp
ZgotCisgICAgQVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIuaXNDcmVhdGlvblRocmVhZCgpKTsKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5oYXNQcm9taXNlKCkgfHwgam9iLmRhdGEoKS50eXBl
ID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBoYXZl
IG5vIHByb21pc2UiKTsKIAogICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3Ro
aXMsICZqb2JdIHsKQEAgLTQwNiw5ICszOTUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYkZhaWxlZFdpdGhFeGNlcHRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdAog
CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZv
dW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKLSNlbmRpZgorICAgIEFTU0VSVChtX3RocmVhZE9ic2VydmVy
LmlzQ3JlYXRpb25UaHJlYWQoKSk7CiAKICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9y
ZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKSkKICAgICAgICAgcmVnaXN0cmF0aW9uLT5zY2hl
ZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50KCk7CkBAIC00MTYsOSArNDAzLDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2
ZW50KFNlcnZpY2VXb3JrZXJSZWcKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JS
ZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YSYmIGRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2Ny
ZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0jZW5kaWYKKyAgICBB
U1NFUlQobV90aHJlYWRPYnNlcnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVF9X
SVRIX01FU1NBR0Uoam9iLmhhc1Byb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2Vydmlj
ZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlz
ZSIpOwogCiAgICAgaWYgKGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6
UmVnaXN0ZXIpCkBAIC00NzcsMTAgKzQ2Miw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6bm90aWZ5UmVnaXN0cmF0aW9uSXNTZXR0bGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpCiAK
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRp
b25SZXN1bHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0
KQogewotI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotI2VuZGlmCi0KKyAgICBBU1NFUlQobV90aHJlYWRPYnNl
cnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVChqb2IuaGFzUHJvbWlzZSgpKTsK
IAogICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKQEAg
LTUwMiwxMCArNDg0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZl
ZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm8KIAogdm9pZCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2Im
IGpvYiwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKIHsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKLSNlbmRpZgotCisgICAgQVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIuaXNDcmVhdGlvblRocmVh
ZCgpKTsKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRTY3JpcHRG
ZXRjaEZvckpvYjogU3RhcnRpbmcgc2NyaXB0IGZldGNoIGZvciBqb2IgJSIgUFJJdTY0LCBqb2Iu
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTUyMSwxMCArNTAwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwg
RmV0Y2gKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRpbmdT
Y3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3kpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAg
IEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0j
ZW5kaWYKLQorICAgIEFTU0VSVChtX3RocmVhZE9ic2VydmVyLmlzQ3JlYXRpb25UaHJlYWQoKSk7
CiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImpvYkZpbmlzaGVkTG9hZGlu
Z1NjcmlwdDogU3VjY2Vzc2Z1bHkgZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJSIg
UFJJdTY0LCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgY2FsbE9uTWFpblRo
cmVhZChbY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uLCBqb2JEYXRhSWRlbnRpZmllciA9IGpv
Yi5kYXRhKCkuaWRlbnRpZmllcigpLCByZWdpc3RyYXRpb25LZXkgPSBqb2IuZGF0YSgpLnJlZ2lz
dHJhdGlvbktleSgpLmlzb2xhdGVkQ29weSgpLCBzY3JpcHQgPSBzY3JpcHQuaXNvbGF0ZWRDb3B5
KCksIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGNvbnRlbnRTZWN1cml0eVBvbGljeS5pc29sYXRl
ZENvcHkoKSwgcmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeS5pc29sYXRlZENvcHkoKV0g
ewpAQCAtNTM0LDkgKzUxMCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmlu
aXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uCiAKIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2Vy
Sm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBFeGNlcHRpb24mJiBleGNlcHRp
b24pCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0jZW5kaWYKKyAgICBBU1NFUlQobV90aHJlYWRPYnNl
cnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLmhh
c1Byb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVw
ZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOwogCiAgICAgQ09OVEFJ
TkVSX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImpvYkZpbmlzaGVkTG9hZGluZ1Njcmlw
dDogRmFpbGVkIHRvIGZldGNoIHNjcmlwdCBmb3Igam9iICUiIFBSSXU2NCAiLCBlcnJvcjogJXMi
LCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
KCkudXRmOCgpLmRhdGEoKSk7CkBAIC01NTcsMTAgKzUzMSw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6bm90aWZ5RmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYg
am9iLCBjCiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZGVzdHJveUpvYihTZXJ2aWNl
V29ya2VySm9iJiBqb2IpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9u
VGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0jZW5kaWYKLQorICAgIEFTU0VS
VChtX3RocmVhZE9ic2VydmVyLmlzQ3JlYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fam9i
TWFwLmNvbnRhaW5zKGpvYi5pZGVudGlmaWVyKCkpKTsKICAgICBtX2pvYk1hcC5yZW1vdmUoam9i
LmlkZW50aWZpZXIoKSk7CiB9CkBAIC01OTYsMjkgKzU2NywyMSBAQCBTV0NsaWVudENvbm5lY3Rp
b24mIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpCiAK
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgQVNT
RVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSNlbmRp
ZgotCisgICAgQVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIuaXNDcmVhdGlvblRocmVhZCgpKTsKICAg
ICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5hZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SW5TZXJ2ZXIocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgbV9yZWdpc3RyYXRpb25z
LmFkZChyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpLCAmcmVnaXN0cmF0aW9uKTsKIH0KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewotI2lmbmRlZiBOREVCVUcKLSAgICBBU1NF
UlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotI2VuZGlm
Ci0KKyAgICBBU1NFUlQobV90aHJlYWRPYnNlcnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogICAg
IG1fc3dDb25uZWN0aW9uLT5yZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIo
cmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgbV9yZWdpc3RyYXRpb25zLnJlbW92ZShy
ZWdpc3RyYXRpb24uaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVDb250cm9sbGVyQ2hhbmdlRXZlbnQoKQogewotI2lmbmRl
ZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwotI2VuZGlmCisgICAgQVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIuaXNDcmVhdGlv
blRocmVhZCgpKTsKIAogICAgIGlmIChtX2lzU3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjUwLDEwICs2MTMsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0b3AoKQogCiBE
b2N1bWVudE9yV29ya2VySWRlbnRpZmllciBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpjb250ZXh0
SWRlbnRpZmllcigpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhy
ZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0jZW5kaWYKLQorICAgIEFTU0VSVCht
X3RocmVhZE9ic2VydmVyLmlzQ3JlYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4o
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLnRocmVhZCgp
LmlkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDlmNGNlOWI0NjUzNDAyNDA2ZjdhMWVj
ZDA3OGY1ZWVjNjk1ODA1ZTYuLmYyZWE5ZDVlNTMyYjA2ZTFjYTJlZjJiNTY2YWZmNWNhZDY0OWFi
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZE9ic2VydmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MTMxLDEwICsxMzEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9
OwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24qPiBtX3JlZ2lzdHJhdGlvbnM7CiAKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgUmVmPFRocmVhZD4gbV9jcmVhdGlvblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07
Ci0jZW5kaWYKLQogICAgIHN0cnVjdCBQZW5kaW5nUHJvbWlzZSB7CiAgICAgICAgIFBlbmRpbmdQ
cm9taXNlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVmPFBlbmRpbmdBY3Rpdml0
eTxTZXJ2aWNlV29ya2VyQ29udGFpbmVyPj4mJiBwZW5kaW5nQWN0aXZpdHkpCiAgICAgICAgICAg
ICA6IHByb21pc2UoV1RGTW92ZShwcm9taXNlKSkKQEAgLTE1MSw2ICsxNDcsNyBAQCBwcml2YXRl
OgogICAgIHVpbnQ2NF90IG1fbGFzdE9uZ29pbmdTZXR0bGVkUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciB7IDAgfTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5PiBtX29uZ29pbmdTZXR0bGVkUmVnaXN0cmF0aW9uczsKIAorICAgIFRocmVhZE9ic2VydmVy
IG1fdGhyZWFkT2JzZXJ2ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKaW5k
ZXggZjBiMTQ2YTUyNjI3YTA4NzllZmY0ZTlkZWYwMDRkODRlZWYwOTQzNS4uNDUxNWQ2M2JkNmQ4
OTAyYzQyNzBmYzkwOWFiMmViMmEwNjRiNDU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBA
IFNlcnZpY2VXb3JrZXJKb2I6OlNlcnZpY2VXb3JrZXJKb2IoU2VydmljZVdvcmtlckpvYkNsaWVu
dCYgY2xpZW50LCBSZWZQdHI8RGVmZXJyCiAKIFNlcnZpY2VXb3JrZXJKb2I6On5TZXJ2aWNlV29y
a2VySm9iKCkKIHsKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOworICAgIEFTU0VSVChtX3RocmVhZE9ic2VydmVyLmlzQ3JlYXRpb25UaHJl
YWQoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6ZmFpbGVkV2l0aEV4Y2VwdGlvbihj
b25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKIHsKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVh
ZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworICAgIEFTU0VSVChtX3RocmVhZE9ic2Vy
dmVyLmlzQ3JlYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKICAg
ICBtX2NvbXBsZXRlZCA9IHRydWU7CkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckpvYjo6ZmFpbGVkV2l0aEV4Y2VwdGlvbihjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKIAog
dm9pZCBTZXJ2aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGEmJiBkYXRhLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgc2hv
dWxkTm90aWZ5V2hlblJlc29sdmVkKQogewotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0
cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgQVNTRVJUKG1fdGhyZWFkT2JzZXJ2ZXIu
aXNDcmVhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKIAogICAgIG1f
Y29tcGxldGVkID0gdHJ1ZTsKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9i
OjpyZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEm
JgogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVz
dWx0KGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCiB7Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25U
aHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICBBU1NFUlQobV90aHJlYWRP
YnNlcnZlci5pc0NyZWF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwog
CiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwpAQCAtODAsNyArODAsNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJKb2I6OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KGJvb2wgdW5yZWdpc3Ry
YXRpb25SZXN1bAogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2goRmV0
Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKIHsKLSAgICBBU1NFUlQobV9jcmVhdGlvblRo
cmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworICAgIEFTU0VSVChtX3RocmVhZE9i
c2VydmVyLmlzQ3JlYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAK
ICAgICBtX2NsaWVudC5zdGFydFNjcmlwdEZldGNoRm9ySm9iKCp0aGlzLCBjYWNoZVBvbGljeSk7
CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3JpcHRGZXRj
aChGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5KQogCiB2b2lkIFNlcnZpY2VXb3JrZXJK
b2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKIHsKLSAgICBBU1NFUlQobV9jcmVh
dGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworICAgIEFTU0VSVChtX3Ro
cmVhZE9ic2VydmVyLmlzQ3JlYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRl
ZCk7CiAKICAgICAvLyBGSVhNRTogV29ya2VyU2NyaXB0TG9hZGVyIGlzIHRoZSB3cm9uZyBsb2Fk
ZXIgY2xhc3MgdG8gdXNlIGhlcmUsIGJ1dCB0aGVyZSdzIG5vdGhpbmcgZWxzZSBiZXR0ZXIgcmln
aHQgbm93LgpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6ZmV0Y2hT
Y3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGCiAKIHZv
aWQgU2VydmljZVdvcmtlckpvYjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIEFTU0VSVChtX2NyZWF0aW9u
VGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgQVNTRVJUKG1fdGhyZWFk
T2JzZXJ2ZXIuaXNDcmVhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsK
ICAgICBBU1NFUlQobV9zY3JpcHRMb2FkZXIpOwogCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYKIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpub3RpZnlGaW5pc2hl
ZCgpCiB7Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsKKyAgICBBU1NFUlQobV90aHJlYWRPYnNlcnZlci5pc0NyZWF0aW9uVGhyZWFkKCkp
OwogICAgIEFTU0VSVChtX3NjcmlwdExvYWRlcik7CiAgICAgCiAgICAgYXV0byBzY3JpcHRMb2Fk
ZXIgPSBXVEZNb3ZlKG1fc2NyaXB0TG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCmluZGV4IGI1NWFiOTU4ZTg5ZGE2NDY4Y2Nk
YTgwOTFiODc5NGZhZjgxYjY5MWQuLjU1MTk5ZWUxNTIxNmRjZDI0YTVmZmFlMDI5YTVlNjMzMzU0
YzRhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2IuaApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRPYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC04NSw5ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRP
cldvcmtlcklkZW50aWZpZXIgbV9jb250ZXh0SWRlbnRpZmllcjsKICAgICBSZWZQdHI8V29ya2Vy
U2NyaXB0TG9hZGVyPiBtX3NjcmlwdExvYWRlcjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICBSZWY8VGhyZWFkPiBtX2NyZWF0aW9uVGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKLSNl
bmRpZgorICAgIFRocmVhZE9ic2VydmVyIG1fdGhyZWFkT2JzZXJ2ZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="383293"
          type_id="1"
          status="?"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>