<?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>175505</bug_id>
          
          <creation_ts>2017-08-11 16:55:22 -0700</creation_ts>
          <short_desc>Update CachedResourceLoader::requestResource() to return a WTF::Expected</short_desc>
          <delta_ts>2017-08-15 14:16:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit 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>
          <dependson>175482</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1338075</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-11 16:55:22 -0700</bug_when>
    <thetext>Update CachedResourceLoader::requestResource() &amp; co. to return a WTF::Expected instead of using an out parameter for the ResourceError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338219</commentid>
    <comment_count>1</comment_count>
      <attachid>318006</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-12 23:26:41 -0700</bug_when>
    <thetext>Created attachment 318006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338220</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-12 23:27:12 -0700</bug_when>
    <thetext>@Sam: Here is what it looks like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338240</commentid>
    <comment_count>3</comment_count>
      <attachid>318010</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-13 09:18:32 -0700</bug_when>
    <thetext>Created attachment 318010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338274</commentid>
    <comment_count>4</comment_count>
      <attachid>318010</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-13 20:30:43 -0700</bug_when>
    <thetext>Comment on attachment 318010
Patch

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

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:93
&gt; +        return CachedResourceHandle&lt;T&gt; { static_cast&lt;T*&gt;(cachedResource.value().get()) };

In changed code, a downcast was used. Why using a static_cast here?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:729
&gt; +                CachedResourceHandle&lt;CachedResource&gt; resource = createResource(type, WTFMove(request), sessionID());

Can we make createResource return a CachedResourceHandle&lt;CachedResource&gt; instead?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:800
&gt; +            if (!shouldContinueAfterNotifyingLoadedFromMemoryCache(request, resource.get(), error))

Would returning an optional make it better?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:839
&gt; +                return makeUnexpected(ResourceError { String(), 0, url, String(), ResourceError::Type::AccessControl });

AccessControl is usually the reason of immediate failures.
Would be cool to have not null resource errors in the future.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:1258
&gt; +        auto resourceValue = resource.value();

auto&amp; maybe?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.h:178
&gt; +    bool shouldContinueAfterNotifyingLoadedFromMemoryCache(const CachedResourceRequest&amp;, CachedResource*, ResourceError&amp;);

Pre-existing code issue but it would seem that we should pass a const CachedResource* and probably even better a const CachedResource&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338367</commentid>
    <comment_count>5</comment_count>
      <attachid>318044</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-14 09:54:05 -0700</bug_when>
    <thetext>Created attachment 318044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338795</commentid>
    <comment_count>6</comment_count>
      <attachid>318149</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-15 12:40:16 -0700</bug_when>
    <thetext>Created attachment 318149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338873</commentid>
    <comment_count>7</comment_count>
      <attachid>318149</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-15 14:15:13 -0700</bug_when>
    <thetext>Comment on attachment 318149
Patch

Clearing flags on attachment: 318149

Committed r220760: &lt;http://trac.webkit.org/changeset/220760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338874</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-15 14:15:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338876</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-15 14:16:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/33903768&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318006</attachid>
            <date>2017-08-12 23:26:41 -0700</date>
            <delta_ts>2017-08-13 09:18:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175505-20170812232638.patch</filename>
            <type>text/plain</type>
            <size>50731</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk3ZmZiYzJiMmY5M2Fl
YjA2NGExNzhhMzk3ZDA3Nzk4Njg3NWZlNC4uYWI5MDY2MWEzMTkyZTM2NTU0ZDEyNjRjMDNkNDk5
YzI4Mzk5YTFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE3LTA4LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoKSB0byByZXR1cm4gYSBXVEY6OkV4cGVjdGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSgpIHRvIHJldHVybiBhIFdURjo6RXhw
ZWN0ZWQKKyAgICAgICAgdHlwZSBpbnN0ZWFkIG9mIHVzaW5nIGFuIG91dCBwYXJhbWV0ZXIgZm9y
IHRoZSBSZXNvdXJjZUVycm9yIGluIGNhc2Ugb2YKKyAgICAgICAgc3luY2hyb25vdXMgZmFpbHVy
ZS4KKworICAgICAgICAqIE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFjb24pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZSBjb25zdCk6CisgICAgICAg
ICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9u
dEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udCk6CisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6bG9hZEJlc3RGaXRJ
bWFnZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VWYWx1ZTo6bG9hZEltYWdlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlSW1w
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUltcG9ydDo6cmVxdWVzdFN0eWxl
U2hlZXQpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQpOgorICAg
ICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OnN0YXJ0UHJlZmxpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5S
ZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAg
ICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVy
OjpwcmVsb2FkSWZOZWVkZWQpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNv
dXJjZSk6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXN0Q2FjaGVkUmVz
b3VyY2VUbyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFRl
eHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dENTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdWVzdFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdWVzdFhTTFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTVkdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdExpbmtSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1lZGlhKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SWNvbik6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJhd1Jlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0QmVhY29uUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RNYWluUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZENvbnRp
bnVlQWZ0ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlOjpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6OnN0YXJ0TG9hZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OjpzdGFydExvYWRpbmcpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6cmVxdWVzdEltYWdlUmVzb3VyY2Up
OgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRm9udEZhY2VVcmlFbGVtZW50Ojpsb2FkRm9udCk6CisgICAgICAgICogc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6dXBkYXRl
RXh0ZXJuYWxEb2N1bWVudCk6CisgICAgICAgICogeG1sL1hTTEltcG9ydFJ1bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KToKKwogMjAxNy0wOC0xMSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBmaWxlcyBp
bnNpZGUgV2ViQ29yZS93b3JrZXJzIHRvIFdlYkNvcmUvd29ya2Vycy9zZXJ2aWNlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5kZXgg
OGIyZjVhNzgwMmE1MDk5YWE1NDMyMTRkNGU4NzFmY2E3ODgzYTA4YS4uMWZhMWY0MTI2NzE0OTUw
ZGQ0NzIxZjJlM2MzZWEwNjA1NGI5M2RjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCkBAIC03MywxMyArNzMsMTIgQEAgRXhjZXB0
aW9uT3I8Ym9vbD4gTmF2aWdhdG9yQmVhY29uOjpzZW5kQmVhY29uKE5hdmlnYXRvciYsIERvY3Vt
ZW50JiBkb2N1bWVudCwgY28KICAgICAgICAgICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9w
dGlvbnM6Ok1vZGU6Ok5vQ29yczsKICAgICAgICAgfQogICAgIH0KLSAgICBSZXNvdXJjZUVycm9y
IGVycm9yOwotICAgIGlmICghZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0
QmVhY29uUmVzb3VyY2UoeyBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zIH0sICZlcnJvcikpIHsK
LSAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOworICAgIGF1dG8gY2FjaGVkUmVzb3VyY2UgPSBkb2N1bWVu
dC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RCZWFjb25SZXNvdXJjZSh7IFdURk1vdmUo
cmVxdWVzdCksIG9wdGlvbnMgfSk7CisgICAgaWYgKGNhY2hlZFJlc291cmNlKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6Ok5ldHdvcmssIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNhY2hlZFJlc291cmNlLmVycm9yKCku
bG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCmlu
ZGV4IDY2MWU1ZTY0YzYwNzQ5MDhhOGNjZTM0ZDk3ZjQ5ZmVjNzk3ODJmY2EuLmVlMDY4ZjZiMDVl
YmMzOTRlNzRkYTFiNjg0NjM3YjkxM2YxZTAxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVx
dWVzdFNjcmlwdFdpdGhDYWNoZShECiAgICAgaWYgKCFtX2luaXRpYXRvck5hbWUuaXNOdWxsKCkp
CiAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1faW5pdGlhdG9yTmFtZSk7CiAKLSAgICBy
ZXR1cm4gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U2NyaXB0KFdURk1v
dmUocmVxdWVzdCkpOworICAgIHJldHVybiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LnJlcXVlc3RTY3JpcHQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDc1Yzk5
ZDc0MDY5OTVhNThkNDU0NWVjZjFjZmE0MmI2MjhiNzNmZTUuLjYzNTcyYzUxNWJlYTY2NWY1NjI3
NDEyNWJmZjgzY2JhODI0YzE2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
cmNWYWx1ZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBDYWNoZWRGb250KiBDU1NGb250RmFjZVNy
Y1ZhbHVlOjpjYWNoZWRGb250KERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpc1NWRywgYm9vbAog
CiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3Vt
ZW50LT5jb21wbGV0ZVVSTChtX3Jlc291cmNlKSksIG9wdGlvbnMpOwogICAgIHJlcXVlc3Quc2V0
SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1f
Y2FjaGVkRm9udCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RGb250
KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKTsKKyAgICBtX2NhY2hlZEZvbnQgPSBkb2N1bWVudC0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NW
RykudmFsdWVPcihudWxscHRyKTsKICAgICByZXR1cm4gbV9jYWNoZWRGb250LmdldCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggYTVkYjcyZDI0YjI1
ZWZmNGM2YWMzMWQzNmY2Mzk1YjI1ZTE4Y2UzZi4uMWVjYzBhYjMyODMzMjlhNTZiZjBhYmUyNTdm
NzEyZjRkOGI4MmU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApA
QCAtMTA1LDcgKzEwNSw3IEBAIHN0ZDo6cGFpcjxDYWNoZWRJbWFnZSosIGZsb2F0PiBDU1NJbWFn
ZVNldFZhbHVlOjpsb2FkQmVzdEZpdEltYWdlKENhY2hlZFJlc291cmNlCiAgICAgICAgIGlmIChv
cHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKQogICAgICAgICAgICAgcmVx
dWVzdC51cGRhdGVGb3JBY2Nlc3NDb250cm9sKCpkb2N1bWVudCk7CiAKLSAgICAgICAgbV9jYWNo
ZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAg
IG1fY2FjaGVkSW1hZ2UgPSBsb2FkZXIucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkpLnZh
bHVlT3IobnVsbHB0cik7CiAgICAgICAgIG1fYmVzdEZpdEltYWdlU2NhbGVGYWN0b3IgPSBpbWFn
ZS5zY2FsZUZhY3RvcjsKICAgICB9CiAgICAgcmV0dXJuIHsgbV9jYWNoZWRJbWFnZS5nZXQoKSwg
bV9iZXN0Rml0SW1hZ2VTY2FsZUZhY3RvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUu
Y3BwCmluZGV4IDJlMjY2ZGQzN2EwYTc0MzQ5NmFiOTkyMTg4ODAxYjQxNjRkZDRmOTMuLmRmOWI1
NTNkYWU5ZDg0NzE2N2UxMmE4Y2I5MWY2NmE1YTJlMTQzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VWYWx1ZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFs
dWU6OmxvYWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXIK
ICAgICAgICAgICAgIEFTU0VSVChsb2FkZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICByZXF1
ZXN0LnVwZGF0ZUZvckFjY2Vzc0NvbnRyb2woKmxvYWRlci5kb2N1bWVudCgpKTsKICAgICAgICAg
fQotICAgICAgICBtX2NhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJl
cXVlc3QpKTsKKyAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RG
TW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY2Fj
aGVkSW1hZ2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
dWxlSW1wb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCmlu
ZGV4IDAwYTllMzQ4ZjZlNzI0MzgwMTIwNWU3Yjg5Yzc2NGZlNjllMmUyMjguLjY2YjhlZTgzNzE2
M2E4ZTFiYmFjZTJjOTEzOGU0MGFjOTE4NDhlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGVJbXBvcnQuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBTdHlsZVJ1bGVJbXBvcnQ6OnJl
cXVlc3RTdHlsZVNoZWV0KCkKICAgICAgICAgcmVxdWVzdC5zZXRPcHRpb25zKFJlc291cmNlTG9h
ZGVyT3B0aW9ucyhEb05vdFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwg
QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUsIFNr
aXBTZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRl
Q2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9s
aWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGlu
Z1BvbGljeTo6QWxsb3dDYWNoaW5nKSk7CiAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVu
dC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoV1RGTW92
ZShyZXF1ZXN0KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVu
dC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJl
cXVlc3QpKTsKKyAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3Io
bnVsbHB0cik7CiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpIHsKICAgICAgICAgLy8gaWYgdGhlIGlt
cG9ydCBydWxlIGlzIGlzc3VlZCBkeW5hbWljYWxseSwgdGhlIHNoZWV0IG1heSBiZQogICAgICAg
ICAvLyByZW1vdmVkIGZyb20gdGhlIHBlbmRpbmcgc2hlZXQgY291bnQsIHNvIGxldCB0aGUgZG9j
IGtub3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5k
ZXggNzQ1NjAyNmVlOTNmNDkxYTk0ODc2OGRmMjI2YzFhMTMwNmYwMjIyNC4uMGNhYjRlODE4MTE5
Zjk0NDc0OTIzNzRhNzA4NDJmOTE4OWJiZGY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTE2MiwxNCArMTYyLDE0IEBAIHZvaWQgUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgaWYgKG1faXNY
U0wpIHsKICAgICAgICAgICAgICAgICBhdXRvIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogICAgICAgICAgICAgICAgIG9wdGlv
bnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKLSAgICAgICAgICAgICAg
ICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVl
c3RYU0xTdHlsZVNoZWV0KHtSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCho
cmVmKSksIG9wdGlvbnN9KTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1l
bnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RYU0xTdHlsZVNoZWV0KHtSZXNvdXJj
ZVJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnN9KS52YWx1ZU9y
KG51bGxwdHIpOwogICAgICAgICAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBTdHJpbmcgY2hhcnNldCA9IGF0dHJzLmdldCgiY2hhcnNldCIpOwogICAg
ICAgICAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGRvY3VtZW50KCkuY29t
cGxldGVVUkwoaHJlZiksIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3Vy
Y2VPcHRpb25zKCksIHN0ZDo6bnVsbG9wdCwgY2hhcnNldC5pc0VtcHR5KCkgPyBkb2N1bWVudCgp
LmNoYXJzZXQoKSA6IFdURk1vdmUoY2hhcnNldCkpOwogCi0gICAgICAgICAgICAgICAgbV9jYWNo
ZWRTaGVldCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5
bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0
ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0
KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0
LT5hZGRDbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CmluZGV4IDQyZDIyZjdjZGZhOTIwNWM4MDgyNzYzOTZlMzYzZGJmMjJjYjEzZGEuLjg0ZWU3Yjk1
ZDk4Y2Y2NjJhMDJjYTYzNmQzZjY2YjVlOGI4MDQzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVu
dDo6cHJvY2VzcygpCiAgICAgICAgIHJlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2lu
KGNyb3NzT3JpZ2luKCksIGRvY3VtZW50KCkpOwogCiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCFtX2NhY2hlZFNoZWV0KTsKLSAgICAgICAgbV9jYWNoZWRTaGVldCA9
IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChX
VEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3Qp
KS52YWx1ZU9yKG51bGxwdHIpOwogCiAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAg
ICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggYTZl
MzA5Y2RmZmQ4NjI0NjM3ZThkZmVlNzRiOTM1MDFmMGUzZjFjOC4uN2E0Zjg5NjZlYzJlYmQ4NzI0
MjdhYTQxMTg0ZjhiZTczMGMyYmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2
b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6c3RhcnRQcmVmbGlnaHQoKQogICAgICAg
ICBwcmVmbGlnaHRSZXF1ZXN0LnNldEluaXRpYXRvcihtX2xvYWRlci5vcHRpb25zKCkuaW5pdGlh
dG9yKTsKIAogICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7Ci0gICAgbV9yZXNvdXJjZSA9IG1fbG9h
ZGVyLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2Uo
V1RGTW92ZShwcmVmbGlnaHRSZXF1ZXN0KSk7CisgICAgbV9yZXNvdXJjZSA9IG1fbG9hZGVyLmRv
Y3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92
ZShwcmVmbGlnaHRSZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKICAgICBpZiAobV9yZXNvdXJj
ZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDdiY2UzNDhjNGUyZDYyM2MzNTU2M2Zi
ZmFkYzExY2M4Y2E2ZDI1YmUuLmYzYzNkNjhkYjNjMDU0OGJiOWFlOGNiOGU4ODA4N2UzNzY3Mjkz
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTQ4Nyw3
ICsxNDg3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNl
KCkKICAgICAgICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koZnJhbWVMb2FkZXIo
KS0+ZnJhbWUoKS5zZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKICAgICAgICAg
bWFpblJlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihvcmlnaW4tPmRv
bWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwogICAgIH0KLSAgICBtX21haW5SZXNvdXJjZSA9IG1f
Y2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RNYWluUmVzb3VyY2UoV1RGTW92ZShtYWluUmVz
b3VyY2VSZXF1ZXN0KSk7CisgICAgbV9tYWluUmVzb3VyY2UgPSBtX2NhY2hlZFJlc291cmNlTG9h
ZGVyLT5yZXF1ZXN0TWFpblJlc291cmNlKFdURk1vdmUobWFpblJlc291cmNlUmVxdWVzdCkpLnZh
bHVlT3IobnVsbHB0cik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlm
IChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmIG1f
ZnJhbWUtPnBhZ2UoKSAmJiBtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLmRvbWFpbigp
ID09IENvbnRlbnRFeHRlbnNpb25zOjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApp
bmRleCA1NDhiMTYzZmRjZTk1NDAzM2NiYTJiNDViYTAwODQ2ZTlmOTg2OGFkLi4zNGM0MjhiNzQ3
OGZlYTRkMDIyZTMxOWYwM2EzYmFlZDMzOTMzNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDQ5LDE5ICs0NDksMTIg
QEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICAgICAgICAgIHJlc291cmNlLT5yZW1vdmVD
bGllbnQoKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY3JlYXRlIGFuIFVSTCBo
ZXJlIGFzIHRoZSByZXF1ZXN0IHdpbGwgYmUgbW92ZWQgaW4gcmVxdWVzdFJhd1Jlc291cmNlCi0g
ICAgICAgIFVSTCByZXF1ZXN0VXJsID0gbmV3UmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwo
KTsKLSAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKLSAgICAgICAgbV9yZXNvdXJjZSA9IG1f
ZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92
ZShuZXdSZXF1ZXN0KSwgJmVycm9yKTsKKyAgICAgICAgYXV0byBjYWNoZWRSZXNvdXJjZSA9IG1f
ZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92
ZShuZXdSZXF1ZXN0KSk7CisgICAgICAgIG1fcmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZS52YWx1
ZU9yKG51bGxwdHIpOwogICAgICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgICAgIG1fcmVz
b3VyY2UtPmFkZENsaWVudCgqdGhpcyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYg
KGVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFNpbmNlIHdlIHJl
Y2VpdmUgYSBzeW5jaHJvbm91cyBlcnJvciwgdGhpcyBpcyBwcm9iYWJseSBkdWUgdG8gc29tZSBB
Y2Nlc3NDb250cm9sIGNoZWNrcy4gV2Ugc2hvdWxkIHRyeSB0byByZXRyaWV2ZSB0aGUgYWN0dWFs
IGVycm9yLgotICAgICAgICAgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJjZUVycm9yKFN0
cmluZygpLCAwLCByZXF1ZXN0VXJsLCBTdHJpbmcoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCkpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbG9nRXJy
b3JBbmRGYWlsKGVycm9yKTsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBs
b2dFcnJvckFuZEZhaWwoY2FjaGVkUmVzb3VyY2UuZXJyb3IoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDRjZDQ2NWEx
ZDBiMjYwYjBiOTRlZTU2MWM0YzY3NWNmNGU5YTA2Y2IuLmM5OWM2YTg1NDI2OTEyMGNjOTMzYjg1
YWIwZDNjNGFlMDllZjk0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtMzIzNiw3ICszMjM2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVxdWVzdEZyb21EZWxlZ2F0
ZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVuc2lnbmVkIGxvbmcmIGkKICAgICByZXF1ZXN0
ID0gbmV3UmVxdWVzdDsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIG5l
d1JlcXVlc3QpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgp
OwogICAgIGlmICghcGFnZSkKQEAgLTMyNjMsNyArMzI2Myw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwg
UmVzb3VyCiAgICAgfQogCiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyOwotICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShuZXdSZXF1ZXN0LCBpZGVu
dGlmaWVyLCBlcnJvcik7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gcmVzb3Vy
Y2UtPnJlc3BvbnNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGI0Mzkw
N2JlYzZjZjU3ODNiZGU0NTdkMDdiZTFhMzE4YmJhYmEyOGYuLjA1Mzc1YzAxZTBmN2RhZDRmYzk5
MjdlMzUyYWZkNDZjYTQ3NTdjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBA
IC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVhY2hMYXlvdXRNaWxlc3Rv
bmUoTGF5b3V0TWlsZXN0b25lcyk7CiAgICAgdm9pZCBkaWRGaXJzdExheW91dCgpOwogCi0gICAg
dm9pZCBsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSosIFJlc291
cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CisgICAgdm9pZCBsb2FkZWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgUmVz
b3VyY2VFcnJvciYpOwogICAgIHZvaWQgdGVsbENsaWVudEFib3V0UGFzdE1lbW9yeUNhY2hlTG9h
ZHMoKTsKIAogICAgIHZvaWQgY2hlY2tMb2FkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuY3BwCmluZGV4IDA3ZDA4M2JhYjEwMjRiZDk3ZjJiNjZjZGM3NmI0N2RiMzRh
ZDVmMGMuLjE2NWM5MTk5ZjdkZjEzNTZmNDBkZDM3YjAzN2MyMTljMmE2MGZjN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgSW1h
Z2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgICAgIGRvY3VtZW50LmNhY2hl
ZFJlc291cmNlTG9hZGVyKCkubV9kb2N1bWVudFJlc291cmNlcy5zZXQobmV3SW1hZ2UtPnVybCgp
LCBuZXdJbWFnZS5nZXQoKSk7CiAgICAgICAgICAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLnNldEF1dG9Mb2FkSW1hZ2VzKGF1dG9Mb2FkT3RoZXJJbWFnZXMpOwogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIG5ld0ltYWdlID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAgICBuZXdJbWFn
ZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1vdmUo
cmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CiAKICAgICAgICAgLy8gSWYgd2UgZG8gbm90IGhh
dmUgYW4gaW1hZ2UgaGVyZSwgaXQgbWVhbnMgdGhhdCBhIGNyb3NzLXNpdGUKICAgICAgICAgLy8g
dmlvbGF0aW9uIG9jY3VycmVkLCBvciB0aGF0IHRoZSBpbWFnZSB3YXMgYmxvY2tlZCB2aWEgQ29u
dGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDZlMmQ0YWVkYzhjOGQ0
ZjdlZWI4MjQ4MmQ0NGVlNjYxNGRmYzIzMzUuLjhjZjJhN2QyNTBiNmQ5M2E2M2Y1NjkyODU2N2Vh
NDk4ZjU2MmJiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTIzMCw3
ICsyMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gTGlu
a0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbgogICAgIGxpbmtSZXF1ZXN0LnNldElz
TGlua1ByZWxvYWQoKTsKIAogICAgIGxpbmtSZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09y
aWdpbihjcm9zc09yaWdpbk1vZGUsIGRvY3VtZW50KTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSZXNvdXJjZT4gY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQuY2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS5wcmVsb2FkKHR5cGUudmFsdWUoKSwgV1RGTW92ZShsaW5rUmVxdWVzdCkp
OworICAgIGF1dG8gY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS5wcmVsb2FkKHR5cGUudmFsdWUoKSwgV1RGTW92ZShsaW5rUmVxdWVzdCkpLnZhbHVl
T3IobnVsbHB0cik7CiAKICAgICBpZiAoY2FjaGVkTGlua1Jlc291cmNlICYmIGxvYWRlcikKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQoKmNhY2hlZExpbmtS
ZXNvdXJjZSwgKmxvYWRlciwgdHlwZS52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3MmNhZWE3OWUzOWUwNGZiODI2YjdhODll
ZTM2Yjg3NDJhMzM3NGRmLi5jNDA3YTdjZjU5MDA4ZDc0MzAzY2IyODU1MTI3ZTQ1Y2Q2YWQ5NGZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC04Miw3ICs4Miw3IEBAIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IE1lZGlhUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShSZXNvdXJjZVJlcXVlCiAgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQogICAgICAgICBjYWNoZVJlcXVlc3Quc2V0SW5pdGlhdG9yKCptX21lZGlhRWxlbWVu
dC5nZXQoKSk7CiAKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4g
cmVzb3VyY2UgPSBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RNZWRp
YShXVEZNb3ZlKGNhY2hlUmVxdWVzdCkpOworICAgIGF1dG8gcmVzb3VyY2UgPSBtX2RvY3VtZW50
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RNZWRpYShXVEZNb3ZlKGNhY2hlUmVxdWVz
dCkpLnZhbHVlT3IobnVsbHB0cik7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5k
ZXggMzYzNzBiNDBkZGEwNzZiY2Q5ZjhjMGJmYjI0Yzc4NWEwNjc2N2YzYi4uODA0MGI3OGEzMjI4
OWYyMTJhY2UyOTY3NjhiYThlMTFlNDZjNmRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIFRleHRUcmFja0xvYWRl
cjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGJv
b2wgaQogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBjdWVSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dChkb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKSksIG9wdGlvbnMpOwogICAgIGN1ZVJlcXVlc3Qu
c2V0QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2luKGNyb3NzT3JpZ2luTW9kZSwgKmRvY3VtZW50KTsK
IAotICAgIG1fcmVzb3VyY2UgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1
ZXN0VGV4dFRyYWNrKFdURk1vdmUoY3VlUmVxdWVzdCkpOworICAgIG1fcmVzb3VyY2UgPSBkb2N1
bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0VGV4dFRyYWNrKFdURk1vdmUoY3Vl
UmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CiAgICAgaWYgKCFtX3Jlc291cmNlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDk2YTIwYTQyNjcxNDViNDM2ZTFhYTNhOGVl
YzMwMDc1YTMzNGIzNTEuLmY1OTkzNjdhZDE4OGMyMzNjMWUxNTlmYWFlZjk4ZWIwMzIwYTRlODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcApAQCAtODYsNiArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGlt
ZW91dCBmb3IgbGluayBwcmVsb2FkcyB0byBiZSB1c2VkIGFmdGVyIHdpbmRvdy5vbmxvYWQKIHN0
YXRpYyBjb25zdCBTZWNvbmRzIHVudXNlZFByZWxvYWRUaW1lb3V0IHsgM19zIH07CiAKK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorc3RhdGljIGlubGluZSBSZXNvdXJjZUVycm9y
T3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8VD4+IGNhc3RDYWNoZWRSZXNvdXJjZVRvKFJlc291cmNl
RXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxVPj4mJiBjYWNoZWRSZXNvdXJjZSkKK3sKKyAg
ICBpZiAoY2FjaGVkUmVzb3VyY2UpCisgICAgICAgIHJldHVybiBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxUPiB7IHN0YXRpY19jYXN0PFQqPihjYWNoZWRSZXNvdXJjZS52YWx1ZSgpLmdldCgpKSB9Owor
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChjYWNoZWRSZXNvdXJjZS5lcnJvcigpKTsKK30KKwog
c3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlw
ZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lv
bklEKQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTgxLDcgKzE4OSw3IEBAIFNlc3Npb25J
RCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2Vzc2lvbklEKCkgY29uc3QKICAgICByZXR1cm4gc2Vz
c2lvbklEOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRJbWFnZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
dGhpcy0+ZnJhbWUoKSkgewogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLnBhZ2VEaXNtaXNz
YWxFdmVudEJlaW5nRGlzcGF0Y2hlZCgpICE9IEZyYW1lTG9hZGVyOjpQYWdlRGlzbWlzc2FsVHlw
ZTo6Tm9uZSkgewpAQCAtMTkwLDM4ICsxOTgsMzggQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkSW1hZ2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoQ2FjaGVkUmVzb3UK
ICAgICAgICAgICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51
cmwoKTsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0VVJMLmlzVmFsaWQoKSAmJiBjYW5SZXF1ZXN0
KENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0VVJMLCByZXF1ZXN0LCBGb3JQ
cmVsb2FkOjpObykpCiAgICAgICAgICAgICAgICAgUGluZ0xvYWRlcjo6bG9hZEltYWdlKCpmcmFt
ZSwgcmVxdWVzdFVSTCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
IHJldHVybiBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4geyB9OwogICAgICAgICB9
CiAgICAgfQogCiAgICAgYXV0byBkZWZlciA9IGNsaWVudERlZmVyc0ltYWdlKHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCkpID8gRGVmZXJPcHRpb246OkRlZmVycmVkQnlDbGllbnQgOiBE
ZWZlck9wdGlvbjo6Tm9EZWZlcjsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgV1RGTW92ZShyZXF1
ZXN0KSwgZXJyb3IsIEZvclByZWxvYWQ6Ok5vLCBkZWZlcikuZ2V0KCkpOworICAgIHJldHVybiBj
YXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRJbWFnZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpJbWFnZVJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBGb3JQcmVsb2FkOjpObywg
ZGVmZXIpKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4gQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IGJvb2wgaXNTVkcsIFJlc291cmNlRXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJvck9yPENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dEZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBpc1NWRykKIHsKICNp
ZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlmIChpc1NWRykKLSAgICAgICAgcmV0dXJuIGRvd25j
YXN0PENhY2hlZFNWR0ZvbnQ+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U1ZHRm9u
dFJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvcikuZ2V0KCkpOworICAgICAgICByZXR1
cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkRm9udD4ocmVxdWVzdFJlc291cmNlKENhY2hl
ZFJlc291cmNlOjpTVkdGb250UmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCkpKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGlzU1ZHKTsKICNlbmRpZgotICAgIHJldHVybiBkb3duY2FzdDxDYWNo
ZWRGb250PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSwgV1RG
TW92ZShyZXF1ZXN0KSwgZXJyb3IpLmdldCgpKTsKKyAgICByZXR1cm4gY2FzdENhY2hlZFJlc291
cmNlVG88Q2FjaGVkRm9udD4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpGb250UmVz
b3VyY2UsIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFRleHRUcmFjaz4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVz
b3VyY2VFcnJvciogZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkVGV4dFRyYWNrPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RUZXh0VHJhY2so
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8
Q2FjaGVkVGV4dFRyYWNrPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlRleHRUcmFj
a1Jlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvcikuZ2V0KCkpOworICAgIHJldHVybiBj
YXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRUZXh0VHJhY2s+KHJlcXVlc3RSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KICNl
bmRpZgogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciogZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8Q2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4+IENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0Q1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQog
ewotICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihyZXF1ZXN0UmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQsIFdURk1vdmUocmVxdWVzdCksIGVycm9y
KS5nZXQoKSk7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENhY2hlZENTU1N0eWxl
U2hlZXQ+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgV1RG
TW92ZShyZXF1ZXN0KSkpOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHls
ZVNoZWV0PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlRXJyb3IqKQorQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RVc2VyQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQog
ewogICAgIEFTU0VSVChkb2N1bWVudCgpKTsKICAgICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hl
UGFydGl0aW9uKCpkb2N1bWVudCgpKTsKQEAgLTI0Nyw1NSArMjU1LDU1IEBAIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0VXNlckNTU1N0CiAgICAgcmV0dXJuIHVzZXJTaGVldDsKIH0KIAotQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkU2NyaXB0PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFNjcmlwdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jl
c291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+PiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFNjcmlwdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KQogewotICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJlcXVlc3RSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6U2NyaXB0LCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvcikuZ2V0KCkp
OworICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRTY3JpcHQ+KHJlcXVlc3RS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U2NyaXB0LCBXVEZNb3ZlKHJlcXVlc3QpKSk7CiB9CiAK
ICNpZiBFTkFCTEUoWFNMVCkKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFhTTFN0eWxlU2hl
ZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0WFNMU3R5bGVTaGVldChDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jlc291cmNlRXJy
b3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRYU0xTdHlsZVNoZWV0Pj4gQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZFhTTFN0eWxlU2hlZXQ+KHJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldCwgV1RGTW92ZShyZXF1
ZXN0KSwgZXJyb3IpLmdldCgpKTsKKyAgICByZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2Fj
aGVkWFNMU3R5bGVTaGVldD4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpYU0xTdHls
ZVNoZWV0LCBXVEZNb3ZlKHJlcXVlc3QpKSk7CiB9CiAjZW5kaWYKIAotQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkU1ZHRG9jdW1lbnQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U1ZH
RG9jdW1lbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciog
ZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9j
dW1lbnQ+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFNWR0RvY3VtZW50KENhY2hlZFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZFNW
R0RvY3VtZW50PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVz
b3VyY2UsIFdURk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgcmV0dXJuIGNhc3RD
YWNoZWRSZXNvdXJjZVRvPENhY2hlZFNWR0RvY3VtZW50PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KIAog
I2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0TGlua1Jlc291cmNlKENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291
cmNlRXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5rUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkKIHsKICAgICBBU1NFUlQoZnJhbWUoKSk7CiAgICAgQVNTRVJUKHR5cGUgPT0gQ2FjaGVkUmVz
b3VyY2U6OkxpbmtQcmVmZXRjaCB8fCB0eXBlID09IENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVz
b3VyY2UpOwotICAgIHJldHVybiByZXF1ZXN0UmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0
KSwgZXJyb3IpOworICAgIHJldHVybiByZXF1ZXN0UmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1
ZXN0KSk7CiB9CiAjZW5kaWYKIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0TWVkaWEoQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciogZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8Q2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdE1lZGlhKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAg
cmV0dXJuIGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2U6Ok1lZGlhUmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKSk7
CisgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENhY2hlZFJhd1Jlc291cmNlPihyZXF1
ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6Ok1lZGlhUmVzb3VyY2UsIFdURk1vdmUocmVxdWVz
dCkpKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SWNvbihDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
SWNvbihDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIHJldHVybiBkb3du
Y2FzdDxDYWNoZWRSYXdSZXNvdXJjZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJ
Y29uLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvcikuZ2V0KCkpOworICAgIHJldHVybiBjYXN0Q2Fj
aGVkUmVzb3VyY2VUbzxDYWNoZWRSYXdSZXNvdXJjZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpJY29uLCBXVEZNb3ZlKHJlcXVlc3QpKSk7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJhd1Jl
c291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlRXJyb3IqIGVy
cm9yKQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSYXdSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRSYXdS
ZXNvdXJjZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZSwgV1RG
TW92ZShyZXF1ZXN0KSwgZXJyb3IpLmdldCgpKTsKKyAgICByZXR1cm4gY2FzdENhY2hlZFJlc291
cmNlVG88Q2FjaGVkUmF3UmVzb3VyY2U+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6
UmF3UmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0QmVhY29uUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciogZXJy
b3IpCitSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEJlYWNvblJlc291cmNlKENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHJlcXVlc3RSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6QmVhY29uLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvcikuZ2V0KCk7CisgICAg
cmV0dXJuIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6QmVhY29uLCBXVEZNb3ZlKHJl
cXVlc3QpKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0TWFpblJlc291cmNlKENhY2hlZFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFJlc291cmNlRXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJvck9yPENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RNYWluUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
IHsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlcXVlc3RSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvciku
Z2V0KCkpOworICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRSYXdSZXNvdXJj
ZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UsIFdURk1vdmUo
cmVxdWVzdCkpKTsKIH0KIAogc3RhdGljIE1peGVkQ29udGVudENoZWNrZXI6OkNvbnRlbnRUeXBl
IGNvbnRlbnRUeXBlRnJvbVJlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQpA
QCAtNTU2LDcgKzU2NCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3RJ
bkNvbnRlbnREaXNwb3NpdGlvbkF0dGFjaG1lbnRTYW5kYm94KENhY2hlCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGRDb250aW51ZUFmdGVy
Tm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQorYm9vbCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6c2hvdWxkQ29udGludWVBZnRlck5vdGlmeWluZ0xvYWRlZEZyb21NZW1vcnlDYWNo
ZShjb25zdCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSwgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgaWYgKCFyZXNvdXJjZSB8fCAh
ZnJhbWUoKSB8fCByZXNvdXJjZS0+c3RhdHVzKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NjUsNyArNTczLDcgQEAgYm9vbCBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6c2hvdWxkQ29udGludWVBZnRlck5vdGlmeWluZ0xvYWRlZEZyb21NZW1vcnlD
YWNoZShjb24KICAgICBuZXdSZXF1ZXN0LnNldEluaXRpYXRvcklkZW50aWZpZXIocmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS5pbml0aWF0b3JJZGVudGlmaWVyKCkpOwogICAgIGlmIChyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLmhpZGRlbkZyb21JbnNwZWN0b3IoKSkKICAgICAgICAgbmV3UmVx
dWVzdC5zZXRIaWRkZW5Gcm9tSW5zcGVjdG9yKHRydWUpOwotICAgIGZyYW1lKCktPmxvYWRlcigp
LmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHJlc291cmNlLCBuZXdSZXF1ZXN0KTsKKyAg
ICBmcmFtZSgpLT5sb2FkZXIoKS5sb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShyZXNvdXJj
ZSwgbmV3UmVxdWVzdCwgZXJyb3IpOwogCiAgICAgLy8gRklYTUUgPGh0dHA6Ly93ZWJraXQub3Jn
L2IvMTEzMjUxPjogSWYgdGhlIGRlbGVnYXRlIG1vZGlmaWVzIHRoZSByZXF1ZXN0J3MKICAgICAv
LyBVUkwsIGl0IGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSB0byB1c2UgdGhpcyBDYWNoZWRSZXNv
dXJjZS4KQEAgLTY4OCw3ICs2OTYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjp1cGRh
dGVIVFRQUmVxdWVzdEhlYWRlcnMoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQwogICAgIHJl
cXVlc3QudXBkYXRlQWNjb3JkaW5nQ2FjaGVNb2RlKCk7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNl
KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlc291cmNlRXJyb3IqIGVycm9yLCBGb3JQcmVsb2FkIGZvclByZWxvYWQsIERlZmVyT3B0
aW9uIGRlZmVyKQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJl
c291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGb3JQcmVs
b2FkIGZvclByZWxvYWQsIERlZmVyT3B0aW9uIGRlZmVyKQogewogICAgIGlmIChEb2N1bWVudCog
ZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQogICAgICAgICByZXF1ZXN0LnVwZ3JhZGVJbnNl
Y3VyZVJlcXVlc3RJZk5lZWRlZCgqZG9jdW1lbnQpOwpAQCAtNjk5LDkgKzcwNyw3IEBAIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFJlc291cmNlKENhY2hlCiAKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVxdWVzdFJlc291cmNlOiBVUkwgaXMgaW52YWxpZCAo
ZnJhbWUgPSAlcCkiLCBmcmFtZSgpKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAg
KmVycm9yID0geyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsIEFTQ0lJTGl0ZXJh
bCgiVVJMIGlzIGludmFsaWQiKSB9OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCB1cmwsIEFTQ0lJTGl0ZXJhbCgiVVJMIGlzIGludmFsaWQiKSB9KTsKICAgICB9
CiAKICAgICBwcmVwYXJlRmV0Y2godHlwZSwgcmVxdWVzdCk7CkBAIC03MDksOSArNzE1LDcgQEAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICAvLyBXZSBhcmUgcGFzc2luZyB1cmwgYXMgd2Vs
bCBhcyByZXF1ZXN0LCBhcyByZXF1ZXN0IHVybCBtYXkgY29udGFpbiBhIGZyYWdtZW50IGlkZW50
aWZpZXIuCiAgICAgaWYgKCFjYW5SZXF1ZXN0KHR5cGUsIHVybCwgcmVxdWVzdCwgZm9yUHJlbG9h
ZCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVxdWVzdFJlc291cmNlOiBO
b3QgYWxsb3dlZCB0byByZXF1ZXN0IHJlc291cmNlIChmcmFtZSA9ICVwKSIsIGZyYW1lKCkpOwot
ICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAqZXJyb3IgPSB7IGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIHVybCwgQVNDSUlMaXRlcmFsKCJOb3QgYWxsb3dlZCB0byByZXF1ZXN0
IHJlc291cmNlIiksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChSZXNvdXJj
ZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCBBU0NJSUxpdGVyYWwo
Ik5vdCBhbGxvd2VkIHRvIHJlcXVlc3QgcmVzb3VyY2UiKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6
QWNjZXNzQ29udHJvbCB9KTsKICAgICB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQpAQCAtNzIyLDE1ICs3MjYsMTMgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICAgICAg
aWYgKGJsb2NrZWRTdGF0dXMuYmxvY2tlZExvYWQpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInJlcXVlc3RSZXNvdXJjZTogUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50
IGJsb2NrZXIgKGZyYW1lID0gJXApIiwgZnJhbWUoKSk7CiAgICAgICAgICAgICBpZiAodHlwZSA9
PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIHNl
c3Npb25JRCgpKTsKKyAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4gcmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBzZXNzaW9uSUQoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKICAgICAg
ICAgICAgICAgICByZXNvdXJjZS0+ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1czo6TG9hZEVy
cm9yKTsKICAgICAgICAgICAgICAgICByZXNvdXJjZS0+c2V0UmVzb3VyY2VFcnJvcihSZXNvdXJj
ZUVycm9yKENvbnRlbnRFeHRlbnNpb25zOjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbiwgMCwg
cmVzb3VyY2VSZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIHdhcyBibG9ja2Vk
IGJ5IGEgY29udGVudCBibG9ja2VyIiwgIldlYktpdEVycm9yQmxvY2tlZEJ5Q29udGVudEJsb2Nr
ZXIgZGVzY3JpcHRpb24iKSkpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXNvdXJjZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShyZXNvdXJjZSk7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgKmVycm9yID0geyBlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsIEFTQ0lJTGl0ZXJhbCgiUmVzb3VyY2UgYmxvY2tl
ZCBieSBjb250ZW50IGJsb2NrZXIiKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJv
bCB9OwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IHVybCwgQVNDSUlMaXRlcmFsKCJSZXNvdXJjZSBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIp
LCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChibG9ja2VkU3RhdHVzLm1hZGVIVFRQUwogICAgICAgICAgICAgJiYgdHlwZSA9PSBD
YWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlCkBAIC03OTQsOCArNzk2LDkgQEAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICAgICAgICAgIGlmIChyZXNvdXJjZS0+c3RhdHVzKCkg
IT0gQ2FjaGVkUmVzb3VyY2U6OlN0YXR1czo6Q2FjaGVkKQogICAgICAgICAgICAgICAgIHBvbGlj
eSA9IExvYWQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXNob3VsZENvbnRp
bnVlQWZ0ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdCwgcmVzb3VyY2Uu
Z2V0KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ29udGludWVBZnRlck5v
dGlmeWluZ0xvYWRlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0LCByZXNvdXJjZS5nZXQoKSwgZXJy
b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKGVycm9y
KSk7CiAgICAgICAgICAgICBsb2dNZW1vcnlDYWNoZVJlc291cmNlUmVxdWVzdChmcmFtZSgpLCBE
aWFnbm9zdGljTG9nZ2luZ0tleXM6Om1lbW9yeUNhY2hlRW50cnlEZWNpc2lvbktleSgpLCBEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OnVzZWRLZXkoKSk7CiAgICAgICAgICAgICBsb2FkVGltaW5nLnNl
dFJlc3BvbnNlRW5kKE1vbm90b25pY1RpbWU6Om5vdygpKTsKIApAQCAtODE4LDkgKzgyMSw3IEBA
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
fQotCi0gICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNT
RVJUKHJlc291cmNlKTsKIAogICAgIGlmIChmb3JQcmVsb2FkID09IEZvclByZWxvYWQ6Ok5vICYm
IHJlc291cmNlLT5sb2FkZXIoKSAmJiByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCkuaWdub3Jl
Rm9yUmVxdWVzdENvdW50KCkpIHsKICAgICAgICAgcmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgp
LnNldElnbm9yZUZvclJlcXVlc3RDb3VudChmYWxzZSk7CkBAIC04MzQsOSArODM1LDkgQEAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICAgICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVk
KCkpIHsKICAgICAgICAgICAgIGlmIChyZXNvdXJjZS0+YWxsb3dzQ2FjaGluZygpICYmIHJlc291
cmNlLT5pbkNhY2hlKCkpCiAgICAgICAgICAgICAgICAgbWVtb3J5Q2FjaGUucmVtb3ZlKCpyZXNv
dXJjZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgKmVycm9yID0g
cmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgaWYgKHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkuaXNOdWxsKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBTdHJpbmco
KSwgMCwgdXJsLCBTdHJpbmcoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZXNvdXJjZS0+cmVzb3VyY2VF
cnJvcigpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODQ1LDcgKzg0Niw3IEBAIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKENhY2hlCiAKICAgICBBU1NFUlQocmVzb3VyY2UtPnVybCgpID09IHVybC5zdHJp
bmcoKSk7CiAgICAgbV9kb2N1bWVudFJlc291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCByZXNv
dXJjZSk7Ci0gICAgcmV0dXJuIHJlc291cmNlOworICAgIHJldHVybiBXVEZNb3ZlKHJlc291cmNl
KTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZG9jdW1lbnREaWRGaW5pc2hMb2Fk
RXZlbnQoKQpAQCAtMTI0NywyMSArMTI0OCwyMiBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVy
OjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQog
ICAgIEFTU0VSVChtX3JlcXVlc3RDb3VudCA+IC0xKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCitSZXNv
dXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIGlmIChyZXF1ZXN0LmNoYXJzZXQoKS5p
c0VtcHR5KCkgJiYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCB8fCB0eXBlID09IENh
Y2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0KSkKICAgICAgICAgcmVxdWVzdC5zZXRDaGFyc2V0
KG1fZG9jdW1lbnQtPmNoYXJzZXQoKSk7CiAKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4gcmVzb3VyY2UgPSByZXF1ZXN0UmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1
ZXN0KSwgbnVsbHB0ciwgRm9yUHJlbG9hZDo6WWVzKTsKLSAgICBpZiAocmVzb3VyY2UgJiYgKCFt
X3ByZWxvYWRzIHx8ICFtX3ByZWxvYWRzLT5jb250YWlucyhyZXNvdXJjZS5nZXQoKSkpKSB7Cisg
ICAgYXV0byByZXNvdXJjZSA9IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBGb3JQcmVsb2FkOjpZZXMpOworICAgIGlmIChyZXNvdXJjZSAmJiAoIW1fcHJlbG9hZHMgfHwg
IW1fcHJlbG9hZHMtPmNvbnRhaW5zKHJlc291cmNlLnZhbHVlKCkuZ2V0KCkpKSkgeworICAgICAg
ICBhdXRvIHJlc291cmNlVmFsdWUgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgICAgICAvLyBGb250
cyBuZWVkIHNwZWNpYWwgdHJlYXRtZW50IHNpbmNlIGp1c3QgY3JlYXRpbmcgdGhlIHJlc291cmNl
IGRvZXNuJ3QgdHJpZ2dlciBhIGxvYWQuCiAgICAgICAgIGlmICh0eXBlID09IENhY2hlZFJlc291
cmNlOjpGb250UmVzb3VyY2UpCi0gICAgICAgICAgICBkb3duY2FzdDxDYWNoZWRGb250PihyZXNv
dXJjZS5nZXQoKSktPmJlZ2luTG9hZElmTmVlZGVkKCp0aGlzKTsKLSAgICAgICAgcmVzb3VyY2Ut
PmluY3JlYXNlUHJlbG9hZENvdW50KCk7CisgICAgICAgICAgICBkb3duY2FzdDxDYWNoZWRGb250
PihyZXNvdXJjZVZhbHVlLmdldCgpKS0+YmVnaW5Mb2FkSWZOZWVkZWQoKnRoaXMpOworICAgICAg
ICByZXNvdXJjZVZhbHVlLT5pbmNyZWFzZVByZWxvYWRDb3VudCgpOwogCiAgICAgICAgIGlmICgh
bV9wcmVsb2FkcykKICAgICAgICAgICAgIG1fcHJlbG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExp
c3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7Ci0gICAgICAgIG1fcHJlbG9hZHMtPmFkZChy
ZXNvdXJjZS5nZXQoKSk7CisgICAgICAgIG1fcHJlbG9hZHMtPmFkZChyZXNvdXJjZVZhbHVlLmdl
dCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCAzOGE5YzA5ODFi
MWE0MmVkYWVkMTdiYjg5OWZmOTM0YTRlZDUyNzU4Li5iZjkwM2NkYmJkNGI1NWU3YjMyMjI0Nzg1
OGYwYTRmMDRmYzBlMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIktlZXBh
bGl2ZVJlcXVlc3RUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlv
bi5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNTUsNiArNTYsOSBAQCBjbGFzcyBJbWFnZUxvYWRlcjsK
IGNsYXNzIFNldHRpbmdzOwogY2xhc3MgVVJMOwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3Vz
aW5nIFJlc291cmNlRXJyb3JPciA9IEV4cGVjdGVkPFQsIFJlc291cmNlRXJyb3I+OworCiAvLyBU
aGUgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgcHJvdmlkZXMgYSBwZXItY29udGV4dCBpbnRlcmZhY2Ug
dG8gdGhlIE1lbW9yeUNhY2hlCiAvLyBhbmQgZW5mb3JjZXMgYSBidW5jaCBvZiBzZWN1cml0eSBj
aGVja3MgYW5kIHJ1bGVzIGZvciByZXNvdXJjZSByZXZhbGlkYXRpb24uCiAvLyBJdHMgbGlmZXRp
bWUgaXMgcm91Z2hseSBwZXItRG9jdW1lbnRMb2FkZXIsIGluIHRoYXQgaXQgaXMgZ2VuZXJhbGx5
IGNyZWF0ZWQKQEAgLTcyLDI1ICs3NiwyNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDYWNo
ZWRSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRSZXNvdXJjZUxvYWRlcihkb2N1bWVudExvYWRl
cikpOyB9CiAgICAgfkNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAKLSAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRJbWFnZT4gcmVxdWVzdEltYWdlKENhY2hlZFJlc291cmNlUmVxdWVzdCYm
LCBSZXNvdXJjZUVycm9yKiA9IG51bGxwdHIpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZENTU1N0eWxlU2hlZXQ+IHJlcXVlc3RDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVx
dWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9IG51bGxwdHIpOwotICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IHJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJvciogPSBudWxscHRyKTsKLSAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RTY3JpcHQoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlc291cmNlRXJyb3IqID0gbnVsbHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkRm9udD4gcmVxdWVzdEZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIGJv
b2wgaXNTVkcsIFJlc291cmNlRXJyb3IqID0gbnVsbHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHJlcXVlc3RNZWRpYShDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiwgUmVzb3VyY2VFcnJvciogPSBudWxscHRyKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gcmVxdWVzdEljb24oQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYs
IFJlc291cmNlRXJyb3IqID0gbnVsbHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+IHJlcXVlc3RCZWFjb25SZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVzb3VyY2VFcnJvciogPSBudWxscHRyKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcmVxdWVzdFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVz
dCYmLCBSZXNvdXJjZUVycm9yKiA9IG51bGxwdHIpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiByZXF1ZXN0TWFpblJlc291cmNlKENhY2hlZFJlc291cmNlUmVx
dWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9IG51bGxwdHIpOwotICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFNWR0RvY3VtZW50PiByZXF1ZXN0U1ZHRG9jdW1lbnQoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlc291cmNlRXJyb3IqID0gbnVsbHB0cik7CisgICAgUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPj4gcmVxdWVzdEltYWdlKENhY2hlZFJl
c291cmNlUmVxdWVzdCYmKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4+IHJlcXVlc3RDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291
cmNlUmVxdWVzdCYmKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNo
ZWV0PiByZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOwor
ICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+PiBy
ZXF1ZXN0U2NyaXB0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKKyAgICBSZXNvdXJjZUVycm9y
T3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IHJlcXVlc3RGb250KENhY2hlZFJl
c291cmNlUmVxdWVzdCYmLCBib29sIGlzU1ZHKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiByZXF1ZXN0TWVkaWEoQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYpOworICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4+IHJlcXVlc3RJY29uKENhY2hlZFJlc291cmNlUmVxdWVzdCYm
KTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+PiByZXF1ZXN0QmVhY29uUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOworICAg
IFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4+
IHJlcXVlc3RSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgUmVzb3Vy
Y2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gcmVxdWVz
dE1haW5SZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgUmVzb3VyY2VFcnJv
ck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50Pj4gcmVxdWVzdFNWR0Rv
Y3VtZW50KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKICNpZiBFTkFCTEUoWFNMVCkKLSAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRYU0xTdHlsZVNoZWV0PiByZXF1ZXN0WFNMU3R5bGVT
aGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJvciogPSBudWxscHRyKTsK
KyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkWFNMU3R5bGVT
aGVldD4+IHJlcXVlc3RYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKICNl
bmRpZgogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQotICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiByZXF1ZXN0TGlua1Jlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBl
LCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJvciogPSBudWxscHRyKTsKKyAg
ICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBy
ZXF1ZXN0TGlua1Jlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkVGV4dFRyYWNrPiByZXF1ZXN0VGV4dFRyYWNrKENhY2hlZFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9IG51bGxwdHIpOworICAgIFJlc291cmNlRXJy
b3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRUZXh0VHJhY2s+PiByZXF1ZXN0VGV4dFRy
YWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKICNlbmRpZgogCiAgICAgLy8gTG9ncyBhbiBh
Y2Nlc3MgZGVuaWVkIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgZm9yIHRoZSBzcGVjaWZpZWQgVVJM
LgpAQCAtMTMyLDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
UHJlbG9hZGVkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKICAgICBlbnVtIGNsYXNz
IENsZWFyUHJlbG9hZHNNb2RlIHsgQ2xlYXJTcGVjdWxhdGl2ZVByZWxvYWRzLCBDbGVhckFsbFBy
ZWxvYWRzIH07CiAgICAgdm9pZCBjbGVhclByZWxvYWRzKENsZWFyUHJlbG9hZHNNb2RlKTsKLSAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcHJlbG9hZChDYWNoZWRSZXNv
dXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIFJlc291cmNlRXJyb3JP
cjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IHByZWxvYWQoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHByaW50UHJl
bG9hZFN0YXRzKCk7CiAgICAgdm9pZCB3YXJuVW51c2VkUHJlbG9hZHMoKTsKICAgICB2b2lkIHN0
b3BVbnVzZWRQcmVsb2Fkc1RpbWVyKCk7CkBAIC0xNTUsNyArMTU5LDcgQEAgcHJpdmF0ZToKICAg
ICBlbnVtIGNsYXNzIEZvclByZWxvYWQgeyBZZXMsIE5vIH07CiAgICAgZW51bSBjbGFzcyBEZWZl
ck9wdGlvbiB7IE5vRGVmZXIsIERlZmVycmVkQnlDbGllbnQgfTsKIAotICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9IG51bGxwdHIs
IEZvclByZWxvYWQgPSBGb3JQcmVsb2FkOjpObywgRGVmZXJPcHRpb24gPSBEZWZlck9wdGlvbjo6
Tm9EZWZlcik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJlc291cmNlPj4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QmJiwgRm9yUHJlbG9hZCA9IEZvclByZWxvYWQ6Ok5vLCBEZWZlck9wdGlv
biA9IERlZmVyT3B0aW9uOjpOb0RlZmVyKTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4gcmV2YWxpZGF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBD
YWNoZWRSZXNvdXJjZSYpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
PiBsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVz
dCYmKTsKIApAQCAtMTcxLDcgKzE3NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRVcGRh
dGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdChjb25zdCBDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiB1cGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdChj
b25zdCBDYWNoZWRSZXNvdXJjZSYsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKIAotICAgIGJv
b2wgc2hvdWxkQ29udGludWVBZnRlck5vdGlmeWluZ0xvYWRlZEZyb21NZW1vcnlDYWNoZShjb25z
dCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZWRSZXNvdXJjZSopOworICAgIGJvb2wgc2hv
dWxkQ29udGludWVBZnRlck5vdGlmeWluZ0xvYWRlZEZyb21NZW1vcnlDYWNoZShjb25zdCBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlRXJyb3ImKTsKICAg
ICBib29sIGNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBV
UkwmKSBjb25zdDsKICAgICBib29sIGFsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShDYWNo
ZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlLmNwcAppbmRleCBhOWJmN2M2NmU0Mjk4ZTk4ZTQ0M2Q0MzdlNzRi
YjEzMzk1ZDc2NWQyLi4yZTA4ZWUyODMyNzc5NDhkMjRiNmY1ZDBjYTU0MDcyNGQxMjc2N2EyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBS
ZXNvdXIKICAgICBmZXRjaE9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9y
aWdpbjsKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qo
bG9hZGVyLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1fdXJsKSksIGZldGNoT3B0aW9ucyk7CiAg
ICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygp
LmNzcyk7Ci0gICAgbV9kb2N1bWVudCA9IGxvYWRlci5yZXF1ZXN0U1ZHRG9jdW1lbnQoV1RGTW92
ZShyZXF1ZXN0KSk7CisgICAgbV9kb2N1bWVudCA9IGxvYWRlci5yZXF1ZXN0U1ZHRG9jdW1lbnQo
V1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKICAgICBpZiAobV9kb2N1bWVudCkK
ICAgICAgICAgbV9kb2N1bWVudC0+YWRkQ2xpZW50KCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAppbmRleCBlYmUyYTA2ZjlmOWQzZTZkNDdmMTBhYmRi
YmMwZDFmNTE5NDdmZTM5Li40MDZiMjBjOGE1ZThjZjhhMTA4NzI3M2Y2NDYxOWQ1MmE0MDA4NTc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcApAQCAtNzUsMTEg
Kzc1LDEyIEBAIHZvaWQgSWNvbkxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKIAogICAgIHJlcXVlc3Qu
c2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5pY29uKTsKIAot
ICAgIG1fcmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KS5yZXF1ZXN0SWNvbihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICBhdXRvIGNhY2hlZFJlc291cmNl
ID0gZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEljb24o
V1RGTW92ZShyZXF1ZXN0KSk7CisgICAgbV9yZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlLnZhbHVl
T3IobnVsbHB0cik7CiAgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPmFk
ZENsaWVudCgqdGhpcyk7CiAgICAgZWxzZQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBz
dGFydCBsb2FkIGZvciBpY29uIGF0IHVybCAlcyIsIHJlc291cmNlUmVxdWVzdFVSTC5zdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0IGxv
YWQgZm9yIGljb24gYXQgdXJsICVzIChlcnJvcjogJXMpIiwgcmVzb3VyY2VSZXF1ZXN0VVJMLnN0
cmluZygpLmFzY2lpKCkuZGF0YSgpLCBjYWNoZWRSZXNvdXJjZS5lcnJvcigpLmxvY2FsaXplZERl
c2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgSWNvbkxvYWRlcjo6c3RvcExv
YWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tCmluZGV4IDA0YjVjMzg4M2FjOTUwNzMwMTM4NmY3MDVjYzIxM2MwYTQzMzA2YmYu
LjU4ODI5YTBlOWI1MzdjYjI0NzRiNzQ4ZjkxZDY3NmIxNWViYTI5MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTc0LDcg
Kzc0LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAg
ICAgLy8gaXMgaW4gYSB1c2VyLWFnZW50IHNoYWRvdyB0cmVlLiBTZWUgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM0OTg+LgogICAgIENhY2hlZFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zKFNlbmRDYWxsYmFja3MsIERvTm90U25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBEb05vdEFs
bG93U3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0Ns
aWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0LCBEb1Nl
Y3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzLCBEb05vdEluY2x1ZGVDZXJ0
aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hl
Y2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGlj
eTo6RGlzYWxsb3dDYWNoaW5nKSk7CiAgICAgaWYgKGF1dG8qIGxvYWRlciA9IG1fcGFyZW50LT5w
bGF5ZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSkKLSAgICAgICAgbV9yZXNvdXJjZSA9IGxv
YWRlci0+cmVxdWVzdE1lZGlhKFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICBtX3Jlc291cmNl
ID0gbG9hZGVyLT5yZXF1ZXN0TWVkaWEoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRy
KTsKIAogICAgIGlmIChtX3Jlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQo
KnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5kZXggMTll
ZjYzYjI5YTk0Mjk3OWViOThhZjY3N2FhMjZhMjMxZGE1ZjdmZC4uZWM3NGE4ZDBlNWFiNmI1YWQ5
OGE4OGU3OGUxMmM0YmE2MjVkNmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVs
ZW1lbnQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnJlcXVl
c3RJbWFnZVJlc291cmNlKCkKIAogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJl
c291cmNlUmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYoKSkpLCBvcHRpb25zKTsK
ICAgICByZXF1ZXN0LnNldEluaXRpYXRvcigqdGhpcyk7Ci0gICAgbV9jYWNoZWRJbWFnZSA9IGRv
Y3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1
ZXN0KSk7CisgICAgbV9jYWNoZWRJbWFnZSA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKIAog
ICAgIGlmIChtX2NhY2hlZEltYWdlKQogICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQo
KnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcApp
bmRleCA1NmQ1ZTYzYzNjMTVhYWY2ZjVmNmU5YjY5OTRhOTBlNmZkNjIyMzQ0Li5iNDE5NTc2MDgz
MmJkNGE4OWU3NmI5ODQ5ZDI2NzMzMDVlZmRmZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgU1ZHRm9u
dEZhY2VVcmlFbGVtZW50Ojpsb2FkRm9udCgpCiAgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVy
JiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KTsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZikpLCBvcHRpb25zKTsKICAgICAgICAgcmVxdWVz
dC5zZXRJbml0aWF0b3IoKnRoaXMpOwotICAgICAgICBtX2NhY2hlZEZvbnQgPSBjYWNoZWRSZXNv
dXJjZUxvYWRlci5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NWR0ZvbnRUYXJnZXQo
KnRoaXMpKTsKKyAgICAgICAgbV9jYWNoZWRGb250ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIucmVx
dWVzdEZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgaXNTVkdGb250VGFyZ2V0KCp0aGlzKSkudmFsdWVP
cihudWxscHRyKTsKICAgICAgICAgaWYgKG1fY2FjaGVkRm9udCkgewogICAgICAgICAgICAgbV9j
YWNoZWRGb250LT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICAgICAgbV9jYWNoZWRGb250LT5i
ZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAKaW5kZXggMzNjMjhmMjU2Mzg0MTdjNWFmOGQzNTIxNWMyYzJjNmEyYjY3
YjJlMi4uNWU3MzIzODBjNWQ4MDgzODhmMzhiYThjMzAxYTJlZTljZTk5ODMzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgU1ZHVXNl
RWxlbWVudDo6dXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgpCiAgICAgICAgIG9wdGlvbnMubW9kZSA9
IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QgeyBSZXNvdXJjZVJlcXVlc3QgeyBleHRlcm5hbERvY3VtZW50VVJMIH0s
IG9wdGlvbnMgfTsKICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoKnRoaXMpOwotICAgICAg
ICBtX2V4dGVybmFsRG9jdW1lbnQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCku
cmVxdWVzdFNWR0RvY3VtZW50KFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICBtX2V4dGVybmFs
RG9jdW1lbnQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFNWR0Rv
Y3VtZW50KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CiAgICAgICAgIGlmICht
X2V4dGVybmFsRG9jdW1lbnQpCiAgICAgICAgICAgICBtX2V4dGVybmFsRG9jdW1lbnQtPmFkZENs
aWVudCgqdGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTElt
cG9ydFJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCmluZGV4
IDYxZGUxMTE1ZDJiYzM0NWQ1Y2RmYmZiOTA4ZWE4YjEwMGM4ZWE0M2UuLjdhZDM5OTQxNDkwNDNh
MTU2MGVlNTlkNGU2NGRhNDE4MzEwYzE3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xJbXBvcnRSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVs
ZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFhTTEltcG9ydFJ1bGU6OmxvYWRTaGVldCgp
CiAKICAgICBhdXRvIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hl
ZFJlc291cmNlT3B0aW9ucygpOwogICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9k
ZTo6U2FtZU9yaWdpbjsKLSAgICBtX2NhY2hlZFNoZWV0ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PnJlcXVlc3RYU0xTdHlsZVNoZWV0KHtSZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGFic0hyZWYpKSwgb3B0aW9uc30pOworICAgIG1f
Y2FjaGVkU2hlZXQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdFhTTFN0eWxlU2hlZXQo
e1Jlc291cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwoYWJzSHJlZikpLCBvcHRpb25zfSkudmFsdWVPcihudWxscHRyKTsKIAogICAgIGlmICht
X2NhY2hlZFNoZWV0KSB7CiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPmFkZENsaWVudCgqdGhpcyk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318010</attachid>
            <date>2017-08-13 09:18:32 -0700</date>
            <delta_ts>2017-08-14 09:54:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175505-20170813091831.patch</filename>
            <type>text/plain</type>
            <size>52785</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk3ZmZiYzJiMmY5M2Fl
YjA2NGExNzhhMzk3ZDA3Nzk4Njg3NWZlNC4uYWI5MDY2MWEzMTkyZTM2NTU0ZDEyNjRjMDNkNDk5
YzI4Mzk5YTFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE3LTA4LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoKSB0byByZXR1cm4gYSBXVEY6OkV4cGVjdGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSgpIHRvIHJldHVybiBhIFdURjo6RXhw
ZWN0ZWQKKyAgICAgICAgdHlwZSBpbnN0ZWFkIG9mIHVzaW5nIGFuIG91dCBwYXJhbWV0ZXIgZm9y
IHRoZSBSZXNvdXJjZUVycm9yIGluIGNhc2Ugb2YKKyAgICAgICAgc3luY2hyb25vdXMgZmFpbHVy
ZS4KKworICAgICAgICAqIE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFjb24pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZSBjb25zdCk6CisgICAgICAg
ICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9u
dEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udCk6CisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6bG9hZEJlc3RGaXRJ
bWFnZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VWYWx1ZTo6bG9hZEltYWdlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlSW1w
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUltcG9ydDo6cmVxdWVzdFN0eWxl
U2hlZXQpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQpOgorICAg
ICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OnN0YXJ0UHJlZmxpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5S
ZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAg
ICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVy
OjpwcmVsb2FkSWZOZWVkZWQpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNv
dXJjZSk6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXN0Q2FjaGVkUmVz
b3VyY2VUbyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFRl
eHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dENTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdWVzdFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdWVzdFhTTFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTVkdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdExpbmtSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1lZGlhKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SWNvbik6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJhd1Jlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0QmVhY29uUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RNYWluUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZENvbnRp
bnVlQWZ0ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlOjpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6OnN0YXJ0TG9hZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OjpzdGFydExvYWRpbmcpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6cmVxdWVzdEltYWdlUmVzb3VyY2Up
OgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRm9udEZhY2VVcmlFbGVtZW50Ojpsb2FkRm9udCk6CisgICAgICAgICogc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6dXBkYXRl
RXh0ZXJuYWxEb2N1bWVudCk6CisgICAgICAgICogeG1sL1hTTEltcG9ydFJ1bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KToKKwogMjAxNy0wOC0xMSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBmaWxlcyBp
bnNpZGUgV2ViQ29yZS93b3JrZXJzIHRvIFdlYkNvcmUvd29ya2Vycy9zZXJ2aWNlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5kZXgg
OGIyZjVhNzgwMmE1MDk5YWE1NDMyMTRkNGU4NzFmY2E3ODgzYTA4YS4uMWZhMWY0MTI2NzE0OTUw
ZGQ0NzIxZjJlM2MzZWEwNjA1NGI5M2RjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCkBAIC03MywxMyArNzMsMTIgQEAgRXhjZXB0
aW9uT3I8Ym9vbD4gTmF2aWdhdG9yQmVhY29uOjpzZW5kQmVhY29uKE5hdmlnYXRvciYsIERvY3Vt
ZW50JiBkb2N1bWVudCwgY28KICAgICAgICAgICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9w
dGlvbnM6Ok1vZGU6Ok5vQ29yczsKICAgICAgICAgfQogICAgIH0KLSAgICBSZXNvdXJjZUVycm9y
IGVycm9yOwotICAgIGlmICghZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0
QmVhY29uUmVzb3VyY2UoeyBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zIH0sICZlcnJvcikpIHsK
LSAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOworICAgIGF1dG8gY2FjaGVkUmVzb3VyY2UgPSBkb2N1bWVu
dC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RCZWFjb25SZXNvdXJjZSh7IFdURk1vdmUo
cmVxdWVzdCksIG9wdGlvbnMgfSk7CisgICAgaWYgKGNhY2hlZFJlc291cmNlKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6Ok5ldHdvcmssIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNhY2hlZFJlc291cmNlLmVycm9yKCku
bG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCmlu
ZGV4IDY2MWU1ZTY0YzYwNzQ5MDhhOGNjZTM0ZDk3ZjQ5ZmVjNzk3ODJmY2EuLmVlMDY4ZjZiMDVl
YmMzOTRlNzRkYTFiNjg0NjM3YjkxM2YxZTAxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVx
dWVzdFNjcmlwdFdpdGhDYWNoZShECiAgICAgaWYgKCFtX2luaXRpYXRvck5hbWUuaXNOdWxsKCkp
CiAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1faW5pdGlhdG9yTmFtZSk7CiAKLSAgICBy
ZXR1cm4gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U2NyaXB0KFdURk1v
dmUocmVxdWVzdCkpOworICAgIHJldHVybiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LnJlcXVlc3RTY3JpcHQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDc1Yzk5
ZDc0MDY5OTVhNThkNDU0NWVjZjFjZmE0MmI2MjhiNzNmZTUuLjYzNTcyYzUxNWJlYTY2NWY1NjI3
NDEyNWJmZjgzY2JhODI0YzE2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
cmNWYWx1ZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBDYWNoZWRGb250KiBDU1NGb250RmFjZVNy
Y1ZhbHVlOjpjYWNoZWRGb250KERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpc1NWRywgYm9vbAog
CiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3Vt
ZW50LT5jb21wbGV0ZVVSTChtX3Jlc291cmNlKSksIG9wdGlvbnMpOwogICAgIHJlcXVlc3Quc2V0
SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1f
Y2FjaGVkRm9udCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RGb250
KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKTsKKyAgICBtX2NhY2hlZEZvbnQgPSBkb2N1bWVudC0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NW
RykudmFsdWVPcihudWxscHRyKTsKICAgICByZXR1cm4gbV9jYWNoZWRGb250LmdldCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggYTVkYjcyZDI0YjI1
ZWZmNGM2YWMzMWQzNmY2Mzk1YjI1ZTE4Y2UzZi4uMWVjYzBhYjMyODMzMjlhNTZiZjBhYmUyNTdm
NzEyZjRkOGI4MmU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApA
QCAtMTA1LDcgKzEwNSw3IEBAIHN0ZDo6cGFpcjxDYWNoZWRJbWFnZSosIGZsb2F0PiBDU1NJbWFn
ZVNldFZhbHVlOjpsb2FkQmVzdEZpdEltYWdlKENhY2hlZFJlc291cmNlCiAgICAgICAgIGlmIChv
cHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKQogICAgICAgICAgICAgcmVx
dWVzdC51cGRhdGVGb3JBY2Nlc3NDb250cm9sKCpkb2N1bWVudCk7CiAKLSAgICAgICAgbV9jYWNo
ZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAg
IG1fY2FjaGVkSW1hZ2UgPSBsb2FkZXIucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkpLnZh
bHVlT3IobnVsbHB0cik7CiAgICAgICAgIG1fYmVzdEZpdEltYWdlU2NhbGVGYWN0b3IgPSBpbWFn
ZS5zY2FsZUZhY3RvcjsKICAgICB9CiAgICAgcmV0dXJuIHsgbV9jYWNoZWRJbWFnZS5nZXQoKSwg
bV9iZXN0Rml0SW1hZ2VTY2FsZUZhY3RvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUu
Y3BwCmluZGV4IDJlMjY2ZGQzN2EwYTc0MzQ5NmFiOTkyMTg4ODAxYjQxNjRkZDRmOTMuLmRmOWI1
NTNkYWU5ZDg0NzE2N2UxMmE4Y2I5MWY2NmE1YTJlMTQzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VWYWx1ZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFs
dWU6OmxvYWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXIK
ICAgICAgICAgICAgIEFTU0VSVChsb2FkZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICByZXF1
ZXN0LnVwZGF0ZUZvckFjY2Vzc0NvbnRyb2woKmxvYWRlci5kb2N1bWVudCgpKTsKICAgICAgICAg
fQotICAgICAgICBtX2NhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJl
cXVlc3QpKTsKKyAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RG
TW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY2Fj
aGVkSW1hZ2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
dWxlSW1wb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCmlu
ZGV4IDAwYTllMzQ4ZjZlNzI0MzgwMTIwNWU3Yjg5Yzc2NGZlNjllMmUyMjguLjY2YjhlZTgzNzE2
M2E4ZTFiYmFjZTJjOTEzOGU0MGFjOTE4NDhlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGVJbXBvcnQuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBTdHlsZVJ1bGVJbXBvcnQ6OnJl
cXVlc3RTdHlsZVNoZWV0KCkKICAgICAgICAgcmVxdWVzdC5zZXRPcHRpb25zKFJlc291cmNlTG9h
ZGVyT3B0aW9ucyhEb05vdFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwg
QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUsIFNr
aXBTZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRl
Q2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9s
aWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGlu
Z1BvbGljeTo6QWxsb3dDYWNoaW5nKSk7CiAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVu
dC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoV1RGTW92
ZShyZXF1ZXN0KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVu
dC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJl
cXVlc3QpKTsKKyAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3Io
bnVsbHB0cik7CiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpIHsKICAgICAgICAgLy8gaWYgdGhlIGlt
cG9ydCBydWxlIGlzIGlzc3VlZCBkeW5hbWljYWxseSwgdGhlIHNoZWV0IG1heSBiZQogICAgICAg
ICAvLyByZW1vdmVkIGZyb20gdGhlIHBlbmRpbmcgc2hlZXQgY291bnQsIHNvIGxldCB0aGUgZG9j
IGtub3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5k
ZXggNzQ1NjAyNmVlOTNmNDkxYTk0ODc2OGRmMjI2YzFhMTMwNmYwMjIyNC4uMGNhYjRlODE4MTE5
Zjk0NDc0OTIzNzRhNzA4NDJmOTE4OWJiZGY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTE2MiwxNCArMTYyLDE0IEBAIHZvaWQgUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgaWYgKG1faXNY
U0wpIHsKICAgICAgICAgICAgICAgICBhdXRvIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogICAgICAgICAgICAgICAgIG9wdGlv
bnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKLSAgICAgICAgICAgICAg
ICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVl
c3RYU0xTdHlsZVNoZWV0KHtSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCho
cmVmKSksIG9wdGlvbnN9KTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1l
bnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RYU0xTdHlsZVNoZWV0KHtSZXNvdXJj
ZVJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnN9KS52YWx1ZU9y
KG51bGxwdHIpOwogICAgICAgICAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBTdHJpbmcgY2hhcnNldCA9IGF0dHJzLmdldCgiY2hhcnNldCIpOwogICAg
ICAgICAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGRvY3VtZW50KCkuY29t
cGxldGVVUkwoaHJlZiksIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3Vy
Y2VPcHRpb25zKCksIHN0ZDo6bnVsbG9wdCwgY2hhcnNldC5pc0VtcHR5KCkgPyBkb2N1bWVudCgp
LmNoYXJzZXQoKSA6IFdURk1vdmUoY2hhcnNldCkpOwogCi0gICAgICAgICAgICAgICAgbV9jYWNo
ZWRTaGVldCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5
bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0
ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0
KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0
LT5hZGRDbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CmluZGV4IDQyZDIyZjdjZGZhOTIwNWM4MDgyNzYzOTZlMzYzZGJmMjJjYjEzZGEuLjg0ZWU3Yjk1
ZDk4Y2Y2NjJhMDJjYTYzNmQzZjY2YjVlOGI4MDQzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVu
dDo6cHJvY2VzcygpCiAgICAgICAgIHJlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2lu
KGNyb3NzT3JpZ2luKCksIGRvY3VtZW50KCkpOwogCiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCFtX2NhY2hlZFNoZWV0KTsKLSAgICAgICAgbV9jYWNoZWRTaGVldCA9
IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChX
VEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3Qp
KS52YWx1ZU9yKG51bGxwdHIpOwogCiAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAg
ICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggYTZl
MzA5Y2RmZmQ4NjI0NjM3ZThkZmVlNzRiOTM1MDFmMGUzZjFjOC4uN2E0Zjg5NjZlYzJlYmQ4NzI0
MjdhYTQxMTg0ZjhiZTczMGMyYmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2
b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6c3RhcnRQcmVmbGlnaHQoKQogICAgICAg
ICBwcmVmbGlnaHRSZXF1ZXN0LnNldEluaXRpYXRvcihtX2xvYWRlci5vcHRpb25zKCkuaW5pdGlh
dG9yKTsKIAogICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7Ci0gICAgbV9yZXNvdXJjZSA9IG1fbG9h
ZGVyLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2Uo
V1RGTW92ZShwcmVmbGlnaHRSZXF1ZXN0KSk7CisgICAgbV9yZXNvdXJjZSA9IG1fbG9hZGVyLmRv
Y3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92
ZShwcmVmbGlnaHRSZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKICAgICBpZiAobV9yZXNvdXJj
ZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDdiY2UzNDhjNGUyZDYyM2MzNTU2M2Zi
ZmFkYzExY2M4Y2E2ZDI1YmUuLmYzYzNkNjhkYjNjMDU0OGJiOWFlOGNiOGU4ODA4N2UzNzY3Mjkz
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTQ4Nyw3
ICsxNDg3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNl
KCkKICAgICAgICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koZnJhbWVMb2FkZXIo
KS0+ZnJhbWUoKS5zZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKICAgICAgICAg
bWFpblJlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihvcmlnaW4tPmRv
bWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwogICAgIH0KLSAgICBtX21haW5SZXNvdXJjZSA9IG1f
Y2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RNYWluUmVzb3VyY2UoV1RGTW92ZShtYWluUmVz
b3VyY2VSZXF1ZXN0KSk7CisgICAgbV9tYWluUmVzb3VyY2UgPSBtX2NhY2hlZFJlc291cmNlTG9h
ZGVyLT5yZXF1ZXN0TWFpblJlc291cmNlKFdURk1vdmUobWFpblJlc291cmNlUmVxdWVzdCkpLnZh
bHVlT3IobnVsbHB0cik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlm
IChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmIG1f
ZnJhbWUtPnBhZ2UoKSAmJiBtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLmRvbWFpbigp
ID09IENvbnRlbnRFeHRlbnNpb25zOjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApp
bmRleCA1NDhiMTYzZmRjZTk1NDAzM2NiYTJiNDViYTAwODQ2ZTlmOTg2OGFkLi4zNGM0MjhiNzQ3
OGZlYTRkMDIyZTMxOWYwM2EzYmFlZDMzOTMzNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDQ5LDE5ICs0NDksMTIg
QEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICAgICAgICAgIHJlc291cmNlLT5yZW1vdmVD
bGllbnQoKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY3JlYXRlIGFuIFVSTCBo
ZXJlIGFzIHRoZSByZXF1ZXN0IHdpbGwgYmUgbW92ZWQgaW4gcmVxdWVzdFJhd1Jlc291cmNlCi0g
ICAgICAgIFVSTCByZXF1ZXN0VXJsID0gbmV3UmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwo
KTsKLSAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKLSAgICAgICAgbV9yZXNvdXJjZSA9IG1f
ZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92
ZShuZXdSZXF1ZXN0KSwgJmVycm9yKTsKKyAgICAgICAgYXV0byBjYWNoZWRSZXNvdXJjZSA9IG1f
ZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92
ZShuZXdSZXF1ZXN0KSk7CisgICAgICAgIG1fcmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZS52YWx1
ZU9yKG51bGxwdHIpOwogICAgICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgICAgIG1fcmVz
b3VyY2UtPmFkZENsaWVudCgqdGhpcyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYg
KGVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFNpbmNlIHdlIHJl
Y2VpdmUgYSBzeW5jaHJvbm91cyBlcnJvciwgdGhpcyBpcyBwcm9iYWJseSBkdWUgdG8gc29tZSBB
Y2Nlc3NDb250cm9sIGNoZWNrcy4gV2Ugc2hvdWxkIHRyeSB0byByZXRyaWV2ZSB0aGUgYWN0dWFs
IGVycm9yLgotICAgICAgICAgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJjZUVycm9yKFN0
cmluZygpLCAwLCByZXF1ZXN0VXJsLCBTdHJpbmcoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCkpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbG9nRXJy
b3JBbmRGYWlsKGVycm9yKTsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBs
b2dFcnJvckFuZEZhaWwoY2FjaGVkUmVzb3VyY2UuZXJyb3IoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDRjZDQ2NWEx
ZDBiMjYwYjBiOTRlZTU2MWM0YzY3NWNmNGU5YTA2Y2IuLmM5OWM2YTg1NDI2OTEyMGNjOTMzYjg1
YWIwZDNjNGFlMDllZjk0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtMzIzNiw3ICszMjM2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVxdWVzdEZyb21EZWxlZ2F0
ZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVuc2lnbmVkIGxvbmcmIGkKICAgICByZXF1ZXN0
ID0gbmV3UmVxdWVzdDsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIG5l
d1JlcXVlc3QpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgp
OwogICAgIGlmICghcGFnZSkKQEAgLTMyNjMsNyArMzI2Myw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwg
UmVzb3VyCiAgICAgfQogCiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyOwotICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShuZXdSZXF1ZXN0LCBpZGVu
dGlmaWVyLCBlcnJvcik7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gcmVzb3Vy
Y2UtPnJlc3BvbnNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGI0Mzkw
N2JlYzZjZjU3ODNiZGU0NTdkMDdiZTFhMzE4YmJhYmEyOGYuLjA1Mzc1YzAxZTBmN2RhZDRmYzk5
MjdlMzUyYWZkNDZjYTQ3NTdjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBA
IC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVhY2hMYXlvdXRNaWxlc3Rv
bmUoTGF5b3V0TWlsZXN0b25lcyk7CiAgICAgdm9pZCBkaWRGaXJzdExheW91dCgpOwogCi0gICAg
dm9pZCBsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSosIFJlc291
cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CisgICAgdm9pZCBsb2FkZWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgUmVz
b3VyY2VFcnJvciYpOwogICAgIHZvaWQgdGVsbENsaWVudEFib3V0UGFzdE1lbW9yeUNhY2hlTG9h
ZHMoKTsKIAogICAgIHZvaWQgY2hlY2tMb2FkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuY3BwCmluZGV4IDA3ZDA4M2JhYjEwMjRiZDk3ZjJiNjZjZGM3NmI0N2RiMzRh
ZDVmMGMuLjE2NWM5MTk5ZjdkZjEzNTZmNDBkZDM3YjAzN2MyMTljMmE2MGZjN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgSW1h
Z2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgICAgIGRvY3VtZW50LmNhY2hl
ZFJlc291cmNlTG9hZGVyKCkubV9kb2N1bWVudFJlc291cmNlcy5zZXQobmV3SW1hZ2UtPnVybCgp
LCBuZXdJbWFnZS5nZXQoKSk7CiAgICAgICAgICAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLnNldEF1dG9Mb2FkSW1hZ2VzKGF1dG9Mb2FkT3RoZXJJbWFnZXMpOwogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIG5ld0ltYWdlID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAgICBuZXdJbWFn
ZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1vdmUo
cmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CiAKICAgICAgICAgLy8gSWYgd2UgZG8gbm90IGhh
dmUgYW4gaW1hZ2UgaGVyZSwgaXQgbWVhbnMgdGhhdCBhIGNyb3NzLXNpdGUKICAgICAgICAgLy8g
dmlvbGF0aW9uIG9jY3VycmVkLCBvciB0aGF0IHRoZSBpbWFnZSB3YXMgYmxvY2tlZCB2aWEgQ29u
dGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDZlMmQ0YWVkYzhjOGQ0
ZjdlZWI4MjQ4MmQ0NGVlNjYxNGRmYzIzMzUuLmExODIxMzU3NjEwMDVkMDA1ODRlMGFjOGEyMGZl
ZTljZDgxNWFmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTIzMCw3
ICsyMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gTGlu
a0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbgogICAgIGxpbmtSZXF1ZXN0LnNldElz
TGlua1ByZWxvYWQoKTsKIAogICAgIGxpbmtSZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09y
aWdpbihjcm9zc09yaWdpbk1vZGUsIGRvY3VtZW50KTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSZXNvdXJjZT4gY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQuY2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS5wcmVsb2FkKHR5cGUudmFsdWUoKSwgV1RGTW92ZShsaW5rUmVxdWVzdCkp
OworICAgIGF1dG8gY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS5wcmVsb2FkKHR5cGUudmFsdWUoKSwgV1RGTW92ZShsaW5rUmVxdWVzdCkpLnZhbHVl
T3IobnVsbHB0cik7CiAKICAgICBpZiAoY2FjaGVkTGlua1Jlc291cmNlICYmIGxvYWRlcikKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQoKmNhY2hlZExpbmtS
ZXNvdXJjZSwgKmxvYWRlciwgdHlwZS52YWx1ZSgpKTsKQEAgLTI4MCw3ICsyODAsNyBAQCBib29s
IExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0
ZSwgY29uc3QgVVJMJiBocmVmLAogICAgICAgICB9CiAgICAgICAgIFJlc291cmNlTG9hZGVyT3B0
aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJj
ZU9wdGlvbnMoKTsKICAgICAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0
aW9uID0gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrOwot
ICAgICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9h
ZGVyKCkucmVxdWVzdExpbmtSZXNvdXJjZSh0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0KGRvY3VtZW50LmNvbXBsZXRlVVJMKGhyZWYpKSwgb3B0aW9ucywgcHJpb3Jp
dHkpKTsKKyAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBkb2N1bWVudC5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLnJlcXVlc3RMaW5rUmVzb3VyY2UodHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnMs
IHByaW9yaXR5KSkudmFsdWVPcihudWxscHRyKTsKICAgICAgICAgaWYgKG1fY2FjaGVkTGlua1Jl
c291cmNlKQogICAgICAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UtPmFkZENsaWVudCgqdGhp
cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDcyY2FlYTc5ZTM5ZTA0ZmI4MjZiN2E4OWVlMzZiODc0MmEzMzc0ZGYuLmM0MDdh
N2NmNTkwMDhkNzQzMDNjYjI4NTUxMjdlNDVjZDZhZDk0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmVmUHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291
cmNlKFJlc291cmNlUmVxdWUKICAgICBpZiAobV9tZWRpYUVsZW1lbnQpCiAgICAgICAgIGNhY2hl
UmVxdWVzdC5zZXRJbml0aWF0b3IoKm1fbWVkaWFFbGVtZW50LmdldCgpKTsKIAotICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiByZXNvdXJjZSA9IG1fZG9jdW1lbnQt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdE1lZGlhKFdURk1vdmUoY2FjaGVSZXF1ZXN0
KSk7CisgICAgYXV0byByZXNvdXJjZSA9IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCkucmVxdWVzdE1lZGlhKFdURk1vdmUoY2FjaGVSZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsK
ICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCAzNjM3MGI0MGRkYTA3NmJjZDlm
OGMwYmZiMjRjNzg1YTA2NzY3ZjNiLi44MDQwYjc4YTMyMjg5ZjIxMmFjZTI5Njc2OGJhOGUxMWU0
NmM2ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAt
MTU1LDcgKzE1NSw3IEBAIGJvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgYm9vbCBpCiAgICAgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0IGN1ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5jb21wbGV0ZVVS
TCh1cmwpKSwgb3B0aW9ucyk7CiAgICAgY3VlUmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NP
cmlnaW4oY3Jvc3NPcmlnaW5Nb2RlLCAqZG9jdW1lbnQpOwogCi0gICAgbV9yZXNvdXJjZSA9IGRv
Y3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RUZXh0VHJhY2soV1RGTW92ZShj
dWVSZXF1ZXN0KSk7CisgICAgbV9yZXNvdXJjZSA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLnJlcXVlc3RUZXh0VHJhY2soV1RGTW92ZShjdWVSZXF1ZXN0KSkudmFsdWVPcihudWxs
cHRyKTsKICAgICBpZiAoIW1fcmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggOTZhMjBhNDI2NzE0NWI0MzZlMWFhM2E4ZWVjMzAwNzVhMzM0YjM1MS4uZjU5OTM2
N2FkMTg4YzIzM2MxZTE1OWZhYWVmOThlYjAzMjBhNGU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04Niw2ICs4
NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaW1lb3V0IGZvciBsaW5rIHByZWxvYWRz
IHRvIGJlIHVzZWQgYWZ0ZXIgd2luZG93Lm9ubG9hZAogc3RhdGljIGNvbnN0IFNlY29uZHMgdW51
c2VkUHJlbG9hZFRpbWVvdXQgeyAzX3MgfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+CitzdGF0aWMgaW5saW5lIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxUPj4gY2FzdENhY2hlZFJlc291cmNlVG8oUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNl
SGFuZGxlPFU+PiYmIGNhY2hlZFJlc291cmNlKQoreworICAgIGlmIChjYWNoZWRSZXNvdXJjZSkK
KyAgICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNlSGFuZGxlPFQ+IHsgc3RhdGljX2Nhc3Q8VCo+
KGNhY2hlZFJlc291cmNlLnZhbHVlKCkuZ2V0KCkpIH07CisgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGNhY2hlZFJlc291cmNlLmVycm9yKCkpOworfQorCiBzdGF0aWMgQ2FjaGVkUmVzb3VyY2Uq
IGNyZWF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgc3dpdGNoICh0
eXBlKSB7CkBAIC0xODEsNyArMTg5LDcgQEAgU2Vzc2lvbklEIENhY2hlZFJlc291cmNlTG9hZGVy
OjpzZXNzaW9uSUQoKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uSUQ7CiB9CiAKLUNhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdElt
YWdlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlRXJyb3IqIGVycm9y
KQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPj4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQogewogICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7CiAgICAg
ICAgIGlmIChmcmFtZS0+bG9hZGVyKCkucGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVk
KCkgIT0gRnJhbWVMb2FkZXI6OlBhZ2VEaXNtaXNzYWxUeXBlOjpOb25lKSB7CkBAIC0xOTAsMzgg
KzE5OCwzOCBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RJbWFnZShDYWNoZWRSZXNvdQogICAgICAgICAgICAgVVJMIHJlcXVl
c3RVUkwgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgICAgICAgICAgaWYg
KHJlcXVlc3RVUkwuaXNWYWxpZCgpICYmIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2UsIHJlcXVlc3RVUkwsIHJlcXVlc3QsIEZvclByZWxvYWQ6Ok5vKSkKICAgICAgICAg
ICAgICAgICBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoKmZyYW1lLCByZXF1ZXN0VVJMKTsKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZEltYWdlPiB7IH07CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhdXRvIGRl
ZmVyID0gY2xpZW50RGVmZXJzSW1hZ2UocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSkg
PyBEZWZlck9wdGlvbjo6RGVmZXJyZWRCeUNsaWVudCA6IERlZmVyT3B0aW9uOjpOb0RlZmVyOwot
ICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRJbWFnZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpJbWFnZVJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvciwgRm9yUHJlbG9h
ZDo6Tm8sIGRlZmVyKS5nZXQoKSk7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENh
Y2hlZEltYWdlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2Us
IFdURk1vdmUocmVxdWVzdCksIEZvclByZWxvYWQ6Ok5vLCBkZWZlcikpOwogfQogCi1DYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEZv
bnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBpc1NWRywgUmVzb3VyY2VF
cnJvciogZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
Rm9udD4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Rm9udChDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBib29sIGlzU1ZHKQogewogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAg
ICAgaWYgKGlzU1ZHKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVkU1ZHRm9udD4ocmVx
dWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpTVkdGb250UmVzb3VyY2UsIFdURk1vdmUocmVx
dWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VU
bzxDYWNoZWRGb250PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlNWR0ZvbnRSZXNv
dXJjZSwgV1RGTW92ZShyZXF1ZXN0KSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXNTVkcp
OwogI2VuZGlmCi0gICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlcXVlc3RSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvciku
Z2V0KCkpOworICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRGb250PihyZXF1
ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0
KSkpOwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkVGV4dFRyYWNrPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFRleHRUcmFjayhD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jl
c291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRUZXh0VHJhY2s+PiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQogewotICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRUZXh0VHJhY2s+KHJlcXVl
c3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2UsIFdURk1vdmUocmVx
dWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENh
Y2hlZFRleHRUcmFjaz4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tS
ZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSkpOwogfQogI2VuZGlmCiAKLUNhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
Q1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVy
cm9yKiBlcnJvcikKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRD
U1NTdHlsZVNoZWV0Pj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVNoZWV0
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0
PENhY2hlZENTU1N0eWxlU2hlZXQ+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NT
U3R5bGVTaGVldCwgV1RGTW92ZShyZXF1ZXN0KSwgZXJyb3IpLmdldCgpKTsKKyAgICByZXR1cm4g
Y2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkQ1NTU3R5bGVTaGVldD4ocmVxdWVzdFJlc291cmNl
KENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0LCBXVEZNb3ZlKHJlcXVlc3QpKSk7CiB9CiAK
LUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNl
TG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUmVzb3VyY2VFcnJvciopCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NT
dHlsZVNoZWV0PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50
KCkpOwogICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKmRvY3VtZW50KCkp
OwpAQCAtMjQ3LDU1ICsyNTUsNTUgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5
bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RVc2VyQ1NTU3QKICAgICByZXR1
cm4gdXNlclNoZWV0OwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U2NyaXB0KENhY2hlZFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlc291cmNlRXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
U2NyaXB0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIGRv
d25jYXN0PENhY2hlZFNjcmlwdD4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpTY3Jp
cHQsIFdURk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgcmV0dXJuIGNhc3RDYWNo
ZWRSZXNvdXJjZVRvPENhY2hlZFNjcmlwdD4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNl
OjpTY3JpcHQsIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KIAogI2lmIEVOQUJMRShYU0xUKQotQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkWFNMU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFhTTFN0eWxlU2hlZXQ+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFhT
TFN0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICByZXR1
cm4gZG93bmNhc3Q8Q2FjaGVkWFNMU3R5bGVTaGVldD4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpYU0xTdHlsZVNoZWV0LCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvcikuZ2V0KCkpOwor
ICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRYU0xTdHlsZVNoZWV0PihyZXF1
ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQsIFdURk1vdmUocmVxdWVz
dCkpKTsKIH0KICNlbmRpZgogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVu
dD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jlc291cmNlRXJyb3JP
cjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4+IENhY2hlZFJlc291cmNl
TG9hZGVyOjpyZXF1ZXN0U1ZHRG9jdW1lbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVkU1ZHRG9jdW1lbnQ+KHJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0
KSwgZXJyb3IpLmdldCgpKTsKKyAgICByZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVk
U1ZHRG9jdW1lbnQ+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U1ZHRG9jdW1lbnRS
ZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSkpOwogfQogCiAjaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RMaW5rUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciogZXJyb3IpCitSZXNv
dXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdExpbmtSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0
eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIEFTU0VSVChmcmFt
ZSgpKTsKICAgICBBU1NFUlQodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoIHx8
IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZSk7Ci0gICAgcmV0dXJuIHJl
cXVlc3RSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvcik7CisgICAgcmV0dXJu
IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KICNlbmRpZgogCi1D
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RNZWRpYShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJj
ZUVycm9yKiBlcnJvcikKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0TWVkaWEoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVk
UmF3UmVzb3VyY2U+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6TWVkaWFSZXNvdXJj
ZSwgV1RGTW92ZShyZXF1ZXN0KSwgZXJyb3IpLmdldCgpKTsKKyAgICByZXR1cm4gY2FzdENhY2hl
ZFJlc291cmNlVG88Q2FjaGVkUmF3UmVzb3VyY2U+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6TWVkaWFSZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSkpOwogfQogCi1DYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RJY29uKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlRXJyb3IqIGVy
cm9yKQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJY29uKENhY2hlZFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNl
PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6Okljb24sIFdURk1vdmUocmVxdWVzdCks
IGVycm9yKS5nZXQoKSk7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENhY2hlZFJh
d1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6Okljb24sIFdURk1vdmUo
cmVxdWVzdCkpKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmF3UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciogZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
CiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXF1ZXN0UmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvciku
Z2V0KCkpOworICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRSYXdSZXNvdXJj
ZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZSwgV1RGTW92ZShy
ZXF1ZXN0KSkpOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RCZWFjb25SZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jlc291cmNlRXJyb3JPcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0QmVhY29uUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
IHsKLSAgICByZXR1cm4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpCZWFjb24sIFdU
Rk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKTsKKyAgICByZXR1cm4gcmVxdWVzdFJlc291cmNl
KENhY2hlZFJlc291cmNlOjpCZWFjb24sIFdURk1vdmUocmVxdWVzdCkpOwogfQogCi1DYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RNYWluUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3Vy
Y2VFcnJvciogZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmF3UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1haW5SZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIHJldHVybiBkb3duY2Fz
dDxDYWNoZWRSYXdSZXNvdXJjZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpNYWlu
UmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgcmV0dXJuIGNh
c3RDYWNoZWRSZXNvdXJjZVRvPENhY2hlZFJhd1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSkpOwogfQogCiBzdGF0
aWMgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Q29udGVudFR5cGUgY29udGVudFR5cGVGcm9tUmVzb3Vy
Y2VUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCkBAIC01NTYsNyArNTY0LDcgQEAgYm9v
bCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEluQ29udGVudERpc3Bvc2l0aW9uQXR0
YWNobWVudFNhbmRib3goQ2FjaGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnNob3VsZENvbnRpbnVlQWZ0ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVt
b3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGRDb250aW51
ZUFmdGVyTm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKIHsKICAgICBpZiAoIXJlc291cmNlIHx8ICFmcmFtZSgpIHx8IHJlc291cmNlLT5z
dGF0dXMoKSAhPSBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTU2NSw3ICs1NzMsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGRDb250
aW51ZUFmdGVyTm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKGNvbgogICAgIG5ld1JlcXVl
c3Quc2V0SW5pdGlhdG9ySWRlbnRpZmllcihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmluaXRp
YXRvcklkZW50aWZpZXIoKSk7CiAgICAgaWYgKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaGlk
ZGVuRnJvbUluc3BlY3RvcigpKQogICAgICAgICBuZXdSZXF1ZXN0LnNldEhpZGRlbkZyb21JbnNw
ZWN0b3IodHJ1ZSk7Ci0gICAgZnJhbWUoKS0+bG9hZGVyKCkubG9hZGVkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUocmVzb3VyY2UsIG5ld1JlcXVlc3QpOworICAgIGZyYW1lKCktPmxvYWRlcigpLmxv
YWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHJlc291cmNlLCBuZXdSZXF1ZXN0LCBlcnJvcik7
CiAKICAgICAvLyBGSVhNRSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTMyNTE+OiBJZiB0aGUgZGVs
ZWdhdGUgbW9kaWZpZXMgdGhlIHJlcXVlc3QncwogICAgIC8vIFVSTCwgaXQgaXMgbm8gbG9uZ2Vy
IGFwcHJvcHJpYXRlIHRvIHVzZSB0aGlzIENhY2hlZFJlc291cmNlLgpAQCAtNjg4LDcgKzY5Niw3
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnVwZGF0ZUhUVFBSZXF1ZXN0SGVhZGVycyhD
YWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDCiAgICAgcmVxdWVzdC51cGRhdGVBY2NvcmRpbmdD
YWNoZU1vZGUoKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciogZXJy
b3IsIEZvclByZWxvYWQgZm9yUHJlbG9hZCwgRGVmZXJPcHRpb24gZGVmZXIpCitSZXNvdXJjZUVy
cm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZvclByZWxvYWQgZm9yUHJlbG9hZCwgRGVmZXJP
cHRpb24gZGVmZXIpCiB7CiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3Vt
ZW50KCkpCiAgICAgICAgIHJlcXVlc3QudXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKCpk
b2N1bWVudCk7CkBAIC02OTksOSArNzA3LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKIAog
ICAgIGlmICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJyZXF1ZXN0UmVzb3VyY2U6IFVSTCBpcyBpbnZhbGlkIChmcmFtZSA9ICVwKSIsIGZyYW1lKCkp
OwotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAqZXJyb3IgPSB7IGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgQVNDSUlMaXRlcmFsKCJVUkwgaXMgaW52YWxpZCIpIH07
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
UmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgQVNDSUlM
aXRlcmFsKCJVUkwgaXMgaW52YWxpZCIpIH0pOwogICAgIH0KIAogICAgIHByZXBhcmVGZXRjaCh0
eXBlLCByZXF1ZXN0KTsKQEAgLTcwOSw5ICs3MTUsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNo
ZQogICAgIC8vIFdlIGFyZSBwYXNzaW5nIHVybCBhcyB3ZWxsIGFzIHJlcXVlc3QsIGFzIHJlcXVl
c3QgdXJsIG1heSBjb250YWluIGEgZnJhZ21lbnQgaWRlbnRpZmllci4KICAgICBpZiAoIWNhblJl
cXVlc3QodHlwZSwgdXJsLCByZXF1ZXN0LCBmb3JQcmVsb2FkKSkgewogICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJyZXF1ZXN0UmVzb3VyY2U6IE5vdCBhbGxvd2VkIHRvIHJlcXVlc3Qg
cmVzb3VyY2UgKGZyYW1lID0gJXApIiwgZnJhbWUoKSk7Ci0gICAgICAgIGlmIChlcnJvcikKLSAg
ICAgICAgICAgICplcnJvciA9IHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCBB
U0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIHRvIHJlcXVlc3QgcmVzb3VyY2UiKSwgUmVzb3VyY2VF
cnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCB1cmwsIEFTQ0lJTGl0ZXJhbCgiTm90IGFsbG93ZWQgdG8gcmVxdWVz
dCByZXNvdXJjZSIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogICAg
IH0KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC03MjIsMTUgKzcyNiwxMyBA
QCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAgICAgICBpZiAoYmxvY2tlZFN0YXR1cy5ibG9j
a2VkTG9hZCkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVxdWVzdFJl
c291cmNlOiBSZXNvdXJjZSBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciAoZnJhbWUgPSAlcCki
LCBmcmFtZSgpKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBl
OjpNYWluUmVzb3VyY2UpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHJlc291cmNlID0gY3JlYXRl
UmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKCkpOworICAgICAgICAg
ICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNy
ZWF0ZVJlc291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCgpKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQocmVzb3VyY2UpOwogICAgICAgICAgICAgICAgIHJlc291cmNlLT5l
cnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzOjpMb2FkRXJyb3IpOwogICAgICAgICAgICAgICAg
IHJlc291cmNlLT5zZXRSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3IoQ29udGVudEV4dGVuc2lv
bnM6OldlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluLCAwLCByZXNvdXJjZVJlcXVlc3QudXJsKCks
IFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIi
LCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlOworICAgICAgICAgICAgICAgIHJldHVybiBX
VEZNb3ZlKHJlc291cmNlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcnJvcikK
LSAgICAgICAgICAgICAgICAqZXJyb3IgPSB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IHVybCwgQVNDSUlMaXRlcmFsKCJSZXNvdXJjZSBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIp
LCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH07Ci0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChSZXNvdXJjZUVy
cm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCBBU0NJSUxpdGVyYWwoIlJl
c291cmNlIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyIiksIFJlc291cmNlRXJyb3I6OlR5cGU6
OkFjY2Vzc0NvbnRyb2wgfSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJsb2NrZWRTdGF0dXMu
bWFkZUhUVFBTCiAgICAgICAgICAgICAmJiB0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpN
YWluUmVzb3VyY2UKQEAgLTc5NCw4ICs3OTYsOSBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQog
ICAgICAgICAgICAgaWYgKHJlc291cmNlLT5zdGF0dXMoKSAhPSBDYWNoZWRSZXNvdXJjZTo6U3Rh
dHVzOjpDYWNoZWQpCiAgICAgICAgICAgICAgICAgcG9saWN5ID0gTG9hZDsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmICghc2hvdWxkQ29udGludWVBZnRlck5vdGlmeWluZ0xvYWRl
ZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0LCByZXNvdXJjZS5nZXQoKSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOworICAg
ICAgICAgICAgaWYgKCFzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9y
eUNhY2hlKHJlcXVlc3QsIHJlc291cmNlLmdldCgpLCBlcnJvcikpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIGxvZ01l
bW9yeUNhY2hlUmVzb3VyY2VSZXF1ZXN0KGZyYW1lKCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6
bWVtb3J5Q2FjaGVFbnRyeURlY2lzaW9uS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dXNl
ZEtleSgpKTsKICAgICAgICAgICAgIGxvYWRUaW1pbmcuc2V0UmVzcG9uc2VFbmQoTW9ub3Rvbmlj
VGltZTo6bm93KCkpOwogCkBAIC04MTgsOSArODIxLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGUKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICBpZiAoIXJlc291cmNl
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQocmVzb3VyY2UpOwogCiAgICAg
aWYgKGZvclByZWxvYWQgPT0gRm9yUHJlbG9hZDo6Tm8gJiYgcmVzb3VyY2UtPmxvYWRlcigpICYm
IHJlc291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKS5pZ25vcmVGb3JSZXF1ZXN0Q291bnQoKSkgewog
ICAgICAgICByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCkuc2V0SWdub3JlRm9yUmVxdWVzdENv
dW50KGZhbHNlKTsKQEAgLTgzNCw5ICs4MzUsOSBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQog
ICAgICAgICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgaWYg
KHJlc291cmNlLT5hbGxvd3NDYWNoaW5nKCkgJiYgcmVzb3VyY2UtPmluQ2FjaGUoKSkKICAgICAg
ICAgICAgICAgICBtZW1vcnlDYWNoZS5yZW1vdmUoKnJlc291cmNlKTsKLSAgICAgICAgICAgIGlm
IChlcnJvcikKLSAgICAgICAgICAgICAgICAqZXJyb3IgPSByZXNvdXJjZS0+cmVzb3VyY2VFcnJv
cigpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBpZiAocmVzb3Vy
Y2UtPnJlc291cmNlRXJyb3IoKS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCB1cmwsIFN0cmluZygpLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC04NDUsNyArODQ2LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKIAogICAg
IEFTU0VSVChyZXNvdXJjZS0+dXJsKCkgPT0gdXJsLnN0cmluZygpKTsKICAgICBtX2RvY3VtZW50
UmVzb3VyY2VzLnNldChyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlKTsKLSAgICByZXR1cm4gcmVz
b3VyY2U7CisgICAgcmV0dXJuIFdURk1vdmUocmVzb3VyY2UpOwogfQogCiB2b2lkIENhY2hlZFJl
c291cmNlTG9hZGVyOjpkb2N1bWVudERpZEZpbmlzaExvYWRFdmVudCgpCkBAIC0xMjQ3LDIxICsx
MjQ4LDIyIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3Vu
dChjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fcmVxdWVzdENv
dW50ID4gLTEpOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2Fk
KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCiB7CiAgICAgaWYgKHJlcXVlc3QuY2hhcnNldCgpLmlzRW1wdHkoKSAmJiAodHlwZSA9PSBD
YWNoZWRSZXNvdXJjZTo6U2NyaXB0IHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxl
U2hlZXQpKQogICAgICAgICByZXF1ZXN0LnNldENoYXJzZXQobV9kb2N1bWVudC0+Y2hhcnNldCgp
KTsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9
IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBudWxscHRyLCBGb3JQcmVs
b2FkOjpZZXMpOwotICAgIGlmIChyZXNvdXJjZSAmJiAoIW1fcHJlbG9hZHMgfHwgIW1fcHJlbG9h
ZHMtPmNvbnRhaW5zKHJlc291cmNlLmdldCgpKSkpIHsKKyAgICBhdXRvIHJlc291cmNlID0gcmVx
dWVzdFJlc291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIEZvclByZWxvYWQ6Olllcyk7Cisg
ICAgaWYgKHJlc291cmNlICYmICghbV9wcmVsb2FkcyB8fCAhbV9wcmVsb2Fkcy0+Y29udGFpbnMo
cmVzb3VyY2UudmFsdWUoKS5nZXQoKSkpKSB7CisgICAgICAgIGF1dG8gcmVzb3VyY2VWYWx1ZSA9
IHJlc291cmNlLnZhbHVlKCk7CiAgICAgICAgIC8vIEZvbnRzIG5lZWQgc3BlY2lhbCB0cmVhdG1l
bnQgc2luY2UganVzdCBjcmVhdGluZyB0aGUgcmVzb3VyY2UgZG9lc24ndCB0cmlnZ2VyIGEgbG9h
ZC4KICAgICAgICAgaWYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSkKLSAg
ICAgICAgICAgIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlc291cmNlLmdldCgpKS0+YmVnaW5Mb2Fk
SWZOZWVkZWQoKnRoaXMpOwotICAgICAgICByZXNvdXJjZS0+aW5jcmVhc2VQcmVsb2FkQ291bnQo
KTsKKyAgICAgICAgICAgIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlc291cmNlVmFsdWUuZ2V0KCkp
LT5iZWdpbkxvYWRJZk5lZWRlZCgqdGhpcyk7CisgICAgICAgIHJlc291cmNlVmFsdWUtPmluY3Jl
YXNlUHJlbG9hZENvdW50KCk7CiAKICAgICAgICAgaWYgKCFtX3ByZWxvYWRzKQogICAgICAgICAg
ICAgbV9wcmVsb2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3Vy
Y2UqPj4oKTsKLSAgICAgICAgbV9wcmVsb2Fkcy0+YWRkKHJlc291cmNlLmdldCgpKTsKKyAgICAg
ICAgbV9wcmVsb2Fkcy0+YWRkKHJlc291cmNlVmFsdWUuZ2V0KCkpOwogICAgIH0KICAgICByZXR1
cm4gcmVzb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDM4YTljMDk4MWIxYTQyZWRhZWQxN2JiODk5ZmY5MzRh
NGVkNTI3NTguLmJmOTAzY2RiYmQ0YjU1ZTdiMzIyMjQ3ODU4ZjBhNGYwNGZjMGUzMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBA
IC01NSw2ICs1Niw5IEBAIGNsYXNzIEltYWdlTG9hZGVyOwogY2xhc3MgU2V0dGluZ3M7CiBjbGFz
cyBVUkw7CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgUmVzb3VyY2VFcnJvck9yID0g
RXhwZWN0ZWQ8VCwgUmVzb3VyY2VFcnJvcj47CisKIC8vIFRoZSBDYWNoZWRSZXNvdXJjZUxvYWRl
ciBwcm92aWRlcyBhIHBlci1jb250ZXh0IGludGVyZmFjZSB0byB0aGUgTWVtb3J5Q2FjaGUKIC8v
IGFuZCBlbmZvcmNlcyBhIGJ1bmNoIG9mIHNlY3VyaXR5IGNoZWNrcyBhbmQgcnVsZXMgZm9yIHJl
c291cmNlIHJldmFsaWRhdGlvbi4KIC8vIEl0cyBsaWZldGltZSBpcyByb3VnaGx5IHBlci1Eb2N1
bWVudExvYWRlciwgaW4gdGhhdCBpdCBpcyBnZW5lcmFsbHkgY3JlYXRlZApAQCAtNzIsMjUgKzc2
LDI1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPiBjcmVh
dGUoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IENhY2hlZFJlc291cmNlTG9hZGVyKGRvY3VtZW50TG9hZGVyKSk7IH0KICAgICB+Q2FjaGVkUmVz
b3VyY2VMb2FkZXIoKTsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBy
ZXF1ZXN0SW1hZ2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlRXJyb3IqID0gbnVs
bHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gcmVx
dWVzdENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlRXJyb3Iq
ID0gbnVsbHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVl
dD4gcmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBSZXNv
dXJjZUVycm9yKiA9IG51bGxwdHIpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNj
cmlwdD4gcmVxdWVzdFNjcmlwdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJv
ciogPSBudWxscHRyKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiByZXF1
ZXN0Rm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBpc1NWRywgUmVzb3VyY2VFcnJv
ciogPSBudWxscHRyKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4gcmVxdWVzdE1lZGlhKENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9
IG51bGxwdHIpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBy
ZXF1ZXN0SWNvbihDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJvciogPSBudWxs
cHRyKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVxdWVzdEJl
YWNvblJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9IG51
bGxwdHIpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiByZXF1
ZXN0UmF3UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlRXJyb3IqID0g
bnVsbHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHJl
cXVlc3RNYWluUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlRXJyb3Iq
ID0gbnVsbHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9jdW1lbnQ+
IHJlcXVlc3RTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJv
ciogPSBudWxscHRyKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkSW1hZ2U+PiByZXF1ZXN0SW1hZ2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOworICAg
IFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0
Pj4gcmVxdWVzdENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IHJlcXVlc3RVc2VyQ1NTU3R5
bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgUmVzb3VyY2VFcnJvck9yPENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4+IHJlcXVlc3RTY3JpcHQoQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYpOworICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRGb250Pj4gcmVxdWVzdEZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIGJvb2wg
aXNTVkcpOworICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4+IHJlcXVlc3RNZWRpYShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAg
UmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4g
cmVxdWVzdEljb24oQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIFJlc291cmNlRXJyb3JP
cjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IHJlcXVlc3RCZWFjb25SZXNv
dXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gcmVxdWVzdFJhd1Jlc291cmNlKENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiByZXF1ZXN0TWFpblJlc291cmNlKENhY2hlZFJl
c291cmNlUmVxdWVzdCYmKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkU1ZHRG9jdW1lbnQ+PiByZXF1ZXN0U1ZHRG9jdW1lbnQoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYpOwogI2lmIEVOQUJMRShYU0xUKQotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFhTTFN0eWxlU2hlZXQ+IHJlcXVlc3RYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVx
dWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9IG51bGxwdHIpOworICAgIFJlc291cmNlRXJyb3JPcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRYU0xTdHlsZVNoZWV0Pj4gcmVxdWVzdFhTTFN0eWxl
U2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKExJTktf
UFJFRkVUQ0gpCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlcXVl
c3RMaW5rUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVz
dCYmLCBSZXNvdXJjZUVycm9yKiA9IG51bGxwdHIpOworICAgIFJlc291cmNlRXJyb3JPcjxDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IHJlcXVlc3RMaW5rUmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKICNlbmRpZgogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRUZXh0
VHJhY2s+IHJlcXVlc3RUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNl
RXJyb3IqID0gbnVsbHB0cik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFRleHRUcmFjaz4+IHJlcXVlc3RUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYpOwogI2VuZGlmCiAKICAgICAvLyBMb2dzIGFuIGFjY2VzcyBkZW5pZWQgbWVzc2FnZSB0
byB0aGUgY29uc29sZSBmb3IgdGhlIHNwZWNpZmllZCBVUkwuCkBAIC0xMzIsNyArMTM2LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNQcmVsb2FkZWQoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpIGNvbnN0OwogICAgIGVudW0gY2xhc3MgQ2xlYXJQcmVsb2Fkc01vZGUgeyBD
bGVhclNwZWN1bGF0aXZlUHJlbG9hZHMsIENsZWFyQWxsUHJlbG9hZHMgfTsKICAgICB2b2lkIGNs
ZWFyUHJlbG9hZHMoQ2xlYXJQcmVsb2Fkc01vZGUpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiBwcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPj4gcHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgcHJpbnRQcmVsb2FkU3RhdHMoKTsKICAgICB2b2lk
IHdhcm5VbnVzZWRQcmVsb2FkcygpOwogICAgIHZvaWQgc3RvcFVudXNlZFByZWxvYWRzVGltZXIo
KTsKQEAgLTE1NSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRm9yUHJlbG9h
ZCB7IFllcywgTm8gfTsKICAgICBlbnVtIGNsYXNzIERlZmVyT3B0aW9uIHsgTm9EZWZlciwgRGVm
ZXJyZWRCeUNsaWVudCB9OwogCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+IHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlc291cmNlRXJyb3IqID0gbnVsbHB0ciwgRm9yUHJlbG9hZCA9IEZvclByZWxv
YWQ6Ok5vLCBEZWZlck9wdGlvbiA9IERlZmVyT3B0aW9uOjpOb0RlZmVyKTsKKyAgICBSZXNvdXJj
ZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiByZXF1ZXN0UmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBGb3JQ
cmVsb2FkID0gRm9yUHJlbG9hZDo6Tm8sIERlZmVyT3B0aW9uID0gRGVmZXJPcHRpb246Ok5vRGVm
ZXIpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRl
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIENhY2hlZFJlc291cmNlJik7CiAgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IGxvYWRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOwogCkBAIC0xNzEsNyArMTc1
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1
cnJlbnRSZXF1ZXN0KGNvbnN0IENhY2hlZFJlc291cmNlJiwgY29uc3QgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHVwZGF0
ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KGNvbnN0IENhY2hlZFJlc291cmNlJiwg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOwogCi0gICAgYm9vbCBzaG91bGRDb250aW51ZUFmdGVy
Tm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVz
dCYsIENhY2hlZFJlc291cmNlKik7CisgICAgYm9vbCBzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5
aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYsIENh
Y2hlZFJlc291cmNlKiwgUmVzb3VyY2VFcnJvciYpOwogICAgIGJvb2wgY2hlY2tJbnNlY3VyZUNv
bnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIGJvb2wg
YWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25z
dCBVUkwmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3Bw
CmluZGV4IGE5YmY3YzY2ZTQyOThlOThlNDQzZDQzN2U3NGJiMTMzOTVkNzY1ZDIuLjJlMDhlZTI4
MzI3Nzk0OGQyNGI2ZjVkMGNhNTQwNzI0ZDEyNzY3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcApA
QCAtNTYsNyArNTYsNyBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpsb2FkKENh
Y2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cgogICAgIGZldGNoT3B0aW9u
cy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOwogICAgIENhY2hlZFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChsb2FkZXIuZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwobV91cmwpKSwgZmV0Y2hPcHRpb25zKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRv
cihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKLSAgICBtX2RvY3VtZW50
ID0gbG9hZGVyLnJlcXVlc3RTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICBtX2Rv
Y3VtZW50ID0gbG9hZGVyLnJlcXVlc3RTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1
ZU9yKG51bGxwdHIpOwogICAgIGlmIChtX2RvY3VtZW50KQogICAgICAgICBtX2RvY3VtZW50LT5h
ZGRDbGllbnQoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIu
Y3BwCmluZGV4IGViZTJhMDZmOWY5ZDNlNmQ0N2YxMGFiZGJiYzBkMWY1MTk0N2ZlMzkuLjQwNmIy
MGM4YTVlOGNmOGExMDg3MjczZjY0NjE5ZDUyYTQwMDg1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCkBAIC03NSwxMSArNzUsMTIgQEAgdm9pZCBJY29uTG9h
ZGVyOjpzdGFydExvYWRpbmcoKQogCiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmljb24pOwogCi0gICAgbV9yZXNvdXJjZSA9IGZyYW1l
LT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJY29uKFdURk1vdmUo
cmVxdWVzdCkpOworICAgIGF1dG8gY2FjaGVkUmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0SWNvbihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAg
ICBtX3Jlc291cmNlID0gY2FjaGVkUmVzb3VyY2UudmFsdWVPcihudWxscHRyKTsKICAgICBpZiAo
bV9yZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICBl
bHNlCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0IGxvYWQgZm9yIGljb24gYXQg
dXJsICVzIiwgcmVzb3VyY2VSZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3IgaWNvbiBhdCB1cmwgJXMg
KGVycm9yOiAlcykiLCByZXNvdXJjZVJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCks
IGNhY2hlZFJlc291cmNlLmVycm9yKCkubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0
YSgpKTsKIH0KIAogdm9pZCBJY29uTG9hZGVyOjpzdG9wTG9hZGluZygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTFmZTgx
NjM3OTE1ZThiNDhjNmU3NWZiOWVjZWJhZjBkY2U4MDc0OS4uOWMwZjRkZGViZmE3ZWVhZDg0N2M1
YjhlYjIzYWExM2IwY2JjMDBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxs
b3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERvU2Vj
dXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNlcnRp
ZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVj
aywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5
OjpEaXNhbGxvd0NhY2hpbmcpKTsKIAogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIg
PSBtX3BhcmVudC0+cGxheWVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgbV9yZXNv
dXJjZSA9IGxvYWRlciA/IGxvYWRlci0+cmVxdWVzdFJhd1Jlc291cmNlKFdURk1vdmUocmVxdWVz
dCkpIDogMDsKKyAgICBtX3Jlc291cmNlID0gbG9hZGVyID8gbG9hZGVyLT5yZXF1ZXN0UmF3UmVz
b3VyY2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKSA6IG51bGxwdHI7CiAgICAg
aWYgKG1fcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CiAg
ICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW0KaW5kZXggMDRiNWMzODgzYWM5NTA3MzAxMzg2ZjcwNWNjMjEzYzBhNDMzMDZi
Zi4uNTg4MjlhMGU5YjUzN2NiMjQ3NGI3NDhmOTFkNjc2YjE1ZWJhMjkxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNzQs
NyArNzQsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkK
ICAgICAvLyBpcyBpbiBhIHVzZXItYWdlbnQgc2hhZG93IHRyZWUuIFNlZSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ5OD4uCiAgICAgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90
QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNr
Q2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERv
U2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNl
cnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lD
aGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9s
aWN5OjpEaXNhbGxvd0NhY2hpbmcpKTsKICAgICBpZiAoYXV0byogbG9hZGVyID0gbV9wYXJlbnQt
PnBsYXllcigpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKQotICAgICAgICBtX3Jlc291cmNlID0g
bG9hZGVyLT5yZXF1ZXN0TWVkaWEoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIG1fcmVzb3Vy
Y2UgPSBsb2FkZXItPnJlcXVlc3RNZWRpYShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxw
dHIpOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVu
dCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCAx
OWVmNjNiMjlhOTQyOTc5ZWI5OGFmNjc3YWEyNmEyMzFkYTVmN2ZkLi5lYzc0YThkMGU1YWI2YjVh
ZDk4YTg4ZTc4ZTEyYzRiYTYyNWQ2YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6cmVx
dWVzdEltYWdlUmVzb3VyY2UoKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZigpKSksIG9wdGlvbnMp
OwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKCp0aGlzKTsKLSAgICBtX2NhY2hlZEltYWdlID0g
ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJl
cXVlc3QpKTsKKyAgICBtX2NhY2hlZEltYWdlID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOwog
CiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCiAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVu
dCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3Bw
CmluZGV4IDU2ZDVlNjNjM2MxNWFhZjZmNWY2ZTliNjk5NGE5MGU2ZmQ2MjIzNDQuLmI0MTk1NzYw
ODMyYmQ0YTg5ZTc2Yjk4NDlkMjY3MzMwNWVmZGZmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBTVkdG
b250RmFjZVVyaUVsZW1lbnQ6OmxvYWRGb250KCkKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXImIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpOwogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnMpOwogICAgICAgICByZXF1
ZXN0LnNldEluaXRpYXRvcigqdGhpcyk7Ci0gICAgICAgIG1fY2FjaGVkRm9udCA9IGNhY2hlZFJl
c291cmNlTG9hZGVyLnJlcXVlc3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHRm9udFRhcmdl
dCgqdGhpcykpOworICAgICAgICBtX2NhY2hlZEZvbnQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NWR0ZvbnRUYXJnZXQoKnRoaXMpKS52YWx1
ZU9yKG51bGxwdHIpOwogICAgICAgICBpZiAobV9jYWNoZWRGb250KSB7CiAgICAgICAgICAgICBt
X2NhY2hlZEZvbnQtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgICAgICAgICBtX2NhY2hlZEZvbnQt
PmJlZ2luTG9hZElmTmVlZGVkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAppbmRleCAzM2MyOGYyNTYzODQxN2M1YWY4ZDM1MjE1YzJjMmM2YTJi
NjdiMmUyLi41ZTczMjM4MGM1ZDgwODM4OGYzOGJhOGMzMDFhMmVlOWNlOTk4MzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC01NzQsNyArNTc0LDcgQEAgdm9pZCBTVkdV
c2VFbGVtZW50Ojp1cGRhdGVFeHRlcm5hbERvY3VtZW50KCkKICAgICAgICAgb3B0aW9ucy5tb2Rl
ID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOwogICAgICAgICBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCB7IFJlc291cmNlUmVxdWVzdCB7IGV4dGVybmFsRG9jdW1lbnRVUkwg
fSwgb3B0aW9ucyB9OwogICAgICAgICByZXF1ZXN0LnNldEluaXRpYXRvcigqdGhpcyk7Ci0gICAg
ICAgIG1fZXh0ZXJuYWxEb2N1bWVudCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KS5yZXF1ZXN0U1ZHRG9jdW1lbnQoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIG1fZXh0ZXJu
YWxEb2N1bWVudCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U1ZH
RG9jdW1lbnQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKICAgICAgICAgaWYg
KG1fZXh0ZXJuYWxEb2N1bWVudCkKICAgICAgICAgICAgIG1fZXh0ZXJuYWxEb2N1bWVudC0+YWRk
Q2xpZW50KCp0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
SW1wb3J0UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKaW5k
ZXggNjFkZTExMTVkMmJjMzQ1ZDVjZGZiZmI5MDhlYThiMTAwYzhlYTQzZS4uN2FkMzk5NDE0OTA0
M2ExNTYwZWU1OWQ0ZTY0ZGE0MTgzMTBjMTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hTTEltcG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRS
dWxlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgWFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0
KCkKIAogICAgIGF1dG8gb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2Fj
aGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpN
b2RlOjpTYW1lT3JpZ2luOwotICAgIG1fY2FjaGVkU2hlZXQgPSBjYWNoZWRSZXNvdXJjZUxvYWRl
ci0+cmVxdWVzdFhTTFN0eWxlU2hlZXQoe1Jlc291cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxv
YWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoYWJzSHJlZikpLCBvcHRpb25zfSk7CisgICAg
bV9jYWNoZWRTaGVldCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0WFNMU3R5bGVTaGVl
dCh7UmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChhYnNIcmVmKSksIG9wdGlvbnN9KS52YWx1ZU9yKG51bGxwdHIpOwogCiAgICAgaWYg
KG1fY2FjaGVkU2hlZXQpIHsKICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KCp0aGlz
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318044</attachid>
            <date>2017-08-14 09:54:05 -0700</date>
            <delta_ts>2017-08-15 12:40:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175505-20170814095404.patch</filename>
            <type>text/plain</type>
            <size>55062</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk3ZmZiYzJiMmY5M2Fl
YjA2NGExNzhhMzk3ZDA3Nzk4Njg3NWZlNC4uYjgwZmJiMTczYzdmZDdiYmQ1MzY0NmU4NWY2ZWM2
N2I2ZmQ0NmNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE3LTA4LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoKSB0byByZXR1cm4gYSBXVEY6OkV4cGVjdGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFVwZGF0ZSBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKCkgdG8gcmV0dXJuIGEgV1RGOjpFeHBl
Y3RlZAorICAgICAgICB0eXBlIGluc3RlYWQgb2YgdXNpbmcgYW4gb3V0IHBhcmFtZXRlciBmb3Ig
dGhlIFJlc291cmNlRXJyb3IgaW4gY2FzZSBvZgorICAgICAgICBzeW5jaHJvbm91cyBmYWlsdXJl
LgorCisgICAgICAgICogTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJlYWNvbjo6c2VuZEJlYWNvbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlIGNvbnN0KToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZVNyY1ZhbHVlOjpjYWNoZWRGb250KToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpsb2FkQmVzdEZpdElt
YWdlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGVJbXBv
cnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlSW1wb3J0OjpyZXF1ZXN0U3R5bGVT
aGVldCk6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCk6CisgICAg
ICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlcjo6c3RhcnRQcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJl
c291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAg
ICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6
OnByZWxvYWRJZk5lZWRlZCk6CisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291
cmNlKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0xvYWRlcjo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhc3RDYWNoZWRSZXNv
dXJjZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VGV4
dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0WFNMU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0TGlua1Jlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0TWVkaWEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJY29uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmF3UmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RCZWFjb25SZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1haW5SZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ29udGlu
dWVBZnRlck5vdGlmeWluZ0xvYWRlZEZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0TG9hZGluZyk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpyZXF1ZXN0SW1hZ2VSZXNvdXJjZSk6
CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGb250RmFjZVVyaUVsZW1lbnQ6OmxvYWRGb250KToKKyAgICAgICAgKiBzdmcvU1ZH
VXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVF
eHRlcm5hbERvY3VtZW50KToKKyAgICAgICAgKiB4bWwvWFNMSW1wb3J0UnVsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYU0xJbXBvcnRSdWxlOjpsb2FkU2hlZXQpOgorCiAyMDE3LTA4LTExICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIGZpbGVzIGlu
c2lkZSBXZWJDb3JlL3dvcmtlcnMgdG8gV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAppbmRleCA4
YjJmNWE3ODAyYTUwOTlhYTU0MzIxNGQ0ZTg3MWZjYTc4ODNhMDhhLi4xZmExZjQxMjY3MTQ5NTBk
ZDQ3MjFmMmUzYzNlYTA2MDU0YjkzZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKQEAgLTczLDEzICs3MywxMiBAQCBFeGNlcHRp
b25Pcjxib29sPiBOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFjb24oTmF2aWdhdG9yJiwgRG9jdW1l
bnQmIGRvY3VtZW50LCBjbwogICAgICAgICAgICAgICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0
aW9uczo6TW9kZTo6Tm9Db3JzOwogICAgICAgICB9CiAgICAgfQotICAgIFJlc291cmNlRXJyb3Ig
ZXJyb3I7Ci0gICAgaWYgKCFkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RC
ZWFjb25SZXNvdXJjZSh7IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgfSwgJmVycm9yKSkgewot
ICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQotICAgICAgICAgICAgZG9jdW1lbnQuYWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZUxldmVsOjpFcnJvciwg
ZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgYXV0byBjYWNoZWRSZXNvdXJjZSA9IGRvY3VtZW50
LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEJlYWNvblJlc291cmNlKHsgV1RGTW92ZShy
ZXF1ZXN0KSwgb3B0aW9ucyB9KTsKKyAgICBpZiAoY2FjaGVkUmVzb3VyY2UpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgZG9jdW1lbnQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6TmV0d29yaywgTWVzc2FnZUxldmVsOjpFcnJvciwgY2FjaGVkUmVzb3VyY2UuZXJyb3IoKS5s
b2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKaW5k
ZXggNjYxZTVlNjRjNjA3NDkwOGE4Y2NlMzRkOTdmNDlmZWM3OTc4MmZjYS4uZWUwNjhmNmIwNWVi
YzM5NGU3NGRhMWI2ODQ2MzdiOTEzZjFlMDE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1
ZXN0U2NyaXB0V2l0aENhY2hlKEQKICAgICBpZiAoIW1faW5pdGlhdG9yTmFtZS5pc051bGwoKSkK
ICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IobV9pbml0aWF0b3JOYW1lKTsKIAotICAgIHJl
dHVybiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RTY3JpcHQoV1RGTW92
ZShyZXF1ZXN0KSk7CisgICAgcmV0dXJuIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCku
cmVxdWVzdFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXggNzVjOTlk
NzQwNjk5NWE1OGQ0NTQ1ZWNmMWNmYTQyYjYyOGI3M2ZlNS4uNjM1NzJjNTE1YmVhNjY1ZjU2Mjc0
MTI1YmZmODNjYmE4MjRjMTYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU3JjVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIENhY2hlZEZvbnQqIENTU0ZvbnRGYWNlU3Jj
VmFsdWU6OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGlzU1ZHLCBib29sCiAK
ICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1l
bnQtPmNvbXBsZXRlVVJMKG1fcmVzb3VyY2UpKSwgb3B0aW9ucyk7CiAgICAgcmVxdWVzdC5zZXRJ
bml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7Ci0gICAgbV9j
YWNoZWRGb250ID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEZvbnQo
V1RGTW92ZShyZXF1ZXN0KSwgaXNTVkcpOworICAgIG1fY2FjaGVkRm9udCA9IGRvY3VtZW50LT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZH
KS52YWx1ZU9yKG51bGxwdHIpOwogICAgIHJldHVybiBtX2NhY2hlZEZvbnQuZ2V0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAppbmRleCBhNWRiNzJkMjRiMjVl
ZmY0YzZhYzMxZDM2ZjYzOTViMjVlMThjZTNmLi4xZWNjMGFiMzI4MzMyOWE1NmJmMGFiZTI1N2Y3
MTJmNGQ4YjgyZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCkBA
IC0xMDUsNyArMTA1LDcgQEAgc3RkOjpwYWlyPENhY2hlZEltYWdlKiwgZmxvYXQ+IENTU0ltYWdl
U2V0VmFsdWU6OmxvYWRCZXN0Rml0SW1hZ2UoQ2FjaGVkUmVzb3VyY2UKICAgICAgICAgaWYgKG9w
dGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpCiAgICAgICAgICAgICByZXF1
ZXN0LnVwZGF0ZUZvckFjY2Vzc0NvbnRyb2woKmRvY3VtZW50KTsKIAotICAgICAgICBtX2NhY2hl
ZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAg
bV9jYWNoZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFs
dWVPcihudWxscHRyKTsKICAgICAgICAgbV9iZXN0Rml0SW1hZ2VTY2FsZUZhY3RvciA9IGltYWdl
LnNjYWxlRmFjdG9yOwogICAgIH0KICAgICByZXR1cm4geyBtX2NhY2hlZEltYWdlLmdldCgpLCBt
X2Jlc3RGaXRJbWFnZVNjYWxlRmFjdG9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5j
cHAKaW5kZXggMmUyNjZkZDM3YTBhNzQzNDk2YWI5OTIxODg4MDFiNDE2NGRkNGY5My4uZGY5YjU1
M2RhZTlkODQ3MTY3ZTEyYThjYjkxZjY2YTVhMmUxNDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJ
bWFnZVZhbHVlLmNwcApAQCAtNzQsNyArNzQsNyBAQCBDYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1
ZTo6bG9hZEltYWdlKENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cgog
ICAgICAgICAgICAgQVNTRVJUKGxvYWRlci5kb2N1bWVudCgpKTsKICAgICAgICAgICAgIHJlcXVl
c3QudXBkYXRlRm9yQWNjZXNzQ29udHJvbCgqbG9hZGVyLmRvY3VtZW50KCkpOwogICAgICAgICB9
Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBsb2FkZXIucmVxdWVzdEltYWdlKFdURk1vdmUocmVx
dWVzdCkpOworICAgICAgICBtX2NhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShXVEZN
b3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOwogICAgIH0KICAgICByZXR1cm4gbV9jYWNo
ZWRJbWFnZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGVJbXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKaW5k
ZXggMDBhOWUzNDhmNmU3MjQzODAxMjA1ZTdiODljNzY0ZmU2OWUyZTIyOC4uNjZiOGVlODM3MTYz
YThlMWJiYWNlMmM5MTM4ZTQwYWM5MTg0OGUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVs
ZUltcG9ydC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFN0eWxlUnVsZUltcG9ydDo6cmVx
dWVzdFN0eWxlU2hlZXQoKQogICAgICAgICByZXF1ZXN0LnNldE9wdGlvbnMoUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBB
bGxvd1N0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGll
bnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSwgU2tp
cFNlY3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzLCBEb05vdEluY2x1ZGVD
ZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xp
Y3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5n
UG9saWN5OjpBbGxvd0NhY2hpbmcpKTsKICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChXVEZNb3Zl
KHJlcXVlc3QpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVx
dWVzdCkpOworICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNl
TG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihu
dWxscHRyKTsKICAgICBpZiAobV9jYWNoZWRTaGVldCkgewogICAgICAgICAvLyBpZiB0aGUgaW1w
b3J0IHJ1bGUgaXMgaXNzdWVkIGR5bmFtaWNhbGx5LCB0aGUgc2hlZXQgbWF5IGJlCiAgICAgICAg
IC8vIHJlbW92ZWQgZnJvbSB0aGUgcGVuZGluZyBzaGVldCBjb3VudCwgc28gbGV0IHRoZSBkb2Mg
a25vdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRl
eCA3NDU2MDI2ZWU5M2Y0OTFhOTQ4NzY4ZGYyMjZjMWExMzA2ZjAyMjI0Li4wY2FiNGU4MTgxMTlm
OTQ0NzQ5MjM3NGE3MDg0MmY5MTg5YmJkZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtMTYyLDE0ICsxNjIsMTQgQEAgdm9pZCBQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAgICAgICAgICAgICBpZiAobV9pc1hT
TCkgewogICAgICAgICAgICAgICAgIGF1dG8gb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVy
OjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgICAgICAgICAgICAgb3B0aW9u
cy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOwotICAgICAgICAgICAgICAg
IG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVz
dFhTTFN0eWxlU2hlZXQoe1Jlc291cmNlUmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhy
ZWYpKSwgb3B0aW9uc30pOworICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVu
dCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFhTTFN0eWxlU2hlZXQoe1Jlc291cmNl
UmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpKSwgb3B0aW9uc30pLnZhbHVlT3Io
bnVsbHB0cik7CiAgICAgICAgICAgICB9IGVsc2UKICNlbmRpZgogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIFN0cmluZyBjaGFyc2V0ID0gYXR0cnMuZ2V0KCJjaGFyc2V0Iik7CiAgICAg
ICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChocmVmKSwgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJj
ZU9wdGlvbnMoKSwgc3RkOjpudWxsb3B0LCBjaGFyc2V0LmlzRW1wdHkoKSA/IGRvY3VtZW50KCku
Y2hhcnNldCgpIDogV1RGTW92ZShjaGFyc2V0KSk7CiAKLSAgICAgICAgICAgICAgICBtX2NhY2hl
ZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHls
ZVNoZWV0KFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQg
PSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQo
V1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQt
PmFkZENsaWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAK
aW5kZXggNDJkMjJmN2NkZmE5MjA1YzgwODI3NjM5NmUzNjNkYmYyMmNiMTNkYS4uODRlZTdiOTVk
OThjZjY2MmEwMmNhNjM2ZDNmNjZiNWU4YjgwNDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcApAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
Ojpwcm9jZXNzKCkKICAgICAgICAgcmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4o
Y3Jvc3NPcmlnaW4oKSwgZG9jdW1lbnQoKSk7CiAKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oIW1fY2FjaGVkU2hlZXQpOwotICAgICAgICBtX2NhY2hlZFNoZWV0ID0g
ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdU
Rk1vdmUocmVxdWVzdCkpOworICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCkp
LnZhbHVlT3IobnVsbHB0cik7CiAKICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAg
ICAgICBtX2NhY2hlZFNoZWV0LT5hZGRDbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCBhNmUz
MDljZGZmZDg2MjQ2MzdlOGRmZWU3NGI5MzUwMWYwZTNmMWM4Li43YTRmODk2NmVjMmViZDg3MjQy
N2FhNDExODRmOGJlNzMwYzJiZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZv
aWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpzdGFydFByZWZsaWdodCgpCiAgICAgICAg
IHByZWZsaWdodFJlcXVlc3Quc2V0SW5pdGlhdG9yKG1fbG9hZGVyLm9wdGlvbnMoKS5pbml0aWF0
b3IpOwogCiAgICAgQVNTRVJUKCFtX3Jlc291cmNlKTsKLSAgICBtX3Jlc291cmNlID0gbV9sb2Fk
ZXIuZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShX
VEZNb3ZlKHByZWZsaWdodFJlcXVlc3QpKTsKKyAgICBtX3Jlc291cmNlID0gbV9sb2FkZXIuZG9j
dW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3Zl
KHByZWZsaWdodFJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOwogICAgIGlmIChtX3Jlc291cmNl
KQogICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggN2JjZTM0OGM0ZTJkNjIzYzM1NTYzZmJm
YWRjMTFjYzhjYTZkMjViZS4uZjNjM2Q2OGRiM2MwNTQ4YmI5YWU4Y2I4ZTg4MDg3ZTM3NjcyOTMx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNDg3LDcg
KzE0ODcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2Uo
KQogICAgICAgICBvcmlnaW4tPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShmcmFtZUxvYWRlcigp
LT5mcmFtZSgpLnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOwogICAgICAgICBt
YWluUmVzb3VyY2VSZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAgICAgfQotICAgIG1fbWFpblJlc291cmNlID0gbV9j
YWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdE1haW5SZXNvdXJjZShXVEZNb3ZlKG1haW5SZXNv
dXJjZVJlcXVlc3QpKTsKKyAgICBtX21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPnJlcXVlc3RNYWluUmVzb3VyY2UoV1RGTW92ZShtYWluUmVzb3VyY2VSZXF1ZXN0KSkudmFs
dWVPcihudWxscHRyKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYg
KG1fbWFpblJlc291cmNlICYmIG1fbWFpblJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYgbV9m
cmFtZS0+cGFnZSgpICYmIG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkuZG9tYWluKCkg
PT0gQ29udGVudEV4dGVuc2lvbnM6OldlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDU0OGIxNjNmZGNlOTU0MDMzY2JhMmI0NWJhMDA4NDZlOWY5ODY4YWQuLjM0YzQyOGI3NDc4
ZmVhNGQwMjJlMzE5ZjAzYTNiYWVkMzM5MzM0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00NDksMTkgKzQ0OSwxMiBA
QCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgICAgICAgICAgcmVzb3VyY2UtPnJlbW92ZUNs
aWVudCgqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBXZSBjcmVhdGUgYW4gVVJMIGhl
cmUgYXMgdGhlIHJlcXVlc3Qgd2lsbCBiZSBtb3ZlZCBpbiByZXF1ZXN0UmF3UmVzb3VyY2UKLSAg
ICAgICAgVVJMIHJlcXVlc3RVcmwgPSBuZXdSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgp
OwotICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwotICAgICAgICBtX3Jlc291cmNlID0gbV9k
b2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3Zl
KG5ld1JlcXVlc3QpLCAmZXJyb3IpOworICAgICAgICBhdXRvIGNhY2hlZFJlc291cmNlID0gbV9k
b2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3Zl
KG5ld1JlcXVlc3QpKTsKKyAgICAgICAgbV9yZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlLnZhbHVl
T3IobnVsbHB0cik7CiAgICAgICAgIGlmIChtX3Jlc291cmNlKQogICAgICAgICAgICAgbV9yZXNv
dXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAo
ZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2luY2Ugd2UgcmVj
ZWl2ZSBhIHN5bmNocm9ub3VzIGVycm9yLCB0aGlzIGlzIHByb2JhYmx5IGR1ZSB0byBzb21lIEFj
Y2Vzc0NvbnRyb2wgY2hlY2tzLiBXZSBzaG91bGQgdHJ5IHRvIHJldHJpZXZlIHRoZSBhY3R1YWwg
ZXJyb3IuCi0gICAgICAgICAgICAgICAgbG9nRXJyb3JBbmRGYWlsKFJlc291cmNlRXJyb3IoU3Ry
aW5nKCksIDAsIHJlcXVlc3RVcmwsIFN0cmluZygpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nl
c3NDb250cm9sKSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBsb2dFcnJv
ckFuZEZhaWwoZXJyb3IpOwotICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxv
Z0Vycm9yQW5kRmFpbChjYWNoZWRSZXNvdXJjZS5lcnJvcigpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNGNkNDY1YTFk
MGIyNjBiMGI5NGVlNTYxYzRjNjc1Y2Y0ZTlhMDZjYi4uZGI1MTg1Y2RmMzk3NmVlNjUzYmE0N2Vh
MjRhMWY5NjQ3YTAxZWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC0zMjM2LDM5ICszMjM2LDM4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlcXVlc3RGcm9tRGVsZWdh
dGUoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1bnNpZ25lZCBsb25nJiBpCiAgICAgcmVxdWVz
dCA9IG5ld1JlcXVlc3Q7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiBu
ZXdSZXF1ZXN0KQordm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2Uo
KTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcmVzb3VyY2Ut
PnNob3VsZFNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSB8fCBtX2RvY3VtZW50TG9hZGVyLT5o
YXZlVG9sZENsaWVudEFib3V0TG9hZChyZXNvdXJjZS0+dXJsKCkpKQorICAgIGlmICghcmVzb3Vy
Y2Uuc2hvdWxkU2VuZFJlc291cmNlTG9hZENhbGxiYWNrcygpIHx8IG1fZG9jdW1lbnRMb2FkZXIt
PmhhdmVUb2xkQ2xpZW50QWJvdXRMb2FkKHJlc291cmNlLnVybCgpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gTWFpbiByZXNvdXJjZSBkZWxlZ2F0ZSBtZXNzYWdlcyBhcmUgc3ludGhlc2l6
ZWQgaW4gTWFpblJlc291cmNlTG9hZGVyLCBzbyB3ZSBtdXN0IG5vdCBzZW5kIHRoZW0gaGVyZS4K
LSAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNl
KQorICAgIGlmIChyZXNvdXJjZS50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFwYWdlLT5hcmVNZW1vcnlDYWNoZUNsaWVu
dENhbGxzRW5hYmxlZCgpKSB7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
TG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKCpwYWdlLCBtX2RvY3VtZW50TG9hZGVyLmdldCgp
LCByZXNvdXJjZSk7Ci0gICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnJlY29yZE1lbW9yeUNhY2hl
TG9hZEZvckZ1dHVyZUNsaWVudE5vdGlmaWNhdGlvbihyZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0
KCkpOwotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJl
c291cmNlLT51cmwoKSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKCpwYWdlLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpLCAm
cmVzb3VyY2UpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZWNvcmRNZW1vcnlDYWNoZUxv
YWRGb3JGdXR1cmVDbGllbnROb3RpZmljYXRpb24ocmVzb3VyY2UucmVzb3VyY2VSZXF1ZXN0KCkp
OworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlc291
cmNlLnVybCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2NsaWVudC5k
aXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBuZXdSZXF1ZXN0LCByZXNvdXJjZS0+cmVzcG9uc2UoKSwgcmVzb3VyY2UtPmVuY29kZWRT
aXplKCkpKSB7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKCpwYWdlLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpLCByZXNvdXJj
ZSk7Ci0gICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmRpZFRlbGxDbGllbnRBYm91dExvYWQocmVz
b3VyY2UtPnVybCgpKTsKKyAgICBpZiAobV9jbGllbnQuZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUobV9kb2N1bWVudExvYWRlci5nZXQoKSwgbmV3UmVxdWVzdCwgcmVzb3Vy
Y2UucmVzcG9uc2UoKSwgcmVzb3VyY2UuZW5jb2RlZFNpemUoKSkpIHsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoKnBhZ2Us
IG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksICZyZXNvdXJjZSk7CisgICAgICAgIG1fZG9jdW1lbnRM
b2FkZXItPmRpZFRlbGxDbGllbnRBYm91dExvYWQocmVzb3VyY2UudXJsKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyOwotICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShuZXdSZXF1ZXN0LCBpZGVu
dGlmaWVyLCBlcnJvcik7CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gcmVzb3Vy
Y2UtPnJlc3BvbnNlKCk7CisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSA9IHJlc291cmNl
LnJlc3BvbnNlKCk7CiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNv
dXJjZTo6TWVtb3J5Q2FjaGUpOwotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRl
TWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwg
cmVzcG9uc2UsIDAsIHJlc291cmNlLT5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CisgICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwgMCwgcmVzb3VyY2UuZW5jb2Rl
ZFNpemUoKSwgMCwgZXJyb3IpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVVzZXJBZ2Vu
dChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CmluZGV4IGI0MzkwN2JlYzZjZjU3ODNiZGU0NTdkMDdiZTFhMzE4YmJhYmEyOGYuLjQ3OWIwYjU5
NDAwMGU2ZDUwMWQ2ZGIxZTNiOTIyZDc4ZWRlOWY3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVhY2hM
YXlvdXRNaWxlc3RvbmUoTGF5b3V0TWlsZXN0b25lcyk7CiAgICAgdm9pZCBkaWRGaXJzdExheW91
dCgpOwogCi0gICAgdm9pZCBsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNv
dXJjZSosIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CisgICAgdm9pZCBsb2FkZWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3
UmVxdWVzdCwgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgdGVsbENsaWVudEFib3V0UGFzdE1l
bW9yeUNhY2hlTG9hZHMoKTsKIAogICAgIHZvaWQgY2hlY2tMb2FkQ29tcGxldGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDA3ZDA4M2JhYjEwMjRiZDk3ZjJiNjZj
ZGM3NmI0N2RiMzRhZDVmMGMuLjE2NWM5MTk5ZjdkZjEzNTZmNDBkZDM3YjAzN2MyMTljMmE2MGZj
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMTkyLDcgKzE5Miw3
IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgICAgIGRv
Y3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkubV9kb2N1bWVudFJlc291cmNlcy5zZXQobmV3
SW1hZ2UtPnVybCgpLCBuZXdJbWFnZS5nZXQoKSk7CiAgICAgICAgICAgICBkb2N1bWVudC5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnNldEF1dG9Mb2FkSW1hZ2VzKGF1dG9Mb2FkT3RoZXJJbWFnZXMp
OwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG5ld0ltYWdlID0gZG9jdW1lbnQuY2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAg
ICAgICBuZXdJbWFnZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdElt
YWdlKFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CiAKICAgICAgICAgLy8gSWYg
d2UgZG8gbm90IGhhdmUgYW4gaW1hZ2UgaGVyZSwgaXQgbWVhbnMgdGhhdCBhIGNyb3NzLXNpdGUK
ICAgICAgICAgLy8gdmlvbGF0aW9uIG9jY3VycmVkLCBvciB0aGF0IHRoZSBpbWFnZSB3YXMgYmxv
Y2tlZCB2aWEgQ29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDZl
MmQ0YWVkYzhjOGQ0ZjdlZWI4MjQ4MmQ0NGVlNjYxNGRmYzIzMzUuLmExODIxMzU3NjEwMDVkMDA1
ODRlMGFjOGEyMGZlZTljZDgxNWFmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5j
cHAKQEAgLTIzMCw3ICsyMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJj
ZUNsaWVudD4gTGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbgogICAgIGxpbmtS
ZXF1ZXN0LnNldElzTGlua1ByZWxvYWQoKTsKIAogICAgIGxpbmtSZXF1ZXN0LnNldEFzUG90ZW50
aWFsbHlDcm9zc09yaWdpbihjcm9zc09yaWdpbk1vZGUsIGRvY3VtZW50KTsKLSAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1l
bnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5wcmVsb2FkKHR5cGUudmFsdWUoKSwgV1RGTW92ZShs
aW5rUmVxdWVzdCkpOworICAgIGF1dG8gY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5wcmVsb2FkKHR5cGUudmFsdWUoKSwgV1RGTW92ZShsaW5rUmVx
dWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CiAKICAgICBpZiAoY2FjaGVkTGlua1Jlc291cmNlICYm
IGxvYWRlcikKICAgICAgICAgcmV0dXJuIGNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQo
KmNhY2hlZExpbmtSZXNvdXJjZSwgKmxvYWRlciwgdHlwZS52YWx1ZSgpKTsKQEAgLTI4MCw3ICsy
ODAsNyBAQCBib29sIExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUm
IHJlbEF0dHJpYnV0ZSwgY29uc3QgVVJMJiBocmVmLAogICAgICAgICB9CiAgICAgICAgIFJlc291
cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRD
YWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQ
b2xpY3lJbXBvc2l0aW9uID0gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBv
bGljeUNoZWNrOwotICAgICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50LmNhY2hl
ZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdExpbmtSZXNvdXJjZSh0eXBlLCBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LmNvbXBsZXRlVVJMKGhyZWYpKSwgb3B0
aW9ucywgcHJpb3JpdHkpKTsKKyAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBkb2N1bWVu
dC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RMaW5rUmVzb3VyY2UodHlwZSwgQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC5jb21wbGV0ZVVSTChocmVm
KSksIG9wdGlvbnMsIHByaW9yaXR5KSkudmFsdWVPcihudWxscHRyKTsKICAgICAgICAgaWYgKG1f
Y2FjaGVkTGlua1Jlc291cmNlKQogICAgICAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UtPmFk
ZENsaWVudCgqdGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDcyY2FlYTc5ZTM5ZTA0ZmI4MjZiN2E4OWVlMzZiODc0MmEz
Mzc0ZGYuLmM0MDdhN2NmNTkwMDhkNzQzMDNjYjI4NTUxMjdlNDVjZDZhZDk0ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTgyLDcgKzgy
LDcgQEAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVkaWFSZXNvdXJjZUxvYWRlcjo6
cmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWUKICAgICBpZiAobV9tZWRpYUVsZW1lbnQpCiAg
ICAgICAgIGNhY2hlUmVxdWVzdC5zZXRJbml0aWF0b3IoKm1fbWVkaWFFbGVtZW50LmdldCgpKTsK
IAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiByZXNvdXJjZSA9
IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdE1lZGlhKFdURk1vdmUo
Y2FjaGVSZXF1ZXN0KSk7CisgICAgYXV0byByZXNvdXJjZSA9IG1fZG9jdW1lbnQtPmNhY2hlZFJl
c291cmNlTG9hZGVyKCkucmVxdWVzdE1lZGlhKFdURk1vdmUoY2FjaGVSZXF1ZXN0KSkudmFsdWVP
cihudWxscHRyKTsKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCAzNjM3MGI0
MGRkYTA3NmJjZDlmOGMwYmZiMjRjNzg1YTA2NzY3ZjNiLi44MDQwYjc4YTMyMjg5ZjIxMmFjZTI5
Njc2OGJhOGUxMWU0NmM2ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgYm9vbCBpCiAgICAg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGN1ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50
LT5jb21wbGV0ZVVSTCh1cmwpKSwgb3B0aW9ucyk7CiAgICAgY3VlUmVxdWVzdC5zZXRBc1BvdGVu
dGlhbGx5Q3Jvc3NPcmlnaW4oY3Jvc3NPcmlnaW5Nb2RlLCAqZG9jdW1lbnQpOwogCi0gICAgbV9y
ZXNvdXJjZSA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RUZXh0VHJh
Y2soV1RGTW92ZShjdWVSZXF1ZXN0KSk7CisgICAgbV9yZXNvdXJjZSA9IGRvY3VtZW50LT5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RUZXh0VHJhY2soV1RGTW92ZShjdWVSZXF1ZXN0KSku
dmFsdWVPcihudWxscHRyKTsKICAgICBpZiAoIW1fcmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggOTZhMjBhNDI2NzE0NWI0MzZlMWFhM2E4ZWVjMzAwNzVhMzM0
YjM1MS4uMjQwMTIwZDIzYWYyY2Y3OTVhZjdkZDZmYjYxNWI5MmY3NmI1MjA4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC04Niw2ICs4NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaW1lb3V0IGZvciBs
aW5rIHByZWxvYWRzIHRvIGJlIHVzZWQgYWZ0ZXIgd2luZG93Lm9ubG9hZAogc3RhdGljIGNvbnN0
IFNlY29uZHMgdW51c2VkUHJlbG9hZFRpbWVvdXQgeyAzX3MgfTsKIAordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitzdGF0aWMgaW5saW5lIFJlc291cmNlRXJyb3JPcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxUPj4gY2FzdENhY2hlZFJlc291cmNlVG8oUmVzb3VyY2VFcnJvck9yPENh
Y2hlZFJlc291cmNlSGFuZGxlPFU+PiYmIGNhY2hlZFJlc291cmNlKQoreworICAgIGlmIChjYWNo
ZWRSZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNlSGFuZGxlPFQ+IHsgc3Rh
dGljX2Nhc3Q8VCo+KGNhY2hlZFJlc291cmNlLnZhbHVlKCkuZ2V0KCkpIH07CisgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKGNhY2hlZFJlc291cmNlLmVycm9yKCkpOworfQorCiBzdGF0aWMgQ2Fj
aGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAg
ICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xODEsNyArMTg5LDcgQEAgU2Vzc2lvbklEIENhY2hlZFJl
c291cmNlTG9hZGVyOjpzZXNzaW9uSUQoKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uSUQ7CiB9
CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdEltYWdlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNl
RXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZEltYWdlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZShDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFt
ZSgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCkucGFnZURpc21pc3NhbEV2ZW50QmVp
bmdEaXNwYXRjaGVkKCkgIT0gRnJhbWVMb2FkZXI6OlBhZ2VEaXNtaXNzYWxUeXBlOjpOb25lKSB7
CkBAIC0xOTAsMzggKzE5OCwzOCBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4g
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZShDYWNoZWRSZXNvdQogICAgICAgICAg
ICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwogICAg
ICAgICAgICAgaWYgKHJlcXVlc3RVUkwuaXNWYWxpZCgpICYmIGNhblJlcXVlc3QoQ2FjaGVkUmVz
b3VyY2U6OkltYWdlUmVzb3VyY2UsIHJlcXVlc3RVUkwsIHJlcXVlc3QsIEZvclByZWxvYWQ6Ok5v
KSkKICAgICAgICAgICAgICAgICBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoKmZyYW1lLCByZXF1ZXN0
VVJMKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiB7IH07CiAgICAgICAgIH0KICAgICB9CiAK
ICAgICBhdXRvIGRlZmVyID0gY2xpZW50RGVmZXJzSW1hZ2UocmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS51cmwoKSkgPyBEZWZlck9wdGlvbjo6RGVmZXJyZWRCeUNsaWVudCA6IERlZmVyT3B0aW9u
OjpOb0RlZmVyOwotICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRJbWFnZT4ocmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJv
ciwgRm9yUHJlbG9hZDo6Tm8sIGRlZmVyKS5nZXQoKSk7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRS
ZXNvdXJjZVRvPENhY2hlZEltYWdlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6Oklt
YWdlUmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCksIEZvclByZWxvYWQ6Ok5vLCBkZWZlcikpOwog
fQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdEZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBpc1NW
RywgUmVzb3VyY2VFcnJvciogZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkRm9udD4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Rm9udChDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGlzU1ZHKQogewogI2lmIEVOQUJMRShT
VkdfRk9OVFMpCiAgICAgaWYgKGlzU1ZHKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVk
U1ZHRm9udD4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpTVkdGb250UmVzb3VyY2Us
IFdURk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgICAgIHJldHVybiBjYXN0Q2Fj
aGVkUmVzb3VyY2VUbzxDYWNoZWRGb250PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OlNWR0ZvbnRSZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSkpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oaXNTVkcpOwogI2VuZGlmCi0gICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlLCBXVEZNb3ZlKHJlcXVl
c3QpLCBlcnJvcikuZ2V0KCkpOworICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNo
ZWRGb250PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSwgV1RG
TW92ZShyZXF1ZXN0KSkpOwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkVGV4dFRyYWNrPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9y
KiBlcnJvcikKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRUZXh0
VHJhY2s+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFRleHRUcmFjayhDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRUZXh0
VHJhY2s+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2Us
IFdURk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRS
ZXNvdXJjZVRvPENhY2hlZFRleHRUcmFjaz4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNl
OjpUZXh0VHJhY2tSZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSkpOwogfQogI2VuZGlmCiAKLUNh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0Q1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0Pj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RD
U1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAgcmV0
dXJuIGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQ+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgV1RGTW92ZShyZXF1ZXN0KSwgZXJyb3IpLmdldCgpKTsK
KyAgICByZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkQ1NTU3R5bGVTaGVldD4ocmVx
dWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0LCBXVEZNb3ZlKHJlcXVl
c3QpKSk7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciopCitDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJD
U1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgQVNT
RVJUKGRvY3VtZW50KCkpOwogICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24o
KmRvY3VtZW50KCkpOwpAQCAtMjQ3LDU1ICsyNTUsNTUgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkQ1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RVc2VyQ1NT
U3QKICAgICByZXR1cm4gdXNlclNoZWV0OwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRTY3JpcHQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U2NyaXB0KENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlRXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJv
ck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4+IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0U2NyaXB0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0g
ICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZFNjcmlwdD4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpTY3JpcHQsIFdURk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgcmV0
dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENhY2hlZFNjcmlwdD4ocmVxdWVzdFJlc291cmNlKENh
Y2hlZFJlc291cmNlOjpTY3JpcHQsIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KIAogI2lmIEVOQUJM
RShYU0xUKQotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkWFNMU3R5bGVTaGVldD4gQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFJlc291cmNlRXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJvck9yPENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFhTTFN0eWxlU2hlZXQ+PiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFhTTFN0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
IHsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVkWFNMU3R5bGVTaGVldD4ocmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0LCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJv
cikuZ2V0KCkpOworICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRYU0xTdHls
ZVNoZWV0PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQsIFdU
Rk1vdmUocmVxdWVzdCkpKTsKIH0KICNlbmRpZgogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRTVkdEb2N1bWVudD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTVkdEb2N1bWVudChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jl
c291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U1ZHRG9jdW1lbnQoQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVkU1ZHRG9jdW1lbnQ+
KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZSwgV1RG
TW92ZShyZXF1ZXN0KSwgZXJyb3IpLmdldCgpKTsKKyAgICByZXR1cm4gY2FzdENhY2hlZFJlc291
cmNlVG88Q2FjaGVkU1ZHRG9jdW1lbnQ+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6
U1ZHRG9jdW1lbnRSZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSkpOwogfQogCiAjaWYgRU5BQkxF
KExJTktfUFJFRkVUQ0gpCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5rUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciog
ZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdExpbmtSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAg
IEFTU0VSVChmcmFtZSgpKTsKICAgICBBU1NFUlQodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1ByZWZldGNoIHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZSk7Ci0g
ICAgcmV0dXJuIHJlcXVlc3RSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvcik7
CisgICAgcmV0dXJuIHJlcXVlc3RSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpKTsKIH0K
ICNlbmRpZgogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RNZWRpYShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
TWVkaWEoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gZG93
bmNhc3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6
TWVkaWFSZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSwgZXJyb3IpLmdldCgpKTsKKyAgICByZXR1
cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkUmF3UmVzb3VyY2U+KHJlcXVlc3RSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6TWVkaWFSZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSkpOwogfQog
Ci1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RJY29uKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291
cmNlRXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJY29uKENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENhY2hl
ZFJhd1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6Okljb24sIFdURk1v
dmUocmVxdWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJj
ZVRvPENhY2hlZFJhd1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6Oklj
b24sIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmF3UmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmF3UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciogZXJyb3IpCitSZXNv
dXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihy
ZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlLCBXVEZNb3ZlKHJlcXVl
c3QpLCBlcnJvcikuZ2V0KCkpOworICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNo
ZWRSYXdSZXNvdXJjZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJj
ZSwgV1RGTW92ZShyZXF1ZXN0KSkpOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RCZWFjb25SZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jlc291
cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0QmVhY29uUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNl
OjpCZWFjb24sIFdURk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKTsKKyAgICByZXR1cm4gcmVx
dWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpCZWFjb24sIFdURk1vdmUocmVxdWVzdCkpOwog
fQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RNYWluUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUmVzb3VyY2VFcnJvciogZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dE1haW5SZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIHJl
dHVybiBkb3duY2FzdDxDYWNoZWRSYXdSZXNvdXJjZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpNYWluUmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKSk7Cisg
ICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENhY2hlZFJhd1Jlc291cmNlPihyZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSkp
OwogfQogCiBzdGF0aWMgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Q29udGVudFR5cGUgY29udGVudFR5
cGVGcm9tUmVzb3VyY2VUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCkBAIC01NTYsMTYg
KzU2NCwxNiBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0SW5Db250ZW50
RGlzcG9zaXRpb25BdHRhY2htZW50U2FuZGJveChDYWNoZQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ29udGludWVBZnRlck5vdGlmeWlu
Z0xvYWRlZEZyb21NZW1vcnlDYWNoZShjb25zdCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK2Jvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnNob3VsZENvbnRpbnVlQWZ0ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUoY29uc3Qg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmICghcmVzb3VyY2UgfHwgIWZyYW1lKCkg
fHwgcmVzb3VyY2UtPnN0YXR1cygpICE9IENhY2hlZFJlc291cmNlOjpDYWNoZWQpCisgICAgaWYg
KCFmcmFtZSgpIHx8IHJlc291cmNlLnN0YXR1cygpICE9IENhY2hlZFJlc291cmNlOjpDYWNoZWQp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3Qg
PSBSZXNvdXJjZVJlcXVlc3QocmVzb3VyY2UtPnVybCgpKTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qg
bmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChyZXNvdXJjZS51cmwoKSk7CiAgICAgbmV3UmVx
dWVzdC5zZXRJbml0aWF0b3JJZGVudGlmaWVyKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaW5p
dGlhdG9ySWRlbnRpZmllcigpKTsKICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5o
aWRkZW5Gcm9tSW5zcGVjdG9yKCkpCiAgICAgICAgIG5ld1JlcXVlc3Quc2V0SGlkZGVuRnJvbUlu
c3BlY3Rvcih0cnVlKTsKLSAgICBmcmFtZSgpLT5sb2FkZXIoKS5sb2FkZWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZShyZXNvdXJjZSwgbmV3UmVxdWVzdCk7CisgICAgZnJhbWUoKS0+bG9hZGVyKCku
bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUocmVzb3VyY2UsIG5ld1JlcXVlc3QsIGVycm9y
KTsKIAogICAgIC8vIEZJWE1FIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExMzI1MT46IElmIHRoZSBk
ZWxlZ2F0ZSBtb2RpZmllcyB0aGUgcmVxdWVzdCdzCiAgICAgLy8gVVJMLCBpdCBpcyBubyBsb25n
ZXIgYXBwcm9wcmlhdGUgdG8gdXNlIHRoaXMgQ2FjaGVkUmVzb3VyY2UuCkBAIC02ODgsNyArNjk2
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlSFRUUFJlcXVlc3RIZWFkZXJz
KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIEMKICAgICByZXF1ZXN0LnVwZGF0ZUFjY29yZGlu
Z0NhY2hlTW9kZSgpOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4g
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlw
ZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yKiBl
cnJvciwgRm9yUHJlbG9hZCBmb3JQcmVsb2FkLCBEZWZlck9wdGlvbiBkZWZlcikKK1Jlc291cmNl
RXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRm9yUHJlbG9hZCBmb3JQcmVsb2FkLCBEZWZl
ck9wdGlvbiBkZWZlcikKIHsKICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9j
dW1lbnQoKSkKICAgICAgICAgcmVxdWVzdC51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQo
KmRvY3VtZW50KTsKQEAgLTY5OSw5ICs3MDcsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQog
CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJlcXVlc3RSZXNvdXJjZTogVVJMIGlzIGludmFsaWQgKGZyYW1lID0gJXApIiwgZnJhbWUo
KSk7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICplcnJvciA9IHsgZXJyb3JEb21h
aW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCBBU0NJSUxpdGVyYWwoIlVSTCBpcyBpbnZhbGlkIikg
fTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCBBU0NJ
SUxpdGVyYWwoIlVSTCBpcyBpbnZhbGlkIikgfSk7CiAgICAgfQogCiAgICAgcHJlcGFyZUZldGNo
KHR5cGUsIHJlcXVlc3QpOwpAQCAtNzA5LDkgKzcxNSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENh
Y2hlCiAgICAgLy8gV2UgYXJlIHBhc3NpbmcgdXJsIGFzIHdlbGwgYXMgcmVxdWVzdCwgYXMgcmVx
dWVzdCB1cmwgbWF5IGNvbnRhaW4gYSBmcmFnbWVudCBpZGVudGlmaWVyLgogICAgIGlmICghY2Fu
UmVxdWVzdCh0eXBlLCB1cmwsIHJlcXVlc3QsIGZvclByZWxvYWQpKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInJlcXVlc3RSZXNvdXJjZTogTm90IGFsbG93ZWQgdG8gcmVxdWVz
dCByZXNvdXJjZSAoZnJhbWUgPSAlcCkiLCBmcmFtZSgpKTsKLSAgICAgICAgaWYgKGVycm9yKQot
ICAgICAgICAgICAgKmVycm9yID0geyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmws
IEFTQ0lJTGl0ZXJhbCgiTm90IGFsbG93ZWQgdG8gcmVxdWVzdCByZXNvdXJjZSIpLCBSZXNvdXJj
ZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH07Ci0gICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgQVNDSUlMaXRlcmFsKCJOb3QgYWxsb3dlZCB0byByZXF1
ZXN0IHJlc291cmNlIiksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiAg
ICAgfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTcyMiwxNSArNzI2LDEz
IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAgIGlmIChibG9ja2VkU3RhdHVzLmJs
b2NrZWRMb2FkKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXF1ZXN0
UmVzb3VyY2U6IFJlc291cmNlIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyIChmcmFtZSA9ICVw
KSIsIGZyYW1lKCkpOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5
cGU6Ok1haW5SZXNvdXJjZSkgewotICAgICAgICAgICAgICAgIGF1dG8gcmVzb3VyY2UgPSBjcmVh
dGVSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQoKSk7CisgICAgICAg
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlID0g
Y3JlYXRlUmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKCkpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2Ut
PmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7CiAgICAgICAgICAgICAg
ICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50RXh0ZW5z
aW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlc291cmNlUmVxdWVzdC51cmwo
KSwgV0VCX1VJX1NUUklORygiVGhlIFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgYmxvY2tl
ciIsICJXZWJLaXRFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0aW9uIikpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2U7CisgICAgICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUocmVzb3VyY2UpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVycm9y
KQotICAgICAgICAgICAgICAgICplcnJvciA9IHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwg
MCwgdXJsLCBBU0NJSUxpdGVyYWwoIlJlc291cmNlIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2Vy
IiksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfTsKLSAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNl
RXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsIEFTQ0lJTGl0ZXJhbCgi
UmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIiKSwgUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6QWNjZXNzQ29udHJvbCB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAoYmxvY2tlZFN0YXR1
cy5tYWRlSFRUUFMKICAgICAgICAgICAgICYmIHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6
Ok1haW5SZXNvdXJjZQpAQCAtNzk0LDggKzc5Niw5IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hl
CiAgICAgICAgICAgICBpZiAocmVzb3VyY2UtPnN0YXR1cygpICE9IENhY2hlZFJlc291cmNlOjpT
dGF0dXM6OkNhY2hlZCkKICAgICAgICAgICAgICAgICBwb2xpY3kgPSBMb2FkOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgaWYgKCFzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5aW5nTG9h
ZGVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3QsIHJlc291cmNlLmdldCgpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7Cisg
ICAgICAgICAgICBpZiAoIXNob3VsZENvbnRpbnVlQWZ0ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVt
b3J5Q2FjaGUocmVxdWVzdCwgKnJlc291cmNlLCBlcnJvcikpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIGxvZ01lbW9y
eUNhY2hlUmVzb3VyY2VSZXF1ZXN0KGZyYW1lKCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6bWVt
b3J5Q2FjaGVFbnRyeURlY2lzaW9uS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dXNlZEtl
eSgpKTsKICAgICAgICAgICAgIGxvYWRUaW1pbmcuc2V0UmVzcG9uc2VFbmQoTW9ub3RvbmljVGlt
ZTo6bm93KCkpOwogCkBAIC04MTgsOSArODIxLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICBpZiAoIXJlc291cmNlKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQocmVzb3VyY2UpOwogCiAgICAgaWYg
KGZvclByZWxvYWQgPT0gRm9yUHJlbG9hZDo6Tm8gJiYgcmVzb3VyY2UtPmxvYWRlcigpICYmIHJl
c291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKS5pZ25vcmVGb3JSZXF1ZXN0Q291bnQoKSkgewogICAg
ICAgICByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCkuc2V0SWdub3JlRm9yUmVxdWVzdENvdW50
KGZhbHNlKTsKQEAgLTgzNCw5ICs4MzUsOSBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAg
ICAgICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgaWYgKHJl
c291cmNlLT5hbGxvd3NDYWNoaW5nKCkgJiYgcmVzb3VyY2UtPmluQ2FjaGUoKSkKICAgICAgICAg
ICAgICAgICBtZW1vcnlDYWNoZS5yZW1vdmUoKnJlc291cmNlKTsKLSAgICAgICAgICAgIGlmIChl
cnJvcikKLSAgICAgICAgICAgICAgICAqZXJyb3IgPSByZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigp
OwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBpZiAocmVzb3VyY2Ut
PnJlc291cmNlRXJyb3IoKS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCB1cmwsIFN0cmluZygpLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC04NDUsNyArODQ2LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKIAogICAgIEFT
U0VSVChyZXNvdXJjZS0+dXJsKCkgPT0gdXJsLnN0cmluZygpKTsKICAgICBtX2RvY3VtZW50UmVz
b3VyY2VzLnNldChyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlKTsKLSAgICByZXR1cm4gcmVzb3Vy
Y2U7CisgICAgcmV0dXJuIFdURk1vdmUocmVzb3VyY2UpOwogfQogCiB2b2lkIENhY2hlZFJlc291
cmNlTG9hZGVyOjpkb2N1bWVudERpZEZpbmlzaExvYWRFdmVudCgpCkBAIC0xMjQ3LDIxICsxMjQ4
LDIyIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3VudChj
b25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fcmVxdWVzdENvdW50
ID4gLTEpOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKENh
Y2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
CiB7CiAgICAgaWYgKHJlcXVlc3QuY2hhcnNldCgpLmlzRW1wdHkoKSAmJiAodHlwZSA9PSBDYWNo
ZWRSZXNvdXJjZTo6U2NyaXB0IHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hl
ZXQpKQogICAgICAgICByZXF1ZXN0LnNldENoYXJzZXQobV9kb2N1bWVudC0+Y2hhcnNldCgpKTsK
IAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IHJl
cXVlc3RSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBudWxscHRyLCBGb3JQcmVsb2Fk
OjpZZXMpOwotICAgIGlmIChyZXNvdXJjZSAmJiAoIW1fcHJlbG9hZHMgfHwgIW1fcHJlbG9hZHMt
PmNvbnRhaW5zKHJlc291cmNlLmdldCgpKSkpIHsKKyAgICBhdXRvIHJlc291cmNlID0gcmVxdWVz
dFJlc291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIEZvclByZWxvYWQ6Olllcyk7CisgICAg
aWYgKHJlc291cmNlICYmICghbV9wcmVsb2FkcyB8fCAhbV9wcmVsb2Fkcy0+Y29udGFpbnMocmVz
b3VyY2UudmFsdWUoKS5nZXQoKSkpKSB7CisgICAgICAgIGF1dG8gcmVzb3VyY2VWYWx1ZSA9IHJl
c291cmNlLnZhbHVlKCk7CiAgICAgICAgIC8vIEZvbnRzIG5lZWQgc3BlY2lhbCB0cmVhdG1lbnQg
c2luY2UganVzdCBjcmVhdGluZyB0aGUgcmVzb3VyY2UgZG9lc24ndCB0cmlnZ2VyIGEgbG9hZC4K
ICAgICAgICAgaWYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSkKLSAgICAg
ICAgICAgIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlc291cmNlLmdldCgpKS0+YmVnaW5Mb2FkSWZO
ZWVkZWQoKnRoaXMpOwotICAgICAgICByZXNvdXJjZS0+aW5jcmVhc2VQcmVsb2FkQ291bnQoKTsK
KyAgICAgICAgICAgIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlc291cmNlVmFsdWUuZ2V0KCkpLT5i
ZWdpbkxvYWRJZk5lZWRlZCgqdGhpcyk7CisgICAgICAgIHJlc291cmNlVmFsdWUtPmluY3JlYXNl
UHJlbG9hZENvdW50KCk7CiAKICAgICAgICAgaWYgKCFtX3ByZWxvYWRzKQogICAgICAgICAgICAg
bV9wcmVsb2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2Uq
Pj4oKTsKLSAgICAgICAgbV9wcmVsb2Fkcy0+YWRkKHJlc291cmNlLmdldCgpKTsKKyAgICAgICAg
bV9wcmVsb2Fkcy0+YWRkKHJlc291cmNlVmFsdWUuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4g
cmVzb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IDM4YTljMDk4MWIxYTQyZWRhZWQxN2JiODk5ZmY5MzRhNGVk
NTI3NTguLjQ5NmIxNjExYzdmNGFiNGJmMjMyMzQ4M2RkNmZlYmE5ZmExOGQzNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC01
NSw2ICs1Niw5IEBAIGNsYXNzIEltYWdlTG9hZGVyOwogY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBV
Ukw7CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgUmVzb3VyY2VFcnJvck9yID0gRXhw
ZWN0ZWQ8VCwgUmVzb3VyY2VFcnJvcj47CisKIC8vIFRoZSBDYWNoZWRSZXNvdXJjZUxvYWRlciBw
cm92aWRlcyBhIHBlci1jb250ZXh0IGludGVyZmFjZSB0byB0aGUgTWVtb3J5Q2FjaGUKIC8vIGFu
ZCBlbmZvcmNlcyBhIGJ1bmNoIG9mIHNlY3VyaXR5IGNoZWNrcyBhbmQgcnVsZXMgZm9yIHJlc291
cmNlIHJldmFsaWRhdGlvbi4KIC8vIEl0cyBsaWZldGltZSBpcyByb3VnaGx5IHBlci1Eb2N1bWVu
dExvYWRlciwgaW4gdGhhdCBpdCBpcyBnZW5lcmFsbHkgY3JlYXRlZApAQCAtNzIsMjUgKzc2LDI1
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPiBjcmVhdGUo
RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENh
Y2hlZFJlc291cmNlTG9hZGVyKGRvY3VtZW50TG9hZGVyKSk7IH0KICAgICB+Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKTsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiByZXF1
ZXN0SW1hZ2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlRXJyb3IqID0gbnVsbHB0
cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gcmVxdWVz
dENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlRXJyb3IqID0g
bnVsbHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4g
cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJj
ZUVycm9yKiA9IG51bGxwdHIpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlw
dD4gcmVxdWVzdFNjcmlwdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJvciog
PSBudWxscHRyKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiByZXF1ZXN0
Rm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBpc1NWRywgUmVzb3VyY2VFcnJvciog
PSBudWxscHRyKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4g
cmVxdWVzdE1lZGlhKENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9IG51
bGxwdHIpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiByZXF1
ZXN0SWNvbihDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJvciogPSBudWxscHRy
KTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVxdWVzdEJlYWNv
blJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9IG51bGxw
dHIpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiByZXF1ZXN0
UmF3UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlRXJyb3IqID0gbnVs
bHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHJlcXVl
c3RNYWluUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlRXJyb3IqID0g
bnVsbHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9jdW1lbnQ+IHJl
cXVlc3RTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJvciog
PSBudWxscHRyKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkSW1hZ2U+PiByZXF1ZXN0SW1hZ2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIFJl
c291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0Pj4g
cmVxdWVzdENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IHJlcXVlc3RVc2VyQ1NTU3R5bGVT
aGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4+IHJlcXVlc3RTY3JpcHQoQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYpOworICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRGb250Pj4gcmVxdWVzdEZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIGJvb2wgaXNT
VkcpOworICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4+IHJlcXVlc3RNZWRpYShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgUmVz
b3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gcmVx
dWVzdEljb24oQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIFJlc291cmNlRXJyb3JPcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IHJlcXVlc3RCZWFjb25SZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gcmVxdWVzdFJhd1Jlc291cmNlKENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiByZXF1ZXN0TWFpblJlc291cmNlKENhY2hlZFJlc291
cmNlUmVxdWVzdCYmKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkU1ZHRG9jdW1lbnQ+PiByZXF1ZXN0U1ZHRG9jdW1lbnQoQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYpOwogI2lmIEVOQUJMRShYU0xUKQotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFhTTFN0eWxlU2hlZXQ+IHJlcXVlc3RYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVz
dCYmLCBSZXNvdXJjZUVycm9yKiA9IG51bGxwdHIpOworICAgIFJlc291cmNlRXJyb3JPcjxDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRYU0xTdHlsZVNoZWV0Pj4gcmVxdWVzdFhTTFN0eWxlU2hl
ZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKExJTktfUFJF
RkVUQ0gpCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlcXVlc3RM
aW5rUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYm
LCBSZXNvdXJjZUVycm9yKiA9IG51bGxwdHIpOworICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IHJlcXVlc3RMaW5rUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKICNlbmRpZgogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRUZXh0VHJh
Y2s+IHJlcXVlc3RUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlRXJy
b3IqID0gbnVsbHB0cik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFRleHRUcmFjaz4+IHJlcXVlc3RUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYpOwogI2VuZGlmCiAKICAgICAvLyBMb2dzIGFuIGFjY2VzcyBkZW5pZWQgbWVzc2FnZSB0byB0
aGUgY29uc29sZSBmb3IgdGhlIHNwZWNpZmllZCBVUkwuCkBAIC0xMzIsNyArMTM2LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNQcmVsb2FkZWQoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpIGNvbnN0OwogICAgIGVudW0gY2xhc3MgQ2xlYXJQcmVsb2Fkc01vZGUgeyBDbGVh
clNwZWN1bGF0aXZlUHJlbG9hZHMsIENsZWFyQWxsUHJlbG9hZHMgfTsKICAgICB2b2lkIGNsZWFy
UHJlbG9hZHMoQ2xlYXJQcmVsb2Fkc01vZGUpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBwcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPj4gcHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgcHJpbnRQcmVsb2FkU3RhdHMoKTsKICAgICB2b2lkIHdh
cm5VbnVzZWRQcmVsb2FkcygpOwogICAgIHZvaWQgc3RvcFVudXNlZFByZWxvYWRzVGltZXIoKTsK
QEAgLTE1NSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRm9yUHJlbG9hZCB7
IFllcywgTm8gfTsKICAgICBlbnVtIGNsYXNzIERlZmVyT3B0aW9uIHsgTm9EZWZlciwgRGVmZXJy
ZWRCeUNsaWVudCB9OwogCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
IHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYsIFJlc291cmNlRXJyb3IqID0gbnVsbHB0ciwgRm9yUHJlbG9hZCA9IEZvclByZWxvYWQ6
Ok5vLCBEZWZlck9wdGlvbiA9IERlZmVyT3B0aW9uOjpOb0RlZmVyKTsKKyAgICBSZXNvdXJjZUVy
cm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiByZXF1ZXN0UmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBGb3JQcmVs
b2FkID0gRm9yUHJlbG9hZDo6Tm8sIERlZmVyT3B0aW9uID0gRGVmZXJPcHRpb246Ok5vRGVmZXIp
OwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIENhY2hlZFJlc291cmNlJik7CiAgICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IGxvYWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOwogCkBAIC0xNzEsNyArMTc1LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJl
bnRSZXF1ZXN0KGNvbnN0IENhY2hlZFJlc291cmNlJiwgY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0Jik7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHVwZGF0ZUNh
Y2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KGNvbnN0IENhY2hlZFJlc291cmNlJiwgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYpOwogCi0gICAgYm9vbCBzaG91bGRDb250aW51ZUFmdGVyTm90
aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYs
IENhY2hlZFJlc291cmNlKik7CisgICAgYm9vbCBzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5aW5n
TG9hZGVkRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYsIENhY2hl
ZFJlc291cmNlJiwgUmVzb3VyY2VFcnJvciYpOwogICAgIGJvb2wgY2hlY2tJbnNlY3VyZUNvbnRl
bnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIGJvb2wgYWxs
b3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBV
UkwmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCmlu
ZGV4IGE5YmY3YzY2ZTQyOThlOThlNDQzZDQzN2U3NGJiMTMzOTVkNzY1ZDIuLjJlMDhlZTI4MzI3
Nzk0OGQyNGI2ZjVkMGNhNTQwNzI0ZDEyNzY3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcApAQCAt
NTYsNyArNTYsNyBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpsb2FkKENhY2hl
ZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cgogICAgIGZldGNoT3B0aW9ucy5t
b2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOwogICAgIENhY2hlZFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChsb2FkZXIuZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwobV91cmwpKSwgZmV0Y2hPcHRpb25zKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihj
YWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKLSAgICBtX2RvY3VtZW50ID0g
bG9hZGVyLnJlcXVlc3RTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICBtX2RvY3Vt
ZW50ID0gbG9hZGVyLnJlcXVlc3RTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9y
KG51bGxwdHIpOwogICAgIGlmIChtX2RvY3VtZW50KQogICAgICAgICBtX2RvY3VtZW50LT5hZGRD
bGllbnQoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3Bw
CmluZGV4IGViZTJhMDZmOWY5ZDNlNmQ0N2YxMGFiZGJiYzBkMWY1MTk0N2ZlMzkuLjQwNmIyMGM4
YTVlOGNmOGExMDg3MjczZjY0NjE5ZDUyYTQwMDg1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25Mb2FkZXIuY3BwCkBAIC03NSwxMSArNzUsMTIgQEAgdm9pZCBJY29uTG9hZGVy
OjpzdGFydExvYWRpbmcoKQogCiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0SW5pdGlhdG9ycygpLmljb24pOwogCi0gICAgbV9yZXNvdXJjZSA9IGZyYW1lLT5k
b2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJY29uKFdURk1vdmUocmVx
dWVzdCkpOworICAgIGF1dG8gY2FjaGVkUmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0SWNvbihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICBt
X3Jlc291cmNlID0gY2FjaGVkUmVzb3VyY2UudmFsdWVPcihudWxscHRyKTsKICAgICBpZiAobV9y
ZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICBlbHNl
Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0IGxvYWQgZm9yIGljb24gYXQgdXJs
ICVzIiwgcmVzb3VyY2VSZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3IgaWNvbiBhdCB1cmwgJXMgKGVy
cm9yOiAlcykiLCByZXNvdXJjZVJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIGNh
Y2hlZFJlc291cmNlLmVycm9yKCkubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAogdm9pZCBJY29uTG9hZGVyOjpzdG9wTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTFmZTgxNjM3
OTE1ZThiNDhjNmU3NWZiOWVjZWJhZjBkY2U4MDc0OS4uOWMwZjRkZGViZmE3ZWVhZDg0N2M1Yjhl
YjIzYWExM2IwY2JjMDBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdlYkNvcmVBVkNG
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMo
U2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dT
dG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERvU2VjdXJp
dHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNlcnRpZmlj
YXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywg
RGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpE
aXNhbGxvd0NhY2hpbmcpKTsKIAogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBt
X3BhcmVudC0+cGxheWVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgbV9yZXNvdXJj
ZSA9IGxvYWRlciA/IGxvYWRlci0+cmVxdWVzdFJhd1Jlc291cmNlKFdURk1vdmUocmVxdWVzdCkp
IDogMDsKKyAgICBtX3Jlc291cmNlID0gbG9hZGVyID8gbG9hZGVyLT5yZXF1ZXN0UmF3UmVzb3Vy
Y2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKSA6IG51bGxwdHI7CiAgICAgaWYg
KG1fcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CiAgICAg
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KaW5kZXggMDRiNWMzODgzYWM5NTA3MzAxMzg2ZjcwNWNjMjEzYzBhNDMzMDZiZi4u
NTg4MjlhMGU5YjUzN2NiMjQ3NGI3NDhmOTFkNjc2YjE1ZWJhMjkxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNzQsNyAr
NzQsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAg
ICAvLyBpcyBpbiBhIHVzZXItYWdlbnQgc2hhZG93IHRyZWUuIFNlZSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ5OD4uCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxs
b3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERvU2Vj
dXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNlcnRp
ZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVj
aywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5
OjpEaXNhbGxvd0NhY2hpbmcpKTsKICAgICBpZiAoYXV0byogbG9hZGVyID0gbV9wYXJlbnQtPnBs
YXllcigpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKQotICAgICAgICBtX3Jlc291cmNlID0gbG9h
ZGVyLT5yZXF1ZXN0TWVkaWEoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIG1fcmVzb3VyY2Ug
PSBsb2FkZXItPnJlcXVlc3RNZWRpYShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIp
OwogCiAgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgq
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCAxOWVm
NjNiMjlhOTQyOTc5ZWI5OGFmNjc3YWEyNmEyMzFkYTVmN2ZkLi5lYzc0YThkMGU1YWI2YjVhZDk4
YTg4ZTc4ZTEyYzRiYTYyNWQ2YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6cmVxdWVz
dEltYWdlUmVzb3VyY2UoKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZigpKSksIG9wdGlvbnMpOwog
ICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKCp0aGlzKTsKLSAgICBtX2NhY2hlZEltYWdlID0gZG9j
dW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVl
c3QpKTsKKyAgICBtX2NhY2hlZEltYWdlID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOwogCiAg
ICAgaWYgKG1fY2FjaGVkSW1hZ2UpCiAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudCgq
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCmlu
ZGV4IDU2ZDVlNjNjM2MxNWFhZjZmNWY2ZTliNjk5NGE5MGU2ZmQ2MjIzNDQuLmI0MTk1NzYwODMy
YmQ0YTg5ZTc2Yjk4NDlkMjY3MzMwNWVmZGZmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBTVkdGb250
RmFjZVVyaUVsZW1lbnQ6OmxvYWRGb250KCkKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIm
IGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
OwogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qo
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnMpOwogICAgICAgICByZXF1ZXN0
LnNldEluaXRpYXRvcigqdGhpcyk7Ci0gICAgICAgIG1fY2FjaGVkRm9udCA9IGNhY2hlZFJlc291
cmNlTG9hZGVyLnJlcXVlc3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHRm9udFRhcmdldCgq
dGhpcykpOworICAgICAgICBtX2NhY2hlZEZvbnQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci5yZXF1
ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NWR0ZvbnRUYXJnZXQoKnRoaXMpKS52YWx1ZU9y
KG51bGxwdHIpOwogICAgICAgICBpZiAobV9jYWNoZWRGb250KSB7CiAgICAgICAgICAgICBtX2Nh
Y2hlZEZvbnQtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgICAgICAgICBtX2NhY2hlZEZvbnQtPmJl
Z2luTG9hZElmTmVlZGVkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmNwcAppbmRleCAzM2MyOGYyNTYzODQxN2M1YWY4ZDM1MjE1YzJjMmM2YTJiNjdi
MmUyLi41ZTczMjM4MGM1ZDgwODM4OGYzOGJhOGMzMDFhMmVlOWNlOTk4MzNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC01NzQsNyArNTc0LDcgQEAgdm9pZCBTVkdVc2VF
bGVtZW50Ojp1cGRhdGVFeHRlcm5hbERvY3VtZW50KCkKICAgICAgICAgb3B0aW9ucy5tb2RlID0g
RmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOwogICAgICAgICBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCB7IFJlc291cmNlUmVxdWVzdCB7IGV4dGVybmFsRG9jdW1lbnRVUkwgfSwg
b3B0aW9ucyB9OwogICAgICAgICByZXF1ZXN0LnNldEluaXRpYXRvcigqdGhpcyk7Ci0gICAgICAg
IG1fZXh0ZXJuYWxEb2N1bWVudCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0U1ZHRG9jdW1lbnQoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIG1fZXh0ZXJuYWxE
b2N1bWVudCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U1ZHRG9j
dW1lbnQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKICAgICAgICAgaWYgKG1f
ZXh0ZXJuYWxEb2N1bWVudCkKICAgICAgICAgICAgIG1fZXh0ZXJuYWxEb2N1bWVudC0+YWRkQ2xp
ZW50KCp0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1w
b3J0UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKaW5kZXgg
NjFkZTExMTVkMmJjMzQ1ZDVjZGZiZmI5MDhlYThiMTAwYzhlYTQzZS4uN2FkMzk5NDE0OTA0M2Ex
NTYwZWU1OWQ0ZTY0ZGE0MTgzMTBjMTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTEltcG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxl
LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgWFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KCkK
IAogICAgIGF1dG8gb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVk
UmVzb3VyY2VPcHRpb25zKCk7CiAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2Rl
OjpTYW1lT3JpZ2luOwotICAgIG1fY2FjaGVkU2hlZXQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci0+
cmVxdWVzdFhTTFN0eWxlU2hlZXQoe1Jlc291cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRl
ci0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoYWJzSHJlZikpLCBvcHRpb25zfSk7CisgICAgbV9j
YWNoZWRTaGVldCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0WFNMU3R5bGVTaGVldCh7
UmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChhYnNIcmVmKSksIG9wdGlvbnN9KS52YWx1ZU9yKG51bGxwdHIpOwogCiAgICAgaWYgKG1f
Y2FjaGVkU2hlZXQpIHsKICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KCp0aGlzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318149</attachid>
            <date>2017-08-15 12:40:16 -0700</date>
            <delta_ts>2017-08-15 14:15:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175505-20170815124016.patch</filename>
            <type>text/plain</type>
            <size>55460</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNiNjJhZmZmZTI0NjY2
ZjdkNjc2YmI2YWZhZDc0YzRkNTE3NjVmNS4uN2RmZWMyNDhlZmQyZTljMzY2MTgxM2JhZjUzZjNi
NDM3NzI3NzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE3LTA4LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoKSB0byByZXR1cm4gYSBXVEY6OkV4cGVjdGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFVwZGF0ZSBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKCkgdG8gcmV0dXJuIGEgV1RGOjpFeHBl
Y3RlZAorICAgICAgICB0eXBlIGluc3RlYWQgb2YgdXNpbmcgYW4gb3V0IHBhcmFtZXRlciBmb3Ig
dGhlIFJlc291cmNlRXJyb3IgaW4gY2FzZSBvZgorICAgICAgICBzeW5jaHJvbm91cyBmYWlsdXJl
LgorCisgICAgICAgICogTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJlYWNvbjo6c2VuZEJlYWNvbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlIGNvbnN0KToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZVNyY1ZhbHVlOjpjYWNoZWRGb250KToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpsb2FkQmVzdEZpdElt
YWdlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGVJbXBv
cnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlSW1wb3J0OjpyZXF1ZXN0U3R5bGVT
aGVldCk6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCk6CisgICAg
ICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlcjo6c3RhcnRQcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJl
c291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAg
ICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6
OnByZWxvYWRJZk5lZWRlZCk6CisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291
cmNlKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0xvYWRlcjo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhc3RDYWNoZWRSZXNv
dXJjZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VGV4
dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0WFNMU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0TGlua1Jlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0TWVkaWEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJY29uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmF3UmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RCZWFjb25SZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1haW5SZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ29udGlu
dWVBZnRlck5vdGlmeWluZ0xvYWRlZEZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0TG9hZGluZyk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpyZXF1ZXN0SW1hZ2VSZXNvdXJjZSk6
CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGb250RmFjZVVyaUVsZW1lbnQ6OmxvYWRGb250KToKKyAgICAgICAgKiBzdmcvU1ZH
VXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVF
eHRlcm5hbERvY3VtZW50KToKKyAgICAgICAgKiB4bWwvWFNMSW1wb3J0UnVsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYU0xJbXBvcnRSdWxlOjpsb2FkU2hlZXQpOgorCiAyMDE3LTA4LTE1ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHF1b3Rh
IGxpbWl0YXRpb24gZm9yIGtlZXBhbGl2ZSBGZXRjaCByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5kZXggOGIyZjVhNzgw
MmE1MDk5YWE1NDMyMTRkNGU4NzFmY2E3ODgzYTA4YS4uMWZhMWY0MTI2NzE0OTUwZGQ0NzIxZjJl
M2MzZWEwNjA1NGI5M2RjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFj
b24vTmF2aWdhdG9yQmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNv
bi9OYXZpZ2F0b3JCZWFjb24uY3BwCkBAIC03MywxMyArNzMsMTIgQEAgRXhjZXB0aW9uT3I8Ym9v
bD4gTmF2aWdhdG9yQmVhY29uOjpzZW5kQmVhY29uKE5hdmlnYXRvciYsIERvY3VtZW50JiBkb2N1
bWVudCwgY28KICAgICAgICAgICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1v
ZGU6Ok5vQ29yczsKICAgICAgICAgfQogICAgIH0KLSAgICBSZXNvdXJjZUVycm9yIGVycm9yOwot
ICAgIGlmICghZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0QmVhY29uUmVz
b3VyY2UoeyBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zIH0sICZlcnJvcikpIHsKLSAgICAgICAg
aWYgKCFlcnJvci5pc051bGwoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOworICAgIGF1dG8gY2FjaGVkUmVzb3VyY2UgPSBkb2N1bWVudC5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RCZWFjb25SZXNvdXJjZSh7IFdURk1vdmUocmVxdWVzdCks
IG9wdGlvbnMgfSk7CisgICAgaWYgKGNhY2hlZFJlc291cmNlKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok5ldHdv
cmssIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNhY2hlZFJlc291cmNlLmVycm9yKCkubG9jYWxpemVk
RGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCmluZGV4IDY2MWU1
ZTY0YzYwNzQ5MDhhOGNjZTM0ZDk3ZjQ5ZmVjNzk3ODJmY2EuLmVlMDY4ZjZiMDVlYmMzOTRlNzRk
YTFiNjg0NjM3YjkxM2YxZTAxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlw
dFdpdGhDYWNoZShECiAgICAgaWYgKCFtX2luaXRpYXRvck5hbWUuaXNOdWxsKCkpCiAgICAgICAg
IHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1faW5pdGlhdG9yTmFtZSk7CiAKLSAgICByZXR1cm4gZG9j
dW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U2NyaXB0KFdURk1vdmUocmVxdWVz
dCkpOworICAgIHJldHVybiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RT
Y3JpcHQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDc1Yzk5ZDc0MDY5OTVh
NThkNDU0NWVjZjFjZmE0MmI2MjhiNzNmZTUuLjYzNTcyYzUxNWJlYTY2NWY1NjI3NDEyNWJmZjgz
Y2JhODI0YzE2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBDYWNoZWRGb250KiBDU1NGb250RmFjZVNyY1ZhbHVlOjpj
YWNoZWRGb250KERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpc1NWRywgYm9vbAogCiAgICAgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5jb21w
bGV0ZVVSTChtX3Jlc291cmNlKSksIG9wdGlvbnMpOwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9y
KGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1fY2FjaGVkRm9u
dCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RGb250KFdURk1vdmUo
cmVxdWVzdCksIGlzU1ZHKTsKKyAgICBtX2NhY2hlZEZvbnQgPSBkb2N1bWVudC0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NWRykudmFsdWVP
cihudWxscHRyKTsKICAgICByZXR1cm4gbV9jYWNoZWRGb250LmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggYTVkYjcyZDI0YjI1ZWZmNGM2YWMz
MWQzNmY2Mzk1YjI1ZTE4Y2UzZi4uMWVjYzBhYjMyODMzMjlhNTZiZjBhYmUyNTdmNzEyZjRkOGI4
MmU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApAQCAtMTA1LDcg
KzEwNSw3IEBAIHN0ZDo6cGFpcjxDYWNoZWRJbWFnZSosIGZsb2F0PiBDU1NJbWFnZVNldFZhbHVl
Ojpsb2FkQmVzdEZpdEltYWdlKENhY2hlZFJlc291cmNlCiAgICAgICAgIGlmIChvcHRpb25zLm1v
ZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKQogICAgICAgICAgICAgcmVxdWVzdC51cGRh
dGVGb3JBY2Nlc3NDb250cm9sKCpkb2N1bWVudCk7CiAKLSAgICAgICAgbV9jYWNoZWRJbWFnZSA9
IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIG1fY2FjaGVk
SW1hZ2UgPSBsb2FkZXIucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVs
bHB0cik7CiAgICAgICAgIG1fYmVzdEZpdEltYWdlU2NhbGVGYWN0b3IgPSBpbWFnZS5zY2FsZUZh
Y3RvcjsKICAgICB9CiAgICAgcmV0dXJuIHsgbV9jYWNoZWRJbWFnZS5nZXQoKSwgbV9iZXN0Rml0
SW1hZ2VTY2FsZUZhY3RvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4
IDJlMjY2ZGQzN2EwYTc0MzQ5NmFiOTkyMTg4ODAxYjQxNjRkZDRmOTMuLmRmOWI1NTNkYWU5ZDg0
NzE2N2UxMmE4Y2I5MWY2NmE1YTJlMTQzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1
ZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFsdWU6OmxvYWRJ
bWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXIKICAgICAgICAg
ICAgIEFTU0VSVChsb2FkZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICByZXF1ZXN0LnVwZGF0
ZUZvckFjY2Vzc0NvbnRyb2woKmxvYWRlci5kb2N1bWVudCgpKTsKICAgICAgICAgfQotICAgICAg
ICBtX2NhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKTsK
KyAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1
ZXN0KSkudmFsdWVPcihudWxscHRyKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY2FjaGVkSW1hZ2Uu
Z2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCmluZGV4IDAwYTll
MzQ4ZjZlNzI0MzgwMTIwNWU3Yjg5Yzc2NGZlNjllMmUyMjguLjY2YjhlZTgzNzE2M2E4ZTFiYmFj
ZTJjOTEzOGU0MGFjOTE4NDhlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGVJbXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQu
Y3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBTdHlsZVJ1bGVJbXBvcnQ6OnJlcXVlc3RTdHls
ZVNoZWV0KCkKICAgICAgICAgcmVxdWVzdC5zZXRPcHRpb25zKFJlc291cmNlTG9hZGVyT3B0aW9u
cyhEb05vdFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9y
ZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3Jl
ZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUsIFNraXBTZWN1cml0
eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNh
dGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2ss
IERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6
QWxsb3dDYWNoaW5nKSk7CiAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0
KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpKTsK
KyAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7
CiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpIHsKICAgICAgICAgLy8gaWYgdGhlIGltcG9ydCBydWxl
IGlzIGlzc3VlZCBkeW5hbWljYWxseSwgdGhlIHNoZWV0IG1heSBiZQogICAgICAgICAvLyByZW1v
dmVkIGZyb20gdGhlIHBlbmRpbmcgc2hlZXQgY291bnQsIHNvIGxldCB0aGUgZG9jIGtub3cKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggNzQ1NjAy
NmVlOTNmNDkxYTk0ODc2OGRmMjI2YzFhMTMwNmYwMjIyNC4uMGNhYjRlODE4MTE5Zjk0NDc0OTIz
NzRhNzA4NDJmOTE4OWJiZGY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5jcHAKQEAgLTE2MiwxNCArMTYyLDE0IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgaWYgKG1faXNYU0wpIHsKICAg
ICAgICAgICAgICAgICBhdXRvIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVs
dENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogICAgICAgICAgICAgICAgIG9wdGlvbnMubW9kZSA9
IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKLSAgICAgICAgICAgICAgICBtX2NhY2hl
ZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RYU0xTdHls
ZVNoZWV0KHtSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSksIG9w
dGlvbnN9KTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RYU0xTdHlsZVNoZWV0KHtSZXNvdXJjZVJlcXVlc3Qo
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnN9KS52YWx1ZU9yKG51bGxwdHIp
OwogICAgICAgICAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBTdHJpbmcgY2hhcnNldCA9IGF0dHJzLmdldCgiY2hhcnNldCIpOwogICAgICAgICAgICAg
ICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwo
aHJlZiksIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25z
KCksIHN0ZDo6bnVsbG9wdCwgY2hhcnNldC5pc0VtcHR5KCkgPyBkb2N1bWVudCgpLmNoYXJzZXQo
KSA6IFdURk1vdmUoY2hhcnNldCkpOwogCi0gICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9
IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChX
VEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1l
bnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUo
cmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0LT5hZGRDbGll
bnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDQy
ZDIyZjdjZGZhOTIwNWM4MDgyNzYzOTZlMzYzZGJmMjJjYjEzZGEuLjg0ZWU3Yjk1ZDk4Y2Y2NjJh
MDJjYTYzNmQzZjY2YjVlOGI4MDQzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2Vz
cygpCiAgICAgICAgIHJlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2luKGNyb3NzT3Jp
Z2luKCksIGRvY3VtZW50KCkpOwogCiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCFtX2NhY2hlZFNoZWV0KTsKLSAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50
KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJl
cXVlc3QpKTsKKyAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9y
KG51bGxwdHIpOwogCiAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAgICAgICAgbV9j
YWNoZWRTaGVldC0+YWRkQ2xpZW50KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggYTZlMzA5Y2RmZmQ4
NjI0NjM3ZThkZmVlNzRiOTM1MDFmMGUzZjFjOC4uN2E0Zjg5NjZlYzJlYmQ4NzI0MjdhYTQxMTg0
ZjhiZTczMGMyYmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6c3RhcnRQcmVmbGlnaHQoKQogICAgICAgICBwcmVmbGln
aHRSZXF1ZXN0LnNldEluaXRpYXRvcihtX2xvYWRlci5vcHRpb25zKCkuaW5pdGlhdG9yKTsKIAog
ICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7Ci0gICAgbV9yZXNvdXJjZSA9IG1fbG9hZGVyLmRvY3Vt
ZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShw
cmVmbGlnaHRSZXF1ZXN0KSk7CisgICAgbV9yZXNvdXJjZSA9IG1fbG9hZGVyLmRvY3VtZW50KCku
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShwcmVmbGln
aHRSZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAg
ICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDdiY2UzNDhjNGUyZDYyM2MzNTU2M2ZiZmFkYzExY2M4
Y2E2ZDI1YmUuLmYzYzNkNjhkYjNjMDU0OGJiOWFlOGNiOGU4ODA4N2UzNzY3MjkzMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTQ4Nyw3ICsxNDg3LDcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICAg
ICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koZnJhbWVMb2FkZXIoKS0+ZnJhbWUo
KS5zZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKICAgICAgICAgbWFpblJlc291
cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihvcmlnaW4tPmRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKCkpOwogICAgIH0KLSAgICBtX21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXItPnJlcXVlc3RNYWluUmVzb3VyY2UoV1RGTW92ZShtYWluUmVzb3VyY2VSZXF1
ZXN0KSk7CisgICAgbV9tYWluUmVzb3VyY2UgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1
ZXN0TWFpblJlc291cmNlKFdURk1vdmUobWFpblJlc291cmNlUmVxdWVzdCkpLnZhbHVlT3IobnVs
bHB0cik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmIChtX21haW5S
ZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmIG1fZnJhbWUtPnBh
Z2UoKSAmJiBtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLmRvbWFpbigpID09IENvbnRl
bnRFeHRlbnNpb25zOjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1NDhi
MTYzZmRjZTk1NDAzM2NiYTJiNDViYTAwODQ2ZTlmOTg2OGFkLi4zNGM0MjhiNzQ3OGZlYTRkMDIy
ZTMxOWYwM2EzYmFlZDMzOTMzNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDQ5LDE5ICs0NDksMTIgQEAgdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFNlY3VyaXR5Q2gKICAgICAgICAgICAgIHJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRo
aXMpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY3JlYXRlIGFuIFVSTCBoZXJlIGFzIHRo
ZSByZXF1ZXN0IHdpbGwgYmUgbW92ZWQgaW4gcmVxdWVzdFJhd1Jlc291cmNlCi0gICAgICAgIFVS
TCByZXF1ZXN0VXJsID0gbmV3UmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKLSAgICAg
ICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKLSAgICAgICAgbV9yZXNvdXJjZSA9IG1fZG9jdW1lbnQu
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShuZXdSZXF1
ZXN0KSwgJmVycm9yKTsKKyAgICAgICAgYXV0byBjYWNoZWRSZXNvdXJjZSA9IG1fZG9jdW1lbnQu
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShuZXdSZXF1
ZXN0KSk7CisgICAgICAgIG1fcmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZS52YWx1ZU9yKG51bGxw
dHIpOwogICAgICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFk
ZENsaWVudCgqdGhpcyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGVycm9yLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFNpbmNlIHdlIHJlY2VpdmUgYSBz
eW5jaHJvbm91cyBlcnJvciwgdGhpcyBpcyBwcm9iYWJseSBkdWUgdG8gc29tZSBBY2Nlc3NDb250
cm9sIGNoZWNrcy4gV2Ugc2hvdWxkIHRyeSB0byByZXRyaWV2ZSB0aGUgYWN0dWFsIGVycm9yLgot
ICAgICAgICAgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJjZUVycm9yKFN0cmluZygpLCAw
LCByZXF1ZXN0VXJsLCBTdHJpbmcoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJv
bCkpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbG9nRXJyb3JBbmRGYWls
KGVycm9yKTsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2dFcnJvckFu
ZEZhaWwoY2FjaGVkUmVzb3VyY2UuZXJyb3IoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDM0Y2U0MmQ1YmZhMjBiNWUw
YWY5ZjRkM2M1NTFkNTczMWQyNzY3Y2EuLmZjNTA2NjYyMmJmOTM4N2ZjOWI3MjQ2ZDlhZWY4MmU3
NWM4YjM1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzIzNiwz
OSArMzIzNiwzOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJvbURlbGVnYXRlKFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgdW5zaWduZWQgbG9uZyYgaQogICAgIHJlcXVlc3QgPSBuZXdS
ZXF1ZXN0OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVz
dCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIHsKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CiAgICAg
aWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXJlc291cmNlLT5zaG91bGRT
ZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgfHwgbV9kb2N1bWVudExvYWRlci0+aGF2ZVRvbGRD
bGllbnRBYm91dExvYWQocmVzb3VyY2UtPnVybCgpKSkKKyAgICBpZiAoIXJlc291cmNlLnNob3Vs
ZFNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSB8fCBtX2RvY3VtZW50TG9hZGVyLT5oYXZlVG9s
ZENsaWVudEFib3V0TG9hZChyZXNvdXJjZS51cmwoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIE1haW4gcmVzb3VyY2UgZGVsZWdhdGUgbWVzc2FnZXMgYXJlIHN5bnRoZXNpemVkIGluIE1h
aW5SZXNvdXJjZUxvYWRlciwgc28gd2UgbXVzdCBub3Qgc2VuZCB0aGVtIGhlcmUuCi0gICAgaWYg
KHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkKKyAgICBp
ZiAocmVzb3VyY2UudHlwZSgpID09IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghcGFnZS0+YXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0Vu
YWJsZWQoKSkgewotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZSgqcGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVzb3Vy
Y2UpOwotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZWNvcmRNZW1vcnlDYWNoZUxvYWRGb3JG
dXR1cmVDbGllbnROb3RpZmljYXRpb24ocmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpKTsKLSAg
ICAgICAgbV9kb2N1bWVudExvYWRlci0+ZGlkVGVsbENsaWVudEFib3V0TG9hZChyZXNvdXJjZS0+
dXJsKCkpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZSgqcGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgJnJlc291cmNl
KTsKKyAgICAgICAgbV9kb2N1bWVudExvYWRlci0+cmVjb3JkTWVtb3J5Q2FjaGVMb2FkRm9yRnV0
dXJlQ2xpZW50Tm90aWZpY2F0aW9uKHJlc291cmNlLnJlc291cmNlUmVxdWVzdCgpKTsKKyAgICAg
ICAgbV9kb2N1bWVudExvYWRlci0+ZGlkVGVsbENsaWVudEFib3V0TG9hZChyZXNvdXJjZS51cmwo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9jbGllbnQuZGlzcGF0Y2hE
aWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobV9kb2N1bWVudExvYWRlci5nZXQoKSwgbmV3
UmVxdWVzdCwgcmVzb3VyY2UtPnJlc3BvbnNlKCksIHJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKSkg
ewotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZSgqcGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVzb3VyY2UpOwotICAg
ICAgICBtX2RvY3VtZW50TG9hZGVyLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlc291cmNlLT51
cmwoKSk7CisgICAgaWYgKG1fY2xpZW50LmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG5ld1JlcXVlc3QsIHJlc291cmNlLnJlc3Bv
bnNlKCksIHJlc291cmNlLmVuY29kZWRTaXplKCkpKSB7CisgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKCpwYWdlLCBtX2RvY3Vt
ZW50TG9hZGVyLmdldCgpLCAmcmVzb3VyY2UpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5k
aWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlc291cmNlLnVybCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcjsKLSAgICBSZXNvdXJjZUVycm9y
IGVycm9yOwogICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUobmV3UmVxdWVzdCwgaWRlbnRpZmllciwg
ZXJyb3IpOwogCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSA9IHJlc291cmNlLT5yZXNw
b25zZSgpOworICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNvdXJjZS5yZXNwb25z
ZSgpOwogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok1l
bW9yeUNhY2hlKTsKLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHJlc3BvbnNl
LCAwLCByZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCwgZXJyb3IpOworICAgIG5vdGlmaWVyKCku
c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRl
bnRpZmllciwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsIDAsIHJlc291cmNlLmVuY29kZWRTaXplKCks
IDAsIGVycm9yKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6YXBwbHlVc2VyQWdlbnQoUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBi
NDM5MDdiZWM2Y2Y1NzgzYmRlNDU3ZDA3YmUxYTMxOGJiYWJhMjhmLi40NzliMGI1OTQwMDBlNmQ1
MDFkNmRiMWUzYjkyMmQ3OGVkZTlmN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aApAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlYWNoTGF5b3V0TWls
ZXN0b25lKExheW91dE1pbGVzdG9uZXMpOwogICAgIHZvaWQgZGlkRmlyc3RMYXlvdXQoKTsKIAot
ICAgIHZvaWQgbG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UqLCBS
ZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOworICAgIHZvaWQgbG9hZGVkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3Qs
IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIHRlbGxDbGllbnRBYm91dFBhc3RNZW1vcnlDYWNo
ZUxvYWRzKCk7CiAKICAgICB2b2lkIGNoZWNrTG9hZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCAwN2QwODNiYWIxMDI0YmQ5N2YyYjY2Y2RjNzZiNDdk
YjM0YWQ1ZjBjLi4xNjVjOTE5OWY3ZGYxMzU2ZjQwZGQzN2IwMzdjMjE5YzJhNjBmYzdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lk
IEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBkb2N1bWVudC5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLm1fZG9jdW1lbnRSZXNvdXJjZXMuc2V0KG5ld0ltYWdlLT51
cmwoKSwgbmV3SW1hZ2UuZ2V0KCkpOwogICAgICAgICAgICAgZG9jdW1lbnQuY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS5zZXRBdXRvTG9hZEltYWdlcyhhdXRvTG9hZE90aGVySW1hZ2VzKTsKICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBuZXdJbWFnZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNl
TG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICAgICAgbmV3
SW1hZ2UgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJbWFnZShXVEZN
b3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOwogCiAgICAgICAgIC8vIElmIHdlIGRvIG5v
dCBoYXZlIGFuIGltYWdlIGhlcmUsIGl0IG1lYW5zIHRoYXQgYSBjcm9zcy1zaXRlCiAgICAgICAg
IC8vIHZpb2xhdGlvbiBvY2N1cnJlZCwgb3IgdGhhdCB0aGUgaW1hZ2Ugd2FzIGJsb2NrZWQgdmlh
IENvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCA1ODk4YmNiMzkz
NTFhZjYyYTg2ZGY5MGVmMDJiODRhNzY1ZGNiZWNmLi43Mjc5NWIwZTAzZTI3MWQ0ZWRhYmM2MDI0
NjUyNDU1ZDFmY2M4MDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC0y
MjksNyArMjI5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+
IExpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZChjb25zdCBMaW4KICAgICBsaW5rUmVxdWVzdC5z
ZXRJc0xpbmtQcmVsb2FkKCk7CiAKICAgICBsaW5rUmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jv
c3NPcmlnaW4oY3Jvc3NPcmlnaW5Nb2RlLCBkb2N1bWVudCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+IGNhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50LmNhY2hl
ZFJlc291cmNlTG9hZGVyKCkucHJlbG9hZCh0eXBlLnZhbHVlKCksIFdURk1vdmUobGlua1JlcXVl
c3QpKTsKKyAgICBhdXRvIGNhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50LmNhY2hlZFJlc291
cmNlTG9hZGVyKCkucHJlbG9hZCh0eXBlLnZhbHVlKCksIFdURk1vdmUobGlua1JlcXVlc3QpKS52
YWx1ZU9yKG51bGxwdHIpOwogCiAgICAgaWYgKGNhY2hlZExpbmtSZXNvdXJjZSAmJiBsb2FkZXIp
CiAgICAgICAgIHJldHVybiBjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50KCpjYWNoZWRM
aW5rUmVzb3VyY2UsICpsb2FkZXIsIHR5cGUudmFsdWUoKSk7CkBAIC0yNzksNyArMjc5LDcgQEAg
Ym9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRy
aWJ1dGUsIGNvbnN0IFVSTCYgaHJlZiwKICAgICAgICAgfQogICAgICAgICBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVz
b3VyY2VPcHRpb25zKCk7CiAgICAgICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1w
b3NpdGlvbiA9IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVj
azsKLSAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLnJlcXVlc3RMaW5rUmVzb3VyY2UodHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnMsIHBy
aW9yaXR5KSk7CisgICAgICAgIG1fY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQuY2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0TGlua1Jlc291cmNlKHR5cGUsIENhY2hlZFJlc291cmNl
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQuY29tcGxldGVVUkwoaHJlZikpLCBvcHRp
b25zLCBwcmlvcml0eSkpLnZhbHVlT3IobnVsbHB0cik7CiAgICAgICAgIGlmIChtX2NhY2hlZExp
bmtSZXNvdXJjZSkKICAgICAgICAgICAgIG1fY2FjaGVkTGlua1Jlc291cmNlLT5hZGRDbGllbnQo
KnRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA3MmNhZWE3OWUzOWUwNGZiODI2YjdhODllZTM2Yjg3NDJhMzM3NGRmLi5j
NDA3YTdjZjU5MDA4ZDc0MzAzY2IyODU1MTI3ZTQ1Y2Q2YWQ5NGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFJl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IE1lZGlhUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RS
ZXNvdXJjZShSZXNvdXJjZVJlcXVlCiAgICAgaWYgKG1fbWVkaWFFbGVtZW50KQogICAgICAgICBj
YWNoZVJlcXVlc3Quc2V0SW5pdGlhdG9yKCptX21lZGlhRWxlbWVudC5nZXQoKSk7CiAKLSAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcmVzb3VyY2UgPSBtX2RvY3Vt
ZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RNZWRpYShXVEZNb3ZlKGNhY2hlUmVx
dWVzdCkpOworICAgIGF1dG8gcmVzb3VyY2UgPSBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLnJlcXVlc3RNZWRpYShXVEZNb3ZlKGNhY2hlUmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0
cik7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggMzYzNzBiNDBkZGEwNzZi
Y2Q5ZjhjMGJmYjI0Yzc4NWEwNjc2N2YzYi4uODA0MGI3OGEzMjI4OWYyMTJhY2UyOTY3NjhiYThl
MTFlNDZjNmRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
QEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGJvb2wgaQogICAgIENhY2hlZFJl
c291cmNlUmVxdWVzdCBjdWVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC0+Y29tcGxl
dGVVUkwodXJsKSksIG9wdGlvbnMpOwogICAgIGN1ZVJlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNy
b3NzT3JpZ2luKGNyb3NzT3JpZ2luTW9kZSwgKmRvY3VtZW50KTsKIAotICAgIG1fcmVzb3VyY2Ug
PSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0VGV4dFRyYWNrKFdURk1v
dmUoY3VlUmVxdWVzdCkpOworICAgIG1fcmVzb3VyY2UgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS5yZXF1ZXN0VGV4dFRyYWNrKFdURk1vdmUoY3VlUmVxdWVzdCkpLnZhbHVlT3Io
bnVsbHB0cik7CiAgICAgaWYgKCFtX3Jlc291cmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGJlYWE5MWY4MDBjNzM1ZDliNmMzM2FlNmQ2YmYyNmUzMGM1NGFmMzAuLjNj
NGM4OTFhMjM3NDZkMTRmZjJmNmNkNWMyMDFlZGUxNmMwNmNlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtODYs
NiArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGltZW91dCBmb3IgbGluayBwcmVs
b2FkcyB0byBiZSB1c2VkIGFmdGVyIHdpbmRvdy5vbmxvYWQKIHN0YXRpYyBjb25zdCBTZWNvbmRz
IHVudXNlZFByZWxvYWRUaW1lb3V0IHsgM19zIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgorc3RhdGljIGlubGluZSBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VI
YW5kbGU8VD4+IGNhc3RDYWNoZWRSZXNvdXJjZVRvKFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNv
dXJjZUhhbmRsZTxVPj4mJiBjYWNoZWRSZXNvdXJjZSkKK3sKKyAgICBpZiAoY2FjaGVkUmVzb3Vy
Y2UpCisgICAgICAgIHJldHVybiBDYWNoZWRSZXNvdXJjZUhhbmRsZTxUPiB7IHN0YXRpY19jYXN0
PFQqPihjYWNoZWRSZXNvdXJjZS52YWx1ZSgpLmdldCgpKSB9OworICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChjYWNoZWRSZXNvdXJjZS5lcnJvcigpKTsKK30KKwogc3RhdGljIENhY2hlZFJlc291
cmNlKiBjcmVhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHN3aXRj
aCAodHlwZSkgewpAQCAtMTgxLDcgKzE4OSw3IEBAIFNlc3Npb25JRCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6c2Vzc2lvbklEKCkgY29uc3QKICAgICByZXR1cm4gc2Vzc2lvbklEOwogfQogCi1DYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RJbWFnZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yKiBl
cnJvcikKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4+
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCkKIHsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgewog
ICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLnBhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0
Y2hlZCgpICE9IEZyYW1lTG9hZGVyOjpQYWdlRGlzbWlzc2FsVHlwZTo6Tm9uZSkgewpAQCAtMTkw
LDM4ICsxOTgsMzggQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoQ2FjaGVkUmVzb3UKICAgICAgICAgICAgIFVSTCBy
ZXF1ZXN0VVJMID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKICAgICAgICAgICAg
IGlmIChyZXF1ZXN0VVJMLmlzVmFsaWQoKSAmJiBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpJ
bWFnZVJlc291cmNlLCByZXF1ZXN0VVJMLCByZXF1ZXN0LCBGb3JQcmVsb2FkOjpObykpCiAgICAg
ICAgICAgICAgICAgUGluZ0xvYWRlcjo6bG9hZEltYWdlKCpmcmFtZSwgcmVxdWVzdFVSTCk7Ci0g
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4geyB9OwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXV0
byBkZWZlciA9IGNsaWVudERlZmVyc0ltYWdlKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJs
KCkpID8gRGVmZXJPcHRpb246OkRlZmVycmVkQnlDbGllbnQgOiBEZWZlck9wdGlvbjo6Tm9EZWZl
cjsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlcXVlc3RSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSwgZXJyb3IsIEZvclBy
ZWxvYWQ6Ok5vLCBkZWZlcikuZ2V0KCkpOworICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VU
bzxDYWNoZWRJbWFnZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291
cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBGb3JQcmVsb2FkOjpObywgZGVmZXIpKTsKIH0KIAotQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgaXNTVkcsIFJlc291
cmNlRXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZEZvbnQ+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEZvbnQoQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBpc1NWRykKIHsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRT
KQogICAgIGlmIChpc1NWRykKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZFNWR0ZvbnQ+
KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U1ZHRm9udFJlc291cmNlLCBXVEZNb3Zl
KHJlcXVlc3QpLCBlcnJvcikuZ2V0KCkpOworICAgICAgICByZXR1cm4gY2FzdENhY2hlZFJlc291
cmNlVG88Q2FjaGVkRm9udD4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpTVkdGb250
UmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCkpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGlz
U1ZHKTsKICNlbmRpZgotICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRGb250PihyZXF1ZXN0UmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSwgZXJy
b3IpLmdldCgpKTsKKyAgICByZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkRm9udD4o
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2UsIFdURk1vdmUocmVx
dWVzdCkpKTsKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLUNhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFRleHRUcmFjaz4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RUZXh0VHJh
Y2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciogZXJyb3Ip
CitSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkVGV4dFRyYWNrPj4g
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVkVGV4dFRyYWNrPihy
ZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlRleHRUcmFja1Jlc291cmNlLCBXVEZNb3Zl
KHJlcXVlc3QpLCBlcnJvcikuZ2V0KCkpOworICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VU
bzxDYWNoZWRUZXh0VHJhY2s+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VGV4dFRy
YWNrUmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KICNlbmRpZgogCi1DYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3Vy
Y2VFcnJvciogZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkQ1NTU3R5bGVTaGVldD4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Q1NTU3R5bGVT
aGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIHJldHVybiBkb3du
Y2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OkNTU1N0eWxlU2hlZXQsIFdURk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgcmV0
dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENhY2hlZENTU1N0eWxlU2hlZXQ+KHJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgV1RGTW92ZShyZXF1ZXN0KSkpOwog
fQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFJlc291cmNlRXJyb3IqKQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
Q1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RVc2VyQ1NTU3R5bGVT
aGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIEFTU0VSVChkb2N1
bWVudCgpKTsKICAgICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKCpkb2N1bWVu
dCgpKTsKQEAgLTI0Nyw1NSArMjU1LDU1IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENT
U1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0CiAgICAg
cmV0dXJuIHVzZXJTaGVldDsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0
PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFNjcmlwdChDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jlc291cmNlRXJyb3JPcjxDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFNjcmlwdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIHJldHVy
biBkb3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6
U2NyaXB0LCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvcikuZ2V0KCkpOworICAgIHJldHVybiBjYXN0
Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRTY3JpcHQ+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6U2NyaXB0LCBXVEZNb3ZlKHJlcXVlc3QpKSk7CiB9CiAKICNpZiBFTkFCTEUoWFNMVCkK
LUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFhTTFN0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNl
TG9hZGVyOjpyZXF1ZXN0WFNMU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBSZXNvdXJjZUVycm9yKiBlcnJvcikKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRYU0xTdHlsZVNoZWV0Pj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAg
cmV0dXJuIGRvd25jYXN0PENhY2hlZFhTTFN0eWxlU2hlZXQ+KHJlcXVlc3RSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldCwgV1RGTW92ZShyZXF1ZXN0KSwgZXJyb3IpLmdldCgp
KTsKKyAgICByZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkWFNMU3R5bGVTaGVldD4o
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0LCBXVEZNb3ZlKHJl
cXVlc3QpKSk7CiB9CiAjZW5kaWYKIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9j
dW1lbnQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U1ZHRG9jdW1lbnQoQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciogZXJyb3IpCitSZXNvdXJjZUVy
cm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9jdW1lbnQ+PiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdWVzdFNWR0RvY3VtZW50KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZFNWR0RvY3VtZW50PihyZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2UsIFdURk1vdmUocmVx
dWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENh
Y2hlZFNWR0RvY3VtZW50PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3Vt
ZW50UmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KIAogI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0TGlua1Jlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUs
IENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlRXJyb3IqIGVycm9yKQor
UmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5rUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQo
ZnJhbWUoKSk7CiAgICAgQVNTRVJUKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRj
aCB8fCB0eXBlID09IENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2UpOwotICAgIHJldHVy
biByZXF1ZXN0UmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgZXJyb3IpOworICAgIHJl
dHVybiByZXF1ZXN0UmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAjZW5kaWYK
IAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IENhY2hlZFJlc291cmNl
TG9hZGVyOjpyZXF1ZXN0TWVkaWEoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVz
b3VyY2VFcnJvciogZXJyb3IpCitSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1lZGlhKENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENh
Y2hlZFJhd1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6Ok1lZGlhUmVz
b3VyY2UsIFdURk1vdmUocmVxdWVzdCksIGVycm9yKS5nZXQoKSk7CisgICAgcmV0dXJuIGNhc3RD
YWNoZWRSZXNvdXJjZVRvPENhY2hlZFJhd1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2U6Ok1lZGlhUmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KIAotQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0SWNvbihDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZUVycm9y
KiBlcnJvcikKK1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SWNvbihDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRSYXdSZXNv
dXJjZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJY29uLCBXVEZNb3ZlKHJlcXVl
c3QpLCBlcnJvcikuZ2V0KCkpOworICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNo
ZWRSYXdSZXNvdXJjZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJY29uLCBXVEZN
b3ZlKHJlcXVlc3QpKSk7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJhd1Jlc291cmNlKENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlRXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJv
ck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KQogewotICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRSYXdSZXNvdXJjZT4ocmVxdWVzdFJl
c291cmNlKENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSwgZXJy
b3IpLmdldCgpKTsKKyAgICByZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkUmF3UmVz
b3VyY2U+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UsIFdURk1v
dmUocmVxdWVzdCkpKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0QmVhY29uUmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciogZXJyb3IpCitSZXNvdXJjZUVycm9y
T3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdEJlYWNvblJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCiB7Ci0gICAgcmV0dXJuIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6QmVhY29u
LCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvcikuZ2V0KCk7CisgICAgcmV0dXJuIHJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZTo6QmVhY29uLCBXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAotQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0TWFpblJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJl
c291cmNlRXJyb3IqIGVycm9yKQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RNYWluUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gZG93
bmNhc3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6
TWFpblJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBlcnJvcikuZ2V0KCkpOworICAgIHJldHVy
biBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRSYXdSZXNvdXJjZT4ocmVxdWVzdFJlc291cmNl
KENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KIAog
c3RhdGljIE1peGVkQ29udGVudENoZWNrZXI6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlRnJvbVJl
c291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQpAQCAtNTU2LDE2ICs1NjQsMTYg
QEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEluQ29udGVudERpc3Bvc2l0
aW9uQXR0YWNobWVudFNhbmRib3goQ2FjaGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZENvbnRpbnVlQWZ0ZXJOb3RpZnlpbmdMb2FkZWRG
cm9tTWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UpCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGRD
b250aW51ZUFmdGVyTm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAoIXJlc291cmNlIHx8ICFmcmFtZSgpIHx8IHJlc291
cmNlLT5zdGF0dXMoKSAhPSBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkKQorICAgIGlmICghZnJhbWUo
KSB8fCByZXNvdXJjZS5zdGF0dXMoKSAhPSBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gUmVzb3Vy
Y2VSZXF1ZXN0KHJlc291cmNlLT51cmwoKSk7CisgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QocmVzb3VyY2UudXJsKCkpOwogICAgIG5ld1JlcXVlc3Quc2V0
SW5pdGlhdG9ySWRlbnRpZmllcihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmluaXRpYXRvcklk
ZW50aWZpZXIoKSk7CiAgICAgaWYgKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaGlkZGVuRnJv
bUluc3BlY3RvcigpKQogICAgICAgICBuZXdSZXF1ZXN0LnNldEhpZGRlbkZyb21JbnNwZWN0b3Io
dHJ1ZSk7Ci0gICAgZnJhbWUoKS0+bG9hZGVyKCkubG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUocmVzb3VyY2UsIG5ld1JlcXVlc3QpOworICAgIGZyYW1lKCktPmxvYWRlcigpLmxvYWRlZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKHJlc291cmNlLCBuZXdSZXF1ZXN0LCBlcnJvcik7CiAKICAg
ICAvLyBGSVhNRSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTMyNTE+OiBJZiB0aGUgZGVsZWdhdGUg
bW9kaWZpZXMgdGhlIHJlcXVlc3QncwogICAgIC8vIFVSTCwgaXQgaXMgbm8gbG9uZ2VyIGFwcHJv
cHJpYXRlIHRvIHVzZSB0aGlzIENhY2hlZFJlc291cmNlLgpAQCAtNjg4LDcgKzY5Niw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnVwZGF0ZUhUVFBSZXF1ZXN0SGVhZGVycyhDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBDCiAgICAgcmVxdWVzdC51cGRhdGVBY2NvcmRpbmdDYWNoZU1v
ZGUoKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciogZXJyb3IsIEZv
clByZWxvYWQgZm9yUHJlbG9hZCwgRGVmZXJPcHRpb24gZGVmZXIpCitSZXNvdXJjZUVycm9yT3I8
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZvclByZWxvYWQgZm9yUHJlbG9hZCwgRGVmZXJPcHRpb24g
ZGVmZXIpCiB7CiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkp
CiAgICAgICAgIHJlcXVlc3QudXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKCpkb2N1bWVu
dCk7CkBAIC02OTksOSArNzA3LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKIAogICAgIGlm
ICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXF1
ZXN0UmVzb3VyY2U6IFVSTCBpcyBpbnZhbGlkIChmcmFtZSA9ICVwKSIsIGZyYW1lKCkpOwotICAg
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAqZXJyb3IgPSB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHVybCwgQVNDSUlMaXRlcmFsKCJVUkwgaXMgaW52YWxpZCIpIH07Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3Vy
Y2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgQVNDSUlMaXRlcmFs
KCJVUkwgaXMgaW52YWxpZCIpIH0pOwogICAgIH0KIAogICAgIHByZXBhcmVGZXRjaCh0eXBlLCBy
ZXF1ZXN0KTsKQEAgLTcwOSw5ICs3MTUsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAg
IC8vIFdlIGFyZSBwYXNzaW5nIHVybCBhcyB3ZWxsIGFzIHJlcXVlc3QsIGFzIHJlcXVlc3QgdXJs
IG1heSBjb250YWluIGEgZnJhZ21lbnQgaWRlbnRpZmllci4KICAgICBpZiAoIWNhblJlcXVlc3Qo
dHlwZSwgdXJsLCByZXF1ZXN0LCBmb3JQcmVsb2FkKSkgewogICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJyZXF1ZXN0UmVzb3VyY2U6IE5vdCBhbGxvd2VkIHRvIHJlcXVlc3QgcmVzb3Vy
Y2UgKGZyYW1lID0gJXApIiwgZnJhbWUoKSk7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAg
ICAgICplcnJvciA9IHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCBBU0NJSUxp
dGVyYWwoIk5vdCBhbGxvd2VkIHRvIHJlcXVlc3QgcmVzb3VyY2UiKSwgUmVzb3VyY2VFcnJvcjo6
VHlwZTo6QWNjZXNzQ29udHJvbCB9OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCB1cmwsIEFTQ0lJTGl0ZXJhbCgiTm90IGFsbG93ZWQgdG8gcmVxdWVzdCByZXNv
dXJjZSIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogICAgIH0KIAog
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC03MjIsMTUgKzcyNiwxMyBAQCBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RSZXNvdXJjZShDYWNoZQogICAgICAgICBpZiAoYmxvY2tlZFN0YXR1cy5ibG9ja2VkTG9h
ZCkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVxdWVzdFJlc291cmNl
OiBSZXNvdXJjZSBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciAoZnJhbWUgPSAlcCkiLCBmcmFt
ZSgpKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWlu
UmVzb3VyY2UpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHJlc291cmNlID0gY3JlYXRlUmVzb3Vy
Y2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKCkpOworICAgICAgICAgICAgICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJl
c291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCgpKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVzb3VyY2UpOwogICAgICAgICAgICAgICAgIHJlc291cmNlLT5lcnJvcihD
YWNoZWRSZXNvdXJjZTo6U3RhdHVzOjpMb2FkRXJyb3IpOwogICAgICAgICAgICAgICAgIHJlc291
cmNlLT5zZXRSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3IoQ29udGVudEV4dGVuc2lvbnM6Oldl
YktpdENvbnRlbnRCbG9ja2VyRG9tYWluLCAwLCByZXNvdXJjZVJlcXVlc3QudXJsKCksIFdFQl9V
SV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2Vi
S2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc291cmNlOworICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3Zl
KHJlc291cmNlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAg
ICAgICAgICAgICAqZXJyb3IgPSB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwg
QVNDSUlMaXRlcmFsKCJSZXNvdXJjZSBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH07Ci0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChSZXNvdXJjZUVycm9yIHsg
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCBBU0NJSUxpdGVyYWwoIlJlc291cmNl
IGJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyIiksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vz
c0NvbnRyb2wgfSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJsb2NrZWRTdGF0dXMubWFkZUhU
VFBTCiAgICAgICAgICAgICAmJiB0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVz
b3VyY2UKQEAgLTc5NCw4ICs3OTYsOSBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNv
dXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAgICAg
ICAgICAgaWYgKHJlc291cmNlLT5zdGF0dXMoKSAhPSBDYWNoZWRSZXNvdXJjZTo6U3RhdHVzOjpD
YWNoZWQpCiAgICAgICAgICAgICAgICAgcG9saWN5ID0gTG9hZDsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGlmICghc2hvdWxkQ29udGludWVBZnRlck5vdGlmeWluZ0xvYWRlZEZyb21N
ZW1vcnlDYWNoZShyZXF1ZXN0LCByZXNvdXJjZS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOworICAgICAgICAg
ICAgaWYgKCFzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hl
KHJlcXVlc3QsICpyZXNvdXJjZSwgZXJyb3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChXVEZNb3ZlKGVycm9yKSk7CiAgICAgICAgICAgICBsb2dNZW1vcnlDYWNoZVJl
c291cmNlUmVxdWVzdChmcmFtZSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om1lbW9yeUNhY2hl
RW50cnlEZWNpc2lvbktleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnVzZWRLZXkoKSk7CiAg
ICAgICAgICAgICBsb2FkVGltaW5nLnNldFJlc3BvbnNlRW5kKE1vbm90b25pY1RpbWU6Om5vdygp
KTsKIApAQCAtODE4LDkgKzgyMSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKHJlc291cmNlKTsKIAogICAgIGlmIChmb3JQcmVs
b2FkID09IEZvclByZWxvYWQ6Ok5vICYmIHJlc291cmNlLT5sb2FkZXIoKSAmJiByZXNvdXJjZS0+
aWdub3JlRm9yUmVxdWVzdENvdW50KCkpIHsKICAgICAgICAgcmVzb3VyY2UtPnNldElnbm9yZUZv
clJlcXVlc3RDb3VudChmYWxzZSk7CkBAIC04MzQsMTIgKzgzNSwxMiBAQCBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNv
dXJjZShDYWNoZQogICAgICAgICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewogICAg
ICAgICAgICAgaWYgKHJlc291cmNlLT5hbGxvd3NDYWNoaW5nKCkgJiYgcmVzb3VyY2UtPmluQ2Fj
aGUoKSkKICAgICAgICAgICAgICAgICBtZW1vcnlDYWNoZS5yZW1vdmUoKnJlc291cmNlKTsKLSAg
ICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIGF1dG8gcmVzb3VyY2VFcnJv
ciA9IHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgLy8gU3luY2hy
b25vdXMgY2FuY2VsbGF0aW9ucyBhcmUgbGlrZWx5IGR1ZSB0byBhY2Nlc3MgY29udHJvbC4KLSAg
ICAgICAgICAgICAgICAqZXJyb3IgPSAhcmVzb3VyY2VFcnJvci5pc051bGwoKSAmJiAhcmVzb3Vy
Y2VFcnJvci5pc0NhbmNlbGxhdGlvbigpID8gcmVzb3VyY2VFcnJvciA6IFJlc291cmNlRXJyb3Io
U3RyaW5nKCksIDAsIHVybCwgU3RyaW5nKCksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0Nv
bnRyb2wpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAgICAgICAgIGF1dG8gcmVzb3VyY2VFcnJvciA9IHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCk7
CisgICAgICAgICAgICAvLyBTeW5jaHJvbm91cyBjYW5jZWxsYXRpb25zIGFyZSBsaWtlbHkgZHVl
IHRvIGFjY2VzcyBjb250cm9sLgorICAgICAgICAgICAgaWYgKHJlc291cmNlRXJyb3IuaXNOdWxs
KCkgfHwgcmVzb3VyY2VFcnJvci5pc0NhbmNlbGxhdGlvbigpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIHVybCwgU3Ry
aW5nKCksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocmVzb3VyY2VFcnJvcik7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTg0OCw3ICs4NDksNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJj
ZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogCiAgICAgQVNT
RVJUKHJlc291cmNlLT51cmwoKSA9PSB1cmwuc3RyaW5nKCkpOwogICAgIG1fZG9jdW1lbnRSZXNv
dXJjZXMuc2V0KHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UpOwotICAgIHJldHVybiByZXNvdXJj
ZTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXNvdXJjZSk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmRvY3VtZW50RGlkRmluaXNoTG9hZEV2ZW50KCkKQEAgLTEyNTAsMjEgKzEyNTEs
MjIgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KGNv
bnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9yZXF1ZXN0Q291bnQg
PiAtMSk7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
IHsKICAgICBpZiAocmVxdWVzdC5jaGFyc2V0KCkuaXNFbXB0eSgpICYmICh0eXBlID09IENhY2hl
ZFJlc291cmNlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVl
dCkpCiAgICAgICAgIHJlcXVlc3Quc2V0Q2hhcnNldChtX2RvY3VtZW50LT5jaGFyc2V0KCkpOwog
Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlID0gcmVx
dWVzdFJlc291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIG51bGxwdHIsIEZvclByZWxvYWQ6
Olllcyk7Ci0gICAgaWYgKHJlc291cmNlICYmICghbV9wcmVsb2FkcyB8fCAhbV9wcmVsb2Fkcy0+
Y29udGFpbnMocmVzb3VyY2UuZ2V0KCkpKSkgeworICAgIGF1dG8gcmVzb3VyY2UgPSByZXF1ZXN0
UmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgRm9yUHJlbG9hZDo6WWVzKTsKKyAgICBp
ZiAocmVzb3VyY2UgJiYgKCFtX3ByZWxvYWRzIHx8ICFtX3ByZWxvYWRzLT5jb250YWlucyhyZXNv
dXJjZS52YWx1ZSgpLmdldCgpKSkpIHsKKyAgICAgICAgYXV0byByZXNvdXJjZVZhbHVlID0gcmVz
b3VyY2UudmFsdWUoKTsKICAgICAgICAgLy8gRm9udHMgbmVlZCBzcGVjaWFsIHRyZWF0bWVudCBz
aW5jZSBqdXN0IGNyZWF0aW5nIHRoZSByZXNvdXJjZSBkb2Vzbid0IHRyaWdnZXIgYSBsb2FkLgog
ICAgICAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlKQotICAgICAg
ICAgICAgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UuZ2V0KCkpLT5iZWdpbkxvYWRJZk5l
ZWRlZCgqdGhpcyk7Ci0gICAgICAgIHJlc291cmNlLT5pbmNyZWFzZVByZWxvYWRDb3VudCgpOwor
ICAgICAgICAgICAgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2VWYWx1ZS5nZXQoKSktPmJl
Z2luTG9hZElmTmVlZGVkKCp0aGlzKTsKKyAgICAgICAgcmVzb3VyY2VWYWx1ZS0+aW5jcmVhc2VQ
cmVsb2FkQ291bnQoKTsKIAogICAgICAgICBpZiAoIW1fcHJlbG9hZHMpCiAgICAgICAgICAgICBt
X3ByZWxvYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+
PigpOwotICAgICAgICBtX3ByZWxvYWRzLT5hZGQocmVzb3VyY2UuZ2V0KCkpOworICAgICAgICBt
X3ByZWxvYWRzLT5hZGQocmVzb3VyY2VWYWx1ZS5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBy
ZXNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmgKaW5kZXggMzhhOWMwOTgxYjFhNDJlZGFlZDE3YmI4OTlmZjkzNGE0ZWQ1
Mjc1OC4uNDk2YjE2MTFjN2Y0YWI0YmYyMzIzNDgzZGQ2ZmViYTlmYTE4ZDM1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlVGltaW5nSW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgor
I2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTU1
LDYgKzU2LDkgQEAgY2xhc3MgSW1hZ2VMb2FkZXI7CiBjbGFzcyBTZXR0aW5nczsKIGNsYXNzIFVS
TDsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBSZXNvdXJjZUVycm9yT3IgPSBFeHBl
Y3RlZDxULCBSZXNvdXJjZUVycm9yPjsKKwogLy8gVGhlIENhY2hlZFJlc291cmNlTG9hZGVyIHBy
b3ZpZGVzIGEgcGVyLWNvbnRleHQgaW50ZXJmYWNlIHRvIHRoZSBNZW1vcnlDYWNoZQogLy8gYW5k
IGVuZm9yY2VzIGEgYnVuY2ggb2Ygc2VjdXJpdHkgY2hlY2tzIGFuZCBydWxlcyBmb3IgcmVzb3Vy
Y2UgcmV2YWxpZGF0aW9uLgogLy8gSXRzIGxpZmV0aW1lIGlzIHJvdWdobHkgcGVyLURvY3VtZW50
TG9hZGVyLCBpbiB0aGF0IGl0IGlzIGdlbmVyYWxseSBjcmVhdGVkCkBAIC03MiwyNSArNzYsMjUg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShE
b2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIoZG9jdW1lbnRMb2FkZXIpKTsgfQogICAgIH5DYWNoZWRSZXNvdXJj
ZUxvYWRlcigpOwogCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IHJlcXVl
c3RJbWFnZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJvciogPSBudWxscHRy
KTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiByZXF1ZXN0
Q1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJvciogPSBu
dWxscHRyKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBy
ZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNl
RXJyb3IqID0gbnVsbHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0
PiByZXF1ZXN0U2NyaXB0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9
IG51bGxwdHIpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+IHJlcXVlc3RG
b250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBib29sIGlzU1ZHLCBSZXNvdXJjZUVycm9yKiA9
IG51bGxwdHIpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBy
ZXF1ZXN0TWVkaWEoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlRXJyb3IqID0gbnVs
bHB0cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHJlcXVl
c3RJY29uKENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9IG51bGxwdHIp
OwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0QmVhY29u
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlRXJyb3IqID0gbnVsbHB0
cik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHJlcXVlc3RS
YXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJvciogPSBudWxs
cHRyKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcmVxdWVz
dE1haW5SZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJvciogPSBu
dWxscHRyKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4gcmVx
dWVzdFNWR0RvY3VtZW50KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZUVycm9yKiA9
IG51bGxwdHIpOworICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRJbWFnZT4+IHJlcXVlc3RJbWFnZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgUmVz
b3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+PiBy
ZXF1ZXN0Q1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gcmVxdWVzdFVzZXJDU1NTdHlsZVNo
ZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0Pj4gcmVxdWVzdFNjcmlwdChDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZEZvbnQ+PiByZXF1ZXN0Rm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBpc1NW
Ryk7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPj4gcmVxdWVzdE1lZGlhKENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKKyAgICBSZXNv
dXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiByZXF1
ZXN0SWNvbihDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgUmVzb3VyY2VFcnJvck9yPENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gcmVxdWVzdEJlYWNvblJlc291cmNl
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiByZXF1ZXN0UmF3UmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4+IHJlcXVlc3RNYWluUmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYpOworICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRTVkdEb2N1bWVudD4+IHJlcXVlc3RTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJik7CiAjaWYgRU5BQkxFKFhTTFQpCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
WFNMU3R5bGVTaGVldD4gcmVxdWVzdFhTTFN0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYsIFJlc291cmNlRXJyb3IqID0gbnVsbHB0cik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFhTTFN0eWxlU2hlZXQ+PiByZXF1ZXN0WFNMU3R5bGVTaGVl
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAjZW5kaWYKICNpZiBFTkFCTEUoTElOS19QUkVG
RVRDSCkKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVxdWVzdExp
bmtSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYs
IFJlc291cmNlRXJyb3IqID0gbnVsbHB0cik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gcmVxdWVzdExpbmtSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFRleHRUcmFj
az4gcmVxdWVzdFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VFcnJv
ciogPSBudWxscHRyKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkVGV4dFRyYWNrPj4gcmVxdWVzdFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
Jik7CiAjZW5kaWYKIAogICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRo
ZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVkIFVSTC4KQEAgLTEzMiw3ICsxMzYsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ByZWxvYWRlZChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykgY29uc3Q7CiAgICAgZW51bSBjbGFzcyBDbGVhclByZWxvYWRzTW9kZSB7IENsZWFy
U3BlY3VsYXRpdmVQcmVsb2FkcywgQ2xlYXJBbGxQcmVsb2FkcyB9OwogICAgIHZvaWQgY2xlYXJQ
cmVsb2FkcyhDbGVhclByZWxvYWRzTW9kZSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+IHByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNl
UmVxdWVzdCYmKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+PiBwcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJik7CiAgICAgdm9pZCBwcmludFByZWxvYWRTdGF0cygpOwogICAgIHZvaWQgd2Fy
blVudXNlZFByZWxvYWRzKCk7CiAgICAgdm9pZCBzdG9wVW51c2VkUHJlbG9hZHNUaW1lcigpOwpA
QCAtMTU1LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBGb3JQcmVsb2FkIHsg
WWVzLCBObyB9OwogICAgIGVudW0gY2xhc3MgRGVmZXJPcHRpb24geyBOb0RlZmVyLCBEZWZlcnJl
ZEJ5Q2xpZW50IH07CiAKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4g
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiwgUmVzb3VyY2VFcnJvciogPSBudWxscHRyLCBGb3JQcmVsb2FkID0gRm9yUHJlbG9hZDo6
Tm8sIERlZmVyT3B0aW9uID0gRGVmZXJPcHRpb246Ok5vRGVmZXIpOworICAgIFJlc291cmNlRXJy
b3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IHJlcXVlc3RSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIEZvclByZWxv
YWQgPSBGb3JQcmVsb2FkOjpObywgRGVmZXJPcHRpb24gPSBEZWZlck9wdGlvbjo6Tm9EZWZlcik7
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJldmFsaWRhdGVSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgQ2FjaGVkUmVzb3VyY2UmKTsKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbG9hZFJlc291cmNlKENhY2hlZFJlc291
cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAKQEAgLTE3MSw3ICsxNzUsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVu
dFJlcXVlc3QoY29uc3QgQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmKTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gdXBkYXRlQ2Fj
aGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3QoY29uc3QgQ2FjaGVkUmVzb3VyY2UmLCBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAKLSAgICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJOb3Rp
ZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Jiwg
Q2FjaGVkUmVzb3VyY2UqKTsKKyAgICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJOb3RpZnlpbmdM
b2FkZWRGcm9tTWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVk
UmVzb3VyY2UmLCBSZXNvdXJjZUVycm9yJik7CiAgICAgYm9vbCBjaGVja0luc2VjdXJlQ29udGVu
dChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgVVJMJikgY29uc3Q7CiAgICAgYm9vbCBhbGxv
d2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFVS
TCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAKaW5k
ZXggYTliZjdjNjZlNDI5OGU5OGU0NDNkNDM3ZTc0YmIxMzM5NWQ3NjVkMi4uMmUwOGVlMjgzMjc3
OTQ4ZDI0YjZmNWQwY2E1NDA3MjRkMTI3NjdhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCkBAIC01
Niw3ICs1Niw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQoQ2FjaGVk
UmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyCiAgICAgZmV0Y2hPcHRpb25zLm1v
ZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW47CiAgICAgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChtX3VybCkpLCBmZXRjaE9wdGlvbnMpOwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKGNh
Y2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1fZG9jdW1lbnQgPSBs
b2FkZXIucmVxdWVzdFNWR0RvY3VtZW50KFdURk1vdmUocmVxdWVzdCkpOworICAgIG1fZG9jdW1l
bnQgPSBsb2FkZXIucmVxdWVzdFNWR0RvY3VtZW50KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3Io
bnVsbHB0cik7CiAgICAgaWYgKG1fZG9jdW1lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQtPmFkZENs
aWVudCgqdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAK
aW5kZXggZWJlMmEwNmY5ZjlkM2U2ZDQ3ZjEwYWJkYmJjMGQxZjUxOTQ3ZmUzOS4uNDA2YjIwYzhh
NWU4Y2Y4YTEwODcyNzNmNjQ2MTlkNTJhNDAwODU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkxvYWRlci5jcHAKQEAgLTc1LDExICs3NSwxMiBAQCB2b2lkIEljb25Mb2FkZXI6
OnN0YXJ0TG9hZGluZygpCiAKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJj
ZVJlcXVlc3RJbml0aWF0b3JzKCkuaWNvbik7CiAKLSAgICBtX3Jlc291cmNlID0gZnJhbWUtPmRv
Y3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEljb24oV1RGTW92ZShyZXF1
ZXN0KSk7CisgICAgYXV0byBjYWNoZWRSZXNvdXJjZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJY29uKFdURk1vdmUocmVxdWVzdCkpOworICAgIG1f
cmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZS52YWx1ZU9yKG51bGxwdHIpOwogICAgIGlmIChtX3Jl
c291cmNlKQogICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIGVsc2UK
LSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3IgaWNvbiBhdCB1cmwg
JXMiLCByZXNvdXJjZVJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBzdGFydCBsb2FkIGZvciBpY29uIGF0IHVybCAlcyAoZXJy
b3I6ICVzKSIsIHJlc291cmNlUmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgY2Fj
aGVkUmVzb3VyY2UuZXJyb3IoKS5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkp
OwogfQogCiB2b2lkIEljb25Mb2FkZXI6OnN0b3BMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA1MWZlODE2Mzc5
MTVlOGI0OGM2ZTc1ZmI5ZWNlYmFmMGRjZTgwNzQ5Li45YzBmNGRkZWJmYTdlZWFkODQ3YzViOGVi
MjNhYTEzYjBjYmMwMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgV2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhT
ZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0
b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRG
b3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdCwgRG9TZWN1cml0
eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNh
dGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBE
ZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkRp
c2FsbG93Q2FjaGluZykpOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9IG1f
cGFyZW50LT5wbGF5ZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBtX3Jlc291cmNl
ID0gbG9hZGVyID8gbG9hZGVyLT5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSkg
OiAwOworICAgIG1fcmVzb3VyY2UgPSBsb2FkZXIgPyBsb2FkZXItPnJlcXVlc3RSYXdSZXNvdXJj
ZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpIDogbnVsbHB0cjsKICAgICBpZiAo
bV9yZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICBl
bHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQppbmRleCAwNGI1YzM4ODNhYzk1MDczMDEzODZmNzA1Y2MyMTNjMGE0MzMwNmJmLi41
ODgyOWEwZTliNTM3Y2IyNDc0Yjc0OGY5MWQ2NzZiMTVlYmEyOTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC03NCw3ICs3
NCw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAg
IC8vIGlzIGluIGEgdXNlci1hZ2VudCBzaGFkb3cgdHJlZS4gU2VlIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNDk4Pi4KICAgICBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFJlc291cmNlTG9hZGVyT3B0aW9u
cyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxv
d1N0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGll
bnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdCwgRG9TZWN1
cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlm
aWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNr
LCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6
OkRpc2FsbG93Q2FjaGluZykpOwogICAgIGlmIChhdXRvKiBsb2FkZXIgPSBtX3BhcmVudC0+cGxh
eWVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpCi0gICAgICAgIG1fcmVzb3VyY2UgPSBsb2Fk
ZXItPnJlcXVlc3RNZWRpYShXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgbV9yZXNvdXJjZSA9
IGxvYWRlci0+cmVxdWVzdE1lZGlhKFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7
CiAKICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDE5ZWY2
M2IyOWE5NDI5NzllYjk4YWY2NzdhYTI2YTIzMWRhNWY3ZmQuLmVjNzRhOGQwZTVhYjZiNWFkOThh
ODhlNzhlMTJjNGJhNjI1ZDZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpyZXF1ZXN0
SW1hZ2VSZXNvdXJjZSgpCiAKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKCkpKSwgb3B0aW9ucyk7CiAg
ICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoKnRoaXMpOwotICAgIG1fY2FjaGVkSW1hZ2UgPSBkb2N1
bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVz
dCkpOworICAgIG1fY2FjaGVkSW1hZ2UgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVy
KCkucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CiAKICAg
ICBpZiAobV9jYWNoZWRJbWFnZSkKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCp0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKaW5k
ZXggNTZkNWU2M2MzYzE1YWFmNmY1ZjZlOWI2OTk0YTkwZTZmZDYyMjM0NC4uYjQxOTU3NjA4MzJi
ZDRhODllNzZiOTg0OWQyNjczMzA1ZWZkZmY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFNWR0ZvbnRG
YWNlVXJpRWxlbWVudDo6bG9hZEZvbnQoKQogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYg
Y2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7
CiAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChk
b2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpKSwgb3B0aW9ucyk7CiAgICAgICAgIHJlcXVlc3Qu
c2V0SW5pdGlhdG9yKCp0aGlzKTsKLSAgICAgICAgbV9jYWNoZWRGb250ID0gY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdEZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgaXNTVkdGb250VGFyZ2V0KCp0
aGlzKSk7CisgICAgICAgIG1fY2FjaGVkRm9udCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLnJlcXVl
c3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHRm9udFRhcmdldCgqdGhpcykpLnZhbHVlT3Io
bnVsbHB0cik7CiAgICAgICAgIGlmIChtX2NhY2hlZEZvbnQpIHsKICAgICAgICAgICAgIG1fY2Fj
aGVkRm9udC0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICAgICAgICAgIG1fY2FjaGVkRm9udC0+YmVn
aW5Mb2FkSWZOZWVkZWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCmluZGV4IDMzYzI4ZjI1NjM4NDE3YzVhZjhkMzUyMTVjMmMyYzZhMmI2N2Iy
ZTIuLjVlNzMyMzgwYzVkODA4Mzg4ZjM4YmE4YzMwMWEyZWU5Y2U5OTgzM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lkIFNWR1VzZUVs
ZW1lbnQ6OnVwZGF0ZUV4dGVybmFsRG9jdW1lbnQoKQogICAgICAgICBvcHRpb25zLm1vZGUgPSBG
ZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW47CiAgICAgICAgIENhY2hlZFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0IHsgUmVzb3VyY2VSZXF1ZXN0IHsgZXh0ZXJuYWxEb2N1bWVudFVSTCB9LCBv
cHRpb25zIH07CiAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKCp0aGlzKTsKLSAgICAgICAg
bV9leHRlcm5hbERvY3VtZW50ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJl
cXVlc3RTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgbV9leHRlcm5hbERv
Y3VtZW50ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RTVkdEb2N1
bWVudChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOwogICAgICAgICBpZiAobV9l
eHRlcm5hbERvY3VtZW50KQogICAgICAgICAgICAgbV9leHRlcm5hbERvY3VtZW50LT5hZGRDbGll
bnQoKnRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBv
cnRSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAppbmRleCA2
MWRlMTExNWQyYmMzNDVkNWNkZmJmYjkwOGVhOGIxMDBjOGVhNDNlLi43YWQzOTk0MTQ5MDQzYTE1
NjBlZTU5ZDRlNjRkYTQxODMxMGMxNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMSW1wb3J0UnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUu
Y3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBYU0xJbXBvcnRSdWxlOjpsb2FkU2hlZXQoKQog
CiAgICAgYXV0byBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKTsKICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6
OlNhbWVPcmlnaW47Ci0gICAgbV9jYWNoZWRTaGVldCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLT5y
ZXF1ZXN0WFNMU3R5bGVTaGVldCh7UmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9hZGVy
LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhYnNIcmVmKSksIG9wdGlvbnN9KTsKKyAgICBtX2Nh
Y2hlZFNoZWV0ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RYU0xTdHlsZVNoZWV0KHtS
ZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKGFic0hyZWYpKSwgb3B0aW9uc30pLnZhbHVlT3IobnVsbHB0cik7CiAKICAgICBpZiAobV9j
YWNoZWRTaGVldCkgewogICAgICAgICBtX2NhY2hlZFNoZWV0LT5hZGRDbGllbnQoKnRoaXMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>