<?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>174178</bug_id>
          
          <creation_ts>2017-07-05 14:33:12 -0700</creation_ts>
          <short_desc>Allow navigations in subframes to get a ShouldOpenExternalURLsPolicy of &quot;ShouldAllow&quot;</short_desc>
          <delta_ts>2017-07-05 17:03:46 -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>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1325777</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-05 14:33:12 -0700</bug_when>
    <thetext>Allow navigations in subframes to get a ShouldOpenExternalURLsPolicy of &quot;ShouldAllow&quot;

&lt;rdar://problem/22485589&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325781</commentid>
    <comment_count>1</comment_count>
      <attachid>314657</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-05 14:41:32 -0700</bug_when>
    <thetext>Created attachment 314657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325795</commentid>
    <comment_count>2</comment_count>
      <attachid>314659</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-05 15:22:19 -0700</bug_when>
    <thetext>Created attachment 314659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325820</commentid>
    <comment_count>3</comment_count>
      <attachid>314665</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-05 16:32:15 -0700</bug_when>
    <thetext>Created attachment 314665
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325836</commentid>
    <comment_count>4</comment_count>
      <attachid>314665</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-05 17:01:59 -0700</bug_when>
    <thetext>Comment on attachment 314665
Patch for landing

Clearing flags on attachment: 314665

Committed r219170: &lt;http://trac.webkit.org/changeset/219170&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314657</attachid>
            <date>2017-07-05 14:41:32 -0700</date>
            <delta_ts>2017-07-05 15:22:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>56448</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NTQ4NzQzNjAzYi4uYzIyMDE0ZTgzZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNy0wNy0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
QWxsb3cgbmF2aWdhdGlvbnMgaW4gc3ViZnJhbWVzIHRvIGdldCBhIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgb2YgIlNob3VsZEFsbG93Ii4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIy
NDg1NTg5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDE3
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGEgbmV3IGV4cGxpY2l0IHRlc3QgYW5kIHVwZGF0ZWQgZXhwZWN0YXRpb25zIGZvciBhbiBvbGQg
b25lLgorICAgICAgICAKKyAgICAgICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxk
LW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1h
aW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9z
dWJmcmFtZS1jbGljay10YXJnZXQtc2VsZi1leHBlY3RlZC50eHQ6CisgICAgICAgICogbG9hZGVy
L25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2
aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFs
LXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLmh0
bWw6IEFkZGVkLgorCiAyMDE3LTA3LTAzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBTd2l0Y2ggYWxsIFdlYktpdCBBUEkgcmVsYXRlZCB0byBmYXZpY29ucyBm
cm9tIFdlYkljb25EYXRhYmFzZSBvdmVyIHRvIG5ldyBXZWJDb3JlOjpJY29uTG9hZGVyIG1lY2hh
bmlzbS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9z
aG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJh
bWUtbWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9y
ZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5LW5h
dmlnYXRlcy1zdWJmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi42M2RlMGNjODdmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2xvYWRlci9u
YXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9tYWlu
LWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZy
YW1lLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gaWZyYW1lTG9h
ZGVkKCkgeworICAgIHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24gPSAibm90aWZ5LWRvbmUuaHRt
bCI7Cit9Cis8L3NjcmlwdD4KKworPGlmcmFtZSBvbmxvYWQ9ImlmcmFtZUxvYWRlZCgpOyIgc3Jj
PSJkby1ub3RoaW5nLmh0bWwiPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbG9h
ZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUt
Y2xpY2stdGFyZ2V0LXNlbGYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbG9hZGVyL25hdmln
YXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUtY2xpY2stdGFy
Z2V0LXNlbGYtZXhwZWN0ZWQudHh0CmluZGV4IDMwNTU1MzM5N2EwLi5jMzBmZThiNzE2NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVu
LWV4dGVybmFsLXVybHMvc3ViZnJhbWUtY2xpY2stdGFyZ2V0LXNlbGYtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRl
cm5hbC11cmxzL3N1YmZyYW1lLWNsaWNrLXRhcmdldC1zZWxmLWV4cGVjdGVkLnR4dApAQCAtMyw3
ICszLDcgQEAKICAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gCiA8TlNVUkxSZXF1
ZXN0IFVSTCByZXNvdXJjZXMvaWZyYW1lLWNsaWNrLW5vdGlmeS1kb25lLXRhcmdldC1zZWxmLmh0
bWwsIG1haW4gZG9jdW1lbnQgVVJMIHN1YmZyYW1lLWNsaWNrLXRhcmdldC1zZWxmLmh0bWwsIGh0
dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIG5vIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJu
YWxseSAtIG5vCiAgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIAotPE5TVVJMUmVx
dWVzdCBVUkwgcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIHN1
YmZyYW1lLWNsaWNrLXRhcmdldC1zZWxmLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBm
cmFtZSAtIG5vIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIG5vCis8TlNVUkxSZXF1ZXN0
IFVSTCByZXNvdXJjZXMvbm90aWZ5LWRvbmUuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgc3ViZnJh
bWUtY2xpY2stdGFyZ2V0LXNlbGYuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1l
IC0gbm8gc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0geWVzCiBUaGlzIHBhZ2UgaGFzIGEg
c3ViZnJhbWUgd2l0aCBhIGxpbmsuCiBUaGVuIGEgbGluayBpcyBjbGlja2VkIGluIHRoYXQgc3Vi
ZnJhbWUgdGhhdCBuYXZpZ2F0ZXMgaW5zaWRlIHRoYXQgc3ViZnJhbWUsIGFuZCB0aGF0IG5hdmln
YXRpb24gc2hvdWxkIGhhdmUgdGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCB1cmxzIiBmbGFnIHNl
dCB0byBmYWxzZSBldmVuIHRob3VnaCBpdCB3YXMgZnJvbSBhIHVzZXIgZ2VzdHVyZS4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVu
LWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWlu
LWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGlj
eS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRp
Y2FsbHktYnktbWFpbi1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmRkYTk1YzE2OTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3Vi
ZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDcgQEAKKyAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gCis8
TlNVUkxSZXF1ZXN0IFVSTCByZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4t
cHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS5odG1sLCBtYWluIGRvY3VtZW50IFVS
TCByZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5
LW5hdmlnYXRlcy1zdWJmcmFtZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUg
LSB5ZXMgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0geWVzCisgLSBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uIAorPE5TVVJMUmVxdWVzdCBVUkwgZG8tbm90aGluZy5odG1sLCBt
YWluIGRvY3VtZW50IFVSTCBtYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFpbi1wcm9ncmFtYXRp
Y2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBm
cmFtZSAtIG5vIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIG5vCisgLSBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uIAorPE5TVVJMUmVxdWVzdCBVUkwgbm90aWZ5LWRvbmUuaHRt
bCwgbWFpbiBkb2N1bWVudCBVUkwgbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3Jh
bWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1h
aW4gZnJhbWUgLSBubyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSB5ZXMKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4
dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9w
ZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LW1h
aW4tZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDhj
ZDgyOTJkMWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlv
bi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJv
Z3JhbWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8c2NyaXB0
PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLmR1bXBQb2xpY3lEZWxlZ2F0ZUNhbGxiYWNrcygpOworICAgIHRl
c3RSdW5uZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1h
aW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS5odG1sIiwgIiIsIHRydWUpOwor
fQorCis8L3NjcmlwdD4KK1RoaXMgcGFnZSBoYXMgZG9lcyBub3QgaGF2ZSB0aGUgInNob3VsZCBv
cGVuIGV4dGVybmFsIFVSTHMiIGZsYWcgc2V0Ljxicj4KK0l0IG5hdmlnYXRlcyB0byBhIDJuZCBw
YWdlIHRoYXQgZG9lcyBoYXZlIHRoZSBmbGFnIHNldC48YnI+CitUaGF0IDJuZCBwYWdlIGNvbnRh
aW5zIGFuIGlmcmFtZSwgYW5kIHRoZSBtYWluIGZyYW1lIHByb2dyYW1hdGljYWxseSBuYXZpZ2F0
ZXMgdGhlIGlmcmFtZSB0byBhIDNyZCBkb2N1bWVudC48YnI+CitUaGUgInNob3VsZCBvcGVuIGV4
dGVybmFsIFVSTHMiIGZsYWcgc2hvdWxkIGJlIHNldCBiZWNhdXNlIHRoZSBwcm9ncmFtYXRpYyBu
YXZpZ2F0aW9uIGluaXRpYXRlZCBmcm9tIHRoZSBtYWluIGZyYW1lIGFuZCB0aGUgZmxhZyBzaG91
bGQgcHJvcGFnYXRlLjxicj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZmIyOWYzNzhmOS4uNGJlMWUyNmMwYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAxNy0wNy0wNSAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgbmF2aWdhdGlvbnMgaW4gc3ViZnJh
bWVzIHRvIGdldCBhIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgb2YgIlNob3VsZEFsbG93
Ii4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNDg1NTg5PiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9z
aG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2Fs
bHktYnktbWFpbi1mcmFtZS5odG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEg
bmV3IGZsYWcgdG8gRnJhbWVMb2FkUmVxdWVzdCB0byB0cmFjayB3aGVuIGl0IGlzIGtub3duIHdp
dGggY2VydGFpbnR5IHRoYXQgYSAKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBvcmlnaW5hdGVz
IGZyb20gdGhlIG1haW4gZnJhbWUuCisgICAgICAgIAorICAgICAgICBMYXRlciwgd2hlbiBjYWxj
dWxhdGluZyB0aGUgZmluYWwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgbWFpbiBmcmFt
ZXMgbmF2aWdhdGluZyBpZnJhbWVzIGdldCB0byBwcm9wYWdhdGUKKyAgICAgICAgdGhlaXIgcGVy
bWlzc2lvbnMgdG8gdGhlIGlmcmFtZS4KKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3MvanMv
Q29tbW9uVk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGV4aWNhbEZyYW1lRnJvbUNvbW1vblZN
KTogSGVscGVyIHRvIGdyYWIgdGhlIGN1cnJlbnQgZnJhbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBj
dXJyZW50IEpTIGNhbGxzdGFjay4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db21tb25WTS5oOgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlbkluTmV3
VGFiKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZSk6CisKKyAgICAgICAg
QWRkIHRoZSBuZXcgZmxhZyB0byBGcmFtZUxvYWRSZXF1ZXN0IChhbmQgZm9yY2UgYWxtb3N0IGV2
ZXJ5Ym9keSB0byBleHBsaWNpdGx5IGluY2x1ZGUgdGhlIGZsYWcpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVl
c3Q6OkZyYW1lTG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRSZXF1ZXN0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0OjpGcmFtZUxvYWRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Q6Om5hdmlnYXRpb25Jbml0aWF0
ZWRCeU1haW5GcmFtZSk6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkpOiBIZWxwZXIgdGhhdCB0YWtl
cyB0aGUgbmV3IGZsYWcgaW50byBhY2NvdW50IHdoZW4gZGVjaWRpbmcKKyAgICAgICAgICB3aGF0
IHRoZSBmaW5hbCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHdpbGwgYmUuCisgICAgICAg
IChXZWJDb3JlOjphcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50
TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVM
b2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2lu
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphcHBseVNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuaDoKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVz
Lmg6CisKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6bmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKToK
KyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWROYXZpZ2F0aW9uOjpTY2hlZHVsZWROYXZpZ2F0aW9uKTogR3JhYiB0aGUg
ImluaXRpYXRpbmcgZnJhbWUiIGF0IHRoZSB0aW1lIHRoZSAKKyAgICAgICAgICBTY2hlZHVsZWRO
YXZpZ2F0aW9uIGlzIGNyZWF0ZWQsIGFzIGl0IGRpY3RhdGVzIHRoZSBwb2xpY3kgd2UgZGVjaWRl
IGxhdGVyLgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdhdGlvbjo6bmF2aWdhdGlv
bkluaXRpYXRlZEJ5TWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hl
ZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UpOgorCisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Blbk5ld1dpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKToKKworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6Y3JlYXRlV2luZG93KToKKwogMjAxNy0wNy0wMyAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3dpdGNoIGFsbCBXZWJLaXQgQVBJIHJl
bGF0ZWQgdG8gZmF2aWNvbnMgZnJvbSBXZWJJY29uRGF0YWJhc2Ugb3ZlciB0byBuZXcgV2ViQ29y
ZTo6SWNvbkxvYWRlciBtZWNoYW5pc20uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Db21tb25WTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25W
TS5jcHAKaW5kZXggYWE3OWVlZWUxODUuLjc2ZDA5MDk2NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ29tbW9uVk0uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKIAorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgpAQCAtNjUsNiArNjYsMjAgQEAgVk0mIGNvbW1vblZNU2xv
dygpCiAgICAgcmV0dXJuICpnX2NvbW1vblZNT3JOdWxsOwogfQogCitGcmFtZSogbGV4aWNhbEZy
YW1lRnJvbUNvbW1vblZNKCkKK3sKKyAgICBpZiAoYXV0byogdG9wQ2FsbEZyYW1lID0gY29tbW9u
Vk0oKS50b3BDYWxsRnJhbWUpIHsKKyAgICAgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IEpT
Qzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odG9wQ2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0ganNEeW5hbWljRG93
bmNhc3Q8SlNET01XaW5kb3cqPihjb21tb25WTSgpLCBnbG9iYWxPYmplY3QpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gd2luZG93LT53cmFwcGVkKCkuZnJhbWUoKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgYWRkSW1wdXJlUHJvcGVy
dHkoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgY29tbW9uVk0oKS5h
ZGRJbXB1cmVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ29tbW9uVk0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nv
bW1vblZNLmgKaW5kZXggMmM2N2Y5OWQ3YjYuLjI4MjFlYjI4ODhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NvbW1vblZNLmgKQEAgLTMzLDYgKzMzLDkgQEAgY2xhc3MgVk07CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRnJhbWU7CitGcmFtZSogbGV4aWNhbEZyYW1lRnJvbUNv
bW1vblZNKCk7CisKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiBKU0M6OlZNKiBnX2NvbW1vblZNT3JO
dWxsOwogCiBXRUJDT1JFX0VYUE9SVCBKU0M6OlZNJiBjb21tb25WTVNsb3coKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcAppbmRleCAwNDk5ZjljNjQ3MS4uYzg3NzcwNmFhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGlj
YXRvciBpbmRpY2F0b3IgeyBQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKICAgICBGcmFtZSYgbWFp
bkZyYW1lID0gbV9pbnNwZWN0ZWRQYWdlQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5G
cmFtZSgpOwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICptYWluRnJh
bWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsg
fSwgQVNDSUlMaXRlcmFsKCJfYmxhbmsiKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0Zvcndh
cmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxv
YWRSZXF1ZXN0IHsgKm1haW5GcmFtZS5kb2N1bWVudCgpLCBtYWluRnJhbWUuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSwgeyB9LCBBU0NJSUxpdGVyYWwoIl9ibGFuayIpLCBMb2NrSGlzdG9y
eTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25J
bml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwogICAg
IFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBt
YWluRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CkBAIC0y
MzksNyArMjM5LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5O
ZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiAKICAgICAvLyBGSVhNRTogV2h5IGRvIHdlIGNvbXB1
dGUgdGhlIGFic29sdXRlIFVSTCB3aXRoIHJlc3BlY3QgdG8gfGZyYW1lfCBpbnN0ZWFkIG9mIHxt
YWluRnJhbWV8PwogICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyBmcmFtZS0+
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSB9OwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdDIgeyAqbWFpbkZyYW1lLmRvY3VtZW50KCksIG1haW5GcmFtZS5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsIEFTQ0lJTGl0ZXJhbCgiX3Nl
bGYiKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5k
UmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5l
clBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93IH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0MiB7ICptYWluRnJh
bWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHJl
c291cmNlUmVxdWVzdCwgQVNDSUlMaXRlcmFsKCJfc2VsZiIpLCBMb2NrSGlzdG9yeTo6Tm8sIExv
Y2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0ZWRC
eU1haW5GcmFtZTo6VW5rbm93biB9OwogICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlv
bihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZjliMjVlZDlkYWUuLmNmMjUx
ZjViNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpuYXZp
Z2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIEZyYW1lJiBmcmFtZSA9
IG1fcGFnZS5tYWluRnJhbWUoKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVl
c3QgeyBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpIH07Ci0gICAgRnJhbWVMb2Fk
UmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLmRvY3VtZW50KCksIGZyYW1lLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNlUmVxdWVzdCwgQVNDSUlMaXRlcmFsKCJf
c2VsZiIpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNl
bmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpObywgTmV3RnJhbWVPcGVu
ZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RB
bGxvdyB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS5k
b2N1bWVudCgpLCBmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJl
cXVlc3QsIEFTQ0lJTGl0ZXJhbCgiX3NlbGYiKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0Zv
cndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTDo6Tm8sIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogICAgIGZyYW1lLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
UmVxdWVzdC5jcHAKaW5kZXggNTJlMzBjMmRkNjYuLmE1NTNmNWI3YjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRnJhbWVMb2FkUmVxdWVzdDo6RnJhbWVMb2FkUmVxdWVzdChE
b2N1bWVudCYgcmVxdWVzdGVyLCBTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGVyU2VjdXJpdHlPcmln
aW4sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3Qg
bG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJl
ciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVuZXJQb2xpY3ksIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgU2hvdWxkUmVw
bGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNj
cmlwdFVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKK0ZyYW1lTG9h
ZFJlcXVlc3Q6OkZyYW1lTG9hZFJlcXVlc3QoRG9jdW1lbnQmIHJlcXVlc3RlciwgU2VjdXJpdHlP
cmlnaW4mIHJlcXVlc3RlclNlY3VyaXR5T3JpZ2luLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5IGxvY2tI
aXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNl
bmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG5ld0Zy
YW1lT3BlbmVyUG9saWN5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSBuYXZpZ2F0
aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlw
dFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIGNvbnN0IEF0b21pY1N0
cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCiAgICAgOiBtX3JlcXVlc3RlciB7IG1ha2VSZWYocmVx
dWVzdGVyKSB9CiAgICAgLCBtX3JlcXVlc3RlclNlY3VyaXR5T3JpZ2luIHsgbWFrZVJlZihyZXF1
ZXN0ZXJTZWN1cml0eU9yaWdpbikgfQogICAgICwgbV9yZXNvdXJjZVJlcXVlc3QgeyByZXNvdXJj
ZVJlcXVlc3QgfQpAQCAtNTAsNiArNTAsNyBAQCBGcmFtZUxvYWRSZXF1ZXN0OjpGcmFtZUxvYWRS
ZXF1ZXN0KERvY3VtZW50JiByZXF1ZXN0ZXIsIFNlY3VyaXR5T3JpZ2luJiByZXF1ZXN0ZQogICAg
ICwgbV9zaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgeyBzaG91bGRSZXBsYWNl
RG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgfQogICAgICwgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5IHsgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB9CiAgICAgLCBtX2Rvd25sb2Fk
QXR0cmlidXRlIHsgZG93bmxvYWRBdHRyaWJ1dGUgfQorICAgICwgbV9uYXZpZ2F0aW9uSW5pdGlh
dGVkQnlNYWluRnJhbWUgeyBuYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgfQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaAppbmRleCA0ODJhNjI5ZTBj
MC4uOWEwNTMwMzFiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3Qu
aApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgRnJhbWVM
b2FkUmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkUmVxdWVz
dChEb2N1bWVudCYsIFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBT
aG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgTmV3RnJhbWVP
cGVuZXJQb2xpY3ksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIFNob3VsZFJlcGxhY2VE
b2N1bWVudElmSmF2YVNjcmlwdFVSTCA9IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IHsgfSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgRnJhbWVMb2FkUmVxdWVzdChEb2N1bWVudCYsIFNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5
LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgTmV3RnJhbWVPcGVuZXJQb2xpY3ksIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSwgU2hvdWxkUmVwbGFjZURv
Y3VtZW50SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMLCBj
b25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0geyB9KTsKICAgICBXRUJDT1JF
X0VYUE9SVCBGcmFtZUxvYWRSZXF1ZXN0KEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3QgU3Vic3RpdHV0ZURhdGEmID0gU3Vi
c3RpdHV0ZURhdGEoKSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+RnJhbWVMb2FkUmVxdWVzdCgp
OwpAQCAtNzksNiArNzksOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRv
d25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZEF0dHJpYnV0ZTsgfQog
CisgICAgTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lIG5hdmlnYXRpb25Jbml0aWF0ZWRC
eU1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZy
YW1lOyB9CisKIHByaXZhdGU6CiAgICAgUmVmPERvY3VtZW50PiBtX3JlcXVlc3RlcjsKICAgICBS
ZWY8U2VjdXJpdHlPcmlnaW4+IG1fcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW47CkBAIC05NSw2ICs5
Nyw3IEBAIHByaXZhdGU6CiAgICAgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJM
IG1fc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMOwogICAgIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsKICAgICBBdG9taWNTdHJp
bmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsKKyAgICBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJh
bWUgbV9uYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgeyBOYXZpZ2F0aW9uSW5pdGlhdGVk
QnlNYWluRnJhbWU6OlVua25vd24gfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDNkNGYzMDNmZDE4Li40OGQ3ZGE4
OGQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25WTS5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3ku
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTM2Myw4ICszNjQsMTEgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZv
aWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHBhc3NlZFRhcmdldCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCwgTG9ja0hpc3RvcnkgbG9ja0hp
c3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2Vu
ZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3Bl
bmVyUG9saWN5PiBvcGVuZXJQb2xpY3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUpCiB7CisgICAgYXV0byogZnJhbWUgPSBsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKTsK
KyAgICBhdXRvIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSA9IGZyYW1lICYmIGZyYW1l
LT5pc01haW5GcmFtZSgpID8gTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXMgOiBO
YXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd247CisKICAgICBOZXdGcmFtZU9w
ZW5lclBvbGljeSBuZXdGcmFtZU9wZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZV9vcihz
aG91bGRTZW5kUmVmZXJyZXIgPT0gTmV2ZXJTZW5kUmVmZXJyZXIgPyBOZXdGcmFtZU9wZW5lclBv
bGljeTo6U3VwcHJlc3MgOiBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cpOwotICAgIHVybFNl
bGVjdGVkKEZyYW1lTG9hZFJlcXVlc3QoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IHVybCB9LCBwYXNzZWRUYXJnZXQsIGxvY2tIaXN0
b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBzaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzLCBuZXdGcmFtZU9wZW5lclBvbGljeSwgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIGRv
d25sb2FkQXR0cmlidXRlKSwgdHJpZ2dlcmluZ0V2ZW50KTsKKyAgICB1cmxTZWxlY3RlZChGcmFt
ZUxvYWRSZXF1ZXN0KCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgeyB1cmwgfSwgcGFzc2VkVGFyZ2V0LCBsb2NrSGlzdG9yeSwgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgc2hvdWxkU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6OlllcywgbmV3RnJhbWVPcGVuZXJQb2xpY3ksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSwgRG9Ob3RSZXBsYWNlRG9jdW1l
bnRJZkphdmFTY3JpcHRVUkwsIGRvd25sb2FkQXR0cmlidXRlKSwgdHJpZ2dlcmluZ0V2ZW50KTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoRnJhbWVMb2FkUmVxdWVzdCYmIGZy
YW1lUmVxdWVzdCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkKQEAgLTkyNCw3ICs5MjgsMTAgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVyZXIsIEYKICAgICAgICAgfQogICAgIH0KIAotICAgIEZyYW1lTG9h
ZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB1cmwgfSwgQVNDSUlMaXRlcmFsKCJfc2Vs
ZiIpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcywgU2hvdWxkU2Vu
ZFJlZmVycmVyOjpNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
OjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcywgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsKKyAgICBhdXRvKiBsZXhpY2FsRnJhbWUgPSBs
ZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKTsKKyAgICBhdXRvIG5hdmlnYXRpb25Jbml0aWF0ZWRC
eU1haW5GcmFtZSA9IGxleGljYWxGcmFtZSAmJiBsZXhpY2FsRnJhbWUtPmlzTWFpbkZyYW1lKCkg
PyBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcyA6IE5hdmlnYXRpb25Jbml0aWF0
ZWRCeU1haW5GcmFtZTo6VW5rbm93bjsKKworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2Fk
UmVxdWVzdCB7ICptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSwgeyB1cmwgfSwgQVNDSUlMaXRlcmFsKCJfc2VsZiIpLCBMb2NrSGlzdG9yeTo6
Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcywgU2hvdWxkU2VuZFJlZmVycmVyOjpNYXliZVNl
bmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3Bl
bmVyUG9saWN5OjpTdXBwcmVzcywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
Tm90QWxsb3csIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSB9OwogICAgIGNoaWxkRnJh
bWUtPmxvYWRlcigpLmxvYWRVUkwoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJlciwg
RnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCBudWxscHRy
LCBudWxscHRyKTsKIH0KIApAQCAtMTIwOCwxNSArMTIxNSwzNSBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZl
bnQsIEZvcgogICAgIH0KIH0KIAotc3RhdGljIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoRnJhbWUmIHNvdXJjZUZyYW1lLCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHByb3BhZ2F0ZWRQb2xpY3kpCitzdGF0aWMgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9B
cHBseShGcmFtZSYgY3VycmVudEZyYW1lLCBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUg
bmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHByb3BhZ2F0ZWRQb2xpY3kpCiB7Ci0gICAgaWYgKCFzb3VyY2VGcmFtZS5pc01haW5GcmFt
ZSgpKQotICAgICAgICByZXR1cm4gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
Tm90QWxsb3c7CiAgICAgaWYgKFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKQogICAgICAgICByZXR1cm4gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
QWxsb3c7CisKKyAgICBpZiAobmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lID09IE5hdmln
YXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzKQorICAgICAgICByZXR1cm4gcHJvcGFnYXRl
ZFBvbGljeTsKKworICAgIGlmICghY3VycmVudEZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAgICAg
IHJldHVybiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdzsKKwog
ICAgIHJldHVybiBwcm9wYWdhdGVkUG9saWN5OwogfQogCitzdGF0aWMgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShGcmFtZSYg
Y3VycmVudEZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0KQor
eworICAgIHJldHVybiBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShjdXJyZW50
RnJhbWUsIGZyYW1lTG9hZFJlcXVlc3QubmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKCks
IGZyYW1lTG9hZFJlcXVlc3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKK30KKwor
c3RhdGljIHZvaWQgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVu
dExvYWRlcihGcmFtZSYgZnJhbWUsIERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciwgTmF2
aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBwcm9wYWdhdGVkUG9saWN5KQoreworICAg
IGRvY3VtZW50TG9hZGVyLnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoZnJhbWUsIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1h
aW5GcmFtZSwgcHJvcGFnYXRlZFBvbGljeSkpOworfQorCitzdGF0aWMgdm9pZCBhcHBseVNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKEZyYW1lJiBmcmFtZSwg
RG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBm
cmFtZUxvYWRSZXF1ZXN0KQoreworICAgIGRvY3VtZW50TG9hZGVyLnNldFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoZnJhbWUs
IGZyYW1lTG9hZFJlcXVlc3QpKTsKK30KKwogYm9vbCBGcmFtZUxvYWRlcjo6aXNOYXZpZ2F0aW9u
QWxsb3dlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdE
aXNwYXRjaGVkID09IFBhZ2VEaXNtaXNzYWxUeXBlOjpOb25lICYmIE5hdmlnYXRpb25EaXNhYmxl
cjo6aXNOYXZpZ2F0aW9uQWxsb3dlZChtX2ZyYW1lKTsKQEAgLTEyNjUsNyArMTI5Miw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgcmVmCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyBmcmFt
ZUxvYWRSZXF1ZXN0LnJlcXVlc3RlcigpLCByZXF1ZXN0LCBuZXdMb2FkVHlwZSwgaXNGb3JtU3Vi
bWlzc2lvbiwgZXZlbnQsIGZyYW1lTG9hZFJlcXVlc3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSgpLCBmcmFtZUxvYWRSZXF1ZXN0LmRvd25sb2FkQXR0cmlidXRlKCkgfTsKIAogICAgIGlm
ICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYWN0aW9u
ID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0LnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSkpOworICAgICAgICBhY3Rpb24gPSBhY3Rpb24uY29w
eVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3lUb0FwcGx5KG1fZnJhbWUsIGZyYW1lTG9hZFJlcXVlc3QpKTsKICAgICAgICAgcG9saWN5
Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KGFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRl
LCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBv
bGljeV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3Rh
dGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rp
b24sIGJvb2wgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVy
TmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNo
b3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7
CiAgICAgICAgIH0pOwpAQCAtMTI5Myw3ICsxMzIwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBy
ZWYKIAogICAgIC8vIG11c3QgZ3JhYiB0aGlzIG5vdywgc2luY2UgdGhpcyBsb2FkIG1heSBzdG9w
IHRoZSBwcmV2aW91cyBsb2FkIGFuZCBjbGVhciB0aGlzIGZsYWcKICAgICBib29sIGlzUmVkaXJl
Y3QgPSBtX3F1aWNrUmVkaXJlY3RDb21pbmc7Ci0gICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9u
KHJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIG5ld0xvYWRUeXBlLCBmb3JtU3RhdGUsIGFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9u
KHJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIG5ld0xvYWRUeXBlLCBmb3JtU3RhdGUsIGFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgZnJhbWVMb2FkUmVxdWVzdC5uYXZpZ2F0aW9uSW5p
dGlhdGVkQnlNYWluRnJhbWUoKSk7CiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKICAgICAgICAgbV9x
dWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAgICAgICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIpCkBAIC0xMzQ3LDE1ICsxMzc0LDE1IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWQoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIHJlcXVlc3Quc2V0U3Vic3Rp
dHV0ZURhdGEoZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCkpKTsKIAogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGll
bnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVz
dC5zdWJzdGl0dXRlRGF0YSgpKTsKLSAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KCkpOworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3
RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCByZXF1ZXN0KTsKIAogICAgIGxvYWQobG9h
ZGVyLnB0cigpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYgYWN0aW9uLCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSB0eXBlLCBG
b3JtU3RhdGUqIGZvcm1TdGF0ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgdHlw
ZSwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSBu
YXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUpCiB7CiAgICAgUmVmPERvY3VtZW50TG9hZGVy
PiBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0
U3Vic3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOwotICAgIGFwcGx5U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobG9hZGVyLCBhY3Rpb24uc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKG1fZnJhbWUsIGxvYWRlciwgbmF2aWdhdGlv
bkluaXRpYXRlZEJ5TWFpbkZyYW1lLCBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSgpKTsKIAogICAgIGlmIChsb2NrSGlzdG9yeSA9PSBMb2NrSGlzdG9yeTo6WWVzICYmIG1fZG9j
dW1lbnRMb2FkZXIpCiAgICAgICAgIGxvYWRlci0+c2V0Q2xpZW50UmVkaXJlY3RTb3VyY2VGb3JI
aXN0b3J5KG1fZG9jdW1lbnRMb2FkZXItPmRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeSgpID8g
bV9kb2N1bWVudExvYWRlci0+dXJsRm9ySGlzdG9yeSgpLnN0cmluZygpIDogbV9kb2N1bWVudExv
YWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpOwpAQCAtMTU1Nyw3ICsxNTg0
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoY29uc3Qg
U3RyaW5nJiBlbmNvZGluZykKICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJldHVybkNhY2hl
RGF0YUVsc2VMb2FkKTsKIAogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGll
bnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9y
VVJMKHJlcXVlc3QudXJsKCkpKTsKLSAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOworICAgIGFwcGx5U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCBOYXZp
Z2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24sIG1fZG9jdW1lbnRMb2FkZXItPnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKIAogICAgIHNldFBvbGlj
eURvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSk7CiAKQEAgLTE1ODUsNyArMTYxMiw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OnJlbG9hZChPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiBvcHRpb25zKQog
ICAgIC8vIENyZWF0ZSBhIG5ldyBkb2N1bWVudCBsb2FkZXIgZm9yIHRoZSByZWxvYWQsIHRoaXMg
d2lsbCBiZWNvbWUgbV9kb2N1bWVudExvYWRlciBldmVudHVhbGx5LAogICAgIC8vIGJ1dCBmaXJz
dCBpdCBoYXMgdG8gYmUgdGhlICJwb2xpY3kiIGRvY3VtZW50IGxvYWRlciwgYW5kIHRoZW4gdGhl
ICJwcm92aXNpb25hbCIgZG9jdW1lbnQgbG9hZGVyLgogICAgIFJlZjxEb2N1bWVudExvYWRlcj4g
bG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVlc3QsIGRl
ZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChpbml0aWFsUmVxdWVzdC51cmwoKSkpOwotICAgIGFw
cGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobG9hZGVy
LCBtX2RvY3VtZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdh
dGUoKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVu
dExvYWRlcihtX2ZyYW1lLCBsb2FkZXIsIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6
VW5rbm93biwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRv
UHJvcGFnYXRlKCkpOwogCiAgICAgbG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFi
bGVkKCFvcHRpb25zLmNvbnRhaW5zKFJlbG9hZE9wdGlvbjo6RGlzYWJsZUNvbnRlbnRCbG9ja2Vy
cykpOwogICAgIApAQCAtMjcyNSw3ICsyNzUyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBv
c3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUK
ICAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBm
b3IgYSB0YXJnZXQgZnJhbWUgaXMgZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3Vi
bWlzc2lvbi4KICAgICAgICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IDAg
OiBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSkpIHsKLSAgICAgICAgICAgIHRhcmdl
dEZyYW1lLT5sb2FkZXIoKS5sb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNl
UmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRl
KSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICAgICAgICAgIHRhcmdldEZyYW1l
LT5sb2FkZXIoKS5sb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCByZXF1ZXN0Lm5hdmlnYXRpb25Jbml0aWF0ZWRCeU1h
aW5GcmFtZSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNzM3LDcg
KzI3NjQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogCiAgICAgLy8gbXVzdCBncmFiIHRo
aXMgbm93LCBzaW5jZSB0aGlzIGxvYWQgbWF5IHN0b3AgdGhlIHByZXZpb3VzIGxvYWQgYW5kIGNs
ZWFyIHRoaXMgZmxhZwogICAgIGJvb2wgaXNSZWRpcmVjdCA9IG1fcXVpY2tSZWRpcmVjdENvbWlu
ZzsKLSAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwg
YWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29y
a2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1v
dmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCByZXF1ZXN0Lm5hdmln
YXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSgpKTsKICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAg
ICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcikKQEAgLTMxNzcsNyArMzIwNCw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzCiAgICAgfQogCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBuZXdBY3Rpb24geyAqZnJh
bWUtPmRvY3VtZW50KCksIHJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgYWN0aW9uLnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSB9OwotICAgIG1haW5GcmFtZS0+bG9hZGVyKCku
bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QsIG5ld0FjdGlvbiwgTG9ja0hpc3Rvcnk6
Ok5vLCBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZCwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwpOworICAgIG1haW5GcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9u
QWN0aW9uKHJlcXVlc3QsIG5ld0FjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5vLCBGcmFtZUxvYWRUeXBl
OjpTdGFuZGFyZCwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5hdmln
YXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93bik7CiB9CiAKIHZvaWQgRnJhbWVMb2Fk
ZXI6OnJlcXVlc3RGcm9tRGVsZWdhdGUoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1bnNpZ25l
ZCBsb25nJiBpZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTMzODAsNyArMzQw
Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9y
eUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgaWYgKCFpdGVtLnJlZmVycmVyKCku
aXNOdWxsKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGl0ZW0ucmVmZXJyZXIo
KSk7CiAKLSAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1l
LCBpdGVtLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkobV9mcmFtZSwgTmF2aWdhdGlvbkluaXRpYXRlZEJ5
TWFpbkZyYW1lOjpVbmtub3duLCBpdGVtLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7
CiAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uID0gZmFsc2U7CiAgICAgRXZlbnQqIGV2ZW50ID0g
bnVsbHB0cjsKIApAQCAtMzQ1MCw3ICszNDc3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERp
ZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EK
ICAgICAgICAgYWN0aW9uID0geyAqbV9mcmFtZS5kb2N1bWVudCgpLCByZXF1ZXN0Rm9yT3JpZ2lu
YWxVUkwsIGxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCwgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSB9OwogICAgIH0KIAotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihy
ZXF1ZXN0LCBhY3Rpb24sIExvY2tIaXN0b3J5OjpObywgbG9hZFR5cGUsIDAsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVx
dWVzdCwgYWN0aW9uLCBMb2NrSGlzdG9yeTo6Tm8sIGxvYWRUeXBlLCAwLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6OlllcywgTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtu
b3duKTsKIH0KIAogLy8gTG9hZHMgY29udGVudCBpbnRvIHRoaXMgZnJhbWUsIGFzIHNwZWNpZmll
ZCBieSBoaXN0b3J5IGl0ZW0KQEAgLTM2NTEsMTEgKzM2NzgsNiBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpjbGVhclRlc3RpbmdPdmVycmlkZXMoKQogICAgIG1faXNTdHJpY3RSYXdSZXNvdXJjZVZhbGlk
YXRpb25Qb2xpY3lEaXNhYmxlZEZvclRlc3RpbmcgPSBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6YXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRl
cihEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgcHJvcGFnYXRlZFBvbGljeSkKLXsKLSAgICBkb2N1bWVudExvYWRlci5zZXRTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5
KG1fZnJhbWUsIHByb3BhZ2F0ZWRQb2xpY3kpKTsKLX0KLQogYm9vbCBGcmFtZUxvYWRlcjo6aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJhbWUoKS5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKQEAgLTM3MDAsNyArMzcyMiw3IEBAIFJlZlB0cjxGcmFt
ZT4gY3JlYXRlV2luZG93KEZyYW1lJiBvcGVuZXJGcmFtZSwgRnJhbWUmIGxvb2t1cEZyYW1lLCBG
cmFtZUxvYWRSZXF1CiAgICAgaWYgKCFvbGRQYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG9wZW5lckZyYW1l
LCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkob3BlbmVyRnJhbWUsIHJlcXVlc3QpOwogICAg
IE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsgcmVxdWVzdC5yZXF1ZXN0ZXIoKSwgcmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKSwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCBzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IH07CiAgICAgUGFnZSogcGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLmNyZWF0
ZVdpbmRvdyhvcGVuZXJGcmFtZSwgcmVxdWVzdCwgZmVhdHVyZXMsIGFjdGlvbik7CiAgICAgaWYg
KCFwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCA2Y2FjZGRhZDk5Yi4u
MzQ5NjUyYmE5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0zNTgsNyAr
MzU4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1l
bnRMb2FkZXIqLCBGcmFtZUxvYWRUeXBlLCBGb3JtU3RhdGUqLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwpOyAvLyBDYWxscyBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kKICAg
ICB2b2lkIGxvYWQoRG9jdW1lbnRMb2FkZXIqKTsgLy8gQ2FsbHMgbG9hZFdpdGhEb2N1bWVudExv
YWRlcgogCi0gICAgdm9pZCBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIExvY2tIaXN0b3J5LCBGcmFtZUxvYWRU
eXBlLCBGb3JtU3RhdGUqLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOyAvLyBDYWxscyBs
b2FkV2l0aERvY3VtZW50TG9hZGVyCisgICAgdm9pZCBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIExvY2tIaXN0
b3J5LCBGcmFtZUxvYWRUeXBlLCBGb3JtU3RhdGUqLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwsIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSk7IC8vIENhbGxzIGxvYWRXaXRoRG9j
dW1lbnRMb2FkZXIKIAogICAgIHZvaWQgbG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3Qm
JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlwZSwgRXZlbnQqLCBGb3JtU3Rh
dGUqKTsKICAgICB2b2lkIGxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlLCBFdmVudCosIEZvcm1TdGF0ZSopOwpAQCAtMzg2LDgg
KzM4Niw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxh
YmxlSW5BbGxXb3JsZHMoKTsKIAotICAgIHZvaWQgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciYsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgcHJvcGFnYXRlZFBvbGljeSk7Ci0KICAgICBib29sIGlzTmF2aWdhdGlv
bkFsbG93ZWQoKSBjb25zdDsKIAogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlclR5cGVzLmgKaW5kZXggODRlYTI1YjI4NGIuLjc5ZDQ2ZDU5OTZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKQEAgLTgzLDYgKzgzLDEx
IEBAIGVudW0gY2xhc3MgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7CiAgICAgU2hvdWxk
QWxsb3csCiB9OwogCitlbnVtIGNsYXNzIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSB7
CisgICAgWWVzLAorICAgIFVua25vd24sCit9OworCiBlbnVtIENsZWFyUHJvdmlzaW9uYWxJdGVt
UG9saWN5IHsKICAgICBTaG91bGRDbGVhclByb3Zpc2lvbmFsSXRlbSwKICAgICBTaG91bGROb3RD
bGVhclByb3Zpc2lvbmFsSXRlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmgKaW5kZXggOTlkYjQ0YjNjZjguLmI0NTdkMTlhMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIFJlZlB0
cjxVc2VyR2VzdHVyZVRva2VuPiB1c2VyR2VzdHVyZVRva2VuKCkgY29uc3QgeyByZXR1cm4gbV91
c2VyR2VzdHVyZVRva2VuOyB9CiAKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k7IH0KKyAgICBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUg
bmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0
aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU7IH0KIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZG93
bmxvYWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkQXR0cmlidXRlOyB9CiAK
QEAgLTc2LDYgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJj
ZVJlcXVlc3Q7CiAgICAgTmF2aWdhdGlvblR5cGUgbV90eXBlOwogICAgIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OworICAgIE5hdmln
YXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSBtX25hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZTsKICAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9r
ZW4+IG1fdXNlckdlc3R1cmVUb2tlbiB7IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNl
ckdlc3R1cmUoKSB9OwogICAgIEF0b21pY1N0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IGI0MWE1
NGZmYTY5Li4zYmNiMWE1ZWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uU2NoZWR1bGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25T
Y2hlZHVsZXIuaCIKIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2luY2x1
ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgpAQCAtNzksNiArODAsMTAgQEAgcHVibGlj
OgogICAgICAgICAsIG1fdXNlckdlc3R1cmVUb0ZvcndhcmQoVXNlckdlc3R1cmVJbmRpY2F0b3I6
OmN1cnJlbnRVc2VyR2VzdHVyZSgpKQogICAgICAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeShleHRlcm5hbFVSTFBvbGljeSkKICAgICB7CisgICAgICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGxleGljYWxGcmFtZUZyb21Db21tb25WTSgpKSB7CisgICAgICAgICAgICBpZiAoZnJhbWUt
PmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uSW5pdGlhdGVkQnlN
YWluRnJhbWUgPSBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllczsKKyAgICAgICAg
fQogICAgIH0KICAgICB2aXJ0dWFsIH5TY2hlZHVsZWROYXZpZ2F0aW9uKCkgeyB9CiAKQEAgLTk4
LDYgKzEwMyw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyVXNlckdlc3R1
cmUoKSB7IG1fdXNlckdlc3R1cmVUb0ZvcndhcmQgPSBudWxscHRyOyB9CiAgICAgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OyB9CisgICAgTmF2aWdhdGlvbkluaXRp
YXRlZEJ5TWFpbkZyYW1lIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOyB9OwogCiBwcml2YXRlOgog
ICAgIGRvdWJsZSBtX2RlbGF5OwpAQCAtMTA3LDYgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzTG9jYXRpb25DaGFuZ2U7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNl
ckdlc3R1cmVUb0ZvcndhcmQ7CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBtX3No
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdyB9OworICAgIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSBt
X25hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSB7IE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1h
aW5GcmFtZTo6VW5rbm93biB9OwogfTsKIAogY2xhc3MgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbiA6
IHB1YmxpYyBTY2hlZHVsZWROYXZpZ2F0aW9uIHsKQEAgLTEyNSw3ICsxMzIsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IgeyB1c2Vy
R2VzdHVyZVRvRm9yd2FyZCgpIH07CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNl
UmVxdWVzdCB7IG1fdXJsLCBtX3JlZmVycmVyLCBVc2VQcm90b2NvbENhY2hlUG9saWN5IH07Ci0g
ICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IG1faW5pdGlhdGluZ0Rv
Y3VtZW50LmdldCgpLCAqbV9zZWN1cml0eU9yaWdpbiwgcmVzb3VyY2VSZXF1ZXN0LCAiX3NlbGYi
LCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIE1heWJlU2VuZFJlZmVycmVy
LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6
OkFsbG93LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkgfTsKKyAgICAgICAgRnJhbWVMb2FkUmVx
dWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9pbml0aWF0aW5nRG9jdW1lbnQuZ2V0KCksICptX3Nl
Y3VyaXR5T3JpZ2luLCByZXNvdXJjZVJlcXVlc3QsICJfc2VsZiIsIGxvY2tIaXN0b3J5KCksIGxv
Y2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIHNob3VsZE9wZW5F
eHRlcm5hbFVSTHMoKSwgbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgfTsKIAogICAg
ICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVl
c3QpKTsKICAgICB9CkBAIC0xODYsNyArMTkzLDcgQEAgcHVibGljOgogCiAgICAgICAgIGJvb2wg
cmVmcmVzaCA9IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUuZG9jdW1lbnQo
KS0+dXJsKCksIHVybCgpKTsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVz
dCB7IHVybCgpLCByZWZlcnJlcigpLCByZWZyZXNoID8gUmVsb2FkSWdub3JpbmdDYWNoZURhdGEg
OiBVc2VQcm90b2NvbENhY2hlUG9saWN5IH07Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwg
cmVzb3VyY2VSZXF1ZXN0LCAiX3NlbGYiLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRM
aXN0KCksIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Ok5v
LCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSB9
OworICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyBpbml0aWF0aW5n
RG9jdW1lbnQoKSwgKnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNlUmVxdWVzdCwgIl9zZWxmIiwg
bG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBNYXliZVNlbmRSZWZlcnJlciwg
QWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpObywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFs
bG93LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCksIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5G
cmFtZSgpIH07CiAKICAgICAgICAgZnJhbWUubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oV1RGTW92
ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CiAgICAgfQpAQCAtMjAyLDcgKzIwOSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvciB7IHVzZXJHZXN0
dXJlVG9Gb3J3YXJkKCkgfTsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1
ZXN0IHsgdXJsKCksIHJlZmVycmVyKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kgfTsKLSAgICAg
ICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgaW5pdGlhdGluZ0RvY3VtZW50
KCksICpzZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsICJfc2VsZiIsIGxvY2tIaXN0
b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8sIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgc2hv
dWxkT3BlbkV4dGVybmFsVVJMcygpIH07CisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVM
b2FkUmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgcmVz
b3VyY2VSZXF1ZXN0LCAiX3NlbGYiLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0
KCksIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Ok5vLCBO
ZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSwgbmF2
aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgfTsKKwogICAgICAgICBmcmFtZS5sb2FkZXIo
KS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpKTsKICAgICB9CiB9OwpA
QCAtMjE5LDcgKzIyNyw4IEBAIHB1YmxpYzoKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvciB7IHVzZXJHZXN0dXJlVG9Gb3J3YXJkKCkgfTsKIAogICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgdXJsKCksIHJlZmVycmVyKCksIFJlbG9h
ZElnbm9yaW5nQ2FjaGVEYXRhIH07Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2Fk
UmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgcmVzb3Vy
Y2VSZXF1ZXN0LCAiX3NlbGYiLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCks
IE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3
RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkgfTsKKyAg
ICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgaW5pdGlhdGluZ0RvY3Vt
ZW50KCksICpzZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsICJfc2VsZiIsIGxvY2tI
aXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cs
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSwgbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1l
KCkgfTsKKwogICAgICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZy
YW1lTG9hZFJlcXVlc3QpKTsKICAgICB9CiB9OwpAQCAtMjcxLDcgKzI4MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgYXV0byYgcmVxdWVzdGluZ0RvY3VtZW50ID0gbV9zdWJtaXNzaW9uLT5zdGF0ZSgp
LnNvdXJjZURvY3VtZW50KCk7CiAgICAgICAgIGlmICghcmVxdWVzdGluZ0RvY3VtZW50LmNhbk5h
dmlnYXRlKCZmcmFtZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEZyYW1lTG9hZFJl
cXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IHJlcXVlc3RpbmdEb2N1bWVudCwgcmVxdWVzdGluZ0Rv
Y3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgeyB9LCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFj
a0ZvcndhcmRMaXN0KCksIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzKCkgfTsKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsg
cmVxdWVzdGluZ0RvY3VtZW50LCByZXF1ZXN0aW5nRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwg
eyB9LCB7IH0sIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5k
UmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5l
clBvbGljeTo6QWxsb3csIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSwgbmF2aWdhdGlvbkluaXRp
YXRlZEJ5TWFpbkZyYW1lKCkgfTsKICAgICAgICAgbV9zdWJtaXNzaW9uLT5wb3B1bGF0ZUZyYW1l
TG9hZFJlcXVlc3QoZnJhbWVMb2FkUmVxdWVzdCk7CiAgICAgICAgIGZyYW1lLmxvYWRlcigpLmxv
YWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgbV9zdWJtaXNzaW9uLT5l
dmVudCgpLCAmbV9zdWJtaXNzaW9uLT5zdGF0ZSgpKTsKICAgICB9CkBAIC0zMjEsNyArMzMwLDcg
QEAgcHVibGljOgogICAgICAgICBTdWJzdGl0dXRlRGF0YSByZXBsYWNlbWVudERhdGEgeyBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX29yaWdpbkRvY3VtZW50LnVybCgpLCByZXBsYWNlbWVudFJl
c3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4g
fTsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgbV9vcmlnaW5E
b2N1bWVudC51cmwoKSwgZW1wdHlTdHJpbmcoKSwgUmVsb2FkSWdub3JpbmdDYWNoZURhdGEgfTsK
LSAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9vcmlnaW5Eb2N1
bWVudCwgbV9vcmlnaW5Eb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3Qs
IHsgfSwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBNYXliZVNlbmRSZWZl
cnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9s
aWN5OjpBbGxvdywgc2hvdWxkT3BlbkV4dGVybmFsVVJMcygpIH07CisgICAgICAgIEZyYW1lTG9h
ZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IG1fb3JpZ2luRG9jdW1lbnQsIG1fb3JpZ2luRG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCB7IH0sIGxvY2tIaXN0b3J5
KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHMoKSwgbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgfTsK
ICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRTdWJzdGl0dXRlRGF0YShyZXBsYWNlbWVudERh
dGEpOwogICAgICAgICBmcmFtZS5sb2FkZXIoKS5sb2FkKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVz
dCkpOwogICAgIH0KQEAgLTQyMCw3ICs0MjksMTAgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVy
OjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQsIFMK
ICAgICAvLyBmcmFnbWVudCBwYXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIHRoZSBsb2Nh
dGlvbiBjaGFuZ2UuCiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiBlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHVy
bCkpIHsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IG1fZnJhbWUu
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSwgcmVmZXJyZXIsIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kgfTsKLSAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgaW5p
dGlhdGluZ0RvY3VtZW50LCBzZWN1cml0eU9yaWdpbiwgcmVzb3VyY2VSZXF1ZXN0LCBBU0NJSUxp
dGVyYWwoIl9zZWxmIiksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBNYXliZVNl
bmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpObywgTmV3RnJhbWVPcGVu
ZXJQb2xpY3k6OkFsbG93LCBpbml0aWF0aW5nRG9jdW1lbnQuc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeVRvUHJvcGFnYXRlKCkgfTsKKyAgICAgICAgYXV0byogZnJhbWUgPSBsZXhpY2FsRnJh
bWVGcm9tQ29tbW9uVk0oKTsKKyAgICAgICAgYXV0byBuYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWlu
RnJhbWUgPSBmcmFtZSAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSA/IE5hdmlnYXRpb25Jbml0aWF0
ZWRCeU1haW5GcmFtZTo6WWVzIDogTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtu
b3duOworICAgICAgICAKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0
IHsgaW5pdGlhdGluZ0RvY3VtZW50LCBzZWN1cml0eU9yaWdpbiwgcmVzb3VyY2VSZXF1ZXN0LCBB
U0NJSUxpdGVyYWwoIl9zZWxmIiksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBN
YXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpObywgTmV3RnJh
bWVPcGVuZXJQb2xpY3k6OkFsbG93LCBpbml0aWF0aW5nRG9jdW1lbnQuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCksIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZSB9OwogICAgICAgICBsb2FkZXIuY2hhbmdlTG9jYXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1
ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggODE0MWI1MTkwMDMuLmFjODg3NTNlNGM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0x
ODksNyArMTg5LDcgQEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBVUkwmIHVybFRv
TG9hZCwgRnJhbWUmIGZyYW1lLCBTaG91bGRPcGVuRXh0ZXJuYWwKICAgICBpZiAoIW9sZFBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVz
dCB7ICpmcmFtZS5kb2N1bWVudCgpLCBmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LCBSZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVy
cmVyKCkpLCB7IH0sIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1h
eWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJh
bWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IH07
CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLmRvY3VtZW50
KCksIGZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCh1
cmxUb0xvYWQsIGZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSksIHsgfSwgTG9ja0hp
c3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3Vw
cHJlc3MsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE5hdmlnYXRpb25Jbml0aWF0ZWRC
eU1haW5GcmFtZTo6VW5rbm93biB9OwogCiAgICAgUGFnZSogbmV3UGFnZSA9IG9sZFBhZ2UtPmNo
cm9tZSgpLmNyZWF0ZVdpbmRvdyhmcmFtZSwgZnJhbWVMb2FkUmVxdWVzdCwgeyB9LCB7ICpmcmFt
ZS5kb2N1bWVudCgpLCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpIH0pOwogICAg
IGlmICghbmV3UGFnZSkKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJv
bGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBj
bwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3Blbkxpbms6CiAgICAgICAgIGlmIChGcmFt
ZSogdGFyZ2V0RnJhbWUgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnRhcmdldEZyYW1lKCkp
IHsKICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyBtX2NvbnRl
eHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVyKCkub3V0
Z29pbmdSZWZlcnJlcigpIH07Ci0gICAgICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9h
ZFJlcXVlc3QgeyAqZnJhbWUtPmRvY3VtZW50KCksIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsIHsgfSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFj
a0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MsIHRhcmdldEZyYW1l
LT5pc01haW5GcmFtZSgpID8gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxs
b3cgOiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OworICAg
ICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLT5kb2N1
bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1
ZXN0LCB7IH0sIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJl
U2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVP
cGVuZXJQb2xpY3k6OlN1cHByZXNzLCB0YXJnZXRGcmFtZS0+aXNNYWluRnJhbWUoKSA/IFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93IDogU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxvYWRGcmFt
ZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgbnVsbHB0ciwgbnVsbHB0cik7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2NvbnRleHQuaGl0VGVz
dFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCAqZnJhbWUsIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZEFsbG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBm
YzcwOGY3YzE3My4uODAzYWY2ZmZlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAg
LTIxOTcsMTAgKzIxOTcsMTEgQEAgUmVmUHRyPEZyYW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRv
dyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW4KIAogICAgIC8vIEZv
ciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZmlyc3QgZnJhbWUgdG8gZGV0ZXJt
aW5lIHRoZSBvdXRnb2luZ1JlZmVycmVyLiBXZSByZXBsaWNhdGUgdGhhdCBiZWhhdmlvciBoZXJl
LgogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVy
SGVhZGVyKGZpcnN0RnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgY29tcGxldGVk
VVJMLCBmaXJzdEZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgYXV0byBp
bml0aWF0ZWRCeU1haW5GcmFtZSA9IGFjdGl2ZUZyYW1lLT5pc01haW5GcmFtZSgpID8gTmF2aWdh
dGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXMgOiBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWlu
RnJhbWU6OlVua25vd247CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsg
Y29tcGxldGVkVVJMLCByZWZlcnJlciB9OwogICAgIEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2lu
SWZOZWVkZWQocmVzb3VyY2VSZXF1ZXN0LCBmaXJzdEZyYW1lLmxvYWRlcigpLm91dGdvaW5nT3Jp
Z2luKCkpOwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICphY3RpdmVE
b2N1bWVudCwgYWN0aXZlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNlUmVxdWVz
dCwgZnJhbWVOYW1lLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBN
YXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0Zy
YW1lT3BlbmVyUG9saWN5OjpBbGxvdywgYWN0aXZlRG9jdW1lbnQtPnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxv
YWRSZXF1ZXN0IHsgKmFjdGl2ZURvY3VtZW50LCBhY3RpdmVEb2N1bWVudC0+c2VjdXJpdHlPcmln
aW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCBmcmFtZU5hbWUsIExvY2tIaXN0b3J5OjpObywgTG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBhY3RpdmVEb2N1bWVu
dC0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCksIGluaXRpYXRlZEJ5
TWFpbkZyYW1lIH07CiAKICAgICAvLyBXZSBwYXNzIHRoZSBvcGVuZXIgZnJhbWUgZm9yIHRoZSBs
b29rdXBGcmFtZSBpbiBjYXNlIHRoZSBhY3RpdmUgZnJhbWUgaXMgZGlmZmVyZW50IGZyb20KICAg
ICAvLyB0aGUgb3BlbmVyIGZyYW1lLCBhbmQgdGhlIG5hbWUgcmVmZXJlbmNlcyBhIGZyYW1lIHJl
bGF0aXZlIHRvIHRoZSBvcGVuZXIgZnJhbWUuCkBAIC0yMjIxLDcgKzIyMjIsNyBAQCBSZWZQdHI8
RnJhbWU+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBBdG9taWNTdHJpbgogCiAgICAgaWYgKGNyZWF0ZWQpIHsKICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIFVzZVByb3Rv
Y29sQ2FjaGVQb2xpY3kgfTsKLSAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1
ZXN0IHsgKmFjdGl2ZVdpbmRvdy5kb2N1bWVudCgpLCBhY3RpdmVXaW5kb3cuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCBBU0NJSUxpdGVyYWwoIl9zZWxmIiks
IExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVy
cmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xp
Y3k6OkFsbG93LCBhY3RpdmVEb2N1bWVudC0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRv
UHJvcGFnYXRlKCkgfTsKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0
IHsgKmFjdGl2ZVdpbmRvdy5kb2N1bWVudCgpLCBhY3RpdmVXaW5kb3cuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCBBU0NJSUxpdGVyYWwoIl9zZWxmIiksIExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVy
LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6
OkFsbG93LCBhY3RpdmVEb2N1bWVudC0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJv
cGFnYXRlKCksIGluaXRpYXRlZEJ5TWFpbkZyYW1lIH07CiAgICAgICAgIG5ld0ZyYW1lLT5sb2Fk
ZXIoKS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpKTsKICAgICB9IGVs
c2UgaWYgKCF1cmxTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgIExvY2tIaXN0b3J5IGxvY2tI
aXN0b3J5ID0gU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgPyBMb2Nr
SGlzdG9yeTo6Tm8gOiBMb2NrSGlzdG9yeTo6WWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDJlNzVh
N2NiMzA4Li45MDFiNzA4NGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE3LTA3LTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBuYXZpZ2F0aW9ucyBpbiBzdWJmcmFtZXMgdG8gZ2V0IGEgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBvZiAiU2hvdWxkQWxsb3ciLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjI0
ODU1ODk+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MTc4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQg
dG8gdGhlIG5ldyBjb25zdHJ1Y3RvciBmb3IgRnJhbWVMb2FkUmVxdWVzdC4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBQREZWaWV3V2ls
bENsaWNrT25MaW5rOndpdGhVUkw6XSk6CisKIDIwMTctMDctMDMgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBhbGwgV2ViS2l0IEFQSSByZWxhdGVk
IHRvIGZhdmljb25zIGZyb20gV2ViSWNvbkRhdGFiYXNlIG92ZXIgdG8gbmV3IFdlYkNvcmU6Oklj
b25Mb2FkZXIgbWVjaGFuaXNtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1t
CmluZGV4IDQ3Y2UzNzExMmE2Li45NzljM2I1OTliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUERGVmlldy5tbQpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgLSAodm9pZClQREZWaWV3V2ls
bENsaWNrT25MaW5rOihQREZWaWV3ICopc2VuZGVyIHdpdGhVUkw6KE5TVVJMICopVVJMCiAKICAg
ICAvLyBDYWxsIHRvIHRoZSBmcmFtZSBsb2FkZXIgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIG91ciBz
ZWN1cml0eSBjaGVja3MgYXJlIG1hZGUuCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShbZGF0YVNv
dXJjZSB3ZWJGcmFtZV0pOwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7
ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IHsgVVJMIH0sIHsgfSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywg
TWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdG
cmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93IH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsg
KmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwg
eyBVUkwgfSwgeyB9LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBN
YXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0Zy
YW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkTm90QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9Owog
ICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVx
dWVzdCksIGV2ZW50LmdldCgpLCBudWxscHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDM2NTU5N2Fm
MzEzLi45OGNiMTQwZTY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA3LTA1
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBuYXZp
Z2F0aW9ucyBpbiBzdWJmcmFtZXMgdG8gZ2V0IGEgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBvZiAiU2hvdWxkQWxsb3ciLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjI0ODU1ODk+IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MTc4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgdG8gdGhlIG5l
dyBjb25zdHJ1Y3RvciBmb3IgRnJhbWVMb2FkUmVxdWVzdC4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
bG9hZFVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6Om9wZW5Jbk5ld1RhYik6
CisKIDIwMTctMDctMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFN3aXRjaCBhbGwgV2ViS2l0IEFQSSByZWxhdGVkIHRvIGZhdmljb25zIGZyb20gV2ViSWNv
bkRhdGFiYXNlIG92ZXIgdG8gbmV3IFdlYkNvcmU6Okljb25Mb2FkZXIgbWVjaGFuaXNtLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4
IGM1OGM1Y2I5NTg5Li5mOTFlZmJjZWU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTM4OCw3ICsxMzg4LDcgQEAgU3RyaW5n
IFBsdWdpblZpZXc6OnVzZXJBZ2VudCgpCiAKIHZvaWQgUGx1Z2luVmlldzo6bG9hZFVSTCh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZp
ZWxkcywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBodHRwQm9keSwgYm9vbCBhbGxvd1BvcHVwcykK
IHsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyBtX3BsdWdpbkVsZW1l
bnQtPmRvY3VtZW50KCksIG1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdp
bigpLCB7IH0sIHRhcmdldCwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpO
bywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBO
ZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93IH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0
IHsgbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLCBtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50
KCkuc2VjdXJpdHlPcmlnaW4oKSwgeyB9LCB0YXJnZXQsIExvY2tIaXN0b3J5OjpObywgTG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFp
bkZyYW1lOjpVbmtub3duIH07CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS5zZXRIVFRQTWV0aG9kKG1ldGhvZCk7CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKS5zZXRVUkwobV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVy
bFN0cmluZykpOwogICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRU
UEhlYWRlckZpZWxkcyhoZWFkZXJGaWVsZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCBiMjkxNjlhYzdjMi4uMzk5M2Y4OGMxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC02NTMsNyArNjUzLDcgQEAgRnJhbWUqIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdh
dGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBKdXN0IGNhbGwgdGhyb3VnaCB0
byB0aGUgY2hyb21lIGNsaWVudC4KLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVl
c3QgeyAqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCksIG1fZnJhbWUtPmNvcmVGcmFt
ZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291
cmNlUmVxdWVzdCgpLCB7IH0sIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6
Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcywg
TmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBuYXZpZ2F0aW9uQWN0aW9uLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3koKSB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVx
dWVzdCB7ICptX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKSwgbV9mcmFtZS0+Y29yZUZy
YW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIG5hdmlnYXRpb25BY3Rpb24ucmVz
b3VyY2VSZXF1ZXN0KCksIHsgfSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0
OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVz
LCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSgpLCBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVu
a25vd24gfTsKICAgICBQYWdlKiBuZXdQYWdlID0gd2ViUGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21l
KCkuY3JlYXRlV2luZG93KCptX2ZyYW1lLT5jb3JlRnJhbWUoKSwgZnJhbWVMb2FkUmVxdWVzdCwg
eyB9LCBuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBpZiAoIW5ld1BhZ2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLmNwcAppbmRleCAxYWU2MGFmMjY5NC4uM2E2MGY2ZDNhYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJp
bmcmIHVybFN0cmluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWUmIGluc3BlY3RlZE1h
aW5GcmFtZSA9IGluc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpOwotICAgIEZyYW1lTG9hZFJlcXVl
c3QgZnJhbWVMb2FkUmVxdWVzdCB7ICppbnNwZWN0ZWRNYWluRnJhbWUuZG9jdW1lbnQoKSwgaW5z
cGVjdGVkTWFpbkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgdXJsU3RyaW5n
IH0sIEFTQ0lJTGl0ZXJhbCgiX2JsYW5rIiksIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3
YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
Ukw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVM
b2FkUmVxdWVzdCB7ICppbnNwZWN0ZWRNYWluRnJhbWUuZG9jdW1lbnQoKSwgaW5zcGVjdGVkTWFp
bkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgdXJsU3RyaW5nIH0sIEFTQ0lJ
TGl0ZXJhbCgiX2JsYW5rIiksIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6
Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcywg
TmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdywgTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3du
IH07CiAKICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7ICppbnNwZWN0ZWRNYWluRnJhbWUu
ZG9jdW1lbnQoKSwgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgTmF2aWdhdGlv
blR5cGU6OkxpbmtDbGlja2VkIH07CiAgICAgUGFnZSogbmV3UGFnZSA9IGluc3BlY3RlZFBhZ2Ut
PmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhpbnNwZWN0ZWRNYWluRnJhbWUsIGZyYW1lTG9hZFJlcXVl
c3QsIHsgfSwgYWN0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314659</attachid>
            <date>2017-07-05 15:22:19 -0700</date>
            <delta_ts>2017-07-05 16:27:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>58393</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NTQ4NzQzNjAzYi4uYzIyMDE0ZTgzZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNy0wNy0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
QWxsb3cgbmF2aWdhdGlvbnMgaW4gc3ViZnJhbWVzIHRvIGdldCBhIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgb2YgIlNob3VsZEFsbG93Ii4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIy
NDg1NTg5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDE3
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGEgbmV3IGV4cGxpY2l0IHRlc3QgYW5kIHVwZGF0ZWQgZXhwZWN0YXRpb25zIGZvciBhbiBvbGQg
b25lLgorICAgICAgICAKKyAgICAgICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxk
LW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1h
aW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9z
dWJmcmFtZS1jbGljay10YXJnZXQtc2VsZi1leHBlY3RlZC50eHQ6CisgICAgICAgICogbG9hZGVy
L25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2
aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFs
LXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLmh0
bWw6IEFkZGVkLgorCiAyMDE3LTA3LTAzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBTd2l0Y2ggYWxsIFdlYktpdCBBUEkgcmVsYXRlZCB0byBmYXZpY29ucyBm
cm9tIFdlYkljb25EYXRhYmFzZSBvdmVyIHRvIG5ldyBXZWJDb3JlOjpJY29uTG9hZGVyIG1lY2hh
bmlzbS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9z
aG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJh
bWUtbWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9y
ZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5LW5h
dmlnYXRlcy1zdWJmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi42M2RlMGNjODdmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2xvYWRlci9u
YXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9tYWlu
LWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZy
YW1lLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gaWZyYW1lTG9h
ZGVkKCkgeworICAgIHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24gPSAibm90aWZ5LWRvbmUuaHRt
bCI7Cit9Cis8L3NjcmlwdD4KKworPGlmcmFtZSBvbmxvYWQ9ImlmcmFtZUxvYWRlZCgpOyIgc3Jj
PSJkby1ub3RoaW5nLmh0bWwiPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbG9h
ZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUt
Y2xpY2stdGFyZ2V0LXNlbGYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbG9hZGVyL25hdmln
YXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUtY2xpY2stdGFy
Z2V0LXNlbGYtZXhwZWN0ZWQudHh0CmluZGV4IDMwNTU1MzM5N2EwLi5jMzBmZThiNzE2NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVu
LWV4dGVybmFsLXVybHMvc3ViZnJhbWUtY2xpY2stdGFyZ2V0LXNlbGYtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRl
cm5hbC11cmxzL3N1YmZyYW1lLWNsaWNrLXRhcmdldC1zZWxmLWV4cGVjdGVkLnR4dApAQCAtMyw3
ICszLDcgQEAKICAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gCiA8TlNVUkxSZXF1
ZXN0IFVSTCByZXNvdXJjZXMvaWZyYW1lLWNsaWNrLW5vdGlmeS1kb25lLXRhcmdldC1zZWxmLmh0
bWwsIG1haW4gZG9jdW1lbnQgVVJMIHN1YmZyYW1lLWNsaWNrLXRhcmdldC1zZWxmLmh0bWwsIGh0
dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIG5vIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJu
YWxseSAtIG5vCiAgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIAotPE5TVVJMUmVx
dWVzdCBVUkwgcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIHN1
YmZyYW1lLWNsaWNrLXRhcmdldC1zZWxmLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBm
cmFtZSAtIG5vIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIG5vCis8TlNVUkxSZXF1ZXN0
IFVSTCByZXNvdXJjZXMvbm90aWZ5LWRvbmUuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgc3ViZnJh
bWUtY2xpY2stdGFyZ2V0LXNlbGYuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1l
IC0gbm8gc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0geWVzCiBUaGlzIHBhZ2UgaGFzIGEg
c3ViZnJhbWUgd2l0aCBhIGxpbmsuCiBUaGVuIGEgbGluayBpcyBjbGlja2VkIGluIHRoYXQgc3Vi
ZnJhbWUgdGhhdCBuYXZpZ2F0ZXMgaW5zaWRlIHRoYXQgc3ViZnJhbWUsIGFuZCB0aGF0IG5hdmln
YXRpb24gc2hvdWxkIGhhdmUgdGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCB1cmxzIiBmbGFnIHNl
dCB0byBmYWxzZSBldmVuIHRob3VnaCBpdCB3YXMgZnJvbSBhIHVzZXIgZ2VzdHVyZS4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVu
LWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWlu
LWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGlj
eS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRp
Y2FsbHktYnktbWFpbi1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmRkYTk1YzE2OTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3Vi
ZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDcgQEAKKyAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gCis8
TlNVUkxSZXF1ZXN0IFVSTCByZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4t
cHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS5odG1sLCBtYWluIGRvY3VtZW50IFVS
TCByZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5
LW5hdmlnYXRlcy1zdWJmcmFtZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUg
LSB5ZXMgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0geWVzCisgLSBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uIAorPE5TVVJMUmVxdWVzdCBVUkwgZG8tbm90aGluZy5odG1sLCBt
YWluIGRvY3VtZW50IFVSTCBtYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFpbi1wcm9ncmFtYXRp
Y2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBm
cmFtZSAtIG5vIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIG5vCisgLSBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uIAorPE5TVVJMUmVxdWVzdCBVUkwgbm90aWZ5LWRvbmUuaHRt
bCwgbWFpbiBkb2N1bWVudCBVUkwgbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3Jh
bWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1h
aW4gZnJhbWUgLSBubyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSB5ZXMKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4
dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9w
ZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LW1h
aW4tZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDhj
ZDgyOTJkMWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlv
bi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJv
Z3JhbWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8c2NyaXB0
PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLmR1bXBQb2xpY3lEZWxlZ2F0ZUNhbGxiYWNrcygpOworICAgIHRl
c3RSdW5uZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1h
aW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS5odG1sIiwgIiIsIHRydWUpOwor
fQorCis8L3NjcmlwdD4KK1RoaXMgcGFnZSBoYXMgZG9lcyBub3QgaGF2ZSB0aGUgInNob3VsZCBv
cGVuIGV4dGVybmFsIFVSTHMiIGZsYWcgc2V0Ljxicj4KK0l0IG5hdmlnYXRlcyB0byBhIDJuZCBw
YWdlIHRoYXQgZG9lcyBoYXZlIHRoZSBmbGFnIHNldC48YnI+CitUaGF0IDJuZCBwYWdlIGNvbnRh
aW5zIGFuIGlmcmFtZSwgYW5kIHRoZSBtYWluIGZyYW1lIHByb2dyYW1hdGljYWxseSBuYXZpZ2F0
ZXMgdGhlIGlmcmFtZSB0byBhIDNyZCBkb2N1bWVudC48YnI+CitUaGUgInNob3VsZCBvcGVuIGV4
dGVybmFsIFVSTHMiIGZsYWcgc2hvdWxkIGJlIHNldCBiZWNhdXNlIHRoZSBwcm9ncmFtYXRpYyBu
YXZpZ2F0aW9uIGluaXRpYXRlZCBmcm9tIHRoZSBtYWluIGZyYW1lIGFuZCB0aGUgZmxhZyBzaG91
bGQgcHJvcGFnYXRlLjxicj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZmIyOWYzNzhmOS4uNGJlMWUyNmMwYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAxNy0wNy0wNSAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgbmF2aWdhdGlvbnMgaW4gc3ViZnJh
bWVzIHRvIGdldCBhIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgb2YgIlNob3VsZEFsbG93
Ii4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNDg1NTg5PiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9z
aG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2Fs
bHktYnktbWFpbi1mcmFtZS5odG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEg
bmV3IGZsYWcgdG8gRnJhbWVMb2FkUmVxdWVzdCB0byB0cmFjayB3aGVuIGl0IGlzIGtub3duIHdp
dGggY2VydGFpbnR5IHRoYXQgYSAKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBvcmlnaW5hdGVz
IGZyb20gdGhlIG1haW4gZnJhbWUuCisgICAgICAgIAorICAgICAgICBMYXRlciwgd2hlbiBjYWxj
dWxhdGluZyB0aGUgZmluYWwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgbWFpbiBmcmFt
ZXMgbmF2aWdhdGluZyBpZnJhbWVzIGdldCB0byBwcm9wYWdhdGUKKyAgICAgICAgdGhlaXIgcGVy
bWlzc2lvbnMgdG8gdGhlIGlmcmFtZS4KKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3MvanMv
Q29tbW9uVk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGV4aWNhbEZyYW1lRnJvbUNvbW1vblZN
KTogSGVscGVyIHRvIGdyYWIgdGhlIGN1cnJlbnQgZnJhbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBj
dXJyZW50IEpTIGNhbGxzdGFjay4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db21tb25WTS5oOgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlbkluTmV3
VGFiKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZSk6CisKKyAgICAgICAg
QWRkIHRoZSBuZXcgZmxhZyB0byBGcmFtZUxvYWRSZXF1ZXN0IChhbmQgZm9yY2UgYWxtb3N0IGV2
ZXJ5Ym9keSB0byBleHBsaWNpdGx5IGluY2x1ZGUgdGhlIGZsYWcpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVl
c3Q6OkZyYW1lTG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRSZXF1ZXN0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0OjpGcmFtZUxvYWRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Q6Om5hdmlnYXRpb25Jbml0aWF0
ZWRCeU1haW5GcmFtZSk6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkpOiBIZWxwZXIgdGhhdCB0YWtl
cyB0aGUgbmV3IGZsYWcgaW50byBhY2NvdW50IHdoZW4gZGVjaWRpbmcKKyAgICAgICAgICB3aGF0
IHRoZSBmaW5hbCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHdpbGwgYmUuCisgICAgICAg
IChXZWJDb3JlOjphcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50
TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVM
b2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2lu
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphcHBseVNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuaDoKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVz
Lmg6CisKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6bmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKToK
KyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWROYXZpZ2F0aW9uOjpTY2hlZHVsZWROYXZpZ2F0aW9uKTogR3JhYiB0aGUg
ImluaXRpYXRpbmcgZnJhbWUiIGF0IHRoZSB0aW1lIHRoZSAKKyAgICAgICAgICBTY2hlZHVsZWRO
YXZpZ2F0aW9uIGlzIGNyZWF0ZWQsIGFzIGl0IGRpY3RhdGVzIHRoZSBwb2xpY3kgd2UgZGVjaWRl
IGxhdGVyLgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdhdGlvbjo6bmF2aWdhdGlv
bkluaXRpYXRlZEJ5TWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hl
ZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UpOgorCisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Blbk5ld1dpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKToKKworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6Y3JlYXRlV2luZG93KToKKwogMjAxNy0wNy0wMyAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3dpdGNoIGFsbCBXZWJLaXQgQVBJIHJl
bGF0ZWQgdG8gZmF2aWNvbnMgZnJvbSBXZWJJY29uRGF0YWJhc2Ugb3ZlciB0byBuZXcgV2ViQ29y
ZTo6SWNvbkxvYWRlciBtZWNoYW5pc20uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Db21tb25WTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25W
TS5jcHAKaW5kZXggYWE3OWVlZWUxODUuLjc2ZDA5MDk2NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ29tbW9uVk0uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKIAorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgpAQCAtNjUsNiArNjYsMjAgQEAgVk0mIGNvbW1vblZNU2xv
dygpCiAgICAgcmV0dXJuICpnX2NvbW1vblZNT3JOdWxsOwogfQogCitGcmFtZSogbGV4aWNhbEZy
YW1lRnJvbUNvbW1vblZNKCkKK3sKKyAgICBpZiAoYXV0byogdG9wQ2FsbEZyYW1lID0gY29tbW9u
Vk0oKS50b3BDYWxsRnJhbWUpIHsKKyAgICAgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IEpT
Qzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odG9wQ2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0ganNEeW5hbWljRG93
bmNhc3Q8SlNET01XaW5kb3cqPihjb21tb25WTSgpLCBnbG9iYWxPYmplY3QpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gd2luZG93LT53cmFwcGVkKCkuZnJhbWUoKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgYWRkSW1wdXJlUHJvcGVy
dHkoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgY29tbW9uVk0oKS5h
ZGRJbXB1cmVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ29tbW9uVk0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nv
bW1vblZNLmgKaW5kZXggMmM2N2Y5OWQ3YjYuLjI4MjFlYjI4ODhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NvbW1vblZNLmgKQEAgLTMzLDYgKzMzLDkgQEAgY2xhc3MgVk07CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRnJhbWU7CitGcmFtZSogbGV4aWNhbEZyYW1lRnJvbUNv
bW1vblZNKCk7CisKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiBKU0M6OlZNKiBnX2NvbW1vblZNT3JO
dWxsOwogCiBXRUJDT1JFX0VYUE9SVCBKU0M6OlZNJiBjb21tb25WTVNsb3coKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcAppbmRleCAwNDk5ZjljNjQ3MS4uYzg3NzcwNmFhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGlj
YXRvciBpbmRpY2F0b3IgeyBQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKICAgICBGcmFtZSYgbWFp
bkZyYW1lID0gbV9pbnNwZWN0ZWRQYWdlQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5G
cmFtZSgpOwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICptYWluRnJh
bWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsg
fSwgQVNDSUlMaXRlcmFsKCJfYmxhbmsiKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0Zvcndh
cmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxv
YWRSZXF1ZXN0IHsgKm1haW5GcmFtZS5kb2N1bWVudCgpLCBtYWluRnJhbWUuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSwgeyB9LCBBU0NJSUxpdGVyYWwoIl9ibGFuayIpLCBMb2NrSGlzdG9y
eTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25J
bml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwogICAg
IFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBt
YWluRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CkBAIC0y
MzksNyArMjM5LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5O
ZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiAKICAgICAvLyBGSVhNRTogV2h5IGRvIHdlIGNvbXB1
dGUgdGhlIGFic29sdXRlIFVSTCB3aXRoIHJlc3BlY3QgdG8gfGZyYW1lfCBpbnN0ZWFkIG9mIHxt
YWluRnJhbWV8PwogICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyBmcmFtZS0+
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSB9OwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdDIgeyAqbWFpbkZyYW1lLmRvY3VtZW50KCksIG1haW5GcmFtZS5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsIEFTQ0lJTGl0ZXJhbCgiX3Nl
bGYiKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5k
UmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5l
clBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93IH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0MiB7ICptYWluRnJh
bWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHJl
c291cmNlUmVxdWVzdCwgQVNDSUlMaXRlcmFsKCJfc2VsZiIpLCBMb2NrSGlzdG9yeTo6Tm8sIExv
Y2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0ZWRC
eU1haW5GcmFtZTo6VW5rbm93biB9OwogICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlv
bihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZjliMjVlZDlkYWUuLmNmMjUx
ZjViNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpuYXZp
Z2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIEZyYW1lJiBmcmFtZSA9
IG1fcGFnZS5tYWluRnJhbWUoKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVl
c3QgeyBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpIH07Ci0gICAgRnJhbWVMb2Fk
UmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLmRvY3VtZW50KCksIGZyYW1lLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNlUmVxdWVzdCwgQVNDSUlMaXRlcmFsKCJf
c2VsZiIpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNl
bmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpObywgTmV3RnJhbWVPcGVu
ZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RB
bGxvdyB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS5k
b2N1bWVudCgpLCBmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJl
cXVlc3QsIEFTQ0lJTGl0ZXJhbCgiX3NlbGYiKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0Zv
cndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTDo6Tm8sIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogICAgIGZyYW1lLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
UmVxdWVzdC5jcHAKaW5kZXggNTJlMzBjMmRkNjYuLmE1NTNmNWI3YjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRnJhbWVMb2FkUmVxdWVzdDo6RnJhbWVMb2FkUmVxdWVzdChE
b2N1bWVudCYgcmVxdWVzdGVyLCBTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGVyU2VjdXJpdHlPcmln
aW4sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3Qg
bG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJl
ciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVuZXJQb2xpY3ksIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgU2hvdWxkUmVw
bGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNj
cmlwdFVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKK0ZyYW1lTG9h
ZFJlcXVlc3Q6OkZyYW1lTG9hZFJlcXVlc3QoRG9jdW1lbnQmIHJlcXVlc3RlciwgU2VjdXJpdHlP
cmlnaW4mIHJlcXVlc3RlclNlY3VyaXR5T3JpZ2luLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5IGxvY2tI
aXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNl
bmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG5ld0Zy
YW1lT3BlbmVyUG9saWN5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSBuYXZpZ2F0
aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlw
dFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIGNvbnN0IEF0b21pY1N0
cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCiAgICAgOiBtX3JlcXVlc3RlciB7IG1ha2VSZWYocmVx
dWVzdGVyKSB9CiAgICAgLCBtX3JlcXVlc3RlclNlY3VyaXR5T3JpZ2luIHsgbWFrZVJlZihyZXF1
ZXN0ZXJTZWN1cml0eU9yaWdpbikgfQogICAgICwgbV9yZXNvdXJjZVJlcXVlc3QgeyByZXNvdXJj
ZVJlcXVlc3QgfQpAQCAtNTAsNiArNTAsNyBAQCBGcmFtZUxvYWRSZXF1ZXN0OjpGcmFtZUxvYWRS
ZXF1ZXN0KERvY3VtZW50JiByZXF1ZXN0ZXIsIFNlY3VyaXR5T3JpZ2luJiByZXF1ZXN0ZQogICAg
ICwgbV9zaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgeyBzaG91bGRSZXBsYWNl
RG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgfQogICAgICwgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5IHsgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB9CiAgICAgLCBtX2Rvd25sb2Fk
QXR0cmlidXRlIHsgZG93bmxvYWRBdHRyaWJ1dGUgfQorICAgICwgbV9uYXZpZ2F0aW9uSW5pdGlh
dGVkQnlNYWluRnJhbWUgeyBuYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgfQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaAppbmRleCA0ODJhNjI5ZTBj
MC4uOWEwNTMwMzFiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3Qu
aApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgRnJhbWVM
b2FkUmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkUmVxdWVz
dChEb2N1bWVudCYsIFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBT
aG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgTmV3RnJhbWVP
cGVuZXJQb2xpY3ksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIFNob3VsZFJlcGxhY2VE
b2N1bWVudElmSmF2YVNjcmlwdFVSTCA9IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IHsgfSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgRnJhbWVMb2FkUmVxdWVzdChEb2N1bWVudCYsIFNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5
LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgTmV3RnJhbWVPcGVuZXJQb2xpY3ksIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSwgU2hvdWxkUmVwbGFjZURv
Y3VtZW50SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMLCBj
b25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0geyB9KTsKICAgICBXRUJDT1JF
X0VYUE9SVCBGcmFtZUxvYWRSZXF1ZXN0KEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3QgU3Vic3RpdHV0ZURhdGEmID0gU3Vi
c3RpdHV0ZURhdGEoKSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+RnJhbWVMb2FkUmVxdWVzdCgp
OwpAQCAtNzksNiArNzksOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRv
d25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZEF0dHJpYnV0ZTsgfQog
CisgICAgTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lIG5hdmlnYXRpb25Jbml0aWF0ZWRC
eU1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZy
YW1lOyB9CisKIHByaXZhdGU6CiAgICAgUmVmPERvY3VtZW50PiBtX3JlcXVlc3RlcjsKICAgICBS
ZWY8U2VjdXJpdHlPcmlnaW4+IG1fcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW47CkBAIC05NSw2ICs5
Nyw3IEBAIHByaXZhdGU6CiAgICAgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJM
IG1fc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMOwogICAgIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsKICAgICBBdG9taWNTdHJp
bmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsKKyAgICBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJh
bWUgbV9uYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgeyBOYXZpZ2F0aW9uSW5pdGlhdGVk
QnlNYWluRnJhbWU6OlVua25vd24gfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDNkNGYzMDNmZDE4Li40OGQ3ZGE4
OGQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25WTS5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3ku
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTM2Myw4ICszNjQsMTEgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZv
aWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHBhc3NlZFRhcmdldCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCwgTG9ja0hpc3RvcnkgbG9ja0hp
c3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2Vu
ZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3Bl
bmVyUG9saWN5PiBvcGVuZXJQb2xpY3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUpCiB7CisgICAgYXV0byogZnJhbWUgPSBsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKTsK
KyAgICBhdXRvIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSA9IGZyYW1lICYmIGZyYW1l
LT5pc01haW5GcmFtZSgpID8gTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXMgOiBO
YXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd247CisKICAgICBOZXdGcmFtZU9w
ZW5lclBvbGljeSBuZXdGcmFtZU9wZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZV9vcihz
aG91bGRTZW5kUmVmZXJyZXIgPT0gTmV2ZXJTZW5kUmVmZXJyZXIgPyBOZXdGcmFtZU9wZW5lclBv
bGljeTo6U3VwcHJlc3MgOiBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cpOwotICAgIHVybFNl
bGVjdGVkKEZyYW1lTG9hZFJlcXVlc3QoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IHVybCB9LCBwYXNzZWRUYXJnZXQsIGxvY2tIaXN0
b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBzaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzLCBuZXdGcmFtZU9wZW5lclBvbGljeSwgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIGRv
d25sb2FkQXR0cmlidXRlKSwgdHJpZ2dlcmluZ0V2ZW50KTsKKyAgICB1cmxTZWxlY3RlZChGcmFt
ZUxvYWRSZXF1ZXN0KCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgeyB1cmwgfSwgcGFzc2VkVGFyZ2V0LCBsb2NrSGlzdG9yeSwgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgc2hvdWxkU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6OlllcywgbmV3RnJhbWVPcGVuZXJQb2xpY3ksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSwgRG9Ob3RSZXBsYWNlRG9jdW1l
bnRJZkphdmFTY3JpcHRVUkwsIGRvd25sb2FkQXR0cmlidXRlKSwgdHJpZ2dlcmluZ0V2ZW50KTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoRnJhbWVMb2FkUmVxdWVzdCYmIGZy
YW1lUmVxdWVzdCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkKQEAgLTkyNCw3ICs5MjgsMTAgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVyZXIsIEYKICAgICAgICAgfQogICAgIH0KIAotICAgIEZyYW1lTG9h
ZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB1cmwgfSwgQVNDSUlMaXRlcmFsKCJfc2Vs
ZiIpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcywgU2hvdWxkU2Vu
ZFJlZmVycmVyOjpNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
OjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcywgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsKKyAgICBhdXRvKiBsZXhpY2FsRnJhbWUgPSBs
ZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKTsKKyAgICBhdXRvIG5hdmlnYXRpb25Jbml0aWF0ZWRC
eU1haW5GcmFtZSA9IGxleGljYWxGcmFtZSAmJiBsZXhpY2FsRnJhbWUtPmlzTWFpbkZyYW1lKCkg
PyBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcyA6IE5hdmlnYXRpb25Jbml0aWF0
ZWRCeU1haW5GcmFtZTo6VW5rbm93bjsKKworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2Fk
UmVxdWVzdCB7ICptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSwgeyB1cmwgfSwgQVNDSUlMaXRlcmFsKCJfc2VsZiIpLCBMb2NrSGlzdG9yeTo6
Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcywgU2hvdWxkU2VuZFJlZmVycmVyOjpNYXliZVNl
bmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3Bl
bmVyUG9saWN5OjpTdXBwcmVzcywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
Tm90QWxsb3csIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSB9OwogICAgIGNoaWxkRnJh
bWUtPmxvYWRlcigpLmxvYWRVUkwoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJlciwg
RnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCBudWxscHRy
LCBudWxscHRyKTsKIH0KIApAQCAtMTIwOCwxNSArMTIxNSwzNSBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZl
bnQsIEZvcgogICAgIH0KIH0KIAotc3RhdGljIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoRnJhbWUmIHNvdXJjZUZyYW1lLCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHByb3BhZ2F0ZWRQb2xpY3kpCitzdGF0aWMgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9B
cHBseShGcmFtZSYgY3VycmVudEZyYW1lLCBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUg
bmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHByb3BhZ2F0ZWRQb2xpY3kpCiB7Ci0gICAgaWYgKCFzb3VyY2VGcmFtZS5pc01haW5GcmFt
ZSgpKQotICAgICAgICByZXR1cm4gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
Tm90QWxsb3c7CiAgICAgaWYgKFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKQogICAgICAgICByZXR1cm4gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
QWxsb3c7CisKKyAgICBpZiAobmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lID09IE5hdmln
YXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzKQorICAgICAgICByZXR1cm4gcHJvcGFnYXRl
ZFBvbGljeTsKKworICAgIGlmICghY3VycmVudEZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAgICAg
IHJldHVybiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdzsKKwog
ICAgIHJldHVybiBwcm9wYWdhdGVkUG9saWN5OwogfQogCitzdGF0aWMgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShGcmFtZSYg
Y3VycmVudEZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0KQor
eworICAgIHJldHVybiBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShjdXJyZW50
RnJhbWUsIGZyYW1lTG9hZFJlcXVlc3QubmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKCks
IGZyYW1lTG9hZFJlcXVlc3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKK30KKwor
c3RhdGljIHZvaWQgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVu
dExvYWRlcihGcmFtZSYgZnJhbWUsIERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciwgTmF2
aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBwcm9wYWdhdGVkUG9saWN5KQoreworICAg
IGRvY3VtZW50TG9hZGVyLnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoZnJhbWUsIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1h
aW5GcmFtZSwgcHJvcGFnYXRlZFBvbGljeSkpOworfQorCitzdGF0aWMgdm9pZCBhcHBseVNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKEZyYW1lJiBmcmFtZSwg
RG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBm
cmFtZUxvYWRSZXF1ZXN0KQoreworICAgIGRvY3VtZW50TG9hZGVyLnNldFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoZnJhbWUs
IGZyYW1lTG9hZFJlcXVlc3QpKTsKK30KKwogYm9vbCBGcmFtZUxvYWRlcjo6aXNOYXZpZ2F0aW9u
QWxsb3dlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdE
aXNwYXRjaGVkID09IFBhZ2VEaXNtaXNzYWxUeXBlOjpOb25lICYmIE5hdmlnYXRpb25EaXNhYmxl
cjo6aXNOYXZpZ2F0aW9uQWxsb3dlZChtX2ZyYW1lKTsKQEAgLTEyNjUsNyArMTI5Miw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgcmVmCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyBmcmFt
ZUxvYWRSZXF1ZXN0LnJlcXVlc3RlcigpLCByZXF1ZXN0LCBuZXdMb2FkVHlwZSwgaXNGb3JtU3Vi
bWlzc2lvbiwgZXZlbnQsIGZyYW1lTG9hZFJlcXVlc3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSgpLCBmcmFtZUxvYWRSZXF1ZXN0LmRvd25sb2FkQXR0cmlidXRlKCkgfTsKIAogICAgIGlm
ICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYWN0aW9u
ID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0LnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSkpOworICAgICAgICBhY3Rpb24gPSBhY3Rpb24uY29w
eVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3lUb0FwcGx5KG1fZnJhbWUsIGZyYW1lTG9hZFJlcXVlc3QpKTsKICAgICAgICAgcG9saWN5
Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KGFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRl
LCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBv
bGljeV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3Rh
dGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rp
b24sIGJvb2wgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVy
TmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNo
b3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7
CiAgICAgICAgIH0pOwpAQCAtMTI5Myw3ICsxMzIwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBy
ZWYKIAogICAgIC8vIG11c3QgZ3JhYiB0aGlzIG5vdywgc2luY2UgdGhpcyBsb2FkIG1heSBzdG9w
IHRoZSBwcmV2aW91cyBsb2FkIGFuZCBjbGVhciB0aGlzIGZsYWcKICAgICBib29sIGlzUmVkaXJl
Y3QgPSBtX3F1aWNrUmVkaXJlY3RDb21pbmc7Ci0gICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9u
KHJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIG5ld0xvYWRUeXBlLCBmb3JtU3RhdGUsIGFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9u
KHJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIG5ld0xvYWRUeXBlLCBmb3JtU3RhdGUsIGFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgZnJhbWVMb2FkUmVxdWVzdC5uYXZpZ2F0aW9uSW5p
dGlhdGVkQnlNYWluRnJhbWUoKSk7CiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKICAgICAgICAgbV9x
dWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAgICAgICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIpCkBAIC0xMzQ3LDE1ICsxMzc0LDE1IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWQoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIHJlcXVlc3Quc2V0U3Vic3Rp
dHV0ZURhdGEoZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCkpKTsKIAogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGll
bnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVz
dC5zdWJzdGl0dXRlRGF0YSgpKTsKLSAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KCkpOworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3
RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCByZXF1ZXN0KTsKIAogICAgIGxvYWQobG9h
ZGVyLnB0cigpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYgYWN0aW9uLCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSB0eXBlLCBG
b3JtU3RhdGUqIGZvcm1TdGF0ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgdHlw
ZSwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSBu
YXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUpCiB7CiAgICAgUmVmPERvY3VtZW50TG9hZGVy
PiBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0
U3Vic3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOwotICAgIGFwcGx5U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobG9hZGVyLCBhY3Rpb24uc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKG1fZnJhbWUsIGxvYWRlciwgbmF2aWdhdGlv
bkluaXRpYXRlZEJ5TWFpbkZyYW1lLCBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSgpKTsKIAogICAgIGlmIChsb2NrSGlzdG9yeSA9PSBMb2NrSGlzdG9yeTo6WWVzICYmIG1fZG9j
dW1lbnRMb2FkZXIpCiAgICAgICAgIGxvYWRlci0+c2V0Q2xpZW50UmVkaXJlY3RTb3VyY2VGb3JI
aXN0b3J5KG1fZG9jdW1lbnRMb2FkZXItPmRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeSgpID8g
bV9kb2N1bWVudExvYWRlci0+dXJsRm9ySGlzdG9yeSgpLnN0cmluZygpIDogbV9kb2N1bWVudExv
YWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpOwpAQCAtMTU1Nyw3ICsxNTg0
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoY29uc3Qg
U3RyaW5nJiBlbmNvZGluZykKICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJldHVybkNhY2hl
RGF0YUVsc2VMb2FkKTsKIAogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGll
bnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9y
VVJMKHJlcXVlc3QudXJsKCkpKTsKLSAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOworICAgIGFwcGx5U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCBOYXZp
Z2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24sIG1fZG9jdW1lbnRMb2FkZXItPnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKIAogICAgIHNldFBvbGlj
eURvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSk7CiAKQEAgLTE1ODUsNyArMTYxMiw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OnJlbG9hZChPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiBvcHRpb25zKQog
ICAgIC8vIENyZWF0ZSBhIG5ldyBkb2N1bWVudCBsb2FkZXIgZm9yIHRoZSByZWxvYWQsIHRoaXMg
d2lsbCBiZWNvbWUgbV9kb2N1bWVudExvYWRlciBldmVudHVhbGx5LAogICAgIC8vIGJ1dCBmaXJz
dCBpdCBoYXMgdG8gYmUgdGhlICJwb2xpY3kiIGRvY3VtZW50IGxvYWRlciwgYW5kIHRoZW4gdGhl
ICJwcm92aXNpb25hbCIgZG9jdW1lbnQgbG9hZGVyLgogICAgIFJlZjxEb2N1bWVudExvYWRlcj4g
bG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVlc3QsIGRl
ZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChpbml0aWFsUmVxdWVzdC51cmwoKSkpOwotICAgIGFw
cGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobG9hZGVy
LCBtX2RvY3VtZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdh
dGUoKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVu
dExvYWRlcihtX2ZyYW1lLCBsb2FkZXIsIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6
VW5rbm93biwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRv
UHJvcGFnYXRlKCkpOwogCiAgICAgbG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFi
bGVkKCFvcHRpb25zLmNvbnRhaW5zKFJlbG9hZE9wdGlvbjo6RGlzYWJsZUNvbnRlbnRCbG9ja2Vy
cykpOwogICAgIApAQCAtMjcyNSw3ICsyNzUyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBv
c3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUK
ICAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBm
b3IgYSB0YXJnZXQgZnJhbWUgaXMgZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3Vi
bWlzc2lvbi4KICAgICAgICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IDAg
OiBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSkpIHsKLSAgICAgICAgICAgIHRhcmdl
dEZyYW1lLT5sb2FkZXIoKS5sb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNl
UmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRl
KSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICAgICAgICAgIHRhcmdldEZyYW1l
LT5sb2FkZXIoKS5sb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCByZXF1ZXN0Lm5hdmlnYXRpb25Jbml0aWF0ZWRCeU1h
aW5GcmFtZSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNzM3LDcg
KzI3NjQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogCiAgICAgLy8gbXVzdCBncmFiIHRo
aXMgbm93LCBzaW5jZSB0aGlzIGxvYWQgbWF5IHN0b3AgdGhlIHByZXZpb3VzIGxvYWQgYW5kIGNs
ZWFyIHRoaXMgZmxhZwogICAgIGJvb2wgaXNSZWRpcmVjdCA9IG1fcXVpY2tSZWRpcmVjdENvbWlu
ZzsKLSAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwg
YWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29y
a2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1v
dmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCByZXF1ZXN0Lm5hdmln
YXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSgpKTsKICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAg
ICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcikKQEAgLTMxNzcsNyArMzIwNCw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzCiAgICAgfQogCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBuZXdBY3Rpb24geyAqZnJh
bWUtPmRvY3VtZW50KCksIHJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgYWN0aW9uLnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSB9OwotICAgIG1haW5GcmFtZS0+bG9hZGVyKCku
bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QsIG5ld0FjdGlvbiwgTG9ja0hpc3Rvcnk6
Ok5vLCBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZCwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwpOworICAgIG1haW5GcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9u
QWN0aW9uKHJlcXVlc3QsIG5ld0FjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5vLCBGcmFtZUxvYWRUeXBl
OjpTdGFuZGFyZCwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5hdmln
YXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93bik7CiB9CiAKIHZvaWQgRnJhbWVMb2Fk
ZXI6OnJlcXVlc3RGcm9tRGVsZWdhdGUoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1bnNpZ25l
ZCBsb25nJiBpZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTMzODAsNyArMzQw
Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9y
eUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgaWYgKCFpdGVtLnJlZmVycmVyKCku
aXNOdWxsKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGl0ZW0ucmVmZXJyZXIo
KSk7CiAKLSAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1l
LCBpdGVtLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkobV9mcmFtZSwgTmF2aWdhdGlvbkluaXRpYXRlZEJ5
TWFpbkZyYW1lOjpVbmtub3duLCBpdGVtLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7
CiAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uID0gZmFsc2U7CiAgICAgRXZlbnQqIGV2ZW50ID0g
bnVsbHB0cjsKIApAQCAtMzQ1MCw3ICszNDc3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERp
ZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EK
ICAgICAgICAgYWN0aW9uID0geyAqbV9mcmFtZS5kb2N1bWVudCgpLCByZXF1ZXN0Rm9yT3JpZ2lu
YWxVUkwsIGxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCwgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSB9OwogICAgIH0KIAotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihy
ZXF1ZXN0LCBhY3Rpb24sIExvY2tIaXN0b3J5OjpObywgbG9hZFR5cGUsIDAsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVx
dWVzdCwgYWN0aW9uLCBMb2NrSGlzdG9yeTo6Tm8sIGxvYWRUeXBlLCAwLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6OlllcywgTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtu
b3duKTsKIH0KIAogLy8gTG9hZHMgY29udGVudCBpbnRvIHRoaXMgZnJhbWUsIGFzIHNwZWNpZmll
ZCBieSBoaXN0b3J5IGl0ZW0KQEAgLTM2NTEsMTEgKzM2NzgsNiBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpjbGVhclRlc3RpbmdPdmVycmlkZXMoKQogICAgIG1faXNTdHJpY3RSYXdSZXNvdXJjZVZhbGlk
YXRpb25Qb2xpY3lEaXNhYmxlZEZvclRlc3RpbmcgPSBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6YXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRl
cihEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgcHJvcGFnYXRlZFBvbGljeSkKLXsKLSAgICBkb2N1bWVudExvYWRlci5zZXRTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5
KG1fZnJhbWUsIHByb3BhZ2F0ZWRQb2xpY3kpKTsKLX0KLQogYm9vbCBGcmFtZUxvYWRlcjo6aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJhbWUoKS5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKQEAgLTM3MDAsNyArMzcyMiw3IEBAIFJlZlB0cjxGcmFt
ZT4gY3JlYXRlV2luZG93KEZyYW1lJiBvcGVuZXJGcmFtZSwgRnJhbWUmIGxvb2t1cEZyYW1lLCBG
cmFtZUxvYWRSZXF1CiAgICAgaWYgKCFvbGRQYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG9wZW5lckZyYW1l
LCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkob3BlbmVyRnJhbWUsIHJlcXVlc3QpOwogICAg
IE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsgcmVxdWVzdC5yZXF1ZXN0ZXIoKSwgcmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKSwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCBzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IH07CiAgICAgUGFnZSogcGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLmNyZWF0
ZVdpbmRvdyhvcGVuZXJGcmFtZSwgcmVxdWVzdCwgZmVhdHVyZXMsIGFjdGlvbik7CiAgICAgaWYg
KCFwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCA2Y2FjZGRhZDk5Yi4u
MzQ5NjUyYmE5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0zNTgsNyAr
MzU4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1l
bnRMb2FkZXIqLCBGcmFtZUxvYWRUeXBlLCBGb3JtU3RhdGUqLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwpOyAvLyBDYWxscyBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kKICAg
ICB2b2lkIGxvYWQoRG9jdW1lbnRMb2FkZXIqKTsgLy8gQ2FsbHMgbG9hZFdpdGhEb2N1bWVudExv
YWRlcgogCi0gICAgdm9pZCBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIExvY2tIaXN0b3J5LCBGcmFtZUxvYWRU
eXBlLCBGb3JtU3RhdGUqLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOyAvLyBDYWxscyBs
b2FkV2l0aERvY3VtZW50TG9hZGVyCisgICAgdm9pZCBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIExvY2tIaXN0
b3J5LCBGcmFtZUxvYWRUeXBlLCBGb3JtU3RhdGUqLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwsIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSk7IC8vIENhbGxzIGxvYWRXaXRoRG9j
dW1lbnRMb2FkZXIKIAogICAgIHZvaWQgbG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3Qm
JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlwZSwgRXZlbnQqLCBGb3JtU3Rh
dGUqKTsKICAgICB2b2lkIGxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlLCBFdmVudCosIEZvcm1TdGF0ZSopOwpAQCAtMzg2LDgg
KzM4Niw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxh
YmxlSW5BbGxXb3JsZHMoKTsKIAotICAgIHZvaWQgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciYsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgcHJvcGFnYXRlZFBvbGljeSk7Ci0KICAgICBib29sIGlzTmF2aWdhdGlv
bkFsbG93ZWQoKSBjb25zdDsKIAogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlclR5cGVzLmgKaW5kZXggODRlYTI1YjI4NGIuLjc5ZDQ2ZDU5OTZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKQEAgLTgzLDYgKzgzLDEx
IEBAIGVudW0gY2xhc3MgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7CiAgICAgU2hvdWxk
QWxsb3csCiB9OwogCitlbnVtIGNsYXNzIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSB7
CisgICAgWWVzLAorICAgIFVua25vd24sCit9OworCiBlbnVtIENsZWFyUHJvdmlzaW9uYWxJdGVt
UG9saWN5IHsKICAgICBTaG91bGRDbGVhclByb3Zpc2lvbmFsSXRlbSwKICAgICBTaG91bGROb3RD
bGVhclByb3Zpc2lvbmFsSXRlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmgKaW5kZXggOTlkYjQ0YjNjZjguLmI0NTdkMTlhMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIFJlZlB0
cjxVc2VyR2VzdHVyZVRva2VuPiB1c2VyR2VzdHVyZVRva2VuKCkgY29uc3QgeyByZXR1cm4gbV91
c2VyR2VzdHVyZVRva2VuOyB9CiAKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k7IH0KKyAgICBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUg
bmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0
aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU7IH0KIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZG93
bmxvYWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkQXR0cmlidXRlOyB9CiAK
QEAgLTc2LDYgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJj
ZVJlcXVlc3Q7CiAgICAgTmF2aWdhdGlvblR5cGUgbV90eXBlOwogICAgIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OworICAgIE5hdmln
YXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSBtX25hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZTsKICAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9r
ZW4+IG1fdXNlckdlc3R1cmVUb2tlbiB7IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNl
ckdlc3R1cmUoKSB9OwogICAgIEF0b21pY1N0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IGI0MWE1
NGZmYTY5Li4zYmNiMWE1ZWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uU2NoZWR1bGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25T
Y2hlZHVsZXIuaCIKIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2luY2x1
ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgpAQCAtNzksNiArODAsMTAgQEAgcHVibGlj
OgogICAgICAgICAsIG1fdXNlckdlc3R1cmVUb0ZvcndhcmQoVXNlckdlc3R1cmVJbmRpY2F0b3I6
OmN1cnJlbnRVc2VyR2VzdHVyZSgpKQogICAgICAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeShleHRlcm5hbFVSTFBvbGljeSkKICAgICB7CisgICAgICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGxleGljYWxGcmFtZUZyb21Db21tb25WTSgpKSB7CisgICAgICAgICAgICBpZiAoZnJhbWUt
PmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uSW5pdGlhdGVkQnlN
YWluRnJhbWUgPSBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllczsKKyAgICAgICAg
fQogICAgIH0KICAgICB2aXJ0dWFsIH5TY2hlZHVsZWROYXZpZ2F0aW9uKCkgeyB9CiAKQEAgLTk4
LDYgKzEwMyw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyVXNlckdlc3R1
cmUoKSB7IG1fdXNlckdlc3R1cmVUb0ZvcndhcmQgPSBudWxscHRyOyB9CiAgICAgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OyB9CisgICAgTmF2aWdhdGlvbkluaXRp
YXRlZEJ5TWFpbkZyYW1lIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOyB9OwogCiBwcml2YXRlOgog
ICAgIGRvdWJsZSBtX2RlbGF5OwpAQCAtMTA3LDYgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzTG9jYXRpb25DaGFuZ2U7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNl
ckdlc3R1cmVUb0ZvcndhcmQ7CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBtX3No
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdyB9OworICAgIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSBt
X25hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSB7IE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1h
aW5GcmFtZTo6VW5rbm93biB9OwogfTsKIAogY2xhc3MgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbiA6
IHB1YmxpYyBTY2hlZHVsZWROYXZpZ2F0aW9uIHsKQEAgLTEyNSw3ICsxMzIsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IgeyB1c2Vy
R2VzdHVyZVRvRm9yd2FyZCgpIH07CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNl
UmVxdWVzdCB7IG1fdXJsLCBtX3JlZmVycmVyLCBVc2VQcm90b2NvbENhY2hlUG9saWN5IH07Ci0g
ICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IG1faW5pdGlhdGluZ0Rv
Y3VtZW50LmdldCgpLCAqbV9zZWN1cml0eU9yaWdpbiwgcmVzb3VyY2VSZXF1ZXN0LCAiX3NlbGYi
LCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIE1heWJlU2VuZFJlZmVycmVy
LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6
OkFsbG93LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkgfTsKKyAgICAgICAgRnJhbWVMb2FkUmVx
dWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9pbml0aWF0aW5nRG9jdW1lbnQuZ2V0KCksICptX3Nl
Y3VyaXR5T3JpZ2luLCByZXNvdXJjZVJlcXVlc3QsICJfc2VsZiIsIGxvY2tIaXN0b3J5KCksIGxv
Y2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIHNob3VsZE9wZW5F
eHRlcm5hbFVSTHMoKSwgbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgfTsKIAogICAg
ICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVl
c3QpKTsKICAgICB9CkBAIC0xODYsNyArMTkzLDcgQEAgcHVibGljOgogCiAgICAgICAgIGJvb2wg
cmVmcmVzaCA9IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUuZG9jdW1lbnQo
KS0+dXJsKCksIHVybCgpKTsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVz
dCB7IHVybCgpLCByZWZlcnJlcigpLCByZWZyZXNoID8gUmVsb2FkSWdub3JpbmdDYWNoZURhdGEg
OiBVc2VQcm90b2NvbENhY2hlUG9saWN5IH07Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwg
cmVzb3VyY2VSZXF1ZXN0LCAiX3NlbGYiLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRM
aXN0KCksIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Ok5v
LCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSB9
OworICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyBpbml0aWF0aW5n
RG9jdW1lbnQoKSwgKnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNlUmVxdWVzdCwgIl9zZWxmIiwg
bG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBNYXliZVNlbmRSZWZlcnJlciwg
QWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpObywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFs
bG93LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCksIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5G
cmFtZSgpIH07CiAKICAgICAgICAgZnJhbWUubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oV1RGTW92
ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CiAgICAgfQpAQCAtMjAyLDcgKzIwOSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvciB7IHVzZXJHZXN0
dXJlVG9Gb3J3YXJkKCkgfTsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1
ZXN0IHsgdXJsKCksIHJlZmVycmVyKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kgfTsKLSAgICAg
ICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgaW5pdGlhdGluZ0RvY3VtZW50
KCksICpzZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsICJfc2VsZiIsIGxvY2tIaXN0
b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8sIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgc2hv
dWxkT3BlbkV4dGVybmFsVVJMcygpIH07CisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVM
b2FkUmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgcmVz
b3VyY2VSZXF1ZXN0LCAiX3NlbGYiLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0
KCksIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Ok5vLCBO
ZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSwgbmF2
aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgfTsKKwogICAgICAgICBmcmFtZS5sb2FkZXIo
KS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpKTsKICAgICB9CiB9OwpA
QCAtMjE5LDcgKzIyNyw4IEBAIHB1YmxpYzoKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvciB7IHVzZXJHZXN0dXJlVG9Gb3J3YXJkKCkgfTsKIAogICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgdXJsKCksIHJlZmVycmVyKCksIFJlbG9h
ZElnbm9yaW5nQ2FjaGVEYXRhIH07Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2Fk
UmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgcmVzb3Vy
Y2VSZXF1ZXN0LCAiX3NlbGYiLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCks
IE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3
RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkgfTsKKyAg
ICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgaW5pdGlhdGluZ0RvY3Vt
ZW50KCksICpzZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsICJfc2VsZiIsIGxvY2tI
aXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cs
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSwgbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1l
KCkgfTsKKwogICAgICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZy
YW1lTG9hZFJlcXVlc3QpKTsKICAgICB9CiB9OwpAQCAtMjcxLDcgKzI4MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgYXV0byYgcmVxdWVzdGluZ0RvY3VtZW50ID0gbV9zdWJtaXNzaW9uLT5zdGF0ZSgp
LnNvdXJjZURvY3VtZW50KCk7CiAgICAgICAgIGlmICghcmVxdWVzdGluZ0RvY3VtZW50LmNhbk5h
dmlnYXRlKCZmcmFtZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEZyYW1lTG9hZFJl
cXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IHJlcXVlc3RpbmdEb2N1bWVudCwgcmVxdWVzdGluZ0Rv
Y3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgeyB9LCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFj
a0ZvcndhcmRMaXN0KCksIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzKCkgfTsKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsg
cmVxdWVzdGluZ0RvY3VtZW50LCByZXF1ZXN0aW5nRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwg
eyB9LCB7IH0sIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5k
UmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5l
clBvbGljeTo6QWxsb3csIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSwgbmF2aWdhdGlvbkluaXRp
YXRlZEJ5TWFpbkZyYW1lKCkgfTsKICAgICAgICAgbV9zdWJtaXNzaW9uLT5wb3B1bGF0ZUZyYW1l
TG9hZFJlcXVlc3QoZnJhbWVMb2FkUmVxdWVzdCk7CiAgICAgICAgIGZyYW1lLmxvYWRlcigpLmxv
YWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgbV9zdWJtaXNzaW9uLT5l
dmVudCgpLCAmbV9zdWJtaXNzaW9uLT5zdGF0ZSgpKTsKICAgICB9CkBAIC0zMjEsNyArMzMwLDcg
QEAgcHVibGljOgogICAgICAgICBTdWJzdGl0dXRlRGF0YSByZXBsYWNlbWVudERhdGEgeyBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX29yaWdpbkRvY3VtZW50LnVybCgpLCByZXBsYWNlbWVudFJl
c3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4g
fTsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgbV9vcmlnaW5E
b2N1bWVudC51cmwoKSwgZW1wdHlTdHJpbmcoKSwgUmVsb2FkSWdub3JpbmdDYWNoZURhdGEgfTsK
LSAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9vcmlnaW5Eb2N1
bWVudCwgbV9vcmlnaW5Eb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3Qs
IHsgfSwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBNYXliZVNlbmRSZWZl
cnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9s
aWN5OjpBbGxvdywgc2hvdWxkT3BlbkV4dGVybmFsVVJMcygpIH07CisgICAgICAgIEZyYW1lTG9h
ZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IG1fb3JpZ2luRG9jdW1lbnQsIG1fb3JpZ2luRG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCB7IH0sIGxvY2tIaXN0b3J5
KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHMoKSwgbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgfTsK
ICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRTdWJzdGl0dXRlRGF0YShyZXBsYWNlbWVudERh
dGEpOwogICAgICAgICBmcmFtZS5sb2FkZXIoKS5sb2FkKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVz
dCkpOwogICAgIH0KQEAgLTQyMCw3ICs0MjksMTAgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVy
OjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQsIFMK
ICAgICAvLyBmcmFnbWVudCBwYXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIHRoZSBsb2Nh
dGlvbiBjaGFuZ2UuCiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiBlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHVy
bCkpIHsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IG1fZnJhbWUu
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSwgcmVmZXJyZXIsIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kgfTsKLSAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgaW5p
dGlhdGluZ0RvY3VtZW50LCBzZWN1cml0eU9yaWdpbiwgcmVzb3VyY2VSZXF1ZXN0LCBBU0NJSUxp
dGVyYWwoIl9zZWxmIiksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBNYXliZVNl
bmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpObywgTmV3RnJhbWVPcGVu
ZXJQb2xpY3k6OkFsbG93LCBpbml0aWF0aW5nRG9jdW1lbnQuc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeVRvUHJvcGFnYXRlKCkgfTsKKyAgICAgICAgYXV0byogZnJhbWUgPSBsZXhpY2FsRnJh
bWVGcm9tQ29tbW9uVk0oKTsKKyAgICAgICAgYXV0byBuYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWlu
RnJhbWUgPSBmcmFtZSAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSA/IE5hdmlnYXRpb25Jbml0aWF0
ZWRCeU1haW5GcmFtZTo6WWVzIDogTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtu
b3duOworICAgICAgICAKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0
IHsgaW5pdGlhdGluZ0RvY3VtZW50LCBzZWN1cml0eU9yaWdpbiwgcmVzb3VyY2VSZXF1ZXN0LCBB
U0NJSUxpdGVyYWwoIl9zZWxmIiksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBN
YXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpObywgTmV3RnJh
bWVPcGVuZXJQb2xpY3k6OkFsbG93LCBpbml0aWF0aW5nRG9jdW1lbnQuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCksIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZSB9OwogICAgICAgICBsb2FkZXIuY2hhbmdlTG9jYXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1
ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggODE0MWI1MTkwMDMuLmFjODg3NTNlNGM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0x
ODksNyArMTg5LDcgQEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBVUkwmIHVybFRv
TG9hZCwgRnJhbWUmIGZyYW1lLCBTaG91bGRPcGVuRXh0ZXJuYWwKICAgICBpZiAoIW9sZFBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVz
dCB7ICpmcmFtZS5kb2N1bWVudCgpLCBmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LCBSZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVy
cmVyKCkpLCB7IH0sIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1h
eWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJh
bWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IH07
CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLmRvY3VtZW50
KCksIGZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCh1
cmxUb0xvYWQsIGZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSksIHsgfSwgTG9ja0hp
c3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3Vw
cHJlc3MsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE5hdmlnYXRpb25Jbml0aWF0ZWRC
eU1haW5GcmFtZTo6VW5rbm93biB9OwogCiAgICAgUGFnZSogbmV3UGFnZSA9IG9sZFBhZ2UtPmNo
cm9tZSgpLmNyZWF0ZVdpbmRvdyhmcmFtZSwgZnJhbWVMb2FkUmVxdWVzdCwgeyB9LCB7ICpmcmFt
ZS5kb2N1bWVudCgpLCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpIH0pOwogICAg
IGlmICghbmV3UGFnZSkKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJv
bGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBj
bwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3Blbkxpbms6CiAgICAgICAgIGlmIChGcmFt
ZSogdGFyZ2V0RnJhbWUgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnRhcmdldEZyYW1lKCkp
IHsKICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyBtX2NvbnRl
eHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVyKCkub3V0
Z29pbmdSZWZlcnJlcigpIH07Ci0gICAgICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9h
ZFJlcXVlc3QgeyAqZnJhbWUtPmRvY3VtZW50KCksIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsIHsgfSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFj
a0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MsIHRhcmdldEZyYW1l
LT5pc01haW5GcmFtZSgpID8gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxs
b3cgOiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OworICAg
ICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLT5kb2N1
bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1
ZXN0LCB7IH0sIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJl
U2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVP
cGVuZXJQb2xpY3k6OlN1cHByZXNzLCB0YXJnZXRGcmFtZS0+aXNNYWluRnJhbWUoKSA/IFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93IDogU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxvYWRGcmFt
ZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgbnVsbHB0ciwgbnVsbHB0cik7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2NvbnRleHQuaGl0VGVz
dFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCAqZnJhbWUsIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZEFsbG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBm
YzcwOGY3YzE3My4uODAzYWY2ZmZlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAg
LTIxOTcsMTAgKzIxOTcsMTEgQEAgUmVmUHRyPEZyYW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRv
dyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW4KIAogICAgIC8vIEZv
ciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZmlyc3QgZnJhbWUgdG8gZGV0ZXJt
aW5lIHRoZSBvdXRnb2luZ1JlZmVycmVyLiBXZSByZXBsaWNhdGUgdGhhdCBiZWhhdmlvciBoZXJl
LgogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVy
SGVhZGVyKGZpcnN0RnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgY29tcGxldGVk
VVJMLCBmaXJzdEZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgYXV0byBp
bml0aWF0ZWRCeU1haW5GcmFtZSA9IGFjdGl2ZUZyYW1lLT5pc01haW5GcmFtZSgpID8gTmF2aWdh
dGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXMgOiBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWlu
RnJhbWU6OlVua25vd247CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsg
Y29tcGxldGVkVVJMLCByZWZlcnJlciB9OwogICAgIEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2lu
SWZOZWVkZWQocmVzb3VyY2VSZXF1ZXN0LCBmaXJzdEZyYW1lLmxvYWRlcigpLm91dGdvaW5nT3Jp
Z2luKCkpOwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICphY3RpdmVE
b2N1bWVudCwgYWN0aXZlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNlUmVxdWVz
dCwgZnJhbWVOYW1lLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBN
YXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0Zy
YW1lT3BlbmVyUG9saWN5OjpBbGxvdywgYWN0aXZlRG9jdW1lbnQtPnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxv
YWRSZXF1ZXN0IHsgKmFjdGl2ZURvY3VtZW50LCBhY3RpdmVEb2N1bWVudC0+c2VjdXJpdHlPcmln
aW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCBmcmFtZU5hbWUsIExvY2tIaXN0b3J5OjpObywgTG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBhY3RpdmVEb2N1bWVu
dC0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCksIGluaXRpYXRlZEJ5
TWFpbkZyYW1lIH07CiAKICAgICAvLyBXZSBwYXNzIHRoZSBvcGVuZXIgZnJhbWUgZm9yIHRoZSBs
b29rdXBGcmFtZSBpbiBjYXNlIHRoZSBhY3RpdmUgZnJhbWUgaXMgZGlmZmVyZW50IGZyb20KICAg
ICAvLyB0aGUgb3BlbmVyIGZyYW1lLCBhbmQgdGhlIG5hbWUgcmVmZXJlbmNlcyBhIGZyYW1lIHJl
bGF0aXZlIHRvIHRoZSBvcGVuZXIgZnJhbWUuCkBAIC0yMjIxLDcgKzIyMjIsNyBAQCBSZWZQdHI8
RnJhbWU+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBBdG9taWNTdHJpbgogCiAgICAgaWYgKGNyZWF0ZWQpIHsKICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIFVzZVByb3Rv
Y29sQ2FjaGVQb2xpY3kgfTsKLSAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1
ZXN0IHsgKmFjdGl2ZVdpbmRvdy5kb2N1bWVudCgpLCBhY3RpdmVXaW5kb3cuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCBBU0NJSUxpdGVyYWwoIl9zZWxmIiks
IExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVy
cmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xp
Y3k6OkFsbG93LCBhY3RpdmVEb2N1bWVudC0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRv
UHJvcGFnYXRlKCkgfTsKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0
IHsgKmFjdGl2ZVdpbmRvdy5kb2N1bWVudCgpLCBhY3RpdmVXaW5kb3cuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCBBU0NJSUxpdGVyYWwoIl9zZWxmIiksIExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVy
LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6
OkFsbG93LCBhY3RpdmVEb2N1bWVudC0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJv
cGFnYXRlKCksIGluaXRpYXRlZEJ5TWFpbkZyYW1lIH07CiAgICAgICAgIG5ld0ZyYW1lLT5sb2Fk
ZXIoKS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpKTsKICAgICB9IGVs
c2UgaWYgKCF1cmxTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgIExvY2tIaXN0b3J5IGxvY2tI
aXN0b3J5ID0gU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgPyBMb2Nr
SGlzdG9yeTo6Tm8gOiBMb2NrSGlzdG9yeTo6WWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IDA1OTAz
ZDhlMjk0Li41ZDgyZGQ1NzM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE3LTA3LTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBuYXZpZ2F0aW9ucyBpbiBzdWJmcmFtZXMgdG8gZ2V0IGEgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBvZiAiU2hvdWxkQWxsb3ciLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjI0
ODU1ODk+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MTc4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQg
dG8gdGhlIG5ldyBjb25zdHJ1Y3RvciBmb3IgRnJhbWVMb2FkUmVxdWVzdC4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3
UGxhY2Vob2xkZXIgc2ltdWxhdGVDbGlja09uTGlua1RvVVJMOl0pOgorCiAyMDE3LTA3LTAxICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSB2
aWV3cG9ydC1maXQgdmFsdWUgdG8gVUlLaXQgdmlhIHZpZXdwb3J0IGFyZ3VtZW50cyBkaWN0aW9u
YXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFj
ZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9s
ZGVyLm1tCmluZGV4IGRhNDE4ODRmNzE1Li4wNzQ1YWI3NWY1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KQEAgLTQ4Nyw3ICs0
ODcsNyBAQCAtICh2b2lkKXNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDooTlNVUkwgKilVUkwKIAog
ICAgIC8vIENhbGwgdG8gdGhlIGZyYW1lIGxvYWRlciBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgb3Vy
IHNlY3VyaXR5IGNoZWNrcyBhcmUgbWFkZS4KICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKFtfZGF0
YVNvdXJjZSB3ZWJGcmFtZV0pOwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVz
dCB7ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCksIHsgVVJMIH0sIHsgfSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpO
bywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBO
ZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93IH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0
IHsgKmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSwgeyBVUkwgfSwgeyB9LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5v
LCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5l
d0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6
U2hvdWxkTm90QWxsb3csICBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24g
fTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZyYW1lTG9h
ZFJlcXVlc3QpLCBldmVudC5nZXQoKSwgbnVsbHB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCAyZTc1YTdjYjMwOC4uOTAxYjcwODRlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxNy0wNy0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWxsb3cgbmF2aWdhdGlvbnMgaW4gc3ViZnJhbWVzIHRvIGdldCBhIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgb2YgIlNob3VsZEFsbG93Ii4KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzIyNDg1NTg5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NDE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkb3B0IHRvIHRoZSBuZXcgY29uc3RydWN0b3IgZm9yIEZyYW1lTG9hZFJlcXVlc3QuCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAgICgtW1dlYlBERlZpZXcgUERG
Vmlld1dpbGxDbGlja09uTGluazp3aXRoVVJMOl0pOgorCiAyMDE3LTA3LTAzICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBTd2l0Y2ggYWxsIFdlYktpdCBBUEkg
cmVsYXRlZCB0byBmYXZpY29ucyBmcm9tIFdlYkljb25EYXRhYmFzZSBvdmVyIHRvIG5ldyBXZWJD
b3JlOjpJY29uTG9hZGVyIG1lY2hhbmlzbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERG
Vmlldy5tbQppbmRleCA0N2NlMzcxMTJhNi4uOTc5YzNiNTk5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAgLTEwMzgsNyArMTAzOCw3IEBAIC0gKHZvaWQpUERG
Vmlld1dpbGxDbGlja09uTGluazooUERGVmlldyAqKXNlbmRlciB3aXRoVVJMOihOU1VSTCAqKVVS
TAogCiAgICAgLy8gQ2FsbCB0byB0aGUgZnJhbWUgbG9hZGVyIGJlY2F1c2UgdGhpcyBpcyB3aGVy
ZSBvdXIgc2VjdXJpdHkgY2hlY2tzIGFyZSBtYWRlLgogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
W2RhdGFTb3VyY2Ugd2ViRnJhbWVdKTsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJl
cXVlc3QgeyAqZnJhbWUtPmRvY3VtZW50KCksIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLCB7IFVSTCB9LCB7IH0sIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlz
dDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olll
cywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGROb3RBbGxvdyB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVx
dWVzdCB7ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCksIHsgVVJMIH0sIHsgfSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0
OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVz
LCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZE5vdEFsbG93LCBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25v
d24gfTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZyYW1l
TG9hZFJlcXVlc3QpLCBldmVudC5nZXQoKSwgbnVsbHB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAz
NjU1OTdhZjMxMy4uOThjYjE0MGU2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
Ny0wNy0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
b3cgbmF2aWdhdGlvbnMgaW4gc3ViZnJhbWVzIHRvIGdldCBhIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgb2YgIlNob3VsZEFsbG93Ii4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNDg1
NTg5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDE3OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IHRv
IHRoZSBuZXcgY29uc3RydWN0b3IgZm9yIEZyYW1lTG9hZFJlcXVlc3QuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OmxvYWRVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpvcGVuSW5O
ZXdUYWIpOgorCiAyMDE3LTA3LTAzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBTd2l0Y2ggYWxsIFdlYktpdCBBUEkgcmVsYXRlZCB0byBmYXZpY29ucyBmcm9t
IFdlYkljb25EYXRhYmFzZSBvdmVyIHRvIG5ldyBXZWJDb3JlOjpJY29uTG9hZGVyIG1lY2hhbmlz
bS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCBjNThjNWNiOTU4OS4uZjkxZWZiY2VlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEzODgsNyArMTM4OCw3IEBA
IFN0cmluZyBQbHVnaW5WaWV3Ojp1c2VyQWdlbnQoKQogCiB2b2lkIFBsdWdpblZpZXc6OmxvYWRV
UkwodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBo
ZWFkZXJGaWVsZHMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaHR0cEJvZHksIGJvb2wgYWxsb3dQ
b3B1cHMpCiB7Ci0gICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9wbHVn
aW5FbGVtZW50LT5kb2N1bWVudCgpLCBtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCkuc2VjdXJp
dHlPcmlnaW4oKSwgeyB9LCB0YXJnZXQsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJk
TGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6
OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdyB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2Fk
UmVxdWVzdCB7IG1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKSwgbV9wbHVnaW5FbGVtZW50LT5k
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgdGFyZ2V0LCBMb2NrSGlzdG9yeTo6Tm8s
IExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0
ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwogICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkuc2V0SFRUUE1ldGhvZChtZXRob2QpOwogICAgIGZyYW1lTG9hZFJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkuc2V0VVJMKG1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTCh1cmxTdHJpbmcpKTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
LnNldEhUVFBIZWFkZXJGaWVsZHMoaGVhZGVyRmllbGRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggYjI5MTY5YWM3YzIuLjM5OTNmODhjMWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNjUzLDcgKzY1Myw3IEBAIEZyYW1lKiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
IG5hdmlnYXRpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gSnVzdCBjYWxsIHRo
cm91Z2ggdG8gdGhlIGNocm9tZSBjbGllbnQuCi0gICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxv
YWRSZXF1ZXN0IHsgKm1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLCBtX2ZyYW1lLT5j
b3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgbmF2aWdhdGlvbkFjdGlv
bi5yZXNvdXJjZVJlcXVlc3QoKSwgeyB9LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2Fy
ZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
OjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgbmF2aWdhdGlvbkFjdGlvbi5zaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgfTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1l
TG9hZFJlcXVlc3QgeyAqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCksIG1fZnJhbWUt
PmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBuYXZpZ2F0aW9uQWN0
aW9uLnJlc291cmNlUmVxdWVzdCgpLCB7IH0sIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3
YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
Ukw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBuYXZpZ2F0aW9uQWN0aW9uLnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSwgTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZy
YW1lOjpVbmtub3duIH07CiAgICAgUGFnZSogbmV3UGFnZSA9IHdlYlBhZ2UtPmNvcmVQYWdlKCkt
PmNocm9tZSgpLmNyZWF0ZVdpbmRvdygqbV9mcmFtZS0+Y29yZUZyYW1lKCksIGZyYW1lTG9hZFJl
cXVlc3QsIHsgfSwgbmF2aWdhdGlvbkFjdGlvbik7CiAgICAgaWYgKCFuZXdQYWdlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggMWFlNjBhZjI2OTQuLjNhNjBmNmQzYWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNw
cApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpvcGVuSW5OZXdUYWIoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lJiBpbnNw
ZWN0ZWRNYWluRnJhbWUgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKTsKLSAgICBGcmFtZUxv
YWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqaW5zcGVjdGVkTWFpbkZyYW1lLmRvY3VtZW50
KCksIGluc3BlY3RlZE1haW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IHVy
bFN0cmluZyB9LCBBU0NJSUxpdGVyYWwoIl9ibGFuayIpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tC
YWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0
IGZyYW1lTG9hZFJlcXVlc3QgeyAqaW5zcGVjdGVkTWFpbkZyYW1lLmRvY3VtZW50KCksIGluc3Bl
Y3RlZE1haW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IHVybFN0cmluZyB9
LCBBU0NJSUxpdGVyYWwoIl9ibGFuayIpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2Fy
ZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
OjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6
VW5rbm93biB9OwogCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyAqaW5zcGVjdGVkTWFp
bkZyYW1lLmRvY3VtZW50KCksIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIE5h
dmlnYXRpb25UeXBlOjpMaW5rQ2xpY2tlZCB9OwogICAgIFBhZ2UqIG5ld1BhZ2UgPSBpbnNwZWN0
ZWRQYWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3coaW5zcGVjdGVkTWFpbkZyYW1lLCBmcmFtZUxv
YWRSZXF1ZXN0LCB7IH0sIGFjdGlvbik7Cg==
</data>
<flag name="review"
          id="335519"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="335523"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314665</attachid>
            <date>2017-07-05 16:32:15 -0700</date>
            <delta_ts>2017-07-05 17:01:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>63606</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NTQ4NzQzNjAzYi4uODBhMjI4NDljMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNy0wNy0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
QWxsb3cgbmF2aWdhdGlvbnMgaW4gc3ViZnJhbWVzIHRvIGdldCBhIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgb2YgIlNob3VsZEFsbG93Ii4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIy
NDg1NTg5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDE3
OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQWRk
ZWQgYSBuZXcgZXhwbGljaXQgdGVzdCBhbmQgdXBkYXRlZCBleHBlY3RhdGlvbnMgZm9yIGFuIG9s
ZCBvbmUuCisgICAgICAgIAorICAgICAgICAqIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91
bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUt
bWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxz
L3N1YmZyYW1lLWNsaWNrLXRhcmdldC1zZWxmLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBsb2Fk
ZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1u
YXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJu
YWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUu
aHRtbDogQWRkZWQuCisKIDIwMTctMDctMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFN3aXRjaCBhbGwgV2ViS2l0IEFQSSByZWxhdGVkIHRvIGZhdmljb25z
IGZyb20gV2ViSWNvbkRhdGFiYXNlIG92ZXIgdG8gbmV3IFdlYkNvcmU6Okljb25Mb2FkZXIgbWVj
aGFuaXNtLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5
L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJm
cmFtZS1tYWluLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtc3ViZnJhbWUuaHRtbCBiL0xheW91
dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxz
L3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFpbi1wcm9ncmFtYXRpY2FsbHkt
bmF2aWdhdGVzLXN1YmZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjYzZGUwY2M4N2YwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbG9hZGVy
L25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvcmVzb3VyY2VzL21h
aW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtc3Vi
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBpZnJhbWVM
b2FkZWQoKSB7CisgICAgd2luZG93LmZyYW1lc1swXS5sb2NhdGlvbiA9ICJub3RpZnktZG9uZS5o
dG1sIjsKK30KKzwvc2NyaXB0PgorCis8aWZyYW1lIG9ubG9hZD0iaWZyYW1lTG9hZGVkKCk7IiBz
cmM9ImRvLW5vdGhpbmcuaHRtbCI+PC9pZnJhbWU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9s
b2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFt
ZS1jbGljay10YXJnZXQtc2VsZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9sb2FkZXIvbmF2
aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1jbGljay10
YXJnZXQtc2VsZi1leHBlY3RlZC50eHQKaW5kZXggMzA1NTUzMzk3YTAuLmMzMGZlOGI3MTY1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9w
ZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1jbGljay10YXJnZXQtc2VsZi1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4
dGVybmFsLXVybHMvc3ViZnJhbWUtY2xpY2stdGFyZ2V0LXNlbGYtZXhwZWN0ZWQudHh0CkBAIC0z
LDcgKzMsNyBAQAogIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiAKIDxOU1VSTFJl
cXVlc3QgVVJMIHJlc291cmNlcy9pZnJhbWUtY2xpY2stbm90aWZ5LWRvbmUtdGFyZ2V0LXNlbGYu
aHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgc3ViZnJhbWUtY2xpY2stdGFyZ2V0LXNlbGYuaHRtbCwg
aHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0gbm8gc2hvdWxkIG9wZW4gVVJMcyBleHRl
cm5hbGx5IC0gbm8KICAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gCi08TlNVUkxS
ZXF1ZXN0IFVSTCByZXNvdXJjZXMvbm90aWZ5LWRvbmUuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwg
c3ViZnJhbWUtY2xpY2stdGFyZ2V0LXNlbGYuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWlu
IGZyYW1lIC0gbm8gc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0gbm8KKzxOU1VSTFJlcXVl
c3QgVVJMIHJlc291cmNlcy9ub3RpZnktZG9uZS5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBzdWJm
cmFtZS1jbGljay10YXJnZXQtc2VsZi5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJh
bWUgLSBubyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSB5ZXMKIFRoaXMgcGFnZSBoYXMg
YSBzdWJmcmFtZSB3aXRoIGEgbGluay4KIFRoZW4gYSBsaW5rIGlzIGNsaWNrZWQgaW4gdGhhdCBz
dWJmcmFtZSB0aGF0IG5hdmlnYXRlcyBpbnNpZGUgdGhhdCBzdWJmcmFtZSwgYW5kIHRoYXQgbmF2
aWdhdGlvbiBzaG91bGQgaGF2ZSB0aGUgInNob3VsZCBvcGVuIGV4dGVybmFsIHVybHMiIGZsYWcg
c2V0IHRvIGZhbHNlIGV2ZW4gdGhvdWdoIGl0IHdhcyBmcm9tIGEgdXNlciBnZXN0dXJlLgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9w
ZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LW1h
aW4tZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9s
aWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1h
dGljYWxseS1ieS1tYWluLWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uZGRhOTVjMTY5NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9z
dWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNyBAQAorIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiAK
KzxOU1VSTFJlcXVlc3QgVVJMIHJlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFp
bi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLmh0bWwsIG1haW4gZG9jdW1lbnQg
VVJMIHJlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFpbi1wcm9ncmFtYXRpY2Fs
bHktbmF2aWdhdGVzLXN1YmZyYW1lLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFt
ZSAtIHllcyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSB5ZXMKKyAtIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24gCis8TlNVUkxSZXF1ZXN0IFVSTCBkby1ub3RoaW5nLmh0bWws
IG1haW4gZG9jdW1lbnQgVVJMIG1haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXByb2dyYW1h
dGljYWxseS1uYXZpZ2F0ZXMtc3ViZnJhbWUuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWlu
IGZyYW1lIC0gbm8gc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0gbm8KKyAtIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24gCis8TlNVUkxSZXF1ZXN0IFVSTCBub3RpZnktZG9uZS5o
dG1sLCBtYWluIGRvY3VtZW50IFVSTCBtYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFpbi1wcm9n
cmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMg
bWFpbiBmcmFtZSAtIG5vIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIHllcworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4t
ZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LW1haW4t
ZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQt
b3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnkt
bWFpbi1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5k
OGNkODI5MmQxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0
aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1lLW5hdmlnYXRlZC1w
cm9ncmFtYXRpY2FsbHktYnktbWFpbi1mcmFtZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxzY3Jp
cHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcFBvbGljeURlbGVnYXRlQ2FsbGJhY2tzKCk7CisgICAg
dGVzdFJ1bm5lci5xdWV1ZUxvYWQoInJlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUt
bWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLmh0bWwiLCAiIiwgdHJ1ZSk7
Cit9CisKKzwvc2NyaXB0PgorVGhpcyBwYWdlIGhhcyBkb2VzIG5vdCBoYXZlIHRoZSAic2hvdWxk
IG9wZW4gZXh0ZXJuYWwgVVJMcyIgZmxhZyBzZXQuPGJyPgorSXQgbmF2aWdhdGVzIHRvIGEgMm5k
IHBhZ2UgdGhhdCBkb2VzIGhhdmUgdGhlIGZsYWcgc2V0Ljxicj4KK1RoYXQgMm5kIHBhZ2UgY29u
dGFpbnMgYW4gaWZyYW1lLCBhbmQgdGhlIG1haW4gZnJhbWUgcHJvZ3JhbWF0aWNhbGx5IG5hdmln
YXRlcyB0aGUgaWZyYW1lIHRvIGEgM3JkIGRvY3VtZW50Ljxicj4KK1RoZSAic2hvdWxkIG9wZW4g
ZXh0ZXJuYWwgVVJMcyIgZmxhZyBzaG91bGQgYmUgc2V0IGJlY2F1c2UgdGhlIHByb2dyYW1hdGlj
IG5hdmlnYXRpb24gaW5pdGlhdGVkIGZyb20gdGhlIG1haW4gZnJhbWUgYW5kIHRoZSBmbGFnIHNo
b3VsZCBwcm9wYWdhdGUuPGJyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNmYjI5ZjM3OGY5Li5kODgwZGU0NzY2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE3LTA3LTA1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBuYXZpZ2F0aW9ucyBpbiBzdWJm
cmFtZXMgdG8gZ2V0IGEgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBvZiAiU2hvdWxkQWxs
b3ciLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjI0ODU1ODk+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUZXN0OiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xp
Y3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0
aWNhbGx5LWJ5LW1haW4tZnJhbWUuaHRtbAorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBhIG5ldyBmbGFnIHRvIEZyYW1lTG9hZFJlcXVlc3QgdG8gdHJhY2sgd2hlbiBpdCBpcyBrbm93
biB3aXRoIGNlcnRhaW50eSB0aGF0IGEgCisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3Qgb3JpZ2lu
YXRlcyBmcm9tIHRoZSBtYWluIGZyYW1lLgorICAgICAgICAKKyAgICAgICAgTGF0ZXIsIHdoZW4g
Y2FsY3VsYXRpbmcgdGhlIGZpbmFsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIG1haW4g
ZnJhbWVzIG5hdmlnYXRpbmcgaWZyYW1lcyBnZXQgdG8gcHJvcGFnYXRlCisgICAgICAgIHRoZWly
IHBlcm1pc3Npb25zIHRvIHRoZSBpZnJhbWUuCisgICAgICAgIAorICAgICAgICAqIGJpbmRpbmdz
L2pzL0NvbW1vblZNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxleGljYWxGcmFtZUZyb21Db21t
b25WTSk6IEhlbHBlciB0byBncmFiIHRoZSBjdXJyZW50IGZyYW1lIGFzc29jaWF0ZWQgd2l0aCB0
aGUgY3VycmVudCBKUyBjYWxsc3RhY2suCisgICAgICAgICogYmluZGluZ3MvanMvQ29tbW9uVk0u
aDoKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5J
bk5ld1RhYik6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUpOgorCisgICAg
ICAgIEFkZCB0aGUgbmV3IGZsYWcgdG8gRnJhbWVMb2FkUmVxdWVzdCAoYW5kIGZvcmNlIGFsbW9z
dCBldmVyeWJvZHkgdG8gZXhwbGljaXRseSBpbmNsdWRlIHRoZSBmbGFnKToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRS
ZXF1ZXN0OjpGcmFtZUxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdDo6RnJhbWVMb2FkUmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0OjpuYXZpZ2F0aW9uSW5p
dGlhdGVkQnlNYWluRnJhbWUpOgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KTogSGVscGVyIHRoYXQg
dGFrZXMgdGhlIG5ldyBmbGFnIGludG8gYWNjb3VudCB3aGVuIGRlY2lkaW5nCisgICAgICAgICAg
d2hhdCB0aGUgZmluYWwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB3aWxsIGJlLgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1
bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6cmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkUG9zdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbnRp
bnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6YXBwbHlTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcik6IERlbGV0ZWQuCisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJU
eXBlcy5oOgorCisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246Om5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZSk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdhdGlvbjo6U2NoZWR1bGVkTmF2aWdhdGlvbik6IEdyYWIg
dGhlICJpbml0aWF0aW5nIGZyYW1lIiBhdCB0aGUgdGltZSB0aGUgCisgICAgICAgICAgU2NoZWR1
bGVkTmF2aWdhdGlvbiBpcyBjcmVhdGVkLCBhcyBpdCBkaWN0YXRlcyB0aGUgcG9saWN5IHdlIGRl
Y2lkZSBsYXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZE5hdmlnYXRpb246Om5hdmln
YXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9u
U2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKToKKworICAgICAgICAqIHBhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5OZXdXaW5kb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZCk6CisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTctMDctMDMgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBhbGwgV2ViS2l0IEFQ
SSByZWxhdGVkIHRvIGZhdmljb25zIGZyb20gV2ViSWNvbkRhdGFiYXNlIG92ZXIgdG8gbmV3IFdl
YkNvcmU6Okljb25Mb2FkZXIgbWVjaGFuaXNtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29t
bW9uVk0uY3BwCmluZGV4IGFhNzllZWVlMTg1Li43NmQwOTA5NjZkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNvbW1vblZNLmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKQEAgLTY1LDYgKzY2LDIwIEBAIFZNJiBjb21tb25W
TVNsb3coKQogICAgIHJldHVybiAqZ19jb21tb25WTU9yTnVsbDsKIH0KIAorRnJhbWUqIGxleGlj
YWxGcmFtZUZyb21Db21tb25WTSgpCit7CisgICAgaWYgKGF1dG8qIHRvcENhbGxGcmFtZSA9IGNv
bW1vblZNKCkudG9wQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3Qg
PSBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHRvcENhbGxGcmFtZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTRE9NV2luZG93Kj4oY29tbW9uVk0oKSwgZ2xvYmFsT2JqZWN0KSkgeworICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIGFkZEltcHVyZVBy
b3BlcnR5KGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQogewogICAgIGNvbW1vblZN
KCkuYWRkSW1wdXJlUHJvcGVydHkocHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Db21tb25WTS5oCmluZGV4IDJjNjdmOTlkN2I2Li4yODIxZWIyODg4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Db21tb25WTS5oCkBAIC0zMyw2ICszMyw5IEBAIGNsYXNzIFZNOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZyYW1lOworRnJhbWUqIGxleGljYWxGcmFtZUZy
b21Db21tb25WTSgpOworCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gSlNDOjpWTSogZ19jb21tb25W
TU9yTnVsbDsKIAogV0VCQ09SRV9FWFBPUlQgSlNDOjpWTSYgY29tbW9uVk1TbG93KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHAKaW5kZXggMDQ5OWY5YzY0NzEuLmM4Nzc3MDZhYTkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgaW5kaWNhdG9yIHsgUHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CiAgICAgRnJhbWUm
IG1haW5GcmFtZSA9IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5t
YWluRnJhbWUoKTsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbWFp
bkZyYW1lLmRvY3VtZW50KCksIG1haW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LCB7IH0sIEFTQ0lJTGl0ZXJhbCgiX2JsYW5rIiksIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tG
b3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgQVNDSUlMaXRlcmFsKCJfYmxhbmsiKSwgTG9ja0hp
c3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxs
b3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBOYXZpZ2F0
aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKIAogICAgIGJvb2wgY3JlYXRlZDsK
ICAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KG1haW5GcmFt
ZSwgbWFpbkZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB7IH0sIGNyZWF0ZWQpOwpA
QCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3Bl
bkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogCiAgICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBj
b21wdXRlIHRoZSBhYnNvbHV0ZSBVUkwgd2l0aCByZXNwZWN0IHRvIHxmcmFtZXwgaW5zdGVhZCBv
ZiB8bWFpbkZyYW1lfD8KICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgZnJh
bWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkgfTsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0
IGZyYW1lTG9hZFJlcXVlc3QyIHsgKm1haW5GcmFtZS5kb2N1bWVudCgpLCBtYWluRnJhbWUuZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCBBU0NJSUxpdGVyYWwo
Il9zZWxmIiksIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJl
U2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVP
cGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRO
b3RBbGxvdyB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdDIgeyAqbWFp
bkZyYW1lLmRvY3VtZW50KCksIG1haW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LCByZXNvdXJjZVJlcXVlc3QsIEFTQ0lJTGl0ZXJhbCgiX3NlbGYiKSwgTG9ja0hpc3Rvcnk6Ok5v
LCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBOYXZpZ2F0aW9uSW5pdGlh
dGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKICAgICBmcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9j
YXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0MikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY5YjI1ZWQ5ZGFlLi5j
ZjI1MWY1YjUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
bmF2aWdhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBGcmFtZSYgZnJh
bWUgPSBtX3BhZ2UubWFpbkZyYW1lKCk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VS
ZXF1ZXN0IHsgZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSB9OwotICAgIEZyYW1l
TG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS5kb2N1bWVudCgpLCBmcmFtZS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsIEFTQ0lJTGl0ZXJh
bCgiX3NlbGYiKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5
YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8sIE5ld0ZyYW1l
T3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
Tm90QWxsb3cgfTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJh
bWUuZG9jdW1lbnQoKSwgZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgcmVzb3Vy
Y2VSZXF1ZXN0LCBBU0NJSUxpdGVyYWwoIl9zZWxmIiksIExvY2tIaXN0b3J5OjpObywgTG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6Ok5vLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWlu
RnJhbWU6OlVua25vd24gfTsKICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihXVEZN
b3ZlKGZyYW1lTG9hZFJlcXVlc3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZFJlcXVlc3QuY3BwCmluZGV4IDUyZTMwYzJkZDY2Li5hNTUzZjViN2I2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcApAQCAtMzcsNyArMzcsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZyYW1lTG9hZFJlcXVlc3Q6OkZyYW1lTG9hZFJlcXVl
c3QoRG9jdW1lbnQmIHJlcXVlc3RlciwgU2VjdXJpdHlPcmlnaW4mIHJlcXVlc3RlclNlY3VyaXR5
T3JpZ2luLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRM
aXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVm
ZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkwsIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG5ld0ZyYW1lT3BlbmVyUG9saWN5LCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIFNob3Vs
ZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkph
dmFTY3JpcHRVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCitGcmFt
ZUxvYWRSZXF1ZXN0OjpGcmFtZUxvYWRSZXF1ZXN0KERvY3VtZW50JiByZXF1ZXN0ZXIsIFNlY3Vy
aXR5T3JpZ2luJiByZXF1ZXN0ZXJTZWN1cml0eU9yaWdpbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBMb2NrSGlzdG9yeSBs
b2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91
bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBOZXdGcmFtZU9wZW5lclBvbGljeSBu
ZXdGcmFtZU9wZW5lclBvbGljeSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgbmF2
aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFT
Y3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQogICAgIDogbV9yZXF1ZXN0ZXIgeyBtYWtlUmVm
KHJlcXVlc3RlcikgfQogICAgICwgbV9yZXF1ZXN0ZXJTZWN1cml0eU9yaWdpbiB7IG1ha2VSZWYo
cmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4pIH0KICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0IHsgcmVz
b3VyY2VSZXF1ZXN0IH0KQEAgLTUwLDYgKzUwLDcgQEAgRnJhbWVMb2FkUmVxdWVzdDo6RnJhbWVM
b2FkUmVxdWVzdChEb2N1bWVudCYgcmVxdWVzdGVyLCBTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGUK
ICAgICAsIG1fc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHsgc2hvdWxkUmVw
bGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIH0KICAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSB7IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgfQogICAgICwgbV9kb3du
bG9hZEF0dHJpYnV0ZSB7IGRvd25sb2FkQXR0cmlidXRlIH0KKyAgICAsIG1fbmF2aWdhdGlvbklu
aXRpYXRlZEJ5TWFpbkZyYW1lIHsgbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lIH0KIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgKaW5kZXggNDgyYTYy
OWUwYzAuLjlhMDUzMDMxYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1
ZXN0LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIEZy
YW1lTG9hZFJlcXVlc3QgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZFJl
cXVlc3QoRG9jdW1lbnQmLCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBMb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlz
dCwgU2hvdWxkU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5ld0Zy
YW1lT3BlbmVyUG9saWN5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBTaG91bGRSZXBs
YWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRV
UkwsIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSB7IH0pOworICAgIFdF
QkNPUkVfRVhQT1JUIEZyYW1lTG9hZFJlcXVlc3QoRG9jdW1lbnQmLCBTZWN1cml0eU9yaWdpbiYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBMb2NrSGlz
dG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyLCBBbGxvd05hdmln
YXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVyUG9saWN5LCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5LCBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUsIFNob3VsZFJlcGxh
Y2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCA9IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
TCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IHsgfSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgRnJhbWVMb2FkUmVxdWVzdChGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiA9
IFN1YnN0aXR1dGVEYXRhKCkpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZyYW1lTG9hZFJlcXVl
c3QoKTsKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgogCiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRBdHRyaWJ1dGU7
IH0KIAorICAgIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSBuYXZpZ2F0aW9uSW5pdGlh
dGVkQnlNYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25Jbml0aWF0ZWRCeU1h
aW5GcmFtZTsgfQorCiBwcml2YXRlOgogICAgIFJlZjxEb2N1bWVudD4gbV9yZXF1ZXN0ZXI7CiAg
ICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3JlcXVlc3RlclNlY3VyaXR5T3JpZ2luOwpAQCAtOTUs
NiArOTcsNyBAQCBwcml2YXRlOgogICAgIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlw
dFVSTCBtX3Nob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTDsKICAgICBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CiAgICAgQXRvbWlj
U3RyaW5nIG1fZG93bmxvYWRBdHRyaWJ1dGU7CisgICAgTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFp
bkZyYW1lIG1fbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lIHsgTmF2aWdhdGlvbkluaXRp
YXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAzZDRmMzAzZmQxOC4uNDhk
N2RhODhkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDMsNiAr
NDMsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hy
b21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uVk0uaCIK
ICNpbmNsdWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCkBAIC0zNjMsOCArMzY0LDExIEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0KQog
CiB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwYXNzZWRUYXJnZXQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIExvY2tIaXN0b3J5IGxv
Y2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3Vs
ZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFt
ZU9wZW5lclBvbGljeT4gb3BlbmVyUG9saWN5LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlKQogeworICAgIGF1dG8qIGZyYW1lID0gbGV4aWNhbEZyYW1lRnJvbUNvbW1vblZN
KCk7CisgICAgYXV0byBuYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgPSBmcmFtZSAmJiBm
cmFtZS0+aXNNYWluRnJhbWUoKSA/IE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVz
IDogTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duOworCiAgICAgTmV3RnJh
bWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVuZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFsdWVf
b3Ioc2hvdWxkU2VuZFJlZmVycmVyID09IE5ldmVyU2VuZFJlZmVycmVyID8gTmV3RnJhbWVPcGVu
ZXJQb2xpY3k6OlN1cHByZXNzIDogTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93KTsKLSAgICB1
cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0KCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB1cmwgfSwgcGFzc2VkVGFyZ2V0LCBsb2Nr
SGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgc2hvdWxkU2VuZFJlZmVycmVyLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgbmV3RnJhbWVPcGVuZXJQb2xpY3ksIHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3ksIERvTm90UmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJM
LCBkb3dubG9hZEF0dHJpYnV0ZSksIHRyaWdnZXJpbmdFdmVudCk7CisgICAgdXJsU2VsZWN0ZWQo
RnJhbWVMb2FkUmVxdWVzdCgqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIHsgdXJsIH0sIHBhc3NlZFRhcmdldCwgbG9ja0hpc3RvcnksIGxv
Y2tCYWNrRm9yd2FyZExpc3QsIHNob3VsZFNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMOjpZZXMsIG5ld0ZyYW1lT3BlbmVyUG9saWN5LCBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBuYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUsIERvTm90UmVwbGFjZURv
Y3VtZW50SWZKYXZhU2NyaXB0VVJMLCBkb3dubG9hZEF0dHJpYnV0ZSksIHRyaWdnZXJpbmdFdmVu
dCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3Qm
JiBmcmFtZVJlcXVlc3QsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpCkBAIC05MjQsNyArOTI4LDEw
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBGcmFt
ZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2Zy
YW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgdXJsIH0sIEFTQ0lJTGl0ZXJhbCgi
X3NlbGYiKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMsIFNob3Vs
ZFNlbmRSZWZlcnJlcjo6TWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CisgICAgYXV0byogbGV4aWNhbEZyYW1l
ID0gbGV4aWNhbEZyYW1lRnJvbUNvbW1vblZNKCk7CisgICAgYXV0byBuYXZpZ2F0aW9uSW5pdGlh
dGVkQnlNYWluRnJhbWUgPSBsZXhpY2FsRnJhbWUgJiYgbGV4aWNhbEZyYW1lLT5pc01haW5GcmFt
ZSgpID8gTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXMgOiBOYXZpZ2F0aW9uSW5p
dGlhdGVkQnlNYWluRnJhbWU6OlVua25vd247CisKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1l
TG9hZFJlcXVlc3QgeyAqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCksIHsgdXJsIH0sIEFTQ0lJTGl0ZXJhbCgiX3NlbGYiKSwgTG9ja0hpc3Rv
cnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMsIFNob3VsZFNlbmRSZWZlcnJlcjo6TWF5
YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFt
ZU9wZW5lclBvbGljeTo6U3VwcHJlc3MsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93LCBuYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgfTsKICAgICBjaGls
ZEZyYW1lLT5sb2FkZXIoKS5sb2FkVVJMKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVy
ZXIsIEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwgbnVs
bHB0ciwgbnVsbHB0cik7CiB9CiAKQEAgLTEyMDgsMTUgKzEyMTUsMzUgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQq
IGV2ZW50LCBGb3IKICAgICB9CiB9CiAKLXN0YXRpYyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KEZyYW1lJiBzb3VyY2VGcmFt
ZSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBwcm9wYWdhdGVkUG9saWN5KQorc3RhdGlj
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eVRvQXBwbHkoRnJhbWUmIGN1cnJlbnRGcmFtZSwgTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZy
YW1lIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBwcm9wYWdhdGVkUG9saWN5KQogewotICAgIGlmICghc291cmNlRnJhbWUuaXNNYWlu
RnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93OwogICAgIGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSkKICAgICAgICAgcmV0dXJuIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZEFsbG93OworCisgICAgaWYgKG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSA9PSBO
YXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcykKKyAgICAgICAgcmV0dXJuIHByb3Bh
Z2F0ZWRQb2xpY3k7CisKKyAgICBpZiAoIWN1cnJlbnRGcmFtZS5pc01haW5GcmFtZSgpKQorICAg
ICAgICByZXR1cm4gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3c7
CisKICAgICByZXR1cm4gcHJvcGFnYXRlZFBvbGljeTsKIH0KIAorc3RhdGljIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoRnJh
bWUmIGN1cnJlbnRGcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVz
dCkKK3sKKyAgICByZXR1cm4gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoY3Vy
cmVudEZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0Lm5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZSgpLCBmcmFtZUxvYWRSZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7Cit9
CisKK3N0YXRpYyB2b2lkIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9j
dW1lbnRMb2FkZXIoRnJhbWUmIGZyYW1lLCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIs
IE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSBuYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWlu
RnJhbWUsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgcHJvcGFnYXRlZFBvbGljeSkKK3sK
KyAgICBkb2N1bWVudExvYWRlci5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KGZyYW1lLCBuYXZpZ2F0aW9uSW5pdGlhdGVk
QnlNYWluRnJhbWUsIHByb3BhZ2F0ZWRQb2xpY3kpKTsKK30KKworc3RhdGljIHZvaWQgYXBwbHlT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihGcmFtZSYgZnJh
bWUsIERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciwgY29uc3QgRnJhbWVMb2FkUmVxdWVz
dCYgZnJhbWVMb2FkUmVxdWVzdCkKK3sKKyAgICBkb2N1bWVudExvYWRlci5zZXRTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KGZy
YW1lLCBmcmFtZUxvYWRSZXF1ZXN0KSk7Cit9CisKIGJvb2wgRnJhbWVMb2FkZXI6OmlzTmF2aWdh
dGlvbkFsbG93ZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhZ2VEaXNtaXNzYWxFdmVudEJl
aW5nRGlzcGF0Y2hlZCA9PSBQYWdlRGlzbWlzc2FsVHlwZTo6Tm9uZSAmJiBOYXZpZ2F0aW9uRGlz
YWJsZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQobV9mcmFtZSk7CkBAIC0xMjY1LDcgKzEyOTIsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRS
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsg
ZnJhbWVMb2FkUmVxdWVzdC5yZXF1ZXN0ZXIoKSwgcmVxdWVzdCwgbmV3TG9hZFR5cGUsIGlzRm9y
bVN1Ym1pc3Npb24sIGV2ZW50LCBmcmFtZUxvYWRSZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3koKSwgZnJhbWVMb2FkUmVxdWVzdC5kb3dubG9hZEF0dHJpYnV0ZSgpIH07CiAKICAg
ICBpZiAoIXRhcmdldEZyYW1lICYmICFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGFj
dGlvbiA9IGFjdGlvbi5jb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkobV9mcmFtZSwgZnJhbWVMb2FkUmVxdWVzdC5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpKTsKKyAgICAgICAgYWN0aW9uID0gYWN0aW9u
LmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0KSk7CiAgICAgICAgIHBv
bGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24sIHJlcXVlc3QsIGZvcm1T
dGF0ZSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVu
ZXJQb2xpY3ldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9y
bVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYg
YWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBjb250aW51ZUxvYWRB
ZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9u
LCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xp
Y3kpOwogICAgICAgICB9KTsKQEAgLTEyOTMsNyArMTMyMCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgcmVmCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRoaXMgbG9hZCBtYXkg
c3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAgICAgYm9vbCBpc1Jl
ZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFj
dGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBuZXdMb2FkVHlwZSwgZm9ybVN0YXRl
LCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOworICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFj
dGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBuZXdMb2FkVHlwZSwgZm9ybVN0YXRl
LCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIGZyYW1lTG9hZFJlcXVlc3QubmF2aWdhdGlv
bkluaXRpYXRlZEJ5TWFpbkZyYW1lKCkpOwogICAgIGlmIChpc1JlZGlyZWN0KSB7CiAgICAgICAg
IG1fcXVpY2tSZWRpcmVjdENvbWluZyA9IGZhbHNlOwogICAgICAgICBpZiAobV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKQpAQCAtMTM0NywxNSArMTM3NCwxNSBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0KQogICAgICAgICByZXF1ZXN0LnNldFN1
YnN0aXR1dGVEYXRhKGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpLnVybCgpKSk7CiAKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1f
Y2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJl
cXVlc3Quc3Vic3RpdHV0ZURhdGEoKSk7Ci0gICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2FkZXIsIHJlcXVlc3Quc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSgpKTsKKyAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b05ld0RvY3VtZW50TG9hZGVyKG1fZnJhbWUsIGxvYWRlciwgcmVxdWVzdCk7CiAKICAgICBsb2Fk
KGxvYWRlci5wdHIoKSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgdHlw
ZSwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmln
YXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBhY3Rpb24sIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBl
IHR5cGUsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwg
YWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJh
bWUgbmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lKQogewogICAgIFJlZjxEb2N1bWVudExv
YWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwgZGVm
YXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJsKCkpKTsKLSAgICBhcHBseVNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgYWN0aW9u
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihtX2ZyYW1lLCBsb2FkZXIsIG5hdmln
YXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSwgYWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3koKSk7CiAKICAgICBpZiAobG9ja0hpc3RvcnkgPT0gTG9ja0hpc3Rvcnk6OlllcyAmJiBt
X2RvY3VtZW50TG9hZGVyKQogICAgICAgICBsb2FkZXItPnNldENsaWVudFJlZGlyZWN0U291cmNl
Rm9ySGlzdG9yeShtX2RvY3VtZW50TG9hZGVyLT5kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnko
KSA/IG1fZG9jdW1lbnRMb2FkZXItPnVybEZvckhpc3RvcnkoKS5zdHJpbmcoKSA6IG1fZG9jdW1l
bnRMb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpKTsKQEAgLTE1NTcsNyAr
MTU4NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcpCiAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXR1cm5D
YWNoZURhdGFFbHNlTG9hZCk7CiAKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1f
Y2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0
YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKKyAgICBhcHBseVNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKG1fZnJhbWUsIGxvYWRlciwg
TmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duLCBtX2RvY3VtZW50TG9hZGVy
LT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CiAKICAgICBzZXRQ
b2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCkpOwogCkBAIC0xNTg1LDcgKzE2MTIsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0aW9u
cykKICAgICAvLyBDcmVhdGUgYSBuZXcgZG9jdW1lbnQgbG9hZGVyIGZvciB0aGUgcmVsb2FkLCB0
aGlzIHdpbGwgYmVjb21lIG1fZG9jdW1lbnRMb2FkZXIgZXZlbnR1YWxseSwKICAgICAvLyBidXQg
Zmlyc3QgaXQgaGFzIHRvIGJlIHRoZSAicG9saWN5IiBkb2N1bWVudCBsb2FkZXIsIGFuZCB0aGVu
IHRoZSAicHJvdmlzaW9uYWwiIGRvY3VtZW50IGxvYWRlci4KICAgICBSZWY8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0
LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpKTsKLSAg
ICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKGxv
YWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJv
cGFnYXRlKCkpOworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9j
dW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJh
bWU6OlVua25vd24sIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb1Byb3BhZ2F0ZSgpKTsKIAogICAgIGxvYWRlci0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25z
RW5hYmxlZCghb3B0aW9ucy5jb250YWlucyhSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50Qmxv
Y2tlcnMpKTsKICAgICAKQEAgLTI3MjUsNyArMjc1Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBy
ZWZlCiAgICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoZSBzZWFy
Y2ggZm9yIGEgdGFyZ2V0IGZyYW1lIGlzIGRvbmUgZWFybGllciBpbiB0aGUgY2FzZSBvZiBmb3Jt
IHN1Ym1pc3Npb24uCiAgICAgICAgIGlmIChGcmFtZSogdGFyZ2V0RnJhbWUgPSBmb3JtU3RhdGUg
PyAwIDogZmluZEZyYW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUpKSB7Ci0gICAgICAgICAgICB0
YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNv
dXJjZVJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1T
dGF0ZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgICAgICAgICB0YXJnZXRG
cmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJl
cXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSks
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgcmVxdWVzdC5uYXZpZ2F0aW9uSW5pdGlhdGVk
QnlNYWluRnJhbWUoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjcz
Nyw3ICsyNzY0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9h
ZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKIAogICAgIC8vIG11c3QgZ3Jh
YiB0aGlzIG5vdywgc2luY2UgdGhpcyBsb2FkIG1heSBzdG9wIHRoZSBwcmV2aW91cyBsb2FkIGFu
ZCBjbGVhciB0aGlzIGZsYWcKICAgICBib29sIGlzUmVkaXJlY3QgPSBtX3F1aWNrUmVkaXJlY3RD
b21pbmc7Ci0gICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVl
c3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9u
KHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBX
VEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgcmVxdWVzdC5u
YXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUoKSk7CiAgICAgaWYgKGlzUmVkaXJlY3QpIHsK
ICAgICAgICAgbV9xdWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAgICAgICAgIGlmIChtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCkBAIC0zMTc3LDcgKzMyMDQsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlcwogICAgIH0KIAogICAgIE5hdmlnYXRpb25BY3Rpb24gbmV3QWN0aW9uIHsg
KmZyYW1lLT5kb2N1bWVudCgpLCByZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZTo6T3RoZXIsIGFjdGlv
bi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgfTsKLSAgICBtYWluRnJhbWUtPmxvYWRl
cigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBuZXdBY3Rpb24sIExvY2tIaXN0
b3J5OjpObywgRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBtYWluRnJhbWUtPmxvYWRlcigpLmxvYWRXaXRoTmF2aWdh
dGlvbkFjdGlvbihyZXF1ZXN0LCBuZXdBY3Rpb24sIExvY2tIaXN0b3J5OjpObywgRnJhbWVMb2Fk
VHlwZTo6U3RhbmRhcmQsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBO
YXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24pOwogfQogCiB2b2lkIEZyYW1l
TG9hZGVyOjpyZXF1ZXN0RnJvbURlbGVnYXRlKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgdW5z
aWduZWQgbG9uZyYgaWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0zMzgwLDcg
KzM0MDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhp
c3RvcnlJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYQogICAgIGlmICghaXRlbS5yZWZlcnJl
cigpLmlzTnVsbCgpKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihpdGVtLnJlZmVy
cmVyKCkpOwogCi0gICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkobV9m
cmFtZSwgaXRlbS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOworICAgIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIE5hdmlnYXRpb25Jbml0aWF0
ZWRCeU1haW5GcmFtZTo6VW5rbm93biwgaXRlbS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KCkpOwogICAgIGJvb2wgaXNGb3JtU3VibWlzc2lvbiA9IGZhbHNlOwogICAgIEV2ZW50KiBldmVu
dCA9IG51bGxwdHI7CiAKQEAgLTM0NTAsNyArMzQ3Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUg
bG9hCiAgICAgICAgIGFjdGlvbiA9IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgcmVxdWVzdEZvck9y
aWdpbmFsVVJMLCBsb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgfTsKICAgICB9CiAKLSAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rp
b24ocmVxdWVzdCwgYWN0aW9uLCBMb2NrSGlzdG9yeTo6Tm8sIGxvYWRUeXBlLCAwLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CisgICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9u
KHJlcXVlc3QsIGFjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5vLCBsb2FkVHlwZSwgMCwgQWxsb3dOYXZp
Z2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6
VW5rbm93bik7CiB9CiAKIC8vIExvYWRzIGNvbnRlbnQgaW50byB0aGlzIGZyYW1lLCBhcyBzcGVj
aWZpZWQgYnkgaGlzdG9yeSBpdGVtCkBAIC0zNjUxLDExICszNjc4LDYgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y2xlYXJUZXN0aW5nT3ZlcnJpZGVzKCkKICAgICBtX2lzU3RyaWN0UmF3UmVzb3VyY2VW
YWxpZGF0aW9uUG9saWN5RGlzYWJsZWRGb3JUZXN0aW5nID0gZmFsc2U7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXI6OmFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRM
b2FkZXIoRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHByb3BhZ2F0ZWRQb2xpY3kpCi17Ci0gICAgZG9jdW1lbnRMb2FkZXIuc2V0U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9B
cHBseShtX2ZyYW1lLCBwcm9wYWdhdGVkUG9saWN5KSk7Ci19Ci0KIGJvb2wgRnJhbWVMb2FkZXI6
OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZyYW1lKCku
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CkBAIC0zNzAwLDcgKzM3MjIsNyBAQCBSZWZQdHI8
RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUsIEZyYW1lJiBsb29rdXBGcmFt
ZSwgRnJhbWVMb2FkUmVxdQogICAgIGlmICghb2xkUGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShvcGVuZXJG
cmFtZSwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOworICAgIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG9wZW5lckZyYW1lLCByZXF1ZXN0KTsK
ICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IHJlcXVlc3QucmVxdWVzdGVyKCksIHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCksIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSB9OwogICAgIFBhZ2UqIHBhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS5j
cmVhdGVXaW5kb3cob3BlbmVyRnJhbWUsIHJlcXVlc3QsIGZlYXR1cmVzLCBhY3Rpb24pOwogICAg
IGlmICghcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggNmNhY2RkYWQ5
OWIuLjM0OTY1MmJhOTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMzU4
LDcgKzM1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkV2l0aERvY3VtZW50TG9hZGVyKERv
Y3VtZW50TG9hZGVyKiwgRnJhbWVMb2FkVHlwZSwgRm9ybVN0YXRlKiwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMKTsgLy8gQ2FsbHMgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
CiAgICAgdm9pZCBsb2FkKERvY3VtZW50TG9hZGVyKik7IC8vIENhbGxzIGxvYWRXaXRoRG9jdW1l
bnRMb2FkZXIKIAotICAgIHZvaWQgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBMb2NrSGlzdG9yeSwgRnJhbWVM
b2FkVHlwZSwgRm9ybVN0YXRlKiwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsgLy8gQ2Fs
bHMgbG9hZFdpdGhEb2N1bWVudExvYWRlcgorICAgIHZvaWQgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBMb2Nr
SGlzdG9yeSwgRnJhbWVMb2FkVHlwZSwgRm9ybVN0YXRlKiwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMLCBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUpOyAvLyBDYWxscyBsb2FkV2l0
aERvY3VtZW50TG9hZGVyCiAKICAgICB2b2lkIGxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1
ZXN0JiYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5cGUsIEV2ZW50KiwgRm9y
bVN0YXRlKik7CiAgICAgdm9pZCBsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlwZSwgRXZlbnQqLCBGb3JtU3RhdGUqKTsKQEAgLTM4
Niw4ICszODYsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2
YWlsYWJsZUluQWxsV29ybGRzKCk7CiAKLSAgICB2b2lkIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXImLCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IHByb3BhZ2F0ZWRQb2xpY3kpOwotCiAgICAgYm9vbCBpc05hdmln
YXRpb25BbGxvd2VkKCkgY29uc3Q7CiAKICAgICBGcmFtZSYgbV9mcmFtZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCmluZGV4IDg0ZWEyNWIyODRiLi43OWQ0NmQ1OTk2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCkBAIC04Myw2ICs4
MywxMSBAQCBlbnVtIGNsYXNzIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgewogICAgIFNo
b3VsZEFsbG93LAogfTsKIAorZW51bSBjbGFzcyBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJh
bWUgeworICAgIFllcywKKyAgICBVbmtub3duLAorfTsKKwogZW51bSBDbGVhclByb3Zpc2lvbmFs
SXRlbVBvbGljeSB7CiAgICAgU2hvdWxkQ2xlYXJQcm92aXNpb25hbEl0ZW0sCiAgICAgU2hvdWxk
Tm90Q2xlYXJQcm92aXNpb25hbEl0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFj
dGlvbi5oCmluZGV4IDk5ZGI0NGIzY2Y4Li5iNDU3ZDE5YTM5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICBS
ZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gdXNlckdlc3R1cmVUb2tlbigpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlckdlc3R1cmVUb2tlbjsgfQogCiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OyB9CisgICAgTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZy
YW1lIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2
aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOyB9CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGRvd25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZEF0dHJpYnV0ZTsg
fQogCkBAIC03Niw2ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVz
b3VyY2VSZXF1ZXN0OwogICAgIE5hdmlnYXRpb25UeXBlIG1fdHlwZTsKICAgICBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBO
YXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgbV9uYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWlu
RnJhbWU7CiAgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OwogICAgIFJlZlB0cjxVc2VyR2VzdHVy
ZVRva2VuPiBtX3VzZXJHZXN0dXJlVG9rZW4geyBVc2VyR2VzdHVyZUluZGljYXRvcjo6Y3VycmVu
dFVzZXJHZXN0dXJlKCkgfTsKICAgICBBdG9taWNTdHJpbmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAppbmRleCBi
NDFhNTRmZmE2OS4uM2JjYjFhNWVhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0
aW9uU2NoZWR1bGVyLmgiCiAKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKQEAgLTc5LDYgKzgwLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgLCBtX3VzZXJHZXN0dXJlVG9Gb3J3YXJkKFVzZXJHZXN0dXJlSW5kaWNh
dG9yOjpjdXJyZW50VXNlckdlc3R1cmUoKSkKICAgICAgICAgLCBtX3Nob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koZXh0ZXJuYWxVUkxQb2xpY3kpCiAgICAgeworICAgICAgICBpZiAoYXV0byog
ZnJhbWUgPSBsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKSkgeworICAgICAgICAgICAgaWYgKGZy
YW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkluaXRpYXRl
ZEJ5TWFpbkZyYW1lID0gTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXM7CisgICAg
ICAgIH0KICAgICB9CiAgICAgdmlydHVhbCB+U2NoZWR1bGVkTmF2aWdhdGlvbigpIHsgfQogCkBA
IC05OCw2ICsxMDMsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbGVhclVzZXJH
ZXN0dXJlKCkgeyBtX3VzZXJHZXN0dXJlVG9Gb3J3YXJkID0gbnVsbHB0cjsgfQogICAgIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsgfQorICAgIE5hdmlnYXRpb25J
bml0aWF0ZWRCeU1haW5GcmFtZSBuYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUoKSBjb25z
dCB7IHJldHVybiBtX25hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTsgfTsKIAogcHJpdmF0
ZToKICAgICBkb3VibGUgbV9kZWxheTsKQEAgLTEwNyw2ICsxMTMsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc0xvY2F0aW9uQ2hhbmdlOwogICAgIFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiBt
X3VzZXJHZXN0dXJlVG9Gb3J3YXJkOwogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
bV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkTm90QWxsb3cgfTsKKyAgICBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJh
bWUgbV9uYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgeyBOYXZpZ2F0aW9uSW5pdGlhdGVk
QnlNYWluRnJhbWU6OlVua25vd24gfTsKIH07CiAKIGNsYXNzIFNjaGVkdWxlZFVSTE5hdmlnYXRp
b24gOiBwdWJsaWMgU2NoZWR1bGVkTmF2aWdhdGlvbiB7CkBAIC0xMjUsNyArMTMyLDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yIHsg
dXNlckdlc3R1cmVUb0ZvcndhcmQoKSB9OwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNv
dXJjZVJlcXVlc3QgeyBtX3VybCwgbV9yZWZlcnJlciwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSB9
OwotICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyBtX2luaXRpYXRp
bmdEb2N1bWVudC5nZXQoKSwgKm1fc2VjdXJpdHlPcmlnaW4sIHJlc291cmNlUmVxdWVzdCwgIl9z
ZWxmIiwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBNYXliZVNlbmRSZWZl
cnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9s
aWN5OjpBbGxvdywgc2hvdWxkT3BlbkV4dGVybmFsVVJMcygpIH07CisgICAgICAgIEZyYW1lTG9h
ZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IG1faW5pdGlhdGluZ0RvY3VtZW50LmdldCgpLCAq
bV9zZWN1cml0eU9yaWdpbiwgcmVzb3VyY2VSZXF1ZXN0LCAiX3NlbGYiLCBsb2NrSGlzdG9yeSgp
LCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzKCksIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSgpIH07CiAK
ICAgICAgICAgZnJhbWUubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oV1RGTW92ZShmcmFtZUxvYWRS
ZXF1ZXN0KSk7CiAgICAgfQpAQCAtMTg2LDcgKzE5Myw3IEBAIHB1YmxpYzoKIAogICAgICAgICBi
b29sIHJlZnJlc2ggPSBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGZyYW1lLmRvY3Vt
ZW50KCktPnVybCgpLCB1cmwoKSk7CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJl
cXVlc3QgeyB1cmwoKSwgcmVmZXJyZXIoKSwgcmVmcmVzaCA/IFJlbG9hZElnbm9yaW5nQ2FjaGVE
YXRhIDogVXNlUHJvdG9jb2xDYWNoZVBvbGljeSB9OwotICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0
IGZyYW1lTG9hZFJlcXVlc3QgeyBpbml0aWF0aW5nRG9jdW1lbnQoKSwgKnNlY3VyaXR5T3JpZ2lu
KCksIHJlc291cmNlUmVxdWVzdCwgIl9zZWxmIiwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3
YXJkTGlzdCgpLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
OjpObywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
KCkgfTsKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgaW5pdGlh
dGluZ0RvY3VtZW50KCksICpzZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsICJfc2Vs
ZiIsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJy
ZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8sIE5ld0ZyYW1lT3BlbmVyUG9saWN5
OjpBbGxvdywgc2hvdWxkT3BlbkV4dGVybmFsVVJMcygpLCBuYXZpZ2F0aW9uSW5pdGlhdGVkQnlN
YWluRnJhbWUoKSB9OwogCiAgICAgICAgIGZyYW1lLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFdU
Rk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOwogICAgIH0KQEAgLTIwMiw3ICsyMDksOCBAQCBwdWJs
aWM6CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IgeyB1c2Vy
R2VzdHVyZVRvRm9yd2FyZCgpIH07CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNl
UmVxdWVzdCB7IHVybCgpLCByZWZlcnJlcigpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5IH07Ci0g
ICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1
bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCAiX3NlbGYiLCBsb2Nr
SGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIE1heWJlU2VuZFJlZmVycmVyLCBBbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Ok5vLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cs
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSB9OworICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZy
YW1lTG9hZFJlcXVlc3QgeyBpbml0aWF0aW5nRG9jdW1lbnQoKSwgKnNlY3VyaXR5T3JpZ2luKCks
IHJlc291cmNlUmVxdWVzdCwgIl9zZWxmIiwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJk
TGlzdCgpLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpO
bywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCks
IG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSgpIH07CisKICAgICAgICAgZnJhbWUubG9h
ZGVyKCkuY2hhbmdlTG9jYXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CiAgICAgfQog
fTsKQEAgLTIxOSw3ICsyMjcsOCBAQCBwdWJsaWM6CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGdlc3R1cmVJbmRpY2F0b3IgeyB1c2VyR2VzdHVyZVRvRm9yd2FyZCgpIH07CiAKICAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IHVybCgpLCByZWZlcnJlcigpLCBS
ZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSB9OwotICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1l
TG9hZFJlcXVlc3QgeyBpbml0aWF0aW5nRG9jdW1lbnQoKSwgKnNlY3VyaXR5T3JpZ2luKCksIHJl
c291cmNlUmVxdWVzdCwgIl9zZWxmIiwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCgpLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMs
IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgc2hvdWxkT3BlbkV4dGVybmFsVVJMcygpIH07
CisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IGluaXRpYXRpbmdE
b2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCAiX3NlbGYiLCBs
b2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIE1heWJlU2VuZFJlZmVycmVyLCBB
bGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFs
bG93LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCksIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5G
cmFtZSgpIH07CisKICAgICAgICAgZnJhbWUubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oV1RGTW92
ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CiAgICAgfQogfTsKQEAgLTI3MSw3ICsyODAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGF1dG8mIHJlcXVlc3RpbmdEb2N1bWVudCA9IG1fc3VibWlzc2lvbi0+c3Rh
dGUoKS5zb3VyY2VEb2N1bWVudCgpOwogICAgICAgICBpZiAoIXJlcXVlc3RpbmdEb2N1bWVudC5j
YW5OYXZpZ2F0ZSgmZnJhbWUpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBGcmFtZUxv
YWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyByZXF1ZXN0aW5nRG9jdW1lbnQsIHJlcXVlc3Rp
bmdEb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCB7IH0sIHsgfSwgbG9ja0hpc3RvcnkoKSwgbG9j
a0JhY2tGb3J3YXJkTGlzdCgpLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgc2hvdWxkT3BlbkV4
dGVybmFsVVJMcygpIH07CisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVz
dCB7IHJlcXVlc3RpbmdEb2N1bWVudCwgcmVxdWVzdGluZ0RvY3VtZW50LnNlY3VyaXR5T3JpZ2lu
KCksIHsgfSwgeyB9LCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIE1heWJl
U2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVP
cGVuZXJQb2xpY3k6OkFsbG93LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCksIG5hdmlnYXRpb25J
bml0aWF0ZWRCeU1haW5GcmFtZSgpIH07CiAgICAgICAgIG1fc3VibWlzc2lvbi0+cG9wdWxhdGVG
cmFtZUxvYWRSZXF1ZXN0KGZyYW1lTG9hZFJlcXVlc3QpOwogICAgICAgICBmcmFtZS5sb2FkZXIo
KS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIG1fc3VibWlzc2lv
bi0+ZXZlbnQoKSwgJm1fc3VibWlzc2lvbi0+c3RhdGUoKSk7CiAgICAgfQpAQCAtMzIxLDcgKzMz
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3Vic3RpdHV0ZURhdGEgcmVwbGFjZW1lbnREYXRhIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9vcmlnaW5Eb2N1bWVudC51cmwoKSwgcmVwbGFjZW1l
bnRSZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlk
ZGVuIH07CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IG1fb3Jp
Z2luRG9jdW1lbnQudXJsKCksIGVtcHR5U3RyaW5nKCksIFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRh
IH07Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IG1fb3JpZ2lu
RG9jdW1lbnQsIG1fb3JpZ2luRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1
ZXN0LCB7IH0sIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5k
UmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5l
clBvbGljeTo6QWxsb3csIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSB9OworICAgICAgICBGcmFt
ZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyBtX29yaWdpbkRvY3VtZW50LCBtX29yaWdp
bkRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNlUmVxdWVzdCwgeyB9LCBsb2NrSGlz
dG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzKCksIG5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZSgp
IH07CiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U3Vic3RpdHV0ZURhdGEocmVwbGFjZW1l
bnREYXRhKTsKICAgICAgICAgZnJhbWUubG9hZGVyKCkubG9hZChXVEZNb3ZlKGZyYW1lTG9hZFJl
cXVlc3QpKTsKICAgICB9CkBAIC00MjAsNyArNDI5LDEwIEBAIHZvaWQgTmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50
LCBTCiAgICAgLy8gZnJhZ21lbnQgcGFydCwgd2UgZG9uJ3QgbmVlZCB0byBzY2hlZHVsZSB0aGUg
bG9jYXRpb24gY2hhbmdlLgogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgJiYg
ZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgp
LCB1cmwpKSB7CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyBtX2Zy
YW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCksIHJlZmVycmVyLCBVc2VQcm90b2NvbENh
Y2hlUG9saWN5IH07Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7
IGluaXRpYXRpbmdEb2N1bWVudCwgc2VjdXJpdHlPcmlnaW4sIHJlc291cmNlUmVxdWVzdCwgQVND
SUlMaXRlcmFsKCJfc2VsZiIpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgTWF5
YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8sIE5ld0ZyYW1l
T3BlbmVyUG9saWN5OjpBbGxvdywgaW5pdGlhdGluZ0RvY3VtZW50LnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIH07CisgICAgICAgIGF1dG8qIGZyYW1lID0gbGV4aWNh
bEZyYW1lRnJvbUNvbW1vblZNKCk7CisgICAgICAgIGF1dG8gbmF2aWdhdGlvbkluaXRpYXRlZEJ5
TWFpbkZyYW1lID0gZnJhbWUgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkgPyBOYXZpZ2F0aW9uSW5p
dGlhdGVkQnlNYWluRnJhbWU6OlllcyA6IE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6
VW5rbm93bjsKKyAgICAgICAgCisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVx
dWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCwgc2VjdXJpdHlPcmlnaW4sIHJlc291cmNlUmVxdWVz
dCwgQVNDSUlMaXRlcmFsKCJfc2VsZiIpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8sIE5l
d0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgaW5pdGlhdGluZ0RvY3VtZW50LnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpLCBuYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWlu
RnJhbWUgfTsKICAgICAgICAgbG9hZGVyLmNoYW5nZUxvY2F0aW9uKFdURk1vdmUoZnJhbWVMb2Fk
UmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDgxNDFiNTE5MDAzLi5hYzg4NzUzZTRj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApA
QCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgVVJMJiB1
cmxUb0xvYWQsIEZyYW1lJiBmcmFtZSwgU2hvdWxkT3BlbkV4dGVybmFsCiAgICAgaWYgKCFvbGRQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJl
cXVlc3QgeyAqZnJhbWUuZG9jdW1lbnQoKSwgZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUubG9hZGVyKCkub3V0Z29pbmdS
ZWZlcnJlcigpKSwgeyB9LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5v
LCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5l
d0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcywgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS5kb2N1
bWVudCgpLCBmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVl
c3QodXJsVG9Mb2FkLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpLCB7IH0sIExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVy
LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6
OlN1cHByZXNzLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBOYXZpZ2F0aW9uSW5pdGlh
dGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKIAogICAgIFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdl
LT5jaHJvbWUoKS5jcmVhdGVXaW5kb3coZnJhbWUsIGZyYW1lTG9hZFJlcXVlc3QsIHsgfSwgeyAq
ZnJhbWUuZG9jdW1lbnQoKSwgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSB9KTsK
ICAgICBpZiAoIW5ld1BhZ2UpCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51QWN0aW9uIGFjdGlv
biwgY28KICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rOgogICAgICAgICBpZiAo
RnJhbWUqIHRhcmdldEZyYW1lID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS50YXJnZXRGcmFt
ZSgpKSB7CiAgICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgbV9j
b250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUtPmxvYWRlcigp
Lm91dGdvaW5nUmVmZXJyZXIoKSB9OwotICAgICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFt
ZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgcmVzb3VyY2VSZXF1ZXN0LCB7IH0sIExvY2tIaXN0b3J5OjpObywgTG9j
a0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzLCB0YXJnZXRG
cmFtZS0+aXNNYWluRnJhbWUoKSA/IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZEFsbG93IDogU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsK
KyAgICAgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+
ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNl
UmVxdWVzdCwgeyB9LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBN
YXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0Zy
YW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcywgdGFyZ2V0RnJhbWUtPmlzTWFpbkZyYW1lKCkgPyBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdyA6IFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWlu
RnJhbWU6OlVua25vd24gfTsKICAgICAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5sb2Fk
RnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIG51bGxwdHIsIG51bGxwdHIp
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG9wZW5OZXdXaW5kb3cobV9jb250ZXh0Lmhp
dFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwgKmZyYW1lLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5k
ZXggZmM3MDhmN2MxNzMuLjgwM2FmNmZmZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC0yMTk3LDEwICsyMTk3LDExIEBAIFJlZlB0cjxGcmFtZT4gRE9NV2luZG93OjpjcmVhdGVX
aW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluCiAKICAgICAv
LyBGb3Igd2hhdGV2ZXIgcmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGZpcnN0IGZyYW1lIHRvIGRl
dGVybWluZSB0aGUgb3V0Z29pbmdSZWZlcnJlci4gV2UgcmVwbGljYXRlIHRoYXQgYmVoYXZpb3Ig
aGVyZS4KICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZl
cnJlckhlYWRlcihmaXJzdEZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIGNvbXBs
ZXRlZFVSTCwgZmlyc3RGcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIGF1
dG8gaW5pdGlhdGVkQnlNYWluRnJhbWUgPSBhY3RpdmVGcmFtZS0+aXNNYWluRnJhbWUoKSA/IE5h
dmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogTmF2aWdhdGlvbkluaXRpYXRlZEJ5
TWFpbkZyYW1lOjpVbmtub3duOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVz
dCB7IGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIgfTsKICAgICBGcmFtZUxvYWRlcjo6YWRkSFRUUE9y
aWdpbklmTmVlZGVkKHJlc291cmNlUmVxdWVzdCwgZmlyc3RGcmFtZS5sb2FkZXIoKS5vdXRnb2lu
Z09yaWdpbigpKTsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqYWN0
aXZlRG9jdW1lbnQsIGFjdGl2ZURvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJl
cXVlc3QsIGZyYW1lTmFtZSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpO
bywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBO
ZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIGFjdGl2ZURvY3VtZW50LT5zaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7ICphY3RpdmVEb2N1bWVudCwgYWN0aXZlRG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCksIHJlc291cmNlUmVxdWVzdCwgZnJhbWVOYW1lLCBMb2NrSGlzdG9yeTo6Tm8sIExv
Y2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgYWN0aXZlRG9j
dW1lbnQtPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpLCBpbml0aWF0
ZWRCeU1haW5GcmFtZSB9OwogCiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVyIGZyYW1lIGZvciB0
aGUgbG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVudCBmcm9t
CiAgICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMgYSBmcmFt
ZSByZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgpAQCAtMjIyMSw3ICsyMjIyLDcgQEAgUmVm
UHRyPEZyYW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgQXRvbWljU3RyaW4KIAogICAgIGlmIChjcmVhdGVkKSB7CiAgICAgICAgIFJlc291
cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyBjb21wbGV0ZWRVUkwsIHJlZmVycmVyLCBVc2VQ
cm90b2NvbENhY2hlUG9saWN5IH07Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2Fk
UmVxdWVzdCB7ICphY3RpdmVXaW5kb3cuZG9jdW1lbnQoKSwgYWN0aXZlV2luZG93LmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNlUmVxdWVzdCwgQVNDSUlMaXRlcmFsKCJfc2Vs
ZiIpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRS
ZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVy
UG9saWN5OjpBbGxvdywgYWN0aXZlRG9jdW1lbnQtPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb1Byb3BhZ2F0ZSgpIH07CisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVx
dWVzdCB7ICphY3RpdmVXaW5kb3cuZG9jdW1lbnQoKSwgYWN0aXZlV2luZG93LmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIHJlc291cmNlUmVxdWVzdCwgQVNDSUlMaXRlcmFsKCJfc2VsZiIp
LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZl
cnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9s
aWN5OjpBbGxvdywgYWN0aXZlRG9jdW1lbnQtPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b1Byb3BhZ2F0ZSgpLCBpbml0aWF0ZWRCeU1haW5GcmFtZSB9OwogICAgICAgICBuZXdGcmFtZS0+
bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CiAgICAg
fSBlbHNlIGlmICghdXJsU3RyaW5nLmlzRW1wdHkoKSkgewogICAgICAgICBMb2NrSGlzdG9yeSBs
b2NrSGlzdG9yeSA9IFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpID8g
TG9ja0hpc3Rvcnk6Ok5vIDogTG9ja0hpc3Rvcnk6OlllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCAw
NTkwM2Q4ZTI5NC4uOWZhNTQ0NDkxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxNy0wNy0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWxsb3cgbmF2aWdhdGlvbnMgaW4gc3ViZnJhbWVzIHRvIGdldCBhIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgb2YgIlNob3VsZEFsbG93Ii4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzIyNDg1NTg5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NDE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAg
QWRvcHQgdG8gdGhlIG5ldyBjb25zdHJ1Y3RvciBmb3IgRnJhbWVMb2FkUmVxdWVzdC4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQ
REZWaWV3UGxhY2Vob2xkZXIgc2ltdWxhdGVDbGlja09uTGlua1RvVVJMOl0pOgorCiAyMDE3LTA3
LTAxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEV4
cG9zZSB2aWV3cG9ydC1maXQgdmFsdWUgdG8gVUlLaXQgdmlhIHZpZXdwb3J0IGFyZ3VtZW50cyBk
aWN0aW9uYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBERlZp
ZXdQbGFjZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld1Bs
YWNlaG9sZGVyLm1tCmluZGV4IGRhNDE4ODRmNzE1Li4wNzQ1YWI3NWY1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KQEAgLTQ4
Nyw3ICs0ODcsNyBAQCAtICh2b2lkKXNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDooTlNVUkwgKilV
UkwKIAogICAgIC8vIENhbGwgdG8gdGhlIGZyYW1lIGxvYWRlciBiZWNhdXNlIHRoaXMgaXMgd2hl
cmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBhcmUgbWFkZS4KICAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KFtfZGF0YVNvdXJjZSB3ZWJGcmFtZV0pOwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2Fk
UmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIHsgVVJMIH0sIHsgfSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRM
aXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6
WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6OlNob3VsZE5vdEFsbG93IH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRS
ZXF1ZXN0IHsgKmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgeyBVUkwgfSwgeyB9LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExp
c3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZ
ZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkTm90QWxsb3csICBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVu
a25vd24gfTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZy
YW1lTG9hZFJlcXVlc3QpLCBldmVudC5nZXQoKSwgbnVsbHB0cik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCAyZTc1YTdjYjMwOC4uYTMxMTY3ZTU4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNy0wNy0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWxsb3cgbmF2aWdhdGlvbnMgaW4gc3ViZnJhbWVzIHRvIGdldCBhIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgb2YgIlNob3VsZEFsbG93Ii4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzIyNDg1NTg5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NDE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisK
KyAgICAgICAgQWRvcHQgdG8gdGhlIG5ldyBjb25zdHJ1Y3RvciBmb3IgRnJhbWVMb2FkUmVxdWVz
dC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKC1bV2ViUERG
VmlldyBQREZWaWV3V2lsbENsaWNrT25MaW5rOndpdGhVUkw6XSk6CisKIDIwMTctMDctMDMgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBhbGwgV2Vi
S2l0IEFQSSByZWxhdGVkIHRvIGZhdmljb25zIGZyb20gV2ViSWNvbkRhdGFiYXNlIG92ZXIgdG8g
bmV3IFdlYkNvcmU6Okljb25Mb2FkZXIgbWVjaGFuaXNtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQREZWaWV3Lm1tCmluZGV4IDQ3Y2UzNzExMmE2Li45NzljM2I1OTliZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgLSAo
dm9pZClQREZWaWV3V2lsbENsaWNrT25MaW5rOihQREZWaWV3ICopc2VuZGVyIHdpdGhVUkw6KE5T
VVJMICopVVJMCiAKICAgICAvLyBDYWxsIHRvIHRoZSBmcmFtZSBsb2FkZXIgYmVjYXVzZSB0aGlz
IGlzIHdoZXJlIG91ciBzZWN1cml0eSBjaGVja3MgYXJlIG1hZGUuCiAgICAgRnJhbWUqIGZyYW1l
ID0gY29yZShbZGF0YVNvdXJjZSB3ZWJGcmFtZV0pOwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCksIHsgVVJMIH0sIHsgfSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0Zv
cndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFt
ZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgeyBVUkwgfSwgeyB9LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9y
d2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1v
dmUoZnJhbWVMb2FkUmVxdWVzdCksIGV2ZW50LmdldCgpLCBudWxscHRyKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDc3N2EyY2Q4MDcxLi4zY2U3NjQ2ZjQ2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDE3LTA3LTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBBbGxvdyBuYXZpZ2F0aW9ucyBpbiBzdWJmcmFtZXMgdG8gZ2V0IGEg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBvZiAiU2hvdWxkQWxsb3ciLgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjI0ODU1ODk+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc0MTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNl
bi4KKworICAgICAgICBBZG9wdCB0byB0aGUgbmV3IGNvbnN0cnVjdG9yIGZvciBGcmFtZUxvYWRS
ZXF1ZXN0LgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpblZpZXc6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OmdldFVSTE5vdGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpnZXRVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlUG9zdCk6CisKIDIwMTctMDctMDMg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBhbGwg
V2ViS2l0IEFQSSByZWxhdGVkIHRvIGZhdmljb25zIGZyb20gV2ViSWNvbkRhdGFiYXNlIG92ZXIg
dG8gbmV3IFdlYkNvcmU6Okljb25Mb2FkZXIgbWVjaGFuaXNtLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNTIyYTRiYWM5YjguLjc3Y2ZjZmRmYmFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI1NSw3ICsyNTUsNyBA
QCBib29sIFBsdWdpblZpZXc6OnN0YXJ0KCkKICAgICBtX2lzU3RhcnRlZCA9IHRydWU7CiAKICAg
ICBpZiAoIW1fdXJsLmlzRW1wdHkoKSAmJiAhbV9sb2FkTWFudWFsbHkpIHsKLSAgICAgICAgRnJh
bWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKm1fcGFyZW50RnJhbWUtPmRvY3VtZW50
KCksIG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgeyB9
LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRTZW5kUmVm
ZXJyZXI6Ok1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olll
cywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGROb3RBbGxvdyB9OworICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9h
ZFJlcXVlc3QgeyAqbV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKSwgbV9wYXJlbnRGcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB9LCB7IH0sIExvY2tIaXN0b3J5OjpObywgTG9j
a0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZlcnJlcjo6TWF5YmVTZW5kUmVmZXJy
ZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGlj
eTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBO
YXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKICAgICAgICAgZnJhbWVM
b2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKICAgICAg
ICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwobV91cmwpOwogICAg
ICAgICBsb2FkKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIGZhbHNlLCBudWxscHRyKTsKQEAg
LTUzNCw3ICs1MzQsNyBAQCBzdGF0aWMgVVJMIG1ha2VVUkwoY29uc3QgVVJMJiBiYXNlVVJMLCBj
b25zdCBjaGFyKiByZWxhdGl2ZVVSTFN0cmluZykKIAogTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRV
UkxOb3RpZnkoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQsIHZvaWQqIG5vdGlm
eURhdGEpCiB7Ci0gICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKm1fcGFy
ZW50RnJhbWUtPmRvY3VtZW50KCksIG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIHsgfSwgdGFyZ2V0LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExp
c3Q6Ok5vLCBTaG91bGRTZW5kUmVmZXJyZXI6Ok1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmln
YXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OworICAgIEZyYW1lTG9h
ZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICptX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLCBt
X3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IH0sIHRhcmdldCwg
TG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVy
cmVyOjpNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMs
IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eTo6U2hvdWxkTm90QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93
biB9OwogCiAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0
aG9kKCJHRVQiKTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldFVS
TChtYWtlVVJMKG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKSk7CkBA
IC01NDQsNyArNTQ0LDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRVUkxOb3RpZnkoY29uc3Qg
Y2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQsIHZvaWQqIG5vdGkKIAogTlBFcnJvciBQbHVn
aW5WaWV3OjpnZXRVUkwoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQpCiB7Ci0g
ICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKm1fcGFyZW50RnJhbWUtPmRv
Y3VtZW50KCksIG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsg
fSwgdGFyZ2V0LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91
bGRTZW5kUmVmZXJyZXI6Ok1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7ICptX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLCBtX3BhcmVudEZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IH0sIHRhcmdldCwgTG9ja0hpc3Rvcnk6
Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVycmVyOjpNYXliZVNl
bmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3Bl
bmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3csIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwogCiAgICAg
ZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJHRVQiKTsK
ICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldFVSTChtYWtlVVJMKG1f
cGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKSk7CkBAIC0xMDg3LDcgKzEw
ODcsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3QoY29uc3QgY2hhciogdXJsLCBj
b25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMl90IGxlbgogICAgICAgICB9CiAgICAgfQogCi0gICAg
RnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKm1fcGFyZW50RnJhbWUtPmRvY3Vt
ZW50KCksIG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgfSwg
dGFyZ2V0LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRT
ZW5kUmVmZXJyZXI6Ok1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
Ukw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVM
b2FkUmVxdWVzdCB7ICptX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLCBtX3BhcmVudEZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IH0sIHRhcmdldCwgTG9ja0hpc3Rvcnk6Ok5v
LCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVycmVyOjpNYXliZVNlbmRS
ZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVy
UG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxs
b3csIE5hdmlnYXRpb25Jbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwogICAgIGZyYW1l
TG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwogICAg
IGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0VVJMKG1ha2VVUkwobV9wYXJl
bnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpKTsKICAgICBmcmFtZUxvYWRSZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShoZWFkZXJG
aWVsZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzNjU1OTdhZjMxMy4uODZhOTk2YTQ4NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0wNy0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgbmF2aWdhdGlvbnMgaW4gc3ViZnJhbWVzIHRvIGdl
dCBhIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgb2YgIlNob3VsZEFsbG93Ii4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzIyNDg1NTg5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NDE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0
ZW5zZW4uCisKKyAgICAgICAgQWRvcHQgdG8gdGhlIG5ldyBjb25zdHJ1Y3RvciBmb3IgRnJhbWVM
b2FkUmVxdWVzdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bG9hZFVSTCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3I6Om9wZW5Jbk5ld1RhYik6CisKIDIwMTctMDctMDMgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBhbGwgV2ViS2l0IEFQ
SSByZWxhdGVkIHRvIGZhdmljb25zIGZyb20gV2ViSWNvbkRhdGFiYXNlIG92ZXIgdG8gbmV3IFdl
YkNvcmU6Okljb25Mb2FkZXIgbWVjaGFuaXNtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGM1OGM1Y2I5NTg5Li5mOTFlZmJjZWU3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcApAQCAtMTM4OCw3ICsxMzg4LDcgQEAgU3RyaW5nIFBsdWdpblZpZXc6OnVzZXJBZ2VudCgp
CiAKIHZvaWQgUGx1Z2luVmlldzo6bG9hZFVSTCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcywgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBodHRwQm9keSwgYm9vbCBhbGxvd1BvcHVwcykKIHsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0
IGZyYW1lTG9hZFJlcXVlc3QgeyBtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCksIG1fcGx1Z2lu
RWxlbWVudC0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLCB7IH0sIHRhcmdldCwgTG9ja0hp
c3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxs
b3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CisgICAg
RnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9wbHVnaW5FbGVtZW50LT5kb2N1
bWVudCgpLCBtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSwgeyB9
LCB0YXJnZXQsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJl
U2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVP
cGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRO
b3RBbGxvdywgTmF2aWdhdGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CiAgICAg
ZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKG1ldGhvZCk7
CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwobV9wbHVnaW5F
bGVtZW50LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybFN0cmluZykpOwogICAgIGZyYW1lTG9h
ZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUEhlYWRlckZpZWxkcyhoZWFkZXJGaWVs
ZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBiMjkxNjlhYzdjMi4u
Mzk5M2Y4OGMxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC02NTMs
NyArNjUzLDcgQEAgRnJhbWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBh
Z2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBKdXN0IGNhbGwgdGhyb3VnaCB0byB0aGUgY2hyb21lIGNsaWVudC4KLSAg
ICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbV9mcmFtZS0+Y29yZUZyYW1l
KCktPmRvY3VtZW50KCksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCB7IH0sIExvY2tI
aXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBB
bGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFs
bG93LCBuYXZpZ2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSB9Owor
ICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICptX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+ZG9jdW1lbnQoKSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHsgfSwgTG9j
a0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIs
IEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6
QWxsb3csIG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpLCBO
YXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKICAgICBQYWdlKiBuZXdQ
YWdlID0gd2ViUGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KCptX2ZyYW1l
LT5jb3JlRnJhbWUoKSwgZnJhbWVMb2FkUmVxdWVzdCwgeyB9LCBuYXZpZ2F0aW9uQWN0aW9uKTsK
ICAgICBpZiAoIW5ld1BhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCAxYWU2
MGFmMjY5NC4uM2E2MGY2ZDNhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3I6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybFN0cmluZykKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRnJhbWUmIGluc3BlY3RlZE1haW5GcmFtZSA9IGluc3BlY3RlZFBhZ2Ut
Pm1haW5GcmFtZSgpOwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpp
bnNwZWN0ZWRNYWluRnJhbWUuZG9jdW1lbnQoKSwgaW5zcGVjdGVkTWFpbkZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgdXJsU3RyaW5nIH0sIEFTQ0lJTGl0ZXJhbCgiX2JsYW5r
IiksIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJl
ZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQ
b2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dyB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICppbnNwZWN0ZWRN
YWluRnJhbWUuZG9jdW1lbnQoKSwgaW5zcGVjdGVkTWFpbkZyYW1lLmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIHsgdXJsU3RyaW5nIH0sIEFTQ0lJTGl0ZXJhbCgiX2JsYW5rIiksIExvY2tI
aXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBB
bGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFs
bG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgTmF2aWdh
dGlvbkluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CiAKICAgICBOYXZpZ2F0aW9uQWN0
aW9uIGFjdGlvbiB7ICppbnNwZWN0ZWRNYWluRnJhbWUuZG9jdW1lbnQoKSwgZnJhbWVMb2FkUmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgTmF2aWdhdGlvblR5cGU6OkxpbmtDbGlja2VkIH07CiAg
ICAgUGFnZSogbmV3UGFnZSA9IGluc3BlY3RlZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhp
bnNwZWN0ZWRNYWluRnJhbWUsIGZyYW1lTG9hZFJlcXVlc3QsIHsgfSwgYWN0aW9uKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>