<?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>211957</bug_id>
          
          <creation_ts>2020-05-15 07:51:11 -0700</creation_ts>
          <short_desc>[GTK] &quot;ASSERTION FAILED: !m_adoptionIsRequired&quot; when double clicking on a word</short_desc>
          <delta_ts>2020-05-19 12:36:25 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alicia Boya García">aboya</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cturner</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1653052</commentid>
    <comment_count>0</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2020-05-15 07:51:11 -0700</bug_when>
    <thetext>How to reproduce:

1. Open a .txt file in the minibrowser.
2. Double click on a word.

ASSERTION FAILED: !m_adoptionIsRequired

#0  WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:303
#1  0x00007fefb67ef1b8 in CRASH_WITH_INFO(...) () at DerivedSources/ForwardingHeaders/wtf/Assertions.h:713
#2  0x00007fefb68000c7 in WTF::RefCountedBase::ref (this=0x7ffc7f2a1120) at DerivedSources/ForwardingHeaders/wtf/RefCounted.h:47
#3  0x00007fefb72ce403 in WTF::Ref&lt;WebCore::SelectionData, WTF::DumbPtrTraits&lt;WebCore::SelectionData&gt; &gt;::Ref (this=0x7ffc7f2a10e8, object=...) at DerivedSources/ForwardingHeaders/wtf/Ref.h:67
#4  0x00007fefb72cc115 in WebKit::WebSelectionData::WebSelectionData (this=0x7ffc7f2a10e8, data=...) at ../../Source/WebKit/Shared/gtk/WebSelectionData.cpp:35
#5  0x00007fefb7acae59 in WebKit::WebPlatformStrategies::writeToClipboard (this=0x7fefc1d2f3a0 &lt;WebKit::WebPlatformStrategies::initialize()::platformStrategies&gt;, pasteboardName=&quot;PRIMARY&quot;, selectionData=...)
    at ../../Source/WebKit/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:328
#6  0x00007fefb9fdc7b7 in WebCore::Pasteboard::write (this=0x7fef9fd23888, pasteboardContent=...) at ../../Source/WebCore/platform/gtk/PasteboardGtk.cpp:190
#7  0x00007fefb7af88d4 in WebKit::WebEditorClient::updateGlobalSelection (this=0x7fef9fdf5288, frame=0x7fef9fd82000) at ../../Source/WebKit/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:148
#8  0x00007fefb7abe720 in WebKit::WebEditorClient::respondToChangedSelection (this=0x7fef9fdf5288, frame=0x7fef9fd82000) at ../../Source/WebKit/WebProcess/WebCoreSupport/WebEditorClient.cpp:245
#9  0x00007fefb9497d07 in WebCore::Editor::respondToChangedSelection (this=0x7fef9fd69580, options=...) at ../../Source/WebCore/editing/Editor.cpp:3649
#10 0x00007fefb94a3d34 in WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance (this=0x7fef9fd68130, newSelectionPossiblyWithoutDirection=..., options=..., align=WebCore::FrameSelection::AlignCursorOnScrollIfNeeded, 
    granularity=WebCore::WordGranularity) at ../../Source/WebCore/editing/FrameSelection.cpp:397
#11 0x00007fefb94a3e0d in WebCore::FrameSelection::setSelection (this=0x7fef9fd68130, selection=..., options=..., intent=..., align=WebCore::FrameSelection::AlignCursorOnScrollIfNeeded, granularity=WebCore::WordGranularity)
    at ../../Source/WebCore/editing/FrameSelection.cpp:408
#12 0x00007fefb94a3749 in WebCore::FrameSelection::setSelectionByMouseIfDifferent (this=0x7fef9fd68130, passedNewSelection=..., granularity=WebCore::WordGranularity, 
    endpointsAdjustmentMode=WebCore::FrameSelection::EndPointsAdjustmentMode::DoNotAdjust) at ../../Source/WebCore/editing/FrameSelection.cpp:326
#13 0x00007fefb9bf0bdd in WebCore::EventHandler::updateSelectionForMouseDownDispatchingSelectStart (this=0x7fef9fd80000, targetNode=0x7fef9feba840, selection=..., granularity=WebCore::WordGranularity)
    at ../../Source/WebCore/page/EventHandler.cpp:549
#14 0x00007fefb9bf0d74 in WebCore::EventHandler::selectClosestWordFromHitTestResult (this=0x7fef9fd80000, result=..., appendTrailingWhitespace=WebCore::DontAppendTrailingWhitespace) at ../../Source/WebCore/page/EventHandler.cpp:569
#15 0x00007fefb9bf0e55 in WebCore::EventHandler::selectClosestWordFromMouseEvent (this=0x7fef9fd80000, result=...) at ../../Source/WebCore/page/EventHandler.cpp:581
#16 0x00007fefb9bf13df in WebCore::EventHandler::handleMousePressEventDoubleClick (this=0x7fef9fd80000, event=...) at ../../Source/WebCore/page/EventHandler.cpp:652
#17 0x00007fefb9bf252c in WebCore::EventHandler::handleMousePressEvent (this=0x7fef9fd80000, event=...) at ../../Source/WebCore/page/EventHandler.cpp:849
#18 0x00007fefb9bf624c in WebCore::EventHandler::handleMousePressEvent (this=0x7fef9fd80000, platformMouseEvent=...) at ../../Source/WebCore/page/EventHandler.cpp:1851
#19 0x00007fefba52e190 in WebCore::UserInputBridge::handleMousePressEvent (this=0x7fef9fdff660, mouseEvent=...) at ../../Source/WebCore/replay/UserInputBridge.cpp:57
#20 0x00007fefb7b15a7b in WebKit::handleMouseEvent (mouseEvent=..., page=0x7fef50cf6000) at ../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:2713
#21 0x00007fefb7b15d19 in WebKit::WebPage::mouseEvent (this=0x7fef50cf6000, mouseEvent=...) at ../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:2780
#22 0x00007fefb6d9923c in IPC::callMemberFunctionImpl&lt;WebKit::WebPage, void (WebKit::WebPage::*)(WebKit::WebMouseEvent const&amp;), std::tuple&lt;WebKit::WebMouseEvent&gt;, 0ul&gt; (object=0x7fef50cf6000, function=
    (void (WebKit::WebPage::*)(WebKit::WebPage * const, const WebKit::WebMouseEvent &amp;)) 0x7fefb7b15b60 &lt;WebKit::WebPage::mouseEvent(WebKit::WebMouseEvent const&amp;)&gt;, args=...) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:41
#23 0x00007fefb6d91204 in IPC::callMemberFunction&lt;WebKit::WebPage, void (WebKit::WebPage::*)(WebKit::WebMouseEvent const&amp;), std::tuple&lt;WebKit::WebMouseEvent&gt;, std::integer_sequence&lt;unsigned long, 0ul&gt; &gt; (args=..., object=0x7fef50cf6000, 
    function=(void (WebKit::WebPage::*)(WebKit::WebPage * const, const WebKit::WebMouseEvent &amp;)) 0x7fefb7b15b60 &lt;WebKit::WebPage::mouseEvent(WebKit::WebMouseEvent const&amp;)&gt;) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:47
#24 0x00007fefb6d85db4 in IPC::handleMessage&lt;Messages::WebPage::MouseEvent, WebKit::WebPage, void (WebKit::WebPage::*)(WebKit::WebMouseEvent const&amp;)&gt; (decoder=..., object=0x7fef50cf6000, function=
    (void (WebKit::WebPage::*)(WebKit::WebPage * const, const WebKit::WebMouseEvent &amp;)) 0x7fefb7b15b60 &lt;WebKit::WebPage::mouseEvent(WebKit::WebMouseEvent const&amp;)&gt;) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:114
#25 0x00007fefb6d7ec3e in WebKit::WebPage::didReceiveWebPageMessage (this=0x7fef50cf6000, connection=..., decoder=...) at DerivedSources/WebKit/WebPageMessageReceiver.cpp:1062
#26 0x00007fefb7b1bb33 in WebKit::WebPage::didReceiveMessage (this=0x7fef50cf6000, connection=..., decoder=...) at ../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:4594
#27 0x00007fefb71adfe9 in IPC::MessageReceiverMap::dispatchMessage (this=0x7fef9fdf3070, connection=..., decoder=...) at ../../Source/WebKit/Platform/IPC/MessageReceiverMap.cpp:123
#28 0x00007fefb77b7167 in WebKit::WebProcess::didReceiveMessage (this=0x7fef9fdf3000, connection=..., decoder=...) at ../../Source/WebKit/WebProcess/WebProcess.cpp:757
#29 0x00007fefb719094d in IPC::Connection::dispatchMessage (this=0x7fef9fde5000, decoder=...) at ../../Source/WebKit/Platform/IPC/Connection.cpp:996
#30 0x00007fefb7190f66 in IPC::Connection::dispatchMessage (this=0x7fef9fde5000, message=std::unique_ptr&lt;IPC::Decoder&gt; = {...}) at ../../Source/WebKit/Platform/IPC/Connection.cpp:1065
#31 0x00007fefb7191438 in IPC::Connection::dispatchOneIncomingMessage (this=0x7fef9fde5000) at ../../Source/WebKit/Platform/IPC/Connection.cpp:1134
#32 0x00007fefb71906c0 in IPC::Connection::&lt;lambda()&gt;::operator()(void) (__closure=0x7fef9fd3efe8) at ../../Source/WebKit/Platform/IPC/Connection.cpp:973
#33 0x00007fefb7196954 in WTF::Detail::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::unique_ptr&lt;IPC::Decoder&gt;)::&lt;lambda()&gt;, void&gt;::call(void) (this=0x7fef9fd3efe0) at DerivedSources/ForwardingHeaders/wtf/Function.h:52
#34 0x00007fefb67f2557 in WTF::Function&lt;void ()&gt;::operator()() const (this=0x7ffc7f2a2db8) at DerivedSources/ForwardingHeaders/wtf/Function.h:84
#35 0x00007fefa8d7be8d in WTF::RunLoop::performWork (this=0x7fef9fdf8000) at ../../Source/WTF/wtf/RunLoop.cpp:119
#36 0x00007fefa8df8456 in WTF::RunLoop::&lt;lambda(gpointer)&gt;::operator()(gpointer) const (__closure=0x0, userData=0x7fef9fdf8000) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:68
#37 0x00007fefa8df847a in WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer) () at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:70
#38 0x00007fefa8df8408 in WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::operator()(GSource *, GSourceFunc, gpointer) const (__closure=0x0, source=0x24c4640, callback=0x7fefa8df845d &lt;WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer)&gt;, 
    userData=0x7fef9fdf8000) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:45
#39 0x00007fefa8df8438 in WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::_FUN(GSource *, GSourceFunc, gpointer) () at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:46
#40 0x00007fefa25b692f in g_main_dispatch () at ../../Source/glib-2.58.1/glib/gmain.c:3182
#41 g_main_context_dispatch () at ../../Source/glib-2.58.1/glib/gmain.c:3847
#42 0x00007fefa25b6cc0 in g_main_context_iterate () at ../../Source/glib-2.58.1/glib/gmain.c:3920
#43 0x00007fefa25b6fd3 in g_main_loop_run () at ../../Source/glib-2.58.1/glib/gmain.c:4116
#44 0x00007fefa8df8953 in WTF::RunLoop::run () at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#45 0x00007fefb7b9f624 in WebKit::AuxiliaryProcessMain&lt;WebKit::WebProcess, WebKit::WebProcessMainGtk&gt; (argc=3, argv=0x7ffc7f2a3188) at ../../Source/WebKit/Shared/AuxiliaryProcessMain.h:68
#46 0x00007fefb7b9bdcb in WebKit::WebProcessMain (argc=3, argv=0x7ffc7f2a3188) at ../../Source/WebKit/WebProcess/gtk/WebProcessMainGtk.cpp:66
#47 0x0000000000400c55 in main (argc=3, argv=0x7ffc7f2a3188) at ../../Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp:45</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653055</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-15 08:07:47 -0700</bug_when>
    <thetext>hmm, I guess we can&apos;t stack allocate SelectionData because it&apos;s ref counted. I&apos;ll fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653398</commentid>
    <comment_count>2</comment_count>
      <attachid>399587</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-17 05:14:19 -0700</bug_when>
    <thetext>Created attachment 399587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653399</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-05-17 05:15:17 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653522</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-18 01:37:46 -0700</bug_when>
    <thetext>Committed r261802: &lt;https://trac.webkit.org/changeset/261802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654135</commentid>
    <comment_count>5</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-19 12:36:25 -0700</bug_when>
    <thetext>*** Bug 212070 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399587</attachid>
            <date>2020-05-17 05:14:19 -0700</date>
            <delta_ts>2020-05-18 00:57:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk-selection-data.diff</filename>
            <type>text/plain</type>
            <size>50166</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhODUzOTk4Nzg0MTUuLmIzOGNjYWFjMjg0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDIwLTA1LTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSAiQVNTRVJUSU9OIEZBSUxFRDogIW1fYWRvcHRp
b25Jc1JlcXVpcmVkIiB3aGVuIGRvdWJsZSBjbGlja2luZyBvbiBhIHdvcmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTk1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU2VsZWN0aW9uRGF0YSBu
b24tcmVmY291bnRlZC4gV2UgY2FuIGp1c3QgbW92ZSBpbiBtb3N0IG9mIHRoZSBjYXNlcyB0byBh
dm9pZCBjb3BpZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpzZWxlY3Rp
b25EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgor
CiAyMDIwLTA1LTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBNb3ZlIHRvIG5ldyBQYXN0ZWJvYXJkIEFQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IGZjZmY1NGNlZmFhYi4uMWI4MmRkNjViYWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC00Myw2ICs0MywxMCBAQCBPQkpDX0NM
QVNTIE5TU3RyaW5nOwogT0JKQ19DTEFTUyBOU0FycmF5OwogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShHVEspCisjaW5jbHVkZSAiU2VsZWN0aW9uRGF0YS5oIgorI2VuZGlmCisKICNpZiBQTEFURk9S
TShXSU4pCiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjaW5jbHVkZSAiV0NEYXRhT2JqZWN0LmgiCkBA
IC02Miw3ICs2Niw2IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFBhc3Rl
Ym9hcmRTdHJhdGVneTsKIGNsYXNzIFJhbmdlOwotY2xhc3MgU2VsZWN0aW9uRGF0YTsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogZW51bSBjbGFzcyBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IDog
Ym9vbCB7IElnbm9yZVVSTCwgQWxsb3dVUkwgfTsKQEAgLTE3Niw2ICsxNzksOSBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBuYW1lKTsKICAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKFNlbGVjdGlvbkRhdGEmKTsKKyNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQorICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoU2VsZWN0aW9uRGF0
YSYmKTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCkBAIC0zMTcsNyArMzIz
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIFJlZlB0cjxT
ZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRhdGE7CisgICAgT3B0aW9uYWw8U2VsZWN0aW9uRGF0
YT4gbV9zZWxlY3Rpb25EYXRhOwogICAgIFN0cmluZyBtX25hbWU7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDE1NDQzOWM5
MTUxYi4uMjUzODBkMTJmZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCIKLSNpbmNsdWRlICJTZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CkBAIC01Nyw3ICs1Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oKQogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3AoKQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+
KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJv
YXJkPihTZWxlY3Rpb25EYXRhKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4g
UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRh
KQpAQCAtNjUsMTAgKzY0LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhCiAgICAgQVNTRVJU
KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJv
YXJkPigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogfQorCitQYXN0ZWJvYXJkOjpQYXN0ZWJv
YXJkKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQorICAgIDogbV9zZWxlY3Rpb25EYXRh
KFdURk1vdmUoc2VsZWN0aW9uRGF0YSkpCit7Cit9CiAjZW5kaWYKIAogUGFzdGVib2FyZDo6UGFz
dGVib2FyZChTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb25EYXRhKQotICAgIDogbV9zZWxlY3Rpb25E
YXRhKCZzZWxlY3Rpb25EYXRhKQorICAgIDogbV9zZWxlY3Rpb25EYXRhKHNlbGVjdGlvbkRhdGEp
CiB7CiB9CiAKQEAgLTgzLDcgKzg3LDcgQEAgUGFzdGVib2FyZDo6flBhc3RlYm9hcmQoKSA9IGRl
ZmF1bHQ7CiBjb25zdCBTZWxlY3Rpb25EYXRhJiBQYXN0ZWJvYXJkOjpzZWxlY3Rpb25EYXRhKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQobV9zZWxlY3Rpb25EYXRhKTsKLSAgICByZXR1cm4gKm1fc2Vs
ZWN0aW9uRGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fc2VsZWN0aW9uRGF0YTsKIH0KIAogc3Rh
dGljIENsaXBib2FyZERhdGFUeXBlIHNlbGVjdGlvbkRhdGFUeXBlRnJvbUhUTUxDbGlwYm9hcmRU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Vs
ZWN0aW9uRGF0YS5oCmluZGV4IGI4YjE0OGNlY2UzZS4uY2YyYjUxZjZmMDI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTIxLDIwICsyMSwxNCBA
QAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2VsZWN0aW9uRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFNl
bGVjdGlvbkRhdGE+IHsKK2NsYXNzIFNlbGVjdGlvbkRhdGEgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VsZWN0aW9uRGF0YT4gY3JlYXRl
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGVjdGlvbkRhdGEpOwot
ICAgIH0KLQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKICAgICBjb25zdCBTdHJp
bmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KICAgICBib29sIGhhc1RleHQoKSBj
b25zdCB7IHJldHVybiAhbV90ZXh0LmlzRW1wdHkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MGE1ZWY1NTJk
OWQuLmVjMWE3NWNhYTE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAyMC0wNS0xNyAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S10gIkFTU0VSVElPTiBGQUlMRUQ6ICFtX2Fkb3B0aW9uSXNSZXF1aXJlZCIgd2hlbiBkb3VibGUg
Y2xpY2tpbmcgb24gYSB3b3JkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTE5NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgV2ViU2VsZWN0aW9uRGF0YSB3cmFwcGVyIHNpbmNlIHdlIGNhbiBq
dXN0IGVuY29kZS9kZWNvZGUgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YS4KKworICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3Vt
ZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25E
YXRhPjo6ZGVjb2RlKTogVXNlIG1vZGVybiBkZWNvZGVyLgorICAgICAgICAqIFNoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYlNlbGVjdGlvbkRh
dGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViU2VsZWN0aW9uRGF0YS5o
OiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL0RyYWdTb3VyY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9EcmFn
U291cmNlR3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdTb3VyY2U6OkRyYWdTb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpEcmFnU291cmNlOjpiZWdpbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmFnU291
cmNlOjpiZWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RHJvcFRhcmdldDo6YWNjZXB0KToKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdl
dDo6ZW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0Ojp1cGRhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpsZWF2ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0
OjpEcm9wVGFyZ2V0Ojpkcm9wKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VTdGFydERyYWcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFydERyYWcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V3JpdGVBc3luY0RhdGE6OldyaXRlQXN5bmNE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6Q2xpcGJvYXJkOjp3cml0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2xpcGJvYXJk
Ojp3cml0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVG9DbGlwYm9h
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRl
VG9DbGlwYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpzdGFy
dERyYWcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIwLTA1LTE3ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNb3ZlIHRvIG5l
dyBQYXN0ZWJvYXJkIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAppbmRleCBmYjlkOGRiNzU5NTguLjc3ZjQ2MjMyODMxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTYyLDYgKzYyLDEwIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KICNlbmRpZgogCisjaWYgUExB
VEZPUk0oR1RLKQorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3RrLmgiCisjZW5kaWYKKwogI2lm
IFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXgg
MzkyNzU0NDYwMTRkLi45ODcwZWZmZGE1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTAxLDc2ICsxMDEsNzYgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
U2VsZWN0aW9uRGF0YSYKICAgICBlbmNvZGVyIDw8IGNhblNtYXJ0UmVwbGFjZTsKIH0KIAotYm9v
bCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
U2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uKQorT3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1l
bnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
c2VsZWN0aW9uLmNsZWFyQWxsKCk7CisgICAgU2VsZWN0aW9uRGF0YSBzZWxlY3Rpb247CiAKICAg
ICBib29sIGhhc1RleHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNUZXh0KSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICho
YXNUZXh0KSB7CiAgICAgICAgIFN0cmluZyB0ZXh0OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHRleHQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICAgICAgc2VsZWN0aW9uLnNldFRleHQodGV4dCk7CiAgICAgfQog
CiAgICAgYm9vbCBoYXNNYXJrdXA7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNNYXJrdXAp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgaWYgKGhhc01hcmt1cCkgewogICAgICAgICBTdHJpbmcgbWFya3VwOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG1hcmt1cCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICBzZWxlY3Rpb24uc2V0TWFya3Vw
KG1hcmt1cCk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNVUkw7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShoYXNVUkwpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAgICAgaWYgKGhhc1VSTCkgewogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICBzZWxlY3Rpb24uc2V0VVJM
KFVSTChVUkwoKSwgdXJsKSwgU3RyaW5nKCkpOwogICAgIH0KIAogICAgIGJvb2wgaGFzVVJJTGlz
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1VSSUxpc3QpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc1VSSUxpc3Qp
IHsKICAgICAgICAgU3RyaW5nIHVyaUxpc3Q7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dXJpTGlzdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgICAgICBzZWxlY3Rpb24uc2V0VVJJTGlzdCh1cmlMaXN0KTsKICAg
ICB9CiAKICAgICBib29sIGhhc0ltYWdlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzSW1h
Z2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgaWYgKGhhc0ltYWdlKSB7CiAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAgICAg
ICAgIGlmICghZGVjb2RlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgc2VsZWN0
aW9uLnNldEltYWdlKGltYWdlLmdldCgpKTsKICAgICB9CiAKICAgICBib29sIGhhc0N1c3RvbURh
dGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0
b21EYXRhKSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgc2VsZWN0aW9uLnNldEN1
c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wg
Y2FuU21hcnRSZXBsYWNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2FuU21hcnRSZXBsYWNl
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgIHNlbGVjdGlvbi5zZXRDYW5TbWFydFJlcGxhY2UoY2FuU21hcnRSZXBsYWNlKTsKIAotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBzZWxlY3Rpb247CiB9CiAKIHN0YXRpYyB2b2lkIGVu
Y29kZUdLZXlGaWxlKEVuY29kZXImIGVuY29kZXIsIEdLZXlGaWxlKiBrZXlGaWxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuaAppbmRleCA3NzQ1YzZkNTQ5
NzUuLjJhMTc1ZTZlZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0Fy
Z3VtZW50Q29kZXJzR3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50
Q29kZXJzR3RrLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFyZ3VtZW50Q29kZXJzR3RrX2gKLSNkZWZpbmUgQXJn
dW1lbnRDb2RlcnNHdGtfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KQEAgLTQ2LDkgKzQ1LDcgQEAgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBHUmVmUHRyPEd0a1BhZ2VTZXR1
cD4mKTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpTZWxlY3Rpb25EYXRhJik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShEZWNvZGVyJiwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYpOworICAgIHN0YXRpYyBPcHRp
b25hbDxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSVBDCi0KLSNlbmRpZiAvLyBBcmd1bWVudENvZGVyc0d0a19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViU2VsZWN0aW9uRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViU2VsZWN0aW9uRGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDliNTA2YjM1YjNlMy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9XZWJTZWxlY3Rpb25EYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDU5ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDE2IFJlZCBIYXQgSW5jLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYlNlbGVjdGlvbkRhdGEuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3RrLmgi
Ci0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLSNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJTZWxlY3Rpb25EYXRh
OjpXZWJTZWxlY3Rpb25EYXRhKCkKLSAgICA6IHNlbGVjdGlvbkRhdGEoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3JlYXRlKCkpCi17Ci19Ci0KLVdlYlNlbGVjdGlvbkRhdGE6OldlYlNlbGVjdGlv
bkRhdGEoY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYgZGF0YSkKLSAgICA6IHNlbGVjdGlv
bkRhdGEoY29uc3RfY2FzdDxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJj4oZGF0YSkpCi17Ci19Ci0K
LVdlYlNlbGVjdGlvbkRhdGE6OldlYlNlbGVjdGlvbkRhdGEoUmVmPFdlYkNvcmU6OlNlbGVjdGlv
bkRhdGE+JiYgZGF0YSkKLSAgICA6IHNlbGVjdGlvbkRhdGEoV1RGTW92ZShkYXRhKSkKLXsKLX0K
LQotV2ViU2VsZWN0aW9uRGF0YTo6V2ViU2VsZWN0aW9uRGF0YShXZWJDb3JlOjpTZWxlY3Rpb25E
YXRhJiYgZGF0YSkKLSAgICA6IHNlbGVjdGlvbkRhdGEoZGF0YSkKLXsKLX0KLQotdm9pZCBXZWJT
ZWxlY3Rpb25EYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAg
IGVuY29kZXIgPDwgc2VsZWN0aW9uRGF0YS5nZXQoKTsKLX0KLQotYm9vbCBXZWJTZWxlY3Rpb25E
YXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJTZWxlY3Rpb25EYXRhJiBzZWxl
Y3Rpb24pCi17Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHNlbGVjdGlvbi5zZWxlY3Rpb25E
YXRhLmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL1dlYlNlbGVjdGlvbkRhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjA1ZjhlZWMwMmI3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL1dlYlNlbGVjdGlvbkRhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8q
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDE2IFJlZCBIYXQgSW5jLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlv
bkRhdGEuaD4KLQotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEZWNvZGVyOwotY2xhc3MgRW5jb2Rl
cjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJTZWxlY3Rpb25EYXRhIHsK
LSAgICBXZWJTZWxlY3Rpb25EYXRhKCk7Ci0gICAgZXhwbGljaXQgV2ViU2VsZWN0aW9uRGF0YShj
b25zdCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJik7Ci0gICAgZXhwbGljaXQgV2ViU2VsZWN0aW9u
RGF0YShSZWY8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YT4mJik7Ci0gICAgZXhwbGljaXQgV2ViU2Vs
ZWN0aW9uRGF0YShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpOwotCi0gICAgUmVmPFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE+IHNlbGVjdGlvbkRhdGE7Ci0KLSAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KElQQzo6RGVjb2RlciYsIFdlYlNlbGVjdGlvbkRhdGEmKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCA3NmYxZTA4Y2E5MzQuLjdkNzg0NTAzZmVk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC0xMDMsNyArMTAzLDYgQEAgU2hhcmVkL2d0ay9OYXRp
dmVXZWJXaGVlbEV2ZW50R3RrLmNwcAogU2hhcmVkL2d0ay9QcmludEluZm9HdGsuY3BwCiBTaGFy
ZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAot
U2hhcmVkL2d0ay9XZWJTZWxlY3Rpb25EYXRhLmNwcAogCiBTaGFyZWQvbGludXgvV2ViTWVtb3J5
U2FtcGxlckxpbnV4LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0RyYWdTb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZS5oCmluZGV4IDhjNmE1NGU5Njc2OS4uNTMyMmI4YzY0M2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaApAQCAtMjgsNiArMjgsNyBAQAog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25z
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWxlY3Rpb25EYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9HUmVmUHRyLmg+CkBAIC0zOCwxMCArMzksNiBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0
IEd0a1dpZGdldDsKIHR5cGVkZWYgc3RydWN0IF9HZGtEcmFnQ29udGV4dCBHZGtEcmFnQ29udGV4
dDsKICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTZWxlY3Rpb25EYXRhOwot
fQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hhcmVhYmxlQml0bWFwOwpAQCAtNTMs
MTQgKzUwLDE0IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBEcmFnU291cmNlKEd0a1dpZGdldCop
OwogICAgIH5EcmFnU291cmNlKCk7CiAKLSAgICB2b2lkIGJlZ2luKFJlZjxXZWJDb3JlOjpTZWxl
Y3Rpb25EYXRhPiYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiYmKTsKKyAgICB2b2lkIGJlZ2luKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJik7CiAKIHByaXZhdGU6
CiAgICAgR3RrV2lkZ2V0KiBtX3dlYlZpZXcgeyBudWxscHRyIH07CiAjaWYgIVVTRShHVEs0KQog
ICAgIEdSZWZQdHI8R2RrRHJhZ0NvbnRleHQ+IG1fZHJhZzsKICNlbmRpZgotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRhdGE7CisgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YT4gbV9zZWxlY3Rpb25EYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
YWdTb3VyY2VHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1Nv
dXJjZUd0azMuY3BwCmluZGV4IDRjMjZhZDJjMGMyOC4uM2VkNGNjYzMyMzY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGszLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGszLmNwcApAQCAt
ODQsNyArODQsNyBAQCBEcmFnU291cmNlOjpEcmFnU291cmNlKEd0a1dpZGdldCogd2ViVmlldykK
ICAgICAgICAgaWYgKCFkcmFnLm1fc2VsZWN0aW9uRGF0YSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBkcmFnLm1fc2VsZWN0aW9uRGF0YSA9IG51bGxwdHI7CisgICAgICAgIGRyYWcu
bV9zZWxlY3Rpb25EYXRhID0gV1RGOjpudWxsb3B0OwogICAgICAgICBkcmFnLm1fZHJhZyA9IG51
bGxwdHI7CiAKICAgICAgICAgR2RrRGV2aWNlKiBkZXZpY2UgPSBnZGtfZHJhZ19jb250ZXh0X2dl
dF9kZXZpY2UoY29udGV4dCk7CkBAIC0xMDYsNyArMTA2LDcgQEAgRHJhZ1NvdXJjZTo6fkRyYWdT
b3VyY2UoKQogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZGF0YShtX3dlYlZp
ZXcsIHRoaXMpOwogfQogCi12b2lkIERyYWdTb3VyY2U6OmJlZ2luKFJlZjxTZWxlY3Rpb25EYXRh
PiYmIHNlbGVjdGlvbkRhdGEsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiYmIGltYWdlKQordm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRh
JiYgc2VsZWN0aW9uRGF0YSwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+JiYgaW1hZ2UpCiB7CiAgICAgaWYgKG1fZHJhZykgewogICAgICAgICBndGtfZHJh
Z19jYW5jZWwobV9kcmFnLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKaW5kZXggMzI3YTUwYzUyMjliLi41MjEwMTQzYmNk
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJj
ZUd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJj
ZUd0azQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIERyYWdTb3VyY2U6On5EcmFnU291cmNlKCkKIHsK
IH0KIAotdm9pZCBEcmFnU291cmNlOjpiZWdpbihSZWY8U2VsZWN0aW9uRGF0YT4mJiwgRHJhZ09w
ZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJikKK3ZvaWQgRHJhZ1NvdXJjZTo6YmVn
aW4oU2VsZWN0aW9uRGF0YSYmLCBEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiYmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdl
dC5oCmluZGV4IDg5YTBkMjgxOWRmOS4uNTRjOGVkMTQ1YmNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5j
bHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CkBAIC00MSwxMCArNDIsNiBAQCB0eXBlZGVmIHN0cnVjdCBfR2RrRHJhZ0NvbnRleHQg
R2RrRHJhZ0NvbnRleHQ7CiB0eXBlZGVmIHN0cnVjdCBfR3RrU2VsZWN0aW9uRGF0YSBHdGtTZWxl
Y3Rpb25EYXRhOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNlbGVjdGlv
bkRhdGE7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7
CkBAIC03NSw3ICs3Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBPcHRpb25hbDxXZWJDb3Jl
OjpJbnRQb2ludD4gbV9wb3NpdGlvbjsKICAgICB1bnNpZ25lZCBtX2RhdGFSZXF1ZXN0Q291bnQg
eyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE+IG1fc2VsZWN0aW9uRGF0
YTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRhdGE7
CiAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBtX29wZXJhdGlvbiB7IFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Ob25lIH07CiAjaWYgIVVTRShHVEs0KQogICAgIFJ1bkxvb3A6OlRpbWVyPERyb3BU
YXJnZXQ+IG1fbGVhdmVUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggMzg4ZGVjMDdkYjJlLi5jMTNiMjliMzFkYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjphY2NlcHQodW5zaWdu
ZWQgdGltZSkKICAgICB9CiAKICAgICBtX2RhdGFSZXF1ZXN0Q291bnQgPSAwOwotICAgIG1fc2Vs
ZWN0aW9uRGF0YSA9IFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpOworICAgIG1fc2VsZWN0aW9uRGF0
YSA9IFNlbGVjdGlvbkRhdGEoKTsKIAogICAgIC8vIFdlYkNvcmUgbmVlZHMgdGhlIHNlbGVjdGlv
biBkYXRhIHRvIGRlY2lkZSwgc28gd2UgbmVlZCB0byBwcmVsb2FkIHRoZQogICAgIC8vIGRhdGEg
b2YgdGFyZ2V0cyB3ZSBzdXBwb3J0LiBPbmNlIGFsbCBkYXRhIHJlcXVlc3RzIGFyZSBkb25lIHdl
IHN0YXJ0CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjplbnRlcihJbnRQb2lu
dCYmIHBvc2l0aW9uLCB1bnNpZ25lZCB0aW1lKQogICAgIEFTU0VSVChwYWdlKTsKICAgICBwYWdl
LT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKIAotICAgIERyYWdEYXRhIGRyYWdEYXRh
KG1fc2VsZWN0aW9uRGF0YS5nZXQoKSwgKm1fcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRv
U2NyZWVuUG9pbnQobV93ZWJWaWV3LCAqbV9wb3NpdGlvbiksIGdka0RyYWdBY3Rpb25Ub0RyYWdP
cGVyYXRpb24oZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhtX2Ryb3AuZ2V0KCkpKSk7Cisg
ICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJm1fc2VsZWN0aW9uRGF0YS52YWx1ZSgpLCAqbV9wb3NpdGlv
biwgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3dlYlZpZXcsICptX3Bvc2l0aW9u
KSwgZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihnZGtfZHJhZ19jb250ZXh0X2dldF9hY3Rp
b25zKG1fZHJvcC5nZXQoKSkpKTsKICAgICBwYWdlLT5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CiB9
CiAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OnVwZGF0ZShJbnRQb2ludCYm
IHBvc2l0aW9uLCB1bnNpZ25lZCB0aW1lKQogICAgIGF1dG8qIHBhZ2UgPSB3ZWJraXRXZWJWaWV3
QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV93ZWJWaWV3KSk7CiAgICAgQVNTRVJU
KHBhZ2UpOwogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEobV9zZWxlY3Rpb25EYXRhLmdldCgpLCAq
bV9wb3NpdGlvbiwgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3dlYlZpZXcsICpt
X3Bvc2l0aW9uKSwgZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihnZGtfZHJhZ19jb250ZXh0
X2dldF9hY3Rpb25zKG1fZHJvcC5nZXQoKSkpKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmbV9z
ZWxlY3Rpb25EYXRhLnZhbHVlKCksICptX3Bvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1Nj
cmVlblBvaW50KG1fd2ViVmlldywgKm1fcG9zaXRpb24pLCBnZGtEcmFnQWN0aW9uVG9EcmFnT3Bl
cmF0aW9uKGdka19kcmFnX2NvbnRleHRfZ2V0X2FjdGlvbnMobV9kcm9wLmdldCgpKSkpOwogICAg
IHBhZ2UtPmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKIH0KIApAQCAtMjI5LDEzICsyMjksMTMgQEAg
dm9pZCBEcm9wVGFyZ2V0OjpsZWF2ZVRpbWVyRmlyZWQoKQogICAgIGF1dG8qIHBhZ2UgPSB3ZWJr
aXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV93ZWJWaWV3KSk7CiAg
ICAgQVNTRVJUKHBhZ2UpOwogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEobV9zZWxlY3Rpb25EYXRh
LmdldCgpLCAqbV9wb3NpdGlvbiwgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3dl
YlZpZXcsICptX3Bvc2l0aW9uKSwgRHJhZ09wZXJhdGlvbk5vbmUpOworICAgIERyYWdEYXRhIGRy
YWdEYXRhKCZtX3NlbGVjdGlvbkRhdGEudmFsdWUoKSwgKm1fcG9zaXRpb24sIGNvbnZlcnRXaWRn
ZXRQb2ludFRvU2NyZWVuUG9pbnQobV93ZWJWaWV3LCAqbV9wb3NpdGlvbiksIERyYWdPcGVyYXRp
b25Ob25lKTsKICAgICBwYWdlLT5kcmFnRXhpdGVkKGRyYWdEYXRhKTsKICAgICBwYWdlLT5yZXNl
dEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKIAogICAgIG1fZHJvcCA9IG51bGxwdHI7CiAgICAg
bV9wb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsKLSAgICBtX3NlbGVjdGlvbkRhdGEgPSBudWxscHRy
OworICAgIG1fc2VsZWN0aW9uRGF0YSA9IFdURjo6bnVsbG9wdDsKIH0KIAogdm9pZCBEcm9wVGFy
Z2V0OjpsZWF2ZSgpCkBAIC0yNTYsMTMgKzI1NiwxMyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRyb3Ao
SW50UG9pbnQmJiBwb3NpdGlvbiwgdW5zaWduZWQgdGltZSkKICAgICB1aW50MzJfdCBmbGFncyA9
IDA7CiAgICAgaWYgKGdka19kcmFnX2NvbnRleHRfZ2V0X3NlbGVjdGVkX2FjdGlvbihtX2Ryb3Au
Z2V0KCkpID09IEdES19BQ1RJT05fQ09QWSkKICAgICAgICAgZmxhZ3MgfD0gRHJhZ0FwcGxpY2F0
aW9uSXNDb3B5S2V5RG93bjsKLSAgICBEcmFnRGF0YSBkcmFnRGF0YShtX3NlbGVjdGlvbkRhdGEu
Z2V0KCksIHBvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KG1fd2ViVmll
dywgcG9zaXRpb24pLCBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGdka19kcmFnX2NvbnRl
eHRfZ2V0X2FjdGlvbnMobV9kcm9wLmdldCgpKSksIHN0YXRpY19jYXN0PERyYWdBcHBsaWNhdGlv
bkZsYWdzPihmbGFncykpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKCZtX3NlbGVjdGlvbkRhdGEu
dmFsdWUoKSwgcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV93ZWJW
aWV3LCBwb3NpdGlvbiksIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oZ2RrX2RyYWdfY29u
dGV4dF9nZXRfYWN0aW9ucyhtX2Ryb3AuZ2V0KCkpKSwgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0
aW9uRmxhZ3M+KGZsYWdzKSk7CiAgICAgcGFnZS0+cGVyZm9ybURyYWdPcGVyYXRpb24oZHJhZ0Rh
dGEsIHsgfSwgeyB9LCB7IH0pOwogICAgIGd0a19kcmFnX2ZpbmlzaChtX2Ryb3AuZ2V0KCksIFRS
VUUsIEZBTFNFLCB0aW1lKTsKIAogICAgIG1fZHJvcCA9IG51bGxwdHI7CiAgICAgbV9wb3NpdGlv
biA9IFdURjo6bnVsbG9wdDsKLSAgICBtX3NlbGVjdGlvbkRhdGEgPSBudWxscHRyOworICAgIG1f
c2VsZWN0aW9uRGF0YSA9IFdURjo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwCmluZGV4IGFhYjBmN2VkMGFkMC4uM2I5M2MyMzgxNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzI4LDcgKzMy
OCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c3RhcnREcmFnKFJlZjxTZWxlY3Rpb25EYXRhPiYmIHNlbGVjdGlvbiwgRHJhZ09w
ZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFn
ZSkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uLCBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
JiYgZHJhZ0ltYWdlKQogewogICAgIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdFQktJVF9X
RUJfVklFV19CQVNFKG1fdmlld1dpZGdldCksIFdURk1vdmUoc2VsZWN0aW9uKSwgZHJhZ09wZXJh
dGlvbiwgV1RGTW92ZShkcmFnSW1hZ2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCA3MjcyNzM0M2RlMDMuLmVkMzllNzRk
ZGU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25E
aWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1Nu
YXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCi0gICAgdm9pZCBzdGFydERyYWcoUmVmPFdlYkNvcmU6OlNlbGVjdGlv
bkRhdGE+JiYsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
JiYgZHJhZ0ltYWdlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxl
Y3Rpb25EYXRhJiYsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+JiYgZHJhZ0ltYWdlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbigpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggOTI1ZDhmOGM3
ODNjLi4xNWY2NmZkNDliYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0xNzc5LDcgKzE3NzksNyBAQCB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcEFyZWEoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZXdCYXNlLCBjb25zdCBJbnRSZQogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLXZvaWQg
d2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNl
LCBSZWY8U2VsZWN0aW9uRGF0YT4mJiBzZWxlY3Rpb25EYXRhLCBEcmFnT3BlcmF0aW9uIGRyYWdP
cGVyYXRpb24sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgaW1hZ2UpCit2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgU2VsZWN0
aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbiwgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBpbWFnZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAgICBpZiAoIXByaXYtPmRyYWdTb3Vy
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCBhMWRkZWQzOTlkNjUuLjcwM2UzNmRkYzkyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3MoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VQYWdlQ2xvc2VkKFdlYktpdFdlYlZpZXdCYXNlKik7CiAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRX
ZWJWaWV3QmFzZSosIFJlZjxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiYmLCBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uLCBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+JiYpOwordm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3QmFzZSosIFdlYkNvcmU6OlNlbGVj
dGlvbkRhdGEmJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwPiYmKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRQZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24oV2ViS2l0V2ViVmlld0Jhc2UqKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggOGZjNzY3ZjczNTYxLi4yMDJiMmI5ODc3N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1MCw3ICsyNTAsNyBAQCBwdWJsaWM6
CiAgICAgCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICNpZiBQTEFURk9STShHVEspCi0gICAg
dmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhSZWY8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YT4mJiwgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2Up
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEm
JiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFn
SW1hZ2UpID0gMDsKICNlbHNlCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJD
b3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJikgeyB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDY1NDdmNGIz
OGJlZi4uZmYzZTNlZDJmZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0j
aW5jbHVkZSAiV2ViU2VsZWN0aW9uRGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9u
RGF0YS5oPgogI2VuZGlmCiAKICNpZiBVU0UoQ0FJUk8pCkBAIC0yNDEwLDggKzI0MTAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9s
bGVyQWN0aW9uIGFjdGlvbiwgRHJhZwogICAgICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nl
c3NUb0Jhc2VVUkwoKnRoaXMsIHVybCk7CiAKICAgICBBU1NFUlQoZHJhZ0RhdGEucGxhdGZvcm1E
YXRhKCkpOwotICAgIFdlYlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uKCpkcmFnRGF0YS5wbGF0Zm9y
bURhdGEoKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEuZ2xv
YmFsUG9zaXRpb24oKSwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIHNl
bGVjdGlvbiwgZHJhZ0RhdGEuZmxhZ3MoKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLmNsaWVudFBvc2l0
aW9uKCksIGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCksIGRyYWdEYXRhLmRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzaygpLCAqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCksIGRyYWdEYXRhLmZsYWdz
KCkpKTsKICNlbHNlCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNh
bmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSk7CiAjZW5kaWYKQEAgLTI0MzEsMTAgKzI0MzAsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50
NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJDb3IKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQg
V2ViUGFnZVByb3h5OjpzdGFydERyYWcoV2ViU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbiwgdWlu
dDY0X3QgZHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJ
bWFnZUhhbmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWcoU2VsZWN0aW9uRGF0YSYm
IHNlbGVjdGlvbkRhdGEsIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUpCiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gZHJhZ0ltYWdlID0gIWRyYWdJbWFnZUhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkgOiBudWxscHRyOwotICAgIHBhZ2VDbGllbnQo
KS5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rpb24uc2VsZWN0aW9uRGF0YSksIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRpb24pLCBXVEZNb3ZlKGRyYWdJbWFn
ZSkpOworICAgIHBhZ2VDbGllbnQoKS5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ09wZXJhdGlvbiksIFdURk1v
dmUoZHJhZ0ltYWdlKSk7CiAKICAgICBkaWRTdGFydERyYWcoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzJlYzQ5NGRiNGRlLi4wYjA0YzFlZjlkYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMTksNiArMjE5LDcgQEAg
Y2xhc3MgR3JhcGhpY3NMYXllcjsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBQcm90ZWN0aW9uU3Bh
Y2U7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXI7CitjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRpb25CdWJi
bGU7CkBAIC0zNTAsNyArMzUxLDYgQEAgc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uRGF0YTsKIHN0
cnVjdCBXZWJIaXRUZXN0UmVzdWx0RGF0YTsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3Jl
Owogc3RydWN0IFdlYlBvcHVwSXRlbTsKLXN0cnVjdCBXZWJTZWxlY3Rpb25EYXRhOwogc3RydWN0
IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOwogc3RydWN0IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJz
Owogc3RydWN0IFVzZXJNZXNzYWdlOwpAQCAtMTE2NCw3ICsxMTY0LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxl
JiBhcmNoaXZlSGFuZGxlLCB1aW50NjRfdCBhcmNoaXZlU2l6ZSk7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspCi0gICAgdm9pZCBzdGFydERyYWcoV2ViU2VsZWN0aW9uRGF0YSYmLCB1aW50NjRf
dCBkcmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdl
KTsKKyAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIHVpbnQ2NF90
IGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2Up
OwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQ5YzE5YmQ5OWY2YS4uY2Y4MWE2NGM5MDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zMTgsNyArMzE4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTZXRQcm9t
aXNlZERhdGFGb3JJbWFnZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpIYW5kbGUgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSwgU3RyaW5nIGZpbGVu
YW1lLCBTdHJpbmcgZXh0ZW5zaW9uLCBTdHJpbmcgdGl0bGUsIFN0cmluZyB1cmwsIFN0cmluZyB2
aXNpYmxlVVJMLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGUsIHVp
bnQ2NF90IGFyY2hpdmVTaXplKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUo
RFJBR19TVVBQT1JUKQotICAgIFN0YXJ0RHJhZyhzdHJ1Y3QgV2ViS2l0OjpXZWJTZWxlY3Rpb25E
YXRhIHNlbGVjdGlvbiwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCisgICAgU3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlv
bkRhdGEgc2VsZWN0aW9uRGF0YSwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5o
CmluZGV4IDdiOGFiYTg0YzhjNi4uMTY4YmJmNzA0MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7
CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKK2NsYXNzIFNlbGVjdGlvbkRhdGE7CiBzdHJ1
Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQ
YXN0ZWJvYXJkVVJMOwpAQCAtNTEsNyArNTIsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKLXN0cnVjdCBXZWJTZWxl
Y3Rpb25EYXRhOwogCiBjbGFzcyBXZWJQYXN0ZWJvYXJkUHJveHkgOiBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlBhc3RlYm9hcmRQcm94
eSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRUZXh0KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYp
PiYmKTsKICAgICB2b2lkIHJlYWRGaWxlUGF0aHMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlJiYpPiYmKTsKLSAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViU2VsZWN0aW9uRGF0YSYmKTsKKyAgICB2b2lkIHdyaXRl
VG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYmKTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpOwogCiAgICAgV2ViRnJhbWVQcm94eSogbV9wcmltYXJ5U2VsZWN0aW9uT3duZXIg
eyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0
ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0
ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KaW5kZXggN2ZkNzY3ZmVhN2ZlLi5jMGRiYjBlODQwYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTY1LDcgKzY1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFzdGVib2Fy
ZFByb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIFJlYWRUZXh0KFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKFN0cmluZyB0ZXh0KSBTeW5jaHJvbm91cwogICAgIFJlYWRGaWxlUGF0aHMoU3RyaW5n
IHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzCiAg
ICAgUmVhZEJ1ZmZlcihTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSkgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKSBTeW5jaHJvbm91cwot
ICAgIFdyaXRlVG9DbGlwYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdHJ1Y3QgV2ViS2l0
OjpXZWJTZWxlY3Rpb25EYXRhIHBhc3RlYm9hcmRDb250ZW50KQorICAgIFdyaXRlVG9DbGlwYm9h
cmQoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHBhc3RlYm9h
cmRDb250ZW50KQogICAgIENsZWFyQ2xpcGJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggOWE3YmJh
YTFiODkwLi43ODY2Y2RiMTc3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9DbGlwYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJv
YXJkLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZFRleHQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQYXRocyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHJl
YWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik+JiYpOwotICAgIHZvaWQgd3JpdGUoUmVmPFdlYkNvcmU6OlNlbGVj
dGlvbkRhdGE+JiYpOworICAgIHZvaWQgd3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKTsK
ICAgICB2b2lkIGNsZWFyKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKaW5kZXggOTEzZDMzOTk0ZWI4Li4xMmIzNTVkOWM3OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAg
LTE0NiwzNCArMTQ2LDM0IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIq
IGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yCiBzdHJ1Y3QgV3JpdGVB
c3luY0RhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIFdy
aXRlQXN5bmNEYXRhKFJlZjxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiYmIHNlbGVjdGlvbiwgQ2xp
cGJvYXJkJiBjbGlwYm9hcmQpCisgICAgV3JpdGVBc3luY0RhdGEoV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YSYmIHNlbGVjdGlvbiwgQ2xpcGJvYXJkJiBjbGlwYm9hcmQpCiAgICAgICAgIDogc2VsZWN0
aW9uRGF0YShXVEZNb3ZlKHNlbGVjdGlvbikpCiAgICAgICAgICwgY2xpcGJvYXJkKGNsaXBib2Fy
ZCkKICAgICB7CiAgICAgfQogCi0gICAgUmVmPFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE+IHNlbGVj
dGlvbkRhdGE7CisgICAgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb25EYXRhOwogICAg
IENsaXBib2FyZCYgY2xpcGJvYXJkOwogfTsKIAogZW51bSBDbGlwYm9hcmRUYXJnZXRUeXBlIHsg
TWFya3VwLCBUZXh0LCBJbWFnZSwgVVJJTGlzdCwgU21hcnRQYXN0ZSwgQ3VzdG9tIH07CiAKLXZv
aWQgQ2xpcGJvYXJkOjp3cml0ZShSZWY8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YT4mJiBzZWxlY3Rp
b25EYXRhKQordm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhKQogewogICAgIFNldEZvclNjb3BlPFdlYkZyYW1lUHJveHkqPiBmcmFtZVdy
aXRpbmdUb0NsaXBib2FyZChtX2ZyYW1lV3JpdGluZ1RvQ2xpcGJvYXJkLCBXZWJQYXN0ZWJvYXJk
UHJveHk6OnNpbmdsZXRvbigpLnByaW1hcnlTZWxlY3Rpb25Pd25lcigpKTsKIAogICAgIEdSZWZQ
dHI8R3RrVGFyZ2V0TGlzdD4gbGlzdCA9IGFkb3B0R1JlZihndGtfdGFyZ2V0X2xpc3RfbmV3KG51
bGxwdHIsIDApKTsKLSAgICBpZiAoc2VsZWN0aW9uRGF0YS0+aGFzVVJJTGlzdCgpKQorICAgIGlm
IChzZWxlY3Rpb25EYXRhLmhhc1VSSUxpc3QoKSkKICAgICAgICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygidGV4dC91cmktbGlz
dCIpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpVUklMaXN0KTsKLSAgICBpZiAoc2VsZWN0aW9u
RGF0YS0+aGFzTWFya3VwKCkpCisgICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzTWFya3VwKCkpCiAg
ICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoInRleHQvaHRtbCIpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpNYXJrdXAp
OwotICAgIGlmIChzZWxlY3Rpb25EYXRhLT5oYXNJbWFnZSgpKQorICAgIGlmIChzZWxlY3Rpb25E
YXRhLmhhc0ltYWdlKCkpCiAgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGRfaW1hZ2VfdGFyZ2V0
cyhsaXN0LmdldCgpLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpJbWFnZSwgVFJVRSk7Ci0gICAgaWYg
KHNlbGVjdGlvbkRhdGEtPmhhc1RleHQoKSkKKyAgICBpZiAoc2VsZWN0aW9uRGF0YS5oYXNUZXh0
KCkpCiAgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKGxpc3QuZ2V0KCks
IENsaXBib2FyZFRhcmdldFR5cGU6OlRleHQpOwotICAgIGlmIChzZWxlY3Rpb25EYXRhLT5jYW5T
bWFydFJlcGxhY2UoKSkKKyAgICBpZiAoc2VsZWN0aW9uRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkK
ICAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5f
c3RhdGljX3N0cmluZygiYXBwbGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAs
IENsaXBib2FyZFRhcmdldFR5cGU6OlNtYXJ0UGFzdGUpOwotICAgIGlmIChzZWxlY3Rpb25EYXRh
LT5oYXNDdXN0b21EYXRhKCkpCisgICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgp
KQogICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVy
bl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkp
LCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOwogCiAgICAgaW50IG51bWJlck9mVGFy
Z2V0czsKQEAgLTE4NywyNSArMTg3LDI0IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShSZWY8V2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YT4mJiBzZWxlY3Rpb25EYXRhKQogICAgIGdib29sZWFuIHN1Y2Nl
ZWRlZCA9IGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0YShtX2NsaXBib2FyZCwgdGFibGUsIG51
bWJlck9mVGFyZ2V0cywKICAgICAgICAgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0
YSogc2VsZWN0aW9uLCBndWludCBpbmZvLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICAg
ICAgYXV0byYgZGF0YSA9ICpzdGF0aWNfY2FzdDxXcml0ZUFzeW5jRGF0YSo+KHVzZXJEYXRhKTsK
LSAgICAgICAgICAgIGF1dG8mIHNlbGVjdGlvbkRhdGEgPSBkYXRhLnNlbGVjdGlvbkRhdGEuZ2V0
KCk7CiAgICAgICAgICAgICBzd2l0Y2ggKGluZm8pIHsKICAgICAgICAgICAgIGNhc2UgQ2xpcGJv
YXJkVGFyZ2V0VHlwZTo6TWFya3VwOiB7Ci0gICAgICAgICAgICAgICAgQ1N0cmluZyBtYXJrdXAg
PSBzZWxlY3Rpb25EYXRhLm1hcmt1cCgpLnV0ZjgoKTsKKyAgICAgICAgICAgICAgICBDU3RyaW5n
IG1hcmt1cCA9IGRhdGEuc2VsZWN0aW9uRGF0YS5tYXJrdXAoKS51dGY4KCk7CiAgICAgICAgICAg
ICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9z
dGF0aWNfc3RyaW5nKCJ0ZXh0L2h0bWwiKSwgOCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBndWNo
YXIqPihtYXJrdXAuZGF0YSgpKSwgbWFya3VwLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ2xpcGJvYXJkVGFyZ2V0VHlw
ZTo6VGV4dDoKLSAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0X3RleHQoc2Vs
ZWN0aW9uLCBzZWxlY3Rpb25EYXRhLnRleHQoKS51dGY4KCkuZGF0YSgpLCAtMSk7CisgICAgICAg
ICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldF90ZXh0KHNlbGVjdGlvbiwgZGF0YS5zZWxl
Y3Rpb25EYXRhLnRleHQoKS51dGY4KCkuZGF0YSgpLCAtMSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENsaXBib2FyZFRhcmdldFR5cGU6OkltYWdlOiB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzSW1hZ2UoKSkgewotICAgICAgICAgICAg
ICAgICAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gcGl4YnVmID0gYWRvcHRHUmVmKHNlbGVjdGlvbkRh
dGEuaW1hZ2UoKS0+Z2V0R2RrUGl4YnVmKCkpOworICAgICAgICAgICAgICAgIGlmIChkYXRhLnNl
bGVjdGlvbkRhdGEuaGFzSW1hZ2UoKSkgeworICAgICAgICAgICAgICAgICAgICBHUmVmUHRyPEdk
a1BpeGJ1Zj4gcGl4YnVmID0gYWRvcHRHUmVmKGRhdGEuc2VsZWN0aW9uRGF0YS5pbWFnZSgpLT5n
ZXRHZGtQaXhidWYoKSk7CiAgICAgICAgICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9z
ZXRfcGl4YnVmKHNlbGVjdGlvbiwgcGl4YnVmLmdldCgpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENs
aXBib2FyZFRhcmdldFR5cGU6OlVSSUxpc3Q6IHsKLSAgICAgICAgICAgICAgICBDU3RyaW5nIHVy
aUxpc3QgPSBzZWxlY3Rpb25EYXRhLnVyaUxpc3QoKS51dGY4KCk7CisgICAgICAgICAgICAgICAg
Q1N0cmluZyB1cmlMaXN0ID0gZGF0YS5zZWxlY3Rpb25EYXRhLnVyaUxpc3QoKS51dGY4KCk7CiAg
ICAgICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb24sIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKCJ0ZXh0L3VyaS1saXN0IiksIDgsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZ3VjaGFyKj4odXJpTGlzdC5kYXRhKCkpLCB1cmlMaXN0Lmxlbmd0aCgpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTIxMyw4ICsyMTIsOCBAQCB2
b2lkIENsaXBib2FyZDo6d3JpdGUoUmVmPFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE+JiYgc2VsZWN0
aW9uRGF0YSkKICAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0X3RleHQoc2Vs
ZWN0aW9uLCAiIiwgLTEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b206Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGVj
dGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8qIGJ1
ZmZlciA9IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpOworICAgICAgICAgICAgICAgIGlmIChk
YXRhLnNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8qIGJ1ZmZlciA9IGRhdGEuc2VsZWN0aW9uRGF0YS5jdXN0b21EYXRhKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uLCBnZGtfYXRvbV9p
bnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlw
ZSgpKSwgOCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBndWNoYXIqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKaW5k
ZXggMTNkMzcyZmI0MzVlLi4wN2FiYjcxMzE5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKQEAgLTE1NiwzNiArMTU2LDM2IEBAIHZvaWQgQ2xp
cGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViQ29yCiAgICAgfSwgbmV3IFJlYWRCdWZmZXJBc3luY0RhdGEoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIAotdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFJlZjxXZWJD
b3JlOjpTZWxlY3Rpb25EYXRhPiYmIHNlbGVjdGlvbkRhdGEpCit2b2lkIENsaXBib2FyZDo6d3Jp
dGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiB7CiAgICAgVmVjdG9y
PEdka0NvbnRlbnRQcm92aWRlcio+IHByb3ZpZGVyczsKLSAgICBpZiAoc2VsZWN0aW9uRGF0YS0+
aGFzTWFya3VwKCkpIHsKLSAgICAgICAgQ1N0cmluZyBtYXJrdXAgPSBzZWxlY3Rpb25EYXRhLT5t
YXJrdXAoKS51dGY4KCk7CisgICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzTWFya3VwKCkpIHsKKyAg
ICAgICAgQ1N0cmluZyBtYXJrdXAgPSBzZWxlY3Rpb25EYXRhLm1hcmt1cCgpLnV0ZjgoKTsKICAg
ICAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3KG1hcmt1
cC5kYXRhKCksIG1hcmt1cC5sZW5ndGgoKSkpOwogICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdk
a19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoInRleHQvaHRtbCIsIGJ5dGVzLmdldCgp
KSk7CiAgICAgfQogCi0gICAgaWYgKHNlbGVjdGlvbkRhdGEtPmhhc1VSSUxpc3QoKSkgewotICAg
ICAgICBDU3RyaW5nIHVyaUxpc3QgPSBzZWxlY3Rpb25EYXRhLT51cmlMaXN0KCkudXRmOCgpOwor
ICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc1VSSUxpc3QoKSkgeworICAgICAgICBDU3RyaW5nIHVy
aUxpc3QgPSBzZWxlY3Rpb25EYXRhLnVyaUxpc3QoKS51dGY4KCk7CiAgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ldyh1cmlMaXN0LmRhdGEoKSwgdXJp
TGlzdC5sZW5ndGgoKSkpOwogICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50X3By
b3ZpZGVyX25ld19mb3JfYnl0ZXMoInRleHQvdXJpLWxpc3QiLCBieXRlcy5nZXQoKSkpOwogICAg
IH0KIAotICAgIGlmIChzZWxlY3Rpb25EYXRhLT5oYXNJbWFnZSgpKSB7Ci0gICAgICAgIEdSZWZQ
dHI8R2RrUGl4YnVmPiBwaXhidWYgPSBhZG9wdEdSZWYoc2VsZWN0aW9uRGF0YS0+aW1hZ2UoKS0+
Z2V0R2RrUGl4YnVmKCkpOworICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0ltYWdlKCkpIHsKKyAg
ICAgICAgR1JlZlB0cjxHZGtQaXhidWY+IHBpeGJ1ZiA9IGFkb3B0R1JlZihzZWxlY3Rpb25EYXRh
LmltYWdlKCktPmdldEdka1BpeGJ1ZigpKTsKICAgICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtf
Y29udGVudF9wcm92aWRlcl9uZXdfdHlwZWQoR0RLX1RZUEVfUElYQlVGLCBwaXhidWYuZ2V0KCkp
KTsKICAgICB9CiAKLSAgICBpZiAoc2VsZWN0aW9uRGF0YS0+aGFzVGV4dCgpKQotICAgICAgICBw
cm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50X3Byb3ZpZGVyX25ld190eXBlZChHX1RZUEVfU1RS
SU5HLCBzZWxlY3Rpb25EYXRhLT50ZXh0KCkudXRmOCgpLmRhdGEoKSkpOworICAgIGlmIChzZWxl
Y3Rpb25EYXRhLmhhc1RleHQoKSkKKyAgICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVu
dF9wcm92aWRlcl9uZXdfdHlwZWQoR19UWVBFX1NUUklORywgc2VsZWN0aW9uRGF0YS50ZXh0KCku
dXRmOCgpLmRhdGEoKSkpOwogCi0gICAgaWYgKHNlbGVjdGlvbkRhdGEtPmNhblNtYXJ0UmVwbGFj
ZSgpKSB7CisgICAgaWYgKHNlbGVjdGlvbkRhdGEuY2FuU21hcnRSZXBsYWNlKCkpIHsKICAgICAg
ICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3KG51bGxwdHIs
IDApKTsKICAgICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdf
Zm9yX2J5dGVzKCJhcHBsaWNhdGlvbi92bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiLCBieXRlcy5n
ZXQoKSkpOwogICAgIH0KIAotICAgIGlmIChzZWxlY3Rpb25EYXRhLT5oYXNDdXN0b21EYXRhKCkp
IHsKLSAgICAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gc2VsZWN0aW9uRGF0YS0+Y3VzdG9t
RGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBpZiAoc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21E
YXRhKCkpIHsKKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gc2VsZWN0aW9uRGF0YS5j
dXN0b21EYXRhKCktPmNyZWF0ZUdCeXRlcygpOwogICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdk
a19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6Omd0a1R5cGUoKSwgYnl0ZXMuZ2V0KCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKaW5kZXgg
YzZkZDQ2MjViMGRhLi4zZGViZjM4YTU0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCkBAIC0yOSwxMSArMjksMTEg
QEAKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgotI2luY2x1ZGUgIldlYlNlbGVj
dGlvbkRhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJv
YXJkSXRlbUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtUGFzdGVib2FyZC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1NldEZvclNjb3BlLmg+CkBAIC02MSw5ICs2MSw5IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYK
ICAgICBDbGlwYm9hcmQ6OmdldChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihwYXN0ZWJvYXJk
VHlwZS51dGY4KCkuZGF0YSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFdlYlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb24pCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6d3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKIHsKLSAgICBDbGlwYm9hcmQ6OmdldChw
YXN0ZWJvYXJkTmFtZSkud3JpdGUoV1RGTW92ZShzZWxlY3Rpb24uc2VsZWN0aW9uRGF0YSkpOwor
ICAgIENsaXBib2FyZDo6Z2V0KHBhc3RlYm9hcmROYW1lKS53cml0ZShXVEZNb3ZlKHNlbGVjdGlv
bkRhdGEpKTsKIH0KIAogdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNsZWFyQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCkBAIC0xMjMsMjEgKzEyMywyMSBAQCB2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFZlY3RvcjxQYXN0ZWJvYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBzZWxl
Y3Rpb25EYXRhID0gU2VsZWN0aW9uRGF0YTo6Y3JlYXRlKCk7CisgICAgU2VsZWN0aW9uRGF0YSBz
ZWxlY3Rpb25EYXRhOwogICAgIGNvbnN0IGF1dG8mIGN1c3RvbURhdGEgPSBkYXRhWzBdOwogICAg
IGN1c3RvbURhdGEuZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoWyZzZWxlY3Rpb25EYXRh
XSAoYXV0byYgdHlwZSwgYXV0byYgc3RyaW5nT3JCdWZmZXIpIHsKICAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAg
IGlmICh0eXBlID09ICJ0ZXh0L3BsYWluIl9zKQotICAgICAgICAgICAgICAgIHNlbGVjdGlvbkRh
dGEtPnNldFRleHQoV1RGOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpOworICAgICAgICAg
ICAgICAgIHNlbGVjdGlvbkRhdGEuc2V0VGV4dChXVEY6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVm
ZmVyKSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L2h0bWwiX3MpCi0gICAg
ICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS0+c2V0TWFya3VwKFdURjo6Z2V0PFN0cmluZz4oc3Ry
aW5nT3JCdWZmZXIpKTsKKyAgICAgICAgICAgICAgICBzZWxlY3Rpb25EYXRhLnNldE1hcmt1cChX
VEY6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0
eXBlID09ICJ0ZXh0L3VyaS1saXN0Il9zKQotICAgICAgICAgICAgICAgIHNlbGVjdGlvbkRhdGEt
PnNldFVSSUxpc3QoV1RGOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpOworICAgICAgICAg
ICAgICAgIHNlbGVjdGlvbkRhdGEuc2V0VVJJTGlzdChXVEY6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9KTsKIAogICAgIGlmIChjdXN0b21EYXRhLmhhc1Nh
bWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWN1c3RvbURhdGEub3JpZ2luKCkuaXNFbXB0eSgpKQot
ICAgICAgICBzZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKGN1c3RvbURhdGEuY3JlYXRlU2hh
cmVkQnVmZmVyKCkpOworICAgICAgICBzZWxlY3Rpb25EYXRhLnNldEN1c3RvbURhdGEoY3VzdG9t
RGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAKICAgICBDbGlwYm9hcmQ6OmdldChwYXN0ZWJv
YXJkTmFtZSkud3JpdGUoV1RGTW92ZShzZWxlY3Rpb25EYXRhKSk7CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDFiYTRkM2Ji
NDQ3Yy4uMzkwNGJlZjc4MWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtNzEsNyArNzEsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAi
V2ViU2VsZWN0aW9uRGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uRGF0YS5oPgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzI1LDcgKzMyNSw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nCiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJiBzZWxl
Y3Rpb25EYXRhKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVUb0Ns
aXBib2FyZChwYXN0ZWJvYXJkTmFtZSwgV2ViU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhKSks
IDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVUb0NsaXBib2FyZChw
YXN0ZWJvYXJkTmFtZSwgV1RGTW92ZShzZWxlY3Rpb25EYXRhKSksIDApOwogfQogCiB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDE4NjdjOTg0OTA1
Yy4uZWVkN2I5OTY4NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTMy
LDEzICszMiwxMyBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldl
YlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldl
YlNlbGVjdGlvbkRhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvT3BlcmF0aW9ucy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFn
RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRD
YWlyby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uRGF0YS5oPgogI2luY2x1ZGUgPGNh
aXJvLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzUsOCArNzUsNyBAQCB2b2lkIFdlYkRy
YWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFu
c2ZlciwgRnJhbWUmKQogCiAgICAgbV9wYWdlLT53aWxsU3RhcnREcmFnKCk7CiAKLSAgICBXZWJT
ZWxlY3Rpb25EYXRhIHNlbGVjdGlvbihkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLnNlbGVjdGlv
bkRhdGEoKSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0
RHJhZyhzZWxlY3Rpb24sIGRhdGFUcmFuc2Zlci5zb3VyY2VPcGVyYXRpb24oKSwgaGFuZGxlKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0RHJhZyhkYXRh
VHJhbnNmZXIucGFzdGVib2FyZCgpLnNlbGVjdGlvbkRhdGEoKSwgZGF0YVRyYW5zZmVyLnNvdXJj
ZU9wZXJhdGlvbigpLCBoYW5kbGUpKTsKIH0KIAogfTsgLy8gbmFtZXNwYWNlIFdlYktpdC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODY4NTMx
YTRkZmQ3Li40YWM0NDdjMWM4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAKIAogI2lmIFBMQVRGT1JNKEdUSykK
ICNpbmNsdWRlICJXZWJQcmludE9wZXJhdGlvbkd0ay5oIgotI2luY2x1ZGUgIldlYlNlbGVjdGlv
bkRhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxn
dGsvZ3RrLmg+CiAjZW5kaWYKIApAQCAtMzkzNiwxNCArMzkzNiwxNCBAQCBOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIFdlYlBhZ2U6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKICNpZiBQTEFURk9STShHVEsp
Ci12b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxl
ckFjdGlvbiBhY3Rpb24sIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2ssIFdlYlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb24sIHVpbnQzMl90IGZsYWdzKQordm9pZCBX
ZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24g
YWN0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBTZWxl
Y3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgdWludDMyX3QgZmxhZ3MpCiB7CiAgICAgaWYgKCFt
X3BhZ2UpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ09wZXJhdGlvbk5vbmUsIERyYWdIYW5kbGluZ01ldGhv
ZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBEcmFnRGF0YSBkcmFnRGF0YShzZWxlY3Rpb24uc2VsZWN0aW9uRGF0YS5wdHIoKSwgY2xp
ZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihk
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBzdGF0aWNfY2FzdDxEcmFnQXBwbGljYXRpb25G
bGFncz4oZmxhZ3MpKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmc2VsZWN0aW9uRGF0YSwgY2xp
ZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihk
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBzdGF0aWNfY2FzdDxEcmFnQXBwbGljYXRpb25G
bGFncz4oZmxhZ3MpKTsKICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2UgRHJhZ0NvbnRy
b2xsZXJBY3Rpb246OkVudGVyZWQ6IHsKICAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERy
YWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0Rh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGZl
YjMwZWJjNDA4Yy4uMGIxZDgxYzg2OThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC0xODYsNiArMTg2LDcgQEAgY2xhc3MgUHJpbnRDb250ZXh0Owog
Y2xhc3MgUmFuZ2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOworY2xhc3MgU2VsZWN0aW9uRGF0YTsKIGNsYXNzIFNlbGVjdGlvblJlY3Q7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKQEAgLTI5Niw3ICsyOTcsNiBAQCBz
dHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25EYXRhOwogc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dDsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZl
cmVuY2VzU3RvcmU7Ci1zdHJ1Y3QgV2ViU2VsZWN0aW9uRGF0YTsKIHN0cnVjdCBXZWJzaXRlUG9s
aWNpZXNEYXRhOwogCiAjaWYgRU5BQkxFKFVJX1NJREVfQ09NUE9TSVRJTkcpCkBAIC04OTUsNyAr
ODk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRh
YmxlRWxlbWVudCgpOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oR1RL
KQotICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0
aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrLCBXZWJTZWxlY3Rpb25EYXRhJiYsIHVpbnQzMl90IGZsYWdzKTsKKyAgICB2b2lk
IHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywg
V2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50MzJfdCBmbGFncyk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpICYmICFQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlZWIw
OTBmYzNkMmYuLjgxYTdmNzhhMGE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMDcsNyArMzA3LDcgQEAgR2Vu
ZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogICAgICMgRHJhZyBhbmQgZHJvcC4KICNpZiBQTEFURk9S
TShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgUGVyZm9ybURyYWdDb250cm9sbGVy
QWN0aW9uKGVudW06dWludDhfdCBXZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwg
V2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2Jh
bFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIHN0cnVjdCBX
ZWJLaXQ6OldlYlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uLCB1aW50MzJfdCBmbGFncykKKyAgICBQ
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oZW51bTp1aW50OF90IFdlYktpdDo6RHJhZ0NvbnRy
b2xsZXJBY3Rpb24gYWN0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb24sIHVpbnQzMl90IGZs
YWdzKQogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICBQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oZW51bTp1aW50OF90IFdlYktpdDo6RHJh
Z0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YSwgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9uc0ZvclVw
bG9hZCkK
</data>
<flag name="review"
          id="415005"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>