<?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>47097</bug_id>
          
          <creation_ts>2010-10-04 11:25:46 -0700</creation_ts>
          <short_desc>Generate messages sent to the WebProcess class.</short_desc>
          <delta_ts>2010-10-04 16:07:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abecsi</cc>
    
    <cc>aroben</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>289016</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-04 11:25:46 -0700</bug_when>
    <thetext>Generate messages sent to the WebProcess class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289023</commentid>
    <comment_count>1</comment_count>
      <attachid>69651</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-04 11:30:18 -0700</bug_when>
    <thetext>Created attachment 69651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289026</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-04 11:39:39 -0700</bug_when>
    <thetext>Attachment 69651 did not build on qt:
Build output: http://queues.webkit.org/results/4146072</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289032</commentid>
    <comment_count>3</comment_count>
      <attachid>69651</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-04 11:42:11 -0700</bug_when>
    <thetext>Comment on attachment 69651
Patch

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

&gt; WebKit2/WebKit2.pro:180
&gt;  HEADERS += \
&gt;      Shared/CoreIPCSupport/DrawingAreaMessageKinds.h \
&gt;      Shared/CoreIPCSupport/DrawingAreaProxyMessageKinds.h \
&gt;      Shared/CoreIPCSupport/WebPageProxyMessageKinds.h \
&gt; -    Shared/CoreIPCSupport/WebProcessMessageKinds.h \
&gt;      Shared/CacheModel.h \
&gt;      Shared/DrawingAreaBase.h \
&gt;      Shared/ImmutableArray.h \

Seems like you need to add the new generated files.

&gt; WebKit2/Platform/CoreIPC/HandleMessage.h:48
&gt; +    // NOTE: Return value ignored.
&gt; +    (object-&gt;*function)(firstArgument, secondArgument);
&gt; +}

Why throw away the return value? Why not return it?

&gt; WebKit2/Scripts/webkit2/messages.py:232
&gt; +        if type.find(&quot;&lt;&quot;) != -1:
&gt; +            headers.update(headers_for_type(type))
&gt; +            continue

Please use single quotes.

Please add tests that show that your new code works. (And make sure you didn&apos;t break any existing tests.)

&gt; WebKit2/UIProcess/mac/WebProcessProxyMac.mm:42
&gt; +        send(Messages::WebProcess::SetupAcceleratedCompositingPort(CoreIPC::MachPort(renderServerPort, MACH_MSG_TYPE_COPY_SEND)), 0);

Should be &quot;SetUpAcceleratedCompositingPort&quot;, with a capital &quot;U&quot;.

&gt; WebKit2/WebProcess/WebProcess.cpp:194
&gt; -void WebProcess::setCacheModel(CacheModel cacheModel)
&gt; +void WebProcess::setCacheModel(uint32_t cacheModel)
&gt;  {
&gt; -    if (!m_hasSetCacheModel || cacheModel != m_cacheModel) {
&gt; +    if (!m_hasSetCacheModel || static_cast&lt;CacheModel&gt;(cacheModel) != m_cacheModel) {
&gt;          m_hasSetCacheModel = true;
&gt; -        m_cacheModel = cacheModel;
&gt; -        platformSetCacheModel(cacheModel);
&gt; +        m_cacheModel = static_cast&lt;CacheModel&gt;(cacheModel);
&gt; +        platformSetCacheModel(static_cast&lt;CacheModel&gt;(cacheModel));
&gt;      }
&gt;  }

Doing the cast once and storing the result in a local variable would be nicer.

&gt; WebKit2/win/WebKit2.vcproj:766
&gt;  					&gt;
&gt;  				&lt;/File&gt;
&gt;  				&lt;File
&gt; -					RelativePath=&quot;..\Shared\CoreIPCSupport\WebProcessMessageKinds.h&quot;
&gt; -					&gt;
&gt; -				&lt;/File&gt;
&gt; -				&lt;File
&gt;  					RelativePath=&quot;..\Shared\CoreIPCSupport\WebProcessProxyMessageKinds.h&quot;
&gt;  					&gt;
&gt;  				&lt;/File&gt;
&gt;  

Seems like you need to add the new generated files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289046</commentid>
    <comment_count>4</comment_count>
      <attachid>69660</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-04 12:01:05 -0700</bug_when>
    <thetext>Created attachment 69660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289049</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-04 12:02:37 -0700</bug_when>
    <thetext>Attachment 69660 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/Scripts/webkit2/messages.py:230:  trailing whitespace  [pep8/W291] [5]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289067</commentid>
    <comment_count>6</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-04 12:20:56 -0700</bug_when>
    <thetext>Attachment 69660 did not build on qt:
Build output: http://queues.webkit.org/results/4177071</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289093</commentid>
    <comment_count>7</comment_count>
      <attachid>69660</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-04 13:02:46 -0700</bug_when>
    <thetext>Comment on attachment 69660
Patch

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

&gt; WebKit2/ChangeLog:13
&gt; +        * Scripts/webkit2/messages.py:
&gt; +        * Scripts/webkit2/messages_unittest.py:
&gt; +        Make this script work for passing a templated type. 

It would be nice to add the names of functions you changed in messages.py.

&gt; WebKit2/WebProcess/WebProcess.cpp:194
&gt; -void WebProcess::setCacheModel(CacheModel cacheModel)
&gt; +void WebProcess::setCacheModel(uint32_t cacheModel)
&gt;  {
&gt; -    if (!m_hasSetCacheModel || cacheModel != m_cacheModel) {
&gt; +    if (!m_hasSetCacheModel || static_cast&lt;CacheModel&gt;(cacheModel) != m_cacheModel) {
&gt;          m_hasSetCacheModel = true;
&gt; -        m_cacheModel = cacheModel;
&gt; -        platformSetCacheModel(cacheModel);
&gt; +        m_cacheModel = static_cast&lt;CacheModel&gt;(cacheModel);
&gt; +        platformSetCacheModel(static_cast&lt;CacheModel&gt;(cacheModel));
&gt;      }
&gt;  }

I still think a local variable with type CacheModel would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289095</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-04 13:07:08 -0700</bug_when>
    <thetext>Landed in r69029.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289198</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-10-04 15:18:54 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Landed in r69029.

Hey, you shouldn&apos;t have commit it, because Qt EWS bubble is red.
It wasn&apos;t a fair play ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289207</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-04 15:24:14 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Landed in r69029.
&gt; 
&gt; Hey, you shouldn&apos;t have commit it, because Qt EWS bubble is red.
&gt; It wasn&apos;t a fair play ...


Sorry, but I couldn&apos;t figure out how to make it work on Qt.  We have a DerivedSources.make file that the Qt build does not seem to be using.  If adding stuff to the project is prohibitively hard, it is likely that things will break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289259</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-10-04 16:07:00 -0700</bug_when>
    <thetext>&gt; Sorry, but I couldn&apos;t figure out how to make it work on Qt.  We have a DerivedSources.make file that the Qt build does not seem to be using.  If adding stuff to the project is prohibitively hard, it is likely that things will break.

I prefer poking our WebKit2 guys and ask them to fix Qt 
build system instead of breaking Qt buildbots and EWS.

Next time, please cc Zoltan (zoltan@webkit.org), Balazs 
(kbalazs@webkit.org) and Andras (abecsi@webkit.org), they
can help you with fixing Qt-WebKit2 build system.

Fix landed in http://trac.webkit.org/changeset/69046</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69651</attachid>
            <date>2010-10-04 11:30:18 -0700</date>
            <delta_ts>2010-10-04 12:01:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>gen.diff</filename>
            <type>text/plain</type>
            <size>33669</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTAyMikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTAtMTAtMDQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW5lcmF0
ZSBtZXNzYWdlcyBzZW50IHRvIHRoZSBXZWJQcm9jZXNzIGNsYXNzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwOTcKKworICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgIEFkZCBuZXcgZmlsZSB0byBnZW5lcmF0ZSBhbmQgbmV3
IGRpcmVjdG9yeSB0byBzZWFyY2guCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0hhbmRs
ZU1lc3NhZ2UuaDoKKyAgICAgICAgKENvcmVJUEM6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICBB
ZGQgb3ZlcmxvYWQgdGhhdCBjYW4gaWdub3JlIGEgcmV0dXJuIHZhbHVlICh1c2VkIGZvciBXZWJQ
cm9jZXNzOjpDcmVhdGVXZWJQYWdlKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0Mi9tZXNz
YWdlcy5weToKKyAgICAgICAgTWFrZSB0aGlzIHNjcmlwdCB3b3JrIGZvciBwYXNzaW5nIGEgdGVt
cGxhdGVkIHR5cGUuIAorCisgICAgICAgICogU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlByb2Nl
c3NNZXNzYWdlS2luZHMuaDogUmVtb3ZlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9WaXNpdGVk
TGlua1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtQcm92aWRlcjo6
cGVuZGluZ1Zpc2l0ZWRMaW5rc1RpbWVyRmlyZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6aW5pdGlhbGl6ZUhpc3Rv
cnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjplbnN1cmVXZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5
RG9jdW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRDYWNoZU1vZGVsKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVpbml0aWFsaXplV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUHJv
Y2Vzc1Byb3h5KTogQWx3YXlzIHBhc3MgYm90aAorICAgICAgICB0aGUgYnVuZGxlIHBhdGggYW5k
IGEga2V5LCBldmVuIGlmIHRoZSBrZXkgaXMgbnVsbCwgd2hpY2ggaXQgd2lsbCBiZSBmb3IKKyAg
ICAgICAgYWxsIG5vbi1tYWMgYnVpbGRzIGZvciBub3cuCisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6c2V0VXBBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2lu
L1dlYkNvbnRleHRXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRTaG91
bGRQYWludE5hdGl2ZUNvbnRyb2xzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxh
dGZvcm1TZXRVcFdlYlByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBzeW50YXggZm9yIHNl
bmRpbmcgdGhlIG1lc3NhZ2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlu
a3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRDYWNoZU1vZGVsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0dXBBY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFNob3VsZFBhaW50TmF0aXZlQ29udHJv
bHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIENvbnZlcnQgdG8gdXNp
bmcgZ2VuZXJhdGVkIGRpZFJlY2VpdmVXZWJQcm9jZXNzTWVzc2FnZS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjogQWRkZWQuCisKKyAgICAgICAgKiBXZWJL
aXQyLnBybzoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorICAgICAgICBVcGRhdGUgcHJvamVjdHMuCisK
IDIwMTAtMTAtMDQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXgg
dGhlIE1hYyBidWlsZC4KSW5kZXg6IFdlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDY4OTg3KQorKysg
V2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBA
QCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1BsdWdpblByb2Nlc3MgXAogICAgICQoV2ViS2l0
MikvV2ViUHJvY2Vzcy9QbHVnaW5zIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViUGFn
ZSBcCisgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vz
cy9QbHVnaW5zIFwKICMKIApAQCAtMTEsNiArMTIsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwK
ICAgICBQbHVnaW5Qcm9jZXNzUHJveHkgXAogICAgIFBsdWdpblByb3h5IFwKICAgICBXZWJQYWdl
IFwKKyAgICBXZWJQcm9jZXNzIFwKICAgICBXZWJQcm9jZXNzQ29ubmVjdGlvbiBcCiAjCiAKSW5k
ZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnBy
bwkocmV2aXNpb24gNjkwMjApCisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzUsNyArMTc1LDYgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL0NvcmVJUENTdXBw
b3J0L0RyYXdpbmdBcmVhTWVzc2FnZUtpbmRzLmggXAogICAgIFNoYXJlZC9Db3JlSVBDU3VwcG9y
dC9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmggXAogICAgIFNoYXJlZC9Db3JlSVBDU3Vw
cG9ydC9XZWJQYWdlUHJveHlNZXNzYWdlS2luZHMuaCBcCi0gICAgU2hhcmVkL0NvcmVJUENTdXBw
b3J0L1dlYlByb2Nlc3NNZXNzYWdlS2luZHMuaCBcCiAgICAgU2hhcmVkL0NhY2hlTW9kZWwuaCBc
CiAgICAgU2hhcmVkL0RyYXdpbmdBcmVhQmFzZS5oIFwKICAgICBTaGFyZWQvSW1tdXRhYmxlQXJy
YXkuaCBcCkluZGV4OiBXZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgJKHJl
dmlzaW9uIDY4OTg3KQorKysgV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMjAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlKEFy
Z3VtZW50RGVjb2RlciogYXJndQogICAgIChvYmplY3QtPipmdW5jdGlvbikoZmlyc3RBcmd1bWVu
dCwgc2Vjb25kQXJndW1lbnQpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
LCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFIxPgordm9pZCBoYW5kbGVNZXNz
YWdlKEFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBDKiBvYmplY3QsIFIxIChDOjoqZnVuY3Rp
b24pKFAxLCBQMikpCit7CisgICAgdHlwZW5hbWUgUmVtb3ZlUmVmZXJlbmNlPHR5cGVuYW1lIFQ6
OkZpcnN0QXJndW1lbnRUeXBlPjo6VHlwZSBmaXJzdEFyZ3VtZW50OworICAgIGlmICghYXJndW1l
bnRzLT5kZWNvZGUoZmlyc3RBcmd1bWVudCkpCisgICAgICAgIHJldHVybjsKKyAgICB0eXBlbmFt
ZSBSZW1vdmVSZWZlcmVuY2U8dHlwZW5hbWUgVDo6U2Vjb25kQXJndW1lbnRUeXBlPjo6VHlwZSBz
ZWNvbmRBcmd1bWVudDsKKyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKHNlY29uZEFyZ3VtZW50
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTk9URTogUmV0dXJuIHZhbHVlIGlnbm9yZWQu
CisgICAgKG9iamVjdC0+KmZ1bmN0aW9uKShmaXJzdEFyZ3VtZW50LCBzZWNvbmRBcmd1bWVudCk7
Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFAxLCB0eXBl
bmFtZSBQMiwgdHlwZW5hbWUgUDM+CiB2b2lkIGhhbmRsZU1lc3NhZ2UoQXJndW1lbnREZWNvZGVy
KiBhcmd1bWVudHMsIEMqIG9iamVjdCwgdm9pZCAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAzKSkK
IHsKSW5kZXg6IFdlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5CShyZXZpc2lvbiA2ODk4NykK
KysrIFdlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yMjcsNiArMjI3LDEwIEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhy
ZWMKIAogICAgIGZvciBwYXJhbWV0ZXIgaW4gcmVjZWl2ZXIuaXRlcnBhcmFtZXRlcnMoKToKICAg
ICAgICAgdHlwZSA9IHBhcmFtZXRlci50eXBlCisgICAgICAgIGlmIHR5cGUuZmluZCgiPCIpICE9
IC0xOgorICAgICAgICAgICAgaGVhZGVycy51cGRhdGUoaGVhZGVyc19mb3JfdHlwZSh0eXBlKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgc3BsaXQgPSB0eXBlLnNwbGl0KCc6Oicp
CiAKICAgICAgICAgaWYgbGVuKHNwbGl0KSA9PSAyOgpAQCAtMzMxLDYgKzMzNSwxMiBAQCBkZWYg
YXJndW1lbnRfY29kZXJfaGVhZGVyc19mb3JfdHlwZSh0eXBlCiAKIAogZGVmIGhlYWRlcnNfZm9y
X3R5cGUodHlwZSk6CisgICAgIyBDaGVjayBmb3IgVmVjdG9yLgorICAgIG1hdGNoID0gcmUuc2Vh
cmNoKHInVmVjdG9yPCguKyk+JywgdHlwZSkKKyAgICBpZiBtYXRjaDoKKyAgICAgICAgZWxlbWVu
dF90eXBlID0gbWF0Y2guZ3JvdXBzKClbMF0uc3RyaXAoKQorICAgICAgICByZXR1cm4gWyc8d3Rm
L1ZlY3Rvci5oPiddICsgaGVhZGVyc19mb3JfdHlwZShlbGVtZW50X3R5cGUpCisKICAgICBzcGVj
aWFsX2Nhc2VzID0gewogICAgICAgICAnV1RGOjpTdHJpbmcnOiAnPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPicsCiAgICAgICAgICdXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQnOiAnIldlYkV2ZW50Lmgi
JywKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlByb2Nlc3NNZXNzYWdl
S2luZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQ
cm9jZXNzTWVzc2FnZUtpbmRzLmgJKHJldmlzaW9uIDY5MDIwKQorKysgV2ViS2l0Mi9TaGFyZWQv
Q29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlByb2Nlc3NNZXNzYWdlS2lu
ZHNfaAotI2RlZmluZSBXZWJQcm9jZXNzTWVzc2FnZUtpbmRzX2gKLQotLy8gTWVzc2FnZXMgc2Vu
dCBmcm9tIFdlYktpdCB0byB0aGUgd2ViIHByb2Nlc3MuCi0KLSNpbmNsdWRlICJNZXNzYWdlSUQu
aCIKLQotbmFtZXNwYWNlIFdlYlByb2Nlc3NNZXNzYWdlIHsKLQotZW51bSBLaW5kIHsKLSAgICBT
ZXRWaXNpdGVkTGlua1RhYmxlLAotICAgIFZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkLAotICAgIEFs
bFZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkLAotICAgIAotICAgIExvYWRJbmplY3RlZEJ1bmRsZSwK
LSAgICBTZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LAotICAgIFNldFNob3VsZFRyYWNrVmlz
aXRlZExpbmtzLAotICAgIFNldENhY2hlTW9kZWwsCi0gICAgQ3JlYXRlLAotICAgIFJlZ2lzdGVy
VVJMU2NoZW1lQXNFbXB0eURvY3VtZW50LAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBTZXR1cEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0LAotI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lOKQotICAg
IFNldFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMsCi0jZW5kaWYKLX07Ci0KLX0KLQotbmFtZXNw
YWNlIENvcmVJUEMgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBNZXNzYWdlS2luZFRyYWl0czxXZWJQ
cm9jZXNzTWVzc2FnZTo6S2luZD4geyAKLSAgICBzdGF0aWMgY29uc3QgTWVzc2FnZUNsYXNzIG1l
c3NhZ2VDbGFzcyA9IE1lc3NhZ2VDbGFzc1dlYlByb2Nlc3M7Ci19OwotCi19Ci0KLSNlbmRpZiAv
LyBXZWJQcm9jZXNzTWVzc2FnZUtpbmRzX2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1Zpc2l0
ZWRMaW5rUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1Zpc2l0
ZWRMaW5rUHJvdmlkZXIuY3BwCShyZXZpc2lvbiA2ODk4NykKKysrIFdlYktpdDIvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJsZS5o
IgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZUtp
bmRzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC0xNTEsMTggKzE1MSwxNyBAQCB2b2lkIFZpc2l0ZWRMaW5rUHJvdmlk
ZXI6OnBlbmRpbmdWaXNpdGVkCiAgICAgICAgIGlmICghbV90YWJsZS5zaGFyZWRNZW1vcnkoKS0+
Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpSZWFkT25seSkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgbV9jb250ZXh0LT5wcm9jZXNzKCktPnNlbmQoV2ViUHJvY2Vz
c01lc3NhZ2U6OlNldFZpc2l0ZWRMaW5rVGFibGUsIDAsIENvcmVJUEM6OkluKGhhbmRsZSkpOwor
ICAgICAgICBtX2NvbnRleHQtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0VmlzaXRlZExpbmtUYWJsZShoYW5kbGUpLCAwKTsKICAgICB9CiAgICAgCiAgICAgLy8gV2Ug
bm93IG5lZWQgdG8gbGV0IHRoZSB3ZWIgcHJvY2VzcyBrbm93IHRoYXQgd2UndmUgYWRkZWQgbGlu
a3MuCiAgICAgaWYgKGFkZGVkVmlzaXRlZExpbmtzLnNpemUoKSA8PSAyMCkgewotICAgICAgICBt
X2NvbnRleHQtPnByb2Nlc3MoKS0+c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6VmlzaXRlZExpbmtT
dGF0ZUNoYW5nZWQsIDAsIENvcmVJUEM6OkluKGFkZGVkVmlzaXRlZExpbmtzKSk7CisgICAgICAg
IG1fY29udGV4dC0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpWaXNpdGVk
TGlua1N0YXRlQ2hhbmdlZChhZGRlZFZpc2l0ZWRMaW5rcyksIDApOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAogICAgIC8vIEp1c3QgcmVjYWxjdWxhdGUgYWxsIHRoZSB2aXNpdGVkIGxp
bmtzLgotICAgIG1fY29udGV4dC0+cHJvY2VzcygpLT5zZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpB
bGxWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZCwgMCwgQ29yZUlQQzo6SW4oKSk7Ci0gICAgcmV0dXJu
OworICAgIG1fY29udGV4dC0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpB
bGxWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZCgpLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkocmV2aXNpb24gNjkwMjApCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjEg
KzI4LDE5IEBACiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZU1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKKyNpbmNsdWRlICJX
S0NvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oIgog
I2luY2x1ZGUgIldlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VOYW1lc3BhY2UuaCIKICNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNYW5hZ2VyLmgiCi0j
aW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvTGlua0hhc2guaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093bkFycmF5UHRyLmg+CiAKLSNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlLmgiCi0K
LSNpbmNsdWRlIDxXZWJDb3JlL0xpbmtIYXNoLmg+Ci0KICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCkBAIC0xMTYsNyArMTE0LDcg
QEAgdm9pZCBXZWJDb250ZXh0Ojppbml0aWFsaXplSGlzdG9yeUNsaWVudAogICAgIGlmICghaGFz
VmFsaWRQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgbV9wcm9jZXNz
LT5zZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpTZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcywgMCwg
Q29yZUlQQzo6SW4obV9oaXN0b3J5Q2xpZW50LnNob3VsZFRyYWNrVmlzaXRlZExpbmtzKCkpKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFNob3VsZFRyYWNr
VmlzaXRlZExpbmtzKG1faGlzdG9yeUNsaWVudC5zaG91bGRUcmFja1Zpc2l0ZWRMaW5rcygpKSwg
MCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6ZW5zdXJlV2ViUHJvY2VzcygpCkBAIC0xMjYsMTEg
KzEyNCwxMSBAQCB2b2lkIFdlYkNvbnRleHQ6OmVuc3VyZVdlYlByb2Nlc3MoKQogCiAgICAgbV9w
cm9jZXNzID0gV2ViUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdldFdlYlByb2Nlc3ModGhpcyk7
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoV2ViUHJvY2Vzc01lc3NhZ2U6OlNldFNob3VsZFRyYWNr
VmlzaXRlZExpbmtzLCAwLCBDb3JlSVBDOjpJbihtX2hpc3RvcnlDbGllbnQuc2hvdWxkVHJhY2tW
aXNpdGVkTGlua3MoKSkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6
U2V0Q2FjaGVNb2RlbCwgMCwgQ29yZUlQQzo6SW4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fY2Fj
aGVNb2RlbCkpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNl
dFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKG1faGlzdG9yeUNsaWVudC5zaG91bGRUcmFja1Zpc2l0
ZWRMaW5rcygpKSwgMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpTZXRDYWNoZU1vZGVsKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2NhY2hlTW9kZWwpKSwgMCk7
CiAKICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNFbXB0eURvY3VtZW50LmJlZ2luKCksIGVuZCA9IG1fc2NoZW1lc1RvUmVnaXN0ZXJB
c0VtcHR5RG9jdW1lbnQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpSZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVu
dCwgMCwgQ29yZUlQQzo6SW4oKml0KSk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoKml0KSwgMCk7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBtX3BlbmRpbmdNZXNzYWdlc1RvUG9zdFRv
SW5qZWN0ZWRCdW5kbGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgcGFpcjxTdHJpbmcsIFJlZlB0
cjxBUElPYmplY3Q+ID4qIG1lc3NhZ2UgPSAmbV9wZW5kaW5nTWVzc2FnZXNUb1Bvc3RUb0luamVj
dGVkQnVuZGxlW2ldOwpAQCAtMjgzLDcgKzI4MSw3IEBAIHZvaWQgV2ViQ29udGV4dDo6cmVnaXN0
ZXJVUkxTY2hlbWVBc0VtcHQKICAgICBpZiAoIWhhc1ZhbGlkUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoV2ViUHJvY2Vzc01lc3NhZ2U6OlJlZ2lzdGVy
VVJMU2NoZW1lQXNFbXB0eURvY3VtZW50LCAwLCBDb3JlSVBDOjpJbih1cmxTY2hlbWUpKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1l
QXNFbXB0eURvY3VtZW50KHVybFNjaGVtZSksIDApOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OmFk
ZFZpc2l0ZWRMaW5rKGNvbnN0IFN0cmluZyYgdmlzaXRlZFVSTCkKQEAgLTMwNiw3ICszMDQsNyBA
QCB2b2lkIFdlYkNvbnRleHQ6OnNldENhY2hlTW9kZWwoQ2FjaGVNb2RlCiAKICAgICBpZiAoIWhh
c1ZhbGlkUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKFdl
YlByb2Nlc3NNZXNzYWdlOjpTZXRDYWNoZU1vZGVsLCAwLCBDb3JlSVBDOjpJbihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obV9jYWNoZU1vZGVsKSkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6U2V0Q2FjaGVNb2RlbChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9jYWNo
ZU1vZGVsKSksIDApOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5TWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWFuYWdlci5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlS2lu
ZHMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCiAKQEAgLTE1NSw4ICsxNTUs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoY29uCiAgICAgfQogCiAg
ICAgQVNTRVJUKG1fZHJhd2luZ0FyZWEpOwotCi0gICAgcHJvY2VzcygpLT5zZW5kKFdlYlByb2Nl
c3NNZXNzYWdlOjpDcmVhdGUsIG1fcGFnZUlELCBDb3JlSVBDOjpJbihjcmVhdGlvblBhcmFtZXRl
cnMoc2l6ZSkpKTsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNy
ZWF0ZVdlYlBhZ2UobV9wYWdlSUQsIGNyZWF0aW9uUGFyYW1ldGVycyhzaXplKSksIDApOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVpbml0aWFsaXplV2ViUGFnZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplKQpAQCAtMTY1LDggKzE2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWlu
aXRpYWxpemVXZWJQYWdlKGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fZHJhd2lu
Z0FyZWEpOwotCi0gICAgcHJvY2VzcygpLT5zZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpDcmVhdGUs
IG1fcGFnZUlELCBDb3JlSVBDOjpJbihjcmVhdGlvblBhcmFtZXRlcnMoc2l6ZSkpKTsKKyAgICBw
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNyZWF0ZVdlYlBhZ2UobV9wYWdl
SUQsIGNyZWF0aW9uUGFyYW1ldGVycyhzaXplKSksIDApOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xvc2UoKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZp
c2lvbiA2ODk4NykKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlTmFtZXNwYWNl
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01hbmFn
ZXIuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgpAQCAtNjgsNyArNjgsNyBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShX
ZWJDb250CiAgICAgLy8gc2luZ2xlICJJbml0aWFsaXplIiBtZXNzYWdlcyB3aXRoIGEgc3RydWN0
IHRoYXQgaGFzIGFsbCB0aGUgbmVlZGVkIGluZm9ybWF0aW9uLgogICAgIFN0cmluZyBhcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb250ZXh0LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KCk7CiAgICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAg
ICAgc2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6U2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwg
MCwgQ29yZUlQQzo6SW4oYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkpLCAwKTsKIAogICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBpbnN0
ZWFkIHNlbmQgdGhlIGJ1bmRsZSBwYXRoIGFzIHBhcnQgb2YgdGhlIGFyZ3VtZW50cyB0byBwcm9j
ZXNzIGNyZWF0aW9uPwogICAgIC8vIFdvdWxkIHRoYXQgYmUgYmV0dGVyIHRoYW4gc2VuZGluZyBh
IGNvbm5lY3Rpb24/CkBAIC03NywxMSArNzcsMTEgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9j
ZXNzUHJveHkoV2ViQ29udAogICAgICAgICBjaGFyICpzYW5kYm94QnVuZGxlVG9rZW4gPSBOVUxM
OwogICAgICAgICBDU3RyaW5nIGluamVjdGVkQnVuZGxlUGF0aCA9IGNvbnRleHQtPmluamVjdGVk
QnVuZGxlUGF0aCgpLnV0ZjgoKTsKICAgICAgICAgc2FuZGJveF9pc3N1ZV9leHRlbnNpb24oaW5q
ZWN0ZWRCdW5kbGVQYXRoLmRhdGEoKSwgJnNhbmRib3hCdW5kbGVUb2tlbik7Ci0gICAgICAgIHNl
bmQoV2ViUHJvY2Vzc01lc3NhZ2U6OkxvYWRJbmplY3RlZEJ1bmRsZSwgMCwgQ29yZUlQQzo6SW4o
Y29udGV4dC0+aW5qZWN0ZWRCdW5kbGVQYXRoKCksIFN0cmluZzo6ZnJvbVVURjgoc2FuZGJveEJ1
bmRsZVRva2VuKSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpMb2FkSW5q
ZWN0ZWRCdW5kbGUoY29udGV4dC0+aW5qZWN0ZWRCdW5kbGVQYXRoKCksIFN0cmluZzo6ZnJvbVVU
Rjgoc2FuZGJveEJ1bmRsZVRva2VuKSksIDApOwogICAgICAgICBpZiAoc2FuZGJveEJ1bmRsZVRv
a2VuKQogICAgICAgICAgICAgZnJlZShzYW5kYm94QnVuZGxlVG9rZW4pOwogI2Vsc2UKLSAgICAg
ICAgc2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6TG9hZEluamVjdGVkQnVuZGxlLCAwLCBDb3JlSVBD
OjpJbihjb250ZXh0LT5pbmplY3RlZEJ1bmRsZVBhdGgoKSkpOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpMb2FkSW5qZWN0ZWRCdW5kbGUoY29udGV4dC0+aW5qZWN0ZWRCdW5k
bGVQYXRoKCksIFN0cmluZygpKSwgMCk7CiAjZW5kaWYKICAgICB9CiAKSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbQkocmV2aXNpb24gNjg5ODcpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJNYWNoUG9ydC5oIgogI2luY2x1ZGUg
IldlYktpdFN5c3RlbUludGVyZmFjZS5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlS2lu
ZHMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFVw
QWNjZWxlcmF0ZWRDbwogI2lmIEhBVkUoSE9TVEVEX0NPUkVfQU5JTUFUSU9OKQogICAgIG1hY2hf
cG9ydF90IHJlbmRlclNlcnZlclBvcnQgPSBXS0luaXRpYWxpemVSZW5kZXJTZXJ2ZXIoKTsKICAg
ICBpZiAocmVuZGVyU2VydmVyUG9ydCAhPSBNQUNIX1BPUlRfTlVMTCkKLSAgICAgICAgc2VuZChX
ZWJQcm9jZXNzTWVzc2FnZTo6U2V0dXBBY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydCwgMCwgQ29y
ZUlQQzo6SW4oQ29yZUlQQzo6TWFjaFBvcnQocmVuZGVyU2VydmVyUG9ydCwgTUFDSF9NU0dfVFlQ
RV9DT1BZX1NFTkQpKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldHVw
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQoQ29yZUlQQzo6TWFjaFBvcnQocmVuZGVyU2VydmVy
UG9ydCwgTUFDSF9NU0dfVFlQRV9DT1BZX1NFTkQpKSwgMCk7CiAjZW5kaWYKIH0KICNlbmRpZgpJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRXaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0V2luLmNwcAkocmV2aXNpb24gNjg5
ODcpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKIAotI2lu
Y2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CkBAIC00MywxMyArNDMsMTIgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRTaG91
bGRQYWludE5hdGl2ZUNvbgogCiAgICAgaWYgKCFoYXNWYWxpZFByb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9wcm9jZXNzLT5zZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpTZXRTaG91
bGRQYWludE5hdGl2ZUNvbnRyb2xzLCAwLCBDb3JlSVBDOjpJbihtX3Nob3VsZFBhaW50TmF0aXZl
Q29udHJvbHMpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNl
dFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMobV9zaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKSwg
MCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1TZXRVcFdlYlByb2Nlc3MoKQogewot
ICAgIG1fcHJvY2Vzcy0+c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6U2V0U2hvdWxkUGFpbnROYXRp
dmVDb250cm9scywgMCwgQ29yZUlQQzo6SW4obV9zaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKSk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRTaG91bGRQYWlu
dE5hdGl2ZUNvbnRyb2xzKG1fc2hvdWxkUGFpbnROYXRpdmVDb250cm9scyksIDApOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA2OTAyMCkKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsNiArMjI1LDggQEAKIAkJ
QkMyRTZFOEUxMTQxOTcxNTAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRTZFN0UxMTQxOTcwQzAwQTYzQjFFIC8q
IFdvcmtRdWV1ZS5oICovOyB9OwogCQlCQzMwNjVDNDEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJv
Y2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMzA2NUMzMTI1OTJGODkwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWFjLm1tICovOyB9OwogCQlC
QzMwNjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMDY1RjkxMjU5MzQ0RTAwRTcxMjc4IC8q
IENhY2hlTW9kZWwuaCAqLzsgfTsKKwkJQkMzMDY2QkUxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlBy
b2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMzMDY2QkMxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlCQzMwNjZCRjEyNUE0NDIxMDBFNzEyNzggLyogV2Vi
UHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzMwNjZCRDEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VzLmgg
Ki87IH07CiAJCUJDMzNERDY4MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzNERDY3MTIzODQ2NDYw
MDM2MEYzRiAvKiBXZWJOdW1iZXIuaCAqLzsgfTsKIAkJQkMzM0UwRDExMjQwOEU4NjAwMzYwRjNG
IC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzNFMENGMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmggKi87IH07CiAJCUJDMzNFMEQyMTI0MDhFODYwMDM2MEYzRiAv
KiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzNFMEQwMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCAqLzsgfTsKQEAgLTY3NCw2ICs2NzYsOSBAQAogCQlCQzJF
NkU3RTExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzMwNjVDMzEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMzA2NUY5MTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlTW9kZWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzMDY2QjkxMjVBNDM2MzAwRTcxMjc4IC8qIFdlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzMDY2QkMxMjVBNDQyMTAw
RTcxMjc4IC8qIFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMzA2NkJEMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQ
cm9jZXNzTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJv
Y2Vzc01lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzNERDY3MTIz
ODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViTnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzNFMENG
MTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzM0UwRDAxMjQwOEU4NjAwMzYwRjNGIC8qIElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMjEzLDYgKzEyMTgsNyBAQAogCQkJCUJDMTExQUUzMTEyRjVDMjYwMDMz
N0JBQiAvKiBXZWJQcm9jZXNzLmNwcCAqLywKIAkJCQlCQzAzMkQ5MTEwRjQzN0FGMDA1OEMxNUEg
LyogV2ViUHJvY2Vzcy5oICovLAogCQkJCTFBNkZBMDFGMTFFMTUyODcwMERCMTM3MSAvKiBXZWJQ
cm9jZXNzTWFpbi5oICovLAorCQkJCUJDMzA2NkI5MTI1QTQzNjMwMEU3MTI3OCAvKiBXZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBXZWJQcm9jZXNzOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2OTUsNiArMTcwMSw4IEBACiAJCQkJQzBDRTcyOUYx
MjQ3RTcxRDAwQkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlcy5oICovLAogCQkJCTFBMDQzRjY3MTI1
MTREOEIwMEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCiAJCQkJMUEwNDNGNjgxMjUxNEQ4QjAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZXMuaCAqLywKKwkJCQlCQzMwNjZCQzEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vz
c01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQkMzMDY2QkQxMjVBNDQyMTAwRTcxMjc4IC8q
IFdlYlByb2Nlc3NNZXNzYWdlcy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3Vy
Y2VzIjsKIAkJCXBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyOwpAQCAtMTkyNSw2ICsxOTMz
LDcgQEAKIAkJCQkxQThFRkRGQTEyNTNDQUEyMDBGNzA2N0YgLyogRGF0YVJlZmVyZW5jZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM5MDk5ODAxMjU2QTk4MjAwMDgzNzU2IC8qIFdLU3RyaW5nUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENh
Y2hlTW9kZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMzA2NkJGMTI1QTQ0MjEwMEU3MTI3OCAv
KiBXZWJQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjIyMCw2ICsyMjI5LDcg
QEAKIAkJCQkxQThFRkE3MDEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RUZERkUxMjUzQ0I2RTAwRjcwNjdGIC8q
IERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzMDY1QzQxMjU5MkY4OTAw
RTcxMjc4IC8qIFdlYlByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlCQzMwNjZCRTEy
NUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDY5MDIwKQor
KysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw4ICszNCw4IEBACiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2Vz
U3RvcmUuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHlNZXNzYWdlS2luZHMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZUtp
bmRzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CkBA
IC00NCwxMCArNDQsNiBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JhbmRvbU51bWJlci5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIk1hY2hQ
b3J0LmgiCi0jZW5kaWYKLQogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HQ0NvbnRyb2xsZXIuaD4KQEAgLTE0MCw2ICsxMzYsMTEg
QEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRBcHBsaWNhdGlvbkNhY2hlRGlyZQogICAgIGNhY2hlU3Rv
cmFnZSgpLnNldENhY2hlRGlyZWN0b3J5KGRpcmVjdG9yeSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
czo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoYm9vbCBzaG91bGRUcmFja1Zpc2l0ZWRMaW5r
cykKK3sKKyAgICBQYWdlR3JvdXA6OnNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKHNob3VsZFRy
YWNrVmlzaXRlZExpbmtzKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVt
ZUFzRW1wdHlEb2N1bWVudChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKIHsKICAgICBTY2hlbWVS
ZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQodXJsU2NoZW1lKTsKQEAg
LTE4MywxNSArMTg0LDMxIEBAIHZvaWQgV2ViUHJvY2Vzczo6YWRkVmlzaXRlZExpbmsoV2ViQ29y
ZToKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZTo6QWRkVmlz
aXRlZExpbmssIDAsIENvcmVJUEM6OkluKGxpbmtIYXNoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
czo6c2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCit2b2lkIFdlYlByb2Nlc3M6
OnNldENhY2hlTW9kZWwodWludDMyX3QgY2FjaGVNb2RlbCkKIHsKLSAgICBpZiAoIW1faGFzU2V0
Q2FjaGVNb2RlbCB8fCBjYWNoZU1vZGVsICE9IG1fY2FjaGVNb2RlbCkgeworICAgIGlmICghbV9o
YXNTZXRDYWNoZU1vZGVsIHx8IHN0YXRpY19jYXN0PENhY2hlTW9kZWw+KGNhY2hlTW9kZWwpICE9
IG1fY2FjaGVNb2RlbCkgewogICAgICAgICBtX2hhc1NldENhY2hlTW9kZWwgPSB0cnVlOwotICAg
ICAgICBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOwotICAgICAgICBwbGF0Zm9ybVNldENhY2hl
TW9kZWwoY2FjaGVNb2RlbCk7CisgICAgICAgIG1fY2FjaGVNb2RlbCA9IHN0YXRpY19jYXN0PENh
Y2hlTW9kZWw+KGNhY2hlTW9kZWwpOworICAgICAgICBwbGF0Zm9ybVNldENhY2hlTW9kZWwoc3Rh
dGljX2Nhc3Q8Q2FjaGVNb2RlbD4oY2FjaGVNb2RlbCkpOwogICAgIH0KIH0KIAorI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgUExBVEZPUk0oTUFDKQordm9pZCBXZWJQcm9jZXNz
OjpzZXR1cEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0KENvcmVJUEM6Ok1hY2hQb3J0IHBvcnQp
Cit7CisgICAgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQgPSBwb3J0LnBvcnQoKTsKK30K
KyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKQordm9pZCBXZWJQcm9jZXNzOjpzZXRTaG91bGRQ
YWludE5hdGl2ZUNvbnRyb2xzKGJvb2wgc2hvdWxkUGFpbnROYXRpdmVDb250cm9scykKK3sKKyNp
ZiBVU0UoU0FGQVJJX1RIRU1FKQorICAgIFNldHRpbmdzOjpzZXRTaG91bGRQYWludE5hdGl2ZUNv
bnRyb2xzKHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMpOworI2VuZGlmCit9CisjZW5kaWYKKwog
V2ViUGFnZSogV2ViUHJvY2Vzczo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fcGFnZU1hcC5nZXQocGFnZUlEKS5nZXQoKTsKQEAgLTI0NywxMDcgKzI2NCw4
IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2h1dGRvd24oKQogdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNz
YWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKIHsK
ICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYlByb2Nlc3M+KCkp
IHsKLSAgICAgICAgc3dpdGNoIChtZXNzYWdlSUQuZ2V0PFdlYlByb2Nlc3NNZXNzYWdlOjpLaW5k
PigpKSB7Ci0gICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NNZXNzYWdlOjpTZXRWaXNpdGVkTGlu
a1RhYmxlOiB7Ci0gICAgICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwot
ICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGhhbmRs
ZSkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgc2V0VmlzaXRlZExpbmtUYWJsZShoYW5kbGUpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgV2ViUHJvY2Vzc01lc3Nh
Z2U6OlZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkOiB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPExp
bmtIYXNoPiBsaW5rSGFzaGVzOwotICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNv
ZGUoQ29yZUlQQzo6T3V0KGxpbmtIYXNoZXMpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgICAgIHZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKGxpbmtIYXNoZXMpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2Ug
V2ViUHJvY2Vzc01lc3NhZ2U6OkFsbFZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkOgotICAgICAgICAg
ICAgICAgIGFsbFZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NNZXNzYWdlOjpM
b2FkSW5qZWN0ZWRCdW5kbGU6IHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcGF0aDsKLQotI2lm
IEVOQUJMRShXRUJfUFJPQ0VTU19TQU5EQk9YKQotICAgICAgICAgICAgICAgIFN0cmluZyB0b2tl
bjsKLSAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChw
YXRoLCB0b2tlbikpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
ICAgICBsb2FkSW5qZWN0ZWRCdW5kbGUocGF0aCwgdG9rZW4pOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSNlbHNlCi0gICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3Jl
SVBDOjpPdXQocGF0aCkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ICAgICAgICBsb2FkSW5qZWN0ZWRCdW5kbGUocGF0aCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotI2VuZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NNZXNz
YWdlOjpTZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OiB7Ci0gICAgICAgICAgICAgICAgU3Ry
aW5nIGRpcmVjdG9yeTsKLSAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENv
cmVJUEM6Ok91dChkaXJlY3RvcnkpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoZGlyZWN0b3J5KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NNZXNzYWdlOjpTZXRTaG91bGRUcmFja1Zpc2l0ZWRM
aW5rczogewotICAgICAgICAgICAgICAgIGJvb2wgc2hvdWxkVHJhY2tWaXNpdGVkTGlua3M7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoc2hvdWxk
VHJhY2tWaXNpdGVkTGlua3MpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIFBhZ2VHcm91cDo6c2V0U2hvdWxkVHJhY2tWaXNp
dGVkTGlua3Moc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgV2ViUHJvY2Vzc01lc3NhZ2U6OlNl
dENhY2hlTW9kZWw6IHsKLSAgICAgICAgICAgICAgICB1aW50MzJfdCBjYWNoZU1vZGVsOwotICAg
ICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGNhY2hlTW9k
ZWwpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIHNldENhY2hlTW9kZWwoc3RhdGljX2Nhc3Q8Q2FjaGVNb2RlbD4oY2FjaGVN
b2RlbCkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGNhc2UgV2ViUHJvY2Vzc01lc3NhZ2U6OkNyZWF0ZTogewotICAgICAgICAgICAgICAgIHVp
bnQ2NF90IHBhZ2VJRCA9IGFyZ3VtZW50cy0+ZGVzdGluYXRpb25JRCgpOwotICAgICAgICAgICAg
ICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICAgICAgICAgICAg
ICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChwYXJhbWV0ZXJzKSkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGNyZWF0ZVdlYlBhZ2Uo
cGFnZUlELCBwYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NNZXNzYWdlOjpSZWdpc3RlclVSTFNjaGVt
ZUFzRW1wdHlEb2N1bWVudDogewotICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlOwotICAg
ICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KG1lc3NhZ2Up
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgcmVnaXN0
ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQobWVzc2FnZSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYg
UExBVEZPUk0oTUFDKQotICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzTWVzc2FnZTo6U2V0dXBB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydDogewotICAgICAgICAgICAgICAgIENvcmVJUEM6Ok1h
Y2hQb3J0IHBvcnQ7Ci0gICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShwb3J0
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgbV9jb21w
b3NpdGluZ1JlbmRlclNlcnZlclBvcnQgPSBwb3J0LnBvcnQoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAg
ICAgICBjYXNlIFdlYlByb2Nlc3NNZXNzYWdlOjpTZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xz
OiB7Ci0gICAgICAgICAgICAgICAgYm9vbCBiOwotICAgICAgICAgICAgICAgIGlmICghYXJndW1l
bnRzLT5kZWNvZGUoYikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSNpZiBVU0UoU0FG
QVJJX1RIRU1FKQotICAgICAgICAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRQYWludE5hdGl2
ZUNvbnRyb2xzKGIpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotI2VuZGlmCi0gICAgICAgIH0KKyAgICAgICAgZGlkUmVjZWl2ZVdlYlByb2Nlc3NNZXNz
YWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzSW5qZWN0
ZWRCdW5kbGU+KCkpIHsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gNjkw
MjApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJNYWNoUG9ydC5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRTaXplOwogICAgIGNs
YXNzIFBhZ2VHcm91cDsKQEAgLTg4LDEzICs5MiwyMiBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9h
ZEluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAgICAgdm9pZCBzZXRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0U2hvdWxk
VHJhY2tWaXNpdGVkTGlua3MoYm9vbCk7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzRW1w
dHlEb2N1bWVudChjb25zdCBTdHJpbmcmKTsKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykgJiYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgc2V0dXBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUG9ydChDb3JlSVBDOjpNYWNoUG9ydCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisg
ICAgdm9pZCBzZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJvb2wpOworI2VuZGlmCisKKwog
ICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUYWJsZShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYp
OwogICAgIHZvaWQgdmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkxpbmtIYXNoPiYgbGlua0hhc2hlcyk7CiAgICAgdm9pZCBhbGxWaXNpdGVkTGlua1N0YXRlQ2hh
bmdlZCgpOwogCi0gICAgdm9pZCBzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCk7
CisgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKICAgICB2b2lkIHBsYXRmb3JtU2V0
Q2FjaGVNb2RlbChDYWNoZU1vZGVsKTsKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNs
aWVudApAQCAtMTAyLDYgKzExNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbG9zZShDb3Jl
SVBDOjpDb25uZWN0aW9uKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCk7CiAKKyAgICAvLyBJbXBsZW1l
bnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lk
IGRpZFJlY2VpdmVXZWJQcm9jZXNzTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQ
Qzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKyAgICAKICAgICBSZWZQ
dHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxXZWJQYWdlPiA+IG1fcGFnZU1hcDsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGU+IG1faW5qZWN0ZWRCdW5kbGU7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisjIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlByb2Nlc3Mgewor
ICAgICMgVmlzaXRlZCBsaW5rIHRyYWNraW5nLgorICAgIFNldFZpc2l0ZWRMaW5rVGFibGUoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUpCisgICAgVmlzaXRlZExpbmtTdGF0ZUNo
YW5nZWQoVmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiBsaW5rSGFzaGVzKQorICAgIEFsbFZpc2l0
ZWRMaW5rU3RhdGVDaGFuZ2VkKCkKKworICAgICMgQ3JlYXRlIGEgbmV3IHBhZ2UuCisgICAgQ3Jl
YXRlV2ViUGFnZSh1aW50NjRfdCBuZXdQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBwYWdlQ3JlYXRpb25QYXJhbWV0ZXJzKQorCisgICAgIyBQcm9jZXNzIGluaXRpYWxp
emF0aW9uLgorICAgIExvYWRJbmplY3RlZEJ1bmRsZShXVEY6OlN0cmluZyBidW5kbGVQYXRoLCBX
VEY6OlN0cmluZyB0b2tlbikKKyAgICBTZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdURjo6
U3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpCisgICAgU2V0U2hvdWxkVHJhY2tWaXNp
dGVkTGlua3MoYm9vbCBzaG91bGRUcmFja1Zpc2l0ZWRMaW5rcykKKyAgICBTZXRDYWNoZU1vZGVs
KHVpbnQzMl90IGNhY2hlTW9kZWwpCisgICAgUmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1l
bnQoV1RGOjpTdHJpbmcgc2NoZW1lKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBTZXR1cEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdQb3J0KENvcmVJUEM6Ok1hY2hQb3J0IHBvcnQpCisjZW5kaWYKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgU2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyhib29sIHNo
b3VsZFBhaW50TmF0aXZlQ29udHJvbHMpCisjZW5kaWYKK30KSW5kZXg6IFdlYktpdDIvd2luL1dl
YktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShy
ZXZpc2lvbiA2OTAyMCkKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC03NjAsMTAgKzc2MCw2IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8Rmls
ZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQ29yZUlQQ1N1cHBvcnRcV2ViUHJvY2Vz
c01lc3NhZ2VLaW5kcy5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxDb3JlSVBDU3VwcG9ydFxXZWJQcm9jZXNzUHJveHlN
ZXNzYWdlS2luZHMuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
</data>
<flag name="review"
          id="59366"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69660</attachid>
            <date>2010-10-04 12:01:05 -0700</date>
            <delta_ts>2010-10-04 13:02:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>updated.diff</filename>
            <type>text/plain</type>
            <size>35651</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTAyMykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMTAtMTAtMDQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW5lcmF0
ZSBtZXNzYWdlcyBzZW50IHRvIHRoZSBXZWJQcm9jZXNzIGNsYXNzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwOTcKKworICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgIEFkZCBuZXcgZmlsZSB0byBnZW5lcmF0ZSBhbmQgbmV3
IGRpcmVjdG9yeSB0byBzZWFyY2guCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIvbWVzc2Fn
ZXMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICBNYWtlIHRoaXMgc2NyaXB0IHdvcmsgZm9yIHBhc3NpbmcgYSB0ZW1wbGF0ZWQgdHlw
ZS4gCisKKyAgICAgICAgKiBTaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vzc01lc3NhZ2VL
aW5kcy5oOiBSZW1vdmVkLgorCisgICAgICAgICogVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyOjpwZW5kaW5nVmlz
aXRlZExpbmtzVGltZXJGaXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojppbml0aWFsaXplSGlzdG9yeUNsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmVuc3VyZVdlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmluaXRpYWxpemVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWluaXRpYWxpemVXZWJQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkp
OiBBbHdheXMgcGFzcyBib3RoCisgICAgICAgIHRoZSBidW5kbGUgcGF0aCBhbmQgYSBrZXksIGV2
ZW4gaWYgdGhlIGtleSBpcyBudWxsLCB3aGljaCBpdCB3aWxsIGJlIGZvcgorICAgICAgICBhbGwg
bm9uLW1hYyBidWlsZHMgZm9yIG5vdy4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlByb2Nl
c3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRVcEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViQ29udGV4
dFdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldFNob3VsZFBhaW50TmF0
aXZlQ29udHJvbHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybVNldFVw
V2ViUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IHN5bnRheCBmb3Igc2VuZGluZyB0aGUg
bWVzc2FnZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpzZXR1cEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgQ29udmVydCB0byB1c2luZyBnZW5lcmF0
ZWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NNZXNzYWdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOiBBZGRlZC4KKworICAgICAgICAqIFdlYktpdDIucHJvOgor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3
aW4vV2ViS2l0Mi52Y3Byb2o6CisgICAgICAgIFVwZGF0ZSBwcm9qZWN0cy4KKwogMjAxMC0xMC0w
NCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0aGUgTWFjIGJ1
aWxkLgpJbmRleDogV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJLaXQyL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBAIFZQQVRIID0g
XAogICAgICQoV2ViS2l0MikvUGx1Z2luUHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL1BsdWdpbnMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJQYWdlIFwKKyAgICAk
KFdlYktpdDIpL1dlYlByb2Nlc3MgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL1BsdWdpbnMg
XAogIwogCkBAIC0xMSw2ICsxMiw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFBsdWdp
blByb2Nlc3NQcm94eSBcCiAgICAgUGx1Z2luUHJveHkgXAogICAgIFdlYlBhZ2UgXAorICAgIFdl
YlByb2Nlc3MgXAogICAgIFdlYlByb2Nlc3NDb25uZWN0aW9uIFwKICMKIApJbmRleDogV2ViS2l0
Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lv
biA2OTAyMCkKKysrIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE0MCwx
MCArMTQwLDEyIEBAIFFNQUtFX0NYWEZMQUdTICs9ICItaW5jbHVkZSAkJFBSRUZJWF9IRUEKIERF
RklORVMgKz0gQlVJTERJTkdfUVRfXwogCiBXRUJLSVQyX0dFTkVSQVRFRF9IRUFERVJTID0gXAot
ICAgICQkT1VUUFVUX0RJUi9XZWJLaXQyL2dlbmVyYXRlZC9XZWJQYWdlTWVzc2FnZXMuaAorICAg
ICQkT1VUUFVUX0RJUi9XZWJLaXQyL2dlbmVyYXRlZC9XZWJQYWdlTWVzc2FnZXMuaCBcCisgICAg
JCRPVVRQVVRfRElSL1dlYktpdDIvZ2VuZXJhdGVkL1dlYlByb2Nlc3NNZXNzYWdlcy5oCiAKIFdF
QktJVDJfR0VORVJBVEVEX1NPVVJDRVMgPSBcCi0gICAgJCRPVVRQVVRfRElSL1dlYktpdDIvZ2Vu
ZXJhdGVkL1dlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgJCRPVVRQVVRfRElSL1dlYktp
dDIvZ2VuZXJhdGVkL1dlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKKyAgICAkJE9VVFBVVF9E
SVIvV2ViS2l0Mi9nZW5lcmF0ZWQvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKIAogSEVB
REVSUyArPSBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaCBcCkBAIC0x
NzUsNyArMTc3LDYgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL0NvcmVJUENTdXBwb3J0L0Ry
YXdpbmdBcmVhTWVzc2FnZUtpbmRzLmggXAogICAgIFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9EcmF3
aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmggXAogICAgIFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9X
ZWJQYWdlUHJveHlNZXNzYWdlS2luZHMuaCBcCi0gICAgU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dl
YlByb2Nlc3NNZXNzYWdlS2luZHMuaCBcCiAgICAgU2hhcmVkL0NhY2hlTW9kZWwuaCBcCiAgICAg
U2hhcmVkL0RyYXdpbmdBcmVhQmFzZS5oIFwKICAgICBTaGFyZWQvSW1tdXRhYmxlQXJyYXkuaCBc
CkluZGV4OiBXZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQkocmV2aXNpb24gNjg5ODcpCisr
KyBXZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAt
MjI3LDYgKzIyNywxMiBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVj
CiAKICAgICBmb3IgcGFyYW1ldGVyIGluIHJlY2VpdmVyLml0ZXJwYXJhbWV0ZXJzKCk6CiAgICAg
ICAgIHR5cGUgPSBwYXJhbWV0ZXIudHlwZQorICAgICAgICAKKyAgICAgICAgaWYgdHlwZS5maW5k
KCc8JykgIT0gLTE6CisgICAgICAgICAgICAjIERvbid0IGZvcndhcmQgZGVjbGFyZSBjbGFzcyB0
ZW1wbGF0ZXMuCisgICAgICAgICAgICBoZWFkZXJzLnVwZGF0ZShoZWFkZXJzX2Zvcl90eXBlKHR5
cGUpKQorICAgICAgICAgICAgY29udGludWUKKwogICAgICAgICBzcGxpdCA9IHR5cGUuc3BsaXQo
Jzo6JykKIAogICAgICAgICBpZiBsZW4oc3BsaXQpID09IDI6CkBAIC0zMzEsNiArMzM3LDEyIEBA
IGRlZiBhcmd1bWVudF9jb2Rlcl9oZWFkZXJzX2Zvcl90eXBlKHR5cGUKIAogCiBkZWYgaGVhZGVy
c19mb3JfdHlwZSh0eXBlKToKKyAgICAjIENoZWNrIGZvciBWZWN0b3IuCisgICAgbWF0Y2ggPSBy
ZS5zZWFyY2gocidWZWN0b3I8KC4rKT4nLCB0eXBlKQorICAgIGlmIG1hdGNoOgorICAgICAgICBl
bGVtZW50X3R5cGUgPSBtYXRjaC5ncm91cHMoKVswXS5zdHJpcCgpCisgICAgICAgIHJldHVybiBb
Jzx3dGYvVmVjdG9yLmg+J10gKyBoZWFkZXJzX2Zvcl90eXBlKGVsZW1lbnRfdHlwZSkKKwogICAg
IHNwZWNpYWxfY2FzZXMgPSB7CiAgICAgICAgICdXVEY6OlN0cmluZyc6ICc8d3RmL3RleHQvV1RG
U3RyaW5nLmg+JywKICAgICAgICAgJ1dlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCc6ICciV2ViRXZl
bnQuaCInLApJbmRleDogV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5pdHRl
c3QucHkJKHJldmlzaW9uIDY4OTg3KQorKysgV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2Fn
ZXNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsNyBAQCBfZXhwZWN0
ZWRfaGVhZGVyID0gIiIiLyoKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKICNpbmNsdWRlICJNZXNz
YWdlSUQuaCIKICNpbmNsdWRlICJQbHVnaW4uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBNYWNoUG9ydDsKSW5kZXg6IFdlYktpdDIv
U2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlByb2Nlc3NNZXNzYWdlS2luZHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQcm9jZXNzTWVzc2FnZUtpbmRz
LmgJKHJldmlzaW9uIDY5MDIwKQorKysgV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2Vi
UHJvY2Vzc01lc3NhZ2VLaW5kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFdlYlByb2Nlc3NNZXNzYWdlS2luZHNfaAotI2RlZmluZSBXZWJQ
cm9jZXNzTWVzc2FnZUtpbmRzX2gKLQotLy8gTWVzc2FnZXMgc2VudCBmcm9tIFdlYktpdCB0byB0
aGUgd2ViIHByb2Nlc3MuCi0KLSNpbmNsdWRlICJNZXNzYWdlSUQuaCIKLQotbmFtZXNwYWNlIFdl
YlByb2Nlc3NNZXNzYWdlIHsKLQotZW51bSBLaW5kIHsKLSAgICBTZXRWaXNpdGVkTGlua1RhYmxl
LAotICAgIFZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkLAotICAgIEFsbFZpc2l0ZWRMaW5rU3RhdGVD
aGFuZ2VkLAotICAgIAotICAgIExvYWRJbmplY3RlZEJ1bmRsZSwKLSAgICBTZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LAotICAgIFNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzLAotICAgIFNl
dENhY2hlTW9kZWwsCi0gICAgQ3JlYXRlLAotICAgIFJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURv
Y3VtZW50LAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBTZXR1cEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdQb3J0LAotI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lOKQotICAgIFNldFNob3VsZFBhaW50TmF0
aXZlQ29udHJvbHMsCi0jZW5kaWYKLX07Ci0KLX0KLQotbmFtZXNwYWNlIENvcmVJUEMgewotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBNZXNzYWdlS2luZFRyYWl0czxXZWJQcm9jZXNzTWVzc2FnZTo6S2lu
ZD4geyAKLSAgICBzdGF0aWMgY29uc3QgTWVzc2FnZUNsYXNzIG1lc3NhZ2VDbGFzcyA9IE1lc3Nh
Z2VDbGFzc1dlYlByb2Nlc3M7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBXZWJQcm9jZXNzTWVzc2Fn
ZUtpbmRzX2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3Bw
CShyZXZpc2lvbiA2ODk4NykKKysrIFdlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJsZS5oIgogI2luY2x1ZGUgIldlYkNv
bnRleHQuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0x
NTEsMTggKzE1MSwxNyBAQCB2b2lkIFZpc2l0ZWRMaW5rUHJvdmlkZXI6OnBlbmRpbmdWaXNpdGVk
CiAgICAgICAgIGlmICghbV90YWJsZS5zaGFyZWRNZW1vcnkoKS0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpSZWFkT25seSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgbV9jb250ZXh0LT5wcm9jZXNzKCktPnNlbmQoV2ViUHJvY2Vzc01lc3NhZ2U6OlNldFZpc2l0
ZWRMaW5rVGFibGUsIDAsIENvcmVJUEM6OkluKGhhbmRsZSkpOworICAgICAgICBtX2NvbnRleHQt
PnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0VmlzaXRlZExpbmtUYWJs
ZShoYW5kbGUpLCAwKTsKICAgICB9CiAgICAgCiAgICAgLy8gV2Ugbm93IG5lZWQgdG8gbGV0IHRo
ZSB3ZWIgcHJvY2VzcyBrbm93IHRoYXQgd2UndmUgYWRkZWQgbGlua3MuCiAgICAgaWYgKGFkZGVk
VmlzaXRlZExpbmtzLnNpemUoKSA8PSAyMCkgewotICAgICAgICBtX2NvbnRleHQtPnByb2Nlc3Mo
KS0+c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6VmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQsIDAsIENv
cmVJUEM6OkluKGFkZGVkVmlzaXRlZExpbmtzKSk7CisgICAgICAgIG1fY29udGV4dC0+cHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZChh
ZGRlZFZpc2l0ZWRMaW5rcyksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAg
IC8vIEp1c3QgcmVjYWxjdWxhdGUgYWxsIHRoZSB2aXNpdGVkIGxpbmtzLgotICAgIG1fY29udGV4
dC0+cHJvY2VzcygpLT5zZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpBbGxWaXNpdGVkTGlua1N0YXRl
Q2hhbmdlZCwgMCwgQ29yZUlQQzo6SW4oKSk7Ci0gICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBbGxWaXNpdGVkTGlua1N0YXRl
Q2hhbmdlZCgpLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcAkocmV2aXNpb24gNjkwMjApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjEgKzI4LDE5IEBACiAjaW5jbHVk
ZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU1lc3NhZ2VLaW5k
cy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKKyNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgIldlYkNvbnRl
eHRVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VLaW5kcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGlua0hhc2guaD4KICNp
bmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRy
Lmg+CiAKLSNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3Jl
L0xpbmtIYXNoLmg+Ci0KICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRM
ZWFrQ291bnRlci5oPgogI2VuZGlmCkBAIC0xMTYsNyArMTE0LDcgQEAgdm9pZCBXZWJDb250ZXh0
Ojppbml0aWFsaXplSGlzdG9yeUNsaWVudAogICAgIGlmICghaGFzVmFsaWRQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKFdlYlByb2Nlc3NN
ZXNzYWdlOjpTZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcywgMCwgQ29yZUlQQzo6SW4obV9oaXN0
b3J5Q2xpZW50LnNob3VsZFRyYWNrVmlzaXRlZExpbmtzKCkpKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKG1faGlz
dG9yeUNsaWVudC5zaG91bGRUcmFja1Zpc2l0ZWRMaW5rcygpKSwgMCk7CiB9CiAKIHZvaWQgV2Vi
Q29udGV4dDo6ZW5zdXJlV2ViUHJvY2VzcygpCkBAIC0xMjYsMTEgKzEyNCwxMSBAQCB2b2lkIFdl
YkNvbnRleHQ6OmVuc3VyZVdlYlByb2Nlc3MoKQogCiAgICAgbV9wcm9jZXNzID0gV2ViUHJvY2Vz
c01hbmFnZXI6OnNoYXJlZCgpLmdldFdlYlByb2Nlc3ModGhpcyk7CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoV2ViUHJvY2Vzc01lc3NhZ2U6OlNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzLCAwLCBD
b3JlSVBDOjpJbihtX2hpc3RvcnlDbGllbnQuc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoKSkpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6U2V0Q2FjaGVNb2RlbCwgMCwg
Q29yZUlQQzo6SW4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fY2FjaGVNb2RlbCkpKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFNob3VsZFRyYWNrVmlzaXRl
ZExpbmtzKG1faGlzdG9yeUNsaWVudC5zaG91bGRUcmFja1Zpc2l0ZWRMaW5rcygpKSwgMCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRDYWNoZU1vZGVsKHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX2NhY2hlTW9kZWwpKSwgMCk7CiAKICAgICBmb3IgKEhhc2hT
ZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNFbXB0eURvY3Vt
ZW50LmJlZ2luKCksIGVuZCA9IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0VtcHR5RG9jdW1lbnQuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKFdlYlByb2Nlc3NN
ZXNzYWdlOjpSZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudCwgMCwgQ29yZUlQQzo6SW4o
Kml0KSk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVn
aXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoKml0KSwgMCk7CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSAhPSBtX3BlbmRpbmdNZXNzYWdlc1RvUG9zdFRvSW5qZWN0ZWRCdW5kbGUuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgcGFpcjxTdHJpbmcsIFJlZlB0cjxBUElPYmplY3Q+ID4qIG1l
c3NhZ2UgPSAmbV9wZW5kaW5nTWVzc2FnZXNUb1Bvc3RUb0luamVjdGVkQnVuZGxlW2ldOwpAQCAt
MjgzLDcgKzI4MSw3IEBAIHZvaWQgV2ViQ29udGV4dDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHQK
ICAgICBpZiAoIWhhc1ZhbGlkUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoV2ViUHJvY2Vzc01lc3NhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURv
Y3VtZW50LCAwLCBDb3JlSVBDOjpJbih1cmxTY2hlbWUpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KHVy
bFNjaGVtZSksIDApOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OmFkZFZpc2l0ZWRMaW5rKGNvbnN0
IFN0cmluZyYgdmlzaXRlZFVSTCkKQEAgLTMwNiw3ICszMDQsNyBAQCB2b2lkIFdlYkNvbnRleHQ6
OnNldENhY2hlTW9kZWwoQ2FjaGVNb2RlCiAKICAgICBpZiAoIWhhc1ZhbGlkUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpT
ZXRDYWNoZU1vZGVsLCAwLCBDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9jYWNo
ZU1vZGVsKSkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0
Q2FjaGVNb2RlbChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9jYWNoZU1vZGVsKSksIDApOwogfQog
CiB2b2lkIFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
IGFyZ3VtZW50cykKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24g
Njg5ODcpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRz
LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWFu
YWdlci5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlICJXZWJVUkxSZXF1ZXN0LmgiCiAKQEAgLTE1NSw4ICsxNTUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoY29uCiAgICAgfQogCiAgICAgQVNTRVJUKG1fZHJhd2lu
Z0FyZWEpOwotCi0gICAgcHJvY2VzcygpLT5zZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpDcmVhdGUs
IG1fcGFnZUlELCBDb3JlSVBDOjpJbihjcmVhdGlvblBhcmFtZXRlcnMoc2l6ZSkpKTsKKyAgICBw
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNyZWF0ZVdlYlBhZ2UobV9wYWdl
SUQsIGNyZWF0aW9uUGFyYW1ldGVycyhzaXplKSksIDApOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVpbml0aWFsaXplV2ViUGFnZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQpAQCAt
MTY1LDggKzE2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWluaXRpYWxpemVXZWJQYWdlKGMK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fZHJhd2luZ0FyZWEpOwotCi0gICAgcHJv
Y2VzcygpLT5zZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpDcmVhdGUsIG1fcGFnZUlELCBDb3JlSVBD
OjpJbihjcmVhdGlvblBhcmFtZXRlcnMoc2l6ZSkpKTsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkNyZWF0ZVdlYlBhZ2UobV9wYWdlSUQsIGNyZWF0aW9uUGFyYW1l
dGVycyhzaXplKSksIDApOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiA2ODk4NykKKysrIFdl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01hbmFnZXIuaCIKLSNpbmNsdWRlICJX
ZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9LVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNjgsNyArNjgs
NyBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJDb250CiAgICAgLy8gc2lu
Z2xlICJJbml0aWFsaXplIiBtZXNzYWdlcyB3aXRoIGEgc3RydWN0IHRoYXQgaGFzIGFsbCB0aGUg
bmVlZGVkIGluZm9ybWF0aW9uLgogICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
ID0gbV9jb250ZXh0LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgaWYgKCFhcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgc2VuZChXZWJQcm9jZXNz
TWVzc2FnZTo6U2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgMCwgQ29yZUlQQzo6SW4oYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpLCAwKTsKIAogICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBpbnN0ZWFkIHNlbmQgdGhlIGJ1bmRs
ZSBwYXRoIGFzIHBhcnQgb2YgdGhlIGFyZ3VtZW50cyB0byBwcm9jZXNzIGNyZWF0aW9uPwogICAg
IC8vIFdvdWxkIHRoYXQgYmUgYmV0dGVyIHRoYW4gc2VuZGluZyBhIGNvbm5lY3Rpb24/CkBAIC03
NywxMSArNzcsMTEgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViQ29udAog
ICAgICAgICBjaGFyICpzYW5kYm94QnVuZGxlVG9rZW4gPSBOVUxMOwogICAgICAgICBDU3RyaW5n
IGluamVjdGVkQnVuZGxlUGF0aCA9IGNvbnRleHQtPmluamVjdGVkQnVuZGxlUGF0aCgpLnV0Zjgo
KTsKICAgICAgICAgc2FuZGJveF9pc3N1ZV9leHRlbnNpb24oaW5qZWN0ZWRCdW5kbGVQYXRoLmRh
dGEoKSwgJnNhbmRib3hCdW5kbGVUb2tlbik7Ci0gICAgICAgIHNlbmQoV2ViUHJvY2Vzc01lc3Nh
Z2U6OkxvYWRJbmplY3RlZEJ1bmRsZSwgMCwgQ29yZUlQQzo6SW4oY29udGV4dC0+aW5qZWN0ZWRC
dW5kbGVQYXRoKCksIFN0cmluZzo6ZnJvbVVURjgoc2FuZGJveEJ1bmRsZVRva2VuKSkpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpMb2FkSW5qZWN0ZWRCdW5kbGUoY29udGV4
dC0+aW5qZWN0ZWRCdW5kbGVQYXRoKCksIFN0cmluZzo6ZnJvbVVURjgoc2FuZGJveEJ1bmRsZVRv
a2VuKSksIDApOwogICAgICAgICBpZiAoc2FuZGJveEJ1bmRsZVRva2VuKQogICAgICAgICAgICAg
ZnJlZShzYW5kYm94QnVuZGxlVG9rZW4pOwogI2Vsc2UKLSAgICAgICAgc2VuZChXZWJQcm9jZXNz
TWVzc2FnZTo6TG9hZEluamVjdGVkQnVuZGxlLCAwLCBDb3JlSVBDOjpJbihjb250ZXh0LT5pbmpl
Y3RlZEJ1bmRsZVBhdGgoKSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpM
b2FkSW5qZWN0ZWRCdW5kbGUoY29udGV4dC0+aW5qZWN0ZWRCdW5kbGVQYXRoKCksIFN0cmluZygp
KSwgMCk7CiAjZW5kaWYKICAgICB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
cm9jZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YlByb2Nlc3NQcm94eU1hYy5tbQkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiAKICNpbmNsdWRlICJNYWNoUG9ydC5oIgogI2luY2x1ZGUgIldlYktpdFN5c3RlbUludGVy
ZmFjZS5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM5
LDcgKzM5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFVwQWNjZWxlcmF0ZWRDbwogI2lm
IEhBVkUoSE9TVEVEX0NPUkVfQU5JTUFUSU9OKQogICAgIG1hY2hfcG9ydF90IHJlbmRlclNlcnZl
clBvcnQgPSBXS0luaXRpYWxpemVSZW5kZXJTZXJ2ZXIoKTsKICAgICBpZiAocmVuZGVyU2VydmVy
UG9ydCAhPSBNQUNIX1BPUlRfTlVMTCkKLSAgICAgICAgc2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6
U2V0dXBBY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydCwgMCwgQ29yZUlQQzo6SW4oQ29yZUlQQzo6
TWFjaFBvcnQocmVuZGVyU2VydmVyUG9ydCwgTUFDSF9NU0dfVFlQRV9DT1BZX1NFTkQpKSk7Cisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFVwQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1BvcnQoQ29yZUlQQzo6TWFjaFBvcnQocmVuZGVyU2VydmVyUG9ydCwgTUFDSF9NU0dfVFlQ
RV9DT1BZX1NFTkQpKSwgMCk7CiAjZW5kaWYKIH0KICNlbmRpZgpJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYkNvbnRleHRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL3dpbi9XZWJDb250ZXh0V2luLmNwcAkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDcgQEAKIAogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKIAotI2luY2x1ZGUgIldlYlByb2Nlc3NN
ZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00
MywxMyArNDMsMTIgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRTaG91bGRQYWludE5hdGl2ZUNvbgog
CiAgICAgaWYgKCFoYXNWYWxpZFByb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9w
cm9jZXNzLT5zZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpTZXRTaG91bGRQYWludE5hdGl2ZUNvbnRy
b2xzLCAwLCBDb3JlSVBDOjpJbihtX3Nob3VsZFBhaW50TmF0aXZlQ29udHJvbHMpKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFNob3VsZFBhaW50TmF0aXZl
Q29udHJvbHMobV9zaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKSwgMCk7CiB9CiAKIHZvaWQgV2Vi
Q29udGV4dDo6cGxhdGZvcm1TZXRVcFdlYlByb2Nlc3MoKQogewotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChXZWJQcm9jZXNzTWVzc2FnZTo6U2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scywgMCwgQ29y
ZUlQQzo6SW4obV9zaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKSk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKG1f
c2hvdWxkUGFpbnROYXRpdmVDb250cm9scyksIDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiA2OTAyMCkKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsNiArMjI1LDggQEAKIAkJQkMyRTZFOEUxMTQxOTcxNTAw
QTYzQjFFIC8qIFdvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMyRTZFN0UxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5oICovOyB9
OwogCQlCQzMwNjVDNDEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA2NUMzMTI1OTJGODkw
MEU3MTI3OCAvKiBXZWJQcm9jZXNzTWFjLm1tICovOyB9OwogCQlCQzMwNjVGQTEyNTkzNDRFMDBF
NzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMzMDY1RjkxMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLzsg
fTsKKwkJQkMzMDY2QkUxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMz
MDY2QkMxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OworCQlCQzMwNjZCRjEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNjZCRDEy
NUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VzLmggKi87IH07CiAJCUJDMzNERDY4
MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzNERDY3MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1i
ZXIuaCAqLzsgfTsKIAkJQkMzM0UwRDExMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMzNFMENGMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmggKi87IH07CiAJCUJDMzNFMEQyMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMzNFMEQwMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcCAqLzsgfTsKQEAgLTY3NCw2ICs2NzYsOSBAQAogCQlCQzJFNkU3RTExNDE5NzBDMDBBNjNC
MUUgLyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtR
dWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNjVDMzEyNTkyRjg5MDBF
NzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDMzA2NUY5MTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkMzMDY2QjkxMjVBNDM2MzAwRTcxMjc4IC8qIFdlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzMDY2QkMxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlByb2Nl
c3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDMzA2NkJEMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc01lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzNERDY3MTIzODQ2NDYwMDM2MEYzRiAvKiBX
ZWJOdW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTnVtYmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzNFMENGMTI0MDhFODYwMDM2MEYzRiAv
KiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMzM0UwRDAxMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjEz
LDYgKzEyMTgsNyBAQAogCQkJCUJDMTExQUUzMTEyRjVDMjYwMDMzN0JBQiAvKiBXZWJQcm9jZXNz
LmNwcCAqLywKIAkJCQlCQzAzMkQ5MTEwRjQzN0FGMDA1OEMxNUEgLyogV2ViUHJvY2Vzcy5oICov
LAogCQkJCTFBNkZBMDFGMTFFMTUyODcwMERCMTM3MSAvKiBXZWJQcm9jZXNzTWFpbi5oICovLAor
CQkJCUJDMzA2NkI5MTI1QTQzNjMwMEU3MTI3OCAvKiBXZWJQcm9jZXNzLm1lc3NhZ2VzLmluICov
LAogCQkJKTsKIAkJCXBhdGggPSBXZWJQcm9jZXNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTE2OTUsNiArMTcwMSw4IEBACiAJCQkJQzBDRTcyOUYxMjQ3RTcxRDAwQkMwRUM0IC8q
IFdlYlBhZ2VNZXNzYWdlcy5oICovLAogCQkJCTFBMDQzRjY3MTI1MTREOEIwMEZGQkZCNSAvKiBX
ZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUEwNDNGNjgx
MjUxNEQ4QjAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKKwkJ
CQlCQzMwNjZCQzEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJQkMzMDY2QkQxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNZXNzYWdl
cy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJLaXQyOwpAQCAtMTkyNSw2ICsxOTMzLDcgQEAKIAkJCQkxQThFRkRG
QTEyNTNDQUEyMDBGNzA2N0YgLyogRGF0YVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM5MDk5ODAxMjU2QTk4MjAwMDgzNzU2IC8qIFdLU3RyaW5nUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUJDMzA2NkJGMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjIyMCw2ICsyMjI5LDcgQEAKIAkJCQkxQThFRkE3MDEy
NTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE4RUZERkUxMjUzQ0I2RTAwRjcwNjdGIC8qIERhdGFSZWZlcmVuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzMDY1QzQxMjU5MkY4OTAwRTcxMjc4IC8qIFdlYlByb2Nl
c3NNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlCQzMwNjZCRTEyNUE0NDIxMDBFNzEyNzggLyog
V2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDY5MDIwKQorKysgV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBACiAjaW5j
bHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdl
S2luZHMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CkBAIC00NCwxMCArNDQsNiBAQAog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5o
PgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIk1hY2hQb3J0LmgiCi0jZW5kaWYKLQog
I2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HQ0NvbnRyb2xsZXIuaD4KQEAgLTE0MCw2ICsxMzYsMTEgQEAgdm9pZCBXZWJQcm9jZXNz
OjpzZXRBcHBsaWNhdGlvbkNhY2hlRGlyZQogICAgIGNhY2hlU3RvcmFnZSgpLnNldENhY2hlRGly
ZWN0b3J5KGRpcmVjdG9yeSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c2V0U2hvdWxkVHJhY2tW
aXNpdGVkTGlua3MoYm9vbCBzaG91bGRUcmFja1Zpc2l0ZWRMaW5rcykKK3sKKyAgICBQYWdlR3Jv
dXA6OnNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKHNob3VsZFRyYWNrVmlzaXRlZExpbmtzKTsK
K30KKwogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChj
b25zdCBTdHJpbmcmIHVybFNjaGVtZSkKIHsKICAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJV
UkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQodXJsU2NoZW1lKTsKQEAgLTE4MywyMSArMTg0LDM3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6YWRkVmlzaXRlZExpbmsoV2ViQ29yZToKICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZTo6QWRkVmlzaXRlZExpbmssIDAsIENvcmVJ
UEM6OkluKGxpbmtIYXNoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbChD
YWNoZU1vZGVsIGNhY2hlTW9kZWwpCit2b2lkIFdlYlByb2Nlc3M6OnNldENhY2hlTW9kZWwodWlu
dDMyX3QgY2FjaGVNb2RlbCkKIHsKLSAgICBpZiAoIW1faGFzU2V0Q2FjaGVNb2RlbCB8fCBjYWNo
ZU1vZGVsICE9IG1fY2FjaGVNb2RlbCkgeworICAgIGlmICghbV9oYXNTZXRDYWNoZU1vZGVsIHx8
IHN0YXRpY19jYXN0PENhY2hlTW9kZWw+KGNhY2hlTW9kZWwpICE9IG1fY2FjaGVNb2RlbCkgewog
ICAgICAgICBtX2hhc1NldENhY2hlTW9kZWwgPSB0cnVlOwotICAgICAgICBtX2NhY2hlTW9kZWwg
PSBjYWNoZU1vZGVsOwotICAgICAgICBwbGF0Zm9ybVNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCk7
CisgICAgICAgIG1fY2FjaGVNb2RlbCA9IHN0YXRpY19jYXN0PENhY2hlTW9kZWw+KGNhY2hlTW9k
ZWwpOworICAgICAgICBwbGF0Zm9ybVNldENhY2hlTW9kZWwoc3RhdGljX2Nhc3Q8Q2FjaGVNb2Rl
bD4oY2FjaGVNb2RlbCkpOwogICAgIH0KIH0KIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykgJiYgUExBVEZPUk0oTUFDKQordm9pZCBXZWJQcm9jZXNzOjpzZXRVcEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdQb3J0KENvcmVJUEM6Ok1hY2hQb3J0IHBvcnQpCit7CisgICAgbV9jb21wb3Np
dGluZ1JlbmRlclNlcnZlclBvcnQgPSBwb3J0LnBvcnQoKTsKK30KKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oV0lOKQordm9pZCBXZWJQcm9jZXNzOjpzZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xz
KGJvb2wgc2hvdWxkUGFpbnROYXRpdmVDb250cm9scykKK3sKKyNpZiBVU0UoU0FGQVJJX1RIRU1F
KQorICAgIFNldHRpbmdzOjpzZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKHNob3VsZFBhaW50
TmF0aXZlQ29udHJvbHMpOworI2VuZGlmCit9CisjZW5kaWYKKwogV2ViUGFnZSogV2ViUHJvY2Vz
czo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZU1h
cC5nZXQocGFnZUlEKS5nZXQoKTsKIH0KIAotV2ViUGFnZSogV2ViUHJvY2Vzczo6Y3JlYXRlV2Vi
UGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCit2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlE
LCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIC8v
IEl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBmb3IgcGFnZSBleGlzdGVuY2UgaGVyZSBzaW5jZSBk
dXJpbmcgYSB3aW5kb3cub3BlbigpIChvciB0YXJnZXRlZAogICAgIC8vIGxpbmspIHRoZSBXZWJQ
YWdlIGdldHMgY3JlYXRlZCBib3RoIGluIHRoZSBzeW5jaHJvbm91cyBoYW5kbGVyIGFuZCB0aHJv
dWdoIHRoZSBub3JtYWwgd2F5LiAKQEAgLTIwOCw3ICsyMjUsNiBAQCBXZWJQYWdlKiBXZWJQcm9j
ZXNzOjpjcmVhdGVXZWJQYWdlKHVpbnQ2CiAgICAgfQogCiAgICAgQVNTRVJUKHJlc3VsdC5maXJz
dC0+c2Vjb25kKTsKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCkBAIC0yNDcs
MTA3ICsyNjMsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNodXRkb3duKCkKIHZvaWQgV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29y
ZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1
bWVudHMpCiB7CiAgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJQ
cm9jZXNzPigpKSB7Ci0gICAgICAgIHN3aXRjaCAobWVzc2FnZUlELmdldDxXZWJQcm9jZXNzTWVz
c2FnZTo6S2luZD4oKSkgewotICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzTWVzc2FnZTo6U2V0
VmlzaXRlZExpbmtUYWJsZTogewotICAgICAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxl
IGhhbmRsZTsKLSAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6
Ok91dChoYW5kbGUpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIHNldFZpc2l0ZWRMaW5rVGFibGUoaGFuZGxlKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFdlYlBy
b2Nlc3NNZXNzYWdlOjpWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZDogewotICAgICAgICAgICAgICAg
IFZlY3RvcjxMaW5rSGFzaD4gbGlua0hhc2hlczsKLSAgICAgICAgICAgICAgICBpZiAoIWFyZ3Vt
ZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChsaW5rSGFzaGVzKSkpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB2aXNpdGVkTGlua1N0YXRlQ2hhbmdlZChsaW5r
SGFzaGVzKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBjYXNlIFdlYlByb2Nlc3NNZXNzYWdlOjpBbGxWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZDoK
LSAgICAgICAgICAgICAgICBhbGxWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZCgpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNz
TWVzc2FnZTo6TG9hZEluamVjdGVkQnVuZGxlOiB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHBh
dGg7Ci0KLSNpZiBFTkFCTEUoV0VCX1BST0NFU1NfU0FOREJPWCkKLSAgICAgICAgICAgICAgICBT
dHJpbmcgdG9rZW47Ci0gICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3Jl
SVBDOjpPdXQocGF0aCwgdG9rZW4pKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICAgICAgbG9hZEluamVjdGVkQnVuZGxlKHBhdGgsIHRva2VuKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0jZWxzZQotICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5k
ZWNvZGUoQ29yZUlQQzo6T3V0KHBhdGgpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICAgICAgbG9hZEluamVjdGVkQnVuZGxlKHBhdGgpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSNlbmRpZgotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBXZWJQ
cm9jZXNzTWVzc2FnZTo6U2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTogewotICAgICAgICAg
ICAgICAgIFN0cmluZyBkaXJlY3Rvcnk7Ci0gICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMt
PmRlY29kZShDb3JlSVBDOjpPdXQoZGlyZWN0b3J5KSkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzZXRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KGRpcmVjdG9yeSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzTWVzc2FnZTo6U2V0U2hvdWxkVHJh
Y2tWaXNpdGVkTGlua3M6IHsKLSAgICAgICAgICAgICAgICBib29sIHNob3VsZFRyYWNrVmlzaXRl
ZExpbmtzOwotICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6
T3V0KHNob3VsZFRyYWNrVmlzaXRlZExpbmtzKSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBQYWdlR3JvdXA6OnNldFNob3Vs
ZFRyYWNrVmlzaXRlZExpbmtzKHNob3VsZFRyYWNrVmlzaXRlZExpbmtzKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NN
ZXNzYWdlOjpTZXRDYWNoZU1vZGVsOiB7Ci0gICAgICAgICAgICAgICAgdWludDMyX3QgY2FjaGVN
b2RlbDsKLSAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91
dChjYWNoZU1vZGVsKSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBzZXRDYWNoZU1vZGVsKHN0YXRpY19jYXN0PENhY2hlTW9k
ZWw+KGNhY2hlTW9kZWwpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NNZXNzYWdlOjpDcmVhdGU6IHsKLSAgICAgICAg
ICAgICAgICB1aW50NjRfdCBwYWdlSUQgPSBhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKTsKLSAg
ICAgICAgICAgICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQocGFyYW1ldGVy
cykpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjcmVh
dGVXZWJQYWdlKHBhZ2VJRCwgcGFyYW1ldGVycyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzTWVzc2FnZTo6UmVnaXN0
ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQ6IHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbWVz
c2FnZTsKLSAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91
dChtZXNzYWdlKSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KG1lc3NhZ2UpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpICYmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgICAgIGNhc2UgV2ViUHJvY2Vzc01lc3Nh
Z2U6OlNldHVwQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQ6IHsKLSAgICAgICAgICAgICAgICBD
b3JlSVBDOjpNYWNoUG9ydCBwb3J0OwotICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5k
ZWNvZGUocG9ydCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
ICAgIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0ID0gcG9ydC5wb3J0KCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lO
KQotICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzTWVzc2FnZTo6U2V0U2hvdWxkUGFpbnROYXRp
dmVDb250cm9sczogewotICAgICAgICAgICAgICAgIGJvb2wgYjsKLSAgICAgICAgICAgICAgICBp
ZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKGIpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0j
aWYgVVNFKFNBRkFSSV9USEVNRSkKLSAgICAgICAgICAgICAgICBTZXR0aW5nczo6c2V0U2hvdWxk
UGFpbnROYXRpdmVDb250cm9scyhiKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB9CisgICAgICAgIGRpZFJlY2VpdmVXZWJQ
cm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VD
bGFzc0luamVjdGVkQnVuZGxlPigpKSB7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJl
dmlzaW9uIDY5MDIwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiTWFj
aFBvcnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50U2l6
ZTsKICAgICBjbGFzcyBQYWdlR3JvdXA7CkBAIC01OCw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBS
dW5Mb29wKiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAKICAgICBXZWJQ
YWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV2ViUGFnZSogY3JlYXRl
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
KTsKKyAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBh
Z2VJRCk7CiAKICAgICBJbmplY3RlZEJ1bmRsZSogaW5qZWN0ZWRCdW5kbGUoKSBjb25zdCB7IHJl
dHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgpOyB9CkBAIC04OCwxMyArOTIsMjIgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGxvYWRJbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmKTsKICNlbmRpZgog
ICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIHNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wpOwogICAgIHZvaWQgcmVnaXN0
ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CiAKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIHNldFVwQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQoQ29yZUlQQzo6TWFjaFBvcnQpOworI2VuZGlmCisjaWYg
UExBVEZPUk0oV0lOKQorICAgIHZvaWQgc2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyhib29s
KTsKKyNlbmRpZgorCisKICAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGFibGUoY29uc3QgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmKTsKICAgICB2b2lkIHZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpMaW5rSGFzaD4mIGxpbmtIYXNoZXMpOwogICAgIHZvaWQgYWxsVmlz
aXRlZExpbmtTdGF0ZUNoYW5nZWQoKTsKIAotICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChDYWNoZU1v
ZGVsIGNhY2hlTW9kZWwpOworICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CiAgICAg
dm9pZCBwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCk7CiAKICAgICAvLyBDb3JlSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQKQEAgLTEwMiw2ICsxMTUsOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogICAgIHZvaWQgZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQpOwog
CisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc01lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7
CisgICAgCiAgICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4gPiBtX3BhZ2VNYXA7CiAgICAgUmVm
UHRyPEluamVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwpJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAt
PiBXZWJQcm9jZXNzIHsKKyAgICAjIFZpc2l0ZWQgbGluayB0cmFja2luZy4KKyAgICBTZXRWaXNp
dGVkTGlua1RhYmxlKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlKQorICAgIFZp
c2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKFZlY3RvcjxXZWJDb3JlOjpMaW5rSGFzaD4gbGlua0hhc2hl
cykKKyAgICBBbGxWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZCgpCisKKyAgICAjIENyZWF0ZSBhIG5l
dyBwYWdlLgorICAgIENyZWF0ZVdlYlBhZ2UodWludDY0X3QgbmV3UGFnZUlELCBXZWJLaXQ6Oldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykKKworICAgICMg
UHJvY2VzcyBpbml0aWFsaXphdGlvbi4KKyAgICBMb2FkSW5qZWN0ZWRCdW5kbGUoV1RGOjpTdHJp
bmcgYnVuZGxlUGF0aCwgV1RGOjpTdHJpbmcgdG9rZW4pCisgICAgU2V0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeShXVEY6OlN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KQorICAgIFNl
dFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wgc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpCisg
ICAgU2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjYWNoZU1vZGVsKQorICAgIFJlZ2lzdGVyVVJMU2No
ZW1lQXNFbXB0eURvY3VtZW50KFdURjo6U3RyaW5nIHNjaGVtZSkKKyNpZiBQTEFURk9STShNQUMp
CisgICAgU2V0VXBBY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydChDb3JlSVBDOjpNYWNoUG9ydCBw
b3J0KQorI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgIFNldFNob3VsZFBhaW50TmF0aXZl
Q29udHJvbHMoYm9vbCBzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKQorI2VuZGlmCit9CkluZGV4
OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDggKzEy
MSw4IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW0KICAgICBpZiAo
IW5ld1BhZ2VJRCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBXZWJQYWdlKiBuZXdXZWJQYWdl
ID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkuY3JlYXRlV2ViUGFnZShuZXdQYWdlSUQsIHBhcmFtZXRl
cnMpOwotICAgIHJldHVybiBuZXdXZWJQYWdlLT5jb3JlUGFnZSgpOworICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNyZWF0ZVdlYlBhZ2UobmV3UGFnZUlELCBwYXJhbWV0ZXJzKTsKKyAgICByZXR1
cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViUGFnZShuZXdQYWdlSUQpLT5jb3JlUGFnZSgpOwog
fQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvdygpCkluZGV4OiBXZWJLaXQyL3dpbi9XZWJL
aXQyLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkocmV2
aXNpb24gNjkwMjApCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzYwLDEwICs3NjAsNiBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUN
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXENvcmVJUENTdXBwb3J0XFdlYlByb2Nlc3NN
ZXNzYWdlS2luZHMuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQ29yZUlQQ1N1cHBvcnRcV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZUtpbmRzLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC0yMDI0LDYgKzIwMjAsMTQg
QEAKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcV2ViUGFnZU1lc3NhZ2VzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3Bw
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChX
ZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xXZWJQcm9j
ZXNzTWVzc2FnZXMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KIAkJPEZp
bHRlcg0KIAkJCU5hbWU9IlNjcmlwdHMiDQo=
</data>
<flag name="review"
          id="59376"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>