<?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>189012</bug_id>
          
          <creation_ts>2018-08-27 15:09:32 -0700</creation_ts>
          <short_desc>Make WebPageProxy always have a API::NavigationClient instead of always having a API::LoaderClient and API::PolicyClient</short_desc>
          <delta_ts>2018-09-18 14:04:50 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1454117</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 15:09:32 -0700</bug_when>
    <thetext>Make WebPageProxy always have a API::NavigationClient instead of always having a API::LoaderClient and API::PolicyClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454119</commentid>
    <comment_count>1</comment_count>
      <attachid>348209</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 15:10:38 -0700</bug_when>
    <thetext>Created attachment 348209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460289</commentid>
    <comment_count>2</comment_count>
      <attachid>349925</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-17 13:11:19 -0700</bug_when>
    <thetext>Created attachment 349925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460303</commentid>
    <comment_count>3</comment_count>
      <attachid>349933</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-17 13:31:44 -0700</bug_when>
    <thetext>Created attachment 349933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460304</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-17 13:34:05 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460326</commentid>
    <comment_count>5</comment_count>
      <attachid>349942</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-17 14:34:44 -0700</bug_when>
    <thetext>Created attachment 349942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460497</commentid>
    <comment_count>6</comment_count>
      <attachid>349942</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-17 21:29:54 -0700</bug_when>
    <thetext>Comment on attachment 349942
Patch

Can the change log contain some explanations about the change of order between calls to NavigationClient and LoaderClient/PolicyClient.
In the case of navigation loads, it makes sense to me NavigationClient should be called even if LoaderClient is set.

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3492
&gt;          m_loaderClient-&gt;didStartProvisionalLoadForFrame(*this, *frame, navigation.get(), m_process-&gt;transformHandlesToObjects(userData.object()).get());

Isn&apos;t it a behavioral change here?
Previously, whenever we had a m_navigationClient, we were never calling m_loaderClient-&gt;didStartProvisionalLoadForFrame.
Shouldn&apos;t we revert the test so that we continue calling didStartProvisionalNavigation for main frames and call didStartProvisionalLoadForFrame for other frames if loader client is there?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3525
&gt; +        m_navigationClient-&gt;didReceiveServerRedirectForProvisionalNavigation(*this, navigation.get(), m_process-&gt;transformHandlesToObjects(userData.object()).get());

Ditto here and below.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6922
&gt; +    if (RefPtr&lt;API::Data&gt; keyData = m_navigationClient-&gt;webCryptoMasterKey(*this))

auto here and below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460669</commentid>
    <comment_count>7</comment_count>
      <attachid>349942</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-18 11:41:52 -0700</bug_when>
    <thetext>Comment on attachment 349942
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3492
&gt;&gt;          m_loaderClient-&gt;didStartProvisionalLoadForFrame(*this, *frame, navigation.get(), m_process-&gt;transformHandlesToObjects(userData.object()).get());
&gt; 
&gt; Isn&apos;t it a behavioral change here?
&gt; Previously, whenever we had a m_navigationClient, we were never calling m_loaderClient-&gt;didStartProvisionalLoadForFrame.
&gt; Shouldn&apos;t we revert the test so that we continue calling didStartProvisionalNavigation for main frames and call didStartProvisionalLoadForFrame for other frames if loader client is there?

This is not a meaningful change in behavior.  All clients with a LoaderClient do not use a NavigationClient.  Preferring the LoaderClient just makes us not break those legacy clients until they migrate to using WKPageSetPageNavigationClient.  Modern clients use a NavigationClient, and this is making that the default without breaking legacy software.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460670</commentid>
    <comment_count>8</comment_count>
      <attachid>350036</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-18 11:42:36 -0700</bug_when>
    <thetext>Created attachment 350036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460731</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-18 14:03:44 -0700</bug_when>
    <thetext>http://trac.webkit.org/r236154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460732</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-18 14:04:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/44574543&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348209</attachid>
            <date>2018-08-27 15:10:38 -0700</date>
            <delta_ts>2018-09-17 13:11:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189012-20180827151038.patch</filename>
            <type>text/plain</type>
            <size>32326</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzU0MDMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDE4LTA4LTI3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXZWJQYWdl
UHJveHkgYWx3YXlzIGhhdmUgYSBBUEk6Ok5hdmlnYXRpb25DbGllbnQgaW5zdGVhZCBvZiBhbHdh
eXMgaGF2aW5nIGEgQVBJOjpMb2FkZXJDbGllbnQgYW5kIEFQSTo6UG9saWN5Q2xpZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOYXZpZ2F0aW9uQ2xp
ZW50IGlzIHRoZSB3YXkgb2YgdGhlIGZ1dHVyZS4gIFdlIG9ubHkgaGF2ZSB0byBzdXBwb3J0IExv
YWRlckNsaWVudCBhbmQgUG9saWN5Q2xpZW50IGZvciB0aGUgZmV3IGxlZ2FjeSBjbGllbnRzIHRo
YXQgc3RpbGwgdXNlIHRoZW0uCisgICAgICAgIFRoaXMgbWFrZXMgdGhlIGRlZmF1bHQgZmxvdyBv
ZiBpbmZvcm1hdGlvbiBzaW1wbGVyLCBhbmQgaXQgbWFrZXMgdXMgbGVzcyBsaWtlbHkgdG8gbWFr
ZSBtaXN0YWtlcyBmb3IgZnV0dXJlIGZlYXR1cmVzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXROYXZpZ2F0aW9u
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRMb2FkZXJDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBvbGljeUNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxp
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRSZWFjaExheW91dE1pbGVzdG9uZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2ViR0xQb2xp
Y3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJHTFBv
bGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJl
Y29tZVVucmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vz
c0RpZEJlY29tZVJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
c3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnVud3JhcENyeXB0b0tleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90V2FzUmVtb3ZlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDE4LTA4LTI3ICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBDb25zb2xpZGF0ZSBF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUiBhbmQgRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZF
UgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyMzUzOTgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNzgsOCArMzc4LDcgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFn
ZVByb3h5OjpjcmVhdGUoUAogV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VD
bGllbnQocGFnZUNsaWVudCkKICAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pKQotICAgICwgbV9sb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxvYWRl
ckNsaWVudD4oKSkKLSAgICAsIG1fcG9saWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpQ
b2xpY3lDbGllbnQ+KCkpCisgICAgLCBtX25hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJlZjxB
UEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkpCiAgICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKICAgICAsIG1fZm9ybUNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKICAgICAsIG1fdWlDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQpAQCAtNTU2LDI4ICs1NTUsMTggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldEhpc3RvcnlDbGllbnQoc3RkOgogICAgIG1faGlzdG9yeUNs
aWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXROYXZpZ2F0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+
JiYgbmF2aWdhdGlvbkNsaWVudCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXROYXZpZ2F0aW9uQ2xp
ZW50KFVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+JiYgbmF2aWdhdGlvbkNsaWVudCkK
IHsKICAgICBtX25hdmlnYXRpb25DbGllbnQgPSBXVEZNb3ZlKG5hdmlnYXRpb25DbGllbnQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TG9hZGVyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkxvYWRlckNsaWVudD4mJiBsb2FkZXJDbGllbnQpCiB7Ci0gICAgaWYgKCFsb2FkZXJDbGll
bnQpIHsKLSAgICAgICAgbV9sb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9h
ZGVyQ2xpZW50PigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgbV9sb2FkZXJDbGll
bnQgPSBXVEZNb3ZlKGxvYWRlckNsaWVudCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQ
b2xpY3lDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmIHBvbGljeUNs
aWVudCkKIHsKLSAgICBpZiAoIXBvbGljeUNsaWVudCkgewotICAgICAgICBtX3BvbGljeUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpQb2xpY3lDbGllbnQ+KCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KICAgICBtX3BvbGljeUNsaWVudCA9IFdURk1vdmUocG9saWN5Q2xpZW50KTsK
IH0KIApAQCAtODk1LDkgKzg4NCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAKICAg
ICByZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb246OlBhZ2VJbnZhbGlkYXRlZCk7CiAKLSAgICBt
X2xvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMb2FkZXJDbGllbnQ+KCk7Ci0g
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50ID0gbnVsbHB0cjsKLSAgICBtX3BvbGljeUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpQb2xpY3lDbGllbnQ+KCk7CisgICAgbV9sb2FkZXJDbGllbnQg
PSBudWxscHRyOworICAgIG1fbmF2aWdhdGlvbkNsaWVudCA9IG1ha2VVbmlxdWVSZWY8QVBJOjpO
YXZpZ2F0aW9uQ2xpZW50PigpOworICAgIG1fcG9saWN5Q2xpZW50ID0gbnVsbHB0cjsKICAgICBt
X2ljb25Mb2FkaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xp
ZW50PigpOwogICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xp
ZW50PigpOwogICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+
KCk7CkBAIC0xMjcwLDggKzEyNTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xp
ZW50KTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCp0aGlzLCBhZGRlZCwgcmVtb3ZlZCk7
CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoKnRoaXMs
IGFkZGVkLCByZW1vdmVkKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3Rh
dGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMTI4MywxNyArMTI3MSwxNSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6d2lsbEdvVG9CYWNrRm9yd2FyZExpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIAotICAgIGlmIChhdXRvKiBpdGVtID0gbV9iYWNrRm9y
d2FyZExpc3QtPml0ZW1Gb3JJRChpdGVtSUQpKSB7Ci0gICAgICAgIGlmIChtX25hdmlnYXRpb25D
bGllbnQpCi0gICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPndpbGxHb1RvQmFja0Zvcndh
cmRMaXN0SXRlbSgqdGhpcywgKml0ZW0sIGluUGFnZUNhY2hlLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9CisgICAg
aWYgKGF1dG8qIGl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+aXRlbUZvcklEKGl0ZW1JRCkpCisg
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKCp0
aGlzLCAqaXRlbSwgaW5QYWdlQ2FjaGUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6
c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0KFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mIGl0ZW0pCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9w
YWdlQ2xpZW50KTsKIAotICAgIHJldHVybiBtX2xvYWRlckNsaWVudC0+c2hvdWxkS2VlcEN1cnJl
bnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0KCp0aGlzLCBpdGVtKTsKKyAgICByZXR1cm4gIW1f
bG9hZGVyQ2xpZW50IHx8IG1fbG9hZGVyQ2xpZW50LT5zaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3
YXJkTGlzdEl0ZW1Jbkxpc3QoKnRoaXMsIGl0ZW0pOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6
Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC0yMTkzLDggKzIxNzks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25zdCBTdHJpCiAgICAgfTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCgqdGhpcywgc3Rh
dGljX2Nhc3Q8UGx1Z2luTW9kdWxlTG9hZFBvbGljeT4ocGx1Z2luTG9hZFBvbGljeSksIHBsdWdp
bkluZm9ybWF0aW9uLmdldCgpLCBXVEZNb3ZlKGZpbmRQbHVnaW5Db21wbGV0aW9uKSk7CisgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkKCp0aGlzLCBzdGF0
aWNfY2FzdDxQbHVnaW5Nb2R1bGVMb2FkUG9saWN5PihwbHVnaW5Mb2FkUG9saWN5KSwgcGx1Z2lu
SW5mb3JtYXRpb24uZ2V0KCksIFdURk1vdmUoZmluZFBsdWdpbkNvbXBsZXRpb24pKTsKICNlbmRp
ZgogICAgIGZpbmRQbHVnaW5Db21wbGV0aW9uKHBsdWdpbkxvYWRQb2xpY3ksIHsgfSk7CiB9CkBA
IC0zNDUyLDExICszNDM3LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lv
bmFsTG8KICAgICBmcmFtZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWQodXJsKTsKIAogICAgIG1f
cGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgewotICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCp0aGlzLCBuYXZp
Z2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRh
dGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9IGVsc2UKKyAgICBpZiAobV9sb2FkZXJDbGllbnQp
CiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgaWYgKGZy
YW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFN0YXJ0
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAt
MzQ4NCwxMSArMzQ2OCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyCiAgICAgZnJhbWUtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZChyZXF1ZXN0LnVybCgpKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7
Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoZnJhbWUtPmlzTWFp
bkZyYW1lKCkpCi0gICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbigqdGhpcywgbmF2aWdhdGlvbi5nZXQo
KSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7Ci0gICAgfSBlbHNlCisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBt
X2xvYWRlckNsaWVudC0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgZnJhbWUtPmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9u
LmdldCgpIDogbnVsbHB0ciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1l
KCkpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5KQpAQCAt
MzQ5OCwxMCArMzQ4MSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJl
ZGkKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJ
RCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xp
ZW50KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCgqdGhpcywgdXJsLCBk
ZWxheSk7Ci0gICAgfQorICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgbV9u
YXZpZ2F0aW9uQ2xpZW50LT53aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KCp0aGlzLCB1cmwsIGRl
bGF5KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCkKQEAgLTM1MTEsMTAgKzM0OTIsOCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUg
PSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUp
OwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoZnJhbWUtPmlz
TWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENhbmNlbENs
aWVudFJlZGlyZWN0KCp0aGlzKTsKLSAgICB9CisgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgp
KQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENhbmNlbENsaWVudFJlZGlyZWN0KCp0
aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIFdlYkNvcmU6OlVSTCYmIHVybCkKQEAg
LTM1NzAsMTUgKzM1NDksMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25h
bExvYQogICAgIEFTU0VSVCghbV9mYWlsaW5nUHJvdmlzaW9uYWxMb2FkVVJMKTsKICAgICBtX2Zh
aWxpbmdQcm92aXNpb25hbExvYWRVUkwgPSBwcm92aXNpb25hbFVSTDsKIAotICAgIGlmIChtX25h
dmlnYXRpb25DbGllbnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAg
ICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
V2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogR2V0IHRoZSBtYWluIGZyYW1l
J3MgY3VycmVudCBuYXZpZ2F0aW9uLgotICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
aWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBudWxscHRyLCBlcnJvciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50
LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwg
bmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgaWYgKGZyYW1lLT5pc01h
aW5GcmFtZSgpKQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25h
bE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJy
b3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwogCiAgICAgbV9mYWlsaW5nUHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogfQpA
QCAtMzY3MCw3ICszNjQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JG
cmFtZQogI2VuZGlmCiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAg
IGlmIChtX25hdmlnYXRpb25DbGllbnQgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENv
bW1pdE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM2OTYsNyArMzY3MCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWQKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1l
KCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gJm5hdmlnYXRpb25TdGF0
ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGll
bnQgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgp
KQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZpbmlzaERvY3VtZW50TG9hZCgqdGhp
cywgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKQEAgLTM3MjgsMTEgKzM3MDIsMTAgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZQogICAgIGZyYW1lLT5kaWRG
aW5pc2hMb2FkKCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAg
IGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKLSAgICAgICAgaWYgKGlzTWFpbkZyYW1lKQotICAg
ICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hOYXZpZ2F0aW9uKCp0aGlzLCBu
YXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9IGVsc2UKKyAgICBpZiAobV9sb2FkZXJDbGll
bnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaW5pc2hMb2FkRm9yRnJhbWUoKnRoaXMs
ICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxzZSBpZiAoaXNNYWluRnJh
bWUpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmluaXNoTmF2aWdhdGlvbigqdGhp
cywgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICBpZiAoaXNNYWluRnJhbWUpIHsKICAg
ICAgICAgcmVwb3J0UGFnZUxvYWRSZXN1bHQoKTsKQEAgLTM3NzUsMTEgKzM3NDgsMTAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodQogICAgIGZyYW1lLT5kaWRGYWls
TG9hZCgpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBpZiAo
bV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkK
LSAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJy
b3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0g
ZWxzZQorICAgIGlmIChtX2xvYWRlckNsaWVudCkKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRp
ZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQo
KSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAg
ICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0aGlz
LCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIGlmIChpc01h
aW5GcmFtZSkgewogICAgICAgICByZXBvcnRQYWdlTG9hZFJlc3VsdChlcnJvcik7CkBAIC0zODE3
LDcgKzM3ODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhCiAg
ICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKIAogICAgIFNhbWVEb2N1bWVudE5h
dmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlID0gc3RhdGljX2Nhc3Q8U2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGU+KG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKTsKLSAgICBpZiAo
bV9uYXZpZ2F0aW9uQ2xpZW50ICYmIGlzTWFpbkZyYW1lKQorICAgIGlmIChpc01haW5GcmFtZSkK
ICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCp0
aGlzLCBuYXZpZ2F0aW9uLmdldCgpLCBuYXZpZ2F0aW9uVHlwZSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICBpZiAo
aXNNYWluRnJhbWUpCkBAIC0zODY4LDcgKzM4NDAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Rmlyc3RWaXN1YWxseU5vbkVtCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3Mt
PndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgbV9s
b2FkZXJDbGllbnQtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKCp0aGlz
LCAqZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX2xvYWRlckNsaWVudCkKKyAgICAgICAgbV9sb2Fk
ZXJDbGllbnQtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKCp0aGlzLCAq
ZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICBt
X3BhZ2VDbGllbnQuZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yTWFpbkZyYW1lKCk7
CkBAIC0zODgzLDEwICszODU2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWFjaExheW91
dE1pbGVzdG8KIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGll
bnQpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9u
Q2xpZW50LT5yZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZSgqdGhpcywgc3RhdGljX2Nhc3Q8TGF5
b3V0TWlsZXN0b25lcz4obGF5b3V0TWlsZXN0b25lcykpOwotICAgIGVsc2UKKyAgICBpZiAobV9s
b2FkZXJDbGllbnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZWFjaExheW91dE1pbGVz
dG9uZSgqdGhpcywgc3RhdGljX2Nhc3Q8TGF5b3V0TWlsZXN0b25lcz4obGF5b3V0TWlsZXN0b25l
cykpOworICAgIGVsc2UKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5yZW5kZXJpbmdQcm9n
cmVzc0RpZENoYW5nZSgqdGhpcywgc3RhdGljX2Nhc3Q8TGF5b3V0TWlsZXN0b25lcz4obGF5b3V0
TWlsZXN0b25lcykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGlzcGxheUluc2VjdXJl
Q29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKQEAgLTM5MDAsOCArMzg3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREaXNwbGF5SW5z
ZWN1cmVDb24KICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkRGlzcGxheU9yUnVuSW5zZWN1cmVDb250
ZW50KHRyYW5zYWN0aW9uKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwog
Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCp0aGlzLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKnRoaXMsIG1fcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMzkxNSw4ICszODg3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudAogICAgIG1fcGFnZUxvYWRT
dGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwogICAgIG1f
cGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xp
ZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFJ1bkluc2VjdXJlQ29udGVudCgq
dGhpcywgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKSk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSdW5JbnNlY3VyZUNvbnRl
bnQoKnRoaXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGV0ZWN0WFNTRm9y
RnJhbWUodWludDY0X3QsIGNvbnN0IFVzZXJEYXRhJikKQEAgLTQwNDEsNyArNDAxMiw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlID0gd2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5sb2dG
cmFtZU5hdmlnYXRpb24oKmZyYW1lLCBVUkwoVVJMKCksIG1fcGFnZUxvYWRTdGF0ZS51cmwoKSks
IHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UudXJsKCkpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlv
bkNsaWVudCkgeworICAgIGlmIChtX2xvYWRlckNsaWVudCkKKyAgICAgICAgbV9wb2xpY3lDbGll
bnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIGZyYW1lLCBXVEZNb3Zl
KG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxzZSB7
CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb25GcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKCpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKTsKICAgICAg
ICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87CiAgICAgICAgIGlmICgh
ZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09IGZyYW1lKQpAQCAtNDA1NSw4ICs0MDI4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgICAgICBhdXRv
IG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3Zl
KG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5hdGlv
bkZyYW1lSW5mby5wdHIoKSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcmlnaW5h
bFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVk
QWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKIAogICAgICAgICBtX25hdmlnYXRpb25D
bGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbiksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRo
aXMsIGZyYW1lLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFt
ZSwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGxpc3RlbmVyKSwg
bV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CisgICAgfQogCiAgICAgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdh
dGlvblBvbGljeURlY2lzaW9uID0gZmFsc2U7CiB9CkBAIC00MDg4LDcgKzQwNjAsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAgICAgICAgIH0pKTsKICAgICB9
LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vKSk7CiAKLSAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KSB7CisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQorICAgICAgICBtX3BvbGlj
eUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCp0aGlzLCAqZnJhbWUsIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUsIFdURk1vdmUobGlzdGVuZXIp
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKKyAgICBlbHNlIHsKICAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3Vy
Y2VGcmFtZUluZm87CiAgICAgICAgIGlmIChmcmFtZSkKICAgICAgICAgICAgIHNvdXJjZUZyYW1l
SW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCkpOwpAQCAtNDA5OSw4ICs0MDczLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbgogCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgbmF2aWdhdGlvbkFjdGlvbi5n
ZXQoKSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCi0gICAgfSBlbHNlCi0gICAgICAgIG1f
cG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oKnRoaXMsICpmcmFt
ZSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZyYW1lTmFtZSwgV1RGTW92ZShsaXN0
ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOworICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29s
IGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQpAQCAtNDEyNCwxMSArNDA5NywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uCiAgICAgICAgIH0pKTsKICAgICB9LCBTaG91bGRFeHBlY3RTYWZlQnJv
d3NpbmdSZXN1bHQ6Ok5vKSk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAg
aWYgKG1fcG9saWN5Q2xpZW50KQorICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1F
VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgewogICAgICAgICBhdXRv
IG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlP
cmlnaW4oKSkuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUpOwogICAg
ICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZSgqdGhpcywgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKGxpc3RlbmVyKSwg
bV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lG
b3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVU
eXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgfQogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTQxMzgsNyAr
NDExMiw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGkKICAgICBX
ZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAg
TUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBtX3BvbGljeUNsaWVudC0+dW5hYmxlVG9JbXBs
ZW1lbnRQb2xpY3koKnRoaXMsICpmcmFtZSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX3BvbGlj
eUNsaWVudCkKKyAgICAgICAgbV9wb2xpY3lDbGllbnQtPnVuYWJsZVRvSW1wbGVtZW50UG9saWN5
KCp0aGlzLCAqZnJhbWUsIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogLy8gRm9ybUNsaWVudApAQCAtNDE1
OCw4ICs0MTMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NAog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNvcmU6
OlVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBpZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4m
JiBub3RpZmljYXRpb25zKQogewotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKCp0aGlzLCBX
VEZNb3ZlKHVybCksIFdURk1vdmUoaWRlbnRpZmllcnMpLCBXVEZNb3ZlKG5vdGlmaWNhdGlvbnMp
KTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbigq
dGhpcywgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKGlkZW50aWZpZXJzKSwgV1RGTW92ZShub3RpZmlj
YXRpb25zKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90
IGZyYW1lSUQpIApAQCAtNDQxNywyMiArNDM5MSwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5h
dmFpbGFibGVQbHVnaW5CdXR0CiAjaWYgRU5BQkxFKFdFQkdMKQogdm9pZCBXZWJQYWdlUHJveHk6
OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2Vi
R0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIGlmIChtX25hdmln
YXRpb25DbGllbnQpIHsKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJHTExvYWRQb2xp
Y3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIChXZWJHTExvYWRQb2xpY3kg
cG9saWN5KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90
Pihwb2xpY3kpKTsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlcGx5KHN0YXRp
Y19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVh
dGlvbikpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1
cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoV2ViR0xMb2FkUG9saWN5IHBvbGljeSkgbXV0
YWJsZSB7CisgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChV
UkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVS
TDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkg
ewotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRo
aXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIChXZWJHTExvYWRQb2xpY3kgcG9saWN5
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xp
Y3kpKTsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlcGx5KHN0YXRpY19jYXN0
PHVpbnQzMl90PihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbikp
OworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywg
dXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kpIG11
dGFibGUgeworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7Cisg
ICAgfSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCkBAIC01ODI2LDggKzU3OTQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzCiAKICAgICB1cGRhdGVC
YWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xp
ZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NEaWRCZWNvbWVVbnJlc3Bv
bnNpdmUoKnRoaXMpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVj
b21lUmVzcG9uc2l2ZSgpCkBAIC01ODM3LDggKzU4MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cHJvY2Vzc0RpZEJlY29tZVJlc3BvCiAgICAgCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlRGlzY2Fy
ZGFibGVTdGF0ZSgpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9u
YXZpZ2F0aW9uQ2xpZW50LT5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgqdGhpcyk7CisgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgqdGhpcyk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsQ2hhbmdlUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpCkBA
IC01OTEzLDEwICs1ODc5LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsb2FkQWZ0ZXJQcm9jZXNz
VGVybQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlKFBy
b2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7Ci0gICAgYm9vbCBoYW5kbGVkQnlDbGll
bnQgPSBmYWxzZTsKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBoYW5kbGVk
QnlDbGllbnQgPSBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NEaWRUZXJtaW5hdGUoKnRoaXMs
IHJlYXNvbik7Ci0KKyAgICBib29sIGhhbmRsZWRCeUNsaWVudCA9IG1fbmF2aWdhdGlvbkNsaWVu
dC0+cHJvY2Vzc0RpZFRlcm1pbmF0ZSgqdGhpcywgcmVhc29uKTsKICAgICBpZiAoIWhhbmRsZWRC
eUNsaWVudCAmJiBzaG91bGRSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbihyZWFzb24pKQog
ICAgICAgICB0cnlSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbigpOwogfQpAQCAtNjI5Nywx
MCArNjI2MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXQKICAg
ICB9CiAjZW5kaWYKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2
aWdhdGlvbkNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7Ci0gICAgZWxzZQotICAgICAgICBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS0+cGVyZm9ybURlZmF1bHRIYW5kbGluZygpOworICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGNl
ZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNh
Z2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdl
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQpAQCAtNjkwNCwxMCArNjg2NCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3
cmFwQ3J5cHRvS2V5KGNvbnN0IFYKIAogICAgIFZlY3Rvcjx1aW50OF90PiBtYXN0ZXJLZXk7CiAK
LSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChSZWZQdHI8QVBJOjpE
YXRhPiBrZXlEYXRhID0gbV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJDcnlwdG9NYXN0ZXJLZXkoKnRo
aXMpKQotICAgICAgICAgICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLnZl
Y3RvcigpOwotICAgIH0gZWxzZSBpZiAoIWdldERlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkobWFz
dGVyS2V5KSkgeworICAgIGlmIChhdXRvIGtleURhdGEgPSBtX25hdmlnYXRpb25DbGllbnQtPndl
YkNyeXB0b01hc3RlcktleSgqdGhpcykpCisgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRh
dGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKKyAgICBlbHNlIGlmICghZ2V0RGVmYXVsdFdlYkNyeXB0
b01hc3RlcktleShtYXN0ZXJLZXkpKSB7CiAgICAgICAgIHN1Y2NlZWRlZCA9IGZhbHNlOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNjkyMSwxMCArNjg4MCw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QKIAogICAgIFZlY3Rvcjx1aW50OF90PiBtYXN0ZXJL
ZXk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChSZWZQdHI8
QVBJOjpEYXRhPiBrZXlEYXRhID0gbV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJDcnlwdG9NYXN0ZXJL
ZXkoKnRoaXMpKQotICAgICAgICAgICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5j
ZSgpLnZlY3RvcigpOwotICAgIH0gZWxzZSBpZiAoIWdldERlZmF1bHRXZWJDcnlwdG9NYXN0ZXJL
ZXkobWFzdGVyS2V5KSkgeworICAgIGlmIChhdXRvIGtleURhdGEgPSBtX25hdmlnYXRpb25DbGll
bnQtPndlYkNyeXB0b01hc3RlcktleSgqdGhpcykpCisgICAgICAgIG1hc3RlcktleSA9IGtleURh
dGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKKyAgICBlbHNlIGlmICghZ2V0RGVmYXVsdFdl
YkNyeXB0b01hc3RlcktleShtYXN0ZXJLZXkpKSB7CiAgICAgICAgIHN1Y2NlZWRlZCA9IGZhbHNl
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjkzNyw5ICs2ODk1LDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0
b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50
KSB7Ci0gICAgICAgIGlmIChhdXRvIGFwaVN0cmluZyA9IG1fbmF2aWdhdGlvbkNsaWVudC0+c2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKCp0aGlzLCBrZXlTaXplSW5kZXgsIEFQSTo6
U3RyaW5nOjpjcmVhdGUoY2hhbGxlbmdlU3RyaW5nKSwgdXJsKSkKLSAgICAgICAgICAgIHJlc3Vs
dCA9IGFwaVN0cmluZy0+c3RyaW5nKCk7CisgICAgaWYgKGF1dG8gYXBpU3RyaW5nID0gbV9uYXZp
Z2F0aW9uQ2xpZW50LT5zaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoKnRoaXMsIGtl
eVNpemVJbmRleCwgQVBJOjpTdHJpbmc6OmNyZWF0ZShjaGFsbGVuZ2VTdHJpbmcpLCB1cmwpKSB7
CisgICAgICAgIHJlc3VsdCA9IGFwaVN0cmluZy0+c3RyaW5nKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgcmVzdWx0ID0gV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLCB1cmwpOwpAQCAtNzA2MSw4ICs3
MDE4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkQgogICAgIG1f
aXNTaG93aW5nTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCA9IHRydWU7CiAgICAgbV9wYWdlQ2xp
ZW50Lm5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4oKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25D
bGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkQmVnaW5OYXZpZ2F0aW9uR2Vz
dHVyZSgqdGhpcyk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRCZWdpbk5hdmlnYXRpb25H
ZXN0dXJlKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJl
V2lsbEVuZChib29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkK
QEAgLTcwNzEsOCArNzAyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVy
ZVdpbGwKIAogICAgIG1fcGFnZUNsaWVudC5uYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQod2lsbE5h
dmlnYXRlLCBpdGVtKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+d2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlKCp0aGlzLCB3aWxsTmF2
aWdhdGUsIGl0ZW0pOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2lsbEVuZE5hdmlnYXRpb25H
ZXN0dXJlKCp0aGlzLCB3aWxsTmF2aWdhdGUsIGl0ZW0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQoYm9vbCB3aWxsTmF2aWdhdGUsIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0mIGl0ZW0pCkBAIC03MDgxLDggKzcwMzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFCiAKICAgICBtX3BhZ2VDbGllbnQubmF2aWdhdGlvbkdl
c3R1cmVEaWRFbmQod2lsbE5hdmlnYXRlLCBpdGVtKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25D
bGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRW5kTmF2aWdhdGlvbkdlc3R1
cmUoKnRoaXMsIHdpbGxOYXZpZ2F0ZSwgaXRlbSk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
aWRFbmROYXZpZ2F0aW9uR2VzdHVyZSgqdGhpcywgd2lsbE5hdmlnYXRlLCBpdGVtKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKCkKQEAgLTcxMDUsOCAr
NzA1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVNuYXAKIAogICAg
IG1fcGFnZUNsaWVudC5kaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCk7CiAKLSAg
ICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRp
ZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKnRoaXMpOworICAgIG1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgqdGhpcyk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZShNZWRpYVByb2R1Y2Vy
OjpNZWRpYVN0YXRlRmxhZ3MgbmV3U3RhdGUsIHVpbnQ2NF90IHNvdXJjZUVsZW1lbnRJRCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzUzOTgp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtOTQsNiArOTQsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC00MjQsNyArNDI1LDcgQEAgcHVibGljOgogICAgIEFQSTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQqIGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkgeyByZXR1cm4gbV9kaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5nZXQoKTsgfQogICAgIHZvaWQgc2V0RGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+JiYp
OwogICAgIHZvaWQgc2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50
PiYmKTsKLSAgICB2b2lkIHNldE5hdmlnYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
TmF2aWdhdGlvbkNsaWVudD4mJik7CisgICAgdm9pZCBzZXROYXZpZ2F0aW9uQ2xpZW50KFVuaXF1
ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpIaXN0b3J5Q2xpZW50PiYmKTsKICAgICB2b2lkIHNldExv
YWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMb2FkZXJDbGllbnQ+JiYpOwogICAgIHZv
aWQgc2V0UG9saWN5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4mJik7
CkBAIC0xODM2LDcgKzE4MzcsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQ
STo6TG9hZGVyQ2xpZW50PiBtX2xvYWRlckNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpQb2xpY3lDbGllbnQ+IG1fcG9saWN5Q2xpZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6
Ok5hdmlnYXRpb25DbGllbnQ+IG1fbmF2aWdhdGlvbkNsaWVudDsKKyAgICBVbmlxdWVSZWY8QVBJ
OjpOYXZpZ2F0aW9uQ2xpZW50PiBtX25hdmlnYXRpb25DbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFQSTo6SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiBtX2ljb25Mb2FkaW5nQ2xpZW50OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+IG1fZm9ybUNsaWVudDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjM1Mzk4KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjIyMCw4ICsyMjIwLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChX
S1BhZwogCiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkgPSB0b0ltcGwocGFnZVJlZik7
CiAKLSAgICBhdXRvIG5hdmlnYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRp
b25DbGllbnQ+KHdrQ2xpZW50KTsKLSAgICB3ZWJQYWdlUHJveHktPnNldE5hdmlnYXRpb25DbGll
bnQoV1RGTW92ZShuYXZpZ2F0aW9uQ2xpZW50KSk7CisgICAgd2ViUGFnZVByb3h5LT5zZXROYXZp
Z2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8TmF2aWdhdGlvbkNsaWVudD4od2tDbGllbnQpKTsK
IH0KIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNj
cmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHJldmlzaW9uIDIzNTM5OCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKIEBjbGFzcyBXS1dlYlZp
ZXc7CkBAIC02MSw3ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBOYXZpZ2F0aW9uU3Rh
dGUmIGZyb21XZWJQYWdlKFdlYlBhZ2VQcm94eSYpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFQ
STo6TmF2aWdhdGlvbkNsaWVudD4gY3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpOworICAgIFVuaXF1
ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IGNyZWF0ZU5hdmlnYXRpb25DbGllbnQoKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpIaXN0b3J5Q2xpZW50PiBjcmVhdGVIaXN0b3J5Q2xpZW50
KCk7CiAKICAgICBSZXRhaW5QdHI8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiA+IG5hdmlnYXRp
b25EZWxlZ2F0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQkocmV2aXNpb24gMjM1Mzk4KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEs
OSArMTIxLDkgQEAgTmF2aWdhdGlvblN0YXRlJiBOYXZpZ2F0aW9uU3RhdGU6OmZyb21XZQogICAg
IHJldHVybiAqbmF2aWdhdGlvblN0YXRlcygpLmdldCgmd2ViUGFnZVByb3h5KTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gTmF2aWdhdGlvblN0YXRlOjpjcmVh
dGVOYXZpZ2F0aW9uQ2xpZW50KCkKK1VuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IE5h
dmlnYXRpb25TdGF0ZTo6Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TmF2aWdhdGlvbkNsaWVudD4oKnRoaXMpOworICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPE5hdmlnYXRpb25DbGllbnQ+KCp0aGlzKTsKIH0KICAgICAKIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6Okhpc3RvcnlDbGllbnQ+IE5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlSGlzdG9yeUNs
aWVudCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349925</attachid>
            <date>2018-09-17 13:11:19 -0700</date>
            <delta_ts>2018-09-17 13:31:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189012-20180917131118.patch</filename>
            <type>text/plain</type>
            <size>31670</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYwNzgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA5LTE3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXZWJQYWdl
UHJveHkgYWx3YXlzIGhhdmUgYSBBUEk6Ok5hdmlnYXRpb25DbGllbnQgaW5zdGVhZCBvZiBhbHdh
eXMgaGF2aW5nIGEgQVBJOjpMb2FkZXJDbGllbnQgYW5kIEFQSTo6UG9saWN5Q2xpZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpO
YXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TmF2aWdhdGlv
bkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TG9hZGVyQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQb2xpY3lDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250
ZW50Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEJl
Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVdp
bGxFbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJl
RGlkRW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVy
ZVNuYXBzaG90V2FzUmVtb3ZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorCiAyMDE4LTA5LTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRXhwb3NlIFhQQ1NlcnZpY2VNYWluIGluIGEgV2ViUHJvY2VzcyBoZWFk
ZXIgcmF0aGVyIHRoYW4gV0tQcm9jZXNzUG9vbApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzYwNzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODAsOCArMzgwLDcg
QEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUAogV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNv
bmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQobWFrZVdlYWtQdHIocGFnZUNsaWVudCkp
CiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKLSAgICAsIG1f
bG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMb2FkZXJDbGllbnQ+KCkpCi0gICAg
LCBtX3BvbGljeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6UG9saWN5Q2xpZW50PigpKQor
ICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xp
ZW50PigpKQogICAgICwgbV9pY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SWNvbkxvYWRpbmdDbGllbnQ+KCkpCiAgICAgLCBtX2Zvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkZvcm1DbGllbnQ+KCkpCiAgICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpVSUNsaWVudD4oKSkKQEAgLTU2NywyOCArNTY2LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRIaXN0b3J5Q2xpZW50KHN0ZDoKICAgICBtX2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhp
c3RvcnlDbGllbnQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0TmF2aWdhdGlvbkNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiYmIG5hdmlnYXRpb25DbGll
bnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TmF2aWdhdGlvbkNsaWVudChVbmlxdWVSZWY8QVBJ
OjpOYXZpZ2F0aW9uQ2xpZW50PiYmIG5hdmlnYXRpb25DbGllbnQpCiB7CiAgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50ID0gV1RGTW92ZShuYXZpZ2F0aW9uQ2xpZW50KTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldExvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMb2FkZXJDbGllbnQ+
JiYgbG9hZGVyQ2xpZW50KQogewotICAgIGlmICghbG9hZGVyQ2xpZW50KSB7Ci0gICAgICAgIG1f
bG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxvYWRlckNsaWVudD4oKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIG1fbG9hZGVyQ2xpZW50ID0gV1RGTW92ZShsb2Fk
ZXJDbGllbnQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UG9saWN5Q2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4mJiBwb2xpY3lDbGllbnQpCiB7Ci0gICAgaWYg
KCFwb2xpY3lDbGllbnQpIHsKLSAgICAgICAgbV9wb2xpY3lDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6UG9saWN5Q2xpZW50PigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
bV9wb2xpY3lDbGllbnQgPSBXVEZNb3ZlKHBvbGljeUNsaWVudCk7CiB9CiAKQEAgLTkwOSw5ICs4
OTgsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgcmVzZXRTdGF0ZShSZXNl
dFN0YXRlUmVhc29uOjpQYWdlSW52YWxpZGF0ZWQpOwogCi0gICAgbV9sb2FkZXJDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9hZGVyQ2xpZW50PigpOwotICAgIG1fbmF2aWdhdGlvbkNs
aWVudCA9IG51bGxwdHI7Ci0gICAgbV9wb2xpY3lDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6UG9saWN5Q2xpZW50PigpOworICAgIG1fbG9hZGVyQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBt
X25hdmlnYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4o
KTsKKyAgICBtX3BvbGljeUNsaWVudCA9IG51bGxwdHI7CiAgICAgbV9pY29uTG9hZGluZ0NsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKICAgICBtX2Zv
cm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKICAgICBtX3Vp
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwpAQCAtMTI4NCw3ICsx
MjczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUJhY2tGb3J3YXJkTAogewogICAg
IFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKLSAgICBpZiAo
IW1fbmF2aWdhdGlvbkNsaWVudCB8fCAhbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QoKnRoaXMsIGFkZGVkLCByZW1vdmVkKSkKKyAgICBpZiAoIW1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCp0aGlzLCBhZGRlZCwgcmVtb3ZlZCkg
JiYgbV9sb2FkZXJDbGllbnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QoKnRoaXMsIGFkZGVkLCBXVEZNb3ZlKHJlbW92ZWQpKTsKIAogICAgIGF1dG8g
dHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKQEAgLTEyOTcsMTAg
KzEyODYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbEdvVG9CYWNrRm9yd2FyZExpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIAotICAgIGlm
IChhdXRvKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1Gb3JJRChpdGVtSUQpKSB7Ci0g
ICAgICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgICAgICBtX25hdmlnYXRpb25D
bGllbnQtPndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSgqdGhpcywgKml0ZW0sIGluUGFnZUNh
Y2hlLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKLSAgICB9CisgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlz
dC0+aXRlbUZvcklEKGl0ZW1JRCkpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2lsbEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtKCp0aGlzLCAqaXRlbSwgaW5QYWdlQ2FjaGUsIG1fcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwog
fQogCiBib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJ
dGVtSW5MaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCkBAIC0yMjA3LDEyICsyMTk0
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKGNvbnN0IFN0cmkKICAgICB9Owog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAg
ICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQoKnRoaXMs
IHN0YXRpY19jYXN0PFBsdWdpbk1vZHVsZUxvYWRQb2xpY3k+KHBsdWdpbkxvYWRQb2xpY3kpLCBw
bHVnaW5JbmZvcm1hdGlvbi5nZXQoKSwgV1RGTW92ZShmaW5kUGx1Z2luQ29tcGxldGlvbikpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
ZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkKCp0aGlzLCBzdGF0aWNfY2FzdDxQbHVnaW5Nb2R1bGVM
b2FkUG9saWN5PihwbHVnaW5Mb2FkUG9saWN5KSwgcGx1Z2luSW5mb3JtYXRpb24uZ2V0KCksIFdU
Rk1vdmUoZmluZFBsdWdpbkNvbXBsZXRpb24pKTsKKyNlbHNlCiAgICAgZmluZFBsdWdpbkNvbXBs
ZXRpb24ocGx1Z2luTG9hZFBvbGljeSwgeyB9KTsKKyNlbmRpZgogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0zNTAzLDExICszNDg4LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG8KICAgICBmcmFtZS0+ZGlkU3RhcnRQcm92
aXNpb25hbExvYWQodXJsKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7
Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoZnJhbWUtPmlzTWFp
bkZyYW1lKCkpCi0gICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFN0YXJ0UHJvdmlz
aW9uYWxOYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9IGVs
c2UKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0
KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOworICAgIGVsc2UgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCp0aGlzLCBu
YXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMzUzNSwxMSArMzUxOSwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyCiAgICAgZnJhbWUtPmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChyZXF1ZXN0LnVybCgpKTsKIAogICAgIG1fcGFn
ZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkg
ewotICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdh
dGlvbigqdGhpcywgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCisgICAgaWYg
KG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgZnJhbWUt
PmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9uLmdldCgpIDogbnVsbHB0ciwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAg
ZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCp0aGlz
LCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIHVybCwgZG91YmxlIGRlbGF5KQpAQCAtMzU0OSwxMCArMzUzMiw4IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGkKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9
IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7
CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNN
YWluRnJhbWUoKSkKLSAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdCgqdGhpcywgdXJsLCBkZWxheSk7Ci0gICAgfQorICAgIGlmIChmcmFtZS0+
aXNNYWluRnJhbWUoKSkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT53aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KCp0aGlzLCB1cmwsIGRlbGF5KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKQEAgLTM1
NjIsMTAgKzM1NDMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJl
CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQp
OwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgewotICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRpZENhbmNlbENsaWVudFJlZGlyZWN0KCp0aGlzKTsKLSAgICB9Cisg
ICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQt
PmRpZENhbmNlbENsaWVudFJlZGlyZWN0KCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QsIFdlYkNvcmU6OlVSTCYmIHVybCkKQEAgLTM2MjEsMTUgKzM2MDAsMTQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYQogICAgIEFTU0VSVCghbV9mYWlsaW5nUHJv
dmlzaW9uYWxMb2FkVVJMKTsKICAgICBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwgPSBwcm92
aXNpb25hbFVSTDsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKLSAgICAgICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIG5hdmln
YXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICAgICAgZWxzZSB7CisgICAgaWYgKG1fbG9h
ZGVyQ2xpZW50KQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9y
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKKyAgICBlbHNlIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgbV9u
YXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0
aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBHZXQgdGhlIG1haW4gZnJhbWUncyBjdXJyZW50IG5hdmln
YXRpb24uCiAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25h
bExvYWRJblN1YmZyYW1lV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmln
aW4sIG51bGxwdHIsIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAg
ICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1l
KCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICB9CiAK
ICAgICBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwgPSB7IH07CiB9CkBAIC0zNzIyLDExICsz
NzAwLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUKICNlbmRp
ZgogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAg
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkQ29tbWl0TmF2aWdhdGlvbigqdGhpcywgbmF2
aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJE
YXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCisgICAgaWYgKG1fbG9hZGVyQ2xpZW50
KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKCp0aGlzLCAq
ZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgaWYgKGZyYW1lLT5pc01h
aW5GcmFtZSgpKQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENvbW1pdE5hdmlnYXRp
b24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIGludmFs
aWRhdGVBbGxBdHRhY2htZW50cygpOwpAQCAtMzc1MCw3ICszNzI4LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUo
KSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5hdmlnYXRpb24gPSAmbmF2aWdhdGlvblN0YXRl
KCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkp
CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmluaXNoRG9jdW1lbnRMb2FkKCp0aGlz
LCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIApAQCAtMzc4MiwxMSArMzc2MCwxMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lCiAgICAgZnJhbWUtPmRpZEZp
bmlzaExvYWQoKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAg
aWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoaXNNYWluRnJhbWUpCi0gICAg
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZpbmlzaE5hdmlnYXRpb24oKnRoaXMsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0gZWxzZQorICAgIGlmIChtX2xvYWRlckNsaWVu
dCkKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpbmlzaExvYWRGb3JGcmFtZSgqdGhpcywg
KmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlIGlmIChpc01haW5GcmFt
ZSkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hOYXZpZ2F0aW9uKCp0aGlz
LCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIGlmIChpc01haW5GcmFtZSkgewogICAg
ICAgICByZXBvcnRQYWdlTG9hZFJlc3VsdCgpOwpAQCAtMzgyOSwxMSArMzgwNiwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1CiAgICAgZnJhbWUtPmRpZEZhaWxM
b2FkKCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQot
ICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJv
cigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBl
bHNlCisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlk
RmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgp
LCBlcnJvciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7CisgICAgZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAg
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMs
ICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgaWYgKGlzTWFp
bkZyYW1lKSB7CiAgICAgICAgIHJlcG9ydFBhZ2VMb2FkUmVzdWx0KGVycm9yKTsKQEAgLTM4NzEs
NyArMzg0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2EKICAg
ICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwogCiAgICAgU2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUgPSBzdGF0aWNfY2FzdDxTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZT4ob3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpOwotICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQgJiYgaXNNYWluRnJhbWUpCisgICAgaWYgKGlzTWFpbkZyYW1lKQog
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oKnRo
aXMsIG5hdmlnYXRpb24uZ2V0KCksIG5hdmlnYXRpb25UeXBlLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIGlmIChp
c01haW5GcmFtZSkKQEAgLTM5MzcsMTAgKzM5MTMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFJlYWNoTGF5b3V0TWlsZXN0bwogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPnJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKCp0aGlzLCBzdGF0
aWNfY2FzdDxMYXlvdXRNaWxlc3RvbmVzPihsYXlvdXRNaWxlc3RvbmVzKSk7Ci0gICAgZWxzZQor
ICAgIGlmIChtX2xvYWRlckNsaWVudCkKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlYWNo
TGF5b3V0TWlsZXN0b25lKCp0aGlzLCBzdGF0aWNfY2FzdDxMYXlvdXRNaWxlc3RvbmVzPihsYXlv
dXRNaWxlc3RvbmVzKSk7CisgICAgZWxzZQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJl
bmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKCp0aGlzLCBzdGF0aWNfY2FzdDxMYXlvdXRNaWxlc3Rv
bmVzPihsYXlvdXRNaWxlc3RvbmVzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQpAQCAtMzk1NCw4ICszOTMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZERpc3BsYXlJbnNlY3VyZUNvbgogICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWREaXNwbGF5T3JSdW5J
bnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRD
aGFuZ2VzKCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKnRoaXMsIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgqdGhpcywgbV9w
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0zOTY5LDgg
KzM5NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50CiAgICAg
bV9wYWdlTG9hZFN0YXRlLmRpZERpc3BsYXlPclJ1bkluc2VjdXJlQ29udGVudCh0cmFuc2FjdGlv
bik7CiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKIAotICAgIGlmIChtX25h
dmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUnVuSW5zZWN1
cmVDb250ZW50KCp0aGlzLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFJ1bklu
c2VjdXJlQ29udGVudCgqdGhpcywgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRE
ZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRfdCwgY29uc3QgVXNlckRhdGEmKQpAQCAtNDA3Nyw3ICs0
MDUxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUtPmxvZ0ZyYW1lTmF2aWdhdGlvbigqZnJhbWUsIFVSTChVUkwoKSwgbV9wYWdlTG9hZFN0
YXRlLnVybCgpKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS51cmwoKSk7CiAKLSAgICBpZiAo
bV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAgaWYgKG1fcG9saWN5Q2xpZW50KQorICAgICAgICBt
X3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgZnJh
bWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmln
aW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
KyAgICBlbHNlIHsKICAgICAgICAgYXV0byBkZXN0aW5hdGlvbkZyYW1lSW5mbyA9IEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2lu
KCkpOwogICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKICAg
ICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5nRnJhbWUgPT0gZnJhbWUpCkBAIC00MDkx
LDggKzQwNjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAg
ICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCks
IGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVxdWVz
dCksIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVz
ZXJJbml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOwogCiAgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywg
V1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAg
IH0gZWxzZQotICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbigqdGhpcywgZnJhbWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmln
aW5hdGluZ0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
bGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKKyAgICB9CiAKICAgICBtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJ
bk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBmYWxzZTsKIH0KQEAgLTQxMjQsNyArNDA5
OSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW4KICAgICAgICAg
fSkpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8pKTsKIAotICAg
IGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKKyAgICBpZiAobV9wb2xpY3lDbGllbnQpCisgICAg
ICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oKnRoaXMs
ICpmcmFtZSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZyYW1lTmFtZSwgV1RGTW92
ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8QVBJOjpGcmFt
ZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKICAgICAgICAgaWYgKGZyYW1lKQogICAgICAgICAgICAg
c291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2Vj
dXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CkBAIC00MTM1LDggKzQxMTIsOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAKICAgICAgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBuYXZpZ2F0
aW9uQWN0aW9uLmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKLSAgICB9IGVsc2UK
LSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigq
dGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBX
VEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgfQorICAgICAgICAKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtNDE2MCwxMSArNDEzNywxMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uCiAgICAgICAgIH0pKTsKICAgICB9
LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vKSk7CiAKLSAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KSB7CisgICAgaWYgKG1fcG9saWN5Q2xpZW50KQorICAgICAgICBtX3BvbGlj
eUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2Us
IHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAg
IGVsc2UgewogICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlv
blJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2Vj
dXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBj
YW5TaG93TUlNRVR5cGUpOwogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhpcywgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2Up
LCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fcG9saWN5
Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwg
cmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAg
fQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKQEAgLTQxOTQsOCArNDE3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsU3Vi
bWl0Rm9ybSh1aW50NjQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlm
aWNhdGlvbihXZWJDb3JlOjpVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMs
IFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykKIHsKLSAgICBpZiAobV9uYXZpZ2F0aW9u
Q2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmNvbnRlbnRSdWxlTGlzdE5vdGlm
aWNhdGlvbigqdGhpcywgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKGlkZW50aWZpZXJzKSwgV1RGTW92
ZShub3RpZmljYXRpb25zKSk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24oKnRoaXMsIFdURk1vdmUodXJsKSwgV1RGTW92ZShpZGVudGlmaWVycyks
IFdURk1vdmUobm90aWZpY2F0aW9ucykpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUm
IHN0b3JlLCB1aW50NjRfdCBmcmFtZUlEKSAKQEAgLTQ0NTUsMjIgKzQ0MzIsMTYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dAogI2lmIEVOQUJMRShXRUJHTCkKIHZv
aWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsK
LSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAo
V2ViR0xMb2FkUG9saWN5IHBvbGljeSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICByZXBseShzdGF0
aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7Ci0gICAgICAgIH0pOwotICAgIH0gZWxzZQotICAg
ICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
OjpXZWJHTEFsbG93Q3JlYXRpb24pKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPndlYkdMTG9h
ZFBvbGljeSgqdGhpcywgdXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFdlYkdMTG9hZFBv
bGljeSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJf
dD4ocG9saWN5KSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNvbHZlV2Vi
R0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZl
V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIGlmIChtX25h
dmlnYXRpb25DbGllbnQpIHsKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5yZXNvbHZlV2Vi
R0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoV2ViR0xM
b2FkUG9saWN5IHBvbGljeSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICByZXBseShzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ocG9saWN5KSk7Ci0gICAgICAgIH0pOwotICAgIH0gZWxzZQotICAgICAgICBy
ZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJH
TEFsbG93Q3JlYXRpb24pKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPnJlc29sdmVXZWJHTExv
YWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIChXZWJHTExvYWRQ
b2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKKyAgICAgICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHBvbGljeSkpOworICAgIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApAQCAt
NTg3MCw4ICs1ODQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJl
cwogCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVTdGF0ZSgpOwogCi0gICAgaWYg
KG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5wcm9jZXNz
RGlkQmVjb21lVW5yZXNwb25zaXZlKCp0aGlzKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPnBy
b2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQpAQCAtNTg4MSw4ICs1ODUxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwbwogICAgIAogICAgIHVwZGF0ZUJh
Y2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGll
bnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNp
dmUoKnRoaXMpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0RpZEJlY29tZVJlc3Bv
bnNpdmUoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbENoYW5nZVByb2Nlc3NJ
c1Jlc3BvbnNpdmUoKQpAQCAtNTk1OCwxMCArNTkyNywxMCBAQCBzdGF0aWMgYm9vbCBzaG91bGRS
ZWxvYWRBZnRlclByb2Nlc3NUZXJtCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hQcm9jZXNz
RGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7CiAgICAgYm9v
bCBoYW5kbGVkQnlDbGllbnQgPSBmYWxzZTsKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQor
ICAgIGlmIChtX2xvYWRlckNsaWVudCkKKyAgICAgICAgaGFuZGxlZEJ5Q2xpZW50ID0gcmVhc29u
ICE9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQgJiYgbV9sb2Fk
ZXJDbGllbnQtPnByb2Nlc3NEaWRDcmFzaCgqdGhpcyk7CisgICAgZWxzZQogICAgICAgICBoYW5k
bGVkQnlDbGllbnQgPSBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NEaWRUZXJtaW5hdGUoKnRo
aXMsIHJlYXNvbik7Ci0gICAgZWxzZSBpZiAocmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpCi0gICAgICAgIGhhbmRsZWRCeUNsaWVudCA9IG1fbG9h
ZGVyQ2xpZW50LT5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOwogCiAgICAgaWYgKCFoYW5kbGVkQnlD
bGllbnQgJiYgc2hvdWxkUmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24ocmVhc29uKSkKICAg
ICAgICAgdHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24oKTsKQEAgLTYzNDUsMTAgKzYz
MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0CiAgICAgfQog
I2VuZGlmCiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwotICAgIGVsc2UKLSAgICAgICAgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UtPnBlcmZvcm1EZWZhdWx0SGFuZGxpbmcoKTsKKyAgICBtX25hdmlnYXRpb25D
bGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1
aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHkm
JiByZXBseSkKQEAgLTY5NTIsMTMgKzY5MTgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d3JhcENy
eXB0b0tleShjb25zdCBWCiAKICAgICBWZWN0b3I8dWludDhfdD4gbWFzdGVyS2V5OwogCi0gICAg
aWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoUmVmUHRyPEFQSTo6RGF0YT4g
a2V5RGF0YSA9IG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkK
LSAgICAgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3Io
KTsKLSAgICB9IGVsc2UgaWYgKCFnZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KG1hc3Rlcktl
eSkpIHsKLSAgICAgICAgc3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgaWYgKFJlZlB0cjxBUEk6OkRhdGE+IGtleURhdGEgPSBtX25hdmlnYXRpb25DbGllbnQt
PndlYkNyeXB0b01hc3RlcktleSgqdGhpcykpCisgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEt
PmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKIAogICAgIHN1Y2NlZWRlZCA9IHdyYXBTZXJpYWxp
emVkQ3J5cHRvS2V5KG1hc3RlcktleSwga2V5LCB3cmFwcGVkS2V5KTsKIH0KQEAgLTY5NjksMTMg
KzY5MzAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0CiAKICAg
ICBWZWN0b3I8dWludDhfdD4gbWFzdGVyS2V5OwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgewotICAgICAgICBpZiAoUmVmUHRyPEFQSTo6RGF0YT4ga2V5RGF0YSA9IG1fbmF2aWdhdGlv
bkNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkKLSAgICAgICAgICAgIG1hc3Rlcktl
eSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKLSAgICB9IGVsc2UgaWYgKCFn
ZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KG1hc3RlcktleSkpIHsKLSAgICAgICAgc3VjY2Vl
ZGVkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKFJlZlB0cjxBUEk6
OkRhdGE+IGtleURhdGEgPSBtX25hdmlnYXRpb25DbGllbnQtPndlYkNyeXB0b01hc3RlcktleSgq
dGhpcykpCisgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0
b3IoKTsKIAogICAgIHN1Y2NlZWRlZCA9IHVud3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXkobWFzdGVy
S2V5LCB3cmFwcGVkS2V5LCBrZXkpOwogfQpAQCAtNjk4NSwxMiArNjk0MSw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGEKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgewotICAgICAgICBpZiAoYXV0byBhcGlTdHJpbmcgPSBtX25hdmlnYXRpb25DbGllbnQtPnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZygqdGhpcywga2V5U2l6ZUluZGV4LCBBUEk6
OlN0cmluZzo6Y3JlYXRlKGNoYWxsZW5nZVN0cmluZyksIHVybCkpCi0gICAgICAgICAgICByZXN1
bHQgPSBhcGlTdHJpbmctPnN0cmluZygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHJl
c3VsdCA9IFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXpl
SW5kZXgsIGNoYWxsZW5nZVN0cmluZywgdXJsKTsKKyAgICBpZiAoYXV0byBhcGlTdHJpbmcgPSBt
X25hdmlnYXRpb25DbGllbnQtPnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZygqdGhp
cywga2V5U2l6ZUluZGV4LCBBUEk6OlN0cmluZzo6Y3JlYXRlKGNoYWxsZW5nZVN0cmluZyksIHVy
bCkpCisgICAgICAgIHJlc3VsdCA9IGFwaVN0cmluZy0+c3RyaW5nKCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjphZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKQEAgLTcxMDksOCArNzA2MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpu
YXZpZ2F0aW9uR2VzdHVyZURpZEIKICAgICBtX2lzU2hvd2luZ05hdmlnYXRpb25HZXN0dXJlU25h
cHNob3QgPSB0cnVlOwogICAgIHBhZ2VDbGllbnQoKS5uYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2lu
KCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25D
bGllbnQtPmRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUoKnRoaXMpOworICAgIG1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQoYm9vbCB3aWxsTmF2aWdhdGUsIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCkBAIC03MTE5LDggKzcwNzAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bmF2aWdhdGlvbkdlc3R1cmVXaWxsCiAKICAgICBwYWdlQ2xpZW50KCkubmF2
aWdhdGlvbkdlc3R1cmVXaWxsRW5kKHdpbGxOYXZpZ2F0ZSwgaXRlbSk7CiAKLSAgICBpZiAobV9u
YXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPndpbGxFbmROYXZp
Z2F0aW9uR2VzdHVyZSgqdGhpcywgd2lsbE5hdmlnYXRlLCBpdGVtKTsKKyAgICBtX25hdmlnYXRp
b25DbGllbnQtPndpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZSgqdGhpcywgd2lsbE5hdmlnYXRlLCBp
dGVtKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKGJv
b2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQpAQCAtNzEyOSw4
ICs3MDc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkRQogCiAg
ICAgcGFnZUNsaWVudCgpLm5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKHdpbGxOYXZpZ2F0ZSwgaXRl
bSk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25D
bGllbnQtPmRpZEVuZE5hdmlnYXRpb25HZXN0dXJlKCp0aGlzLCB3aWxsTmF2aWdhdGUsIGl0ZW0p
OworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUoKnRoaXMs
IHdpbGxOYXZpZ2F0ZSwgaXRlbSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9u
R2VzdHVyZURpZEVuZCgpCkBAIC03MTUzLDggKzcxMDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bmF2aWdhdGlvbkdlc3R1cmVTbmFwCiAKICAgICBwYWdlQ2xpZW50KCkuZGlkUmVtb3ZlTmF2aWdh
dGlvbkdlc3R1cmVTbmFwc2hvdCgpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBz
aG90KCp0aGlzKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFJlbW92ZU5hdmlnYXRpb25H
ZXN0dXJlU25hcHNob3QoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5n
TWVkaWFEaWRDaGFuZ2UoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5ld1N0YXRlLCB1
aW50NjRfdCBzb3VyY2VFbGVtZW50SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjM2MDc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDIxLDcgKzQyMiw3IEBA
IHB1YmxpYzoKICAgICBBUEk6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KiBkaWFnbm9zdGljTG9n
Z2luZ0NsaWVudCgpIHsgcmV0dXJuIG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldEZvcm1DbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6Rm9ybUNsaWVudD4mJik7Ci0gICAgdm9pZCBzZXROYXZpZ2F0aW9u
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+JiYpOworICAgIHZv
aWQgc2V0TmF2aWdhdGlvbkNsaWVudChVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiYm
KTsKICAgICB2b2lkIHNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SGlzdG9y
eUNsaWVudD4mJik7CiAgICAgdm9pZCBzZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6TG9hZGVyQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+JiYpOwpAQCAtMTgzOCw3ICsxODM5LDcgQEAgcHJpdmF0
ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxvYWRlckNsaWVudD4gbV9sb2FkZXJDbGll
bnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiBtX3BvbGljeUNsaWVu
dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiBtX25hdmlnYXRp
b25DbGllbnQ7CisgICAgVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gbV9uYXZpZ2F0
aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okhpc3RvcnlDbGllbnQ+IG1faGlz
dG9yeUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4g
bV9pY29uTG9hZGluZ0NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50
PiBtX2Zvcm1DbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHJldmlzaW9uIDIzNjA3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNTUsOCArMjI1NSw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWcKIAogICAgIFdlYlBhZ2VQcm94eSogd2Vi
UGFnZVByb3h5ID0gdG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0aW9uQ2xpZW50Pih3a0NsaWVudCk7Ci0gICAgd2Vi
UGFnZVByb3h5LT5zZXROYXZpZ2F0aW9uQ2xpZW50KFdURk1vdmUobmF2aWdhdGlvbkNsaWVudCkp
OworICAgIHdlYlBhZ2VQcm94eS0+c2V0TmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPE5h
dmlnYXRpb25DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZv
aWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCShy
ZXZpc2lvbiAyMzYwNzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiUHJv
Y2Vzc1Rocm90dGxlci5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbXBvcnQgPHd0Zi9XZWFr
T2JqQ1B0ci5oPgogCiBAY2xhc3MgV0tXZWJWaWV3OwpAQCAtNjEsNyArNjIsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgTmF2aWdhdGlvblN0YXRlJiBmcm9tV2ViUGFnZShXZWJQYWdlUHJveHkm
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IGNyZWF0ZU5h
dmlnYXRpb25DbGllbnQoKTsKKyAgICBVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiBj
cmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SGlzdG9y
eUNsaWVudD4gY3JlYXRlSGlzdG9yeUNsaWVudCgpOwogCiAgICAgUmV0YWluUHRyPGlkIDxXS05h
dmlnYXRpb25EZWxlZ2F0ZT4gPiBuYXZpZ2F0aW9uRGVsZWdhdGUoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9u
IDIzNjA3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIxLDkgKzEyMSw5IEBAIE5hdmlnYXRpb25TdGF0ZSYg
TmF2aWdhdGlvblN0YXRlOjpmcm9tV2UKICAgICByZXR1cm4gKm5hdmlnYXRpb25TdGF0ZXMoKS5n
ZXQoJndlYlBhZ2VQcm94eSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25D
bGllbnQ+IE5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpCitVbmlxdWVS
ZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiBOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZU5hdmlnYXRp
b25DbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRpb25DbGll
bnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxOYXZpZ2F0aW9uQ2xpZW50Pigq
dGhpcyk7CiB9CiAgICAgCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpIaXN0b3J5Q2xpZW50PiBOYXZp
Z2F0aW9uU3RhdGU6OmNyZWF0ZUhpc3RvcnlDbGllbnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349933</attachid>
            <date>2018-09-17 13:31:44 -0700</date>
            <delta_ts>2018-09-17 14:34:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189012-20180917133143.patch</filename>
            <type>text/plain</type>
            <size>33414</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYwNzgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA5LTE3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXZWJQYWdl
UHJveHkgYWx3YXlzIGhhdmUgYSBBUEk6Ok5hdmlnYXRpb25DbGllbnQgaW5zdGVhZCBvZiBhbHdh
eXMgaGF2aW5nIGEgQVBJOjpMb2FkZXJDbGllbnQgYW5kIEFQSTo6UG9saWN5Q2xpZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpO
YXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TmF2aWdhdGlv
bkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TG9hZGVyQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQb2xpY3lDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250
ZW50Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEJl
Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVdp
bGxFbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJl
RGlkRW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVy
ZVNuYXBzaG90V2FzUmVtb3ZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorCiAyMDE4LTA5LTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRXhwb3NlIFhQQ1NlcnZpY2VNYWluIGluIGEgV2ViUHJvY2VzcyBoZWFk
ZXIgcmF0aGVyIHRoYW4gV0tQcm9jZXNzUG9vbApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzYwNzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODAsOCArMzgwLDcg
QEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUAogV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNv
bmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQobWFrZVdlYWtQdHIocGFnZUNsaWVudCkp
CiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKLSAgICAsIG1f
bG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMb2FkZXJDbGllbnQ+KCkpCi0gICAg
LCBtX3BvbGljeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6UG9saWN5Q2xpZW50PigpKQor
ICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xp
ZW50PigpKQogICAgICwgbV9pY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SWNvbkxvYWRpbmdDbGllbnQ+KCkpCiAgICAgLCBtX2Zvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkZvcm1DbGllbnQ+KCkpCiAgICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpVSUNsaWVudD4oKSkKQEAgLTU2NywyOCArNTY2LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRIaXN0b3J5Q2xpZW50KHN0ZDoKICAgICBtX2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhp
c3RvcnlDbGllbnQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0TmF2aWdhdGlvbkNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiYmIG5hdmlnYXRpb25DbGll
bnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TmF2aWdhdGlvbkNsaWVudChVbmlxdWVSZWY8QVBJ
OjpOYXZpZ2F0aW9uQ2xpZW50PiYmIG5hdmlnYXRpb25DbGllbnQpCiB7CiAgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50ID0gV1RGTW92ZShuYXZpZ2F0aW9uQ2xpZW50KTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldExvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMb2FkZXJDbGllbnQ+
JiYgbG9hZGVyQ2xpZW50KQogewotICAgIGlmICghbG9hZGVyQ2xpZW50KSB7Ci0gICAgICAgIG1f
bG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxvYWRlckNsaWVudD4oKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIG1fbG9hZGVyQ2xpZW50ID0gV1RGTW92ZShsb2Fk
ZXJDbGllbnQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UG9saWN5Q2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4mJiBwb2xpY3lDbGllbnQpCiB7Ci0gICAgaWYg
KCFwb2xpY3lDbGllbnQpIHsKLSAgICAgICAgbV9wb2xpY3lDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6UG9saWN5Q2xpZW50PigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
bV9wb2xpY3lDbGllbnQgPSBXVEZNb3ZlKHBvbGljeUNsaWVudCk7CiB9CiAKQEAgLTkwOSw5ICs4
OTgsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgcmVzZXRTdGF0ZShSZXNl
dFN0YXRlUmVhc29uOjpQYWdlSW52YWxpZGF0ZWQpOwogCi0gICAgbV9sb2FkZXJDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9hZGVyQ2xpZW50PigpOwotICAgIG1fbmF2aWdhdGlvbkNs
aWVudCA9IG51bGxwdHI7Ci0gICAgbV9wb2xpY3lDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6UG9saWN5Q2xpZW50PigpOworICAgIG1fbG9hZGVyQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBt
X25hdmlnYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4o
KTsKKyAgICBtX3BvbGljeUNsaWVudCA9IG51bGxwdHI7CiAgICAgbV9pY29uTG9hZGluZ0NsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKICAgICBtX2Zv
cm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKICAgICBtX3Vp
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwpAQCAtMTI4NCw3ICsx
MjczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUJhY2tGb3J3YXJkTAogewogICAg
IFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKLSAgICBpZiAo
IW1fbmF2aWdhdGlvbkNsaWVudCB8fCAhbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QoKnRoaXMsIGFkZGVkLCByZW1vdmVkKSkKKyAgICBpZiAoIW1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCp0aGlzLCBhZGRlZCwgcmVtb3ZlZCkg
JiYgbV9sb2FkZXJDbGllbnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QoKnRoaXMsIGFkZGVkLCBXVEZNb3ZlKHJlbW92ZWQpKTsKIAogICAgIGF1dG8g
dHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKQEAgLTEyOTcsMTAg
KzEyODYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbEdvVG9CYWNrRm9yd2FyZExpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIAotICAgIGlm
IChhdXRvKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1Gb3JJRChpdGVtSUQpKSB7Ci0g
ICAgICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgICAgICBtX25hdmlnYXRpb25D
bGllbnQtPndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSgqdGhpcywgKml0ZW0sIGluUGFnZUNh
Y2hlLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKLSAgICB9CisgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlz
dC0+aXRlbUZvcklEKGl0ZW1JRCkpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2lsbEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtKCp0aGlzLCAqaXRlbSwgaW5QYWdlQ2FjaGUsIG1fcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwog
fQogCiBib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJ
dGVtSW5MaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCkBAIC0yMjA3LDEyICsyMTk0
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKGNvbnN0IFN0cmkKICAgICB9Owog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAg
ICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQoKnRoaXMs
IHN0YXRpY19jYXN0PFBsdWdpbk1vZHVsZUxvYWRQb2xpY3k+KHBsdWdpbkxvYWRQb2xpY3kpLCBw
bHVnaW5JbmZvcm1hdGlvbi5nZXQoKSwgV1RGTW92ZShmaW5kUGx1Z2luQ29tcGxldGlvbikpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
ZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkKCp0aGlzLCBzdGF0aWNfY2FzdDxQbHVnaW5Nb2R1bGVM
b2FkUG9saWN5PihwbHVnaW5Mb2FkUG9saWN5KSwgcGx1Z2luSW5mb3JtYXRpb24uZ2V0KCksIFdU
Rk1vdmUoZmluZFBsdWdpbkNvbXBsZXRpb24pKTsKKyNlbHNlCiAgICAgZmluZFBsdWdpbkNvbXBs
ZXRpb24ocGx1Z2luTG9hZFBvbGljeSwgeyB9KTsKKyNlbmRpZgogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0zNTAzLDExICszNDg4LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG8KICAgICBmcmFtZS0+ZGlkU3RhcnRQcm92
aXNpb25hbExvYWQodXJsKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7
Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoZnJhbWUtPmlzTWFp
bkZyYW1lKCkpCi0gICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFN0YXJ0UHJvdmlz
aW9uYWxOYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9IGVs
c2UKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0
KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOworICAgIGVsc2UgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCp0aGlzLCBu
YXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMzUzNSwxMSArMzUxOSwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyCiAgICAgZnJhbWUtPmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChyZXF1ZXN0LnVybCgpKTsKIAogICAgIG1fcGFn
ZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkg
ewotICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdh
dGlvbigqdGhpcywgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCisgICAgaWYg
KG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgZnJhbWUt
PmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9uLmdldCgpIDogbnVsbHB0ciwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAg
ZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCp0aGlz
LCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIHVybCwgZG91YmxlIGRlbGF5KQpAQCAtMzU0OSwxMCArMzUzMiw4IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGkKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9
IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7
CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNN
YWluRnJhbWUoKSkKLSAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdCgqdGhpcywgdXJsLCBkZWxheSk7Ci0gICAgfQorICAgIGlmIChmcmFtZS0+
aXNNYWluRnJhbWUoKSkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT53aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KCp0aGlzLCB1cmwsIGRlbGF5KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKQEAgLTM1
NjIsMTAgKzM1NDMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJl
CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQp
OwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgewotICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRpZENhbmNlbENsaWVudFJlZGlyZWN0KCp0aGlzKTsKLSAgICB9Cisg
ICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQt
PmRpZENhbmNlbENsaWVudFJlZGlyZWN0KCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QsIFdlYkNvcmU6OlVSTCYmIHVybCkKQEAgLTM2MjEsMTUgKzM2MDAsMTQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYQogICAgIEFTU0VSVCghbV9mYWlsaW5nUHJv
dmlzaW9uYWxMb2FkVVJMKTsKICAgICBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwgPSBwcm92
aXNpb25hbFVSTDsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKLSAgICAgICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIG5hdmln
YXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICAgICAgZWxzZSB7CisgICAgaWYgKG1fbG9h
ZGVyQ2xpZW50KQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9y
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKKyAgICBlbHNlIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgbV9u
YXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0
aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBHZXQgdGhlIG1haW4gZnJhbWUncyBjdXJyZW50IG5hdmln
YXRpb24uCiAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25h
bExvYWRJblN1YmZyYW1lV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmln
aW4sIG51bGxwdHIsIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAg
ICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1l
KCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICB9CiAK
ICAgICBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwgPSB7IH07CiB9CkBAIC0zNzIyLDExICsz
NzAwLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUKICNlbmRp
ZgogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAg
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkQ29tbWl0TmF2aWdhdGlvbigqdGhpcywgbmF2
aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJE
YXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCisgICAgaWYgKG1fbG9hZGVyQ2xpZW50
KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKCp0aGlzLCAq
ZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgaWYgKGZyYW1lLT5pc01h
aW5GcmFtZSgpKQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENvbW1pdE5hdmlnYXRp
b24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIGludmFs
aWRhdGVBbGxBdHRhY2htZW50cygpOwpAQCAtMzc1MCw3ICszNzI4LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUo
KSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5hdmlnYXRpb24gPSAmbmF2aWdhdGlvblN0YXRl
KCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkp
CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmluaXNoRG9jdW1lbnRMb2FkKCp0aGlz
LCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIApAQCAtMzc4MiwxMSArMzc2MCwxMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lCiAgICAgZnJhbWUtPmRpZEZp
bmlzaExvYWQoKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAg
aWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoaXNNYWluRnJhbWUpCi0gICAg
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZpbmlzaE5hdmlnYXRpb24oKnRoaXMsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0gZWxzZQorICAgIGlmIChtX2xvYWRlckNsaWVu
dCkKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpbmlzaExvYWRGb3JGcmFtZSgqdGhpcywg
KmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlIGlmIChpc01haW5GcmFt
ZSkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hOYXZpZ2F0aW9uKCp0aGlz
LCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIGlmIChpc01haW5GcmFtZSkgewogICAg
ICAgICByZXBvcnRQYWdlTG9hZFJlc3VsdCgpOwpAQCAtMzgyOSwxMSArMzgwNiwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1CiAgICAgZnJhbWUtPmRpZEZhaWxM
b2FkKCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQot
ICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJv
cigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBl
bHNlCisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlk
RmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgp
LCBlcnJvciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7CisgICAgZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAg
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMs
ICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgaWYgKGlzTWFp
bkZyYW1lKSB7CiAgICAgICAgIHJlcG9ydFBhZ2VMb2FkUmVzdWx0KGVycm9yKTsKQEAgLTM4NzEs
NyArMzg0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2EKICAg
ICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwogCiAgICAgU2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUgPSBzdGF0aWNfY2FzdDxTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZT4ob3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpOwotICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQgJiYgaXNNYWluRnJhbWUpCisgICAgaWYgKGlzTWFpbkZyYW1lKQog
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oKnRo
aXMsIG5hdmlnYXRpb24uZ2V0KCksIG5hdmlnYXRpb25UeXBlLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIGlmIChp
c01haW5GcmFtZSkKQEAgLTM5MzcsMTAgKzM5MTMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFJlYWNoTGF5b3V0TWlsZXN0bwogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPnJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKCp0aGlzLCBzdGF0
aWNfY2FzdDxMYXlvdXRNaWxlc3RvbmVzPihsYXlvdXRNaWxlc3RvbmVzKSk7Ci0gICAgZWxzZQor
ICAgIGlmIChtX2xvYWRlckNsaWVudCkKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlYWNo
TGF5b3V0TWlsZXN0b25lKCp0aGlzLCBzdGF0aWNfY2FzdDxMYXlvdXRNaWxlc3RvbmVzPihsYXlv
dXRNaWxlc3RvbmVzKSk7CisgICAgZWxzZQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJl
bmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKCp0aGlzLCBzdGF0aWNfY2FzdDxMYXlvdXRNaWxlc3Rv
bmVzPihsYXlvdXRNaWxlc3RvbmVzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQpAQCAtMzk1NCw4ICszOTMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZERpc3BsYXlJbnNlY3VyZUNvbgogICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWREaXNwbGF5T3JSdW5J
bnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRD
aGFuZ2VzKCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKnRoaXMsIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgqdGhpcywgbV9w
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0zOTY5LDgg
KzM5NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50CiAgICAg
bV9wYWdlTG9hZFN0YXRlLmRpZERpc3BsYXlPclJ1bkluc2VjdXJlQ29udGVudCh0cmFuc2FjdGlv
bik7CiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKIAotICAgIGlmIChtX25h
dmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUnVuSW5zZWN1
cmVDb250ZW50KCp0aGlzLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFJ1bklu
c2VjdXJlQ29udGVudCgqdGhpcywgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRE
ZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRfdCwgY29uc3QgVXNlckRhdGEmKQpAQCAtNDA3Nyw3ICs0
MDUxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUtPmxvZ0ZyYW1lTmF2aWdhdGlvbigqZnJhbWUsIFVSTChVUkwoKSwgbV9wYWdlTG9hZFN0
YXRlLnVybCgpKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS51cmwoKSk7CiAKLSAgICBpZiAo
bV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAgaWYgKG1fcG9saWN5Q2xpZW50KQorICAgICAgICBt
X3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgZnJh
bWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmln
aW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
KyAgICBlbHNlIHsKICAgICAgICAgYXV0byBkZXN0aW5hdGlvbkZyYW1lSW5mbyA9IEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2lu
KCkpOwogICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKICAg
ICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5nRnJhbWUgPT0gZnJhbWUpCkBAIC00MDkx
LDggKzQwNjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAg
ICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCks
IGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVxdWVz
dCksIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVz
ZXJJbml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOwogCiAgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywg
V1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAg
IH0gZWxzZQotICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbigqdGhpcywgZnJhbWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmln
aW5hdGluZ0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
bGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKKyAgICB9CiAKICAgICBtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJ
bk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBmYWxzZTsKIH0KQEAgLTQxMjQsNyArNDA5
OSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW4KICAgICAgICAg
fSkpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8pKTsKIAotICAg
IGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKKyAgICBpZiAobV9wb2xpY3lDbGllbnQpCisgICAg
ICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oKnRoaXMs
ICpmcmFtZSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZyYW1lTmFtZSwgV1RGTW92
ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8QVBJOjpGcmFt
ZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKICAgICAgICAgaWYgKGZyYW1lKQogICAgICAgICAgICAg
c291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2Vj
dXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CkBAIC00MTM1LDggKzQxMTIsOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAKICAgICAgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBuYXZpZ2F0
aW9uQWN0aW9uLmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKLSAgICB9IGVsc2UK
LSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigq
dGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBX
VEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgfQorICAgICAgICAKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtNDE2MCwxMSArNDEzNywxMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uCiAgICAgICAgIH0pKTsKICAgICB9
LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vKSk7CiAKLSAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KSB7CisgICAgaWYgKG1fcG9saWN5Q2xpZW50KQorICAgICAgICBtX3BvbGlj
eUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2Us
IHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAg
IGVsc2UgewogICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlv
blJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2Vj
dXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBj
YW5TaG93TUlNRVR5cGUpOwogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhpcywgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2Up
LCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fcG9saWN5
Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwg
cmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAg
fQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKQEAgLTQxOTQsOCArNDE3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsU3Vi
bWl0Rm9ybSh1aW50NjQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlm
aWNhdGlvbihXZWJDb3JlOjpVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMs
IFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykKIHsKLSAgICBpZiAobV9uYXZpZ2F0aW9u
Q2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmNvbnRlbnRSdWxlTGlzdE5vdGlm
aWNhdGlvbigqdGhpcywgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKGlkZW50aWZpZXJzKSwgV1RGTW92
ZShub3RpZmljYXRpb25zKSk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24oKnRoaXMsIFdURk1vdmUodXJsKSwgV1RGTW92ZShpZGVudGlmaWVycyks
IFdURk1vdmUobm90aWZpY2F0aW9ucykpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUm
IHN0b3JlLCB1aW50NjRfdCBmcmFtZUlEKSAKQEAgLTQ0NTUsMjIgKzQ0MzIsMTYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dAogI2lmIEVOQUJMRShXRUJHTCkKIHZv
aWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsK
LSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAo
V2ViR0xMb2FkUG9saWN5IHBvbGljeSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICByZXBseShzdGF0
aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7Ci0gICAgICAgIH0pOwotICAgIH0gZWxzZQotICAg
ICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
OjpXZWJHTEFsbG93Q3JlYXRpb24pKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPndlYkdMTG9h
ZFBvbGljeSgqdGhpcywgdXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFdlYkdMTG9hZFBv
bGljeSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJf
dD4ocG9saWN5KSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNvbHZlV2Vi
R0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZl
V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIGlmIChtX25h
dmlnYXRpb25DbGllbnQpIHsKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5yZXNvbHZlV2Vi
R0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoV2ViR0xM
b2FkUG9saWN5IHBvbGljeSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICByZXBseShzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ocG9saWN5KSk7Ci0gICAgICAgIH0pOwotICAgIH0gZWxzZQotICAgICAgICBy
ZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJH
TEFsbG93Q3JlYXRpb24pKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPnJlc29sdmVXZWJHTExv
YWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIChXZWJHTExvYWRQ
b2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKKyAgICAgICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHBvbGljeSkpOworICAgIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApAQCAt
NTg3MCw4ICs1ODQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJl
cwogCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVTdGF0ZSgpOwogCi0gICAgaWYg
KG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5wcm9jZXNz
RGlkQmVjb21lVW5yZXNwb25zaXZlKCp0aGlzKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPnBy
b2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQpAQCAtNTg4MSw4ICs1ODUxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwbwogICAgIAogICAgIHVwZGF0ZUJh
Y2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGll
bnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNp
dmUoKnRoaXMpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0RpZEJlY29tZVJlc3Bv
bnNpdmUoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbENoYW5nZVByb2Nlc3NJ
c1Jlc3BvbnNpdmUoKQpAQCAtNTk1OCwxMCArNTkyNywxMCBAQCBzdGF0aWMgYm9vbCBzaG91bGRS
ZWxvYWRBZnRlclByb2Nlc3NUZXJtCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hQcm9jZXNz
RGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7CiAgICAgYm9v
bCBoYW5kbGVkQnlDbGllbnQgPSBmYWxzZTsKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQor
ICAgIGlmIChtX2xvYWRlckNsaWVudCkKKyAgICAgICAgaGFuZGxlZEJ5Q2xpZW50ID0gcmVhc29u
ICE9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQgJiYgbV9sb2Fk
ZXJDbGllbnQtPnByb2Nlc3NEaWRDcmFzaCgqdGhpcyk7CisgICAgZWxzZQogICAgICAgICBoYW5k
bGVkQnlDbGllbnQgPSBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NEaWRUZXJtaW5hdGUoKnRo
aXMsIHJlYXNvbik7Ci0gICAgZWxzZSBpZiAocmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpCi0gICAgICAgIGhhbmRsZWRCeUNsaWVudCA9IG1fbG9h
ZGVyQ2xpZW50LT5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOwogCiAgICAgaWYgKCFoYW5kbGVkQnlD
bGllbnQgJiYgc2hvdWxkUmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24ocmVhc29uKSkKICAg
ICAgICAgdHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24oKTsKQEAgLTYzNDUsMTAgKzYz
MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0CiAgICAgfQog
I2VuZGlmCiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwotICAgIGVsc2UKLSAgICAgICAgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UtPnBlcmZvcm1EZWZhdWx0SGFuZGxpbmcoKTsKKyAgICBtX25hdmlnYXRpb25D
bGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1
aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHkm
JiByZXBseSkKQEAgLTY5NTIsMTMgKzY5MTgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d3JhcENy
eXB0b0tleShjb25zdCBWCiAKICAgICBWZWN0b3I8dWludDhfdD4gbWFzdGVyS2V5OwogCi0gICAg
aWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoUmVmUHRyPEFQSTo6RGF0YT4g
a2V5RGF0YSA9IG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkK
LSAgICAgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3Io
KTsKLSAgICB9IGVsc2UgaWYgKCFnZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KG1hc3Rlcktl
eSkpIHsKLSAgICAgICAgc3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgaWYgKFJlZlB0cjxBUEk6OkRhdGE+IGtleURhdGEgPSBtX25hdmlnYXRpb25DbGllbnQt
PndlYkNyeXB0b01hc3RlcktleSgqdGhpcykpCisgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEt
PmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKIAogICAgIHN1Y2NlZWRlZCA9IHdyYXBTZXJpYWxp
emVkQ3J5cHRvS2V5KG1hc3RlcktleSwga2V5LCB3cmFwcGVkS2V5KTsKIH0KQEAgLTY5NjksMTMg
KzY5MzAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0CiAKICAg
ICBWZWN0b3I8dWludDhfdD4gbWFzdGVyS2V5OwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgewotICAgICAgICBpZiAoUmVmUHRyPEFQSTo6RGF0YT4ga2V5RGF0YSA9IG1fbmF2aWdhdGlv
bkNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkKLSAgICAgICAgICAgIG1hc3Rlcktl
eSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKLSAgICB9IGVsc2UgaWYgKCFn
ZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KG1hc3RlcktleSkpIHsKLSAgICAgICAgc3VjY2Vl
ZGVkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKFJlZlB0cjxBUEk6
OkRhdGE+IGtleURhdGEgPSBtX25hdmlnYXRpb25DbGllbnQtPndlYkNyeXB0b01hc3RlcktleSgq
dGhpcykpCisgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0
b3IoKTsKIAogICAgIHN1Y2NlZWRlZCA9IHVud3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXkobWFzdGVy
S2V5LCB3cmFwcGVkS2V5LCBrZXkpOwogfQpAQCAtNjk4NSwxMiArNjk0MSw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGEKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgewotICAgICAgICBpZiAoYXV0byBhcGlTdHJpbmcgPSBtX25hdmlnYXRpb25DbGllbnQtPnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZygqdGhpcywga2V5U2l6ZUluZGV4LCBBUEk6
OlN0cmluZzo6Y3JlYXRlKGNoYWxsZW5nZVN0cmluZyksIHVybCkpCi0gICAgICAgICAgICByZXN1
bHQgPSBhcGlTdHJpbmctPnN0cmluZygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHJl
c3VsdCA9IFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXpl
SW5kZXgsIGNoYWxsZW5nZVN0cmluZywgdXJsKTsKKyAgICBpZiAoYXV0byBhcGlTdHJpbmcgPSBt
X25hdmlnYXRpb25DbGllbnQtPnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZygqdGhp
cywga2V5U2l6ZUluZGV4LCBBUEk6OlN0cmluZzo6Y3JlYXRlKGNoYWxsZW5nZVN0cmluZyksIHVy
bCkpCisgICAgICAgIHJlc3VsdCA9IGFwaVN0cmluZy0+c3RyaW5nKCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjphZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKQEAgLTcxMDksOCArNzA2MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpu
YXZpZ2F0aW9uR2VzdHVyZURpZEIKICAgICBtX2lzU2hvd2luZ05hdmlnYXRpb25HZXN0dXJlU25h
cHNob3QgPSB0cnVlOwogICAgIHBhZ2VDbGllbnQoKS5uYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2lu
KCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25D
bGllbnQtPmRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUoKnRoaXMpOworICAgIG1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQoYm9vbCB3aWxsTmF2aWdhdGUsIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCkBAIC03MTE5LDggKzcwNzAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bmF2aWdhdGlvbkdlc3R1cmVXaWxsCiAKICAgICBwYWdlQ2xpZW50KCkubmF2
aWdhdGlvbkdlc3R1cmVXaWxsRW5kKHdpbGxOYXZpZ2F0ZSwgaXRlbSk7CiAKLSAgICBpZiAobV9u
YXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPndpbGxFbmROYXZp
Z2F0aW9uR2VzdHVyZSgqdGhpcywgd2lsbE5hdmlnYXRlLCBpdGVtKTsKKyAgICBtX25hdmlnYXRp
b25DbGllbnQtPndpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZSgqdGhpcywgd2lsbE5hdmlnYXRlLCBp
dGVtKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKGJv
b2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQpAQCAtNzEyOSw4
ICs3MDc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkRQogCiAg
ICAgcGFnZUNsaWVudCgpLm5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKHdpbGxOYXZpZ2F0ZSwgaXRl
bSk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25D
bGllbnQtPmRpZEVuZE5hdmlnYXRpb25HZXN0dXJlKCp0aGlzLCB3aWxsTmF2aWdhdGUsIGl0ZW0p
OworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUoKnRoaXMs
IHdpbGxOYXZpZ2F0ZSwgaXRlbSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9u
R2VzdHVyZURpZEVuZCgpCkBAIC03MTUzLDggKzcxMDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bmF2aWdhdGlvbkdlc3R1cmVTbmFwCiAKICAgICBwYWdlQ2xpZW50KCkuZGlkUmVtb3ZlTmF2aWdh
dGlvbkdlc3R1cmVTbmFwc2hvdCgpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBz
aG90KCp0aGlzKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFJlbW92ZU5hdmlnYXRpb25H
ZXN0dXJlU25hcHNob3QoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5n
TWVkaWFEaWRDaGFuZ2UoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5ld1N0YXRlLCB1
aW50NjRfdCBzb3VyY2VFbGVtZW50SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjM2MDc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDIxLDcgKzQyMiw3IEBA
IHB1YmxpYzoKICAgICBBUEk6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KiBkaWFnbm9zdGljTG9n
Z2luZ0NsaWVudCgpIHsgcmV0dXJuIG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldEZvcm1DbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6Rm9ybUNsaWVudD4mJik7Ci0gICAgdm9pZCBzZXROYXZpZ2F0aW9u
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+JiYpOworICAgIHZv
aWQgc2V0TmF2aWdhdGlvbkNsaWVudChVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiYm
KTsKICAgICB2b2lkIHNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SGlzdG9y
eUNsaWVudD4mJik7CiAgICAgdm9pZCBzZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6TG9hZGVyQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+JiYpOwpAQCAtMTgzOCw3ICsxODM5LDcgQEAgcHJpdmF0
ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxvYWRlckNsaWVudD4gbV9sb2FkZXJDbGll
bnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiBtX3BvbGljeUNsaWVu
dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiBtX25hdmlnYXRp
b25DbGllbnQ7CisgICAgVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gbV9uYXZpZ2F0
aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okhpc3RvcnlDbGllbnQ+IG1faGlz
dG9yeUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4g
bV9pY29uTG9hZGluZ0NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50
PiBtX2Zvcm1DbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHJldmlzaW9uIDIzNjA3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNTUsOCArMjI1NSw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWcKIAogICAgIFdlYlBhZ2VQcm94eSogd2Vi
UGFnZVByb3h5ID0gdG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0aW9uQ2xpZW50Pih3a0NsaWVudCk7Ci0gICAgd2Vi
UGFnZVByb3h5LT5zZXROYXZpZ2F0aW9uQ2xpZW50KFdURk1vdmUobmF2aWdhdGlvbkNsaWVudCkp
OworICAgIHdlYlBhZ2VQcm94eS0+c2V0TmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPE5h
dmlnYXRpb25DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZv
aWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE5hdmlnYXRpb25DbGllbnQuY3BwCShyZXZpc2lvbiAyMzYwNzgpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQwLDYgKzE0MCw2IEBAIHByaXZhdGU6CiAKIHZvaWQgYXR0YWNoTmF2aWdhdGlv
bkNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZp
ZXdHZXRQYWdlKHdlYlZpZXcpLnNldE5hdmlnYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxO
YXZpZ2F0aW9uQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2Vi
Vmlldykuc2V0TmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPE5hdmlnYXRpb25DbGllbnQ+
KHdlYlZpZXcpKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmgJKHJldmlzaW9uIDIzNjA3OCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2
ICszNiw3IEBACiAjaW1wb3J0ICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1VuaXF1ZVJl
Zi5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKIEBjbGFzcyBXS1dlYlZpZXc7CkBA
IC02MSw3ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBOYXZpZ2F0aW9uU3RhdGUmIGZy
b21XZWJQYWdlKFdlYlBhZ2VQcm94eSYpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2
aWdhdGlvbkNsaWVudD4gY3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpOworICAgIFVuaXF1ZVJlZjxB
UEk6Ok5hdmlnYXRpb25DbGllbnQ+IGNyZWF0ZU5hdmlnYXRpb25DbGllbnQoKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpIaXN0b3J5Q2xpZW50PiBjcmVhdGVIaXN0b3J5Q2xpZW50KCk7CiAK
ICAgICBSZXRhaW5QdHI8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiA+IG5hdmlnYXRpb25EZWxl
Z2F0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQkocmV2aXNpb24gMjM2MDc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsOSArMTIx
LDkgQEAgTmF2aWdhdGlvblN0YXRlJiBOYXZpZ2F0aW9uU3RhdGU6OmZyb21XZQogICAgIHJldHVy
biAqbmF2aWdhdGlvblN0YXRlcygpLmdldCgmd2ViUGFnZVByb3h5KTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVOYXZp
Z2F0aW9uQ2xpZW50KCkKK1VuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IE5hdmlnYXRp
b25TdGF0ZTo6Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TmF2aWdhdGlvbkNsaWVudD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVl
UmVmPE5hdmlnYXRpb25DbGllbnQ+KCp0aGlzKTsKIH0KICAgICAKIHN0ZDo6dW5pcXVlX3B0cjxB
UEk6Okhpc3RvcnlDbGllbnQ+IE5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlSGlzdG9yeUNsaWVudCgp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0JKHJldmlzaW9uIDIzNjA3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMjMsMTQgKzExMjMsMTIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTAogewogICAgIC8vIEVuc3VyZSB0
aGF0IGZpbGVOYW1lIGlzbid0IHJlYWxseSBhIHBhdGggbmFtZQogICAgIHN0YXRpY19hc3NlcnQo
bm90Rm91bmQgKyAxID09IDAsICJUaGUgZm9sbG93aW5nIGxpbmUgYXNzdW1lcyBXVEY6Om5vdEZv
dW5kIGVxdWFscyAtMSIpOwotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUucmV2ZXJzZUZpbmQoJy8nKSArIDEpLCB1
dGkpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUucmV2ZXJzZUZpbmQo
Jy8nKSArIDEpLCB1dGkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgUXVpY2tMb29rRG9jdW1lbnREYXRh
JiBkYXRhKQogewotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
ZGF0YSk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShkYXRhKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJl
cXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349942</attachid>
            <date>2018-09-17 14:34:44 -0700</date>
            <delta_ts>2018-09-18 11:42:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189012-20180917143443.patch</filename>
            <type>text/plain</type>
            <size>34253</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYwNzkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA5LTE3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXZWJQYWdl
UHJveHkgYWx3YXlzIGhhdmUgYSBBUEk6Ok5hdmlnYXRpb25DbGllbnQgaW5zdGVhZCBvZiBhbHdh
eXMgaGF2aW5nIGEgQVBJOjpMb2FkZXJDbGllbnQgYW5kIEFQSTo6UG9saWN5Q2xpZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpO
YXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TmF2aWdhdGlv
bkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TG9hZGVyQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQb2xpY3lDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250
ZW50Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEJl
Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVdp
bGxFbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJl
RGlkRW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVy
ZVNuYXBzaG90V2FzUmVtb3ZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorCiAyMDE4LTA5LTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRXhwb3NlIFdLV2ViUHJvY2Vzcy5oIGFzIGEgcHJpdmF0ZSBoZWFkZXIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24g
MjM2MDc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgwLDggKzM4MCw3IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlKFAKIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8
QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9wYWdlQ2xp
ZW50KG1ha2VXZWFrUHRyKHBhZ2VDbGllbnQpKQogICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1v
dmUoY29uZmlndXJhdGlvbikpCi0gICAgLCBtX2xvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6TG9hZGVyQ2xpZW50PigpKQotICAgICwgbV9wb2xpY3lDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OlBvbGljeUNsaWVudD4oKSkKKyAgICAsIG1fbmF2aWdhdGlvbkNsaWVudChtYWtl
VW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKSkKICAgICAsIG1faWNvbkxvYWRpbmdD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpKQogICAgICwg
bV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpKQogICAgICwg
bV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCkpCkBAIC01NjcsMjgg
KzU2NiwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SGlzdG9yeUNsaWVudChzdGQ6CiAgICAg
bV9oaXN0b3J5Q2xpZW50ID0gV1RGTW92ZShoaXN0b3J5Q2xpZW50KTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnNldE5hdmlnYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2aWdh
dGlvbkNsaWVudD4mJiBuYXZpZ2F0aW9uQ2xpZW50KQordm9pZCBXZWJQYWdlUHJveHk6OnNldE5h
dmlnYXRpb25DbGllbnQoVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4mJiBuYXZpZ2F0
aW9uQ2xpZW50KQogewogICAgIG1fbmF2aWdhdGlvbkNsaWVudCA9IFdURk1vdmUobmF2aWdhdGlv
bkNsaWVudCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRMb2FkZXJDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiYmIGxvYWRlckNsaWVudCkKIHsKLSAgICBpZiAo
IWxvYWRlckNsaWVudCkgewotICAgICAgICBtX2xvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpMb2FkZXJDbGllbnQ+KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBt
X2xvYWRlckNsaWVudCA9IFdURk1vdmUobG9hZGVyQ2xpZW50KTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+
JiYgcG9saWN5Q2xpZW50KQogewotICAgIGlmICghcG9saWN5Q2xpZW50KSB7Ci0gICAgICAgIG1f
cG9saWN5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNsaWVudD4oKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIG1fcG9saWN5Q2xpZW50ID0gV1RGTW92ZShwb2xp
Y3lDbGllbnQpOwogfQogCkBAIC05MDksOSArODk4LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNs
b3NlKCkKIAogICAgIHJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbjo6UGFnZUludmFsaWRhdGVk
KTsKIAotICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxvYWRlckNs
aWVudD4oKTsKLSAgICBtX25hdmlnYXRpb25DbGllbnQgPSBudWxscHRyOwotICAgIG1fcG9saWN5
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNsaWVudD4oKTsKKyAgICBtX2xv
YWRlckNsaWVudCA9IG51bGxwdHI7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50ID0gbWFrZVVuaXF1
ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCk7CisgICAgbV9wb2xpY3lDbGllbnQgPSBudWxs
cHRyOwogICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNv
bkxvYWRpbmdDbGllbnQ+KCk7CiAgICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkZvcm1DbGllbnQ+KCk7CiAgICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpVSUNsaWVudD4oKTsKQEAgLTEyODQsNyArMTI3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRDaGFuZ2VCYWNrRm9yd2FyZEwKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rv
cihwYWdlQ2xpZW50KCkpOwogCi0gICAgaWYgKCFtX25hdmlnYXRpb25DbGllbnQgfHwgIW1fbmF2
aWdhdGlvbkNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCp0aGlzLCBhZGRlZCwgcmVt
b3ZlZCkpCisgICAgaWYgKCFtX25hdmlnYXRpb25DbGllbnQtPmRpZENoYW5nZUJhY2tGb3J3YXJk
TGlzdCgqdGhpcywgYWRkZWQsIHJlbW92ZWQpICYmIG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBt
X2xvYWRlckNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCp0aGlzLCBhZGRlZCwgV1RG
TW92ZShyZW1vdmVkKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRl
LnRyYW5zYWN0aW9uKCk7CkBAIC0xMjk3LDE3ICsxMjg2LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp3aWxsR29Ub0JhY2tGb3J3YXJkTGkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCi0gICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2JhY2tGb3J3YXJk
TGlzdC0+aXRlbUZvcklEKGl0ZW1JRCkpIHsKLSAgICAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkKLSAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2lsbEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtKCp0aGlzLCAqaXRlbSwgaW5QYWdlQ2FjaGUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAo
YXV0byogaXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtRm9ySUQoaXRlbUlEKSkKKyAgICAg
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oKnRoaXMs
ICppdGVtLCBpblBhZ2VDYWNoZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91
bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYgaXRlbSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCi0gICAgcmV0dXJuIG1fbG9hZGVyQ2xpZW50LT5zaG91bGRLZWVwQ3VycmVudEJh
Y2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QoKnRoaXMsIGl0ZW0pOworICAgIHJldHVybiAhbV9sb2Fk
ZXJDbGllbnQgfHwgbV9sb2FkZXJDbGllbnQtPnNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRM
aXN0SXRlbUluTGlzdCgqdGhpcywgaXRlbSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpjYW5T
aG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTIyMDcsMTIgKzIxOTQsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4oY29uc3QgU3RyaQogICAgIH07CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCgqdGhpcywgc3Rh
dGljX2Nhc3Q8UGx1Z2luTW9kdWxlTG9hZFBvbGljeT4ocGx1Z2luTG9hZFBvbGljeSksIHBsdWdp
bkluZm9ybWF0aW9uLmdldCgpLCBXVEZNb3ZlKGZpbmRQbHVnaW5Db21wbGV0aW9uKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lk
ZVBvbGljeUZvclBsdWdpbkxvYWQoKnRoaXMsIHN0YXRpY19jYXN0PFBsdWdpbk1vZHVsZUxvYWRQ
b2xpY3k+KHBsdWdpbkxvYWRQb2xpY3kpLCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQoKSwgV1RGTW92
ZShmaW5kUGx1Z2luQ29tcGxldGlvbikpOworI2Vsc2UKICAgICBmaW5kUGx1Z2luQ29tcGxldGlv
bihwbHVnaW5Mb2FkUG9saWN5LCB7IH0pOworI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTM1MDMsMTEgKzM0ODgsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMbwogICAgIGZyYW1lLT5kaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCh1cmwpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAg
ICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJh
bWUoKSkKLSAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25h
bE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0gZWxzZQor
ICAgIGlmIChtX2xvYWRlckNsaWVudCkKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwg
bV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CisgICAgZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1fbmF2
aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oKnRoaXMsIG5hdmln
YXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCkBAIC0zNTM1LDExICszNTE5LDEwIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXIKICAgICBmcmFtZS0+ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHJlcXVlc3QudXJsKCkpOwogCiAgICAgbV9wYWdlTG9h
ZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0g
ICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIG1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
KCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9IGVsc2UKKyAgICBpZiAobV9s
b2FkZXJDbGllbnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBmcmFtZS0+aXNN
YWluRnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxscHRyLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNl
IGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oKnRoaXMsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
dXJsLCBkb3VibGUgZGVsYXkpCkBAIC0zNTQ5LDEwICszNTMyLDggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAot
ICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5G
cmFtZSgpKQotICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT53aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0KCp0aGlzLCB1cmwsIGRlbGF5KTsKLSAgICB9CisgICAgaWYgKGZyYW1lLT5pc01h
aW5GcmFtZSgpKQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPndpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoKnRoaXMsIHVybCwgZGVsYXkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQpAQCAtMzU2Miwx
MCArMzU0Myw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmUKICAg
ICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAg
ICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7
Ci0gICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKnRoaXMpOwotICAgIH0KKyAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3QoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwg
V2ViQ29yZTo6VVJMJiYgdXJsKQpAQCAtMzYyMSwxNSArMzYwMCwxNCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hCiAgICAgQVNTRVJUKCFtX2ZhaWxpbmdQcm92aXNp
b25hbExvYWRVUkwpOwogICAgIG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9hZFVSTCA9IHByb3Zpc2lv
bmFsVVJMOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoZnJh
bWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlv
bi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgICAgICBlbHNlIHsKKyAgICBpZiAobV9sb2FkZXJD
bGllbnQpCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOworICAgIGVsc2UgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMs
ICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgewogICAg
ICAgICAgICAgLy8gRklYTUU6IEdldCB0aGUgbWFpbiBmcmFtZSdzIGN1cnJlbnQgbmF2aWdhdGlv
bi4KICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEluU3ViZnJhbWVXaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbiwg
bnVsbHB0ciwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
bG9hZGVyQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoKnRo
aXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIH0KIAogICAg
IG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKIH0KQEAgLTM3MjIsMTEgKzM3MDAs
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZQogI2VuZGlmCiAK
ICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIGlmIChtX25hdmlnYXRp
b25DbGllbnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICAg
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRDb21taXROYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0
aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKLSAgICB9IGVsc2UKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCiAg
ICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDb21taXRMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFt
ZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkQ29tbWl0TmF2aWdhdGlvbigq
dGhpcywgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgaW52YWxpZGF0
ZUFsbEF0dGFjaG1lbnRzKCk7CkBAIC0zNzUwLDcgKzM3MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpICYm
IG5hdmlnYXRpb25JRCkKICAgICAgICAgbmF2aWdhdGlvbiA9ICZuYXZpZ2F0aW9uU3RhdGUoKS5u
YXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50ICYm
IGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hEb2N1bWVudExvYWQoKnRoaXMsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCkBAIC0zNzgyLDExICszNzYwLDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUKICAgICBmcmFtZS0+ZGlkRmluaXNo
TG9hZCgpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBpZiAo
bV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChpc01haW5GcmFtZSkKLSAgICAgICAg
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmluaXNoTmF2aWdhdGlvbigqdGhpcywgbmF2aWdh
dGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQog
ICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJh
bWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgaWYgKGlzTWFpbkZyYW1lKQor
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZpbmlzaE5hdmlnYXRpb24oKnRoaXMsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKSB7CiAgICAgICAg
IHJlcG9ydFBhZ2VMb2FkUmVzdWx0KCk7CkBAIC0zODI5LDExICszODA2LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHUKICAgICBmcmFtZS0+ZGlkRmFpbExvYWQo
KTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgaWYgKG1fbmF2
aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAg
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0
aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9IGVsc2UK
KyAgICBpZiAobV9sb2FkZXJDbGllbnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGYWls
TG9hZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVy
cm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKKyAgICBlbHNlIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgKmZy
YW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICBpZiAoaXNNYWluRnJh
bWUpIHsKICAgICAgICAgcmVwb3J0UGFnZUxvYWRSZXN1bHQoZXJyb3IpOwpAQCAtMzg3MSw3ICsz
ODQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYQogICAgIG1f
cGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAKICAgICBTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSA9IHN0YXRpY19jYXN0PFNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlPihvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSk7Ci0gICAgaWYgKG1fbmF2
aWdhdGlvbkNsaWVudCAmJiBpc01haW5GcmFtZSkKKyAgICBpZiAoaXNNYWluRnJhbWUpCiAgICAg
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbigqdGhpcywg
bmF2aWdhdGlvbi5nZXQoKSwgbmF2aWdhdGlvblR5cGUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgaWYgKGlzTWFp
bkZyYW1lKQpAQCAtMzkyMiw3ICszODk4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0
VmlzdWFsbHlOb25FbQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotICAgIG1fbG9hZGVy
Q2xpZW50LT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSgqdGhpcywgKmZy
YW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCisgICAgICAgIG1fbG9hZGVyQ2xp
ZW50LT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSgqdGhpcywgKmZyYW1l
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcGFnZUNs
aWVudCgpLmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvck1haW5GcmFtZSgpOwpAQCAt
MzkzNywxMCArMzkxNCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVhY2hMYXlvdXRNaWxl
c3RvCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoKnRoaXMsIHN0YXRpY19jYXN0PExheW91dE1p
bGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpKTsKLSAgICBlbHNlCisgICAgaWYgKG1fbG9hZGVy
Q2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUo
KnRoaXMsIHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpKTsK
KyAgICBlbHNlCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVuZGVyaW5nUHJvZ3Jlc3NE
aWRDaGFuZ2UoKnRoaXMsIHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVz
dG9uZXMpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBA
IC0zOTU0LDggKzM5MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGlzcGxheUluc2VjdXJl
Q29uCiAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZERpc3BsYXlPclJ1bkluc2VjdXJlQ29udGVudCh0
cmFuc2FjdGlvbik7CiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKIAotICAg
IGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudCgqdGhpcywgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV9uYXZpZ2F0aW9uQ2xp
ZW50LT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCp0aGlzLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTM5NjksOCArMzk0NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQKICAgICBtX3BhZ2VMb2FkU3RhdGUu
ZGlkRGlzcGxheU9yUnVuSW5zZWN1cmVDb250ZW50KHRyYW5zYWN0aW9uKTsKICAgICBtX3BhZ2VM
b2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkK
LSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQoKnRoaXMs
IG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUnVuSW5zZWN1cmVDb250ZW50KCp0
aGlzLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZERldGVjdFhTU0ZvckZyYW1l
KHVpbnQ2NF90LCBjb25zdCBVc2VyRGF0YSYpCkBAIC00MDc3LDcgKzQwNTIsOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCiAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+bG9nRnJhbWVO
YXZpZ2F0aW9uKCpmcmFtZSwgVVJMKFVSTCgpLCBtX3BhZ2VMb2FkU3RhdGUudXJsKCkpLCByZXF1
ZXN0LCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGll
bnQpIHsKKyAgICBpZiAobV9wb2xpY3lDbGllbnQpCisgICAgICAgIG1fcG9saWN5Q2xpZW50LT5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBmcmFtZSwgV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgewogICAg
ICAgICBhdXRvIGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgq
ZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgICAgIFJl
ZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwogICAgICAgICBpZiAoIWZyb21B
UEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSBmcmFtZSkKQEAgLTQwOTEsOCArNDA2OCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAgICAgYXV0byBuYXZp
Z2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFt
ZUluZm8ucHRyKCksIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1
ZXN0LnVybCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2
aXR5KSwgbWFpbkZyYW1lTmF2aWdhdGlvbik7CiAKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb24pLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBm
cmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWUsIG9y
aWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJv
Y2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkp
OworICAgIH0KIAogICAgIG1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbiA9IGZhbHNlOwogfQpAQCAtNDEyNCw3ICs0MTAwLDkgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbgogICAgICAgICB9KSk7CiAgICAgfSwgU2hv
dWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObykpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlv
bkNsaWVudCkgeworICAgIGlmIChtX3BvbGljeUNsaWVudCkKKyAgICAgICAgbV9wb2xpY3lDbGll
bnQtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9w
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CisgICAgZWxzZSB7CiAgICAgICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJh
bWVJbmZvOwogICAgICAgICBpZiAoZnJhbWUpCiAgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8g
PSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5zZWN1
cml0eU9yaWdpbigpKTsKQEAgLTQxMzUsOCArNDExMyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOZXdXaW4KIAogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIG5hdmlnYXRpb25BY3Rpb24uZ2V0KCks
IFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAotICAgIH0gZWxzZQotICAgICAgICBtX3BvbGlj
eUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCp0aGlzLCAqZnJhbWUsIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUsIFdURk1vdmUobGlzdGVuZXIp
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKKyAgICB9CisgICAgICAgIAogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCkBAIC00MTYwLDExICs0MTM4LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JSZXNwb24KICAgICAgICAgfSkpOwogICAgIH0sIFNob3VsZEV4cGVjdFNh
ZmVCcm93c2luZ1Jlc3VsdDo6Tm8pKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsK
KyAgICBpZiAobV9wb2xpY3lDbGllbnQpCisgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d01JTUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxzZSB7CiAgICAgICAg
IGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0
ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5zZWN1
cml0eU9yaWdpbigpKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSk7
CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJl
c3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUobGlzdGVu
ZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKCp0aGlzLCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93
TUlNRVR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtNDE5
NCw4ICs0MTczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NAog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNvcmU6
OlVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBpZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4m
JiBub3RpZmljYXRpb25zKQogewotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKCp0aGlzLCBX
VEZNb3ZlKHVybCksIFdURk1vdmUoaWRlbnRpZmllcnMpLCBXVEZNb3ZlKG5vdGlmaWNhdGlvbnMp
KTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbigq
dGhpcywgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKGlkZW50aWZpZXJzKSwgV1RGTW92ZShub3RpZmlj
YXRpb25zKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90
IGZyYW1lSUQpIApAQCAtNDQ1NSwyMiArNDQzMywxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5h
dmFpbGFibGVQbHVnaW5CdXR0CiAjaWYgRU5BQkxFKFdFQkdMKQogdm9pZCBXZWJQYWdlUHJveHk6
OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2Vi
R0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIGlmIChtX25hdmln
YXRpb25DbGllbnQpIHsKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJHTExvYWRQb2xp
Y3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIChXZWJHTExvYWRQb2xpY3kg
cG9saWN5KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90
Pihwb2xpY3kpKTsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlcGx5KHN0YXRp
Y19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVh
dGlvbikpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1
cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoV2ViR0xMb2FkUG9saWN5IHBvbGljeSkgbXV0
YWJsZSB7CisgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChV
UkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVS
TDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkg
ewotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRo
aXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIChXZWJHTExvYWRQb2xpY3kgcG9saWN5
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xp
Y3kpKTsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlcGx5KHN0YXRpY19jYXN0
PHVpbnQzMl90PihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbikp
OworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywg
dXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kpIG11
dGFibGUgeworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7Cisg
ICAgfSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCkBAIC01ODcwLDggKzU4NDIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzCiAKICAgICB1cGRhdGVC
YWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xp
ZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NEaWRCZWNvbWVVbnJlc3Bv
bnNpdmUoKnRoaXMpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVj
b21lUmVzcG9uc2l2ZSgpCkBAIC01ODgxLDggKzU4NTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cHJvY2Vzc0RpZEJlY29tZVJlc3BvCiAgICAgCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlRGlzY2Fy
ZGFibGVTdGF0ZSgpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9u
YXZpZ2F0aW9uQ2xpZW50LT5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgqdGhpcyk7CisgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgqdGhpcyk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsQ2hhbmdlUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpCkBA
IC01OTU4LDEwICs1OTI4LDEwIEBAIHN0YXRpYyBib29sIHNob3VsZFJlbG9hZEFmdGVyUHJvY2Vz
c1Rlcm0KIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaFByb2Nlc3NEaWRUZXJtaW5hdGUoUHJv
Y2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKICAgICBib29sIGhhbmRsZWRCeUNsaWVu
dCA9IGZhbHNlOwotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgaWYgKG1fbG9hZGVy
Q2xpZW50KQorICAgICAgICBoYW5kbGVkQnlDbGllbnQgPSByZWFzb24gIT0gUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudCAmJiBtX2xvYWRlckNsaWVudC0+cHJvY2Vz
c0RpZENyYXNoKCp0aGlzKTsKKyAgICBlbHNlCiAgICAgICAgIGhhbmRsZWRCeUNsaWVudCA9IG1f
bmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0RpZFRlcm1pbmF0ZSgqdGhpcywgcmVhc29uKTsKLSAg
ICBlbHNlIGlmIChyZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRC
eUNsaWVudCkKLSAgICAgICAgaGFuZGxlZEJ5Q2xpZW50ID0gbV9sb2FkZXJDbGllbnQtPnByb2Nl
c3NEaWRDcmFzaCgqdGhpcyk7CiAKICAgICBpZiAoIWhhbmRsZWRCeUNsaWVudCAmJiBzaG91bGRS
ZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbihyZWFzb24pKQogICAgICAgICB0cnlSZWxvYWRB
ZnRlclByb2Nlc3NUZXJtaW5hdGlvbigpOwpAQCAtNjM0NSwxMCArNjMxNSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXQKICAgICB9CiAjZW5kaWYKIAotICAgIGlm
IChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5nZXQoKSk7Ci0gICAgZWxzZQotICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+cGVy
Zm9ybURlZmF1bHRIYW5kbGluZygpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5n
ZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3Vy
cmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnRE
YXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQpAQCAtNjk1
MiwxMyArNjkxOSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3cmFwQ3J5cHRvS2V5KGNvbnN0IFYK
IAogICAgIFZlY3Rvcjx1aW50OF90PiBtYXN0ZXJLZXk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9u
Q2xpZW50KSB7Ci0gICAgICAgIGlmIChSZWZQdHI8QVBJOjpEYXRhPiBrZXlEYXRhID0gbV9uYXZp
Z2F0aW9uQ2xpZW50LT53ZWJDcnlwdG9NYXN0ZXJLZXkoKnRoaXMpKQotICAgICAgICAgICAgbWFz
dGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLnZlY3RvcigpOwotICAgIH0gZWxzZSBp
ZiAoIWdldERlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkobWFzdGVyS2V5KSkgewotICAgICAgICBz
dWNjZWVkZWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoUmVmUHRy
PEFQSTo6RGF0YT4ga2V5RGF0YSA9IG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViQ3J5cHRvTWFzdGVy
S2V5KCp0aGlzKSkKKyAgICAgICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgp
LnZlY3RvcigpOwogCiAgICAgc3VjY2VlZGVkID0gd3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXkobWFz
dGVyS2V5LCBrZXksIHdyYXBwZWRLZXkpOwogfQpAQCAtNjk2OSwxMyArNjkzMSw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QKIAogICAgIFZlY3Rvcjx1aW50OF90
PiBtYXN0ZXJLZXk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlm
IChSZWZQdHI8QVBJOjpEYXRhPiBrZXlEYXRhID0gbV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJDcnlw
dG9NYXN0ZXJLZXkoKnRoaXMpKQotICAgICAgICAgICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0
YVJlZmVyZW5jZSgpLnZlY3RvcigpOwotICAgIH0gZWxzZSBpZiAoIWdldERlZmF1bHRXZWJDcnlw
dG9NYXN0ZXJLZXkobWFzdGVyS2V5KSkgewotICAgICAgICBzdWNjZWVkZWQgPSBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoUmVmUHRyPEFQSTo6RGF0YT4ga2V5RGF0YSA9
IG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkKKyAgICAgICAg
bWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLnZlY3RvcigpOwogCiAgICAgc3Vj
Y2VlZGVkID0gdW53cmFwU2VyaWFsaXplZENyeXB0b0tleShtYXN0ZXJLZXksIHdyYXBwZWRLZXks
IGtleSk7CiB9CkBAIC02OTg1LDEyICs2OTQyLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNpZ25l
ZFB1YmxpY0tleUFuZENoYQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBh
Z2VDbGllbnQoKSk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlm
IChhdXRvIGFwaVN0cmluZyA9IG1fbmF2aWdhdGlvbkNsaWVudC0+c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKCp0aGlzLCBrZXlTaXplSW5kZXgsIEFQSTo6U3RyaW5nOjpjcmVhdGUo
Y2hhbGxlbmdlU3RyaW5nKSwgdXJsKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGFwaVN0cmluZy0+
c3RyaW5nKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdl
U3RyaW5nLCB1cmwpOworICAgIGlmIChhdXRvIGFwaVN0cmluZyA9IG1fbmF2aWdhdGlvbkNsaWVu
dC0+c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKCp0aGlzLCBrZXlTaXplSW5kZXgs
IEFQSTo6U3RyaW5nOjpjcmVhdGUoY2hhbGxlbmdlU3RyaW5nKSwgdXJsKSkKKyAgICAgICAgcmVz
dWx0ID0gYXBpU3RyaW5nLT5zdHJpbmcoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmFkZE1J
TUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpA
QCAtNzEwOSw4ICs3MDYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJl
RGlkQgogICAgIG1faXNTaG93aW5nTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCA9IHRydWU7CiAg
ICAgcGFnZUNsaWVudCgpLm5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4oKTsKIAotICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkQmVnaW5O
YXZpZ2F0aW9uR2VzdHVyZSgqdGhpcyk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRCZWdp
bk5hdmlnYXRpb25HZXN0dXJlKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmln
YXRpb25HZXN0dXJlV2lsbEVuZChib29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYgaXRlbSkKQEAgLTcxMTksOCArNzA3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZp
Z2F0aW9uR2VzdHVyZVdpbGwKIAogICAgIHBhZ2VDbGllbnQoKS5uYXZpZ2F0aW9uR2VzdHVyZVdp
bGxFbmQod2lsbE5hdmlnYXRlLCBpdGVtKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQp
Ci0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlKCp0
aGlzLCB3aWxsTmF2aWdhdGUsIGl0ZW0pOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2lsbEVu
ZE5hdmlnYXRpb25HZXN0dXJlKCp0aGlzLCB3aWxsTmF2aWdhdGUsIGl0ZW0pOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQoYm9vbCB3aWxsTmF2aWdhdGUs
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCkBAIC03MTI5LDggKzcwODAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFCiAKICAgICBwYWdlQ2xpZW50KCku
bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQod2lsbE5hdmlnYXRlLCBpdGVtKTsKIAotICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRW5kTmF2
aWdhdGlvbkdlc3R1cmUoKnRoaXMsIHdpbGxOYXZpZ2F0ZSwgaXRlbSk7CisgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50LT5kaWRFbmROYXZpZ2F0aW9uR2VzdHVyZSgqdGhpcywgd2lsbE5hdmlnYXRlLCBp
dGVtKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKCkK
QEAgLTcxNTMsOCArNzEwMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVy
ZVNuYXAKIAogICAgIHBhZ2VDbGllbnQoKS5kaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBz
aG90KCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKnRoaXMpOworICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgq
dGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZShN
ZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbmV3U3RhdGUsIHVpbnQ2NF90IHNvdXJjZUVs
ZW1lbnRJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZp
c2lvbiAyMzYwNzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MjEsNyArNDIyLDcgQEAgcHVibGljOgogICAgIEFQ
STo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQqIGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkgeyBy
ZXR1cm4gbV9kaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5nZXQoKTsgfQogICAgIHZvaWQgc2V0RGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpGb3JtQ2xpZW50PiYmKTsKLSAgICB2b2lkIHNldE5hdmlnYXRpb25DbGllbnQoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4mJik7CisgICAgdm9pZCBzZXROYXZpZ2F0aW9u
Q2xpZW50KFVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0
SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpIaXN0b3J5Q2xpZW50PiYmKTsKICAg
ICB2b2lkIHNldExvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMb2FkZXJDbGllbnQ+
JiYpOwogICAgIHZvaWQgc2V0UG9saWN5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGlj
eUNsaWVudD4mJik7CkBAIC0xODM4LDcgKzE4MzksNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBtX2xvYWRlckNsaWVudDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IG1fcG9saWN5Q2xpZW50OwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IG1fbmF2aWdhdGlvbkNsaWVudDsKKyAgICBV
bmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiBtX25hdmlnYXRpb25DbGllbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50OwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiBtX2ljb25Mb2FkaW5nQ2xp
ZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+IG1fZm9ybUNsaWVudDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24g
MjM2MDc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjI1NSw4ICsyMjU1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdh
dGlvbkNsaWVudChXS1BhZwogCiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkgPSB0b0lt
cGwocGFnZVJlZik7CiAKLSAgICBhdXRvIG5hdmlnYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5hdmlnYXRpb25DbGllbnQ+KHdrQ2xpZW50KTsKLSAgICB3ZWJQYWdlUHJveHktPnNldE5h
dmlnYXRpb25DbGllbnQoV1RGTW92ZShuYXZpZ2F0aW9uQ2xpZW50KSk7CisgICAgd2ViUGFnZVBy
b3h5LT5zZXROYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8TmF2aWdhdGlvbkNsaWVudD4o
d2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQ
YWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkNsaWVu
dC5jcHAJKHJldmlzaW9uIDIzNjA3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiAr
MTQwLDYgQEAgcHJpdmF0ZToKIAogdm9pZCBhdHRhY2hOYXZpZ2F0aW9uQ2xpZW50VG9WaWV3KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmll
dykuc2V0TmF2aWdhdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRpb25DbGllbnQ+
KHdlYlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXROYXZpZ2F0
aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8TmF2aWdhdGlvbkNsaWVudD4od2ViVmlldykpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUuaAkocmV2aXNpb24gMjM2MDc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBv
cnQgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBv
cnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvVW5pcXVlUmVmLmg+CiAjaW1wb3J0IDx3
dGYvV2Vha09iakNQdHIuaD4KIAogQGNsYXNzIFdLV2ViVmlldzsKQEAgLTYxLDcgKzYyLDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIE5hdmlnYXRpb25TdGF0ZSYgZnJvbVdlYlBhZ2UoV2ViUGFn
ZVByb3h5Jik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiBj
cmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCk7CisgICAgVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNs
aWVudD4gY3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6
Okhpc3RvcnlDbGllbnQ+IGNyZWF0ZUhpc3RvcnlDbGllbnQoKTsKIAogICAgIFJldGFpblB0cjxp
ZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+ID4gbmF2aWdhdGlvbkRlbGVnYXRlKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShy
ZXZpc2lvbiAyMzYwNzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMSw5ICsxMjEsOSBAQCBOYXZpZ2F0aW9u
U3RhdGUmIE5hdmlnYXRpb25TdGF0ZTo6ZnJvbVdlCiAgICAgcmV0dXJuICpuYXZpZ2F0aW9uU3Rh
dGVzKCkuZ2V0KCZ3ZWJQYWdlUHJveHkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOYXZp
Z2F0aW9uQ2xpZW50PiBOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZU5hdmlnYXRpb25DbGllbnQoKQor
VW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVO
YXZpZ2F0aW9uQ2xpZW50KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0
aW9uQ2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TmF2aWdhdGlvbkNs
aWVudD4oKnRoaXMpOwogfQogICAgIAogc3RkOjp1bmlxdWVfcHRyPEFQSTo6SGlzdG9yeUNsaWVu
dD4gTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVIaXN0b3J5Q2xpZW50KCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMjM2
MDc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTEyMywxNCArMTEyMywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkU3RhcnRMb2FkRm9yUXVpY2tMCiB7CiAgICAgLy8gRW5zdXJlIHRoYXQgZmlsZU5hbWUgaXNu
J3QgcmVhbGx5IGEgcGF0aCBuYW1lCiAgICAgc3RhdGljX2Fzc2VydChub3RGb3VuZCArIDEgPT0g
MCwgIlRoZSBmb2xsb3dpbmcgbGluZSBhc3N1bWVzIFdURjo6bm90Rm91bmQgZXF1YWxzIC0xIik7
Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVOYW1lLnN1
YnN0cmluZyhmaWxlTmFtZS5yZXZlcnNlRmluZCgnLycpICsgMSksIHV0aSk7CisgICAgbV9uYXZp
Z2F0aW9uQ2xpZW50LT5kaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5yZXZlcnNlRmluZCgnLycpICsgMSksIHV0aSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBRdWlja0xvb2tEb2N1bWVudERhdGEmIGRhdGEpCiB7Ci0gICAg
aWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShkYXRhKTsKKyAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGRhdGEpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBhc3N3b3JkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350036</attachid>
            <date>2018-09-18 11:42:36 -0700</date>
            <delta_ts>2018-09-18 13:09:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189012-20180918114235.patch</filename>
            <type>text/plain</type>
            <size>35160</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYwOTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDE4LTA5LTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXZWJQYWdl
UHJveHkgYWx3YXlzIGhhdmUgYSBBUEk6Ok5hdmlnYXRpb25DbGllbnQgaW5zdGVhZCBvZiBhbHdh
eXMgaGF2aW5nIGEgQVBJOjpMb2FkZXJDbGllbnQgYW5kIEFQSTo6UG9saWN5Q2xpZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFdlYktpdDIg
d2FzIGJlaW5nIGRldmVsb3BlZCwgd2UgaW5pdGlhbGx5IG1hZGUgdGhlIEMgQVBJIFdLUGFnZVNl
dFBhZ2VQb2xpY3lDbGllbnQgYW5kIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQuCisgICAgICAg
IFdoZW4gd2UgcmVsZWFzZWQgV0tXZWJWaWV3LCBpdCB3YXMgdXNpbmcgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUsIGVxdWl2YWxlbnQgdG8gV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQuCisgICAg
ICAgIFRvIHN1cHBvcnQgb25lIG9yIHRoZSBvdGhlciwgd2Ugd291bGQgdXNlIHRoZSBuYXZpZ2F0
aW9uIGNsaWVudCBpZiBpdCB3YXMgcHJlc2VudCwgYnV0IGlmIG5vdCB3ZSB3b3VsZCBmYWxsIGJh
Y2sgdG8gdGhlCisgICAgICAgIGxvYWRlciBvciBwb2xpY3kgY2xpZW50LiAgU2luY2UgdGhlIGxv
YWRlciBhbmQgcG9saWN5IGNsaWVudHMgYXJlIG5vdyBiZWluZyBtaW5pbWFsbHkgc3VwcG9ydGVk
IG9ubHkgdW50aWwgbGVnYWN5CisgICAgICAgIHNvZnR3YXJlIG1pZ3JhdGVzIHRvIHRoZSBuYXZp
Z2F0aW9uIGNsaWVudCwgd2UgYXJlIGFkZGluZyBuZXcgZnVuY3Rpb25hbGl0eSB0byB0aGUgbmF2
aWdhdGlvbiBjbGllbnQuCisgICAgICAgIE1ha2luZyB0aGUgbmF2aWdhdGlvbiBjbGllbnQgdGhl
IGRlZmF1bHQgYW5kIHVzaW5nIHRoZSBsb2FkZXIgb3IgcG9saWN5IGNsaWVudCBvbmx5IGlmIHRo
ZXkgYXJlIHByZXNlbnQgc3VwcG9ydHMKKyAgICAgICAgdGhlIGxlZ2FjeSBzb2Z0d2FyZSBhbmQg
bWFrZXMgdXMgaGF2ZSBmZXdlciBmb3Jnb3R0ZW4gbnVsbCBjaGVja3Mgd2hlbiBhZGRpbmcgbmV3
IGZ1bmN0aW9uYWxpdHkgdG8gdGhlIG5hdmlnYXRpb24gY2xpZW50LgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlv
bkNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRO
YXZpZ2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRMb2Fk
ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBvbGljeUNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWFjaExheW91dE1pbGVzdG9u
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSdW5JbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d3JhcENyeXB0
b0tleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0
dXJlRGlkQmVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25H
ZXN0dXJlV2lsbEVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bmF2aWdhdGlv
bkdlc3R1cmVEaWRFbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om5hdmlnYXRp
b25HZXN0dXJlU25hcHNob3RXYXNSZW1vdmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisKICsyMDE4LTA4LTE3ICBCZW4gUmljaGFyZHMgIDxiZW50b25fcmljaGFyZHNA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzY3JpcHQgdG8gZ2VuZXJhdGUgV2ViQ29udGVudCBz
ZXJ2aWNlIHJlc291cmNlIGZpbGVzIGFuZCBjaGFuZ2UgWFBDIHNlcnZpY2UgbWFpbiBTUEkgdG8g
aGF2ZSBpdCdzIG93biBoZWFkZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkocmV2aXNpb24gMjM2MDc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgwLDggKzM4MCw3IEBAIFJlZjxX
ZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFAKIFdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vzcywg
dWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQogICAgIDogbV9wYWdlQ2xpZW50KG1ha2VXZWFrUHRyKHBhZ2VDbGllbnQpKQogICAgICwg
bV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCi0gICAgLCBtX2xvYWRlckNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9hZGVyQ2xpZW50PigpKQotICAgICwgbV9wb2xp
Y3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNsaWVudD4oKSkKKyAgICAsIG1f
bmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKSkK
ICAgICAsIG1faWNvbkxvYWRpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2Fk
aW5nQ2xpZW50PigpKQogICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpG
b3JtQ2xpZW50PigpKQogICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlD
bGllbnQ+KCkpCkBAIC01NjcsMjggKzU2NiwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SGlz
dG9yeUNsaWVudChzdGQ6CiAgICAgbV9oaXN0b3J5Q2xpZW50ID0gV1RGTW92ZShoaXN0b3J5Q2xp
ZW50KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldE5hdmlnYXRpb25DbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4mJiBuYXZpZ2F0aW9uQ2xpZW50KQordm9p
ZCBXZWJQYWdlUHJveHk6OnNldE5hdmlnYXRpb25DbGllbnQoVW5pcXVlUmVmPEFQSTo6TmF2aWdh
dGlvbkNsaWVudD4mJiBuYXZpZ2F0aW9uQ2xpZW50KQogewogICAgIG1fbmF2aWdhdGlvbkNsaWVu
dCA9IFdURk1vdmUobmF2aWdhdGlvbkNsaWVudCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiYmIGxvYWRl
ckNsaWVudCkKIHsKLSAgICBpZiAoIWxvYWRlckNsaWVudCkgewotICAgICAgICBtX2xvYWRlckNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMb2FkZXJDbGllbnQ+KCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICBtX2xvYWRlckNsaWVudCA9IFdURk1vdmUobG9hZGVyQ2xpZW50
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpQb2xpY3lDbGllbnQ+JiYgcG9saWN5Q2xpZW50KQogewotICAgIGlmICghcG9saWN5
Q2xpZW50KSB7Ci0gICAgICAgIG1fcG9saWN5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OlBvbGljeUNsaWVudD4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIG1fcG9saWN5
Q2xpZW50ID0gV1RGTW92ZShwb2xpY3lDbGllbnQpOwogfQogCkBAIC05MDksOSArODk4LDkgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKIAogICAgIHJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJl
YXNvbjo6UGFnZUludmFsaWRhdGVkKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkxvYWRlckNsaWVudD4oKTsKLSAgICBtX25hdmlnYXRpb25DbGllbnQgPSBu
dWxscHRyOwotICAgIG1fcG9saWN5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGlj
eUNsaWVudD4oKTsKKyAgICBtX2xvYWRlckNsaWVudCA9IG51bGxwdHI7CisgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCk7CisgICAg
bV9wb2xpY3lDbGllbnQgPSBudWxscHRyOwogICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CiAgICAgbV9mb3JtQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CiAgICAgbV91aUNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4oKTsKQEAgLTEyODQsNyArMTI3Myw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZEwKIHsKICAgICBQYWdlQ2xp
ZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCi0gICAgaWYgKCFtX25hdmln
YXRpb25DbGllbnQgfHwgIW1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0KCp0aGlzLCBhZGRlZCwgcmVtb3ZlZCkpCisgICAgaWYgKCFtX25hdmlnYXRpb25DbGllbnQt
PmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgqdGhpcywgYWRkZWQsIHJlbW92ZWQpICYmIG1fbG9h
ZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0KCp0aGlzLCBhZGRlZCwgV1RGTW92ZShyZW1vdmVkKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0
aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CkBAIC0xMjk3LDE3ICsxMjg2LDE1
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsR29Ub0JhY2tGb3J3YXJkTGkKIHsKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCi0gICAgaWYgKGF1dG8q
IGl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+aXRlbUZvcklEKGl0ZW1JRCkpIHsKLSAgICAgICAg
aWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKCp0aGlzLCAqaXRlbSwgaW5QYWdlQ2FjaGUsIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwotICAgIH0KKyAgICBpZiAoYXV0byogaXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0LT5pdGVt
Rm9ySUQoaXRlbUlEKSkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT53aWxsR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0oKnRoaXMsICppdGVtLCBpblBhZ2VDYWNoZSwgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIGJv
b2wgV2ViUGFnZVByb3h5OjpzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxp
c3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCi0gICAgcmV0dXJuIG1fbG9hZGVyQ2xpZW50
LT5zaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QoKnRoaXMsIGl0ZW0p
OworICAgIHJldHVybiAhbV9sb2FkZXJDbGllbnQgfHwgbV9sb2FkZXJDbGllbnQtPnNob3VsZEtl
ZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdCgqdGhpcywgaXRlbSk7CiB9CiAKIGJv
b2wgV2ViUGFnZVByb3h5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
QEAgLTIyMDcsMTIgKzIxOTQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4oY29u
c3QgU3RyaQogICAgIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAobV9uYXZpZ2F0
aW9uQ2xpZW50KSB7Ci0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9y
UGx1Z2luTG9hZCgqdGhpcywgc3RhdGljX2Nhc3Q8UGx1Z2luTW9kdWxlTG9hZFBvbGljeT4ocGx1
Z2luTG9hZFBvbGljeSksIHBsdWdpbkluZm9ybWF0aW9uLmdldCgpLCBXVEZNb3ZlKGZpbmRQbHVn
aW5Db21wbGV0aW9uKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKKyAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQoKnRoaXMsIHN0YXRpY19j
YXN0PFBsdWdpbk1vZHVsZUxvYWRQb2xpY3k+KHBsdWdpbkxvYWRQb2xpY3kpLCBwbHVnaW5JbmZv
cm1hdGlvbi5nZXQoKSwgV1RGTW92ZShmaW5kUGx1Z2luQ29tcGxldGlvbikpOworI2Vsc2UKICAg
ICBmaW5kUGx1Z2luQ29tcGxldGlvbihwbHVnaW5Mb2FkUG9saWN5LCB7IH0pOworI2VuZGlmCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTM1MDMsMTEgKzM0
ODgsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMbwogICAgIGZy
YW1lLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCh1cmwpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRl
LmNvbW1pdENoYW5nZXMoKTsKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAg
IGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCks
IG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOwotICAgIH0gZWxzZQorICAgIGlmIChtX2xvYWRlckNsaWVudCkKICAgICAgICAgbV9s
b2FkZXJDbGllbnQtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFt
ZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbE5h
dmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0zNTM1LDExICszNTE5
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXIKICAgICBmcmFt
ZS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHJlcXVlc3QudXJs
KCkpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBpZiAobV9u
YXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAg
ICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAg
ICB9IGVsc2UKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50
LT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhp
cywgKmZyYW1lLCBmcmFtZS0+aXNNYWluRnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxs
cHRyLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKKyAgICBlbHNlIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXkpCkBAIC0zNTQ5LDEwICszNTMy
LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaQogICAgIFdlYkZy
YW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNT
QUdFX0NIRUNLKGZyYW1lKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKLSAgICAg
ICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xp
ZW50LT53aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KCp0aGlzLCB1cmwsIGRlbGF5KTsKLSAgICB9
CisgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICBtX25hdmlnYXRpb25DbGll
bnQtPndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoKnRoaXMsIHVybCwgZGVsYXkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlEKQpAQCAtMzU2MiwxMCArMzU0Myw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
YW5jZWxDbGllbnRSZWRpcmUKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+
d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBpZiAo
bV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkK
LSAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3Qo
KnRoaXMpOwotICAgIH0KKyAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKnRoaXMpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCwgV2ViQ29yZTo6VVJMJiYgdXJsKQpAQCAtMzYyMSwxNSArMzYw
MCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hCiAgICAgQVNT
RVJUKCFtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwpOwogICAgIG1fZmFpbGluZ1Byb3Zpc2lv
bmFsTG9hZFVSTCA9IHByb3Zpc2lvbmFsVVJMOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgewotICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRo
aXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgICAgICBlbHNl
IHsKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRG
YWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdh
dGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1
c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UgaWYgKGZyYW1lLT5pc01haW5GcmFt
ZSgpKQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmln
YXRpb25XaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOworICAgIGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IEdldCB0aGUgbWFpbiBmcmFt
ZSdzIGN1cnJlbnQgbmF2aWdhdGlvbi4KICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgbnVsbHB0ciwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgICAgICB9Ci0g
ICAgfSBlbHNlCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3Is
IG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOworICAgIH0KIAogICAgIG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsK
IH0KQEAgLTM3MjIsMTEgKzM3MDAsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExv
YWRGb3JGcmFtZQogI2VuZGlmCiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygp
OwotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01h
aW5GcmFtZSgpKQotICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRDb21taXROYXZp
Z2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9IGVsc2UKKyAgICBp
ZiAobV9sb2FkZXJDbGllbnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDb21taXRMb2Fk
Rm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxz
ZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
ZGlkQ29tbWl0TmF2aWdhdGlvbigqdGhpcywgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUo
KSkKICAgICAgICAgaW52YWxpZGF0ZUFsbEF0dGFjaG1lbnRzKCk7CkBAIC0zNzUwLDcgKzM3Mjgs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkCiAgICAgaWYgKGZy
YW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKICAgICAgICAgbmF2aWdhdGlvbiA9
ICZuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiAKLSAgICBpZiAo
bV9uYXZpZ2F0aW9uQ2xpZW50ICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgIGlmIChmcmFt
ZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hE
b2N1bWVudExvYWQoKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCkBAIC0zNzgy
LDExICszNzYwLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUK
ICAgICBmcmFtZS0+ZGlkRmluaXNoTG9hZCgpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1p
dENoYW5nZXMoKTsKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChp
c01haW5GcmFtZSkKLSAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmluaXNoTmF2
aWdhdGlvbigqdGhpcywgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCisgICAg
aWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoTG9h
ZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVs
c2UgaWYgKGlzTWFpbkZyYW1lKQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZpbmlz
aE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgaWYgKGlz
TWFpbkZyYW1lKSB7CiAgICAgICAgIHJlcG9ydFBhZ2VMb2FkUmVzdWx0KCk7CkBAIC0zODI5LDEx
ICszODA2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHUKICAg
ICBmcmFtZS0+ZGlkRmFpbExvYWQoKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFu
Z2VzKCk7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoZnJhbWUt
PmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxO
YXZpZ2F0aW9uV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9y
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKLSAgICB9IGVsc2UKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCiAgICAgICAgIG1f
bG9hZGVyQ2xpZW50LT5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAqZnJhbWUs
IG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlIGlmIChmcmFtZS0+aXNN
YWluRnJhbWUoKSkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsTmF2aWdhdGlv
bldpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CiAKICAgICBpZiAoaXNNYWluRnJhbWUpIHsKICAgICAgICAgcmVwb3J0UGFnZUxvYWRSZXN1bHQo
ZXJyb3IpOwpAQCAtMzg3MSw3ICszODQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVE
b2N1bWVudE5hdmlnYQogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAKICAg
ICBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSA9IHN0YXRpY19jYXN0
PFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlPihvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZSk7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCAmJiBpc01haW5GcmFtZSkKKyAgICBp
ZiAoaXNNYWluRnJhbWUpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbigqdGhpcywgbmF2aWdhdGlvbi5nZXQoKSwgbmF2aWdhdGlvblR5cGUsIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQpAQCAtMzkyMiw3ICszODk4LDggQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEZpcnN0VmlzdWFsbHlOb25FbQogICAgIFdlYkZyYW1lUHJveHkqIGZy
YW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZy
YW1lKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBpZiAobV9sb2FkZXJDbGllbnQp
CisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JGcmFtZSgqdGhpcywgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJh
bWUoKSkKICAgICAgICAgcGFnZUNsaWVudCgpLmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZvck1haW5GcmFtZSgpOwpAQCAtMzkzNywxMCArMzkxNCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUmVhY2hMYXlvdXRNaWxlc3RvCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90
ZWN0b3IocGFnZUNsaWVudCgpKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAg
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoKnRoaXMs
IHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpKTsKLSAgICBl
bHNlCisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlk
UmVhY2hMYXlvdXRNaWxlc3RvbmUoKnRoaXMsIHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+
KGxheW91dE1pbGVzdG9uZXMpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoKnRoaXMsIHN0YXRpY19jYXN0PExheW91dE1p
bGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCkBAIC0zOTU0LDggKzM5MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRGlzcGxheUluc2VjdXJlQ29uCiAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZERpc3BsYXlP
clJ1bkluc2VjdXJlQ29udGVudCh0cmFuc2FjdGlvbik7CiAgICAgbV9wYWdlTG9hZFN0YXRlLmNv
bW1pdENoYW5nZXMoKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgqdGhpcywgbV9wcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCp0aGlz
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTM5
NjksOCArMzk0NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQK
ICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkRGlzcGxheU9yUnVuSW5zZWN1cmVDb250ZW50KHRyYW5z
YWN0aW9uKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwogCi0gICAgaWYg
KG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSdW5J
bnNlY3VyZUNvbnRlbnQoKnRoaXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
UnVuSW5zZWN1cmVDb250ZW50KCp0aGlzLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2NF90LCBjb25zdCBVc2VyRGF0YSYpCkBAIC00MDc3
LDcgKzQwNTIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSA9IHdlYnNpdGVEYXRhU3Rv
cmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS0+bG9nRnJhbWVOYXZpZ2F0aW9uKCpmcmFtZSwgVVJMKFVSTCgpLCBtX3BhZ2VM
b2FkU3RhdGUudXJsKCkpLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKTsKIAotICAg
IGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKKyAgICBpZiAobV9wb2xpY3lDbGllbnQpCisgICAg
ICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlz
LCBmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWUs
IG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShsaXN0ZW5lciksIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOworICAgIGVsc2UgewogICAgICAgICBhdXRvIGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlP
cmlnaW4oKSk7CiAgICAgICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZv
OwogICAgICAgICBpZiAoIWZyb21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSBmcmFtZSkKQEAg
LTQwOTEsOCArNDA2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2EKICAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9u
OjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5n
ZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCksIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShy
ZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1v
dmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFpbkZyYW1lTmF2aWdhdGlvbik7CiAKICAgICAg
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0
aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKCp0aGlzLCBmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSks
IG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIH0KIAogICAgIG1fc2hvdWxkU3VwcHJlc3NBcHBM
aW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGZhbHNlOwogfQpAQCAtNDEyNCw3
ICs0MTAwLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbgogICAg
ICAgICB9KSk7CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObykpOwog
Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgeworICAgIGlmIChtX3BvbGljeUNsaWVudCkK
KyAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigq
dGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBX
VEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxzZSB7CiAgICAgICAgIFJlZlB0cjxBUEk6
OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwogICAgICAgICBpZiAoZnJhbWUpCiAgICAgICAg
ICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgZnJh
bWVTZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKTsKQEAgLTQxMzUsOCArNDExMyw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW4KIAogICAgICAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIG5h
dmlnYXRpb25BY3Rpb24uZ2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAotICAgIH0g
ZWxzZQotICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5h
bWUsIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICB9CisgICAgICAgIAogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC00MTYwLDExICs0MTM4LDEyIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb24KICAgICAgICAgfSkpOwog
ICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8pKTsKIAotICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQpIHsKKyAgICBpZiAobV9wb2xpY3lDbGllbnQpCisgICAgICAgIG1f
cG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNw
b25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CisgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZp
Z2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgZnJh
bWVTZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9u
c2UsIGNhblNob3dNSU1FVHlwZSk7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNw
b25zZSksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9w
b2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKCp0aGlzLCAqZnJhbWUsIHJlc3Bv
bnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
KyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQpAQCAtNDE5NCw4ICs0MTczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Ondp
bGxTdWJtaXRGb3JtKHVpbnQ2NAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uKFdlYkNvcmU6OlVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBpZGVudGlm
aWVycywgVmVjdG9yPFN0cmluZz4mJiBub3RpZmljYXRpb25zKQogewotICAgIGlmIChtX25hdmln
YXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+Y29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uKCp0aGlzLCBXVEZNb3ZlKHVybCksIFdURk1vdmUoaWRlbnRpZmllcnMpLCBX
VEZNb3ZlKG5vdGlmaWNhdGlvbnMpKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPmNvbnRlbnRS
dWxlTGlzdE5vdGlmaWNhdGlvbigqdGhpcywgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKGlkZW50aWZp
ZXJzKSwgV1RGTW92ZShub3RpZmljYXRpb25zKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFT
dG9yZSYgc3RvcmUsIHVpbnQ2NF90IGZyYW1lSUQpIApAQCAtNDQ1NSwyMiArNDQzMywxNiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0CiAjaWYgRU5BQkxFKFdFQkdM
KQogdm9pZCBXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKLSAgICAgICAgbV9uYXZpZ2F0aW9u
Q2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBs
eSldIChXZWJHTExvYWRQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJlcGx5
KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbikpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2Vi
R0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoV2ViR0xM
b2FkUG9saWN5IHBvbGljeSkgbXV0YWJsZSB7CisgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVp
bnQzMl90Pihwb2xpY3kpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc29s
dmVXZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
c29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgaWYg
KG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJlc29s
dmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIChX
ZWJHTExvYWRQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJlcGx5KHN0YXRp
Y19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6
OldlYkdMQWxsb3dDcmVhdGlvbikpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVzb2x2ZVdl
YkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFdlYkdM
TG9hZFBvbGljeSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1
aW50MzJfdD4ocG9saWN5KSk7CisgICAgfSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQog
CkBAIC01ODcwLDggKzU4NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29t
ZVVucmVzCiAKICAgICB1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCk7CiAKLSAg
ICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnBy
b2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKnRoaXMpOworICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpCkBAIC01ODgxLDggKzU4NTIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvCiAgICAgCiAgICAgdXBk
YXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVTdGF0ZSgpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlv
bkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5wcm9jZXNzRGlkQmVjb21lUmVz
cG9uc2l2ZSgqdGhpcyk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5wcm9jZXNzRGlkQmVjb21l
UmVzcG9uc2l2ZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsQ2hhbmdlUHJv
Y2Vzc0lzUmVzcG9uc2l2ZSgpCkBAIC01OTU4LDEwICs1OTI4LDEwIEBAIHN0YXRpYyBib29sIHNo
b3VsZFJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm0KIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaFBy
b2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKICAg
ICBib29sIGhhbmRsZWRCeUNsaWVudCA9IGZhbHNlOwotICAgIGlmIChtX25hdmlnYXRpb25DbGll
bnQpCisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQorICAgICAgICBoYW5kbGVkQnlDbGllbnQgPSBy
ZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudCAmJiBt
X2xvYWRlckNsaWVudC0+cHJvY2Vzc0RpZENyYXNoKCp0aGlzKTsKKyAgICBlbHNlCiAgICAgICAg
IGhhbmRsZWRCeUNsaWVudCA9IG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0RpZFRlcm1pbmF0
ZSgqdGhpcywgcmVhc29uKTsKLSAgICBlbHNlIGlmIChyZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudCkKLSAgICAgICAgaGFuZGxlZEJ5Q2xpZW50ID0g
bV9sb2FkZXJDbGllbnQtPnByb2Nlc3NEaWRDcmFzaCgqdGhpcyk7CiAKICAgICBpZiAoIWhhbmRs
ZWRCeUNsaWVudCAmJiBzaG91bGRSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbihyZWFzb24p
KQogICAgICAgICB0cnlSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbigpOwpAQCAtNjM0NSwx
MCArNjMxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXQKICAg
ICB9CiAjZW5kaWYKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2
aWdhdGlvbkNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7Ci0gICAgZWxzZQotICAgICAgICBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS0+cGVyZm9ybURlZmF1bHRIYW5kbGluZygpOworICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGNl
ZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNh
Z2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdl
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQpAQCAtNjk1MiwxMyArNjkxOSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3
cmFwQ3J5cHRvS2V5KGNvbnN0IFYKIAogICAgIFZlY3Rvcjx1aW50OF90PiBtYXN0ZXJLZXk7CiAK
LSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0gICAgICAgIGlmIChSZWZQdHI8QVBJOjpE
YXRhPiBrZXlEYXRhID0gbV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJDcnlwdG9NYXN0ZXJLZXkoKnRo
aXMpKQotICAgICAgICAgICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLnZl
Y3RvcigpOwotICAgIH0gZWxzZSBpZiAoIWdldERlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkobWFz
dGVyS2V5KSkgewotICAgICAgICBzdWNjZWVkZWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoYXV0byBrZXlEYXRhID0gbV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJDcnlw
dG9NYXN0ZXJLZXkoKnRoaXMpKQorICAgICAgICBtYXN0ZXJLZXkgPSBrZXlEYXRhLT5kYXRhUmVm
ZXJlbmNlKCkudmVjdG9yKCk7CiAKICAgICBzdWNjZWVkZWQgPSB3cmFwU2VyaWFsaXplZENyeXB0
b0tleShtYXN0ZXJLZXksIGtleSwgd3JhcHBlZEtleSk7CiB9CkBAIC02OTY5LDEzICs2OTMxLDgg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleShjb25zdAogCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IG1hc3RlcktleTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKLSAg
ICAgICAgaWYgKFJlZlB0cjxBUEk6OkRhdGE+IGtleURhdGEgPSBtX25hdmlnYXRpb25DbGllbnQt
PndlYkNyeXB0b01hc3RlcktleSgqdGhpcykpCi0gICAgICAgICAgICBtYXN0ZXJLZXkgPSBrZXlE
YXRhLT5kYXRhUmVmZXJlbmNlKCkudmVjdG9yKCk7Ci0gICAgfSBlbHNlIGlmICghZ2V0RGVmYXVs
dFdlYkNyeXB0b01hc3RlcktleShtYXN0ZXJLZXkpKSB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IGZh
bHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChhdXRvIGtleURhdGEgPSBtX25h
dmlnYXRpb25DbGllbnQtPndlYkNyeXB0b01hc3RlcktleSgqdGhpcykpCisgICAgICAgIG1hc3Rl
cktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKIAogICAgIHN1Y2NlZWRl
ZCA9IHVud3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXkobWFzdGVyS2V5LCB3cmFwcGVkS2V5LCBrZXkp
OwogfQpAQCAtNjk4NSwxMiArNjk0Miw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaWduZWRQdWJs
aWNLZXlBbmRDaGEKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoYXV0
byBhcGlTdHJpbmcgPSBtX25hdmlnYXRpb25DbGllbnQtPnNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZygqdGhpcywga2V5U2l6ZUluZGV4LCBBUEk6OlN0cmluZzo6Y3JlYXRlKGNoYWxs
ZW5nZVN0cmluZyksIHVybCkpCi0gICAgICAgICAgICByZXN1bHQgPSBhcGlTdHJpbmctPnN0cmlu
ZygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHJlc3VsdCA9IFdlYkNvcmU6OnNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmlu
ZywgdXJsKTsKKyAgICBpZiAoYXV0byBhcGlTdHJpbmcgPSBtX25hdmlnYXRpb25DbGllbnQtPnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZygqdGhpcywga2V5U2l6ZUluZGV4LCBBUEk6
OlN0cmluZzo6Y3JlYXRlKGNoYWxsZW5nZVN0cmluZyksIHVybCkpCisgICAgICAgIHJlc3VsdCA9
IGFwaVN0cmluZy0+c3RyaW5nKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjphZGRNSU1FVHlw
ZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTcx
MDksOCArNzA2Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEIK
ICAgICBtX2lzU2hvd2luZ05hdmlnYXRpb25HZXN0dXJlU25hcHNob3QgPSB0cnVlOwogICAgIHBh
Z2VDbGllbnQoKS5uYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKCk7CiAKLSAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEJlZ2luTmF2aWdh
dGlvbkdlc3R1cmUoKnRoaXMpOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkQmVnaW5OYXZp
Z2F0aW9uR2VzdHVyZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9u
R2VzdHVyZVdpbGxFbmQoYm9vbCB3aWxsTmF2aWdhdGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
IGl0ZW0pCkBAIC03MTE5LDggKzcwNzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlv
bkdlc3R1cmVXaWxsCiAKICAgICBwYWdlQ2xpZW50KCkubmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5k
KHdpbGxOYXZpZ2F0ZSwgaXRlbSk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAg
ICAgICBtX25hdmlnYXRpb25DbGllbnQtPndpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZSgqdGhpcywg
d2lsbE5hdmlnYXRlLCBpdGVtKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPndpbGxFbmROYXZp
Z2F0aW9uR2VzdHVyZSgqdGhpcywgd2lsbE5hdmlnYXRlLCBpdGVtKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQpAQCAtNzEyOSw4ICs3MDgwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkRQogCiAgICAgcGFnZUNsaWVudCgpLm5hdmln
YXRpb25HZXN0dXJlRGlkRW5kKHdpbGxOYXZpZ2F0ZSwgaXRlbSk7CiAKLSAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEVuZE5hdmlnYXRp
b25HZXN0dXJlKCp0aGlzLCB3aWxsTmF2aWdhdGUsIGl0ZW0pOworICAgIG1fbmF2aWdhdGlvbkNs
aWVudC0+ZGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUoKnRoaXMsIHdpbGxOYXZpZ2F0ZSwgaXRlbSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEVuZCgpCkBAIC03
MTUzLDggKzcxMDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlvbkdlc3R1cmVTbmFw
CiAKICAgICBwYWdlQ2xpZW50KCkuZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgp
OwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xp
ZW50LT5kaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCp0aGlzKTsKKyAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKnRoaXMp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoTWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5ld1N0YXRlLCB1aW50NjRfdCBzb3VyY2VFbGVtZW50
SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MjM2MDc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNDIxLDcgKzQyMiw3IEBAIHB1YmxpYzoKICAgICBBUEk6OkRp
YWdub3N0aWNMb2dnaW5nQ2xpZW50KiBkaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpIHsgcmV0dXJu
IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50PiYmKTsKICAgICB2b2lkIHNldEZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rm9y
bUNsaWVudD4mJik7Ci0gICAgdm9pZCBzZXROYXZpZ2F0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+JiYpOworICAgIHZvaWQgc2V0TmF2aWdhdGlvbkNsaWVu
dChVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldEhpc3Rv
cnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SGlzdG9yeUNsaWVudD4mJik7CiAgICAgdm9p
ZCBzZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiYmKTsK
ICAgICB2b2lkIHNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGll
bnQ+JiYpOwpAQCAtMTgzOCw3ICsxODM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxvYWRlckNsaWVudD4gbV9sb2FkZXJDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFQSTo6UG9saWN5Q2xpZW50PiBtX3BvbGljeUNsaWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiBtX25hdmlnYXRpb25DbGllbnQ7CisgICAgVW5pcXVl
UmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gbV9uYXZpZ2F0aW9uQ2xpZW50OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6Okhpc3RvcnlDbGllbnQ+IG1faGlzdG9yeUNsaWVudDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4gbV9pY29uTG9hZGluZ0NsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiBtX2Zvcm1DbGllbnQ7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIzNjA3
OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyNTUsOCArMjI1NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25D
bGllbnQoV0tQYWcKIAogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5ID0gdG9JbXBsKHBh
Z2VSZWYpOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxO
YXZpZ2F0aW9uQ2xpZW50Pih3a0NsaWVudCk7Ci0gICAgd2ViUGFnZVByb3h5LT5zZXROYXZpZ2F0
aW9uQ2xpZW50KFdURk1vdmUobmF2aWdhdGlvbkNsaWVudCkpOworICAgIHdlYlBhZ2VQcm94eS0+
c2V0TmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPE5hdmlnYXRpb25DbGllbnQ+KHdrQ2xp
ZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1
bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3Bw
CShyZXZpc2lvbiAyMzYwNzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw2
IEBAIHByaXZhdGU6CiAKIHZvaWQgYXR0YWNoTmF2aWdhdGlvbkNsaWVudFRvVmlldyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNl
dE5hdmlnYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0aW9uQ2xpZW50Pih3ZWJW
aWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0TmF2aWdhdGlvbkNs
aWVudChtYWtlVW5pcXVlUmVmPE5hdmlnYXRpb25DbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJ
KHJldmlzaW9uIDIzNjA3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJQ
cm9jZXNzVGhyb3R0bGVyLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1VuaXF1ZVJlZi5oPgogI2ltcG9ydCA8d3RmL1dl
YWtPYmpDUHRyLmg+CiAKIEBjbGFzcyBXS1dlYlZpZXc7CkBAIC02MSw3ICs2Miw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBOYXZpZ2F0aW9uU3RhdGUmIGZyb21XZWJQYWdlKFdlYlBhZ2VQcm94
eSYpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gY3JlYXRl
TmF2aWdhdGlvbkNsaWVudCgpOworICAgIFVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+
IGNyZWF0ZU5hdmlnYXRpb25DbGllbnQoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpIaXN0
b3J5Q2xpZW50PiBjcmVhdGVIaXN0b3J5Q2xpZW50KCk7CiAKICAgICBSZXRhaW5QdHI8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlPiA+IG5hdmlnYXRpb25EZWxlZ2F0ZSgpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2aXNp
b24gMjM2MDc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsOSArMTIxLDkgQEAgTmF2aWdhdGlvblN0YXRl
JiBOYXZpZ2F0aW9uU3RhdGU6OmZyb21XZQogICAgIHJldHVybiAqbmF2aWdhdGlvblN0YXRlcygp
LmdldCgmd2ViUGFnZVByb3h5KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlv
bkNsaWVudD4gTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCkKK1VuaXF1
ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IE5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlTmF2aWdh
dGlvbkNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdGlvbkNs
aWVudD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPE5hdmlnYXRpb25DbGllbnQ+
KCp0aGlzKTsKIH0KICAgICAKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okhpc3RvcnlDbGllbnQ+IE5h
dmlnYXRpb25TdGF0ZTo6Y3JlYXRlSGlzdG9yeUNsaWVudCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDIzNjA3OCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTExMjMsMTQgKzExMjMsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0TG9hZEZvclF1aWNrTAogewogICAgIC8vIEVuc3VyZSB0aGF0IGZpbGVOYW1lIGlzbid0IHJl
YWxseSBhIHBhdGggbmFtZQogICAgIHN0YXRpY19hc3NlcnQobm90Rm91bmQgKyAxID09IDAsICJU
aGUgZm9sbG93aW5nIGxpbmUgYXNzdW1lcyBXVEY6Om5vdEZvdW5kIGVxdWFscyAtMSIpOwotICAg
IGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
U3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShmaWxlTmFtZS5zdWJzdHJp
bmcoZmlsZU5hbWUucmV2ZXJzZUZpbmQoJy8nKSArIDEpLCB1dGkpOworICAgIG1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShmaWxl
TmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUucmV2ZXJzZUZpbmQoJy8nKSArIDEpLCB1dGkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoY29uc3QgUXVpY2tMb29rRG9jdW1lbnREYXRhJiBkYXRhKQogewotICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZGF0YSk7CisgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50LT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShk
YXRhKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkK
</data>
<flag name="review"
          id="367521"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>