<?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>208748</bug_id>
          
          <creation_ts>2020-03-06 16:16:18 -0800</creation_ts>
          <short_desc>Add SPI to disable cross origin access control checks</short_desc>
          <delta_ts>2020-03-06 20:08:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1626949</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-06 16:16:18 -0800</bug_when>
    <thetext>Add SPI to disable cross origin access control checks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626951</commentid>
    <comment_count>1</comment_count>
      <attachid>392797</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-06 16:20:08 -0800</bug_when>
    <thetext>Created attachment 392797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626969</commentid>
    <comment_count>2</comment_count>
      <attachid>392804</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-06 16:36:01 -0800</bug_when>
    <thetext>Created attachment 392804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626995</commentid>
    <comment_count>3</comment_count>
      <attachid>392814</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-06 17:05:37 -0800</bug_when>
    <thetext>Created attachment 392814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627081</commentid>
    <comment_count>4</comment_count>
      <attachid>392831</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-06 18:35:17 -0800</bug_when>
    <thetext>Created attachment 392831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627121</commentid>
    <comment_count>5</comment_count>
      <attachid>392831</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-06 20:08:00 -0800</bug_when>
    <thetext>Comment on attachment 392831
Patch

Clearing flags on attachment: 392831

Committed r258052: &lt;https://trac.webkit.org/changeset/258052&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627122</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-06 20:08:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627123</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-06 20:08:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/60180982&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392797</attachid>
            <date>2020-03-06 16:20:08 -0800</date>
            <delta_ts>2020-03-06 16:36:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208748-20200306162007.patch</filename>
            <type>text/plain</type>
            <size>50236</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIwLTAzLTA2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBkaXNhYmxlIGNyb3NzIG9yaWdpbiBhY2Nlc3MgY29udHJvbCBjaGVja3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc0OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk4NjExMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQmVjYXVzZSBsb2FkaW5nIGlzIGRvbmUgcHJvY2Vzcy1nbG9iYWxseSBp
biB0aGUgV2ViUHJvY2VzcywgdXNlIGEgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNh
Ymxlcjo6c2luZ2xldG9uIGZvciB0aG9zZSBjaGVja3MuCisgICAgICAgIFBhc3MgYSBwYXJhbWV0
ZXIgdG8gdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcnMgdG8gZGlzYWJsZSB0aGVzZSBjaGVja3Mg
b25seSBmb3IgbG9hZHMgZnJvbSBhIHdlYiBwcm9jZXNzIHdpdGhvdXQgYWNjZXNzIGNvbnRyb2wg
Y2hlY2tzLgorICAgICAgICBBcyBsb25nIGFzIHdlJ3JlIGNoYW5naW5nIHRoZSBzaWduYXR1cmUg
b2YgcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrLCBtYWtlIGl0IHJldHVybiBhbiBFeHBlY3RlZCBp
bnN0ZWFkIG9mIGEgYm9vbCB3aXRoIGFuIG91dCBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBsb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzZXRDcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnBhc3Nlc0FjY2Vzc0NvbnRy
b2xDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKToK
KyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg6CisgICAgICAgICog
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OnZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2Up
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAg
ICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1
YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjaGVja1JlZGly
ZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWRGcm9tKToKKwogMjAyMC0w
My0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSB0aGUgb3B0aW1pemF0aW9uIGZvciBkaXNjYXJkaW5nIG5vIG9wZXJhdGlvbiBE
aXNwbGF5TGlzdCBpdGVtcyBiZXR3ZWVuIFNhdmUgYW5kIFJlc3RvcmUgaXRlbXMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3Bw
CShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgog
I2luY2x1ZGUgPG11dGV4PgpAQCAtMjA2LDU1ICsyMDcsNzQgQEAgdm9pZCBjbGVhbkhUVFBSZXF1
ZXN0SGVhZGVyc0ZvckFjY2Vzc0NvbgogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUEFjY2VwdEVu
Y29kaW5nKCk7CiB9CiAKLWJvb2wgcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBTdHJpbmcmIGVy
cm9yRGVzY3JpcHRpb24pCitDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyJiBD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0b24oKQogeworICAg
IEFTU0VSVCghaXNJbk5ldHdvcmtQcm9jZXNzKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyPiBkaXNhYmxlcjsKKyAgICBy
ZXR1cm4gZGlzYWJsZXIuZ2V0KCk7Cit9CisKK3ZvaWQgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tEaXNhYmxlcjo6c2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGJv
b2wgZW5hYmxlZCkKK3sKKyAgICBBU1NFUlQoIWlzSW5OZXR3b3JrUHJvY2VzcygpKTsKKyAgICBt
X2FjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBlbmFibGVkOworfQorCitib29sIENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc0luTmV0d29ya1Byb2Nlc3MoKSk7
CisgICAgcmV0dXJuIG1fYWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKK30KKworRXhwZWN0ZWQ8
dm9pZCwgU3RyaW5nPiBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IENyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIqIGNoZWNrRGlzYWJsZXIpCit7CisgICAg
aWYgKGNoZWNrRGlzYWJsZXIgJiYgIWNoZWNrRGlzYWJsZXItPmNyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbENoZWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4geyB9OworCiAgICAgLy8gQSB3aWxk
Y2FyZCBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gY2FuIG5vdCBiZSB1c2VkIGlmIGNyZWRl
bnRpYWxzIGFyZSB0byBiZSBzZW50LAogICAgIC8vIGV2ZW4gd2l0aCBBY2Nlc3MtQ29udHJvbC1B
bGxvdy1DcmVkZW50aWFscyBzZXQgdG8gdHJ1ZS4KICAgICBjb25zdCBTdHJpbmcmIGFjY2Vzc0Nv
bnRyb2xPcmlnaW5TdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkFjY2Vzc0NvbnRyb2xBbGxvd09yaWdpbik7CiAgICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmln
aW5TdHJpbmcgPT0gIioiICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpEb05vdFVzZSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiB7IH07CiAKICAgICBTdHJpbmcgc2VjdXJpdHlPcmlnaW5TdHJpbmcgPSBzZWN1cml0eU9y
aWdpbi50b1N0cmluZygpOwogICAgIGlmIChhY2Nlc3NDb250cm9sT3JpZ2luU3RyaW5nICE9IHNl
Y3VyaXR5T3JpZ2luU3RyaW5nKSB7CiAgICAgICAgIGlmIChhY2Nlc3NDb250cm9sT3JpZ2luU3Ry
aW5nID09ICIqIikKLSAgICAgICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAiQ2Fubm90IHVzZSB3
aWxkY2FyZCBpbiBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gd2hlbiBjcmVkZW50aWFscyBm
bGFnIGlzIHRydWUuIl9zOwotICAgICAgICBlbHNlIGlmIChhY2Nlc3NDb250cm9sT3JpZ2luU3Ry
aW5nLmZpbmQoJywnKSAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIGVycm9yRGVzY3JpcHRpb24g
PSAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIGNhbm5vdCBjb250YWluIG1vcmUgdGhhbiBv
bmUgb3JpZ2luLiJfczsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZXJyb3JEZXNjcmlwdGlv
biA9IG1ha2VTdHJpbmcoIk9yaWdpbiAiLCBzZWN1cml0eU9yaWdpblN0cmluZywgIiBpcyBub3Qg
YWxsb3dlZCBieSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4uIik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiQ2Fubm90IHVzZSB3
aWxkY2FyZCBpbiBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gd2hlbiBjcmVkZW50aWFscyBm
bGFnIGlzIHRydWUuIl9zKTsKKyAgICAgICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcu
ZmluZCgnLCcpICE9IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gY2Fubm90IGNvbnRhaW4gbW9yZSB0aGFuIG9u
ZSBvcmlnaW4uIl9zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJpbmco
Ik9yaWdpbiAiLCBzZWN1cml0eU9yaWdpblN0cmluZywgIiBpcyBub3QgYWxsb3dlZCBieSBBY2Nl
c3MtQ29udHJvbC1BbGxvdy1PcmlnaW4uIikpOwogICAgIH0KIAogICAgIGlmIChzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSA9PSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgYWNjZXNzQ29udHJvbENyZWRlbnRpYWxzU3RyaW5nID0gcmVzcG9uc2Uu
aHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sQWxsb3dDcmVkZW50
aWFscyk7Ci0gICAgICAgIGlmIChhY2Nlc3NDb250cm9sQ3JlZGVudGlhbHNTdHJpbmcgIT0gInRy
dWUiKSB7Ci0gICAgICAgICAgICBlcnJvckRlc2NyaXB0aW9uID0gIkNyZWRlbnRpYWxzIGZsYWcg
aXMgdHJ1ZSwgYnV0IEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIGlzIG5vdCBcInRy
dWVcIi4iOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGlm
IChhY2Nlc3NDb250cm9sQ3JlZGVudGlhbHNTdHJpbmcgIT0gInRydWUiKQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJDcmVkZW50aWFscyBmbGFnIGlzIHRydWUsIGJ1dCBBY2Nl
c3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyBpcyBub3QgXCJ0cnVlXCIuIl9zKTsKICAgICB9
CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4geyB9OwogfQogCi1ib29sIHZhbGlkYXRl
UHJlZmxpZ2h0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgU3RyaW5n
JiBlcnJvckRlc2NyaXB0aW9uKQorRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiB2YWxpZGF0ZVByZWZs
aWdodFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0
IENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIqIGNoZWNrRGlzYWJsZXIpCiB7
Ci0gICAgaWYgKCFyZXNwb25zZS5pc1N1Y2Nlc3NmdWwoKSkgewotICAgICAgICBlcnJvckRlc2Ny
aXB0aW9uID0gIlByZWZsaWdodCByZXNwb25zZSBpcyBub3Qgc3VjY2Vzc2Z1bCJfczsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBpZiAoIXJlc3BvbnNlLmlzU3VjY2Vzc2Z1bCgp
KQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlByZWZsaWdodCByZXNwb25zZSBpcyBu
b3Qgc3VjY2Vzc2Z1bCJfcyk7CiAKLSAgICBpZiAoIXBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhy
ZXNwb25zZSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNlY3VyaXR5T3JpZ2luLCBlcnJvckRl
c2NyaXB0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gYWNjZXNzQ29udHJv
bENoZWNrUmVzdWx0ID0gcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgc2VjdXJpdHlPcmlnaW4sIGNoZWNrRGlzYWJsZXIpOworICAgIGlm
ICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KQorICAgICAgICByZXR1cm4gYWNjZXNzQ29udHJv
bENoZWNrUmVzdWx0OwogCiAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPihzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAg
U3RyaW5nIGVycm9yRGVzY3JpcHRpb247CisgICAgLy8gRklYTUU6IGFsbG93c0Nyb3NzT3JpZ2lu
TWV0aG9kIGFuZCBhbGxvd3NDcm9zc09yaWdpbkhlYWRlcnMgc2hvdWxkIHJldHVybiBFeHBlY3Rl
ZDx2b2lkLCBTdHJpbmc+IHRvIGF2b2lkIGhhdmluZyBhbiBvdXQgcGFyYW1ldGVyLgogICAgIGlm
ICghcmVzdWx0LT5wYXJzZShyZXNwb25zZSkKICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jv
c3NPcmlnaW5NZXRob2QocmVxdWVzdC5odHRwTWV0aG9kKCksIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBlcnJvckRlc2NyaXB0aW9uKQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09y
aWdpbkhlYWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCksIHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBlcnJvckRlc2NyaXB0aW9uKSkgewotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvckRlc2NyaXB0aW9uKTsKICAgICB9CiAKICAg
ICBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjpzaW5nbGV0b24oKS5hcHBlbmRFbnRy
eShzZWN1cml0eU9yaWdpbi50b1N0cmluZygpLCByZXF1ZXN0LnVybCgpLCBXVEZNb3ZlKHJlc3Vs
dCkpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiB7IH07CiB9CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBzaG91bGRDcm9zc09yaWdpblJlc291cmNlUG9saWN5Q2FuY2VsTG9hZChjb25zdCBT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmgJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAj
aW5jbHVkZSAiU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQu
aD4KIApAQCAtNjYsOCArNjcsMTggQEAgZW51bSBjbGFzcyBIVFRQSGVhZGVyc1RvS2VlcEZyb21D
bGVhbmluZwogT3B0aW9uU2V0PEhUVFBIZWFkZXJzVG9LZWVwRnJvbUNsZWFuaW5nPiBodHRwSGVh
ZGVyc1RvS2VlcEZyb21DbGVhbmluZyhjb25zdCBIVFRQSGVhZGVyTWFwJik7CiBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNsZWFuSFRUUFJlcXVlc3RIZWFkZXJzRm9yQWNjZXNzQ29udHJvbChSZXNvdXJj
ZVJlcXVlc3QmLCBPcHRpb25TZXQ8SFRUUEhlYWRlcnNUb0tlZXBGcm9tQ2xlYW5pbmc+KTsKIAot
V0VCQ09SRV9FWFBPUlQgYm9vbCBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBTZWN1cml0eU9yaWdpbiYsIFN0
cmluZyYgZXJyb3JEZXNjcmlwdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHZhbGlkYXRlUHJl
ZmxpZ2h0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBTZWN1cml0eU9yaWdpbiYsIFN0cmluZyYg
ZXJyb3JEZXNjcmlwdGlvbik7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBDcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0Rpc2FibGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlciYgc2luZ2xldG9uKCk7CisgICAgdmlydHVhbCB+Q3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcigpID0gZGVmYXVsdDsKKyAgICB2b2lk
IHNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChib29sKTsKKyAgICB2aXJ0
dWFsIGJvb2wgY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKCkgY29uc3Q7Citw
cml2YXRlOgorICAgIGJvb2wgbV9hY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIHsgdHJ1ZSB9Owor
fTsKKworV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBwYXNzZXNBY2Nlc3ND
b250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IENyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRGlzYWJsZXIqKTsKK1dFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4g
dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiwgY29uc3QgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlciopOwog
CiBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZUNyb3NzT3Jp
Z2luUmVzb3VyY2VQb2xpY3koY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiBPcHRpb25hbDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZVJh
bmdlUmVxdWVzdGVkRmxhZyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDEyICs2MywxMiBAQCB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6
dmFsaWRhCiAgICAgYXV0byogZnJhbWUgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpOwogICAg
IEFTU0VSVChmcmFtZSk7CiAKLSAgICBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbjsKLSAgICBpZiAo
IVdlYkNvcmU6OnZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UocmVxdWVzdCwgcmVzcG9uc2UsIGxv
YWRlci5vcHRpb25zKCkuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGxvYWRlci5zZWN1cml0eU9y
aWdpbigpLCBlcnJvckRlc2NyaXB0aW9uKSkgeworICAgIGF1dG8gcmVzdWx0ID0gV2ViQ29yZTo6
dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZShyZXF1ZXN0LCByZXNwb25zZSwgbG9hZGVyLm9wdGlv
bnMoKS5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksICZD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0b24oKSk7CisgICAg
aWYgKCFyZXN1bHQpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUtPmRvY3Vt
ZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yRGVzY3JpcHRpb24pOwor
ICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNl
Y3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCByZXN1bHQuZXJyb3IoKSk7CiAKLSAgICAgICAg
bG9hZGVyLnByZWZsaWdodEZhaWx1cmUoaWRlbnRpZmllciwgUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCBlcnJvckRlc2NyaXB0aW9uLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sKSk7CisgICAgICAgIGxvYWRlci5wcmVm
bGlnaHRGYWlsdXJlKGlkZW50aWZpZXIsIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgcmVzdWx0LmVycm9yKCksIFJlc291cmNlRXJyb3I6
OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTYsOSArNjE2LDkgQEAgdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZQogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6
TW9kZTo6Q29ycyk7CiAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0VGFpbnRpbmcoUmVzb3Vy
Y2VSZXNwb25zZTo6VGFpbnRpbmc6OkNvcnMpOwotICAgICAgICAgICAgICAgIFN0cmluZyBhY2Nl
c3NDb250cm9sRXJyb3JEZXNjcmlwdGlvbjsKLSAgICAgICAgICAgICAgICBpZiAoIXBhc3Nlc0Fj
Y2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwgbV9vcHRpb25zLnN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBzZWN1cml0eU9yaWdpbigpLCBhY2Nlc3NDb250cm9sRXJyb3JEZXNjcmlwdGlvbikpIHsK
LSAgICAgICAgICAgICAgICAgICAgbG9nRXJyb3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JE
b21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksIGFjY2Vzc0NvbnRyb2xFcnJv
ckRlc2NyaXB0aW9uLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sKSk7CisgICAg
ICAgICAgICAgICAgYXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQgPSBwYXNzZXNBY2Nlc3ND
b250cm9sQ2hlY2socmVzcG9uc2UsIG1fb3B0aW9ucy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
c2VjdXJpdHlPcmlnaW4oKSwgJkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6
OnNpbmdsZXRvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVja1Jl
c3VsdCkgeworICAgICAgICAgICAgICAgICAgICBsb2dFcnJvckFuZEZhaWwoUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgYWNjZXNzQ29u
dHJvbENoZWNrUmVzdWx0LmVycm9yKCksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRy
b2wpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDkgKzI4MSw5IEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEkKICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uOwotICAgICAgICBpZiAoIWNoZWNrUmVkaXJlY3Rp
b25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wocmVxdWVzdCgpLCByZWRpcmVjdFJlc3BvbnNlLCBu
ZXdSZXF1ZXN0LCBlcnJvckRlc2NyaXB0aW9uKSkgewotICAgICAgICAgICAgU3RyaW5nIGVycm9y
TWVzc2FnZSA9ICJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiArIG5ld1JlcXVlc3QudXJs
KCkuc3RyaW5nKCkgKyAiIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBw
b2xpY3k6ICIgKyBlcnJvckRlc2NyaXB0aW9uOworICAgICAgICBhdXRvIGFjY2Vzc0NvbnRyb2xD
aGVja1Jlc3VsdCA9IGNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wocmVx
dWVzdCgpLCByZWRpcmVjdFJlc3BvbnNlLCBuZXdSZXF1ZXN0KTsKKyAgICAgICAgaWYgKCFhY2Nl
c3NDb250cm9sQ2hlY2tSZXN1bHQpIHsKKyAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0g
bWFrZVN0cmluZygiQ3Jvc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIHRvICIsIG5ld1JlcXVlc3QudXJs
KCkuc3RyaW5nKCksICIgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBv
bGljeTogIiwgYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0LmVycm9yKCkpOwogICAgICAgICAgICAg
aWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0
eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2Fk
IGNhbmNlbGVkIGJlY2F1c2UgY3Jvc3NzLW9yaWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkgQ09S
UyBwb2xpY3kiKTsKQEAgLTQxMSwxMiArNDExLDEyIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb24KICAgICAgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+ZGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpjYWNoZWRSZXNvdXJjZVJldmFsaWRhdGlvbktleSgpLCBlbXB0eVN0cmlu
ZygpLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdEZhaWwsIFNob3VsZFNhbXBsZTo6WWVzKTsKICAg
ICB9CiAKLSAgICBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbjsKLSAgICBpZiAoIWNoZWNrUmVzcG9u
c2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wocmVzcG9uc2UsIGVycm9yRGVzY3JpcHRpb24pKSB7
CisgICAgYXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQgPSBjaGVja1Jlc3BvbnNlQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sKHJlc3BvbnNlKTsKKyAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVj
a1Jlc3VsdCkgewogICAgICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQot
ICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yRGVzY3JpcHRpb24p
OworICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGFjY2Vzc0NvbnRyb2xD
aGVja1Jlc3VsdC5lcnJvcigpKTsKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
UmVjZWl2ZVJlc3BvbnNlOiBjYW5jZWxpbmcgbG9hZCBiZWNhdXNlIG9mIGNyb3NzIG9yaWdpbiBh
Y2Nlc3MgY29udHJvbCIpOwotICAgICAgICBjYW5jZWwoUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwg
MCwgcmVxdWVzdCgpLnVybCgpLCBlcnJvckRlc2NyaXB0aW9uLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpBY2Nlc3NDb250cm9sKSk7CisgICAgICAgIGNhbmNlbChSZXNvdXJjZUVycm9yKFN0cmluZygp
LCAwLCByZXF1ZXN0KCkudXJsKCksIGFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdC5lcnJvcigpLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTYwMCwyMiArNjAwLDI1IEBAIHN0YXRpYyB2b2lkIGxvZ1Jlc291cmNlTG9hZGVk
KEZyYW1lKiBmcmEKICAgICBmcmFtZS0+cGFnZSgpLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgp
LmxvZ0RpYWdub3N0aWNNZXNzYWdlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2Fk
ZWRLZXkoKSwgcmVzb3VyY2VUeXBlLCBTaG91bGRTYW1wbGU6Olllcyk7CiB9CiAKLWJvb2wgU3Vi
cmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbikK
K0V4cGVjdGVkPHZvaWQsIFN0cmluZz4gU3VicmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVzcG9uc2VD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7CiAgICAgaWYgKCFtX3Jlc291cmNlLT5pc0Nyb3NzT3JpZ2luKCkgfHwgb3B0aW9ucygpLm1v
ZGUgIT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAo
cmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29y
a2VyKQotICAgICAgICByZXR1cm4gcmVzcG9uc2UudGFpbnRpbmcoKSAhPSBSZXNvdXJjZVJlc3Bv
bnNlOjpUYWludGluZzo6T3BhcXVlOworICAgIGlmIChyZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNv
dXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpIHsKKyAgICAgICAgaWYgKHJlc3Bv
bnNlLnRhaW50aW5nKCkgIT0gUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZSkKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiQWNjZXNzIGNvbnRyb2wgY2hlY2sgZmFp
bGVkIGJlY2F1c2UgcmVzcG9uc2Ugc291cmNlIHdhcyBzZXJ2aWNlIHdvcmtlciBhbmQgdGFpbnRp
bmcgd2FzIG9wYXF1ZS4iX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KICNlbmRpZgog
CiAgICAgQVNTRVJUKG1fb3JpZ2luKTsKIAotICAgIHJldHVybiBwYXNzZXNBY2Nlc3NDb250cm9s
Q2hlY2socmVzcG9uc2UsIG9wdGlvbnMoKS5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNy
ZWRlbnRpYWxzOjpJbmNsdWRlID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSA6IFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgKm1fb3JpZ2luLCBlcnJvckRlc2NyaXB0aW9u
KTsKKyAgICByZXR1cm4gcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBvcHRpb25z
KCkuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9O
b3RVc2UsICptX29yaWdpbiwgJkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6
OnNpbmdsZXRvbigpKTsKIH0KIAotYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZWRpcmVj
dGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZp
b3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgUmVz
b3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK0V4cGVjdGVk
PHZvaWQsIFN0cmluZz4gU3VicmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVkaXJlY3Rpb25Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVz
dCYgbmV3UmVxdWVzdCkKIHsKICAgICBib29sIGNyb3NzT3JpZ2luRmxhZyA9IG1fcmVzb3VyY2Ut
PmlzQ3Jvc3NPcmlnaW4oKTsKICAgICBib29sIGlzTmV4dFJlcXVlc3RDcm9zc09yaWdpbiA9IG1f
b3JpZ2luICYmICFtX29yaWdpbi0+Y2FuUmVxdWVzdChuZXdSZXF1ZXN0LnVybCgpKTsKQEAgLTYy
OSwxNCArNjMyLDE3IEBAIGJvb2wgU3VicmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVkaXJlY3Rpb24K
ICAgICBpZiAob3B0aW9ucygpLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKSB7CiAg
ICAgICAgIGlmIChtX3Jlc291cmNlLT5pc0Nyb3NzT3JpZ2luKCkpIHsKICAgICAgICAgICAgIGF1
dG8gbG9jYXRpb25TdHJpbmcgPSByZWRpcmVjdFJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6TG9jYXRpb24pOwotICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gdmFsaWRh
dGVDcm9zc09yaWdpblJlZGlyZWN0aW9uVVJMKFVSTChyZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBs
b2NhdGlvblN0cmluZykpOworICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IHZhbGlk
YXRlQ3Jvc3NPcmlnaW5SZWRpcmVjdGlvblVSTChVUkwocmVkaXJlY3RSZXNwb25zZS51cmwoKSwg
bG9jYXRpb25TdHJpbmcpKTsKICAgICAgICAgICAgIGlmICghZXJyb3JNZXNzYWdlLmlzTnVsbCgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShlcnJvck1lc3NhZ2UpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIEFTU0VSVChtX29yaWdpbik7Ci0gICAgICAgIGlmIChjcm9zc09yaWdpbkZsYWcgJiYgIXBh
c3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZWRpcmVjdFJlc3BvbnNlLCBvcHRpb25zKCkuc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksICptX29yaWdpbiwgZXJyb3JNZXNzYWdlKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNyb3NzT3JpZ2luRmxhZykgeworICAgICAgICAg
ICAgYXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQgPSBwYXNzZXNBY2Nlc3NDb250cm9sQ2hl
Y2socmVkaXJlY3RSZXNwb25zZSwgb3B0aW9ucygpLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCAq
bV9vcmlnaW4sICZDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0
b24oKSk7CisgICAgICAgICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0OworICAgICAgICB9CiAg
ICAgfQogCiAgICAgYm9vbCByZWRpcmVjdGluZ1RvTmV3T3JpZ2luID0gZmFsc2U7CkBAIC02NjEs
NyArNjY3LDcgQEAgYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZWRpcmVjdGlvbgogICAg
IAogICAgIHVwZGF0ZVJlcXVlc3RSZWZlcnJlcihuZXdSZXF1ZXN0LCByZWZlcnJlclBvbGljeSgp
LCBwcmV2aW91c1JlcXVlc3QuaHR0cFJlZmVycmVyKCkpOwogCi0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6dXBkYXRlUmVmZXJy
ZXJQb2xpY3koY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeVZhbHVlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI1Nzk2MykKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC04OSw4ICs4OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIGNoZWNrRm9ySFRUUFN0YXR1c0NvZGVFcnJvcigpOwotICAg
IGJvb2wgY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgU3RyaW5nJik7Ci0gICAgYm9vbCBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBTdHJp
bmcmKTsKKyAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIEV4cGVjdGVkPHZv
aWQsIFN0cmluZz4gY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgY2hhciosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9u
IDI1Nzk2MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw5ICszNDcsOSBAQCB2b2lkIENhY2hlZFJlc291cmNl
Ojpsb2FkRnJvbShjb25zdCBDYWNoCiAKICAgICBpZiAoaXNDcm9zc09yaWdpbigpICYmIG1fb3B0
aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycykgewogICAgICAgICBBU1NFUlQo
bV9vcmlnaW4pOwotICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwotICAgICAgICBpZiAoIVdl
YkNvcmU6OnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNvdXJjZS5yZXNwb25zZSgpLCBtX29w
dGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksICptX29yaWdpbiwgZXJyb3JNZXNzYWdlKSkg
ewotICAgICAgICAgICAgc2V0UmVzb3VyY2VFcnJvcihSZXNvdXJjZUVycm9yKFN0cmluZygpLCAw
LCB1cmwoKSwgZXJyb3JNZXNzYWdlLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9s
KSk7CisgICAgICAgIGF1dG8gYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0ID0gV2ViQ29yZTo6cGFz
c2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc291cmNlLnJlc3BvbnNlKCksIG1fb3B0aW9ucy5zdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgKm1fb3JpZ2luLCAmQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tEaXNhYmxlcjo6c2luZ2xldG9uKCkpOworICAgICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xD
aGVja1Jlc3VsdCkgeworICAgICAgICAgICAgc2V0UmVzb3VyY2VFcnJvcihSZXNvdXJjZUVycm9y
KFN0cmluZygpLCAwLCB1cmwoKSwgYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0LmVycm9yKCksIFJl
c291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTgwMzYpCisrKyBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDIw
LTAzLTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgQWRkIFNQSSB0byBkaXNhYmxlIGNyb3NzIG9yaWdpbiBhY2Nlc3MgY29udHJvbCBjaGVj
a3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc0
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk4NjExMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXI6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjp2YWxpZGF0ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZs
aWdodCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6
OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6UGluZ0xvYWQpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJh
dGlvbjo6Y29weSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246OnNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0VuYWJsZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZF0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjphZGRQYXJhbWV0ZXJzU2hh
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZy
b21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3Ry
YXRlZ3k6OnN0YXJ0UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjphZGRQYXJhbWV0ZXJzRnJv
bUZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Om1fcHJvY2Vzc0Rpc3BsYXlOYW1lKToKKwogMjAyMC0wMy0w
NiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
IHVuaWZpZWQgYnVpbGQgZml4OyBJbmNsdWRlIHdoYXQgeW91IHVzZSwgaW4gdGhpcyBjYXNlOiBG
cmFtZUluZm9EYXRhLmguCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCShyZXZpc2lvbiAy
NTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIApAQCAtNDAsMTEgKzQxLDEyIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyOjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIoTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgYm9vbCBzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIENvbXBsZXRpb25DYWxsYmFjayYmIGNvbXBsZXRp
b25DYWxsYmFjaykKK05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6TmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Jlc291
cmNlTG9hZGVyKiBuZXR3b3JrUmVzb3VyY2VMb2FkZXIsIFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
LCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgQ29tcGxldGlvbkNh
bGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQogICAgIDogbV9wYXJhbWV0ZXJzKFdURk1vdmUo
cGFyYW1ldGVycykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogICAg
ICwgbV9jb21wbGV0aW9uQ2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spKQogICAg
ICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3Moc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKQorICAgICwgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXIobWFr
ZVdlYWtQdHIobmV0d29ya1Jlc291cmNlTG9hZGVyKSkKIHsKIH0KIApAQCAtMTM3LDEwICsxMzks
MTAgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZENvbQogCiAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQ29tcGxldGUgaHR0cF9zdGF0dXNfY29kZTogJWQiLCBt
X3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogCi0gICAgU3RyaW5nIGVycm9yRGVzY3JpcHRp
b247Ci0gICAgaWYgKCF2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKG1fcGFyYW1ldGVycy5vcmln
aW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbiwgZXJyb3JEZXNjcmlwdGlvbikpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQ29tcGxldGUsIEFjY2Vzc0NvbnRyb2wg
ZXJyb3I6ICVzIiwgZXJyb3JEZXNjcmlwdGlvbi51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9j
b21wbGV0aW9uQ2FsbGJhY2soUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJsKCksIGVycm9yRGVzY3JpcHRp
b24sIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgYXV0byByZXN1
bHQgPSB2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVl
c3QsIG1fcmVzcG9uc2UsIG1fcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbV9w
YXJhbWV0ZXJzLnNvdXJjZU9yaWdpbiwgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXIuZ2V0KCkpOwor
ICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZENv
bXBsZXRlLCBBY2Nlc3NDb250cm9sIGVycm9yOiAlcyIsIHJlc3VsdC5lcnJvcigpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBtX2NvbXBsZXRpb25DYWxsYmFjayhSZXNvdXJjZUVycm9yIHsgZXJy
b3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdC51
cmwoKSwgcmVzdWx0LmVycm9yKCksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wg
fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb21wbGV0aW9uQ2FsbGJhY2soUmVz
b3VyY2VFcnJvciB7IH0pOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZpc2lvbiAyNTc5
NjMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xh
c3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogCiBjbGFzcyBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIgZmluYWwgOiBwcml2YXRlIE5ldHdvcmtEYXRhVGFza0NsaWVudCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAg
IHVzaW5nIENvbXBsZXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYmKT47CiAKLSAgICBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIo
TmV0d29ya1Byb2Nlc3MmLCBQYXJhbWV0ZXJzJiYsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzLCBDb21wbGV0aW9uQ2FsbGJhY2smJik7CisgICAgTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Jlc291cmNlTG9hZGVyKiwg
UGFyYW1ldGVycyYmLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywg
Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIH5OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIo
KTsKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3Q7IH0KIApAQCAtODQs
NiArODUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fdGFzazsK
ICAgICBib29sIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzIHsgZmFsc2Ug
fTsKICAgICBXZWJDb3JlOjpOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiBtX2xvYWRJbmZv
cm1hdGlvbjsKKyAgICBXZWFrUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbV9uZXR3b3JrUmVz
b3VyY2VMb2FkZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAJKHJl
dmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNl
Y3VyaXR5UG9saWN5Lmg+CkBAIC00OSw3ICs1MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Nh
bWVPcmlnaW4oY29uc3QgVVIKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJs
LnByb3RvY29sSXNCbG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsK
IH0KIAotTmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2NoZW1lUmVnaXN0cnkqIHNjaGVtZVJlZ2lzdHJ5
LCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIEhUVFBIZWFkZXJNYXAmJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBVUkwmJiB1cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBzb3Vy
Y2VPcmlnaW4sIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIFByZWZsaWdodFBv
bGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdy
YWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIExv
YWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKK05ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRD
aGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Jlc291cmNlTG9h
ZGVyKiBuZXR3b3JrUmVzb3VyY2VMb2FkZXIsIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSogc2NoZW1l
UmVnaXN0cnksIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgSFRUUEhlYWRlck1hcCYm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHNvdXJjZU9yaWdpbiwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgUHJl
ZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNI
VFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQogICAgIDogbV9vcHRpb25zKFdURk1vdmUo
b3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX25ldHdvcmtQ
cm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpAQCAtNjQsNiArNjUsNyBAQCBOZXR3b3JrTG9hZENoZWNr
ZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOCiAgICAgLCBtX2lzSFRUUFNVcGdyYWRlRW5hYmxlZChp
c0hUVFBTVXBncmFkZUVuYWJsZWQpCiAgICAgLCBtX3JlcXVlc3RMb2FkVHlwZShyZXF1ZXN0TG9h
ZFR5cGUpCiAgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KHNjaGVtZVJlZ2lzdHJ5KQorICAgICwgbV9u
ZXR3b3JrUmVzb3VyY2VMb2FkZXIobWFrZVdlYWtQdHIobmV0d29ya1Jlc291cmNlTG9hZGVyKSkK
IHsKICAgICBtX2lzU2FtZU9yaWdpblJlcXVlc3QgPSBpc1NhbWVPcmlnaW4obV91cmwsIG1fb3Jp
Z2luLmdldCgpKTsKICAgICBzd2l0Y2ggKG9wdGlvbnMuY3JlZGVudGlhbHMpIHsKQEAgLTE4Nyw5
ICsxODksOSBAQCBSZXNvdXJjZUVycm9yIE5ldHdvcmtMb2FkQ2hlY2tlcjo6dmFsaWRhCiAgICAg
aWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKLSAgICBpZiAoIXBhc3Nlc0FjY2Vzc0NvbnRy
b2xDaGVjayhyZXNwb25zZSwgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgKm1fb3JpZ2luLCBl
cnJvck1lc3NhZ2UpKQotICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IFN0cmluZyB7IH0s
IDAsIG1fdXJsLCBXVEZNb3ZlKGVycm9yTWVzc2FnZSksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFj
Y2Vzc0NvbnRyb2wgfTsKKyAgICBhdXRvIHJlc3VsdCA9IHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVj
ayhyZXNwb25zZSwgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgKm1fb3JpZ2luLCBtX25ldHdv
cmtSZXNvdXJjZUxvYWRlci5nZXQoKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBSZXNvdXJjZUVycm9yIHsgU3RyaW5nIHsgfSwgMCwgbV91cmwsIFdURk1vdmUocmVzdWx0LmVy
cm9yKCkpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH07CiAKICAgICByZXNw
b25zZS5zZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6Q29ycyk7CiAgICAg
cmV0dXJuIHsgfTsKQEAgLTQzMCw3ICs0MzIsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6
Y2hlY2tDT1JTUmVxdWVzCiAgICAgICAgIG1fd2ViUGFnZVByb3h5SUQsCiAgICAgICAgIG1fc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kKICAgICB9OwotICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIg
PSBtYWtlVW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vz
cy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYg
ZXJyb3IpIG11dGFibGUgeworICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBtYWtlVW5pcXVl
PE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgbV9u
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuZ2V0KCksIFdURk1vdmUocGFyYW1ldGVycyksIG1fc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUo
cmVxdWVzdCksIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBpc1JlZGlyZWN0ZWQgPSBpc1Jl
ZGlyZWN0ZWQoKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiY2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQgLSBtYWtlQ3Jvc3NPcmln
aW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodCBwcmVmbGlnaHQgY29tcGxldGUsIHN1Y2Nlc3M6
ICVkIGZvclJlZGlyZWN0PyAlZCIsIGVycm9yLmlzTnVsbCgpLCBpc1JlZGlyZWN0ZWQpOwogCiAg
ICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAkocmV2aXNpb24gMjU3OTYzKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBw
dWJsaWMgQ2FuTWFrCiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBMb2FkVHlwZSA6IGJvb2wgeyBN
YWluRnJhbWUsIE90aGVyIH07CiAKLSAgICBOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nl
c3MmLCBOZXR3b3JrU2NoZW1lUmVnaXN0cnkqLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFM
OjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OkhUVFBIZWFkZXJN
YXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgUmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9s
aWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxz
ZSwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9h
ZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gTG9hZFR5cGU6Ok90aGVyKTsKKyAgICBOZXR3b3JrTG9h
ZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBOZXR3b3Jr
U2NoZW1lUmVnaXN0cnkqLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYs
IFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcm
JiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBzaG91
bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVxdWVz
dExvYWRUeXBlID0gTG9hZFR5cGU6Ok90aGVyKTsKICAgICB+TmV0d29ya0xvYWRDaGVja2VyKCk7
CiAKICAgICBzdHJ1Y3QgUmVkaXJlY3Rpb25UcmlwbGV0IHsKQEAgLTE1Nyw2ICsxNTcsNyBAQCBw
cml2YXRlOgogCiAgICAgTG9hZFR5cGUgbV9yZXF1ZXN0TG9hZFR5cGU7CiAgICAgUmVmUHRyPE5l
dHdvcmtTY2hlbWVSZWdpc3RyeT4gbV9zY2hlbWVSZWdpc3RyeTsKKyAgICBXZWFrUHRyPE5ldHdv
cmtSZXNvdXJjZUxvYWRlcj4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiB9OwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjplbmNvCiAgICAgZW5jb2RlciA8PCBpc0hUVFBTVXBncmFkZUVuYWJsZWQ7
CiAgICAgZW5jb2RlciA8PCBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIGVuY29kZXIg
PDwgcGFyZW50RnJhbWVJRDsKKyAgICBlbmNvZGVyIDw8IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlbmNvZGVy
IDw8IHNlcnZpY2VXb3JrZXJzTW9kZTsKQEAgLTI2NSw2ICsyNjYsMTIgQEAgT3B0aW9uYWw8TmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIHJlc3VsdC5wYXJlbnRGcmFtZUlEID0gV1RGTW92ZSgqcGFyZW50RnJhbWVJRCk7CiAK
KyAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7
CisgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7Cisg
ICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZCA9ICpjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CisgICAg
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJz
TW9kZT4gc2VydmljZVdvcmtlcnNNb2RlOwogICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlcnNN
b2RlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjU3OTYzKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
SFRUUFNVcGdyYWRlRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBwYWdlSGFzUmVzb3VyY2VM
b2FkQ2xpZW50IHsgZmFsc2UgfTsKICAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IHBhcmVudEZyYW1lSUQ7CisgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0VuYWJsZWQgeyB0cnVlIH07CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcnNNb2RlIHNlcnZpY2VXb3JrZXJzTW9kZSB7IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjU3
OTYzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogCiAgICAgaWYgKHN5bmNocm9ub3VzUmVwbHkgfHwg
cGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyB8fCBwYXJhbWV0ZXJz
Lm9wdGlvbnMua2VlcEFsaXZlKSB7CiAgICAgICAgIE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5
cGUgcmVxdWVzdExvYWRUeXBlID0gaXNNYWluRnJhbWVMb2FkKCkgPyBOZXR3b3JrTG9hZENoZWNr
ZXI6OkxvYWRUeXBlOjpNYWluRnJhbWUgOiBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlOjpP
dGhlcjsKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtM
b2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCAmY29ubmVjdGlvbi5zY2hl
bWVSZWdpc3RyeSgpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBzZXNz
aW9uSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBIVFRQSGVhZGVyTWFwIHsgbV9w
YXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJl
cXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFy
YW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5
LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNV
cGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJl
cXVlc3RMb2FkVHlwZSk7CisgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0gbWFrZVVuaXF1
ZTxOZXR3b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgdGhpcywg
ICZjb25uZWN0aW9uLnNjaGVtZVJlZ2lzdHJ5KCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVy
cy5vcHRpb25zIH0sIHNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIEhU
VFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwg
eyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2lu
LmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVy
cy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3Bh
cmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKICAgICAgICAgaWYgKG1fcGFyYW1ldGVy
cy5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+
c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyB7IG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMudmFsdWUoKSB9KTsKICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMTE5MCw2ICsxMTkwLDExIEBAIGJvb2wgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzaG91bGRDYXB0dXIKICAgICByZXR1cm4gbV9zaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3BhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwor
fQorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5m
b3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0
IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI1
Nzk2MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJp
YnV0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KQEAg
LTY4LDYgKzY5LDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyIGZpbmFsCiAgICAgLCBw
dWJsaWMgTmV0d29ya0xvYWRDbGllbnQKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIK
ICAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKKyAgICAs
IHB1YmxpYyBXZWJDb3JlOjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyCiAg
ICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxheWVkUmVwbHkmJiByZXBseSA9IG51bGxw
dHIpCkBAIC0xMTQsNiArMTE2LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxs
ZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIGZpbmFsOwogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWw7
CiAKKyAgICAvLyBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyCisgICAgYm9v
bCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9Eb3dubG9hZChEb3dubG9hZElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jik7CiAKICAgICBib29sIGlzTWFpblJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLnJlcXVlc3QucmVxdWVzdGVyKCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpSZXF1
ZXN0ZXI6Ok1haW47IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBQaW5nTG9hZDo6
UGluZ0xvYWQoTmV0d29ya1Byb2Nlc3MmIG5ldHdvCiAgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92
ZShwYXJhbWV0ZXJzKSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlBpbmdMb2FkOjp0aW1l
b3V0VGltZXJGaXJlZCkKLSAgICAsIG1fbmV0d29ya0xvYWRDaGVja2VyKG1ha2VVbmlxdWVSZWY8
TmV0d29ya0xvYWRDaGVja2VyPihuZXR3b3JrUHJvY2VzcywgbnVsbHB0ciwgRmV0Y2hPcHRpb25z
IHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnN9LCBtX3Nlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VQcm94eUlELCBXVEZNb3ZlKG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwg
VVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9y
aWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFt
ZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIo
KSkpCisgICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2Fk
Q2hlY2tlcj4obmV0d29ya1Byb2Nlc3MsIG51bGxwdHIsIG51bGxwdHIsIEZldGNoT3B0aW9ucyB7
IG1fcGFyYW1ldGVycy5vcHRpb25zfSwgbV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdl
UHJveHlJRCwgV1RGTW92ZShtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVS
TCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmln
aW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0
ZXJzLnByZWZsaWdodFBvbGljeSwgbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cFJlZmVycmVyKCkp
KQogewogICAgIGluaXRpYWxpemUobmV0d29ya1Byb2Nlc3MpOwogfQpAQCAtNTUsNyArNTUsNyBA
QCBQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlCiAgICAgLCBtX3BhcmFt
ZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlBp
bmdMb2FkOjp0aW1lb3V0VGltZXJGaXJlZCkKLSAgICAsIG1fbmV0d29ya0xvYWRDaGVja2VyKG1h
a2VVbmlxdWVSZWY8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNz
KCksICZjb25uZWN0aW9uLnNjaGVtZVJlZ2lzdHJ5KCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1l
dGVycy5vcHRpb25zfSwgbV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwg
V1RGTW92ZShtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFy
YW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJl
ZigpLCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZs
aWdodFBvbGljeSwgbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cFJlZmVycmVyKCkpKQorICAgICwg
bV9uZXR3b3JrTG9hZENoZWNrZXIobWFrZVVuaXF1ZVJlZjxOZXR3b3JrTG9hZENoZWNrZXI+KGNv
bm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgbnVsbHB0ciwgICZjb25uZWN0aW9uLnNjaGVtZVJl
Z2lzdHJ5KCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zfSwgbV9zZXNzaW9u
SUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShtX3BhcmFtZXRlcnMub3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0s
IG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMudG9wT3Jp
Z2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwgbV9wYXJhbWV0ZXJz
LnJlcXVlc3QuaHR0cFJlZmVycmVyKCkpKQogICAgICwgbV9ibG9iRmlsZXMoY29ubmVjdGlvbi5y
ZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKIHsKICAgICBmb3IgKGF1dG8mIGZp
bGUgOiBtX2Jsb2JGaWxlcykgewpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzgsNiArMTM4LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUoSQogICAgIGVuY29kZXIgPDwgb2xkUGFnZUlEOwogICAgIGVuY29kZXIgPDwgb3ZlcnJp
ZGRlbk1lZGlhVHlwZTsKICAgICBlbmNvZGVyIDw8IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAg
ICBlbmNvZGVyIDw8IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICBl
bmNvZGVyIDw8IHByb2Nlc3NEaXNwbGF5TmFtZTsKIAogICAgIGVuY29kZXIgPDwgc2hvdWxkQ2Fw
dHVyZUF1ZGlvSW5VSVByb2Nlc3M7CkBAIC00NDMsNiArNDQ0LDEyIEBAIE9wdGlvbmFsPFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ICAgICBwYXJhbWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUoKmNvcnNEaXNh
YmxpbmdQYXR0ZXJucyk7CiAKKyAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2xDaGVja0VuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0VuYWJsZWQ7CisgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy5jcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSAqY3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sQ2hlY2tFbmFibGVkOworICAgIAogICAgIE9wdGlvbmFsPFN0cmluZz4gcHJvY2Vzc0Rpc3Bs
YXlOYW1lOwogICAgIGRlY29kZXIgPj4gcHJvY2Vzc0Rpc3BsYXlOYW1lOwogICAgIGlmICghcHJv
Y2Vzc0Rpc3BsYXlOYW1lKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDksNiArMjA5LDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAg
U3RyaW5nIG92ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rpc2Fi
bGluZ1BhdHRlcm5zOworICAgIGJvb2wgY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFi
bGVkIHsgdHJ1ZSB9OwogICAgIFN0cmluZyBwcm9jZXNzRGlzcGxheU5hbWU7CiAKICAgICBib29s
IHNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzcyMiw2ICs3NzIyLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6
OgogCiAgICAgcGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFUeXBlID0gbV9vdmVycmlkZGVuTWVk
aWFUeXBlOwogICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gbV9jb25maWd1
cmF0aW9uLT5jb3JzRGlzYWJsaW5nUGF0dGVybnMoKTsKKyAgICBwYXJhbWV0ZXJzLmNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IG1fY29uZmlndXJhdGlvbi0+Y3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5oYXNSZXNvdXJj
ZUxvYWRDbGllbnQgPSAhIW1fcmVzb3VyY2VMb2FkQ2xpZW50OwogCiAgICAgcHJvY2Vzcy5hZGRX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShtX3VzZXJDb250ZW50Q29udHJvbGxlciwgcGFy
YW1ldGVycyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkwLDYgKzkwLDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlv
bgogICAgIGZvciAoYXV0byYgcGFpciA6IHRoaXMtPm1fdXJsU2NoZW1lSGFuZGxlcnMpCiAgICAg
ICAgIGNvcHktPm1fdXJsU2NoZW1lSGFuZGxlcnMuc2V0KHBhaXIua2V5LCBwYWlyLnZhbHVlLmNv
cHlSZWYoKSk7CiAgICAgY29weS0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSB0aGlzLT5tX2Nv
cnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBjb3B5LT5tX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCA9IHRoaXMtPm1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFi
bGVkOwogICAgIGNvcHktPm1fd2ViVmlld0NhdGVnb3J5ID0gdGhpcy0+bV93ZWJWaWV3Q2F0ZWdv
cnk7CiAKICAgICBjb3B5LT5tX3Byb2Nlc3NEaXNwbGF5TmFtZSA9IHRoaXMtPm1fcHJvY2Vzc0Rp
c3BsYXlOYW1lOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25m
aWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzgsNiArMTM4LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNv
cnNEaXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fY29yc0Rpc2FibGluZ1BhdHRl
cm5zOyB9CiAgICAgdm9pZCBzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFdURjo6U3Ry
aW5nPiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXR0
ZXJucyk7IH0KIAorICAgIGJvb2wgY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7
IH0KKyAgICB2b2lkIHNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChib29s
IGVuYWJsZWQpIHsgbV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBlbmFi
bGVkOyB9CisKICAgICBjb25zdCBXVEY6OlN0cmluZyYgcHJvY2Vzc0Rpc3BsYXlOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9jZXNzRGlzcGxheU5hbWU7IH0KICAgICB2b2lkIHNldFByb2Nlc3NE
aXNwbGF5TmFtZShjb25zdCBXVEY6OlN0cmluZyYgbmFtZSkgeyBtX3Byb2Nlc3NEaXNwbGF5TmFt
ZSA9IG5hbWU7IH0KIApAQCAtMTgxLDYgKzE4NCw3IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFw
PFdURjo6U3RyaW5nLCBSZWY8V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyPj4gbV91cmxTY2hl
bWVIYW5kbGVyczsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fY29yc0Rpc2FibGluZ1BhdHRl
cm5zOworICAgIGJvb2wgbV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0
cnVlIH07CiAgICAgV1RGOjpTdHJpbmcgbV9wcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgV2ViS2l0
OjpXZWJWaWV3Q2F0ZWdvcnkgbV93ZWJWaWV3Q2F0ZWdvcnkgeyBXZWJLaXQ6OldlYlZpZXdDYXRl
Z29yeTo6QXBwQm91bmREb21haW4gfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQko
cmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTkxMyw2ICs5MTMsMTYg
QEAgLSAodm9pZClfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOihOU0FycgogICAgIF9wYWdlQ29u
ZmlndXJhdGlvbi0+c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFdURk1vdmUodmVjdG9yKSk7CiB9
CiAKKy0gKHZvaWQpX3NldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDooQk9P
TCllbmFibGVkCit7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRDcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKKy0gKEJPT0wpX2Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZAoreworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRp
b24tPmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpOworfQorCiAtIChCT09M
KV9kcmF3c0JhY2tncm91bmQKIHsKICAgICByZXR1cm4gX2RyYXdzQmFja2dyb3VuZDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyNTc5NjMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblBy
aXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNVSW50ZWdlciwgX1dLV2ViVmlld0NhCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgV0tXZWJzaXRlRGF0YVN0b3JlICpfd2Vic2l0ZURhdGFTdG9yZUlmRXhpc3RzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KSBOU0Fy
cmF5PE5TU3RyaW5nICo+ICpfY29yc0Rpc2FibGluZ1BhdHRlcm5zIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ6KSBCT09M
IF9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhP
TkUKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENsaWVudE5hdmlnYXRpb25zUnVu
QXRGb3JlZ3JvdW5kUHJpb3JpdHk6KSBCT09MIF9jbGllbnROYXZpZ2F0aW9uc1J1bkF0Rm9yZWdy
b3VuZFByaW9yaXR5IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDggKzI2
MiwxMCBAQCBib29sIFdlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nVXNpbmdVCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFBhcmFtZXRlcnNGcm9tRnJhbWUoY29uc3Qg
RnJhbWUqIGZyYW1lLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3N0YXRpYyB2b2lkIGFkZFBhcmFtZXRlcnNTaGFyZWQoY29uc3QgRnJhbWUqIGZyYW1lLCBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyAgICBwYXJhbWV0ZXJz
LmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IENyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCgpOworCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0zMTEsNyArMzEzLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJv
bQogICAgIGxvYWRQYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZl
cmluZ1RpbWU7CiAgICAgbG9hZFBhcmFtZXRlcnMub3B0aW9ucyA9IHJlc291cmNlTG9hZGVyLm9w
dGlvbnMoKTsKICAgICBsb2FkUGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3kgPSByZXNvdXJjZUxv
YWRlci5vcHRpb25zKCkucHJlZmxpZ2h0UG9saWN5OwotICAgIGFkZFBhcmFtZXRlcnNGcm9tRnJh
bWUoZnJhbWUsIGxvYWRQYXJhbWV0ZXJzKTsKKyAgICBhZGRQYXJhbWV0ZXJzU2hhcmVkKGZyYW1l
LCBsb2FkUGFyYW1ldGVycyk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgbG9h
ZFBhcmFtZXRlcnMuc2VydmljZVdvcmtlcnNNb2RlID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygp
LnNlcnZpY2VXb3JrZXJzTW9kZTsKQEAgLTYwOCw3ICs2MTAsNyBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jCiAgICAgaWYgKHdlYlBhZ2UpCiAgICAgICAgIGxvYWRQ
YXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJQYWdlLT5pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CiAKLSAgICBhZGRQYXJhbWV0ZXJzRnJvbUZyYW1lKHdl
YkZyYW1lLT5jb3JlRnJhbWUoKSwgbG9hZFBhcmFtZXRlcnMpOworICAgIGFkZFBhcmFtZXRlcnNT
aGFyZWQod2ViRnJhbWUtPmNvcmVGcmFtZSgpLCBsb2FkUGFyYW1ldGVycyk7CiAKICAgICBkYXRh
LnNocmluaygwKTsKIApAQCAtNjgxLDcgKzY4Myw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnN0YXJ0UGluZ0xvYWQoRnIKICAgICAgICAgaWYgKGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSA9IGRvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkKICAgICAgICAgICAgIGxvYWRQ
YXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IGNvbnRlbnRTZWN1cml0eVBvbGljeS0+cmVz
cG9uc2VIZWFkZXJzKCk7CiAgICAgfQotICAgIGFkZFBhcmFtZXRlcnNGcm9tRnJhbWUoJmZyYW1l
LCBsb2FkUGFyYW1ldGVycyk7CisgICAgYWRkUGFyYW1ldGVyc1NoYXJlZCgmZnJhbWUsIGxvYWRQ
YXJhbWV0ZXJzKTsKICAgICAKICAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2Vi
RnJhbWVMb2FkZXJDbGllbnQoZnJhbWUubG9hZGVyKCkuY2xpZW50KCkpOwogICAgIGF1dG8qIHdl
YkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2Vi
RnJhbWUoKSA6IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1Mjks
OCBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAjZW5kaWYKIAog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUocGFy
YW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMpOworICAgIGlmICghcGFyYW1ldGVycy5jcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpCisgICAgICAgIENyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLnNldENyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRW5hYmxlZChmYWxzZSk7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChwYXJhbWV0ZXJzLmZyb250Ym9h
cmRFeHRlbnNpb25IYW5kbGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392804</attachid>
            <date>2020-03-06 16:36:01 -0800</date>
            <delta_ts>2020-03-06 17:05:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208748-20200306163600.patch</filename>
            <type>text/plain</type>
            <size>50394</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIwLTAzLTA2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBkaXNhYmxlIGNyb3NzIG9yaWdpbiBhY2Nlc3MgY29udHJvbCBjaGVja3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc0OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk4NjExMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQmVjYXVzZSBsb2FkaW5nIGlzIGRvbmUgcHJvY2Vzcy1nbG9iYWxseSBp
biB0aGUgV2ViUHJvY2VzcywgdXNlIGEgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNh
Ymxlcjo6c2luZ2xldG9uIGZvciB0aG9zZSBjaGVja3MuCisgICAgICAgIFBhc3MgYSBwYXJhbWV0
ZXIgdG8gdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcnMgdG8gZGlzYWJsZSB0aGVzZSBjaGVja3Mg
b25seSBmb3IgbG9hZHMgZnJvbSBhIHdlYiBwcm9jZXNzIHdpdGhvdXQgYWNjZXNzIGNvbnRyb2wg
Y2hlY2tzLgorICAgICAgICBBcyBsb25nIGFzIHdlJ3JlIGNoYW5naW5nIHRoZSBzaWduYXR1cmUg
b2YgcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrLCBtYWtlIGl0IHJldHVybiBhbiBFeHBlY3RlZCBp
bnN0ZWFkIG9mIGEgYm9vbCB3aXRoIGFuIG91dCBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBsb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzZXRDcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnBhc3Nlc0FjY2Vzc0NvbnRy
b2xDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKToK
KyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg6CisgICAgICAgICog
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OnZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2Up
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAg
ICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1
YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjaGVja1JlZGly
ZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWRGcm9tKToKKwogMjAyMC0w
My0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSB0aGUgb3B0aW1pemF0aW9uIGZvciBkaXNjYXJkaW5nIG5vIG9wZXJhdGlvbiBE
aXNwbGF5TGlzdCBpdGVtcyBiZXR3ZWVuIFNhdmUgYW5kIFJlc3RvcmUgaXRlbXMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3Bw
CShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgog
I2luY2x1ZGUgPG11dGV4PgpAQCAtMjA2LDU1ICsyMDcsNzQgQEAgdm9pZCBjbGVhbkhUVFBSZXF1
ZXN0SGVhZGVyc0ZvckFjY2Vzc0NvbgogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUEFjY2VwdEVu
Y29kaW5nKCk7CiB9CiAKLWJvb2wgcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBTdHJpbmcmIGVy
cm9yRGVzY3JpcHRpb24pCitDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyJiBD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0b24oKQoreworICAg
IEFTU0VSVCghaXNJbk5ldHdvcmtQcm9jZXNzKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyPiBkaXNhYmxlcjsKKyAgICBy
ZXR1cm4gZGlzYWJsZXIuZ2V0KCk7Cit9CisKK3ZvaWQgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tEaXNhYmxlcjo6c2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGJv
b2wgZW5hYmxlZCkKK3sKKyAgICBBU1NFUlQoIWlzSW5OZXR3b3JrUHJvY2VzcygpKTsKKyAgICBt
X2FjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBlbmFibGVkOworfQorCitib29sIENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc0luTmV0d29ya1Byb2Nlc3MoKSk7
CisgICAgcmV0dXJuIG1fYWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKK30KKworRXhwZWN0ZWQ8
dm9pZCwgU3RyaW5nPiBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IENyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIqIGNoZWNrRGlzYWJsZXIpCiB7CiAgICAg
Ly8gQSB3aWxkY2FyZCBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gY2FuIG5vdCBiZSB1c2Vk
IGlmIGNyZWRlbnRpYWxzIGFyZSB0byBiZSBzZW50LAogICAgIC8vIGV2ZW4gd2l0aCBBY2Nlc3Mt
Q29udHJvbC1BbGxvdy1DcmVkZW50aWFscyBzZXQgdG8gdHJ1ZS4KICAgICBjb25zdCBTdHJpbmcm
IGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xBbGxvd09yaWdpbik7Ci0gICAgaWYgKGFjY2Vzc0Nv
bnRyb2xPcmlnaW5TdHJpbmcgPT0gIioiICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgYm9vbCBzdGFyQWxsb3dlZCA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZTsKKyAgICBpZiAoIXN0YXJBbGxvd2VkKQorICAgICAg
ICBzdGFyQWxsb3dlZCA9IGNoZWNrRGlzYWJsZXIgJiYgIWNoZWNrRGlzYWJsZXItPmNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpOworICAgIGlmIChhY2Nlc3NDb250cm9sT3Jp
Z2luU3RyaW5nID09ICIqIiAmJiBzdGFyQWxsb3dlZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAog
ICAgIFN0cmluZyBzZWN1cml0eU9yaWdpblN0cmluZyA9IHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5n
KCk7CiAgICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgIT0gc2VjdXJpdHlPcmlnaW5T
dHJpbmcpIHsKICAgICAgICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgPT0gIioiKQot
ICAgICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbiA9ICJDYW5ub3QgdXNlIHdpbGRjYXJkIGluIEFj
Y2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiB3aGVuIGNyZWRlbnRpYWxzIGZsYWcgaXMgdHJ1ZS4i
X3M7Ci0gICAgICAgIGVsc2UgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcuZmluZCgnLCcp
ICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbiA9ICJBY2Nlc3MtQ29u
dHJvbC1BbGxvdy1PcmlnaW4gY2Fubm90IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBvcmlnaW4uIl9z
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlcnJvckRlc2NyaXB0aW9uID0gbWFrZVN0cmlu
ZygiT3JpZ2luICIsIHNlY3VyaXR5T3JpZ2luU3RyaW5nLCAiIGlzIG5vdCBhbGxvd2VkIGJ5IEFj
Y2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJDYW5ub3QgdXNlIHdpbGRjYXJkIGluIEFj
Y2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiB3aGVuIGNyZWRlbnRpYWxzIGZsYWcgaXMgdHJ1ZS4i
X3MpOworICAgICAgICBpZiAoYWNjZXNzQ29udHJvbE9yaWdpblN0cmluZy5maW5kKCcsJykgIT0g
bm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkFjY2Vzcy1Db250
cm9sLUFsbG93LU9yaWdpbiBjYW5ub3QgY29udGFpbiBtb3JlIHRoYW4gb25lIG9yaWdpbi4iX3Mp
OworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiT3JpZ2luICIsIHNl
Y3VyaXR5T3JpZ2luU3RyaW5nLCAiIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFs
bG93LU9yaWdpbi4iKSk7CiAgICAgfQogCiAgICAgaWYgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
ID09IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHsKICAgICAgICAgY29uc3QgU3RyaW5n
JiBhY2Nlc3NDb250cm9sQ3JlZGVudGlhbHNTdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xBbGxvd0NyZWRlbnRpYWxzKTsKLSAgICAg
ICAgaWYgKGFjY2Vzc0NvbnRyb2xDcmVkZW50aWFsc1N0cmluZyAhPSAidHJ1ZSIpIHsKLSAgICAg
ICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAiQ3JlZGVudGlhbHMgZmxhZyBpcyB0cnVlLCBidXQg
QWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgaXMgbm90IFwidHJ1ZVwiLiI7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGFjY2Vzc0NvbnRy
b2xDcmVkZW50aWFsc1N0cmluZyAhPSAidHJ1ZSIpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIkNyZWRlbnRpYWxzIGZsYWcgaXMgdHJ1ZSwgYnV0IEFjY2Vzcy1Db250cm9sLUFs
bG93LUNyZWRlbnRpYWxzIGlzIG5vdCBcInRydWVcIi4iX3MpOwogICAgIH0KIAotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiB7IH07CiB9CiAKLWJvb2wgdmFsaWRhdGVQcmVmbGlnaHRSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBTdHJpbmcmIGVycm9yRGVzY3Jp
cHRpb24pCitFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlciogY2hlY2tEaXNhYmxlcikKIHsKLSAgICBpZiAoIXJl
c3BvbnNlLmlzU3VjY2Vzc2Z1bCgpKSB7Ci0gICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAiUHJl
ZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsIl9zOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQorICAgIGlmICghcmVzcG9uc2UuaXNTdWNjZXNzZnVsKCkpCisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCgiUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVs
Il9zKTsKIAotICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgc2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQg
PSBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2UsIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBzZWN1cml0eU9yaWdpbiwgY2hlY2tEaXNhYmxlcik7CisgICAgaWYgKCFhY2Nlc3NDb250
cm9sQ2hlY2tSZXN1bHQpCisgICAgICAgIHJldHVybiBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQ7
CiAKICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1
bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBTdHJpbmcgZXJyb3JE
ZXNjcmlwdGlvbjsKKyAgICAvLyBGSVhNRTogYWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QgYW5kIGFs
bG93c0Nyb3NzT3JpZ2luSGVhZGVycyBzaG91bGQgcmV0dXJuIEV4cGVjdGVkPHZvaWQsIFN0cmlu
Zz4gdG8gYXZvaWQgaGF2aW5nIGFuIG91dCBwYXJhbWV0ZXIuCiAgICAgaWYgKCFyZXN1bHQtPnBh
cnNlKHJlc3BvbnNlKQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09yaWdpbk1ldGhv
ZChyZXF1ZXN0Lmh0dHBNZXRob2QoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVz
Y3JpcHRpb24pCiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3NzT3JpZ2luSGVhZGVycyhy
ZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9y
RGVzY3JpcHRpb24pKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKGVycm9yRGVzY3JpcHRpb24pOwogICAgIH0KIAogICAgIENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNpbmdsZXRvbigpLmFwcGVuZEVudHJ5KHNlY3VyaXR5T3Jp
Z2luLnRvU3RyaW5nKCksIHJlcXVlc3QudXJsKCksIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNob3Vs
ZENyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lDYW5jZWxMb2FkKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAkocmV2aXNp
b24gMjU3OTYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSFRUUEhl
YWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiUmVmZXJyZXJQb2xpY3kuaCIKICNpbmNsdWRlICJTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeS5oIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCkBAIC02Niw4
ICs2NywxOCBAQCBlbnVtIGNsYXNzIEhUVFBIZWFkZXJzVG9LZWVwRnJvbUNsZWFuaW5nCiBPcHRp
b25TZXQ8SFRUUEhlYWRlcnNUb0tlZXBGcm9tQ2xlYW5pbmc+IGh0dHBIZWFkZXJzVG9LZWVwRnJv
bUNsZWFuaW5nKGNvbnN0IEhUVFBIZWFkZXJNYXAmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YW5IVFRQUmVxdWVzdEhlYWRlcnNGb3JBY2Nlc3NDb250cm9sKFJlc291cmNlUmVxdWVzdCYsIE9w
dGlvblNldDxIVFRQSGVhZGVyc1RvS2VlcEZyb21DbGVhbmluZz4pOwogCi1XRUJDT1JFX0VYUE9S
VCBib29sIHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFNlY3VyaXR5T3JpZ2luJiwgU3RyaW5nJiBlcnJvckRl
c2NyaXB0aW9uKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgdmFsaWRhdGVQcmVmbGlnaHRSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIFNlY3VyaXR5T3JpZ2luJiwgU3RyaW5nJiBlcnJvckRlc2NyaXB0
aW9uKTsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNr
RGlzYWJsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0Rpc2FibGVyJiBzaW5nbGV0b24oKTsKKyAgICB2aXJ0dWFsIH5Dcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0Rpc2FibGVyKCkgPSBkZWZhdWx0OworICAgIHZvaWQgc2V0Q3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBjcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoKSBjb25zdDsKK3ByaXZhdGU6CisgICAg
Ym9vbCBtX2FjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07Cit9OworCitXRUJDT1JF
X0VYUE9SVCBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiwgY29uc3QgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxl
ciopOworV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiB2YWxpZGF0ZVByZWZs
aWdodFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25z
dCBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyKik7CiAKIFdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBv
bGljeShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKIE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRG
bGFnKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdo
dENoZWNrZXIuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIg
KzYzLDEyIEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjp2YWxpZGEKICAgICBh
dXRvKiBmcmFtZSA9IGxvYWRlci5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1l
KTsKIAotICAgIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uOwotICAgIGlmICghV2ViQ29yZTo6dmFs
aWRhdGVQcmVmbGlnaHRSZXNwb25zZShyZXF1ZXN0LCByZXNwb25zZSwgbG9hZGVyLm9wdGlvbnMo
KS5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGVycm9y
RGVzY3JpcHRpb24pKSB7CisgICAgYXV0byByZXN1bHQgPSBXZWJDb3JlOjp2YWxpZGF0ZVByZWZs
aWdodFJlc3BvbnNlKHJlcXVlc3QsIHJlc3BvbnNlLCBsb2FkZXIub3B0aW9ucygpLnN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBsb2FkZXIuc2VjdXJpdHlPcmlnaW4oKSwgJkNyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpKTsKKyAgICBpZiAoIXJlc3VsdCkg
ewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAg
ICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0
eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBk
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIHJlc3VsdC5lcnJvcigpKTsKIAotICAgICAgICBsb2FkZXIucHJlZmxp
Z2h0RmFpbHVyZShpZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCksIGVycm9yRGVzY3JpcHRpb24sIFJlc291cmNlRXJyb3I6
OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKKyAgICAgICAgbG9hZGVyLnByZWZsaWdodEZhaWx1cmUo
aWRlbnRpZmllciwgUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBy
ZXF1ZXN0LnVybCgpLCByZXN1bHQuZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNz
Q29udHJvbCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24g
MjU3OTYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNiw5ICs2MTYsOSBAQCB2b2lkIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQobV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKTsK
ICAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpU
YWludGluZzo6Q29ycyk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGFjY2Vzc0NvbnRyb2xFcnJv
ckRlc2NyaXB0aW9uOwotICAgICAgICAgICAgICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENo
ZWNrKHJlc3BvbnNlLCBtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNlY3VyaXR5
T3JpZ2luKCksIGFjY2Vzc0NvbnRyb2xFcnJvckRlc2NyaXB0aW9uKSkgewotICAgICAgICAgICAg
ICAgICAgICBsb2dFcnJvckFuZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgYWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRpb24s
IFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKKyAgICAgICAgICAgICAgICBh
dXRvIGFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdCA9IHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhy
ZXNwb25zZSwgbV9vcHRpb25zLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzZWN1cml0eU9yaWdp
bigpLCAmQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2luZ2xldG9uKCkp
OworICAgICAgICAgICAgICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KSB7CisgICAg
ICAgICAgICAgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1
bHQuZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCkpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsOSArMjgxLDkgQEAgdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6d2lsbFNlbmRSZXF1ZXN0SQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIGVy
cm9yRGVzY3JpcHRpb247Ci0gICAgICAgIGlmICghY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbChyZXF1ZXN0KCksIHJlZGlyZWN0UmVzcG9uc2UsIG5ld1JlcXVlc3QsIGVy
cm9yRGVzY3JpcHRpb24pKSB7Ci0gICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIkNy
b3NzLW9yaWdpbiByZWRpcmVjdGlvbiB0byAiICsgbmV3UmVxdWVzdC51cmwoKS5zdHJpbmcoKSAr
ICIgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeTogIiArIGVy
cm9yRGVzY3JpcHRpb247CisgICAgICAgIGF1dG8gYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0ID0g
Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChyZXF1ZXN0KCksIHJlZGly
ZWN0UmVzcG9uc2UsIG5ld1JlcXVlc3QpOworICAgICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVj
a1Jlc3VsdCkgeworICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJD
cm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgbmV3UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwg
IiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5OiAiLCBhY2Nl
c3NDb250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSk7CiAgICAgICAgICAgICBpZiAobV9mcmFtZSAm
JiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVj
YXVzZSBjcm9zc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIGRlbmllZCBieSBDT1JTIHBvbGljeSIpOwpA
QCAtNDExLDEyICs0MTEsMTIgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbgogICAgICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChEaWFnbm9zdGljTG9nZ2luZ0tleXM6
OmNhY2hlZFJlc291cmNlUmV2YWxpZGF0aW9uS2V5KCksIGVtcHR5U3RyaW5nKCksIERpYWdub3N0
aWNMb2dnaW5nUmVzdWx0RmFpbCwgU2hvdWxkU2FtcGxlOjpZZXMpOwogICAgIH0KIAotICAgIFN0
cmluZyBlcnJvckRlc2NyaXB0aW9uOwotICAgIGlmICghY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbChyZXNwb25zZSwgZXJyb3JEZXNjcmlwdGlvbikpIHsKKyAgICBhdXRvIGFj
Y2Vzc0NvbnRyb2xDaGVja1Jlc3VsdCA9IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wocmVzcG9uc2UpOworICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KSB7CiAg
ICAgICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1
cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JEZXNjcmlwdGlvbik7CisgICAgICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0LmVy
cm9yKCkpOwogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9u
c2U6IGNhbmNlbGluZyBsb2FkIGJlY2F1c2Ugb2YgY3Jvc3Mgb3JpZ2luIGFjY2VzcyBjb250cm9s
Iik7Ci0gICAgICAgIGNhbmNlbChSZXNvdXJjZUVycm9yKFN0cmluZygpLCAwLCByZXF1ZXN0KCku
dXJsKCksIGVycm9yRGVzY3JpcHRpb24sIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRy
b2wpKTsKKyAgICAgICAgY2FuY2VsKFJlc291cmNlRXJyb3IoU3RyaW5nKCksIDAsIHJlcXVlc3Qo
KS51cmwoKSwgYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0LmVycm9yKCksIFJlc291cmNlRXJyb3I6
OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjAw
LDIyICs2MDAsMjUgQEAgc3RhdGljIHZvaWQgbG9nUmVzb3VyY2VMb2FkZWQoRnJhbWUqIGZyYQog
ICAgIGZyYW1lLT5wYWdlKCktPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3Rp
Y01lc3NhZ2UoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRlZEtleSgpLCByZXNv
dXJjZVR5cGUsIFNob3VsZFNhbXBsZTo6WWVzKTsKIH0KIAotYm9vbCBTdWJyZXNvdXJjZUxvYWRl
cjo6Y2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKQorRXhwZWN0ZWQ8dm9p
ZCwgU3RyaW5nPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAo
IW1fcmVzb3VyY2UtPmlzQ3Jvc3NPcmlnaW4oKSB8fCBvcHRpb25zKCkubW9kZSAhPSBGZXRjaE9w
dGlvbnM6Ok1vZGU6OkNvcnMpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4g
eyB9OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChyZXNwb25zZS5zb3Vy
Y2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpCi0gICAgICAg
IHJldHVybiByZXNwb25zZS50YWludGluZygpICE9IFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5n
OjpPcGFxdWU7CisgICAgaWYgKHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6
OlNvdXJjZTo6U2VydmljZVdvcmtlcikgeworICAgICAgICBpZiAocmVzcG9uc2UudGFpbnRpbmco
KSAhPSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlKQorICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKCJBY2Nlc3MgY29udHJvbCBjaGVjayBmYWlsZWQgYmVjYXVzZSBy
ZXNwb25zZSBzb3VyY2Ugd2FzIHNlcnZpY2Ugd29ya2VyIGFuZCB0YWludGluZyB3YXMgb3BhcXVl
LiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQogI2VuZGlmCiAKICAgICBBU1NFUlQo
bV9vcmlnaW4pOwogCi0gICAgcmV0dXJuIHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNwb25z
ZSwgb3B0aW9ucygpLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Oklu
Y2x1ZGUgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OkRvTm90VXNlLCAqbV9vcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pOworICAgIHJldHVy
biBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2UsIG9wdGlvbnMoKS5jcmVkZW50aWFs
cyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OlVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgKm1fb3Jp
Z2luLCAmQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2luZ2xldG9uKCkp
OwogfQogCi1ib29sIFN1YnJlc291cmNlTG9hZGVyOjpjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3Qm
IG5ld1JlcXVlc3QsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQorRXhwZWN0ZWQ8dm9pZCwgU3RyaW5n
PiBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0
KQogewogICAgIGJvb2wgY3Jvc3NPcmlnaW5GbGFnID0gbV9yZXNvdXJjZS0+aXNDcm9zc09yaWdp
bigpOwogICAgIGJvb2wgaXNOZXh0UmVxdWVzdENyb3NzT3JpZ2luID0gbV9vcmlnaW4gJiYgIW1f
b3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1JlcXVlc3QudXJsKCkpOwpAQCAtNjI5LDE0ICs2MzIsMTcg
QEAgYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZWRpcmVjdGlvbgogICAgIGlmIChvcHRp
b25zKCkubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpIHsKICAgICAgICAgaWYgKG1f
cmVzb3VyY2UtPmlzQ3Jvc3NPcmlnaW4oKSkgewogICAgICAgICAgICAgYXV0byBsb2NhdGlvblN0
cmluZyA9IHJlZGlyZWN0UmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpM
b2NhdGlvbik7Ci0gICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSB2YWxpZGF0ZUNyb3NzT3JpZ2lu
UmVkaXJlY3Rpb25VUkwoVVJMKHJlZGlyZWN0UmVzcG9uc2UudXJsKCksIGxvY2F0aW9uU3RyaW5n
KSk7CisgICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gdmFsaWRhdGVDcm9zc09yaWdp
blJlZGlyZWN0aW9uVVJMKFVSTChyZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBsb2NhdGlvblN0cmlu
ZykpOwogICAgICAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChXVEZNb3ZlKGVycm9yTWVzc2FnZSkpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG1f
b3JpZ2luKTsKLSAgICAgICAgaWYgKGNyb3NzT3JpZ2luRmxhZyAmJiAhcGFzc2VzQWNjZXNzQ29u
dHJvbENoZWNrKHJlZGlyZWN0UmVzcG9uc2UsIG9wdGlvbnMoKS5zdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgKm1fb3JpZ2luLCBlcnJvck1lc3NhZ2UpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAoY3Jvc3NPcmlnaW5GbGFnKSB7CisgICAgICAgICAgICBhdXRvIGFjY2Vz
c0NvbnRyb2xDaGVja1Jlc3VsdCA9IHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZWRpcmVjdFJl
c3BvbnNlLCBvcHRpb25zKCkuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksICptX29yaWdpbiwgJkNy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpKTsKKyAgICAg
ICAgICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KQorICAgICAgICAgICAgICAgIHJl
dHVybiBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQ7CisgICAgICAgIH0KICAgICB9CiAKICAgICBi
b29sIHJlZGlyZWN0aW5nVG9OZXdPcmlnaW4gPSBmYWxzZTsKQEAgLTY2MSw3ICs2NjcsNyBAQCBi
b29sIFN1YnJlc291cmNlTG9hZGVyOjpjaGVja1JlZGlyZWN0aW9uCiAgICAgCiAgICAgdXBkYXRl
UmVxdWVzdFJlZmVycmVyKG5ld1JlcXVlc3QsIHJlZmVycmVyUG9saWN5KCksIHByZXZpb3VzUmVx
dWVzdC5odHRwUmVmZXJyZXIoKSk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4geyB9
OwogfQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp1cGRhdGVSZWZlcnJlclBvbGljeShjb25z
dCBTdHJpbmcmIHJlZmVycmVyUG9saWN5VmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDggKzg5
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgY2hlY2tGb3JIVFRQU3RhdHVzQ29kZUVycm9yKCk7Ci0gICAgYm9vbCBjaGVja1Jl
c3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBT
dHJpbmcmKTsKLSAgICBib29sIGNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIFN0cmluZyYpOworICAgIEV4
cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBj
aGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCBjaGFyKiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQ3LDkgKzM0Nyw5IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWRGcm9tKGNv
bnN0IENhY2gKIAogICAgIGlmIChpc0Nyb3NzT3JpZ2luKCkgJiYgbV9vcHRpb25zLm1vZGUgPT0g
RmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKSB7CiAgICAgICAgIEFTU0VSVChtX29yaWdpbik7Ci0g
ICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6cGFzc2Vz
QWNjZXNzQ29udHJvbENoZWNrKHJlc291cmNlLnJlc3BvbnNlKCksIG1fb3B0aW9ucy5zdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgKm1fb3JpZ2luLCBlcnJvck1lc3NhZ2UpKSB7Ci0gICAgICAgICAg
ICBzZXRSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3IoU3RyaW5nKCksIDAsIHVybCgpLCBlcnJv
ck1lc3NhZ2UsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKKyAgICAgICAg
YXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQgPSBXZWJDb3JlOjpwYXNzZXNBY2Nlc3NDb250
cm9sQ2hlY2socmVzb3VyY2UucmVzcG9uc2UoKSwgbV9vcHRpb25zLnN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCAqbV9vcmlnaW4sICZDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVy
OjpzaW5nbGV0b24oKSk7CisgICAgICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KSB7
CisgICAgICAgICAgICBzZXRSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3IoU3RyaW5nKCksIDAs
IHVybCgpLCBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6
VHlwZTo6QWNjZXNzQ29udHJvbCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODAzNikKKysrIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMDMtMDYgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJ
IHRvIGRpc2FibGUgY3Jvc3Mgb3JpZ2luIGFjY2VzcyBjb250cm9sIGNoZWNrcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzQ4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81OTg2MTExND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyOjpkaWRDb21wbGV0ZVdpdGhFcnJvcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrTG9hZENoZWNrZXI6OnZhbGlkYXRlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sQ2hlY2tFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpQaW5nTG9hZCk6CisgICAgICAgICogU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29u
ZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5IGNv
bnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6Cisg
ICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQgY29uc3QpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3NldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxl
ZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfY3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmFkZFBhcmFtZXRlcnNTaGFyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQ
aW5nTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OmFkZFBhcmFtZXRlcnNGcm9tRnJhbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bV9wcm9jZXNzRGlzcGxheU5hbWUpOgorCiAyMDIwLTAzLTA2ICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgdW5pZmllZCBidWls
ZCBmaXg7IEluY2x1ZGUgd2hhdCB5b3UgdXNlLCBpbiB0aGlzIGNhc2U6IEZyYW1lSW5mb0RhdGEu
aC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgogCkBAIC00MCwxMSArNDEsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6
Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcywgQ29tcGxldGlvbkNhbGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQor
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIo
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIG5l
dHdvcmtSZXNvdXJjZUxvYWRlciwgUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGJvb2wgc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBDb21wbGV0aW9uQ2FsbGJhY2smJiBjb21w
bGV0aW9uQ2FsbGJhY2spCiAgICAgOiBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkK
ICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCiAgICAgLCBtX2NvbXBsZXRp
b25DYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjaykpCiAgICAgLCBtX3Nob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MpCisgICAgLCBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcihtYWtlV2Vha1B0cihuZXR3
b3JrUmVzb3VyY2VMb2FkZXIpKQogewogfQogCkBAIC0xMzcsMTAgKzEzOSwxMCBAQCB2b2lkIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkQ29tCiAKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRDb21wbGV0ZSBodHRwX3N0YXR1c19jb2RlOiAlZCIsIG1fcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSk7CiAKLSAgICBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbjsKLSAgICBpZiAo
IXZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UobV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdCwg
bV9yZXNwb25zZSwgbV9wYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBtX3BhcmFt
ZXRlcnMuc291cmNlT3JpZ2luLCBlcnJvckRlc2NyaXB0aW9uKSkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRDb21wbGV0ZSwgQWNjZXNzQ29udHJvbCBlcnJvcjogJXMiLCBl
cnJvckRlc2NyaXB0aW9uLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX2NvbXBsZXRpb25DYWxs
YmFjayhSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbV9wYXJh
bWV0ZXJzLm9yaWdpbmFsUmVxdWVzdC51cmwoKSwgZXJyb3JEZXNjcmlwdGlvbiwgUmVzb3VyY2VF
cnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRl
UHJlZmxpZ2h0UmVzcG9uc2UobV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgbV9wYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBtX3BhcmFtZXRlcnMuc291
cmNlT3JpZ2luLCBtX25ldHdvcmtSZXNvdXJjZUxvYWRlci5nZXQoKSk7CisgICAgaWYgKCFyZXN1
bHQpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQ29tcGxldGUsIEFjY2Vz
c0NvbnRyb2wgZXJyb3I6ICVzIiwgcmVzdWx0LmVycm9yKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktp
dEludGVybmFsLCAwLCBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0LnVybCgpLCByZXN1bHQu
ZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBtX2NvbXBsZXRpb25DYWxsYmFjayhSZXNvdXJjZUVycm9yIHsg
fSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI7CiAKIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlciBmaW5hbCA6
IHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgdXNpbmcgQ29tcGxl
dGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiYpPjsKIAotICAgIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcihOZXR3b3JrUHJvY2Vz
cyYsIFBhcmFtZXRlcnMmJiwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MsIENvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBQYXJhbWV0ZXJzJiYs
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBDb21wbGV0aW9uQ2Fs
bGJhY2smJik7CiAgICAgfk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcigpOwogICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0KCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdDsgfQogCkBAIC04NCw2ICs4NSw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPE5ldHdvcmtEYXRhVGFzaz4gbV90YXNrOwogICAgIGJvb2wgbV9z
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgeyBmYWxzZSB9OwogICAgIFdlYkNv
cmU6Ok5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uIG1fbG9hZEluZm9ybWF0aW9uOworICAg
IFdlYWtQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAkocmV2aXNpb24gMjU3OTYz
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50UnVs
ZUxpc3RSZXN1bHRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aD4KQEAgLTQ5LDcgKzUwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZU9yaWdpbihjb25z
dCBVUgogICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0RhdGEoKSB8fCB1cmwucHJvdG9jb2xJc0Js
b2IoKSB8fCAhb3JpZ2luIHx8IG9yaWdpbi0+Y2FuUmVxdWVzdCh1cmwpOwogfQogCi1OZXR3b3Jr
TG9hZENoZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSogc2NoZW1lUmVnaXN0cnksIEZldGNoT3B0aW9u
cyYmIG9wdGlvbnMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgSFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsUmVxdWVzdEhlYWRl
cnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdo
dFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBi
b29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVz
dExvYWRUeXBlKQorTmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIG5ldHdvcmtS
ZXNvdXJjZUxvYWRlciwgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5KiBzY2hlbWVSZWdpc3RyeSwgRmV0
Y2hPcHRpb25zJiYgb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1
ZXN0SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3Jp
Z2luLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kg
cHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVu
YWJsZWQsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlw
ZSByZXF1ZXN0TG9hZFR5cGUpCiAgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAg
ICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29y
a1Byb2Nlc3MpCkBAIC02NCw2ICs2NSw3IEBAIE5ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xv
YWRDaGVja2VyKE4KICAgICAsIG1faXNIVFRQU1VwZ3JhZGVFbmFibGVkKGlzSFRUUFNVcGdyYWRl
RW5hYmxlZCkKICAgICAsIG1fcmVxdWVzdExvYWRUeXBlKHJlcXVlc3RMb2FkVHlwZSkKICAgICAs
IG1fc2NoZW1lUmVnaXN0cnkoc2NoZW1lUmVnaXN0cnkpCisgICAgLCBtX25ldHdvcmtSZXNvdXJj
ZUxvYWRlcihtYWtlV2Vha1B0cihuZXR3b3JrUmVzb3VyY2VMb2FkZXIpKQogewogICAgIG1faXNT
YW1lT3JpZ2luUmVxdWVzdCA9IGlzU2FtZU9yaWdpbihtX3VybCwgbV9vcmlnaW4uZ2V0KCkpOwog
ICAgIHN3aXRjaCAob3B0aW9ucy5jcmVkZW50aWFscykgewpAQCAtMTg3LDkgKzE4OSw5IEBAIFJl
c291cmNlRXJyb3IgTmV0d29ya0xvYWRDaGVja2VyOjp2YWxpZGEKICAgICBpZiAocmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlOwotICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3Bv
bnNlLCBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5LCAqbV9vcmlnaW4sIGVycm9yTWVzc2FnZSkp
Ci0gICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgU3RyaW5nIHsgfSwgMCwgbV91cmwsIFdU
Rk1vdmUoZXJyb3JNZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9
OworICAgIGF1dG8gcmVzdWx0ID0gcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBt
X3N0b3JlZENyZWRlbnRpYWxzUG9saWN5LCAqbV9vcmlnaW4sIG1fbmV0d29ya1Jlc291cmNlTG9h
ZGVyLmdldCgpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IgeyBTdHJpbmcgeyB9LCAwLCBtX3VybCwgV1RGTW92ZShyZXN1bHQuZXJyb3IoKSksIFJlc291
cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfTsKIAogICAgIHJlc3BvbnNlLnNldFRhaW50
aW5nKFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpDb3JzKTsKICAgICByZXR1cm4geyB9OwpA
QCAtNDMwLDcgKzQzMiw3IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1
ZXMKICAgICAgICAgbV93ZWJQYWdlUHJveHlJRCwKICAgICAgICAgbV9zdG9yZWRDcmVkZW50aWFs
c1BvbGljeQogICAgIH07Ci0gICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IG1ha2VVbmlxdWU8
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywg
W3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5k
bGVyKSwgaXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkKCldKGF1dG8mJiBlcnJvcikgbXV0YWJs
ZSB7CisgICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBtX25ldHdvcmtSZXNvdXJj
ZUxvYWRlci5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFu
ZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShh
dXRvJiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJj
aGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCAtIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVl
c3RXaXRoUHJlZmxpZ2h0IHByZWZsaWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQgZm9yUmVkaXJl
Y3Q/ICVkIiwgZXJyb3IuaXNOdWxsKCksIGlzUmVkaXJlY3RlZCk7CiAKICAgICAgICAgaWYgKCFl
cnJvci5pc051bGwoKSkgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw3ICs1Nyw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwgT3Ro
ZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtT
Y2hlbWVSZWdpc3RyeSosIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwg
UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYm
IHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0
TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOworICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3
b3JrUHJvY2VzcyYsIE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIE5ldHdvcmtTY2hlbWVSZWdpc3Ry
eSosIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYg
dG9wT3JpZ2luLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBi
b29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRy
YU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBM
b2FkVHlwZTo6T3RoZXIpOwogICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVj
dCBSZWRpcmVjdGlvblRyaXBsZXQgewpAQCAtMTU3LDYgKzE1Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICBMb2FkVHlwZSBtX3JlcXVlc3RMb2FkVHlwZTsKICAgICBSZWZQdHI8TmV0d29ya1NjaGVtZVJl
Z2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OworICAgIFdlYWtQdHI8TmV0d29ya1Jlc291cmNlTG9h
ZGVyPiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA4LDYgKzEwOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6
OmVuY28KICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKICAgICBlbmNvZGVy
IDw8IHBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAgZW5jb2RlciA8PCBwYXJlbnRGcmFt
ZUlEOworICAgIGVuY29kZXIgPDwgY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVk
OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVuY29kZXIgPDwgc2VydmljZVdv
cmtlcnNNb2RlOwpAQCAtMjY1LDYgKzI2NiwxMiBAQCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycz4gCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmVzdWx0
LnBhcmVudEZyYW1lSUQgPSBXVEZNb3ZlKCpwYXJlbnRGcmFtZUlEKTsKIAorICAgIE9wdGlvbmFs
PGJvb2w+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKKyAgICBkZWNvZGVy
ID4+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKKyAgICBpZiAoIWNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXN1bHQuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0g
KmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKKyAgICAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNl
V29ya2Vyc01vZGU7CiAgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2Vyc01vZGU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNIVFRQU1VwZ3JhZGVF
bmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIHBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQgeyBm
YWxzZSB9OwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gcGFyZW50RnJh
bWVJRDsKKyAgICBib29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCB7IHRy
dWUgfTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJDb3JlOjpTZXJ2aWNl
V29ya2Vyc01vZGUgc2VydmljZVdvcmtlcnNNb2RlIHsgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNN
b2RlOjpOb25lIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdv
cmtSZXNvdXJjZUxvCiAKICAgICBpZiAoc3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJzLnNo
b3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzIHx8IHBhcmFtZXRlcnMub3B0aW9ucy5rZWVw
QWxpdmUpIHsKICAgICAgICAgTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZSByZXF1ZXN0TG9h
ZFR5cGUgPSBpc01haW5GcmFtZUxvYWQoKSA/IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6
Ok1haW5GcmFtZSA6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok90aGVyOwotICAgICAg
ICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihj
b25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksICZjb25uZWN0aW9uLnNjaGVtZVJlZ2lzdHJ5KCks
IEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIHNlc3Npb25JRCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9
LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnRvcE9y
aWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVx
dWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVk
LCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBl
KTsKKyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2Fk
Q2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCB0aGlzLCAgJmNvbm5lY3Rpb24u
c2NoZW1lUmVnaXN0cnkoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnMgfSwg
c2Vzc2lvbklEKCksIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgSFRUUEhlYWRlck1hcCB7
IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1ldGVy
cy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBt
X3BhcmFtZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBv
bGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1fcGFyYW1ldGVycy5pc0hU
VFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygp
LCByZXF1ZXN0TG9hZFR5cGUpOwogICAgICAgICBpZiAobV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNl
SGVhZGVycykKICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDU1BSZXNwb25z
ZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgbV9wYXJhbWV0
ZXJzLmNzcFJlc3BvbnNlSGVhZGVycy52YWx1ZSgpIH0pOwogI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCkBAIC0xMTkwLDYgKzExOTAsMTEgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZENhcHR1cgogICAgIHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljczsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFyYW1l
dGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7Cit9CisKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGJv
b2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgUEFMOjpTZXNzaW9u
SUQmIHNlc3Npb25JRCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjU3OTYzKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xh
dGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgpAQCAtNjgsNiArNjksNyBA
QCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKICAgICAsIHB1YmxpYyBOZXR3b3Jr
TG9hZENsaWVudAogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGlj
IFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudAorICAgICwgcHVibGljIFdlYkNv
cmU6OkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIKICAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNv
bm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmIHJlcGx5ID0gbnVsbHB0cikKQEAgLTExNCw2
ICsxMTYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5hbDsKIAorICAgIC8vIENy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIKKyAgICBib29sIGNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICAKICAg
ICB2b2lkIGNvbnZlcnRUb0Rvd25sb2FkKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIGJv
b2wgaXNNYWluUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5y
ZXF1ZXN0ZXIoKSA9PSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsg
fQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJldmlz
aW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIFBpbmdMb2FkOjpQaW5nTG9hZChOZXR3
b3JrUHJvY2VzcyYgbmV0d28KICAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMp
KQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
ICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVk
KQotICAgICwgbV9uZXR3b3JrTG9hZENoZWNrZXIobWFrZVVuaXF1ZVJlZjxOZXR3b3JrTG9hZENo
ZWNrZXI+KG5ldHdvcmtQcm9jZXNzLCBudWxscHRyLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRl
cnMub3B0aW9uc30sIG1fc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIFdU
Rk1vdmUobV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMpLCBVUkwgeyBtX3BhcmFt
ZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYo
KSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGln
aHRQb2xpY3ksIG1fcGFyYW1ldGVycy5yZXF1ZXN0Lmh0dHBSZWZlcnJlcigpKSkKKyAgICAsIG1f
bmV0d29ya0xvYWRDaGVja2VyKG1ha2VVbmlxdWVSZWY8TmV0d29ya0xvYWRDaGVja2VyPihuZXR3
b3JrUHJvY2VzcywgbnVsbHB0ciwgbnVsbHB0ciwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJz
Lm9wdGlvbnN9LCBtX3Nlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBXVEZN
b3ZlKG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJMIHsgbV9wYXJhbWV0
ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCks
IG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0
UG9saWN5LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIoKSkpCiB7CiAgICAgaW5p
dGlhbGl6ZShuZXR3b3JrUHJvY2Vzcyk7CiB9CkBAIC01NSw3ICs1NSw3IEBAIFBpbmdMb2FkOjpQ
aW5nTG9hZChOZXR3b3JrQ29ubmVjdGlvblRvV2UKICAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3Zl
KHBhcmFtZXRlcnMpKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0xvYWQ6OnRpbWVv
dXRUaW1lckZpcmVkKQotICAgICwgbV9uZXR3b3JrTG9hZENoZWNrZXIobWFrZVVuaXF1ZVJlZjxO
ZXR3b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgJmNvbm5lY3Rp
b24uc2NoZW1lUmVnaXN0cnkoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnN9
LCBtX3Nlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBXVEZNb3ZlKG1fcGFy
YW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1l
dGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBt
X3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIoKSkpCisgICAgLCBtX25ldHdvcmtMb2Fk
Q2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3
b3JrUHJvY2VzcygpLCBudWxscHRyLCAgJmNvbm5lY3Rpb24uc2NoZW1lUmVnaXN0cnkoKSwgRmV0
Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnN9LCBtX3Nlc3Npb25JRCwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VQcm94eUlELCBXVEZNb3ZlKG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RI
ZWFkZXJzKSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJz
LnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigp
LCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRw
UmVmZXJyZXIoKSkpCiAgICAgLCBtX2Jsb2JGaWxlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVm
ZXJlbmNlcyhtX3BhcmFtZXRlcnMpKQogewogICAgIGZvciAoYXV0byYgZmlsZSA6IG1fYmxvYkZp
bGVzKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2
ICsxMzgsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAgICAg
ZW5jb2RlciA8PCBvbGRQYWdlSUQ7CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZGVuTWVkaWFUeXBl
OwogICAgIGVuY29kZXIgPDwgY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGVuY29kZXIgPDwg
Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAgIGVuY29kZXIgPDwgcHJv
Y2Vzc0Rpc3BsYXlOYW1lOwogCiAgICAgZW5jb2RlciA8PCBzaG91bGRDYXB0dXJlQXVkaW9JblVJ
UHJvY2VzczsKQEAgLTQ0Myw2ICs0NDQsMTIgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycz4gV2ViUAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRl
cnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZSgqY29yc0Rpc2FibGluZ1BhdHRlcm5z
KTsKIAorICAgIE9wdGlvbmFsPGJvb2w+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5h
YmxlZDsKKyAgICBkZWNvZGVyID4+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxl
ZDsKKyAgICBpZiAoIWNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRW5hYmxlZCA9ICpjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJs
ZWQ7CisgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBwcm9jZXNzRGlzcGxheU5hbWU7CiAgICAg
ZGVjb2RlciA+PiBwcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgaWYgKCFwcm9jZXNzRGlzcGxheU5h
bWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw2ICsyMDksNyBA
QCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgb3ZlcnJp
ZGRlbk1lZGlhVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0dGVybnM7
CisgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07
CiAgICAgU3RyaW5nIHByb2Nlc3NEaXNwbGF5TmFtZTsKIAogICAgIGJvb2wgc2hvdWxkQ2FwdHVy
ZUF1ZGlvSW5VSVByb2Nlc3MgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzIyLDYgKzc3MjIs
NyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiAKICAgICBwYXJh
bWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5cGUgPSBtX292ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAg
cGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBtX2NvbmZpZ3VyYXRpb24tPmNvcnNE
aXNhYmxpbmdQYXR0ZXJucygpOworICAgIHBhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sQ2hlY2tFbmFibGVkID0gbV9jb25maWd1cmF0aW9uLT5jcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENsaWVudCA9
ICEhbV9yZXNvdXJjZUxvYWRDbGllbnQ7CiAKICAgICBwcm9jZXNzLmFkZFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KG1fdXNlckNvbnRlbnRDb250cm9sbGVyLCBwYXJhbWV0ZXJzKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAs
NyBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uCiAgICAgZm9yIChh
dXRvJiBwYWlyIDogdGhpcy0+bV91cmxTY2hlbWVIYW5kbGVycykKICAgICAgICAgY29weS0+bV91
cmxTY2hlbWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIudmFsdWUuY29weVJlZigpKTsKICAg
ICBjb3B5LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRoaXMtPm1fY29yc0Rpc2FibGluZ1Bh
dHRlcm5zOworICAgIGNvcHktPm1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVk
ID0gdGhpcy0+bV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgY29w
eS0+bV93ZWJWaWV3Q2F0ZWdvcnkgPSB0aGlzLT5tX3dlYlZpZXdDYXRlZ29yeTsKIAogICAgIGNv
cHktPm1fcHJvY2Vzc0Rpc3BsYXlOYW1lID0gdGhpcy0+bV9wcm9jZXNzRGlzcGxheU5hbWU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsOSBA
QCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgY29yc0Rpc2FibGluZ1Bh
dHRlcm5zKCkgY29uc3QgeyByZXR1cm4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7IH0KICAgICB2
b2lkIHNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhWZWN0b3I8V1RGOjpTdHJpbmc+JiYgcGF0dGVy
bnMpIHsgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBXVEZNb3ZlKHBhdHRlcm5zKTsgfQogCisg
ICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsgfQorICAgIHZvaWQg
c2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBt
X2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKwogICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBwcm9jZXNzRGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBt
X3Byb2Nlc3NEaXNwbGF5TmFtZTsgfQogICAgIHZvaWQgc2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKGNv
bnN0IFdURjo6U3RyaW5nJiBuYW1lKSB7IG1fcHJvY2Vzc0Rpc3BsYXlOYW1lID0gbmFtZTsgfQog
CkBAIC0xODEsNiArMTg0LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcs
IFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzOwog
ICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgYm9v
bCBtX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCB7IHRydWUgfTsKICAgICBX
VEY6OlN0cmluZyBtX3Byb2Nlc3NEaXNwbGF5TmFtZTsKICAgICBXZWJLaXQ6OldlYlZpZXdDYXRl
Z29yeSBtX3dlYlZpZXdDYXRlZ29yeSB7IFdlYktpdDo6V2ViVmlld0NhdGVnb3J5OjpBcHBCb3Vu
ZERvbWFpbiB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyNTc5
NjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtOTEzLDYgKzkxMywxNiBAQCAtICh2b2lkKV9z
ZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyCiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5z
ZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZSh2ZWN0b3IpKTsKIH0KIAorLSAodm9pZClf
c2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOihCT09MKWVuYWJsZWQKK3sK
KyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNr
RW5hYmxlZChlbmFibGVkKTsKK30KKworLSAoQk9PTClfY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkCit7CisgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+Y3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKCk7Cit9CisKIC0gKEJPT0wpX2RyYXdzQmFja2dy
b3VuZAogewogICAgIHJldHVybiBfZHJhd3NCYWNrZ3JvdW5kOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb25Qcml2YXRlLmgJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBf
V0tXZWJWaWV3Q2EKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYnNpdGVE
YXRhU3RvcmUgKl93ZWJzaXRlRGF0YVN0b3JlSWZFeGlzdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5LCBzZXR0ZXI9X3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczopIE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKl9jb3JzRGlzYWJsaW5nUGF0dGVybnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDopIEJPT0wgX2Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5
IChub25hdG9taWMsIHNldHRlcj1fc2V0Q2xpZW50TmF2aWdhdGlvbnNSdW5BdEZvcmVncm91bmRQ
cmlvcml0eTopIEJPT0wgX2NsaWVudE5hdmlnYXRpb25zUnVuQXRGb3JlZ3JvdW5kUHJpb3JpdHkg
V0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2
aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsOCArMjYyLDEwIEBAIGJvb2wg
V2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRpbmdVc2luZ1UKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIHZvaWQgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZShjb25zdCBGcmFtZSogZnJhbWUs
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorc3RhdGljIHZvaWQg
YWRkUGFyYW1ldGVyc1NoYXJlZChjb25zdCBGcmFtZSogZnJhbWUsIE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIHBhcmFtZXRlcnMuY3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tE
aXNhYmxlcjo6c2luZ2xldG9uKCkuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVk
KCk7CisKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTMxMSw3ICszMTMs
NyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tCiAgICAgbG9hZFBh
cmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZTsKICAg
ICBsb2FkUGFyYW1ldGVycy5vcHRpb25zID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpOwogICAg
IGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMo
KS5wcmVmbGlnaHRQb2xpY3k7Ci0gICAgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZShmcmFtZSwgbG9h
ZFBhcmFtZXRlcnMpOworICAgIGFkZFBhcmFtZXRlcnNTaGFyZWQoZnJhbWUsIGxvYWRQYXJhbWV0
ZXJzKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBsb2FkUGFyYW1ldGVycy5z
ZXJ2aWNlV29ya2Vyc01vZGUgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtl
cnNNb2RlOwpAQCAtNjA4LDcgKzYxMCw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRS
ZXNvdXJjZVN5bmMKICAgICBpZiAod2ViUGFnZSkKICAgICAgICAgbG9hZFBhcmFtZXRlcnMuaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYlBhZ2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKTsKIAotICAgIGFkZFBhcmFtZXRlcnNGcm9tRnJhbWUod2ViRnJhbWUtPmNvcmVG
cmFtZSgpLCBsb2FkUGFyYW1ldGVycyk7CisgICAgYWRkUGFyYW1ldGVyc1NoYXJlZCh3ZWJGcmFt
ZS0+Y29yZUZyYW1lKCksIGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIGRhdGEuc2hyaW5rKDApOwog
CkBAIC02ODEsNyArNjgzLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9h
ZChGcgogICAgICAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0gZG9jdW1lbnQt
PmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3Nw
UmVzcG9uc2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMo
KTsKICAgICB9Ci0gICAgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZSgmZnJhbWUsIGxvYWRQYXJhbWV0
ZXJzKTsKKyAgICBhZGRQYXJhbWV0ZXJzU2hhcmVkKCZmcmFtZSwgbG9hZFBhcmFtZXRlcnMpOwog
ICAgIAogICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNs
aWVudChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7CiAgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJG
cmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVs
bHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIFdlYlBhZ2U6
OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICNlbmRpZgogCiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24uY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXJhbWV0ZXJzLmNvcnNE
aXNhYmxpbmdQYXR0ZXJucyk7CisgICAgaWYgKCFwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRW5hYmxlZCkKKyAgICAgICAgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tEaXNhYmxlcjo6c2luZ2xldG9uKCkuc2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tF
bmFibGVkKGZhbHNlKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpICYmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHBhcmFtZXRlcnMuZnJvbnRib2FyZEV4dGVuc2lvbkhh
bmRsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392814</attachid>
            <date>2020-03-06 17:05:37 -0800</date>
            <delta_ts>2020-03-06 18:35:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208748-20200306170536.patch</filename>
            <type>text/plain</type>
            <size>53960</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIwLTAzLTA2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBkaXNhYmxlIGNyb3NzIG9yaWdpbiBhY2Nlc3MgY29udHJvbCBjaGVja3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc0OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk4NjExMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIu
CisKKyAgICAgICAgQmVjYXVzZSBsb2FkaW5nIGlzIGRvbmUgcHJvY2Vzcy1nbG9iYWxseSBpbiB0
aGUgV2ViUHJvY2VzcywgdXNlIGEgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxl
cjo6c2luZ2xldG9uIGZvciB0aG9zZSBjaGVja3MuCisgICAgICAgIFBhc3MgYSBwYXJhbWV0ZXIg
dG8gdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcnMgdG8gZGlzYWJsZSB0aGVzZSBjaGVja3Mgb25s
eSBmb3IgbG9hZHMgZnJvbSBhIHdlYiBwcm9jZXNzIHdpdGhvdXQgYWNjZXNzIGNvbnRyb2wgY2hl
Y2tzLgorICAgICAgICBBcyBsb25nIGFzIHdlJ3JlIGNoYW5naW5nIHRoZSBzaWduYXR1cmUgb2Yg
cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrLCBtYWtlIGl0IHJldHVybiBhbiBFeHBlY3RlZCBpbnN0
ZWFkIG9mIGEgYm9vbCB3aXRoIGFuIG91dCBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBsb2FkZXIv
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJD
b3JlOjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzZXRDcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnBhc3Nlc0FjY2Vzc0NvbnRyb2xD
aGVjayk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKToKKyAg
ICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg6CisgICAgICAgICogbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OnZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjaGVja1JlZGlyZWN0
aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWRGcm9tKToKKwogMjAyMC0wMy0w
NSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSB0aGUgb3B0aW1pemF0aW9uIGZvciBkaXNjYXJkaW5nIG5vIG9wZXJhdGlvbiBEaXNw
bGF5TGlzdCBpdGVtcyBiZXR3ZWVuIFNhdmUgYW5kIFJlc3RvcmUgaXRlbXMKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCShy
ZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2lu
Y2x1ZGUgPG11dGV4PgpAQCAtMjA2LDU1ICsyMDcsNzQgQEAgdm9pZCBjbGVhbkhUVFBSZXF1ZXN0
SGVhZGVyc0ZvckFjY2Vzc0NvbgogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUEFjY2VwdEVuY29k
aW5nKCk7CiB9CiAKLWJvb2wgcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBTdHJpbmcmIGVycm9y
RGVzY3JpcHRpb24pCitDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyJiBDcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0b24oKQoreworICAgIEFT
U0VSVCghaXNJbk5ldHdvcmtQcm9jZXNzKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyPiBkaXNhYmxlcjsKKyAgICByZXR1
cm4gZGlzYWJsZXIuZ2V0KCk7Cit9CisKK3ZvaWQgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tEaXNhYmxlcjo6c2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICBBU1NFUlQoIWlzSW5OZXR3b3JrUHJvY2VzcygpKTsKKyAgICBtX2Fj
Y2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBlbmFibGVkOworfQorCitib29sIENyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNr
RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc0luTmV0d29ya1Byb2Nlc3MoKSk7Cisg
ICAgcmV0dXJuIG1fYWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKK30KKworRXhwZWN0ZWQ8dm9p
ZCwgU3RyaW5nPiBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIqIGNoZWNrRGlzYWJsZXIpCiB7CiAgICAgLy8g
QSB3aWxkY2FyZCBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gY2FuIG5vdCBiZSB1c2VkIGlm
IGNyZWRlbnRpYWxzIGFyZSB0byBiZSBzZW50LAogICAgIC8vIGV2ZW4gd2l0aCBBY2Nlc3MtQ29u
dHJvbC1BbGxvdy1DcmVkZW50aWFscyBzZXQgdG8gdHJ1ZS4KICAgICBjb25zdCBTdHJpbmcmIGFj
Y2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xBbGxvd09yaWdpbik7Ci0gICAgaWYgKGFjY2Vzc0NvbnRy
b2xPcmlnaW5TdHJpbmcgPT0gIioiICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
Ym9vbCBzdGFyQWxsb3dlZCA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpEb05vdFVzZTsKKyAgICBpZiAoIXN0YXJBbGxvd2VkKQorICAgICAgICBz
dGFyQWxsb3dlZCA9IGNoZWNrRGlzYWJsZXIgJiYgIWNoZWNrRGlzYWJsZXItPmNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpOworICAgIGlmIChhY2Nlc3NDb250cm9sT3JpZ2lu
U3RyaW5nID09ICIqIiAmJiBzdGFyQWxsb3dlZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IFN0cmluZyBzZWN1cml0eU9yaWdpblN0cmluZyA9IHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCk7
CiAgICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgIT0gc2VjdXJpdHlPcmlnaW5TdHJp
bmcpIHsKICAgICAgICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgPT0gIioiKQotICAg
ICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbiA9ICJDYW5ub3QgdXNlIHdpbGRjYXJkIGluIEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbiB3aGVuIGNyZWRlbnRpYWxzIGZsYWcgaXMgdHJ1ZS4iX3M7
Ci0gICAgICAgIGVsc2UgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcuZmluZCgnLCcpICE9
IG5vdEZvdW5kKQotICAgICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbiA9ICJBY2Nlc3MtQ29udHJv
bC1BbGxvdy1PcmlnaW4gY2Fubm90IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBvcmlnaW4uIl9zOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBlcnJvckRlc2NyaXB0aW9uID0gbWFrZVN0cmluZygi
T3JpZ2luICIsIHNlY3VyaXR5T3JpZ2luU3RyaW5nLCAiIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJDYW5ub3QgdXNlIHdpbGRjYXJkIGluIEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbiB3aGVuIGNyZWRlbnRpYWxzIGZsYWcgaXMgdHJ1ZS4iX3Mp
OworICAgICAgICBpZiAoYWNjZXNzQ29udHJvbE9yaWdpblN0cmluZy5maW5kKCcsJykgIT0gbm90
Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkFjY2Vzcy1Db250cm9s
LUFsbG93LU9yaWdpbiBjYW5ub3QgY29udGFpbiBtb3JlIHRoYW4gb25lIG9yaWdpbi4iX3MpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiT3JpZ2luICIsIHNlY3Vy
aXR5T3JpZ2luU3RyaW5nLCAiIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93
LU9yaWdpbi4iKSk7CiAgICAgfQogCiAgICAgaWYgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBh
Y2Nlc3NDb250cm9sQ3JlZGVudGlhbHNTdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xBbGxvd0NyZWRlbnRpYWxzKTsKLSAgICAgICAg
aWYgKGFjY2Vzc0NvbnRyb2xDcmVkZW50aWFsc1N0cmluZyAhPSAidHJ1ZSIpIHsKLSAgICAgICAg
ICAgIGVycm9yRGVzY3JpcHRpb24gPSAiQ3JlZGVudGlhbHMgZmxhZyBpcyB0cnVlLCBidXQgQWNj
ZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgaXMgbm90IFwidHJ1ZVwiLiI7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGFjY2Vzc0NvbnRyb2xD
cmVkZW50aWFsc1N0cmluZyAhPSAidHJ1ZSIpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoIkNyZWRlbnRpYWxzIGZsYWcgaXMgdHJ1ZSwgYnV0IEFjY2Vzcy1Db250cm9sLUFsbG93
LUNyZWRlbnRpYWxzIGlzIG5vdCBcInRydWVcIi4iX3MpOwogICAgIH0KIAotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiB7IH07CiB9CiAKLWJvb2wgdmFsaWRhdGVQcmVmbGlnaHRSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBTdHJpbmcmIGVycm9yRGVzY3JpcHRp
b24pCitFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tEaXNhYmxlciogY2hlY2tEaXNhYmxlcikKIHsKLSAgICBpZiAoIXJlc3Bv
bnNlLmlzU3VjY2Vzc2Z1bCgpKSB7Ci0gICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAiUHJlZmxp
Z2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsIl9zOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQorICAgIGlmICghcmVzcG9uc2UuaXNTdWNjZXNzZnVsKCkpCisgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZCgiUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsIl9z
KTsKIAotICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgc2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQgPSBw
YXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2UsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBzZWN1cml0eU9yaWdpbiwgY2hlY2tEaXNhYmxlcik7CisgICAgaWYgKCFhY2Nlc3NDb250cm9s
Q2hlY2tSZXN1bHQpCisgICAgICAgIHJldHVybiBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQ7CiAK
ICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBTdHJpbmcgZXJyb3JEZXNj
cmlwdGlvbjsKKyAgICAvLyBGSVhNRTogYWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QgYW5kIGFsbG93
c0Nyb3NzT3JpZ2luSGVhZGVycyBzaG91bGQgcmV0dXJuIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4g
dG8gYXZvaWQgaGF2aW5nIGFuIG91dCBwYXJhbWV0ZXIuCiAgICAgaWYgKCFyZXN1bHQtPnBhcnNl
KHJlc3BvbnNlKQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09yaWdpbk1ldGhvZChy
ZXF1ZXN0Lmh0dHBNZXRob2QoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVzY3Jp
cHRpb24pCiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3NzT3JpZ2luSGVhZGVycyhyZXF1
ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVz
Y3JpcHRpb24pKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKGVycm9yRGVzY3JpcHRpb24pOwogICAgIH0KIAogICAgIENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGU6OnNpbmdsZXRvbigpLmFwcGVuZEVudHJ5KHNlY3VyaXR5T3JpZ2lu
LnRvU3RyaW5nKCksIHJlcXVlc3QudXJsKCksIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNob3VsZENy
b3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lDYW5jZWxMb2FkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBv
cmlnaW4sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAkocmV2aXNpb24g
MjU3OTYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRl
ck5hbWVzLmgiCiAjaW5jbHVkZSAiUmVmZXJyZXJQb2xpY3kuaCIKICNpbmNsdWRlICJTdG9yZWRD
cmVkZW50aWFsc1BvbGljeS5oIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCkBAIC02Niw4ICs2
NywxOCBAQCBlbnVtIGNsYXNzIEhUVFBIZWFkZXJzVG9LZWVwRnJvbUNsZWFuaW5nCiBPcHRpb25T
ZXQ8SFRUUEhlYWRlcnNUb0tlZXBGcm9tQ2xlYW5pbmc+IGh0dHBIZWFkZXJzVG9LZWVwRnJvbUNs
ZWFuaW5nKGNvbnN0IEhUVFBIZWFkZXJNYXAmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYW5I
VFRQUmVxdWVzdEhlYWRlcnNGb3JBY2Nlc3NDb250cm9sKFJlc291cmNlUmVxdWVzdCYsIE9wdGlv
blNldDxIVFRQSGVhZGVyc1RvS2VlcEZyb21DbGVhbmluZz4pOwogCi1XRUJDT1JFX0VYUE9SVCBi
b29sIHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIFNlY3VyaXR5T3JpZ2luJiwgU3RyaW5nJiBlcnJvckRlc2Ny
aXB0aW9uKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgdmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFNlY3VyaXR5T3JpZ2luJiwgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9u
KTsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlz
YWJsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0Rpc2FibGVyJiBzaW5nbGV0b24oKTsKKyAgICB2aXJ0dWFsIH5Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2xDaGVja0Rpc2FibGVyKCkgPSBkZWZhdWx0OworICAgIHZvaWQgc2V0Q3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBjcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoKSBjb25zdDsKK3ByaXZhdGU6CisgICAgYm9v
bCBtX2FjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07Cit9OworCitXRUJDT1JFX0VY
UE9SVCBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiwgY29uc3QgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlciop
OworV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiB2YWxpZGF0ZVByZWZsaWdo
dFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyKik7CiAKIFdFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGlj
eShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKIE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFn
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYz
LDEyIEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjp2YWxpZGEKICAgICBhdXRv
KiBmcmFtZSA9IGxvYWRlci5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lKTsK
IAotICAgIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uOwotICAgIGlmICghV2ViQ29yZTo6dmFsaWRh
dGVQcmVmbGlnaHRSZXNwb25zZShyZXF1ZXN0LCByZXNwb25zZSwgbG9hZGVyLm9wdGlvbnMoKS5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGVycm9yRGVz
Y3JpcHRpb24pKSB7CisgICAgYXV0byByZXN1bHQgPSBXZWJDb3JlOjp2YWxpZGF0ZVByZWZsaWdo
dFJlc3BvbnNlKHJlcXVlc3QsIHJlc3BvbnNlLCBsb2FkZXIub3B0aW9ucygpLnN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBsb2FkZXIuc2VjdXJpdHlPcmlnaW4oKSwgJkNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpKTsKKyAgICBpZiAoIXJlc3VsdCkgewog
ICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAg
ICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBkb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIHJlc3VsdC5lcnJvcigpKTsKIAotICAgICAgICBsb2FkZXIucHJlZmxpZ2h0
RmFpbHVyZShpZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIHJlcXVlc3QudXJsKCksIGVycm9yRGVzY3JpcHRpb24sIFJlc291cmNlRXJyb3I6OlR5
cGU6OkFjY2Vzc0NvbnRyb2wpKTsKKyAgICAgICAgbG9hZGVyLnByZWZsaWdodEZhaWx1cmUoaWRl
bnRpZmllciwgUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1
ZXN0LnVybCgpLCByZXN1bHQuZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29u
dHJvbCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gMjU3
OTYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNiw5ICs2MTYsOSBAQCB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6bG9hZFJlcXVlCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQobV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKTsKICAg
ICAgICAgICAgICAgICByZXNwb25zZS5zZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWlu
dGluZzo6Q29ycyk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGFjY2Vzc0NvbnRyb2xFcnJvckRl
c2NyaXB0aW9uOwotICAgICAgICAgICAgICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNr
KHJlc3BvbnNlLCBtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNlY3VyaXR5T3Jp
Z2luKCksIGFjY2Vzc0NvbnRyb2xFcnJvckRlc2NyaXB0aW9uKSkgewotICAgICAgICAgICAgICAg
ICAgICBsb2dFcnJvckFuZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCByZXNwb25zZS51cmwoKSwgYWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRpb24sIFJl
c291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdCA9IHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNw
b25zZSwgbV9vcHRpb25zLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzZWN1cml0eU9yaWdpbigp
LCAmQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2luZ2xldG9uKCkpOwor
ICAgICAgICAgICAgICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KSB7CisgICAgICAg
ICAgICAgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQu
ZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCkpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biAyNTc5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yODEsOSArMjgxLDkgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0SQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIGVycm9y
RGVzY3JpcHRpb247Ci0gICAgICAgIGlmICghY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbChyZXF1ZXN0KCksIHJlZGlyZWN0UmVzcG9uc2UsIG5ld1JlcXVlc3QsIGVycm9y
RGVzY3JpcHRpb24pKSB7Ci0gICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIkNyb3Nz
LW9yaWdpbiByZWRpcmVjdGlvbiB0byAiICsgbmV3UmVxdWVzdC51cmwoKS5zdHJpbmcoKSArICIg
ZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeTogIiArIGVycm9y
RGVzY3JpcHRpb247CisgICAgICAgIGF1dG8gYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0ID0gY2hl
Y2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChyZXF1ZXN0KCksIHJlZGlyZWN0
UmVzcG9uc2UsIG5ld1JlcXVlc3QpOworICAgICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVja1Jl
c3VsdCkgeworICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJDcm9z
cy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgbmV3UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBk
ZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5OiAiLCBhY2Nlc3ND
b250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSk7CiAgICAgICAgICAgICBpZiAobV9mcmFtZSAmJiBt
X2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVz
ZSBjcm9zc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIGRlbmllZCBieSBDT1JTIHBvbGljeSIpOwpAQCAt
NDExLDEyICs0MTEsMTIgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bgogICAgICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgp
LmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNh
Y2hlZFJlc291cmNlUmV2YWxpZGF0aW9uS2V5KCksIGVtcHR5U3RyaW5nKCksIERpYWdub3N0aWNM
b2dnaW5nUmVzdWx0RmFpbCwgU2hvdWxkU2FtcGxlOjpZZXMpOwogICAgIH0KIAotICAgIFN0cmlu
ZyBlcnJvckRlc2NyaXB0aW9uOwotICAgIGlmICghY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbChyZXNwb25zZSwgZXJyb3JEZXNjcmlwdGlvbikpIHsKKyAgICBhdXRvIGFjY2Vz
c0NvbnRyb2xDaGVja1Jlc3VsdCA9IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2wocmVzcG9uc2UpOworICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KSB7CiAgICAg
ICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0
eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1
cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0LmVycm9y
KCkpOwogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IGNhbmNlbGluZyBsb2FkIGJlY2F1c2Ugb2YgY3Jvc3Mgb3JpZ2luIGFjY2VzcyBjb250cm9sIik7
Ci0gICAgICAgIGNhbmNlbChSZXNvdXJjZUVycm9yKFN0cmluZygpLCAwLCByZXF1ZXN0KCkudXJs
KCksIGVycm9yRGVzY3JpcHRpb24sIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wp
KTsKKyAgICAgICAgY2FuY2VsKFJlc291cmNlRXJyb3IoU3RyaW5nKCksIDAsIHJlcXVlc3QoKS51
cmwoKSwgYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0LmVycm9yKCksIFJlc291cmNlRXJyb3I6OlR5
cGU6OkFjY2Vzc0NvbnRyb2wpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjAwLDIy
ICs2MDAsMjUgQEAgc3RhdGljIHZvaWQgbG9nUmVzb3VyY2VMb2FkZWQoRnJhbWUqIGZyYQogICAg
IGZyYW1lLT5wYWdlKCktPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01l
c3NhZ2UoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRlZEtleSgpLCByZXNvdXJj
ZVR5cGUsIFNob3VsZFNhbXBsZTo6WWVzKTsKIH0KIAotYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6
Y2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKQorRXhwZWN0ZWQ8dm9pZCwg
U3RyaW5nPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1f
cmVzb3VyY2UtPmlzQ3Jvc3NPcmlnaW4oKSB8fCBvcHRpb25zKCkubW9kZSAhPSBGZXRjaE9wdGlv
bnM6Ok1vZGU6OkNvcnMpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4geyB9
OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChyZXNwb25zZS5zb3VyY2Uo
KSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpCi0gICAgICAgIHJl
dHVybiByZXNwb25zZS50YWludGluZygpICE9IFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpP
cGFxdWU7CisgICAgaWYgKHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNv
dXJjZTo6U2VydmljZVdvcmtlcikgeworICAgICAgICBpZiAocmVzcG9uc2UudGFpbnRpbmcoKSAh
PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlKQorICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKCJBY2Nlc3MgY29udHJvbCBjaGVjayBmYWlsZWQgYmVjYXVzZSByZXNw
b25zZSBzb3VyY2Ugd2FzIHNlcnZpY2Ugd29ya2VyIGFuZCB0YWludGluZyB3YXMgb3BhcXVlLiJf
cyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQogI2VuZGlmCiAKICAgICBBU1NFUlQobV9v
cmlnaW4pOwogCi0gICAgcmV0dXJuIHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwg
b3B0aW9ucygpLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1
ZGUgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OkRvTm90VXNlLCAqbV9vcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pOworICAgIHJldHVybiBw
YXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2UsIG9wdGlvbnMoKS5jcmVkZW50aWFscyA9
PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OlVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgKm1fb3JpZ2lu
LCAmQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2luZ2xldG9uKCkpOwog
fQogCi1ib29sIFN1YnJlc291cmNlTG9hZGVyOjpjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmIG5l
d1JlcXVlc3QsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQorRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBT
dWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQog
ewogICAgIGJvb2wgY3Jvc3NPcmlnaW5GbGFnID0gbV9yZXNvdXJjZS0+aXNDcm9zc09yaWdpbigp
OwogICAgIGJvb2wgaXNOZXh0UmVxdWVzdENyb3NzT3JpZ2luID0gbV9vcmlnaW4gJiYgIW1fb3Jp
Z2luLT5jYW5SZXF1ZXN0KG5ld1JlcXVlc3QudXJsKCkpOwpAQCAtNjI5LDE0ICs2MzIsMTcgQEAg
Ym9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZWRpcmVjdGlvbgogICAgIGlmIChvcHRpb25z
KCkubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpIHsKICAgICAgICAgaWYgKG1fcmVz
b3VyY2UtPmlzQ3Jvc3NPcmlnaW4oKSkgewogICAgICAgICAgICAgYXV0byBsb2NhdGlvblN0cmlu
ZyA9IHJlZGlyZWN0UmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMb2Nh
dGlvbik7Ci0gICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSB2YWxpZGF0ZUNyb3NzT3JpZ2luUmVk
aXJlY3Rpb25VUkwoVVJMKHJlZGlyZWN0UmVzcG9uc2UudXJsKCksIGxvY2F0aW9uU3RyaW5nKSk7
CisgICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gdmFsaWRhdGVDcm9zc09yaWdpblJl
ZGlyZWN0aW9uVVJMKFVSTChyZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBsb2NhdGlvblN0cmluZykp
OwogICAgICAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChX
VEZNb3ZlKGVycm9yTWVzc2FnZSkpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG1fb3Jp
Z2luKTsKLSAgICAgICAgaWYgKGNyb3NzT3JpZ2luRmxhZyAmJiAhcGFzc2VzQWNjZXNzQ29udHJv
bENoZWNrKHJlZGlyZWN0UmVzcG9uc2UsIG9wdGlvbnMoKS5zdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgKm1fb3JpZ2luLCBlcnJvck1lc3NhZ2UpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoY3Jvc3NPcmlnaW5GbGFnKSB7CisgICAgICAgICAgICBhdXRvIGFjY2Vzc0Nv
bnRyb2xDaGVja1Jlc3VsdCA9IHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZWRpcmVjdFJlc3Bv
bnNlLCBvcHRpb25zKCkuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksICptX29yaWdpbiwgJkNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpKTsKKyAgICAgICAg
ICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVy
biBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQ7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29s
IHJlZGlyZWN0aW5nVG9OZXdPcmlnaW4gPSBmYWxzZTsKQEAgLTY2MSw3ICs2NjcsNyBAQCBib29s
IFN1YnJlc291cmNlTG9hZGVyOjpjaGVja1JlZGlyZWN0aW9uCiAgICAgCiAgICAgdXBkYXRlUmVx
dWVzdFJlZmVycmVyKG5ld1JlcXVlc3QsIHJlZmVycmVyUG9saWN5KCksIHByZXZpb3VzUmVxdWVz
dC5odHRwUmVmZXJyZXIoKSk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4geyB9Owog
fQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp1cGRhdGVSZWZlcnJlclBvbGljeShjb25zdCBT
dHJpbmcmIHJlZmVycmVyUG9saWN5VmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDggKzg5LDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgY2hlY2tGb3JIVFRQU3RhdHVzQ29kZUVycm9yKCk7Ci0gICAgYm9vbCBjaGVja1Jlc3Bv
bnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBTdHJp
bmcmKTsKLSAgICBib29sIGNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIFN0cmluZyYpOworICAgIEV4cGVj
dGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVj
a1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiBuZXdSZXF1ZXN0KTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCBjaGFyKiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQ3LDkgKzM0Nyw5IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWRGcm9tKGNvbnN0
IENhY2gKIAogICAgIGlmIChpc0Nyb3NzT3JpZ2luKCkgJiYgbV9vcHRpb25zLm1vZGUgPT0gRmV0
Y2hPcHRpb25zOjpNb2RlOjpDb3JzKSB7CiAgICAgICAgIEFTU0VSVChtX29yaWdpbik7Ci0gICAg
ICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6cGFzc2VzQWNj
ZXNzQ29udHJvbENoZWNrKHJlc291cmNlLnJlc3BvbnNlKCksIG1fb3B0aW9ucy5zdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgKm1fb3JpZ2luLCBlcnJvck1lc3NhZ2UpKSB7Ci0gICAgICAgICAgICBz
ZXRSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3IoU3RyaW5nKCksIDAsIHVybCgpLCBlcnJvck1l
c3NhZ2UsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKKyAgICAgICAgYXV0
byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQgPSBXZWJDb3JlOjpwYXNzZXNBY2Nlc3NDb250cm9s
Q2hlY2socmVzb3VyY2UucmVzcG9uc2UoKSwgbV9vcHRpb25zLnN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCAqbV9vcmlnaW4sICZDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpz
aW5nbGV0b24oKSk7CisgICAgICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KSB7Cisg
ICAgICAgICAgICBzZXRSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3IoU3RyaW5nKCksIDAsIHVy
bCgpLCBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6QWNjZXNzQ29udHJvbCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODAzNikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMDMtMDYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRv
IGRpc2FibGUgY3Jvc3Mgb3JpZ2luIGFjY2VzcyBjb250cm9sIGNoZWNrcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzQ4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTg2MTExND4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlci4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6TmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyOjpkaWRDb21wbGV0ZVdpdGhFcnJvcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TG9hZENoZWNrZXI6OnZhbGlkYXRlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpQaW5nTG9hZCk6CisgICAgICAgICogU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQgY29uc3QpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0Q3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3NldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfY3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sQ2hlY2tFbmFibGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmFkZFBhcmFtZXRlcnNTaGFyZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OmFkZFBhcmFtZXRlcnNGcm9tRnJhbWUpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bV9wcm9jZXNzRGlzcGxheU5hbWUpOgorCiAyMDIwLTAzLTA2ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgdW5pZmllZCBidWlsZCBmaXg7
IEluY2x1ZGUgd2hhdCB5b3UgdXNlLCBpbiB0aGlzIGNhc2U6IEZyYW1lSW5mb0RhdGEuaC4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogCkBAIC00MCwxMSArNDEsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6Ok5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcywgQ29tcGxldGlvbkNhbGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQorTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyOjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIG5ldHdvcmtS
ZXNvdXJjZUxvYWRlciwgUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGJvb2wgc2hvdWxkQ2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBDb21wbGV0aW9uQ2FsbGJhY2smJiBjb21wbGV0aW9u
Q2FsbGJhY2spCiAgICAgOiBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKICAgICAs
IG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCiAgICAgLCBtX2NvbXBsZXRpb25DYWxs
YmFjayhXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjaykpCiAgICAgLCBtX3Nob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcyhzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MpCisgICAgLCBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcihtYWtlV2Vha1B0cihuZXR3b3JrUmVz
b3VyY2VMb2FkZXIpKQogewogfQogCkBAIC0xMzcsMTAgKzEzOSwxMCBAQCB2b2lkIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkQ29tCiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRDb21wbGV0ZSBodHRwX3N0YXR1c19jb2RlOiAlZCIsIG1fcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSk7CiAKLSAgICBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbjsKLSAgICBpZiAoIXZhbGlk
YXRlUHJlZmxpZ2h0UmVzcG9uc2UobV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9wYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBtX3BhcmFtZXRlcnMu
c291cmNlT3JpZ2luLCBlcnJvckRlc2NyaXB0aW9uKSkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRDb21wbGV0ZSwgQWNjZXNzQ29udHJvbCBlcnJvcjogJXMiLCBlcnJvckRl
c2NyaXB0aW9uLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX2NvbXBsZXRpb25DYWxsYmFjayhS
ZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbV9wYXJhbWV0ZXJz
Lm9yaWdpbmFsUmVxdWVzdC51cmwoKSwgZXJyb3JEZXNjcmlwdGlvbiwgUmVzb3VyY2VFcnJvcjo6
VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlUHJlZmxp
Z2h0UmVzcG9uc2UobV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9w
YXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBtX3BhcmFtZXRlcnMuc291cmNlT3Jp
Z2luLCBtX25ldHdvcmtSZXNvdXJjZUxvYWRlci5nZXQoKSk7CisgICAgaWYgKCFyZXN1bHQpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQ29tcGxldGUsIEFjY2Vzc0NvbnRy
b2wgZXJyb3I6ICVzIiwgcmVzdWx0LmVycm9yKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG1f
Y29tcGxldGlvbkNhbGxiYWNrKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0LnVybCgpLCByZXN1bHQuZXJyb3Io
KSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBtX2NvbXBsZXRpb25DYWxsYmFjayhSZXNvdXJjZUVycm9yIHsgfSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI7CiAKIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlciBmaW5hbCA6IHByaXZh
dGUgTmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgdXNpbmcgQ29tcGxldGlvbkNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYp
PjsKIAotICAgIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFBh
cmFtZXRlcnMmJiwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIENv
bXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIoTmV0
d29ya1Byb2Nlc3MmLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBQYXJhbWV0ZXJzJiYsIGJvb2wg
c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBDb21wbGV0aW9uQ2FsbGJhY2sm
Jik7CiAgICAgfk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcigpOwogICAgIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdDsgfQogCkBAIC04NCw2ICs4NSw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPE5ldHdvcmtEYXRhVGFzaz4gbV90YXNrOwogICAgIGJvb2wgbV9zaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6Ok5l
dHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uIG1fbG9hZEluZm9ybWF0aW9uOworICAgIFdlYWtQ
dHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1NjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50UnVsZUxpc3RS
ZXN1bHRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4KQEAg
LTQ5LDcgKzUwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZU9yaWdpbihjb25zdCBVUgog
ICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0RhdGEoKSB8fCB1cmwucHJvdG9jb2xJc0Jsb2IoKSB8
fCAhb3JpZ2luIHx8IG9yaWdpbi0+Y2FuUmVxdWVzdCh1cmwpOwogfQogCi1OZXR3b3JrTG9hZENo
ZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IE5ldHdvcmtTY2hlbWVSZWdpc3RyeSogc2NoZW1lUmVnaXN0cnksIEZldGNoT3B0aW9ucyYmIG9w
dGlvbnMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgSFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVS
TCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGlj
eSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNo
b3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRU
eXBlKQorTmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIG5ldHdvcmtSZXNvdXJj
ZUxvYWRlciwgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5KiBzY2hlbWVSZWdpc3RyeSwgRmV0Y2hPcHRp
b25zJiYgb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHdlYlBhZ2VQcm94eUlELCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycywgVVJMJiYgdXJsLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJlZmxp
Z2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQs
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlwZSByZXF1
ZXN0TG9hZFR5cGUpCiAgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nl
c3MpCkBAIC02NCw2ICs2NSw3IEBAIE5ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRDaGVj
a2VyKE4KICAgICAsIG1faXNIVFRQU1VwZ3JhZGVFbmFibGVkKGlzSFRUUFNVcGdyYWRlRW5hYmxl
ZCkKICAgICAsIG1fcmVxdWVzdExvYWRUeXBlKHJlcXVlc3RMb2FkVHlwZSkKICAgICAsIG1fc2No
ZW1lUmVnaXN0cnkoc2NoZW1lUmVnaXN0cnkpCisgICAgLCBtX25ldHdvcmtSZXNvdXJjZUxvYWRl
cihtYWtlV2Vha1B0cihuZXR3b3JrUmVzb3VyY2VMb2FkZXIpKQogewogICAgIG1faXNTYW1lT3Jp
Z2luUmVxdWVzdCA9IGlzU2FtZU9yaWdpbihtX3VybCwgbV9vcmlnaW4uZ2V0KCkpOwogICAgIHN3
aXRjaCAob3B0aW9ucy5jcmVkZW50aWFscykgewpAQCAtMTg3LDkgKzE4OSw5IEBAIFJlc291cmNl
RXJyb3IgTmV0d29ya0xvYWRDaGVja2VyOjp2YWxpZGEKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA9PSAzMDQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlOwotICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBt
X3N0b3JlZENyZWRlbnRpYWxzUG9saWN5LCAqbV9vcmlnaW4sIGVycm9yTWVzc2FnZSkpCi0gICAg
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgU3RyaW5nIHsgfSwgMCwgbV91cmwsIFdURk1vdmUo
ZXJyb3JNZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9OworICAg
IGF1dG8gcmVzdWx0ID0gcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBtX3N0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCAqbV9vcmlnaW4sIG1fbmV0d29ya1Jlc291cmNlTG9hZGVyLmdl
dCgpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IgeyBT
dHJpbmcgeyB9LCAwLCBtX3VybCwgV1RGTW92ZShyZXN1bHQuZXJyb3IoKSksIFJlc291cmNlRXJy
b3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfTsKIAogICAgIHJlc3BvbnNlLnNldFRhaW50aW5nKFJl
c291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpDb3JzKTsKICAgICByZXR1cm4geyB9OwpAQCAtNDMw
LDcgKzQzMiw3IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXMKICAg
ICAgICAgbV93ZWJQYWdlUHJveHlJRCwKICAgICAgICAgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGlj
eQogICAgIH07Ci0gICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgW3RoaXMs
IHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwg
aXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkKCldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7Cisg
ICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBtX25ldHdvcmtSZXNvdXJjZUxvYWRl
ci5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYg
ZXJyb3IpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjaGVja0NP
UlNSZXF1ZXN0V2l0aFByZWZsaWdodCAtIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRo
UHJlZmxpZ2h0IHByZWZsaWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/ICVk
IiwgZXJyb3IuaXNOdWxsKCksIGlzUmVkaXJlY3RlZCk7CiAKICAgICAgICAgaWYgKCFlcnJvci5p
c051bGwoKSkgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5oCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3
ICs1Nyw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWsKIHB1Ymxp
YzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwgT3RoZXIgfTsK
IAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTY2hlbWVS
ZWdpc3RyeSosIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwgUmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVy
cmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5
cGUgPSBMb2FkVHlwZTo6T3RoZXIpOworICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJv
Y2VzcyYsIE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSosIFdl
YkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPiYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3Jp
Z2luLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlz
SFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlw
ZTo6T3RoZXIpOwogICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRp
cmVjdGlvblRyaXBsZXQgewpAQCAtMTU3LDYgKzE1Nyw3IEBAIHByaXZhdGU6CiAKICAgICBMb2Fk
VHlwZSBtX3JlcXVlc3RMb2FkVHlwZTsKICAgICBSZWZQdHI8TmV0d29ya1NjaGVtZVJlZ2lzdHJ5
PiBtX3NjaGVtZVJlZ2lzdHJ5OworICAgIFdlYWtQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBt
X25ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA4LDYgKzEwOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY28K
ICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHBh
Z2VIYXNSZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAgZW5jb2RlciA8PCBwYXJlbnRGcmFtZUlEOwor
ICAgIGVuY29kZXIgPDwgY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlcnNN
b2RlOwpAQCAtMjY1LDYgKzI2NiwxMiBAQCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycz4gCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBhcmVu
dEZyYW1lSUQgPSBXVEZNb3ZlKCpwYXJlbnRGcmFtZUlEKTsKIAorICAgIE9wdGlvbmFsPGJvb2w+
IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKKyAgICBkZWNvZGVyID4+IGNy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKKyAgICBpZiAoIWNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXN1bHQuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gKmNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKKyAgICAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNlV29ya2Vy
c01vZGU7CiAgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2Vyc01vZGU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVk
IHsgZmFsc2UgfTsKICAgICBib29sIHBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQgeyBmYWxzZSB9
OwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsK
KyAgICBib29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCB7IHRydWUgfTsK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
c01vZGUgc2VydmljZVdvcmtlcnNNb2RlIHsgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpO
b25lIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExOCw3ICsxMTgsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNv
dXJjZUxvCiAKICAgICBpZiAoc3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJzLnNob3VsZFJl
c3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzIHx8IHBhcmFtZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUp
IHsKICAgICAgICAgTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUg
PSBpc01haW5GcmFtZUxvYWQoKSA/IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok1haW5G
cmFtZSA6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok90aGVyOwotICAgICAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCksICZjb25uZWN0aW9uLnNjaGVtZVJlZ2lzdHJ5KCksIEZldGNo
T3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIHNlc3Npb25JRCgpLCBtX3BhcmFtZXRl
cnMud2ViUGFnZVByb3h5SUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3JpZ2luYWxS
ZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3Bh
cmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi5j
b3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgp
Lmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91
bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKKyAg
ICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tl
cj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCB0aGlzLCAgJmNvbm5lY3Rpb24uc2NoZW1l
UmVnaXN0cnkoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnMgfSwgc2Vzc2lv
bklEKCksIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgSFRUUEhlYWRlck1hcCB7IG1fcGFy
YW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1
ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFt
ZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwg
b3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1fcGFyYW1ldGVycy5pc0hUVFBTVXBn
cmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpLCByZXF1
ZXN0TG9hZFR5cGUpOwogICAgICAgICBpZiAobV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVy
cykKICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDU1BSZXNwb25zZUhlYWRl
cnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgbV9wYXJhbWV0ZXJzLmNz
cFJlc3BvbnNlSGVhZGVycy52YWx1ZSgpIH0pOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCkBAIC0xMTkwLDYgKzExOTAsMTEgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNo
b3VsZENhcHR1cgogICAgIHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljczsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5j
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7Cit9CisKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGJvb2wgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNl
c3Npb25JRCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgpAQCAtNjgsNiArNjksNyBAQCBjbGFz
cyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKICAgICAsIHB1YmxpYyBOZXR3b3JrTG9hZENs
aWVudAogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudAorICAgICwgcHVibGljIFdlYkNvcmU6OkNy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIKICAgICAsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNo
cm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmIHJlcGx5ID0gbnVsbHB0cikKQEAgLTExNCw2ICsxMTYs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5hbDsKIAorICAgIC8vIENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIKKyAgICBib29sIGNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICAKICAgICB2b2lk
IGNvbnZlcnRUb0Rvd25sb2FkKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIGJvb2wgaXNN
YWluUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5yZXF1ZXN0
ZXIoKSA9PSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsgfQpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJldmlzaW9uIDI1
Nzk2MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIFBpbmdMb2FkOjpQaW5nTG9hZChOZXR3b3JrUHJv
Y2VzcyYgbmV0d28KICAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQogICAg
ICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAs
IG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKQotICAg
ICwgbV9uZXR3b3JrTG9hZENoZWNrZXIobWFrZVVuaXF1ZVJlZjxOZXR3b3JrTG9hZENoZWNrZXI+
KG5ldHdvcmtQcm9jZXNzLCBudWxscHRyLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0
aW9uc30sIG1fc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIFdURk1vdmUo
bV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMpLCBVUkwgeyBtX3BhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9w
YXJhbWV0ZXJzLnRvcE9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xp
Y3ksIG1fcGFyYW1ldGVycy5yZXF1ZXN0Lmh0dHBSZWZlcnJlcigpKSkKKyAgICAsIG1fbmV0d29y
a0xvYWRDaGVja2VyKG1ha2VVbmlxdWVSZWY8TmV0d29ya0xvYWRDaGVja2VyPihuZXR3b3JrUHJv
Y2VzcywgbnVsbHB0ciwgbnVsbHB0ciwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlv
bnN9LCBtX3Nlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBXVEZNb3ZlKG1f
cGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJl
cXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFy
YW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5
LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIoKSkpCiB7CiAgICAgaW5pdGlhbGl6
ZShuZXR3b3JrUHJvY2Vzcyk7CiB9CkBAIC01NSw3ICs1NSw3IEBAIFBpbmdMb2FkOjpQaW5nTG9h
ZChOZXR3b3JrQ29ubmVjdGlvblRvV2UKICAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFt
ZXRlcnMpKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0xvYWQ6OnRpbWVvdXRUaW1l
ckZpcmVkKQotICAgICwgbV9uZXR3b3JrTG9hZENoZWNrZXIobWFrZVVuaXF1ZVJlZjxOZXR3b3Jr
TG9hZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgJmNvbm5lY3Rpb24uc2No
ZW1lUmVnaXN0cnkoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnN9LCBtX3Nl
c3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBXVEZNb3ZlKG1fcGFyYW1ldGVy
cy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJs
KCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy50
b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBtX3BhcmFt
ZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIoKSkpCisgICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tl
cihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJv
Y2VzcygpLCBudWxscHRyLCAgJmNvbm5lY3Rpb24uc2NoZW1lUmVnaXN0cnkoKSwgRmV0Y2hPcHRp
b25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnN9LCBtX3Nlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlELCBXVEZNb3ZlKG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJz
KSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJj
ZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3Bh
cmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJy
ZXIoKSkpCiAgICAgLCBtX2Jsb2JGaWxlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNl
cyhtX3BhcmFtZXRlcnMpKQogewogICAgIGZvciAoYXV0byYgZmlsZSA6IG1fYmxvYkZpbGVzKSB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgs
NyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAgICAgZW5jb2Rl
ciA8PCBvbGRQYWdlSUQ7CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZGVuTWVkaWFUeXBlOwogICAg
IGVuY29kZXIgPDwgY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGVuY29kZXIgPDwgY3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAgIGVuY29kZXIgPDwgcHJvY2Vzc0Rp
c3BsYXlOYW1lOwogCiAgICAgZW5jb2RlciA8PCBzaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2Vz
czsKQEAgLTQ0Myw2ICs0NDQsMTIgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cz4gV2ViUAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuY29y
c0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZSgqY29yc0Rpc2FibGluZ1BhdHRlcm5zKTsKIAor
ICAgIE9wdGlvbmFsPGJvb2w+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsK
KyAgICBkZWNvZGVyID4+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKKyAg
ICBpZiAoIWNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCA9ICpjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7Cisg
ICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBwcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgZGVjb2Rl
ciA+PiBwcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgaWYgKCFwcm9jZXNzRGlzcGxheU5hbWUpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw2ICsyMDksNyBAQCBzdHJ1
Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgb3ZlcnJpZGRlbk1l
ZGlhVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAg
Ym9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAgICAg
U3RyaW5nIHByb2Nlc3NEaXNwbGF5TmFtZTsKIAogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUF1ZGlv
SW5VSVByb2Nlc3MgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzIyLDYgKzc3MjIsNyBAQCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiAKICAgICBwYXJhbWV0ZXJz
Lm92ZXJyaWRkZW5NZWRpYVR5cGUgPSBtX292ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAgcGFyYW1l
dGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBtX2NvbmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxp
bmdQYXR0ZXJucygpOworICAgIHBhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkID0gbV9jb25maWd1cmF0aW9uLT5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENsaWVudCA9ICEhbV9y
ZXNvdXJjZUxvYWRDbGllbnQ7CiAKICAgICBwcm9jZXNzLmFkZFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5KG1fdXNlckNvbnRlbnRDb250cm9sbGVyLCBwYXJhbWV0ZXJzKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9u
LmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBS
ZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uCiAgICAgZm9yIChhdXRvJiBw
YWlyIDogdGhpcy0+bV91cmxTY2hlbWVIYW5kbGVycykKICAgICAgICAgY29weS0+bV91cmxTY2hl
bWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIudmFsdWUuY29weVJlZigpKTsKICAgICBjb3B5
LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRoaXMtPm1fY29yc0Rpc2FibGluZ1BhdHRlcm5z
OworICAgIGNvcHktPm1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gdGhp
cy0+bV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgY29weS0+bV93
ZWJWaWV3Q2F0ZWdvcnkgPSB0aGlzLT5tX3dlYlZpZXdDYXRlZ29yeTsKIAogICAgIGNvcHktPm1f
cHJvY2Vzc0Rpc3BsYXlOYW1lID0gdGhpcy0+bV9wcm9jZXNzRGlzcGxheU5hbWU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24u
aAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsOSBAQCBwdWJs
aWM6CiAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgY29yc0Rpc2FibGluZ1BhdHRlcm5z
KCkgY29uc3QgeyByZXR1cm4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7IH0KICAgICB2b2lkIHNl
dENPUlNEaXNhYmxpbmdQYXR0ZXJucyhWZWN0b3I8V1RGOjpTdHJpbmc+JiYgcGF0dGVybnMpIHsg
bV9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBXVEZNb3ZlKHBhdHRlcm5zKTsgfQogCisgICAgYm9v
bCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKwogICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBwcm9jZXNzRGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nl
c3NEaXNwbGF5TmFtZTsgfQogICAgIHZvaWQgc2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKGNvbnN0IFdU
Rjo6U3RyaW5nJiBuYW1lKSB7IG1fcHJvY2Vzc0Rpc3BsYXlOYW1lID0gbmFtZTsgfQogCkBAIC0x
ODEsNiArMTg0LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJlZjxX
ZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzOwogICAgIFZl
Y3RvcjxXVEY6OlN0cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgYm9vbCBtX2Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCB7IHRydWUgfTsKICAgICBXVEY6OlN0
cmluZyBtX3Byb2Nlc3NEaXNwbGF5TmFtZTsKICAgICBXZWJLaXQ6OldlYlZpZXdDYXRlZ29yeSBt
X3dlYlZpZXdDYXRlZ29yeSB7IFdlYktpdDo6V2ViVmlld0NhdGVnb3J5OjpBcHBCb3VuZERvbWFp
biB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyNTc5NjMpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlv
bi5tbQkod29ya2luZyBjb3B5KQpAQCAtOTEzLDYgKzkxMywxNiBAQCAtICh2b2lkKV9zZXRDT1JT
RGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyCiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRDT1JT
RGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZSh2ZWN0b3IpKTsKIH0KIAorLSAodm9pZClfc2V0Q3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBf
cGFnZUNvbmZpZ3VyYXRpb24tPnNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxl
ZChlbmFibGVkKTsKK30KKworLSAoQk9PTClfY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tF
bmFibGVkCit7CisgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+Y3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkKCk7Cit9CisKIC0gKEJPT0wpX2RyYXdzQmFja2dyb3VuZAog
ewogICAgIHJldHVybiBfZHJhd3NCYWNrZ3JvdW5kOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmgJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw2ICs4NCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tXZWJW
aWV3Q2EKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYnNpdGVEYXRhU3Rv
cmUgKl93ZWJzaXRlRGF0YVN0b3JlSWZFeGlzdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBz
ZXR0ZXI9X3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczopIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9j
b3JzRGlzYWJsaW5nUGF0dGVybnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDopIEJPT0wgX2Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0Q2xpZW50TmF2aWdhdGlvbnNSdW5BdEZvcmVncm91bmRQcmlvcml0
eTopIEJPT0wgX2NsaWVudE5hdmlnYXRpb25zUnVuQXRGb3JlZ3JvdW5kUHJpb3JpdHkgV0tfQVBJ
X0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24g
MjU3OTYzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsOCArMjYyLDEwIEBAIGJvb2wgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnRyeUxvYWRpbmdVc2luZ1UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIHZvaWQgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZShjb25zdCBGcmFtZSogZnJhbWUsIE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorc3RhdGljIHZvaWQgYWRkUGFy
YW1ldGVyc1NoYXJlZChjb25zdCBGcmFtZSogZnJhbWUsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIHBhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sQ2hlY2tFbmFibGVkID0gQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxl
cjo6c2luZ2xldG9uKCkuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKCk7CisK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTMxMSw3ICszMTMsNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tCiAgICAgbG9hZFBhcmFtZXRl
cnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICBsb2Fk
UGFyYW1ldGVycy5vcHRpb25zID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpOwogICAgIGxvYWRQ
YXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVm
bGlnaHRQb2xpY3k7Ci0gICAgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZShmcmFtZSwgbG9hZFBhcmFt
ZXRlcnMpOworICAgIGFkZFBhcmFtZXRlcnNTaGFyZWQoZnJhbWUsIGxvYWRQYXJhbWV0ZXJzKTsK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBsb2FkUGFyYW1ldGVycy5zZXJ2aWNl
V29ya2Vyc01vZGUgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlcnNNb2Rl
OwpAQCAtNjA4LDcgKzYxMCw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJj
ZVN5bmMKICAgICBpZiAod2ViUGFnZSkKICAgICAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYlBhZ2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4oKTsKIAotICAgIGFkZFBhcmFtZXRlcnNGcm9tRnJhbWUod2ViRnJhbWUtPmNvcmVGcmFtZSgp
LCBsb2FkUGFyYW1ldGVycyk7CisgICAgYWRkUGFyYW1ldGVyc1NoYXJlZCh3ZWJGcmFtZS0+Y29y
ZUZyYW1lKCksIGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIGRhdGEuc2hyaW5rKDApOwogCkBAIC02
ODEsNyArNjgzLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZChGcgog
ICAgICAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0gZG9jdW1lbnQtPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpKQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9u
c2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAg
ICB9Ci0gICAgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZSgmZnJhbWUsIGxvYWRQYXJhbWV0ZXJzKTsK
KyAgICBhZGRQYXJhbWV0ZXJzU2hhcmVkKCZmcmFtZSwgbG9hZFBhcmFtZXRlcnMpOwogICAgIAog
ICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChm
cmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7CiAgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxv
YWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShy
ZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIFdlYlBhZ2U6OldlYlBh
Z2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICNlbmRpZgogCiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24uY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXJhbWV0ZXJzLmNvcnNEaXNhYmxp
bmdQYXR0ZXJucyk7CisgICAgaWYgKCFwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCkKKyAgICAgICAgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNh
Ymxlcjo6c2luZ2xldG9uKCkuc2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVk
KGZhbHNlKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKHBhcmFtZXRlcnMuZnJvbnRib2FyZEV4dGVuc2lvbkhhbmRsZSkK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1ODAzNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDIwLTAzLTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBkaXNhYmxlIGNyb3NzIG9yaWdpbiBhY2Nl
c3MgY29udHJvbCBjaGVja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwODc0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRs
ZXItMS5tbToKKyAgICAgICAgQWRkIGEgdGVzdCB0aGF0IHZlcmlmaWVzIHRoaXMgU1BJIGFsbG93
cyBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW46ICogd2l0aCBjcmVkZW50aWFscy4KKwogMjAy
MC0wMy0wNiAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBfV0tSZXNvdXJjZUxvYWRJbmZvLnJlc291cmNlVHlwZSBTUEkKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VS
TFNjaGVtZUhhbmRsZXItMS5tbQkocmV2aXNpb24gMjU3OTYzKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQkod29ya2luZyBj
b3B5KQpAQCAtODg1LDYgKzg4NSw1OSBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVD
T1JTKQogICAgIEVYUEVDVF9GQUxTRShjb3JzZmFpbHVyZSk7CiB9CiAKK1RFU1QoVVJMU2NoZW1l
SGFuZGxlciwgRGlzYWJsZUNPUlNDcmVkZW50aWFscykKK3sKKyAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi9zdWJyZXNvdXJjZSIsIHsge3sgIkFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbiIsICIqIiB9fSwgInN1YnJlc291cmNlY29udGVudCIgfSB9
CisgICAgfSk7CisKKyAgICBib29sIGNvcnNzdWNjZXNzID0gZmFsc2U7CisgICAgYm9vbCBjb3Jz
ZmFpbHVyZSA9IGZhbHNlOworICAgIGJvb2wgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBoYW5k
bGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisKKyAg
ICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFtjb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJjb3JzIl07
CisKKyAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZp
ZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIGlmIChbdGFzay5yZXF1
ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9tYWluLmh0bWwiXSkgeworICAgICAgICAg
ICAgTlNEYXRhICpkYXRhID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPHNjcmlwdD5m
ZXRjaCgnaHR0cDovLzEyNy4wLjAuMTolZC9zdWJyZXNvdXJjZScsIHtjcmVkZW50aWFsczonaW5j
bHVkZSd9KS50aGVuKGZ1bmN0aW9uKCl7ZmV0Y2goJy9jb3Jzc3VjY2VzcycpfSkuY2F0Y2goZnVu
Y3Rpb24oKXtmZXRjaCgnL2NvcnNmYWlsdXJlJyl9KTwvc2NyaXB0PiIsIHNlcnZlci5wb3J0KCld
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICAgICAgICAgIFt0
YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRM
ZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07Cisg
ICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKKyAgICAgICAgICAgIFt0YXNr
IGRpZEZpbmlzaF07CisgICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCIvY29yc3N1Y2Nlc3MiXSkgeworICAgICAgICAgICAgY29yc3N1Y2Nl
c3MgPSB0cnVlOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAo
W3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY29yc2ZhaWx1cmUiXSkg
eworICAgICAgICAgICAgY29yc2ZhaWx1cmUgPSB0cnVlOworICAgICAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfV07CisgICAgCisgICAgeworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY29y
czovL2hvc3QxL21haW4uaHRtbCJdXV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CisgICAgfQorICAgIEVYUEVDVF9GQUxTRShjb3Jzc3VjY2Vzcyk7CisgICAgRVhQ
RUNUX1RSVUUoY29yc2ZhaWx1cmUpOworICAgIAorICAgIGNvcnNzdWNjZXNzID0gZmFsc2U7Cisg
ICAgY29yc2ZhaWx1cmUgPSBmYWxzZTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBjb25maWd1
cmF0aW9uLl9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBOTzsKKyAgICB7
CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uXSk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJjb3JzOi8vaG9zdDEvbWFpbi5odG1s
Il1dXTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1RSVUUoY29yc3N1Y2Nlc3MpOworICAgIEVYUEVDVF9GQUxTRShjb3JzZmFpbHVy
ZSk7Cit9CisKIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNTY3JpcHQpCiB7CiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392831</attachid>
            <date>2020-03-06 18:35:17 -0800</date>
            <delta_ts>2020-03-06 20:08:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208748-20200306183517.patch</filename>
            <type>text/plain</type>
            <size>53940</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIwLTAzLTA2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBkaXNhYmxlIGNyb3NzIG9yaWdpbiBhY2Nlc3MgY29udHJvbCBjaGVja3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc0OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk4NjExMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIu
CisKKyAgICAgICAgQmVjYXVzZSBsb2FkaW5nIGlzIGRvbmUgcHJvY2Vzcy1nbG9iYWxseSBpbiB0
aGUgV2ViUHJvY2VzcywgdXNlIGEgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxl
cjo6c2luZ2xldG9uIGZvciB0aG9zZSBjaGVja3MuCisgICAgICAgIFBhc3MgYSBwYXJhbWV0ZXIg
dG8gdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcnMgdG8gZGlzYWJsZSB0aGVzZSBjaGVja3Mgb25s
eSBmb3IgbG9hZHMgZnJvbSBhIHdlYiBwcm9jZXNzIHdpdGhvdXQgYWNjZXNzIGNvbnRyb2wgY2hl
Y2tzLgorICAgICAgICBBcyBsb25nIGFzIHdlJ3JlIGNoYW5naW5nIHRoZSBzaWduYXR1cmUgb2Yg
cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrLCBtYWtlIGl0IHJldHVybiBhbiBFeHBlY3RlZCBpbnN0
ZWFkIG9mIGEgYm9vbCB3aXRoIGFuIG91dCBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBsb2FkZXIv
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJD
b3JlOjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzZXRDcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnBhc3Nlc0FjY2Vzc0NvbnRyb2xD
aGVjayk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKToKKyAg
ICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg6CisgICAgICAgICogbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OnZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjaGVja1JlZGlyZWN0
aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWRGcm9tKToKKwogMjAyMC0wMy0w
NSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSB0aGUgb3B0aW1pemF0aW9uIGZvciBkaXNjYXJkaW5nIG5vIG9wZXJhdGlvbiBEaXNw
bGF5TGlzdCBpdGVtcyBiZXR3ZWVuIFNhdmUgYW5kIFJlc3RvcmUgaXRlbXMKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCShy
ZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2lu
Y2x1ZGUgPG11dGV4PgpAQCAtMjA2LDU1ICsyMDcsNzQgQEAgdm9pZCBjbGVhbkhUVFBSZXF1ZXN0
SGVhZGVyc0ZvckFjY2Vzc0NvbgogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUEFjY2VwdEVuY29k
aW5nKCk7CiB9CiAKLWJvb2wgcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBTdHJpbmcmIGVycm9y
RGVzY3JpcHRpb24pCitDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyJiBDcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0b24oKQoreworICAgIEFT
U0VSVCghaXNJbk5ldHdvcmtQcm9jZXNzKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyPiBkaXNhYmxlcjsKKyAgICByZXR1
cm4gZGlzYWJsZXIuZ2V0KCk7Cit9CisKK3ZvaWQgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tEaXNhYmxlcjo6c2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICBBU1NFUlQoIWlzSW5OZXR3b3JrUHJvY2VzcygpKTsKKyAgICBtX2Fj
Y2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBlbmFibGVkOworfQorCitib29sIENyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNr
RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc0luTmV0d29ya1Byb2Nlc3MoKSk7Cisg
ICAgcmV0dXJuIG1fYWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKK30KKworRXhwZWN0ZWQ8dm9p
ZCwgU3RyaW5nPiBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIqIGNoZWNrRGlzYWJsZXIpCiB7CiAgICAgLy8g
QSB3aWxkY2FyZCBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gY2FuIG5vdCBiZSB1c2VkIGlm
IGNyZWRlbnRpYWxzIGFyZSB0byBiZSBzZW50LAogICAgIC8vIGV2ZW4gd2l0aCBBY2Nlc3MtQ29u
dHJvbC1BbGxvdy1DcmVkZW50aWFscyBzZXQgdG8gdHJ1ZS4KICAgICBjb25zdCBTdHJpbmcmIGFj
Y2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xBbGxvd09yaWdpbik7Ci0gICAgaWYgKGFjY2Vzc0NvbnRy
b2xPcmlnaW5TdHJpbmcgPT0gIioiICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
Ym9vbCBzdGFyQWxsb3dlZCA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpEb05vdFVzZTsKKyAgICBpZiAoIXN0YXJBbGxvd2VkKQorICAgICAgICBz
dGFyQWxsb3dlZCA9IGNoZWNrRGlzYWJsZXIgJiYgIWNoZWNrRGlzYWJsZXItPmNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpOworICAgIGlmIChhY2Nlc3NDb250cm9sT3JpZ2lu
U3RyaW5nID09ICIqIiAmJiBzdGFyQWxsb3dlZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IFN0cmluZyBzZWN1cml0eU9yaWdpblN0cmluZyA9IHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCk7
CiAgICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgIT0gc2VjdXJpdHlPcmlnaW5TdHJp
bmcpIHsKICAgICAgICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgPT0gIioiKQotICAg
ICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbiA9ICJDYW5ub3QgdXNlIHdpbGRjYXJkIGluIEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbiB3aGVuIGNyZWRlbnRpYWxzIGZsYWcgaXMgdHJ1ZS4iX3M7
Ci0gICAgICAgIGVsc2UgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcuZmluZCgnLCcpICE9
IG5vdEZvdW5kKQotICAgICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbiA9ICJBY2Nlc3MtQ29udHJv
bC1BbGxvdy1PcmlnaW4gY2Fubm90IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBvcmlnaW4uIl9zOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBlcnJvckRlc2NyaXB0aW9uID0gbWFrZVN0cmluZygi
T3JpZ2luICIsIHNlY3VyaXR5T3JpZ2luU3RyaW5nLCAiIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJDYW5ub3QgdXNlIHdpbGRjYXJkIGluIEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbiB3aGVuIGNyZWRlbnRpYWxzIGZsYWcgaXMgdHJ1ZS4iX3Mp
OworICAgICAgICBpZiAoYWNjZXNzQ29udHJvbE9yaWdpblN0cmluZy5maW5kKCcsJykgIT0gbm90
Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkFjY2Vzcy1Db250cm9s
LUFsbG93LU9yaWdpbiBjYW5ub3QgY29udGFpbiBtb3JlIHRoYW4gb25lIG9yaWdpbi4iX3MpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiT3JpZ2luICIsIHNlY3Vy
aXR5T3JpZ2luU3RyaW5nLCAiIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93
LU9yaWdpbi4iKSk7CiAgICAgfQogCiAgICAgaWYgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBh
Y2Nlc3NDb250cm9sQ3JlZGVudGlhbHNTdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xBbGxvd0NyZWRlbnRpYWxzKTsKLSAgICAgICAg
aWYgKGFjY2Vzc0NvbnRyb2xDcmVkZW50aWFsc1N0cmluZyAhPSAidHJ1ZSIpIHsKLSAgICAgICAg
ICAgIGVycm9yRGVzY3JpcHRpb24gPSAiQ3JlZGVudGlhbHMgZmxhZyBpcyB0cnVlLCBidXQgQWNj
ZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgaXMgbm90IFwidHJ1ZVwiLiI7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGFjY2Vzc0NvbnRyb2xD
cmVkZW50aWFsc1N0cmluZyAhPSAidHJ1ZSIpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoIkNyZWRlbnRpYWxzIGZsYWcgaXMgdHJ1ZSwgYnV0IEFjY2Vzcy1Db250cm9sLUFsbG93
LUNyZWRlbnRpYWxzIGlzIG5vdCBcInRydWVcIi4iX3MpOwogICAgIH0KIAotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiB7IH07CiB9CiAKLWJvb2wgdmFsaWRhdGVQcmVmbGlnaHRSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBTdHJpbmcmIGVycm9yRGVzY3JpcHRp
b24pCitFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tEaXNhYmxlciogY2hlY2tEaXNhYmxlcikKIHsKLSAgICBpZiAoIXJlc3Bv
bnNlLmlzU3VjY2Vzc2Z1bCgpKSB7Ci0gICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAiUHJlZmxp
Z2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsIl9zOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQorICAgIGlmICghcmVzcG9uc2UuaXNTdWNjZXNzZnVsKCkpCisgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZCgiUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsIl9z
KTsKIAotICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgc2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQgPSBw
YXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2UsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBzZWN1cml0eU9yaWdpbiwgY2hlY2tEaXNhYmxlcik7CisgICAgaWYgKCFhY2Nlc3NDb250cm9s
Q2hlY2tSZXN1bHQpCisgICAgICAgIHJldHVybiBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQ7CiAK
ICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBTdHJpbmcgZXJyb3JEZXNj
cmlwdGlvbjsKKyAgICAvLyBGSVhNRTogYWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QgYW5kIGFsbG93
c0Nyb3NzT3JpZ2luSGVhZGVycyBzaG91bGQgcmV0dXJuIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4g
dG8gYXZvaWQgaGF2aW5nIGFuIG91dCBwYXJhbWV0ZXIuCiAgICAgaWYgKCFyZXN1bHQtPnBhcnNl
KHJlc3BvbnNlKQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09yaWdpbk1ldGhvZChy
ZXF1ZXN0Lmh0dHBNZXRob2QoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVzY3Jp
cHRpb24pCiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3NzT3JpZ2luSGVhZGVycyhyZXF1
ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVz
Y3JpcHRpb24pKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKGVycm9yRGVzY3JpcHRpb24pOwogICAgIH0KIAogICAgIENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGU6OnNpbmdsZXRvbigpLmFwcGVuZEVudHJ5KHNlY3VyaXR5T3JpZ2lu
LnRvU3RyaW5nKCksIHJlcXVlc3QudXJsKCksIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNob3VsZENy
b3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lDYW5jZWxMb2FkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBv
cmlnaW4sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAkocmV2aXNpb24g
MjU3OTYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRl
ck5hbWVzLmgiCiAjaW5jbHVkZSAiUmVmZXJyZXJQb2xpY3kuaCIKICNpbmNsdWRlICJTdG9yZWRD
cmVkZW50aWFsc1BvbGljeS5oIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCkBAIC02Niw4ICs2
NywxOCBAQCBlbnVtIGNsYXNzIEhUVFBIZWFkZXJzVG9LZWVwRnJvbUNsZWFuaW5nCiBPcHRpb25T
ZXQ8SFRUUEhlYWRlcnNUb0tlZXBGcm9tQ2xlYW5pbmc+IGh0dHBIZWFkZXJzVG9LZWVwRnJvbUNs
ZWFuaW5nKGNvbnN0IEhUVFBIZWFkZXJNYXAmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYW5I
VFRQUmVxdWVzdEhlYWRlcnNGb3JBY2Nlc3NDb250cm9sKFJlc291cmNlUmVxdWVzdCYsIE9wdGlv
blNldDxIVFRQSGVhZGVyc1RvS2VlcEZyb21DbGVhbmluZz4pOwogCi1XRUJDT1JFX0VYUE9SVCBi
b29sIHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIFNlY3VyaXR5T3JpZ2luJiwgU3RyaW5nJiBlcnJvckRlc2Ny
aXB0aW9uKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgdmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFNlY3VyaXR5T3JpZ2luJiwgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9u
KTsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlz
YWJsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0Rpc2FibGVyJiBzaW5nbGV0b24oKTsKKyAgICB2aXJ0dWFsIH5Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2xDaGVja0Rpc2FibGVyKCkgPSBkZWZhdWx0OworICAgIHZvaWQgc2V0Q3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBjcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoKSBjb25zdDsKK3ByaXZhdGU6CisgICAgYm9v
bCBtX2FjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07Cit9OworCitXRUJDT1JFX0VY
UE9SVCBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiwgY29uc3QgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlciop
OworV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiB2YWxpZGF0ZVByZWZsaWdo
dFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyKik7CiAKIFdFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGlj
eShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKIE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFn
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYz
LDEyIEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjp2YWxpZGEKICAgICBhdXRv
KiBmcmFtZSA9IGxvYWRlci5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lKTsK
IAotICAgIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uOwotICAgIGlmICghV2ViQ29yZTo6dmFsaWRh
dGVQcmVmbGlnaHRSZXNwb25zZShyZXF1ZXN0LCByZXNwb25zZSwgbG9hZGVyLm9wdGlvbnMoKS5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGVycm9yRGVz
Y3JpcHRpb24pKSB7CisgICAgYXV0byByZXN1bHQgPSBXZWJDb3JlOjp2YWxpZGF0ZVByZWZsaWdo
dFJlc3BvbnNlKHJlcXVlc3QsIHJlc3BvbnNlLCBsb2FkZXIub3B0aW9ucygpLnN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBsb2FkZXIuc2VjdXJpdHlPcmlnaW4oKSwgJkNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpKTsKKyAgICBpZiAoIXJlc3VsdCkgewog
ICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAg
ICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBkb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIHJlc3VsdC5lcnJvcigpKTsKIAotICAgICAgICBsb2FkZXIucHJlZmxpZ2h0
RmFpbHVyZShpZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIHJlcXVlc3QudXJsKCksIGVycm9yRGVzY3JpcHRpb24sIFJlc291cmNlRXJyb3I6OlR5
cGU6OkFjY2Vzc0NvbnRyb2wpKTsKKyAgICAgICAgbG9hZGVyLnByZWZsaWdodEZhaWx1cmUoaWRl
bnRpZmllciwgUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1
ZXN0LnVybCgpLCByZXN1bHQuZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29u
dHJvbCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gMjU3
OTYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNiw5ICs2MTYsOSBAQCB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6bG9hZFJlcXVlCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQobV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKTsKICAg
ICAgICAgICAgICAgICByZXNwb25zZS5zZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWlu
dGluZzo6Q29ycyk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGFjY2Vzc0NvbnRyb2xFcnJvckRl
c2NyaXB0aW9uOwotICAgICAgICAgICAgICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNr
KHJlc3BvbnNlLCBtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNlY3VyaXR5T3Jp
Z2luKCksIGFjY2Vzc0NvbnRyb2xFcnJvckRlc2NyaXB0aW9uKSkgewotICAgICAgICAgICAgICAg
ICAgICBsb2dFcnJvckFuZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCByZXNwb25zZS51cmwoKSwgYWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRpb24sIFJl
c291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdCA9IHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNw
b25zZSwgbV9vcHRpb25zLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzZWN1cml0eU9yaWdpbigp
LCAmQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2luZ2xldG9uKCkpOwor
ICAgICAgICAgICAgICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KSB7CisgICAgICAg
ICAgICAgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQu
ZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCkpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biAyNTc5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yODEsOSArMjgxLDkgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0SQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIGVycm9y
RGVzY3JpcHRpb247Ci0gICAgICAgIGlmICghY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbChyZXF1ZXN0KCksIHJlZGlyZWN0UmVzcG9uc2UsIG5ld1JlcXVlc3QsIGVycm9y
RGVzY3JpcHRpb24pKSB7Ci0gICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIkNyb3Nz
LW9yaWdpbiByZWRpcmVjdGlvbiB0byAiICsgbmV3UmVxdWVzdC51cmwoKS5zdHJpbmcoKSArICIg
ZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeTogIiArIGVycm9y
RGVzY3JpcHRpb247CisgICAgICAgIGF1dG8gYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0ID0gY2hl
Y2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChyZXF1ZXN0KCksIHJlZGlyZWN0
UmVzcG9uc2UsIG5ld1JlcXVlc3QpOworICAgICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVja1Jl
c3VsdCkgeworICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJDcm9z
cy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgbmV3UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBk
ZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5OiAiLCBhY2Nlc3ND
b250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSk7CiAgICAgICAgICAgICBpZiAobV9mcmFtZSAmJiBt
X2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVz
ZSBjcm9zc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIGRlbmllZCBieSBDT1JTIHBvbGljeSIpOwpAQCAt
NDExLDEyICs0MTEsMTIgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bgogICAgICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgp
LmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNh
Y2hlZFJlc291cmNlUmV2YWxpZGF0aW9uS2V5KCksIGVtcHR5U3RyaW5nKCksIERpYWdub3N0aWNM
b2dnaW5nUmVzdWx0RmFpbCwgU2hvdWxkU2FtcGxlOjpZZXMpOwogICAgIH0KIAotICAgIFN0cmlu
ZyBlcnJvckRlc2NyaXB0aW9uOwotICAgIGlmICghY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbChyZXNwb25zZSwgZXJyb3JEZXNjcmlwdGlvbikpIHsKKyAgICBhdXRvIGFjY2Vz
c0NvbnRyb2xDaGVja1Jlc3VsdCA9IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2wocmVzcG9uc2UpOworICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KSB7CiAgICAg
ICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0
eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1
cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0LmVycm9y
KCkpOwogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IGNhbmNlbGluZyBsb2FkIGJlY2F1c2Ugb2YgY3Jvc3Mgb3JpZ2luIGFjY2VzcyBjb250cm9sIik7
Ci0gICAgICAgIGNhbmNlbChSZXNvdXJjZUVycm9yKFN0cmluZygpLCAwLCByZXF1ZXN0KCkudXJs
KCksIGVycm9yRGVzY3JpcHRpb24sIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wp
KTsKKyAgICAgICAgY2FuY2VsKFJlc291cmNlRXJyb3IoU3RyaW5nKCksIDAsIHJlcXVlc3QoKS51
cmwoKSwgYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0LmVycm9yKCksIFJlc291cmNlRXJyb3I6OlR5
cGU6OkFjY2Vzc0NvbnRyb2wpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjAwLDIy
ICs2MDAsMjcgQEAgc3RhdGljIHZvaWQgbG9nUmVzb3VyY2VMb2FkZWQoRnJhbWUqIGZyYQogICAg
IGZyYW1lLT5wYWdlKCktPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01l
c3NhZ2UoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRlZEtleSgpLCByZXNvdXJj
ZVR5cGUsIFNob3VsZFNhbXBsZTo6WWVzKTsKIH0KIAotYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6
Y2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKQorRXhwZWN0ZWQ8dm9pZCwg
U3RyaW5nPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1f
cmVzb3VyY2UtPmlzQ3Jvc3NPcmlnaW4oKSB8fCBvcHRpb25zKCkubW9kZSAhPSBGZXRjaE9wdGlv
bnM6Ok1vZGU6OkNvcnMpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4geyB9
OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChyZXNwb25zZS5zb3VyY2Uo
KSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpCi0gICAgICAgIHJl
dHVybiByZXNwb25zZS50YWludGluZygpICE9IFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpP
cGFxdWU7CisgICAgaWYgKHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNv
dXJjZTo6U2VydmljZVdvcmtlcikgeworICAgICAgICBpZiAocmVzcG9uc2UudGFpbnRpbmcoKSA9
PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlKSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgaGF2ZSBhbiBlcnJvciBtZXNzYWdlLgorICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKFN0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KICNlbmRpZgogCiAgICAgQVNTRVJUKG1fb3JpZ2luKTsKIAotICAgIHJldHVy
biBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2UsIG9wdGlvbnMoKS5jcmVkZW50aWFs
cyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OlVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgKm1fb3Jp
Z2luLCBlcnJvckRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gcGFzc2VzQWNjZXNzQ29udHJvbENo
ZWNrKHJlc3BvbnNlLCBvcHRpb25zKCkuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVk
ZW50aWFsczo6SW5jbHVkZSA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsICptX29yaWdpbiwgJkNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpKTsKIH0KIAotYm9vbCBTdWJyZXNvdXJj
ZUxvYWRlcjo6Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkKK0V4cGVjdGVkPHZvaWQsIFN0cmluZz4gU3VicmVzb3VyY2VMb2FkZXI6OmNo
ZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKIHsKICAgICBib29sIGNyb3NzT3Jp
Z2luRmxhZyA9IG1fcmVzb3VyY2UtPmlzQ3Jvc3NPcmlnaW4oKTsKICAgICBib29sIGlzTmV4dFJl
cXVlc3RDcm9zc09yaWdpbiA9IG1fb3JpZ2luICYmICFtX29yaWdpbi0+Y2FuUmVxdWVzdChuZXdS
ZXF1ZXN0LnVybCgpKTsKQEAgLTYyOSwxNCArNjM0LDE3IEBAIGJvb2wgU3VicmVzb3VyY2VMb2Fk
ZXI6OmNoZWNrUmVkaXJlY3Rpb24KICAgICBpZiAob3B0aW9ucygpLm1vZGUgPT0gRmV0Y2hPcHRp
b25zOjpNb2RlOjpDb3JzKSB7CiAgICAgICAgIGlmIChtX3Jlc291cmNlLT5pc0Nyb3NzT3JpZ2lu
KCkpIHsKICAgICAgICAgICAgIGF1dG8gbG9jYXRpb25TdHJpbmcgPSByZWRpcmVjdFJlc3BvbnNl
Lmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pOwotICAgICAgICAgICAg
ZXJyb3JNZXNzYWdlID0gdmFsaWRhdGVDcm9zc09yaWdpblJlZGlyZWN0aW9uVVJMKFVSTChyZWRp
cmVjdFJlc3BvbnNlLnVybCgpLCBsb2NhdGlvblN0cmluZykpOworICAgICAgICAgICAgU3RyaW5n
IGVycm9yTWVzc2FnZSA9IHZhbGlkYXRlQ3Jvc3NPcmlnaW5SZWRpcmVjdGlvblVSTChVUkwocmVk
aXJlY3RSZXNwb25zZS51cmwoKSwgbG9jYXRpb25TdHJpbmcpKTsKICAgICAgICAgICAgIGlmICgh
ZXJyb3JNZXNzYWdlLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShlcnJvck1lc3NhZ2Up
KTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChtX29yaWdpbik7Ci0gICAgICAgIGlmIChj
cm9zc09yaWdpbkZsYWcgJiYgIXBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZWRpcmVjdFJlc3Bv
bnNlLCBvcHRpb25zKCkuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksICptX29yaWdpbiwgZXJyb3JN
ZXNzYWdlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNyb3NzT3Jp
Z2luRmxhZykgeworICAgICAgICAgICAgYXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQgPSBw
YXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVkaXJlY3RSZXNwb25zZSwgb3B0aW9ucygpLnN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCAqbV9vcmlnaW4sICZDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0Rpc2FibGVyOjpzaW5nbGV0b24oKSk7CisgICAgICAgICAgICBpZiAoIWFjY2Vzc0NvbnRy
b2xDaGVja1Jlc3VsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gYWNjZXNzQ29udHJvbENoZWNr
UmVzdWx0OworICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCByZWRpcmVjdGluZ1RvTmV3T3Jp
Z2luID0gZmFsc2U7CkBAIC02NjEsNyArNjY5LDcgQEAgYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6
Y2hlY2tSZWRpcmVjdGlvbgogICAgIAogICAgIHVwZGF0ZVJlcXVlc3RSZWZlcnJlcihuZXdSZXF1
ZXN0LCByZWZlcnJlclBvbGljeSgpLCBwcmV2aW91c1JlcXVlc3QuaHR0cFJlZmVycmVyKCkpOwog
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6dXBkYXRlUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGlj
eVZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJ
KHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw4ICs4OSw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWxlYXNlUmVzb3VyY2VzKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGNoZWNrRm9ySFRUUFN0
YXR1c0NvZGVFcnJvcigpOwotICAgIGJvb2wgY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgU3RyaW5nJik7Ci0gICAgYm9vbCBjaGVj
a1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiBuZXdSZXF1ZXN0LCBTdHJpbmcmKTsKKyAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNo
ZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOworICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciosIGludCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw5ICszNDcsOSBA
QCB2b2lkIENhY2hlZFJlc291cmNlOjpsb2FkRnJvbShjb25zdCBDYWNoCiAKICAgICBpZiAoaXND
cm9zc09yaWdpbigpICYmIG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29y
cykgewogICAgICAgICBBU1NFUlQobV9vcmlnaW4pOwotICAgICAgICBTdHJpbmcgZXJyb3JNZXNz
YWdlOwotICAgICAgICBpZiAoIVdlYkNvcmU6OnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNv
dXJjZS5yZXNwb25zZSgpLCBtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksICptX29y
aWdpbiwgZXJyb3JNZXNzYWdlKSkgewotICAgICAgICAgICAgc2V0UmVzb3VyY2VFcnJvcihSZXNv
dXJjZUVycm9yKFN0cmluZygpLCAwLCB1cmwoKSwgZXJyb3JNZXNzYWdlLCBSZXNvdXJjZUVycm9y
OjpUeXBlOjpBY2Nlc3NDb250cm9sKSk7CisgICAgICAgIGF1dG8gYWNjZXNzQ29udHJvbENoZWNr
UmVzdWx0ID0gV2ViQ29yZTo6cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc291cmNlLnJlc3Bv
bnNlKCksIG1fb3B0aW9ucy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgKm1fb3JpZ2luLCAmQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2luZ2xldG9uKCkpOworICAgICAg
ICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdCkgeworICAgICAgICAgICAgc2V0UmVzb3Vy
Y2VFcnJvcihSZXNvdXJjZUVycm9yKFN0cmluZygpLCAwLCB1cmwoKSwgYWNjZXNzQ29udHJvbENo
ZWNrUmVzdWx0LmVycm9yKCksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTgwMzYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDUyIEBACisyMDIwLTAzLTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBkaXNhYmxlIGNyb3NzIG9yaWdp
biBhY2Nlc3MgY29udHJvbCBjaGVja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwODc0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk4NjExMTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkQ29t
cGxldGVXaXRoRXJyb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xv
YWRDaGVja2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjp2YWxpZGF0
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NP
UlNSZXF1ZXN0V2l0aFByZWZsaWdodCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9h
ZDo6UGluZ0xvYWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAo
QVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJh
dGlvbjo6Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIGNvbnN0KToKKyAgICAg
ICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRDcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZF0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0
OjphZGRQYXJhbWV0ZXJzU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0
OjphZGRQYXJhbWV0ZXJzRnJvbUZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fcHJvY2Vzc0Rpc3BsYXlO
YW1lKToKKwogMjAyMC0wMy0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIHVuaWZpZWQgYnVpbGQgZml4OyBJbmNsdWRlIHdoYXQgeW91IHVz
ZSwgaW4gdGhpcyBjYXNlOiBGcmFtZUluZm9EYXRhLmguCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIApAQCAtNDAsMTEg
KzQxLDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIENvbXBsZXRpb25D
YWxsYmFjayYmIGNvbXBsZXRpb25DYWxsYmFjaykKK05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
cjo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgTmV0d29ya1Jlc291cmNlTG9hZGVyKiBuZXR3b3JrUmVzb3VyY2VMb2FkZXIsIFBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcywgQ29tcGxldGlvbkNhbGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQogICAgIDogbV9w
YXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVycykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5l
dHdvcmtQcm9jZXNzKQogICAgICwgbV9jb21wbGV0aW9uQ2FsbGJhY2soV1RGTW92ZShjb21wbGV0
aW9uQ2FsbGJhY2spKQogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3Moc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKQorICAgICwgbV9uZXR3b3Jr
UmVzb3VyY2VMb2FkZXIobWFrZVdlYWtQdHIobmV0d29ya1Jlc291cmNlTG9hZGVyKSkKIHsKIH0K
IApAQCAtMTM3LDEwICsxMzksMTAgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6
OmRpZENvbQogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQ29tcGxldGUgaHR0cF9z
dGF0dXNfY29kZTogJWQiLCBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogCi0gICAgU3Ry
aW5nIGVycm9yRGVzY3JpcHRpb247Ci0gICAgaWYgKCF2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNl
KG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fcGFyYW1ldGVycy5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbiwgZXJyb3JE
ZXNjcmlwdGlvbikpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQ29tcGxl
dGUsIEFjY2Vzc0NvbnRyb2wgZXJyb3I6ICVzIiwgZXJyb3JEZXNjcmlwdGlvbi51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgbV9jb21wbGV0aW9uQ2FsbGJhY2soUmVzb3VyY2VFcnJvciB7IGVycm9y
RG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJs
KCksIGVycm9yRGVzY3JpcHRpb24sIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wg
fSk7CisgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKG1fcGFyYW1l
dGVycy5vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fcGFyYW1ldGVycy5zdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbiwgbV9uZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuZ2V0KCkpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZENvbXBsZXRlLCBBY2Nlc3NDb250cm9sIGVycm9yOiAlcyIsIHJlc3Vs
dC5lcnJvcigpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX2NvbXBsZXRpb25DYWxsYmFjayhS
ZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbV9wYXJhbWV0ZXJz
Lm9yaWdpbmFsUmVxdWVzdC51cmwoKSwgcmVzdWx0LmVycm9yKCksIFJlc291cmNlRXJyb3I6OlR5
cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb21w
bGV0aW9uQ2FsbGJhY2soUmVzb3VyY2VFcnJvciB7IH0pOwpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5l
dHdvcmtQcm9jZXNzOworY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogCiBjbGFzcyBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIgZmluYWwgOiBwcml2YXRlIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01OCw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB9OwogICAgIHVzaW5nIENvbXBsZXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT47CiAKLSAgICBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmLCBQYXJhbWV0ZXJzJiYsIGJvb2wgc2hv
dWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBDb21wbGV0aW9uQ2FsbGJhY2smJik7
CisgICAgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29y
a1Jlc291cmNlTG9hZGVyKiwgUGFyYW1ldGVycyYmLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcywgQ29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIH5OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIoKTsKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5vcmlnaW5hbFJl
cXVlc3Q7IH0KIApAQCAtODQsNiArODUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOZXR3b3Jr
RGF0YVRhc2s+IG1fdGFzazsKICAgICBib29sIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpOZXR3b3JrVHJhbnNhY3Rpb25JbmZv
cm1hdGlvbiBtX2xvYWRJbmZvcm1hdGlvbjsKKyAgICBXZWFrUHRyPE5ldHdvcmtSZXNvdXJjZUxv
YWRlcj4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5jcHAJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTY2hlbWVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg+CkBAIC00OSw3ICs1MCw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1NhbWVPcmlnaW4oY29uc3QgVVIKICAgICByZXR1cm4gdXJsLnByb3Rv
Y29sSXNEYXRhKCkgfHwgdXJsLnByb3RvY29sSXNCbG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4t
PmNhblJlcXVlc3QodXJsKTsKIH0KIAotTmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENo
ZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2NoZW1lUmVnaXN0
cnkqIHNjaGVtZVJlZ2lzdHJ5LCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIEhUVFBI
ZWFkZXJNYXAmJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBVUkwmJiB1cmwsIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BP
cmlnaW4sIFByZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVy
LCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKK05ldHdvcmtMb2FkQ2hl
Y2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
TmV0d29ya1Jlc291cmNlTG9hZGVyKiBuZXR3b3JrUmVzb3VyY2VMb2FkZXIsIE5ldHdvcmtTY2hl
bWVSZWdpc3RyeSogc2NoZW1lUmVnaXN0cnksIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJ
RCwgSFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHRvcE9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYg
cmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQogICAgIDog
bV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQp
CiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpAQCAtNjQsNiArNjUsNyBA
QCBOZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOCiAgICAgLCBtX2lzSFRU
UFNVcGdyYWRlRW5hYmxlZChpc0hUVFBTVXBncmFkZUVuYWJsZWQpCiAgICAgLCBtX3JlcXVlc3RM
b2FkVHlwZShyZXF1ZXN0TG9hZFR5cGUpCiAgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KHNjaGVtZVJl
Z2lzdHJ5KQorICAgICwgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXIobWFrZVdlYWtQdHIobmV0d29y
a1Jlc291cmNlTG9hZGVyKSkKIHsKICAgICBtX2lzU2FtZU9yaWdpblJlcXVlc3QgPSBpc1NhbWVP
cmlnaW4obV91cmwsIG1fb3JpZ2luLmdldCgpKTsKICAgICBzd2l0Y2ggKG9wdGlvbnMuY3JlZGVu
dGlhbHMpIHsKQEAgLTE4Nyw5ICsxODksOSBAQCBSZXNvdXJjZUVycm9yIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6dmFsaWRhCiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKLSAgICBpZiAo
IXBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwgbV9zdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgKm1fb3JpZ2luLCBlcnJvck1lc3NhZ2UpKQotICAgICAgICByZXR1cm4gUmVzb3VyY2VF
cnJvciB7IFN0cmluZyB7IH0sIDAsIG1fdXJsLCBXVEZNb3ZlKGVycm9yTWVzc2FnZSksIFJlc291
cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfTsKKyAgICBhdXRvIHJlc3VsdCA9IHBhc3Nl
c0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
Km1fb3JpZ2luLCBtX25ldHdvcmtSZXNvdXJjZUxvYWRlci5nZXQoKSk7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgU3RyaW5nIHsgfSwgMCwgbV91cmws
IFdURk1vdmUocmVzdWx0LmVycm9yKCkpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250
cm9sIH07CiAKICAgICByZXNwb25zZS5zZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWlu
dGluZzo6Q29ycyk7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTQzMCw3ICs0MzIsNyBAQCB2b2lkIE5l
dHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVzCiAgICAgICAgIG1fd2ViUGFnZVByb3h5
SUQsCiAgICAgICAgIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kKICAgICB9OwotICAgIG1fY29y
c1ByZWZsaWdodENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
cj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVk
aXJlY3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgIG1fY29yc1ByZWZsaWdodENo
ZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3Jr
UHJvY2Vzcy5nZXQoKSwgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXIuZ2V0KCksIFdURk1vdmUocGFy
YW1ldGVycyksIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBbdGhpcywg
cmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBp
c1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQoKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGln
aHQgLSBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodCBwcmVmbGlnaHQg
Y29tcGxldGUsIHN1Y2Nlc3M6ICVkIGZvclJlZGlyZWN0PyAlZCIsIGVycm9yLmlzTnVsbCgpLCBp
c1JlZGlyZWN0ZWQpOwogCiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAko
cmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBOZXR3
b3JrTG9hZENoZWNrZXIgOiBwdWJsaWMgQ2FuTWFrCiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBM
b2FkVHlwZSA6IGJvb2wgeyBNYWluRnJhbWUsIE90aGVyIH07CiAKLSAgICBOZXR3b3JrTG9hZENo
ZWNrZXIoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2NoZW1lUmVnaXN0cnkqLCBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4mJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgV2Vi
Q29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBn
cmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1l
dHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gTG9hZFR5cGU6Ok90aGVy
KTsKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIqLCBOZXR3b3JrU2NoZW1lUmVnaXN0cnkqLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMm
JiwgUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgUmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgV2ViQ29yZTo6UHJlZmxp
Z2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQg
PSBmYWxzZSwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxz
ZSwgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gTG9hZFR5cGU6Ok90aGVyKTsKICAgICB+TmV0
d29ya0xvYWRDaGVja2VyKCk7CiAKICAgICBzdHJ1Y3QgUmVkaXJlY3Rpb25UcmlwbGV0IHsKQEAg
LTE1Nyw2ICsxNTcsNyBAQCBwcml2YXRlOgogCiAgICAgTG9hZFR5cGUgbV9yZXF1ZXN0TG9hZFR5
cGU7CiAgICAgUmVmUHRyPE5ldHdvcmtTY2hlbWVSZWdpc3RyeT4gbV9zY2hlbWVSZWdpc3RyeTsK
KyAgICBXZWFrUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbV9uZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24g
MjU3OTYzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvCiAgICAgZW5jb2RlciA8PCBpc0hU
VFBTVXBncmFkZUVuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xp
ZW50OwogICAgIGVuY29kZXIgPDwgcGFyZW50RnJhbWVJRDsKKyAgICBlbmNvZGVyIDw8IGNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJzTW9kZTsKQEAgLTI2NSw2ICsyNjYs
MTIgQEAgT3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IAogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5wYXJlbnRGcmFtZUlEID0gV1RGTW92ZSgq
cGFyZW50RnJhbWVJRCk7CiAKKyAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2xDaGVja0VuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0VuYWJsZWQ7CisgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LmNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9ICpjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQ7CisgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIE9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJzTW9kZT4gc2VydmljZVdvcmtlcnNNb2RlOwogICAgIGRlY29kZXIg
Pj4gc2VydmljZVdvcmtlcnNNb2RlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAkocmV2
aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9v
bCBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50IHsgZmFsc2UgfTsKICAgICBPcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IHBhcmVudEZyYW1lSUQ7CisgICAgYm9vbCBjcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlIHNlcnZpY2VXb3JrZXJz
TW9kZSB7IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSB9OwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcg
QEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogCiAgICAgaWYgKHN5
bmNocm9ub3VzUmVwbHkgfHwgcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFj
Y2VzcyB8fCBwYXJhbWV0ZXJzLm9wdGlvbnMua2VlcEFsaXZlKSB7CiAgICAgICAgIE5ldHdvcmtM
b2FkQ2hlY2tlcjo6TG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gaXNNYWluRnJhbWVMb2FkKCkg
PyBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlOjpNYWluRnJhbWUgOiBOZXR3b3JrTG9hZENo
ZWNrZXI6OkxvYWRUeXBlOjpPdGhlcjsKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBt
YWtlVW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
LCAmY29ubmVjdGlvbi5zY2hlbWVSZWdpc3RyeSgpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRl
cnMub3B0aW9ucyB9LCBzZXNzaW9uSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBI
VFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJM
IHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdp
bi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRl
cnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9w
YXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CisgICAgICAgIG1fbmV0d29ya0xvYWRD
aGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29y
a1Byb2Nlc3MoKSwgdGhpcywgICZjb25uZWN0aW9uLnNjaGVtZVJlZ2lzdHJ5KCksIEZldGNoT3B0
aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIHNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMu
d2ViUGFnZVByb3h5SUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1
ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFt
ZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi5jb3B5
UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0
dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKICAgICAg
ICAgaWYgKG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgICAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlci0+c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyB7IG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMudmFs
dWUoKSB9KTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMTE5MCw2ICsxMTkw
LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRDYXB0dXIKICAgICByZXR1
cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7CiB9CiAKK2Jvb2wgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQo
KSBjb25zdAoreworICAgIHJldHVybiBtX3BhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sQ2hlY2tFbmFibGVkOworfQorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQWRDbGlja0F0dHJpYnV0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3lDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGltZXIuaD4KQEAgLTY4LDYgKzY5LDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9h
ZGVyIGZpbmFsCiAgICAgLCBwdWJsaWMgTmV0d29ya0xvYWRDbGllbnQKICAgICAsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0Rpc2FibGVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Jlc291
cmNlTG9hZGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+IGNyZWF0ZShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxheWVkUmVw
bHkmJiByZXBseSA9IG51bGxwdHIpCkBAIC0xMTQsNiArMTE2LDkgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzKCkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0Rpc2FibGVyCisgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9Eb3dubG9hZChE
b3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBib29sIGlzTWFpblJlc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QucmVxdWVzdGVyKCkgPT0gV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW47IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCShyZXZpc2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyAr
NDUsNyBAQCBQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya1Byb2Nlc3MmIG5ldHdvCiAgICAgLCBt
X3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhp
cywgJlBpbmdMb2FkOjp0aW1lb3V0VGltZXJGaXJlZCkKLSAgICAsIG1fbmV0d29ya0xvYWRDaGVj
a2VyKG1ha2VVbmlxdWVSZWY8TmV0d29ya0xvYWRDaGVja2VyPihuZXR3b3JrUHJvY2VzcywgbnVs
bHB0ciwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnN9LCBtX3Nlc3Npb25JRCwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBXVEZNb3ZlKG1fcGFyYW1ldGVycy5vcmlnaW5h
bFJlcXVlc3RIZWFkZXJzKSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9w
YXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy50b3BPcmlnaW4u
Y29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBtX3BhcmFtZXRlcnMucmVx
dWVzdC5odHRwUmVmZXJyZXIoKSkpCisgICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5p
cXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4obmV0d29ya1Byb2Nlc3MsIG51bGxwdHIsIG51bGxw
dHIsIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zfSwgbV9zZXNzaW9uSUQsIG1f
cGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShtX3BhcmFtZXRlcnMub3JpZ2luYWxS
ZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFy
YW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luLmNv
cHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwgbV9wYXJhbWV0ZXJzLnJlcXVl
c3QuaHR0cFJlZmVycmVyKCkpKQogewogICAgIGluaXRpYWxpemUobmV0d29ya1Byb2Nlc3MpOwog
fQpAQCAtNTUsNyArNTUsNyBAQCBQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlCiAgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKICAgICAsIG1fY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX3RpbWVv
dXRUaW1lcigqdGhpcywgJlBpbmdMb2FkOjp0aW1lb3V0VGltZXJGaXJlZCkKLSAgICAsIG1fbmV0
d29ya0xvYWRDaGVja2VyKG1ha2VVbmlxdWVSZWY8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCksICZjb25uZWN0aW9uLnNjaGVtZVJlZ2lzdHJ5KCksIEZldGNo
T3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zfSwgbV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5z
b3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwg
bV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwgbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cFJl
ZmVycmVyKCkpKQorICAgICwgbV9uZXR3b3JrTG9hZENoZWNrZXIobWFrZVVuaXF1ZVJlZjxOZXR3
b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgbnVsbHB0ciwgICZj
b25uZWN0aW9uLnNjaGVtZVJlZ2lzdHJ5KCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5v
cHRpb25zfSwgbV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgV1RGTW92
ZShtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVy
cy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBt
X3BhcmFtZXRlcnMudG9wT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBv
bGljeSwgbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cFJlZmVycmVyKCkpKQogICAgICwgbV9ibG9i
RmlsZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKIHsK
ICAgICBmb3IgKGF1dG8mIGZpbGUgOiBtX2Jsb2JGaWxlcykgewpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9u
IDI1Nzk2MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDcgQEAgdm9pZCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSQogICAgIGVuY29kZXIgPDwgb2xkUGFnZUlEOwogICAg
IGVuY29kZXIgPDwgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBlbmNvZGVyIDw8IGNvcnNEaXNh
YmxpbmdQYXR0ZXJuczsKKyAgICBlbmNvZGVyIDw8IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHByb2Nlc3NEaXNwbGF5TmFtZTsKIAogICAgIGVu
Y29kZXIgPDwgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3M7CkBAIC00NDMsNiArNDQ0LDEy
IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9
IFdURk1vdmUoKmNvcnNEaXNhYmxpbmdQYXR0ZXJucyk7CiAKKyAgICBPcHRpb25hbDxib29sPiBj
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBjcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CisgICAgaWYgKCFjcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcGFyYW1ldGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSAqY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOworICAgIAogICAgIE9wdGlvbmFsPFN0
cmluZz4gcHJvY2Vzc0Rpc3BsYXlOYW1lOwogICAgIGRlY29kZXIgPj4gcHJvY2Vzc0Rpc3BsYXlO
YW1lOwogICAgIGlmICghcHJvY2Vzc0Rpc3BsYXlOYW1lKQpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjU3OTYz
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDksNiArMjA5LDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMgewogCiAgICAgU3RyaW5nIG92ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAgVmVjdG9y
PFN0cmluZz4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGJvb2wgY3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkIHsgdHJ1ZSB9OwogICAgIFN0cmluZyBwcm9jZXNzRGlzcGxh
eU5hbWU7CiAKICAgICBib29sIHNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzIHsgZmFsc2Ug
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNp
b24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzcyMiw2ICs3NzIyLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyBXZWJQYWdlUHJveHk6OgogCiAgICAgcGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFUeXBl
ID0gbV9vdmVycmlkZGVuTWVkaWFUeXBlOwogICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1Bh
dHRlcm5zID0gbV9jb25maWd1cmF0aW9uLT5jb3JzRGlzYWJsaW5nUGF0dGVybnMoKTsKKyAgICBw
YXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IG1fY29uZmln
dXJhdGlvbi0+Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKCk7CiAgICAgcGFy
YW1ldGVycy5oYXNSZXNvdXJjZUxvYWRDbGllbnQgPSAhIW1fcmVzb3VyY2VMb2FkQ2xpZW50Owog
CiAgICAgcHJvY2Vzcy5hZGRXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShtX3VzZXJDb250
ZW50Q29udHJvbGxlciwgcGFyYW1ldGVycyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI1Nzk2
MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9u
PiBQYWdlQ29uZmlndXJhdGlvbgogICAgIGZvciAoYXV0byYgcGFpciA6IHRoaXMtPm1fdXJsU2No
ZW1lSGFuZGxlcnMpCiAgICAgICAgIGNvcHktPm1fdXJsU2NoZW1lSGFuZGxlcnMuc2V0KHBhaXIu
a2V5LCBwYWlyLnZhbHVlLmNvcHlSZWYoKSk7CiAgICAgY29weS0+bV9jb3JzRGlzYWJsaW5nUGF0
dGVybnMgPSB0aGlzLT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBjb3B5LT5tX2Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IHRoaXMtPm1fY3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAgIGNvcHktPm1fd2ViVmlld0NhdGVnb3J5ID0gdGhp
cy0+bV93ZWJWaWV3Q2F0ZWdvcnk7CiAKICAgICBjb3B5LT5tX3Byb2Nlc3NEaXNwbGF5TmFtZSA9
IHRoaXMtPm1fcHJvY2Vzc0Rpc3BsYXlOYW1lOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1Nzk2MykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mIGNvcnNEaXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29yc0Rpc2FibGluZ1BhdHRlcm5zOyB9CiAgICAgdm9pZCBzZXRDT1JTRGlzYWJsaW5nUGF0dGVy
bnMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2FibGluZ1BhdHRl
cm5zID0gV1RGTW92ZShwYXR0ZXJucyk7IH0KIAorICAgIGJvb2wgY3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sQ2hlY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2xDaGVja0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQgPSBlbmFibGVkOyB9CisKICAgICBjb25zdCBXVEY6OlN0cmluZyYgcHJvY2Vz
c0Rpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzRGlzcGxheU5hbWU7IH0KICAg
ICB2b2lkIHNldFByb2Nlc3NEaXNwbGF5TmFtZShjb25zdCBXVEY6OlN0cmluZyYgbmFtZSkgeyBt
X3Byb2Nlc3NEaXNwbGF5TmFtZSA9IG5hbWU7IH0KIApAQCAtMTgxLDYgKzE4NCw3IEBAIHByaXZh
dGU6CiAKICAgICBIYXNoTWFwPFdURjo6U3RyaW5nLCBSZWY8V2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVyPj4gbV91cmxTY2hlbWVIYW5kbGVyczsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1f
Y29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGJvb2wgbV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAgICAgV1RGOjpTdHJpbmcgbV9wcm9jZXNzRGlzcGxh
eU5hbWU7CiAgICAgV2ViS2l0OjpXZWJWaWV3Q2F0ZWdvcnkgbV93ZWJWaWV3Q2F0ZWdvcnkgeyBX
ZWJLaXQ6OldlYlZpZXdDYXRlZ29yeTo6QXBwQm91bmREb21haW4gfTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjU3OTYzKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTkxMyw2ICs5MTMsMTYgQEAgLSAodm9pZClfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOihO
U0FycgogICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFdU
Rk1vdmUodmVjdG9yKSk7CiB9CiAKKy0gKHZvaWQpX3NldENyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZDooQk9PTCllbmFibGVkCit7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5z
ZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKKy0g
KEJPT0wpX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZAoreworICAgIHJldHVy
biBfcGFnZUNvbmZpZ3VyYXRpb24tPmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxl
ZCgpOworfQorCiAtIChCT09MKV9kcmF3c0JhY2tncm91bmQKIHsKICAgICByZXR1cm4gX2RyYXdz
QmFja2dyb3VuZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCShyZXZp
c2lvbiAyNTc5NjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLV2ViVmlld0NhCiAKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJzaXRlRGF0YVN0b3JlICpfd2Vic2l0ZURhdGFTdG9y
ZUlmRXhpc3RzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRDT1JTRGlzYWJs
aW5nUGF0dGVybnM6KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfY29yc0Rpc2FibGluZ1BhdHRlcm5z
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQ6KSBCT09MIF9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAog
I2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENs
aWVudE5hdmlnYXRpb25zUnVuQXRGb3JlZ3JvdW5kUHJpb3JpdHk6KSBCT09MIF9jbGllbnROYXZp
Z2F0aW9uc1J1bkF0Rm9yZWdyb3VuZFByaW9yaXR5IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lP
U19UQkEpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI1Nzk2MykKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYyLDggKzI2MiwxMCBAQCBib29sIFdlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2Fk
aW5nVXNpbmdVCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFBhcmFtZXRl
cnNGcm9tRnJhbWUoY29uc3QgRnJhbWUqIGZyYW1lLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKK3N0YXRpYyB2b2lkIGFkZFBhcmFtZXRlcnNTaGFyZWQoY29uc3Qg
RnJhbWUqIGZyYW1lLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
IHsKKyAgICBwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9
IENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLmNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpOworCiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0zMTEsNyArMzEzLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkRnJvbQogICAgIGxvYWRQYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdU
aW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgbG9hZFBhcmFtZXRlcnMub3B0aW9ucyA9
IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKTsKICAgICBsb2FkUGFyYW1ldGVycy5wcmVmbGlnaHRQ
b2xpY3kgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkucHJlZmxpZ2h0UG9saWN5OwotICAgIGFk
ZFBhcmFtZXRlcnNGcm9tRnJhbWUoZnJhbWUsIGxvYWRQYXJhbWV0ZXJzKTsKKyAgICBhZGRQYXJh
bWV0ZXJzU2hhcmVkKGZyYW1lLCBsb2FkUGFyYW1ldGVycyk7CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgbG9hZFBhcmFtZXRlcnMuc2VydmljZVdvcmtlcnNNb2RlID0gcmVzb3Vy
Y2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZTsKQEAgLTYwOCw3ICs2MTAsNyBA
QCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jCiAgICAgaWYgKHdlYlBh
Z2UpCiAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
PSB3ZWJQYWdlLT5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CiAKLSAgICBhZGRQYXJh
bWV0ZXJzRnJvbUZyYW1lKHdlYkZyYW1lLT5jb3JlRnJhbWUoKSwgbG9hZFBhcmFtZXRlcnMpOwor
ICAgIGFkZFBhcmFtZXRlcnNTaGFyZWQod2ViRnJhbWUtPmNvcmVGcmFtZSgpLCBsb2FkUGFyYW1l
dGVycyk7CiAKICAgICBkYXRhLnNocmluaygwKTsKIApAQCAtNjgxLDcgKzY4Myw3IEBAIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnIKICAgICAgICAgaWYgKGF1dG8qIGNv
bnRlbnRTZWN1cml0eVBvbGljeSA9IGRvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkK
ICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IGNvbnRlbnRT
ZWN1cml0eVBvbGljeS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAgICAgfQotICAgIGFkZFBhcmFtZXRl
cnNGcm9tRnJhbWUoJmZyYW1lLCBsb2FkUGFyYW1ldGVycyk7CisgICAgYWRkUGFyYW1ldGVyc1No
YXJlZCgmZnJhbWUsIGxvYWRQYXJhbWV0ZXJzKTsKICAgICAKICAgICBhdXRvKiB3ZWJGcmFtZUxv
YWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWUubG9hZGVyKCkuY2xpZW50
KCkpOwogICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFt
ZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjU3OTYzKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyOSw2ICs1MjksOCBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgCiAjZW5kaWYKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0
ZXJucyA9IFdURk1vdmUocGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMpOworICAgIGlm
ICghcGFyYW1ldGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpCisgICAg
ICAgIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLnNl
dENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChmYWxzZSk7CiAKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChw
YXJhbWV0ZXJzLmZyb250Ym9hcmRFeHRlbnNpb25IYW5kbGUpCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTgwMzYpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMy0w
NiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IEFkZCBTUEkgdG8gZGlzYWJsZSBjcm9zcyBvcmlnaW4gYWNjZXNzIGNvbnRyb2wgY2hlY2tzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3NDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW06CisgICAgICAgIEFk
ZCBhIHRlc3QgdGhhdCB2ZXJpZmllcyB0aGlzIFNQSSBhbGxvd3MgQWNjZXNzLUNvbnRyb2wtQWxs
b3ctT3JpZ2luOiAqIHdpdGggY3JlZGVudGlhbHMuCisKIDIwMjAtMDMtMDYgIERhdmlkIFF1ZXNh
ZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgX1dLUmVzb3VyY2VM
b2FkSW5mby5yZXNvdXJjZVR5cGUgU1BJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0J
KHJldmlzaW9uIDI1Nzk2MykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0JKHdvcmtpbmcgY29weSkKQEAgLTg4NSw2ICs4ODUs
NTkgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SUykKICAgICBFWFBFQ1RfRkFM
U0UoY29yc2ZhaWx1cmUpOwogfQogCitURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVDT1JT
Q3JlZGVudGlhbHMpCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewor
ICAgICAgICB7ICIvc3VicmVzb3VyY2UiLCB7IHt7ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1Pcmln
aW4iLCAiKiIgfX0sICJzdWJyZXNvdXJjZWNvbnRlbnQiIH0gfQorICAgIH0pOworCisgICAgYm9v
bCBjb3Jzc3VjY2VzcyA9IGZhbHNlOworICAgIGJvb2wgY29yc2ZhaWx1cmUgPSBmYWxzZTsKKyAg
ICBib29sIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0
VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworCisgICAgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiY29ycyJdOworCisgICAgW2hhbmRsZXIgc2V0
U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1l
VGFzaz4gdGFzaykgeworICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKKyAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+ZmV0Y2goJ2h0dHA6Ly8xMjcuMC4w
LjE6JWQvc3VicmVzb3VyY2UnLCB7Y3JlZGVudGlhbHM6J2luY2x1ZGUnfSkudGhlbihmdW5jdGlv
bigpe2ZldGNoKCcvY29yc3N1Y2Nlc3MnKX0pLmNhdGNoKGZ1bmN0aW9uKCl7ZmV0Y2goJy9jb3Jz
ZmFpbHVyZScpfSk8L3NjcmlwdD4iLCBzZXJ2ZXIucG9ydCgpXSBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBN
SU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRl
eHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlk
UmVjZWl2ZURhdGE6ZGF0YV07CisgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOworICAgICAg
ICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2Nv
cnNzdWNjZXNzIl0pIHsKKyAgICAgICAgICAgIGNvcnNzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiL2NvcnNmYWlsdXJlIl0pIHsKKyAgICAgICAgICAgIGNvcnNm
YWlsdXJlID0gdHJ1ZTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH1dOworICAgIAorICAgIHsK
KyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImNvcnM6Ly9ob3N0MS9tYWluLmh0bWwi
XV1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIH0KKyAg
ICBFWFBFQ1RfRkFMU0UoY29yc3N1Y2Nlc3MpOworICAgIEVYUEVDVF9UUlVFKGNvcnNmYWlsdXJl
KTsKKyAgICAKKyAgICBjb3Jzc3VjY2VzcyA9IGZhbHNlOworICAgIGNvcnNmYWlsdXJlID0gZmFs
c2U7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgY29uZmlndXJhdGlvbi5fY3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gTk87CisgICAgeworICAgICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiY29yczovL2hvc3QxL21haW4uaHRtbCJdXV07CisgICAgICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKGNvcnNz
dWNjZXNzKTsKKyAgICBFWFBFQ1RfRkFMU0UoY29yc2ZhaWx1cmUpOworfQorCiBURVNUKFVSTFNj
aGVtZUhhbmRsZXIsIERpc2FibGVDT1JTU2NyaXB0KQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXIgc2VydmVyKHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>